From b80c536e34b610ca77cd84448754e4bd9c46cf68 Mon Sep 17 00:00:00 2001 From: Neale Ranns Date: Sat, 8 Oct 2016 13:03:40 +0100 Subject: FIB2.0: Adjacency complete pull model (VPP-487) Change the adjacency completion model to pull not push. A complete adjacency has a rewirte string, an incomplete one does not. the re-write string for a peer comes either from a discovery protocol (i.e. ARP/ND) or can be directly derived from the link type (i.e. GRE tunnels). Which method it is, is interface type specific. For each packet type sent on a link to a peer there is a corresponding adjacency. For example, if there is a peer 10.0.0.1 on Eth0 and we need to send to it IPv4 and MPLS packets, there will be two adjacencies; one for the IPv4 and one for the MPLS packets. The adjacencies are thus distinguished by the packets the carry, this is known as the adjacency's 'link-type'. It is not an L3 packet type, since the adjacency can have a link type of Ethernet (for L2 over GRE). The discovery protocols are not aware of all the link types required - only the FIB is. the FIB will create adjacencies as and when they are required, and it is thus then desirable to 'pull' from the discovery protocol the re-write required. The alternative (that we have now) is that the discovery protocol pushes (i.e. creates) adjacencies for each link type - this creates more adjacencies than we need. To pull, FIB now requests from the interface-type to 'complete' the adjacency. The interface can then delegate to the discovery protocol (on ethernet links) or directly build the re-write (i.e on GRE). Change-Id: I61451789ae03f26b1012d8d6524007b769b6c6ee Signed-off-by: Neale Ranns --- vnet/vnet/unix/tuntap.c | 1 + 1 file changed, 1 insertion(+) (limited to 'vnet/vnet/unix/tuntap.c') diff --git a/vnet/vnet/unix/tuntap.c b/vnet/vnet/unix/tuntap.c index 48d5dc2387d..89fd1dcfe81 100644 --- a/vnet/vnet/unix/tuntap.c +++ b/vnet/vnet/unix/tuntap.c @@ -946,6 +946,7 @@ tuntap_nopunt_frame (vlib_main_t * vm, VNET_HW_INTERFACE_CLASS (tuntap_interface_class,static) = { .name = "tuntap", + .flags = VNET_HW_INTERFACE_CLASS_FLAG_P2P, }; /** -- cgit 1.2.3-korg