Internet-Draft | SAVI in an EVPN network | March 2024 |
Levy-Abegnoli, et al. | Expires 4 September 2024 | [Page] |
Source Address Validation procedures have been specified in the SAVI Working Group and provide a set of mechanisms and state machines to verify Source Address ownership. The main mechanisms are described in RFC6620 and RFC7513.¶
RFC7432 and furthermore RFC9161 specify how an EVPN network could learn and distribute IP addressess. RFC9161 describes a mechanism by which the PE can proxy some ND messages based on this information.¶
In this document, we review how these two sets of specifications and underlying mechanisms can interact to provide Source Address Validation in an EVPN network.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 4 September 2024.¶
Copyright (c) 2024 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
[RFC6620] describes a mechanism that provides Source Address Validation Improvements (SAVI) for IPv6 networks based the First Come First Serve (FCFS) principle, applicable to any type of IPv6 addresses, including those assigned through IPv6 [RFC4291][RFC8200] Neighbor Discovery (ND) [RFC4861] Stateless Address Autoconfiguration (SLAAC) [RFC4862]. According to that specification, an IPv6 entry freshly snooped on a SAVI device needs to reach the “VALID“ state before traffic sourced with it can be forwarded.¶
Another SAVI specification, [RFC7513], describes a similar mechanism for addresses assigned by DHCPv6/DHCPv4 server. Again, traffic sourced which such addresses can only be forwarded when the address state is “BOUND”.¶
Section 10 of "BGP MPLS-Based Ethernet VPN" [RFC7432] (EVPN) indicates that a Provider Edge (PE) router may learn IP addresses and advertise them to other PEs. EVPN allows PEs to execute a proxy ARP/ND function that is further detailed in "Operational Aspects of Proxy ARP/ND in Ethernet Virtual Private Network" [RFC9161]. According to section 3.2 of [RFC9161], IPv6 addresses should be learnt by snooping Neighbor Advertisements (NA), then advertised in an EVPN MAC/IP Advertisement route, and finally used on remote PEs to perform said proxy ARP/ND function.¶
Assuming one would want to perform Source Address Validation in an EVPN network, two models can be deployed:¶
These two models are reviewed in Section 4. Corresponding interactions between SAVI and EVPN are reviewed as well in this document.¶
This document uses the following abbreviations:¶
As specified in the [RFC7039] SAVI instance enforces the hosts' use of legitimate IP source addresses and to verify that the source address used in data packets actually belongs to the originator of the packet following three-step model:¶
SAVI devices form a perimeter separating trusted and untrusted regions of a network. As specified in [RFC6620] and [RFC7513], only validated addresses can inject traffic over the trusted perimeter.¶
According to [RFC6620], any address, used as the source of a packet or showing up as a target of a Neighbor Advertisement (NA) or a target of a DAD Neighbor Solicitation (NS), which is not locally known and validated, is treated as a TENTATIVE address. Validation process is initiated with a DAD NS (Duplicate Address Detection Neighbor Solicitation) message with this address in the target field originated by the SAVI device and broadcasted to any validated or trusted port. A response received implies a duplication and/or IP theft [B] and on the contrary, no response allows to progress the state of the address from TENTATIVE to VALID [A].¶
Note that a SAVI device stores only local entries (client facing)¶
Sequence goes like this for A:¶
For B, after step 3 Client responds to DAD with an NA (dst=all nodes).¶
As described in step 3, only instances that have the entry "S" in VALID state or trusted ports forward the DAD.¶
In model 1, a SAVI device is inserted between client (host or CE) and PE (or VTEP). This first model is straight forward and does not require any additional specification. It is presented in Figure 3.¶
The SAVI devices operate as a verification perimeter between untrusted clients (CEs or Hosts) and PEs (or VTEPs). As specified in [RFC6620] and [RFC7513], only validated addresses can inject traffic over the trusted perimeter. The mechanisms to validate addresses are specified in these two RFCs. Note that IPv6 DAD NS (IP source is set to the unspecified address, see section section-2.5.2 of [RFC4291] ), used by SAVI for validation, can still be forwarded by EVPN but are not used by EVPN proxy for learning. Therefore, as long as an address is not validated by SAVI, it remains unknown by EVPN.¶
In this model, the SAVI device and the PE/VTEP can also be colapsed into the same box referenced as a SAVI-PE. The injection happens over an API between SAVI instance and EVPN rather than over a physical wire. Furthermore, only validated sources are learnt per section 3.2 of [RFC9161].¶
In model 2, SAVI Instance is integrated with te EVPN PE/VTEP, It is presented in Figure 4. In this model it is possible and even desirable to leverage the knowledge of remote IP entries stored in the VTEP EVPN tables to make SAVI validation process more efficient.¶
The next section review interactions between SAVI and EVPN for different type of addresses¶
The "SAVI Solution for DHCP" [RFC7513] specification describes a mechanism that provides source address validation for IPv6 networks where addresses are assigned by DHCPv6 server. The address validation is achieved by snooping DHCPv6 address assignments, which is known as DHCP Snooping, or validating discovered address with the DHCP server which is described as Data Snooping process. Both processes are described in detail in [RFC7513].¶
During DHCP Snooping process and according to associated state machine, an IP entry freshly snooped on a SAVI device progresses from NO_BIND to BOUND.¶
The whole DHCP address assignment procedure is performed using IPv6 Link-Local addresses, which are expected to be VALID prior to the beginning of this process. The DHCP server or relay can then be located anywhere in the EVPN network without the DHCP messages being blocked by SAVI. EVPN itself does not learn from DHCP, so until the address is assigned, DAD completed and the host have sent an NA (response to a lookup or unsolicited NA), EVPN is not aware of the assigned address. After the NA is sent, the address can be learnt by EVPN, stored locally by the EVPN proxy-ND, and distributed by BGP per [RFC9161].¶
Source validation of DHCP assigned addresses in EVPN is described in "EVPN First Hop Security" [I-D.sajassi-bess-evpn-first-hop-security]¶
According to [RFC6620], any address, used as the source of a packet or showing up as a target of a Neighbor Advertisement (NA) or a target of a DAD Neighbor Solicitation (NS), which is not locally known and validated, is treated as a TENTATIVE address and a DAD NS (Duplicate Address Detection Neighbor Solicitation) message with this address in the target field is originated by the SAVI device and broadcasted to any validated or trusted port. A response received implies a duplication and/or IP theft and on the contrary, no response allow to progress the state of the address from TENTATIVE to VALID.¶
Main interactions are listed below:¶
In model 2 where SAVI is co-located with EVPN table, upon starting the validation process for an address, SAVI MAY perform a lookup into EVPN table, where entry can be 1) not found, 2) local or 3) remote.¶
If the entry is local, this is an error as it is expected only VALID entries should be learnt by EVPN ND proxy. The entry in the EVPN table MUST be deleted.¶
Other cases are described in the next sections¶
As described in [RFC6620], when validating a source address that is not known in the local SAVI table, a multicast DAD NS message is sent to all remote SAVI instances to check for the presence of this address on any of these instances. This process can be optimized by leveraging the content of EVPN tables on VTEPs and "unicast-forward" the DAD to the known address owner, if any, more in [RFC6085].¶
Depending on the presence of the address in the EVPN table and if present, whether the address is active or not, there are three possible scenarios as described below.¶
It is important to note that EVPN table is simply a "helper" for SAVI verification. It may happen that the entry is not present in the EVPN table due to following reasons:¶
If the entry is not present in the EVPN table and not present in the SAVI table, the verification will fallback on sending a multicast (l2-broadcast) packet to all remote SAVI-PEs.¶
Similarly, in the case the EVPN lookup for the IP returns a local entry, SAVI will also fallback on broadcasting the DAD NS used for verification to all remote SAVI-PEs. This may happen if EVPN installs the entry for IP before SAVI get a chance to initiate the verification process, which could be the case in "loose-mode" described below.¶
Since the source address that is being validated by SAVI process might not be present in the EVPN table for reasons described above, it means it cannot be moved to VALID state directly without performing validation as per [RFC6620]. It will be created as TENTATIVE in SAVI, and the verification will fallback on sending a multicast (l2-broadcast) packet to all remote SAVI-PEs.¶
In the case when entry is not present in the EVPN table due to race condition or entry is not distributed by the EVPN, multicast NS DAD will be converted to unnicast on remote SAVI-PEs before forwarding to the target. In the case when entry is not detected in the network, multicast NS DAD will be stopped at remote SAVI-PEs.¶
Note that to prevent race condition where a host is VALID in the local SAVI instance but not yet present in the EVPN table, SAVI MAY signal the entry to EVPN as soon as it becomes VALID.¶
When the source address that is being validated by SAVI process is present in the EVPN table, then the multicast NS DAD sent by SAVI can be "unicast-forwarded" per section 3.4. "Unicast-Forward Sub-function" of [RFC9161].¶
If the address is no longer active on the remote location, there will be no response and the validation process will follow the steps as specified in [RFC6620] to move the entry to VALID state. Once the entry is in VALID state, the traffic received from that address will be forwarded into EVPN network and the IP address will be learned by the EVPN. This is shown in Figure 5¶
SAVI instance MAY signal the entry to EVPN as soon as it becomes VALID.¶
Note than, by default, waiting "TENT_LT" (TIMEOUT is TENTATIVE lifetime - default is 500ms) before moving entry to VALID state will delay mobility by this amount of time.¶
Until validation is complete, traffic sourced from IP will be blocked. It is also expected that EVPN will start the mobility procedure only at the end of the validation (after TENT_LT) process. This delay can however be improved in some cases.¶
If the MACs (bound to IP) are the same on both locations, the EVPN MAC mobility procedure may start immediately after detection of the MAC at the new location, and traffic from the IP can be allowed "optimistically", to the exception of ARP/ND/DHCP messages that could change the status-quo (mac, dhcp lease, etc.). See case 1 in the figure below. This is sometimes referred to as "loose mode" as opposed to "strict mode" (nothing allowed till validation is complete).¶
By doing so, traffic will resume to new location as soon as BGP has re-converged, and in case of an IP-theft, mobility procedure and/or SAVI validation (whichever completes first) will re-establish the previous situation (case 2 in the figure below).¶
If the MAC bound to the IP is different from the one already known, the MAC will be advertised immediately, but not the IP which will be delayed by TENT_LT. In this case, traffic from the IP or ARP/ND traffic announcing the MAC change should also be delayed.¶
As in previous section, local SAVI sends the multicast NS DAD to the known (by EVPN, as a remote entry) target but this time, the target responds with a multicast NA. The validation process will follow the steps as specified in [RFC6620] and move the entry to NO_BIND state. Any NA received on this local SAVI instance from the validating port will not be signalled to EVPN and will not be learnt by EVPN ND proxy. This is a IP duplication / theft use case and should be signalled through logging or by triggering an alarm.¶
While [RFC6620] does not mention IPv4, a very similar mechanism as the one described for IPv6 addresses could be used for IPv4. NS DAD is simply replaced by ARP ACD (Address Conflict Detection) as specified in [RFC5227] in all previous diagrams.¶
The Source Address Validation Architecture (SAVA) [RFC5210] proposes a multi-fence approach that implements SAV at three levels of the network: access, intra-domain, and inter-domain. As described in [RFC6620] and [RFC7039] the applicability of FCFS SAVI is limited to local traffic, to verify if the traffic generated by the hosts attached to the local link contains a valid source address. The verification of the source address of the inter-subnet traffic is out of the scope of FCFS SAVI. Other techniques are recommended to validate inter-subnet traffic. The scope of the Source Address Validation in Intra-domain and Inter-domain Networks (SAVNET) includes the SAV function for both intra-domain and inter-domain networks. It identifies the technical gaps and fundamental problems with current mechanism and techniques, and specifies the practical requirements for the solution of these problems. In that sense, FCFS SAVI complements SAVNET and the security level can be increased by combining these two techniques.¶
This specification does not require IANA action.¶