FreeBSD Manual Pages
TLEM(1) General Commands Manual TLEM(1) NAME tlem -- high speed, netmap based link emulator (similar to dummynet) SYNOPSIS tlem [-i port] [-B bandwidth] [-D delay] [-L loss] [-R reordering] [-Q queue-size] [-C cpu-placement] [-G gateway] [-b batch-size] [-w wait-link] [-s session-name] [-a] [-v] [-q] [-r] [-M max-bw,max-delay,max-hold] DESCRIPTION tlem implements a high speed bidirectional link emulator between netmap ports, capable of supporting rates up to 20 Mpps / 40 Gbit in each direc- tion. tlem use two threads per direction to achieve high speed while main- taining packet ordering, and can enforce queue size and rate limitation, introduce deterministic or random delays and packet losses, in a way simi- lar to the popular dummynet(4) emulator. tlem differs from dummynet in the following ways: * tlem only connects netmap ports, whereas dummynet sits between the IP layer and the network interface; * tlem does not provide packet filtering, whereas dummynet selects traf- fic using the ipfw firewall; * tlem is 20-40 times faster than the in-kernel dummynet; * tlem runs entirely in userspace, hence it is much easier to modify and extend. Command line options are listed below. The -B, -D, -L, -Q options can omit- ted (in which case default values are used), specified once (in which case they affect both directions), or twice (once per direction). -i port Name of the netmap port. It must be supplied exactly twice to iden- tify the two ports that must be interconnected. Any netmap port type (physical interface, VALE switch, pipe, monitor port...) can be used. -B bps | constant,bps | ether,bps Desired bandwidth, default to 0 (which means infinite) if not spec- ified. bps is a floating point number optionally follow by a char- acter (k, K, m, M, g, G) that multiplies the value by 10^3, 10^6 and 10^9 respectively. constant (can be omitted) means that the bandwidth will be computed with reference to the actual packet size (excluding CRC and framing). ether indicates that the ethernet framing (160 bits) and CRC (32 bits) will be included in the compu- tation of the packet size. -D dt | constant,dt | uniform,dmin,dmax | exp,dmin,davg Additional delay in transmission, with constant, uniform or expo- nential distribution, defaults to 0. dt, dmin, dmax, avg are times expressed as floating point numbers optionally followed by a char- acter (s, m, u, n) to indicate seconds, milliseconds, microseconds, nanoseconds. The delay is adjusted so that there is never packet reordering. -L x | plr,x | ber,x Optional packet or bit error rate, defaults to 0. Simulates packet or bit errors, causing offending packets to be dropped. x is a floating point number indicating the packet or bit error rate. -R const,p,t Optional packet reordering, defaults to none. With probability p incoming packets are hold for the given t amount of time. The prob- ability and time are expressed as in the loss and delay arguments. -Q size Queue size, size is a number optionally followed by k, K, m, M, g, G to specify the queue size in bytes, Kilobytes, Megabytes, Giga- bytes. The queue is used to buffer incoming packets before band- width limitations are applied. -C a[,b[,c,d]] Indicates the cores on which the four threads should be placed. One, two or four values can be specified. -G ipv4-address Indicates the optional default gateways to be used in route-mode. -w wait-link indicates the number of seconds to wait before transmitting. It defaults to 2, and may be useful when talking to physical ports to let link negotiation complete before starting transmission. -s session-file Enables client/server mode. The first instance of tlem that suc- cessfully creates and/or locks the session-file becomes the server. Other tlem instances that use the same session-file do not start new emulations, but rather send their parameters to the server. This feature can be used to dynamically change the emulation para- meters of a running emulation. Please note that the internal buffers are not re-allocated, and therefore the dynamic emulated delay and bandwidth can never exceed the values used initially by the server. Alternatively, the -M option can be used when starting the server to set the maximum bandwidth, delay and hold-time that can be accepted in client requests. -a Only useful in client/server mode. Ask the server to shutdown and wait until it terminates. -v Increase verbosity. -q Decrease verbosity. -b batch-size Maximum batch size to use during transmissions. tlem normally transmits packets one at a time, but it may use larger batches, up to the value specified with this option, when running at high rates. -r Enable route-mode. -M max-bw,max-delay,max-hold Set the maximum bandwidth, delay and packet-reordering hold-time. The parameters are only meaningful for the server process when op- erating in client/server mode (see the -s option). OPERATION tlem creates two threads per direction, binds them to specific cores, and uses them to read and write to the netmap ports. A fifth thread is used to periodically display the amount of traffic flowing in each of the two di- rections. The input thread reads from a netmap port, and for each packet computes the time when it should exit the transmit queue according to the emulated band- width; drops the packet if the queue is full; further applies random drops according to the loss probability specified; and finally computes the transmit time applying the additional delay. Packets annotated with their transmit time are copied in a large in-memory buffer. The output thread spins on the buffer, doing short sleeps, until packets reach their transmit time. ROUTE-MODE In route-mode tlem operates as an IPv4 router between the two subnets at its ends, replying to and sending the necessary ARP messages and updating the destination MAC addresses. The IP addresses and subnets are obtained from the ports, so this mode cannot be used with software-only netmap ports like ephemeral VALE ports and pipes. There are some limitations: unresolved destinations are sent as broadcasts until resolution; packets destined to the same subnet as their incoming port are dropped; TTL is not decremented. Each subnet may also optionally have a default gateway: for each direction, incoming packets not destined to either of the two known subnets are sent to the default gateway of the output port, if specified, and dropped otherwise. PERFORMANCE We have measured speeds in excess of 20 Mpps and 40 Gbit/s per direction on a modern i7 CPU with 4 cores. The accuracy in delays is in the order of 30-50us provided that C states higher than C1 are disabled, and the CPU clock is set to the maximum speed. Performance depends heavily on memory speed and suitable NICs with native netmap drivers. See the paper below for more details. SEE ALSO http://info.iet.unipi.it/~luigi/netmap/ Luigi Rizzo, Giuseppe Lettieri, TLEM, very high speed link emulation, Asi- aBSDCon 2016, Tokyo, March 2016 http://info.iet.unipi.it/~luigi/re- search.html AUTHORS tlem has been written by Luigi Rizzo at the Universita` di Pisa, Italy. Route mode and client/server operation has been added by Giuseppe Lettieri at the Univerista` di Pisa, Italy. This work has received funding from the European Union's Horizon 2020 re- search and innovation programme 2014-2018 under grant agreement No. 644866, and from East Cost Datacom Inc., Rockledge, FL, USA. FreeBSD ports 15.quarterly February 13, 2020 TLEM(1)
NAME | SYNOPSIS | DESCRIPTION | OPERATION | ROUTE-MODE | PERFORMANCE | SEE ALSO | AUTHORS
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=tlem&sektion=8&manpath=FreeBSD+Ports+15.1.quarterly>
