Enqueue decoupling Proposal

From OpenFlow Wiki

Jump to: navigation, search

Enqueue decoupling

Jean Tourrilhes - HP-Labs

Introduction

The OpenFlow 1.1 specification introduce the concept of multiple tables. The main argument for multiple tables is that it prevent the cardinal product explosion by decoupling various processing. The most used example is how multiple tables enable to decouple the QoS processing for the forwarding processing.

However, the current definition of the "OFPAT_ENQUEUE" action is incompatible with that goal. This action requires both a priority and a port, which force the binding of QoS and forwarding processing.

This proposal ammend the "OFPAT_ENQUEUE" action to avoid this issue.

Specification changes

A single change is needed, in section 5.2.5. The enqueue action definition need to be updated like this :

The enqueue action has the following fields:

/* OFPAT_ENQUEUE action struct: send packets to given queue on port. */
struct ofp_action_enqueue {
    uint16_t type;        /* OFPAT_ENQUEUE. */
    uint16_t len;         /* Len is 8. */
    uint32_t queue_id;    /* Where to enqueue the packets. */
};
OFP_ASSERT(sizeof(struct ofp_action_enqueue) == 8);