簡體   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