2015-04-18 4 views
1

Я создаю приложение ryu, чтобы нажимать и пометить метки mpls. Вот записи потока на овс (версия 2.3.1) Переключатель S1:Почему пакеты не перенаправляются из переключателя ovs (версия 2.3.1) после нажатия на заголовок MPLS?

[email protected]:~# sudo ovs-ofctl -O OpenFlow14 dump-flows s1 
OFPST_FLOW reply (OF1.4) (xid=0x2): 
cookie=0x0, duration=190.991s, table=0, n_packets=123, n_bytes=21852, priority=0 actions=CONTROLLER:65535 
cookie=0x0, duration=190.991s, table=0, n_packets=0, n_bytes=0, priority=10,mpls,in_port=2,mpls_label=80 actions=pop_mpls:0x0800,output:1 
cookie=0x0, duration=190.991s, table=0, n_packets=152, n_bytes=14896, priority=10,ip,in_port=1 actions=push_mpls:0x8847,set_field:80->mpls_label,output:2 

Любой знает, почему пакеты не передаются даже запись потока соответствует. потому что если я открою проводку и посмотрю s1-eth2, чтобы проверить заголовки mpls, тогда не будет обнаружен пакет с заголовком mpls или ethertype = 0x8847.

Только пакеты, которые я вижу в s1-eth2, являются ICMPv6 (сообщение для запроса маршрутизатора), DHCP и MDNS. любой из них не связан с ping, я отправляю с хоста 1 на h2. Моя топология: h1-s1-s2-h2

У меня в коде есть ошибки или это ошибка в ovs или openflow_v1.4 ryu?

Спасибо.

+1

Когда вы нюхать s1-eth1 (или там, где h1 подключается к s1), есть пакеты поступают с Mpls этикетки 80? Вы также можете увидеть, какие потоки запускаются с помощью 'ovs-dpctl-top' – nik

+0

да, h1 подключен к s1 как h1-s1-s2-h2. h1 отправляет сообщение ping в s1 eth1. Я запрограммировал s1, чтобы пометить метку mpls и отправить ее eth2, но из s1-eth2 не выходят пакеты с меткой mpls 80. Я дам 'ovs-dpctl-top' попытку –

+1

Не могли бы вы разместить свой код? –

ответ

0

Было небольшое количество MPLS, зафиксированное в ответвлении 2.4, можете ли вы попробовать его на master или branch 2.4?

0

Вы обрабатываете запросы ARP и ответы ARP?

Два способа для обработки ARP-пакетов:

  1. держать ваши таблицы потока без изменений, то ARP-пакеты передаются в контроллер. Пусть контроллер обрабатывает ARP.
  2. изменить таблицу потоков.

добавить последний

[email protected]:~# sudo ovs-ofctl -O OpenFlow14 dump-flows s1 
OFPST_FLOW reply (OF1.4) (xid=0x2): 
cookie=0x0, duration=190.991s, table=0, n_packets=123, n_bytes=21852, priority=0 actions=CONTROLLER:65535 
cookie=0x0, duration=190.991s, table=0, n_packets=0, n_bytes=0, priority=10,mpls,in_port=2,mpls_label=80 actions=pop_mpls:0x0800,output:1 
cookie=0x0, duration=190.991s, table=0, n_packets=152, n_bytes=14896, priority=10,ip,in_port=1 actions=push_mpls:0x8847,set_field:80->mpls_label,output:2 
cookie=0x0, duration=190.991s, table=0, n_packets=152, n_bytes=14896, priority=10,arp,in_port=1 actions=push_mpls:0x8847,set_field:80->mpls_label,output:2 
0

Работы для до 2 меток в стеке в ОВС 2.5.1. Возможно, ошибка в приложении Ryu. Можете ли вы опубликовать код?

Стеки заголовков 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*" Но никакие пакеты не оставляют Š1 подтверждено sudo tcpdump -ni s1-eth2