diff options
Diffstat (limited to 'resources/libraries/robot/overlay')
-rw-r--r-- | resources/libraries/robot/overlay/gre.robot | 43 | ||||
-rw-r--r-- | resources/libraries/robot/overlay/srv6.robot | 195 | ||||
-rw-r--r-- | resources/libraries/robot/overlay/vxlan.robot | 12 |
3 files changed, 196 insertions, 54 deletions
diff --git a/resources/libraries/robot/overlay/gre.robot b/resources/libraries/robot/overlay/gre.robot deleted file mode 100644 index fd38a1764a..0000000000 --- a/resources/libraries/robot/overlay/gre.robot +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright (c) 2016 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 *** -| Resource | resources/libraries/robot/shared/interfaces.robot - -*** Keywords *** -| Create GRE tunnel interface and set it up -| | [Documentation] | Create GRE tunnel interface and set it up on defined VPP node and put \ -| | ... | the interface to UP state. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node where to create GRE tunnel. Type: dictionary -| | ... | - source_ip_address - GRE tunnel source IP address. Type: string -| | ... | - destination_ip_address - GRE tunnel destination IP address. -| | ... | Type: string -| | ... -| | ... | *Return:* -| | ... | - name - Name of created GRE tunnel interface. Type: string -| | ... | - index - SW interface index of created GRE tunnel interface. -| | ... | Type: integer -| | ... -| | ... | *Example:* -| | ... -| | ... | \| ${gre_name} \| ${gre_index}= \ -| | ... | \| Create GRE tunnel interface and set it up \| ${dut} \ -| | ... | \| 192.0.1.1 \| 192.0.1.2 \| -| | ... -| | [Arguments] | ${dut_node} | ${source_ip_address} | ${destination_ip_address} -| | ${name} | ${index}= | Create GRE tunnel interface -| | ... | ${dut_node} | ${source_ip_address} | ${destination_ip_address} -| | Set Interface State | ${dut_node} | ${index} | up -| | [Return] | ${name} | ${index} diff --git a/resources/libraries/robot/overlay/srv6.robot b/resources/libraries/robot/overlay/srv6.robot index a0a557e6d9..1be008a44a 100644 --- a/resources/libraries/robot/overlay/srv6.robot +++ b/resources/libraries/robot/overlay/srv6.robot @@ -282,3 +282,198 @@ | | ${duts}= | Get Matches | ${nodes} | DUT* | | :FOR | ${dut} | IN | @{duts} | | | Show SR LocalSIDs | ${nodes['${dut}']} + +| Initialize IPv6 forwarding over SRv6 with encapsulation with '${n}' x SID '${prepos}' decapsulation in 3-node circular topology +| | [Documentation] +| | ... | Set UP state on VPP interfaces in path on nodes in 3-node circular +| | ... | topology. Get the interface MAC addresses and setup neighbours on all +| | ... | VPP interfaces. Setup IPv6 addresses on all interfaces. Set segment +| | ... | routing for IPv6 for required number of SIDs and configure IPv6 routes +| | ... | on both DUT nodes. +| | ... +| | VPP Interface Set IP Address +| | ... | ${dut1} | ${dut1_if1} | ${dut1_if1_ip6} | ${prefix} +| | VPP Interface Set IP Address +| | ... | ${dut1} | ${dut1_if2} | ${dut1_if2_ip6} | ${prefix} +| | VPP Interface Set IP Address +| | ... | ${dut2} | ${dut2_if1} | ${dut2_if1_ip6} | ${prefix} +| | VPP Interface Set IP Address +| | ... | ${dut2} | ${dut2_if2} | ${dut2_if2_ip6} | ${prefix} +| | Vpp All Ra Suppress Link Layer | ${nodes} +| | :FOR | ${number} | IN RANGE | 2 | ${dst_addr_nr}+2 +| | | ${hexa_nr}= | Convert To Hex | ${number} +| | | VPP Add IP Neighbor | ${dut1} +| | | ... | ${dut1_if1} | ${tg_if1_ip6_subnet}${hexa_nr} | ${tg_if1_mac} +| | | VPP Add IP Neighbor | ${dut2} +| | | ... | ${dut2_if2} | ${tg_if2_ip6_subnet}${hexa_nr} | ${tg_if2_mac} +| | VPP Add IP Neighbor +| | ... | ${dut1} | ${dut1_if2} | ${dut2_if1_ip6} | ${dut2_if1_mac} +| | VPP Add IP Neighbor +| | ... | ${dut2} | ${dut2_if1} | ${dut1_if2_ip6} | ${dut1_if2_mac} +| | ${sid1}= | Set Variable If +| | ... | "${n}" == "1" | ${dut2_sid1} +| | ... | "${n}" == "2" | ${dut2_sid1_1} +| | ${sid2}= | Set Variable If +| | ... | "${n}" == "1" | ${dut1_sid2} +| | ... | "${n}" == "2" | ${dut1_sid2_1} +| | Vpp Route Add | ${dut1} | ${sid1} | ${sid_prefix} | gateway=${dut2_if1_ip6} +| | ... | interface=${dut1_if2} +| | Vpp Route Add | ${dut2} | ${sid2} | ${sid_prefix} | gateway=${dut1_if2_ip6} +| | ... | interface=${dut2_if1} +# Configure SRv6 for direction0 +| | Set SR Encaps Source Address on DUT | ${dut1} | ${dut1_sid1} +| | @{sid_list_dir0}= | Run Keyword If | "${n}" == "1" +| | ... | Create List | ${dut2_sid1} +| | ... | ELSE IF | "${n}" == "2" +| | ... | Create List | ${dut2_sid1_1} | ${dut2_sid1_2} +| | Configure SR Policy on DUT | ${dut1} | ${dut1_bsid} | encap +| | ... | @{sid_list_dir0} +| | Configure SR Steer on DUT | ${dut1} | L3 | ${dut1_bsid} +| | ... | ip_addr=${tg_if2_ip6_subnet} | prefix=${sid_prefix} +| | Run Keyword If | "${n}" == "1" +| | ... | Configure SR LocalSID on DUT | ${dut2} | ${dut2_sid1} | end.dx6 +| | ... | interface=${dut2_if2} | next_hop=${tg_if2_ip6_subnet}2 +| | Run Keyword If | "${n}" == "2" +| | ... | Configure SR LocalSID on DUT | ${dut2} | ${dut2_sid1_1} | end +| | Run Keyword If | "${n}" == "2" and "${prepos}" != "without" +| | ... | Configure SR LocalSID on DUT | ${dut2} | ${dut2_sid1_2} | end.dx6 +| | ... | interface=${dut2_if2} | next_hop=${tg_if2_ip6_subnet}2 +| | Run Keyword If | "${n}" == "2" and "${prepos}" == "without" +| | ... | Vpp Route Add | ${dut2} | ${dut2_sid1_2} | ${sid_prefix} +| | ... | gateway=${tg_if2_ip6_subnet}2 | interface=${dut2_if2} +# Configure SRv6 for direction1 +| | Set SR Encaps Source Address on DUT | ${dut2} | ${dut2_sid2} +| | @{sid_list_dir1}= | Run Keyword If | "${n}" == "1" +| | ... | Create List | ${dut1_sid2} +| | ... | ELSE IF | "${n}" == "2" +| | ... | Create List | ${dut1_sid2_1} | ${dut1_sid2_2} +| | Configure SR Policy on DUT | ${dut2} | ${dut2_bsid} | encap +| | ... | @{sid_list_dir1} +| | Configure SR Steer on DUT | ${dut2} | L3 | ${dut2_bsid} +| | ... | ip_addr=${tg_if1_ip6_subnet} | prefix=${sid_prefix} +| | Run Keyword If | "${n}" == "1" +| | ... | Configure SR LocalSID on DUT | ${dut1} | ${dut1_sid2} | end.dx6 +| | ... | interface=${dut1_if1} | next_hop=${tg_if1_ip6_subnet}2 +| | Run Keyword If | "${n}" == "2" +| | ... | Configure SR LocalSID on DUT | ${dut1} | ${dut1_sid2_1} | end +| | Run Keyword If | "${n}" == "2" and "${prepos}" != "without" +| | ... | Configure SR LocalSID on DUT | ${dut1} | ${dut1_sid2_2} | end.dx6 +| | ... | interface=${dut1_if1} | next_hop=${tg_if1_ip6_subnet}2 +| | Run Keyword If | "${n}" == "2" and "${prepos}" == "without" +| | ... | Vpp Route Add | ${dut1} | ${dut1_sid2_2} | ${sid_prefix} +| | ... | gateway=${tg_if1_ip6_subnet}2 | interface=${dut1_if1} +| | Set interfaces in path up + +| Initialize IPv6 forwarding over SRv6 with endpoint to SR-unaware Service Function via '${behavior}' behaviour in 3-node circular topology +| | [Documentation] +| | ... | Create pair of Memif interfaces on all defined VPP nodes. Set UP +| | ... | state on VPP interfaces in path on nodes in 3-node circular topology. +| | ... | Get the interface MAC addresses and setup neighbours on all VPP +| | ... | interfaces. Setup IPv6 addresses on all interfaces. Set segment +| | ... | routing for IPv6 with defined behaviour function and configure IPv6 +| | ... | routes on both DUT nodes. +| | ... +| | ... | *Note:* +| | ... | KW uses test variable rxq_count_int set by KW Add worker threads +| | ... | and rxqueues to all DUTs +| | ... +| | ${sock1}= | Set Variable | memif-DUT1_CNF +| | ${sock2}= | Set Variable | memif-DUT2_CNF +| | Set up memif interfaces on DUT node | ${dut1} | ${sock1} | ${sock1} +| | ... | ${1} | dut1-memif-1-if1 | dut1-memif-1-if2 | ${rxq_count_int} +| | ... | ${rxq_count_int} +| | VPP Set interface MTU | ${dut1} | ${dut1-memif-1-if1} +| | VPP Set interface MTU | ${dut1} | ${dut1-memif-1-if2} +| | Set up memif interfaces on DUT node | ${dut2} | ${sock2} | ${sock2} +| | ... | ${1} | dut2-memif-1-if1 | dut2-memif-1-if2 | ${rxq_count_int} +| | ... | ${rxq_count_int} +| | VPP Set interface MTU | ${dut2} | ${dut2-memif-1-if1} +| | VPP Set interface MTU | ${dut2} | ${dut2-memif-1-if2} +| | :FOR | ${dut} | IN | @{duts} +| | | Show Memif | ${nodes['${dut}']} +| | VPP Interface Set IP Address +| | ... | ${dut1} | ${dut1_if1} | ${dut1_if1_ip6} | ${prefix} +| | VPP Interface Set IP Address +| | ... | ${dut1} | ${dut1_if2} | ${dut1_if2_ip6} | ${prefix} +| | VPP Interface Set IP Address | ${dut1} | ${dut1-memif-1-if1} +| | ... | ${dut1-memif-1-if1_ip6} | ${mem_prefix} +| | VPP Interface Set IP Address | ${dut1} | ${dut1-memif-1-if2} +| | ... | ${dut1-memif-1-if2_ip6} | ${mem_prefix} +| | VPP Interface Set IP Address +| | ... | ${dut2} | ${dut2_if1} | ${dut2_if1_ip6} | ${prefix} +| | VPP Interface Set IP Address +| | ... | ${dut2} | ${dut2_if2} | ${dut2_if2_ip6} | ${prefix} +| | VPP Interface Set IP Address | ${dut2} | ${dut2-memif-1-if1} +| | ... | ${dut2-memif-1-if1_ip6} | ${mem_prefix} +| | VPP Interface Set IP Address | ${dut2} | ${dut2-memif-1-if2} +| | ... | ${dut2-memif-1-if2_ip6} | ${mem_prefix} +| | Vpp All Ra Suppress Link Layer | ${nodes} +| | VPP Add IP Neighbor +| | ... | ${dut1} | ${dut1_if2} | ${dut2_if1_ip6} | ${dut2_if1_mac} +| | VPP Add IP Neighbor +| | ... | ${dut2} | ${dut2_if1} | ${dut1_if2_ip6} | ${dut1_if2_mac} +| | VPP Add IP Neighbor +| | ... | ${dut1} | ${dut1_if1} | ${tg_if1_ip6_subnet}2 | ${tg_if1_mac} +| | VPP Add IP Neighbor +| | ... | ${dut2} | ${dut2_if2} | ${tg_if2_ip6_subnet}2 | ${tg_if2_mac} +| | ${dut1-memif-1-if2_mac}= | Get Interface MAC | ${dut1} | memif2 +| | ${dut2-memif-1-if2_mac}= | Get Interface MAC | ${dut2} | memif2 +| | VPP Add IP Neighbor | ${dut1} +| | ... | ${dut1-memif-1-if1} | ${dut1_nh} | ${dut1-memif-1-if2_mac} +| | VPP Add IP Neighbor | ${dut2} +| | ... | ${dut2-memif-1-if1} | ${dut2_nh} | ${dut2-memif-1-if2_mac} +| | Vpp Route Add | ${dut1} | ${dut2_sid1} | ${sid_prefix} +| | ... | gateway=${dut2_if1_ip6} | interface=${dut1_if2} +| | Vpp Route Add | ${dut1} | ${out_sid2_1} | ${sid_prefix} +| | ... | gateway=${tg_if1_ip6_subnet}2 | interface=${dut1_if1} +| | Vpp Route Add | ${dut2} | ${dut1_sid2} | ${sid_prefix} +| | ... | gateway=${dut1_if2_ip6} | interface=${dut2_if1} +| | Vpp Route Add | ${dut2} | ${out_sid1_1} | ${sid_prefix} +| | ... | gateway=${tg_if2_ip6_subnet}2 | interface=${dut2_if2} +# Configure SRv6 for direction0 on DUT1 +| | Set SR Encaps Source Address on DUT | ${dut1} | ${dut1_sid1} +| | @{sid_list_dir0}= | Create List | ${dut2_sid1} | ${out_sid1_1} +| | ... | ${out_sid1_2} +| | Configure SR Policy on DUT | ${dut1} | ${dut1_bsid} | encap +| | ... | @{sid_list_dir0} +| | Configure SR Steer on DUT | ${dut1} | L3 | ${dut1_bsid} +| | ... | ip_addr=${tg_if2_ip6_subnet} | prefix=${sid_prefix} +# Configure SRv6 for direction1 on DUT2 +| | Set SR Encaps Source Address on DUT | ${dut2} | ${dut2_sid2} +| | @{sid_list_dir1}= | Create List | ${dut1_sid2} | ${out_sid2_1} +| | ... | ${out_sid2_2} +| | Configure SR Policy on DUT | ${dut2} | ${dut2_bsid} | encap +| | ... | @{sid_list_dir1} +| | Configure SR Steer on DUT | ${dut2} | L3 | ${dut2_bsid} +| | ... | ip_addr=${tg_if1_ip6_subnet} | prefix=${sid_prefix} +# Configure SRv6 for direction0 on DUT2 +| | ${dut2_out_if}= | Get Interface Name | ${dut2} | memif1 +| | ${dut2_in_if}= | Get Interface Name | ${dut2} | memif2 +| | Remove Values From List | ${sid_list_dir0} | ${dut2_sid1} +| | Run Keyword If | "${behavior}" == "static_proxy" +| | ... | Configure SR LocalSID on DUT | ${dut2} | ${dut2_sid1} | end.as +| | ... | ${NONE} | ${dut2_nh} | ${NONE} | ${dut2_out_if} | ${dut2_in_if} +| | ... | ${dut1_sid1} | @{sid_list_dir0} +| | ... | ELSE IF | "${behavior}" == "dynamic_proxy" +| | ... | Configure SR LocalSID on DUT | ${dut2} | ${dut2_sid1} | end.ad +| | ... | next_hop=${dut2_nh} | out_if=${dut2_out_if} | in_if=${dut2_in_if} +| | ... | ELSE IF | "${behavior}" == "masquerading" +| | ... | Configure SR LocalSID on DUT | ${dut2} | ${dut2_sid1} | end.am +| | ... | next_hop=${dut2_nh} | out_if=${dut2_out_if} | in_if=${dut2_in_if} +| | ... | ELSE | Fail | Unsupported behaviour: ${behavior} +# Configure SRv6 for direction1 on DUT1 +| | ${dut1_out_if}= | Get Interface Name | ${dut1} | memif1 +| | ${dut1_in_if}= | Get Interface Name | ${dut1} | memif2 +| | Remove Values From List | ${sid_list_dir1} | ${dut1_sid2} +| | Run Keyword If | "${behavior}" == "static_proxy" +| | ... | Configure SR LocalSID on DUT | ${dut1} | ${dut1_sid2} | end.as +| | ... | ${NONE} | ${dut1_nh} | ${NONE} | ${dut1_out_if} | ${dut1_in_if} +| | ... | ${dut2_sid2} | @{sid_list_dir1} +| | ... | ELSE IF | "${behavior}" == "dynamic_proxy" +| | ... | Configure SR LocalSID on DUT | ${dut1} | ${dut1_sid2} | end.ad +| | ... | next_hop=${dut1_nh} | out_if=${dut1_out_if} | in_if=${dut1_in_if} +| | ... | ELSE IF | "${behavior}" == "masquerading" +| | ... | Configure SR LocalSID on DUT | ${dut1} | ${dut1_sid2} | end.am +| | ... | next_hop=${dut1_nh} | out_if=${dut1_out_if} | in_if=${dut1_in_if} +| | ... | ELSE | Fail | Unsupported behaviour: ${behavior} +| | Set interfaces in path up diff --git a/resources/libraries/robot/overlay/vxlan.robot b/resources/libraries/robot/overlay/vxlan.robot index 42c1eba096..f03abdc11a 100644 --- a/resources/libraries/robot/overlay/vxlan.robot +++ b/resources/libraries/robot/overlay/vxlan.robot @@ -12,19 +12,9 @@ # limitations under the License. *** Settings *** -| Library | Collections | Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.IPv6Util -| Library | resources.libraries.python.L2Util -| Library | resources.libraries.python.NodePath | ... -| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot -| Resource | resources/libraries/robot/l2/l2_xconnect.robot -| Resource | resources/libraries/robot/shared/default.robot -| Resource | resources/libraries/robot/shared/interfaces.robot -| ... -| Documentation | VXLAN keywords +| Documentation | VXLAN keywords. *** Keywords *** | Get VXLAN dump |