O1 interface tests uses O1 siumalotrs to verify the O1 netconf functionality.  Currently we can test O1 netconf interface in two ways, first one is automated test-suite and other one is manual verification.

Prerequisite:

docker, docker-compose

Automated test-suite

Test-suite does the following steps

  • Brings up simulators(RU & DU)
  • Brings up SDNR
  • Add simulators to SDNR
  • Checks connectivity status by fetching the capabilities
  • Updates DU and RU config and prints the output
  • Tear down the services
git clone -b dawn https://gerrit.o-ran-sc.org/r/smo/o1.git
cd o1/
./run_tests.sh

Manual verification

Example adding DU simulator

curl -u admin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U  -X POST "http://<HOST_IP>:8181/rests/operations/netconf-node-topology:create-device" -H "accept: */*" -H "Content-Type: application/json" -d '{"input":{"pass-through":{},"login-password":{"username":"netconf","password":"netconf!"},"host":"'"$HOST_IP"'","port":"18310","node-id":"du_sim"}}')


  • Verify the configuration changes
    GUI go to config page and select the required model and update with new values
    REST API
curl -u admin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U -X PUT "http://<HOST_IP>:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=du_sim/yang-ext:mount/o-ran-sc-du-hello-world:network-function/du-to-ru-connection=O-RU-1" -H "accept: */*" -H "Content-Type: application/json" -d "{"du-to-ru-connection":[{"name":"O-RU-1","administrative-state":"UNLOCKED"}]}")


If there are no errors, then the config change is successful.


  • No labels

43 Comments

  1. Hi

    I get error " Access to the data model "o-ran-sc-ric-xapp-desc-v1" is denied because "netconf" NACM authorization failed." while doing an edit-config for

    'o-ran:ric:xapp-desc' from netconf client.  Can someone help me out please.


    Below is request and response

    request:

    <edit-config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"

    xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">

    <target>

    <running/>

    </target>

    <config>

    <ric xmlns="urn:o-ran:ric:xapp-desc:1.0">

    <xapps>

    <xapp xc:operation="create">

    <name>hwxapp</name>

    <release-name>hwxapp</release-name>

    <version>0.0.4</version>

    <namespace>ricxapp</namespace>

    </xapp>

    </xapps>

    </ric>

    </config>

    </edit-config>


    response:

    <?xml version="1.0" encoding="utf-8"?>

    <rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="54">

    <rpc-error>

    <error-type>protocol</error-type>

    <error-tag>access-denied</error-tag>

    <error-severity>error</error-severity>

    <error-path>/o-ran-sc-ric-xapp-desc-v1:ric/xapps/xapp</error-path>

    <error-message xml:lang="en">Access to the data model "o-ran-sc-ric-xapp-desc-v1" is denied because "netconf" NACM authorization failed.</error-message>

    </rpc-error>

    </rpc-reply>


    1. Hi Mohammad,

      Network Access Control Module (NACM) by default has a deny-all statement for any attempts to modify a configuration. So any permission to enable access has to be explicitly provided before attempting any changes in the configuration. This has to be done on the NETCONF server, which from your name tells me it is the NETCONF server running on the Near RT-RIC. Have you checked if the user that is sending the request has permission to make the changes?

  2. Thanks for your response.
    I have now moved to dawn release and all my previous working netconf commands have been throwing below error.
    Missing mandatory prefix for XML metadata "type".
    Can you please help?

    1. Which Network Function, e.g. O-DU or O-CU are you sending this request to? Can you share the entire request that you are sending?

  3. I m sending this to Near-Rt-RIC.

    Below is the requests.. which was fine in cherry but having issue in dawn.


    <get>
    <filter type="subtree">
    <ric xmlns="urn:o-ran:ric:xapp-desc:1.0"/>
    </filter>
    </get>


    <get>
    <filter type="subtree">
    <ric xmlns="urn:o-ran:ric:gnb-status:1.0"/>
    </filter>
    </get>

    1. First of all, this is an error being reported by the server, the Near RT-RIC. This issue should be raised there, not here in SMO, which is just a client.

      However, I am not sure if this example is complete. But I would recommend that you look at this example - https://datatracker.ietf.org/doc/html/rfc6241#section-6.4.

  4. thanks for your response

  5. When I verify the config changes I get:
    {"errors":{"error":[{"error-tag":"data-missing","error-type":"protocol","error-message":"Mount point does not exist."}]}}


    In fact, if I just try to do a GET a 409 is returned:
    curl -sw '%{http_code}' -u admin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U -X GET "http://127.0.1.1:8181/rests/data/network-topology:network-topology/topology=topology-netconf/node=du_sim/netconf-node-topology:available-capabilities?content=nonconfig" -H "accept: application/xml"
    <errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"><error><error-tag>data-missing</error-tag><error-type>protocol</error-type><error-message>Request could not be completed because the relevant data model content does not exist</error-message></error></errors>409


    But, I do see the RU and DU as "Connecting" in the ODLUX ONAP Connect page.  Any thoughts?

  6. Hi David Harton,

    It appears that even thought RU and DU were connecting, that they were not connected. The SMO has to be able to "mount" the device before any requests succeed. That is where I would focus.

    I do not know which RU/DU you are using. If you are using the SIM version, your best bet for any questions is withAlex Stancu or Martin Skorupski. If you are using your own, then you will have to debug the NETCONF session establishment, which is what enables the SMO to mount the device.

    1. I followed the steps above:

      git clone -b dawn https://gerrit.o-ran-sc.org/r/smo/o1.git
      cd o1/
      ./run_tests.sh


      In the following environment:

      VirtualBox:~/smo/o1/client$ docker --version
      Docker version 20.10.8, build 3967b7d
      VirtualBox:~/smo/o1/client$ docker-compose --version
      docker-compose version 1.29.2, build 5becea4c
      VirtualBox:~/smo/o1/client$ uname -a
      Linux VirtualBox 5.11.0-37-generic #41~20.04.2-Ubuntu SMP Fri Sep 24 09:06:38 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux


      And I get:

      <...deletia...>

      000
      200
      SDNR is up and running

      RU is up.

      DU is up.

      Adding DU simulator
      Successfully added device DU

      Checking DU simulator

      DU simulator is not responding.


      1. Adding bhanu chandra. Bhanu, can you check why it says the DU simulator is not responding?

        1. It seems to be a timing issue. The time difference between the adding device and checking connection is not sufficient.

          Currently the time delay is 2 sec, while debugging the issue i have increased the delay to 5 sec and it worked.
          https://gerrit.o-ran-sc.org/r/gitweb?p=smo/o1.git;a=blob;f=run_tests.sh;h=4d10051cefc92bef937b63eaad423e3c324ce1bc;hb=refs/heads/master#l63
          https://gerrit.o-ran-sc.org/r/gitweb?p=smo/o1.git;a=blob;f=run_tests.sh;h=4d10051cefc92bef937b63eaad423e3c324ce1bc;hb=refs/heads/master#l86

  7. Hi,

       I am getting a error "RU failed to Connect" when I run ./run_tests.sh.Can someone help out resolving this error.

    Below is output I am getting when I run.

    [+] Running 3/3
    ⠿ Container sdnrdb Removed 0.8s
    ⠿ Container sdnr Removed 11.2s
    ⠿ Network smo_integration Removed 0.2s
    [+] Running 3/3
    ⠿ Network smo_integration Created 0.1s
    ⠿ Container sdnrdb Started 1.3s
    ⠿ Container sdnr Started 1.4s
    000
    000
    000
    000
    000
    000
    000
    000
    000
    000
    000
    200
    SDNR is up and running

    RU failed to connect.

    Thanks in advance...


    1. Please check whether the RU and DU simulators are up or not.

      Ideally docker ps command should list down the simulators, can you please confirm?

      1. Here is the snapshot when i give docker ps command 

        1. Seems to be a timing issue, please refer the comment

          Re: How to test the O1 interface



          1. Yeah its resolved now.Thank you for responding.

  8. While we wait for bhanu chandra to respond, here are a few things I would check.

    If you look at the README in the root folder, were you able to bring up the two servers, DU and RU up? Were you able to "mount" them onto ODL using the GUI? Those two steps are needed before you can run any tests.

  9. Hello sir,

              I have checked the README in the root folder.The Host ip which i was giving was wrong i have corrected that mistake now.Its showing now RU is connected. 

    Below is the snapshot of GUI which I got.

    Now I am getting this issue .Please help me out.

    [+] Running 1/0
    ⠿ tests Warning: No resource found to remove 0.0s
    [+] Running 3/3
    ⠿ Network tests_default Created 0.1s
    ⠿ Container tests-ntsim-ng-o-ru-1 Started 1.4s
    ⠿ Container tests-ntsim-ng-o-du-1 Started 1.3s
    [+] Running 3/3
    ⠿ Container sdnr Removed 11.3s
    ⠿ Container sdnrdb Removed 0.9s
    ⠿ Network smo_integration Removed 0.2s
    [+] Running 3/3
    ⠿ Network smo_integration Created 0.1s
    ⠿ Container sdnr Started 1.4s
    ⠿ Container sdnrdb Started 1.4s
    000
    000
    000
    000
    000
    000
    000
    000
    000
    000
    000
    200
    SDNR is up and running

    RU is up.

    DU is up.

    Adding DU simulator
    Successfully added device DU

    Checking DU simulator

    DU simulator is not responding.


  10. How can we manually send the software upgrade RPC in this SMO?

    1. SMO ui has the provision to do the software upgrade. This is based on the rpc defined o-ran-software-management.yang. 

      RPC

      1. software-download
      2. software-install
      3. software-activate

      UI → configuration page → o-ran-software-management 

      Note: I didn't test this as the simulators are not capable but sharing the information.

  11. Hi, while trying to execute a RESTCONF 'POST' request to the point http://localhost:8181/rests/operations/network-topology:network-topology/topology=topology-netconf/node=ru_sim/yang-ext:mount/ietf-netconf:get-config, using POSTMAN, I am getting an internal server error as follows:

    <html>



    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
        <title>Error 500 Request failed.</title>
    </head>

    <body>
        <h2>HTTP ERROR 500 Request failed.</h2>
        <table>
            <tr>
                <th>URI:</th>
                <td>/rests/operations/network-topology:network-topology/topology=topology-netconf/node=ru_sim/yang-ext:mount/ietf-netconf:get-config
                </td>
            </tr>
            <tr>
                <th>STATUS:</th>
                <td>500</td>
            </tr>
            <tr>
                <th>MESSAGE:</th>
                <td>Request failed.</td>
            </tr>
            <tr>
                <th>SERVLET:</th>
                <td>org.glassfish.jersey.servlet.ServletContainer</td>
            </tr>
        </table>

    </body>

    </html>


    Could anyone please help.

  12. Were you successful in “mounting” the device?

  13. Yes. both du and ru are mounted and visible on the ODL GUI. All the basic netconf messages except get, get-config, cancel-commit and kill session are working with 200 OK response from the server.

  14. bhanu chandraThank you for the response. 

  15. Mahesh Jethanandani What is the role of NTS_manager in these tests? I mean, how can we connect the NTS manager to sdnr? 

  16. Hi.  When pnfReg goes to SMO, I assert username "root".  When netconf client at SMO talks to my netconf-server, it attempts to use a password.  I have no idea what it is using, however.  When I look in ODLUX UI I see "connecting" status.  If I change the password there to something I know, it works.  The question is that field has a pre-populated perhaps 4-character password in place.  I'd like to make that my password to make the auto-discovery hands free.  Can anyone tell me what default password smo-netconf could be trying to use?  Should I avoid this altogether and use an existing known published username/password credential for netconf ssh?

  17. Hi, is there any way to force password authentication instead of key-based for netconf-ssh in the SDNC?We are trying to connect to a node over O1 interface and it seems SDNC prefers key based authentication only, whereas the node accepts only password-based authentication, resulting in a connection failure.

  18. Hi, 

    I can see that the F-release version of the DU, part of SIM project has PM support. The following can be seen as part of the config:

    "supported-measurements": [
                    {
                        "performance-measurement-type""o-ran-sc-du-hello-world:user-equipment-average-throughput-downlink",
                        "supported-snssai-subcounter-instances": [
                            {
                                "slice-differentiator"2,
                                "slice-service-type"2
                            },
                            {
                                "slice-differentiator"1,
                                "slice-service-type"2
                            },
                            {
                                "slice-differentiator"2,


    Is there anyway to store this as historical performance measurement data, to be visible in ODLUX, as well as be sent to the ves collector?

    1. In ves collector, yes, because there is persistent storage.

      1. Hi,

        Alexandru Stancu santanu de There seems to be an option in ODLUX to generate file-ready notifications-but the server is constantly sending back an error notification . Is there any specific format to be followed to successfully execute this message? Thanks in advance for your help.


        1. Syama,

          Please start a new thread to discuss this new topic. Embedding it in an existing thread of other topics makes it hard to track the issue.

          Having said that, I am adding bhanu chandra , who would be the right person to look at from ODLUX perspective, and Alexandru Stancu from a message format perspective.

  19. Hi,

    Alexandru Stancu santanu de bhanu chandra  There seems to be an option in ODLUX to generate file-ready notifications-but the server is constantly sending back an error notification . Is there any specific format to be followed to successfully execute this message? Thanks in advance for your help.


    1. I think ODLUX is not yet ready to send RPC requests, even if you see the option there. You can manually invoke such notification via cURL:

      curl -X POST http://SDNR_IP_ADDRESS:8181/rests/operations/network-topology:network-topology/topology=topology-netconf/node={{node}}/yang-ext:mount/nts-network-function:invoke-ves-pm-file-ready --user "user:password" -H "Content-Type: application/yang-data+json" -d '{"input":{"file-location": "test_string"}}'
      1. Thank you for the response.

      2. Hi Alexandru Stancu ,

        Though the RESTCONF POSTcommand is executed successfully with 200 OK, the node (RU/DU) still gives back an error for the nts-network-function ves-pm-file-ready. Is it required to create a subscription first in addition to configuring the ves endpoint? The docker logs of the node also clearly indicate a failure in sending the ves_file_ready message.

        1. I see that for the O-DU you have a 200 response, but a status ERROR. Did you configure properly the VES collector details (IP address, port, user, pass)? I think that's the only thing is missing for the event to go through successfully.

          In the O-RU case, the problem is that the ves-file-ready  feature is not enabled by default. You can change that through the NTS_NF_STANDALONE_START_FEATURES environment variable (see example here).