tun/tap是内核虚拟出来的用户网络设备,一般是给虚拟机使用,作为virtio的后端实现的重要接口。设备的接口在/proc/net/tun,一般起虚拟机的时候hypervisor 会自动实现,只要在参数中添加网络设备的相关参数。以qemu起虚拟机为例:
qemu-system-x86_64 -netdev tap,id=tap0 -device netdev=tap0 ....
netdev 指明了使用tap设备。tap设备还有很多参数,其中有一项是vnet_hdr,默认这一项是打开的,这一项的意思是是的设备在收发大数据报的时候只进行部分checksums,于是就会大大提高数据吞吐量。