Skip to content. | Skip to navigation

Personal tools

Navigation

You are here: Home / Wiki / PhantomNet / OEPC-Protected / Using Open Air Interface, SDR hardware and OPEN-EPC core to create an end-to-end experiment in PhantomNet

Using Open Air Interface, SDR hardware and OPEN-EPC core to create an end-to-end experiment in PhantomNet

Overview


This tutorial will walk you through steps to create an end-to-end LTE/EPC network using Software-defined radio (SDR) eNodeB running Open Air Interface software and USRP B210 RF hardware and an OPEN-EPC core instance.

 Topology


All of the components in this tutorial are hosted in PhantomNet infrastructure. The radio part of this tutorial is a SDR eNodeB (i.e., Open Air Interface (OAI) software running on a USRP B210 connected to a intel-NUC unit via USB). The EPC core network is an OpenEPC instance with SGW, PGW, MME and HSS. The UE used is a Nexus 5 with pre-install and pre-configured SIM card that works with the SDR (i.e., LTE FDD band 4). The Nexus 5's SIM card is registered as a subscriber in the OpenEPC instance. The radio link between the Nexus 5 and the SDR eNodeB is an attenuated link. Figure 1 shows the topology.

Figure 1. Experiment topology

Experiment profile 


 

There is a profile in PhantomNet that allows you to instantiate an experiment with the topology shown above. The profile's name is "oai-epc". To instantiate an experiment using the profile in PhantomNet, in your home page: "Actions" -> "Start Experiment" -> "Change Profile" -> search for "oai-epc" -> "Initiate".

After instantiation, your experiment will have the following machines:

  • Epc: runs OpenEPC's HSS, EPC enablers etc components of the EPC core.
  • Pgw: runs PGW of the EPC core.
  • Sgw: runs SGW and MME of the EPC core.
  • Oai: runs OpenAirInterface5G SDR eNodeB. This is the NUC unit mentioned above. This node is packaged with an OpenAirInterface5G (OAI) runs on a customized Ubuntu 14.04 image. The OAI source code is pre-downloaded and pre-compiled.
  • Adb-tgt: runs a ADB daemon that is a proxy of the Nexus 5 device. You can control your Nexus 5 using ADB interface on this node (for more information of how to interact with Nexus 5 using ADB, see this  and this.)
  • Rue1: the actual Nexus 5 device. Note that interactions with the Nexus 5 are done via the Adb-tgt node.

On the Oai node, the OAI source code locates at /usr/local/src/airinterface/openairinterface5g/In this tutorial we use OpenAirInterface5g master branch commit 265fc349b454acc69de74f395df96fe591606bfd. We fixed several minor issues with the code and build a working binary for it in PhantomNet. 

Understand SDR eNodeB configuration


On Oai node, the configuration file for the OAI eNodeB is at /usr/local/src/airinterface/openairinterface5g/SCRIPTS/enb.band4.tm1.usrpb210.conf. The file on the Oai node is ready to use. Here we just point out some configurations to show how the eNodeB is configure, e.g., Cell ID, country code, eNodeB's radio parameters such as operational band, frequency, gain etc. We use FDD band 4 with the downlink central frequency of 2132.5 MHz and uplink central frequency of 1732.5 MHz (i.e., uplink frequency offset is 4MHz):

  eutra_band                                         = 4;
  downlink_frequency                                 = 2132500000L;
  uplink_frequency_offset                            = -400000000;
 

The configuration file also specifies how the SDR eNodeB is connected to the OpenEPC core network. For example, mme_ip_address is the  S1AP interface's IP address of the MME, ENB_INTERFACE_NAME_FOR_S1_MME is the S1-AP interface on the eNodeB side. As specified in the configuration file, the SDR eNodeB's S1AP interface should have an IP address of 192.168.4.100 and the MME's S1AP interface should have an IP address of 192.168.4.80:

 mme_ip_address      = ( { ipv4       = "192.168.4.80";
 ....

 ENB_INTERFACE_NAME_FOR_S1_MME            = "eth1";
 ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.4.100/24";
      
 ENB_INTERFACE_NAME_FOR_S1U               = "eth1";
 ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.4.100/24";
 ENB_PORT_FOR_S1U                         = 2152; # Spec 2152

 

As in the configuration file above. We need to set IP address of eNodeB's S1AP interface on OAI node to 192.168.4.100: 

sudo ifconfig eth1 192.168.4.100

 

Run SDR eNodeB


Log in to the OAI node with and "-YA" option. This option forwards local identity to the OAI node and allows the node to execute ssh commands remotely on other nodes (SGW, PGW, etc).

ssh -YA <your username>@oai.<experiment name>.phantomnet.emulab.net

Run the SDR eNodeB using a script:

bash /usr/local/src/airinterface/openairinterface5g/SCRIPTS/run_lte_softmodem.sh

When this script runs, it will ask you to log into other nodes and flushes states on SGW/PGW/HSS etc. Please input yes to allow it. After connecting to the MME, the SDR eNodeB will broadcast signal and wait for connection from the Nexus 5. 

Restart Nexus 5 to trigger network attach


Log in to the Adb-tgt node:

ssh <your username>@adb-tgt.<experiment name>.phantomnet.emulab.net

Open a ADB tunnel to the Nexus 5 device:

adb-tgt:~> pnadb rue1
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
connected to pc599.emulab.net:8004 

Once connected, toggle airplane mode on the Nexus 5 to trigger an Attach Procedure:

adb shell settings put global airplane_mode_on 1
adb shell am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true
adb shell settings put global airplane_mode_on 0
adb shell am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true

After toggling the airplane mode, the Nexus 5 will attach to the eNodeB. You can see the interaction on the SDR eNodeB's screen log.

Access Internet on the Nexus 5:


As the Nexus 5 is connected to the LTE network, you can now ping the Internet: 

adb shell ping 8.8.8.8

 

(Extra) Running SDR eNodeB with a signal scope


There is an option to run the SDR eNodeB with a scope showing radio signal information and other statistic information. To enable the scope (note that running the scope requires X forwarding and a good network connection to forward the X screen):

sudo /usr/local/src/airinterface/openairinterface5g/targets/bin/lte-softmodem.Rel10 -d -O /usr/local/src/airinterface/openairinterface5g/SCRIPTS/enb.band4.tm1.usrpb210.conf

Conclusion


This tutorial walked you through steps to instantiate an end-to-end LTE network with SDR eNodeB, OpenEPC, and Nexus 5. The tutorial shown how to connect the Nexus 5 to the SDR eNodeB and access the Internet.