인터페이스 MTU가 "ip link show" 출력에 표시된 것과 다릅니다.

인터페이스 MTU가 "ip link show" 출력에 표시된 것과 다릅니다.

다음과 같이 두 대의 컴퓨터가 직접 연결되어 있습니다.

PC1[eth1] <-> [eth0]PC2

eth1인터페이스의 MTU는 PC19000바이트입니다. eth0인터페이스의 MTU는 PC22000바이트입니다.

root@PC2:~# ip -s link show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2000 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 80:97:41:ae:f7:c9 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    170432     696      0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    118126     274      0       0       0       0
root@PC2:~# ip addr show dev eth0                                                                                                                                                                                          
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2000 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 80:97:41:ae:f7:c9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.11.30/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.11.12.2/24 scope global eth0:temporary
       valid_lft forever preferred_lft forever
root@PC2:~#

이상한 점은 ping -M do -s 4182 -c 1 10.11.12.2에서 실행하면 PC1패킷이 수신 PC2되고 분할된 응답이 전송된다는 것입니다.

root@PC1:~# ping -M do -s 4182 -c 1 10.11.12.2
PING 10.11.12.2 (10.11.12.2) 4182(4210) bytes of data.
4190 bytes from 10.11.12.2: icmp_seq=1 ttl=64 time=0.397 ms

--- 10.11.12.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.397/0.397/0.397/0.000 ms
root@PC1:~#

나는 PC2가 MTU를 초과할 때 프레임을 자동으로 삭제하기를 원합니다. 그러나 ping -M do -s 4183 -c 1 10.11.12.2응답을 받지 못했습니다. PC2인터페이스 MTU는 2000바이트가 아닌 4210(4182 + 8 ICMP 헤더 + 20 IPv4 헤더) 바이트인 것 같습니다 . eth0in의 커널 드라이버는 PC2입니다 e1000e.

이 행동을 어떻게 설명해야 할까요?

답변1

이것이 MTU(최대 전송 단위)와 MRU(최대 수신 단위)의 차이점입니다.

일반적으로 단일 브로드캐스트 도메인의 모든 구성원은 MTU(및 MRU)가 동일하게 설정되어 차이가 중요하지 않을 것으로 예상하지만 설정이 잘못되면하다문제.

나는 PC2가 MTU를 초과할 때 프레임을 자동으로 삭제하기를 원합니다.

2000바이트보다 큰 패킷을 전송하지 않도록 PC2에 지시했지만 이것이 더 큰 패킷을 수신하는 데 방해가 되는 것은 아닙니다. Postel 원칙이 여기서 작용할 수 있습니다(드라이버 설계 방식에 따라 다름).

그러나 ping -M do -s 4183 -c 1 10.11.12.2응답을 받지 못했습니다.

이 추가 바이트가 MRU보다 높은 것 같습니다. MRU를 명시적으로 구성하지 않았으므로 이 크기는 하드웨어 제한일 수도 있고 MTU가 2000으로 설정된 경우 네트워크 인터페이스 하드웨어의 내부 버퍼가 구성된 방식의 결과일 수도 있습니다.

단일 브로드캐스트 도메인 내에서 MTU가 올바르게 구성되면 이 문제가 발생하지 않습니다. IS-IS와 같은 일부 라우팅 프로토콜은 브로드캐스트 도메인의 다른 모든 스피커가 실제로 이 패킷을 수신할 수 있도록 의도적으로 Hello 메시지를 MTU에 추가하여 다음과 같은 경우 인접성을 전혀 설정할 수 없게 만듭니다. 문제를 더 쉽게 감지할 수 있습니다.

관련 정보