Implementation of MPLS in FreeBSD
MultiProtocol Label Switchingis a protocol used for fast and efficient routing of packets through a network. It is widely deployed throughout the internets backbone networks. FreeBSD currently lacks any implementation of MPLS, and doing so will allow FreeBSD wider coverage in the router/networking operating systems area.
Weekly updates are posted on the projects blog, with any major updates to the project being published here as well.
30/06/08 - The project is currently still in the initial stages of porting over code from the OpenBSD/Ayame implementations, which will be used as a starting base for the project.
23/08/08 - Google Summer of Code has now finished. To date all of the code from OpenBSD has been ported to FreeBSD, but basic sending and receiving is still not quite working. I will continue to work on this until MPLS in FreeBSD is fully functioning.
1/11/2008 - I have continued to work on this project since the completion of the Google Summer of Code. Sending and receiving of packets is now operational. A packet can be created using MPLS Needle and sent from one computer to another, which will receive the packet, decode it, and create the correct response. Currently the table used to determine how to handle a packet is statically built, with the next stage being the development of dynamically creating the routing table for the protocol.
MPLS Needle is a program developed at the start of this project to be used for the testing of the implementation. MPLS Needle will inject semi-customised MPLS packets onto the network stack. The values contained in these packets are defined in a configuration file. Almost every value of the injected packet can be defined inside this configuration file, except for the source mac address, and the checksum values. The packet is also always an MPLS/IPv4/ICMP packet.