.. vim: syntax=rst

Aether-in-a-Box on Hardware Radios (4G)
=======================================

This document describes how to set up an Aether-in-a-Box (AiaB) with
a Sercomm eNodeB and connect real devices (e.g., 4G phones).  This
setup is suitable for laboratory experiments and proof-of-concept deployments.
To create this setup you will need the following equipment:

* Server for running AiaB (SD-CORE / UPF / ROC)

  * Haswell CPU family or newer
  * At least 4 CPUs and 12GB RAM
  * Internet connection

* Sercomm CBRS LTE small cell eNodeB

  * Firmware version 3918 or newer.  For instructions on how to update the firmware see `here <https://docs.aetherproject.org/master/edge_deployment/enb_installation.html#upgrade-firmware>`_.

* SIM card writer and blank SIM cards

We assume that the server and the eNodeB are connected to the same
LAN, and the LAN also provides external Internet connectivity.

Preparation
-----------

Create SIM cards by following the instructions for your SIM card writer.
Of course you are free to use any values for IMSI, etc. that you choose,
but these are the values that will work with the rest of the configuration
in this document:

* IMSI: each one is unique, matching pattern ``315010*********`` (15 digits)
* OPc: ``69d5c2eb2e2e624750541d3bbc692ba5``
* Transport Key: ``000102030405060708090a0b0c0d0e0f``

If you choose different values for your SIM cards, you will need to
modify subsequent configuration steps appropriately.

Insert the SIM cards in devices that you wish to be able to connect to the Aether network.

Server setup
------------

The server will run Aether-in-a-Box.  The eNodeB will connect to the server over the local network.
Perform these steps to prepare the server for the AiaB install:

* Connect the server to the local network
* Perform a clean install of Ubuntu 18.04 on the server
* Set up password-less sudo for the user that will install Aether-in-a-Box

After the steps above have been completed, install Aether-in-a-Box as follows::

    sudo apt install git make
    git clone "https://gerrit.opencord.org/aether-in-a-box"
    cd aether-in-a-box

Next, modify the file *sd-core-4g-values.yaml*.  Under ``subscribers``,
add an IMSI range for the SIM cards you created, with the Transport Key
and OPc values you used earlier.  For example, the following will add
IMSIs between 315010999912301 and 315010999912303::

    subscribers:
    - ueId-start: 315010999912301
      ueId-end: 315010999912303
      plmnId: 315010
      opc: 69d5c2eb2e2e624750541d3bbc692ba5
      key: 000102030405060708090a0b0c0d0e0f
      sequenceNumber: 135

Determine which is the interface that has L3 connectivity to the
eNodeB -- this will be ``DATA_IFACE`` in the configuration later.  If
the eNodeB will also be connected to the local network, then this is just the
server’s primary interface.  If the eNodeB will be connected via an
isolated L2/L3 network segment, then ``DATA_IFACE`` refers to the server
interface on that network.   Remember this interface for later.

Option 1: Configure Aether with ROC
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The Aether ROC provides a GUI and API for dynamically configuring
Aether.  If you don’t wish to use the ROC to configure AiaB, you
can skip to the next section.

Install AiaB as follows (specifying ``DATA_IFACE`` from above)::

    ENABLE_OAISIM=false DATA_IFACE=<iface> CHARTS=latest make roc-4g-models 4g-core

Next, use the ROC to add information about your SIM cards.
The ROC GUI  is available at `http://<server-ip>:31194`.

Choose ``Configuration > Site`` from the drop-down at top right and edit
the ``AiaB site``.  Change the following values and click ``Update``:

* MCC: 315
* MNC: 010

Choose ``Sim Cards`` from the drop-down at top right.  Edit the
existing entries to reflect the SIM cards you are adding to devices
by replacing their IMSI values.  Click ``Update`` after each edit.
If you want to connect more than two devices, consult the `ROC
documentation <https://docs.aetherproject.org/master/operations/subscriber.html#configure-connectivity-service-for-a-new-device>`_.

Finally, click the Basket icon at top right and click the ``Commit`` button.

Now jump to the `Verifying the AiaB installation`_ section.

Option 2: Configure Aether without ROC
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

It is possible to configure Aether without the ROC,
using static YAML files and the SimApp service.  If you have already
installed the ROC, you should skip this section.

Edit *sd-core-4g-values.yaml*.  Change ``mcc`` and ``mnc`` as follows::

    plmn:
      mcc: "315"
      mnc: "010"

Also add the IMSIs of your devices under ``imsis``, for example::

    device-groups:
    - name:  "4g-oaisim-user"
      imsis:
        - "315010999912301"
        - "315010999912302"
        - "315010999912303"

Install AiaB as follows (specifying ``DATA_IFACE`` from above)::

    ENABLE_OAISIM=false DATA_IFACE=<iface> CHARTS=latest make 4g-core

Verifying the AiaB installation
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Installing AiaB will take about 20 minutes with a fast Internet
connection.  If you see any errors / timeouts, try running the ``make``
command again.  The build will finish with a message:
“Your MME IP address is… ”  This is just the IP address assigned to
the ``DATA_IFACE``.   Remember this for the eNodeB setup.

When the install is complete, check that the 4G SD-CORE is running
as follows::

    $ kubectl -n omec get pod
    NAME                     READY   STATUS    RESTARTS   AGE
    cassandra-0              1/1     Running   0          7m27s
    config4g-0               1/1     Running   0          7m27s
    hss-0                    1/1     Running   0          7m27s
    mme-0                    4/4     Running   0          7m27s
    pcrf-0                   1/1     Running   0          7m27s
    simapp-65dc44b9d-stx6q   1/1     Running   0          7m27s
    spgwc-0                  2/2     Running   0          7m27s
    upf-0                    5/5     Running   0          7m27s

You should see all pods in Running status.

If you have installed the ROC, check that all its pods are running
as follows::

    $ kubectl -n aether-roc get pod
    NAME                                           READY   STATUS    RESTARTS   AGE
    aether-roc-api-78cc548bb9-7vjs2                1/1     Running   0          4m16s
    aether-roc-gui-v2-6d674fd446-tttb5             1/1     Running   0          4m16s
    aether-roc-umbrella-grafana-74f8489c8f-s9p45   2/2     Running   0          4m16s
    aether-roc-websocket-855d64549b-44fnc          1/1     Running   0          4m16s
    onos-cli-5d448ff6c4-stq5t                      1/1     Running   0          4m16s
    onos-config-7f4df96b88-vtp5s                   6/6     Running   0          4m16s
    onos-consensus-store-0                         1/1     Running   0          4m15s
    onos-topo-585c7c8976-6jq7b                     3/3     Running   0          4m16s
    sdcore-adapter-v2-5646d455b9-2d6zl             1/1     Running   0          4m15s

You should see all pods in Running status.

Sercomm eNodeB setup
--------------------

The instructions in this section describe a basic configuration of
the eNodeB.  For a more comprehensive guide to
eNodeB configuration see `eNB Installation <https://docs.aetherproject.org/master/edge_deployment/enb_installation.html>`_.

The Sercomm eNodeB has two Ethernet ports: WAN and LAN.  We will use
the LAN port for configuration of the eNodeB and the WAN port for
normal operation.  Connect the eNodeB WAN port to the local network.

Connect the eNodeB LAN port to a free Ethernet port on a Linux machine
(say, a laptop) that will be used for the initial configuration of
the eNodeB.  On that machine run ``dhclient`` on the interface corresponding
to the Ethernet port, for example::

    sudo dhclient eth1

The interface should receive an IP address from the Sercomm eNodeB on
the 11.11.11.0/24 subnet.  Check this using ``ifconfig``::

    $ ifconfig eth1
    eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 11.11.11.100  netmask 255.255.255.0  broadcast 11.11.11.255
        inet6 fe80::2e0:4cff:fe68:2f76  prefixlen 64  scopeid 0x20<link>
        ether 00:e0:4c:68:2f:76  txqueuelen 1000  (Ethernet)
        RX packets 264652  bytes 216094312 (216.0 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 183978  bytes 36528580 (36.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

The eNodeB IP address should be 11.11.11.188 on that link.  Verify
this using ping::

    $ ping 11.11.11.188

To access the Sercomm eNodeB admin page, you can run a Web browser on
the laptop and direct it to `https://11.11.11.188`. Login to the admin
interface as user: ``sc_femto`` and password: ``scHt3pp``.

Click the ``NetWork set`` menu at the top. In the first section
``IP Address``, set *Connect type: DHCP* (assuming this is supported on
your local network, otherwise set up a static IP address).
Click the blue ``Save`` button at the bottom.

Next, click the ``Manage`` menu at the top and then click the
``LTE Basic Setting`` tab. Change these parameters and click ``Save``:

* Carrier Number: 2
* Carrier Aggregation: Unset
* BandWidth: 20
* FrequencyBand: 48,48
* EARFCN: 55440,55640
* CellIdentity: 2,1
* PCI: 100,101
* TxPower: 20
* Tunnel Type: IPv4
* MME IP Address: <MME IP address from AiaB installation>
* PLMNID: 315010
* TAC: 1
* Sync Source: FREE_RUNNING
* Enable CWMP: Unset

Click the ``SAS Configuration`` tab. In the ``Location Configuration``
section, enter these values and click “Save”:

* Location: Indoor
* Location Source: Manual
* Latitude: 0
* Longitude: 0
* Elevation: -18000

Next we need to add a static route to the UPF address, 192.168.252.3,
on the eNodeB.  Click on ``TR098`` menu and then click on ``IP`` tab.
Scroll down to ``Device.Routing.Router.`` section.  Click ``View List``.
Add this info on the blank line:

* Enable: Set
* StaticRoute: Set
* DestIPAddress: 192.168.252.0
* DestSubnetMask: 255.255.255.0
* GatewayIPAddress: <Use MME IP address from AiaB installation>
* Interface: Device.IP.Interface.1.

Then click the ``Add`` button at the far right.

Finally click the ``FAPService`` menu and then go to the ``FAPControl``
tab.  Check the box next to ``AdminState`` in the first section and
click ``Save``.

After these changes are made, reboot the eNodeB by clicking the red
``power button`` square at top right and selecting ``Reboot``.  When the
eNodeB comes back up, it should have an IP address on the network
(via the WAN port), and the admin page should now be available on
`https://<endoeb-ip>`.

Test connectivity from the eNodeB to the MME and the UPF running on
the server as follows.  Login to the eNodeB admin interface, click
the “Manage” menu at the top, and click the ``IP Diagnose`` tab.  Under
``Ping and Traceroute``, select ``ping``, and then type the following IP
addresses into the box to the right and click ``Run``:

* <MME IP address from AiaB installation>
* 192.168.251.1
* 192.168.252.3

If all of these are working, then you are ready to try to connect
devices to the network.

Connecting Devices
------------------

Documenting how to configure different types of devices to work
with Aether is work-in-progress.

Reinstalling AiaB
-----------------

A current limitation of AiaB is that if the host machine reboots,
AiaB needs to be reinstalled.  We plan to fix this in the future so
that the AiaB configuration will persist across reboots.  In the
meantime, to reinstall AiaB on a machine where it was previously
installed, run `make clean` and then start at the `Server setup`_
section above.
