Over past summer Ericsson research at San Jose, CA started a project called OpenFlow-MPLS to add MPLS support to OpenFlow. The project is now complete and available via the Project’s Page on the Openflow Wiki.
The implementation includes a user space switch, a kernel space switch and NetFPGA implementation and is based on OpenFlow v0.89.
It supports MPLS by adding two tupels to standard OpenFlow tupels, which can match on up to two top of the stack MPLS labels. The rewrite action is supported in flow table for MPLS tags, but other MPLS related actions (Push, Pop, TTL and EXP bits operations) are supported via MPLS-enabled virtual ports.