Views
OpenFlowMPLS MPLS Actions
From OpenFlow Wiki
This page is no longer maintained. For up to date information on the OpenFlow MPLS Extension, please visit the main page and the pages linked from there: OpenFlowMPLS.
MPLS Actions
Once an MPLS flow has been matched, we will need to implement Table Actions (TA) which will provide the necessary MPLS functionality. The MPLS label will need to be imposed, disposed or swapped. These actions can be considered as a case of generalized header re-write. The simplest case would be that of a single labeled packet that requires a swap. In that case, the swap would be nothing but a label re-write. It does get trickier for the other cases. For example, Push would require a label to be added.
Generalized Header:
The header is split into four levels, with a buffer associated with each level:
This arrangement makes it easy to insert/remove and manipulate header fields.
For example, a TCP flow coming into the MPLS cloud on an Ethernet port will be seen as:
Now tunnel encapsulation is done by simply adding the MPLS label in the level 2 (Layer 2.5) buffer:
At the transit nodes the Shim buffer gets re-written. Finally at the Egress node the tunnel encapsulation is removed by making the Shim buffer null (as in figure 1).
This generalized mechanism can be employed for all tunnel encapsulations (GRE, IPinIP, L2TP, MPLS Label Stacks, QinQ, PBB etc).
POP aka Tunnel Egress:
The logical action for POP, which is a tunnel egress operation, is to remove the tunnel encapsulation and then do a second lookup. This can be modeled in OpenFlow by installing the tunnel egress matching flow with an action of punting to the controller. For MPLS that would be the label advertised by the egress node. The first packet for a flow being transported by the tunnel will be punted to the controller. The controller will then install a more specific flow entry that will include the inner header along with the switching action.
- - Actions:
- - Pop (buffer shim, 4 bytes)
- - Rewrite IP TTL from MPLS TTL
- - Outgoing Port = As desired for the FEC
Insert non-formatted text here



