我有一个从同一物理以太网设备创建多个 MACVLAN 设备的用例。还要求某些 MACVLAN 可以提供巨型数据包 (MTU=9215),而某些 MACVLAN 不允许巨型数据包且仅支持小帧。我为物理设备保留了 MTU=9000,并创建了所需的 MACVLAN 设备。注意到 MACVLAN 设备默认情况下的 MTU 为 9000,并且在处理巨型帧时也能正常工作(通过使用巨型数据包进行 ping 测试)。但随后将 MACVLan 的 MTU 更改为 1500,它仍然可以在处理巨型帧时正常工作。下面的示例仅显示一个 MACVLAN
$ ip link add K9AT9i1G2x link eth6 type macvlan mode bridge
$ ip link set dev K9AT9i1G2x mtu 1500
$ ip a
123: eth6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
link/ether 00:60:16:a6:90:3a brd ff:ff:ff:ff:ff:ff
inet6 fe80::260:16ff:fea6:903a/64 scope link
valid_lft forever preferred_lft forever
129: K9AT9i1G2x@eth6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether ba:c7:36:3f:9a:76 brd ff:ff:ff:ff:ff:ff
inet 192.168.15.40/21 scope global K9AT9i1G2x
valid_lft forever preferred_lft forever
inet6 fe80::b8c7:36ff:fe3f:9a76/64 scope link
valid_lft forever preferred_lft forever
即使 macvlan 设备的 MTU 设置为 1500,以下 ping 仍有效 -
# ping -c 3 -M do -s 8972 192.168.15.40
PING 192.168.15.40 (192.168.15.40) 8972(9000) bytes of data.
8980 bytes from 192.168.15.40: icmp_seq=1 ttl=64 time=27.0 ms
8980 bytes from 192.168.15.40: icmp_seq=2 ttl=64 time=0.955 ms
8980 bytes from 192.168.15.40: icmp_seq=3 ttl=64 time=5.33 ms
--- 192.168.15.40 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.955/11.098/27.009/11.391 ms
有人可以建议,在这种情况下如何限制较小的数据包传输?