创建了一座桥梁
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,但为什么片段不通过隧道呢?
答案 0 :(得分:0)
默认情况下,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)。