Skip to content

balancing_test

Github Action edited this page Mar 11, 2026 · 6 revisions

RT-5.3: Aggregate Balancing

Summary

Load balancing across members of a LACP-controlled LAG

Testbed type

Topology

graph LR;
A[ATE] <-- (Port 1) --> B[DUT];
B[DUT] <-- LACP LAG (Port 2-8) --> C[ATE];
Loading

Procedure

  • Connect ATE port-1 to DUT port-1
  • Connect ATE ports 2 through 8 to DUT ports 2-8
  • Configure ATE and DUT ports 2-8 to be part of a LACP-controlled LAG
  • Configure a default static route on DUT with the next hop to ATE LAG
  • Send at least 1000 flows from ATE port-1 towards the DUT with the following parameters
    • IP/TCP (Protocol number 0x06):
      • IP header: IPv4/v6 packets with different source and destination address pairs
      • TCP header: IPv4/IPv6 packets with varying TCP source port and destination ports
      • Flow Label: IPv6 packets with varying flow labels
    • IPinIP (Protocol number 0x04):
      • TCP header: IPinIP containing IPv4/v6 payload with different source and destination addresse pairs
      • Flow Label: IPinIP containing IPv4/v6 payload with varying flow labels
    • Ensure that traffic is seen across all the LAG members

NOTE: Due to the random nature of the test you may not see a balanced distribution of traffic, but all the links should get traffic

Canonical OC

{
  "openconfig-interfaces:interfaces": {
    "interface": [
      {
        "name": "Port-Channel1",
        "config": {
          "name": "Port-Channel1"
        }
      },
      {
        "name": "Ethernet29/1",
        "config": {
          "name": "Ethernet29/1"
        }
      }
    ]
  },
  "openconfig-lacp:lacp": {
    "interfaces": {
      "interface": [
        {
          "config": {
            "name": "Port-Channel1"
          },
          "members": {
            "member": [
              {
                "config": {
                  "interface": "Ethernet29/1"
                },
                "interface": "Ethernet29/1",
                "state": {
                  "activity": "ACTIVE",
                  "aggregatable": true,
                  "collecting": true,
                  "counters": {
                    "lacp-errors": "0",
                    "lacp-in-pkts": "4393",
                    "lacp-out-pkts": "130415",
                    "lacp-rx-errors": "0",
                    "lacp-tx-errors": "0",
                    "lacp-unknown-errors": "0"
                  },
                  "distributing": true,
                  "interface": "Ethernet29/1",
                  "oper-key": 1,
                  "partner-id": "ac:78:d1:1e:ad:c8",
                  "partner-key": 55,
                  "partner-port-num": 44,
                  "port-num": 175,
                  "synchronization": "IN_SYNC",
                  "system-id": "38:38:a6:a2:f7:30",
                  "timeout": "LONG"
                }
              }
            ]
          },
          "name": "Port-Channel1",
          "state": {
            "name": "Port-Channel1",
            "system-id-mac": "38:38:a6:a2:f7:30"
          }
        }
      ]
    }
  }
}

OpenConfig Path and RPC Coverage

paths:
  /interfaces/interface/ethernet/config/aggregate-id:
  /interfaces/interface/aggregation/config/lag-type:
  /lacp/config/system-priority:
  /lacp/interfaces/interface/config/name:
  /lacp/interfaces/interface/config/interval:
  /lacp/interfaces/interface/config/lacp-mode:
  /lacp/interfaces/interface/config/system-id-mac:
  /lacp/interfaces/interface/config/system-priority:

rpcs:
  gnmi:
    gNMI.Set:
      union_replace: false
    gNMI.Subscribe:
      on_change: false

Minimum DUT platform requirement

  • vRX

Clone this wiki locally