A self-service (project) network includes only virtual components, thus enabling projects to manage them without additional configuration of the underlying physical network. The OVN mechanism driver supports Geneve and VLAN network types with a preference toward Geneve. Projects can choose to isolate self-service networks, connect two or more together via routers, or connect them to provider networks via routers with appropriate capabilities. Similar to provider networks, self-service networks can use arbitrary names.
Note
Similar to provider networks, self-service VLAN networks map to a unique bridge on each compute node that supports launching instances on those networks. Self-service VLAN networks also require several commands at the host and OVS levels. The following example assumes use of Geneve self-service networks.
Creating a self-service network involves several commands at the Networking service level that yield a series of operations at the OVN level to create the virtual network components. The following example creates a Geneve self-service network and binds a subnet to it. The subnet uses DHCP to distribute IP addresses to instances.
On the controller node, source the credentials for a regular (non-privileged) project. The following example uses the demo project.
On the controller node, create a self-service network in the Networking service.
$ openstack network create selfservice
+-------------------------+--------------------------------------+
| Field | Value |
+-------------------------+--------------------------------------+
| admin_state_up | UP |
| availability_zone_hints | |
| availability_zones | |
| created_at | 2016-06-09T15:42:41 |
| description | |
| id | f49791f7-e653-4b43-99b1-0f5557c313e4 |
| ipv4_address_scope | None |
| ipv6_address_scope | None |
| mtu | 1442 |
| name | selfservice |
| port_security_enabled | True |
| project_id | 1ef26f483b9d44e8ac0c97388d6cb609 |
| router_external | Internal |
| shared | False |
| status | ACTIVE |
| subnets | |
| tags | [] |
| updated_at | 2016-06-09T15:42:41 |
+-------------------------+--------------------------------------+
The OVN mechanism driver and OVN perform the following operations during creation of a self-service network.
The mechanism driver translates the network into a logical switch in the OVN northbound database.
uuid : 0ab40684-7cf8-4d6c-ae8b-9d9143762d37
acls : []
external_ids : {"neutron:network_name"="selfservice"}
name : "neutron-d5aadceb-d8d6-41c8-9252-c5e0fe6c26a5"
ports : []
The OVN northbound service translates this object into new datapath bindings and logical flows in the OVN southbound database.
Datapath bindings
_uuid : 0b214af6-8910-489c-926a-fd0ed16a8251
external_ids : {logical-switch="15e2c80b-1461-4003-9869-80416cd97de5"}
tunnel_key : 5
Logical flows
_uuid : bba863e2-fbb6-4a55-aa95-439d9eb8aea4
actions : "drop;"
external_ids : {stage-name="ls_in_port_sec_l2"}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "eth.src[40]"
pipeline : ingress
priority : 100
table_id : 0
_uuid : dae7efd9-1768-4fdb-b172-b45c704c8da0
actions : "drop;"
external_ids : {stage-name="ls_in_port_sec_l2"}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : vlan.present
pipeline : ingress
priority : 100
table_id : 0
_uuid : c4975530-ff29-4f52-a594-a7176eb55e57
actions : "next;"
external_ids : {stage-name=ls_in_port_sec_ip}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "1"
pipeline : ingress
priority : 0
table_id : 1
_uuid : e7fe8c90-8db9-4b40-a7fb-b72e67f802a4
actions : "next;"
external_ids : {stage-name=ls_in_port_sec_nd}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "1"
pipeline : ingress
priority : 0
table_id : 2
_uuid : 7ff31ad7-c926-424e-8f76-9ac62a0e399c
actions : "next;"
external_ids : {stage-name=ls_in_pre_acl}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "1"
pipeline : ingress
priority : 0
table_id : 3
_uuid : d3693622-e3d2-4767-a46a-92c717a00b13
actions : "next;"
external_ids : {stage-name=ls_in_pre_lb}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "1"
pipeline : ingress
priority : 0
table_id : 4
_uuid : afa7f64f-f924-4e31-adbf-376f40563032
actions : "ct_next;"
external_ids : {stage-name=ls_in_pre_stateful}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "reg0[0] == 1"
pipeline : ingress
priority : 100
table_id : 5
_uuid : b0e049cd-b82a-4b26-b301-17fdc4304f60
actions : "next;"
external_ids : {stage-name=ls_in_pre_stateful}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "1"
pipeline : ingress
priority : 0
table_id : 5
_uuid : 97f4f182-cd24-4f6d-a027-f11adf633632
actions : "next;"
external_ids : {stage-name=ls_in_acl}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "1"
pipeline : ingress
priority : 0
table_id : 6
_uuid : 9a654c86-34f7-43d2-88c1-850f85d761d2
actions : "next;"
external_ids : {stage-name=ls_in_lb}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "1"
pipeline : ingress
priority : 0
table_id : 7
_uuid : a20335bd-f2f2-486e-8f7c-27d6f6505142
actions : "ct_lb;"
external_ids : {stage-name=ls_in_stateful}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "reg0[2] == 1"
pipeline : ingress
priority : 100
table_id : 8
_uuid : fb992915-615f-4b1d-8ffa-76e1356bee7d
actions : "ct_commit; next;"
external_ids : {stage-name=ls_in_stateful}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "reg0[1] == 1"
pipeline : ingress
priority : 100
table_id : 8
_uuid : fe3ae292-3ebe-4a67-8aaa-ef0328319a6e
actions : "next;"
external_ids : {stage-name=ls_in_stateful}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "1"
pipeline : ingress
priority : 0
table_id : 8
_uuid : 633ff36c-dc48-4934-9e31-3ecd471a1b52
actions : "next;"
external_ids : {stage-name=ls_in_arp_rsp}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "1"
pipeline : ingress
priority : 0
table_id : 9
_uuid : 3717244f-8231-4711-8197-5a3930af50ed
actions : "outport = \"_MC_flood\"; output;"
external_ids : {stage-name="ls_in_l2_lkup"}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : eth.mcast
pipeline : ingress
priority : 100
table_id : 10
_uuid : 33e92020-5f32-434d-b1de-ff322af28e6f
actions : "next;"
external_ids : {stage-name=ls_out_pre_lb}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "1"
pipeline : egress
priority : 0
table_id : 0
_uuid : ec7c9ebc-4452-4c88-a34a-90a75093c509
actions : "next;"
external_ids : {stage-name=ls_out_pre_acl}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "1"
pipeline : egress
priority : 0
table_id : 1
_uuid : e6791156-be49-4241-924e-4e3ec2390c26
actions : "ct_next;"
external_ids : {stage-name=ls_out_pre_stateful}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "reg0[0] == 1"
pipeline : egress
priority : 100
table_id : 2
_uuid : 0abc5d0f-97b5-40e2-90ea-dcac5f8483a5
actions : "next;"
external_ids : {stage-name=ls_out_pre_stateful}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "1"
pipeline : egress
priority : 0
table_id : 2
_uuid : b1b3edab-be46-4e1d-84be-03425ce16d6a
actions : "next;"
external_ids : {stage-name=ls_out_lb}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "1"
pipeline : egress
priority : 0
table_id : 3
_uuid : 1f5cb26b-fd32-4feb-82ae-5d34ed465cd6
actions : "next;"
external_ids : {stage-name=ls_out_acl}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "1"
pipeline : egress
priority : 0
table_id : 4
_uuid : 65948473-2b9d-4d19-98c7-479f61d7a39e
actions : "ct_commit; next;"
external_ids : {stage-name=ls_out_stateful}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "reg0[1] == 1"
pipeline : egress
priority : 100
table_id : 5
_uuid : ae5ea293-9c10-4eac-b455-e4f6f5a75e02
actions : "ct_lb;"
external_ids : {stage-name=ls_out_stateful}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "reg0[2] == 1"
pipeline : egress
priority : 100
table_id : 5
_uuid : 796847f9-94ac-4450-a8c0-57c1a3cd78ca
actions : "next;"
external_ids : {stage-name=ls_out_stateful}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "1"
pipeline : egress
priority : 0
table_id : 5
_uuid : ee5d923a-fea7-411e-9e3a-59436351e649
actions : "next;"
external_ids : {stage-name=ls_out_port_sec_ip}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "1"
pipeline : egress
priority : 0
table_id : 6
_uuid : 133af42e-8bf8-49e4-80ea-0005e798cdb0
actions : "output;"
external_ids : {stage-name="ls_out_port_sec_l2"}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : eth.mcast
pipeline : egress
priority : 100
table_id : 7
Note
These actions do not create flows on any nodes.
A self-service network requires at least one subnet. In most cases, the environment provides suitable values for IP address allocation for instances, default gateway IP address, and metadata such as name resolution.
On the controller node, create a subnet bound to the self-service network selfservice.
$ openstack subnet create --network selfservice --subnet-range 192.168.1.0/24 selfservice-v4
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| allocation_pools | 192.168.1.2-192.168.1.254 |
| cidr | 192.168.1.0/24 |
| created_at | 2016-06-16 00:19:08+00:00 |
| description | |
| dns_nameservers | |
| enable_dhcp | True |
| gateway_ip | 192.168.1.1 |
| headers | |
| host_routes | |
| id | 8f027f25-0112-45b9-a1b9-2f8097c57219 |
| ip_version | 4 |
| ipv6_address_mode | None |
| ipv6_ra_mode | None |
| name | selfservice-v4 |
| network_id | 8ed4e43b-63ef-41ed-808b-b59f1120aec0 |
| project_id | b1ebf33664df402693f729090cfab861 |
| subnetpool_id | None |
| updated_at | 2016-06-16 00:19:08+00:00 |
+-------------------+--------------------------------------+
If using DHCP to manage instance IP addresses, adding a subnet causes a series of operations in the Networking service and OVN.
The OVN mechanism driver and OVN perform the following operations during creation of a subnet on a self-service network.
If the subnet uses DHCP for IP address management, create logical ports ports for each DHCP agent serving the subnet and bind them to the logical switch. In this example, the subnet contains two DHCP agents.
_uuid : 1ed7c28b-dc69-42b8-bed6-46477bb8b539
addresses : ["fa:16:3e:94:db:5e 192.168.1.2"]
enabled : true
external_ids : {"neutron:port_name"=""}
name : "0cfbbdca-ff58-4cf8-a7d3-77daaebe3056"
options : {}
parent_name : []
port_security : []
tag : []
type : ""
up : true
_uuid : ae10a5e0-db25-4108-b06a-d2d5c127d9c4
addresses : ["fa:16:3e:90:bd:f1 192.168.1.3"]
enabled : true
external_ids : {"neutron:port_name"=""}
name : "74930ace-d939-4bca-b577-fccba24c3fca"
options : {}
parent_name : []
port_security : []
tag : []
type : ""
up : true
_uuid : 0ab40684-7cf8-4d6c-ae8b-9d9143762d37
acls : []
external_ids : {"neutron:network_name"="selfservice"}
name : "neutron-d5aadceb-d8d6-41c8-9252-c5e0fe6c26a5"
ports : [1ed7c28b-dc69-42b8-bed6-46477bb8b539,
ae10a5e0-db25-4108-b06a-d2d5c127d9c4]
The OVN northbound service creates port bindings for these logical ports and adds them to the appropriate multicast group.
Port bindings
_uuid : 3e463ca0-951c-46fd-b6cf-05392fa3aa1f
chassis : 6a9d0619-8818-41e6-abef-2f3d9a597c03
datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
logical_port : "a203b410-97c1-4e4a-b0c3-558a10841c16"
mac : ["fa:16:3e:a1:dc:58 192.168.1.3"]
options : {}
parent_port : []
tag : []
tunnel_key : 2
type : ""
_uuid : fa7b294d-2a62-45ae-8de3-a41c002de6de
chassis : d63e8ae8-caf3-4a6b-9840-5c3a57febcac
datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
logical_port : "39b23721-46f4-4747-af54-7e12f22b3397"
mac : ["fa:16:3e:1a:b4:23 192.168.1.2"]
options : {}
parent_port : []
tag : []
tunnel_key : 1
type : ""
Multicast groups
_uuid : c08d0102-c414-4a47-98d9-dd3fa9f9901c
datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
name : _MC_flood
ports : [3e463ca0-951c-46fd-b6cf-05392fa3aa1f,
fa7b294d-2a62-45ae-8de3-a41c002de6de]
tunnel_key : 65535
The OVN northbound service translates the logical ports into logical flows in the OVN southbound database.
_uuid : 582bec5f-0119-468b-a22b-2af413097f61
actions : "next;"
external_ids : {stage-name="ls_in_port_sec_l2"}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "inport == \"39b23721-46f4-4747-af54-7e12f22b3397\""
pipeline : ingress
priority : 50
table_id : 0
_uuid : fa7f2580-8276-4c31-a07a-9e9a7bd5e905
actions : "next;"
external_ids : {stage-name="ls_in_port_sec_l2"}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "inport == \"a203b410-97c1-4e4a-b0c3-558a10841c16\""
pipeline : ingress
priority : 50
table_id : 0
_uuid : 9f6fbc40-2fc8-45a1-8cf6-02b47ee33617
actions : "eth.dst = eth.src; eth.src = fa:16:3e:1a:b4:23; arp.op = 2; /* ARP reply \*/ arp.tha = arp.sha; arp.sha = fa:16:3e:1a:b4:23; arp.tpa = arp.spa; arp.spa = 192.168.1.2; outport = inport; inport = \"\"; /* Allow sending out inport. \*/ output;"
external_ids : {stage-name=ls_in_arp_rsp}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "arp.tpa == 192.168.1.2 && arp.op == 1"
pipeline : ingress
priority : 50
table_id : 9
_uuid : a4f323f9-8c9d-4b4f-ac15-7b27c49911de
actions : "eth.dst = eth.src; eth.src = fa:16:3e:a1:dc:58; arp.op = 2; /* ARP reply \*/ arp.tha = arp.sha; arp.sha = fa:16:3e:a1:dc:58; arp.tpa = arp.spa; arp.spa = 192.168.1.3; outport = inport; inport = \"\"; /* Allow sending out inport. \*/ output;"
external_ids : {stage-name=ls_in_arp_rsp}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "arp.tpa == 192.168.1.3 && arp.op == 1"
pipeline : ingress
priority : 50
table_id : 9
_uuid : e5a74712-de54-4c13-8f88-cce592186f40
actions : "outport = \"a203b410-97c1-4e4a-b0c3-558a10841c16\"; output;"
external_ids : {stage-name="ls_in_l2_lkup"}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "eth.dst == fa:16:3e:a1:dc:58"
pipeline : ingress
priority : 50
table_id : 10
_uuid : c8ec0f35-7a5d-4835-bb3d-14f4103a28e4
actions : "outport = \"39b23721-46f4-4747-af54-7e12f22b3397\"; output;"
external_ids : {stage-name="ls_in_l2_lkup"}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "eth.dst == fa:16:3e:1a:b4:23"
pipeline : ingress
priority : 50
table_id : 10
_uuid : 6879b08e-3cf6-4f6f-a3bf-94cf0ef47dc8
actions : "output;"
external_ids : {stage-name="ls_out_port_sec_l2"}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "outport == \"39b23721-46f4-4747-af54-7e12f22b3397\""
pipeline : egress
priority : 50
table_id : 7
_uuid : 90f4f1f5-3672-4eeb-94df-7eee063ed57e
actions : "output;"
external_ids : {stage-name="ls_out_port_sec_l2"}
logical_datapath : 0b214af6-8910-489c-926a-fd0ed16a8251
match : "outport == \"a203b410-97c1-4e4a-b0c3-558a10841c16\""
pipeline : egress
priority : 50
table_id : 7
For each compute node without a DHCP agent on the subnet:
The OVN controller service translates these objects into flows on the integration bridge br-int.
# ovs-ofctl dump-flows br-int
cookie=0x0, duration=9.054s, table=32, n_packets=0, n_bytes=0,
idle_age=9, priority=100,reg7=0xffff,metadata=0x5
actions=load:0x5->NXM_NX_TUN_ID[0..23],
set_field:0xffff/0xffffffff->tun_metadata0,
move:NXM_NX_REG6[0..14]->NXM_NX_TUN_METADATA0[16..30],
output:4,output:3
For each compute node with a DHCP agent on the subnet:
Creation of a DHCP network namespace adds a virtual switch ports that connects the DHCP agent with the dnsmasq process to the integration bridge.
# ovs-ofctl show br-int
OFPT_FEATURES_REPLY (xid=0x2): dpid:000022024a1dc045
n_tables:254, n_buffers:256
capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
actions: output enqueue set_vlan_vid set_vlan_pcp strip_vlan mod_dl_src mod_dl_dst mod_nw_src mod_nw_dst mod_nw_tos mod_tp_src mod_tp_dst
9(tap39b23721-46): addr:00:00:00:00:b0:5d
config: PORT_DOWN
state: LINK_DOWN
speed: 0 Mbps now, 0 Mbps max
The OVN controller service translates these objects into flows on the integration bridge.
cookie=0x0, duration=21.074s, table=0, n_packets=8, n_bytes=648,
idle_age=11, priority=100,in_port=9
actions=load:0x2->NXM_NX_REG5[],load:0x5->OXM_OF_METADATA[],
load:0x1->NXM_NX_REG6[],resubmit(,16)
cookie=0x0, duration=21.076s, table=16, n_packets=0, n_bytes=0,
idle_age=21, priority=100,metadata=0x5,
dl_src=01:00:00:00:00:00/01:00:00:00:00:00
actions=drop
cookie=0x0, duration=21.075s, table=16, n_packets=0, n_bytes=0,
idle_age=21, priority=100,metadata=0x5,vlan_tci=0x1000/0x1000
actions=drop
cookie=0x0, duration=21.076s, table=16, n_packets=0, n_bytes=0,
idle_age=21, priority=50,reg6=0x2,metadata=0x5
actions=resubmit(,17)
cookie=0x0, duration=21.075s, table=16, n_packets=8, n_bytes=648,
idle_age=11, priority=50,reg6=0x1,metadata=0x5
actions=resubmit(,17)
cookie=0x0, duration=21.075s, table=17, n_packets=8, n_bytes=648,
idle_age=11, priority=0,metadata=0x5
actions=resubmit(,18)
cookie=0x0, duration=21.076s, table=18, n_packets=8, n_bytes=648,
idle_age=11, priority=0,metadata=0x5
actions=resubmit(,19)
cookie=0x0, duration=21.076s, table=19, n_packets=8, n_bytes=648,
idle_age=11, priority=0,metadata=0x5
actions=resubmit(,20)
cookie=0x0, duration=21.075s, table=20, n_packets=8, n_bytes=648,
idle_age=11, priority=0,metadata=0x5
actions=resubmit(,21)
cookie=0x0, duration=5.398s, table=21, n_packets=0, n_bytes=0,
idle_age=5, priority=100,ipv6,reg0=0x1/0x1,metadata=0x5
actions=ct(table=22,zone=NXM_NX_REG5[0..15])
cookie=0x0, duration=5.398s, table=21, n_packets=0, n_bytes=0,
idle_age=5, priority=100,ip,reg0=0x1/0x1,metadata=0x5
actions=ct(table=22,zone=NXM_NX_REG5[0..15])
cookie=0x0, duration=5.398s, table=22, n_packets=6, n_bytes=508,
idle_age=2, priority=0,metadata=0x5
actions=resubmit(,23)
cookie=0x0, duration=5.398s, table=23, n_packets=6, n_bytes=508,
idle_age=2, priority=0,metadata=0x5
actions=resubmit(,24)
cookie=0x0, duration=5.398s, table=24, n_packets=0, n_bytes=0,
idle_age=5, priority=100,ipv6,reg0=0x4/0x4,metadata=0x5
actions=ct(table=25,zone=NXM_NX_REG5[0..15],nat)
cookie=0x0, duration=5.398s, table=24, n_packets=0, n_bytes=0,
idle_age=5, priority=100,ip,reg0=0x4/0x4,metadata=0x5
actions=ct(table=25,zone=NXM_NX_REG5[0..15],nat)
cookie=0x0, duration=5.398s, table=24, n_packets=0, n_bytes=0,
idle_age=5, priority=100,ipv6,reg0=0x2/0x2,metadata=0x5
actions=ct(commit,zone=NXM_NX_REG5[0..15]),resubmit(,25)
cookie=0x0, duration=5.398s, table=24, n_packets=0, n_bytes=0,
idle_age=5, priority=100,ip,reg0=0x2/0x2,metadata=0x5
actions=ct(commit,zone=NXM_NX_REG5[0..15]),resubmit(,25)
cookie=0x0, duration=5.399s, table=24, n_packets=6, n_bytes=508,
idle_age=2, priority=0,metadata=0x5 actions=resubmit(,25)
cookie=0x0, duration=5.398s, table=25, n_packets=0, n_bytes=0,
idle_age=5, priority=50,arp,metadata=0x5,
arp_tpa=192.168.1.2,arp_op=1
actions=move:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],
mod_dl_src:fa:16:3e:82:8b:0e,load:0x2->NXM_OF_ARP_OP[],
move:NXM_NX_ARP_SHA[]->NXM_NX_ARP_THA[],
load:0xfa163e828b0e->NXM_NX_ARP_SHA[],
move:NXM_OF_ARP_SPA[]->NXM_OF_ARP_TPA[],
load:0xc0a80102->NXM_OF_ARP_SPA[],
move:NXM_NX_REG6[]->NXM_NX_REG7[],load:0->NXM_NX_REG6[],
load:0->NXM_OF_IN_PORT[],resubmit(,32)
cookie=0x0, duration=5.378s, table=25, n_packets=0, n_bytes=0,
idle_age=5, priority=50,arp,metadata=0x5,arp_tpa=192.168.1.3,
arp_op=1
actions=move:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],
mod_dl_src:fa:16:3e:d5:00:02,load:0x2->NXM_OF_ARP_OP[],
move:NXM_NX_ARP_SHA[]->NXM_NX_ARP_THA[],
load:0xfa163ed50002->NXM_NX_ARP_SHA[],
move:NXM_OF_ARP_SPA[]->NXM_OF_ARP_TPA[],
load:0xc0a80103->NXM_OF_ARP_SPA[],
move:NXM_NX_REG6[]->NXM_NX_REG7[],load:0->NXM_NX_REG6[],
load:0->NXM_OF_IN_PORT[],resubmit(,32)
cookie=0x0, duration=5.399s, table=25, n_packets=6, n_bytes=508,
idle_age=2, priority=0,metadata=0x5
actions=resubmit(,26)
cookie=0x0, duration=5.399s, table=26, n_packets=6, n_bytes=508,
idle_age=2, priority=100,metadata=0x5,
dl_dst=01:00:00:00:00:00/01:00:00:00:00:00
actions=load:0xffff->NXM_NX_REG7[],resubmit(,32)
cookie=0x0, duration=5.398s, table=26, n_packets=0, n_bytes=0,
idle_age=5, priority=50,metadata=0x5,dl_dst=fa:16:3e:d5:00:02
actions=load:0x2->NXM_NX_REG7[],resubmit(,32)
cookie=0x0, duration=5.398s, table=26, n_packets=0, n_bytes=0,
idle_age=5, priority=50,metadata=0x5,dl_dst=fa:16:3e:82:8b:0e
actions=load:0x1->NXM_NX_REG7[],resubmit(,32)
cookie=0x0, duration=21.038s, table=32, n_packets=0, n_bytes=0,
idle_age=21, priority=100,reg7=0x2,metadata=0x5
actions=load:0x5->NXM_NX_TUN_ID[0..23],
set_field:0x2/0xffffffff->tun_metadata0,
move:NXM_NX_REG6[0..14]->NXM_NX_TUN_METADATA0[16..30],output:4
cookie=0x0, duration=21.038s, table=32, n_packets=8, n_bytes=648,
idle_age=11, priority=100,reg7=0xffff,metadata=0x5
actions=load:0x5->NXM_NX_TUN_ID[0..23],
set_field:0xffff/0xffffffff->tun_metadata0,
move:NXM_NX_REG6[0..14]->NXM_NX_TUN_METADATA0[16..30],
output:4,resubmit(,33)
cookie=0x0, duration=5.397s, table=33, n_packets=12, n_bytes=1016,
idle_age=2, priority=100,reg7=0xffff,metadata=0x5
actions=load:0x1->NXM_NX_REG7[],resubmit(,34),
load:0xffff->NXM_NX_REG7[]
cookie=0x0, duration=5.397s, table=33, n_packets=0, n_bytes=0,
idle_age=5, priority=100,reg7=0x1,metadata=0x5
actions=resubmit(,34)
cookie=0x0, duration=21.074s, table=34, n_packets=8, n_bytes=648,
idle_age=11, priority=100,reg6=0x1,reg7=0x1,metadata=0x5
actions=drop
cookie=0x0, duration=21.076s, table=48, n_packets=8, n_bytes=648,
idle_age=11, priority=0,metadata=0x5 actions=resubmit(,49)
cookie=0x0, duration=21.075s, table=49, n_packets=8, n_bytes=648,
idle_age=11, priority=0,metadata=0x5 actions=resubmit(,50)
cookie=0x0, duration=5.398s, table=50, n_packets=0, n_bytes=0,
idle_age=5, priority=100,ipv6,reg0=0x1/0x1,metadata=0x5
actions=ct(table=51,zone=NXM_NX_REG5[0..15])
cookie=0x0, duration=5.398s, table=50, n_packets=0, n_bytes=0,
idle_age=5, priority=100,ip,reg0=0x1/0x1,metadata=0x5
actions=ct(table=51,zone=NXM_NX_REG5[0..15])
cookie=0x0, duration=5.398s, table=50, n_packets=6, n_bytes=508,
idle_age=3, priority=0,metadata=0x5
actions=resubmit(,51)
cookie=0x0, duration=5.398s, table=51, n_packets=6, n_bytes=508,
idle_age=3, priority=0,metadata=0x5
actions=resubmit(,52)
cookie=0x0, duration=5.398s, table=52, n_packets=6, n_bytes=508,
idle_age=3, priority=0,metadata=0x5
actions=resubmit(,53)
cookie=0x0, duration=5.399s, table=53, n_packets=0, n_bytes=0,
idle_age=5, priority=100,ipv6,reg0=0x4/0x4,metadata=0x5
actions=ct(table=54,zone=NXM_NX_REG5[0..15],nat)
cookie=0x0, duration=5.398s, table=53, n_packets=0, n_bytes=0,
idle_age=5, priority=100,ip,reg0=0x4/0x4,metadata=0x5
actions=ct(table=54,zone=NXM_NX_REG5[0..15],nat)
cookie=0x0, duration=5.398s, table=53, n_packets=0, n_bytes=0,
idle_age=5, priority=100,ip,reg0=0x2/0x2,metadata=0x5
actions=ct(commit,zone=NXM_NX_REG5[0..15]),resubmit(,54)
cookie=0x0, duration=5.398s, table=53, n_packets=0, n_bytes=0,
idle_age=5, priority=100,ipv6,reg0=0x2/0x2,metadata=0x5
actions=ct(commit,zone=NXM_NX_REG5[0..15]),resubmit(,54)
cookie=0x0, duration=5.398s, table=53, n_packets=6, n_bytes=508,
idle_age=3, priority=0,metadata=0x5
actions=resubmit(,54)
cookie=0x0, duration=5.398s, table=54, n_packets=6, n_bytes=508,
idle_age=3, priority=0,metadata=0x7
actions=resubmit(,55)
cookie=0x0, duration=5.398s, table=55, n_packets=6, n_bytes=508,
idle_age=3, priority=100,metadata=0x7,
dl_dst=01:00:00:00:00:00/01:00:00:00:00:00
actions=resubmit(,64)
cookie=0x0, duration=5.398s, table=55, n_packets=0, n_bytes=0,
idle_age=5, priority=50,reg7=0x1,metadata=0x7
actions=resubmit(,64)
cookie=0x0, duration=5.398s, table=55, n_packets=0, n_bytes=0,
idle_age=5, priority=50,reg7=0x2,metadata=0x7
actions=resubmit(,64)
cookie=0x0, duration=5.397s, table=64, n_packets=6, n_bytes=508,
idle_age=3, priority=100,reg7=0x1,metadata=0x7
actions=output:9