1*c61a1653SRyan ZezeskiRunning
2*c61a1653SRyan Zezeski-------
3*c61a1653SRyan Zezeski
4*c61a1653SRyan Zezeski* Create three native zones and start them.
5*c61a1653SRyan Zezeski
6*c61a1653SRyan Zezeski* Edit config/ip_forwarding.config, entering the names of the zones
7*c61a1653SRyan Zezeski  you created.
8*c61a1653SRyan Zezeski
9*c61a1653SRyan Zezeski* Run /opt/net-tests/bin/nettest.
10*c61a1653SRyan Zezeski
11*c61a1653SRyan ZezeskiOverview
12*c61a1653SRyan Zezeski--------
13*c61a1653SRyan Zezeski
14*c61a1653SRyan ZezeskiThe tests in this directory test the IP forwarding path under several
15*c61a1653SRyan Zezeskidifferent variations. All tests require three zones. The tests use
16*c61a1653SRyan Zezeskithese three zones, along with the simnet driver, to emulate a real IP
17*c61a1653SRyan Zezeskiforwarding scenario involving multiple hosts. All tests verify that
18*c61a1653SRyan ZezeskiTCP, UDP, ICMP, IPv4/IPv6, and fragmented IPv4/IPv6 traffic can cross
19*c61a1653SRyan Zezeskithe IP forwarding datapath. Each test differs in its emulation of
20*c61a1653SRyan Zezeskivarious hardware offload features (which would typically be presented
21*c61a1653SRyan Zezeskiby real NICs). The diagrams below gives a visual representation of the
22*c61a1653SRyan Zezeskisituations we are testing and shows how the test components relate to
23*c61a1653SRyan Zezeskieach other.
24*c61a1653SRyan Zezeski
25*c61a1653SRyan Zezeskino mac-loopback
26*c61a1653SRyan Zezeski---------------
27*c61a1653SRyan Zezeski
28*c61a1653SRyan ZezeskiIn this configuration we make sure that the packet travels from server
29*c61a1653SRyan Zezeskito router via "the wire".
30*c61a1653SRyan Zezeski
31*c61a1653SRyan Zezeski                                        +----------------------------+
32*c61a1653SRyan Zezeski+----------------------------+          |router zone                 |
33*c61a1653SRyan Zezeski|client zone                 |          | +-------------------------+|
34*c61a1653SRyan Zezeski|(ipft_client_nic0)          |          | |ipft_router_nic0         ||
35*c61a1653SRyan Zezeski|  +----------------------+  |          | |+----------------------+ ||
36*c61a1653SRyan Zezeski|  |ipft_client0          |  |          | ||ipft_client_r0        | ||
37*c61a1653SRyan Zezeski|  |192.168.77.2          |<-+-- Wire --+->|192.168.77.1          | ||
38*c61a1653SRyan Zezeski|  |fd00:0:1:4d::2        |  |          | ||fd00:0:1:4d::1        | ||
39*c61a1653SRyan Zezeski|  +----------------------+  |          | |+----------------------+ ||
40*c61a1653SRyan Zezeski+----------------------------+          | +-------------------------+|
41*c61a1653SRyan Zezeski                                        |              ^             |
42*c61a1653SRyan Zezeski                                        |              |             |
43*c61a1653SRyan Zezeski                                        |              |             |
44*c61a1653SRyan Zezeski                                        |              |             |
45*c61a1653SRyan Zezeski                                        |              |             |
46*c61a1653SRyan Zezeski                                        |       IP     |             |
47*c61a1653SRyan Zezeski                                        |   forwarding |             |
48*c61a1653SRyan Zezeski                                        |              |             |
49*c61a1653SRyan Zezeski                                        |              |             |
50*c61a1653SRyan Zezeski                                        |              |             |
51*c61a1653SRyan Zezeski+----------------------------+          |              v             |
52*c61a1653SRyan Zezeski|server zone                 |          |+-------------------------+ |
53*c61a1653SRyan Zezeski|(ipft_server_nic0)          |          ||ipft_router_nic1         | |
54*c61a1653SRyan Zezeski|  +----------------------+  |          || +----------------------+| |
55*c61a1653SRyan Zezeski|  |ipft_server0          |  |          || |ipft_server_r0        || |
56*c61a1653SRyan Zezeski|  |VLAN 5                |  |   Wire   || |VLAN 5                || |
57*c61a1653SRyan Zezeski|  |192.168.88.2          |<-+----------++>|192.168.88.1          || |
58*c61a1653SRyan Zezeski|  |fd00:0:1:58::2        |  |          || |fd00:0:1:58::1        || |
59*c61a1653SRyan Zezeski|  +----------------------+  |          || +----------------------+| |
60*c61a1653SRyan Zezeski+----------------------------+          |+-------------------------+ |
61*c61a1653SRyan Zezeski                                        +----------------------------+
62*c61a1653SRyan Zezeski
63*c61a1653SRyan Zezeskimac-loopback
64*c61a1653SRyan Zezeski------------
65*c61a1653SRyan Zezeski
66*c61a1653SRyan ZezeskiIn this configuration we make sure that the packet travels from server
67*c61a1653SRyan Zezeskito router via mac-loopback.
68*c61a1653SRyan Zezeski
69*c61a1653SRyan Zezeski                                        +----------------------------+
70*c61a1653SRyan Zezeski+----------------------------+          |router zone                 |
71*c61a1653SRyan Zezeski|client zone                 |          | +-------------------------+|
72*c61a1653SRyan Zezeski|(ipft_nic0)                 |          | |ipft_nic1                ||
73*c61a1653SRyan Zezeski|  +----------------------+  |          | |+----------------------+ ||
74*c61a1653SRyan Zezeski|  |ipft_client0          |  |          | ||ipft_client_r0        | ||
75*c61a1653SRyan Zezeski|  |192.168.77.2          |<-+-- Wire --+->|192.168.77.1          | ||
76*c61a1653SRyan Zezeski|  |fd00:0:1:4d::2        |  |          | ||fd00:0:1:4d::1        | ||
77*c61a1653SRyan Zezeski|  +----------------------+  |          | |+----------------------+ ||
78*c61a1653SRyan Zezeski+----------------------------+          | +-------------------------+|
79*c61a1653SRyan Zezeski                                        |              ^             |
80*c61a1653SRyan Zezeski                                        |              |             |
81*c61a1653SRyan Zezeski                                        |              |             |
82*c61a1653SRyan Zezeski                                        |              |             |
83*c61a1653SRyan Zezeski                                        |              |             |
84*c61a1653SRyan Zezeski                                        |       IP     |             |
85*c61a1653SRyan Zezeski                                        |   forwarding |             |
86*c61a1653SRyan Zezeski                                        |              |             |
87*c61a1653SRyan Zezeski                                        |              |             |
88*c61a1653SRyan Zezeski                                        |              |             |
89*c61a1653SRyan Zezeski+----------------------------+          |              v             |
90*c61a1653SRyan Zezeski|server zone                 |          |+-------------------------+ |
91*c61a1653SRyan Zezeski|(ipft_nic1)                 |          ||ipft_nic1                | |
92*c61a1653SRyan Zezeski|  +----------------------+  |          || +----------------------+| |
93*c61a1653SRyan Zezeski|  |ipft_server0          |  |   MAC    || |ipft_server_r0        || |
94*c61a1653SRyan Zezeski|  |VLAN 5                |  | loopback || |VLAN 5                || |
95*c61a1653SRyan Zezeski|  |192.168.88.2          |<-+----------++>|192.168.88.1          || |
96*c61a1653SRyan Zezeski|  |fd00:0:1:58::2        |  |          || |fd00:0:1:58::1        || |
97*c61a1653SRyan Zezeski|  +----------------------+  |          || +----------------------+| |
98*c61a1653SRyan Zezeski+----------------------------+          |+-------------------------+ |
99*c61a1653SRyan Zezeski                                        +----------------------------+
100*c61a1653SRyan Zezeski
101*c61a1653SRyan ZezeskiRequirements
102*c61a1653SRyan Zezeski------------
103*c61a1653SRyan Zezeski
104*c61a1653SRyan Zezeski* The client and server zones must provide `/usr/bin/socat`. It would
105*c61a1653SRyan Zezeski  be nice to use netcat but our native version is missing features
106*c61a1653SRyan Zezeski  like connection timeout.
107*c61a1653SRyan Zezeski
108*c61a1653SRyan Zezeski* The user must both create and start the three required zones.
109*c61a1653SRyan Zezeski
110*c61a1653SRyan Zezeski* All three zones should be native zones.
111*c61a1653SRyan Zezeski
112*c61a1653SRyan Zezeski* You must edit the ip_forwarding.config file; providing it with the
113*c61a1653SRyan Zezeski  names of the zones you have created.
114*c61a1653SRyan Zezeski
115*c61a1653SRyan ZezeskiFiles
116*c61a1653SRyan Zezeski-----
117*c61a1653SRyan Zezeski
118*c61a1653SRyan Zezeskiip_fowarding
119*c61a1653SRyan Zezeski
120*c61a1653SRyan Zezeski	The main test script; it provides the logic for all the tests
121*c61a1653SRyan Zezeski	below. The different test variations are controlled by options
122*c61a1653SRyan Zezeski	and it takes the three zones as arguments. This script may be
123*c61a1653SRyan Zezeski	run by hand but it's easier to use ip_fwd_suite for that
124*c61a1653SRyan Zezeski	purpose.
125*c61a1653SRyan Zezeski
126*c61a1653SRyan Zezeskiip_fwd_suite
127*c61a1653SRyan Zezeski
128*c61a1653SRyan Zezeski	This script runs the various configurations of the IP
129*c61a1653SRyan Zezeski	forwarding test suite. You can run the entire suite or just a
130*c61a1653SRyan Zezeski	single test via the '-n' option. The "Test Matrix" section
131*c61a1653SRyan Zezeski	below gives an overview of all the tests in the suite.
132*c61a1653SRyan Zezeski
133*c61a1653SRyan Zezeskiip_fwd_XXX
134*c61a1653SRyan Zezeski
135*c61a1653SRyan Zezeski	These scripts are mostly here to work around the fact that the
136*c61a1653SRyan Zezeski	test-runner cannot pass arguments to individual tests. In
137*c61a1653SRyan Zezeski	order to avoid running everything as the "ip_fwd_suite" test,
138*c61a1653SRyan Zezeski	we create a file for each configuration. This gives individual
139*c61a1653SRyan Zezeski	reporting of each test and steers us clear of tripping the
140*c61a1653SRyan Zezeski	timeout. You can also run these scripts by hand like so:
141*c61a1653SRyan Zezeski
142*c61a1653SRyan Zezeski	NET_TESTS=/opt/net-tests /opt/net-tests/tests/forwarding/ip_fwd_001
143*c61a1653SRyan Zezeski
144*c61a1653SRyan Zezeskiconfig/ip_forwarding.config
145*c61a1653SRyan Zezeski
146*c61a1653SRyan Zezeski	This file must be modified to contain the names of the zones
147*c61a1653SRyan Zezeski	the user crated for running these tests.
148*c61a1653SRyan Zezeski
149*c61a1653SRyan ZezeskiTest Matrix
150*c61a1653SRyan Zezeski-----------
151*c61a1653SRyan Zezeski
152*c61a1653SRyan ZezeskiThis is a breakdown of all the tests in the IP forwarding test suite.
153*c61a1653SRyan ZezeskiIf a given offload is enabled or disable, it is done so for all
154*c61a1653SRyan Zezeskiinterfaces involved in the test.
155*c61a1653SRyan Zezeski
156*c61a1653SRyan ZezeskiNAME	Tx IP	Tx ULP		LSO	Rx IP	mac-loopback
157*c61a1653SRyan Zezeski001	off	none		off	off	no
158*c61a1653SRyan Zezeski002	on	partial		off	off	no
159*c61a1653SRyan Zezeski003	on	partial		on	off	no
160*c61a1653SRyan Zezeski004	on	fullv4		off	off	no
161*c61a1653SRyan Zezeski005	on	fullv4		on	off	no
162*c61a1653SRyan Zezeski006	off	none		off	on	no
163*c61a1653SRyan Zezeski007	on	partial		off	on	no
164*c61a1653SRyan Zezeski008	on	partial		on	on	no
165*c61a1653SRyan Zezeski009	on	fullv4		off	on	no
166*c61a1653SRyan Zezeski010	on	fullv4		on	on	no
167*c61a1653SRyan Zezeski
168*c61a1653SRyan Zezeski011	off	none		off	off	yes
169*c61a1653SRyan Zezeski012	on	partial		off	off	yes
170*c61a1653SRyan Zezeski013	on	partial		on	off	yes
171*c61a1653SRyan Zezeski014	on	fullv4		off	off	yes
172*c61a1653SRyan Zezeski015	on	fullv4		on	off	yes
173*c61a1653SRyan Zezeski016	off	none		off	on	yes
174*c61a1653SRyan Zezeski017	on	partial		off	on	yes
175*c61a1653SRyan Zezeski018	on	partial		on	on	yes
176*c61a1653SRyan Zezeski019	on	fullv4		off	on	yes
177*c61a1653SRyan Zezeski020	on	fullv4		on	on	yes
178