xref: /illumos-gate/usr/src/test/net-tests/tests/forwarding/README (revision d0b3c59ba652f183eeec1414dd9fbdc56bf05cc8)
1Running
2-------
3
4* Create three native zones and start them.
5
6* Edit config/ip_forwarding.config, entering the names of the zones
7  you created.
8
9* Run /opt/net-tests/bin/nettest.
10
11Overview
12--------
13
14The tests in this directory test the IP forwarding path under several
15different variations. All tests require three zones. The tests use
16these three zones, along with the simnet driver, to emulate a real IP
17forwarding scenario involving multiple hosts. All tests verify that
18TCP, UDP, ICMP, IPv4/IPv6, and fragmented IPv4/IPv6 traffic can cross
19the IP forwarding datapath. Each test differs in its emulation of
20various hardware offload features (which would typically be presented
21by real NICs). The diagrams below gives a visual representation of the
22situations we are testing and shows how the test components relate to
23each other.
24
25no mac-loopback
26---------------
27
28In this configuration we make sure that the packet travels from server
29to router via "the wire".
30
31                                        +----------------------------+
32+----------------------------+          |router zone                 |
33|client zone                 |          | +-------------------------+|
34|(ipft_client_nic0)          |          | |ipft_router_nic0         ||
35|  +----------------------+  |          | |+----------------------+ ||
36|  |ipft_client0          |  |          | ||ipft_client_r0        | ||
37|  |192.168.77.2          |<-+-- Wire --+->|192.168.77.1          | ||
38|  |fd00:0:1:4d::2        |  |          | ||fd00:0:1:4d::1        | ||
39|  +----------------------+  |          | |+----------------------+ ||
40+----------------------------+          | +-------------------------+|
41                                        |              ^             |
42                                        |              |             |
43                                        |              |             |
44                                        |              |             |
45                                        |              |             |
46                                        |       IP     |             |
47                                        |   forwarding |             |
48                                        |              |             |
49                                        |              |             |
50                                        |              |             |
51+----------------------------+          |              v             |
52|server zone                 |          |+-------------------------+ |
53|(ipft_server_nic0)          |          ||ipft_router_nic1         | |
54|  +----------------------+  |          || +----------------------+| |
55|  |ipft_server0          |  |          || |ipft_server_r0        || |
56|  |VLAN 5                |  |   Wire   || |VLAN 5                || |
57|  |192.168.88.2          |<-+----------++>|192.168.88.1          || |
58|  |fd00:0:1:58::2        |  |          || |fd00:0:1:58::1        || |
59|  +----------------------+  |          || +----------------------+| |
60+----------------------------+          |+-------------------------+ |
61                                        +----------------------------+
62
63mac-loopback
64------------
65
66In this configuration we make sure that the packet travels from server
67to router via mac-loopback.
68
69                                        +----------------------------+
70+----------------------------+          |router zone                 |
71|client zone                 |          | +-------------------------+|
72|(ipft_nic0)                 |          | |ipft_nic1                ||
73|  +----------------------+  |          | |+----------------------+ ||
74|  |ipft_client0          |  |          | ||ipft_client_r0        | ||
75|  |192.168.77.2          |<-+-- Wire --+->|192.168.77.1          | ||
76|  |fd00:0:1:4d::2        |  |          | ||fd00:0:1:4d::1        | ||
77|  +----------------------+  |          | |+----------------------+ ||
78+----------------------------+          | +-------------------------+|
79                                        |              ^             |
80                                        |              |             |
81                                        |              |             |
82                                        |              |             |
83                                        |              |             |
84                                        |       IP     |             |
85                                        |   forwarding |             |
86                                        |              |             |
87                                        |              |             |
88                                        |              |             |
89+----------------------------+          |              v             |
90|server zone                 |          |+-------------------------+ |
91|(ipft_nic1)                 |          ||ipft_nic1                | |
92|  +----------------------+  |          || +----------------------+| |
93|  |ipft_server0          |  |   MAC    || |ipft_server_r0        || |
94|  |VLAN 5                |  | loopback || |VLAN 5                || |
95|  |192.168.88.2          |<-+----------++>|192.168.88.1          || |
96|  |fd00:0:1:58::2        |  |          || |fd00:0:1:58::1        || |
97|  +----------------------+  |          || +----------------------+| |
98+----------------------------+          |+-------------------------+ |
99                                        +----------------------------+
100
101Requirements
102------------
103
104* The client and server zones must provide `/usr/bin/socat`. It would
105  be nice to use netcat but our native version is missing features
106  like connection timeout.
107
108* The user must both create and start the three required zones.
109
110* All three zones should be native zones.
111
112* You must edit the ip_forwarding.config file; providing it with the
113  names of the zones you have created.
114
115Files
116-----
117
118ip_fowarding
119
120	The main test script; it provides the logic for all the tests
121	below. The different test variations are controlled by options
122	and it takes the three zones as arguments. This script may be
123	run by hand but it's easier to use ip_fwd_suite for that
124	purpose.
125
126ip_fwd_suite
127
128	This script runs the various configurations of the IP
129	forwarding test suite. You can run the entire suite or just a
130	single test via the '-n' option. The "Test Matrix" section
131	below gives an overview of all the tests in the suite.
132
133ip_fwd_XXX
134
135	These scripts are mostly here to work around the fact that the
136	test-runner cannot pass arguments to individual tests. In
137	order to avoid running everything as the "ip_fwd_suite" test,
138	we create a file for each configuration. This gives individual
139	reporting of each test and steers us clear of tripping the
140	timeout. You can also run these scripts by hand like so:
141
142	NET_TESTS=/opt/net-tests /opt/net-tests/tests/forwarding/ip_fwd_001
143
144config/ip_forwarding.config
145
146	This file must be modified to contain the names of the zones
147	the user crated for running these tests.
148
149Test Matrix
150-----------
151
152This is a breakdown of all the tests in the IP forwarding test suite.
153If a given offload is enabled or disable, it is done so for all
154interfaces involved in the test.
155
156NAME	Tx IP	Tx ULP		LSO	Rx IP	mac-loopback
157001	off	none		off	off	no
158002	on	partial		off	off	no
159003	on	partial		on	off	no
160004	on	fullv4		off	off	no
161005	on	fullv4		on	off	no
162006	off	none		off	on	no
163007	on	partial		off	on	no
164008	on	partial		on	on	no
165009	on	fullv4		off	on	no
166010	on	fullv4		on	on	no
167
168011	off	none		off	off	yes
169012	on	partial		off	off	yes
170013	on	partial		on	off	yes
171014	on	fullv4		off	off	yes
172015	on	fullv4		on	off	yes
173016	off	none		off	on	yes
174017	on	partial		off	on	yes
175018	on	partial		on	on	yes
176019	on	fullv4		off	on	yes
177020	on	fullv4		on	on	yes
178