IPv6 Neighbor Discovery
Neighbor Discovery · NDP · 이웃 탐색
는 에서 같은 링크의 이웃과 라우터를 발견하고 주소·도달 상태를 관리하는 ICMPv6 기반 기제다. 단순히 의 패킷 이름만 바꾼 기능이 아니라 라우터 발견·프리픽스 정보·까지 포함한다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
01무엇이고, 어떤 일을 하나
- 다음 홉 주소를 등 링크 주소로 해석한다.
- Router Solicitation과 Advertisement로 기본 라우터·프리픽스·일부 링크 설정 정보를 얻는다.
- Neighbor Cache 상태와 도달 확인으로 오래된 다음 홉 정보를 재검증한다.
02어떤 순서로 동작하나
- 다음 홉 선택
목적지가 온링크인지 기본 라우터를 거쳐야 하는지 판단한다. 이후 해석할 주소는 이 결정에서 얻은 다음 홉이며 원격 서버의 링크 MAC을 인터넷 전체에서 찾는 절차가 아니다.
- 주소 해석
캐시에 링크 주소가 없으면 상태에서 대상의 solicited-node 멀티캐스트로 를 보낸다. 대상은 유효한 요청을 처리하고 로 대응 정보를 알려줄 수 있다.
- 캐시 사용
최근 양방향 도달 확인이 있으면 상태로 사용한다. 시간이 지나 이 되어도 즉시 주소를 폐기하지 않고 새 전송에 쓴 뒤 확인을 위한 로 이동할 수 있다.
- 도달성 재검증
중 확인을 얻지 못하면 에서 유니캐스트 를 시도한다. 재시도 조건 안에 확인되지 않으면 항목 제거·다음 홉 선택 재검토로 이어지며 단순 수신 패킷 하나를 항상 확인으로 인정하지 않는다.
03먼저 알아둘 용어와 구성요소
- 특정 대상의 링크 주소나 도달 가능성을 묻는 Neighbor Solicitation이다.
- 주소 소유와 링크 주소 등의 정보를 알리는 Neighbor Advertisement다.
- 라우터가 자신의 기본 라우터 수명과 프리픽스 등의 정보를 알리는 메시지다.
- 캐시된 이웃이 실제로 패킷을 받을 수 있는지 확인하는 상태 처리다.
- 이웃의 링크 계층 주소를 아직 알아내지 못해 주소 해석을 진행하는 ND 캐시 상태다.
- 최근 양방향 도달 가능성을 확인하여 이웃을 정상적으로 사용할 수 있는 ND 상태다.
- 링크 주소는 알지만 최근 도달 확인이 오래된 상태다. 이 상태라는 이유만으로 즉시 주소를 버리지는 않는다.
- 이웃에게 전송한 뒤 상위 계층 등의 확인을 잠시 기다리는 상태다.
- 유니캐스트 등으로 이웃의 도달 가능성을 적극 확인하는 상태다.
04예제로 따라가기
- 2001:db8::1234:5678의 하위 24비트는 345678이다. 주소 해석용 그룹은 ff02::1:ff34:5678이고 목적지는 33:33:ff:34:56:78로 대응한다.
- 호스트가 에서 기본 라우터 수명 0을 받으면 그 장비를 기본 라우터로 사용하지 않게 될 수 있다. 같은 의 주소 자동 설정용 프리픽스 수명까지 반드시 0이라는 뜻은 아니다.
- 캐시로 보낸 첫 데이터가 정상 진행으로 확인되면 불필요한 탐색을 줄일 수 있다. 반대로 회신이 전혀 없으면 뒤 로 넘어가 같은 MAC의 실제 도달성을 확인한다.
05혼동하기 쉬운 점과 확인 기준
- 에서 ICMPv6를 전부 차단하면 Echo뿐 아니라 ND· 등 필수 통신도 손상될 수 있다. 메시지 유형과 적용 링크를 구분해야 한다.
- 하위 24비트가 같은 여러 주소는 같은 solicited-node 그룹을 공유한다. 멀티캐스트 목적지만 보고 소유자를 정하지 말고 의 Target Address 전체를 읽는다.
06상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
함께 보는 학습 자료
아래 공식 자료를 본문의 개념·예제와 함께 읽어 보세요. 자료별로 확인할 위치와 관찰할 내용을 적었습니다.
RFC 4861 §7.3·Appendix C: 이웃 도달성 상태
이 실패를 뜻하지 않는 이유와 데이터 송신 후 ·로 바뀌는 조건을 표로 확인한다.
- 도달성 확인과 단순 패킷 수신의 차이
- 사용 후 시작
- Appendix C의 재시도·실패 분기
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.