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 뜯어낸다