7.12. srv6

7.12.1. 10ge2p1x710-ethip6ip6-ip6base-srv6enc1sid-ndrpdr suite

Packet throughput Segment routing over IPv6 dataplane with one SID (SRH not inserted) test cases

  • [Top] Network Topologies: TG-DUT1-DUT2-TG 3-node circular topology with single links between nodes.

  • [Enc] Packet Encapsulations: Eth-IPv6-IPv6 on DUT1-DUT2, Eth-IPv6 on TG-DUTn for IPv6 routing over SRv6.

  • [Cfg] DUT configuration: DUT1 and DUT2 are configured with IPv6 routing and static route, SR policy and steering policy for one direction and one SR behaviour (function) - End.DX6 - for other direction. DUT1 and DUT2 are tested with ${nic_name}.

  • [Ver] TG verification: TG finds and reports throughput NDR (Non Drop Rate) with zero packet loss tolerance and throughput PDR (Partial Drop Rate) with non-zero packet loss tolerance (LT) expressed in percentage of packets transmitted. NDR and PDR are discovered for different Ethernet L2 frame sizes using MLRsearch library.

Test packets are generated by TG on links to DUTs. TG traffic profile contains two L3 flow-groups (flow-group per direction, 253 flows per flow-group) with all packets containing Ethernet header,IPv6 header with static payload. MAC addresses are matching MAC addresses of the TG node interfaces.

  • [Ref] Applicable standard specifications: SRv6 Network Programming - draft 3.

*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | IP6FWD | FEATURE | SRv6 | SRv6_1SID
| ... | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip6ip6-ip6base-srv6enc1sid
|
| Suite Setup | Setup suite topology interfaces | performance
| Suite Teardown | Tear down suite | performance
| Test Setup | Setup test | performance
| Test Teardown | Tear down test | performance | srv6
|
| Test Template | Local Template
|
| 
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so
| ${crypto_type}= | ${None}
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${nic_txq_size}= | 0
| ${nic_pfs}= | 2
| ${nic_vfs}= | 0
| ${osi_layer}= | L3
| ${overhead}= | ${40}
# SIDs
| ${dut1_sid1}= | 2002:1::
| ${dut1_sid2}= | 2003:2::
| ${dut1_bsid}= | 2002:1::1
| ${dut2_sid1}= | 2002:2::
| ${dut2_sid2}= | 2003:1::
| ${dut2_bsid}= | 2002:2::1
| ${sid_prefix}= | ${64}
# IP settings
| ${tg_if1_ip6_subnet}= | 2001:1::
| ${tg_if2_ip6_subnet}= | 2001:2::
| ${dst_addr_nr}= | ${1}
| ${dut1_if1_ip6}= | 2001:1::1
| ${dut1_if2_ip6}= | 2001:3::1
| ${dut2_if1_ip6}= | 2001:3::2
| ${dut2_if2_ip6}= | 2001:2::1
| ${prefix}= | ${64}
# Traffic profile:
| ${traffic_profile}= | trex-stl-3n-ethip6-ip6src253

7.12.1.1. Local Template

  • [Cfg] DUT1 and DUT2 are configured with IPv6 routing and static route, SR policy and steering policy for one direction and one SR behaviour (function) - End - for other direction. Each DUT uses ${phy_cores} physical core(s) for worker threads.

  • [Ver] Measure NDR and PDR values using MLRsearch algorithm.

Arguments: - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). Type: integer, string - phy_cores - Number of physical cores. Type: integer - rxq - Number of RX queues, default value: ${None}. Type: integer


Set Test Variable  \${frame_size}
Given Set Max Rate And Jumbo
  And Add worker threads to all DUTs  ${phy_cores}  ${rxq}
  And Pre-initialize layer driver  ${nic_driver}
  And Apply startup configuration on all VPP DUTs
 When Initialize layer driver  ${nic_driver}
  And Initialize layer interface
  And Initialize SRv6 encapsulation with '1' x SID 'with' decapsulation
 Then Find NDR and PDR intervals using optimized search

7.12.1.2. 78B-1c-ethip6ip6-ip6base-srv6enc1sid-ndrpdr


frame_size=${78}  phy_cores=${1}

7.12.1.3. 78B-2c-ethip6ip6-ip6base-srv6enc1sid-ndrpdr


frame_size=${78}  phy_cores=${2}

7.12.1.4. 78B-4c-ethip6ip6-ip6base-srv6enc1sid-ndrpdr


frame_size=${78}  phy_cores=${4}

7.12.1.5. 1518B-1c-ethip6ip6-ip6base-srv6enc1sid-ndrpdr


frame_size=${1518}  phy_cores=${1}

7.12.1.6. 1518B-2c-ethip6ip6-ip6base-srv6enc1sid-ndrpdr


frame_size=${1518}  phy_cores=${2}

7.12.1.7. 1518B-4c-ethip6ip6-ip6base-srv6enc1sid-ndrpdr


frame_size=${1518}  phy_cores=${4}

7.12.1.8. 9000B-1c-ethip6ip6-ip6base-srv6enc1sid-ndrpdr


frame_size=${9000}  phy_cores=${1}

7.12.1.9. 9000B-2c-ethip6ip6-ip6base-srv6enc1sid-ndrpdr


frame_size=${9000}  phy_cores=${2}

7.12.1.10. 9000B-4c-ethip6ip6-ip6base-srv6enc1sid-ndrpdr


frame_size=${9000}  phy_cores=${4}

7.12.1.11. IMIX-1c-ethip6ip6-ip6base-srv6enc1sid-ndrpdr


frame_size=IMIX_v4_1  phy_cores=${1}

7.12.1.12. IMIX-2c-ethip6ip6-ip6base-srv6enc1sid-ndrpdr


frame_size=IMIX_v4_1  phy_cores=${2}

7.12.1.13. IMIX-4c-ethip6ip6-ip6base-srv6enc1sid-ndrpdr


frame_size=IMIX_v4_1  phy_cores=${4}

7.12.2. 10ge2p1x710-ethip6srhip6-ip6base-srv6enc2sids-ndrpdr suite

Packet throughput Segment routing over IPv6 dataplane with two SIDs (SRH inserted) test cases

  • [Top] Network Topologies: TG-DUT1-DUT2-TG 3-node circular topology with single links between nodes.

  • [Enc] Packet Encapsulations: Eth-IPv6-SRH-IPv6 on DUT1-DUT2, Eth-IPv6 on TG-DUTn for IPv6 routing over SRv6.

  • [Cfg] DUT configuration: DUT1 and DUT2 are configured with IPv6 routing and static route, SR policy and steering policy for one direction and two SR behaviours (functions) - End and End.DX6 - for other direction. DUT1 and DUT2 are tested with ${nic_name}.

  • [Ver] TG verification: TG finds and reports throughput NDR (Non Drop Rate) with zero packet loss tolerance and throughput PDR (Partial Drop Rate) with non-zero packet loss tolerance (LT) expressed in percentage of packets transmitted. NDR and PDR are discovered for different Ethernet L2 frame sizes using MLRsearch library.

Test packets are generated by TG on links to DUTs. TG traffic profile contains two L3 flow-groups (flow-group per direction, 253 flows per flow-group) with all packets containing Ethernet header,IPv6 header with static payload. MAC addresses are matching MAC addresses of the TG node interfaces.

  • [Ref] Applicable standard specifications: SRv6 Network Programming - draft 3.

*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | IP6FWD | FEATURE | SRv6 | SRv6_2SID_DECAP
| ... | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip6srhip6-ip6base-srv6enc2sids
|
| Suite Setup | Setup suite topology interfaces | performance
| Suite Teardown | Tear down suite | performance
| Test Setup | Setup test | performance
| Test Teardown | Tear down test | performance | srv6
|
| Test Template | Local Template
|
| 
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so
| ${crypto_type}= | ${None}
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${nic_txq_size}= | 0
| ${nic_pfs}= | 2
| ${nic_vfs}= | 0
| ${osi_layer}= | L3
| ${overhead}= | ${80}
# SIDs
| ${dut1_sid1}= | 2002:1::
| ${dut1_sid2_1}= | 2003:2::
| ${dut1_sid2_2}= | 2003:3::
| ${dut1_bsid}= | 2002:1::1
| ${dut2_sid1}= | 2002:2::
| ${dut2_sid1_1}= | 2002:2::
| ${dut2_sid1_2}= | 2002:3::
| ${dut2_sid2}= | 2003:1::
| ${dut2_bsid}= | 2002:2::1
| ${sid_prefix}= | ${64}
# IP settings
| ${tg_if1_ip6_subnet}= | 2001:1::
| ${tg_if2_ip6_subnet}= | 2001:2::
| ${dst_addr_nr}= | ${1}
| ${dut1_if1_ip6}= | 2001:1::1
| ${dut1_if2_ip6}= | 2001:3::1
| ${dut2_if1_ip6}= | 2001:3::2
| ${dut2_if2_ip6}= | 2001:2::1
| ${prefix}= | ${64}
# Traffic profile:
| ${traffic_profile}= | trex-stl-3n-ethip6-ip6src253

7.12.2.1. Local Template

  • [Cfg] DUT1 and DUT2 are configured with IPv6 routing and static route, SR policy and steering policy for one direction and two SR behaviours (functions) - End and End. DX6 - for other direction. Each DUT uses ${phy_cores} physical core(s) for worker threads.

  • [Ver] Measure NDR and PDR values using MLRsearch algorithm.

Arguments: - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). Type: integer, string - phy_cores - Number of physical cores. Type: integer - rxq - Number of RX queues, default value: ${None}. Type: integer


Set Test Variable  \${frame_size}
Given Set Max Rate And Jumbo
  And Add worker threads to all DUTs  ${phy_cores}  ${rxq}
  And Pre-initialize layer driver  ${nic_driver}
  And Apply startup configuration on all VPP DUTs
 When Initialize layer driver  ${nic_driver}
  And Initialize layer interface
  And Initialize SRv6 encapsulation with '2' x SID 'with' decapsulation
 Then Find NDR and PDR intervals using optimized search

7.12.2.2. 78B-1c-ethip6srhip6-ip6base-srv6enc2sids-ndrpdr


frame_size=${78}  phy_cores=${1}

7.12.2.3. 78B-2c-ethip6srhip6-ip6base-srv6enc2sids-ndrpdr


frame_size=${78}  phy_cores=${2}

7.12.2.4. 78B-4c-ethip6srhip6-ip6base-srv6enc2sids-ndrpdr


frame_size=${78}  phy_cores=${4}

7.12.2.5. 1518B-1c-ethip6srhip6-ip6base-srv6enc2sids-ndrpdr


frame_size=${1518}  phy_cores=${1}

7.12.2.6. 1518B-2c-ethip6srhip6-ip6base-srv6enc2sids-ndrpdr


frame_size=${1518}  phy_cores=${2}

7.12.2.7. 1518B-4c-ethip6srhip6-ip6base-srv6enc2sids-ndrpdr


frame_size=${1518}  phy_cores=${4}

7.12.2.8. 9000B-1c-ethip6srhip6-ip6base-srv6enc2sids-ndrpdr


frame_size=${9000}  phy_cores=${1}

7.12.2.9. 9000B-2c-ethip6srhip6-ip6base-srv6enc2sids-ndrpdr


frame_size=${9000}  phy_cores=${2}

7.12.2.10. 9000B-4c-ethip6srhip6-ip6base-srv6enc2sids-ndrpdr


frame_size=${9000}  phy_cores=${4}

7.12.2.11. IMIX-1c-ethip6srhip6-ip6base-srv6enc2sids-ndrpdr


frame_size=IMIX_v4_1  phy_cores=${1}

7.12.2.12. IMIX-2c-ethip6srhip6-ip6base-srv6enc2sids-ndrpdr


frame_size=IMIX_v4_1  phy_cores=${2}

7.12.2.13. IMIX-4c-ethip6srhip6-ip6base-srv6enc2sids-ndrpdr


frame_size=IMIX_v4_1  phy_cores=${4}

7.12.3. 10ge2p1x710-ethip6srhip6-ip6base-srv6enc2sids-nodecaps-ndrpdr suite

Packet throughput Segment routing over IPv6 dataplane with two SIDs (SRH inserted) without decapsulation test cases

  • [Top] Network Topologies: TG-DUT1-DUT2-TG 3-node circular topology with single links between nodes.

  • [Enc] Packet Encapsulations: Eth-IPv6-SRH-IPv6 on DUT1-DUT2 and DUTn->TG, Eth-IPv6 on TG->DUTn for IPv6 routing over SRv6.

  • [Cfg] DUT configuration: DUT1 and DUT2 are configured with IPv6 routing and static route, SR policy and steering policy for one direction and one SR behaviour (function) - End - for other direction. DUT1 and DUT2 are tested with ${nic_name}.

  • [Ver] TG verification: TG finds and reports throughput NDR (Non Drop Rate) with zero packet loss tolerance and throughput PDR (Partial Drop Rate) with non-zero packet loss tolerance (LT) expressed in percentage of packets transmitted. NDR and PDR are discovered for different Ethernet L2 frame sizes using MLRsearch library.

Test packets are generated by TG on links to DUTs. TG traffic profile contains two L3 flow-groups (flow-group per direction, 253 flows per flow-group) with all packets containing Ethernet header,IPv6 header with static payload. MAC addresses are matching MAC addresses of the TG node interfaces.

  • [Ref] Applicable standard specifications: SRv6 Network Programming - draft 3.

*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | IP6FWD | FEATURE | SRv6 | SRv6_2SID_NODECAP
| ... | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip6srhip6-ip6base-srv6enc2sids-nodecaps
|
| Suite Setup | Setup suite topology interfaces | performance
| Suite Teardown | Tear down suite | performance
| Test Setup | Setup test | performance
| Test Teardown | Tear down test | performance | srv6
|
| Test Template | Local Template
|
| 
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so
| ${crypto_type}= | ${None}
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${nic_txq_size}= | 0
| ${nic_pfs}= | 2
| ${nic_vfs}= | 0
| ${osi_layer}= | L3
| ${overhead}= | ${80}
# SIDs
| ${dut1_sid1}= | 2002:1::
| ${dut1_sid2_1}= | 2003:2::
| ${dut1_sid2_2}= | 2003:3::
| ${dut1_bsid}= | 2002:1::1
| ${dut2_sid1}= | 2002:2::
| ${dut2_sid1_1}= | 2002:2::
| ${dut2_sid1_2}= | 2002:3::
| ${dut2_sid2}= | 2003:1::
| ${dut2_bsid}= | 2002:2::1
| ${sid_prefix}= | ${64}
# IP settings
| ${tg_if1_ip6_subnet}= | 2001:1::
| ${tg_if2_ip6_subnet}= | 2001:2::
| ${dst_addr_nr}= | ${1}
| ${dut1_if1_ip6}= | 2001:1::1
| ${dut1_if2_ip6}= | 2001:3::1
| ${dut2_if1_ip6}= | 2001:3::2
| ${dut2_if2_ip6}= | 2001:2::1
| ${prefix}= | ${64}
# Traffic profile:
| ${traffic_profile}= | trex-stl-3n-ethip6-ip6src253

7.12.3.1. Local Template

  • [Cfg] DUT1 and DUT2 are configured with IPv6 routing and static route, SR policy and steering policy for one direction and one SR behaviour (function) - End - for other direction. Each DUT uses ${phy_cores} physical core(s) for worker threads.

  • [Ver] Measure NDR and PDR values using MLRsearch algorithm.

Arguments: - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). Type: integer, string - phy_cores - Number of physical cores. Type: integer - rxq - Number of RX queues, default value: ${None}. Type: integer


Set Test Variable  \${frame_size}
Given Set Max Rate And Jumbo
  And Add worker threads to all DUTs  ${phy_cores}  ${rxq}
  And Pre-initialize layer driver  ${nic_driver}
  And Apply startup configuration on all VPP DUTs
 When Initialize layer driver  ${nic_driver}
  And Initialize layer interface
  And Initialize SRv6 encapsulation with '2' x SID 'without' decapsulation
 Then Find NDR and PDR intervals using optimized search

7.12.3.2. 78B-1c-ethip6srhip6-ip6base-srv6enc2sids-nodecaps-ndrpdr


frame_size=${78}  phy_cores=${1}

7.12.3.3. 78B-2c-ethip6srhip6-ip6base-srv6enc2sids-nodecaps-ndrpdr


frame_size=${78}  phy_cores=${2}

7.12.3.4. 78B-4c-ethip6srhip6-ip6base-srv6enc2sids-nodecaps-ndrpdr


frame_size=${78}  phy_cores=${4}

7.12.3.5. 1518B-1c-ethip6srhip6-ip6base-srv6enc2sids-nodecaps-ndrpdr


frame_size=${1518}  phy_cores=${1}

7.12.3.6. 1518B-2c-ethip6srhip6-ip6base-srv6enc2sids-nodecaps-ndrpdr


frame_size=${1518}  phy_cores=${2}

7.12.3.7. 1518B-4c-ethip6srhip6-ip6base-srv6enc2sids-nodecaps-ndrpdr


frame_size=${1518}  phy_cores=${4}

7.12.3.8. 9000B-1c-ethip6srhip6-ip6base-srv6enc2sids-nodecaps-ndrpdr


frame_size=${9000}  phy_cores=${1}

7.12.3.9. 9000B-2c-ethip6srhip6-ip6base-srv6enc2sids-nodecaps-ndrpdr


frame_size=${9000}  phy_cores=${2}

7.12.3.10. 9000B-4c-ethip6srhip6-ip6base-srv6enc2sids-nodecaps-ndrpdr


frame_size=${9000}  phy_cores=${4}

7.12.3.11. IMIX-1c-ethip6srhip6-ip6base-srv6enc2sids-nodecaps-ndrpdr


frame_size=IMIX_v4_1  phy_cores=${1}

7.12.3.12. IMIX-2c-ethip6srhip6-ip6base-srv6enc2sids-nodecaps-ndrpdr


frame_size=IMIX_v4_1  phy_cores=${2}

7.12.3.13. IMIX-4c-ethip6srhip6-ip6base-srv6enc2sids-nodecaps-ndrpdr


frame_size=IMIX_v4_1  phy_cores=${4}

7.12.4. 10ge2p1x710-ethip6srhip6-ip6base-srv6proxy-dyn-ndrpdr suite

Packet throughput Segment routing over IPv6 dataplane with Dynamic SRv6 proxy test cases

  • [Top] Network Topologies: TG-DUT1-DUT2-TG 3-node circular topology with single links between nodes.

  • [Enc] Packet Encapsulations: Eth-IPv6-SRH-IPv6 on DUT1-DUT2 and DUTn->TG, Eth-IPv6 on TG->DUTn and DUTn-CNT for IPv6 routing over SRv6.

  • [Cfg] DUT configuration: DUT1 and DUT2 are configured with IPv6 routing and static route, SR policy and steering policy for one direction and one SR behaviour (function) - End.AD - for other direction. DUT1 and DUT2 are tested with ${nic_name}.

  • [Ver] TG verification: TG finds and reports throughput NDR (Non Drop Rate) with zero packet loss tolerance and throughput PDR (Partial Drop Rate) with non-zero packet loss tolerance (LT) expressed in percentage of packets transmitted. NDR and PDR are discovered for different Ethernet L2 frame sizes using MLRsearch library.

Test packets are generated by TG on links to DUTs. TG traffic profile contains two L3 flow-groups (flow-group per direction, 253 flows per flow-group) with all packets containing Ethernet header,IPv6 header with static payload. MAC addresses are matching MAC addresses of the TG node interfaces.

  • [Ref] Applicable standard specifications: SRv6 Network Programming - draft 3.and Segment Routing for Service Chaining - internet draft 01.

*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | SRv6 | IP6FWD | FEATURE | SRv6_PROXY
| ... | SRv6_PROXY_DYN | MEMIF | DOCKER | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip6srhip6-ip6base-srv6proxy-dyn
|
| Suite Setup | Setup suite topology interfaces | performance
| Suite Teardown | Tear down suite | performance
| Test Setup | Setup test | performance
| Test Teardown | Tear down test | performance | srv6 | container
|
| Test Template | Local Template
|
| 
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
| ... | srv6ad_plugin.so
| ${crypto_type}= | ${None}
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${nic_txq_size}= | 0
| ${nic_pfs}= | 2
| ${nic_vfs}= | 0
| ${osi_layer}= | L3
| ${overhead}= | ${96}
# SIDs
| ${dut1_sid1}= | 2002:1::
| ${dut1_sid2}= | 2003:2::
| ${dut1_bsid}= | 2002:1::1
| ${dut2_sid1}= | 2002:2::
| ${dut2_sid2}= | 2003:1::
| ${dut2_bsid}= | 2003:1::1
| ${out_sid1_1}= | 2002:3::
| ${out_sid1_2}= | 2002:4::
| ${out_sid2_1}= | 2003:3::
| ${out_sid2_2}= | 2003:4::
| ${sid_prefix}= | ${64}
# IP settings
| ${tg_if1_ip6_subnet}= | 2001:1::
| ${tg_if2_ip6_subnet}= | 2001:2::
| ${dst_addr_nr}= | ${1}
| ${dut1_if1_ip6}= | 2001:1::1
| ${dut1_if2_ip6}= | 2001:3::1
| ${dut1-memif-1-if1_ip6}= | 3001:1::1
| ${dut1-memif-1-if2_ip6}= | 3001:1::2
| ${dut1_nh}= | 4002::
| ${dut2_if1_ip6}= | 2001:3::2
| ${dut2_if2_ip6}= | 2001:2::1
| ${dut2-memif-1-if1_ip6}= | 3002:1::1
| ${dut2-memif-1-if2_ip6}= | 3002:1::2
| ${dut2_nh}= | 4001::
| ${prefix}= | ${64}
| ${mem_prefix}= | ${128}
# Traffic profile:
| ${traffic_profile}= | trex-stl-3n-ethip6-ip6src253
# Container
| ${container_engine}= | Docker
| ${container_chain_topology}= | chain

7.12.4.1. Local Template

  • [Cfg] DUT1 and DUT2 are configured with IPv6 routing and static route, SR policy and steering policy for one direction and SR behaviour (function) - End.AD - for other direction. Each DUT uses ${phy_cores} physical core(s) for worker threads.

  • [Ver] Measure NDR and PDR values using MLRsearch algorithm.

Arguments: - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). Type: integer, string - phy_cores - Number of physical cores. Type: integer - rxq - Number of RX queues, default value: ${None}. Type: integer


Set Test Variable  \${frame_size}
Given Set Max Rate And Jumbo
  And Add worker threads to all DUTs  ${phy_cores}  ${rxq}
  And Pre-initialize layer driver  ${nic_driver}
  And Apply startup configuration on all VPP DUTs
 When Initialize layer driver  ${nic_driver}
  And Initialize layer interface
  And Start containers for test  nf_chains=${1}  nf_nodes=${1}
  And Initialize SRv6 with 'dynamic_proxy' SR-unaware Service Function
 Then Find NDR and PDR intervals using optimized search

7.12.4.2. 78B-1c-ethip6srhip6-ip6base-srv6proxy-dyn-ndrpdr


frame_size=${78}  phy_cores=${1}

7.12.4.3. 78B-2c-ethip6srhip6-ip6base-srv6proxy-dyn-ndrpdr


frame_size=${78}  phy_cores=${2}

7.12.4.4. 78B-4c-ethip6srhip6-ip6base-srv6proxy-dyn-ndrpdr


frame_size=${78}  phy_cores=${4}

7.12.4.5. 1518B-1c-ethip6srhip6-ip6base-srv6proxy-dyn-ndrpdr


frame_size=${1518}  phy_cores=${1}

7.12.4.6. 1518B-2c-ethip6srhip6-ip6base-srv6proxy-dyn-ndrpdr


frame_size=${1518}  phy_cores=${2}

7.12.4.7. 1518B-4c-ethip6srhip6-ip6base-srv6proxy-dyn-ndrpdr


frame_size=${1518}  phy_cores=${4}

7.12.4.8. 9000B-1c-ethip6srhip6-ip6base-srv6proxy-dyn-ndrpdr


frame_size=${9000}  phy_cores=${1}

7.12.4.9. 9000B-2c-ethip6srhip6-ip6base-srv6proxy-dyn-ndrpdr


frame_size=${9000}  phy_cores=${2}

7.12.4.10. 9000B-4c-ethip6srhip6-ip6base-srv6proxy-dyn-ndrpdr


frame_size=${9000}  phy_cores=${4}

7.12.4.11. IMIX-1c-ethip6srhip6-ip6base-srv6proxy-dyn-ndrpdr


frame_size=IMIX_v4_1  phy_cores=${1}

7.12.4.12. IMIX-2c-ethip6srhip6-ip6base-srv6proxy-dyn-ndrpdr


frame_size=IMIX_v4_1  phy_cores=${2}

7.12.4.13. IMIX-4c-ethip6srhip6-ip6base-srv6proxy-dyn-ndrpdr


frame_size=IMIX_v4_1  phy_cores=${4}

7.12.5. 10ge2p1x710-ethip6srhip6-ip6base-srv6proxy-masq-ndrpdr suite

Packet throughput Segment routing over IPv6 dataplane with Masquerading SRv6 proxy test cases

  • [Top] Network Topologies: TG-DUT1-DUT2-TG 3-node circular topology with single links between nodes.

  • [Enc] Packet Encapsulations: Eth-IPv6-SRH-IPv6 on DUT1-DUT2, DUTn-CNT and DUTn->TG, Eth-IPv6 on TG->DUTn for IPv6 routing over SRv6.

  • [Cfg] DUT configuration: DUT1 and DUT2 are configured with IPv6 routing and static route, SR policy and steering policy for one direction and one SR behaviour (function) - End.AM - for other direction. DUT1 and DUT2 are tested with ${nic_name}.

  • [Ver] TG verification: TG finds and reports throughput NDR (Non Drop Rate) with zero packet loss tolerance and throughput PDR (Partial Drop Rate) with non-zero packet loss tolerance (LT) expressed in percentage of packets transmitted. NDR and PDR are discovered for different Ethernet L2 frame sizes using MLRsearch library.

Test packets are generated by TG on links to DUTs. TG traffic profile contains two L3 flow-groups (flow-group per direction, 253 flows per flow-group) with all packets containing Ethernet header,IPv6 header with static payload. MAC addresses are matching MAC addresses of the TG node interfaces.

  • [Ref] Applicable standard specifications: SRv6 Network Programming - draft 3.and Segment Routing for Service Chaining - internet draft 01.

*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | SRv6 | IP6FWD | FEATURE | SRv6_PROXY
| ... | SRv6_PROXY_MASQ | MEMIF | DOCKER | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip6srhip6-ip6base-srv6proxy-masq
|
| Suite Setup | Setup suite topology interfaces | performance
| Suite Teardown | Tear down suite | performance
| Test Setup | Setup test | performance
| Test Teardown | Tear down test | performance | srv6 | container
|
| Test Template | Local Template
|
| 
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
| ... | srv6am_plugin.so
| ${crypto_type}= | ${None}
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${nic_txq_size}= | 0
| ${nic_pfs}= | 2
| ${nic_vfs}= | 0
| ${osi_layer}= | L3
| ${overhead}= | ${96}
# SIDs
| ${dut1_sid1}= | 2002:1::
| ${dut1_sid2}= | 2003:2::
| ${dut1_bsid}= | 2002:1::1
| ${dut2_sid1}= | 2002:2::
| ${dut2_sid2}= | 2003:1::
| ${dut2_bsid}= | 2003:1::1
| ${out_sid1_1}= | 2002:3::
| ${out_sid1_2}= | 2002:4::
| ${out_sid2_1}= | 2003:3::
| ${out_sid2_2}= | 2003:4::
| ${sid_prefix}= | ${64}
# IP settings
| ${tg_if1_ip6_subnet}= | 2001:1::
| ${tg_if2_ip6_subnet}= | 2001:2::
| ${dst_addr_nr}= | ${1}
| ${dut1_if1_ip6}= | 2001:1::1
| ${dut1_if2_ip6}= | 2001:3::1
| ${dut1-memif-1-if1_ip6}= | 3001:1::1
| ${dut1-memif-1-if2_ip6}= | 3001:1::2
| ${dut1_nh}= | 4002::
| ${dut2_if1_ip6}= | 2001:3::2
| ${dut2_if2_ip6}= | 2001:2::1
| ${dut2-memif-1-if1_ip6}= | 3002:1::1
| ${dut2-memif-1-if2_ip6}= | 3002:1::2
| ${dut2_nh}= | 4001::
| ${prefix}= | ${64}
| ${mem_prefix}= | ${128}
# Traffic profile:
| ${traffic_profile}= | trex-stl-3n-ethip6-ip6src253
# Container
| ${container_engine}= | Docker
| ${container_chain_topology}= | chain

7.12.5.1. Local Template

  • [Cfg] DUT1 and DUT2 are configured with IPv6 routing and static route, SR policy and steering policy for one direction and SR behaviour (function) - End.AM - for other direction. Each DUT uses ${phy_cores} physical core(s) for worker threads.

  • [Ver] Measure NDR and PDR values using MLRsearch algorithm.

Arguments: - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). Type: integer, string - phy_cores - Number of physical cores. Type: integer - rxq - Number of RX queues, default value: ${None}. Type: integer


Set Test Variable  \${frame_size}
Given Set Max Rate And Jumbo
  And Add worker threads to all DUTs  ${phy_cores}  ${rxq}
  And Pre-initialize layer driver  ${nic_driver}
  And Apply startup configuration on all VPP DUTs
 When Initialize layer driver  ${nic_driver}
  And Initialize layer interface
  And Start containers for test  nf_chains=${1}  nf_nodes=${1}
  And Initialize SRv6 with 'masquerading' SR-unaware Service Function
 Then Find NDR and PDR intervals using optimized search

7.12.5.2. 78B-1c-ethip6srhip6-ip6base-srv6proxy-masq-ndrpdr


frame_size=${78}  phy_cores=${1}

7.12.5.3. 78B-2c-ethip6srhip6-ip6base-srv6proxy-masq-ndrpdr


frame_size=${78}  phy_cores=${2}

7.12.5.4. 78B-4c-ethip6srhip6-ip6base-srv6proxy-masq-ndrpdr


frame_size=${78}  phy_cores=${4}

7.12.5.5. 1518B-1c-ethip6srhip6-ip6base-srv6proxy-masq-ndrpdr


frame_size=${1518}  phy_cores=${1}

7.12.5.6. 1518B-2c-ethip6srhip6-ip6base-srv6proxy-masq-ndrpdr


frame_size=${1518}  phy_cores=${2}

7.12.5.7. 1518B-4c-ethip6srhip6-ip6base-srv6proxy-masq-ndrpdr


frame_size=${1518}  phy_cores=${4}

7.12.5.8. 9000B-1c-ethip6srhip6-ip6base-srv6proxy-masq-ndrpdr


frame_size=${9000}  phy_cores=${1}

7.12.5.9. 9000B-2c-ethip6srhip6-ip6base-srv6proxy-masq-ndrpdr


frame_size=${9000}  phy_cores=${2}

7.12.5.10. 9000B-4c-ethip6srhip6-ip6base-srv6proxy-masq-ndrpdr


frame_size=${9000}  phy_cores=${4}

7.12.5.11. IMIX-1c-ethip6srhip6-ip6base-srv6proxy-masq-ndrpdr


frame_size=IMIX_v4_1  phy_cores=${1}

7.12.5.12. IMIX-2c-ethip6srhip6-ip6base-srv6proxy-masq-ndrpdr


frame_size=IMIX_v4_1  phy_cores=${2}

7.12.5.13. IMIX-4c-ethip6srhip6-ip6base-srv6proxy-masq-ndrpdr


frame_size=IMIX_v4_1  phy_cores=${4}

7.12.6. 10ge2p1x710-ethip6srhip6-ip6base-srv6proxy-stat-ndrpdr suite

Packet throughput Segment routing over IPv6 dataplane with Static SRv6 proxy test cases

  • [Top] Network Topologies: TG-DUT1-DUT2-TG 3-node circular topology with single links between nodes.

  • [Enc] Packet Encapsulations: Eth-IPv6-SRH-IPv6 on DUT1-DUT2 and DUTn->TG, Eth-IPv6 on TG->DUTn and DUTn-CNT for IPv6 routing over SRv6.

  • [Cfg] DUT configuration: DUT1 and DUT2 are configured with IPv6 routing and static route, SR policy and steering policy for one direction and one SR behaviour (function) - End.AS - for other direction. DUT1 and DUT2 are tested with ${nic_name}.

  • [Ver] TG verification: TG finds and reports throughput NDR (Non Drop Rate) with zero packet loss tolerance and throughput PDR (Partial Drop Rate) with non-zero packet loss tolerance (LT) expressed in percentage of packets transmitted. NDR and PDR are discovered for different Ethernet L2 frame sizes using MLRsearch library.

Test packets are generated by TG on links to DUTs. TG traffic profile contains two L3 flow-groups (flow-group per direction, 253 flows per flow-group) with all packets containing Ethernet header,IPv6 header with static payload. MAC addresses are matching MAC addresses of the TG node interfaces.

  • [Ref] Applicable standard specifications: SRv6 Network Programming - draft 3.and Segment Routing for Service Chaining - internet draft 01.

*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | SRv6 | IP6FWD | FEATURE | SRv6_PROXY
| ... | SRv6_PROXY_STAT | MEMIF | DOCKER | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip6srhip6-ip6base-srv6proxy-stat
|
| Suite Setup | Setup suite topology interfaces | performance
| Suite Teardown | Tear down suite | performance
| Test Setup | Setup test | performance
| Test Teardown | Tear down test | performance | srv6 | container
|
| Test Template | Local Template
|
| 
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
| ... | srv6as_plugin.so
| ${crypto_type}= | ${None}
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${nic_txq_size}= | 0
| ${nic_pfs}= | 2
| ${nic_vfs}= | 0
| ${osi_layer}= | L3
| ${overhead}= | ${96}
# SIDs
| ${dut1_sid1}= | 2002:1::
| ${dut1_sid2}= | 2003:2::
| ${dut1_bsid}= | 2002:1::1
| ${dut2_sid1}= | 2002:2::
| ${dut2_sid2}= | 2003:1::
| ${dut2_bsid}= | 2003:1::1
| ${out_sid1_1}= | 2002:3::
| ${out_sid1_2}= | 2002:4::
| ${out_sid2_1}= | 2003:3::
| ${out_sid2_2}= | 2003:4::
| ${sid_prefix}= | ${64}
# IP settings
| ${tg_if1_ip6_subnet}= | 2001:1::
| ${tg_if2_ip6_subnet}= | 2001:2::
| ${dst_addr_nr}= | ${1}
| ${dut1_if1_ip6}= | 2001:1::1
| ${dut1_if2_ip6}= | 2001:3::1
| ${dut1-memif-1-if1_ip6}= | 3001:1::1
| ${dut1-memif-1-if2_ip6}= | 3001:1::2
| ${dut1_nh}= | 4002::
| ${dut2_if1_ip6}= | 2001:3::2
| ${dut2_if2_ip6}= | 2001:2::1
| ${dut2-memif-1-if1_ip6}= | 3002:1::1
| ${dut2-memif-1-if2_ip6}= | 3002:1::2
| ${dut2_nh}= | 4001::
| ${prefix}= | ${64}
| ${mem_prefix}= | ${128}
# Traffic profile:
| ${traffic_profile}= | trex-stl-3n-ethip6-ip6src253
# Container
| ${container_engine}= | Docker
| ${container_chain_topology}= | chain

7.12.6.1. Local Template

  • [Cfg] DUT1 and DUT2 are configured with IPv6 routing and static route, SR policy and steering policy for one direction and SR behaviour (function) - End.AS - for other direction. Each DUT uses ${phy_cores} physical core(s) for worker threads.

  • [Ver] Measure NDR and PDR values using MLRsearch algorithm.

Arguments: - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1). Type: integer, string - phy_cores - Number of physical cores. Type: integer - rxq - Number of RX queues, default value: ${None}. Type: integer


Set Test Variable  \${frame_size}
Given Set Max Rate And Jumbo
  And Add worker threads to all DUTs  ${phy_cores}  ${rxq}
  And Pre-initialize layer driver  ${nic_driver}
  And Apply startup configuration on all VPP DUTs
 When Initialize layer driver  ${nic_driver}
  And Initialize layer interface
  And Start containers for test  nf_chains=${1}  nf_nodes=${1}
  And Initialize SRv6 with 'static_proxy' SR-unaware Service Function
 Then Find NDR and PDR intervals using optimized search

7.12.6.2. 78B-1c-ethip6srhip6-ip6base-srv6proxy-stat-ndrpdr


frame_size=${78}  phy_cores=${1}

7.12.6.3. 78B-2c-ethip6srhip6-ip6base-srv6proxy-stat-ndrpdr


frame_size=${78}  phy_cores=${2}

7.12.6.4. 78B-4c-ethip6srhip6-ip6base-srv6proxy-stat-ndrpdr


frame_size=${78}  phy_cores=${4}

7.12.6.5. 1518B-1c-ethip6srhip6-ip6base-srv6proxy-stat-ndrpdr


frame_size=${1518}  phy_cores=${1}

7.12.6.6. 1518B-2c-ethip6srhip6-ip6base-srv6proxy-stat-ndrpdr


frame_size=${1518}  phy_cores=${2}

7.12.6.7. 1518B-4c-ethip6srhip6-ip6base-srv6proxy-stat-ndrpdr


frame_size=${1518}  phy_cores=${4}

7.12.6.8. 9000B-1c-ethip6srhip6-ip6base-srv6proxy-stat-ndrpdr


frame_size=${9000}  phy_cores=${1}

7.12.6.9. 9000B-2c-ethip6srhip6-ip6base-srv6proxy-stat-ndrpdr


frame_size=${9000}  phy_cores=${2}

7.12.6.10. 9000B-4c-ethip6srhip6-ip6base-srv6proxy-stat-ndrpdr


frame_size=${9000}  phy_cores=${4}

7.12.6.11. IMIX-1c-ethip6srhip6-ip6base-srv6proxy-stat-ndrpdr


frame_size=IMIX_v4_1  phy_cores=${1}

7.12.6.12. IMIX-2c-ethip6srhip6-ip6base-srv6proxy-stat-ndrpdr


frame_size=IMIX_v4_1  phy_cores=${2}

7.12.6.13. IMIX-4c-ethip6srhip6-ip6base-srv6proxy-stat-ndrpdr


frame_size=IMIX_v4_1  phy_cores=${4}