docs: FIB 2.0 start
[vpp.git] / docs / gettingstarted / developers / fib20 / arpentries.rst
1 .. _arpentries:
2
3 ARP Entries
4 ^^^^^^^^^^^
5
6 .. figure:: /_images/fib20fig1.png
7
8 Figure 1: ARP data model
9
10 Figure 1 shows the data model for an ARP entry. An ARP entry contains the mapping
11 between a peer, identified by an IPv4 address, and its MAC address on a given
12 interface.  The VRF the interface is bound to, is not part of the data. VRFs are
13 an ingress function not egress. The ARP entry describes how to send traffic to a
14 peer, which is an egress function.
15
16 The *arp_entry_t* represents the control-plane addition of the ARP entry. The
17 *ip_adjacency_t* contains the data derived from the *arp_entry_t* that is need to
18 forward packets to the peer. The additional data in the adjacency are the *rewrite*
19 and the *link_type*. The *link_type* is a description of the protocol of the packets
20 that will be forwarded with this adjacency; this can be IPv4 or MPLS. The *link_type*
21 maps directly to the ether-type in an Ethernet header, or the protocol filed in a
22 GRE header. The rewrite is a byte string representation of the header that will be
23 prepended to the packet when it is sent to that peer. For Ethernet interfaces this
24 would be the src,dst MAC and the ether-type. For LISP tunnels, the IP src,dst pair
25 and the LISP header.
26
27 The *arp_entry_t* will install a *link_type=IPv4* when the entry is created and a
28 link_type=MPLS when the interface is MPLS enabled. Interfaces must be explicitly
29 MPLS enabled for security reasons.
30
31 So that adjacencies can be shared between route, adjacencies are stored in a single
32 data-base, the key for which is {interface, next-hop, link-type}.