OnWorks favicon

wirefilter - Online in the Cloud

Run wirefilter in OnWorks free hosting provider over Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator

This is the command wirefilter that can be run in the OnWorks free hosting provider using one of our multiple free online workstations such as Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator



wirefilter - Wire packet filter for Virtual Distributed Ethernet



[-f rcfile] [-l loss] [-l lostburst] [-d delay] [-D dup] [-b bandwidth] [-s
interface_speed] [-c channel_bufsize] [-n noise_factor] [-m mtu_size] [-M mgmt socket] [-v
vde_plug1:vde_plug2] [--daemon] [--pidfile pidfile_path] [--blink blink] [--blinkid
blink_identifier] [-N]


A wirefilter is able to emulate delays and packet loss on virtual wires. e.g.:

dpipe vde_plug /tmp/s1 = wirefilter -l 10 = vde_plug /tmp/s2

creates a wire between two vde_switches (with sockets /tmp/s1 and /tmp/s2 respectively).
This cable looses 10% of the packets in each direction.

The same cable can be created using:

wirefilter -v /tmp/s1:/tmp/s2 -l 10


-f rcfile
use a startup configuration file. It is useful for complex defitions such as those
for the Markov mode (see below). The startup configuration file has the same
syntax of the management interface, in other word it is a script of management
commands executed before the first packet is forwarded.

-l loss
percentage of loss as a floating point number. It is possible to specify different
loss percentage for the two channels: LR20.5 means 20.5% of packet flowing left to
right are lost, RL10 means 10% from right to left.

-L lostburst
when this is not zero, wirefilter uses the Gilbert model for bursty errors. This
is the mean length of lost packet bursts. (it is a two state Markov chain: the
probability to exit from the faulty state is 1/lostburst, the probability to enter
the faulty state is loss/(lostburst-(1-loss)). The loss rate converges to the value

-d delay
Extra delay (in milliseconds). This delay is added to the real communication delay.
Packets are temporarily stored and resent after the delay. It is possible to
specify different values for LR and RL like in the previous option. When the delay
is specified as two numbers with a + in between, the first is the standard delay
and the second is a random variation. 1000+500 means that the delay can be
randomly chosen between half second and 1.5 seconds. It is possible to add 'U' or
'N' at the end. 1000+500U means that the dealys are uniformly distributed,
1000+500N means that the delays follow a Gaussian normal distribution (more than
98% of the values are inside the limits).

-D dup percentage of dup packet. It has the same syntax of -l. Do not use dup factor 100%
because it means that each packet is sent infinite times.

-b bandwidth
Channel bandwidth in Bytes/sec. It has the same syntax of -d. It is also possible
to use suffixes K,M,G to abbreviate 2^10, 2^20, 2^30. 128K means 128KBytes/sec.
128+64K means 64i to 196KBytes/sec. Sender is not prevented from sending packets,
delivery is delayed to limit the bandwidth to the desired value. (Like a bottleneck
along the path) U and N after the values (e.g. 128+64KN) set the statistic
distribution to use (uniform or normal).

-s speed
Interface speed in Bytes/sec. It has the same syntax of -b. Input is blocked for
the tramission time of the packet, thus the sender is prevented from sending too

-c channel_bufsize
Channel buffer size (in Bytes): maximum size of the packet queue. Exceeding packets
are discarded.

-n noise factor
Number of bits damaged/one megabyte.

-m mtu size
Packets longer than mtu_size are discarded.

-N nofifo. with -N packets can be reordered.

-M mgmt socket
the unix socket where the parameters (loss percentage, delay etc) can be checked
and changed runtime. unixterm(1) can be used as a remote terminal for wirefilter.

-v vde_plug1:vde_plug2
If this option is used, the two local vde_plugs (vde_plug1 and vde_plug2) will be
connected each other instead of stdin/stdout, using the libvdeplug libraries. This
option activates an interactive management session on console (stdin/stdout).

--mgmtmode mode
this option sets the access mode of the mgmt socket. The command syntax is quite
simple. help provides the list of commands. It is possible to load a script file
using the load management command.

wirefilter becomes a daemon

--pidfile pathnamefP
wirefilter saves its pid into the file.

--blinkid name
This option defines the id sent for each packet to the blink server (see the
--blink option below). The stardard identifier for a wirefilter is the process

--blink socket
wirefilter sends a log message to the specified PF_UNIX/DATAGRAM socket for each
packet sent. Each packet has the format: id direction length. e.g:

6768 LR 44
6768 LR 44
6768 RL 100
6768 LR 100
6768 LR 44

Markov mode

wirefilter provides also a more complex set of parameters using a Markov chain to emulate
different states of the link and the tranistions between states. Each state is represented
by a node. Markov chain parameters can be set with management commands or rc files only.
In fact, due to the large number of parameters the command line would have been

markov-numnodes n
defines the number of different states. All the parameters of the connection can be
defined node by node. Nodes are numbered starting from zero (to n-1). e.g.:

delay 100+10N[4]
loss 10[2]

these command define a delay of 90-110 ms (normal distribution) for the node number
4 and a 10 loss for the node 2. It is possible to resize the Markov chain at run-
time. New nodes are unreachable and do not have any edge to other states (i.e.
each new node has a loopback edge to the node itself with 100% probability). When
reducing the number of nodes, the weight of the edges towards deleted nodes is
added to the loopback edge. When the current node of the emulation is deleted, node
0 becomes the current node. (The emulation always starts from node 0).

markov-time ms
time period (ms) for the markov chain computation. Each ms microseconds a random
number generator decides which is the next state (default value=100ms).

markov-name n,name
assign a name to a node of the markov chain.

markov-setnode n
manually set the current node to the node n.

setedge n1,n2,w
define an edge between n1 and n2; w is the weight (probability percentage) of the
edge. The loopback edge (from a node to itself) is always computed as 100% minus
the sum of the weights of outgoing edges.

showedges [ n ]
list the edges from node n (or from the current node when the command has no
parameters). Null weight edges are omitted.

show the current Markov state.

showinfo [ n ]
show status and information on state (node) n. If the parameter is omitted it
shows the status and information on the current state.

markov-debug [ n ]
set the debug level for the current management connection. In the actual
implementation when n is greater than zero each change of markov node causes the
output of a debug trace. Debug tracing get disabled when n is zero or the
parameter is missing.


Virtual Distributed Ethernet is not related in any way with www.vde.com ("Verband der
Elektrotechnik, Elektronik und Informationstechnik" i.e. the German "Association for
Electrical, Electronic & Information Technologies").

Use wirefilter online using onworks.net services

Free Servers & Workstations

Download Windows & Linux apps

Linux commands