Skip to content

malloc-free/fastuserprotocol

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Version 0.1.24 of TestBed, authored by Michael Holmwood

TestBed carries out tests on 5 different protocols: TCP, UDP, UDT, uTP and DCCP.
The implementations for TCP, UDP and DCCP are those found in the Linux kernel. 
The author for the UDT lib is Yunhong Gu, and is provided in this project as
a shared library. The uTP lib is provided by BitTorrent, Inc. The licences for
each can be found in the lib directory.

Machine Requirements:

Large file sizes will require that much free memory for the tests to run 
properly (reading from swap will affect the results somewhat). Also requirded
will be disk space to hold this file (as each file of a particular size is
generated once, and saved to disk, to be read later if the same sized file
is used for testing).

Dependencies:

The TestBed does have a couple of dependencies, one of which is going to be
redundant soon, and removed.

doxygen:

To create the documentation, doxygen needs to be installed. On debian just run: 
apt-get install doxygen.

cccc:

To create the metrics file, the program cccc is required. This has not been
included in the 'all' target. It generates a file called 'metrics.html' and 
a directory called .cccc. Information on cccc can be found at:
cccc.sourceforge.net.

Building:

make or make all creates the executable (TestBed), shared library (libtb.so.1.0) and the
documentation (doc/). make executable and make shared will make the executable and
shared library separately. make doxygen will create the documentation. Install just
appends the location of the shared library to your LD_LIBRARY_PATH.

Running the binary:

To run a server, use:
TestBed server [bind_address] [bind_port] [protocol: tcp | udp | utp | udt | dccp] [pack_size]

To run a client, use:
TestBed client [remote_address] [remote_port] [protocol: tcp | udp | utp | udt | dccp] [pack_size] size [file_size]

bind_address/remote_address: The address to bind(server)/connect(client) to.
bind_port/remote_port: The port to bind(server)/connect(client) to.
protocol: The protocol to use for testing.
pack_size: The maximum size of the buffer used to copy data to the protocol
buffer, in bytes. If this is 0, it defaults to 1402 bytes.
file_size: The size of the randomly generated file to create/load to use in
tests. If a file of that size does not exist on disk, it is generated. These
files appear in the directory as .ran files.

When used as a shared library, more options become available. These will be 
available from the commandline in a future release.

Using TestBed as a shared library:

The struct tb_test_params_t struct can be used to create a tb_listener_t
struct, if passed into the tb_create_endpoint function. More information on
this struct is contained in the documentation (doc dir). tb_ex_get_stats
can be used for stat collection. This information is collected every 100ms, 
and blocks until new information is available. Outdated information is 
overwritten. Future revisions will use a linked list to store unread
information. This information is provided in a struct called tb_prot_stats_t, 
and detailed info on this is in the documentation.

A listener struct created in this fashion is *not* destroyed on completion of
a test, so it is up to an external application to call tb_destroy_listener
to free up memory for this struct. This could potentially be a real problem,
as this struct contains the data used in the test, and for large files (read:
1GB) memory will disappear very quickly. We keep the data, as it may prove
useful for external applications.

About

C developed program to test the performance of different network protocols.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published