Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

gNOI LinkQualification Service

Use the gNOI LinkQualification service to test the reliability of a link between two devices.

Overview

Use the LinkQualification service RPCs to perform a packet-based link qualification (PBLQ) test on a pair of connected ports. The LinkQualification service proto definition file is located at https://github.com/openconfig/gnoi/blob/main/packet_link_qualification/packet_link_qualification.proto.

A packet-based link qualification (PBLQ) test checks the reliability of a link. A GNOI client (or remote controller) is connected to both endpoints of the link to be tested. The client sends LinkQualification service RPCs to both devices to test their capability to run the test before initiating the test. When the test is initiated, the near end device generates test packets based on the information it receives from the client. The near end device sends the test packets to the far end device, which reflects the packets back to the near end device in a closed loop. When the test is complete, both devices send aggregate packet statistics to the client. The client examines how many of the sent packets were received or dropped. The client uses this information to determine the quality of the link. The client can then manage and load balance traffic across the network based on the link quality.

The near end device operates as the injector in packet injector mode. In this mode, the device generates packets and injects them into the link between the two devices. The device generates the number of packets in the packet size instructed by the client.

The far end device operates as the reflector in ASIC loopback mode. While the test is running, both interfaces involved in the test to go into loopback mode. The devices exchange the test packets in a closed loop between the interfaces so other packets do not affect the results of the test.

Supported RPCs

Table 1: Supported LinkQualification RPCs
RPC Description Introduced in Release
Capabilities‎()

Return whether the device meets the requirements to perform the test.

Junos OS Evolved 25.2X100D20

Create()

Start a PBLQ test on a set of interfaces.

Junos OS Evolved 25.2X100D20

Get()

Return the results of the test.

Junos OS Evolved 25.2X100D20

List()

List the results of the tests that are available for the specified interface.

Junos OS Evolved 25.2X100D20

Delete()

Remove the specified test and its results. If the test is in progress, this RPC cancels and then deletes the test.

Junos OS Evolved 25.2X100D20

Topology

Figure 1: Example Topology When Starting a PBLQ Test Example Topology When Starting a PBLQ Test

In this topology, the client has already confirmed that both devices meet the capability requirements to run the PBLQ test. The client initiates the test by sending the Create() RPC to both devices. The near end device generates test packets based on the client's instructions. The near end device sends the test packets out the interface et-1/0/2 and across the link to the far end device. The far end device reflects the test packets back to the near end device in a closed loop through interface et-1/0/3.

Network Device Configuration

Before you begin, confirm that:

  1. Your devices support this feature. The endpoints must support PBLQ testing using LinkQualification service RPCs. Use Feature Explorer to confirm platform and release support for this feature.

  2. The endpoints are connected physically.

  3. Both interfaces involved in the test are active. Run the show interfaces terse command on each device to check that the status of both interfaces is UP.

To prepare your devices to run the PBLQ test:

  1. Enable RPC services and gNOI operations on your devices. Each endpoint of the link is a network device.
  2. On the client and both link endpoints, confirm the gnoi-pblq option is enabled at the [edit system processes] hierarchy level. This configuration is enabled by default.

    If you have disabled this option, you must enable it before running the PBLQ test:

  3. Reroute any traffic that would travel over the link you are testing. You can only run test traffic over the link while the PBLQ test is in progress.

Run the PBLQ Test

After you have configured the gNOI client and the endpoint devices, you are ready to write and execute your application.

  1. Write the application.
  2. Identify the link you want to test and the corresponding ports on each endpoint.
    • Both endpoints must be involved in the PBLQ test.

    • You can only test one port or interface on each of the devices at a time.

    • If the port under test is channelized, you can only test one channel at a time.

  3. Confirm the endpoints of the link have the capabilities needed to run the PBLQ test. From the client, run your application using the Capabilities() RPC to the near device and the far device.

    When the RPC returns the results, make a note of the minimum sampling interval. If the test duration is less than this value, the test request fails.

    Make a note of the device's supported modes that appear in the results. The modes are INJECTOR, GENERATOR, or REFLECTOR. You must use a supported mode in the next step.

  4. Start the PBLQ test. Run the application from the client with the Create() RPC to the near device and the far device in parallel.

    In the RPC message, include the mode for the device as a parameter. The mode you select must match one of the supported modes listed in the results of the Capabilities() RPC.

    In the RPC message, you can specify the number and size of packets that the client injects into the test. By default, the client uses 100 packets of size 1500 bytes each. If you set the value for packet size or packet count to 0, the client uses the default value instead. The maximum number of packets is 1200.

    When the RPC is successful, the client adds the endpoint ports to the same VLAN. The client injects packets into that VLAN through the near device. The endpoint devices place the ports under test into loopback mode. While the test runs, the test traffic enters and exits through the same ports on the endpoint devices, creating a closed loop of the injected packets.

    Note: For timing, use the RPCSyncedTiming message. NTP timing is not supported.
  5. (Optional) Confirm the test is running using the show interfaces terse command on the endpoints. The operational status is TESTING while the test is running.
  6. Get the results of the test. Run the application using the Get() RPC.

    The returned message shows the results. When the state shows QUALIFICATION_STATE_COMPLETED, the test is complete.

  7. (Optional) To view all PBLQ tests, run the application using the List() RPC.

    The message returns a list of all PBLQ tests currently running or completed on the link. The list includes the ID of each test and the port that was tested.

  8. (Optional) To delete the results of a test or end a test early, run the application using the Delete() PRC.
    You might want to cancel an ongoing test if you notice errors or durations that have exceeded a threshold, want to change the MTU for the test, or want to reschedule the test for another time. To cancel the test, specify the ID of the test. When successful, the message returns Test Aborted and the status of the test reads CANCELLED.
  9. (Optional) View the status of the test on your device using the show services monitoring pblq (capabilities | summary | test-id test-id) commands.

    You can view information about the PBLQ tests from either endpoint. For example: