6번째(6-over-4) 라우터를 포함하는 IPv6 라우팅을 실험하고 있는데 이더넷을 통해 기본 IPv6를 실행하는 라우팅 세그먼트에 맞을 만큼 작은 패킷 크기를 사용할 때 패킷 크기가 충분히 작은 경우 라우팅 세그먼트가 너무 커서 IPv4에서 IPv6 캡슐화를 수용할 수 없는 경우(즉, 1481~1500바이트) 패킷이 조각화되지 않는 한 경로를 통과하지 못합니다. 응답 호스트가 라우팅 측의 6번째 라우터로부터 Packet Too Big 오류를 수신하면 응답을 조각화하기 시작하고 한동안 계속됩니다.
그러나 ICMPv6은 상태 비저장이므로 Linux에는 일정 기간 동안 대상 호스트에 대한 너무 큰 패킷 메시지의 MTU 값을 저장하는 테이블이 어딘가에 있다는 의미입니다. 맞습니까? 그렇다면 이 표를 어떻게든 볼 수 있을까요? ip
이 명령의 다양한 하위 명령을 살펴봤지만 비슷한 것을 찾을 수 없습니다. 이 표는 UDP와 같은 프로토콜에 대한 것입니까, 아니면 ICMPv6에만 해당됩니까?
답변1
Linux는 검색된 MTU가 대상에 연결할 수 있는 인터페이스의 MTU보다 낮을 때 경로 MTU 검색(RFC 1191)을 통해 학습된 원격 대상의 MTU를 캐시합니다.
캐시를 보려면 "ip 경로 표시 캐시"를 사용할 수 있습니다. 예를 들면 다음과 같습니다.
me@server:~$ ip -6 route show cache
1234:8108:1111:111:1111:1111:ff38:57be via fe80::8243:abcd:4216:a4c0 dev eno12399np0 metric 1024 expires 35sec mtu 1280 hoplimit 64 pref medium
me@server:~$ ip route show cache
1.2.3.4 via 192.0.2.1 dev eno12399np0
cache expires 154sec mtu 1420
답변2
Linux(그리고 다른 곳에서도 믿습니다)에서 MTU는 원격 호스트가 아닌 인터페이스별로 구성됩니다. 실행하여 확인해주세요
ip a
그러면 각 인터페이스의 MTU 번호가 표시됩니다.
# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp6s1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff
inet 10.0.42.23/24 brd 10.0.42.255 scope global enp8s0
valid_lft forever preferred_lft forever
제 경우에는 lo
MTU가 65536바이트이고 enp6s1
1500바이트가 있습니다.