Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
openairinterface5G
openairinterface5G
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Merge Requests 21
    • Merge Requests 21
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Activity
  • Graph
  • Commits
Collapse sidebar
  • oai
  • openairinterface5Gopenairinterface5G
  • Wiki
  • Chorist3Nodes

Last edited by Cedric Roux Jan 17, 2016
Page history

Chorist3Nodes

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

Consider the three node network shown in the following figure:

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: #!/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

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: #!/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

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: #!/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

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

Clone repository
  • 5g nr development and setup
  • ALUProject
  • AskQuestions
  • AutoBuild
  • CBMIMO1Integ
  • CardList
  • Cbmimo1Flash
  • Chorist3Nodes
  • ChoristMplsIPv6072008
  • Configure_simplestreams_for_a_private_cloud
  • CoreBasebandAndRF
  • CoreNetworking
  • DebugTools
  • DeployOpenStackHeat
  • DisablingInterrupts
View All Pages