먼저 자동으로 부여받게 되는 IPv6의 주소형식은 보통 전체 128bit를 반으로 나눠 앞의 64bit는 Prefix로써 동일 링크내의 라우터로 부터 할당 받는다. 다음으로 뒤쪽의 나머지 64bit는 호스트 상에서 Interface ID를 생성하며, 이는 링크로컬 주소의 뒷부분을 사용한다.
ex) 라우터 주소가 2001:BEEF:CAFE:DEAD:1234:5678:9876:4321/64 일 경우
Prefix는 2001:BEEF:CAFE:DEAD/64 가 된다.
호스트 링크로컬 주소가 FE80::1234 일 경우
Interface ID는 ::1234 가된다.
(자동 주소 부여시 Interface ID가 링크 로컬 주소의 뒷부분을 사용한다고 했다. 때문에 링크로컬 주소를 임의로 할당하지 않고 기본 값을 사용한다면 링크로컬 주소는 호스트의 MAC 주소를 기반으로 EUI-64를 통해 생성한 Interface ID를 사용하게 된다. 이럴 경우 자동주소 부여시 사용되는 주소도 마찬가지로 EUI-64로 생성된 Interface ID를 사용하게 될 것이다.)
IPv6에는 이 두 부분을 가지고 기존의 IPv4 처럼 별도의 DHCP를 운영하지 않더라도 ICMPv6에 내장된 NDP(Neighbor Discovery Protocol) 기능을 통해 자동으로 주소를 부여하는 것이 가능하다.
이 NDP의 기능들 중에 자동으로 주소를 부여하는데 사용되는 것은 RS (Router Solicitation / *solicitation:권유, 유도) 메세지와 RA (Router Advertisement) 메세지 이다.
RS는 PC로 부터 생성되어 전송되며 동일 링크상에 있는 라우터를 찾기 위해 사용되는 메세지이다.
RA는 라우터로 부터 생성되어 전송되며 동일 링크상에 있는 모든 노드(모든 호스트 및 라우터)로 자신을 알리기위해 사용되는 메세지이다.
이 두 RS, RA 메세지가 오고가는 데에는 2개의 멀티캐스트 주소가 사용되는데, 하나는 동일 링크내 모든 라우터로 보내지는 주소이고 다른 하나는 동일 링크내 모든 노드로 보내지는 주소이다.
먼저 동일 링크내 모든 라우터로 보내지는데 사용되는 멀티캐스트 주소는 FF02::2 이다.
동일 링크내 모든 노드로 보내지는데 사용되는 멀티캐스트 주소는 FF02::1 이다.
(FF02::1 주소는 어떻게 보면 IPv4의 브로드 캐스트 주소와 비슷하다고 볼 수 있다.)
이제 Packet Tracer를 통하여 패킷이 이동하는 과정을 직접 살펴기로 하자.
Router0 와 PC0는 동일 링크 상에 있으며 2001:0:0:0::/64 서브넷에 위치하고 있다.
Router0 의 주소는 2001:0:0:0::1/64 이다.
현재 PC0의 IPv6 주소는 Static으로 설정되어 있으며 주소를 지정하지 않은 상태이다.
링크주소는 편의상 Router0는 FE80::1. PC0는 FE80::2 로 설정하고 진행하도록 하겠다.
이제 PC0의 IPv6 주소 설정을 Auto Config로 바꿔보기로 하겠다.
PC0 에서는 RS (Router Solicitation) 메세지를 생성하게 되며 출발지 IP로 PC0의 링크로컬 주소 FE80::2, 도착지 IP로 라우터 멀티캐스트 주소인 FF02::2 를 사용하고 있음을 확인 할 수 있다.
Router0는 PC0로 부터 RS 메세지를 받고, 바로 RA 메세지를 생성하게 된다. 이 RA 메세지에는 Router0의 MAC 주소와 Prefix 를 포함하고 있다. 또한 여기서 보면 이때의 도착지 IP가 모든 노드 멀티캐스트 주소인 FF02::1을 사용하고 있음을 확인 할 수 있다. 출발지 IP는 Router0의 링크로컬 주소를 사용한다.
PC0는 Router0로 부터 RA 메세지를 받고 자동으로 주소를 설정한다. 아래 보듯이 Prefix로는 Router0의 Prefix 를 그대로 사용하며, Interface ID는 PC0의 링크로컬 주소의 뒷부분에 해당하는 :0:0:0:2 를 사용하게 됨을 확인 할 수 있다. 기본 게이트웨이 주소는 Router0의 링크로컬 주소를 사용하게 된다.
이상으로 NDP를 통한 IPv6의 자동 주소 부여 과정을 살펴보았다.
DHCP와의 차이점은 NDP는 이렇게 주소를 한번 설정하고 나면 Router0 와 PC0간에 주소 할당을 위해 오고가는 패킷은 더이상 존재하지 않는다. 반면에 DHCP는 해당 릴리즈 타이머를 기반으로 지속적으로 패킷을 주고 받게 된다. 또한 NDP는 자동주소 부여를 위한 별도의 장비를 필요로 하지 않기 때문에 효율적인 대안이 될 수 있다고 볼 수 있다.