wiki:Tutorials/g0WmLTE/Tutorial5

Version 17 (modified by msherman, 8 years ago) ( diff )

OpenAirInterface LTE

Prerequisites

This tutorial series assumes you have an ORBIT account, have scheduled a session on the ORBIT testbed, are familiar with SSH'ing into the testbed itself, and are familiar with the basics of running ORBIT experiments. If you have not done these things yet, you may wish to do so before taking a look at this slightly more advanced experiment. If you are unfamiliar with or are entirely new to ORBIT, you may wish to start here.

This tutorial also assumes basic familiarity with LTE standard. It uses OpenAirInterface open source software implementation of LTE basestation (eNodeB or eNB) and modem (user equipment or UE) developed at Eurecom. The tutorial given here is based on the https://twiki.eurecom.fr/twiki/bin/view/OpenAirInterface/HowToConnectOAIENBWithOAIUEWithoutS1Interface tutorial.

The image used for this experiment is 'oai-nos1.ndz'. The image uses Ubuntu 14.04 and has low-latency 3.13 kernel install and UHD drivers needed for B210/X310 USRPs (UHD 3.8.2)) as well as the OpenAirInteface source code installed in /root/openairinterface5g/. More details on various build options are available on OpenAirInterface build page.

In this tutorial we will use nodes equipped with USRP B210 and have the basestation on node1-1 and modem on node1-2 on sandbox 1.

Quickstart Option

We have an image available, named oai-dev.ndz. It has all the necessary driver and software pre-installed, and two scripts available to immediately boot up the eNB and UE.

  1. To proceed, after having a reservation, load the following image.
    • omf load -t node1-1,node1-2 -i oai-dev.ndz
    • The nodes will automatically turn off when imaging is completed.
  2. Turn the nodes on.
    • omf tell -a on -t node1-1,node1-2
  3. Open a terminal to each node. You must enable X11 Forwarding to see the GUI and statistics screens.
    1. This is a two step process, to extend the tunnel to your local machine. SSH with tunnel to the console, and then again with the tunnel from the console to the node.
    2. Linux: Simply use the -X or -Y flags, e.g.
      1. ssh -Y username@sb1.orbit-lab.org
      2. ssh -Y root@node1-1.sb1.orbit-lab.org
      3. Repeat above two steps for second node.
    3. Windows: You must either use an X11 capable ssh client, such as mobaXterm or bitvise ssh, or install a standalone x11 client, such as FIXME
      1. Start x11 capable client
      2. SSH to console
      3. SSH to node
    4. Mac: You must use an X11 capable ssh client such as FIXME, or install a standalone X11 client such as FIXME
      1. Start x11 capable client
      2. SSH to console
      3. SSH to node
  4. On the first node, execute script ./CompandRuneNB
  5. On the second node, execute script ./CompandRunUE
  6. For subsequent runs, execute ./runeNB or ./runUE instead, to avoid recompiling.
  7. These scripts will create interface oai0 and assign an address.
    1. Use ifconfig or ip a to see the address assigned.
  8. You should be able to ping from one node to the other on these addresses.
  9. For throughput testing
    1. On one node, execute iperf -s
    2. On the second node, execute iperf -c Put_other_oai_IP_here

Prepare the nodes

ORBIT Images with preloaded OAI software have been made available. If you prefer to prepare a new image starting from a baseline,

1a. Load the image with the OpenAirInterface code on the nodes. After imaging the nodes are turned off automatically.

omf load -i oai-nos1.ndz -t all

Load an Image

  1. Before we begin using the nodes, it's a good idea to check their status first. This is done with the omf stat command.

    omf stat

    This omf command is used to display the power status of the node/domain.

    Usage: omf stat

    username@consoles.outdoor:omf stat
    Returns the status of the nodes in a testbed
    Usage:
          omf-5.4 stat [-h] [-s] [-t TOPOLOGY] [-c AGGREGATE]
     
          With: 
          -h, --help                print this help message
          -s, --summary             print a summary of the node status for the testbed
          -c, --config AGGREGATE    use testbed AGGREGATE
          -t, --topology TOPOLOGY   a valid topology file or description (defaults to 'system:topo:all')
     
          Some Examples: 
                        omf-5.4 stat
                        omf-5.4 stat -s
                        omf-5.4 stat -t omf.nicta.node1,omf.nicta.node2 -c sb1
                        omf-5.4 stat -t system:topo:all -c grid
    

    Individual nodes are identified in the output of stat command by their fully qualified domain name (FQDN). This establishes their "coordinates" and the "domain" to which they belong. Nodes in different domains typically can NOT see each other. Node can be in 1 of 3 states:

    POWEROFF Node is Available for use but turned off
    POWERON Node is Available and is on
    NOT REGISTERED Node is not Available for use

    Example: omf stat on the outdoor domain

    user@console.outdoor:~# omf stat -t all
    
     INFO NodeHandler: OMF Experiment Controller 5.4 (git 6d34264)
     INFO NodeHandler: Slice ID: default_slice (default)
     INFO NodeHandler: Experiment ID: default_slice-2012-10-14t14.42.15-04.00
     INFO NodeHandler: Message authentication is disabled
     INFO Experiment: load system:exp:stdlib
     INFO property.resetDelay: value = 210 (Fixnum)
     INFO property.resetTries: value = 1 (Fixnum)
     INFO Experiment: load system:exp:eventlib
     INFO Experiment: load system:exp:stat
     INFO Topology: Loading topology ''.
     INFO property.nodes: value = "system:topo:all" (String)
     INFO property.summary: value = false (FalseClass)
     INFO Topology: Loading topology 'system:topo:all'.
     Talking to the CMC service, please wait
    -----------------------------------------------
     Domain: outdoor.orbit-lab.org
     Node: node3-6.outdoor.orbit-lab.org   	 State: NOT REGISTERED
     Node: node3-3.outdoor.orbit-lab.org   	 State: POWEROFF
     Node: node2-10.outdoor.orbit-lab.org    State: POWEROFF
     Node: node1-10.outdoor.orbit-lab.org    State: POWEROFF
     Node: node1-8.outdoor.orbit-lab.org   	 State: POWERON
     Node: node1-6.outdoor.orbit-lab.org   	 State: POWERON
     Node: node3-2.outdoor.orbit-lab.org   	 State: POWEROFF
     Node: node3-1.outdoor.orbit-lab.org   	 State: POWEROFF
     Node: node1-3.outdoor.orbit-lab.org   	 State: POWERON
     Node: node3-5.outdoor.orbit-lab.org   	 State: POWEROFF
     Node: node2-5.outdoor.orbit-lab.org   	 State: NOT REGISTERED
     Node: node1-2.outdoor.orbit-lab.org   	 State: POWERON
    -----------------------------------------------
     INFO Experiment: Switching ON resources which are OFF
     INFO EXPERIMENT_DONE: Event triggered. Starting the associated tasks.
     INFO NodeHandler: 
     INFO NodeHandler: Shutting down experiment, please wait...
     INFO NodeHandler: 
     INFO run: Experiment default_slice-2012-10-14t14.42.15-04.00 finished after 0:6
    

  2. It is recommended that the node be in the POWEROFF state prior to any experiment process. If the node is in the POWERON state you can use the omf tell command to get the node into the off state.

    omf tell

    OMF command to control the power state/reset the nodes.

    Usage: omf tell

    user@console:omf tell
    Switch ON/OFF and reboot the nodes in a testbed
    Usage:
          omf tell [-h] -t TOPOLOGY -a ACTION [-c AGGREGATE]
     
          With: 
          -h, --help           print this help message
     
          -a, --action ACTION  specify an action
          ACTION:
          on              turn node(s) ON
          offs            turn node(s) OFF (soft)
          offh            turn node(s) OFF (hard)
          reboot          reboots node(s) (soft)
          reset           resets node(s) (hard)
     
          -h, --help                print this help message
          -t, --topology TOPOLOGY   a valid topology file or description (MANDATORY)
          -c, --config AGGREGATE    use testbed AGGREGATE
     
          Some Examples: 
                        omf tell -a reset -t node1-1.grid.orbit-lab.org
                        omf tell -a on -t system:topo:all -c grid
                        omf tell -a reboot -t node1-1
                        omf tell -a offh -t [1..2,1..5]
                        omf tell -a offh -t system:topo:all
                        omf tell -a reset -t system:topo:imaged
    

    The commands are: on, offh (equivalent to pulling out the power cord), offs (software shutdown), reboot (software reboot) and reset (hardware reset).

    Example: turn off node1-1 on the outdoor domain

    user@console.outdoor:~# omf tell -a offh -t node1-1
    
     INFO NodeHandler: OMF Experiment Controller 5.4 (git 3fb37b9)
     INFO NodeHandler: Reading configuration file /etc/omf-expctl-5.4/services.yaml
     INFO NodeHandler: Add domain http - http://internal1.orbit-lab.org:5054/
     INFO NodeHandler: Add domain http - http://repository1.orbit-lab.org:5054/
     INFO NodeHandler: Slice ID: default_slice (default)
     INFO NodeHandler: Experiment ID: default_slice-2014-09-30t00.24.28.504-04.00
     INFO NodeHandler: Message authentication is disabled
     INFO Experiment: load system:exp:stdlib
     INFO property.resetDelay: resetDelay = 230 (Fixnum)
     INFO property.resetTries: resetTries = 1 (Fixnum)
     INFO Experiment: load system:exp:eventlib
     INFO Experiment: load system:exp:winlib
     INFO Experiment: load system:exp:tell
     INFO property.nodes: nodes = "node1-1" (String)
     INFO property.command: command = "offh" (String)
    
    Talking to the CMC service, please wait
    -----------------------------------------------
     Node: node1-1.outdoor.orbit-lab.org   	 Reply: OK
    -----------------------------------------------
    
     INFO EXPERIMENT_DONE: Event triggered. Starting the associated tasks.
     INFO NodeHandler: 
     INFO NodeHandler: Shutting down experiment, please wait...
     INFO NodeHandler: 
     INFO run: Experiment default_slice-2014-09-30t00.24.28.504-04.00 finished after 0:10
    

  3. Once node set is on an POWEROFF state, load an image with omf load command

    omf load

    Load command is used to put an image onto the hard disk of the node.

    Usage: omf load

    Install a given disk image on the nodes in a testbed
    Usage:
          omf-5.4 load [-h] [-i IMAGE_PATH] [-o TIMEOUT] [-t TOPOLOGY] [-c AGGREGATE]
     
          With: 
          -h, --help                print this help message
          -c, --config AGGREGATE    use testbed AGGREGATE
          -t, --topology TOPOLOGY   a valid topology file or description (defaults to 'system:topo:all')
                                    (if a file 'TOPOLOGY' doesn't exist, interpret it as a comma-separated list of nodes)
          -i, --image IMAGE         disk image to load
                                    (default is 'baseline.ndz', the latest stable baseline image)
          -o, --timeout TIMEOUT     a duration (in sec.) after which imageNodes should stop waiting for
                                    nodes that have not finished their image installation
                                    (default is 800 sec, i.e. 13min 20sec)
              --outpath PATH        Path where the resulting Topologies should be saved
                                    (default is '/tmp')
              --outprefix PREFIX    Prefix to use for naming the resulting Topologies
                                    (default is your experiment ID)
     
          Some Examples: 
                        omf-5.4 load
                        omf-5.4 load -t system:topo:all -i baseline-2.4.ndz
                        omf-5.4 load -t omf.nicta.node1 -i wireless-2.6.ndz
                        omf-5.4 load -t omf.nicta.node1,omf.nicta.node2 -i baseline.ndz -o 400
                        omf-5.4 load -t system:topo:circle -i my_Own_Image.ndz
                        omf-5.4 load -t my_Own_Topology -i baseline-2.2.ndz -t 600 -c grid
                        omf-5.4 load -t my_Own_Topology --outpath ./ --outprefix my_Own_Prefix
    

    Two important arguments are TOPOLOGY describing the set of nodes one wishes to image , and !IMAGE specifying the name of the image one wants to load the nodes with. If the imaging process does not does not finish within the default timeout period, that period can be increase by using the -o flag (e.g. -o 1600). Typical command to load both nodes of sandbox 1 with the baseline image would look like:

    Example: omf load-i baseline.ndz -t node1-1

    username@console.sb3:~$ omf load -i baseline.ndz -t node1-1
    
    DEBUG FQDN:console.sb3.orbit-lab.org:
     INFO NodeHandler: OMF Experiment Controller 5.4 (git 861d645)
     INFO NodeHandler: Reading configuration file /etc/omf-expctl-5.4/services.yaml
     INFO NodeHandler: Add domain http - http://internal1.orbit-lab.org:5054/
     INFO NodeHandler: Add domain http - http://repository1.orbit-lab.org:5054/
     INFO NodeHandler: Add domain http - http://external1.orbit-lab.org:5054/
     INFO NodeHandler: Slice ID: pxe_slice
     INFO NodeHandler: Experiment ID: pxe_slice-2018-08-08t13.41.37.814-04.00
     INFO NodeHandler: Message authentication is disabled
     INFO Experiment: load system:exp:stdlib
     INFO property.resetDelay: resetDelay = 230 (Fixnum)
     INFO property.resetTries: resetTries = 1 (Fixnum)
     INFO Experiment: load system:exp:eventlib
     INFO Experiment: load system:exp:winlib
     INFO Experiment: load system:exp:imageNode
     INFO property.nodes: nodes = "node1-1" (String)
     INFO property.image: image = "baseline.ndz" (String)
     INFO property.domain: domain = "sb3.orbit-lab.org" (String)
     INFO property.outpath: outpath = "/tmp" (String)
     INFO property.outprefix: outprefix = "pxe_slice-2018-08-08t13.41.37.814-04.00" (String)
     INFO property.timeout: timeout = 800 (Fixnum)
     INFO property.resize: resize = nil (NilClass)
     INFO Topology: Loaded topology 'system:topo:registered'.
     INFO property.resetDelay: resetDelay = 100 (Fixnum)
     INFO Experiment: Resetting resources
     INFO stdlib: Waiting for nodes (Up/Down/Total): 0/1/1 - (still down: node1-1.sb3.orbit-lab.org) [0 sec.]
     INFO stdlib: Waiting for nodes (Up/Down/Total): 0/1/1 - (still down: node1-1.sb3.orbit-lab.org) [10 sec.]
     INFO stdlib: Waiting for nodes (Up/Down/Total): 0/1/1 - (still down: node1-1.sb3.orbit-lab.org) [20 sec.]
     INFO stdlib: Waiting for nodes (Up/Down/Total): 0/1/1 - (still down: node1-1.sb3.orbit-lab.org) [30 sec.]
     INFO stdlib: Waiting for nodes (Up/Down/Total): 0/1/1 - (still down: node1-1.sb3.orbit-lab.org) [40 sec.]
     INFO stdlib: Waiting for nodes (Up/Down/Total): 0/1/1 - (still down: node1-1.sb3.orbit-lab.org) [50 sec.]
     INFO exp: Progress(0/0/1): 0/0/0 min(node1-1.sb3.orbit-lab.org)/avg/max (59) - Timeout: 790 sec.
     INFO ALL_UP: Event triggered. Starting the associated tasks.
     INFO BRING_UP: Event triggered. Starting the associated tasks.
     INFO Experiment: Bringing up resources
     INFO exp: Progress(0/0/1): 50/50/50 min(node1-1.sb3.orbit-lab.org)/avg/max (59) - Timeout: 780 sec.
     INFO exp: Progress(0/0/1): 80/80/80 min(node1-1.sb3.orbit-lab.org)/avg/max (59) - Timeout: 770 sec.
     INFO exp: Progress(1/0/1): 100/100/100 min()/avg/max (59) - Timeout: 760 sec.
     INFO exp:  -----------------------------
     INFO exp:  Imaging Process Done
     INFO exp:  1 node successfully imaged - Topology saved in '/tmp/pxe_slice-2018-08-08t13.41.37.814-04.00-topo-success.rb'
     INFO exp:  -----------------------------
     INFO EXPERIMENT_DONE: Event triggered. Starting the associated tasks.
     INFO NodeHandler:
     INFO NodeHandler: Shutting down experiment, please wait...
     INFO NodeHandler:
     INFO NodeHandler: Shutdown flag is set - Turning Off the resources
     INFO run: Experiment pxe_slice-2018-08-08t13.41.37.814-04.00 finished after 1:44
    
    

    If the node is in the NOT REGISTERED state, you may need to wait for it to recover the POWEROFF state (it some times requires a few moments for the services to sync up). If the node takes more than 60 seconds to come out of the NODE NOT AVAILABLE state please report it to an administrator.
2a. Turn ON the nodes that successfully imaged (give them some time and check their status with omf stat before proceeding).

omf tell -a on -t all

Turn the Nodes ON

To turn the nodes on use omf tell command:

omf tell

OMF command to control the power state/reset the nodes.

Usage: omf tell

user@console:omf tell
Switch ON/OFF and reboot the nodes in a testbed
Usage:
      omf tell [-h] -t TOPOLOGY -a ACTION [-c AGGREGATE]
 
      With: 
      -h, --help           print this help message
 
      -a, --action ACTION  specify an action
      ACTION:
      on              turn node(s) ON
      offs            turn node(s) OFF (soft)
      offh            turn node(s) OFF (hard)
      reboot          reboots node(s) (soft)
      reset           resets node(s) (hard)
 
      -h, --help                print this help message
      -t, --topology TOPOLOGY   a valid topology file or description (MANDATORY)
      -c, --config AGGREGATE    use testbed AGGREGATE
 
      Some Examples: 
                    omf tell -a reset -t node1-1.grid.orbit-lab.org
                    omf tell -a on -t system:topo:all -c grid
                    omf tell -a reboot -t node1-1
                    omf tell -a offh -t [1..2,1..5]
                    omf tell -a offh -t system:topo:all
                    omf tell -a reset -t system:topo:imaged

The commands are: on, offh (equivalent to pulling out the power cord), offs (software shutdown), reboot (software reboot) and reset (hardware reset).

Example: turn off node1-1 on the outdoor domain

user@console.outdoor:~# omf tell -a offh -t node1-1

 INFO NodeHandler: OMF Experiment Controller 5.4 (git 3fb37b9)
 INFO NodeHandler: Reading configuration file /etc/omf-expctl-5.4/services.yaml
 INFO NodeHandler: Add domain http - http://internal1.orbit-lab.org:5054/
 INFO NodeHandler: Add domain http - http://repository1.orbit-lab.org:5054/
 INFO NodeHandler: Slice ID: default_slice (default)
 INFO NodeHandler: Experiment ID: default_slice-2014-09-30t00.24.28.504-04.00
 INFO NodeHandler: Message authentication is disabled
 INFO Experiment: load system:exp:stdlib
 INFO property.resetDelay: resetDelay = 230 (Fixnum)
 INFO property.resetTries: resetTries = 1 (Fixnum)
 INFO Experiment: load system:exp:eventlib
 INFO Experiment: load system:exp:winlib
 INFO Experiment: load system:exp:tell
 INFO property.nodes: nodes = "node1-1" (String)
 INFO property.command: command = "offh" (String)

Talking to the CMC service, please wait
-----------------------------------------------
 Node: node1-1.outdoor.orbit-lab.org   	 Reply: OK
-----------------------------------------------

 INFO EXPERIMENT_DONE: Event triggered. Starting the associated tasks.
 INFO NodeHandler: 
 INFO NodeHandler: Shutting down experiment, please wait...
 INFO NodeHandler: 
 INFO run: Experiment default_slice-2014-09-30t00.24.28.504-04.00 finished after 0:10

3a. [OPTIONAL] Upgrade to the latest code and compile

oai
git pull
cd cmake_targets
./build_oai -I --install-optional-packages -w USRP

#If updating eNB
./build_oai --eNB -C -w USRP

#If updating UE
./build_oai --UE -C -w USRP

1b. [ALTERNATIVE METHOD]

Compile from scratch

  1. Load the image with the OpenAirInterface code on the nodes. After imaging the nodes are turned off automatically.

    omf load -i baseline.ndz -t all

    Load an Image

    1. Before we begin using the nodes, it's a good idea to check their status first. This is done with the omf stat command.

      omf stat

      This omf command is used to display the power status of the node/domain.

      Usage: omf stat

      username@consoles.outdoor:omf stat
      Returns the status of the nodes in a testbed
      Usage:
            omf-5.4 stat [-h] [-s] [-t TOPOLOGY] [-c AGGREGATE]
       
            With: 
            -h, --help                print this help message
            -s, --summary             print a summary of the node status for the testbed
            -c, --config AGGREGATE    use testbed AGGREGATE
            -t, --topology TOPOLOGY   a valid topology file or description (defaults to 'system:topo:all')
       
            Some Examples: 
                          omf-5.4 stat
                          omf-5.4 stat -s
                          omf-5.4 stat -t omf.nicta.node1,omf.nicta.node2 -c sb1
                          omf-5.4 stat -t system:topo:all -c grid
      

      Individual nodes are identified in the output of stat command by their fully qualified domain name (FQDN). This establishes their "coordinates" and the "domain" to which they belong. Nodes in different domains typically can NOT see each other. Node can be in 1 of 3 states:

      POWEROFF Node is Available for use but turned off
      POWERON Node is Available and is on
      NOT REGISTERED Node is not Available for use

      Example: omf stat on the outdoor domain

      user@console.outdoor:~# omf stat -t all
      
       INFO NodeHandler: OMF Experiment Controller 5.4 (git 6d34264)
       INFO NodeHandler: Slice ID: default_slice (default)
       INFO NodeHandler: Experiment ID: default_slice-2012-10-14t14.42.15-04.00
       INFO NodeHandler: Message authentication is disabled
       INFO Experiment: load system:exp:stdlib
       INFO property.resetDelay: value = 210 (Fixnum)
       INFO property.resetTries: value = 1 (Fixnum)
       INFO Experiment: load system:exp:eventlib
       INFO Experiment: load system:exp:stat
       INFO Topology: Loading topology ''.
       INFO property.nodes: value = "system:topo:all" (String)
       INFO property.summary: value = false (FalseClass)
       INFO Topology: Loading topology 'system:topo:all'.
       Talking to the CMC service, please wait
      -----------------------------------------------
       Domain: outdoor.orbit-lab.org
       Node: node3-6.outdoor.orbit-lab.org   	 State: NOT REGISTERED
       Node: node3-3.outdoor.orbit-lab.org   	 State: POWEROFF
       Node: node2-10.outdoor.orbit-lab.org    State: POWEROFF
       Node: node1-10.outdoor.orbit-lab.org    State: POWEROFF
       Node: node1-8.outdoor.orbit-lab.org   	 State: POWERON
       Node: node1-6.outdoor.orbit-lab.org   	 State: POWERON
       Node: node3-2.outdoor.orbit-lab.org   	 State: POWEROFF
       Node: node3-1.outdoor.orbit-lab.org   	 State: POWEROFF
       Node: node1-3.outdoor.orbit-lab.org   	 State: POWERON
       Node: node3-5.outdoor.orbit-lab.org   	 State: POWEROFF
       Node: node2-5.outdoor.orbit-lab.org   	 State: NOT REGISTERED
       Node: node1-2.outdoor.orbit-lab.org   	 State: POWERON
      -----------------------------------------------
       INFO Experiment: Switching ON resources which are OFF
       INFO EXPERIMENT_DONE: Event triggered. Starting the associated tasks.
       INFO NodeHandler: 
       INFO NodeHandler: Shutting down experiment, please wait...
       INFO NodeHandler: 
       INFO run: Experiment default_slice-2012-10-14t14.42.15-04.00 finished after 0:6
      

    2. It is recommended that the node be in the POWEROFF state prior to any experiment process. If the node is in the POWERON state you can use the omf tell command to get the node into the off state.

      omf tell

      OMF command to control the power state/reset the nodes.

      Usage: omf tell

      user@console:omf tell
      Switch ON/OFF and reboot the nodes in a testbed
      Usage:
            omf tell [-h] -t TOPOLOGY -a ACTION [-c AGGREGATE]
       
            With: 
            -h, --help           print this help message
       
            -a, --action ACTION  specify an action
            ACTION:
            on              turn node(s) ON
            offs            turn node(s) OFF (soft)
            offh            turn node(s) OFF (hard)
            reboot          reboots node(s) (soft)
            reset           resets node(s) (hard)
       
            -h, --help                print this help message
            -t, --topology TOPOLOGY   a valid topology file or description (MANDATORY)
            -c, --config AGGREGATE    use testbed AGGREGATE
       
            Some Examples: 
                          omf tell -a reset -t node1-1.grid.orbit-lab.org
                          omf tell -a on -t system:topo:all -c grid
                          omf tell -a reboot -t node1-1
                          omf tell -a offh -t [1..2,1..5]
                          omf tell -a offh -t system:topo:all
                          omf tell -a reset -t system:topo:imaged
      

      The commands are: on, offh (equivalent to pulling out the power cord), offs (software shutdown), reboot (software reboot) and reset (hardware reset).

      Example: turn off node1-1 on the outdoor domain

      user@console.outdoor:~# omf tell -a offh -t node1-1
      
       INFO NodeHandler: OMF Experiment Controller 5.4 (git 3fb37b9)
       INFO NodeHandler: Reading configuration file /etc/omf-expctl-5.4/services.yaml
       INFO NodeHandler: Add domain http - http://internal1.orbit-lab.org:5054/
       INFO NodeHandler: Add domain http - http://repository1.orbit-lab.org:5054/
       INFO NodeHandler: Slice ID: default_slice (default)
       INFO NodeHandler: Experiment ID: default_slice-2014-09-30t00.24.28.504-04.00
       INFO NodeHandler: Message authentication is disabled
       INFO Experiment: load system:exp:stdlib
       INFO property.resetDelay: resetDelay = 230 (Fixnum)
       INFO property.resetTries: resetTries = 1 (Fixnum)
       INFO Experiment: load system:exp:eventlib
       INFO Experiment: load system:exp:winlib
       INFO Experiment: load system:exp:tell
       INFO property.nodes: nodes = "node1-1" (String)
       INFO property.command: command = "offh" (String)
      
      Talking to the CMC service, please wait
      -----------------------------------------------
       Node: node1-1.outdoor.orbit-lab.org   	 Reply: OK
      -----------------------------------------------
      
       INFO EXPERIMENT_DONE: Event triggered. Starting the associated tasks.
       INFO NodeHandler: 
       INFO NodeHandler: Shutting down experiment, please wait...
       INFO NodeHandler: 
       INFO run: Experiment default_slice-2014-09-30t00.24.28.504-04.00 finished after 0:10
      

    3. Once node set is on an POWEROFF state, load an image with omf load command

      omf load

      Load command is used to put an image onto the hard disk of the node.

      Usage: omf load

      Install a given disk image on the nodes in a testbed
      Usage:
            omf-5.4 load [-h] [-i IMAGE_PATH] [-o TIMEOUT] [-t TOPOLOGY] [-c AGGREGATE]
       
            With: 
            -h, --help                print this help message
            -c, --config AGGREGATE    use testbed AGGREGATE
            -t, --topology TOPOLOGY   a valid topology file or description (defaults to 'system:topo:all')
                                      (if a file 'TOPOLOGY' doesn't exist, interpret it as a comma-separated list of nodes)
            -i, --image IMAGE         disk image to load
                                      (default is 'baseline.ndz', the latest stable baseline image)
            -o, --timeout TIMEOUT     a duration (in sec.) after which imageNodes should stop waiting for
                                      nodes that have not finished their image installation
                                      (default is 800 sec, i.e. 13min 20sec)
                --outpath PATH        Path where the resulting Topologies should be saved
                                      (default is '/tmp')
                --outprefix PREFIX    Prefix to use for naming the resulting Topologies
                                      (default is your experiment ID)
       
            Some Examples: 
                          omf-5.4 load
                          omf-5.4 load -t system:topo:all -i baseline-2.4.ndz
                          omf-5.4 load -t omf.nicta.node1 -i wireless-2.6.ndz
                          omf-5.4 load -t omf.nicta.node1,omf.nicta.node2 -i baseline.ndz -o 400
                          omf-5.4 load -t system:topo:circle -i my_Own_Image.ndz
                          omf-5.4 load -t my_Own_Topology -i baseline-2.2.ndz -t 600 -c grid
                          omf-5.4 load -t my_Own_Topology --outpath ./ --outprefix my_Own_Prefix
      

      Two important arguments are TOPOLOGY describing the set of nodes one wishes to image , and !IMAGE specifying the name of the image one wants to load the nodes with. If the imaging process does not does not finish within the default timeout period, that period can be increase by using the -o flag (e.g. -o 1600). Typical command to load both nodes of sandbox 1 with the baseline image would look like:

      Example: omf load-i baseline.ndz -t node1-1

      username@console.sb3:~$ omf load -i baseline.ndz -t node1-1
      
      DEBUG FQDN:console.sb3.orbit-lab.org:
       INFO NodeHandler: OMF Experiment Controller 5.4 (git 861d645)
       INFO NodeHandler: Reading configuration file /etc/omf-expctl-5.4/services.yaml
       INFO NodeHandler: Add domain http - http://internal1.orbit-lab.org:5054/
       INFO NodeHandler: Add domain http - http://repository1.orbit-lab.org:5054/
       INFO NodeHandler: Add domain http - http://external1.orbit-lab.org:5054/
       INFO NodeHandler: Slice ID: pxe_slice
       INFO NodeHandler: Experiment ID: pxe_slice-2018-08-08t13.41.37.814-04.00
       INFO NodeHandler: Message authentication is disabled
       INFO Experiment: load system:exp:stdlib
       INFO property.resetDelay: resetDelay = 230 (Fixnum)
       INFO property.resetTries: resetTries = 1 (Fixnum)
       INFO Experiment: load system:exp:eventlib
       INFO Experiment: load system:exp:winlib
       INFO Experiment: load system:exp:imageNode
       INFO property.nodes: nodes = "node1-1" (String)
       INFO property.image: image = "baseline.ndz" (String)
       INFO property.domain: domain = "sb3.orbit-lab.org" (String)
       INFO property.outpath: outpath = "/tmp" (String)
       INFO property.outprefix: outprefix = "pxe_slice-2018-08-08t13.41.37.814-04.00" (String)
       INFO property.timeout: timeout = 800 (Fixnum)
       INFO property.resize: resize = nil (NilClass)
       INFO Topology: Loaded topology 'system:topo:registered'.
       INFO property.resetDelay: resetDelay = 100 (Fixnum)
       INFO Experiment: Resetting resources
       INFO stdlib: Waiting for nodes (Up/Down/Total): 0/1/1 - (still down: node1-1.sb3.orbit-lab.org) [0 sec.]
       INFO stdlib: Waiting for nodes (Up/Down/Total): 0/1/1 - (still down: node1-1.sb3.orbit-lab.org) [10 sec.]
       INFO stdlib: Waiting for nodes (Up/Down/Total): 0/1/1 - (still down: node1-1.sb3.orbit-lab.org) [20 sec.]
       INFO stdlib: Waiting for nodes (Up/Down/Total): 0/1/1 - (still down: node1-1.sb3.orbit-lab.org) [30 sec.]
       INFO stdlib: Waiting for nodes (Up/Down/Total): 0/1/1 - (still down: node1-1.sb3.orbit-lab.org) [40 sec.]
       INFO stdlib: Waiting for nodes (Up/Down/Total): 0/1/1 - (still down: node1-1.sb3.orbit-lab.org) [50 sec.]
       INFO exp: Progress(0/0/1): 0/0/0 min(node1-1.sb3.orbit-lab.org)/avg/max (59) - Timeout: 790 sec.
       INFO ALL_UP: Event triggered. Starting the associated tasks.
       INFO BRING_UP: Event triggered. Starting the associated tasks.
       INFO Experiment: Bringing up resources
       INFO exp: Progress(0/0/1): 50/50/50 min(node1-1.sb3.orbit-lab.org)/avg/max (59) - Timeout: 780 sec.
       INFO exp: Progress(0/0/1): 80/80/80 min(node1-1.sb3.orbit-lab.org)/avg/max (59) - Timeout: 770 sec.
       INFO exp: Progress(1/0/1): 100/100/100 min()/avg/max (59) - Timeout: 760 sec.
       INFO exp:  -----------------------------
       INFO exp:  Imaging Process Done
       INFO exp:  1 node successfully imaged - Topology saved in '/tmp/pxe_slice-2018-08-08t13.41.37.814-04.00-topo-success.rb'
       INFO exp:  -----------------------------
       INFO EXPERIMENT_DONE: Event triggered. Starting the associated tasks.
       INFO NodeHandler:
       INFO NodeHandler: Shutting down experiment, please wait...
       INFO NodeHandler:
       INFO NodeHandler: Shutdown flag is set - Turning Off the resources
       INFO run: Experiment pxe_slice-2018-08-08t13.41.37.814-04.00 finished after 1:44
      
      

      If the node is in the NOT REGISTERED state, you may need to wait for it to recover the POWEROFF state (it some times requires a few moments for the services to sync up). If the node takes more than 60 seconds to come out of the NODE NOT AVAILABLE state please report it to an administrator.
  2. Turn ON the nodes that successfully imaged (give them some time and check their status with omf stat before proceeding).

    omf tell -a on -t all

    Turn the Nodes ON

    To turn the nodes on use omf tell command:

    omf tell

    OMF command to control the power state/reset the nodes.

    Usage: omf tell

    user@console:omf tell
    Switch ON/OFF and reboot the nodes in a testbed
    Usage:
          omf tell [-h] -t TOPOLOGY -a ACTION [-c AGGREGATE]
     
          With: 
          -h, --help           print this help message
     
          -a, --action ACTION  specify an action
          ACTION:
          on              turn node(s) ON
          offs            turn node(s) OFF (soft)
          offh            turn node(s) OFF (hard)
          reboot          reboots node(s) (soft)
          reset           resets node(s) (hard)
     
          -h, --help                print this help message
          -t, --topology TOPOLOGY   a valid topology file or description (MANDATORY)
          -c, --config AGGREGATE    use testbed AGGREGATE
     
          Some Examples: 
                        omf tell -a reset -t node1-1.grid.orbit-lab.org
                        omf tell -a on -t system:topo:all -c grid
                        omf tell -a reboot -t node1-1
                        omf tell -a offh -t [1..2,1..5]
                        omf tell -a offh -t system:topo:all
                        omf tell -a reset -t system:topo:imaged
    

    The commands are: on, offh (equivalent to pulling out the power cord), offs (software shutdown), reboot (software reboot) and reset (hardware reset).

    Example: turn off node1-1 on the outdoor domain

    user@console.outdoor:~# omf tell -a offh -t node1-1
    
     INFO NodeHandler: OMF Experiment Controller 5.4 (git 3fb37b9)
     INFO NodeHandler: Reading configuration file /etc/omf-expctl-5.4/services.yaml
     INFO NodeHandler: Add domain http - http://internal1.orbit-lab.org:5054/
     INFO NodeHandler: Add domain http - http://repository1.orbit-lab.org:5054/
     INFO NodeHandler: Slice ID: default_slice (default)
     INFO NodeHandler: Experiment ID: default_slice-2014-09-30t00.24.28.504-04.00
     INFO NodeHandler: Message authentication is disabled
     INFO Experiment: load system:exp:stdlib
     INFO property.resetDelay: resetDelay = 230 (Fixnum)
     INFO property.resetTries: resetTries = 1 (Fixnum)
     INFO Experiment: load system:exp:eventlib
     INFO Experiment: load system:exp:winlib
     INFO Experiment: load system:exp:tell
     INFO property.nodes: nodes = "node1-1" (String)
     INFO property.command: command = "offh" (String)
    
    Talking to the CMC service, please wait
    -----------------------------------------------
     Node: node1-1.outdoor.orbit-lab.org   	 Reply: OK
    -----------------------------------------------
    
     INFO EXPERIMENT_DONE: Event triggered. Starting the associated tasks.
     INFO NodeHandler: 
     INFO NodeHandler: Shutting down experiment, please wait...
     INFO NodeHandler: 
     INFO run: Experiment default_slice-2014-09-30t00.24.28.504-04.00 finished after 0:10
    

  3. On both nodes (node1-1, node1-2), get the code from Eurocom repositories
apt-get install subversion git
echo -n | openssl s_client -showcerts -connect gitlab.eurecom.fr:443 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> /etc/ssl/certs/ca-certificates.crt
git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git
  1. Install the right kernel and setup the CPU governor
apt-get update
version=3.17 
wget -r -e robots=off --accept-regex "(.*lowlatency.*amd64)|(all).deb" http://kernel.ubuntu.com/~kernel-ppa/mainline/v${version}-utopic/ 
dpkg -i kernel.ubuntu.com/*/*/*/*deb

At this point the node will require a reboot. When the node is again available

I#nstall cpufrequtils:
apt-get install cpufrequtils

#Then edit the following file (if it doesn't exist, create it):
nano /etc/default/cpufrequtils

#And add the following line to it:
GOVERNOR="performance"
  1. Install necessary additional software on both nodes
cd /root/openairinterface5g/
source oaienv
cd cmake_targets
./build_oai -I --install-optional-packages (need to run only once)
  1. Compile the OAI code
#If updating eNB
./build_oai --eNB -C -w USRP

#If updating UE
./build_oai --UE -C -w USRP

Execute the experiment

Primary objective is to establish the LTE connection between the UE and eNB.

  1. ssh into nodes: Open two ssh sessions from the console to the two nodes
  2. Prepare configuration files: The configuration file used for eNB is enb.band5.tm1.usrpb210.conf, located at /root/openinterface5g/targets/PROJECTS/GENERIC-LTE-EPC/CONF/. Another configuration may be used, or a new configuration file can be created using one of the existing ones, so that the parameters can be adjusted.
  3. Run the lte-softmodem: The following commands need to be run in order the execute the LTE softmodem. By default, the IP address of eNB is 10.0.1.1, and the IP of UE is 10.0.1.9. These parameters can be changed in /root/openinterface5g/targets/bin/init_nas_nos1. The user can also choose whether to run the version with or without the graphical analyzer. In order to run the experiment with the graphical analyzer, make sure you have used the '-X' flag to ssh into the console and then into the nodes.
  1. On both nodes, run
source /root/openairinterface5g/targets/bin/init_nas_nos1
  1. On eNB (node1-1), run
sh /root/openairinterface5g/targets/bin/init_nas_nos1 eNB

/root/openairinterface5g/targets/bin/oailtenoviz -d -O /root/enb.band3.tm1.usrpb210.conf 2>&1 | tee ENB.log

or, to run it without the graphical analyzer

/root/openairinterface5g/targets/bin/lte-softmodem-nos1.Rel10 -d -O /root/enb.band3.tm1.usrpb210.conf 2>&1 | tee ENB.log
  1. On UE (node1-2), run
/root/openairinterface5g/targets/bin/lte-softmodem-nos1.Rel10 -U -C1865000000 -r25 --ue-scan-carrier --ue-txgain 100 --ue-rxgain 110 -A 0 2>&1 | tee UE.log

The output on the two consoles should look like:

node1-1 (eNB) node1-2 (UE)
node1-1 commands (eNB) node1-2 (UE)

The connection should now be established. As a simple test, you should be able to ping the eNB node from the UE node by running the following command in a separate terminal window:

ping 10.0.1.1

If the eNB was run using the graphical analyzer, after the connection is established and the pinging starts, the analyzer should look similar to the one shown on the picture below.

Attachments (3)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.