WOW!!! Hardwired Dual TCP/IP Stack Controller - W6100 [PART I]

by MC



Overview


What, Why, How : IPv6

우선, PART I에서는 IPv6는 무엇이며, 왜 필요하고, 어떻게 사용되는지 알아보고,
PART II에서는 위즈네트의 세계 최초 Hardwired Dual TCP/IP Stack Controller W6100 에 대해 간단히 알아 보자.

What is IPv6 ?

IPv6는 IPv4 주소의 고갈에 따른 차세대 Internet Protocol로, 4 Bytes IPv4 주소를 16 Bytes IPv6 주소로 변경하여, 할당가능한 IP Address 대역을 상상없을 만큼 넓힌 것이다.

  • IPv6 Address Structure & Type

    다음 그림은 IPv6 주소를 도식화 한 것이다.

    IPv6 주소는 일반적으로 상위 64bits (n bit + m bit)는 Subnet Prefix, 하위 64bit는 Inferface ID로 사용된다.
    또한 n bit의 설정에 따라, Link-Local, Site-Local, Global Unicast Address로 구분되며, 그 외 Unicast, Anycast, Multicast Address등으로도 구분될 수 있다.

    자세한 내용은 RFC4291를 참조하라.

  • IPv4 vs IPv6 Address Format

    IPv6 Header는 IPv4 Header를 수정 보완하여 좀 더 효율적인 Header 구조를 갖는다.
    상기 그림은 IPv4 와 IPv6 Header를 비교 분석한 것이다.
    IPv6에서 크게 달라진 점은 ID와 Header Checksum를 제거하고, Header 길이를 고정 40 Bytes로 만든 것이다.

    IPv6 Header has a more efficient header structure by modifing and supplementing IPv4 header.
    The above figure compares between IPv4 and IPv6 header.
    A major change in IPv6 is the elimination of the ID and Header Checksum and the IPv6 header lenght fix to 40 Bytes.

  • Coverage of IPv4 & IPv6

    IPv6 Address는 IPv4 Address에 비해 상상할 수 없을 만큼 큰 폭으로 증가하였다.
    아래 표는 IPv4와 IPv6의 갯수를 비교한 것이다.

    Power of 10 Real count
    IPv4 4.3 X 10 9 4,294,967,296
    IPv6 3.4 X 10 38 340,282,366,920,938,463,463,374,607,431,768,211,456

    아래 그림과 같이 지구 면적 1KM2 당 차지하는 IP Address 밀도를 보더라도, IPv6 Address의 방대함을 알 수 있다.

Why need IPv6 ?

IPv4 주소 고갈에 따른 IPv6 Address의 필요성은 아무리 강조해도 지나치지 않을 정도이다. 전세계적으로 IPv4 Address에서 IPv6 Address로의 전향이 점점 가속화 되고 있다.
물론 IPv4 Address를 100% 활용할 수 있는 Network Address Transition(NAT) 공유 기술로 어느 정도 IPv4 주소의 고갈의 문제를 해결할 수 있다고는 하나 한계가 있다.
현재 도래하고 있는 IoT 시대에 전 세계의 수많은 Device들이 인터넷에 연결되고 지능화 되어 가고 있다. NAT 공유기나 Edge Computer 기술을 활용하여 이를 극복하고는 있으나, Peer-to-Peer 연결이 불가능하기 때문에 Device를 직접적으로 제어할 수 없다는 문제점을 안고 있다.

따라서, IPv4에서 IPv6로의 진화는 지극히 당연한 일이며, 앞으로 수많은 인터넷 장치들이 IPv4 주소 대신 IPv6 주소를 가질 것이다.

How to use ?

IPv4에서 IPv6f로의 전향은 아래와 같이 크게 세가지 방법이 있다.

  • Dual Stack

    말그대로, IPv4와 IPv6 Stack을 모두 가지고 있고, 해당하는 Version에 맞게 통신을 대응할 수 있는 방법이다.
    Part II에서 설명할 W6100이 이 방식을 사용한다.

  • Translation

    이 방식은 특정 통신 Layer를 통해 Packet을 변환하여 전송하는 방식으로, 위의 그림처럼 각 Layer별로 3가지 방식이 있다.
    자세한 설명은 Cisco Aritcle를 참고하라.

    1. Header Translation

      헤더 변환은 IPv6 패킷 헤더를 IPv4 패킷 헤더로 변환하거나 또는 그 역순으로 변환하는 것이다. 이때 만일 필요하다면 패킷 무결성을 유지하기 위해 체크섬(checksum)을 조정(또는 재계산)하는 과정이 필요하다.
      NAT-PT(Network Address Translation Protocol Translation), SIIT(Stateless IP/ICMP Translation) 등이 있다.

    2. Transport Relay

      전송 계층에서 변환하는 방식으로, 전송 릴레이는 TCP(UDP)/IPv4 세션과 TCP(UDP)/IPv6 세션을 중간에서 릴레이 하는 것을 말한다.
      TRT(Transport Relay Translator)와 SOCKS Gateway 방식 등이 있다.

    3. Application Gateway 방식 (ALG)

      이 방법은 애플리케이션 계층에서 변환하는 방식으로, 각 서비스는 IPv4/IPv6별로 각각 독립적이기 때문에 헤더 변환에서 나타나는 단점은 없다. 하지만 각 서비스를 위한 ALG는 IPv4와 IPv6 모두에서 실행될 수 있어야 한다. 대표적인 ALG 방식의 예는 IPv4/IPv6 웹 프록시인 SQUID 등을 들 수 있다. 이 방식은 ALG의 성능에 따라서 서비스의 품질이 결정된다.

  • Tunneling

    IPv6/IPv4 단말과 라우터는 IPv6 데이터그램을 IPv4 패킷에 캡슐화해 IPv4 망을 통해 터널링할 수 있다. 즉, 터널링은 기존의 IPv4 인프라를 활용해 IPv6 트래픽을 전송하는 방법을 제공하며, 6to4, ISATAP, Teredo, DSTM 등이 있다.

ICMPv6

IPv6에서의 가장 큰 변화는 ICMPv6라 할 수 있다. ICMPv6는 IPv4 기반의 ICMPv4의 기응 뿐만 아니라, ARP, IGMP와 같은 Protocol을 함께 내재하여, 전박적인 Network 구성 및 관리를 통합하였다.

아래 그림은 ICMPv6의 대표적인 기능과 통합 Protocool을 도식화한 것이다.

  • Replacement function

    • Error Message : Same as ICMPv4

      1. Type 1 : Destination Unreachable Error
      2. Type 2 : Packet Too Big Error
      3. Type 3 : Time Exceeded Error
      4. Type 4 : Parameter Problem Error
    • Information Message : Same as PING

      1. Type 128 : Echo Request (NS)
      2. Type 129 : Echo Reply (NA)
    • Neighbor Discovery (ND) : Same as ARP

      1. Type 135 Neighbor Solicitation (NS)
      2. Type 136 Neighbor Advertisement (NA)
    • Multicast Listener Discovery(MLD) : Same as IGMP

      1. Type 130 : Multicast Listener Query (MLQ)
      2. Type 131 : Multicast Listener Report (MLR)
      3. Type 132 : Multicast Listener Done (MLD)
    • Redirect Message

      1. Type 137 Redirect
  • New Function

    • Router Disconvery(RD)

      1. Type 133 Router Solicitation (RS)
      2. Type 134 Router Advertisement (RA)
    • Router Renumbering (RR)

      1. Type 138

Auto Address Configuration (AAC)

IPv6의 또 다른 특징은 IP Address를 자동으로 설정할 수 있다는 것이다. 물론 IPv4에서도 DHCPv4 Server 운영을 통해 IPv4 Address를 자동으로 할당할 수 있다. IPv6 역시 DHCPv6을 Server 운영을 통해 IPv6 Address를 할당 받을 수 있다.

하지만, 여기서 주목할 것은 DHCPv6 Server 없이도 스스로 IPv6을 할당할 수 있다는 것이다. 이 기술은 State-less Auto Address Configuration(SLAAC)으로 불린다. IPv6는 아래와 같이 크게 2가지 방식으로 State-less, Stateful 방식으로 IP address를 할당 받을 수 있다.

  • State-less Auto Address Configuration (SLAAC)

    • SLLAC without DHCPv6
    • SLAAC with DHCPv6
  • Stateful Auto Address Configuration with DHCPv6

IPv6의 Auto Address Configuration은 일반적으로 아래 그림과 같은 방식으로 이루어진다.

그림에서 보는 바와 같이 Prefix 정보를 router로부터 수신하느냐? DHCPv6 Server로부터 수신하느냐에 따라 State-less, State-ful로 구분됨을 알 수 있다. 좀 더 정확히 설명하자면, 할당된 IP Address Pool 정보를 유지 관리하느냐에 따라 구분되어 진다. Router인 경우는 할당된 IP Address를 관리하지 않는다. 하지만 DHCPv6 Server인 경우 할당된 IP Address를 Server에서 유지 관리한다.
여기서, State-less Auto Address Configuration with DHCPv6는 앞서 설명한 것처럼 IP Address 할당에 대한 정보를 DHCPv6 Server가 관리하지 않음을 의마한다. 즉, IP Address를 할당받는 단말 입장에서 Prefix는 Router로 수신하지만, DNS와 같은 그 이외에 정보에 대해서는 DHCPv6 Server로 부터 수신하여 사용함을 의미한다.

Link-Local Address란, 단말이 자체적으로 생성한 주소로 Link-Local에서만 사용될 수 있는 주소를 말한다. Link-Local은 외부 통신을 하지 않고 같은 망내에서 통신하는 영역을 말한다. 흔히 Local에서 임의로 할당하는 192.168.0.100과 같은 VPN 주소와 유사한 성격을 가진다.

Duplicated Address Detection

EUI-64 방식이나 그외의 방식으로 생성된 Link-Local Address가 다른 단말이 사용하는지 반드시 Neigher Discovery (ND) 라는 확인 과정을 거쳐야 한다. 이는 자체적으로 생성한 단말들의 Link-Local Address의 충돌을 미연에 방지하여, 서로 충돌없이 원할한 통신을 보장하는 방법이기도 하다.

Get a Prefix

Prefix Information을 얻는 방법은 앞서 언급한 것처럼 2가지가 있다.

  1. Router Discovery (RR)

  2. DHCPv4

IPv6 Router는 AAC 방식을 State-less나 State-ful을 RA의 Flage Option의 M, O bit를 활용하여 지정할 수 있다.
단말은 해당 Bit 설정에 따라 ACC 방식을 선택한다.

아래 그림은 M, O bit 설정에 따른 Auto Address Configuratin 과정을 도식화한 것이다.

마치며

이상 IPv6에 대해 전반적인 이해를 돕기 위한 간략한 내용을 살펴 보았다. PART II에서는 이런 IPv6 Feature들이 W6100에 어떻게 구현되어 적용되었는지 살펴 보겠다.

We have briefly reviewed IPv6 to help you understand it.
In PART II , we will see how these IPv6 features are implemented and applied to the W6100.

블로그 이미지

MidnightCow

위즈네트 칩(W5300, W5200, W7100, W7500) 개발자

,