Jump to: navigation, search

Difference between revisions of "Neutron/OFAgent/FlowTable"

Line 25: Line 25:
 
   for each vm ports:
 
   for each vm ports:
 
       in_port=i, write_metadata(xxx),goto(ARP_PROXY)
 
       in_port=i, write_metadata(xxx),goto(ARP_PROXY)
 
 
   TYPE_GRE
 
   TYPE_GRE
 
   for each tunnel ports:
 
   for each tunnel ports:
 
       in_port=a, goto(CHECK_NETWORK+N)
 
       in_port=a, goto(CHECK_NETWORK+N)
 
 
   TYPE_VLAN
 
   TYPE_VLAN
 
   for each physical ports:
 
   for each physical ports:
 
       in_port=x, goto(CHECK_NETWORK+N)
 
       in_port=x, goto(CHECK_NETWORK+N)
 
 
   TYPE_FLAT
 
   TYPE_FLAT
 
       in_port=x, goto(CHECK_NETWORK+N)
 
       in_port=x, goto(CHECK_NETWORK+N)
 
 
   default drop
 
   default drop
  
Line 44: Line 40:
 
   for each networks:
 
   for each networks:
 
       tun_id=yyy, write_metadata(xxx),goto(LOCAL_OUT)
 
       tun_id=yyy, write_metadata(xxx),goto(LOCAL_OUT)
 
 
   TYPE_VLAN
 
   TYPE_VLAN
 
   for each networks:
 
   for each networks:
 
       vlan_vid=present|yyy, write_metadata(xxx),pop_vlan,goto(LOCAL_OUT)
 
       vlan_vid=present|yyy, write_metadata(xxx),pop_vlan,goto(LOCAL_OUT)
 
 
   TYPE_FLAT
 
   TYPE_FLAT
 
       vlan_vid=none, write_metadata(xxx),pop_vlan,goto(LOCAL_OUT)
 
       vlan_vid=none, write_metadata(xxx),pop_vlan,goto(LOCAL_OUT)
 
 
   default drop
 
   default drop
  
Line 69: Line 62:
 
   output to tunnel/physical ports
 
   output to tunnel/physical ports
 
   "next table" might be LOCAL_OUT
 
   "next table" might be LOCAL_OUT
 
 
   TYPE_GRE
 
   TYPE_GRE
 
   for each networks:
 
   for each networks:
 
       metadata=xxx, set_tunnel(yyy),output:a,b,c,goto(next table)
 
       metadata=xxx, set_tunnel(yyy),output:a,b,c,goto(next table)
 
 
   TYPE_VLAN
 
   TYPE_VLAN
 
   for each networks:
 
   for each networks:
 
       metadata=xxx, push_vlan:0x8100,set_field:present|yyy->vlan_vid,output:x,y,z,goto(next table)
 
       metadata=xxx, push_vlan:0x8100,set_field:present|yyy->vlan_vid,output:x,y,z,goto(next table)
 
 
   TYPE_FLAT
 
   TYPE_FLAT
 
       metadata=xxx, output:x,y,z,goto(next table)
 
       metadata=xxx, output:x,y,z,goto(next table)
 
 
   default goto(next table)
 
   default goto(next table)
  
Line 92: Line 81:
 
   for each networks:
 
   for each networks:
 
       metadata=xxx, output:i,j,k
 
       metadata=xxx, output:i,j,k
 
 
   default drop
 
   default drop
  

Revision as of 04:12, 14 April 2014

OpenFlow1.3 flow table for OFAgent

  • todo: VXLAN (same as GRE?)
  • 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