eNodeB and HSS Database Setup
M-CORD's virtual EPC should work with any standard eNodeB. We tested the Cavium eNodeB (model CNF7100-REF2-RF17). In this section we describe how to configure this eNodeB to work with M-CORD.
Connect the eNodeB to the pod
For physical connectivity, this eNodeB has a single Ethernet interface. Our test setup uses a single physical compute node for hosting the VNFs. We connect the eNodeB to one of the NICs on the compute node.
There are two logical connectivities for a eNodeB: (1) S1MME interface
connection, between eNodeB and MME for attaching process. (2) S1U interface
connection, between eNodeB and SPGWU (SGWU+PGWU) for user traffic. To enable
this connectivity, on the compute node we add the NIC connected to the eNodeB
The configuration file on Cavium eNodeB is located at /mnt/app/startup.cfg. Find the following lines and change the values:
configure net net u32enbipaddress 184.108.40.206 configure net net u32enbsubnetmask 255.255.255.0 configure net net u32enbgwipaddress 220.127.116.11 ... configure net mme u32mmeipaddress 0 18.104.22.168 configure net mme u16mmesctpportnumber 0 36412 ... configure net sgw u32sgwipaddress 0 22.214.171.124
u32enbipaddress is the eNodeB data plane IP address for S1U interface. The
default IP address in M-CORD is 126.96.36.199/24. You will need to specify it
when you create the EPC in XOS; see below.
u32enbipaddress and SPGWU IP on S1U address are on the
same flat network inside OVS,
u32enbgwipaddress (gateway IP) does not matter.
You can give any IP as long as it is not used by eNodeB or SPGWU.
u32mmeipaddress: MME IP address on S1MME interface.
36412: the default communication port number.
u32sgwipaddress: SPGWU IP address on S1U interface.
Where to get those IP addresses? As described at the end of the M-CORD quick start
page, the command
openstack server list --all-projects will list the VNFs and their IP
addresses. For example, the
flat_network_s1mme of MME VM is the
Besides this, you should also config the S1U IP and S1MME interface IP address on eNodeB by the following command lines. The default value of S1MME we use is 188.8.131.52/24, while the default value of S1U is 184.108.40.206/24.
sudo ifconfig eth0 220.127.116.11/24 sudo ip addr add 18.104.22.168/24 dev eth0
Configure the VNFs on the pod for the eNodeB
Specify the eNodeB IP addresses when creating the EPC in the XOS UI.
To create one, click on
Add on the
Virtual Evolved Packet Core ServiceInstances page. You will see:
Enodeb ip addr s1mme 22.214.171.124 external eNodeB IP address of S1-MME 126.96.36.199
188.8.131.52 is the default S1MME interface IP on the eNodeB.
184.108.40.206 is the default S1U interface IP on the eNodeB.
Make sure that the IP addresses here are the same as the IP addresses you configed on your eNodeB.
Add subscriber infomation to the HSS database
Prepare the three values of a SIM card: IMSI, key, and opc. For apn value, we will use the default value "apn1". Login to the HSS-DB VM, with user name "c3po" and password "c3po", and run:
~/c3po/db_docs/data_provisioning_users.sh <imsi> 1122334456 apn1 <key> 1 <ip>
Then login to the database:
Set the opc value:
cqlsh> use vhss; cqlsh:vhss> update users_imsi set opc='<opc>' where imsi='<imsi>';
Connect a phone to the eNodeB
You can use any phone, as long as it supports the same band as your eNodeB. Search the mobile networks. You should see your eNodeB relative name as one of the choices.
Download a ping applicaiton on your phone. You can ping the SGI interface IP address of SPGWU from the phone.
Another way to test is to use our InternetEmulator VM. The username and password are also "c3po" and "c3po". You need to modify a route on this machine:
sudo route add -net 220.127.116.11/8 gw <SPGWU-SGI-IP> dev ens3
18.104.22.168/8 is the default subnet assigned for the phones, you can ignore it.
SPGWU-SGI-IP is the SGI interface IP address on SPGWU. You can find this IP
through the same method as with the