호우동의 개발일지

Today :

article thumbnail

IPv6 개발 배경

  • 1990년대 초에 IETF는 IPv4 프로토콜의 다음 버전을 개발하기 시작
    • IPv4 주소 공간이 고갈되기까지는 아직 상당히 시간이 남았지만,
      광범위하게 새로운 기술을 구축하기에는 상당히 시간이 필요하기 때문에 이때 시작됨

  • IPv6 개발의 주된 동기
    → 32비트 IPv4 주소 공간이 인터넷에 접속하는 서브넷과 노드들로 인해 빠른 속도로 고갈 진행 중
    → 큰 IP 주소 공간의 필요성을 인식하여 새로운 IP 프로토콜인 IPv6가 개발됨

  • IPv6 개발자들은 IPv4의 축적된 운용 경험에 근거하여 IPv4의 다른 면을 확장하고 축소하였음

 

 


IPv6 데이터그램 포맷


IPv6에 도입된 중요한 변화

1. 확장된 주소 기능

  • IPv6는 IP 주소 크기를 32비트에서 128비트로 확장 → IP 주소가 고갈되는 일은 발생 X
  • IPv6는 새로운 주소 형태인 애니캐스트 주소(anycast address)를 도입함
    • 애니캐스트 주소로 명시된 데이터그램은 호스트 그룹의 어떤 이이게든 전달될 수 있음
      • 예시 : 주어진 문서를 포함한 수많은 미러 사이트 중 가장 근접한 HTTP GET을 보내는 데 사용 가능

    • 기존에 있던 유니캐스트, 멀티캐스트 주소도 그대로 사용

 

2. 간소화된 40바이트 헤더

  • IPv4의 많은 필드가 생략되거나 옵션으로 남겨짐
  • 40바이트의 고정 길이 헤더는 라우터가 IP 데이터그램을 더 빨리 처리하게 해 줌
  • 새로운 옵션 인코딩은 유연한 옵션 처리를 가능하게 한다.

 

3. 흐름 레이블링

  • IPv6는 정의하기 어려운 흐름(flow, 플로우)을 가지고 있다.
  • 특별한 처리를 요청하는 송신자에 대해 특정 흐름에 속하는 패킷 레이블링을 가능하게 한다.
    • 특별한 처리 요청 : 비 디폴트 품질 서비스, 실시간 서비스 등
    • RFC 2460에서 정의한 설명
    • IPv6 설계자는 언젠가 필요할 흐름 차별화를 예견했다.
      • 흐름 차별화 예시
        • 오디오/비디오 전송 → 흐름으로 처리
        • 파일 전송, 전자 메일 같은 예전의 애플리케이션 → 흐름으로 처리되지 않음
        • 높은 사용자 우선순위를 가지고 전달된 트래픽 또한 흐름으로 처리될 수 있음

 


IPv6 데이터그램에 존재하는 필드

IPv6 데이터그램 포맷
IPv6 데이터그램 포맷

  • 버전 : 4비트 필드로, IP 버전 번호를 인식한다.
    • IPv6의 해당 필드값은 ‘6’이다.
    • 단순히 이 필드를 ‘4’로 설정한다고 IPv4 데이터그램을 만들 수 있는 것은 아님

  • 트래픽 클래스 : 8비트 필드로, 특정 애플리케이션 데이터그램에 우선순위를 부여하는 데 사용
    • IPv4의 TOS 필드와 비슷한 의미로 만들어진 필드
    • 예시 : 흐름 내의 SMTP 이메일보다 VoIP에게 우선순위가 있어야 함

  • 흐름 레이블 : 20비트 필드로, 데이터그램의 흐름을 인식하는 데 사용
  • 페이로드 길이 : 16비트 필드로, IPv6 데이터그램에서 패킷 헤더 뒤에 나오는 바이트 길이이다.
    • 고정 길이 40바이트 패킷 헤더 뒤에 오는 부호 없는 정수(unsigned integer)이다.

  • 다음 헤더 : 해당 필드는 데이터그램의 내용(데이터 필드)이 전달될 프로토콜을 구분한다.
    • TCP나 UDP를 구분한다.
    • 이 필드는 IPv4의 헤더에 있는 프로토콜 필드와 같다.

  • 홉 제한 : 홉 제한 수가 0보다 작아지면 라우터는 데이터그램을 버려야 한다.
    • 이 필드의 내용은 라우터가 데이터그램을 전달할 때마다 1씩 감소

  • 출발지와 목적지 주소 : IPv6 128비트 주소의 다양한 형태는 RFC 4291에 있음
  • 데이터 : IPv6 데이터그램의 페이로드 부분
    • 데이터그램이 목적지에 도착하면 IP 데이터그램에서 페이로드를 제거한 후,
      다음 헤더 필드에 명시한 프로토콜에 전달

 


IPv6에서 없앤 필드(IPv4에만 존재하는 필드)

  • 단편화/재결합
    • IPv6에서 단편화와 재결합을 출발지와 목적지만이 수행한다.
    • 라우터가 받은 IPv6 데이터그램이 너무 커서 출력 링크로 전달할 수 없는 경우
      • 데이터그램을 폐기하고 패킷이 너무 크다(Packet Too Big)라는 ICMP 오류 메시지를 송신자 전송
      • 송신자는 데이터를 IP 데이터그램 크기를 줄여서 다시 보냄

    • 단편화와 재결합은 시간이 걸리므로 라우터에서 이 기능을 삭제
      대신 종단 시스템이 하게 하여 네트워크 IP 전달 속도가 증가

  • 헤더 체크섬
    • 트랜스포트 계층 프로토콜과 데이터 링크 프로토콜은 체크섬을 수행
      → 네트워크 계층의 체크섬 기능은 중복되는 것이므로 생략해도 될 것이라 생각

    • IP 패킷의 빠른 처리에 주요 관점을 둠
    • IPv4 헤더는 TTL 필드를 포함하여 IPv4 헤더 체크섬을 모든 라우터마다 수행
      → 비용이 많이 드는 과정이었음

  • 옵션
    • 옵션 필드는 더 이상 표준 IP 헤더 필드가 아님
      → 하지만 완전히 사라진 것은 아니고, 대신 옵션 필드는 IPv6 헤더에서 다음 헤더 중 하나가 될 수 있음

    • TCP나 UDP 프로토콜 헤더가 IP 패킷에서 다음 헤더가 될 수 있는 것처럼 옵션 필드 역시 그럴 수 있다.
    • 옵션 필드가 제거되었기 때문에 표준에서는 고정 길이의 40바이트 IP 헤더를 갖게 됨

 

 


IPv4에서 IPv6로의 전환

  • IPv4 데이터그램을 IPv6로 구축된 시스템으로 처리하는 것 → 가능
  • IPv6 데이터그램을 IPv4로 구축된 시스템으로 처리하는 것 → 불가능

 


해결법 1 - 플래그 데이(flag day) 선언

  • 모든 인터넷 장비를 끄고 IPv4에서 IPv6로 업그레이드하는 시간과 날짜를 정하는 것
  • 수억 개의 장비가 관련된 플래그 데이는 오늘날에 사실상 불가능함

 


해결법 2 - 터널링(tunneling)[RFC 4213]

터널링의 기본 개념

터널링 논리적 시각
터널링 논리적 시각

  • 가정
    • 2개의 IPv6 노드가 IPv6 데이터그램을 사용해서 동작
    • 이 2개의 노드는 IPv4 라우터를 통해 연결되어 있다.

  • 터널(tunnel) : 두 IPv6 사이에 있는 IPv4 라우터들을 터널이라고 함

 

터널링 과정

터널링
터널링

  1. 터널의 송신 측에 있는 IPv6 노드(B)는 IPv6 데이터그램을 받고,
    IPv4 데이터그램의 데이터(페이로드) 필드에 이것을 넣음

  2. 이 IPv4 데이터그램에 목적지 주소를 터널의 수신 측에 IPv6 노드(E)로 적어,
    터널의 첫 번째 노드(C)로 보낸다.

  3. 터널 내부에 있는 IPv4 라우터는 IPv4 데이터그램이 IPv6 데이터그램을 갖고 있다는 사실을 모른 채,
    다른 데이터그램을 처리하는 방식으로 이 IPv4 데이터그램을 처리한다.

  4. 터널 수신 측에 있는 IPv6 노드는 IPv4 데이터그램을 받는다.
    • IPv6 노드가 IPv4 데이터그램을 받는 이유 → IPv4 데이터그램의 목적지이기 때문

  5. 이후, 이 IPv4 데이터그램이 실제 IPv6 데이터그램임을 결정
    • IPv6 데이터그램임을 결정할 수 있는 근거
      • IPv4 데이터그램 프로토콜 번호 필드가 41 → IPv4 페이로드는 IPv6 데이터그램임을 알 수 있음

  6. 이 노드는 IPv6 데이터그램으로 만든 다음에 IPv6 데이터그램을 IPv6 노드로 보낸다.

 


IPv6의 최근 동향

  • 미국 정부의 2단계 도메인 중 1/3 이상이 IPv6를 사용할 수 있다고 보고
  • 클라이언트 측에서 구글은 구글 서비스에 접속하는 클라이언트 중 약 25%가 IPv6를 사용한다고 보고
  • IPv6 채택이 가속화되고 있음