|
|
(12 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| OpenFlow1.3 flow table for OFAgent | | OpenFlow1.3 flow table for OFAgent |
| | | |
− | * todo: VXLAN (same as GRE?)
| + | moved to: http://git.openstack.org/cgit/openstack/neutron/tree/neutron/plugins/ofagent/agent/flows.py |
− | | |
− | * legends
| |
− | xxx: network id
| |
− | yyy: segment id
| |
− | a,b,c: tunnel port
| |
− | i,j,k: vm port
| |
− | x,y,z: physical port
| |
− | N: tunnel type
| |
− | uuu: unicast address
| |
− | | |
− | * tables (in order)
| |
− | CHECK_IN_PORT
| |
− | CHECK_NETWORK+N
| |
− | ARP_PROXY
| |
− | TUNNEL_OUT
| |
− | TUNNEL_OUT_FLOOD+N
| |
− | LOCAL_OUT
| |
− | LOCAL_OUT_FLOOD
| |
− | | |
− | * CHECK_IN_PORT
| |
− | | |
− | for each vm ports:
| |
− | in_port=i, write_metadata(xxx),goto(ARP_PROXY)
| |
− | | |
− | TYPE_GRE
| |
− | for each tunnel ports:
| |
− | in_port=a, goto(CHECK_NETWORK+N)
| |
− | | |
− | TYPE_VLAN
| |
− | for each physical ports:
| |
− | in_port=x, goto(CHECK_NETWORK+N)
| |
− | | |
− | TYPE_FLAT
| |
− | in_port=x, goto(CHECK_NETWORK+N)
| |
− | | |
− | default drop
| |
− | | |
− | * CHECK_NETWORK+N. (per tunnel types) tunnel/vlan -> network
| |
− | | |
− | TYPE_GRE
| |
− | for each networks:
| |
− | tun_id=yyy, write_metadata(xxx),goto(LOCAL_OUT)
| |
− | | |
− | TYPE_VLAN
| |
− | for each networks:
| |
− | vlan_vid=present|yyy, write_metadata(xxx),pop_vlan,goto(LOCAL_OUT)
| |
− | | |
− | TYPE_FLAT
| |
− | vlan_vid=none, write_metadata(xxx),pop_vlan,goto(LOCAL_OUT)
| |
− | | |
− | default drop
| |
− | | |
− | * ARP_PROXY
| |
− | ** todo: local arp responder
| |
− | | |
− | goto(TUNNEL_OUT)
| |
− | | |
− | * TUNNEL_OUT
| |
− | ** todo: learning and/or l2 pop
| |
− | | |
− | goto(TUNNEL_OUT_FLOOD+0)
| |
− | | |
− | * TUNNEL_OUT_FLOOD+N. (per tunnel types)
| |
− | | |
− | network -> tunnel/vlan
| |
− | output to tunnel/physical ports
| |
− | "next table" might be LOCAL_OUT
| |
− | | |
− | TYPE_GRE
| |
− | for each networks:
| |
− | metadata=xxx, set_tunnel(yyy),output:a,b,c,goto(next table)
| |
− | | |
− | TYPE_VLAN
| |
− | for each networks:
| |
− | metadata=xxx, push_vlan:0x8100,set_field:present|yyy->vlan_vid,output:x,y,z,goto(next table)
| |
− | | |
− | TYPE_FLAT
| |
− | metadata=xxx, output:x,y,z,goto(next table)
| |
− | | |
− | default goto(next table)
| |
− | | |
− | * LOCAL_OUT
| |
− | ** todo: learning and/or l2 pop
| |
− | goto(LOCAL_OUT_FLOOD)
| |
− | | |
− | * LOCAL_OUT_FLOOD
| |
− | ** todo: learning and/or l2 pop
| |
− | | |
− | for each networks:
| |
− | metadata=xxx, output:i,j,k
| |
− | | |
− | default drop
| |