create new tag
, view all tags

Complex 3 Node Network combining IPv6 and MPLS (EXAMPLES/CHORIST072008) on 5 machines

Consider the three node network shown in the following figure:



This is an example of a small MPLS-based network deployment using a single-cluster OpenAir L2 protocol stack. It makes use of 5 physical machines. Three make up a MESH backbone running the openair2 protocol stack (MR1,MR2 and MR3) and two are access nodes which provide IP traffic to the network. The openair nodes each run two network devices; eth0 is used to communicate with the access nodes and nasmesh0 is the emulated openair radio interface. Openair is used for both IP signaling traffic and MPLS user-plane traffic. IPv6 user-plane traffic from the access nodes is routed to MPLS bearers in openair and L3 signaling transits on IPv6 bearers. In this scenario, the CH (MR2) is set-up manually to forward (relay) tranffic between MR1 and MR3. The addressing scheme is shown in the shaded boxes attached to each node in the network. You can see that it comprises both IPv6, IPv4 and MPLS address/labels. User-plane traffic uses exclusively IPv6. Each node has a configuration script which should be invoked to initiate the simulation.

Two versions of the emulated network can be run, user mode L2 ( mac_sim) or real-time mode ( rt_emul, openair_l2.ko). The scripts below are for the first. Similar scripts are found for the real-time case.

The first node to be configured must be the clusterhead (MR1). Its configuration script is shown below.

MR1 configuration

As an example, consider the configuration script for MR1:

# Author: Lamia Romdhani, Raymond Knopp

echo "1" >/proc/sys/net/ipv6/conf/all/forwarding

echo Installing NASMESH Driver
 rmmod -f nasmesh
 insmod $OPENAIR2_DIR/NAS/DRIVER/MESH/nasmesh.ko

echo Classification rules for MR1 - Default DTCH UL for L3 signaling
$OPENAIR2_DIR/NAS/DRIVER/MESH/RB_TOOL/rb_tool -a -c0 -i0 -z0 -x 2001:192:168:31::2 -y 2001:192:168:31::1 -r 4

echo Classification rules for MR1 - MPLS User-plane Bearer
$OPENAIR2_DIR/NAS/DRIVER/MESH/RB_TOOL/rb_tool -a -c0 -i0 -z0 -l 1000 -m 2001 -r 5

echo Configuring interfaces on mr1 (eth4 for emulation, eth0 for IPv6/MPLS forwarding, nasmesh0 for MPLS+IPv6 signaling)
ifconfig eth4
 route add -net netmask dev eth4
 ifconfig nasmesh0 up
 ip -6 addr add 2001:660:5502::10/64 dev eth0
 ip -6 addr add 2001:192:168:31::2/64 dev nasmesh0

echo eth0 is 2001:660:5502::10/64
 echo nasmesh0 is 2001:192:168:31::2/64
 echo Starting routing ...
echo No MPLS debug
 echo "0" >/sys/mpls/debug

echo MPLS setup
 sh del_mpls.sh
 sh mpls_mr1_nas.sh

echo Launching AS simulator
./mac_sim 1

At first, the nasmesh module is loaded (this could be added to your machines start-up script). Then, two radio-bearers are configured manually using the RB_TOOL utility. With the Openair3 protocol stack, this is a function of the CMM module which dynamically configures the L2 interface. Here we do it by hand for pedagogical purposes. The first RB has index 4 and is used for IPv6 signaling traffic. The source address for the classifier is the address of the node itself (2001:192:168:31::2) and the destination is that of the CH (2001:192:168:31::1). The second RB has index 5 and is used for MPLS traffic. The outgoing label (MR1->CH) is 1000 and the incoming label (CH->MR1) is 2001. All interfaces are then brought up. eth4 is used for the emulation traffic, and the multicast route is enabled to this end. MPLS debugging is turned-off. Two additional scripts are invoked, the first clears all MPLS rules and the second sets up the MPLS forwarding rules for MR1. It is as follows:


#Script by Lamia Romdhani 
# June 2008

modprobe mpls6

echo Setting MPLS for mr1

echo 'MN2->MN1'

#expect and pop label 2001
 mpls labelspace set dev nasmesh0 labelspace 0
 mpls ilm add label gen 2001 labelspace 0 proto ipv6

echo 'MN1->MN2'
#add label 1000 and forward the packet to mr2 on output interface eth1 for destination A2
 var=`mpls nhlfe add key 0 instructions push gen 1000 nexthop nasmesh0 ipv6 2001:192:168:31::1 | grep key |cut -c 17-26`

ip -6 route add 2001:660:5502::25/128 via 2001:192:168:31::1 mpls $var

ip -6 route add 2001:660:5502::15/128 dev eth0

The script sets up a bi-directional route between MN1 and MN2 via the MPLS OpenAir mesh. first the labelspace for nasmesh0 is declared and an incoming label (2001) is created and mapped to IPv6. And outgoing route from eth0 to mpls provides the forwarding from MN1 to the mesh.

Finally the Layer2 simulation is invoked with node index 1.

MR2 (CH) Configuration

The MR2 (CH) initialization script is as follows:


# Author: Lamia Romdhani, Raymond Knopp

echo "1" >/proc/sys/net/ipv6/conf/all/forwarding
 Installing NASMESH driver
 rmmod -f nasmesh
 insmod /root/openair2/NAS/DRIVER/MESH/nasmesh.ko
 echo Classification rules for CH

#CH Broadcast (to come)
#This is a future rule for the IPv6 broadcast bearer (requres OpenAir3)

#CH<-> MR1 IP Signaling
/root/openair2/NAS/DRIVER/MESH/RB_TOOL/rb_tool -a -c0 -i0 -z0 -x 2001:192:168:31::1 -y 2001:192:168:31::2 -r 
#CH<-> MR1 MPLS user-plane bearer
/root/openair2/NAS/DRIVER/MESH/RB_TOOL/rb_tool -a -c0 -i0 -z0 -l 2001 -m 1000 -r 13

#CH<-> MR2 (IP Signaling)
/root/openair2/NAS/DRIVER/MESH/RB_TOOL/rb_tool -a -c1 -i0 -z0 -x 2001:192:168:31::1 -y 2001:192:168:31::3 -r 
#CH<-> MR2 (MPLS user-plane bearer)
/root/openair2/NAS/DRIVER/MESH/RB_TOOL/rb_tool -a -c1 -i0 -z0 -l 1001 -m 2000 -r 21

echo Configuring interfaces on CH

# Setup IPv4 multicast route for openair emulation
 ifconfig eth0
 route add -net netmask dev eth0

# Bring up openair NASMESH device and set IPv6 address
 ifconfig nasmesh0 up
 ip -6 addr add 2001:192:168:31::1/64 dev nasmesh0
 echo nasmesh0 is 2001:192:168:31::1/64
 echo No MPLS debug
 echo "0" >/sys/mpls/debug

sleep 1
 echo Configuring MPLS
 sh del_mpls.sh
 sh mpls_mr2_nas.sh

sleep 1
 echo Launching AS simulator

./mac_sim 0

4 RBs are set up. RB 12 is the IPv6 signaling bearer for MR1 with source address 2001:192:168:31::1 and destination 2001:192:168:31::2. RB 13 is the MPLS bearer for MR1 with outgoing label (MR2->MR1) 2001 and incoming label (MR3->MR1) 1000. RB 20 is the IPv6 signaling berarer for MR3 with source address 2001:192:168:31::1 and destination address 2001:192:168:31::3. RB 21 is the MPLS bearer for MR3 with outgoing label (MR2->MR3) 1001 and incoming label 2000.

Here there are only eth0 and nasmesh0 since no IPv6 forwarding is performed (i.e. there is no subnet connected to MR2, and it acts solely as a relay between MN1 and MN2). eth0 is used as the emulation medium. The mpls script for MR2 is invoked followed by the L2 emulation for node id 0.

MR3 Configuration

MR3 is configured similarly to MR1 (see the scripts).

-- RaymondKnopp - 10 Jul 2008

Topic attachments
I Attachment Action Size Date Who Comment
PDFpdf CHORIST082008.pdf manage 17.7 K 10 Jul 2008 - 09:30 RaymondKnopp  
PNGpng CHORIST082008.png manage 20.9 K 10 Jul 2008 - 09:29 RaymondKnopp  
Topic revision: r1 - 10 Jul 2008 - RaymondKnopp
Copyright 2004-2010 Institut Eurecom & all contributing authors.