IPv4 주소 고갈과 이프로토콜의 다른 결점이 1990년대 초반 IP의 새로운 버전을 유발시켰다. 인터넷 프로토콜 버전 6(IPv6, Internet Protocol version 6) 혹은 IP 차세대(IPng, IP new generation)라는 새로운 버전이 IPv4 주소 공간을 증가시키고, 동시에 IP 패킷의 형식을 재설계하고, ICMP와 같은 부속 프로토콜을 수정하기 위해 제안되었다.
1. IPv6 주소 지정
컴퓨터는 보통 주소를 2진수로 저장한다. 그러나 사람이 2진수 128비트를 다루는 것은 쉬운일이 아니다. 따라서 사람이 다룰 수 있도록 IPv6를 표현하기 위해서 몇 가지 표기법이 제안되었다.
16진수 콜론 표기법(colon hexadecimal notation)은 주소를 8부분으로 나눈다. 콜론에 의해 분리된 각각의 4자리의 16진수로 구성된다.
- 주소 유형
- 유니캐스트 주소
유니캐스트 주소는 단일 인터페이스(컴퓨터 또는 라우터)를 정의한다. 유니캐스트 주소로 전송된 패킷은 의도된 수신자에게 라우팅 된다.
- 애니캐스트 주소
모두 단일 주소를 공유하는 컴퓨터 그룹을 정의한다. 애니캐스트 주소를 가진 패킷은 가장 접근하기 쉬운 그룹의 한 구성원에게만 전달된다.
- 멀티캐스트 주소
애니캐스팅과 멀티캐스팅 사이에는 차이가 있다. 애니캐스팅에서는 단 하나 패킷 사본이 그룹 구성원 중 한명에게 전송되고 멀티캐스팅에서 각각의 그룹 구성원이 사본을 받는다.
- 주소 공간
IPv6는 2^128개의 주소 공간을 갖는다. 이는 IPv4보다 2^96배 많다. IPv6의 주소공간 크기는
340, 282, 366, 920, 938, 463, 374, 607, 431, 768, 211, 456이다.
- 주소 공간 할당
IPv4의 주소 공간과 같이 IPv6 주소 공간은 다양한 크기의 여러 공간으로 나누며, 각 블록은 특수한 목적에 사용된다. 대부분의 블록은 아직 할당되지 않았으며, 차후 사용을 위해 남겨둔 상태이다.
- 글로벌 유니캐스트 주소
인터넷의 두 호스트 간 유니캐스트통신에 사용되는 주소 공간의 블록을 글로벌 유니캐스트 주소 블록(global unicast address block)이라 한다. 이 블록의 CIDR은 처음 세 비트가 001로 모두 통일한 2000::/3이다. 이 블록의 주소는 글로벌 라우팅 접두사(n비트), 서브넷 식별자(m비트), 인터페이스 식별자(q비트)라는 세 부분으로 구분된다.
글로벌 라우팅 접두사(n비트)는 패킷을 인터넷을 통해 해당 블록을 소유한 ISP와 같은 기관으로 라우팅하기위해 사용된다.
m비트는 기관 내의 서브넷을 정의한다. 마지막 q비트는 인터페이스 식별자를 정의한다.
- EUI-64 매핑
64비트 물리주소로 변환하기 위해, 인터페이스 주소를 정의하기 위해 이 형식의 글로벌.로컬 비트가 0에서 1로 변경될 필요가 있다.
- 이너뎃 MAC 주소 매핑
48비트 이더넷 주소를 64비트 인터페이스 식별자로 변환하는 것은 좀 더 복잡하다. 로컬.글로벌 비트를 1로 변경하고 추가 16비트를 삽입하는 것이 필요하다. 이는 FFFE로 정의된다.
이더넷 주소를 위해 정의된 형식을 사용하여, EUI의 물리주소가 (F5-A9-23-EF-07-14-7A-D2)16 일 때 인터페이스 식별자를 구하여라.
- 첫 번째 옥텟의 일곱 번째 비트를 0에서 1로 변경하고 형식을 콜론16진수 표기로 변경해야하므로
F5는 2진수로 1111 0101 이므로 이를 바꿔주면 1111 0111 = F7이 된다.
그러므로 F7A9:23EF:0714:7AD2 이다.
이더넷 주소를 위해 정의된 형식을 사용하여, 이더넷 물리주소가 (F5-A9-23-14-7A-D2)16일 때 인터페이스 식별자를 구하여라.
- 첫 번째 옥텟의 일곱 번째 비트를 0에서 1로 변경하고 2개의 옥텟 FFFE를 삽입하면되므로
F5는 2진수로 1111 0101 이므로 이를 바꿔주면 1111 0111 = F7이 되고 FFFE를 삽입한다면
F7A9:23FF:FE14:7AD2이다.
기관이 2000:1456:2474/48 블록을 할당받았다. 컴퓨터의 IEEE물리주소가 (F5-A9-23-14-7A-D2)16 이면 세 번째 서브넷의 IPv6 인터페이스 주소는 무엇인가?
- 이 인터페이스 식별자는 위와 같이 F7A9:23FF:FE14:7AD2이다. 그러므로
2000:1456:2474:0003:F7A9:23FF:FE14:7AD2/128 이 된다.
- 특수 주소
글로벌 유니캐스트 블록을 설명하고 난 뒤, 첫 번째 행에 할당되고 예약된 블록의 특징과 목적을 설명한다. (0000::/8)의 접두사를 사용하는 주소는 예약된 주소이지만 이 주소 중 일부는 특수 주소를 지정하기 위해 사용된다.
- 그 밖의 할당된 블록
Unique local 유니캐스트 블록의 서브블록은 한 지점에서 임의로 생성하여 사용할 수 있다. 이런 유형의 주소를 목적지 주소로 포함하는 패킷은 라우팅되지 않는다. 사설 네트워크를 사용하며 동일 주소 체계를 사용하는 네트워크들과 통신이 가능하다. 글로벌 주소와 별도로 할당되므로 글로벌 주소 변경이나 관리에 영향을 받지 않는다.
Link local 블록의 서브블록은 네트워크 내의 사설주소로 사용 가능하다. 같은 링크 혹은 네트워크 내에서만 사용이 가능하며 라우터를 거쳐갈 수 없다.
- 자동 구성
IPv4에서는 호스트와 라우터가 원래 네트워크 관리자에 의해 수동으로 구성된다. 그러나 동적 호스트 구성 프로토콜( DHCP)이 네트워크에 연결되는 호스트에 IPv4 주소를 할당하는데 사용될 수 있다. IPv6에서 DHCP프로토콜은 여전히 호스트에 IPv6 주소를 할당하기 위해 사용될 수 있으나, 호스트 역시 자기 스스로 구성할 수 있다.
링크 로컬 주소 만들기 > 고유성 확인 > 라우터 요청 메시지 보내기 receive 글로벌 유니캐스트 접두사 조합을 알리는 라우터 광고 메시지 받기
이더넷 주소(F5-A9-23-11-9B-E2)16를 가진 호스트가 네트워크에 연결하려고 한다고 가정하자. 기관의 글로벌 유니캐스트 접두사가 3A21:1216:2165이고, 서브넷 식별자가 A245일 때 글로벌 유니캐스트 주소는 무엇인가?
- 먼저 호스트는 자신의 카드로부터 읽은 이더넷 주소를 이용하여 F7A9:23FF:FE11:9BE2로 자신의 인터페이스 식벼자를 생성한다. 그리고 호스트는 다음과 같이 자신의 링크 로컬 주소를 생성한다
FE80::F7A9:23FF:FE11:9BE2
이 주소가 유일하다고 가정하면, 호스트는 라우터 메시지를 전송하고 글로벌 유니캐스트 접두사와 서브넷 식별자 3A21:1216:2165:A245와 결합된 라우터 메시지를 수신한다.
3A21:1216:2165:A245:F7A9:23FF:FE11:9BE2
2. IPv6 프로토콜
IPv6 설계자는 지금의 단점을 해결하는 것을 위해 변경이 불가피하다고 결정하였다. 다음은 주소와 길이와 형식을 변경하는 것에 추가하여 프로토콜에서 구현된 주요 변화에 대한 설명이다.
- 주소 공간의 확장
- 더 좋은 헤더 형식
- 새로운 옵션들
- 확장 허용
- 자원 할당을 위한 지원
- 더 좋은 보안성 지원
- 패킷 형식
각 패킷은 기본 헤더와 페이로드로 구성된다. 기본 헤더는 40바이트를 차지하며, 확장 헤더와 상위 계층 데이터는 65,535바이트까지 정보를 포함할 수 있다.
- 버전 : Version 6 : 4bits
- 트래픽 분류 : 8 bits
- 페이로드 길이 : 16 bits
- 다음 헤더 : 8 bits
- 홉 제한 : 8 bits
- 발신지 주소 : 128 bits
- 목적지 주소 : 128bits
- IPv6의 흐름과 우선순위 개념
IP는 원래 비연결형 프로토콜로 설계되었다. 그러나 Ip 프로토콜을 연결형 프로토콜로 사용하려는 경향이 있다. 앞서 설명한 MPLS 기술은 레이블 필드를 이용하여 IPv4 패킷을 MPLS 헤더에 캡슐화하였다. 버전 6에서 IPv6를 연결형 프로토콜로 사용하기 위해 흐름 레이블이 IPv6 데이터그램의 형식에 직접 추가되었다.
- 단편화와 재조립
IPv6 프로토콜 역시 데이터그램의 단편화와 재조립이 있지만 큰 차이점이 존재한다. IPv6에서 데이터그램은 발신지에서만 단편화를 할 수 있고, 라우터에 의해서는 불가능하며, 재조립은 목적지에서 이루어진다. 라우터는 패킷을 받으면 패킷의 크기를 검사하고 네트워크의 MTU보다 크기가 큰 경우 패킷을 폐기한다. 이후 라우터는 발신지에게 알리기 위해 ICMPv6 너무 큰 패킷 오류 메시지를 전송한다.
- 확장 헤더
IPv6 패킷은 기본 헤더와 몇몇 확장 헤더로 구성된다. 기본 헤더의 길이는 40바이트로 고정되어 있다. 그러나 IP 데이터그램에 더 많은 기능을 제공하기 위해 기본 헤더 뒤에 6개까지 확장 헤더(extension header)를 둘 수 있다. 이 헤더의 많은 경우는 Ipv4의 옵션과 같다. 이것은 매 홉 옵션, 발신지 경로 지정, 단편화, 인증, 암호화된 보안 페이로드, 그리고 목적지 옵션이 있다.
- IPv4와 IPv6의 옵션들 비교
- IPv4의 동작 없음과 옵션의 끝 옵션은 IPv6에서 Pad1과 PadN으로 대체되었다.
- 경로 기록 옵션은 사용되지 않기 때문에 IPv6에서는 구현하지 않았다.
- 타임스탬프 옵션은 사용되지 않기 때문에 구현하지 않았다.
- 발신지 경로 옵션은 IPv6에서 발신지 경로 확장 헤더라고 부른다.
- IPv4의 기본 헤더의 단편화 필드는 IPv6에서 단편화 확장 헤더로 바뀌었다.
- 인증 확장 헤더는 IPv6에 새로 도입된 것이다.
- 암호화된 보안 페이로드 확장 헤더는 IPv6에 새로 도입된 것이다.
3. ICMPv6 프로토콜
ICMPv6는 ICMPv4에서 독립적인 프로토콜들이 ICMPv6로 포함되고 유용성을 위해 새로운 메시지들이 추가되어 더 복잡해졌다.
- 오류 보고 메시지들
목적지 도달 불가, 패킷이 너무 큼, 시간 초과, 그리고 파라미터 문제라는 네 가지 유형의 오류가 처리된다. 버전 4에서 혼잡 제어로 사용되던 발신지 억제 메시지는 IPv6에서 우선순위와 흐름 레이블 필드가 혼잡을 관리하기 위해 제안되었기 때문에 이 버전에서 제거되었다.
- 이웃 발견 메시지
ICMPv4의 다수 메시지가 이웃 발견의 주제를 다루기 위해 ICMPv6에서 재정의 되었다. 가장 중요한 이슈는 이런 그룹 메시지의 기능을 명확하게 정의하기 위한 이웃 발견(ND, Neighbor-Discovery) 프로토콜과 역이웃 발견(IND, Inverse-Neighbor-Discovery)프로토콜이라는 2개의 새로운 프로토콜의 정의이다.
- 그룹 멤버십 메시지들
IPv4에서 멀티캐스트 전달 처리의 관리는 IGMPv3 프로토콜에 주어진다. IPv6에서 이 책임은 멀티캐스트 청취 전달 프로토콜에 주어진다. MLDv1은 IGMPv2와 대응 관계에 있다. MLDv2는 IGMPv3와 대응 관계에 있다.
7.6 IPv4 to IPv6
IP 프로토콜의 새로운 버전이 잇지만 어떻게 IPv4를 그만 사용하고 IPv6를 사용하도록 할까? 이에 대해 IETF에서 이런 전환을 돕기 위해 이중 스택, 터널링, 그리고 헤더 번역의 세 가지 방안을 제시하였다.
- 이중 스택
프로토콜이 변경되는 동안 모든 호스트가 버전 6으로 완전히 이동하기 전에 이중 스택(dual stack)의 프로토콜을 탑재할 것을 권고하고 있다. 즉 모든 인터넷이 IPv6를 사용하기 전에 시스템은 IPv4와 IPv6를 동시에 지원해야 하는 것이다.
- 터널링
터널링(tunneling)은 IPv6를 사용하는 두 호스트가 통신을 할 때 패킷이 IPv4를 사용하는 지역을 지나는 경우 사용 가능한 방법이다. 이 지역을 지나기 위해 패킷은 IPv4주소가 필요하다. 따라서 이 지역에 들어서면 IPv6 패킷은 IPv4 패킷에 캡슐화되고 이 지역을 벗어날 떄 역캡슐화된다.
- 헤더 변환
헤더 변환(header translation)은 인터넷 대부분이 IPv6로 변경되고 일부분만이 IPv4를 사용할 때 필요한 방법이다. 수신자가 IPv4의 패킷을 수신해야 하기 때문에 터널링을 사용할 수 없다. 이 경우 헤더 변환을 통해 헤더의 형식이 완전히 변경되어야 한다.
'Study > Networking' 카테고리의 다른 글
8.3 유니캐스트 라우팅 프로토콜 & 8.4 멀티캐스트 라우팅 (1) | 2023.04.16 |
---|---|
8.2 라우팅 알고리즘 (0) | 2023.04.15 |
7.4 IPv4 - (3) (0) | 2023.04.14 |
7.4 IPv4 - (2) (0) | 2023.04.13 |
7.4 IPv4 - (1) (0) | 2023.04.12 |