The following mails will contain patchs that implement the VPLS datapath
in OpenBSD. Applying all patchs should allow people to configure a
network using VPLS manually.

The first patch prepares the system sources to receive the wire
implementation: it turns some mpe specific code into some generic
functions that we will be using in wire and mpe.

The second patch implements the wire datapath itself, with that we should
be able to create a pseudo device that will handle the VPLS labels and
control words. Yet, it is still missing the ethernet-vlan mode.

The third and last patch implements wire specific handling in ifconfig,
like: showing wire configuration and doing the wire configuration.

How to use:
 * Create a MPLS network.
   Example: http://2011.eurobsdcon.org/papers/jeker/MPLS.pdf
 * Create a pseudowire in both ends of your network (PEs)
   # ifconfig wire<number> encap ethernet wirelabel <local label> \
       <remote label> neighbor <other PE address> <controlword> up

   # ifconfig wire0 encap ethernet wirelabel 500 500 neighbor 1.2.3.4 up
     or
   # ifconfig wire0 encap ethernet wirelabel 500 500 neighbor 1.2.3.4 \
       controlword up
 * Create a bridge between the interface facing your customer (CE) and
   your wireX, also in both PEs you are configuring the VPN.

Now every time a packet comes through the client interface it will be
encapsulated by the wire interface with a new ethernet frame and will
be sent to the neighbor PE configured. When it reaches the destination PE
the packet will be removed from the frame and sent out as it entered the
first PE.

NOTE: there is a LDPd protocol implementation for VPLS/VPWS ongoing by
Renato that might be coming anytime soon. Also, thanks to Renato
for the help and input :) .

Comments and advices are highly welcomed.

TODO list:
* interface configuration code - SIOCSETWIRECFG / SIOCGETWIRECFG (DONE)
* add / remove wire label (DONE)
* add / remove wire control label (DONE)
* ethernet-vlan support (WIP)
* ifconfig(8) integration
** show wire configuration (DONE)
** configure wire (DONE)
* man page:
** wire(4) (TODO)
** ifconfig(8) (TODO)

Reply via email to