Basic Security/_Networks2008.01.25 16:49
IPv6(Internet Protocol Version 6)


현재 사용되고 있는 IPv4는 서브넷마스트(Subnet Mask)로 좀 더 효율적으로 IP 주소를 사용하고 있지만 무선 네트워크의 발달로 인하여 모든 작은 장비에 까지 인터넷 노드가 필요하게 되었고 이는 더욱 가속화 될 것이다. 따라서, 현재의 IPv4로 지원하는 IP의 양은 부족하게 되었고 새로운 환경에 유연하게 대처할 수 있는 새로운 버전의 IP 작업이 필요하게 되었다.

IETF는 이 새로운 버전을 위해 다음과 같은 목표를 제시하였다.
  • 비효율적인 주소 공간 할당이 있음에도 불구하고 수십억 개의 호스트 지원
  • 라우팅 테이블 크기의 감소
  • 라우터가 패킷을 더 빠르게 처리할 수 있도록 하는 프로토콜의 단순화
  • 현재 IP보다 더 나은 보안(인증, 비공개) 제공
  • 실시간 데이터에 대한 유연한 서비스 제공
  • 명기된 허가 범위에 대한 멀티캐스팅 지원
  • 호스트가 주소변경없이 이동 가능
  • 발전적인 미래의 프로토콜 고려
  • 당분간 이전 버전과의 호환을 제공
이러한 목표로 IETF는 제안을 요청하였다. 이에 수많은 응답이 도착하였고 많은 논의 끝에 지금의 SIPP(Simple Internet Protocol Plus)라 불리는 버전이 채택되었고 IPv6 라고 명명하게 되었다.

IPv6의 주요한 특징은 4가지로 분류할 수 있다.
  1. 첫째, IPv6는 IPv4에 비해 더 긴 주소를 갖는다. 기존의 4 바이트의 주소가 아닌 16 바이트의 주소 체계를 사용하여 거의 무제한에 가까운 주소를 제공한다.
  2. 둘째, 헤더를 단순화 시켰다. IPv4는 13개의 필드를 가지고 있고 몇몇 필드는 불필요하다. IPv6는 7개의 필드만 사용됨으로 인해 라우터가 패킷을 더 빠르게 처리하고 지연시간이 줄어든다.
  3. 셋째, 옵션에 대한 지원이 더 좋아졌다. 옵션의 표현방식이 다르고, 라우터가 의도하지 않는 옵션들은 건너띄도록 할 수 있어 패킷 처리 시간을 빠르게 한다.
  4. 넷째, IPv4와 가장 큰 차이점은 보안의 지원이다. IPv4의 가장 큰 약점은 보안을 지원하지 않기 때문에 보안을 위해서는 다른 계층에서 추가적인 노력이 더 크게 필요하였다.

IPv6 Header
다음은 IPv6 헤더의 레이아웃(layout)을 보여준다.
사용자 삽입 이미지

Version : 데이터그램이 속하는 프로토콜의 버전을 나타내며 IPv6에서는 6 이다. IPv4 에서 IPv6가 나오기 까지의 10년동안 불필요하게 이 필드를 검사해야만 했지만 이제는 사용해야할 이유가 생겼다.

Traffic class : 서로 다른 실시간 전달 요구 조건을 포함하는 패킷을 구분하는데 사용된다. 지금까지는 필드 자체는 IP 데이터그램 내에 있지만 오직 라우터에 의해서만 구현되어 왔다. 현재 이 부분에 대한 효율적인 활용을 위해 실험들을 진행 중이다.

Flow label : 여전히 검토되고 있지만 송신측과 수신측의 고유 특성과 요구사항을 설정하기 위해 사용된다. 예를 들어 송신측에서 수신측으로 가는 어떤 스트림은 엄격한 지연 요구를 가질지 모른다. 이럴때는 예약된 대역폭이 필요하게 되므로 플로우가 미리 설정되고 하나의 식별자를 주어져 처리하도록 만든다. 이러한 방법은 데이터그램 서브넷의 유연성(flexibility)와 가상회선 서브넷의 보장성(guarantee)를 둘 다 가지려고 고려되었다.

Payload length : 40 바이트 헤더 뒤에 얼마나 많은 바이트들이 따라오는가를 나타낸다. 기존의 IPv4에서는 Total length로 헤더길이와 데이터길이를 합한 값이 들어갔지만 IPv6에서는 순수한 페이로드만 나타내므로 이름이 변경되었다.

Next header : IPv4에 비해 헤더가 간소화될 수 있는 이유가 여기에 있다. 이 필드는 6개의 확장 헤더가 추가될 수 있다. 6개의 확장헤더 중 하나가 뒤따라 온다면 그것을 가르킨다. 이 헤더가 마지막 IP 헤더라면, 필드의 값은 패킷이 통과할 전송 프로토콜(e.g. TCP, UDP)를 가르킨다.

Hop limit : 라우팅 테이블의 오류로 인해 패킷의 영구적으로 네트워크 상에 떠도는 것을 방지한다. IPv4의 Time to live 필드와 같은 의미로 라우터를 지날 때 마다 홉수가 감소하여 0 이 되면 해당 라우터에서 패킷을 폐기한다.

Source address : 송신측의 IPv6 주소를 나타낸다.

Destination address : 수신측의 IPv6 주소를 나타낸다.

IPv4 헤더에서 IPv6 로 변화면서 제외된 것을 살펴보자.
IHL필드는 IPv6가 고정 길이기 때문에 제외되었다. Protocol 필드는 Next header 필드가 마지막 IP 헤더에서 알려주기 때문에 제외되었다.

단편화와 관련된 모든 필드는 IPv6가 단편화에 대한 다른 접근 방법을 사용하기 때문에 제외되었다. IPv6는 모든 호스트가 사용할 데이터그램 크기를 동적으로 결정하는 것이 요구된다. 이러한 규칙은 처음 영역에서 발생하는 것보다 적은 단편화가 일어난다. 1024 바이트의 데이터와 수많은 헤더를 허용하기 위해서 최소치보다 높은 576 ~ 1280 바이트의 패킷을 지원해야 한다. 더구나 호스트가 단편화 하지 않고 매우 큰 IPv6 패킷을 보낼 때 라우터가 그것을 전송시킬 수 없으면 에러메시지를 반송한다. 이 메시지는 목적지로 향하는 이후의 모든 패킷을 단편화 하도록 호스트에제 지시한다. 호스트가 첫 번째에서 올바른 크기의 패킷을 보내는 것은 결과적으로 라우터가 전송 중에 패킷을 단편화 하는 것보다 효율적이다.

Checksum 필드는 효율을 감소시키는 계산 시간 때문에 없어졌다. 체크섬을 실행하여 신뢰적인 네트워크 서비스를 제공하는 것이 목적이지만 그것을 제외한 것보다 효율적이지는 못하다.


16 바이트의 주소 크기는 기존의 IPv4의 4바이트에 비해 대단히 대단히 큰 숫자이다. 그래서 4개의 16진수 숫자로 된 8개의 그룹 사이를 콜론(:)으로 구분하여 쓰는 것이다.

          8000 : 0000 : 0000 : 0000 : 0123 : 4567 : 89AB : CDEF

대부분의 주소들은 안쪽에 많은 0 이 있기 때문에 그룹 안에서 앞쪽에 나오는 0 은 생략할 수 있다. 따라서, 0123은 123으로 쓸수 있다. 그리고 16개의 0을 가진 하나 이상의 그룹은 콜론 쌍(::)으로 대치할 수 있다. 위의 주소를 이 방법에 따라 바꾸면 다음과 같다.

          8000 :: 123 : 4567 : 89AB : CDEF

마지막으로, IPv4 주소는 콜론의 쌍(::)과 예전의 점으로 구분된 10진수 숫자로 쓰여질 수 있다.

          ::210.115.48.115


IPv6는 16 비트를 사용하기 때문에 주소는 정확히 2^128개 이다. 이것은 대략 3 * 10^38 개이다. 만약, 육지와 바다를 포함한 지구 전체가 컴퓨터로 뒤덮여 있다면, IPv6는 제곱미터당 7 * 10^23 개의 주소가 가능하다.


Reference : Computer Networks(Andrew S. Tanenbaum)
Posted by Proneer

댓글을 달아 주세요