Back to Horms' Home Page

Status of MPLS support for Open vSwitch

Over the past year I have been working on adding support for MPLS, as defined in Open Flow from versions 1.2, to Open vSwitch. From time to time I receive email asking about the status of this work and in particular where is the best place to obtain the MPLS code. The purpose of this post is to answer those questions publicly.

There are two main threads of work in this area. And they can be found in branches of my own git repository

  1. The devel/mpls-v2.X series of patches

    These add basic MPLS support to the kernel datapath and are useful in their own right. If you want to use this I recommend the latest version, currently devel/mpls-v2.43.

    I am actively working on updating these patches to have them included in mainline. But as the merge is not under my control I can't indicate when that will happen.

    Basic MPLS support has already been added to the user-space datapath and is present in mainline.

    Basic support involves matching on MPLS LSE fields, push and pop MPLS actions, and actions to manipulate MPLS LSEs.

    A key restriction of this series is that it only allows one level of push or pop and moreover does not allow actions that act on the inner packet.

    For instance, it cannot handle mpls_pop:0x0800,dec_ttl.

  2. The devel/mpls-recirculation-v1.X series of patches

    These add recirculation to Open vSwtich, a mechanism to re-start processing of a packet after some actions have been applied. This mechanism is used to remove the restrictions described above in the mpls-v2.X series. When applied the only restriction that I am aware of is that recirculation may only occur a maximum of four times. And that may be altered at compile-time.

    This series is currently being re-written to take into account various changes in mainline. I hope that it will move forwards in the next few weeks.

    If you wish to try this patch-set I recommend the latest version, currently devel/mpls-recirculate-v17. This is based on devel/mpls-v2.36 and includes datapath MPLS support described above in 1. Both the datapath MPLS support and the upstream base are a little old but I believe the MPLS code works.

Wed, 16 Oct 2013 10:00:55 +0900| Permalink