tcp_echo - data forwarding program for performance test
tcp_echo is one
part of the standard performance test we use. The other parts are
host programs tcp_source and tcp_sink.
To make these (under your HOST system) cd to the tests source directory in
the eCos repository and type “make -f make.host” -
this should build tcp_source and tcp_sink.
The host program “tcp_source” sends
data to the target. On the target, “tcp_echo” sends
it onwards to “tcp_sink” running
on your host. So the target must receive and send on all the data that tcp_source sends
it; the time taken for this is measured and the data rate is calculated.
To invoke the test, first start tcp_echo on
the target board and wait for it to become quiescent - it will report
work to calibrate a CPU load which can be used to simulate real
operating conditions for the stack.
Then on your host machine, in one terminal window, invoke tcp_sink giving
it the IP address (or hostname) of one interface of the target board.
For example “tcp_sink 10.130.39.66”.
tcp_echo on the target
will print something like “SINK connection
from 10.130.39.13:1143” when tcp_sink is
correctly invoked.
Next, in another host terminal window, invoke tcp_source,
giving it the IP address (or hostname) of an interface of the target
board, and optionally a background load to apply to the target while
the test runs. For example, “tcp_source
194.130.39.66” to run the test with no
additional target CPU load, or “tcp_source
194.130.39.66 85” to load it up to 85% used.
The target load must be a multiple of 5. tcp_echo on
the target will print something like “SOURCE
connection from 194.130.39.13:1144” when
tcp_source is correctly invoked.
You can connect tcp_sink to one target interface
and tcp_source to another, or both to the same interface.
Similarly, you can run tcp_sink and tcp_source on
the same host machine or different ones. TCP/IP and ARP
look after them finding one another, as intended.
These tests talk to each other to measure network performance.
They can each run on either a test target or a host computer
given some customization to your local environment. As provided, nc_test_slave must
run on the test target, and nc_test_master must
be run on a host computer, and be given the test target's
IP address or hostname.
The tests print network performance for various packet sizes
over UDP and TCP, versus various additional CPU loads on the target.
The programs
nc6_test_slavenc6_test_master
are additional forms which support both IPv4 and IPv6 addressing.