네트워크

21. IPv6

YJH3968 2021. 7. 7. 16:09
728x90

1. IPv6 Addressing and Subnetting

  • 128 bit를 8개의 16 bit group으로 나눠 적고, 각 group은 4개의 16진법 수로 이루어져 있다.
  • ex) 2001:0db8:0000:0000:0000:ff00:0012:3456
  • 실제로 이 주소는 매우 길기 때문에 몇 가지 규칙을 정해 그 길이를 줄였다.
    • 각 group에서 처음 나오는 0들은 제거한다.
    • 0으로만 이루어진 연속된 group들은 ::으로 교체한다.
    • ex) 위의 예는 1에 의해 2001:db8:0:0:0:ff00:12:3456으로, 2에 의해 2001:db8::ff00:12:3456으로 적는다.
  • loopback 주소의 경우 IPv4 주소는 127.0.0.1이었고, IPv6는 ::1이었는데, 실제 IPv6의 주소는 31개의 0과 끝의 1로, 이를 위의 규칙을 적용한 결과가 ::1이다.
  • IPv6 주소 공간은 특정 목적을 위해 미리 지정된 주소가 있다.
  • ex) FF00:으로 시작하는 주소는 multicast에 사용한다. 즉, host group의 주소를 지정할 때 사용한다. FE80:으로 시작하는 주소는 link local unitcast에 사용된다.
    • link local unitcast 주소는 local network segment 통신을 허용하고 호스트의 MAC 주소를 기반으로 구성한다. link local 주소는 IPv6 호스트가 DHCP 작동 방식과 유사하게 network 구성을 수신하는 데 사용한다. 48 bit 숫자에서 고유한 64 bit 숫자로 변환하는 알고리즘을 실행하고, 주소 host ID에 삽입한다.
  • IPv6 주소 공간은 매우 방대해서 IPv4처럼 주소 class를 나눌 필요가 없다. IPv6 주소는 앞의 64 bit를 network ID, 뒤의 64 bit를 host ID로 정의한다.
  • 그럼에도 관리 목적으로 network를 더 나누는 경우가 있는데, 이러한 경우 IPv6 subnetting은 CIDR notation을 사용한다. 이는 IPv6 주소의 network ID 부분에 대해 subnet mask를 정의하기 위해 사용한다.

2. IPv6 Header

  1. version field : 4 bit로 어떤 버전의 IP를 사용하는지 정의한다.
  2. traffic class field : 8 bit로 IP datagram 내에 포함된 traffic의 유형을 정의하고 각 traffic이 유형에 따라 다른 우선 순위를 받도록 한다.
  3. flow label field : 20 bit로 traffic class field와 함께 router가 특정 datagram에 대한 서비스 수준에 대한 결정을 내리는데 사용한다.
  4. payload length field : 16 bit로 data payload의 길이를 나타낸다.
  5. next header field : IPv6의 특별한 개념으로, IPv6 header의 긴 길이를 최대한 줄이기 위해 모든 optional field를 버리고 이 field에서 어떤 종류의 header가 현재 header 이후에 올지 정의한다. 추가적인 header는 꼭 있을 필요는 없다. 추가된 header 역시 next header field를 포함할 수 있고, optional configuration이 많은 경우 header의 chain이 생길 수 있다.
  6. hop limit field : 8 bit로 IPv4의 TTL field와 역할이 같다.
  7. source & destination address field : 각각 128 bit
  8. 만약 next header field가 또 다른 header가 있다고 한 경우 뒤에 그 header가 따라올 것이고, 아니면 payload length field에서 정해진 길이의 data payload가 따라올 것이다.

3. IPv4 and IPv6

  • IPv4가 IPv6로 바뀌는데는 시간이 걸리기 때문에 현재 IPv6와 IPv4가 모두 존재한다. 그래서 서로 간의 전환이 가능해야 한다.
  • 이러한 전환의 한 예시로 IPv4 mapped 주소 공간이 있다.
  • IPv4 mapped 주소 공간 : IPv6 사양이 IPv4 주소와 상호 연관될 수 있는 여러 주소를 따로 설정한 것을 의미한다. 80개의 0 이후 16개의 1은 IPv4 mapped 주소 공간의 일부임을 나타낸다. 나머지 32 bit는 IPv4 주소의 32 bit와 동일하다.
  • 이를 통해 IPv4 traffic이 IPv6 network를 통해 이동할 수 있고, IPv6 traffic 역시 IPv4 network를 통해 이동할 수 있다. 
  • Internet 중심부에서의 network보다 개인이 IPv4를 IPv6로 바꾸는 게 더 쉽기 때문에 Internet 중추에는 여전히 IPv4가 있다. 그래서 IPv6 tunnel을 통해 이를 해결한다.
  • IPv6 tunnel server는 연결 양 끝 부분에 존재한다. 이는 수신한 IPv6 traffic을 IPv4 datagram 안에 캡슐화한다. 그리고 IPv4 Internet 공간을 통해 이동해 다른 IPv6 tunnel server가 받는다. 이 server는 캡슐화를 풀고 IPv6 traffic을 network 내에서 이동시킨다.
  • IPv6 tunnel 기술과 함께, IPv6 tunneling 엔드포인트를 제공하는 기업인 IPv6 tunnel broker도 등장했다. 이로 인해 network에 대한 추가적인 장비를 도입할 필요가 없다.
728x90