netplugin
netplugin copied to clipboard
Proposal: support openflow 1.5 for stateful flow tracking
Description
Use openflow 1.5 version that allows stateful flows
Initial analysis
-
Using conn_track
- Set conntrack action_(ct_next)_ to forward packet to Netfilter's conneciton tracker which maintains the hash of the state of the connection.
- The packet will then be resubmitted to the OVS flow table which can then be hashed to service instances based on new metadata from conntrack (conn_state bits exist to track new/established connections)
-
Using GROUP table and SELECT buckets
- Add all service instances to SELECT bucket (only one copy is sent to the entire bucket and the weight parameter in the bucket can be utilized to determine packet distribution)
- Set type=select,selection_method=hash,fields(
) for a group. This will select the same instance based on the hash of the fields tuple. - NOTE: This uses the Netronome extension to OpenFlow 1.5+ that allows control over the OpenFlow select groups selection method