Skip to content

Commit

Permalink
Minor changes for snappi_tests for T2-ixia, change udp port calculati…
Browse files Browse the repository at this point in the history
…ons. (#15906)

Description of PR
Currently the traffic for RDMA tests use randomly selected udp ports. This sometimes ends up sending traffic in a non-load-balanced way, and causes the tests to fail.

In this PR:

For multiple scripts that use udp: We serialize the UDP port numbers instead of randomly picking the numbers. This allows for more uniform load-balancing spread, and allows tests to pass more.
in multi_lossless helper: We reduce the background traffic rate, and raise the rate for lossless traffic, thus keeping the overall rate still same. This allows for accounting the speed of backplane.

co-authorized by: jianquanye@microsoft.com
  • Loading branch information
rraghav-cisco authored Dec 11, 2024
1 parent b5aca37 commit 47e7797
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,9 @@ def __gen_data_flow(testbed_config,
elif 'Test Flow 2 -> 0' in flow.name:
eth.pfc_queue.value = pfcQueueValueDict[flow_prio[1]]

src_port = UDP_PORT_START + eth.pfc_queue.value
global UDP_PORT_START
src_port = UDP_PORT_START
UDP_PORT_START += 1
udp.src_port.increment.start = src_port
udp.src_port.increment.step = 1
udp.src_port.increment.count = 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
# Compiled at: 2023-02-10 09:15:26
from math import ceil # noqa: F401
import logging # noqa: F401
import random
from tests.common.helpers.assertions import pytest_assert, pytest_require # noqa: F401
from tests.common.fixtures.conn_graph_facts import conn_graph_facts, fanout_graph_facts # noqa: F401
from tests.common.snappi_tests.snappi_helpers import get_dut_port_id # noqa: F401
Expand All @@ -20,14 +19,15 @@

PAUSE_FLOW_NAME = 'Pause Storm'
TEST_FLOW_NAME = 'Test Flow'
TEST_FLOW_AGGR_RATE_PERCENT = 30
TEST_FLOW_AGGR_RATE_PERCENT = 35
BG_FLOW_NAME = 'Background Flow'
BG_FLOW_AGGR_RATE_PERCENT = 25
BG_FLOW_AGGR_RATE_PERCENT = 22.5
DATA_PKT_SIZE = 1024
DATA_FLOW_DURATION_SEC = 10
DATA_FLOW_DELAY_SEC = 5
SNAPPI_POLL_DELAY_SEC = 2
TOLERANCE_THRESHOLD = 0.05
UDP_PORT_START = 5000


def run_m2o_oversubscribe_lossless_test(api,
Expand Down Expand Up @@ -297,10 +297,6 @@ def __gen_data_flow(testbed_config,
flow.tx_rx.port.tx_name = testbed_config.ports[src_port_id].name
flow.tx_rx.port.rx_name = testbed_config.ports[dst_port_id].name
eth, ipv4, udp = flow.packet.ethernet().ipv4().udp()
src_port = random.randint(5000, 6000)
udp.src_port.increment.start = src_port
udp.src_port.increment.step = 1
udp.src_port.increment.count = 1

eth.src.value = tx_mac
eth.dst.value = rx_mac
Expand All @@ -320,6 +316,13 @@ def __gen_data_flow(testbed_config,
elif 'Test Flow 2 -> 0' in flow.name:
eth.pfc_queue.value = pfcQueueValueDict[flow_prio[1]]

global UDP_PORT_START
src_port = UDP_PORT_START
UDP_PORT_START += 1
udp.src_port.increment.start = src_port
udp.src_port.increment.step = 1
udp.src_port.increment.count = 1

ipv4.src.value = tx_port_config.ip
ipv4.dst.value = rx_port_config.ip
ipv4.priority.choice = ipv4.priority.DSCP
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
# Compiled at: 2023-02-10 09:15:26
from math import ceil # noqa: F401
import logging # noqa: F401
import random
from tests.common.helpers.assertions import pytest_assert, pytest_require # noqa: F401
from tests.common.fixtures.conn_graph_facts import conn_graph_facts, fanout_graph_facts # noqa: F401
from tests.common.snappi_tests.snappi_helpers import get_dut_port_id # noqa: F401
Expand All @@ -28,6 +27,7 @@
DATA_FLOW_DELAY_SEC = 5
SNAPPI_POLL_DELAY_SEC = 2
TOLERANCE_THRESHOLD = 0.05
UDP_PORT_START = 5000


def run_pfc_m2o_oversubscribe_lossy_test(api,
Expand Down Expand Up @@ -319,10 +319,6 @@ def __gen_data_flow(testbed_config,
flow.tx_rx.port.tx_name = testbed_config.ports[src_port_id].name
flow.tx_rx.port.rx_name = testbed_config.ports[dst_port_id].name
eth, ipv4, udp = flow.packet.ethernet().ipv4().udp()
src_port = random.randint(5000, 6000)
udp.src_port.increment.start = src_port
udp.src_port.increment.step = 1
udp.src_port.increment.count = 1

eth.src.value = tx_mac
eth.dst.value = rx_mac
Expand All @@ -342,6 +338,13 @@ def __gen_data_flow(testbed_config,
elif 'Background Flow 2 -> 0' in flow.name:
eth.pfc_queue.value = pfcQueueValueDict[flow_prio[1]]

global UDP_PORT_START
src_port = UDP_PORT_START
UDP_PORT_START += 1
udp.src_port.increment.start = src_port
udp.src_port.increment.step = 1
udp.src_port.increment.count = 1

ipv4.src.value = tx_port_config.ip
ipv4.dst.value = rx_port_config.ip
ipv4.priority.choice = ipv4.priority.DSCP
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,9 @@ def __gen_traffic(testbed_config,
else:
eth.pfc_queue.value = pfcQueueValueDict[prio]

src_port = UDP_PORT_START + eth.pfc_queue.value * number_of_streams
global UDP_PORT_START
src_port = UDP_PORT_START
UDP_PORT_START += number_of_streams
udp.src_port.increment.start = src_port
udp.src_port.increment.step = 1
udp.src_port.increment.count = number_of_streams
Expand Down

0 comments on commit 47e7797

Please sign in to comment.