繁体   English   中英

无法在OVS隧道中捕获大于MTU 1500的流量

[英]Unable to capture traffic greater than MTU 1500 in ovs tunnel

创建了一座桥

ovs-vsctl add-br br0

在网桥br0中添加了vxlan类型的端口

ovs-vsctl add-port br0 tun1 \
 -- set Interface tun1 type=vxlan \
 options:remote_ip=10.2.3.204 options:key=10 options:df_default=False

在桥br0中添加了内部端口

ovs-vsctl add-port br0 iface1 \
 -- set Interface iface1 type=internal options:df_default=False

设置接口

ip link set vxlan_sys_4789 up
ip link set iface1 up

我在接口iface1中接收到流量,并且期望使用给定隧道封装的流量相同。

我发送的帧大小为1472字节的数据包,与在远程主机(10.2.3.204)进行的封装相同。 但是,当帧大小超过1472字节时,数据包将在接口iface1中分段,所有分段的数据包都会通过流。 但是,我在远程主机(10.2.3.204)中仅收到未设置更多片段位的流量的最后一个片段。

在进行进一步的调试时,我发现在隧道接口vxlan_sys_4789中,我看到仅接收到流量的最后一部分,而其他部分则被丢弃。

ovs中是否有任何明确的条件来丢弃这些数据包? 尽管片段标记设置为true,但为什么片段不通过隧道呢?

默认情况下,Open vSwitch会覆盖内部接口(例如br0)MTU。 如果您只有一个内部接口(例如br0)和一个物理接口(例如eth0),则MTU到eth0的每一次更改都会反映到br0。 在内部接口上使用ip进行的任何手动MTU配置都将被Open vSwitch覆盖,以匹配当前的最小网桥。

有时这种行为是不希望的,例如在隧道中。 可以使用以下命令显式设置内部接口的MTU:

ovs-vsctl set int br0 mtu_request=1450

此后,Open vSwitch将br0 MTU配置为1450。由于此设置位于数据库中,因此它将是持久性的(与ip相比)。

可以删除MTU配置,以使用以下方法恢复默认行为:

$ ovs-vsctl set int br0 mtu_request=[]

mtu_request列甚至可以用于配置MTU,甚至用于物理接口(例如eth0)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM