RFC 3704

Ingress Filtering for Multihomed Networks

๐Ÿ“… published March 2004, from ietf

Ingress Filtering for Multihomed Networks ๐ŸŽ€

okay bestie, this one is a Best Current Practice (that's BCP 84) from the Network Working Group, and it's called RFC 3704. It was written by F. Baker from Cisco Systems and P. Savola from CSC/FUNET. It came out in March 2004, and it updates RFC 2827 (aka BCP 38) ๐Ÿ’…. It doesn't obsolete anything, so nothing got replaced, just glowed up.


Status of This Memo โœจ

so this doc specifies an Internet Best Current Practice for the whole Internet Community, and the authors are literally asking for discussion and suggestions for improvements ๐Ÿ™. Distribution of this memo is unlimited, so go ahead and share the tea ๐Ÿ“.

Copyright (C) The Internet Society (2004). All Rights Reserved.

Abstract ๐Ÿ’–

BCP 38, RFC 2827, is designed to limit the impact of distributed denial of service attacks. It does this by denying traffic with spoofed addresses access to the network, and it helps make sure traffic can be traced back to its correct source network ๐Ÿ•ต๏ธโ€โ™€๏ธ. As a bonus, the network doing this also protects itself from this and other attacks, like spoofed management access to networking equipment. It's giving protection squad ๐Ÿ›ก๏ธ. But there are cases where this can create problems, for example with multihoming ๐Ÿ˜ฌ. This document goes through the current ingress filtering operational mechanisms, looks at the generic issues, and digs into the effects on multihoming in particular. This memo updates RFC 2827 โœจ.

Table of Contents ๐Ÿงš

1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
2.  Different Ways to Implement Ingress Filtering  . . . . . . . .  4
    2.1 Ingress Access Lists . . . . . . . . . . . . . . . . . . .  4
    2.2 Strict Reverse Path Forwarding . . . . . . . . . . . . . .  5
    2.3 Feasible Path Reverse Path Forwarding  . . . . . . . . . .  6
    2.4 Loose Reverse Path Forwarding  . . . . . . . . . . . . . .  6
    2.5 Loose Reverse Path Forwarding Ignoring Default Routes  . .  7
3.  Clarifying the Applicability of Ingress Filtering  . . . . . .  8
    3.1 Ingress Filtering at Multiple Levels . . . . . . . . . . .  8
    3.2 Ingress Filtering to Protect Your Own Infrastructure . . .  8
    3.3 Ingress Filtering on Peering Links . . . . . . . . . . . .  9
4.  Solutions to Ingress Filtering with Multihoming  . . . . . . .  9
    4.1 Use Loose RPF When Appropriate . . . . . . . . . . . . . . 10
    4.2 Ensure That Each ISP's Ingress Filter Is Complete  . . . . 11
    4.3 Send Traffic Using a Provider Prefix Only to That Provider 11
5.  Security Considerations  . . . . . . . . . . . . . . . . . . . 12
6.  Conclusions and Future Work  . . . . . . . . . . . . . . . . . 13
7.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 14
8.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 14
    8.1.  Normative References . . . . . . . . . . . . . . . . . . 14
    8.2.  Informative References . . . . . . . . . . . . . . . . . 14
9.  Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 15
10. Full Copyright Statement . . . . . . . . . . . . . . . . . . . 16

1. Introduction ๐Ÿฆ‹

so BCP 38, RFC 2827 [1], is the one that's built to limit the damage from distributed denial of service attacks. It denies traffic with spoofed addresses access to the network, and it helps make sure traffic can be traced to its correct source network ๐Ÿ”. Same bonus as before: the network doing this also protects itself from other attacks, like spoofed management access to networking equipment. It can cause problems sometimes, e.g., with multihoming ๐Ÿ™ˆ. This document describes the current ingress filtering operational mechanisms, looks at generic issues related to ingress filtering, and goes deep on the effects on multihoming in particular.

RFC 2827 recommends that ISPs police their customers' traffic. Basically, they drop traffic entering their networks if it's coming from a source address that isn't legitimately in use by the customer network ๐Ÿšซ. The filtering includes, but is in no way limited to, traffic whose source address is a so-called "Martian Address". That's an address that is reserved [3], including any address within 0.0.0.0/8, 10.0.0.0/8, 127.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 224.0.0.0/4, or 240.0.0.0/4 ๐Ÿ‘ฝ.

The reasoning behind ingress filtering is that Distributed Denial of Service Attacks often spoof other systems' source addresses, just dropping a random number in the field ๐ŸŽฒ. In some attacks, this random number is deterministically within the target network. That means the attack hits one or more machines and makes them attack others with ICMP messages or other traffic ๐Ÿ˜ญ. In this case, the attacked sites can protect themselves with proper filtering, by checking that their prefixes aren't being used as source addresses in packets received from the Internet. In other attacks, the source address is literally a random 32 bit number, so the attacker is really hard to trace ๐Ÿซ . If the traffic leaving an edge network and entering an ISP can be limited to traffic it's legitimately sending, attacks can be somewhat mitigated. Traffic with random or improper source addresses can get suppressed before it does significant damage, and attacks can be readily traced back to at least their source networks ๐Ÿ’….

This document is aimed at ISP and edge network operators who 1) would like to learn more about ingress filtering methods in general, or 2) are already using ingress filtering to some degree but want to expand its use and avoid the pitfalls of ingress filtering in multihomed/asymmetric scenarios ๐Ÿง .

In section 2, several different ways to implement ingress filtering are described and examined in a generic context. In section 3, some clarifications on the applicability of ingress filtering methods are made. In section 4, ingress filtering is analyzed in detail from the multihoming perspective. In section 5, conclusions and potential future work items are identified ๐ŸŒˆ.

2. Different Ways to Implement Ingress Filtering โœจ

this section is the intro to the different operational techniques people use to implement ingress filtering as of writing this memo ๐Ÿ“. The mechanisms are described and analyzed in general terms, and the multihoming-specific issues get their own spotlight in Section 4 ๐ŸŽ€.

There are at least five ways one can implement RFC 2827, and they have different impacts. These include (the names are in relatively common usage):

  • Ingress Access Lists
  • Strict Reverse Path Forwarding
  • Feasible Path Reverse Path Forwarding
  • Loose Reverse Path Forwarding
  • Loose Reverse Path Forwarding ignoring default routes

Other mechanisms are also possible. There are a bunch of techniques that might profit from further study, specification, implementation, and/or deployment, see Section 6 ๐Ÿ”ฎ. However, those are out of scope, so we're not going there today ๐Ÿ™…โ€โ™€๏ธ.

2.1. Ingress Access Lists ๐Ÿ’…

An Ingress Access List is a filter that checks the source address of every message received on a network interface against a list of acceptable prefixes. If a packet doesn't match the filter, it gets dropped ๐Ÿ—‘๏ธ. Yes, this isn't the only way to implement an ingress filter, but it's the one RFC 2827 [1] proposed, and in some sense it's the most deterministic one ๐Ÿงฎ.

However, Ingress Access Lists are typically maintained manually. For example, if the set of prefixes changes (say, because of multihoming) and nobody remembers to update the list at the ISPs, the ISP might end up discarding packets that don't pass the ingress filter ๐Ÿ˜ฑ.

Naturally, this problem isn't limited to Ingress Access Lists. It's inherent to Ingress Filtering whenever the ingress filter isn't complete ๐Ÿ™ƒ. Still, Ingress Access Lists are usually harder to maintain than the other mechanisms, and having an outdated list can block legitimate access ๐Ÿšง.

2.2. Strict Reverse Path Forwarding ๐Ÿ”ฅ

Strict Reverse Path Forwarding (Strict RPF) is a simple way to implement an ingress filter. It's conceptually identical to using access lists for ingress filtering, except the access list is dynamic ๐Ÿช„. This can also help avoid duplicate configuration, like maintaining both static routes or BGP prefix-list filters and interface access-lists. The procedure goes like this: the source address is looked up in the Forwarding Information Base (FIB). If the packet is received on the interface that would be used to forward traffic back to the source of the packet, it passes the check โœ….

Strict Reverse Path Forwarding is a very reasonable approach in front of any kind of edge network. In particular, it's way superior to Ingress Access Lists when the network edge is advertising multiple prefixes using BGP ๐Ÿ‘‘. It makes for a simple, cheap, fast, and dynamic filter ๐Ÿ’–.

But Strict Reverse Path Forwarding has some problems of its own. First, the test only works in places where routing is symmetrical, meaning IP datagrams in one direction and responses from the other direction deterministically follow the same path ๐Ÿ”. This is common at edge network interfaces to their ISP, but it's not common at all between ISPs, which normally use asymmetrical "hot potato" routing ๐Ÿฅ”. Also, if BGP is carrying prefixes and some legitimate prefixes aren't being advertised, or aren't being accepted by the ISP under its policy, the effect is the same as ingress filtering with an incomplete access list. Some legitimate traffic gets filtered out because there's no route for it in the filtering router's Forwarding Information Base ๐Ÿ˜ญ.

There are operational techniques, especially with BGP but somewhat applicable to other routing protocols too, that make strict RPF work better with asymmetric or multihomed traffic ๐Ÿงฉ. The ISP assigns a better metric that isn't propagated outside of the router. That could be a vendor-specific "weight", or a protocol distance that prefers the directly received routes ๐ŸŽฏ. With BGP and sufficient machinery in place, setting those preferences could even be automated using BGP Communities [2] ๐Ÿค–. That way, the route is always the best one in the FIB, even in scenarios where only the primary connectivity would be used and typically no packets would pass through the interface. This method assumes there's no strict RPF filtering between the primary and secondary edge routers. In particular, when this gets applied to multihoming to different ISPs, that assumption may fail ๐Ÿฅบ.

2.3. Feasible Path Reverse Path Forwarding ๐Ÿฆ‹

okay so Feasible RPF is basically Strict RPF's glow-up ๐Ÿ’…. The source address still gets looked up in the FIB (or an equivalent, RPF-specific table), but instead of shoving just ONE best route in there, the alternative paths (if there are any) get added too and they're all valid for consideration โœจ. The list gets filled in using routing-protocol specific methods, like including all of the feasible BGP paths, or N of them where N is less than all, in the Routing Information Base (RIB). Sometimes it's been built as part of a Strict RPF implementation, bestie ๐ŸŽ€.

when routing goes asymmetric or the edge is multihomed ๐Ÿ™ˆ, this approach is a relatively easy way to tackle the biggest problems of Strict RPF.

okay this part is SO important ๐Ÿ˜ญ. Feasible RPF depends on consistent route advertisements (i.e., the same prefix(es), through all the paths) actually reaching all the routers doing the Feasible RPF checking. For example, this may not hold, e.g., when a secondary ISP doesn't pass the BGP advertisement along to the primary ISP, e.g., because of route-maps or other routing policies that aren't up-to-date. The failure modes are typically similar to "operationally enhanced Strict RPF", as described above.

general rule of thumb ๐Ÿ’€: if an advertisement gets filtered, the packets get filtered too.

so yeah, when it's defined properly, Feasible RPF is a super powerful tool in certain kinds of asymmetric routing scenarios ๐Ÿ‘‘, but you really need to understand its operational role and applicability better ๐Ÿซถ.


2.4. Loose Reverse Path Forwarding ๐ŸŒธ

Loose RPF is algorithmically similar to strict RPF, but it's different because it only checks for the existence of a route (even a default route, if applicable), not where that route points. Practically, this could be considered a "route presence check" ("loose RPF is a misnomer in a sense because there is no "reverse path" check in the first place").

the questionable benefit of Loose RPF shows up in asymmetric routing situations ๐Ÿค”: a packet gets dropped if there's no route at all, like to "Martian addresses" or addresses that aren't currently routed, but it doesn't get dropped if a route exists.

Loose Reverse Path Forwarding has problems, though ๐Ÿ˜ฌ. Since it sacrifices directionality, it loses the ability to limit an edge network's traffic to traffic legitimately sourced from that network. In most cases, that makes it useless as an ingress filtering mechanism.

also, lots of ISPs use default routes for different reasons, like collecting illegitimate traffic at so-called "Honey Pot" systems or discarding any traffic they don't have a "real" route to ๐Ÿฏ. Smaller ISPs may well buy transit and use a default route from a larger provider too. At least some implementations of Loose RPF check where the default route points. If the route points to the interface where Loose RPF is enabled, any packet is allowed from that interface. If it points nowhere or to some other interface, packets with bogus source addresses get discarded at the Loose RPF interface, even with a default route in place. If that fine-grained checking isn't implemented, the presence of a default route nullifies the effect of Loose RPF completely ๐Ÿ’”.

one case where Loose RPF might fit well is an ISP filtering packets coming from its upstream providers, to get rid of packets with "Martian" or other non-routed addresses ๐Ÿงน.

if other approaches are unsuitable, loose RPF could be used as a form of contract verification ๐Ÿ“œ. The other network is presumably certifying that it has provided appropriate ingress filtering rules, so the network doing the filtering only needs to verify that fact and react if any packets showing a breach of the contract are detected. Of course, this mechanism would only reveal whether the source addresses are "martian" or other unrouted addresses -- not whether they come from someone else's address space.


2.5. Loose Reverse Path Forwarding Ignoring Default Routes ๐Ÿงš

the fifth implementation technique can be characterized as Loose RPF ignoring default routes, i.e., an "explicit route presence check" โœจ. In this approach, the router looks up the source address in the route table and keeps the packet if a route is found. However, default routes are excluded from the lookup. That makes the technique mostly usable where default routes are only used to catch traffic with bogus source addresses, with an extensive (or even full) list of explicit routes covering legitimate traffic.

Like Loose RPF, this is useful where asymmetric routing is found, such as on inter-ISP links. However, like Loose RPF, it sacrifices directionality, so it loses the ability to limit an edge network's traffic to traffic legitimately sourced from that network ๐Ÿฅบ.


3. Clarifying the Applicability of Ingress Filtering ๐ŸŽ€

What may not be readily apparent is that ingress filtering isn't only applied at the "last-mile" interface between the ISP and the end user ๐Ÿ‘€. It's perfectly fine, and recommended, to also do ingress filtering at the edges of ISPs where appropriate, at the routers connecting LANs to an enterprise network, and so on -- it increases the defense in depth ๐Ÿ›ก๏ธ.

3.1. Ingress Filtering at Multiple Levels ๐Ÿชœ

Because ingress filtering is deployed more widely, the issue is recursive ๐Ÿ”. Ingress filtering has to work everywhere it's used, not just between the first two parties. So if a user negotiates a special ingress filtering arrangement with his ISP, he should also ensure (or make sure the ISP ensures) that the same arrangements also apply to the ISP's upstream and peering links, if ingress filtering is being used there, or will get used at some point in the future. Same goes for the upstream ISPs and peers.

In consequence, manual models that don't automatically propagate the information to every party where the packets would go, and where ingress filtering might be applied, have only limited generic usefulness ๐Ÿฅฒ.

3.2. Ingress Filtering to Protect Your Own Infrastructure ๐Ÿฐ

Another feature that comes from wider deployment of ingress filtering may not be readily apparent ๐Ÿ‘€. The routers and other ISP infrastructure are vulnerable to several kinds of attacks. The threat is typically mitigated by restricting who can access these systems.

However, unless ingress filtering (or at least a limited subset of it) has been deployed at every border (towards the customers, peers and upstreams), blocking the use of your own addresses as source addresses, attackers may be able to get around the protections of the infrastructure gear ๐Ÿ˜ฑ.

So by deploying ingress filtering, you don't just help the Internet as a whole, you also protect against several classes of threats to your own infrastructure ๐Ÿ’œ.

Ingress filtering on peering links, whether by ISPs or by end-sites, isn't really that different from the more typical "downstream" or "upstream" ingress filtering ๐Ÿ’….

However, it's important to note that with mixed upstream/downstream and peering links, the different links may have different properties (e.g., relating to contracts, trust, viability of the ingress filtering mechanisms, etc.) ๐Ÿ“‹. In the most typical case, just using an ingress filtering mechanism towards a peer (e.g., Strict RPF) works just fine as long as the routing between the peers is kept reasonably symmetric โœ…. It might even be considered useful to be able to filter out source addresses coming from an upstream link that should have come over a peering link (implying something like Strict RPF is used towards the upstream). But this is a more complex topic and is considered out of scope; see Section 6 ๐Ÿซ .


4. Solutions to Ingress Filtering with Multihoming ๐ŸŒˆ

First, one must ask why a site multihomes ๐Ÿคทโ€โ™€๏ธ. For example, the edge network might:

  • use two ISPs for backing up the Internet connectivity to ensure robustness,
  • use whichever ISP is offering the fastest TCP service at the moment,
  • need several points of access to the Internet in places where no one ISP offers service, or
  • be changing ISPs (and therefore multihoming only temporarily).

One can imagine a number of approaches to working around the limitations of ingress filters for multihomed networks ๐Ÿงฉ. Options include:

  1. Do not multihome.
  2. Do not use ingress filters.
  3. Accept that service will be incomplete.
  4. On some interfaces, weaken ingress filtering by using an appropriate form of loose RPF check, as described in Section 4.1.
  5. Ensure, by BGP or by contract, that each ISP's ingress filter is complete, as described in Section 4.2.
  6. Ensure that edge networks only deliver traffic to their ISPs that will in fact pass the ingress filter, as described in Section 4.3.

The first three of these are obviously mentioned for completeness ๐Ÿ™ƒ. They are not, and cannot be, viable positions. The final three are considered below.

The fourth and the fifth must be ensured in the upstream ISPs as well, as described in Section 3.1 ๐Ÿ”.

Next, we look at the viable ways of dealing with the side-effects of ingress filters ๐ŸŽฏ.

4.1. Use Loose RPF When Appropriate ๐Ÿซง

Where asymmetric routing is preferred or unavoidable, ingress filtering may be difficult to deploy using a mechanism like strict RPF, which requires the paths to be symmetrical ๐Ÿ™…โ€โ™€๏ธ. In many cases, using operational methods or Feasible RPF may ensure the ingress filter is complete, like described below. Failing that, the only real options are to not perform ingress filtering, use a manual access-list (possibly in addition to some other mechanisms), or use some form of Loose RPF check.

Failing to provide any ingress filter at all essentially trusts the downstream network to behave itself, which is not the wisest course of action ๐Ÿ˜ฌ. However, especially in the case of very large networks with even hundreds or thousands of prefixes, maintaining manual access-lists may be too much to ask ๐Ÿ˜ฉ.

Using Loose RPF doesn't seem like a good choice between the edge network and the ISP, since it loses the directionality of the test. This argues in favor of either using a complete filter in the upstream network, or ensuring in the downstream network that packets the upstream network will reject never reach it ๐Ÿšซ.

Therefore, the use of Loose RPF cannot be recommended, except as a way to measure whether "martian" or other unrouted addresses are being used ๐Ÿ”โœจ.

4.2. Ensure That Each ISP's Ingress Filter Is Complete โœจ

Okay so for the edge network, if multihoming is being used for robustness or to change routing from time to time based on measured ISP behavior, the simplest move is to make sure its ISPs actually carry its addresses in routing ๐Ÿ›ฃ๏ธ. This will often mean the edge network has to use provider-independent prefixes and swap routes with its ISPs over BGP, so its prefix gets carried upstream to the major transit ISPs ๐ŸŒ. Of necessity, this means the edge network needs to be big enough and technically competent enough to qualify for its own address assignment and an autonomous system number from its RIR ๐Ÿ’….

There are a bunch of techniques that make it easier to keep the ISP's ingress filter complete ๐ŸŽ€. Feasible RPF and Strict RPF, paired with operational techniques, both work super well for multihomed or asymmetric setups between the ISP and an edge network ๐Ÿฆ‹.

When there's no routing protocol and the customer info is generated from databases like Radius, TACACS, or Diameter, ingress filtering can be the easiest to keep up to date with Strict RPF or with Ingress Access Lists generated automatically from those databases ๐Ÿงš.

4.3. Send Traffic Using a Provider Prefix Only to That Provider ๐ŸŒธ

For smaller edge networks that use provider-based addressing, and whose ISPs implement ingress filters (which they should do), the third option is to route traffic sourced from a given provider's address space to that provider ๐Ÿ’œ.

This isn't a complicated procedure, but it does need careful planning and configuration ๐Ÿง . For robustness, the edge network may choose to connect to each of its ISPs through two or more different Points of Presence (POPs), so if one POP or line goes down, another link to the same ISP can be used ๐Ÿซถ. Alternatively, a set of tunnels could be configured instead of multiple connections to the same ISP [4][5]. That way the edge routers are set up to first inspect the source address of a packet destined for an ISP and shunt it into the right tunnel or interface toward that ISP ๐Ÿ”ฅ.

If this scenario is applied exhaustively, so that an exit router is chosen in the edge network for every prefix the network uses, then traffic coming from any other prefix can be summarily discarded instead of being sent to an ISP ๐Ÿ’€.


5. Security Considerations ๐Ÿ”

Ingress filtering is typically performed to make sure that traffic arriving on one network interface legitimately comes from a computer living on a network reachable through that interface ๐Ÿ‘€.

The closer to the actual source the ingress filtering happens, the more effective it is ๐Ÿ’ฏ. We could all wish that the first hop router would make sure traffic sourced from its neighboring end system was correctly addressed ๐Ÿ™. A router further away can only confirm that it's possible there's such a system within the indicated prefix ๐Ÿคทโ€โ™€๏ธ. So ingress filtering should be done at multiple levels, with different levels of granularity ๐Ÿงฉ.

It's important to keep in mind that while one goal of ingress filtering is to make attacks traceable, it's impossible to know whether a particular attacker "somewhere in the Internet" is being ingress filtered or not ๐Ÿ˜ต. So you can only guess whether source addresses have been spoofed or not ๐Ÿ•ต๏ธโ€โ™€๏ธ. Either way, getting a possible lead, like contacting a potential source to ask whether they're seeing an attack, is still valuable ๐Ÿ“. It gets even more valuable as ingress filtering becomes more and more widely deployed โœจ.

As a result, every administrative domain should try to ensure a sufficient level of ingress filtering on its borders ๐Ÿšง.

Security properties and applicability differ a lot between the different ingress filtering types ๐ŸŽญ.

  • Ingress Access Lists typically require manual maintenance, but they're the most bulletproof when done properly ๐Ÿ›ก๏ธ. They're usually best fit between the edge and the ISP when the configuration isn't too dynamic and strict RPF isn't an option, between ISPs when the number of used prefixes is low, or as an extra layer of protection ๐Ÿฐ.
  • Strict RPF check is a very easy and sure way to implement ingress filtering ๐Ÿ˜Œ. It's typically a good fit between the edge network and the ISP ๐Ÿ’–. In many cases a simple Strict RPF can be backed up with operational procedures for asymmetric traffic patterns, or with the feasible RPF technique so it also accounts for other alternative paths ๐ŸŒˆ.
  • Feasible Path RPF check is an extension of Strict RPF ๐Ÿฆ„. It's suitable in all the scenarios where Strict RPF is, but especially in multihomed or asymmetric scenarios ๐ŸŒŸ. However, you have to remember that Feasible RPF assumes routing information is consistently originated and propagated to work ๐Ÿงต. The implications of this must be understood, especially if a prefix advertisement passes through third parties ๐Ÿซฃ.
  • Loose RPF primarily filters out unrouted prefixes, such as Martian addresses ๐Ÿ‘ป. It can be applied on the upstream interfaces to reduce the size of DoS attacks with unrouted source addresses ๐Ÿ”‡. On downstream interfaces it can only be used as a contract verification, to check that the other network has performed at least some ingress filtering ๐Ÿ“œ.

When weighing the tradeoffs of different ingress filtering mechanisms, the security properties of a more relaxed approach should be carefully considered before using it ๐Ÿค”. Especially when an ISP applies it toward an edge network, there don't seem to be many reasons why a stricter form of ingress filtering wouldn't be appropriate ๐Ÿ’….


6. Conclusions and Future Work ๐ŸŽฌ

Okay, wrap-up time ๐Ÿฅน. This memo describes ingress filtering techniques in general and the options for multihomed networks in particular ๐ŸŒท.

It's really important for ISPs to implement ingress filtering so spoofed addresses don't get used ๐Ÿšซ. That helps curtail DoS attacks, makes them more traceable, and protects their own infrastructure ๐Ÿฐ. This memo describes mechanisms that could be used to get that effect, along with the tradeoffs of those mechanisms ๐Ÿง.

To summarize ๐Ÿ“:

  • Ingress filtering should always be done between the ISP and a single-homed edge network ๐Ÿ .
  • Ingress filtering with Feasible RPF or similar Strict RPF techniques could almost always be applied between the ISP and multi-homed edge networks as well ๐ŸŒ‰.
  • Both the ISPs and edge networks should verify that their own addresses aren't being used as source addresses in packets coming from outside their network ๐Ÿ”.
  • Some form of ingress filtering is also reasonable between ISPs, especially if the number of prefixes is low ๐Ÿค.

This memo will lower the bar for adopting ingress filtering, especially in scenarios like asymmetric or multihomed networks, where the general belief has been that ingress filtering is hard to implement ๐Ÿš€.

Multiple areas where additional work would be useful can be identified ๐Ÿ“š:

  • Specify the mechanisms in more detail ๐Ÿ”ง. There's some variance between implementations, for example on whether traffic to multicast destination addresses will always pass the Strict RPF filter or not ๐Ÿคจ. By formally specifying the mechanisms, implementations might get harmonized ๐ŸŽถ.
  • Study and specify Routing Information Base (RIB)-based RPF mechanisms, for example Feasible Path RPF, in more detail ๐Ÿ—บ๏ธ. In particular, consider under which assumptions these mechanisms work as intended and where they don't ๐Ÿง.
  • Write a more generic note on the ingress filtering mechanisms than this memo, once the taxonomy and the details of the mechanisms (the points above) have been fleshed out ๐Ÿ“–.
  • Consider the more complex case where a network has connectivity with different properties (for example peers and upstreams), and wants to make sure traffic sourced with a peer's address isn't accepted from the upstream ๐Ÿงโœจ.

7. Acknowledgements ๐Ÿ’Œ

Huge thanks to Rob Austein, Barry Greene, Christoph Reichert, Daniel Senie, Pedro Roque, and Iljitsch van Beijnum for reviewing this document and helping improve it ๐Ÿ™Œ. Thomas Narten, Ted Hardie, and Russ Housley gave good feedback that boosted the document in its final stages ๐Ÿซถ.

8. References ๐Ÿ“š

8.1. Normative References

[1]  Ferguson, P. and D. Senie, "Network Ingress Filtering: Defeating
     Denial of Service Attacks which employ IP Source Address
     Spoofing", BCP 38, RFC 2827, May 2000.

8.2. Informative References

[2]  Chandrasekeran, R., Traina, P. and T. Li, "BGP Communities
     Attribute", RFC 1997, August 1996.

[3]  IANA, "Special-Use IPv4 Addresses", RFC 3330, September 2002.

[4]  Bates, T. and Y. Rekhter, "Scalable Support for Multi-homed
     Multi-provider Connectivity", RFC 2260, January 1998.

[5]  Hagino, J. and H. Snyder, "IPv6 Multihoming Support at Site Exit
     Routers", RFC 3178, October 2001.

9. Authors' Addresses ๐Ÿ–‹๏ธ

Fred Baker
Cisco Systems
Santa Barbara, CA  93117
US

EMail: fred@cisco.com


Pekka Savola
CSC/FUNET
Espoo
Finland

EMail: psavola@funet.fi

Copyright (C) The Internet Society (2004). This document is subject to the rights, licenses and restrictions contained in BCP 78 and except as set forth therein, the authors retain all their rights.

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property ๐Ÿ”

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document, or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.

Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification, can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.

Acknowledgement ๐Ÿ’œ

Funding for the RFC Editor function is currently provided by the Internet Society ๐ŸŒˆโœจ

๐Ÿ“ฆ where this page comes from