1# A plugin to provide turbotap driver
3This repository provides an Experimental work, a plugin to use tap
4interfaces using socket API system calls "sendmmsg" or "recvmmsg"
5which allows to send/receive multiple packets using one single system
6call. It is a replacement for tapcli driver in VPP, which uses one
7system call per packet. Hence save the time for 'context switching'
8between userspace and kernel space.
10The linux kernel doesn't support socket API for tap interfaces. Therefore,
11a separate turbotap 'LINUX KERNEL MODULE' has been implemented to support
12send and receive socket system calls.
14More information can be found on the wiki page:
17Source code, build and install turbotap kernel module:
22The turbotap driver is implemented as a plugin to send/receive packets from
23kernel tap interfaces. To use it, you must BUILD and INSTALL turbotap kernel
24module at first.
25Then you must build plugin and put it in VPPs runtime plugin directory.
26The plugin depends on vpp. This README assumes familiarity with the build
27environment for both projects.
29Build vpp and turbotap both at once by creating symbolic links in the
30top level vpp directory to the turbotap directory as well as
31symbolic links to the respective .mk files in 'build-data/packages'.
34$ cd /git/vpp
35$ ln -sf /git/vppsb/turbotap
36$ ln -sf ../../turbotap/turbotap.mk build-data/packages/
39Now build everything and create a link to the plugin in vpp's plugin path.
42$ cd build-root
44$ make V=0 PLATFORM=vpp TAG=vpp_debug turbotap-install
45$ ln -sf /git/vpp/build-root/install-vpp_debug-native/turbotap/lib64/turbotap.so.0.0.0 \
49Once VPP is running and the plugin is loaded, turbotap interfaces can be created or deleted.
52$ vppctl turbotap connect turbotap0
53$ vppctl turbotap delete turbotap0
56The host operating system should see a turbotap named 'turbotap0'.
60### Current status
62Currently the turbotap driver plugin uses socket API system calls. Most of the
63code is borrowed from tapcli driver in VPP. One can extend it to multi-queue driver.
67The objective of this project is to continue to build out better integration
68with host operating system and for providing a basis to enable completely
69or partially unmodified applications to take advantage of a fast datapath.
71### Main contributors
73Mohsin KAZMI - LF-ID:sykazmi