Я работаю над проектом, в котором на Ubuntu 16.04 установлен Open vSwitch 2.9 (с модулем ядра 2.9).Я динамически устанавливаю правила пересылки для потоков и удаляю их по завершении потока (используя контроллер Floodlight 1.2).Я пересылаю трафик UDP через виртуальные машины.Моя проблема в том, что иногда правила не работают.
Например, я вижу, что счетчик пакетов правила увеличивается на одном коммутаторе и на следующем коммутаторе, когда я запускаю tcpdump, я не вижу входящих пакетов (хотя на предыдущем коммутаторе tcpdump показывает пакеты на правильном исходящем интерфейсе),В некоторых случаях переадресация внезапно начинает работать через несколько минут, что слишком поздно!
При запуске netstat не отображаются пропущенные UDP-пакеты.Я пробовал разные версии OVS, а также пытался использовать режим пространства пользователя, но проблема сохраняется.Я также заметил, что в зависимости от других установленных потоков переключатели, в которых возникает эта проблема, меняются, но пока я устанавливаю все предыдущие потоки одинаково, тот же коммутатор и тот же поток наблюдают проблему.Любые идеи, что я мог бы сделать дальше, чтобы выяснить, как это исправить?
Кроме того, мои правила пересылки используют следующие поля:
ovs0:~$ sudo ovs-ofctl dump-flows br0 -O OpenFlow13
cookie=0xafffff84962f92, duration=263.813s, table=0, n_packets=199405, n_bytes=269333926, send_flow_rem priority=12345,udp,in_port=eth2,nw_src=10.10.10.1,nw_d
st=10.10.10.2,tp_dst=3330 actions=output:eth3
cookie=0xafffff84962f95, duration=263.743s, table=0, n_packets=170236, n_bytes=229866720, send_flow_rem priority=12345,udp,in_port=eth3,nw_src=10.10.10.2,nw_d
st=10.10.10.1,tp_dst=1159 actions=output:eth2
cookie=0xafffff84962f9a, duration=263.437s, table=0, n_packets=202470, n_bytes=273485588, send_flow_rem priority=12345,udp,in_port=eth2,nw_src=10.10.10.1,nw_d
st=10.10.10.5,tp_dst=8450 actions=output:eth4
cookie=0xafffff84963066, duration=263.362s, table=0, n_packets=200642, n_bytes=271012852, send_flow_rem priority=12345,udp,in_port=eth4,nw_src=10.10.10.5,nw_d
st=10.10.10.1,tp_dst=9330 actions=output:eth2
cookie=0x0, duration=1294.627s, table=0, n_packets=447, n_bytes=381687, priority=0 actions=CONTROLLER:65535
Я также пытался использовать VLAN, то же самоепроблема.Это набор правил на коммутаторе, когда пакеты пересылаются, но не принимаются на следующем коммутаторе (поток с tp_dst = 1966):
ovs7:~$ sudo ovs-ofctl dump-flows br0 -O OpenFlow13
cookie=0xafffff84963703, duration=158.640s, table=0, n_packets=75083, n_b
ytes=101947446, send_flow_rem priority=2,ip,in_port=eth5,dl_vlan=1895 acti
ons=pop_vlan,set_field:02:9b:dc:eb:80:c8->eth_dst,output:eth1
cookie=0xafffff8496e272, duration=93.641s, table=0, n_packets=3539, n_byt
es=4793142, send_flow_rem priority=2,ip,in_port=eth2,dl_vlan=1105 actions=
pop_vlan,set_field:02:9b:dc:eb:80:c8->eth_dst,output:eth1
cookie=0xafffff8496e419, duration=78.626s, table=0, n_packets=0, n_bytes=
0, send_flow_rem priority=2,ip,in_port=eth2,dl_vlan=1458 actions=output:et
h4
cookie=0xafffff8496de55, duration=148.614s, table=0, n_packets=66432, n_b
ytes=89933600, send_flow_rem priority=2,udp,in_port=eth1,nw_src=10.10.10.8
,nw_dst=10.10.10.12,tp_dst=1597 actions=push_vlan:0x8100,set_field:5693->v
lan_vid,output:eth5
cookie=0xafffff8496e0c9, duration=108.644s, table=0, n_packets=4592, n_by
tes=6203544, send_flow_rem priority=2,udp,in_port=eth1,nw_src=10.10.10.8,n
w_dst=10.10.10.12,tp_dst=1363 actions=push_vlan:0x8100,set_field:5459->vla
n_vid,output:eth4
*cookie=0xafffff8496e341, duration=83.644s, table=0, n_packets=3145, n_byt
es=4245630, send_flow_rem priority=2,udp,in_port=eth1,nw_src=10.10.10.8,nw
_dst=10.10.10.11,tp_dst=1966 actions=push_vlan:0x8100,set_field:6062->vlan
_vid,output:eth2*
cookie=0x0, duration=15540.491s, table=0, n_packets=683847, n_bytes=92457
8766, priority=0 actions=CONTROLLER:65535