README.md revision 061c542d
1# A plugin to help accelerate IPv4 routing
2
3This repository provides a plugin to hook up data plane interfaces, via
4tap interfaces, to a host operating system. The host operating system
5can run a route daemon referencing the tap interface(s) as if they were
6the data plane interfaces. IPv4 packet forwarding decisions are taken
7in the data path, while control traffic is sent to and handled by the host.
8
9More information can be found on the wiki page:
10- http://wiki.fd.io/view/VPP_Sandbox/router
11
12## Build/Install
13
14The router is implemented as a plugin to inject, e.g. arp, icmp4, traffic
15from data plane devices. To use it, you must build the plugin and put it
16in VPPs runtime plugin directory. The plugin depends on vpp and the netlink
17repository from the vppsb project. This README assumes familiarity with the
18build environment for both projects.
19
20Build vpp, netlink, and router all at once by creating symbolic links in the
21top level vpp directory to the netlink and router directories as well as
22symbolic links to the respective .mk files in 'build-data/packages'.
23
24```
25$ cd /git/vpp
26$ ln -sf /git/vppsb/netlink
27$ ln -sf /git/vppsb/router
28$ ln -sf ../../netlink/netlink.mk build-data/packages/
29$ ln -sf ../../router/router.mk build-data/packages/
30```
31
32Now build everything and create a link to the plugin in vpp's plugin path.
33
34```
35$ cd build-root
36$ ./bootstrap.sh
37$ make V=0 PLATFORM=vpp TAG=vpp_debug router-install
38$ ln -sf /git/vpp/build-root/install-vpp_debug-native/router/lib64/router.so.0.0.0 \
39         /usr/lib/vpp_plugins/
40```
41
42NOTE: The 'make' command above may fail twice when building netlink. If an
43error occurs, retry the make command two more times.
44
45Once VPP is running and the plugin is loaded, data plane interfaces can
46be tapped.
47
48```
49$ vppctl tap inject arp,icmp4 from TenGigabitEthernet2/0/0 as vpp0
50```
51
52The host operating system should see a tap named 'vpp0' with the same hardware
53address as 'TenGigabitEthernet2/0/0'. Adding an IPv4 interface address to 'vpp0'
54should cause the address to be added to the data plane interface as well. If
55the address is a network address, a route should be added to the data
56plane's default fib.
57
58## Administrative
59
60### Current status
61
62Currently the router plugin handles ARP, locally destined ICMPv4 and OSPF
63traffic. It supports the classifier directing packets from an ip4-table to
64the 'tap-inject-classified' node (for handling multicast OSPF and IGMP).
65
66### Objective
67
68The objective of this project is to continue to build out better integration
69with host operating system and for providing a basis to enable completely
70or partially unmodified applications to take advantage of a fast datapath.
71
72### Main contributors
73
74Jeff Shaw - LF-ID:jbshaw
75