0

MPLS 标头堆栈的大小限制为 3。在数据包上推送超过 3 个 MPLS 标头会导致数据包无法在 Open vSwitch 中转发。

sudo mn --topo single,2 --switch ovsk
mininet> h1 ping h2

在 s1 上安装了一组最小的流条目:

sudo ovs-ofctl -O OpenFlow13 add-flow s1 in_port=1,actions=push_mpls:0x8847,push_mpls:0x8847,push_mpls:0x8847,push_mpls:0x8847,output:2
sudo ovs-ofctl -O OpenFlow13 add-flow s1 in_port=2,actions=push_mpls:0x8847,push_mpls:0x8847,push_mpls:0x8847,push_mpls:0x8847,output:1

流条目正确匹配。 sudo ovs-ofctl -O OpenFlow13 dump-flows s1 | grep -o "n_packets=\w*" 然而没有数据包离开 s1 确认 sudo tcpdump -ni s1-eth2

任何解释将不胜感激

4

1 回答 1

0

对于 2.4.0 版,lib/flow.h 包含一个名为 FLOW_MAX_MPLS_LABELS 的变量,它定义了堆栈中支持的最大 mpls 数。值设置为 3

https://github.com/openvswitch/ovs/blob/v2.4.0/lib/flow.h

#define FLOW_MAX_MPLS_LABELS 3

对于更高版本,您应该检查但他们可能会采取类似的方法,在代码中限制为 3 mpls。

于 2017-03-14T00:54:46.750 回答