Support for secondary actions for PBR/PBF redundancy

The router supports ‟primary and secondary action” for filters (see Primary and secondary filter policy action for PBR/PBF redundancy). OpenFlow programming for multiple filter actions is also supported, as follows:

The router supports multi-action using the OpenFlow version 1.3.1 Required Action: Group (For more details, see Section 6.4, Flow Table Modification Messages, Section 6.5, Group Table Modification Messages, and Section 5.6.1, Group Types with group type of fast failover of the TS-007, OpenFlow Switch Specification Version 1.3.1 (OpenFlow-hybrid switches)).

Redundancy uses fast failover group modeling as per the OpenFlow specification with two buckets, with liveliness detection provided by the filter module. Note that failover operates independently of the OpenFlow controller.

The router supports the programming of pbr-on-down-override and sticky-dest using an experimenter, as follows:

instruction type: OFPIT_WRITE_ACTIONS/OFPIT_APPLY_ACTION,
action type: OFPAT_EXPERIMENTER(ALU_AXN_PBFPBR_REDUNDANCY)
encoding:
struct alu_axn_PBFPBR_Redundancy{
   uint16_t  type;         /* OFPAT_EXPERIMENTER. */
   uint16_t  len;          /* Total  Length is a multiple of 8. */
   uint32_t  experimenter;  /* Experimenter ID vendor unique*/
   uint8_t   redirect_type ;  /*  Type = 4 for PBR/PBF redundancy*/
   uint8_t   flags;          /* flags is 0-7 bits: 
                                Bit 0 for pbr-down-action-override
                                Bit 1 for sticky-dest
                             */
    uint32_t   portId;      /* to specify pbr-down action portId 0 
                           for drop, OFP_PORT_ID_NORMAL for forward
                           OFP_PORT_ID_ANY for filter-default-action
                           */
    uint32_t   holdTime;   /* Value between 0-65535 seconds for 
                            sticky dest */
};