본문

Neighbor Discovery Protocol(NDP) : 이웃 탐색 프로토콜

[그림 1] Neighbor Discovery for IPv6 (RFC 2461)


RFC1970 : Neighbor Discovery for IP Version 6 (IPv6)

RFC2461 : Neighbor Discovery for IP Version 6 (IPv6)

RFC4861 : Neighbor Discovery for IP version 6 (IPv6)


동일 링크상에서 Neighbor Discovery를 하는 이유는

* Autoconfiguration을 위해(RS/RA를 통해. 자세한 사항은 Address Auto-configuration : 주소 자동생성 페이지 참고)

* 다른 이들의 존재여부를 파악하고 링크계층 주소를 알아내기 위해(Address Resolution)

* 라우터를 찾고, 활성화된 이웃들에 대한 경로에 대한 reachability 정보를 유지하기 위하여(Neighbor Unreachability Detection)


Neighbor Discovery Protocol(NDP) :  위의 RFC에 의해, 다음의 다섯가지 메시지들을은 Neighbor Discovery Type ICMPv6 Message라고 불린다. ICMPv6의 정보 메시지들을 이용해 동일 네트워크 내 접속된 노드간의 관계를 판단하는 방법을 제공한다. RS -> RA | NS - NA | Redirect


[그림 2, 3] Router Solicitation message format


1. [133]Router Solicitation(RS) : 호스트가 새로운 네트워크 영역에 들어갔을 때 라우터에 신속하게 RA메시지 전송을 요청하는 메시지로, 호스트의 인터페이스가 이용하능한 상태가 되면 RS를 통해 라우터에 RA메시지를 즉시 전송하도록 요청한다. 송신자(source)는 이 메시지를 보낸 노드의 주소이거나, 주소가 없는 경우는 지정되지 않은 주소를 사용한다. 수신자(destination)은 대개 All-router(FF02::2) 멀티캐스트 그룹을 사용한다.



[그림 4, 5] Router Advertisement message format


2. [134]Router Advertisement(RA) : 라우터는 RS메시지에 대한 응답으로 RA 메시지를 전송하거나, 멀티캐스팅이 가능할 경우 주기적으로 자신의 서브넷 내에 새로이 위치한 호스트에게 자신의 존재를 알리기 위해 prefix가 담긴 RA 메시지를 전송한다. RA 메시지를 수신한 호스트는 기본 라우터 목록을 업데이트하고 address autoconfiguration을 위한 네트워크 prefix값등을 얻는다. 이 뿐만 아니라 Link MTU, Lifetime등의 기타 네트워크 정보 또한 포함한다. 단, 현재의 IPv6 메커니즘으로는 0초부터 1초까지의 랜덤한 시간을 기다린 후 라우터가 RA 메시지를 보내도록 되어있다. 이같이 한 이유는 어떤 망에서 많은 단말들이 동시에 부팅되었을 경우, 순간적으로 많은 RA 메시지 전송을 피하기 위해서 1초의 랜덤한 시간을 가지도록 하기 위해서이다.


M, O, Reserved의 부분을 Autoconfig Flag section이라 하며, 이때 M은 Managed Address Configuration flag(상태 보존형 자동 주소 설정 방식의 사용을 지시), O는 Other Stateful Configuration Flag(주소 이외의 정보를 획들하기 위해 상태 보존형 방식 사용)를 의미한다. 

M이 1이되면 송신 라우터는 link상의 host가 stateful address autoconfiguration, 즉 DHCPv6을 이용하여 주소를 할당받는다는것을 의미하고 0이라면 stateless address autoconfiguration을 사용하여 주소를 할당받는다.

O가 1이되면 송신 라우터는 link상의 host가 다른 link의 정보를 습득하기 위해 DHCPv6을 사용한다는것을 의미한다. M, O flag는 함께 사용될 수 있는데, 예를 들어 M flag는 0, O flag는 1이라면, 라우터는 host가 stateless address autoconfiguration을 사용하여 주소를 할당받지만, 다른 link설정 parameter를 위해 DHCPv6 서버를 참조한다는것을 의미한다.

따라서 M 와 O 플래그를 사용하여 Stateful (RFC3315) 혹은 Stateless DHCPv6(RFC3736)로 구분할 수 있다. 이에 대한 자세한 사항은 RFC5175(IPv6 Router Advertisement Flags Option)에서 확인할 수 있다.


H는 Home Agent flag로서, 라우터가 HA역할을 수행하는지의 여부를 나타낸다.

Router Lifetime - 기본 라우터에 대한 lifetime을 초 단위로 나타낸것으로, 최대시간은 18.2시간이다. 0일경우 기본 라우터가 아님을 나타낸다.

Reachable Time - 노드의 도달 가능성 확인(reachability confirmation) 신호 수신 후 도달 가능하다고 여기는 시간(밀리초 단위)이며, NUD(Neighbor Unreachability Detection)에 사용된다. 즉, NUD 검사 후 노드가 유효한 것으로 인정되는 시간이다.

Retransmit Timer - NS 메시지의 재전송 간격(밀리초 단위). 주소할당 및 NUD에 사용된다.

Option - Source Link-layer address, MTU, Prefix information 등이 들어간다.



[그림 6, 7] Neighbor Solicitation message format


3. [135]Neighbor Solicitaion(NS) : NS메시지는 아래의 세가지 기능을 수행하는데 사용된다. 

1. Duplicated Address Detection(DAD)

2. 인접 노드를 저장한 링크계층 주소를 통해 계속 도달할 수 있는지 확인(Neighbor Unreachability Detection), 

3. 인접 노드 링크계층 주소결정(Address Resolution)


노드는 링크계층 주소 결정을 위해 NS 메시지를 보내 상대 노드에 자신의 링크계층 주소를 제공하면서 상대노드의 링크계층 주소를 요청한다. 수신자(destination)를 설정할 때, 송신 노드가 IPv6주소에서 link layer로 주소를 resolve해야 할때엔 멀티캐스트 주소를 사용하며, 이웃의 reachability를 확인할 때에는 유니캐스트 주소를 사용한다. 송신자(source)를 설정할때, 유니캐스트 주소를 사용하지만 DAD 과정 중에는 지정되지 않은(unspecified) 주소를 사용한다.



[그림 8, 9] Neighbor Advertisement message format


4. [136]Neighbor Advertisement(NA) : NA메시지는 위의 세가지 NS메시지에 대한 응답이며, NS 메시지를 전송받지 않았을 때도 새로운 정보를 신속히 전파하기 위해 링크계층 주소 변경을 알리는 메시지로 사용된다. 노드가 이 메시지를 받게되면 자신의 Neighbor Cache에 IPv6-Layer2 주소 매핑 정보를 저장한다. NS 메시지와 더불어, IPv4의 ARP를 대체한다.



[그림 10, 11] Redirect message format


5. [137]Redirect(R) : 상대 노드로의 여러 경로 중 최적의 경로에 있는 첫번째 홉을 알려주기 위해 사용되는 메시지로, 라우터는 이 패킷을 보내 호스트의 최적의 경로에 있는 홉 노드를 선택하도록 한다. 이 첫번째 홉 노드는 호스트 또는 라우터가 될 수 있으며 호스트일 경우 ICMPv6 메시지의 상대 주소 필드와 목적지 주소를 같게 설정하면 된다. 호스트가 처음으로 외부 네트워크에 위치한 목적지를 향해 패킷을 전송할 때, Default Router List에서 default router를 선택해서 이쪽으로 보내야 한다. 선택된 라우터가 최적의 경로를 가지는지 알 수 없으므로 우선 패킷을 선택된 라우터로 보낸다. 선택된 라우터는 이 패킷을 올바른 경로로 보내지만, 이와 동시에 RR을 호스트에게 보냄으로서, 동일 링크상에 목적지를 향하는 최적의 경로(라우터)가 있다는것을 알려준다. RR을 받은 호스트는 Destination cache를 업데이트하여 최적 경로를 저장한다.



* Address Autoconfiguration 과정 서술

클라이언트 기반의 이동성 기술은 핸드오버가 발생될 때 이동성 지원 단말이 핸드오버를 수행한다. 핸드오버 수행을 위해 먼저 새로운 서브넷에서 새로운 주소를 생성하고 라우터에 위치를 등록한다. NDP는 단말이 새로운 서브넷에 접속하였을 때 통신을 위해 가장 적절한 AR에 등록하기 위한 방법이다. 이를 위해 RS 메시지와 RA 메시지가 쓰인다. RA메시지는 AR이 주기적으로 자신의 prefix정보를 옵션 필드에 담아 멀티캐스팅한다. 단말은 이 메시지를 받고 새로운 서브넷에 들어온 것을 인식하거나 새로운 CoA를 생성하는데 쓰인다. 새로운 서브넷에 들어온 단말은 RA 메시지를 받지 못했을 경우 현재 위치에서 가장 적절한 AR에게 IP주소가 포함된 RA 메시지를 받기 위해 MAC 정보가 담긴 RS 메시지를 전송한다. 단말은 RA 메시지를 수신한 후 AR의 prefix 정보와 자신의 MAC 주소를 임의로 합성하여 IP 주소를 만들고 DAD를 수행한다(Address Autoconfiguration)


* Movement Detection

MN이 이동한 후에 RA 메시지의 prefix 정보와 Neighbor Unreachable Detection(NUD) 메커니즘을 사용하여 MN이 이동하였음을 감지할 수 있다. 또한 MN은 필요에 따라 RS 메시지를 사용하여 RA를 유도할 수 있다. 이후 CoA생성 및 BU과정이 이루어진다.




[그림 12, 13] Neighbor Unreachability Detection by Neighbor Solicitation / Advertisement message


* NUD(Node Unreachability Detection)

하드웨어/네트워크상의 문제로 인해 Node Unreachability가 발생할 수 있으며, 해당 노드에 문제가 발생한 경우에는 해결 불가하지만, 그 외의 경우에는 다른 경로가 존재할 수 있다(alternative path). NS와 NA 메시지를 사용하여 neighbor에 대한 도달 가능성을 확인할 수 있다.

NA의 메시지에서 Solicited flag가 1일 경우, NS 메시지에 대한 응답임을 나타내며, 이로서 reachability confirmation이 이루어진다. 즉, 송신한 메시지에 대한 응답을 나타내므로 양방향성이 보장된다. Solicited flag가 0인 NS/RA 메시지를 수신할 경우, 수신측에서는 송신측으로부터의 자신에게로 향하는 경로가 있음을 확인할 수 있지만, 가는 경로는 불분명하다. Reachablility는 forward 경로를 중요시하므로 도달가능하다고 확정할 수는 없다.


Router - 

MN이 자신의 default router가 unreachable한지 결정할 때 사용한다. unreachable할 경우 MN은 solicitation 메시지를 통해 router를 찾아야 한다. MN은 router로부터 전송되는 패킷을 주시함으로써 router reachability를 알 수 있으므로 여분의 NUD는 필요하지 않는다.

Unreachable한 경우 : MN의 상위 프로토콜에서 forward되지 않는 경우(ex, TCP의 재전송 타이머가 expire되는 경우), NS메시지에 대한 default router의 NA메시지를 받을 수 없는 경우.

Reachable한 경우 : MN이 default router로부터 IPv6패킷을 받거나 주기적인 advertisement 메시지를 받는 경우.



그림출처 : 

[그림 1] : [10] IPv6 Ad-hoc Networking & Network Mobility Technologies, 2004 -페이지13

[그림 2] : 1-2. Router Solicitation Message

[그림 4] : 1-1. Router Advertisement Message

이외 그림 출처 : [29] IPv6 Tutorial (T5-3), 2002

댓글

Holic Spirit :: Tistory Edition

design by tokiidesu. powerd by kakao.