Scroll to navigation

VDE_PLUG(1) General Commands Manual VDE_PLUG(1)


vde_plug - Virtual Distributed Ethernet plug (two plugs creates a vde cable)


vde_plug [ OPTIONS ] [ vde_plug_url ]
vde_plug [ OPTIONS ] vde_plug_url vde_plug_url
vde_plug [ OPTIONS ] = command [ args ]
vde_plug [ OPTIONS ] vde_plug_url = command [ args ]


A vde_plug is a plug to be connected into a VDE network.

VDE network sockets are named using the vde_plug_url syntax, i.e. module://specific_address. e.g. vde:///home/user/myswitch or vxvde:// The default module is libvdeplug_vde(1) (connection to a vde_switch(1)) and can be omitted. e.g. /home/user/myswitch means vde:///home/user/myswitch

vde_plug can have zero, one or two vde_plug_url arguments. In case of zero or one argument the network communication is converted in a byte stream. Packets from the VDE network are sent to stdout and bytes from stdin are converted into packets and injected in the VDE network. When a vde_plug_url is omitted or it is an empty argument ('') vde_plug tries to connect to a default network (defined by the user in $HOME/.vde2/default.switch otherwise vde:///run/vde.ctl or vde:///tmp/vde.ctl).

This tool has been designed to be used together with dpipe (1) to interconnect a second vde_plug to another switch, working as a virtual ethernet crossed cable between the two switches.

The command

dpipe vde_plug = vde_plug vde:///tmp/vde2.ctl
connects two local switches: the former is using the standard control socket /tmp/vde.ctl (or /var/run/vde.ctl) while the latter is using /tmp/vde2.ctl.

vde_plug creates a virtual cable between to VDE networks when two vde_plug_url arguments are present in the command line. The previous command is equivalent to:

vde_plug /tmp/vde.ctl /tmp/vde2.ctl

The following example connects a vxvde network to a tap interfave

The command

dpipe vde_plug = ssh vde_plug
connects two remote switches. If for example the two vde_switches run as daemon and they are connected to tap interfaces a level 2 encrypted tunnel is established.

While dpipe supports more complex vitrual network structures (e.g. including wirefilter(1) to emulate network conditions) vde_plug has been designed to provide simple syntax options to implement the most common virtual network scenarios. It is possible to use an equal sign (=) followed by a command and its optional arguments in place of the second vde_plug_url. In this case the packets from/to the network are converted into a bidirectional byte stream provided as stdin and stdout to the command. The previous command have the same effect of:

vde_plug = ssh vde_plug
(the first vde_plug_url is omitted).

This example:

vde_plug vxvde:// = ssh vde_plug tap://remotetap
connects a vxvde network to a tap interface of a remote host.

vde_plug can also be established as a login shell for users. The following command works as in the previous example

vde_plug = ssh vde_plug
where vdeuser is the user with vde_plug as standard shell. All the remote accesses are logged by syslog at the beginning and at the end of each session and the IP address used are logged if vdeuser belongs to the vdeplug_iplog group. Attempts to login without the command vde_plug at the end or to run on the remote host other commands but vde_plug are blocked and the violation is logged by syslog.


run as a daemon.
--pidfile PIDFILE
write the process id to the file PIDFILE
log START/STOP of vde_plug on syslog
log START/STOP of vde_plug and the IP addresses of hosts seen on the stream (or on the second vde_plug_url) on syslog.
--port "portnum"
Obsolete option, use the syntax of the libvdeplug_vde module instead, add the port number in square brackets suffix (e.g. vde://tmp/myswitch[10]). It is possible to decide which port of the switch to use. When this option is not specified the switch assigns the first available unused port (if any). It is possible to connect several cables in the same switch port: in this way all this cables work concurrently. It means that packet can result as duplicate but no ARP table loops are generated. Is useful when vde is used for mobility. Several physical interfaces can be used at a time during handoffs to prevent hichups in connectivity. log START/STOP of vde_plug on syslog
-g group
--group group
group ownership of the communication socket. For security when more want to share a switch it is better to use a unix group to own the comm sockets so that the network traffic cannot be sniffed.
-m octal-mode
--mod octal-mode
octal chmod like permissions for the comm sockets
-G -M
--port2 --group2 --mod2
These options, valid in the syntax with two vde_plug_urls, have the the same meaning of -p -g -m. The uppercase options or the long options with a trailing 2 refer to the second vde_plug_url.
--descr DESCR
set the description of this connection to DESCR (e.g. port/print command on a vde_switch shows this description).


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 Technologies").


vde_switch(1), vdeq(1), dpipe(1), libvdeplug_p2p.1, libvdeplug_udp.1, libvdeplug_vxlan.1, libvdeplug_tap.1, libvdeplug_vde.1, libvdeplug_vxvde.1.


VDE is a project by Renzo Davoli <>
August 23, 2016 Virtual Distributed Ethernet