https://github.com/magma/S1APTester
A test tool that simulates the s1aptest functionality of a LTE network
https://github.com/magma/S1APTester
Last synced: 5 months ago
JSON representation
A test tool that simulates the s1aptest functionality of a LTE network
- Host: GitHub
- URL: https://github.com/magma/S1APTester
- Owner: magma
- License: other
- Created: 2019-08-22T20:23:44.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2022-12-09T07:42:14.000Z (over 2 years ago)
- Last Synced: 2024-11-09T09:03:04.061Z (5 months ago)
- Language: C
- Size: 6.73 MB
- Stars: 55
- Watchers: 22
- Forks: 43
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: CODEOWNERS
Awesome Lists containing this project
- awesome-telco - S1APTester - A test tool that simulates the s1aptest functionality of a LTE network. (UE / 4G)
README
# Introduction
S1APTester implements a UE(s) and eNodeB simulator for LTE Radio Access Networks
(RAN). The S1APTester is used to validate S1-C and S1-U Interfaces to an LTE
EPC.
It provides hooks for generating control and user plane procedures on the S1
Interface.S1APTester is currently used as the S1 testing engine for the following
projects:
- [Magma](https://github.com/facebookincubator/magma): An open-source software
platform that gives network operators an open, flexible and extendable mobile
core network solution.# Architecture
The Network Architecture of S1APTester is shown below
The S1APTester product contains the following components:
* Test Controller Framework (tfwApp)
* Exposes APIs towards the Test Controller Stub
* Responsible for configuring and interacting with UE Application and EnodeB
Application layers
* UE Application (ueApp)
* Simulates the UE
* Maintains UE related configuration and call processing data. Also has state
machines per UE
* Has NAS codec and security modules to build the NAS messages
* EnodeB Application (enbApp)
* Simulates the EnodeB functionality
* Maintains S1 Connection details
* Has S1AP and eGTP protocol stacks.
* Has TUCL Convergence layer, implements TCP and UDP layers
* Responsible for setting up of S1 Control and User plane
* Traffic Generator (Trfgen)
* Provides API for trigerring User plane traffic over LTE bearers of a
simulated UE.
* It uses Iperf3 for traffic generation
* Test Controller Stub (TestStub)
* Contains example test cases which use the APIs provided by test framework
for simulating various control and user plane procedures.
* Triggers various test case events towards Test Controller Framework (TFW)
* Receives and processes events from TFW# Compilation of S1APTester modules
S1APTester binary can be generated by executing below compilation steps:
## Compile S1SIM Application
```
$ cd TestCntlrApp/build
$ make cleanall
$ make
```
On successful compilation, the “libtfw.so” library gets generated under
TestCntlrApp/lib folder.## Compile Traffic Generator
```
$ cd Trfgen/build
$ make clean
$ make
```
On successful compilation, the “libtrfgen.so” library gets generated under
Trfgen/lib folder.# Testing with Magma
Following points should be considered when using S1APTester with
[Magma](https://github.com/facebookincubator/magma)## UE IP Address Configuration
While testing with [Magma](https://github.com/facebookincubator/magma) setup,
the current configuration parameters in Magma allow allocation of only 243 UE
IP addresses. We need to change the configuration in Magma codebase, in order
to support allocation of more than 243 UE IP addresses.The following mask value, i.e., 24 needs to be changed in the file:
[s1ap_wrapper.py](https://github.com/facebookincubator/magma/blob/master/lte/gateway/python/integ_tests/s1aptests/s1ap_wrapper.py)
(Filepath: [magma/lte/gateway/python/integ_tests/s1aptests/s1ap_wrapper.py](https://github.com/facebookincubator/magma/blob/master/lte/gateway/python/integ_tests/s1aptests/s1ap_wrapper.py))
```
TEST_IP_BLOCK = "192.168.128.0/24"
```Magma has reserved 11 IP addresses for internal purpose and 2 IP addresses
(Subnet Zero and All-Ones Subnet) are not allocatable. Therefore, with the mask
value of n, the maximum number of UE IP addresses allowed will be
((2^(32-n)) - 13).```
Example:
For the mask value of 24, maximum number of allowed UE IP addresses = ((2^(32-24)) - 13) = 243
For the mask value of 20, maximum number of allowed UE IP addresses = ((2^(32-20)) - 13) = 4083
For the mask value of 17, maximum number of allowed UE IP addresses = ((2^(32-17)) - 13) = 32755
```
Decreasing the mask value will provide more number of UE IP addresses in the
free IP address pool.Note: The testcase `s1aptests/test_scalability_attach_detach_multi_ue.py` can
be considered as a reference testcase for handling IP pool configuration and UE
inactivity timer configuration to support large number of UEs## License
S1APTester is BSD License licensed, as found in the LICENSE file.