"ip -stat neighbor show" 출력의 다섯 번째 열은 무엇을 나타냅니까?

"ip -stat neighbor show" 출력의 다섯 번째 열은 무엇을 나타냅니까?

인터넷 검색을 하고 매뉴얼 페이지를 살펴보았지만 이 숫자에 대한 구체적인 답변을 찾을 수 없었습니다.

예를 들어,

# ip -d -stat ne show dev eth1 | column -t | sort -V
192.168.200.41  used    1034/4635/1032     probes  6                        FAILED
192.168.200.44  lladdr  00:c0:b7:xx:xx:xx  used    1037/1032/266            probes  1  STALE
192.168.20.5    lladdr  00:40:9d:xx:xx:xx  used    25080/25050/25021        probes  1  STALE
192.168.20.6    lladdr  00:40:9d:xx:xx:xx  used    25076/25047/25018        probes  4  STALE

답변1

읽고 나서iproute2 소스 코드, 다섯 번째 필드는 ARP캐시 항목에 대한 타이머 정보를 제공합니다.

  • X/./.ARP: 마지막 입력 이후 경과된 시간(초)사용된
  • ./X/.ARP: 마지막 입력 이후 경과된 시간(초)확인됨
  • ././XARP: 마지막 입력 이후 경과된 시간(초)고쳐 쓰다

이러한 타이머는 주로 오래된 항목을 관리하고 ARP새 요청이 이루어져야 하는 시기를 결정하는 데 사용됩니다. ARP인용하다이 통찰력 있는 답변ARP연령 제한 에 대해 자세히 알아보세요.

답변2

straceip-neighbour가 실제로 무엇을 하는지 확인해 본 적이 있습니다 . strace명령 출력에서 ​​숫자 출력을 필터링하면 ipsendmsg 및 recvmsg에 대한 일련의 호출이 있음을 알 수 있습니다. 흥미로운 메시지는 다음과 같습니다.

sendmsg(3, {msg_name={sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, msg_namelen=12, msg_iov=[{iov_base={{len=36, type=RTM_GETNEIGH, flags=NLM_F_REQUEST|NLM_F_DUMP, seq=1539003976, pid=0}, {ndm_family=AF_UNSPEC, ndm_ifindex=0, ndm_state=0, ndm_flags=0, ndm_type=RTN_UNSPEC}, {{nla_len=8, nla_type=NDA_IFINDEX}, if_nametoindex("enp0s8")}}, iov_len=36}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0)
recvmsg(3, {msg_name={sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, msg_namelen=12, msg_iov=[{iov_base=[{{len=76, type=RTM_NEWNEIGH, flags=NLM_F_MULTI|NLM_F_DUMP_FILTERED, seq=1539003976, pid=15530}, {ndm_family=AF_INET, ndm_ifindex=if_nametoindex("enp0s8"), ndm_state=NUD_NOARP, ndm_flags=0, ndm_type=RTN_MULTICAST}, [{{nla_len=8, nla_type=NDA_DST}, 224.0.0.22}, {{nla_len=10, nla_type=NDA_LLADDR}, 1.0.94.0}, {{nla_len=8, nla_type=NDA_PROBES}, 0}, {{nla_len=20, nla_type=NDA_CACHEINFO}, {ndm_confirmed=2192723, ndm_used=2186723, ndm_updated=2186723, ndm_refcnt=0}}]}, {{len=76, type=RTM_NEWNEIGH, flags=NLM_F_MULTI|NLM_F_DUMP_FILTERED, seq=1539003976, pid=15530}, {ndm_family=AF_INET, ndm_ifindex=if_nametoindex("enp0s8"), ndm_state=NUD_NOARP, ndm_flags=0, ndm_type=RTN_MULTICAST}, [{{nla_len=8, nla_type=NDA_DST}, 224.0.0.251}, {{nla_len=10, nla_type=NDA_LLADDR}, 1.0.94.0}, {{nla_len=8, nla_type=NDA_PROBES}, 0}, {{nla_len=20, nla_type=NDA_CACHEINFO}, {ndm_confirmed=2192699, ndm_used=2186699, ndm_updated=2186699, ndm_refcnt=0}}]}, {{len=76, type=RTM_NEWNEIGH, flags=NLM_F_MULTI|NLM_F_DUMP_FILTERED, seq=1539003976, pid=15530}, {ndm_family=AF_INET, ndm_ifindex=if_nametoindex("enp0s8"), ndm_state=NUD_STALE, ndm_flags=0, ndm_type=RTN_UNICAST}, [{{nla_len=8, nla_type=NDA_DST}, 10.11.0.23}, {{nla_len=10, nla_type=NDA_LLADDR}, 8.0.39.3}, {{nla_len=8, nla_type=NDA_PROBES}, 1}, {{nla_len=20, nla_type=NDA_CACHEINFO}, {ndm_confirmed=206484, ndm_used=206707, ndm_updated=202203, ndm_refcnt=0}}]}, {{len=88, type=RTM_NEWNEIGH, flags=NLM_F_MULTI|NLM_F_DUMP_FILTERED, seq=1539003976, pid=15530}, {ndm_family=AF_INET6, ndm_ifindex=if_nametoindex("enp0s8"), ndm_state=NUD_NOARP, ndm_flags=0, ndm_type=RTN_MULTICAST}, [{{nla_len=20, nla_type=NDA_DST}, ff02::1:ff4b:3614}, {{nla_len=10, nla_type=NDA_LLADDR}, "\x33\x33\xff\x4b\x36\x14"}, {{nla_len=8, nla_type=NDA_PROBES}, 0}, {{nla_len=20, nla_type=NDA_CACHEINFO}, {ndm_confirmed=2192670, ndm_used=2186670, ndm_updated=2186670, ndm_refcnt=0}}]}, {{len=88, type=RTM_NEWNEIGH, flags=NLM_F_MULTI|NLM_F_DUMP_FILTERED, seq=1539003976, pid=15530}, {ndm_family=AF_INET6, ndm_ifindex=if_nametoindex("enp0s8"), ndm_state=NUD_NOARP, ndm_flags=0, ndm_type=RTN_MULTICAST}, [{{nla_len=20, nla_type=NDA_DST}, ff02::16}, {{nla_len=10, nla_type=NDA_LLADDR}, "\x33\x33\x00\x00\x00\x16"}, {{nla_len=8, nla_type=NDA_PROBES}, 0}, {{nla_len=20, nla_type=NDA_CACHEINFO}, {ndm_confirmed=2192723, ndm_used=2186723, ndm_updated=2186723, ndm_refcnt=0}}]}, {{len=88, type=RTM_NEWNEIGH, flags=NLM_F_MULTI|NLM_F_DUMP_FILTERED, seq=1539003976, pid=15530}, {ndm_family=AF_INET6, ndm_ifindex=if_nametoindex("enp0s8"), ndm_state=NUD_NOARP, ndm_flags=0, ndm_type=RTN_MULTICAST}, [{{nla_len=20, nla_type=NDA_DST}, ff02::fb}, {{nla_len=10, nla_type=NDA_LLADDR}, "\x33\x33\x00\x00\x00\xfb"}, {{nla_len=8, nla_type=NDA_PROBES}, 0}, {{nla_len=20, nla_type=NDA_CACHEINFO}, {ndm_confirmed=2192536, ndm_used=2186536, ndm_updated=2186536, ndm_refcnt=0}}]}, {{len=88, type=RTM_NEWNEIGH, flags=NLM_F_MULTI|NLM_F_DUMP_FILTERED, seq=1539003976, pid=15530}, {ndm_family=AF_INET6, ndm_ifindex=if_nametoindex("enp0s8"), ndm_state=NUD_NOARP, ndm_flags=0, ndm_type=RTN_MULTICAST}, [{{nla_len=20, nla_type=NDA_DST}, ff02::2}, {{nla_len=10, nla_type=NDA_LLADDR}, "\x33\x33\x00\x00\x00\x02"}, {{nla_len=8, nla_type=NDA_PROBES}, 0}, {{nla_len=20, nla_type=NDA_CACHEINFO}, {ndm_confirmed=2192568, ndm_used=2186568, ndm_updated=2186568, ndm_refcnt=0}}]}], iov_len=580}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0)

ip neighstrace 출력에서 ​​명령어에 있는 숫자를 찾으려고 하면 ip neighndm_used, ndm_confirmed, ndm_updated 값을 100으로 나눈 값이 표시되는 것을 볼 수 있습니다.

이것은 나를 다음과 같이 이끈다 man 7 rtnetlink:

Rtnetlink를 사용하면 커널의 라우팅 테이블을 읽고 변경할 수 있습니다(...). 네트워크 라우팅, IP 주소, 링크 매개변수,이웃 설정, 대기열 규칙, 트래픽 클래스 및 패킷 분류자는 모두 NETLINK_ROUTE 소켓을 통해 제어될 수 있습니다. 이는 netlink 메시지를 기반으로 합니다.

그 다음에:

RTM_NEWNEIGH, RTM_DELNEIGH, RTM_GETNEIGH
       인접 테이블 항목(예: ARP 항목)에 대한 정보를 추가, 삭제 또는 수신합니다. 메시지에는 ndmsg 구조가 포함되어 있습니다.

       구조 ndmsg {
           부호 없는 문자 ndm_family;
           int ndm_ifindex; /* 인터페이스 인덱스 */
           __u16 ndm_status; /* 상태*/
           __u8 ndm_flags; /* 플래그*/
           __u8 ndm_type;
       };

       구조 nda_cacheinfo {
           __u32 ndm_confirm;
           __u32 ndm_used;
           __u32 ndm_update;
           __u32 ndm_refcnt;
       };

       ndm_state는 다음 상태의 비트마스크입니다.

       NUD_INCOMPLETE 현재 구문 분석 중인 캐시 항목입니다.
       NUD_REACHABLE 작업 캐시 항목을 확인했습니다.
       NUD_STALE 만료된 캐시 항목
       NUD_DELAY 대기 타이머 항목
       NUD_PROBE 현재 재탐색 캐시 항목
       NUD_FAILED 잘못된 캐시 항목
       대상 캐시가 없는 NUD_NOARP 장치
       NUD_PERMANENT 정적 항목

       유효한 ndm_flags는 다음과 같습니다.

       NTF_PROXY 프록시 arp 항목
       NTF_ROUTER IPv6 라우터

       rattr 구조의 rta_type 필드는 다음과 같은 의미를 갖습니다:

       NDA_UNSPEC 알 수 없는 유형
       NDA_DST 이웃 캐시 n/w 레이어 대상 주소
       NDA_LLADDR 이웃 캐시 링크 계층 주소
       NDA_CACHEINFO 캐시 통계입니다.

       rta_type 필드가 NDA_CACHEINFO이면 그 뒤에 struct nda_cacheinfo 헤더가 옵니다.

nda_cacheinfo 구조는 다음에 정의되어 있습니다.<linux/neighbour.h>

이 값이 무엇을 나타내는지 궁금하다면 댓글이 <linux/neighbour.h>별로 도움이 되지 않으며 인터넷에서 해당 값을 찾을 수 없습니다.

관련 정보