5. Routing Implementation Considerations
- Routing Implementation Considerations
With the change from classful network numbers to classless prefixes,
it is not possible to infer the network mask from the initial bit
pattern of an IPv4 address. This has implications for how routing
information is stored and propagated. Network masks or prefix
lengths must be explicitly carried in routing protocols. Interior
routing protocols, such as OSPF [RFC2328], Intermediate System to
Intermediate System (IS-IS) [RFC1195], RIPv2 [RFC2453], and Cisco
Enhanced Interior Gateway Routing Protocol (EIGRP), and the BGP4
exterior routing protocol [RFC4271], all support this functionality,
having been developed or modified as part of the deployment of
classless inter-domain routing during the 1990s.
Older interior routing protocols, such as RIP [RFC1058], HELLO, and
Cisco Interior Gateway Routing Protocol (IGRP), and older exterior
routing protocols, such as Exterior Gateway Protocol (EGP) [RFC904],
do not support explicit carriage of prefix length/mask and thus
cannot be effectively used on the Internet other than in very limited
stub configurations. Although their use may be appropriate in simple
legacy end-site configurations, they are considered obsolete and
should NOT be used in transit networks connected to the global
Internet.
Similarly, routing and forwarding tables in layer-3 network equipment
must be organized to store both prefix and prefix length or mask.
Equipment that organizes its routing/forwarding information according
to legacy Class A/B/C network/subnet conventions cannot be expected
to work correctly on networks connected to the global Internet; use
of such equipment is not recommended. Fortunately, very little such
equipment is in use today.
5.1. Rules for Route Advertisement
-
Forwarding in the Internet is done on a longest-match basis.
This implies that destinations that are multi-homed relative to a
routing domain must always be explicitly announced into that
routing domain (i.e., they cannot be summarized). If a network
is multi-homed, all of its paths into a routing domain that is
"higher" in the hierarchy of networks must be known to the
"higher" network).
-
A router that generates an aggregate route for multiple, more-
specific routes must discard packets that match the aggregate
route, but not any of the more-specific routes. In other words,
the "next hop" for the aggregate route should be the null
destination. This is necessary to prevent forwarding loops when
some addresses covered by the aggregate are not reachable.
Note that during failures, partial routing of traffic to a site that
takes its address space from one service provider but that is
actually reachable only through another (i.e., the case of a site
that has changed service providers) may occur because such traffic
will be forwarded along the path advertised by the aggregated route.
Rule #2 will prevent packet misdelivery by causing such traffic to be
discarded by the advertiser of the aggregated route, but the output
of "traceroute" and other similar tools will suggest that a problem
exists within that network rather than in the network that is no
longer advertising the more-specific prefix. This may be confusing
to those trying to diagnose connectivity problems; see the example in
Section 6.2 for details. A solution to this perceived "problem" is
beyond the scope of this document; it lies with better education of
the user/operator community, not in routing technology.
An implementation following these rules should also be generalized,
so that an arbitrary network number and mask are accepted for all
routing destinations. The only outstanding constraint is that the
mask must be left contiguous. Note that the degenerate route to
prefix 0.0.0.0/0 is used as a default route and MUST be accepted by
all implementations. Further, to protect against accidental
advertisements of this route via the inter-domain protocol, this
route should only be advertised to another routing domain when a
router is explicitly configured to do so, never as a non-configured,
"default" option.
5.2. How the Rules Work
Rule #1 guarantees that the forwarding algorithm used is consistent
across routing protocols and implementations. Multi-homed networks
are always explicitly advertised by every service provider through
which they are routed, even if they are a specific subset of one
service provider's aggregate (if they are not, they clearly must be
explicitly advertised). It may seem as if the "primary" service
provider could advertise the multi-homed site implicitly as part of
its aggregate, but longest-match forwarding causes this not to work.
More details are provided in [RFC4116].
Rule #2 guarantees that no routing loops form due to aggregation.
Consider a site that has been assigned 192.168.64/19 by its "parent"
provider, which has 192.168.0.0/16. The "parent" network will
advertise 192.168.0.0/16 to the "child" network. If the "child"
network were to lose internal connectivity to 192.168.65.0/24 (which
is part of its aggregate), traffic from the "parent" to the to the
"child" destined for 192.168.65.1 will follow the "child's"
advertised route. When that traffic gets to the "child", however,
the child must not follow the route 192.168.0.0/16 back up to the
"parent", since that would result in a forwarding loop. Rule #2 says
that the "child" may not follow a less-specific route for a
destination that matches one of its own aggregated routes (typically,
this is implemented by installing a "discard" or "null" route for all
aggregated prefixes that one network advertises to another). Note
that handling of the "default" route (0.0.0.0/0) is a special case of
this rule; a network must not follow the default to destinations that
are part of one of its aggregated advertisements.
5.3. A Note on Prefix Filter Formats
Systems that process route announcements must be able to verify that
information that they receive is acceptable according to policy
rules. Implementations that filter route advertisements must allow
masks or prefix lengths in filter elements. Thus, filter elements
that formerly were specified as
accept 172.16.0.0
accept 172.25.120.0.0
accept 172.31.0.0
deny 10.2.0.0
accept 10.0.0.0
now look something like this:
accept 172.16.0.0/16
accept 172.25.0.0/16
accept 172.31.0.0/16
deny 10.2.0.0/16
accept 10.0.0.0/8
This is merely making explicit the network mask that was implied by
the Class A/B/C classification of network numbers. It is also useful
to enhance filtering capability to allow the match of a prefix and
all more-specific prefixes with the same bit pattern; fortunately,
this functionality has been implemented by most vendors of equipment
used on the Internet.
5.4. Responsibility for and Configuration of Aggregation
Under normal circumstances, a routing domain (or "Autonomous System")
that has been allocated or assigned a set of prefixes has sole
responsibility for aggregation of those prefixes. In the usual case,
the AS will install configuration in one or more of its routers to
generate aggregate routes based on more-specific routes known to its
internal routing system. These aggregate routes are advertised into
the global routing system by the border routers for the routing
domain. The more-specific internal routes that overlap with the
aggregate routes should not be advertised globally. In some cases,
an AS may wish to delegate aggregation responsibility to another AS
(for example, a customer may wish for its service provider to
generate aggregated routing information on its behalf); in such
cases, aggregation is performed by a router in the second AS
according to the routes that it receives from the first, combined
with configured policy information describing how those routes should
be aggregated.
Note that one provider may choose to perform aggregation on the
routes it receives from another without explicit agreement; this is
termed "proxy aggregation". This can be a useful tool for reducing
the amount of routing state that an AS must carry and propagate to
its customers and neighbors. However, proxy aggregation can also
create unintended consequences in traffic engineering. Consider what
happens if both AS 2 and 3 receive routes from AS 1 but AS 2 performs
proxy aggregation while AS 3 does not. Other ASes that receive
transit routing information from both AS 2 and AS 3 will see an
inconsistent view of the routing information originated by AS 1.
This may cause an unexpected shift of traffic toward AS 1 through AS
3 for AS 3's customers and any others receiving transit routes from
AS 3. Because proxy aggregation can cause unanticipated consequences
for parts of the Internet that have no relationship with either the
source of the aggregated routes or the party providing aggregation,
it should be used with extreme caution.
Configuration of the routes to be combined into aggregates is an
implementation of routing policy and requires some manually
maintained information. As an addition to the information that must
be maintained for a set of routeable prefixes, aggregation
configuration is typically just a line or two defining the range of
the block of IPv4 addresses to be aggregated. A site performing its
own aggregation is doing so for address blocks that it has been
assigned; a site performing aggregation on behalf of another knows
this information because of an agreement to delegate aggregation.
Assuming that the best common practice for network administrators is
to exchange lists of prefixes to accept from each other,
configuration of aggregation information does not introduce
significant additional administrative overhead.
The generation of an aggregate route is usually specified either
statically or in response to learning an active dynamic route for a
prefix contained within the aggregate route. If such dynamic
aggregate route advertisement is done, care should be taken that
routes are not excessively added or withdrawn (known as "route
flapping"). In general, a dynamic aggregate route advertisement is
added when at least one component of the aggregate becomes reachable
and it is withdrawn only when all components become unreachable.
Properly configured, aggregated routes are more stable than non-
aggregated routes and thus improve global routing stability.
Implementation note: Aggregation of the "Class D" (multicast) address
space is beyond the scope of this document.
5.5. Route Propagation and Routing Protocol Considerations
Prior to the original deployment of CIDR, common practice was to
propagate routes learned via exterior routing protocols (i.e., EGP or
BGP) through a site's interior routing protocol (typically, OSPF,
IS-IS, or RIP). This was done to ensure that consistent and correct
exit points were chosen for traffic to be sent to a destination
learned through those protocols. Four evolutionary effects -- the
advent of CIDR, explosive growth of global routing state, widespread
adoption of BGP4, and a requirement to propagate full path
information -- have combined to deprecate that practice. To ensure
proper path propagation and prevent inter-AS routing inconsistency
(BGP4's loop detection/prevention mechanism requires full path
propagation), transit networks must use internal BGP (iBGP) for
carrying routes learned from other providers both within and through
their networks.