6.5. ip4

6.5.1. 2n1l-10ge2p1x710-ethip4-ip4base-adlalwlistbase-scapy suite

ADL Security IPv4 allowlist test cases

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

  • [Enc] Packet Encapsulations: Eth-IPv4 on all links.

  • [Cfg] DUT configuration: DUT1 is configured with IPv4 routing and static routes. ADL security allowlist are applied on DUT1 ingress interface from TG.

  • [Ver] TG verification: Test IPv4 packets are sent in one direction by TG on link to DUT1; on receive TG verifies packets for correctness and drops as applicable.

  • [Ref] Applicable standard specifications:

*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | ADLALWLIST | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4-ip4base-adlalwlistbase
|
| Suite Setup | Setup suite topology interfaces | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace | telemetry
|
| Test Template | Local Template
|
| 
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | adl_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
| ${overhead}= | ${0}
# Telemetry
| ${telemetry_profile}= | vppctl_test_teardown

6.5.1.1. Local Template

  • [Ver] Make TG send IPv4 on its interface to DUT1; verify received IPv4 pkts are correct.

Arguments: - frame_size - Framesize in Bytes in integer. Type: integer - 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  with_trace=${True}
 When Initialize layer driver  ${nic_driver}
  And Initialize layer interface
  And Initialize IPv4 forwarding in circular topology
  And Add Fib Table  ${dut1}  1
  And Vpp Route Add  ${dut1}  10.10.10.0  24  vrf=1  local=${TRUE}
  And ADL Add allowlist Entry  ${dut1}  ${DUT1_${int}1}[0]  ip4  1
  And ADL interface enable or disable  ${dut1}  ${DUT1_${int}1}[0]  enable
 Then Send packet and verify headers  ${tg}  10.10.10.2  20.20.20.2  ${TG_pf1}[0]  ${TG_pf1_mac}[0]  ${DUT1_vf1_mac}[0]  ${TG_pf2}[0]  ${DUT1_vf2_mac}[0]  ${TG_pf2_mac}[0]

6.5.1.2. 64B-0c-ethip4-ip4base-adlalwlistbase-scapy


frame_size=${64}  phy_cores=${0}

6.5.2. 2n1l-10ge2p1x710-ethip4-ip4base-adlblklistbase-scapy suite

ADL Security IPv4 allowlist test cases

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

  • [Enc] Packet Encapsulations: Eth-IPv4 on all links.

  • [Cfg] DUT configuration: DUT1 is configured with IPv4 routing and static routes. ADL security allowlist are applied on DUT1 ingress interface from TG.

  • [Ver] TG verification: Test IPv4 packets are sent in one direction by TG on link to DUT1; on receive TG verifies packets for correctness and drops as applicable.

  • [Ref] Applicable standard specifications:

*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | ADLBLKLIST | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4-ip4base-adlblklistbase
|
| Suite Setup | Setup suite topology interfaces | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace | telemetry
|
| Test Template | Local Template
|
| 
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | adl_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
| ${overhead}= | ${0}
# Telemetry
| ${telemetry_profile}= | vppctl_test_teardown

6.5.2.1. Local Template

  • [Ver] Make TG send IPv4 on its interface to DUT1; verify received IPv4 pkts are correct.

Arguments: - frame_size - Framesize in Bytes in integer. Type: integer - 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  with_trace=${True}
 When Initialize layer driver  ${nic_driver}
  And Initialize layer interface
  And Initialize IPv4 forwarding in circular topology
  And Add Fib Table  ${dut1}  1
  And Vpp Route Add  ${dut1}  10.10.10.0  24  vrf=1  local=${TRUE}
  And ADL Add allowlist Entry  ${dut1}  ${DUT1_${int}1}[0]  ip4  1
  And ADL interface enable or disable  ${dut1}  ${DUT1_${int}1}[0]  enable
 Then Packet transmission from port to port should fail  ${tg}  100.0.0.2  200.0.0.2  ${TG_pf1}[0]  ${TG_pf1_mac}[0]  ${DUT1_vf1_mac}[0]  ${TG_pf2}[0]  ${DUT1_vf2_mac}[0]  ${TG_pf2_mac}[0]

6.5.2.2. 64B-0c-ethip4-ip4base-adlblklistbase-scapy


frame_size=${64}  phy_cores=${0}

6.5.3. 2n1l-10ge2p1x710-ethip4-ip4base-iacldstbase-scapy suite

IPv4 iAcl whitelist test cases

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

  • [Enc] Packet Encapsulations: Eth-IPv4 on all links.

  • [Cfg] DUT configuration: DUT1 is configured with IPv4 routing and static routes. IPv4 iAcl security whitelist is applied on DUT1 ingress interface from TG.

  • [Ver] TG verification: Test IPv4 packets are sent in one direction by TG on link to DUT1; on receive TG verifies packets for correctness and drops as applicable.

  • [Ref] Applicable standard specifications:

*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | IACLDST | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4-ip4base-iacldstbase
|
| Suite Setup | Setup suite topology interfaces | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace | telemetry | classify
|
| 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
| ${overhead}= | ${0}
# Telemetry
| ${telemetry_profile}= | vppctl_test_teardown

6.5.3.1. Local Template

  • [Ver] Make TG send IPv4 on its interface to DUT1; verify received IPv4 pkts are correct.

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  with_trace=${True}
 When Initialize layer driver  ${nic_driver}
  And Initialize layer interface
  And Initialize IPv4 forwarding in circular topology
${table_idx}  ${skip_n}  ${match_n}=  And Vpp Creates Classify Table L3  ${dut1}  ip4  dst  255.255.255.255
  And Vpp Configures Classify Session L3  ${dut1}  permit  ${table_idx}  ${skip_n}  ${match_n}  ip4  dst  20.20.20.2
  And Vpp Enable Input Acl Interface  ${dut1}  ${DUT1_${int}1}[0]  ip4  ${table_idx}
 Then Send packet and verify headers  ${tg}  10.10.10.2  20.20.20.2  ${TG_pf1}[0]  ${TG_pf1_mac}[0]  ${DUT1_vf1_mac}[0]  ${TG_pf2}[0]  ${DUT1_vf2_mac}[0]  ${TG_pf2_mac}[0]

6.5.3.2. 64B-0c-ethip4-ip4base-iacldstbase-scapy


frame_size=${64}  phy_cores=${0}

6.5.4. 2n1l-10ge2p1x710-ethip4-ip4base-ipolicemarkbase-scapy suite

IPv4 policer test cases

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

  • [Enc] Packet Encapsulations: Eth-IPv4 on all links.

  • [Cfg] DUT configuration: On DUT1 configure interfaces IPv4 addresses and static ARP record on the second interface. On DUT1 configure 2R3C color-aware policer on the first interface.

  • [Ver] TG verification: Test packet is sent from TG on the first link to DUT1. Packet is received on TG on the second link from DUT1.

  • [Ref] Applicable standard specifications: RFC2474, RFC2697, RFC2698.

*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | POLICE_MARK | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4-ip4base-ipolicemarkbase
|
| Suite Setup | Setup suite topology interfaces | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace | telemetry | classify
|
| 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
| ${overhead}= | ${0}
| ${cir}= | ${100}
| ${eir}= | ${150}
| ${dscp}= | AF22
# Telemetry
| ${telemetry_profile}= | vppctl_test_teardown

6.5.4.1. Local Template

  • [Ver] Test packet is sent from TG on the first link to DUT1. Packet is received on TG on the second link from DUT1.

Arguments: - frame_size - Framesize in Bytes in integer. Type: integer - 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 Set Rates For Policer
  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  with_trace=${True}
 When Initialize layer driver  ${nic_driver}
  And Initialize layer interface
  And Initialize IPv4 forwarding in circular topology
  And Initialize IPv4 policer 2r3c-'ca' in circular topology
 Then Send packet and verify marking  ${tg}  ${TG_pf1}[0]  ${TG_pf2}[0]  ${TG_pf1_mac}[0]  ${DUT1_vf1_mac}[0]  10.10.10.2  20.20.20.2

6.5.4.2. 64B-0c-ethip4-ip4base-ipolicemarkbase-scapy


frame_size=${64}  phy_cores=${0}

6.5.5. 2n1l-10ge2p1x710-ethip4-ip4base-scapy suite

IPv4 routing test cases

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

  • [Enc] Packet Encapsulations: Eth-IPv4 for IPv4 routing on both links.

  • [Cfg] DUT configuration: DUT1 is configured with IPv4 routing and two static IPv4 /24 route entries.

  • [Ver] TG verification: Test IPv4 packet with IP protocol=61 is sent in one direction by TG on links to DUT1; on receive TG verifies packet for correctness and their IPv4 src-addr, dst-addr and MAC addresses.

  • [Ref] Applicable standard specifications: RFC791, RFC826, RFC792

*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
| ... | NIC_Intel-X710 | ETH | IP4FWD | BASE | IP4BASE | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4-ip4base
|
| Suite Setup | Setup suite topology interfaces | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace | telemetry
|
| 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
| ${overhead}= | ${0}
# Telemetry
| ${telemetry_profile}= | vppctl_test_teardown

6.5.5.1. Local Template

  • [Ver] Make TG send IPv4 packet routed over DUT1 interfaces. Make TG verify IPv4 packet is correct.

Arguments: - frame_size - Framesize in Bytes in integer. Type: integer - 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  with_trace=${True}
 When Initialize layer driver  ${nic_driver}
  And Initialize layer interface
  And Initialize IPv4 forwarding in circular topology  remote_host1_ip=192.168.0.1  remote_host2_ip=192.168.0.2
 Then Send packet and verify headers  ${tg}  192.168.0.1  192.168.0.2  ${TG_pf1}[0]  ${TG_pf1_mac}[0]  ${DUT1_vf1_mac}[0]  ${TG_pf2}[0]  ${DUT1_vf2_mac}[0]  ${TG_pf2_mac}[0]

6.5.5.2. 64B-0c-ethip4-ip4base-scapy


frame_size=${64}  phy_cores=${0}

6.5.6. 2n1l-10ge2p1x710-ethip4tcp-nat44det-scapy suite

NAT44 deterministic mode test cases

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

  • [Enc] Packet Encapsulations: Eth-IPv4-TCP for IPv4 routing.

  • [Cfg] DUT configuration: DUT1 is configured with IPv4 routing and one static IPv4 /${dest_mask} route entries. DUT1 is tested with ${nic_name}.

  • [Ver] TG verification: Eth-IPv4-TCP packet is sent from TG to DUT1 in one direction. Packet is received and verified for correctness on TG. Then Eth-IPv4-TCP packet is sent from TG in opposite direction. Packet is received and verified for correctness on TG.

  • [Ref] Applicable standard specifications: RFC791, RFC793, RFC3022 and RFC4787.

*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/ip/nat.robot
| Resource | resources/libraries/robot/shared/traffic.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | NAT44_DETERMINISTIC
| ... | BASE | TCP | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4tcp-nat44det
|
| Suite Setup | Setup suite topology interfaces | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace | telemetry | det44
|
| Test Template | Local Template
|
| 
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | det44_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
| ${overhead}= | ${0}
# IP addresing
| ${tg_if1_ip4}= | 10.0.0.2
| ${tg_if1_mask}= | ${20}
| ${tg_if2_ip4}= | 12.0.0.2
| ${tg_if2_mask}= | ${20}
| ${dut1_if1_ip4}= | 10.0.0.1
| ${dut1_if1_mask}= | ${20}
| ${dut1_if2_ip4}= | 12.0.0.1
| ${dut1_if2_mask}= | ${20}
| ${dest_net}= | 30.0.0.0
| ${dest_mask}= | ${24}
# proto layer settings
| ${protocol}= | TCP
| ${src_port_in}= | 1024
| ${dst_port}= | 8080
# NAT settings
| ${nat_mode}= | deterministic
| ${in_net}= | 20.0.0.0
| ${in_mask}= | ${32}
| ${out_net}= | 200.0.0.0
| ${out_mask}= | ${32}
# Telemetry
| ${telemetry_profile}= | vppctl_test_teardown

6.5.6.1. Local Template

  • [Cfg] DUT runs NAT44 ${nat_mode} configuration.

  • [Ver] Make TG send IPv4 packet routed over DUT1 interfaces. Make TG verify IPv4 packet is correct.

Arguments: - frame_size - Framesize in Bytes in integer. Type: integer - 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 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  with_trace=${True}
 When Initialize layer driver  ${nic_driver}
  And Initialize layer interface
  And Initialize IPv4 forwarding for NAT44 in circular topology
  And Initialize NAT44 deterministic mode in circular topology
 Then Send TCP or UDP packet and verify network address translations  ${tg}  ${TG_pf1}[0]  ${TG_pf2}[0]  ${DUT1_vf1_mac}[0]  ${DUT1_vf2_mac}[0]  ${in_net}  ${out_net}  ${dest_net}  ${protocol}  ${src_port_in}  ${dst_port}

6.5.6.2. 64B-0c-ethip4tcp-nat44det-scapy


frame_size=${64}  phy_cores=${0}

6.5.7. 2n1l-10ge2p1x710-ethip4tcp-nat44ed-scapy suite

Connections per second NAT44 endpoint-dependent mode performance test cases

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

  • [Enc] Packet Encapsulations: Eth-IPv4-TCP for IPv4 routing.

  • [Cfg] DUT configuration: DUT1 is configured with IPv4 routing and one static IPv4 /18 route entries. DUT1 is tested with ${nic_name}.

  • [Ver] TG verification: Eth-IPv4-TCP packet is sent from TG to DUT1 in one direction. Packet is received and verified for correctness on TG. Then Eth-IPv4-TCP packet is sent from TG in opposite direction. Packet is received and verified for correctness on TG.

  • [Ref] Applicable standard specifications: RFC791, RFC793, RFC3022 and RFC4787.

*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/ip/nat.robot
| Resource | resources/libraries/robot/shared/traffic.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44
| ... | NAT44_ENDPOINT_DEPENDENT | BASE | TCP | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4tcp-nat44ed
|
| Suite Setup | Setup suite topology interfaces | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace | telemetry | nat-ed
|
| Test Template | Local Template
|
| 
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | nat_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
| ${overhead}= | ${0}
# IP settings
| ${tg_if1_ip4}= | 10.0.0.2
| ${tg_if1_mask}= | ${20}
| ${tg_if2_ip4}= | 12.0.0.2
| ${tg_if2_mask}= | ${20}
| ${dut1_if1_ip4}= | 10.0.0.1
| ${dut1_if1_mask}= | ${24}
| ${dut1_if2_ip4}= | 12.0.0.1
| ${dut1_if2_mask}= | ${24}
| ${dest_net}= | 20.0.0.0
| ${dest_mask}= | ${22}
# proto layer settings
| ${protocol}= | TCP
| ${src_port_in}= | 1024
| ${dst_port}= | 8080
# NAT settings
| ${nat_mode}= | endpoint-dependent
| ${n_sessions}= | ${64512}
| ${in_net}= | 192.168.0.0
| ${in_mask}= | ${22}
| ${out_net}= | 68.142.68.0
| ${out_net_end}= | 68.142.68.0
| ${out_mask}= | ${32}
# Telemetry
| ${telemetry_profile}= | vppctl_test_teardown

6.5.7.1. Local Template

  • [Cfg] DUT runs NAT44 ${nat_mode} configuration.

  • [Ver] Make TG send IPv4 packet routed over DUT1 interfaces. Make TG verify IPv4 packet is correct.

Arguments: - frame_size - Framesize in Bytes in integer. Type: integer - 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 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  with_trace=${True}
 When Initialize layer driver  ${nic_driver}
  And Initialize layer interface
  And Initialize IPv4 forwarding for NAT44 in circular topology
  And Initialize NAT44 endpoint-dependent mode in circular topology
 Then Send TCP or UDP packet and verify network address translations  ${tg}  ${TG_pf1}[0]  ${TG_pf2}[0]  ${DUT1_vf1_mac}[0]  ${DUT1_vf2_mac}[0]  ${in_net}  ${out_net}  ${dest_net}  ${protocol}  ${src_port_in}  ${dst_port}

6.5.7.2. 64B-0c-ethip4tcp-nat44ed-scapy


frame_size=${64}  phy_cores=${0}

6.5.8. 2n1l-10ge2p1x710-ethip4udp-nat44det-scapy suite

NAT44 deterministic mode test cases

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

  • [Enc] Packet Encapsulations: Eth-IPv4-UDP for IPv4 routing.

  • [Cfg] DUT configuration: DUT1 is configured with IPv4 routing and one static IPv4 /${dest_mask} route entries. DUT1 is tested with ${nic_name}.

  • [Ver] TG verification: Eth-IPv4-UDP packet is sent from TG to DUT1 in one direction. Packet is received and verified for correctness on TG. Then Eth-IPv4-UDP packet is sent from TG in opposite direction. Packet is received and verified for correctness on TG.

  • [Ref] Applicable standard specifications: RFC791, RFC768, RFC3022 and RFC4787.

*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/ip/nat.robot
| Resource | resources/libraries/robot/shared/traffic.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | NAT44_DETERMINISTIC
| ... | BASE | UDP | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4udp-nat44det
|
| Suite Setup | Setup suite topology interfaces | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace | telemetry | det44
|
| Test Template | Local Template
|
| 
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | det44_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
| ${overhead}= | ${0}
# IP addresing
| ${tg_if1_ip4}= | 10.0.0.2
| ${tg_if1_mask}= | ${20}
| ${tg_if2_ip4}= | 12.0.0.2
| ${tg_if2_mask}= | ${20}
| ${dut1_if1_ip4}= | 10.0.0.1
| ${dut1_if1_mask}= | ${20}
| ${dut1_if2_ip4}= | 12.0.0.1
| ${dut1_if2_mask}= | ${20}
| ${dest_net}= | 30.0.0.0
| ${dest_mask}= | ${24}
# proto layer settings
| ${protocol}= | UDP
| ${src_port_in}= | 1024
| ${dst_port}= | 8080
# NAT settings
| ${nat_mode}= | deterministic
| ${in_net}= | 20.0.0.0
| ${in_mask}= | ${32}
| ${out_net}= | 200.0.0.0
| ${out_mask}= | ${32}
# Telemetry
| ${telemetry_profile}= | vppctl_test_teardown

6.5.8.1. Local Template

  • [Cfg] DUT runs NAT44 ${nat_mode} configuration.

  • [Ver] Make TG send IPv4 packet routed over DUT1 interfaces. Make TG verify IPv4 packet is correct.

Arguments: - frame_size - Framesize in Bytes in integer. Type: integer - 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 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  with_trace=${True}
 When Initialize layer driver  ${nic_driver}
  And Initialize layer interface
  And Initialize IPv4 forwarding for NAT44 in circular topology
  And Initialize NAT44 deterministic mode in circular topology
 Then Send TCP or UDP packet and verify network address translations  ${tg}  ${TG_pf1}[0]  ${TG_pf2}[0]  ${DUT1_vf1_mac}[0]  ${DUT1_vf2_mac}[0]  ${in_net}  ${out_net}  ${dest_net}  ${protocol}  ${src_port_in}  ${dst_port}

6.5.8.2. 64B-0c-ethip4udp-nat44det-scapy


frame_size=${64}  phy_cores=${0}

6.5.9. 2n1l-10ge2p1x710-ethip4udp-nat44ed-scapy suite

RFC2544: Pkt throughput NAT44 endpoint-dependent mode performance test cases

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

  • [Enc] Packet Encapsulations: Eth-IPv4-UDP for IPv4 routing.

  • [Cfg] DUT configuration: DUT1 is configured with IPv4 routing and one static IPv4 /${dest_mask} route entries. DUT1 is tested with ${nic_name}.

  • [Ver] TG verification: Eth-IPv4-UDP packet is sent from TG to DUT1 in one direction. Packet is received and verified for correctness on TG. Then Eth-IPv4-UDP packet is sent from TG in opposite direction. Packet is received and verified for correctness on TG.

  • [Ref] Applicable standard specifications: RFC791, RFC768, RFC3022 and RFC4787.

*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/ip/nat.robot
| Resource | resources/libraries/robot/shared/traffic.robot
|
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44
| ... | NAT44_ENDPOINT_DEPENDENT | BASE | UDP | DRV_VFIO_PCI
| ... | RXQ_SIZE_0 | TXQ_SIZE_0
| ... | ethip4udp-nat44ed
|
| Suite Setup | Setup suite topology interfaces | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace | telemetry | nat-ed
|
| Test Template | Local Template
|
| 
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | nat_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
| ${overhead}= | ${0}
# IP settings
| ${tg_if1_ip4}= | 10.0.0.2
| ${tg_if1_mask}= | ${20}
| ${tg_if2_ip4}= | 12.0.0.2
| ${tg_if2_mask}= | ${20}
| ${dut1_if1_ip4}= | 10.0.0.1
| ${dut1_if1_mask}= | ${24}
| ${dut1_if2_ip4}= | 12.0.0.1
| ${dut1_if2_mask}= | ${24}
| ${dest_net}= | 20.0.0.0
| ${dest_mask}= | ${22}
# proto layer settings
| ${protocol}= | UDP
| ${src_port_in}= | 1024
| ${dst_port}= | 8080
# NAT settings
| ${nat_mode}= | endpoint-dependent
| ${n_sessions}= | ${64512}
| ${in_net}= | 192.168.0.0
| ${in_mask}= | ${22}
| ${out_net}= | 68.142.68.0
| ${out_net_end}= | 68.142.68.0
| ${out_mask}= | ${32}
# Telemetry
| ${telemetry_profile}= | vppctl_test_teardown

6.5.9.1. Local Template

  • [Cfg] DUT runs NAT44 ${nat_mode} configuration.

  • [Ver] Make TG send IPv4 packet routed over DUT1 interfaces. Make TG verify IPv4 packet is correct.

Arguments: - frame_size - Framesize in Bytes in integer. Type: integer - 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 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  with_trace=${True}
 When Initialize layer driver  ${nic_driver}
  And Initialize layer interface
  And Initialize IPv4 forwarding for NAT44 in circular topology
  And Initialize NAT44 endpoint-dependent mode in circular topology
 Then Send TCP or UDP packet and verify network address translations  ${tg}  ${TG_pf1}[0]  ${TG_pf2}[0]  ${DUT1_vf1_mac}[0]  ${DUT1_vf2_mac}[0]  ${in_net}  ${out_net}  ${dest_net}  ${protocol}  ${src_port_in}  ${dst_port}

6.5.9.2. 64B-0c-ethip4udp-nat44ed-scapy


frame_size=${64}  phy_cores=${0}