Implementing MPLS through OpenFlow

There has been high interest in implementing MPLS over OpenFlow. In the past, we have been approached by at least three groups to try to come up with test beds and special implementations to address this topic. While most of these projects are still under development, we have started to see the potential of these creative projects.

To get a high-level view of why this project is particularly interesting, I would refer to a project description the Stanford team has posted on why they want to develop OpenFlow MPLS.

MPLS networks have evolved over the last 10-15 years to become critically important for ISPs. They provide two key services: traffic engineering in IP networks and L2 or L3 enterprise VPNs. However as carriers deploy MPLS networks, they find that (a) even though the MPLS data plane was meant to be simple, vendors end up supporting MPLS as an additional feature on complex, energy hogging, expensive core routers; and (b) the IP/MPLS control plane has become exceedingly complex with a wide variety of protocols tightly intertwined with the associated data-plane mechanisms.

We propose a new approach to MPLS that uses the standard MPLS data-plane with a simpler and extensible control-plane based on OpenFlow and SDN.There are significant advantages in using this approach. The control-plane is greatly simplified and is de-coupled from a simple data-plane. And we can still provide all the services that MPLS networks provide today. More importantly we can do much more: we can globally optimize the services; make them more dynamic; or create new services by simply programming networking applications on top of the SDN Controller.


The idea of implementing MPLS through OpenFlow has been around for a while. The Ericsson team (Howard Green, Mart Haitjema, Peyman Kazemian, and James Kempf) have put together a prototype back in 2009, when OpenFlow 1.0 is still in draft.

Their work can be found in OpenFlowMPLS.

Courtesy of Scott Whyte and Google

Open Source LSR (courtesy of Scott Whyte and Google)

In 2010, Scott Whyte of Google presented OpenLSR project in NANOG.

The project used NetFPGA card to implement the data plane of 4x1GE ports. At the protocol control layer, it implemented MPLS in the Linux kernel and added LDP on top of Quagga’s OSPF.

Recent Development

We recently see a new implementation of Open-MPLS at the OpenFlow site, which enables MPLS-TE with Nox (the controller), OpenVSwitch (the data plane), and Mininet (the GUI to visualize the network).

This project is particularly interesting to Pronto because we have ported OVS to Pronto 3290 and 3780, and both NOX and Mininet are open source. This allows researchers and visionaries to collaborate on the innovation.  In 2010, we have worked with Stanford in implementing the MPLS features at our Indigo version, but did not release the code because it would deviate from the Indigo public code. Given OVS now has the MPLS data structure defined, we are considering to plug our Indigo MPLS driver into the OVS code. This could create a stable and maintainable OpenFlow MPLS implementation for people to share.

If you are thinking of implementing MPLS over OpenFlow, drop us a note. We would love to collaborate.


About James Liao
James is a data center architect, focusing on the scalability and operation of data center infrastructure.

2 Responses to Implementing MPLS through OpenFlow

  1. Note dropping:

    We’ve gone done the path of virtualizing our entire network (from server switch to core) with MPLS and Q-in-Q. We’ve contained every secure zone in a VPLS instance or VRF. Every external customer has their own private VPN to which we can attach services. Every vendor. Every internal network of any type that is logically segregated from the rest of the network due to business or security policies…

    We’ve been looking at OpenFlow because of missing parts and pieces and also now.. automation with respect to waypoint routing. Virtual, automated topologies…

    Where to start with all this?

    • James Liao says:

      Your network sounds impressive. I wish we could jump in and start helping. However, as I mentioned in the post, this project is still at development stage. We are in the process of porting the latest OVS, including its MPLS, to the Pronto switches. After the code is qualified, we will start engaging some beta customers for trials.

%d bloggers like this: