OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rtems-20020807/] [doc/] [networking/] [testing.t] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1026 ivang
@c
2
@c  Written by Eric Norum
3
@c
4
@c  COPYRIGHT (c) 1988-2002.
5
@c  On-Line Applications Research Corporation (OAR).
6
@c  All rights reserved.
7
@c
8
@c  testing.t,v 1.8 2002/01/17 21:47:45 joel Exp
9
@c
10
 
11
 
12
@chapter Testing the Driver
13
 
14
@section Preliminary Setup
15
 
16
The network used to test the driver should include at least:
17
 
18
@itemize @bullet
19
 
20
@item The hardware on which the driver is to run.
21
It makes testing much easier if you can run a debugger to control
22
the operation of the target machine.
23
 
24
@item An Ethernet network analyzer or a workstation with an
25
`Ethernet snoop' program such as @code{ethersnoop} or
26
@code{tcpdump}.
27
 
28
@item A workstation.
29
 
30
@end itemize
31
 
32
During early debug, you should consider putting the target, workstation,
33
and snooper on a small network by themselves.  This offers a few
34
advantages:
35
 
36
@itemize @bullet
37
 
38
@item There is less traffic to look at on the snooper and for the target
39
to process while bringing the driver up.
40
 
41
@item Any serious errors will impact only your small network not a building
42
or campus network.  You want to avoid causing any unnecessary problems.
43
 
44
@item Test traffic is easier to repeatably generate.
45
 
46
@item Performance measurements are not impacted by other systems on
47
the network.
48
 
49
@end itemize
50
 
51
@section Debug Output
52
 
53
There are a number of sources of debug output that can be enabled
54
to aid in tracing the behavior of the network stack.  The following
55
is a list of them:
56
 
57
@itemize @bullet
58
 
59
@item mbuf activity
60
 
61
There are commented out calls to @code{printf} in the file
62
@code{sys/mbuf.h} in the network stack code.  Uncommenting
63
these lines results in output when mbuf's are allocated
64
and freed.  This is very useful for finding memory leaks.
65
 
66
@item TX and RX queuing
67
 
68
There are commented out calls to @code{printf} in the file
69
@code{net/if.h} in the network stack code.  Uncommenting
70
these lines results in output when packets are placed
71
on or removed from one of the transmit or receive packet
72
queues.  These queues can be viewed as the boundary line
73
between a device driver and the network stack.  If the
74
network stack is enqueuing packets to be transmitted that
75
the device driver is not dequeuing, then that is indicative
76
of a problem in the transmit side of the device driver.
77
Conversely, if the device driver is enqueueing packets
78
as it receives them (via a call to @code{ether_input}) and
79
they are not being dequeued by the network stack,
80
then there is a problem.  This situation would likely indicate
81
that the network server task is not running.
82
 
83
@item TCP state transitions
84
 
85
In the unlikely event that one would actually want to see
86
TCP state transitions, the @code{TCPDEBUG} macro can be defined
87
in the file @code{opt_tcpdebug.h}.  This results in the routine
88
@code{tcp_trace()} being called by the network stack and
89
the state transitions logged into the @code{tcp_debug} data
90
structure.  If the variable @code{tcpconsdebug} in the file
91
@code{netinet/tcp_debug.c} is set to 1, then the state transitions
92
will also be printed to the console.
93
 
94
@end itemize
95
 
96
@section Driver basic operation
97
 
98
The network demonstration program @code{netdemo} may be used for these tests.
99
 
100
@itemize @bullet
101
 
102
@item Edit @code{networkconfig.h} to reflect the values for your network.
103
 
104
@item Start with @code{RTEMS_USE_BOOTP} not defined.
105
 
106
@item Edit @code{networkconfig.h} to configure the driver
107
with an
108
explicit Ethernet and Internet address and with reception of
109
broadcast packets disabled:
110
 
111
Verify that the program continues to run once the driver has been attached.
112
 
113
@item Issue a @samp{u} command to send UDP
114
packets to the `discard' port.
115
Verify that the packets appear on the network.
116
 
117
@item Issue a @samp{s} command to print the network and driver statistics.
118
 
119
@item On a workstation, add a static route to the target system.
120
 
121
@item On that same workstation try to `ping' the target system.
122
Verify that the ICMP echo request and reply packets appear on the net.
123
 
124
@item Remove the static route to the target system.
125
Modify @code{networkconfig.h} to attach the driver
126
with reception of broadcast packets enabled.
127
Try to `ping' the target system again.
128
Verify that ARP request/reply and ICMP echo request/reply packets appear
129
on the net.
130
 
131
@item Issue a @samp{t} command to send TCP
132
packets to the `discard' port.
133
Verify that the packets appear on the network.
134
 
135
@item Issue a @samp{s} command to print the network and driver statistics.
136
 
137
@item Verify that you can telnet to ports 24742
138
and 24743 on the target system from one or more
139
workstations on your network.
140
 
141
@end itemize
142
 
143
@section BOOTP/DHCP operation
144
 
145
Set up a BOOTP/DHCP server on the network.
146
Set define @code{RTEMS USE_BOOT} in @code{networkconfig.h}.
147
Run the @code{netdemo} test program.
148
Verify that the target system configures itself from the BOOTP/DHCP server and
149
that all the above tests succeed.
150
 
151
@section Stress Tests
152
 
153
Once the driver passes the tests described in the previous section it should
154
be subjected to conditions which exercise it more
155
thoroughly and which test its error handling routines.
156
 
157
@subsection Giant packets
158
 
159
@itemize @bullet
160
@item Recompile the driver with @code{MAXIMUM_FRAME_SIZE} set to
161
a smaller value, say 514.
162
 
163
@item `Ping' the driver from another workstation and verify
164
that frames larger than 514 bytes are correctly rejected.
165
 
166
@item Recompile the driver with @code{MAXIMUM_FRAME_SIZE} restored  to 1518.
167
@end itemize
168
 
169
@subsection Resource Exhaustion
170
 
171
@itemize @bullet
172
@item Edit  @code{networkconfig.h}
173
so that the driver is configured with just two receive and transmit descriptors.
174
 
175
@item Compile and run the @code{netdemo} program.
176
 
177
@item Verify that the program operates properly and that you can
178
still telnet to both the ports.
179
 
180
@item Display the driver statistics (Console `@code{s}' command or telnet
181
`control-G' character) and verify that:
182
 
183
@enumerate
184
 
185
@item The number of transmit interrupts is non-zero.
186
This indicates that all transmit descriptors have been in use at some time.
187
 
188
@item The number of missed packets is non-zero.
189
This indicates that all receive descriptors have been in use at some time.
190
 
191
@end enumerate
192
 
193
@end itemize
194
 
195
@subsection Cable Faults
196
 
197
@itemize @bullet
198
@item Run the @code{netdemo} program.
199
 
200
@item Issue a `@code{u}' console command to make the target machine transmit
201
a bunch of UDP packets.
202
 
203
@item While the packets are being transmitted, disconnect and reconnect the
204
network cable.
205
 
206
@item Display the network statistics and verify that the driver has
207
detected the loss of carrier.
208
 
209
@item Verify that you can still telnet to both ports on the target machine.
210
 
211
@end itemize
212
 
213
@subsection Throughput
214
 
215
Run the @code{ttcp} network benchmark program.
216
Transfer large amounts of data (100's of megabytes) to and from the target
217
system.
218
 
219
The procedure for testing throughput from a host to an RTEMS target
220
is as follows:
221
 
222
@enumerate
223
@item Download and start the ttcp program on the Target.
224
 
225
@item In response to the @code{ttcp} prompt, enter @code{-s -r}.  The
226
meaning of these flags is described in the @code{ttcp.1} manual page
227
found in the @code{ttcp_orig} subdirectory.
228
 
229
@item On the host run @code{ttcp -s -t <
230
the Target here>>}
231
 
232
@end enumerate
233
 
234
 
235
The procedure for testing throughput from an RTEMS target
236
to a Host is as follows:
237
 
238
@enumerate
239
@item On the host run @code{ttcp -s -r}.
240
 
241
@item Download and start the ttcp program on the Target.
242
 
243
@item In response to the @code{ttcp} prompt, enter @code{-s -t <
244
the hostname or IP address of the Target here>>}.  You need to type the
245
IP address of the host unless your Target is talking to your Domain Name
246
Server.
247
 
248
@end enumerate
249
 
250
To change the number of buffers, the buffer size, etc. you just add the
251
extra flags to the @code{-t} machine as specified in the @code{ttcp.1}
252
manual page found in the @code{ttcp_orig} subdirectory.
253
 
254
 
255
 
256
 
257
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.