IPv6은 IPv4주소 부족 문제를 해결하기 위하여 만든 새로운 주소 체계로 최종적으로는 모든 IPv4 Network가 IPv6 Network로 전환 되는 것이다.
IPv4 Network와 IPv6 Network가 공존하 는 시기에는 IPv4 Node들과 IPv6 Node들이 서로 통신을 할 수 있게 만드 는 IPv6 전환 기술들이 필요하다.
IPv4 Network이 대부분일 경우 IPv6 Node의 IPv6 Packet을 IPv4 Network을 통해 IPv6 Node까지 전달해주는 기능을 수행하고 시간이 흐르고 IPv6 Network이 대부분이 될 경우 IPv4 Node의 IPv4 Packet을 IPv6 Network을 통해 IPv4 Node까지 전달해주는 기능을 수행한다.
ex)6to4, teredo, 6rd
IPv6 Node가 전송하는 IPv6 Packet의 목적지 주소를 IPv4 주소로 변경하여서 IPv4 Network으로 전달 하거나, 반대로 IPv4 Node가 보내는IPv4 Packet의 목적지 주소를 IPv6주소로 변경하여 IPv6 Network으로 전달하는 기능을 수행
ex) NAT-PT, CGN(Carrier Grade NAT), A+P, NAT64, XLAT464
IP장비가 IPv4, IPv6 Stack를 모두 가지고 있어IPv4, IPv6 Packet을 동시에 처리 할 수 있다. 그래서 Dual Stack 기능이 활성화 된 IP Node는 모든 Node들과 통신이 가능하고 두가지 주소를 동시에 가진다.
다른 기술들보다 기술적 이슈들이 없어서 대부분 이걸 사용. 근데 IPV4 주소를 가져야해서 주소고갈 문제를 해결하지 못한다.
Access Network
Access Network(가입자망)는 유/무선 인터넷 서비스에 가입한 고객들에게인터넷의 접근을 제공해주는 네트워크.(고객 단말과 최초의Router간의 구간)
무선매체에서 인터넷에 접속을 하기 위한 LTE Network/ Wi-Fi Network,
광코어 매체에서 인터넷에 접속을 하기 위한 G-PON/GE-PON Network가 대표적이다.
Distribution Network
Distribution Network는 Access Network의 트래픽을 집선하여 Core Network로 전달하는 네트워크
Access Network에서는 각 통신기술의 고유 데이터 포맷으로 통신이 이루어지고, Distribution Network부터는 IP Packet 으로 데이터가 전달된다.
Core Network와 Distribution Network를 합쳐서 Backbone Network(백본망)이라고 한다.
그래서 네트워크를 가입자망 Access Network, Backbone Network이라고 한다.
Backbone에서는 Dual Stack을 사용한다. 이유는 하나의 ISP에는 여러 Access Network가 있는데 그 Access Network가 IPv4-Only일수도 있고 IPv6-Only있으니 하나의 라우터에서 둘다 통신이 지원가능한 Dual Stack이 최적이라서!
Router 제조사별로 Dual Stack 기능을 활성화 시키기 위해서는 각 인터페이스 별로 IPv6 Packet Switching기능을 활성화 시켜주는 명령어를 입력하면 된다.
무선 가입자 단말에 IPv6주소를 할당 하였을 때, 가입자 단말과 Contents Server(ex> Google, NAVER등)간의 IPv6 통신 방식
문제는 가입자 단말은 IPV6 Only인데 Content Server가 IPV4 Only인 경우는 통신을 못한다.
이게 가능하게 하기위해서 SKT에서는NAT64장비와 DNS 64장비를 도입
이게 어떻게 IPv6-Only Node가 IPv4-Only Node/Server와 통신을 할 수 있게할까?
그전에 인터넷에는 IP Nodes의 위치를 알려주는 IP 주소와 IP 주소를 사람들이 쉽게 기억 할 수 있도록 만든 Domain Name이 있는데 사람들은 특정 웹페이지에 접속할때 일반적으로 쉬운 Domain Name으로 접속을 시도하는데 IP Node는 텍스트 기반의 Domain Name을 해석할 수 없어서 이에 해당되는 IP주소를 알려줘야하는데 이를 DNS서버에서 해준다.
DNS 서버는 IPv4주소(A Type) Records, Name Server(NS Type) Records 그리고 Mail Exchanger(MX Type) Records등을 저장한 서버를 말함.(기존 IPv4용 DNS서버는 IP주소 타입이 A Type뿐이었으나, IPv6를 지원하는DNS서버는 IPv6주소 Records인 AAAA Type이 새롭게 정의)
그니깐 Domain 주소를 입력하면 DNS서버에 IP주소를 문의하고 DNS서버에서는 IPv4-Only이면 A Type주소를 알려주고 IPv6-Only이면 AAAA Type주소를 PC에 알려줌.
유선 인터넷에 가입된 고객 PC들의 경우에는 IPv6주소를 DHCPv6 서버로부터 받거나(Stateful Autoconfiguration방식) 혹은 IPv6 Router로부터(Stateless Autoconfiguration방식) 받는다.
DHCPv6서버 혹은 IPv6 Router가 각각 전송하는 DHCPv6 Reply메시지와 RA메시지 안에는 IPv6주소뿐만 아니라 DNS서버 주소도 같이 포함되어 있다.
LTE Network에서 UE에게 IPv6주소를 할당해주는 역할은 PDN-GW가 수행. 그리고 IPv6핸드폰에게 DNS서버의 주소를 알려주는 역할도 PDN-GW가 수행. 정확하게는 IPv6 핸드폰이 Attach하는 과정에서 PDN-GW가 전송하는 Create Session Message안에 DNS서버의 주소가 포함이 되어 있다.
DNS64서버가 IPv4주소를 IPv6주소로 변환을 할 때,Well-Known Prefix인 "64:ff9b::/96" 을 사용한다고 가정하면 www.naver.com의 주소를 “1.224.181.98”와"64:ff9b::1.224.181.98" 를 알려준다 근데 위 그림에서는 LTE단말이 IPV6만 활성화되어 있으니깐 네이버에 접속하기 위해서는 "64:ff9b:: 1.224.181.98" IPV6 패킷을 전송한다.
DNS64에서 IPv4-Only Contents Server의 IPv4 주소는 IPv6주소로 변환이 되는데 이때 주소가 96bit가 된다.
그래서 IPv6 Packets을 NAT64장비의 인터페이스로 향하게 라우팅하면 NAT64장비는 들어오는 모든 IPv6 Packets은 IPv4 Packets으로 변환을 해야 하는 Packets인 것으로 간주하여 IPv4 Packet으로 변환하여 보낸다.
이렇게 하면 IPv4 Packet과 IPv6 Packet간의 교환에 어려움은 없지만 IPv4주소 고갈문제는 해결할 수 없다.
그래서 Stateful NAT64 장비사용
Stateful NAT64장비는 n 개의 IPv6 주소를 1개의 IPv4 주소로 변환
그래서 복잡하다. 변환 알고리즘은 RFC 6146 밑에 참고
http://www.rfc-editor.org/info/rfc6146
DNS64와 NAT64를 도입하면 LTE IPv6-Only고객들이 인터넷을 잘 쓸것같지만 이 둘로도 해결하지 못한 문제가 있다. -> IPV4주소가 Hard Code된 응용 프로그램들인 경우
Hard Coding된 IP주소란 거는 응용 프로그램 소스에 도메인주소 대신 IP주소를 명시적으로 표기한거를 의미한다.
LTE IPv6-Only단말이 Hard Coding된 응용 프로그램을 실행하게 될 경우, IPv4주소를 해석할 수 없어서 오류가 난다. IPv4주소가 Hard Coding된 응용 프로그램에서도 IPv6 인터넷통신이 가능하게 만든 것이 464XLAT IPv6전환 기술이다.
464XLAT은 응용 프로그램의 IPv4주소 Hard Coding 이슈를 해결하기 위하여 도입이 된 IPv6전환 기술이다.
464XLAT의 이름은 IP가 변환이 되는 순서(IPv4<->IPv6<->IPv4)와 CLAT혹은 PLAT를 결합하여 붙였다.
http://www.rfc-editor.org/info/rfc6877
464XLAT는 두 번의 IP 변환을 하는데 LTE UE에서 IPv4와 IPv6변환을 하는 CLAT, LTE Core Network에서 IPv6과 IPv4변환을 하는 PLAT이다.
LTE IPv6-Only단말은 3GPP 규격에 의하여 Prefix 64인 Global Unicast Address를 PDN-GW로부터 할당 받는다. 그리고 자신의 Interface ID를 LSB 64bits에 추가함으로써 Global Unicast Address 128bits주소를 생성한다.
IPv6-Only단말은 인터넷 통신 용도로 IPv6주소를 1개만 가지는데 CLAT 기능이 동작하는 단말은 CLAT Interface가 추가 되어 IPv4주소 1개랑 IPv6주소 1개를 추가로 생성한다.
IPv4주소는 Android OS의 경우 모두 192.0.0.4가 생성이 되고, CLAT Interface의 IPv6주소는 PDN-GW로부터 할당 받은 Prefix 64bit에다가 ‘::464’라는 Suffix를 붙여서 128bit를 생성한다. 여기서 PDN-GW로부터 할당 받은 Prefix 64bit가 globally unique하니깐 IPv6주소 역시 globally unique한 IPv6가 된다.
위 그림에서는 IPv6-Only 단말이 Hard Coding된 1.224.181.98 주소를 만나면
CLAT알고리즘으로 출발지는 2001:DB8::464, 목적지는 64:FF9B::1E0:B563로 IPv6 Packet를 전송.
LTE단말이 응용 프로그램을 실행할 때, 프로그램 소스에서 도메인주소를 만나게 되면 해당 단말은 기존 인터넷 통신 인터페이스로 DNS Query 메시지를 보낸다. 만약 프로그램 소스에서 Hard Coding된 IPv4주소를 만나게 되면 LTE단말은 CLAT동작을 실행한다. CLAT는 IPv4 패킷을 생성하고 이때 패킷의 목적지는 Hard Coding된 IPv4주소이고 출발지는 CLAT 인터페이스의 IPv4주소가 된다. 그리고 CLAT은 IPv4 Packet을 IPv6 Packet으로 변환하는데 IPv6패킷의 목적지 주소를 생성하기 위해서 IPv4주소를 IPv6주소로 변환해야하는데 이때 Well-Known Prefix인 ’64:FF9B::/96’를 붙이고 IPv6 Packet의 출발지 주소는 CLAT 인터페이스의 IPv6주소가 된다.
네트워크 관리자는 ’64:FF9B::/64’인 IPv6 Packet들은 모두 PLAT(NAT64)장비로 전달되게 라우팅 설정을 해서 CLAT 인터페이스가 전송하 IPv6 Packets은 모두 PLAT(NAT64)로 전달이 되게된다.
PLAT는 NAT64와 동일하게 동작하니 IPv6패킷을 IPv4패킷으로 변환하여 전송한다.
결국 도메인 주소에 해당한 Contents Server는 IPv4패킷을 수신한다.