diff options
-rw-r--r-- | docs/tag_documentation.rst | 11 | ||||
-rw-r--r-- | resources/test_data/lisp/l2/l2_ipv6.py | 47 | ||||
-rw-r--r-- | tests/func/lisp/l2_lisp_ipv6.robot | 101 |
3 files changed, 155 insertions, 4 deletions
diff --git a/docs/tag_documentation.rst b/docs/tag_documentation.rst index 2531c0242f..ab5e2d1345 100644 --- a/docs/tag_documentation.rst +++ b/docs/tag_documentation.rst @@ -115,14 +115,17 @@ FIB_2M LISP TAGs --------- +LISP + All Lisp test cases. + LISP_IPv4 - Test Lisp in IPv4 topology + Test Lisp in IPv4 topology. LISP_IPv6 - Test Lisp in IPv6 topology + Test Lisp in IPv6 topology. LISP_IPv4oIPv6 - Test IPv4 over IPv6 topology + Test IPv4 over IPv6 topology. LISP_IPv6oIPv4 - Test IPv6 over IPv4 topology + Test IPv6 over IPv4 topology. diff --git a/resources/test_data/lisp/l2/l2_ipv6.py b/resources/test_data/lisp/l2/l2_ipv6.py new file mode 100644 index 0000000000..2e158828a3 --- /dev/null +++ b/resources/test_data/lisp/l2/l2_ipv6.py @@ -0,0 +1,47 @@ +# 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. + +"""Test variables for Eth-IP6-ICMPv6-LISPGpe-IP6 encapsulation test suite.""" + +# Lisp default global value +locator_name = 'tst_locator' + +# Lisp default locator_set value +lisp_dut_settings = {'locator_name': locator_name, + 'priority': 1, + 'weight': 1, + 'bd': 10, + 'vni': 5} + +# IPv4 Lisp static mapping configuration +dut1_to_dut2_ip6 = '2001:cdba:3::1' +dut2_to_dut1_ip6 = '2001:cdba:3::2' +dut1_to_tg_ip6 = '2001:cdba:1::1' +dut2_to_tg_ip6 = '2001:cdba:2::1' +tg1_ip6 = '2001:cdba:1::2' +tg2_ip6 = '2001:cdba:2::2' +prefix6 = 64 +vpp_bd_id = 10 +tg_if1_mac = '08:22:22:22:22:11' +tg_if2_mac = '08:22:22:22:22:22' + +dut1_to_dut2_ip6_static_adjacency = {'eid': tg_if2_mac, + 'seid': tg_if1_mac, + 'rloc': dut2_to_dut1_ip6, + 'int': 'dut1_to_dut2', + 'map_res': tg2_ip6} +dut2_to_dut1_ip6_static_adjacency = {'eid': tg_if1_mac, + 'seid': tg_if2_mac, + 'rloc': dut1_to_dut2_ip6, + 'map_res': tg1_ip6, + 'int': 'dut2_to_dut1'} diff --git a/tests/func/lisp/l2_lisp_ipv6.robot b/tests/func/lisp/l2_lisp_ipv6.robot new file mode 100644 index 0000000000..4070a653dc --- /dev/null +++ b/tests/func/lisp/l2_lisp_ipv6.robot @@ -0,0 +1,101 @@ +# 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 *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.LispUtil +| Library | resources.libraries.python.L2Util +| Resource | resources/libraries/robot/traffic.robot +| Resource | resources/libraries/robot/default.robot +| Resource | resources/libraries/robot/interfaces.robot +| Resource | resources/libraries/robot/testing_path.robot +| Resource | resources/libraries/robot/ipv4.robot +| Resource | resources/libraries/robot/lisp/l2lisp.robot +# Import configuration and test data: +| Variables | resources/test_data/lisp/l2/l2_ipv6.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP +| ... +| Test Setup | Run Keywords | Setup all DUTs before test +| ... | AND | Setup all TGs before traffic script +| ... | AND | Update All Interface Data On All Nodes | ${nodes} +| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes} +| ... | AND | Show vpp trace dump on all DUTs +| ... | AND | VPP Show Errors | ${nodes['DUT1']} +| ... | AND | VPP Show Errors | ${nodes['DUT2']} +| ... +| Documentation | *l2-lispgpe-ip6 encapsulation test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IP6-ICMPv6-LISPGpe-IP6 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge\ +| ... | domains and neighbors. LISPoIPv6 tunnel is configured between\ +| ... | DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in\ +| ... | both directions by TG on links to DUT1 and DUT2; on receive\ +| ... | TG verifies packets for correctness and their IPv6 src-addr, dst-addr\ +| ... | and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC6830. + +*** Test Cases *** +| TC01: Route IPv6 packet through LISP with Bridge Domain setup. +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IP6-ICMPv6-LISPGpe-IP6 +| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2. Also\ +| | ... | configure BD and assign it to LISP VNI. +| | ... | [Ver] Make TG send ICMPv6 Echo Req between its interfaces across both\ +| | ... | DUTs and LISP tunnel between them; verify IPv6, Ether headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830. +| | ... +| | Given Path for 3-node testing is set +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Interfaces in 3-node path are up +| | And IP addresses are set on interfaces +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} | ${prefix6} +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6} | ${prefix6} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} | ${prefix6} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} | ${prefix6} +| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6} +| | ... | ${tg_to_dut2_mac} +| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6} +| | ... | ${tg_to_dut1_mac} +| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_dut1_mac} +| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6} +| | ... | ${dut1_to_dut2_mac} +| | When Create L2 BD | ${dut1_node} | ${vpp_bd_id} +| | And Add Interface To L2 BD | ${dut1_node} | ${dut1_to_tg} | ${vpp_bd_id} +| | And Create L2 BD | ${dut2_node} | ${vpp_bd_id} +| | And Add Interface To L2 BD | ${dut2_node} | ${dut2_to_tg} | ${vpp_bd_id} +| | And Set up L2 Lisp on DUT | ${dut1_node} +| | ... | ${dut1_to_dut2_ip6_static_adjacency} +| | ... | ${lisp_dut_settings} +| | And Set up L2 Lisp on DUT | ${dut2_node} +| | ... | ${dut2_to_dut1_ip6_static_adjacency} +| | ... | ${lisp_dut_settings} +| | Then Send Packet And Check Headers +| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} +| | ... | ${tg_to_dut1} | ${tg_if1_mac} | ${tg_if2_mac} +| | ... | ${tg_to_dut2} | ${tg_if1_mac} | ${tg_if2_mac} +| | And Send Packet And Check Headers +| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} +| | ... | ${tg_to_dut2} | ${tg_if2_mac} | ${tg_if1_mac} +| | ... | ${tg_to_dut1} | ${tg_if2_mac} | ${tg_if1_mac} + + |