aboutsummaryrefslogtreecommitdiffstats
path: root/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4proxyarp-func.robot
blob: da1988defe8234075cb11afe7c70861335226b56 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# Copyright (c) 2019 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.ProxyArp
| Library | resources.libraries.python.Trace
| ...
| Resource | resources/libraries/robot/ip/ip4.robot
| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/shared/interfaces.robot
| Resource | resources/libraries/robot/shared/testing_path.robot
| Resource | resources/libraries/robot/shared/traffic.robot
| ...
| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO | SKIP_VPP_PATCH
| ...
| Test Setup | Set up functional test
| ...
| Test Teardown | Tear down functional test
| ...
| Documentation | *RFC1027 Proxy ARP test cases*
| ...
| ... | *[Top] Network topologies:* TG-DUT1 2-node topology with
| ... | single link between nodes.
| ... | *[Cfg] DUT configuration:* DUT1 is configured with Proxy ARP
| ... | *[Ver] TG verification:* Test ARP Request packet is sent
| ... | from TG on link to DUT1; on receive TG verifies ARP reply packet
| ... | for correctness and their IPv4 src-addr, dst-addr and MAC addresses.
| ... | *[Ref] Applicable standard specifications:* RFC1027.

*** Variables ***
| ${tg_to_dut1_ip}= | 10.0.0.100
| ${dut1_to_tg_ip}= | 10.0.0.1
| ${prefix_length}= | 24
| ${lo_ip4_addr}= | 192.168.1.2
| ${hi_ip4_addr}= | 192.168.1.10
| ${pass_test_ip}= | 192.168.1.5
| ${pass_test_lo_ip}= | 192.168.1.2
| ${pass_test_hi_ip}= | 192.168.1.10
| ${fail_test_lo_ip}= | 192.168.1.1
| ${fail_test_hi_ip}= | 192.168.1.11

*** Test Cases ***
| TC01: DUT sends ARP reply on behalf of another machine from the IP range
| | [Documentation]
| | ... | [Top] TG-DUT1.
| | ... | [Ref] RFC1027.
| | ... | [Cfg] On DUT1 configure interface IPv4 address and proxy ARP
| | ... | for IP range.
| | ... | [Ver] Make TG send ARP request to DUT1 interface,
| | ... | verify if DUT1 sends correct ARP reply on behalf of machine which
| | ... | IP is in range.
| | Given Configure path in 3-node circular topology
| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
| | And Set interfaces in 3-node circular topology up
| | ${dut1_to_tg_name}= | Get interface name | ${dut1_node} | ${dut1_to_tg}
| | ${tg_to_dut1_name}= | Get interface name | ${tg_node} | ${tg_to_dut1}
| | When VPP Interface Set IP Address | ${dut1_node}
| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length}
| | And Vpp Add Proxy ARP | ${dut1_node} | ${lo_ip4_addr} | ${hi_ip4_addr}
| | And Vpp Proxy ARP Interface Enable | ${dut1_node} | ${dut1_to_tg_name}
| | Then Send ARP Request | ${tg_node} | ${tg_to_dut1_name} | ${tg_to_dut1_mac}
| | ... | ${dut1_to_tg_mac} | ${tg_to_dut1_ip} | ${pass_test_ip}

| TC02: DUT sends ARP reply on behalf of another machine from beginning of the IP range
| | [Documentation]
| | ... | [Top] TG-DUT1.
| | ... | [Ref] RFC1027.
| | ... | [Cfg] On DUT1 configure interface IPv4 address and proxy ARP
| | ... | for IP range.
| | ... | [Ver] Make TG send ARP request to DUT1 interface,
| | ... | verify if DUT1 sends correct ARP reply on behalf of machine which
| | ... | IP is from beginning of the IP range.
| | Given Configure path in 3-node circular topology
| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
| | And Set interfaces in 3-node circular topology up
| | ${dut1_to_tg_name}= | Get interface name | ${dut1_node} | ${dut1_to_tg}
| | ${tg_to_dut1_name}= | Get interface name | ${tg_node} | ${tg_to_dut1}
| | When VPP Interface Set IP Address | ${dut1_node}
| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length}
| | And Vpp Add Proxy ARP | ${dut1_node} | ${lo_ip4_addr} | ${hi_ip4_addr}
| | And Vpp Proxy ARP Interface Enable | ${dut1_node} | ${dut1_to_tg_name}
| | Then Send ARP Request | ${tg_node} | ${tg_to_dut1_name} | ${tg_to_dut1_mac}
| | ... | ${dut1_to_tg_mac} | ${tg_to_dut1_ip} | ${pass_test_lo_ip}

| TC03: DUT sends ARP reply on behalf of another machine from end of the IP range
| | [Documentation]
| | ... | [Top] TG-DUT1.
| | ... | [Ref] RFC1027.
| | ... | [Cfg] On DUT1 configure interface IPv4 address and proxy ARP
| | ... | for IP range.
| | ... | [Ver] Make TG send ARP request to DUT1 interface,
| | ... | verify if DUT1 sends correct ARP reply on behalf of machine which
| | ... | IP is from end of the IP range.
| | Given Configure path in 3-node circular topology
| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
| | And Set interfaces in 3-node circular topology up
| | ${dut1_to_tg_name}= | Get interface name | ${dut1_node} | ${dut1_to_tg}
| | ${tg_to_dut1_name}= | Get interface name | ${tg_node} | ${tg_to_dut1}
| | When VPP Interface Set IP Address | ${dut1_node}
| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length}
| | And Vpp Add Proxy ARP | ${dut1_node} | ${lo_ip4_addr} | ${hi_ip4_addr}
| | And Vpp Proxy ARP Interface Enable | ${dut1_node} | ${dut1_to_tg_name}
| | Then Send ARP Request | ${tg_node} | ${tg_to_dut1_name} | ${tg_to_dut1_mac}
| | ... | ${dut1_to_tg_mac} | ${tg_to_dut1_ip} | ${pass_test_hi_ip}

| TC04: DUT does not send ARP reply on behalf of another machine from below of the IP range
| | [Documentation]
| | ... | [Top] TG-DUT1.
| | ... | [Ref] RFC1027.
| | ... | [Cfg] On DUT1 configure interface IPv4 address and proxy ARP
| | ... | for IP range.
| | ... | [Ver] Make TG send ARP request to DUT1 interface,
| | ... | verify if DUT1 does not send ARP reply on behalf of machine which
| | ... | IP is from below of the IP range.
| | Given Configure path in 3-node circular topology
| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
| | And Set interfaces in 3-node circular topology up
| | ${dut1_to_tg_name}= | Get interface name | ${dut1_node} | ${dut1_to_tg}
| | ${tg_to_dut1_name}= | Get interface name | ${tg_node} | ${tg_to_dut1}
| | When VPP Interface Set IP Address | ${dut1_node}
| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length}
| | And Vpp Add Proxy ARP | ${dut1_node} | ${lo_ip4_addr} | ${hi_ip4_addr}
| | And Vpp Proxy ARP Interface Enable | ${dut1_node} | ${dut1_to_tg_name}
| | Then ARP request should fail | ${tg_node} | ${tg_to_dut1_name}
| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut1_ip}
| | ... | ${fail_test_lo_ip}

| TC05: DUT does not send ARP reply on behalf of another machine from above of the IP range
| | [Documentation]
| | ... | [Top] TG-DUT1.
| | ... | [Ref] RFC1027.
| | ... | [Cfg] On DUT1 configure interface IPv4 address and proxy ARP
| | ... | for IP range.
| | ... | [Ver] Make TG send ARP request to DUT1 interface,
| | ... | verify if DUT1 does not send ARP reply on behalf of machine which
| | ... | IP is from above of the IP range.
| | Given Configure path in 3-node circular topology
| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
| | And Set interfaces in 3-node circular topology up
| | ${dut1_to_tg_name}= | Get interface name | ${dut1_node} | ${dut1_to_tg}
| | ${tg_to_dut1_name}= | Get interface name | ${tg_node} | ${tg_to_dut1}
| | When VPP Interface Set IP Address | ${dut1_node}
| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length}
| | And Vpp Add Proxy ARP | ${dut1_node} | ${lo_ip4_addr} | ${hi_ip4_addr}
| | And Vpp Proxy ARP Interface Enable | ${dut1_node} | ${dut1_to_tg_name}
| | Then ARP request should fail | ${tg_node} | ${tg_to_dut1_name}
| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut1_ip}
| | ... | ${fail_test_hi_ip}