Hybrid OpenFlow Switching
670 Router Configuration Guide
Redirect to IP next-hop
A router supports redirection of IPv4 or IPv6 next-hop for traffic arriving on a L3 interface.
An OF controller can rely on this functionality and program PBR next-hop steering actions
for H-OFS instances with switched-defined-cookie enabled using the following OF
encoding:
ALU_IPD_EXPERIMENTER_ID: 0x000025BA
ALU_AXN_REDIRECT_TO_NEXTHOP: 2
flow_mod:
instruction= OFPIT_WRITE_ACTION/OFPIT_APPLY_ACTION,
action= OFPAT_EXPERIMENTER(ALU_AXN_REDIRECT_TO_NEXTHOP),
encoding:
struct alu_axn_redirect_to_nhopv4{
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 = 1 for Nhop*/
uint8_t flags; /* flags is 0-7 bits:
Bit 0 = Ipv4,
Bit 1 = Ipv6,
Bit 2 = indirect
*/
uint8_t pad[2];
uint32_t ipaddr; /* ipv4 addr */
unit8_t pad[0]; /* Not needed */
}; ASSERT(sizeof(alu_axn_redirect_to_nhopv4) == 16)
struct alu_axn_redirect_to_nhopv6{
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 = 1 for Nhop*/
uint8_t flags; /* flags is 0-7 bits:
Bit 0 = Ipv4,
Bit 1 = Ipv6,
Bit 2 = indirect
*/
uint8_t pad[2];
uint128_t ip6addr; /* ipv6 addr */
unit8_t pad[4]; /* Make total len multiple of 8 */
}; ASSERT(sizeof(alu_axn_redirect_to_nhopv6) == 32)
In case of erroneous programming, the following experimenter-specific errors are returned to
the controller:
enum alu_err_exp_class{
ALU_ERR_CLASS_RD_TO_SDP = 0,
ALU_ERR_CLASS_RD_TO_NHOP = 1,
}
enum alu_err_subtype_redirect_to_nhop
{
ALU_ERR_RN_INVALID_FLAGS = 0
ALU_ERR_RN_INVALID_ARGS = 1
ALU_ERR_RN_INVALID_ADDR = 2
}