요약
- IPv6 이웃 도달 불가 감지(NUD)는 도달 가능성을 최근의 긍정적 증거가 필요한 주장으로 다루었다. 캐시 항목은 그 증거가 오래되면 STALE이 되었지만, 타이머가 만료되었다는 이유만으로 패킷이 폐기되거나 프로브가 전송되지는 않았다.
- 실제 사용은 STALE을 DELAY로 옮겨, 유니캐스트 프로브가 시작되기 전에 상위 계층이 순방향 진전을 증명할 기회를 주었다. RFC 7048은 이후 원래의 빠른 삭제를 UNREACHABLE 상태와 대체 이웃이 없을 때의 백오프 복구로 대체했다.
STALE은 수명이 아니라 증거에 대한 진술이었다
30초쯤 전에 자신의 첫 홉 라우터와 통신한 뒤 조용해진 호스트를 상상해 보자. 라우터의 IPv6 주소는 여전히 이웃 캐시에서 링크 계층 주소와 짝을 이루고 있다. 매핑이 틀렸다고 말하는 새 패킷도 없고, 경로가 끊어졌다고 알리는 링크 경보도 없다. 오직 마지막 긍정적 확인만 나이를 먹었을 뿐이다.
IPv6는 이 상태를STALE이라고 불렀다. 표를 읽는 운영자에게 이 단어 선택은 오해를 일으킬 수 있다. STALE은 결함처럼 들리기 때문이다. 처음RFC 1970에서 표준화되어RFC 2461에 유지되었고 오늘날RFC 4861로 명세된 이 상태 기계에서 STALE은 더 좁은 의미를 지닌다. 순방향 경로가 긍정적으로 확인된 이후ReachableTime보다 더 많은 시간이 흘렀다는 것뿐이다. 항목이 STALE인 동안에는 누군가 실제로 그 경로를 통해 패킷을 보내기 전까지는 아무 일도 일어나지 않는다.
이 절제는 아키텍처적 선택이었다. 사용되지 않는 캐시는 오래된 정보를 무기한 담고 있어도 포워딩에 해가 되지 않는다. 조용한 모든 항목을 시계에 맞춰 삭제하면, 이웃이 필요한 응용이 전혀 없을 때도 비활동을 멀티캐스트 주소 결정으로 변환시키게 된다. 올바름은 전체 표를 끊임없이 인증하는 것이 아니라 작업 집합을 시험하는 데 달려 있었다.
IPv6는 순방향 경로가 작동했는지를 물었다
NUD는 단순한 존재를 증명으로 받아들이지 않았다. 라우터에서 도착하는 라우터 광고는 라우터에서 호스트로 한 패킷이 이동했다는 것을 보여줄 뿐이다. 요청되지 않은 이웃 광고도 마찬가지였다. 둘 다 반대 방향으로 최근에 보낸 패킷이 이웃의 IP 계층에 도달했다는 것은 보여주지 않았다.
따라서 명세는 두 종류의 긍정적 확인을 인정했다. 하나는 노드 자신의 이웃 요청(NS)에 응답하는 요청된 이웃 광고(NA)였다. 요청이 이웃에 도달하고 응답이 되돌아와야 했으므로, 양방향에 대한 증거를 제공했다. 다른 하나는 상위 계층 프로토콜의 진전이 최근 트래픽이 다음 홉을 넘어갔음을 암시하는 경우였다.
TCP가 가장 명확한 예를 제공했다. 새 승인(ACK)은 이전 데이터가 원격 피어에 도달했음을 보여준다. 새로운, 중복되지 않는 데이터는 이전 승인들이 원격지에 도착했음을 보여줄 수 있다. 오프링크 목적지의 경우 두 사건 중 하나라도 첫 홉 라우터가 최근 트래픽을 전달했음을 함의한다. UDP나 남의 패킷을 포워딩하는 라우터에는 이에 상응하는 힌트가 없을 수 있으며, 그래서 명시적 프로빙이 여전히 필요했다.
그 증거에는 여전히 한계가 있었다. 증거는 이웃을 인증하지 않고, 미래의 가용성을 약속하지 않고, 응용을 인증하지도 않는다. 증거가 답한 것은 지역적 운영 질문 하나였다. 이 다음 홉으로의 순방향 경로가 캐시된 바인딩을 다른 시험 없이 계속 사용할 만큼 최근에 작동했는가?
첫 패킷이 유예 기간을 열었다
ReachableTime이 만료되면REACHABLE은STALE이 되었다. 다음 전송은 캐시된 링크 계층 주소를 사용했고 항목을DELAY로 옮겼다. 기본 지연은 5초였다.
이 간격은 죽은 시간이 아니었다. 이는 정상 트래픽이 더 저렴한 증거를 만들 기회를 허용했다. 공백기 뒤에 열린 TCP 연결은 핸드셰이크의 일부만 완료해도 거의 즉시 경로를 확인할 수 있었다. 같은 순간에 이웃 요청을 보내는 것은 전송 계층이 곧 제공할 정보를 중복하는 일이었을 것이다.
유예 기간 동안 순방향 진전이 도착하면 항목은 다시REACHABLE로 돌아갔다. 도착하지 않으면 노드는 유니캐스트 이웃 요청을 보내고PROBE로 들어갔다. 목적지가 유니캐스트였던 이유는 캐시에 여전히 링크 계층 바인딩이 남아 있었기 때문이다. 질문은 그 알려진 경로가 작동하는지였지, IPv6 주소의 소유자가 누구인지가 아니었다.
이 순서는 의심을 사용에 비례하게 만들었다. 시간이 신뢰를 나이 들게 하고, 트래픽이 그 의심을 실제 문제로 만들었다. 유예 기간은 기존 통신에 답을 구했다. 오직 해소되지 않은, 활성인 의심만이 제어 트래픽을 만들었다.
타이머조차 단일한 전역 리듬에 저항했다
RFC 4861은 기본 기준 도달 시간 30초, 1초 재전송 타이머, 5초 첫 프로브 지연, 3회 유니캐스트 요청을 정의했다. 그러나ReachableTime자체는 기준값의 1/2에서 3/2 사이에서 무작위화되었다. 라우터 광고는 0이 아닌 기준값과 재전송값을 제공할 수도 있었다.
무작위 요소가 중요했던 이유는 수천 개의 노드가 하나의 링크를 공유할 수 있기 때문이다. 모든 확인이 같은 박자에 만료된다면, 그들의 다음 트래픽이 동기화된 검사 파도를 만들 수 있다. 공개된 기본값은 하나의 보편적인 벽시계 기한을 의미하지 않았다.
라우터 광고를 수신하면 타이머 매개변수를 갱신할 수 있었지만, 그래도 도달 가능성을 확인할 수는 없었다. 구성 권한과 운영 증거는 분리되어 있었다. 라우터는 증거가 얼마나 신선해야 하는지를 제안할 수 있었지만, 그 제안만으로 경로를 증명할 수는 없었다.
세 번의 빠른 프로브는 너무 조급했다
RFC 4861의 원래 개념적 상태 기계에서PROBE는RetransTimer간격으로 유니캐스트 요청을 재전송했다. 구성된 상한—기본값은 3회 전송—에 도달하면 노드는 이웃 캐시 항목을 폐기했다. 이후 트래픽은 멀티캐스트 주소 결정으로 되돌아가거나 다른 첫 홉을 선택했다.
대안이 존재할 때는 이 방식이 빨랐다. 기본 라우터가 둘인 호스트가 조용한 하나를 고집할 필요는 없다. 그러나 일시적인 계층 2 중단은 3회의 1초 시도보다 오래 지속될 수 있다. 조용한 이웃이 유일한 경로라면, 그 항목을 삭제해도 더 나은 경로가 드러나지 않는다. 집중된 유니캐스트 검사를 반복적인 멀티캐스트 발견으로 바꾸어, 회복 중인 링크를 오히려 더 바쁘게 만들 수 있다.
RFC 6583은 이 운영 피드백 루프를 드러냈다. 존재하지 않는 대량의 IPv6 목적지에 대한 주소 결정 작업이 이미 트래픽을 운반하는 항목의 유지보수를 밀어낼 수 있었다. NUD 요청이나 그 응답이 소홀히 다뤄지면 사용 중인 항목이 플러시될 수 있고, 이는 더 많은 멀티캐스트 작업을 촉발하고 확립된 흐름을 방해할 수 있었다. RFC 6583은 NUD에 새 항목의 투기적 생성보다 높은 우선순위를 부여할 것을 권고했다.
RFC 7048은 이 결함에 단호한 제목을 붙였다. "Neighbor Unreachability Detection Is Too Impatient"(이웃 도달 불가 감지는 너무 조급하다). 그 수리는 개념적UNREACHABLE상태를 도입했다. 정상 임계값을 넘으면 항목은 다음 홉 선택에서 알려진 도달 가능 경로로 더 이상 간주되지 않아, 대안을 탐색할 수 있었다. 그러나 링크 계층 주소는 유지될 수 있었고, 필요할 때 패킷은 계속 그 주소를 사용할 수 있었으며, 요청은 지수 백오프로 계속될 수 있었다.
프로브는 결국 링크 계층 주소가 바뀌었을 경우 이를 찾을 수 있도록 멀티캐스트가 되어야 했다. 항목을 사용하는 패킷이 없으면 멈출 수도 있었다. 한 예시 알고리즘은 시도를 1, 4, 13, 40초에 걸쳐 분산시키고, 가능한 최대 간격으로 60초를 사용했다. 이 수치들은 표준에 부합하는 전략을 보여준 예시였지, 모든 구현에 대한 측정이 아니었다.
UNREACHABLE은 선호와 포기의 차이를 분리했다
후기의 상태는 하나의 구분을 명시적으로 만들었다. "다른 다음 홉을 선호해야 한다"와 "이 이웃에 대한 시도를 멈춰야 한다"는 같은 결정이 아니다.
두 번째 라우터가 존재하는 곳에서는 조기 의심이 다음 홉 선택을 다시 열어야 한다. 존재하지 않는 곳에서는 인내가 스패닝 트리 수렴, 일시적 무선 손실, 또는 다른 짧은 계층 2 장애로부터의 복구를 보존할 수 있다. 지수 백오프는 세 번의 패킷 유실이 영구적 사망을 증명한다고 가정하지 않으면서 제어 비용을 한계 내로 묶었다.
이것은 증거로부터의 후퇴가 아니라 결과에서의 교정이었다. 요청된 응답이나 유효한 상위 계층 진전은 여전히REACHABLE을 회복했다. 요청되지 않은 광고는 여전히 그렇게 할 수 없었다. RFC 7048이 바꾼 것은 유한한 실패 이후 노드가 무엇을 하느냐였지, 무엇이 긍정적 증거로 인정되느냐가 아니었다.
같은 메시지가 서로 다른 질문을 했다
이웃 요청과 이웃 광고는RFC 4862에서 정의되는 중복 주소 감지(DAD)에도 사용된다. 이 재사용은 두 메커니즘을 혼동하게 만들 수 있다.
DAD는 유니캐스트 주소가 할당되기 전에 실행되며, 다른 노드가 이미 그 가주소를 주장하는지를 묻는다. NUD는 이미 선택된 유니캐스트 이웃에 대해 실행되며, 캐시된 바인딩에 연관된 순방향 경로가 여전히 작동하는지를 묻는다. 유한한 DAD 절차 중의 침묵은 할당을 허용할 수 있다. NUD 중의 침묵은 증거를 나이 들게 하고, 트래픽이 질문을 시급하게 만들면 지연과 프로브로 단계적 확대된다.
어느 메커니즘도 신원을 증명하지 않는다. 어느 것도 소유권을 부여하지 않는다. 그 강점은 정확히 어떤 지역적 관찰이 어떤 지역적 전환을 정당화할 수 있는지를 말하는 데서 온다.
출처와 증거의 한계
역사와 상태 기계는 RFC1970,2461,4861에서 나온다. DAD의 경계는 RFC 4862에서, 운영상의 캐시 부담은 RFC 6583에서, 후기의 재전송 수리는 RFC 7048에서 나온다. 이 문서들은 표준과 권고를 정의한다. 이들은 현재의 벤더 기본값, 배포 비중, 표 크기, 실패율 또는 특정 네트워크의 표준 부합성을 확립하지 않는다.
회원 브리핑
프로필 심층 컨텍스트
올바른 멤버십 등급으로 로그인하면 전체 브리핑과 출처 노트를 볼 수 있습니다.
Strategic Circle 전용
Strategic Circle
모든 독자에게 공개됩니다. 가입 후 로그인하면 프로필 브리핑를 열람할 수 있습니다.
Strategic Circle 가입하기Leadership Alliance 전용
Leadership Alliance
자격을 갖춘 IP 자산 소유자 및 운영진을 위한 콘텐츠입니다. 로그인하면 Leadership Alliance 브리핑을 열람할 수 있습니다.
Leadership Alliance 가입하기





