2009.03.09 17:48

[IPv6 강좌] IPv6 프로토콜 구조와 IPv4와의 비교

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

IPv6로 망을 구축하거나 기존의 망을 전환하기 위해서는 IPv6 주소체계와 구조를 알아야 한다. 예를 들면 기존에 202.15.6.1 형태로 표현된 32비트 IPv4 주소 프로토콜을 대체해 128비트의 새로운 주소 프로토콜이 사용되는 것이다. IPv6의 탄생 배경과 필요성에 대해서는 지난호에서 이미 상세히 설명했으므로 이번호에는 IPv6 프로토콜의 구조와 IPv4와의 차이점에 대해서 알아보자.

염창열 | 한국전산원 차세대인터넷팀 선임연구원

인터넷 데이터는 일정한 형태를 이뤄 전달된다. 이를 패킷이라고 부르는데 패킷의 구조는 (그림 1)과 같이 IP 헤더, TCP/UDP 헤더, 애플리케이션 헤더 그리고 이용자 데이터 영역으로 분류된다.

IPv6 헤더는 (그림 2)와 같이 버전, 트래픽으로 이뤄진다. 각 필드에 대해 간단히 설명하면, 버전(version, 4비트)은 패킷이 IPv4인지 IPv6인지 IP 프로토콜의 버전을 알려주는 필드다. 트래픽 클래스(Traffic Class, 8비트)는 QoS에서 사용되는 필드로 패킷의 우선 순위 등을 나타낸다. IPv4의 CoS 필드와 동일하다. 플로우 레이블(Flow Label, 20비트)은 IPv6에 신설된 필드로 플로우를 구분해 플로우별 패킷 처리를 가능하게 해주는 QoS 관련 필드다. 이에 대한 세부적인 활용 방안은 IETF에서 아직도 협의중이다. 페이로드 길이(Payload Length, 16비트)는 IPv6 헤더의 길이를 알려주고 넥스트 헤더(Next Header, 8비트)는 IP 헤더 다음에 어떤 확장 헤더가 올지 혹은 확장 헤더없이 UDP/TCP가 올지를 알려준다. 홉 리미트(Hop Limit, 8비트)는 IPv4의 TTL 값으로 루프(Loop) 방지를 위해 사용되며, 소스 어드레스(128비트)/도착지 어드레스(128비트)는 출발지/목적지 주소다.

(그림 3)과 같이 IPv6 헤더는 IPv4와 비교해 그 길이는 길어졌지만, 헤더 규격이 단순화 돼 처리 효율은 높아졌다. 왼쪽의 IPv4 헤더에서 현재 많이 사용하지 않는 'Flags' 'Fragment offset' 'Options and padding' 'checksum' 등의 필드는 붉은색 동그라미와 같이 삭제되거나 뒤에 설명할 확장 헤더로 넘겼고, 나머지 필드는 그 규격을 개선했다. 뿐만 아니라 플로우 레이블과 같이 추가 필드를 정의해 플로우별 데이터 처리를 가능케했다.

IPv6 헤더에서 정의하지 못했으나 인터넷 데이터 전송을 위해 필요하다고 생각되는 부가 기능에 대해서는 확장헤더를 통해 구현했다. 확장헤더는 IPv6 헤더와 TCP/UDP 헤더 사이에 (그림 4)처럼 위치한다.

(그림 5)는 확장 헤더의 종류와 그 기능을 설명하고 있으며, 이를 통해 IPv4보다 보안(IPsec), 이동성(Mobile IPv6) 등을 강화할 수 있었다.

 

IPv6 주소 형식
IPv4 주소는 10진수 형태로 A.B.C.D와 같이 4개의 점으로 구분돼 표현되지만, IPv6 주소표현 형태는 16진수 형태로 X:X:X:X:X:X:X:X와 같으며, 여기서 X는 16비트 크기로 네 개의 16진수로 표현된다.

예) 2002:2ABC:DEF0:1234:5678:90AB:CDEF:1234

IPv6 주소는 128비트로, IPv4의 32비트와 비교해서 4배가 길기 때문에 IPv4처럼 10진수로 표현하면 길이가 너무 길어질 수 있다. 그러나 IPv6 현재 주소표시 형태로도 길이가 길기 때문에 다음과 같이 주소 축약 형식을 채택하고 있다. '0'의 숫자 열을 압축하는 형식으로써 '::'은 '0'의 16비트 그룹이 이어진 것을 의미한다.

예) 2002 : 0 : 0 : 0 : 0 : 0 : 0 : 99 은 다음과 같이 표현됨
→ 2002 :: 99

다음과 같이 IPv4와 IPv6 노드의 혼합 환경을 취급하는 형식도 정의했다.

예) X: X: X: X: X: X: d. d. d. d

여기서 'X'는 16비트, 4개의 16진수 값이고, 'd'는 8비트 10진수 값이다. d.d.d.d는 표준 IPv4 주소 표현이다.

예 1) 2002 : 0 : 0 : 0 : 0 : 0 : 202.1.2.3 → 2002::202.1.2.3
예 2) 0 : 0 : 0 : 0 : 0 : 1234 : 10.1.2.3 → :: 1234:10.1.2.3

IP 주소는 네트워크 영역과 호스트 영역으로 나뉜다. IPv4에서는 주로 마스크(mask)를 사용하거나 '/(프리픽스 길이)'로 네트워크 영역과 호스트 영역을 구분했다. IPv6에서는 주소 길이가 길어 마스크 방식을 사용하기는 어려워 '/(프리픽스 길이)' 방식을 사용한다. 즉 주소 중 왼쪽부터 (프리픽스 길이)라고 표시된 길이의 비트만큼이 네트워크 영역이고 나머지 부분이 호스트 영역이 된다.
예를 들어, 2002:123::5/16에서 네트워크 영역은 2002이고, 호스트 영역은 123::5이다. 또한 이 주소를 통해 2002 프리픽스를 같은 네트워크의 규모는 2112이다.
IPv4 에서는 네트워크 영역과 호스트 영역의 규모를 A, B, C 클래스로 구분한다. (그림 6)과 같이 상위 4비트에 따라 크게 A, B, C 클래스로 구분되며, 각각의 클래스에 따라 호스트를 수용할 수 있는 네트워크 규모가 결정된다. A클래스는 1개의 네트워크당 224개의 호스트 주소를 할당할 수 있으며, B클래스는 1개의 네트워크당 216개의 호스트 주소, C클래스는 1개의 네트워크당 28개의 호스트 주소를 할당할 수 있다.

그러나 IPv6 주소는 이런 클래스 구분이 없다. 다만, 국가 주소 관리 기구가 통신업체에게 /32 크기의 주소를 할당해 주고 통신업체는 이를 자사 고객에게 /41 혹은 /48 크기로 할당해준다.

 

IPv6 주소의 종류
IPv6 의 주소 종류로는 (그림 7)과 같이 유니캐스트(unicast), 애니캐스트(anycast), 멀티캐스트(multicast)가 있다. IPv4와 비교해 브로드캐스트 주소가 없어졌으며(브로드캐스트 주소의 기능을 멀티캐스트에서 포함하고 있음), 애니캐스트 주소가 새로 생성됐다. 기존 IPv4가 유니캐스트, 멀티캐스트, 브로드캐스트로 구분되는 것과 마찬가지지만, 길어진 주소의 구조화된 사용을 위해서 이와 같이 바뀌게 됐다. 이들 3종의 주소에 대한 설명은 다음과 같다.

·유니캐스트 주소
단일 인터페이스를 지정하며 유니캐스트 주소로 보내진 패킷은 그 어드레스에 해당하는 인터페이스에 전달된다.

·애니캐스트 주소
여러 노드에 속한 인터페이스의 집합을 지정하며, 애니캐스트 주소로 보내진 패킷은 그 어드레스에 해당하는 인터페이스 중 하나의 인터페이스에 전달된다. 현재는 멀티캐스트 주소에 그 기능이 포함돼 있어서 거의 사용하지 않는다.

·멀티캐스트 주소
여러 노드에 속한 인터페이스의 집합을 지정하며, 멀티캐스트 주소로 보내진 패킷은 그 어드레스에 해당하는 모든 인터페이스에 전달된다. IPv6에는 브로드캐스트 주소는 없고, 그 기능은 멀티캐스트 주소로 대체됐다. 현재 어드레스 공간의 15%는 초기 할당됐고, 나머지 85%는 미래를 위해 예약돼 있다.

 

유니캐스트 주소
단일 인터페이스를 지정하며, 유니캐스트 주소로 보내진 패킷은 그 어드레스에 해당하는 인터페이스에 전달된다. IPv6에서 유니캐스트 주소를 할당하는 여러 가지 형태가 있다. (그림 8)은 유니캐스트 주소 구조의 예를 나타낸다.

예를 들어 2001:2b81:33bb::1234/32의 경우 상위 32비트 2001:2b81은 서브넷 프리픽스(subnet prefix)가 되며, 하위 96비트인 33bb::1234는 인터페이스 ID가 된다. 유니캐스트 주소의 예는 다음과 같다.
LAN이나 IEEE 802 MAC 주소를 갖는 환경에서의 일반적인 유니캐스트 주소의 구조는 (그림 9)와 같다. (그림 9)에서 48비트 인터페이스 ID는 IEEE 802 MAC 주소로, IPv6 주소가 설정된다.

유니캐스트 주소에는 'Global' 'Linklocal' 'Loopback' 'unspecified' 'IPv4 mapped' 'IPv6 compatible' 등으로 구분된다. Global IPv6 주소는 글로벌하게 라우팅되는 일반적인 주소다. 글로벌 주소는 왼쪽 3개의 비트가 모두 0으로 시작된다. Linklocal 주소는 같은 링크 상에서만 사용되는 주소로 (그림 10)처럼 왼쪽이 FE80으로 시작된다.

Loopback 주소는 (그림 11)과 같이 ::1, unspecified 주소는 (그림 12)와 같이 ::0으로 표기되며, 네트워크 상에서 자기 자신의 주소, 정해지지 않는 모든 주소 등으로 사용된다. IPv4 mapped 및 IPv4 compatible 주소는 모두 IPv4 주소를 IPv6 주소로 표현하는 방법으로 전자는 애플리케이션에서, 후자는 네트워크상 터널 주소로 활용된다.

 

애니캐스트 주소
여 러 노드들에 속한 인터페이스의 집합을 지정하며 애니캐스트(Anycast) 주소로 보내진 패킷은 그 어드레스에 해당하는 인터페이스 중 하나의 인터페이스에 전달된다. 전달되는 인터페이스는 라우팅 프로토콜의 거리 측정에 의해 같은 애니캐스트 주소를 갖는 인터페이스 중에서 가장 거리가 짧은 인터페이스에 전달된다. 애니캐스트 주소는 유니캐스트 주소 공간으로부터 할당됐고, 유니캐스트 주소 구조를 갖는다. 따라서 애니캐스트 주소는 그 형태만으로는 유니캐스트 주소와 구별할 수 없다. IPv6 애니캐스트 주소는 IPv6 패킷의 소스 주소로 사용될 수 없다. 애니캐스트 주소 구조는 (그림 13)과 같다.

사실 애니캐스트 주소 개념은 IPv4에도 존재한다. IPv4 상에서도 루트 DNS의 미러(Mirror) 서버에는 애니캐스트 주소가 할당돼 로드밸런싱 등의 용도로 사용됐다. 하지만 IPv4의 애니캐스트 주소는 IPv6와 달리 특정 영역 192.88.99.0/24이 사용된다.

 

멀티캐스트 주소
여 러 노드에 속한 인터페이스의 집합을 지정하며 멀티캐스트 주소로 보내진 패킷은 그 주소에 해당하는 모든 인터페이스에 전달된다. 멀티캐스트 주소는 주소의 상위 8비트가 FF(11111111) 값을 가짐으로써 유니캐스트 주소와 구별된다. 멀티캐스트 주소 구조는 (그림 14)와 같다.

멀티캐스트 주소는 여러 종류가 있는데, (표 1)에 자주 사용되는 주소를 나열하면 다음과 같다.

 

ICMPv6
IPv6 로 전환하기 위해 ICMP의 기능 또한 변화가 필요하다. ICMPv6는 패킷을 처리하면서 발생하는 오류(Error)나 현상에 대한 정보 전달 등을 수행한다. IP 헤더 다음에 ICMPv6가 오는지는 넥스트 헤더(Next header) 필드값(58)을 통해 확인할 수 있다. (그림 15)는 ICMPv6의 구조를 보여주고 있다.

IPv6에서는 주소 자동설정, MTU 발견(discovery) 기능, 주소중복확인(DAD) 등이 필수로 정의돼 있기 때문에 ICMPv6에서도 이를 지원할 수 있도록 변화가 필요했다. 이런 요구로 변화된 ICMPv6와 기존의 ICMPv4간의 차이는 (표 2)에서 비교하고 있다.


Trackback 2 Comment 0