From 28bab4e715a123199972bdc5f79f6a508a879fd6 Mon Sep 17 00:00:00 2001 From: Tibor Frank Date: Mon, 13 Mar 2017 13:22:08 +0100 Subject: CSIT-545: Performance tests for SNAT - High level definition (HLD) - Low level definition (LLD) - Add keywords to set SNAT - Add tests according to HLD, LLD Change-Id: I7bf0b1870ac9c3adb36bb6590be9a3eb4ea8aa9a Signed-off-by: Tibor Frank --- resources/libraries/robot/default.robot | 8 ++ resources/libraries/robot/performance.robot | 37 +++++++ resources/libraries/robot/snat.robot | 150 ++++++++++++++++++++++++++++ 3 files changed, 195 insertions(+) create mode 100644 resources/libraries/robot/snat.robot (limited to 'resources/libraries/robot') diff --git a/resources/libraries/robot/default.robot b/resources/libraries/robot/default.robot index 08315c32ef..05314d6a15 100644 --- a/resources/libraries/robot/default.robot +++ b/resources/libraries/robot/default.robot @@ -281,6 +281,13 @@ | | :FOR | ${dut} | IN | @{duts} | | | Add Enable Vhost User Config | ${nodes['${dut}']} +| Add SNAT to all DUTs +| | [Documentation] | Add SNAT configuration to all DUTs. +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Add SNAT Config | ${nodes['${dut}']} + | Add Cryptodev to all DUTs | | [Documentation] | AddCryptodev to VPP startup configuration to all | | ... | DUTs @@ -310,6 +317,7 @@ | | | Remove Rxqueues Config | ${nodes['${dut}']} | | | Remove No Multi Seg Config | ${nodes['${dut}']} | | | Remove Enable Vhost User Config | ${nodes['${dut}']} +| | | Remove SNAT Config | ${nodes['${dut}']} | Setup default startup configuration of VPP on all DUTs | | [Documentation] | Setup default startup configuration of VPP to all DUTs. diff --git a/resources/libraries/robot/performance.robot b/resources/libraries/robot/performance.robot index ccfc526b03..7c1589392b 100644 --- a/resources/libraries/robot/performance.robot +++ b/resources/libraries/robot/performance.robot @@ -2334,6 +2334,43 @@ | | Add arp on dut | ${dut2} | ${dut2_if1} | ${dut1_dut2_ip4_address} | | ... | ${dut1_if2_mac} +| SNAT is initialized in a 3-node circular topology +| | [Documentation] | Initialization of 3-node topology with SNAT between DUTs: +| | ... | - set interfaces up +| | ... | - set IP addresses +| | ... | - set ARP +| | ... | - create routes +| | ... | - set SNAT - only on DUT1 +| | ... +| | Set Interface State | ${dut1} | ${dut1_if1} | up +| | Set Interface State | ${dut1} | ${dut1_if2} | up +| | Set Interface State | ${dut2} | ${dut2_if1} | up +| | Set Interface State | ${dut2} | ${dut2_if2} | up +| | All Vpp Interfaces Ready Wait | ${nodes} +| | ... +| | IP addresses are set on interfaces | ${dut1} | ${dut1_if1} | 10.0.0.1 | 20 +| | IP addresses are set on interfaces | ${dut1} | ${dut1_if2} | 11.0.0.1 | 20 +| | IP addresses are set on interfaces | ${dut2} | ${dut2_if1} | 11.0.0.2 | 20 +| | IP addresses are set on interfaces | ${dut2} | ${dut2_if2} | 12.0.0.1 | 20 +| | ... +| | ${tg_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} +| | ${tg_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} +| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} +| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} +| | ... +| | Add arp on dut | ${dut1} | ${dut1_if1} | 10.0.0.2 | ${tg_if1_mac} +| | Add arp on dut | ${dut1} | ${dut1_if2} | 11.0.0.2 | ${dut2_if1_mac} +| | Add arp on dut | ${dut2} | ${dut2_if1} | 11.0.0.1 | ${dut1_if2_mac} +| | Add arp on dut | ${dut2} | ${dut2_if2} | 12.0.0.2 | ${tg_if2_mac} +| | ... +| | Vpp Route Add | ${dut1} | 12.0.0.2 | 32 | 11.0.0.2 | ${dut1_if2} +| | Vpp Route Add | ${dut1} | 20.0.0.0 | 18 | 10.0.0.2 | ${dut1_if1} +| | Vpp Route Add | ${dut2} | 12.0.0.0 | 24 | 12.0.0.2 | ${dut2_if2} +| | Vpp Route Add | ${dut2} | 200.0.0.0 | 30 | 11.0.0.1 | ${dut2_if1} +| | ... +| | Set inside and outside interfaces | ${dut1} | ${dut1_if1} | ${dut1_if2} +| | Set deterministic mode for SNAT | ${dut1} | 20.0.0.0 | 18 | 200.0.0.0 | 30 + | DPDK 2-node Performance Suite Setup with DUT's NIC model | | [Documentation] | | ... | Updates interfaces on all nodes and setup global diff --git a/resources/libraries/robot/snat.robot b/resources/libraries/robot/snat.robot new file mode 100644 index 0000000000..12c7a71369 --- /dev/null +++ b/resources/libraries/robot/snat.robot @@ -0,0 +1,150 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.SNATUtil +| Library | resources.libraries.python.NAT.NATUtil +| Documentation | Keywords for SNAT feature in VPP. + +*** Keywords *** +| Set inside and outside interfaces +| | [Documentation] | Set inside and outside interfaces for SNAT. +| | ... +| | ... | *Arguments:* +| | ... | - node - DUT node to set SNAT interfaces on. Type: dictionary +| | ... | - int_in - Inside interface. Type: string +| | ... | - int_out - Outside interface. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Set inside and outside interfaces \| ${nodes['DUT1']} \ +| | ... | \| FortyGigabitEtherneta/0/0 \| FortyGigabitEtherneta/0/1 \| +| | ... +| | [Arguments] | ${node} | ${int_in} | ${int_out} +| | ... +| | ${int_in_name}= | Set variable | ${node['interfaces']['${int_in}']['name']} +| | ${int_out_name}= | Set variable | ${node['interfaces']['${int_out}']['name']} +| | Set SNAT Interfaces | ${node} | ${int_in_name} | ${int_out_name} + +| Set deterministic mode for SNAT +| | [Documentation] | Set deterministic behaviour of SNAT. +| | ... +| | ... | *Arguments:* +| | ... | - node - DUT node to set deterministic mode for SNAT on. +| | ... | Type: dictionary +| | ... | - ip_in - Inside IP. Type: string +| | ... | - subnet_in - Inside IP subnet. Type: string +| | ... | - ip_out - Outside IP. Type: string +| | ... | - subnet_out - Outside IP subnet. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Set deterministic mode for SNAT \| ${nodes['DUT1']} \ +| | ... | \| 100.0.0.0 \| 12 \| 12.1.1.0 \| 24 \| +| | ... +| | [Arguments] | ${node} | ${ip_in} | ${subnet_in} | ${ip_out} | ${subnet_out} +| | ... +| | Set SNAT deterministic | ${node} | ${ip_in} | ${subnet_in} | ${ip_out} +| | ... | ${subnet_out} + +| Set workers for SNAT +| | [Documentation] | Set workers for SNAT. +| | ... +| | ... | *Arguments:* +| | ... | - node - DUT node to set SNAT workers on. Type: dictionary +| | ... | - lcores - list of cores, format: range e.g. 1-5 or list of ranges \ +| | ... | e.g.: 1-5,18-22. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Set workers for SNAT \| ${nodes['DUT1']} \| 12-23,36-47 \| +| | ... +| | [Arguments] | ${node} | ${lcores} +| | ... +| | Set SNAT workers | ${node} | ${lcores} + +| Show SNAT verbose +| | [Documentation] | Get the SNAT settings on the node. +| | ... +| | ... | *Arguments:* +| | ... | - node - DUT node to show SNAT. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Show SNAT verbose \| ${nodes['DUT1']} \| +| | ... +| | [Arguments] | ${node} +| | ... +| | Show SNAT | ${node} + +| Get SNAT deterministic forward +| | [Documentation] | Show forward IP address and port(s). +| | ... +| | ... | *Arguments:* +| | ... | - node - DUT node to get SNAT deterministic forward on. +| | ... | Type: dictionary +| | ... | - ip - IP address. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Get SNAT deterministic forward \| ${nodes['DUT1']} \| 10.0.0.2 \| +| | ... +| | [Arguments] | ${node} | ${ip} +| | ... +| | Show SNAT deterministic forward | ${node} | ${ip} + +| Get SNAT deterministic reverse +| | [Documentation] | Show reverse IP address. +| | ... +| | ... | *Arguments:* +| | ... | - node - DUT node to get SNAT deterministic reverse on. +| | ... | Type: dictionary +| | ... | - ip - IP address. Type: string +| | ... | - port - Port. Type: string or integer +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Get SNAT deterministic reverse \| ${nodes['DUT1']} \| 10.0.0.2 \ +| | ... | \| 1025 \| +| | ... +| | [Arguments] | ${node} | ${ip} | ${port} +| | ... +| | Show SNAT deterministic reverse | ${node} | ${ip} | ${port} + +| Get NAT interfaces +| | [Documentation] | Get list of interfaces configured with NAT from VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - node - DUT node to get SNAT interfaces on. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Get NAT interfaces \| ${nodes['DUT1']} \| +| | ... +| | [Arguments] | ${node} +| | ... +| | VPP get NAT interfaces | ${node} + +| Get NAT static mappings +| | [Documentation] | Get NAT static mappings from VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - node - DUT node to get SNAT static mappings on. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Get NAT static mappings \| ${nodes['DUT1']} \| +| | ... +| | [Arguments] | ${node} +| | ... +| | VPP get NAT static mappings | ${node} -- cgit 1.2.3-korg