TAP (Network Bridging)
In computer networking, TUN and TAP are virtual network kernel drivers. They implement network devices that are supported entirely in software, which is different from ordinary network devices that are backed up by hardware network adapters.
TAP (as in network tap) simulates an Ethernet device and it operates with layer 2 packets such as Ethernet frames. TUN (as in network TUNnel) simulates a network layer device and it operates with layer 3 packets such as IP packets. TAP is used to create a network bridge, while TUN is used with routing.
Packets sent by an operating syst/sbin/modprobe tunem via a TUN/TAP device are delivered to a user-space program that attaches itself to the device. A user-space program may also pass packets into a TUN/TAP device. In this case TUN/TAP device delivers (or "injects") these packets to the operating system network stack thus emulating their reception from an external source.
TUN is mostly used for OpenVPN, VTun.
Where as TAP is used for bridging Virtual Machines to the host machine.
We have one more concept that is BRIDGE an this is used if you want to put a number of Virtual Machines into a 1 single subnet.
Else with tap devices you can not do that.
Configuring Network Bridges.
To configure tap you need to install uml-utilities, to do this ->
* apt-get install uml-utilities
This will give you tunctl command, which is further used to build tap interface.
To build tap interface run ->
This will give you (Set 'tap0' persistent and owned by uid 0).
You can see this interface with <ifconfig -a> command.
Now when the interface is ready give it an ip, make it up and link it to your Virtual Machine.
* ifconfig tap0 192.168.1.1
The ip which you assign to tap0 should be of different subnet as your host network.
Just remember doing this will not solve your full problem of networking in Virtual Machines, to make it fully up and running it requires routing, iptables and nating(NAT) to be configured properly.
You can expect these things to be covered in some of my later posts.
Bridge comes into picture when you have more than 1 Virtual Machine.
It helps to get all the Virtual Machines in 1 single network which is not possible with TAP alone.
With this one can also get the Virtual Machines into the same network as the host.
To configure Bridge you need to install bridge-utils, to do this ->
* apt-get install bridge-utils
This will give you brctl command, which is further used to build tap interface.
Running brctl alone will give a list of option which can be used with this command.
But for now run ->
* brctl addbr br0
This will add a bridging interface named br0.Now add an ip to it.
* ifconfig br0 192.168.1.1
Here comes a time to select the scenario that either you need a different network or the same net work for VM(Virtual Machines).
If you need the network to be same then.
* brctl addif br0 eth0
* brctl addif br0 tap0
* ifconfig eth0 0.0.0.0
* ifconfig tap0 0.0.0.0
This will add eth0 and tap0 interfaces to bridge br0.
And if their is no need of the same network then.
* brctl addif br0 tap0
This will add tap0 interface to bridge br0.
In this case to make network live and working configure routing, iptables and nating(NAT) on the host machine.
Hope it helps.