Skip to content

nsgLUMS/cellclone

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌀 CellClone 🌀

Overview

The README explains how to setup and configure CellClone for experiements. We briefly provide system level overview of the CellClone. The README is divided into three sections:

  1. System Overview
  2. System Setup
  3. Experiments execution

System Overview

                               Fig 1: Simplified CellClone experimental setup

Figure 1 shows the simplified CellClone experimental setup. As depicted in the figure, the system has three components -- Control Traffic Generator, Control Traffic Aggregator (CTA) and Control Plane Function (CPF). Brief explanation of each component is given below.

Control Traffic Generator

The control traffic generator simulates both User Equipment (UE) and Base Station (BS). The control traffic generator in our case replays the real control traces of the control procedures such as Initial Attach, Handover and Service Establishment. As shown in the figure, there are two types of threads in the control traffic generator: TX Worker threads and RX thread. TX worker threads are responsible for starting the control procedures in either uniform or bursty mode. The RX thread is in control of receiving the response messages from the CTA. Once the RX thread receives messages from the CTA, it forwards them to a specific TX Worker thread via lockless queues. The TX Worker thread then prepares and sends the next message of the procedure to the CTA.

Links to the control traffic generator functions from the Fig 1,

Control Traffic Aggregator (CTA)

The function of CTA in our design is to forward and receive control messages from appropriate CPFs. It has two communication paths: 1). Control Traffic Generator to CPFs 2). CPFs to Control Traffic Generator. The first path, Control Traffic Generator to CPFs, has two types of threads: RX and TX threads. RX thread is responsible for receiving messages from the Control Traffic Generator. The TX threads receive messages from the RX thread and forward them to an appropriate CPF. The CTA uses DPDK APIs for CTA to CPFs communication. The second path is responsible for the reception of messages from the CPFs. The Duplicate filtration thread receives messages from the CPFs, keeps track of and removes the duplicate messages, and sends the remaining messages to the TX thread. The only purpose of TX thread is to send the messages back to the Control Traffic Generator via DPDK APIs.

Links to the CTA functions from the Fig 1,

Control Plane Function (CPF)

CPF in our design represents the Access and Mobility Management Function (AMF) and Session Management Function (SMF) in 5G system architecture. The CPF implements state machines for both NAS and NGAP procedures. As depicted in the figure, the RX thread receives messages from the CTA through DPDK APIs and forwards them to the appropriate CPF. The CPF processes the messages and returns the responses to CTA.

Links to the CPFs functions from the Fig 1,

System Setup

As shown in Figure 1, three servers are required for CellClone setup. Our test setup consists of servers running Ubuntu 18.04.3 with kernel 4.15.0-74-generic. Each server is a dual-socket with 18 cores per socket, Intel Xeon(R) Gold 5220 CPU @ 2.20 GHz, and with a total memory of 128 GB. All servers are also equipped with Intel X710 40 Gb (4 x 10) NIC.

Below are required steps to run CellClone:

  1. Cables and Ports configuration
  2. DPDK Setup
  3. External Libraries
  4. CellClone Setup
  5. Servers Configuration

Cables and Ports configuration

Figure 2 shows default NIC ports configuration used in CellClone which can be updated from the code. We have used 10 Gb SFP + ethernet cables. Code for Control Traffic Generator, CTA and CPF can be accessed by clicking the relevant links.

                                        Fig 2: Cables and Ports configuration

DPDK Setup

Data Plane Development Kit (DPDK) is a library to accelerate the packet processing workloads. In order to install DPDK, you need to perform the following steps on all three servers:

  1. Download DPDK 17.11 by running the following command:
    wget https://github.com/DPDK/dpdk/archive/v17.11.tar.gz
  2. Extract the .tar.gz file in a folder.
  3. Navigate to dpdk-17.11/usertools.
  4. Execute dpdk-setup.sh file using the command:
    sudo ./dpdk-setup.sh
  5. From the Step 1: Select the DPDK environment to build section, select right system architecture and compiler. For us it was [14] x86_64-native-linuxapp-gcc
  6. Insert the driver, we used [17] Insert IGB UIO module
  7. Setup hugepages, we used NUMA system so [21] Setup hugepage mappings for NUMA systems. The number of huge pages depends on the system's memory. We used to run experiments with 30,000 hugepages, each of 2kB. Later on, we used 1GB hugepages, total of 100.
  8. Bind ports, [23] Bind Ethernet/Crypto device to IGB UIO module.
  9. Lastly, add following lines to the /etc/environment file:
RTE_SDK="path_to_dpdk/dpdk-17.11"
RTE_TARGET="x86_64-native-linuxapp-gcc"

External Libraries

The CTA and CPF use a C++ Libconfig library to manage the system's configuration files. In order to install it, you need to execute following commands:

sudo apt-get update -y
sudo apt-get install -y libconfig-dev

CellClone Setup

Perform the following steps to setup CellClone:

  1. Clone the CellClone repository on all three servers.
  2. At the Control Traffic Generator server, navigate to Control Traffic Generator folder and run the following commands:
sudo make clean
sudo make
  1. At the CTA server, navigate to CTA folder and run the sudo make clean && sudo make.
  2. Similarly, at the CPF server, navigate to CPF folder and execute sudo make && sudo make.

Servers Configuration

Open servers_configuration.json.sample and fill out the credentials of your servers. After that, rename servers_credentials.json.sample to servers_credentials.json.

Experiments Execution

We show the steps to reproduce the following figure of our paper.

      Fig 11: Initial Attach PCT comparison. Initial Attach involves multiple non-deterministic operations.

Figure 11 shows the evaluation of five systems (Neutrino, Existing 5G, ...) under three types of scenarios (Normal, T-Straggler, P-Straggler). Here, we will be reproducing the results of CellClone-ASN.1 under all three scenarios. The evaluation of remaining systems follows similar steps.

Steps to reproduce CellClone results

  1. First, naviagte to exps folder and open config.json file.
  2. The provided config file reproduces the CellClone-ASN.1 results from Figure 11. Let's explore which variables are relevant in this experiemnt. Note: please do not change variables not explained here.
    • bursty: false means the Control Traffic Generator will replay the cellular traffic in uniform rate i.e., messages per second.
    • remote_cpfs: 2 means that out of the specified number of CPFs, 2 are remotely deployed while the remaining (if any) are locally deployed.
    • replicas: 3 means a single message will be forwarded to exactly 3 CPFs.
    • remote_replicas: 2 means a single message will be forwarded to exactly 2 remote CPFs and 1 local CPFs out of three 3 aforementioned CPFs (should enough remote and local CPFs exist).
    • tx_arg: denotes the write quoram. For instance, 1 would mean that the CTA will wait for the write response of atleast 1 CPF before forwarding the response to the UE.
    • delay: denotes the additional propogation delay incurred during the transmission of packets from a remote CPF to CTA (in microseconds).
    • cpfs_action: describes how each CPF will behave. For instance, {"1": "straggler", "type": 2} hash has two key-value pairs. First key-value means first CPF will behave as a straggler. Whereas, second key-value pair indicates the type of staggler first CPF will behave as. Types of stragglers are given below,
      • type: 0 => T-straggler
      • type: 1 => P-straggler
      • type: 2 => No straggler
    • scheme: asn1 means ASN.1 message encoding scheme will be used. It can take either asn1 or fb.
    • procedure: attach means Attach control procedure is being replayed. It can take attach, handover, service or dpcm_service.
  3. Navigate to pktgen folder and replace the config.json in this directory with the previously discussed config.json file.
  4. Execute sudo python3 run_experiments.py --clean --cta --pktgen command in the same folder.
  5. Wait for a few minutes for the experiment to finish. When finished, execute sudo python3 do_stats.py command. Copy the results and replace the first row in cellq_asn1.txt file. The first results row in the file belongs to Normal, second to T-Straggler and last to P-Straggler.
  6. Repeat the same experiment for T-Straggler and P-Straggler by changing the config.json file and executing step 4 and 5.
  7. When done, you will have three rows for Normal, T-Straggler and P-Straggler in cellq_asn1.txt file.
  8. Navigate to exps folder, open command.txt file, copy the command and run in the same folder. You will get Fig 3 like image, except with updated CellClone-ASN.1 results.

About

Enabling Emerging Edge Applications Through a 5G Control Plane Intervention

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages