CS/컴퓨터네트워크

Network layer - IPv6

남승현 2023. 12. 13. 21:09

IPv4와 IPv6 차이점

  • IPv4는 8bit씩 4개의 dotted notation이었던 반면, IPv6는 16bit를 하나의 hexa-decimal 번호로 만든다 (0~F), 128 bit address
  • IPv4는 router에서 fragmentation을 진행했지만 IPv6에서는 router가 더이상 fragmentation 기능 안 한다. (fragmentation이 일어나면 router는 걔를 drop하고 source에게 ICMP 메시지 보낸다. "message 사이즈가 너무 커서 drop 발생했으니 이런 MTU 사이즈로 다시 보내줘 ")

 

IPv6 datagram format

  • flow label : 같은 flow에 있는 애들은 같은 id 붙여준다
  • header길이가 40 byte로 늘어남 (IPv4는 20)
  • header 길이가 40byte로 고정되었기에 header length는 사라지고 payload length만 남음
  • source addr = destaddr = 128
  • extension headers -> IPv4에서 option field에서 하던 기능이 필요하면 extension header로 payload field에 싣는다
  • IPv6에선 router에서 fragmentation 못하지만 source에서 IPv6 packet을 fragmentation 할 수 있다

IPv4 기반 어플리케이션도 있고 IPv6 기반 어플리케이션도 있다

-> transition 일어나는동안 섞여있을 수 밖에 없다 -> 상호동작 되는 게 중요한데 이제부터 그 3 가지 방법에 대해 다뤄보자!

 

1) Dual Stack

  : router가 하나의 interface에 IPv4/IPv6 addr 모두 가지고 있다

2) NAT-PT

  : IPv4와 IPv6사이에 protocol translation 

3) Tunneling

 

이제 위의 3 가지 방법에 대해 각각 자세히 살펴보자~~

 

Dual Stack

  • client가 자신의 IPv4 network에 붙어있든, IPv6 network에 붙어있든 상관없이 하나의 server 서비스 이용할 수 있도록 해줌
  • host가 자신의 IP version을 바꾸지 않고도 서버에 접근할 수 있게 해준다
  • 대부분 edge에서 많이 사용한다 (processing이 복잡해 core에서 잘 사용 안 함)

NAT-PT

 

  • NAT-PT device/router를 이용하여 IPv4 host가 IPv6 server에 request 보낼 수 있다'
  • IPv4 header 떼어내고 IPv6 header 붙여 서버에 보내고 서버에서 보낸 걸 IPv6 header 떼어내고 IPv4 header 붙여 host에게 보냄

Tunneling

 

Client & Server는 서로 IPv4로 버전이 일치하는데 중간에 network core에 IPv6가 존재 하는 경우 (IPv6,IPv4 역도 성립)

-> Tunnel을 생성하여 건너간다

 

- B에서 V6상 next hop은 E인데 물리적으로 C이다. ->따라서 Tunneling이 필요 ->IPv6 datagram을 IPv4 payload에 넣는다

- IPv4 payload = IPv6 datagram

- 목적지에서는 header 뜯어낸다