2016-12-13 4 views
0

Стеки заголовков MPLS ограничены размером 3. Нажатие более 3 заголовков MPLS в пакете приводит к тому, что пакет не пересылается в Open vSwitch.Почему нажатие более 3 заголовков MPLS на пакет приводит к тому, что пакет не пересылается?

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

Любое объяснение будет оценено

+0

Duplicate? Http: //stackoverflow.com/questions/41116527/why-pushing-more-than-3-mpls-headers-on-a-packet-results-in-the-packet-not-being –

+1

Это не имеет никакого компонента контроллера Ryu. – sinhayash

+0

Моя версия работает для 2 заголовков и использует OvS 2.5.1 – sinhayash

ответ

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 в коде.