Amarisoft

Connecting to External MME

The purpose of this tutorial is to show you how to run MME in an external PC (in a virtual box on an external PC). In ordinary usage of Amarisoft Callbox, we run eNB/gNB on a same PC.  Motivation for this tutorial was for the case where non-Amarisoft RAN and Amarisoft Core are used, but I don't have any non-Amarisoft RAN to play with and I tried with Amarisoft RAN and Amarisoft Core but they are in different location. However, you can apply the concept of this tutorial to the case for Amarisoft RAN + Non-Amarisoft Core and for Non-Amarisoft RAN + Amarisoft Core.  It is relatively simple to combine the heterogenious components, the only parameters that you need to pay attention to are  amf_addr and gtp_addr.

Table of Contents

Introduction

In the evolving landscape of mobile network architectures, the separation and virtualization of network functions have become fundamental to deploying flexible, scalable, and interoperable solutions. The Mobility Management Entity (MME) plays a crucial role in the LTE Evolved Packet Core (EPC) as the key control-plane node responsible for mobility management, session handling, and signaling between the radio access network (RAN) and core network elements. Traditionally, solutions like Amarisoft Callbox integrate both the radio (eNB/gNB) and core components on a single system for ease of use and rapid prototyping. However, as real-world deployments increasingly demand interoperability between heterogeneous RAN and core network elements—sometimes from different vendors or situated in physically distinct environments—there is a strong motivation to decouple and virtualize core functions such as the MME. This tutorial demonstrates how to configure and run the MME in a virtualized environment (such as a VirtualBox instance) on an external PC, enabling flexible combinations like Amarisoft RAN with a third-party core (or vice versa). The approach leverages standardized interfaces and configurable parameters, notably amf_addr (Access and Mobility Function address) and gtp_addr (GPRS Tunneling Protocol address), to ensure seamless interconnection between distributed network components. Understanding this setup is vital for engineers, researchers, and operators aiming to test, deploy, or interoperate with multi-vendor or geographically distributed 4G/5G network architectures.

Summary of the Tutorial

This tutorial outlines the procedure for setting up and testing a 5G/4G network environment where the MME (Mobility Management Entity) is hosted externally on a separate PC. The steps are organized into setup, configuration, execution of the test, and log analysis.

The entire process verifies proper integration and operation of an external MME in a test network, focusing on network setup, configuration validation, protocol registration, connectivity checks, and log-based troubleshooting.

Test Setup

In this setup, I installed callbox software on an external PC with fedora to use it as the external MME.

TestSetup ExternalMME 01

Configuration

I used gnb-sa-external-mme.cfg which is copied and modified from gnb-sa.cfg.

ExternalMME Configuration 01

I used mme-ims-external.cfg on the external MME PC which is copied from mme-ims.cfg.

ExternalMME Configuration 02

I used ots.default.cfg file in /root/ots/config directory on the external MME PC. I haven't created any additional config file for this because the change will be very minor and may not be mandatory.

ExternalMME Configuration 03

In gnb-sa-external-mme.cfg  on Callbox, I made the following modification. Note that I changed amf_addr to point to the external MME PC IP address and gtp_addr to point to the IP address of NIC on Callbox which has access to external PC.

ExternalMME Configuration 04

Configure as follows in /root/mme/config/mme.cfg (mme-ims-external.cfg ) on the external MME PC. gtp_addr here is the IP address of NIC which has access to other PCs.

ExternalMME Configuration 05

Configure as follows in /root/ots/config/ots.cfg on the external MME PC

ExternalMME Configuration 06

Perform the test

On Callbox (enb) screen, run the command : ng. this shows the IP address of the MME IP which the gNB is connected to.

ExternalMME Run 01

On the external MME PC, you can check the IP address of gNB which the MME is connected to using the command ng_ran in (mme) screen window.

ExternalMME Run 02

On the Callbox, confirm the gNB (cell) is configured as intended using 'cell' and 'cell phy' command.  The defailed configuration is not important for this tutorial. You may use any kind of SA configuration for this tutorial.

ExternalMME Run 03

Now Power On UE and let it complete the attach process and check if UE is successfully registerred to the external MME and IP address is assigned to the UE

ExternalMME Run 04

Try ping from the external MME PC to UE and confirm that ping goes through.

ExternalMME Run 05

ExternalMME Run 06

Log Analysis

Since the MME is running on external PC, I changed IP address of MME as shown below and increased the Max size of all the components to capture the full header of data traffic.

ExternalMME Log 01

Increase the max size of all the components on eNB for troubleshooting

ExternalMME Log 02

You can check if the gNB is successfully connected to the external MME

ExternalMME Log 03

Power on UE and check if all the protocol sequence is properly going through

ExternalMME Log 04