Intelligent Connection Management for Automated Handover Reference Implementation

Version: 2.0   Published: 12/08/2021  

Last Updated: 03/23/2022


Use a deep reinforcement learning (DRL) algorithm with a graph neural network (GNN) model to implement an intelligent connection management solution for wireless networks. 

Manage the association of mobile user equipment with available radio cells, optimizing for user throughput, cell coverage maximization, and load balancing. 

Leverage the features of Intel® Smart Edge Open to optimize compute-intensive operations and decrease network latency. 

To run the reference implementation, you will need to first download and install the Intel® Smart Edge Open Developer Experience Kit.

Once you have installed the Intel® Smart Edge Open Developer Experience Kit, select Configure & Download to download the reference implementation and the software listed below.  

Configure & Download

GNN Network Graph

Time to Complete


Available Software

15 - 20 minutes

Python*, Go, C, C++

Intel® Smart Edge Open Developer Experience Kit

Open Networking Foundation Software Defined RAN (SDRAN) Version 1.3  

Intelligent Connection Management for Automated Handover v2.0

Target System Requirements

Intel® Smart Edge Open Cluster Nodes

  • One of the following processors:
    • Intel® Xeon® Scalable processor.
  • At least 64 GB RAM.
  • At least 256 GB hard drive.
  • An Internet connection.
  • Ubuntu* 20.04.2 LTS Server.


How It Works

Connection management (i.e., user-cell association) is an important issue for any wireless network for ensuring smooth and well-balanced operation throughout. Traditional methods for connection management consider sub-optimal solutions, such as the connection of each user to a cell with maximum receive power (max RSRP). However, this may lead to some congested cells, while the precious radio resources of other cells might be underutilized. Here we leverage machine learning and artificial intelligence-based solutions to achieve load balancing through intelligent handover management. 

Intelligent Connection Management xApp was developed based on the O-RAN network architecture to optimize user association and load balancing to improve the quality of service (QoS) requirements of a user equipment (UE). The connection management is formulated as a combinatorial graph optimization problem. A deep reinforcement learning (DRL) solution is proposed to learn the weights of a graph neural network (GNN) for an optimal UE association. The wireless network is modeled as a virtual graph in Intelligent Connection Management xApp as shown in Figure 1 below. The GNN network is trained with reinforcement learning (RL).

GNN Network Diagram

Figure 1:  GNN Network


The network architecture proposed by the Open Radio Access Network (O-RAN) alliance is the building block for designing virtualized RAN on programmable hardware with radio access control powered by artificial intelligence (AI). 

The main contributions of the O-RAN architecture are 

  • Functionality split of central unit (CU), distributed unit (DU) and radio unit (RU) 
  • Standardized interfaces between the various units 
  • Introduction of RAN intelligent controller (RIC) 

The introduction of RIC allows the xApp developers to leverage AI techniques to work on the network data collected by RIC. The ORAN architecture with distributed controllers is shown in Figure 2.

architecture diagram for ORAN

Figure 2: ORAN Architecture


Open Networking Foundation SD-RAN

Open Networking Foundation SD-RAN Version 1.3 is a platform for 3GPP compliant software-defined RAN and is consistent with the O-RAN architecture. The SD-RAN provides a near-real-time RIC (nRT-RIC) and RAN simulator for simulating the RAN and UE. 

The Intel® Smart Edge Open Developer Experience Kit platform infrastructure is used to deploy the SD-RAN 1.3 release version of RIC pod, RAN Simulator pod and Intelligent Connection Management xApp pod as shown in Figure 3. The CM xApp interacts with the RIC to fetch network data from the RAN simulator and performs handover of UEs across different cells.

high level deployment diagram

Figure 3: High level Deployment Diagram


Intel® Smart Edge Open Enabling Near RT-RIC and xApp

Intel® Smart Edge Open is an edge computing software toolkit for building platforms optimized for the edge. Platforms created with Intel® Smart Edge Open can host a wide range of services, from network functions such as 5G RAN and 5G core, to AI, media processing, and security workloads. Edge platforms are resource constrained compared to cloud platforms. They require higher network performance and more autonomy, have strong hardware affinity, and face significantly more threat vectors. Intel® Smart Edge Open addresses the challenges of creating edge platforms by providing a toolkit of functionality selected from across the cloud-native landscape, extended and optimized for the edge.

Intel® Smart Edge Open Developer Experience kits are built on top of Kubernetes*, a production-grade platform for managing containerized workloads and services. Experience kits customize and extend the Kubernetes control plane and edge node with microservices, third-party applications, extensions, and optimizations. The control plane node and one or more edge nodes form an Intel® Smart Edge Open edge cluster.  

Intel® Smart Edge Open Edge Node

Figure 4: Intel® Smart Edge Open Edge Node



The Intel® Smart Edge Open node architecture is specialized for each experience kit, to enable developers to create solutions for specific use cases at a given edge location.

Supported Features

Subscription for RSRP/RRC reports with SDRAN RIC v1.3 

  • SD-RAN v1.3 is deployed on Intel® Smart Edge Open Developer Experience Kit, which supports the E2SM MHO service model. 
  • Intelligent Connection Management (CM) xApp interacts with the SD-RAN RIC using GoLang SDK. A Python mediation layer binds the App with the GoLang SDK. 
  • CM xApp subscribes to the E2 nodes for the Periodic RSRP reports; A3 event-based RSRP reports and RRC state change indications. 

Connection Management Deployment 

  • RAN simulator is simulating 4 E2 nodes in the setup. 
  • RAN simulator v1.3.5  simulates 140 UEs across 7 cells. The Model file is part of the ran simulator release. 

Automated Handover using OpenVINO™ Inferencing 

  • CM xApp performs the handover for the UEs across cells based on the RIC indications. It uses C++ preprocessing and OpenVINO™ inferencing. 
  • CM xApp sends these handover requests to the RIC in the form of Control Requests (CR) to trigger the handovers. 
  • The handover request queue at any time in the CM xApp is between 1-8 requests. 

Node Feature Discovery (NFD) 

  • NFD feature is enabled in the package to detect the platform capability and OS installation information (Icelake and Ubuntu 20.04) and deploy the xApp based on the condition.


Get Started


To run the reference implementation, you will need to first download and install the Intel® Smart Edge Open Developer Experience Kit.

Ensure that the following conditions are met properly to ensure a smooth installation process for a reference implementation done through Edge Software Provisioner (ESP) Intel® Smart Edge Open Developer Experience Kit package.

  1. Hardware Requirements
    Make sure you have a fresh ESP Intel® Smart Edge Open Developer Experience Kit installation with the Hardware specified in the Target System Requirements section.
  2. Install Python dependent libraries 

    pip3 install –-user Cython  
    sudo apt-get install python3-dev 


  3. Confirm the steps below were followed for ESP Intel® Smart Edge Open Developer Experience Kit​ installation:
    • Proxy Settings
      If you are behind a proxy network, ensure that proxy addresses are configured in the system.  
      export http_proxy=<proxy-address>:<proxy-port>
      export https_proxy=<proxy-address>:<proxy-port> 
    • Ensure the /etc/wgetrc file is configured with required proxy settings as follows: 

      NOTE: Use your preferred text editor to edit the file, for example, use the command: sudo vi /etc/wgetrc

      ftp_proxy =<proxy-address>:<proxy-port> 
      use_proxy = on


    • Date and Time 

      Make sure that the date and time are in sync with current local time.  

    • Verify the ssh public key is installed on the system. 

    • Verify that a non-root user smartedge-open has been created with password smartedge-open. 

Install the Reference Implementation

Select Configure & Download to download the reference implementation and then follow the steps below to install it.  

Configure & Download

  1. Make sure that the Target System Requirements are met properly before proceeding further.  
    • For single-device mode, only one machine is needed. (Both controller and edge node will be on the same device.) 
    • For multi-device mode, make sure you have at least two machines (one for controller and other for Edge Node).
      NOTE: Multi-device mode is not supported in the current release. 
  2. Confirm target host is configured with ESP Intel® Smart Edge Open Developer Experience Kit as described in the Prerequisites section.

  3. Move the downloaded zip package to /home/<non-root-user> folder:

    mv <path-of-downloaded-directory>/ /home/<non-root-user>


  4. Go to the /home/<non-root-user> directory using the following command and unzip the RI: 
    cd /home/<non-root-user> 
  5. Go to Intelligent_Connection_Management directory: 
    cd Intelligent_Connection_Management
  6. Change permission of the executable edgesoftware file: 
    chmod 755 edgesoftware 
  7. Run the command below to install the Reference Implementation: 
    ./edgesoftware install 


  8. During the installation, you will be prompted for the Product Key. The Product Key is contained in the email you received from Intel confirming your download.  Enter Product Key Screen

    Figure 5: Product Key

  9. When the installation is complete, you see the message Installation of package complete and the installation status for each module.  Screen of Successful Installation

    Figure 6: Install Successful 


NOTE: Installation logs will be available at: /var/log/esb-cli/Intelligent_Connection_Management_for_Automated_Handover_2.0.0/Intelligent_Connection_Management_for_Automated_Handover/install.log

  1. If Intel® Smart Edge Open Developer Experience Kit is installed, running the following command should show output similar to the image below. All the pods should be either in the running or completed stage. 
    kubectl get pods -A
     Screen showing pod status

    Figure 7: Pods Status

  1. List the reference implementation deployed module using the following command: 
    ./edgesoftware list
    Screen showing list of modules

    Figure 8: List of Modules



Application Output 

The SD-RAN ran simulator will simulate 140 UEs across 7 cells.  

  1. Login to the onos-cli pod and run the following commands to view the UEs and cells:
    kubectl exec -it <onos-cli-pod> -n smartedge-apps -- /bin/bash 
    onos ransim get ueCount - This shows 140 
    onos ransim get ues - This shows all 140 UEs with their RRC states 
    onos ransim get cells - This shows all 7 cells with the TxDB, Neighbours 
    Screen showing UE information

    Figure 9: UE Information

    Screen showing cell information

    Figure 10: Cell Information


  2. To check the subscriptions, run the following command inside onos-cli: 
    kubectl exec -it <onos-cli-pod> -n smartedge-apps -- /bin/bash 
    onos e2t list subscriptions 
     Screen showing subscription info

    Figure 11: Subscription Information


  3. To check the subscription requests to the e2 node, run the following command on the app logs: 
    kubectl logs <cm-xapp-pod> -n smartedge-apps -c cm-xapp | grep "Create subscription successful"
     Screen showing subscription logs

    Figure 12: Subscription Logs 


  4. Run the following command on the app logs to confirm that the App is issuing the handover requests: 
    kubectl logs <cm-xapp-pod> -n smartedge-apps -c cm-xapp | grep "Calling control req"

    Figure 13: Handover Logs 

    The same can be confirmed from the RAN Sim logs that the handover requests issued from xApp are reaching the Ran Simulator.      

    kubectl logs <ran-simulator-pod> -n smartedge-apps | grep "HO is done successfully"
    Screen showing sim logs

    Figure 14: RAN sim logs 


  5. Run the following command on the app logs to confirm that the HO processing time is within 10 ms:

    kubectl logs <cm-xapp-pod> -n smartedge-apps -c cm-xapp | grep "OpenVINO Inference HO processing time"
    Screenshot of HO Processing Time

    Figure 15: HO Processing Time


OpenVINO™ Toolkit Inference Handover Processing Time

In the Intelligent Connection Management for Automated Handover app, Graph Neural Network (GNN) and RL (Reinforcement Learning) is used for an optimal UE association. The OpenVINO™ toolkit 2022.1 release with GNN model optimizations improves the latency for handover requests processing to be under 10 ms.

In this release, OpenVINO™ toolkit is the default inferencing method used. The figure below shows the huge improvement in the latency with respect to Python latency.

Preprocessing: C++
parallelLoop: true

Screenshot of Latency Results

Figure 16: Latency Results


Node Feature Discovery (NFD) Feature 

Node Feature Discovery (NFD) is a Kubernetes* add-on that detects and advertises the hardware and software capabilities of a platform. 

On Intel® Smart Edge Open Developer Experience Kit, NFD functionality is enabled and Intelligent Connection Management xApp is deployed with capability as Intel server. 

During xApp deployment, it discovers platform capability and OS installation information. Only if it satisfies the criteria, will the application pod be deployed. 

The node selection criteria are as follows: "true" "ubuntu" "20.04" "20" "04

Uninstallation of the RI 

Uninstall the reference implementation module using the following command. Get cmxapp-module-id from the output of ./edgesoftware list command. 

Uninstall the reference implementation module using the following command:  

. /edgesoftware uninstall <cmxapp-module-id>

Screen showing uninstallation of RI

Figure 17: Uninstallation Logs

Summary and Next Steps

The Intelligent Connection Management App, when deployed on the Intel® Smart Edge Open Developer Experience Kit, creates an impactful Network AI use case that utilizes the capability of Intel® Smart Edge Open Developer Experience Kit and the SD-RAN to perform intelligent automated handover of UEs across cells efficiently. 

Learn More

To continue learning, see the following guides and software resources:


Pods Status Check

Verify that the pods are Ready as well as in Running state using the following command:

kubectl get pods -A


If any pods are in ImagePullBackOff state, manually pull the images using:

docker login
docker pull <image-name>

If any pods are not in Running state, use the following command to check the pod failure case:

kubectl describe -n <namespace> pod <pod_name>

Installation Failure

If the Intel® Smart Edge Open Developer Experience Kit installation has failed on pulling the namespace pods like Telemetry, reboot the system. After rebooting, execute the following command:

swapoff -a 
systemctl restart kubelet (Wait till all pods are in “Running” state.)
./edgesoftware install

Pod Status shows "ContainerCreating" for a long time

If pod status shows ContainerCreating or Error or CrashLoopBackOff for 5 minutes or more, run the following commands:

swapoff -a 
systemctl restart kubelet (Wait till all pods are in “Running” state.)
./edgesoftware install 

Installation and Debug Log Info File Path 

Installation log info of Intelligent Connection Management for Automated Handover module will be available at: 



Product Key Requirement Failure 

If the following failure appears, ensure the proxy settings are correct:

$ ./edgesoftware install 
Failed to check Product Key requirements. 503 Service Unavailable

Support Forum 

If you're unable to resolve your issues, contact the Support Forum.  

Execute the command below to consolidate a list of the log files in tar.gz compressed format, e.g., Intelligent_Connection_Management.tar.gz​.  

tar -czvf Intelligent_Connection_Management.tar.gz /var/log/esb-cli/Intelligent_Connection_Management_for_Automated_Handover_2.0.0/Intelligent_Connection_Management_for_Automated_Handover


Product and Performance Information


Performance varies by use, configuration and other factors. Learn more at