jdenisco | 0923a23 | 2018-08-29 13:19:43 -0400 | [diff] [blame] | 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}. |