Home | Documentation | Download | Contact

MPLS Linux

Project

MPLS for Linux is a open source effort to create a set of MPLS signaling protocols and an MPLS forwarding plane for the Linux operating system.

Status

So far a MPLS forwarding plane for the Linux 2.6.x kernel tree and an implementation of RFC3036 (LDP) have been created.

MPLS for Linux is made up of two projects:



History

MPLS for Linux started out as a protocol analyzer for the LDP protocol. It utilized a set of encode and decode functions developed by Nortel Networks. It was originally developed for the N+I Las Vegas '99 MPLS iLab. By the time N+I Atlanta '99 rolled around it had matured in to a make shift implementation of LDP-03. During N+I Atlanta '99 it was re-written to follow the procedures from Appendix A of LDP-05. In April of 2000 I joined Laurel Networks (www.laurelnetworks.com). I was allowed to continue development of LDP as long as I made it portable. With this in mind the linux-mpls-ldp package was split into two packages: mpls-linux (the Linux Kernel based forwarding plane released under the GPL) and ldp-portable (a portable version of the LDP protocol released under the LGPL). The project moved to Sourceforge on 11/30/2000. In January of 2003 I started working for iNOC (www.internetnoc.com) where I have been encouraged to continuing working on this project and be involved in the standardization bodies associated with MPLS.

DEB support

Here is a link to some .deb packages contributed by Hasso Tepper
Please post questions about these packages to the mailing list.

RPM support

My development environment is Fedora 8 and I have build environments for Fedora 7 and Fedora Core 6. I've created a yum repository that will always contain the latest RPMs for the environments I listed above.

I try to keep the SF file section in sync, but since it is such a hassle to post files (compared to building a yum repository) I can't always guarantee it.

If you choose to use the SF file section, there are a lot of RPMs to choose from, here is a guide to help you figure out which ones you should grab, the list is cumulative, so those who are developers will need all of the RPMs:

All of the above packages can be downloaded from the Source Forge file section.

Links to examples

To Do

Additional protocols
--------------------
-RSVP-TE (I've put the RSVP-TE code into the quagga-mpls tree, it is a long way from working, feel free to hack away and send me patches)
-BGP (quagga has support for distributing labeling information, but it has
 not been tied to mpls-linux yet)
-Generalized extent ions (not sure how much interest there is for this, or
 how practical this is, but I will keep it as a TODO)
-L2 Cross Connect extent ions for LDP

LDP-Portable
------------
Test/fix on demand mode
CR-extent ions for LDP
Stress testing.
Better error handling

Quagga-MPLS
-----------
Finish integration and testing of MPLS framework
Finish testing and bug fixing quagga-mpls porting layer for ldp-portable
Tie BGP label distribution to the new MPLS framework I've implemented

MPLS forwarding
---------------
Test IPv6 support
Frame relay support
Better documentation
Re-implement ATM support
ATM and Frame Relay over MPLS
Multicast support (I have a patch for this that I need to integrate)


Access to my development repository

I have been using Perforce's 'p4' for sometime now. I have received an 'Open Source Developers' license and I can have upto 15 users. (Thanks Perforce!!)

What does this mean to you? I have setup a read only user so that people can get access to my development tree. This includes _lots_ of stuff. Head over to http://perforce.com/perforce/loadprog.html and download a 'P4' client for your favorite platform and 'check out' (heh heh heh) my latest development.

The info you'll need:

P4PORT=p4.dangermen.com:1666
Username=perforce (no password)
User guide: http://perforce.com/perforce/doc.022/manuals/p4guide/index.html
Quick and dirty:
setenv P4PORT p4.dangermen.com:1666
setenv P4USER perforce

mkdir p4client
cd p4client
p4 client
(opens 'vi'. Edit the 'Client:' name to be something useful. An idea is to use your e-mail address. Whatever you put there is your client name, you'll need that for later. If you want the entire tree leave the rest unchanged and save it. If you want to map only parts of the tree modify the 'View:' area. See my example below for more info)
p4 sync
NOTE: There are about 6 versions of the entire linux kernel in this tree so there is ~700MB of data to be downloaded. If you only want the mpls-linux and ldp-portable 'stuff' edit your 'p4 client' 'View:' to be something like:
        //depot/mpls-linux-1.1/... //dummy-client/mpls-linux/...
        //depot/iproute2-mpls-1.1/... //dummy-client/iproute2/...
        //depot/iptables-mpls/... //dummy-client/iptables/...
        //depot/ebtables-mpls/... //dummy-client/ebtables/...
        //depot/ppp-mpls/... //dummy-client/ppp/...
        //depot/quagga-mpls/... //dummy-client/quagga-mpls/...
        //depot/ldp-portable/... //dummy-client/ldp-portable/...
        //depot/mpls-kernel-1.1/... //dummy-client/kernel/...
Make sure to switch dummy-client to the name of your 'Client:' BTW if any of you are P4 experts, and you have some suggestions about a better way for me to setup stuff, let me know. The SourceForge CVS is not longer used.

Links

Go to the MPLS for Linux project page http://sourceforge.net/projects/mpls-linux/
The MPLS for Linux general mailing list is can be reached at Sourceforge
The MPLS for Linux development mailing list is can be reached at Sourceforge

MPLS Linux Lab examples by Irina Dumitrascu and Adrian Popa (mpls-linux 1.950)

These experiments were developed as a part of a graduation project and had the purpose of helping teaching MPLS to university students. The experiments are independent and can be used selectively, but they all rely on the same testbed. (local archive of the labs can be found here

Live MPLS CD Creation Guide (mpls-linux 1.946)

This tarball contains the scripts and README for creating the KnoppixMpls ISO. This work was contributed by Bertrand Thomas and Julien Cayssol from the school INSA Lyon, d?partement telecom services et usages. Any questions about it's usage can be directed to the mpls-linux-general mailing list.

Developer's Guide (pre mpls-linux 1.946)

This guide is aimed to developers that want to know the internal details and it is not aimed to end users.

Why is MPLS slower then IPv4?

See my rant here for my answer.

Last edited 12-18-2007 by jleu
Copyright ©1999-2007 James R. Leu