[netperf-talk] Bidirectional tests

Rick Jones rick.jones2 at hp.com
Tue May 9 09:26:03 PDT 2006


fonesurj at verizon.net wrote:
> So Netperf looks interesting, but I need some clarification on a post
> to this e-mail list you made concerning bidirectional tests.
> 
> ===============
> However, if one 
> configures netperf with --enable-burst, and are careful about socket buffer 
> sizes relative to the request/response sizes and the burst size, one can achieve 
> the same thing.
> ================
> 
> 1. Can you elaborate on the relationship between the socket size, the
> R/R sizes, and the burst size? Like "socket_size >= burst_size *
> RR_size" or something to that effect.

While it is not enforced, if you --enable-burst, you should make sure 
that the SO_SNDBUF size is at least burst_size * rr_size bytes to avoid 
a deadlock.  The netperf TCP_RR test has no "select()/poll()" call in it 
so you must make sure that the send() calls never block so it can loop 
around to the recv() calls.

> 2. The R/R sizes are the size of the TCP message (which is then
> subject to being broken up at L3)?

The R/R sizes are the R/R sizes.  Depending on their size, and the TCP 
MSS, and the setting of TCP_NODELAY, and other stack-specific 
(mis)behaviours, a request/response message is either in a TCP segment 
by itself (when < MSS), combined with another request/response in that 
TCP segment, or spans multiple TCP segments.  It really all depends.

And since TCP tries quite hard to avoid fragmentation, if the 
request/response is larger than the MSS, _TCP_ will segment it (ie break 
it up an L4, ass-u-me-ing I've interpreted your use of L2, L3 and L4 
correctly and you aren't asking about networking at a Lagrange point :)

> 
> 3. The burst size is the number of packets (L3) or messages (L4)?

It is the number of messages - L[5,6,7] - application layer. L4 in the 
context of TCP are not "messages" but segments.  It would be bad to use 
the term "message" in the context of TCP as TCP does not preserve 
message boundaries.  L4 in the context of UDP is datagrams.  L3 in the 
context of IP is also datagrams, L2 in the context of ethernet at least 
is frames.  They are all specific instances of "packets" :)

hth,

rick


More information about the netperf-talk mailing list