|
|
|
---++ 3 Node Network combining IPv6 and MPLS (EXAMPLES/CHORIST072008) on 5 machines
|
|
|
|
|
|
|
|
Consider the three node network shown in the following figure:
|
|
|
|
|
|
|
|
<img alt="CHORIST082008.png" src="https://twiki.eurecom.fr/twiki/pub/OpenAirInterface/Chorist3Nodes/CHORIST082008.png" />
|
|
|
|
|
|
|
|
[[%ATTACHURL%/CHORIST082008.pdf][CHORIST082008.pdf]]
|
|
|
|
|
|
|
|
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. The first to be run must be the clusterhead.
|
|
|
|
---++++ MR1 configuration
|
|
|
|
|
|
|
|
As an example, consider the configuration script for MR1:
|
|
|
|
<verbatim>
|
|
|
|
#!/bin/bash
|
|
|
|
# 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 192.168.31.2
|
|
|
|
route add -net 224.0.0.0 netmask 240.0.0.0 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
|
|
|
|
cd $OPENAIR2_DIR/SIMULATION/USER_TOOLS/LAYER2_SIM
|
|
|
|
./mac_sim 1
|
|
|
|
</verbatim>
|
|
|
|
|
|
|
|
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:
|
|
|
|
<verbatim>
|
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
#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
|
|
|
|
|
|
|
|
</verbatim>
|
|
|
|
|
|
|
|
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:
|
|
|
|
<verbatim>
|
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
# 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
|
|
|
|
12
|
|
|
|
#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
|
|
|
|
20
|
|
|
|
#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 192.168.31.1
|
|
|
|
route add -net 224.0.0.0 netmask 240.0.0.0 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
|
|
|
|
|
|
|
|
cd /root/openair2/SIMULATION/USER_TOOLS/LAYER2_SIM
|
|
|
|
./mac_sim 0
|
|
|
|
</verbatim>
|
|
|
|
|
|
|
|
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).
|
|
|
|
|
|
|
|
-- User.RaymondKnopp - 10 Jul 2008 |