mirror of
https://github.com/openvswitch/ovs
synced 2025-08-22 09:58:01 +00:00
ovn-sbctl: Adjust formatting of lflow-list.
Adjust the field width for a couple of elements in the output of the lflow-list sub-command of ovn-sbctl. We now have a table ID of 10, so set a field width of 2 to keep output aligned. Table names have grown to a max of 19 characters, so update the field width to keep output aligned. Finally, left justify values in fields, as I find that to look a little nicer. Also update sample output in OVN-Tutorial.md to match the current state. Signed-off-by: Russell Bryant <russell@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
This commit is contained in:
parent
c09cb861c0
commit
1e25f5caef
@ -733,7 +733,7 @@ cmd_lflow_list(struct ctl_context *ctx)
|
|||||||
}
|
}
|
||||||
|
|
||||||
const char *table_name = smap_get(&lflow->external_ids, "stage-name");
|
const char *table_name = smap_get(&lflow->external_ids, "stage-name");
|
||||||
printf(" table=%" PRId64 "(%16s), priority=%5" PRId64
|
printf(" table=%-2" PRId64 "(%-19s), priority=%-5" PRId64
|
||||||
", match=(%s), action=(%s)\n",
|
", match=(%s), action=(%s)\n",
|
||||||
lflow->table_id, table_name ? table_name : "",
|
lflow->table_id, table_name ? table_name : "",
|
||||||
lflow->priority, lflow->match, lflow->actions);
|
lflow->priority, lflow->match, lflow->actions);
|
||||||
|
@ -89,32 +89,46 @@ that reflect its own local view of the network. The `ovn-sbctl` command can
|
|||||||
show the logical flows.
|
show the logical flows.
|
||||||
|
|
||||||
$ ovn-sbctl lflow-list
|
$ ovn-sbctl lflow-list
|
||||||
Datapath: d3466847-2b3a-4f17-8eb2-34f5b0727a70 Pipeline: ingress
|
Datapath: 2503dd42-14b1-414a-abbf-33e554e09ddc 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=(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=100 , match=(vlan.present), action=(drop;)
|
||||||
table=0(ls_in_port_sec_l2), priority= 50, match=(inport == "sw0-port1" && eth.src == {00:00:00:00:00:01}), action=(next;)
|
table=0 (ls_in_port_sec_l2 ), priority=50 , match=(inport == “sw0-port1” && eth.src == {00:00:00:00:00:01}), action=(next;)
|
||||||
table=0(ls_in_port_sec_l2), priority= 50, match=(inport == "sw0-port2" && eth.src == {00:00:00:00:00:02}), action=(next;)
|
table=0 (ls_in_port_sec_l2 ), priority=50 , match=(inport == “sw0-port2” && eth.src == {00:00:00:00:00:02}), action=(next;)
|
||||||
table=1(ls_in_port_sec_ip), priority= 0, match=(1), action=(next;)
|
table=1 (ls_in_port_sec_ip ), priority=0 , match=(1), action=(next;)
|
||||||
table=2(ls_in_port_sec_nd), priority= 90, match=(inport == "sw0-port1" && eth.src == 00:00:00:00:00:01 && arp.sha == 00:00:00:00:00:01), action=(next;)
|
table=2 (ls_in_port_sec_nd ), priority=90 , match=(inport == “sw0-port1” && eth.src == 00:00:00:00:00:01 && arp.sha == 00:00:00:00:00:01), action=(next;)
|
||||||
table=2(ls_in_port_sec_nd), priority= 90, match=(inport == "sw0-port1" && eth.src == 00:00:00:00:00:01 && ip6 && nd && ((nd.sll == 00:00:00:00:00:00 || nd.sll == 00:00:00:00:00:01) || ((nd.tll == 00:00:00:00:00:00 || nd.tll == 00:00:00:00:00:01)))), action=(next;)
|
table=2 (ls_in_port_sec_nd ), priority=90 , match=(inport == “sw0-port1” && eth.src == 00:00:00:00:00:01 && ip6 && nd && ((nd.sll == 00:00:00:00:00:00 || nd.sll == 00:00:00:00:00:01) || ((nd.tll == 00:00:00:00:00:00 || nd.tll == 00:00:00:00:00:01)))), action=(next;)
|
||||||
table=2(ls_in_port_sec_nd), priority= 90, match=(inport == "sw0-port2" && eth.src == 00:00:00:00:00:02 && arp.sha == 00:00:00:00:00:02), action=(next;)
|
table=2 (ls_in_port_sec_nd ), priority=90 , match=(inport == “sw0-port2” && eth.src == 00:00:00:00:00:02 && arp.sha == 00:00:00:00:00:02), action=(next;)
|
||||||
table=2(ls_in_port_sec_nd), priority= 90, match=(inport == "sw0-port2" && eth.src == 00:00:00:00:00:02 && ip6 && nd && ((nd.sll == 00:00:00:00:00:00 || nd.sll == 00:00:00:00:00:02) || ((nd.tll == 00:00:00:00:00:00 || nd.tll == 00:00:00:00:00:02)))), action=(next;)
|
table=2 (ls_in_port_sec_nd ), priority=90 , match=(inport == “sw0-port2” && eth.src == 00:00:00:00:00:02 && ip6 && nd && ((nd.sll == 00:00:00:00:00:00 || nd.sll == 00:00:00:00:00:02) || ((nd.tll == 00:00:00:00:00:00 || nd.tll == 00:00:00:00:00:02)))), action=(next;)
|
||||||
table=2(ls_in_port_sec_nd), priority= 80, match=(inport == "sw0-port1" && (arp || nd)), action=(drop;)
|
table=2 (ls_in_port_sec_nd ), priority=80 , match=(inport == “sw0-port1” && (arp || nd)), action=(drop;)
|
||||||
table=2(ls_in_port_sec_nd), priority= 80, match=(inport == "sw0-port2" && (arp || nd)), action=(drop;)
|
table=2 (ls_in_port_sec_nd ), priority=80 , match=(inport == “sw0-port2” && (arp || nd)), action=(drop;)
|
||||||
table=2(ls_in_port_sec_nd), 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=3 (ls_in_pre_acl ), priority=0 , match=(1), action=(next;)
|
||||||
table=4( ls_in_acl), priority= 0, match=(1), action=(next;)
|
table=4 (ls_in_pre_lb ), priority=0 , match=(1), action=(next;)
|
||||||
table=5(ls_in_arp_nd_rsp), priority= 0, match=(1), action=(next;)
|
table=5 (ls_in_pre_stateful ), priority=100 , match=(reg0[0] == 1), action=(ct_next;)
|
||||||
table=6( ls_in_l2_lkup), priority= 100, match=(eth.mcast), action=(outport = "_MC_flood"; output;)
|
table=5 (ls_in_pre_stateful ), priority=0 , match=(1), action=(next;)
|
||||||
table=6( ls_in_l2_lkup), priority= 50, match=(eth.dst == 00:00:00:00:00:01), action=(outport = "sw0-port1"; output;)
|
table=6 (ls_in_acl ), priority=0 , match=(1), action=(next;)
|
||||||
table=6( ls_in_l2_lkup), priority= 50, match=(eth.dst == 00:00:00:00:00:02), action=(outport = "sw0-port2"; output;)
|
table=7 (ls_in_lb ), priority=0 , match=(1), action=(next;)
|
||||||
Datapath: d3466847-2b3a-4f17-8eb2-34f5b0727a70 Pipeline: egress
|
table=8 (ls_in_stateful ), priority=100 , match=(reg0[1] == 1), action=(ct_commit; next;)
|
||||||
table=0( ls_out_pre_acl), priority= 0, match=(1), action=(next;)
|
table=8 (ls_in_stateful ), priority=100 , match=(reg0[2] == 1), action=(ct_lb;)
|
||||||
table=1( ls_out_acl), priority= 0, match=(1), action=(next;)
|
table=8 (ls_in_stateful ), priority=0 , match=(1), action=(next;)
|
||||||
table=2(ls_out_port_sec_ip), priority= 0, match=(1), action=(next;)
|
table=9 (ls_in_arp_rsp ), priority=0 , match=(1), action=(next;)
|
||||||
table=3(ls_out_port_sec_l2), priority= 100, match=(eth.mcast), action=(output;)
|
table=10(ls_in_l2_lkup ), priority=100 , match=(eth.mcast), action=(outport = “_MC_flood”; output;)
|
||||||
table=3(ls_out_port_sec_l2), priority= 50, match=(outport == "sw0-port1" && eth.dst == {00:00:00:00:00:01}), action=(output;)
|
table=10(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:01), action=(outport = “sw0-port1”; output;)
|
||||||
table=3(ls_out_port_sec_l2), priority= 50, match=(outport == "sw0-port2" && eth.dst == {00:00:00:00:00:02}), action=(output;)
|
table=10(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:02), action=(outport = “sw0-port2”; output;)
|
||||||
|
Datapath: 2503dd42-14b1-414a-abbf-33e554e09ddc 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; 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 == “sw0-port1” && eth.dst == {00:00:00:00:00:01}), action=(output;)
|
||||||
|
table=7 (ls_out_port_sec_l2 ), priority=50 , match=(outport == “sw0-port2” && eth.dst == {00:00:00:00:00:02}), action=(output;)
|
||||||
|
|
||||||
Now we can start taking a closer look at how `ovn-controller` has programmed the
|
Now we can start taking a closer look at how `ovn-controller` has programmed the
|
||||||
local switch. Before looking at the flows, we can use `ovs-ofctl` to verify the
|
local switch. Before looking at the flows, we can use `ovs-ofctl` to verify the
|
||||||
@ -294,59 +308,86 @@ Physically, all ports reside on the same chassis.
|
|||||||
OVN creates separate logical flows for each logical switch.
|
OVN creates separate logical flows for each logical switch.
|
||||||
|
|
||||||
$ ovn-sbctl lflow-list
|
$ ovn-sbctl lflow-list
|
||||||
Datapath: 5aa8be0b-8369-49e2-a878-f68872a8d211 Pipeline: ingress
|
Datapath: 7ee908c1-b0d3-4d03-acc9-42cd7ef7f27d 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=(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=100 , match=(vlan.present), action=(drop;)
|
||||||
table=0(ls_in_port_sec_l2), priority= 50, match=(inport == "sw1-port1" && eth.src == {00:00:00:00:00:03}), action=(next;)
|
table=0 (ls_in_port_sec_l2 ), priority=50 , match=(inport == "sw1-port1" && eth.src == {00:00:00:00:00:03}), action=(next;)
|
||||||
table=0(ls_in_port_sec_l2), priority= 50, match=(inport == "sw1-port2" && eth.src == {00:00:00:00:00:04}), action=(next;)
|
table=0 (ls_in_port_sec_l2 ), priority=50 , match=(inport == "sw1-port2" && eth.src == {00:00:00:00:00:04}), action=(next;)
|
||||||
table=1(ls_in_port_sec_ip), priority= 0, match=(1), action=(next;)
|
table=1 (ls_in_port_sec_ip ), priority=0 , match=(1), action=(next;)
|
||||||
table=2(ls_in_port_sec_nd), priority= 90, match=(inport == "sw1-port1" && eth.src == 00:00:00:00:00:03 && arp.sha == 00:00:00:00:00:03), action=(next;)
|
table=2 (ls_in_port_sec_nd ), priority=90 , match=(inport == "sw1-port1" && eth.src == 00:00:00:00:00:03 && arp.sha == 00:00:00:00:00:03), action=(next;)
|
||||||
table=2(ls_in_port_sec_nd), priority= 90, match=(inport == "sw1-port1" && eth.src == 00:00:00:00:00:03 && ip6 && nd && ((nd.sll == 00:00:00:00:00:00 || nd.sll == 00:00:00:00:00:03) || ((nd.tll == 00:00:00:00:00:00 || nd.tll == 00:00:00:00:00:03)))), action=(next;)
|
table=2 (ls_in_port_sec_nd ), priority=90 , match=(inport == "sw1-port1" && eth.src == 00:00:00:00:00:03 && ip6 && nd && ((nd.sll == 00:00:00:00:00:00 || nd.sll == 00:00:00:00:00:03) || ((nd.tll == 00:00:00:00:00:00 || nd.tll == 00:00:00:00:00:03)))), action=(next;)
|
||||||
table=2(ls_in_port_sec_nd), priority= 90, match=(inport == "sw1-port2" && eth.src == 00:00:00:00:00:04 && arp.sha == 00:00:00:00:00:04), action=(next;)
|
table=2 (ls_in_port_sec_nd ), priority=90 , match=(inport == "sw1-port2" && eth.src == 00:00:00:00:00:04 && arp.sha == 00:00:00:00:00:04), action=(next;)
|
||||||
table=2(ls_in_port_sec_nd), priority= 90, match=(inport == "sw1-port2" && eth.src == 00:00:00:00:00:04 && ip6 && nd && ((nd.sll == 00:00:00:00:00:00 || nd.sll == 00:00:00:00:00:04) || ((nd.tll == 00:00:00:00:00:00 || nd.tll == 00:00:00:00:00:04)))), action=(next;)
|
table=2 (ls_in_port_sec_nd ), priority=90 , match=(inport == "sw1-port2" && eth.src == 00:00:00:00:00:04 && ip6 && nd && ((nd.sll == 00:00:00:00:00:00 || nd.sll == 00:00:00:00:00:04) || ((nd.tll == 00:00:00:00:00:00 || nd.tll == 00:00:00:00:00:04)))), action=(next;)
|
||||||
table=2(ls_in_port_sec_nd), priority= 80, match=(inport == "sw1-port1" && (arp || nd)), action=(drop;)
|
table=2 (ls_in_port_sec_nd ), priority=80 , match=(inport == "sw1-port1" && (arp || nd)), action=(drop;)
|
||||||
table=2(ls_in_port_sec_nd), priority= 80, match=(inport == "sw1-port2" && (arp || nd)), action=(drop;)
|
table=2 (ls_in_port_sec_nd ), priority=80 , match=(inport == "sw1-port2" && (arp || nd)), action=(drop;)
|
||||||
table=2(ls_in_port_sec_nd), 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=3 (ls_in_pre_acl ), priority=0 , match=(1), action=(next;)
|
||||||
table=4( ls_in_acl), priority= 0, match=(1), action=(next;)
|
table=4 (ls_in_pre_lb ), priority=0 , match=(1), action=(next;)
|
||||||
table=5(ls_in_arp_nd_rsp), priority= 0, match=(1), action=(next;)
|
table=5 (ls_in_pre_stateful ), priority=100 , match=(reg0[0] == 1), action=(ct_next;)
|
||||||
table=6( ls_in_l2_lkup), priority= 100, match=(eth.mcast), action=(outport = "_MC_flood"; output;)
|
table=5 (ls_in_pre_stateful ), priority=0 , match=(1), action=(next;)
|
||||||
table=6( ls_in_l2_lkup), priority= 50, match=(eth.dst == 00:00:00:00:00:03), action=(outport = "sw1-port1"; output;)
|
table=6 (ls_in_acl ), priority=0 , match=(1), action=(next;)
|
||||||
table=6( ls_in_l2_lkup), priority= 50, match=(eth.dst == 00:00:00:00:00:04), action=(outport = "sw1-port2"; output;)
|
table=7 (ls_in_lb ), priority=0 , match=(1), action=(next;)
|
||||||
Datapath: 5aa8be0b-8369-49e2-a878-f68872a8d211 Pipeline: egress
|
table=8 (ls_in_stateful ), priority=100 , match=(reg0[1] == 1), action=(ct_commit; next;)
|
||||||
table=0( ls_out_pre_acl), priority= 0, match=(1), action=(next;)
|
table=8 (ls_in_stateful ), priority=100 , match=(reg0[2] == 1), action=(ct_lb;)
|
||||||
table=1( ls_out_acl), priority= 0, match=(1), action=(next;)
|
table=8 (ls_in_stateful ), priority=0 , match=(1), action=(next;)
|
||||||
table=2(ls_out_port_sec_ip), priority= 0, match=(1), action=(next;)
|
table=9 (ls_in_arp_rsp ), priority=0 , match=(1), action=(next;)
|
||||||
table=3(ls_out_port_sec_l2), priority= 100, match=(eth.mcast), action=(output;)
|
table=10(ls_in_l2_lkup ), priority=100 , match=(eth.mcast), action=(outport = "_MC_flood"; output;)
|
||||||
table=3(ls_out_port_sec_l2), priority= 50, match=(outport == "sw1-port1" && eth.dst == {00:00:00:00:00:03}), action=(output;)
|
table=10(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:03), action=(outport = "sw1-port1"; output;)
|
||||||
table=3(ls_out_port_sec_l2), priority= 50, match=(outport == "sw1-port2" && eth.dst == {00:00:00:00:00:04}), action=(output;)
|
table=10(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:04), action=(outport = "sw1-port2"; output;)
|
||||||
Datapath: 631fb3c9-b0a3-4e56-bac3-1717c8cbb826 Pipeline: ingress
|
Datapath: 7ee908c1-b0d3-4d03-acc9-42cd7ef7f27d Pipeline: egress
|
||||||
table=0(ls_in_port_sec_l2), priority= 100, match=(eth.src[40]), action=(drop;)
|
table=0 (ls_out_pre_lb ), priority=0 , match=(1), action=(next;)
|
||||||
table=0(ls_in_port_sec_l2), priority= 100, match=(vlan.present), action=(drop;)
|
table=1 (ls_out_pre_acl ), priority=0 , match=(1), action=(next;)
|
||||||
table=0(ls_in_port_sec_l2), priority= 50, match=(inport == "sw0-port1" && eth.src == {00:00:00:00:00:01}), action=(next;)
|
table=2 (ls_out_pre_stateful), priority=100 , match=(reg0[0] == 1), action=(ct_next;)
|
||||||
table=0(ls_in_port_sec_l2), priority= 50, match=(inport == "sw0-port2" && eth.src == {00:00:00:00:00:02}), action=(next;)
|
table=2 (ls_out_pre_stateful), priority=0 , match=(1), action=(next;)
|
||||||
table=1(ls_in_port_sec_ip), priority= 0, match=(1), action=(next;)
|
table=3 (ls_out_lb ), priority=0 , match=(1), action=(next;)
|
||||||
table=2(ls_in_port_sec_nd), priority= 90, match=(inport == "sw0-port1" && eth.src == 00:00:00:00:00:01 && arp.sha == 00:00:00:00:00:01), action=(next;)
|
table=4 (ls_out_acl ), priority=0 , match=(1), action=(next;)
|
||||||
table=2(ls_in_port_sec_nd), priority= 90, match=(inport == "sw0-port1" && eth.src == 00:00:00:00:00:01 && ip6 && nd && ((nd.sll == 00:00:00:00:00:00 || nd.sll == 00:00:00:00:00:01) || ((nd.tll == 00:00:00:00:00:00 || nd.tll == 00:00:00:00:00:01)))), action=(next;)
|
table=5 (ls_out_stateful ), priority=100 , match=(reg0[1] == 1), action=(ct_commit; next;)
|
||||||
table=2(ls_in_port_sec_nd), priority= 90, match=(inport == "sw0-port2" && eth.src == 00:00:00:00:00:02 && arp.sha == 00:00:00:00:00:02), action=(next;)
|
table=5 (ls_out_stateful ), priority=100 , match=(reg0[2] == 1), action=(ct_lb;)
|
||||||
table=2(ls_in_port_sec_nd), priority= 90, match=(inport == "sw0-port2" && eth.src == 00:00:00:00:00:02 && ip6 && nd && ((nd.sll == 00:00:00:00:00:00 || nd.sll == 00:00:00:00:00:02) || ((nd.tll == 00:00:00:00:00:00 || nd.tll == 00:00:00:00:00:02)))), action=(next;)
|
table=5 (ls_out_stateful ), priority=0 , match=(1), action=(next;)
|
||||||
table=2(ls_in_port_sec_nd), priority= 80, match=(inport == "sw0-port1" && (arp || nd)), action=(drop;)
|
table=6 (ls_out_port_sec_ip ), priority=0 , match=(1), action=(next;)
|
||||||
table=2(ls_in_port_sec_nd), priority= 80, match=(inport == "sw0-port2" && (arp || nd)), action=(drop;)
|
table=7 (ls_out_port_sec_l2 ), priority=100 , match=(eth.mcast), action=(output;)
|
||||||
table=2(ls_in_port_sec_nd), priority= 0, match=(1), action=(next;)
|
table=7 (ls_out_port_sec_l2 ), priority=50 , match=(outport == "sw1-port1" && eth.dst == {00:00:00:00:00:03}), action=(output;)
|
||||||
table=3( ls_in_pre_acl), priority= 0, match=(1), action=(next;)
|
table=7 (ls_out_port_sec_l2 ), priority=50 , match=(outport == "sw1-port2" && eth.dst == {00:00:00:00:00:04}), action=(output;)
|
||||||
table=4( ls_in_acl), priority= 0, match=(1), action=(next;)
|
Datapath: 9ea0c8f9-4f82-4be3-a6c7-6e6f9c2de583 Pipeline: ingress
|
||||||
table=5(ls_in_arp_nd_rsp), priority= 0, match=(1), action=(next;)
|
table=0 (ls_in_port_sec_l2 ), priority=100 , match=(eth.src[40]), action=(drop;)
|
||||||
table=6( ls_in_l2_lkup), priority= 100, match=(eth.mcast), action=(outport = "_MC_flood"; output;)
|
table=0 (ls_in_port_sec_l2 ), priority=100 , match=(vlan.present), action=(drop;)
|
||||||
table=6( ls_in_l2_lkup), priority= 50, match=(eth.dst == 00:00:00:00:00:01), action=(outport = "sw0-port1"; output;)
|
table=0 (ls_in_port_sec_l2 ), priority=50 , match=(inport == "sw0-port1" && eth.src == {00:00:00:00:00:01}), action=(next;)
|
||||||
table=6( ls_in_l2_lkup), priority= 50, match=(eth.dst == 00:00:00:00:00:02), action=(outport = "sw0-port2"; output;)
|
table=0 (ls_in_port_sec_l2 ), priority=50 , match=(inport == "sw0-port2" && eth.src == {00:00:00:00:00:02}), action=(next;)
|
||||||
Datapath: 631fb3c9-b0a3-4e56-bac3-1717c8cbb826 Pipeline: egress
|
table=1 (ls_in_port_sec_ip ), priority=0 , match=(1), action=(next;)
|
||||||
table=0( ls_out_pre_acl), priority= 0, match=(1), action=(next;)
|
table=2 (ls_in_port_sec_nd ), priority=90 , match=(inport == "sw0-port1" && eth.src == 00:00:00:00:00:01 && arp.sha == 00:00:00:00:00:01), action=(next;)
|
||||||
table=1( ls_out_acl), priority= 0, match=(1), action=(next;)
|
table=2 (ls_in_port_sec_nd ), priority=90 , match=(inport == "sw0-port1" && eth.src == 00:00:00:00:00:01 && ip6 && nd && ((nd.sll == 00:00:00:00:00:00 || nd.sll == 00:00:00:00:00:01) || ((nd.tll == 00:00:00:00:00:00 || nd.tll == 00:00:00:00:00:01)))), action=(next;)
|
||||||
table=2(ls_out_port_sec_ip), priority= 0, match=(1), action=(next;)
|
table=2 (ls_in_port_sec_nd ), priority=90 , match=(inport == "sw0-port2" && eth.src == 00:00:00:00:00:02 && arp.sha == 00:00:00:00:00:02), action=(next;)
|
||||||
table=3(ls_out_port_sec_l2), priority= 100, match=(eth.mcast), action=(output;)
|
table=2 (ls_in_port_sec_nd ), priority=90 , match=(inport == "sw0-port2" && eth.src == 00:00:00:00:00:02 && ip6 && nd && ((nd.sll == 00:00:00:00:00:00 || nd.sll == 00:00:00:00:00:02) || ((nd.tll == 00:00:00:00:00:00 || nd.tll == 00:00:00:00:00:02)))), action=(next;)
|
||||||
table=3(ls_out_port_sec_l2), priority= 50, match=(outport == "sw0-port1" && eth.dst == {00:00:00:00:00:01}), action=(output;)
|
table=2 (ls_in_port_sec_nd ), priority=80 , match=(inport == "sw0-port1" && (arp || nd)), action=(drop;)
|
||||||
table=3(ls_out_port_sec_l2), priority= 50, match=(outport == "sw0-port2" && eth.dst == {00:00:00:00:00:02}), action=(output;)
|
table=2 (ls_in_port_sec_nd ), priority=80 , match=(inport == "sw0-port2" && (arp || nd)), action=(drop;)
|
||||||
|
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; 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_l2_lkup ), priority=100 , match=(eth.mcast), action=(outport = "_MC_flood"; output;)
|
||||||
|
table=10(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:01), action=(outport = "sw0-port1"; output;)
|
||||||
|
table=10(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:02), action=(outport = "sw0-port2"; output;)
|
||||||
|
Datapath: 9ea0c8f9-4f82-4be3-a6c7-6e6f9c2de583 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; 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 == "sw0-port1" && eth.dst == {00:00:00:00:00:01}), action=(output;)
|
||||||
|
table=7 (ls_out_port_sec_l2 ), priority=50 , match=(outport == "sw0-port2" && eth.dst == {00:00:00:00:00:02}), action=(output;)
|
||||||
|
|
||||||
In this setup, `sw0-port1` and `sw0-port2` can send packets to each other, but
|
In this setup, `sw0-port1` and `sw0-port2` can send packets to each other, but
|
||||||
not to either of the ports on `sw1`. This first trace shows a packet from
|
not to either of the ports on `sw1`. This first trace shows a packet from
|
||||||
|
Loading…
x
Reference in New Issue
Block a user