gNB Simulator

../_images/gNBSim.png

Description

The gNB Sim tool simulates gNodeB and UE by generating and processing NAS and NGAP messages for the configured UEs and call flows. The tool currently supports simulation profiles for the following procedures,

  • Registration

  • UE initiated PDU Session Establishment

  • UE Initiated De-registration.

  • AN Release

It is also capable to generate and send user data packets (ICMP echo request) and process down-link user data (ICMP echo response) over the established data plane path (N3 Tunnel).

Configure gNB Simulator

  • The config file for GNBSIM can be found at <repo dir>/config/gnbsim.yaml

    Note: The configuration has following major fields (Read the comments in the config file for more details)

    • gnbs: List of gNB’s to be simulated. Each item in the list holds configuration specific to a gNB.

    • profiles: List of test/simulation profiles. Each item in the list holds configuration specific to a profile.

  • Enable or disable a specific profile using the enable field.

    Note: Currently following profiles are supported

    • register: Registration procedure

    • pdusessest (Default): Registration + UE initiated PDU Session Establishment + User Data packets

    • deregister: Registration + UE initiated PDU Session Establishment + User Data packets + Deregister

Build gNB Simulator

  • To modify gNB Sim within a container run

    $ kubectl exec -it gnbsim-0 -n omec bash
    

    Make required changes and run

    $ go build
    
  • To modify gNB Sim and build a new docker image

    $ cd <repo dir>
    $ make docker-build
    

    Use newly created image in the AIAB cluster run,

    $ cd <aiab repo dir>
    $ make reset-5g-test
    

    Modify the override file (ransim-values.yaml) to add the new image name

    $ make 5gc
    

Run gNB Sim

Enter into the gNB Sim pod by running

$ kubectl exec -it gnbsim-0 -n omec bash

After entering the pod run,

$ ./gnbsim

Note: By default, the gNB Sim reads the configuration from /free5gc/config/gnb.conf file. To provide a different configuration file, use the below command

$ ./gnbsim --cfg config/gnbsim.yaml