[OpenFlow] OpenFlow 1.3 Spec Summary

Compared with OF1.0, OF1.3 is more tables and complex design than 1.0. Here I try to summarize the main items in OF1.3 spec included the table, message, and so on for me to review it more quick in the future.

OpenFlow Table

Flow Table
+-----------------------------------------------------------------------------------------+
 | Match Fields | Priority | Counters | Instructions | Timeouts | Cookie |
+-----------------------------------------------------------------------------------------+

Group Table
+-----------------------------------------------------------------------------+
 | Group Identifier | Group Type | Counters | Action Buckets |
+-----------------------------------------------------------------------------+
  •   Group Types
    • Required: all: Execute all buckets in the group
    • Optional: select: Execute one bucket in the group.
    • Required: indirect: Execute the one defines bucket in this group.
    • Optional: fast failover: Execute the first live bucket.
Meter Table
+-------------------------------------------------------+
 | Meter Identifier | Meter Bands | Counters |
+-------------------------------------------------------+
  • Meter Bands 
               +--------------------------------------------------------------------------+
                 | Band Type | Rate | Counters | Type specific arguments |
                +-------------------------------------------------------------------------+
    • Band Type
      • Drop
      • Remark DSCP

New Data Structure in Pipeline
+-------------------------------------------------------+
 | media data | packet header | Action Set   |
+-------------------------------------------------------+

 Instructions
Each flow entry contains a set of instructions that are executed when a packet matches the entry.
  • Optional Instruction: Meter meter id: Direct packet to the specified ed meter.
  • Optional Instruction: Apply-Actions action(s): Applies the specified ed action(s) immediately, without any change to the Action Set.
  • Optional Instruction: Clear-Actions: Clears all the actions in the action set immediately.
  • Required Instruction: Write-Actions action(s): Merges the specified ed action(s) into the current action set. 
  • Optional Instruction: Write-Metadata metadata / mask: Writes the masked metadata value into the metadata field. 
  • Required Instruction: Goto-Table next-table-id: Indicates the next table in the processing pipeline.
Action Set
The actions in an action set are applied in the order specifi ed below, regardless of the order that
they were added to the set.
  • copy TTL inwards: apply copy TTL inward actions to the packet
  • pop: apply all tag pop actions to the packet
  • push-MPLS: apply MPLS tag push action to the packet
  • push-PBB: apply PBB tag push action to the packet
  • push-VLAN: apply VLAN tag push action to the packet
  • copy TTL outwards: apply copy TTL outwards action to the packet
  • decrement TTL: apply decrement TTL action to the packet
  • set: apply all set-eld actions to the packet
  • qos: apply all QoS actions, such as set queue to the packet
  • group: if a group action is specied, apply the actions of the relevant group bucket(s) in the order specied by this list
  • output: if no group action is specied, forward the packet on the port specied by the output action
Action List
  • The Apply-Actions instruction and the Packet-out message include an action list.
Actions
  • Required Action: Output. The Output action forwards a packet to a speci ed OpenFlow port
  • Optional Action: Set-Queue. The set-queue action sets the queue id for a packet.
  • Required Action: Drop. There is no explicit action to represent drops.
  • Required Action: Group. Process the packet through the speci ed group.
  • Optional Action: Push-Tag/Pop-Tag. Switches may support the ability to push/pop tags
    • Push / Pop VLAN header
    • Push  / Pop MPLS header
    • Push  / Pop PBB header
  • Optional Action: Set-Field. The various Set-Field actions are identified by their field type and modify the values of respective header fields in the packet.
  • Optional Action: Change-TTL. The various Change-TTL actions modify the values of the IPv4 TTL, IPv6 Hop Limit or MPLS TTL in the packet.
    • Set MPLS TTL
      • 8 bits: New MPLS TTL
    • Decrement MPLS TTL
    • Set IP TTL
      • 8 bits: New IP TTL
    • Decrement IP TTL
    • Copy TTL outwards
    • Copy TTL inwards

OpenFlow Channel
Controller-to-Switch Message
Handshake:
Features:
Switch-Configuration:

Flow Table Configuration:
Modify-State message:
Multipart message:
Queue-Configuration message:
Read-State:
Packet-out message:
Barrier message:
Role-Request message:
Set-Asynchronous-Configuration message:


Asynchronous Message
Packet-in:
Flow-Removed:
Port-status:
Error:

Symmetric Message
Hello:
Echo Request/Reply:
Experimenter:



Flow Table Modification Messages

Group Table Modification Messages

Meter Modification Messages


Comments

Popular posts from this blog

[Open vSwitch] How to get port statistics from interface in OVS

[Quagga] How to compile and install Quagga on Ubuntu 12.04

[JSON] How to use jansson lib to generate JSON data in C