Running Multiple MME
The purpose of this tutorial is to show you how to run multiple MME and let multiple cells get connected to different MME. You can run multiple instances of mme in a callbox without any extra license requirement. The main use case for this is to test roaming scenario.
In live network, multiple RAN belongs to different carriers and multiple separate core network are involved in roaming scenario. In Amarisoft callbox, running multiple instances of RAN(eNB, gNB) requires additional license and further tricky setup. As an alternative, it is recommend to use single instance of eNB/gNB with multiple cells that has different PLMN and then run the multiple instances of Core Network (MME) as roaming test environment.
Table of Contents
- Running Multiple MME
Test Setup
In this setup, two instances of MME/IMS are running in the callbox. All the components will launch automatically by lte service and all the components will be automatically added to 'screen' window as well. (
Configuration
The configuration for this use case is pretty complicated comparing to regular use case because you need to add additional components (MME1 and IMS1 in this case) and associate separate configuration files for them. In addition, you need to modify OTS configuration as well to incoporate the newly added components.
Configuration File Setup
I used enb-2cell-2plmn.cfg which is copied and modified from enb-2cell-ho.cfg (These configuration files are located in /root/enb/config).
I used two separate mme configuration files : mme-ims-0.cfg and mme-ims-1.cfg which are copied and modified from mme-ims.cfg. Note that mme0.cfg and mme1.cfg are symbolically linked to mme-ims-0.cfg and mme-ims-1.cfg respectively. (These configuration files are located in /root/mme/config).
I used two separate ims configuration files : mme.default.0.cfg and mme.default1.cfg which are copied and modified from ims.default.cfg. Note that ims0.cfg and ims1.cfg are symbolically linked to ims.default0.cfg and ims.default1.cfg respectively. (These configuration files are located in /root/mme/config).
I used ots-multi-mme.cfg which is copied and modiefied from ots.default.cfg (These configuration files are located in /root/ots/config).
Configuration for eNB
In enb-2cell-2plmn.cfg , I made modifications as follows. Note that one more mme_addr is added. 127.0.1.100 is gtp_addr of MME 0 and 127.0.1.101 is gtp_addr of MME 1.
Since all the mmes are running on the same PC as ENB in test setup, you can keep gtp_addr as it is without any change.
Now we are going to two cells with different PLMNs and get each of them mapped to different rf port.
The first cell is mapped to rf_port 0 and PLMN 00101 is set the cell.
The second cell is mapped to rf_port 1 and PLMN 00102 is set the cell.
Comment out plmn_list[] in cell_default. We do this because we want to specify different PLMN for each of the cells. If you specify PLMN in cell_default, that same PLMN applies to every cells which is not intended for this use case.
Configuration for MME 0
Followings are the configuration in mme-ims-0.cfg. This MME will be associated with the first cell of ENB. We will use the contents of the default mme configuration to MME 0.
Keep gtp_addr, plmn and ims_list same as in the default configuration.
Keep the "default" PDN/APN as in the default configuration file. ptn_type is "ipv4", the range of ip address is 192.168.2.2~192.168.2.254
Keep the "internet" PDN/APN as in the default configuration file. ptn_type is "ipv4" and "ipv4v6", the range of ip address is 192.168.3.2~192.168.3.254 and 2001:468:2000:1::~2001:468:2000:ffff:: respectively.
Keep the "ims" PDN/APN as in the default configuration file. ptn_type is "ipv4v6", the range of ip address is 192.168.4.2~192.168.4.254 and 2001:468:3000:1::~2001:468:3000:ffff:: respectively.
Keep the "ims" PDN/APN as in the default configuration file. ptn_type is "ipv4v6", the range of ip address is 192.168.5.2~192.168.5.254 and 2001:468:4000:1::~2001:468:4000:ffff:: respectively.
Configuration for MME 1
Followings are the configuration in mme-ims-1.cfg. NOTE that this MME has configured for the PLMN 310260 and use the gtp_addr which is different from MME 0. Also mis_addr and bind_addr in ims_list are set differently from MME 0.
Set "default" PDN/APN differently from MM0 configuration. ptn_type is "ipv4", the range of ip address is 192.168.12.2~192.168.12.254
Set "internet" PDN/APN differently from MM0 configuration. ptn_type is "ipv4" and "ipv4v6", the range of ip address is 192.168.13.2~192.168.13.254 and 2001:468:1200:1::~2001:468:1200:ffff:: respectively.
Set "ims" PDN/APN differently from MM0 configuration. ptn_type is "ipv4v6", the range of ip address is 192.168.14.2~192.168.14.254 and 2001:468:1300:1::~2001:468:1300:ffff:: respectively.
Set "sos" PDN/APN differently from MM0 configuration. ptn_type is "ipv4v6", the range of ip address is 192.168.15.2~192.168.15.254 and 2001:468:1400:1::~2001:468:1400:ffff:: respectively.
Configuration for IMS 0
Followings are the configuration in ims.default0.cfg.
The addr and bind_addr of sip_addr and all other parameters (sctp_addr, cx_server_addr, cx_bind_addr, rx_server_addr) are same as in the default ims configuration.
Configuration for IMS 1
Followings are the configuration in ims.default1.cfg. You should configure the parameters differently from the IMS 0 configuration.
The addr and bind_addr of sip_addr and all other parameters (sctp_addr, cx_server_addr, cx_bind_addr, rx_server_addr) are set differently from the configuration of IMS 0.
Configuration for OTS
Followings are the configuration in ots-multi-mme.cfg The purpose of this step is to integrate the new components into the screen UI(User Interface).
First set the MME_CONFIG_FILE (the configuration file pointer for the first MME) to "config/mme0.cfg". And then create a new Components named " MME1" and map MME1_CONFIG)FILE to "config/mme1.cfg"
Then set the IMS_CONFIG_FILE (the configuration file pointer for the first IMS) to "config/ims0.cfg". And then create a new Components named " IMS1" and map IMS1_CONFIG)FILE to "config/ims1.cfg"
Perform the test
In this test, I would just run a lte service with additional MME. I would not try any UE attach. In this test, all the eNB and mme is run automtically by lte service.
If you run lte service and get into screen mode, you will see a new component (mme1) is added as below. This addition is done by the configuration in ots.cfg as indicated below.
Now check out the network interface while the service is running and you will see many tun interfaces are created as shown below.
these are the tun interface created by mme-ims-0.cfg
these are the tun interface created by mme-ims-1.cfg
Followings are the ipv4 routing table created by the operating system and lte service.
Followings are the ipv6 routing table created by the operating system and lte service.
Now go back to lte service screen and check follows.
Check the mmes that the eNB is connected as shown below. (NOTE : It may take some time to get both of s1 to be printed as "setup_done'. Sometimes you may need to try s1 command several times until you see both of S1 are printed as 'setup_done'.
Go to MME (mme0) and check out the connected enb.
Go to MME1(mme1) and check out the connected enb.
Go to IMS (ims0) and check out the connected mme.
Go to IMS1 (ims1) and check out the connected mme.
Log Analysis
The screenshots below shows only the initial connection of each network components and SIB1 message from each cell. I have tried this with real UE and captured the full log from attach to IMS registration for both cells. Check out the Sample Logs.
If you run WebGUI, you would notice that a new component (MME1) is added as shown below.
Followings are some of highlighted steps you may want to check.
This shows sctp socket is established with mme0(127.0.1.100).
This shows sctp socket is established with mme1(127.0.1.101).
eNB send S1 setup request to mme0(127.0.1.100).
mme0 send S1 setup response to eNB. This indicates that S1AP between eNB and mm0 is established.
eNB send S1 setup request to mme1 (127.0.1.101).
mme1 send S1 setup response to eNB. This indicates that S1AP between eNB and mm1 is established.
Now the Cell 1 is transmitting SIB1 with PLMN 001-01 as set in the configuration file..
Then Cell 2 is transmitting SIB1 with PLMN 001-02 as set in the configuration file.