首页 文章

为什么在数据包上推送3个以上的MPLS报头会导致数据包无法转发?

提问于
浏览
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

任何解释将不胜感激

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 .

相关问题