我有一台 Ubuntu 22.04 服务器、一台 MikroTik CRS328-24P-4S+RM 交换机和以太网连接的摄像头。我想增加所有系统的 MTU,以便传输巨型帧,从而减少从许多摄像头接收高清流时服务器的 CPU 负载,但我注意到,即使使用默认 MTU 设置(1500 字节),摄像头也会发送巨型帧。

更详细地:

  • 服务器上ip l显示的网络接口为:2: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000即 MTU 1500。
  • 在交换机管理 Web 界面上,我检查了服务器接口和摄像头接口的 MTU。它们设置为 MTU = 1500,L2 MTU = 1592。
  • 我不知道如何检查相机的 MTU(对我来说它们是一个黑匣子)。

我检查了传输的数据包的大小:

  • 在服务器上,我用 tcpdump 查看了数据包。tcpdump -i eno2 -s 100 -e | less显示数据包如下:
    16:25:06.315612 <MAC redacted> (oui Unknown) > <MAC redacted> (oui Unknown), ethertype IPv4 (0x0800), length 9014: camera1.3957 > server.46179: UDP, length 8972。以太网数据包的大小为 9014 字节。

  • 我禁用了服务器上的“卸载”,如ethtool --offload eno2 rx off tx off中所述

  • 在交换机上,我可以看到相机接口的 RX 速率约为 500 Mbps,RX 数据包速率约为 7000 p/s。结果为((500/8)*1024*1024)/7000= ~9362 字节/数据包。

问题:

  • 我上面的分析有错误吗?

  • 网络设备有可能发送大于中间设备配置的MTU的UDP数据包吗?

附录:

结果ethtool --show-offload eno2

Features for eno2:
rx-checksumming: off
tx-checksumming: off
        tx-checksum-ipv4: off [fixed]
        tx-checksum-ip-generic: off
        tx-checksum-ipv6: off [fixed]
        tx-checksum-fcoe-crc: off [fixed]
        tx-checksum-sctp: off [fixed]
scatter-gather: on
        tx-scatter-gather: on
        tx-scatter-gather-fraglist: off [fixed]
tcp-segmentation-offload: off
        tx-tcp-segmentation: off [requested on]
        tx-tcp-ecn-segmentation: off [fixed]
        tx-tcp-mangleid-segmentation: off
        tx-tcp6-segmentation: off [requested on]
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off
rx-vlan-offload: on
tx-vlan-offload: on
ntuple-filters: on
receive-hashing: on
highdma: off [fixed]
rx-vlan-filter: on
vlan-challenged: off [fixed]
tx-lockless: off [fixed]
netns-local: off [fixed]
tx-gso-robust: off [fixed]
tx-fcoe-segmentation: off [fixed]
tx-gre-segmentation: off [fixed]
tx-gre-csum-segmentation: off [fixed]
tx-ipxip4-segmentation: off [fixed]
tx-ipxip6-segmentation: off [fixed]
tx-udp_tnl-segmentation: off [fixed]
tx-udp_tnl-csum-segmentation: off [fixed]
tx-gso-partial: on
tx-tunnel-remcsum-segmentation: off [fixed]
tx-sctp-segmentation: off [fixed]
tx-esp-segmentation: off [fixed]
tx-udp-segmentation: on
tx-gso-list: off [fixed]
fcoe-mtu: off [fixed]
tx-nocache-copy: off
loopback: off [fixed]
rx-fcs: off [fixed]
rx-all: off [fixed]
tx-vlan-stag-hw-insert: off [fixed]
rx-vlan-stag-hw-parse: off [fixed]
rx-vlan-stag-filter: off [fixed]
l2-fwd-offload: off [fixed]
hw-tc-offload: on
esp-hw-offload: off [fixed]
esp-tx-csum-hw-offload: off [fixed]
rx-udp_tunnel-port-offload: off [fixed]
tls-hw-tx-offload: off [fixed]
tls-hw-rx-offload: off [fixed]
rx-gro-hw: off [fixed]
tls-hw-record: off [fixed]
rx-gro-list: off
macsec-hw-offload: off [fixed]
rx-udp-gro-forwarding: off
hsr-tag-ins-offload: off [fixed]
hsr-tag-rm-offload: off [fixed]
hsr-fwd-offload: off [fixed]
hsr-dup-offload: off [fixed]

2

  • 3
    在我看来,您禁用了校验和卸载,但没有禁用分段/重组卸载。您提供的链接包含您需要的信息。


    – 

  • 5
    我认为主机上的 MTU 设置仅确保它不会发送大于该大小的数据包,但不会使主机拒绝/忽略收到的较大数据包。 (尽管使用 TCP,它确实会让主机告诉其他主机不要这样做。)但不知道交换机上的 MTU 设置。


    – 

0