요약

  • IPv6 중복 주소 검출(DAD)은 주소 생성과 주소 할당을 분리합니다. 접두어와 인터페이스 식별자로 주소를 도출할 수 있지만, 링크 검사가 끝날 때까지는 그 주소가 잠정 상태(tentative)로 남아 일반 트래픽을 실을 수 없습니다.
  • 이 검사는 의도적으로 좁은 질문을 던집니다. 미지정 출처에서 보낸 이웃 요청(Neighbor Solicitation)은 후보 주소가 이미 사용 중이거나 동시에 주장되고 있다는 증거를 찾고, 유한한 침묵은 활성화를 허용하지만 신원도 전역적 고유성도 증명하지 못합니다.
  • 이후 옵티미스틱 DAD는 제한된 조기 사용을 허용했고, 강화 DAD(Enhanced DAD)는 새로운 논스를 붙여 노드가 자신의 반사된 탐색과 다른 주장자를 구별하게 했습니다. 그러나 어느 개선도 DAD를 인증 메커니즘으로 만들지는 않았습니다.

후보 주소는 아직 주소가 아니었다

스테이틀리스 자동 구성은 IPv6 호스트가 구성 서버 없이 시작할 수 있음을 약속했습니다. 라우터가 접두어를 광고하고, 호스트가 인터페이스 식별자와 결합하며, 라우터가 없는 곳에서도 링크 로컬 주소를 만들 수 있습니다. 그러나 이 경제성은 위험한 유혹을 낳았습니다. 성공적인 산술 계산을 발언권의 근거로 다루는 유혹입니다.

RFC 4862는 이 두 단계 사이에 하나의 상태를 삽입했습니다. 새로 형성된 주소는잠정 상태(tentative)입니다. 일반적인 의미로는 인터페이스에 할당된 것이 아닙니다. 인터페이스는 자신에게 전달되는 일반 패킷을 폐기하고, 검사에 필요한 이웃 발견 트래픽만 수용합니다. 노드가 갖고 있는 것은 운용 가능한 신원이 아니라 하나의 후보입니다.

이 규칙은 특정 생성 방법에 국한되지 않습니다. RFC 4862는 DAD가 주소가 스테이틀리스 자동 구성, DHCPv6, 수동 구성 중 어디에서 왔는지와 무관하게 수행된다고 규정합니다. 다른 방식으로 구성되는 라우터 역시 주소를 할당하기 전에 DAD를 통과해야 합니다. 프로토콜은 구성 과정의 출처를 신뢰하지 않고 로컬 결과를 감사하는 셈입니다.

노드는 출처를 주장하지 않고 물었다

DAD는RFC 4861이 정의한 로컬 어휘를 재사용합니다. 노드는 잠정 주소를 대상으로 하는 이웃 요청을 보냅니다. 메시지는 대상 주소의 solicited-node 멀티캐스트 주소로 보내져, 그 대상에 실질적으로 관심을 가질 수 있는 이웃에게 질문을 집중시킵니다.

출처는 미지정(unspecified) 주소입니다. 이 디테일은 미관상의 것이 아니라 구조적입니다. 후보 주소는 아직 일반적인 출처 지위를 얻지 못했으므로, 자신을 증명하는 데 사용될 수 없습니다. DAD 이웃 요청은 일반 주소 확인이 담을 수 있는 출처 링크 계층 주소 옵션도 생략합니다.

기존 소유자는 이웃 광고(Neighbor Advertisement)로 응답할 수 있습니다. 같은 후보를 검사하는 두 번째 노드는 자신의 DAD 이웃 요청을 보냄으로써 자신을 드러낼 수 있습니다. 어느 쪽이든 유효한 관찰 하나면 할당을 중단하기에 충분합니다. 잠정 링크 로컬 주소가 실패하면, RFC 4862는 해당 인터페이스의 자동 구성을 중단하고 다른 식별자 또는 수동 개입을 요구합니다. 이후 모든 주소가 그 로컬 토대에 의존할 수 있기 때문입니다.

기본DupAddrDetectTransmits값은 1이지만, 링크 규칙이나 관리자가 변경할 수 있으며, 0으로 두면 DAD가 비활성화됩니다.RetransTimer는 재전송 간격과 마지막 대기 시간을 결정합니다. 이는 무한한 국민투표가 아니라 유한한 관찰 기간입니다.

침묵은 사용을 허가했지만 진실을 보증하지 않았다

타이머가 완료되기 전까지 실패 징후가 나타나지 않으면, 노드는 주소를 할당하고 정상적으로 사용할 수 있습니다. 표현이 중요합니다. DAD는 전역 대장부의 항목을 발견했거나 존재 가능한 모든 기계의 동의를 얻은 것이 아닙니다. 정의된 기간 동안 링크에서 상충하는 주장자를 관찰하지 못했을 뿐입니다.

분할된 세그먼트, 멀티캐스트 필터링, 잠든 기존 소유자, 고장난 스위치는 침묵할 수 있습니다. 악의적인 이웃은 거짓 광고를 보내 서비스 거부를 일으킬 수 있습니다. 주소가 이 링크에서 고유하더라도 다른 링크의 주소와 중복될 수 있고, 관련 범위가 로컬이므로 그중독에 아무런 귀결이 없습니다. 침묵은 한 번의 전환에 충분한 운용상의 증거이지, 신원이나 소유권, 도달 가능성, 전 세계적 고유성이 아닙니다.

이 좁음은 인터넷의 오래된 패턴을 따릅니다. 프로토콜은 구동 중인 시스템들을 조율할 만큼의 증거를 담되, 그 증거를 더 넓은 권한으로 승격시키지 않아야 합니다. 접두어 광고는 후보를 만드는 데 도움을 주고, 이웃의 행동은 로컬 충돌 판단에 정보를 줍니다. 활성화라는 행위와 검사를 비활성화할 때의 위험은 여전히 노드 본인의 몫입니다.

낙관은 기존 소유자를 밀어내지 않아야 했다

대기는 지연을 낳습니다. 특히 모바일 인터페이스가 링크를 바꿀 때 그렇습니다.RFC 4429는Optimistic상태를 도입했습니다. 주소가 DAD가 완료되기 전에 사용 가능할 수 있으나, 구현은 이를 deprecated 주소처럼 취급하고 다른 적합한 출처를 우선해야 합니다.

이 최적화에는 울타리가 있습니다. 옵티미스틱 노드는 정당한 소유자를 밀어낼 수 있는 방식으로 이웃 캐시를 갱신해서는 안 됩니다. 광고에서 Override 플래그를 지우며, 옵티미스틱 주소를 출처로 일반 이웃 요청을 보내지 않고, 그 주소를 출처로 하는 라우터 요청에 자신의 링크 계층 신원을 붙이지도 않습니다. DAD가 끝나기 전까지는 직접적인 이웃 상태를 만드는 대신 라우터를 경유해 통신해야 할 수 있습니다.

옵티미스틱 DAD는 잠정 증거를 폐지하지 않았습니다. 대기 비용을 재배치하면서도 충돌이 나타나면 복구 경로를 보존했습니다. 후보 주소는 여전히 확립된 주소보다 약했고, 그 조기 행동은 다른 노드의 작동 상태를 덮어쓸 수 있는 지점에서 정확히 제한되었습니다.

반사된 질문이 경쟁자처럼 보였다

원래의 교환에는 또 하나의 모호성이 있었습니다. 서비스 제공자들이 테스트에 회로 루프백을 사용했고, 접속망이 프레임을 자신의 토폴로지를 통해 반사시킬 수도 있었습니다. 라우터가 자신의 DAD 이웃 요청을 받고 다른 노드가 주소를 주장한다고 결론 내릴 수 있습니다. IPv4는 루프가 제거되면 복구할 수 있지만, IPv6 인터페이스는 개입을 기다리며 실패 상태에 머물렀습니다.

RFC 7527은 출처 귀속을 정교하게 만들었습니다. 강화 DAD(Enhanced DAD)는 각 탐색에 새로운 무작위 논스를 추가하고 이를 잠정 또는 옵티미스틱 주소와 함께 저장합니다. 이웃 요청이 같은 논스를 갖고 돌아오면 발신자는 자신이 반사한 패킷임을 인식하여 기록하고 폐기합니다. 다른 논스라면 여전히 별개의 후보를 가리키며 진짜 중복 판단이 이루어집니다.

이 수리는 시사적입니다. 논스는 대상의 소유자가 누구인지 말하지 않습니다. 더 작은 질문에 답합니다. 이 증거가 나 자신의 현재 탐색에서 비롯된 것인가? 새로운 값은 반복 검사가 우연한 논스 충돌을 피하게 하고, 루프가 사라진 뒤 인터페이스가 복구하게 합니다.

RFC 7527은 보안 경계를 명시적으로 유지합니다. 악의적 노드는 논스를 변조하거나 광고를 위조할 수 있으며, 문서는 그런 적대적 사례를 Secure Neighbor Discovery로 돌립니다. 강화 DAD는 반사와 경쟁 사이의 귀속을 개선할 뿐, 모든 이웃을 인증하지는 않습니다.

출처와 증거의 한계

인용된 표준은RFC 4861의 이웃 발견 메시지 규약,RFC 4862의 잠정 상태와 기본 DAD,RFC 4429의 제한된 조기 사용,RFC 7527의 반사 탐색 복구로 구성됩니다.

이 문서들은 프로토콜 상태, 메시지, 보고된 고장 메커니즘을 확정합니다. 현재 구현 점유율, 충돌 빈도, 보편적인 타이머 값, 벤더 품질을 측정하지는 않습니다. 그 가장 강한 역사적 주장은 구조적입니다. IPv6는 주소를 생성하는 능력이 사용 권한에 앞서되, 사용 권한과 동일하지 않도록 만들었습니다.