Skip to content. | Skip to navigation

Personal tools

Navigation

You are here: Home / Wiki / PhantomNet / S1 handover with emulated UE and eNBs and MME Relocation

S1 handover with emulated UE and eNBs and MME Relocation

Introduction


This tutorial shows how to use S1 handover with emulated UE and eNBs and MME Relocation in PhantomNet. To get started, first instantiate an experiment with the inter-mme-HO profile via PhantomNet portal. When creating the experiment, increase the "Number of eNodeB nodes" to 2 and  "Node Hardware Type" to any available physical machine type. In this tutorial, your client is initially connected to enb1 and mme1, and moves from enb1&mme1 to enb2&mme2.  If you don't know how to perform the initial UE attachment with OpenEPC, please first go through the OpenEPC Tutorial.  S1 handover with emulated UE and eNBs and MME relocation needs some manual steps since emulated UE and eNBs in OpenEPC do not have the required RAN procedures for handover. However, the procedures among source, target eNBs and MMEs, and SGW are the same as S1 handover standard. 

Prerequisite configurations for S1 handover with MME relocation


For S1 handover with MME relocation, you need to know client imsi, enodeb and MME information for S1 handover.  This information is listed below.

i) client imsi : 998980000001001

ii) eNodeB information (you can check enodeb's tac and cell id information in /opt/OpenEPC/etc/enodeb.xml).

cell id ip address TAC
enb1 4567 192.168.3.29 01
enb2 4568 192.168.3.30 02

iii) MMEs information (you can check mme information in /opt/OpenEPC/etc/mme.xml).

MMEGI MMEC ip address
mme1 123 45 192.168.4.80
mme2 23 21 192.168.4.87

iv) Component naming

Node name in this profile EPC Components
SGW MME1 & SGW
MME1 MME2

iv) Files for EPC function configurations. You will need to download them for the next step (Configurations for testing S1 handover with MME relocation).

File Contents
mme-ip.sh Set up MME2 IP addresses
get_interface_map.pl

1. Used in mme-ip.sh to get net-d, net-b and mgmt interface.

2. Used to get net_c interface in eNB2.

interMME-ho-mme1.xml MME1 xml configuration
interMME-ho-mme2.xml MME2 xml configuration
interMME-ho-enb2.xml eNB2 xml configuration

 

Configurations for testing S1 handover with MME relocation


To test S1 handover with MME relocation, you need to set up information shown above in each node. In addition, there are limitations on OpenEPC implementation to test S1 handover with MME relocation. For example, first run eNB1 and MME1 without running eNB2 and MME2 and do an initial attachment from UE.  So, you should follow below procedures to test it.

i) Kill `enodeb` process on ENB2 node

# stop running enb2
$ sudo /opt/OpenEPC/bin/enodeb.kill.sh

ii) Set up MME1 (e.g., MMEGI, MMEC, MME2 info) for S1 handover

# Replace a current mme.xml file with a new mme.xml (interMME-ho-mme1.xml) file
$ sudo /opt/OpenEPC/phantomnet/check_oepc_config.pl -i interMME-ho-mme1.xml mme.xml

# Restart mme
$ sudo /opt/OpenEPC/bin/mme.kill.sh
$ sudo /opt/OpenEPC/bin/mme.start.sh

iii) Re-start ENB1

# Re-start enb1
$ sudo /opt/OpenEPC/bin/enodeb.kill.sh
$ sudo /opt/OpenEPC/bin/enodeb.start.sh

iv) Start UE attachment in CLIENT1 node (via `users.phantomnet.org`)

# Access to client1 console
$ /opt/OpenEPC/bin/mm.attach.sh
# Trigger an attachment request.
console> mm.connect_l3 LTE

v) After UE attachments, you need to configure ENB2 and MME2. First set up ENB2. 

# Change parameters in interMME-ho-enb2.xml
# 1. Get net_c (an-lte) interface
$  perl get_interface_map.pl
LAN -> IFACE -> IP -> MAC
mgmt -> eth2 -> 10.10.1.6 -> 000423b73ea6
net-d -> eth3 -> 10.10.4.4 -> 000423b73ea7
an-lte -> eth5 -> 10.10.5.2 -> 000423b74041

# 2. eth5 is used for net_c (an-lte) interface in this experiment (In your experiments, the output will be different).
$ vim interMME-ho-enb2.xml
# Replace "net_c" with "eth5"

# Replace a current enodeb.xml file with a new enodeb.xml (interMME-ho-enb2.xml) file
$ sudo /opt/OpenEPC/phantomnet/check_oepc_config.pl -i interMME-ho-enb2.xml enodeb.xml

# Re-start enb2
$ sudo /opt/OpenEPC/bin/enodeb.kill.sh
$ sudo /opt/OpenEPC/bin/enodeb.start.sh

vi) Set up MME2

# Set up IP address for a second MME since MME2 was defined as "ANY" roles in this profile . So it does not have correct IP addresses for net-d, net-b and mgmt. 
# You need to put get_interface_map.pl and mme-ip.sh in the same directory.
$ bash mme-ip.sh

# Replace a current enodeb.xml file with a new mme.xml (interMME-ho-mme2.xml)file
$ sudo /opt/OpenEPC/phantomnet/check_oepc_config.pl -i interMME-ho-mme2.xml mme.xml

# Re-start mme2
$ sudo /opt/OpenEPC/bin/mme.kill.sh
$ sudo /opt/OpenEPC/bin/mme.start.sh

Check configurations for testing S1 handover with MME relocation


 i) Check connectivity between eNodeBs and MMEs 

# In mme1, attach to mme console.
$ /opt/OpenEPC/bin/mme.attach.sh 

# Print out a connected eNB info
console> mme.enb.print
Current Index [2] Current MME ID [4985879]
eNodeB: [2] IP [192.168.4.90] TAC [1] eNB-ID [4567] Connected IDs: 
[S1AP IDs: 7-4985879] -> [MME Index 2]

# In mme2, attach to mme console.
$ /opt/OpenEPC/bin/mme.attach.sh 

# Print out a connected eNB info
console> mme.enb.print
Current Index [2] Current MME ID [4746911]
eNodeB: [2] IP [192.168.4.91] TAC [2] eNB-ID [4568] Connected IDs: 
[S1AP IDs: 7-4746911] -> [MME Index 2]
[S1AP IDs: 0-4746911] -> [MME Index 2]

ii) Check MME configurations in MME's console. You need to check GUMMEI, Served TA, and TA MCC information from MME's console with the information listed in  "Prerequisite configurations for S1 handover with MME relocation"

# In mme1, attach to mme console.
$ /opt/OpenEPC/bin/mme.attach.sh 

# Print out MME configuration info
console> mme.config.print
S1ap Address: [192.168.4.80]
S11 Address: [192.168.4.80]
S6a Address: [192.168.254.80]
GUMMEI: [MCC:998] [MNC:98][GroupID:123][Code:45]
MME Name: [MME_1.OpenEPC]
Security: [Primary EIA:1] [Secondary EIA:1][Primary EEA:0][Secondary EEA:0]
Other: [Hash size:24] [Relative Capacity:255][Combined IMSI/EPS Attach]
Served TA: MCC [998] MNC [098] TAC [00001] 
Served TA: MCC [998] MNC [098] TAC [00001] 
TA MCC [998] MNC [098] TAC [00002] GID [00023] CODE [021] MME [192.168.4.87]
RA MCC [001] MNC [001] TAC [0012] SGSN [192.168.4.120]

# In mme2, attach to mme console.
$ /opt/OpenEPC/bin/mme.attach.sh 
# Print out MME configuration info
console) mme.config.print
S1ap Address: [192.168.4.87]
S11 Address: [192.168.4.87]
S6a Address: [192.168.254.87]
GUMMEI: [MCC:998] [MNC:98][GroupID:23][Code:21]
MME Name: [MME_1.OpenEPC]
Security: [Primary EIA:1] [Secondary EIA:1][Primary EEA:0][Secondary EEA:0]
Other: [Hash size:24] [Relative Capacity:255][Combined IMSI/EPS Attach]
Served TA: MCC [998] MNC [098] TAC [00002] 
Served TA: MCC [998] MNC [098] TAC [00002] 
TA MCC [998] MNC [098] TAC [00001] GID [00123] CODE [045] MME [192.168.4.80]
RA MCC [001] MNC [001] TAC [0012] SGSN [192.168.4.120]

 

Step 1: Trigger "Handover Request" in source eNodeB


i) ssh into the source eNodeB (In this example, ENB1)

ssh enb1.[your experiment name].[your project name].emulab.net

ii) attach to source eNodeB's console

enb1:~$ /opt/OpenEPC/bin/enodeb.attach.sh

iii) type "handover request" in enodeb console

# command format  enodeb.intra_lte_handover <imsi> <tac> <target enb's cell id>
eNodeB> enodeb.intra_lte_handover 998980000001001 02 4568

With this command, OpenEPC proceeds with the "Handover Command" procedure in S1 handover.

Step 2: Handover Notify in target eNB


i) ssh into the target eNodeB (In this example, ENB2)

ssh enb2.[your experiment name].[your project name].emulab.net

ii) attach to target eNodeB's console (ENB2)

enb2:~$ /opt/OpenEPC/bin/enodeb.attach.sh

iii) type "handover request" in target eNodeB's console (ENB2)

# command format  enodeb.handover_notify <imsi>
eNodeB> enodeb.handover_notify 998980000001001

With this command, OpenEPC  executes  the rest of S1 handover procedures. 

Step 3: Set up routing table in UE 


i) ssh into the CLIENT1 UE

ii) change routing table

# command format
# sudo route add -net <target enb's ip> netmask 255.255.255.255 dev <client network interface which has "192.168.3.33">
# sudo route add default gw <target enb's ip> <client network interface which has "192.168.3.33">

client1:~$ sudo route add -net 192.168.3.30 netmask 255.255.255.255 dev eth5
client1:~$ sudo route add default gw 192.168.3.30 dev eth5
client1:~$ route -n

iii) send traffic from UE to Internet, which goes through target enb.

client1:~$ ping 8.8.8.8 

Limitations


i) Even though all procedures are done and CLIENT1 UE can send traffic to the internet through ENB2, MME1 dies after the S1 handover completes. There are apparently OpenEPC implementation issues in the last S1HO procedure which cause the MME1 function to crash.

ii) In a future revision, we will demonstrate how to elide most of the manual steps (configurations for testing S1 handover with MME relocation) with pre/post-hooks scripts.

 

 

Questions

For any other questions, contact phantomnet-users@emulab.net