Group table

Groups represent sets of actions for flooding as well as more complex forwarding semantics (for example, multipath, fast reroute, and link aggregation). As a general layer of indirection, groups also enable multiple flow entries to forward to a single identifier (for example, IP forwarding to a common next hop). This abstraction allows common output actions across flow entries to be changed efficiently.

The group table contains group entries; each group entry contains a list of action buckets with specific semantics dependent on group type. The actions in one or more action buckets are applied to packets sent to the group. There are four types of groups:

  1. All. All the action buckets in the group are executed when a packet hits the group table.

  2. Select. Execute any one action bucket in the group. The switch implementation uses round-robin to select the action bucket to be executed. OpenFlow specification defines a weight mechanism to do load sharing. However, this weight mechanism is not supported in the switch implementation. The weight MUST be given as 1. For all the other groups, weight MUST be specified as 0.

  3. Indirect. Execute the one defined bucket in this group. This group supports only a single bucket.

  4. Fast failover. Execute the first live bucket. The buckets are evaluated for liveness in the order defined by the group.