본문

MIPv6의 핸드오버 절차 (2/3)


4. Duplicate Address Detection

한 노드가 IPv6 네트워크에 접속하게 될 때 해당 링크에서 유일한 주소를 가지게 되었는지 확인하기 위해 Duplicate Address Detection(DAD)를 수행해야 하듯, 새로운 네트워크로 이동한 MN또한 CoA 등록 과정에서 얻은 CoA에 대해 DAD를 수행해야 한다. 이것은 CoA가 stateless, stateful, 혹은 수동으로 설정되었는지에 상관없이 이루어져야 하는 과정이다. 


IPv6에서, DAD 과정은 IPv6 Stateless Address Autoconfiguration(RFC2462) 문서에 기술되어 있으며 Neighbor Discovery for IP Version 6(RFC2461) 에 기술된 neighbor discovery 과정을 사용한다. MN은 DAD 과정이 성공적으로 이루어지기 전까지는 nCoA를 사용할 수 없다. DAD가 성공하기 전까지는, MN의 nCoA는 잠정적(tentative)으로 여겨지며, 따라서 (DAD의 한 부분인) neighbor discovery의 용도로만 사용될 수 있다. MN이 DAD가 성공하기 전에 nCoA를 사용하고, 동일 노드에서 동일한 주소를 사용하는 노드가 존재하는 경우, MN가 다른 노드에게로 향하는 패킷을 처리하는 결과를 낳을 수 있다.


DAD를 수행하기 위해, MN은 NS 메시지를, 이것의 nCoA를 solicitation 메시지의 target 주소로서 포함하여, 전송한다. NS 메시지의 IPv6 헤더상의 destination 주소는 target 주소의 solicited-node multicast 주소로 설정하고, source 주소는 지정하지 않은 주소로 놓아둔다. 만약 MN의 nCoA와 동일한 주소를 갖는 또다른 노드가 존재한다면, 이들중 하나가 발생할 것이다:

1. 중복되는 노드는 MN의 NS 메시지를 받고, all-nodes multicast address에게 NA메시지로 답신한다. 이를 통해 MN의 주소가 중복됨을 알려줄 수 있다.

2.  MN은 DAD 과정을 수행중인 중복되는 노드로부터, nCoA가 target 주소로 되는 NS메시지를 받는다


따라서, DAD 과정은 MN에게, 동일 네트워크 상에 동일한 nCoA를 사용하고 있는 다른 노드가 있다는 사실을 명백하게 알려줄 수 있다. 하지만, DAD 과정은 MN의 nCoA가 네트워크상의 다른 노드에 사용되고 '있지 않는다는 사실'에 대해서는 보장하지 않는다. 사실, DAD가 성공적으로 이루어 졌다는 시점은 정확히 집기 애매하다.RFC2462에 따르면, DAD를 수행하는 노드는, 만약 DUP_ADDR_DETECT_TRANSMITS 개의 NS 메시지를 보낸 후 RETRANS_TIMER 밀리초 내에 중복의 사실을 발견하지 못할 경우 잠정적인 주소가 유일성을 갖는다고 여겨질 수 있다고 한다. RETRANS_TIMER와 DUP_ADDR_DETECT_TRANSMITS는 각각 1000, 1의 값을 갖는 설정가능한 매개변수(parameter)이다. 따라서, 기본 조건에서, DAD는 최소 (1초+[링크 수립과 논리 계산에 소요되는 추가적인 지연시간])을 필요로 한다.


RFC2462에 따르면, 만약 노드의 해당 인터페이스에서 (재)초기화 후에 처음 보내는 패킷인 경우, DAD를 위한 NS 메시지를, 0에서 MAX_RTR_SOLICITATION_DELAY 초 이내의 무작위의 시간에 보내야 한다. RFC2461에서, MAX_RTR_SOLICITATION_DELAY는 1초로 설정되어 있다. 따라서, 현재 IPv6 스펙에 따른 환경에서, MN이 RS 메시지를 이 이전에 보내지 않는 한, autoconfiguration 과정 중에는 추가적인 지연시간이 발생하게 될 것이다. 평균적인 상황에서 500ms가 소요될 것이고 최악의 경우 1초가 소요될 것이다.


다른 네트워크에 자주 진입하고, 지속적으로 서로다른 CoA를 가지는 MN이, 해당 링크 상에서 (주소 생존 기간 내에) 중복되는 주소를 고를 가능성이 높다고도 말할 수 있다. 주소의 중복이 발생할 확률은 주소 설정에 사용되는 방법과 관련이 있다. 만약 stateless 방법이 사용되었다면, 노드의 IPv6 주소에서의 64비트 host ID 부분은 노드의 링크 계층 interface identifier(MAC 주소와 같은)으로부터 생성되게 되며, 이러한 identifier는 충돌될 가능성이 거의 없다. (일부 제조사의 실수 또는 악의적인 사용자로 인한 상황을 제외한다면)


autoconfiguration 과정을 빠르게 하기 위해서, MN(혹은 다른 어떠한 노드든)은 DAD를 초기화 하면서 router discovery를 수행할 수 있다. 노드의 링크계층 identifier를 미리 알고 있기 때문에, MN은 RA를 수신하기 전, link-local address에 대해 DAD를 수행할 수 있다. 만약 RA가 노드에게 stateless address configuration을 수행하도록 지시한다면, link-local address 상에서의 유일성을 획득한 경우, MN은 global unicast address에 대해 DAD를 수행할 필요가 없다.


라우터가 RS에 응답하는데 몇초를 지연할 수 있기 때문에, RA를 수신한 후 DAD를 수행하는 MN은, stateless 방법이 사용되어 동시에 작업이 진행되는 때보다, 더 오랜 지연시간을 경험하게 될 것이다. 하지만 위에서 언급했듯, MN은 새로운 네트워크로 이동했다는 사실을, 오직 새로운 라우터의 RA를 받음으로서 인지하게 될 것이다. (router discovery와 동시에 DAD를 수행하여 속도를 개선할 가능성이 사라지게 된다)



출처 : [24] Mobile IPv6 Handovers: Performance Analysis and Evaluation: 3. The Mobile IPv6 Handover Process, 2004

댓글

Holic Spirit :: Tistory Edition

design by tokiidesu. powerd by kakao.