Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The O-RAN SC A1 Simulator (A1 SIM) is a RAN-Sim enhancement to add A1 interface support to RAN app for the SON use-case. It has an internal Kafka Cluster Communicator module which further redirects A1 Policy operations to a Kafka Cluster message topic, to be consumed by RAN app. Then, responses from RAN app are collected from another configured Kafka Cluster message topic. After a request message is sent, a response message will be expected within some configurable timeout interval (default: 30 sec).

...

  1. A1 SIM has to be cloned from this link: https://gerrit.o-ran-sc.org/r/admin/repos/sim/a1-interface,general
  2. Go to the directory: "a1-interface/near-rt-ric-simulator/test/STD_2.0.0" and edit the file called "build_and_start_with_kafka.sh"
    On the line 98, change Kafka Cluster address and port: MSG_BROKER_URL=localhost:9092
    Also, you can set request_topic and response_topic for per policy type. However, for the Step 5, you have to configure your topics named kafkatopicreq2 and kafkatopicres2.

    To do so, go to the directory "a1-interface/near-rt-ric-simulator/test/KAFKA_DISPATCHER/resources" and edit the file named "policytype_to_topicmap.json"

    After Kafka Cluster is being created, please validate existence of your topics using a command like the below:
    P.S: Please don't forget to change the path for kafka-topics.sh in accordance with your Kafka Cluster installation.

    Code Block
    languagebash
    $ /opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092
    kafkatopicreq2
    kafkatopicres2


  3. In order to build & start A1 SIM with Kafka Cluster Communicator module, fire this command: "./build_and_start_with_kafka.sh duplicate-check kafka-srv publish-resp"
    Parameters & definitions:
    1. duplicate-check : A duplicate policy is when the policy JSON is exactly same as for a different policy id of the same type will not allowed.
    2. kafka-srv: Sets a URL and port for Kafka Cluster Communicator module like localhost:7075
    3. publish-resp: The Simulator will publish payloads to Kafka Cluster request topic, and will wait for a response from response topic.
  4. Check to see both containers are available and running.$ docker ps

    Code Block
    languagebash
    $ docker ps
    CONTAINER ID   IMAGE              COMMAND                  CREATED              STATUS              PORTS     NAMES
    dd966210ce86   a1test             "/bin/sh -c 'src/sta…"   About a minute ago   Up About a minute             a1StdSimulator
    1ac17bac7ffa   kafka_dispatcher   "/bin/sh -c src/star…"   About a minute ago   Up About a minute             kafkamessagedispatcher
    
    


  5. Finally, run unit test cases:
    $ ./basic_test.sh nonsecure duplicate-check ignore-ext-srv

    When the test cases run successfully, you will see a message like the below:
    ********************
    *** All tests ok ***
    ********************

    Parameters & definitions:
    1. duplicate-check: If the A1 SIM is being started with this flag, then the test cases must also use the same flag.
    2. ignore-ext-srv: This flag will ignore external-server that is not required for SON use-case.

You can observe control loop message for A1 based SON action via "kafka-console-consumer.sh" from your Kafka Cluster installation.
P.S: Please don't forget to change the path for "kafka-console-consumer.sh" in accordance with your Kafka Cluster installation.

Code Block
languagebash
$ /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic kafkatopicreq2 --from-beginning
"{\"action\": \"CreatePolicy\", \"payload\": {\"scope\": {\"ueId\": \"ue1\", \"qosId\": \"qos1\"}, \"statement\": {\"priorityLevel\": 5}}, \"policy_type_id\": \"STD_1\", \"policy_id\": \"pi1\"}"
"{\"action\": \"UpdatePolicy\", \"payload\": {\"scope\": {\"ueId\": \"ue1\", \"qosId\": \"qos1\"}, \"statement\": {\"priorityLevel\": 5}}, \"policy_type_id\": \"STD_1\", \"policy_id\": \"pi1\"}"
"{\"action\": \"GetPolicyStatus\", \"payload\": null, \"policy_type_id\": \"STD_1\", \"policy_id\": \"pi1\"}"

RAN App : 
A new RAN App module in RAN-Sim is an abstraction of the function provided by an xApp to support A1-based actions. For Kohn release, RAN App will provide the following functions to support A1-based action for the ANR SON use case:
1.Receive A1 policy message over Kafka bus from A1 Termination
2.Communicate via websocket with RAN-Sim Controller to control the CU/DU NF in the Honeycomb NF modules, to achieve an end result similar to what an xApp would have done over E2.
For Kohn release, the A1 message received has handover (HO) related kpis and RAN App will effect a change in the configuration of the NR Cell Relation property in the appropriate CU(s).

...