다음과 같이 두 대의 컴퓨터가 직접 연결되어 있습니다.
PC1[eth1] <-> [eth0]PC2
eth1
인터페이스의 MTU는 PC1
9000바이트입니다. eth0
인터페이스의 MTU는 PC2
2000바이트입니다.
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 헤더) 바이트인 것 같습니다 . eth0
in의 커널 드라이버는 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에 추가하여 다음과 같은 경우 인접성을 전혀 설정할 수 없게 만듭니다. 문제를 더 쉽게 감지할 수 있습니다.