Jump to content

Source-specific routing

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Jec (talk | contribs) at 16:26, 24 July 2019 (BIRD now supports source-specific routing Support in routing protocols). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Source-specific routing,[1] also called source-address dependent routing (SADR),[2] is a routing technique in which a routing decision is made by looking at the source address of a packet in addition to its destination address. The main application of source-specific routing is to allow a cheap form of multihoming without the need for provider-independent addresses or any cooperation from upstream ISPs.

The problem

Incorrect source when multihoming

In traditional next-hop routing, a packet is routed according to its destination only, towards the closest router that announces a route that matches that destination. Consider a multihomed end-user network connected to two ISPs, BT&T and PacketCast; such a network will typically have two edge routers, each of which is connected to one ISP.

Both edge routers announce a default route, meaning that they are willing to accept packets destined for the Internet. If a packet with a source in BT&T's network is routed through PacketCast's edge router, PacketCast will assume it is a spoofed packet, and drop it in accordance to BCP 38.[3]

Multihoming with source-specific routing

With source-specific routing, each edge router announces a source-specific default route: a route that applies to packets destined to the Internet but only if their source is in a given prefix. The effect is that each edge router only attracts packets that have a source address in that provider's prefix.

Desirable host changes

With source-specific routing, each host interface has multiple addresses, one per provider-dependent prefix. For outgoing traffic, host software must choose the right source address. Various techniques for doing that have been suggested, at the network layer,[4] above the network layer (see Shim6), or by using multipath techniques at the higher layers (see Multipath TCP and Multipath Mosh[5]).

Support in routing protocols

On a network with a single edge router, it is possible to implement source-specific routing by manual manipulation of routing tables.[6] With multiple routers, explicit support for source-specific routing is required in the routing protocol.

As of early 2016, there are two routing protocols that implement support for source-specific routing:

  • The Babel routing protocol has support for source-specific routing for both IPv4 and IPv6;[7] this is implemented in babeld (for IPv4 and IPv6) and in BIRD (for IPv6 only);
  • There exists an implementation of IS-IS with support for source-specific routing for IPv6 only.[8]

The IETF Homenet protocol suite requires support for source-specific routing in its routing protocol.[9]

References

  1. ^ Matthieu Boutier; Juliusz Chroboczek (2015). Source-specific routing. Proc. IFIP Networking 2015. arXiv:1403.0445. Bibcode:2014arXiv1403.0445B.
  2. ^ https://tools.ietf.org/html/draft-troan-homenet-sadr-01
  3. ^ RFC 2827
  4. ^ RFC 6724
  5. ^ Matthieu Boutier; Juliusz Chroboczek (2015). "User-space multipath UDP in Mosh". arXiv:1502.02402.
  6. ^ http://www.lartc.org/, Section 4.2
  7. ^ https://tools.ietf.org/html/draft-ietf-babel-rfc6126bis-04
  8. ^ https://tools.ietf.org/html/draft-baker-ipv6-isis-dst-src-routing-07
  9. ^ RFC 7368, Section 3.2.4