Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
WIREFILTER(1)		    General Commands Manual		 WIREFILTER(1)

       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] [--pid-
       file 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 di-

       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 defi-
	      tions 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  con-
	      verges to	the value loss.

       -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	speci-
	      fied  as two numbers with	a + in between,	the first is the stan-
	      dard 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 distri-
	      bution (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.  In-
	      put  is  blocked for the tramission time of the packet, thus the
	      sender is	prevented from sending too fast.

       -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	inter-
	      active management	session	on console (stdin/stdout).

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

	      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 pid.

       --blink socket
	      wirefilter sends a log message to	the specified PF_UNIX/DATAGRAM
	      socket for each packet sent. Each	packet has the format: id  di-
	      rection 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  tranis-
       tions  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 unreadable.

       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 pos-
	      sible to resize the Markov chain at run-time.  New nodes are un-
	      reachable	 and  do not have any edge to other states (i.e.  each
	      new node has a loopback edge to the node itself with 100%	proba-
	      bility).	 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  mi-
	      croseconds  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 it-
	      self) 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  parame-
	      ter  is  omitted it shows	the status and information on the cur-
	      rent 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
       ("Verband der Elektrotechnik, Elektronik	und Informationstechnik"  i.e.
       the  German "Association	for Electrical,	Electronic & Information Tech-

       vde_switch(1), vdeq(1).	dpipe(1).  unixterm(1).

       VDE is a	project	by Renzo Davoli	<>

Virtual	Distributed Ethernet   December	6, 2006			 WIREFILTER(1)


Want to link to this manual page? Use this URL:

home | help