라이브러리
프로그래밍언어, 각종코드, 관련동향, 논문 등의 저장소
[IPv6 강좌] IPv4/IPv6 전환 위한 여러 가지 방법들

[IPv6 강좌] IPv4/IPv6 전환 위한 여러 가지 방법들

출처 : 온더넷, 2005년 5월호

IPv6가 IPv4에 비해 아무리 장점이 많다해도 기존의 인터넷을 IPv6 주소로 한순간에 바꿀 수는 없다. 광범위하게 퍼져 있는 IPv4 기반의 인터넷을 한순간에 바꾸는 것은 거의 불가능한 일이다. 이 때문에 IPv6 망으로 전환할 때 현실적인 제약사항을 고려한 IPv4/IPv6 전환방법이 필요한 것이다. 이번호에는 이에 대해 알아본다.


이재준 | 한국전산원 차세대 인터넷팀

IPv4/IPv6 전환에는 다음과 같은 제약사항이 있다.

·IPv6는 IPv4와 자연스럽게 호환(변환)되지 않는다.
·현재 수천만 개의 호스트가 IPv4 방식으로만 동작하고 있다.
·IPv4를 한꺼번에 IPv6로 전환할 수는 없다.

이런 제약사항을 고려할 때, 당분간은 IPv4와 IPv6가 공존할 것이라는 데는 모두가 공감하고 있다. 때문에 이 시기에 IPv4와 IPv6를 전환하는 기술은 네트워크 운영시 아주 중요한 요소가 될 것이다. 현재, IPv4/IPv6 전환기술은 다양하게 소개되고 있으며, 네트워크의 형태에 따라 그 방법은 달리 적용될 수 있다.

IPv4와 IPv6 전환의 핵심은 네트워크 라우팅 관점에서의 전환 방법이지만, 운영체제 차원의 IPv6와 IPv4 적용, 애플리케이션에서의 IPv6 주소를 변환하는 프로그래밍 기술 등도 중요하다. 이번 기고에서는 주로 네트워크 라우팅 관점에서 IPv6/IPv4의 전환 방법에 대해 살펴보고, 운영체제 차원의 IPv6/IPv4 전환에 대해서는 간략하게 소개하겠다.

 

IPv6/IPv4 전환 메커니즘

향후 구축될 IPv6 망은 IPv4/IPv6 듀얼(dual) 망, 혹은 IPv6 전용(native) 망 형태로 구성될 것이다. 이때 내부의 IPv6 망과 외부의 다른 IPv6 망, 혹은 IPv6 망과 IPv4 망과의 통신을 위해서는 IPv4와 IPv6가 혼재한 시나리오가 가능하다. 이 같은 IPv4/IPv6의 공존 상황에서 두 네트워크 간의 통신이 자연스럽게 이뤄지도록 하는 기술이 바로 IPv6 전환 메커니즘들이다. IPv6/IPv4 전환 메커니즘은 다음과 같다. 

·기본 IPv6 전환 메커니즘
 - IPv4/IPv6 듀얼 스택
 - IPv6-in-IPv4 터널링

·IPv4/IPv6 변환(translation) 메커니즘
 - NAT-PT(Network Address Translation Protocol Translation)
 - SIIT(Stateless IP/ICMP Translation)
 - TRT(Transport Relay Translator)
 - SOCKS 게이트웨이
 - BIS(Bump-in-the-Stack)
 - BIA(Bump-in-the-API)

·향상된 터널링 메커니즘
 - 6to4
 - 터널 브로커(Tunnel Broker)
 - DSTM(Dual Stack Transition Mechanism)
 - ISATAP(Intra-Site Automatic Tunnel Addressing Protocol)

 

IPv4/IPv6 듀얼 스택

기본 IPv6 전환 메커니즘 중에서 가장 먼저 IPv4/IPv6 듀얼 스택에 대해 알아보자. IPv6 단말이 IPv4 단말과 호환성을 유지하는 가장 쉬운 방법은 IPv4/IPv6 듀얼 스택을 제공하는 것이다. IPv4/IPv6 듀얼 스택 단말은 IPv4와 IPv6 패킷을 모두 주고받을 수 있는 능력이 있다. IPv4 패킷을 사용해 IPv4 노드와 직접 호환이 되고, IPv6 패킷을 사용해 IPv6 노드와도 직접 호환된다. 이는 노드에서 서로 프로토콜에 적합한 패킷의 변화를 수행하는 방안으로, 110v/220v 전원을 동시에 지원하는 전자제품에 비유할 수 있다. (그림 1)은 듀얼 스택 개념도다.

사용자 삽입 이미지

IPv4/IPv6 듀얼 스택 노드는 양쪽 프로토콜을 모두 지원하기 때문에 IPv4 주소와 IPv6 주소로 모두 설정할 수 있다. IPv4/IPv6 듀얼 스택 노드는 IPv4 메커니즘(예: DHCP)을 사용해 해당 IPv4 주소를 얻고, IPv6 프로토콜 메커니즘(예: 상태 비보존형 주소 자동설정)을 사용해 IPv6 주소를 얻을 수 있다.
듀얼 스택 노드의 DNS는 호스트 이름과 IP 주소간 매핑을 위해 IPv4와 IPv6에 모두 사용된다. 이때 AAAA라는 DNS 리소스 레코드 유형은 IPv6 주소용으로 사용된다. IPv4/IPv6 듀얼 스택 노드는 IPv4나 IPv6 노드와 직접 호환될 수 있어야 하므로 IPv4 A 레코드는 물론이고, IPv6 AAAA 레코드도 처리할 수 있는 주소해석기 라이브러리(DNS Resolver Library)를 제공해야 한다.
IPv4/IPv6 듀얼 스택 노드의 DNS 주소해석기 라이브러리는 AAAA와 A레코드를 모두 처리할 수 있어야 한다. 주소해석기 라이브러리는 IPv6 주소를 가진 AAAA 레코드와 IPv4 주소를 가진 A 레코드를 모두 조회해, 해당 노드와의 통신에 사용된 IP 패킷 버전에 영향을 미치는 결과를 필터링하거나 순서를 정할 수 있다.

 

IPv6-in-IPv4 터널링

IPv6/IPv4 단말과 라우터는 IPv6 데이터그램을 IPv4 패킷에 캡슐화해 IPv4 망을 통해 터널링할 수 있다. 즉, 터널링은 기존의 IPv4 인프라를 활용해 IPv6 트래픽을 전송하는 방법을 제공하며 (그림 2)와 같이 동작한다.

사용자 삽입 이미지

IPv6-in-IPv4 터널링 방법은 크게 설정 터널링(configured tunneling) 방식과 자동 터널링(automatic tunneling) 방식으로 구분된다. 설정 터널링은 6Bone에서 주로 사용하는 방법으로, 두 라우터 간(혹은 호스트간) IPv4 주소를 통해 정적으로(수동으로) 터널을 설정하는 방식이다. 자동 터널링은 IPv4 호환 주소를 이용해 수동 설정 없이, IPv4 구간을 통과할 때면 IPv4 호환 주소에 내포돼 있는 IPv4 주소를 통해 자동으로 터널링을 설정하는 방식이다. (그림 3)은 설정 터널링 방식과 자동 터널링 방식을 나타내는 그림이다.

사용자 삽입 이미지

 

IPv4/IPv6 변환 메커니즘 : 헤더 변환

앞서 IPv4/IPv6 변환 메커니즘에는 NAT-PT, SIIT, TRT, SOCKS 게이트웨이, BIS, BIA 등이 있다고 말했다. 이중에서 NAT-PT, SIIT는 헤더 변환방식에 속한다. 헤더 변환은 IPv6 패킷 헤더를 IPv4 패킷 헤더로 변환하거나 또는 그 역순으로 변환하는 것이다. 이때 만일 필요하다면 패킷 무결성을 유지하기 위해 체크섬(checksum)을 조정(또는 재계산)하는 과정이 필요하다.

헤더 변환은 IP 계층에서의 변환으로, IPv4 패킷을 IPv6 패킷, 또는 그 반대로 변환하는 것으로, 규칙은 SIIT에서 정의하고 있다. SIIT는 IP 네트워크에서 IPv6 패킷과 IPv4 패킷을 상호 변환하는 기술이다. 헤더 변환방식은 주로 NAT-PT라는 방식으로 구현되는데, NAT-PT는 SIIT에 기반을 둔 헤더 변환방식의 전형적인 예이다. 이는 (그림 4)와 같이 동작한다.

사용자 삽입 이미지

헤더 변환은 다른 방식에 비해 속도가 빠른 장점이 있는 반면, NAT(Network Address Translation)와 마찬가지로 IP 계층을 변환함에 따른 제약을 갖고 있다. 대표적인 제약점으로는 DNS, ALG, FTP와 같이 애플리케이션 프로토콜에 내장된 IP 계층 주소변환이 어렵다는 점을 들 수 있다. 이를 해결하기 위해서는 DNS, FTP, ALG와 같은 별도의 애플리케이션 게이트웨이를 추가로 구현해야 한다. 더욱이 IPv4-IPv6 헤더 변환시 IPv4 패킷은 여러 개의 IPv6 패킷으로 쪼개져 전송되는데, 이는 IPv6의 헤더 길이가 IPv4의 헤더보다 일반적으로 20바이트 더 크기 때문이다. 또한 IPv4에서의 ICMP 내용을 ICMPv6로 상호교환할 수 없다는 한계도 있다. 애플리케이션 계층에서 발생하는 문제를 근본적으로 해결하기 위해서는 해당 프로토콜을 위한 애플리케이션 프로그램을 개발해야 한다.

 

IPv4/IPv6 변환 메커니즘 : 전송 릴레이와 ALG

IPv4/IPv6 변환 메커니즘 중 전송 릴레이 방식에 속하는 것에는 TRT, SOCKS 게이트웨이, BIS, BIA 등이 있다. 전송 릴레이는 TCP, UDP/IPv4 세션과 TCP, UDP/IPv6 세션을 중간에서 릴레이 하는 것을 말한다. 이 방법은 전송 계층에서 변환하는 방식으로, 전형적인 TCP 릴레이 서버는 다음과 같이 작동한다.

TCP 요청이 릴레이 서버에 도착하면, 네트워크 계층은 목적지가 서버의 주소가 아닐지라도 TCP 요청을 TCP 계층으로 전달한다. 서버는 이 TCP 패킷을 받아, 발신 호스트와 TCP 연결을 한다. 그 다음 서버는 실제 목적지로 TCP 연결을 하나 더 만든다. 두 연결이 구축되면 서버는 두 연결 중 하나에서 데이터를 읽어 와 나머지 하나의 연결에 기록한다.

전송 릴레이에는 각 세션이 IPv4와 IPv6에 각각 밀폐돼 있기 때문에 프래그먼트나 ICMP 변환과 같은 문제는 없지만, 애플리케이션 프로토콜에 내장된 IP 주소의 변환과 같은 문제는 여전히 남아있다. 전송 릴레이 방식으로는 TRT와 SOCKS 게이트웨이 방식이 있으며, 애플리케이션 계층으로는 BIS, BIA가 있다. 그러나 이들은 실제 망 구축시 활용 빈도가 적기 때문에 자세한 설명은 생략하겠다.

ALG(Application Level Gateway)는 IPv4나 IPv6 두 프로토콜을 모두 지원하는 경우에 두 프로토콜 간의 변환 메커니즘에 사용할 수 있다. 트랜잭션 서비스를 위한 ALG는 사이트 정보를 숨기고 캐시 메커니즘으로 서비스의 성능을 향상시키는 데 사용된다. 이 방법은 애플리케이션 계층에서 변환하는 방식으로, 각 서비스는 IPv4/IPv6별로 각각 독립적이기 때문에 헤더 변환에서 나타나는 단점은 없다. 하지만 각 서비스를 위한 ALG는 IPv4와 IPv6 모두에서 실행될 수 있어야 한다. 대표적인 ALG 방식의 예는 IPv4/IPv6 웹 프록시인 SQUID 등을 들 수 있다. 이 방식은 ALG의 성능에 따라서 서비스의 품질이 결정된다.

 

향상된 터널링 메커니즘

향상된 터널링 메커니즘에는 6to4, 6 터널 브로커, DSTM, ISATAP 등이 있다. 6to4는 하나 이상의 유일한 IPv4 주소를 갖고 있는 IPv6 전용 사이트에, 2002:IPv4주소::/48 단일 IPv6 프리픽스를 할당해, 외부 IPv6 네트워크와 자동 터널링을 가능하도록 하는 메커니즘을 가리킨다. 6to4의 목적은 순수 IPv6를 지원하지 않는 광역 네트워크에 연결돼 있는 고립된 IPv6 사이트나 호스트가 자동 터널링 방식을 통해 다른 IPv6 도메인이나 호스트와 통신하도록 하는 것이다. 이 방식을 사용해 연결된 IPv6 사이트나 호스트는 IPv4 호환 주소 또는 설정 터널링을 필요로 하지 않는다.

아직까지 대부분의 6Bone 네트워크는 수동으로 설정된 터널을 사용해 구축된다. 이 방법의 단점은 네트워크 관리자의 관리부담이 많다는 점이다. 관리자는 각 터널마다 광범위한 수동설정을 수행해야 한다. 이 같은 관리 오버헤드를 줄이려는 방법 중 하나가 바로 터널 브로커 메커니즘이다. 터널 브로커 개념은 터널 브로커라는 전용 서버를 구축, 사용자의 터널 요청을 자동으로 관리하는 방법이다. 이 방법은 IPv6로 연결된 호스트의 증가를 활성화시키고, 초기 IPv6 네트워크 제공자들이 보다 쉽게 그들의 IPv6 네트워크에 접근할 수 있도록 한다.

DSTM은 IPv6가 널리 확산됐을 때 사용할 수 있는 방식이다. IPv6 단말은 IPv6망 뿐만 아니라 IPv4 단말과도 통신할 필요가 있다. DSTM은 ▲임시(temporary)의 IPv4 주소를 IPv6 노드에 제공하는 방법과 ▲IPv6 네트워크 내에서 동적 터널을 사용한 IPv4 트래픽 전송 ▲전환 메커니즘에 필수적인 지원 인프라에 대해 정의된 일련의 프로세스와 아키텍처를 제공한다. DSTM은 필요한 경우 IPv4 주소를 듀얼 IP 계층 호스트에 지정한다. 그러면 IPv6 호스트가 IPv4 전용 호스트와 통신할 수 있게 되거나, IPv4 전용 애플리케이션 프로그램이 IPv6 호스트에서 수정되지 않고 실행될 수 있다.

이 할당 메커니즘은 IPv6 패킷 내부에서 IPv4 패킷의 동적 터널링을 수행하고, IPv6 네트워크의 DSTM 도메인 내에서 순수 IPv4 패킷의 노출을 억제하는 능력과 연관돼 있다. 그리고 IPv6 라우팅 테이블만 있으면 라우터가 IPv6 네트워크를 통해 IPv4 패킷을 이동할 수 있으므로 IPv6 네트워크 관리가 간단하다. (그림 5)는 DSTM 개념을 설명하는 그림이다.

사용자 삽입 이미지

ISATAP(Intra-Site Automatic Tunnel Addressing Protocol)는 보다 간단하게 IPv4 기반의 인트라넷에서 IPv6 노드를 점증적으로 배치할 수 있도록 하는 방식으로, 확장성이 보장된다. 6to4와 큰 차이점은 6to4가 /48 주소를 할당해 할당받은 노드가 서브 네트워크를 구성할 수 있도록 했으나, ISATAP은 /64 단위로 하나의 단말에 IPv6 주소를 할당해 통신하도록 설계된 방법이라는 것이다.

ISATAP는 64비트 EUI-64 인터페이스 식별자와 표준 64비트 IPv6 주소 프리픽스(Prefix)를 이용한 글로벌 유니캐스트 주소 포맷을 기반으로 한다. 이 접근법은 IPv6 게이트웨이와 공통 데이터링크를 공유하지 않는 듀얼 스택 노드가, 사이트 내에서 IPv4 라우팅 인프라를 통해 IPv6 메시지를 자동 터널링 함으로써, 글로벌 IPv6 네트워크에 결합할 수 있도록 한다. ISATAP 주소 자동설정을 위해 두 가지 오프링크 IPv6 게이트웨이의 자동 탐색방법이 제공된다. 이 접근법에서는 경계 게이트웨이에서 하나의 동일한 프리픽스 주소를 사용하므로 전체 사이트 통합시 확장에 대한 걱정없이 사이트 내에 대규모 배치가 가능하다.

 

운영체제 차원의 IPv6/IPv4 전환

IPv6가 사용자단까지 파고 들기 위해서는 IPv6를 지원하는 장비들이 많아야 한다. 특히 운영체제 기반에서 IPv6를 지원하면 그 운영체제 위에서 실행되는 많은 애플리케이션 또한 IPv6를 지원하기 쉽다. 이번 강좌에서는 PC에서의 IPv6 지원 현황과 PDA 등의 단말기에서의 IPv6 지원 현황에 대해 알아본다.

현재 PC에서 가장 많이 사용되는 마이크로소프트의 윈도우 운영체제는 각 버전별로 IPv6 지원 여부가 다르다. 최신의 운영체제일수록 IPv6를 잘 지원하고 있지만, 요즘은 잘 사용하지 않는 윈도우 98의 경우는 IPv6를 지원하지 않는다. 이 경우에 IPv6를 이용하는 애플리케이션을 완벽하게 사용할 수 없으므로, 운영체제의 업그레이드를 반드시 고려해야 한다. (표 1)은 현재 사용 가능한 윈도우 버전별 IPv6 지원 현황이다.

사용자 삽입 이미지

마이크로소프트는 2006년 출시 예정인 차기 운영체제(코드네임 : Longhorn)에 기본적으로 IPv6를 탑재할 것이라고 밝혔으로, IPv4 기능을 제거하고 IPv6만 사용할 수 있도록 설정하는 기능도 포함될 예정이다.

그럼, 윈도우 이외의 운영체제는 어떨까. 현재 많은 운영체제 개발회사들이 IPv6를 지원할 수 있도록 노력하고 있으며, 실제로 최신 버전의 운영체제라면 대부분 IPv6를 지원하고 있다. (표 2)는 윈도우 이외의 운영체제들이 IPv6를 지원하고 있는 현황을 나타낸 것이다.

사용자 삽입 이미지

휴대용 단말기가 발전함에 따라 그 기능 또한 점점 다양화되고 있다. 앞으로 모든 단말기가 IP를 내장하게 될 것으로 예상되며, 더 많은 기능을 수행하려면 PDA와 같은 휴대용 단말기도 IPv6를 지원해야 한다. 휴대용 단말기에 사용되는 운영체제들은 아직은 대부분 IPv6를 지원하고 있지 않다. 설령 운영체제 수준에서 지원한다 하더라도 그것을 필요로 하는 애플리케이션이 거의 없으므로, IPv6를 지원하는 모듈을 제거하는 경우가 많다. (표 3)은 PDA에서 사용되는 각종 운영체제에서 IPv6를 지원하는 현황을 나타낸 것이다.

사용자 삽입 이미지

지금까지 IPv4에서 IPv6로의 전환시 필요한 여러 요소들과 고려 사항을 살펴봤다. 물론 이번 강좌에서는 언급하지 않았지만 애플리케이션에서의 고려사항들도 존재한다. 하지만 IPv6 전환의 첫 번째 단계는 네트워크 차원에서의 전환이기 때문에 그에 따르는 사항을 정확하게 알아두는 것이 좋다.

  Comments,     Trackbacks