vpp-device: GENEVE tunnel test, l3 mode
[csit.git] / resources / libraries / robot / ip / geneve.robot
diff --git a/resources/libraries/robot/ip/geneve.robot b/resources/libraries/robot/ip/geneve.robot
new file mode 100644 (file)
index 0000000..c9de91d
--- /dev/null
@@ -0,0 +1,74 @@
+# Copyright (c) 2020 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.GeneveUtil
+|
+| Documentation | Keywords for GENEVE tunnels in VPP.
+
+*** Keywords ***
+| Initialize GENEVE L3 mode in circular topology
+| | [Documentation] | Initialization of GENEVE L3 mode on DUT1.
+| |
+| | [Arguments] | ${with_bypass}=${False}
+| |
+| | Set interfaces in path up
+| |
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${dut1_if1_ip4} | 24
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${tg_if1_ip4} | ${TG_pf1_mac}[0]
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dut1_if2_ip4} | 24
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${tg_if2_ip4} | ${TG_pf2_mac}[0]
+| | ${next_index}= | VPP Add Graph Node Next
+| | ... | ${dut1} | geneve4-input | ethernet-input
+| |
+| | ${src_ip_int} = | IP To Int | ${gen_tunnel.src_ip}
+| | ${dst_ip_int} = | IP To Int | ${gen_tunnel.dst_ip}
+| | ${if_ip_int} = | IP To Int | ${gen_tunnel.if_ip}
+| |
+| | FOR | ${nr} | IN RANGE | 0 | ${n_tunnels}
+| | | ${src_ip} = | Int To IP | ${${src_ip_int} + ${nr} * 256}
+| | | ${dst_ip} = | Int To IP | ${${dst_ip_int} + ${nr} * 256}
+| | | ${if_ip} = | Int To IP | ${${if_ip_int} + ${nr} * 256}
+| | | Vpp Route Add
+| | | ... | ${dut1} | ${src_ip} | ${gen_tunnel.ip_mask}
+| | | ... | gateway=${tg_if1_ip4} | interface=${DUT1_${int}1}[0]
+| | | ${tunnel_sw_index}= | Add Geneve Tunnel
+| | | ... | ${dut1} | ${gen_tunnel.local} | ${gen_tunnel.remote}
+| | | ... | ${${gen_tunnel.vni} + ${nr}} | l3_mode=${True}
+| | | ... | next_index=${next_index}
+| | | ${tunnel_if_key}= | Get Interface By SW Index
+| | | ... | ${dut1} | ${tunnel_sw_index}
+| | | ${tunnel_if_mac}= | Get Interface MAC
+| | | ... | ${dut1} | ${tunnel_if_key}
+| | | VPP Interface Set IP Address
+| | | ... | ${dut1} | ${tunnel_if_key} | ${if_ip} | 24
+| | | VPP Add IP Neighbor
+| | | ... | ${dut1} | ${tunnel_if_key} | ${dut1_if2_ip4} | ${DUT1_vf2_mac}[0]
+| | | Vpp Route Add
+| | | ... | ${dut1} | ${dst_ip} | ${gen_tunnel.ip_mask}
+| | | ... | gateway=${dut1_if2_ip4} | interface=${tunnel_if_key}
+| | | Vpp Route Add
+| | | ... | ${dut1} | ${gen_tunnel.remote} | 32
+| | | ... | gateway=${tg_if2_ip4} | interface=${DUT1_${int}2}[0]
+| | | VPP Add IP Neighbor
+| | | ... | ${dut1} | ${tunnel_if_key} | ${gen_tunnel.local} | ${tunnel_if_mac}
+| | | Vpp Route Add
+| | | ... | ${dut1} | ${gen_tunnel.local} | 32 | gateway=${if_ip}
+| | | Set Interface State
+| | | ... | ${dut1} | ${tunnel_if_key} | up
+| | END
+| | All VPP Interfaces Ready Wait | ${nodes} | retries=${60}