如何设置 veth 为 9000 MTU 来模拟在同一主机上发送和接收大型 UDP 多播数据包?

如何设置 veth 为 9000 MTU 来模拟在同一主机上发送和接收大型 UDP 多播数据包?

发送方需要将大数据包传输到接收方(位于同一台具有 1500 MTU 的主机上),根据我的阅读,我认为这可以使用具有 9000 MTU 的 veth 进行模拟。但我无法弄清楚到底如何做到这一点 - 互联网上的大多数 veth 教程/文章都提到了网络命名空间,并且我不确定是否需要创建一个网络命名空间来实现这一点。任何指示/建议都会有帮助,谢谢!

答案1

在 Linux 上,此设置并非特定于韦斯所以没有记录下来韦斯,但在一般情况下ip link命令:

ip link add [ link DEVICE ] [ name ] NAME
[ txqueuelen PACKETS ]
[ address LLADDR ] [ broadcast LLADDR ]
[ mtu MTU ] [ index IDX ] 

...

ip link set { DEVICE | group GROUP } 
...
[ mtu MTU ] 

...

您可以使用ip link set ... mtu 9000

ip link set veth0 mtu 9000

有些接口可能会回答:Error: mtu greater than device maximum.因为硬件限制。对于虚拟机来说情况并非如此韦斯接口,其最大MTU为65535:

# ip -details link show veth0
68: veth0@veth1: <BROADCAST,MULTICAST,M-DOWN> mtu 9000 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 2a:93:f8:8e:bc:b6 brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 68 maxmtu 65535 
    veth addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 

与相关部分:

minmtu 68 maxmtu 65535 

请注意,要使其有用,您需要另一端位于其他命名空间中。例如这里的另一边veth0veth1:

ip netns add experiment
ip link set veth1 peer netns experiment
ip -n experiment link set veth1 mtu 9000

等等(启动接口、添加地址、路由...)

对于多播部分,您可能对此感兴趣:

使用 Socat 进行 IP 多播

相关内容