Skip to content

Instantly share code, notes, and snippets.

Created August 25, 2016 15:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/a47d2f280cb153110931c90ddbbcec84 to your computer and use it in GitHub Desktop.
Save anonymous/a47d2f280cb153110931c90ddbbcec84 to your computer and use it in GitHub Desktop.
vagrant@central:~$ sudo ovn-sbctl --format=csv --data=bare list port_binding ; echo '=-=' ; sudo ovn-sbctl list datapath_binding ; echo '===' ; sudo ovn-sbctl lflow-list | grep --color -E 'Datapath|$'
_uuid,chassis,datapath,logical_port,mac,options,parent_port,tag,tunnel_key,type
a74b8a90-0b39-49d1-ae32-cae84c1c6d4d,,057737ae-22c4-49b0-aaf2-bcc1e15debba,r1-join,00:00:04:01:02:03,peer=R1_join,,,1,patch
532591c8-6e21-42b8-9f5c-2cf4d596f29a,,633fc067-9ad4-4ca3-a476-751420060d99,bar,,peer=rp-bar,,,2,patch
a7885942-d1db-4282-ad17-ee721413364c,75dbac89-a543-477b-8782-9b2d68c53b88,057737ae-22c4-49b0-aaf2-bcc1e15debba,r2-join,00:00:04:01:02:04,l3gateway-chassis=compute2 peer=R2_join,,,2,l3gateway
7f4b92aa-b4c3-4836-b1a8-6829703dd120,9ab12848-eed5-402b-b5b0-b364c218b72d,ef21448e-4a7b-440c-933a-29ba0569bbcc,foo1,f0:00:00:01:02:03 192.168.1.2,,,,2,
9623d4c3-8659-44c7-bcc7-3fe10ddb0dd0,75dbac89-a543-477b-8782-9b2d68c53b88,d748bcc2-8b72-4e4c-870e-7f7c5558e0af,alice1,f0:00:00:01:02:04 172.16.1.2,,,,2,
4a5d9b4b-029a-454f-a390-6f105bc81b42,,633fc067-9ad4-4ca3-a476-751420060d99,R1_join,,peer=r1-join,,,3,patch
0214bd9c-18bd-4845-ac0d-5fd05af0718a,75dbac89-a543-477b-8782-9b2d68c53b88,97da7972-86d2-46b2-aee7-8d479578b042,alice,,l3gateway-chassis=compute2 peer=rp-alice,,,1,l3gateway
091c736e-675e-48a0-a501-df14e356b35c,,633fc067-9ad4-4ca3-a476-751420060d99,foo,,peer=rp-foo,,,1,patch
c46ee66e-35bc-49bb-8768-9885f7d45d64,75dbac89-a543-477b-8782-9b2d68c53b88,97da7972-86d2-46b2-aee7-8d479578b042,R2_join,,l3gateway-chassis=compute2 peer=r2-join,,,2,l3gateway
dd54846e-1884-4c06-9b95-9d58caeef2bb,75dbac89-a543-477b-8782-9b2d68c53b88,d748bcc2-8b72-4e4c-870e-7f7c5558e0af,rp-alice,00:00:02:01:02:03,l3gateway-chassis=compute2 peer=alice,,,1,l3gateway
bd6a54af-2554-4f34-b7ef-c82cada4a395,,ef21448e-4a7b-440c-933a-29ba0569bbcc,rp-foo,00:00:01:01:02:03,peer=foo,,,1,patch
59678be7-954a-4eca-ae18-b41314946ff1,,04601691-b78a-4ebd-be21-ad570bb5f690,rp-bar,00:00:01:01:02:04,peer=bar,,,1,patch
750b72d7-9562-4828-a813-4100f0612927,9ab12848-eed5-402b-b5b0-b364c218b72d,04601691-b78a-4ebd-be21-ad570bb5f690,bar1,f0:00:00:01:02:05 192.168.2.2,,,,2,
=-=
_uuid : 04601691-b78a-4ebd-be21-ad570bb5f690
external_ids : {logical-switch="6562a64d-07f6-4cef-88b8-1a6b1187173a", name=bar}
tunnel_key : 4
_uuid : 057737ae-22c4-49b0-aaf2-bcc1e15debba
external_ids : {logical-switch="a9f9665f-313a-4fc1-a843-714b88f78de7", name=join}
tunnel_key : 6
_uuid : d748bcc2-8b72-4e4c-870e-7f7c5558e0af
external_ids : {logical-switch="838ffb7c-c06e-43ea-bee7-d425cdbf1491", name=alice}
tunnel_key : 5
_uuid : ef21448e-4a7b-440c-933a-29ba0569bbcc
external_ids : {logical-switch="f0c2f82e-066d-473d-9454-871218dd0b02", name=foo}
tunnel_key : 3
_uuid : 97da7972-86d2-46b2-aee7-8d479578b042
external_ids : {logical-router="d5585c5f-dabf-4f85-a54e-07c35cf6976f", name="R2"}
tunnel_key : 2
_uuid : 633fc067-9ad4-4ca3-a476-751420060d99
external_ids : {logical-router="a4d0d3f9-183e-442e-b34e-d49ab259971c", name="R1"}
tunnel_key : 1
===
Datapath: "bar" (04601691-b78a-4ebd-be21-ad570bb5f690) Pipeline: ingress
table=0 (ls_in_port_sec_l2 ), priority=100 , match=(eth.src[40]), action=(drop;)
table=0 (ls_in_port_sec_l2 ), priority=100 , match=(vlan.present), action=(drop;)
table=0 (ls_in_port_sec_l2 ), priority=50 , match=(inport == "bar1"), action=(next;)
table=0 (ls_in_port_sec_l2 ), priority=50 , match=(inport == "rp-bar"), action=(next;)
table=1 (ls_in_port_sec_ip ), priority=0 , match=(1), action=(next;)
table=2 (ls_in_port_sec_nd ), priority=0 , match=(1), action=(next;)
table=3 (ls_in_pre_acl ), priority=0 , match=(1), action=(next;)
table=4 (ls_in_pre_lb ), priority=0 , match=(1), action=(next;)
table=5 (ls_in_pre_stateful ), priority=100 , match=(reg0[0] == 1), action=(ct_next;)
table=5 (ls_in_pre_stateful ), priority=0 , match=(1), action=(next;)
table=6 (ls_in_acl ), priority=0 , match=(1), action=(next;)
table=7 (ls_in_lb ), priority=0 , match=(1), action=(next;)
table=8 (ls_in_stateful ), priority=100 , match=(reg0[1] == 1), action=(ct_commit(ct_label=0/1); next;)
table=8 (ls_in_stateful ), priority=100 , match=(reg0[2] == 1), action=(ct_lb;)
table=8 (ls_in_stateful ), priority=0 , match=(1), action=(next;)
table=9 (ls_in_arp_rsp ), priority=50 , match=(arp.tpa == 192.168.2.2 && arp.op == 1), action=(eth.dst = eth.src; eth.src = f0:00:00:01:02:05; arp.op = 2; /* ARP reply */ arp.tha = arp.sha; arp.sha = f0:00:00:01:02:05; arp.tpa = arp.spa; arp.spa = 192.168.2.2; outport = inport; flags.loopback = 1; output;)
table=9 (ls_in_arp_rsp ), priority=0 , match=(1), action=(next;)
table=10(ls_in_dhcp_options ), priority=0 , match=(1), action=(next;)
table=11(ls_in_dhcp_response), priority=0 , match=(1), action=(next;)
table=12(ls_in_l2_lkup ), priority=100 , match=(eth.mcast), action=(outport = "_MC_flood"; output;)
table=12(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:01:01:02:04), action=(outport = "rp-bar"; output;)
table=12(ls_in_l2_lkup ), priority=50 , match=(eth.dst == f0:00:00:01:02:05), action=(outport = "bar1"; output;)
Datapath: "bar" (04601691-b78a-4ebd-be21-ad570bb5f690) Pipeline: egress
table=0 (ls_out_pre_lb ), priority=0 , match=(1), action=(next;)
table=1 (ls_out_pre_acl ), priority=0 , match=(1), action=(next;)
table=2 (ls_out_pre_stateful), priority=100 , match=(reg0[0] == 1), action=(ct_next;)
table=2 (ls_out_pre_stateful), priority=0 , match=(1), action=(next;)
table=3 (ls_out_lb ), priority=0 , match=(1), action=(next;)
table=4 (ls_out_acl ), priority=0 , match=(1), action=(next;)
table=5 (ls_out_stateful ), priority=100 , match=(reg0[1] == 1), action=(ct_commit(ct_label=0/1); next;)
table=5 (ls_out_stateful ), priority=100 , match=(reg0[2] == 1), action=(ct_lb;)
table=5 (ls_out_stateful ), priority=0 , match=(1), action=(next;)
table=6 (ls_out_port_sec_ip ), priority=0 , match=(1), action=(next;)
table=7 (ls_out_port_sec_l2 ), priority=100 , match=(eth.mcast), action=(output;)
table=7 (ls_out_port_sec_l2 ), priority=50 , match=(outport == "bar1"), action=(output;)
table=7 (ls_out_port_sec_l2 ), priority=50 , match=(outport == "rp-bar"), action=(output;)
Datapath: "join" (057737ae-22c4-49b0-aaf2-bcc1e15debba) Pipeline: ingress
table=0 (ls_in_port_sec_l2 ), priority=100 , match=(eth.src[40]), action=(drop;)
table=0 (ls_in_port_sec_l2 ), priority=100 , match=(vlan.present), action=(drop;)
table=0 (ls_in_port_sec_l2 ), priority=50 , match=(inport == "r1-join"), action=(next;)
table=0 (ls_in_port_sec_l2 ), priority=50 , match=(inport == "r2-join"), action=(next;)
table=1 (ls_in_port_sec_ip ), priority=0 , match=(1), action=(next;)
table=2 (ls_in_port_sec_nd ), priority=0 , match=(1), action=(next;)
table=3 (ls_in_pre_acl ), priority=0 , match=(1), action=(next;)
table=4 (ls_in_pre_lb ), priority=0 , match=(1), action=(next;)
table=5 (ls_in_pre_stateful ), priority=100 , match=(reg0[0] == 1), action=(ct_next;)
table=5 (ls_in_pre_stateful ), priority=0 , match=(1), action=(next;)
table=6 (ls_in_acl ), priority=0 , match=(1), action=(next;)
table=7 (ls_in_lb ), priority=0 , match=(1), action=(next;)
table=8 (ls_in_stateful ), priority=100 , match=(reg0[1] == 1), action=(ct_commit(ct_label=0/1); next;)
table=8 (ls_in_stateful ), priority=100 , match=(reg0[2] == 1), action=(ct_lb;)
table=8 (ls_in_stateful ), priority=0 , match=(1), action=(next;)
table=9 (ls_in_arp_rsp ), priority=0 , match=(1), action=(next;)
table=10(ls_in_dhcp_options ), priority=0 , match=(1), action=(next;)
table=11(ls_in_dhcp_response), priority=0 , match=(1), action=(next;)
table=12(ls_in_l2_lkup ), priority=100 , match=(eth.mcast), action=(outport = "_MC_flood"; output;)
table=12(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:04:01:02:03), action=(outport = "r1-join"; output;)
table=12(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:04:01:02:04), action=(outport = "r2-join"; output;)
Datapath: "join" (057737ae-22c4-49b0-aaf2-bcc1e15debba) Pipeline: egress
table=0 (ls_out_pre_lb ), priority=0 , match=(1), action=(next;)
table=1 (ls_out_pre_acl ), priority=0 , match=(1), action=(next;)
table=2 (ls_out_pre_stateful), priority=100 , match=(reg0[0] == 1), action=(ct_next;)
table=2 (ls_out_pre_stateful), priority=0 , match=(1), action=(next;)
table=3 (ls_out_lb ), priority=0 , match=(1), action=(next;)
table=4 (ls_out_acl ), priority=0 , match=(1), action=(next;)
table=5 (ls_out_stateful ), priority=100 , match=(reg0[1] == 1), action=(ct_commit(ct_label=0/1); next;)
table=5 (ls_out_stateful ), priority=100 , match=(reg0[2] == 1), action=(ct_lb;)
table=5 (ls_out_stateful ), priority=0 , match=(1), action=(next;)
table=6 (ls_out_port_sec_ip ), priority=0 , match=(1), action=(next;)
table=7 (ls_out_port_sec_l2 ), priority=100 , match=(eth.mcast), action=(output;)
table=7 (ls_out_port_sec_l2 ), priority=50 , match=(outport == "r1-join"), action=(output;)
table=7 (ls_out_port_sec_l2 ), priority=50 , match=(outport == "r2-join"), action=(output;)
Datapath: "R1" (633fc067-9ad4-4ca3-a476-751420060d99) Pipeline: ingress
table=0 (lr_in_admission ), priority=100 , match=(vlan.present || eth.src[40]), action=(drop;)
table=0 (lr_in_admission ), priority=50 , match=((eth.mcast || eth.dst == 00:00:01:01:02:03) && inport == "foo"), action=(next;)
table=0 (lr_in_admission ), priority=50 , match=((eth.mcast || eth.dst == 00:00:01:01:02:04) && inport == "bar"), action=(next;)
table=0 (lr_in_admission ), priority=50 , match=((eth.mcast || eth.dst == 00:00:04:01:02:03) && inport == "R1_join"), action=(next;)
table=1 (lr_in_ip_input ), priority=100 , match=(ip4.mcast || ip4.src == 255.255.255.255 || ip4.src == 127.0.0.0/8 || ip4.dst == 127.0.0.0/8 || ip4.src == 0.0.0.0/8 || ip4.dst == 0.0.0.0/8), action=(drop;)
table=1 (lr_in_ip_input ), priority=100 , match=(ip4.src == {192.168.1.1, 192.168.1.255}), action=(drop;)
table=1 (lr_in_ip_input ), priority=100 , match=(ip4.src == {192.168.2.1, 192.168.2.255}), action=(drop;)
table=1 (lr_in_ip_input ), priority=100 , match=(ip4.src == {20.0.0.1, 20.0.0.255}), action=(drop;)
table=1 (lr_in_ip_input ), priority=100 , match=(ip6.src == fe80::200:1ff:fe01:203), action=(drop;)
table=1 (lr_in_ip_input ), priority=100 , match=(ip6.src == fe80::200:1ff:fe01:204), action=(drop;)
table=1 (lr_in_ip_input ), priority=100 , match=(ip6.src == fe80::200:4ff:fe01:203), action=(drop;)
table=1 (lr_in_ip_input ), priority=90 , match=(arp.op == 2), action=(put_arp(inport, arp.spa, arp.sha);)
table=1 (lr_in_ip_input ), priority=90 , match=(inport == "R1_join" && arp.tpa == 20.0.0.1 && arp.op == 1), action=(eth.dst = eth.src; eth.src = 00:00:04:01:02:03; arp.op = 2; /* ARP reply */ arp.tha = arp.sha; arp.sha = 00:00:04:01:02:03; arp.tpa = arp.spa; arp.spa = 20.0.0.1; outport = "R1_join"; flags.loopback = 1; output;)
table=1 (lr_in_ip_input ), priority=90 , match=(inport == "R1_join" && nd_ns && ip6.dst == {fe80::200:4ff:fe01:203, ff02::1:ff01:203} && nd.target == fe80::200:4ff:fe01:203), action=(put_nd(inport, ip6.src, nd.sll); nd_na { eth.src = 00:00:04:01:02:03; ip6.src = fe80::200:4ff:fe01:203; nd.target = fe80::200:4ff:fe01:203; nd.tll = 00:00:04:01:02:03; outport = inport; flags.loopback = 1; output; };)
table=1 (lr_in_ip_input ), priority=90 , match=(inport == "bar" && arp.tpa == 192.168.2.1 && arp.op == 1), action=(eth.dst = eth.src; eth.src = 00:00:01:01:02:04; arp.op = 2; /* ARP reply */ arp.tha = arp.sha; arp.sha = 00:00:01:01:02:04; arp.tpa = arp.spa; arp.spa = 192.168.2.1; outport = "bar"; flags.loopback = 1; output;)
table=1 (lr_in_ip_input ), priority=90 , match=(inport == "bar" && nd_ns && ip6.dst == {fe80::200:1ff:fe01:204, ff02::1:ff01:204} && nd.target == fe80::200:1ff:fe01:204), action=(put_nd(inport, ip6.src, nd.sll); nd_na { eth.src = 00:00:01:01:02:04; ip6.src = fe80::200:1ff:fe01:204; nd.target = fe80::200:1ff:fe01:204; nd.tll = 00:00:01:01:02:04; outport = inport; flags.loopback = 1; output; };)
table=1 (lr_in_ip_input ), priority=90 , match=(inport == "foo" && arp.tpa == 192.168.1.1 && arp.op == 1), action=(eth.dst = eth.src; eth.src = 00:00:01:01:02:03; arp.op = 2; /* ARP reply */ arp.tha = arp.sha; arp.sha = 00:00:01:01:02:03; arp.tpa = arp.spa; arp.spa = 192.168.1.1; outport = "foo"; flags.loopback = 1; output;)
table=1 (lr_in_ip_input ), priority=90 , match=(inport == "foo" && nd_ns && ip6.dst == {fe80::200:1ff:fe01:203, ff02::1:ff01:203} && nd.target == fe80::200:1ff:fe01:203), action=(put_nd(inport, ip6.src, nd.sll); nd_na { eth.src = 00:00:01:01:02:03; ip6.src = fe80::200:1ff:fe01:203; nd.target = fe80::200:1ff:fe01:203; nd.tll = 00:00:01:01:02:03; outport = inport; flags.loopback = 1; output; };)
table=1 (lr_in_ip_input ), priority=90 , match=(ip4.dst == 192.168.1.1 && icmp4.type == 8 && icmp4.code == 0), action=(ip4.dst <-> ip4.src; ip.ttl = 255; icmp4.type = 0; flags.loopback = 1; next; )
table=1 (lr_in_ip_input ), priority=90 , match=(ip4.dst == 192.168.2.1 && icmp4.type == 8 && icmp4.code == 0), action=(ip4.dst <-> ip4.src; ip.ttl = 255; icmp4.type = 0; flags.loopback = 1; next; )
table=1 (lr_in_ip_input ), priority=90 , match=(ip4.dst == 20.0.0.1 && icmp4.type == 8 && icmp4.code == 0), action=(ip4.dst <-> ip4.src; ip.ttl = 255; icmp4.type = 0; flags.loopback = 1; next; )
table=1 (lr_in_ip_input ), priority=90 , match=(ip6.dst == fe80::200:1ff:fe01:203 && icmp6.type == 128 && icmp6.code == 0), action=(ip6.dst <-> ip6.src; ip.ttl = 255; icmp6.type = 129; flags.loopback = 1; next; )
table=1 (lr_in_ip_input ), priority=90 , match=(ip6.dst == fe80::200:1ff:fe01:204 && icmp6.type == 128 && icmp6.code == 0), action=(ip6.dst <-> ip6.src; ip.ttl = 255; icmp6.type = 129; flags.loopback = 1; next; )
table=1 (lr_in_ip_input ), priority=90 , match=(ip6.dst == fe80::200:4ff:fe01:203 && icmp6.type == 128 && icmp6.code == 0), action=(ip6.dst <-> ip6.src; ip.ttl = 255; icmp6.type = 129; flags.loopback = 1; next; )
table=1 (lr_in_ip_input ), priority=90 , match=(nd_na), action=(put_nd(inport, nd.target, nd.tll);)
table=1 (lr_in_ip_input ), priority=80 , match=(nd_ns), action=(put_nd(inport, ip6.src, nd.sll);)
table=1 (lr_in_ip_input ), priority=60 , match=(ip4.dst == {192.168.1.1}), action=(drop;)
table=1 (lr_in_ip_input ), priority=60 , match=(ip4.dst == {192.168.2.1}), action=(drop;)
table=1 (lr_in_ip_input ), priority=60 , match=(ip4.dst == {20.0.0.1}), action=(drop;)
table=1 (lr_in_ip_input ), priority=60 , match=(ip6.dst == fe80::200:1ff:fe01:203), action=(drop;)
table=1 (lr_in_ip_input ), priority=60 , match=(ip6.dst == fe80::200:1ff:fe01:204), action=(drop;)
table=1 (lr_in_ip_input ), priority=60 , match=(ip6.dst == fe80::200:4ff:fe01:203), action=(drop;)
table=1 (lr_in_ip_input ), priority=50 , match=(eth.bcast), action=(drop;)
table=1 (lr_in_ip_input ), priority=30 , match=(ip4 && ip.ttl == {0, 1}), action=(drop;)
table=1 (lr_in_ip_input ), priority=0 , match=(1), action=(next;)
table=2 (lr_in_unsnat ), priority=0 , match=(1), action=(next;)
table=3 (lr_in_dnat ), priority=0 , match=(1), action=(next;)
table=4 (lr_in_ip_routing ), priority=64 , match=(inport == "R1_join" && ip6.dst == fe80::/64), action=(ip.ttl--; xxreg0 = ip6.dst; xxreg1 = fe80::200:4ff:fe01:203; eth.src = 00:00:04:01:02:03; outport = "R1_join"; flags.loopback = 1; next;)
table=4 (lr_in_ip_routing ), priority=64 , match=(inport == "bar" && ip6.dst == fe80::/64), action=(ip.ttl--; xxreg0 = ip6.dst; xxreg1 = fe80::200:1ff:fe01:204; eth.src = 00:00:01:01:02:04; outport = "bar"; flags.loopback = 1; next;)
table=4 (lr_in_ip_routing ), priority=64 , match=(inport == "foo" && ip6.dst == fe80::/64), action=(ip.ttl--; xxreg0 = ip6.dst; xxreg1 = fe80::200:1ff:fe01:203; eth.src = 00:00:01:01:02:03; outport = "foo"; flags.loopback = 1; next;)
table=4 (lr_in_ip_routing ), priority=24 , match=(ip4.dst == 172.16.1.0/24), action=(ip.ttl--; reg0 = 20.0.0.2; reg1 = 20.0.0.1; eth.src = 00:00:04:01:02:03; outport = "R1_join"; flags.loopback = 1; next;)
table=4 (lr_in_ip_routing ), priority=24 , match=(ip4.dst == 192.168.1.0/24), action=(ip.ttl--; reg0 = ip4.dst; reg1 = 192.168.1.1; eth.src = 00:00:01:01:02:03; outport = "foo"; flags.loopback = 1; next;)
table=4 (lr_in_ip_routing ), priority=24 , match=(ip4.dst == 192.168.2.0/24), action=(ip.ttl--; reg0 = ip4.dst; reg1 = 192.168.2.1; eth.src = 00:00:01:01:02:04; outport = "bar"; flags.loopback = 1; next;)
table=4 (lr_in_ip_routing ), priority=24 , match=(ip4.dst == 20.0.0.0/24), action=(ip.ttl--; reg0 = ip4.dst; reg1 = 20.0.0.1; eth.src = 00:00:04:01:02:03; outport = "R1_join"; flags.loopback = 1; next;)
table=5 (lr_in_arp_resolve ), priority=100 , match=(outport == "R1_join" && reg0 == 20.0.0.2), action=(eth.dst = 00:00:04:01:02:04; next;)
table=5 (lr_in_arp_resolve ), priority=100 , match=(outport == "R1_join" && xxreg0 == fe80::200:4ff:fe01:204), action=(eth.dst = 00:00:04:01:02:04; next;)
table=5 (lr_in_arp_resolve ), priority=100 , match=(outport == "bar" && reg0 == 192.168.2.2), action=(eth.dst = f0:00:00:01:02:05; next;)
table=5 (lr_in_arp_resolve ), priority=100 , match=(outport == "foo" && reg0 == 192.168.1.2), action=(eth.dst = f0:00:00:01:02:03; next;)
table=5 (lr_in_arp_resolve ), priority=0 , match=(1), action=(get_arp(outport, reg0); next;)
table=5 (lr_in_arp_resolve ), priority=0 , match=(ip4), action=(get_arp(outport, reg0); next;)
table=5 (lr_in_arp_resolve ), priority=0 , match=(ip6), action=(get_nd(outport, xxreg0); next;)
table=6 (lr_in_arp_request ), priority=100 , match=(eth.dst == 00:00:00:00:00:00), action=(arp { eth.dst = ff:ff:ff:ff:ff:ff; arp.spa = reg1; arp.tpa = reg0; arp.op = 1; output; };)
table=6 (lr_in_arp_request ), priority=0 , match=(1), action=(output;)
Datapath: "R1" (633fc067-9ad4-4ca3-a476-751420060d99) Pipeline: egress
table=0 (lr_out_snat ), priority=0 , match=(1), action=(next;)
table=1 (lr_out_delivery ), priority=100 , match=(outport == "R1_join"), action=(output;)
table=1 (lr_out_delivery ), priority=100 , match=(outport == "bar"), action=(output;)
table=1 (lr_out_delivery ), priority=100 , match=(outport == "foo"), action=(output;)
Datapath: "R2" (97da7972-86d2-46b2-aee7-8d479578b042) Pipeline: ingress
table=0 (lr_in_admission ), priority=100 , match=(vlan.present || eth.src[40]), action=(drop;)
table=0 (lr_in_admission ), priority=50 , match=((eth.mcast || eth.dst == 00:00:02:01:02:03) && inport == "alice"), action=(next;)
table=0 (lr_in_admission ), priority=50 , match=((eth.mcast || eth.dst == 00:00:04:01:02:04) && inport == "R2_join"), action=(next;)
table=1 (lr_in_ip_input ), priority=100 , match=(ip4.mcast || ip4.src == 255.255.255.255 || ip4.src == 127.0.0.0/8 || ip4.dst == 127.0.0.0/8 || ip4.src == 0.0.0.0/8 || ip4.dst == 0.0.0.0/8), action=(drop;)
table=1 (lr_in_ip_input ), priority=100 , match=(ip4.src == {172.16.1.1, 172.16.1.255}), action=(drop;)
table=1 (lr_in_ip_input ), priority=100 , match=(ip4.src == {20.0.0.2, 20.0.0.255}), action=(drop;)
table=1 (lr_in_ip_input ), priority=100 , match=(ip6.src == fe80::200:2ff:fe01:203), action=(drop;)
table=1 (lr_in_ip_input ), priority=100 , match=(ip6.src == fe80::200:4ff:fe01:204), action=(drop;)
table=1 (lr_in_ip_input ), priority=90 , match=(arp.op == 2), action=(put_arp(inport, arp.spa, arp.sha);)
table=1 (lr_in_ip_input ), priority=90 , match=(inport == "R2_join" && arp.tpa == 20.0.0.2 && arp.op == 1), action=(eth.dst = eth.src; eth.src = 00:00:04:01:02:04; arp.op = 2; /* ARP reply */ arp.tha = arp.sha; arp.sha = 00:00:04:01:02:04; arp.tpa = arp.spa; arp.spa = 20.0.0.2; outport = "R2_join"; flags.loopback = 1; output;)
table=1 (lr_in_ip_input ), priority=90 , match=(inport == "R2_join" && arp.tpa == 30.0.0.2 && arp.op == 1), action=(eth.dst = eth.src; eth.src = 00:00:04:01:02:04; arp.op = 2; /* ARP reply */ arp.tha = arp.sha; arp.sha = 00:00:04:01:02:04; arp.tpa = arp.spa; arp.spa = 30.0.0.2; outport = "R2_join"; flags.loopback = 1; output;)
table=1 (lr_in_ip_input ), priority=90 , match=(inport == "R2_join" && nd_ns && ip6.dst == {fe80::200:4ff:fe01:204, ff02::1:ff01:204} && nd.target == fe80::200:4ff:fe01:204), action=(put_nd(inport, ip6.src, nd.sll); nd_na { eth.src = 00:00:04:01:02:04; ip6.src = fe80::200:4ff:fe01:204; nd.target = fe80::200:4ff:fe01:204; nd.tll = 00:00:04:01:02:04; outport = inport; flags.loopback = 1; output; };)
table=1 (lr_in_ip_input ), priority=90 , match=(inport == "alice" && arp.tpa == 172.16.1.1 && arp.op == 1), action=(eth.dst = eth.src; eth.src = 00:00:02:01:02:03; arp.op = 2; /* ARP reply */ arp.tha = arp.sha; arp.sha = 00:00:02:01:02:03; arp.tpa = arp.spa; arp.spa = 172.16.1.1; outport = "alice"; flags.loopback = 1; output;)
table=1 (lr_in_ip_input ), priority=90 , match=(inport == "alice" && arp.tpa == 30.0.0.2 && arp.op == 1), action=(eth.dst = eth.src; eth.src = 00:00:02:01:02:03; arp.op = 2; /* ARP reply */ arp.tha = arp.sha; arp.sha = 00:00:02:01:02:03; arp.tpa = arp.spa; arp.spa = 30.0.0.2; outport = "alice"; flags.loopback = 1; output;)
table=1 (lr_in_ip_input ), priority=90 , match=(inport == "alice" && nd_ns && ip6.dst == {fe80::200:2ff:fe01:203, ff02::1:ff01:203} && nd.target == fe80::200:2ff:fe01:203), action=(put_nd(inport, ip6.src, nd.sll); nd_na { eth.src = 00:00:02:01:02:03; ip6.src = fe80::200:2ff:fe01:203; nd.target = fe80::200:2ff:fe01:203; nd.tll = 00:00:02:01:02:03; outport = inport; flags.loopback = 1; output; };)
table=1 (lr_in_ip_input ), priority=90 , match=(ip4.dst == 172.16.1.1 && icmp4.type == 8 && icmp4.code == 0), action=(ip4.dst <-> ip4.src; ip.ttl = 255; icmp4.type = 0; flags.loopback = 1; next; )
table=1 (lr_in_ip_input ), priority=90 , match=(ip4.dst == 20.0.0.2 && icmp4.type == 8 && icmp4.code == 0), action=(ip4.dst <-> ip4.src; ip.ttl = 255; icmp4.type = 0; flags.loopback = 1; next; )
table=1 (lr_in_ip_input ), priority=90 , match=(ip6.dst == fe80::200:2ff:fe01:203 && icmp6.type == 128 && icmp6.code == 0), action=(ip6.dst <-> ip6.src; ip.ttl = 255; icmp6.type = 129; flags.loopback = 1; next; )
table=1 (lr_in_ip_input ), priority=90 , match=(ip6.dst == fe80::200:4ff:fe01:204 && icmp6.type == 128 && icmp6.code == 0), action=(ip6.dst <-> ip6.src; ip.ttl = 255; icmp6.type = 129; flags.loopback = 1; next; )
table=1 (lr_in_ip_input ), priority=90 , match=(nd_na), action=(put_nd(inport, nd.target, nd.tll);)
table=1 (lr_in_ip_input ), priority=80 , match=(nd_ns), action=(put_nd(inport, ip6.src, nd.sll);)
table=1 (lr_in_ip_input ), priority=60 , match=(ip4.dst == {172.16.1.1}), action=(drop;)
table=1 (lr_in_ip_input ), priority=60 , match=(ip4.dst == {20.0.0.2}), action=(drop;)
table=1 (lr_in_ip_input ), priority=60 , match=(ip6.dst == fe80::200:2ff:fe01:203), action=(drop;)
table=1 (lr_in_ip_input ), priority=60 , match=(ip6.dst == fe80::200:4ff:fe01:204), action=(drop;)
table=1 (lr_in_ip_input ), priority=50 , match=(eth.bcast), action=(drop;)
table=1 (lr_in_ip_input ), priority=30 , match=(ip4 && ip.ttl == {0, 1}), action=(drop;)
table=1 (lr_in_ip_input ), priority=0 , match=(1), action=(next;)
table=2 (lr_in_unsnat ), priority=100 , match=(ip && ip4.dst == 30.0.0.1), action=(ct_snat; next;)
table=2 (lr_in_unsnat ), priority=0 , match=(1), action=(next;)
table=3 (lr_in_dnat ), priority=100 , match=(ip && ip4.dst == 30.0.0.2), action=(flags.loopback = 1; ct_dnat(192.168.1.2);)
table=3 (lr_in_dnat ), priority=50 , match=(ip), action=(flags.loopback = 1; ct_dnat;)
table=3 (lr_in_dnat ), priority=0 , match=(1), action=(next;)
table=4 (lr_in_ip_routing ), priority=64 , match=(inport == "R2_join" && ip6.dst == fe80::/64), action=(ip.ttl--; xxreg0 = ip6.dst; xxreg1 = fe80::200:4ff:fe01:204; eth.src = 00:00:04:01:02:04; outport = "R2_join"; flags.loopback = 1; next;)
table=4 (lr_in_ip_routing ), priority=64 , match=(inport == "alice" && ip6.dst == fe80::/64), action=(ip.ttl--; xxreg0 = ip6.dst; xxreg1 = fe80::200:2ff:fe01:203; eth.src = 00:00:02:01:02:03; outport = "alice"; flags.loopback = 1; next;)
table=4 (lr_in_ip_routing ), priority=24 , match=(ip4.dst == 172.16.1.0/24), action=(ip.ttl--; reg0 = ip4.dst; reg1 = 172.16.1.1; eth.src = 00:00:02:01:02:03; outport = "alice"; flags.loopback = 1; next;)
table=4 (lr_in_ip_routing ), priority=24 , match=(ip4.dst == 20.0.0.0/24), action=(ip.ttl--; reg0 = ip4.dst; reg1 = 20.0.0.2; eth.src = 00:00:04:01:02:04; outport = "R2_join"; flags.loopback = 1; next;)
table=4 (lr_in_ip_routing ), priority=16 , match=(ip4.dst == 192.168.0.0/16), action=(ip.ttl--; reg0 = 20.0.0.1; reg1 = 20.0.0.2; eth.src = 00:00:04:01:02:04; outport = "R2_join"; flags.loopback = 1; next;)
table=5 (lr_in_arp_resolve ), priority=100 , match=(outport == "R2_join" && reg0 == 20.0.0.1), action=(eth.dst = 00:00:04:01:02:03; next;)
table=5 (lr_in_arp_resolve ), priority=100 , match=(outport == "R2_join" && xxreg0 == fe80::200:4ff:fe01:203), action=(eth.dst = 00:00:04:01:02:03; next;)
table=5 (lr_in_arp_resolve ), priority=100 , match=(outport == "alice" && reg0 == 172.16.1.2), action=(eth.dst = f0:00:00:01:02:04; next;)
table=5 (lr_in_arp_resolve ), priority=0 , match=(1), action=(get_arp(outport, reg0); next;)
table=5 (lr_in_arp_resolve ), priority=0 , match=(ip4), action=(get_arp(outport, reg0); next;)
table=5 (lr_in_arp_resolve ), priority=0 , match=(ip6), action=(get_nd(outport, xxreg0); next;)
table=6 (lr_in_arp_request ), priority=100 , match=(eth.dst == 00:00:00:00:00:00), action=(arp { eth.dst = ff:ff:ff:ff:ff:ff; arp.spa = reg1; arp.tpa = reg0; arp.op = 1; output; };)
table=6 (lr_in_arp_request ), priority=0 , match=(1), action=(output;)
Datapath: "R2" (97da7972-86d2-46b2-aee7-8d479578b042) Pipeline: egress
table=0 (lr_out_snat ), priority=33 , match=(ip && ip4.src == 192.168.2.2), action=(ct_snat(30.0.0.1);)
table=0 (lr_out_snat ), priority=0 , match=(1), action=(next;)
table=1 (lr_out_delivery ), priority=100 , match=(outport == "R2_join"), action=(output;)
table=1 (lr_out_delivery ), priority=100 , match=(outport == "alice"), action=(output;)
Datapath: "alice" (d748bcc2-8b72-4e4c-870e-7f7c5558e0af) Pipeline: ingress
table=0 (ls_in_port_sec_l2 ), priority=100 , match=(eth.src[40]), action=(drop;)
table=0 (ls_in_port_sec_l2 ), priority=100 , match=(vlan.present), action=(drop;)
table=0 (ls_in_port_sec_l2 ), priority=50 , match=(inport == "alice1"), action=(next;)
table=0 (ls_in_port_sec_l2 ), priority=50 , match=(inport == "rp-alice"), action=(next;)
table=1 (ls_in_port_sec_ip ), priority=0 , match=(1), action=(next;)
table=2 (ls_in_port_sec_nd ), priority=0 , match=(1), action=(next;)
table=3 (ls_in_pre_acl ), priority=0 , match=(1), action=(next;)
table=4 (ls_in_pre_lb ), priority=0 , match=(1), action=(next;)
table=5 (ls_in_pre_stateful ), priority=100 , match=(reg0[0] == 1), action=(ct_next;)
table=5 (ls_in_pre_stateful ), priority=0 , match=(1), action=(next;)
table=6 (ls_in_acl ), priority=0 , match=(1), action=(next;)
table=7 (ls_in_lb ), priority=0 , match=(1), action=(next;)
table=8 (ls_in_stateful ), priority=100 , match=(reg0[1] == 1), action=(ct_commit(ct_label=0/1); next;)
table=8 (ls_in_stateful ), priority=100 , match=(reg0[2] == 1), action=(ct_lb;)
table=8 (ls_in_stateful ), priority=0 , match=(1), action=(next;)
table=9 (ls_in_arp_rsp ), priority=50 , match=(arp.tpa == 172.16.1.2 && arp.op == 1), action=(eth.dst = eth.src; eth.src = f0:00:00:01:02:04; arp.op = 2; /* ARP reply */ arp.tha = arp.sha; arp.sha = f0:00:00:01:02:04; arp.tpa = arp.spa; arp.spa = 172.16.1.2; outport = inport; flags.loopback = 1; output;)
table=9 (ls_in_arp_rsp ), priority=0 , match=(1), action=(next;)
table=10(ls_in_dhcp_options ), priority=0 , match=(1), action=(next;)
table=11(ls_in_dhcp_response), priority=0 , match=(1), action=(next;)
table=12(ls_in_l2_lkup ), priority=100 , match=(eth.mcast), action=(outport = "_MC_flood"; output;)
table=12(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:02:01:02:03), action=(outport = "rp-alice"; output;)
table=12(ls_in_l2_lkup ), priority=50 , match=(eth.dst == f0:00:00:01:02:04), action=(outport = "alice1"; output;)
Datapath: "alice" (d748bcc2-8b72-4e4c-870e-7f7c5558e0af) Pipeline: egress
table=0 (ls_out_pre_lb ), priority=0 , match=(1), action=(next;)
table=1 (ls_out_pre_acl ), priority=0 , match=(1), action=(next;)
table=2 (ls_out_pre_stateful), priority=100 , match=(reg0[0] == 1), action=(ct_next;)
table=2 (ls_out_pre_stateful), priority=0 , match=(1), action=(next;)
table=3 (ls_out_lb ), priority=0 , match=(1), action=(next;)
table=4 (ls_out_acl ), priority=0 , match=(1), action=(next;)
table=5 (ls_out_stateful ), priority=100 , match=(reg0[1] == 1), action=(ct_commit(ct_label=0/1); next;)
table=5 (ls_out_stateful ), priority=100 , match=(reg0[2] == 1), action=(ct_lb;)
table=5 (ls_out_stateful ), priority=0 , match=(1), action=(next;)
table=6 (ls_out_port_sec_ip ), priority=0 , match=(1), action=(next;)
table=7 (ls_out_port_sec_l2 ), priority=100 , match=(eth.mcast), action=(output;)
table=7 (ls_out_port_sec_l2 ), priority=50 , match=(outport == "alice1"), action=(output;)
table=7 (ls_out_port_sec_l2 ), priority=50 , match=(outport == "rp-alice"), action=(output;)
Datapath: "foo" (ef21448e-4a7b-440c-933a-29ba0569bbcc) Pipeline: ingress
table=0 (ls_in_port_sec_l2 ), priority=100 , match=(eth.src[40]), action=(drop;)
table=0 (ls_in_port_sec_l2 ), priority=100 , match=(vlan.present), action=(drop;)
table=0 (ls_in_port_sec_l2 ), priority=50 , match=(inport == "foo1"), action=(next;)
table=0 (ls_in_port_sec_l2 ), priority=50 , match=(inport == "rp-foo"), action=(next;)
table=1 (ls_in_port_sec_ip ), priority=0 , match=(1), action=(next;)
table=2 (ls_in_port_sec_nd ), priority=0 , match=(1), action=(next;)
table=3 (ls_in_pre_acl ), priority=0 , match=(1), action=(next;)
table=4 (ls_in_pre_lb ), priority=0 , match=(1), action=(next;)
table=5 (ls_in_pre_stateful ), priority=100 , match=(reg0[0] == 1), action=(ct_next;)
table=5 (ls_in_pre_stateful ), priority=0 , match=(1), action=(next;)
table=6 (ls_in_acl ), priority=0 , match=(1), action=(next;)
table=7 (ls_in_lb ), priority=0 , match=(1), action=(next;)
table=8 (ls_in_stateful ), priority=100 , match=(reg0[1] == 1), action=(ct_commit(ct_label=0/1); next;)
table=8 (ls_in_stateful ), priority=100 , match=(reg0[2] == 1), action=(ct_lb;)
table=8 (ls_in_stateful ), priority=0 , match=(1), action=(next;)
table=9 (ls_in_arp_rsp ), priority=50 , match=(arp.tpa == 192.168.1.2 && arp.op == 1), action=(eth.dst = eth.src; eth.src = f0:00:00:01:02:03; arp.op = 2; /* ARP reply */ arp.tha = arp.sha; arp.sha = f0:00:00:01:02:03; arp.tpa = arp.spa; arp.spa = 192.168.1.2; outport = inport; flags.loopback = 1; output;)
table=9 (ls_in_arp_rsp ), priority=0 , match=(1), action=(next;)
table=10(ls_in_dhcp_options ), priority=0 , match=(1), action=(next;)
table=11(ls_in_dhcp_response), priority=0 , match=(1), action=(next;)
table=12(ls_in_l2_lkup ), priority=100 , match=(eth.mcast), action=(outport = "_MC_flood"; output;)
table=12(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:01:01:02:03), action=(outport = "rp-foo"; output;)
table=12(ls_in_l2_lkup ), priority=50 , match=(eth.dst == f0:00:00:01:02:03), action=(outport = "foo1"; output;)
Datapath: "foo" (ef21448e-4a7b-440c-933a-29ba0569bbcc) Pipeline: egress
table=0 (ls_out_pre_lb ), priority=0 , match=(1), action=(next;)
table=1 (ls_out_pre_acl ), priority=0 , match=(1), action=(next;)
table=2 (ls_out_pre_stateful), priority=100 , match=(reg0[0] == 1), action=(ct_next;)
table=2 (ls_out_pre_stateful), priority=0 , match=(1), action=(next;)
table=3 (ls_out_lb ), priority=0 , match=(1), action=(next;)
table=4 (ls_out_acl ), priority=0 , match=(1), action=(next;)
table=5 (ls_out_stateful ), priority=100 , match=(reg0[1] == 1), action=(ct_commit(ct_label=0/1); next;)
table=5 (ls_out_stateful ), priority=100 , match=(reg0[2] == 1), action=(ct_lb;)
table=5 (ls_out_stateful ), priority=0 , match=(1), action=(next;)
table=6 (ls_out_port_sec_ip ), priority=0 , match=(1), action=(next;)
table=7 (ls_out_port_sec_l2 ), priority=100 , match=(eth.mcast), action=(output;)
table=7 (ls_out_port_sec_l2 ), priority=50 , match=(outport == "foo1"), action=(output;)
table=7 (ls_out_port_sec_l2 ), priority=50 , match=(outport == "rp-foo"), action=(output;)
vagrant@central:~$
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment