A wide variety of potential embodiments will be more readily understood through the following detailed description of certain exemplary embodiments, with reference to the accompanying exemplary drawings in which:
The routers in an Autonomous System (AS) typically must distribute the information they learn about how to reach external destinations. Unfortunately, today's internal Border Gateway Protocol (iBGP) architectures have potentially serious problems: a “full mesh” iBGP configuration does not necessarily scale to large networks and “route reflection” can introduce problems such as protocol oscillations and persistent loops. Instead, we argue that a Routing Control Platform (RCP) can collect information about external destinations and/or internal topology and/or select the BGP routes for each router in an AS. RCP can be a logically centralized platform, separate from the IP forwarding plane, that can perform route selection on behalf of routers and/or can communicate selected routes to the routers using the unmodified iBGP protocol. RCP can provide scalability without sacrificing correctness. Herein, we present the design and implementation of an RCP prototype on commodity hardware. Using traces of BGP and internal routing data from a Tier-1 backbone, we demonstrate that RCP can be fast and reliable enough to drive the BGP routing decisions for a large network. We show that RCP can assign routes correctly, even when the functionality is replicated and distributed, and that networks using RCP can expect comparable convergence delays to those using today's iBGP architectures.
The Border Gateway Protocol (BGP), the Internet's interdomain routing protocol, can be prone to protocol oscillation and forwarding loops, highly sensitive to topology changes inside an Autonomous System (AS), and/or difficult for operators to understand and/or manage. We address these potential problems by introducing a Routing Control Platform (RCP) that can compute the BGP routes for each router in an AS based on complete routing information and/or higher-level network engineering goals (see reference 1, 2). Herein we describe the design and implementation of an RCP prototype that can be fast and reliable enough to coordinate routing for a large backbone network.
1.1 Route Distribution Inside an AS
The routers in a single AS can exchange routes to external destinations using a protocol called internal BGP (iBGP). Small networks are typically configured as a “full mesh” iBGP topology, with an iBGP session between each pair of routers. However, a full-mesh configuration does not necessarily scale because each router typically must: (i) have an iBGP session with every other router, (ii) send BGP update messages to every other router, (iii) store a local copy of the advertisements sent by each neighbor for each destination prefix, and (iv) have a new iBGP session configured whenever a new router is added to the network. Although having a faster processor and more memory on every router would support larger full-mesh configurations, the installed base of routers tends to lag behind the technology curve, and upgrading routers can be quite costly. In addition, BGP-speaking routers do not always degrade gracefully when their resource limitations are reached; for example, routers crashing or experiencing persistent routing instability under such conditions have been reported (see reference 3). Herein we present the design, implementation, and evaluation of a solution that can behave like a full-mesh iBGP configuration with much less overhead and/or no changes to the installed base of routers.
To avoid the scaling problems of a full mesh, today's large networks typically configure iBGP as a hierarchy of route reflectors (see reference 4). A route reflector can select a single BGP route for each destination prefix and/or advertise the route to its clients. Adding a new router to the system often simply requires configuring iBGP sessions to the router's route reflector(s). Using route reflectors can reduce the memory and/o connection overhead on the routers, at the expense of compromising the behavior of the underlying network. In particular, a route reflector does not necessarily select the same BGP route that its clients would have chosen in a full-mesh configuration. Unfortunately, the routers along a path through the AS can be assigned different BGP routes from different route reflectors, leading to inconsistencies (see reference 5). These inconsistencies can cause protocol oscillation (see reference 6, 7, 8) and/or persistent forwarding loops (see reference 6). To prevent these problems, operators typically must ensure that route reflectors and their clients have a consistent view of the internal topology, which typically requires configuring a large number of routers as route reflectors. This can force large backbone networks to have dozens of route reflectors to reduce the likelihood of inconsistencies.
1.2 Routing Control Platform (RCP)
RCP can provide the intrinsic correctness of a full mesh iBGP configuration and/or the scalability benefits of route reflectors. RCP can select BGP routes on behalf of the routers in an AS using a complete view of the available routes and/or IGP topology. As shown in
To be a viable alternative to today's iBGP solutions, RCP can satisfy two main design goals: (i) consistent assignment of routes even when the functionality is replicated and distributed for reliability and (ii) fast response to network events, such as link failures and/or external BGP routing changes, even when computing routes for a large number of destination prefixes and routers. Herein we demonstrate that RCP can be made fast and reliable enough to supplant today's iBGP architectures, without requiring any changes to the implementation of the legacy routers. After a brief overview of BGP routing in Section 2, Section 3 presents the RCP architecture and describes how to compute consistent forwarding paths, without requiring any explicit coordination between the replicas. In Section 4, we describe a prototype implementation, built on commodity hardware, that can compute and disseminate routing decisions for a network with hundreds of routers. Section 5 demonstrates the effectiveness of our prototype by replaying BGP and OSPF messages from a large backbone network; we also discuss the challenges of handling OSPF-induced BGP routing changes and evaluate one potential solution. Section 6 summarizes this section of the description.
1.3 Related Work
Certain exemplary embodiments can control the BGP routing decisions for a network. In addition, RCP can make per-router routing decisions for an entire network, rather than a single router. RCP can improve the scalability and correctness of distributing and/or selecting BGP routes within a single AS.
This section presents an overview of BGP routing inside an AS and highlights the implications on how RCP can work to avoid requiring changes to the installed base of IP routers.
Partitioning of functionality across routing protocols: In most backbone networks, the routers participate in three different routing protocols: external Border Gateway Protocol (eBGP) to exchange reachability information with neighboring domains, internal BGP (iBGP) to propagate the information inside the AS, and an Interior Gateway Protocol (IGP) to learn how to reach other routers in the same AS, as shown in
BGP is a path-vector protocol where each network can add its own AS number to the path before propagating the announcement to the next domain; in contrast, IGPs such as OSPF and IS-IS are typically link-state protocols with a tunable weight on each link. Each router can combine the information from the routing protocols to construct a local forwarding table that maps each destination prefix to the next link in the path. In our design, RCP can assume responsibility for assigning a single best BGP route for each prefix to each router and distributing the routes using iBGP, while relying on the routers to “merge” the BGP and IGP data to construct their forwarding tables.
BGP route-selection process: To select a route for each prefix, each router can apply the decision process in Table 1 to the set of routes learned from its eBGP and iBGP neighbors (see reference 19). The decision process essentially can compare the routes based on their many attributes. In the simplest case, a router can select the route with the shortest AS path (step 2), breaking a tie based on the ID of the router who advertised the route (step 7). However, other steps can depend on route attributes, such as local preference, that are assigned by the routing policies configured on the border routers. RCP can deal with the fact that the border routers apply policies to the routes learned from their eBGP neighbors and/or that all routers apply the route selection process to the BGP routes they learn.
Selecting the closest egress router: In backbone networks, a router often has multiple BGP routes that are “equally good” through step 5 of the decision process. For example, router Z in
Challenges introduced by hot-potato routing: A single IGP topology change can cause multiple routers to change their BGP routing decisions for multiple prefixes. If the IGP weight of link V-X in
In this section, we describe the RCP architecture. We first present the three potential building blocks of the RCP: the IGP Viewer, the BGP Engine, and the Route Control Server (RCS). We describe the information that can be available to each module, as well as the constraints that the RCS can satisfy when assigning routes. We then discuss how RCP's functionality can be replicated and/or distributed across many physical nodes in an AS while maintaining consistency and correctness. Our analysis shows that there is no need for the replicas to run a separate consistency protocol: since the RCP can be designed such that each RCS replica makes routing decisions only for the partitions for which it has complete IGP topology and BGP routes, every replica can make the same routing assignments, even without a consistency protocol.
3.1 RCP Modules
To compute the routes that each router would have selected in a “full mesh” iBGP configuration, RCP can obtain both the IGP topology information and the best route to the destination from every router that learns a route from neighboring AS's. As such, RCP can utilize the IGP Viewer, the BGP Engine, and/or the Route Control Server. The IGP Viewer can establish IGP adjacencies to one or more routers, which can allow the RCP to receive IGP topology information. The BGP Engine can learn BGP routes from the routers and/or can send the RCS's route assignments to each router. The Route Control Server (RCS) then can use the IGP topology from the IGP Viewer information and/or the BGP routes from the BGP engine to compute the best BGP route for each router.
RCP can communicates with the routers in an AS using standard routing protocols, as summarized in
Suppose the routers R in a single AS form an IGP connectivity graph G=(R, E), where E are the edges in the IGP topology. Although the IGP topology within an AS is typically a single connected component, failures of links, routers, and/or interfaces might occasionally create partitions. Thus, G can contain one or more connected components; i.e., G={P1, P2, . . . ,Pn}. The RCS typically only computes routes for partitions Pi for which it has complete IGP and BGP information, and it can compute routes for each partition independently.
3.1.1 IGP Viewer
The RCP's IGP Viewer can monitor the IGP topology and/or can provide this information to the RCS. The IGP Viewer can establish IGP adjacencies to receive the IGP's link state advertisements (LSAs). To ensure that the IGP Viewer never routes data packets, the links between the IGP Viewer and the routers can be configured with large IGP weights to ensure that the IGP Viewer is not an intermediate hop on any shortest path. Since IGPs such as OSPF and IS-IS can perform reliable flooding of LSAs, the IGP Viewer can maintain an up-to-date view of the IGP topology as the link weights change or equipment goes up and down. Use of flooding to disseminate LSAs can imply that the IGP Viewer can receive LSAs from all routers in a partition by simply having an adjacency to a single router in that partition. This property can have a potentially important implication:
Observation 1 The IGP Viewer can have the complete IGP topology for all partitions that it connects to.
The IGP Viewer can compute pairwise shortest paths for all routers in the AS and/or can provide this information to the RCS. The IGP Viewer can discover the path costs between any two routers in the AS, but it need not discover the weights of each IGP edge. The RCS then can use these path costs to determine, from any router in the AS, what the closest egress router should be for that router.
In some cases, a group of routers in the IGP graph can all select the same router en route to one or more destinations. For example, a network might have a group of access routers in a city, all of which send packets out of that city towards one or more destinations via a single gateway router. These routers can always use the same BGP router as the gateway. These groups can be formed according to the IGP topology: for example, routers can be grouped according to OSPF “areas”, since all routers in the same area typically make the same BGP routing decision. Because the IGP Viewer can know the IGP topology, it can determine which groups of routers should be assigned the same BGP route. By clustering routers in this fashion, the IGP Viewer can reduce the number of independent route computations that the RCS performs. While IGP topology is a convenient way for the IGP Viewer to determine these groups of routers, the groups need not correspond to the IGP topology; for example, an operator could dictate the grouping.
3.1.2 BGP Engine
The BGP Engine can maintain an iBGP session with each router in the AS. These iBGP sessions can allow the RCP to (1) learn about candidate routes and/or (2) communicate its routing decisions to the routers. Since iBGP can run over TCP, a BGP Engine need not be physically adjacent to every router. In fact, a BGP Engine can establish and maintain iBGP sessions with any router that is reachable via the IGP topology, which allows us to make the following observation:
Observation 2 A BGP Engine can establish iBGP sessions to all routers in the IGP partitions that it connects to.
Here, we make a reasonable assumption that IGP connectivity between two endpoints is sufficient to establish a BGP session between them; in reality, persistent congestion or misconfiguration could cause this assumption to be violated, but these two cases are anomalous. In practice, routers are often configured to place BGP packets in a high-priority queue in the forwarding path to ensure the delivery of these packets even during times of congestion.
In addition to receiving BGP updates, the RCP can use the iBGP sessions to send the chosen BGP routes to the routers. Because BGP updates can have a “next hop” attribute, the BGP Engine can advertise BGP routes with “next hop” addresses of other routers in the network. This characteristic means that the BGP Engine does not need to forward data packets. The BGP routes typically carry “next hop” attributes according to the egress router at which they were learned. Thus, the RCS can send a route to a router with the next hop attribute unchanged, and routers will forward packets towards the egress router.
A router can interact with the BGP Engine in the same way as it would with a normal BGP-speaking router, but the BGP Engine can send a different route to each router. (In contrast, a traditional route reflector would send the same route to each of its neighboring routers.) A router typically only sends BGP update messages to the BGP Engine when selecting a new best route learned from a neighboring AS. Similarly, the BGP Engine typically only sends an update when a router's decision should change.
3.1.3 Route Control Server (RCS)
The RCS can receive IGP topology information from the IGP Viewer and BGP can route from the BGP Engine, compute the routes for a group of routers, and/or return the resulting route assignments to the routers using the BGP Engine. The RCS typically does not return a route assignment to any router that has already selected a route that is “better” than any of the other candidate routes, according to the decision process in Table 1. To make routing decisions for a group of routers in some partition, the following can and/or must be true:
Observation 3 An RCS can only make routing decisions for routers in a partition for which it has both IGP and BGP routing information.
Note that the previous observations can guarantee that the RCS can (and will) make path assignments for all routers in that partition. Although the RCS has considerable flexibility in assigning routes to routers, one reasonable approach would be to have the RCS send to each router the route that it would have selected in a “full mesh” iBGP configuration. To emulate a full-mesh iBGP configuration, the RCS can execute the BGP decision process in Table 1 on behalf of each router. The RCS can perform this computation because: (1) knowing the IGP topology, the RCS can determine the set of egress routers that are reachable from any router in the partitions that it sees; (2) the next four steps in the decision process can compare attributes that appear in the BGP messages themselves; (3) for step 5, the RCS can consider a route as eBGP learned for the router that sent the route to the RCP, and as an iBGP-learned route for other routers; (4) for step 6, the RCS can compare the IGP path costs sent by the IGP Viewer; and (5) for step 7, the RCS can know the router ID of each router because the BGP Engine can have an iBGP session with each of them. After computing the routes, the RCS can send each router the appropriate route.
Using the high-level correctness properties from previous work as a guide (see reference 21), we recognize that routing within the network can and/or must satisfy the following properties (note that iBGP does not intrinsically satisfy them (see reference 6, 21)):
Route validity: The RCS should not assign routes that create forwarding loops, blackholes, or other anomalies that prevent packets from reaching their intended destinations. To satisfy this property, two invariants can and/or must hold. First, the RCS can and/or must assign routes such that the routers along the shortest IGP path from any router to its assigned egress router must be assigned a route with the same egress router. Second, the RCS can and/or must assign a BGP route such that the IGP path to the next-hop of the route only traverses routers in the same partition as the next-hop.
When the RCS computes the same route assignments as those the routers would select in a full mesh iBGP configuration, the first invariant can and/or will always hold, for the same reason that it can hold in the case of full mesh iBGP configuration. In a full mesh, each router can simply select the egress router with the shortest IGP path. All routers along the shortest path to that egress also can select the same closest egress router. The second invariant can be satisfied because the RCS need never assign an egress router to a router in some other partition. Generally, the RCS has considerable flexibility in assigning paths; the RCS can and/or must guarantee that these properties hold even when it is not emulating a full mesh configuration.
Path visibility: Every router can and/or should be able to exchange routes with at least one RCS. Each router in the AS can and/or should receive some route to an external destination, assuming one exists. To ensure that this property is satisfied, each partition can and/or must have at least one IGP Viewer, one BGP Engine, and one RCS. Replicating these modules can reduce the likelihood that a group of routers is partitioned such that it cannot reach at least one instance of these three components. If the RCS is replicated, then two replicas might assign BGP routes to groups of routers along the same IGP path between a router and an egress. To guarantee that two replicas do not create forwarding loops when they assign routes to routers in the same partition, they can and/or must make consistent routing decisions. If a network has multiple RCS's, the route computation performed by the RCS can and/or must be deterministic: the same IGP topology and BGP route inputs can and/or must always produce the same outcome for the routers.
If a partition forms such that a router is partitioned from RCP, then we note that (1) the situation need be no worse than today's scenario, when a router cannot receive BGP routes from its route reflector and (2) in many cases, the router can still route packets using the routes it learns via eBGP, which will likely be its best routes since it is partitioned from most of the remaining network anyway.
3.2 Consistency with Distributed RCP
In this section, we discuss the potential consistency problems introduced by replicating and distributing the RCP modules. To be robust to network partitions and avoid creating a single point of failure, the RCP modules can and/or should be replicated. (We expect that many possible design strategies will emerge for assigning routers to replicas. Possible schemes include using the closest replica, having primary and backup replicas, etc.) Replication can introduce the possibility that each RCS replica might have different views of the network state (i.e., the IGP topology and BGP routes). These inconsistencies might be either transient or persistent and could create problems such as routing loops if routers were learning routes from different replicas. Note that the seriousness of these inconsistencies can depend on the mechanism that routers use to forward packets to a chosen egress router. If the AS uses an IGP to forward packets between ingress and egress routers, then inconsistent egress assignments along a single IGP path could result in persistent forwarding loops. On the other hand, if the AS runs a tunneling protocol (e.g., MPLS) to establish paths between ingress and egress routers, inconsistent route assignments are not likely to cause loops, assuming that the tunnels themselves are loop-free. The potential for these inconsistencies would seem to create the need for a consistency protocol to ensure that each RCS replica has the same view of the network state (and, thus, make consistent routing decisions). In this section, we discuss the nature and consequences of these inconsistencies and present the surprising result that no consistency protocol is necessarily required to prevent persistent inconsistencies.
After discussing why we are primarily concerned with consistency of the RCS replicas in steady state, we explain how our replication strategy can guarantee that the RCS replicas make the same routing decisions for each router in the steady state. Specifically, we show that, if multiple RCS replicas have IGP connectivity to some router in the AS, then those replicas can and/or will all make the same path assignment for that router. We focus our analysis on the consistency of RCS path assignments in steady state, which is shown in
3.2.1 Transient vs. Persistent Inconsistencies
Since each replica might receive BGP and IGP updates at different times, the replicas might not have the same view of the routes to every destination at any given time; as a result, each replica might make different routing decisions for the same set of routers.
We are concerned with the consistency of routes for each destination after the transient period has ended. Because the network might actually be partitioned in “steady state”, the RCP can and/or must still consider network partitions that might exist during these periods. Note that any intra-AS routing protocol, including any iBGP configuration, can and/or will temporarily have inconsistent path assignments when BGP and IGP routes are changing continually. Comparing the nature and extent of these transient inconsistencies in RCP to those that occur under a typical iBGP configuration is an area for future work.
3.2.2 RCP Replicas are Consistent in Steady State
The RCS replicas can and/or should make consistent routing decisions in steady state. Although it might seem that such a consistency requirement mandates a separate consistency protocol, we show in this section that such a protocol is not necessary.
Proposition 1 If multiple RCS's assign paths to routers in Pi, then each router in Pi would receive the same route assignment from each RCS.
Proof. Recall that two RCS's will only make different assignments to a router in some partition Pi if the replicas receive different inputs (i.e., as a result of having BGP routes from different groups of routers or different views of IGP topology). Suppose that RCS's 2 and 3 both assign routes to some router in Pi. By Observation 1, both RCS's 2 and 3 must have IGP topology information for all routers in Pi, and from Observation 2, they also have complete BGP routing information. It follows from Observation 3 that both RCS's 2 and 3 can make route assignments for all routers in Pi. Furthermore, since both RCS's have complete IGP and BGP information for the routers in Pi (i.e., the replicas receive the same inputs), then RCS's 2 and 3 will make the same route assignment to each router in Pi.
We note that certain failure scenarios might violate Observation 2; there may be circumstances under which IGP-level connectivity exists between the BGP engine and some router but, for some reason, the iBGP session fails (e.g., due to congestion, misconfiguration, software failure, etc.). As a result, Observation 3 might be overly conservative, because there might exist routers in some partition for which two RCS's might have BGP routing information from different subsets of routers in that partition. If this is the case, then, by design, neither RCS will assign routes to any routers in this partition, even though, collectively, both RCS's have complete BGP routing information. In this case, not having a consistency protocol affects liveness, but not correctness; in other words, two or more RCS's might fail to assign routes to routers in some partition even when they collectively have complete routing information, but in no case will two or more RCS's assign different routes to the same router.
To demonstrate the feasibility of the RCP architecture, this section presents the design and implementation of an exemplary RCP prototype. Scalability and efficiency pose the main challenges, because backbone AS's typically have many routers (e.g., 500-1000) and destination prefixes (e.g., 150,000-200,000), and the routing protocols typically must converge quickly. First, we describe how the prototype RCS computes the BGP routes for each group of routers in response to BGP and IGP routing changes. We then explain how the prototype IGP Viewer obtains a view of the IGP topology and provides the RCS with only the necessary information for computing BGP routes. Our prototype of the IGP Viewer is implemented for OSPF; when describing our prototype, we will describe the IGP Viewer as the “OSPF Viewer”. Finally, we describe how the prototype BGP Engine exchanges BGP routing information with the routers in the AS and the RCS.
4.1 Prototype Route Control Server (RCS)
The RCS processes messages received from both the BGP Engine(s) and the OSPF Viewer(s).
Store only a single copy of each BGP route. Storing a separate copy of each router's BGP routes for every destination prefix would require an extraordinary amount of memory. To reduce storage requirements, the RCS only stores routes in the RIB-In table. The next hop attribute of the BGP route uniquely identifies the egress router where the BGP route was learned. Upon receiving an update message, the RCS can index the RIB-In by prefix and can add, update, or remove the appropriate route based on the next-hop attribute. To implement the RIB-Out, the RCS employs per-router shadow tables as a prefix-indexed trie containing pointers to the RIB-In table.
Keep track of the routers that have been assigned each route. When a route is withdrawn, the RCS must recompute the route assignment for any router that was using the withdrawn route. To quickly identify the affected routers, each route stored in the RIB-In table includes a list of back pointers to the routers assigned this route. For example,
Maintain a ranking of egress routers for each router based on IGP path cost. A single IGP pathcost change may affect the BGP decisions for many destination prefixes at the ingress router. To avoid revisiting the routing decision for every prefix and router, the RCS maintains a ranking of egress points for each router sorted by the IGP path cost to the egress point (the “Egress lists” table in
Assign routes to groups of related routers. Rather than computing BGP routes for each router, the RCS can assign the same BGP route for a destination prefix to a group of routers. These groups can be identified by the IGP Viewer or explicitly configured by the network operator. When the RCS uses groups, the RIB-Out and Egress-lists tables have entries for each group rather than each router, leading to a substantial reduction in storage and CPU overhead. The RCS also maintains a list of the routers in each group to instruct the BGP Engine to send the BGP routes to each member of the group. Groups introduce a trade-off between the desire to reduce overhead and the flexibility to assign different routes to routers in the same group. In our prototype implementation, we use the Points-of-Presence (which correspond to OSPF areas) to form the groups, essentially treating each POP as a single “node” in the graph when making BGP routing decisions.
4.2 Prototype IGP Viewer Instance: OSPF Viewer
The OSPF Viewer connects to one or more routers in the network to receive link-state advertisements (LSAs), as shown in
Send only path-cost changes to the RCS. In addition to originating an LSA upon a network change, OSPF periodically refreshes LSAs even if the network is stable. The OSPF Viewer filters the refresh LSAs since they do not require any action from the RCS. The OSPF Viewer does so by maintaining the network state as a topology model (see reference 9), and uses the model to determine whether a newly received LSA indicates a change in the network topology, or is merely a refresh as shown in
The OSPF Viewer must capture the influence of OSPF areas on the path costs. For scalability purposes, an OSPF domain may be divided into areas to form a hub-and-spoke topology. Area 0, known as the backbone area, forms the hub and provides connectivity to the non-backbone areas that form the spokes. Each link belongs to exactly one area. The routers that have links to multiple areas are called border routers. A router learns the entire topology of the area it has links into through “intra-area” LSAs. However, it does not learn the entire topology of remote areas (i.e., the areas in which the router does not have links), but instead learns the total cost of the paths to every node in remote areas from each border router the area has through “summary” LSAs.
It may seem that the OSPF Viewer can perform the SPF calculation over the entire topology, ignoring area boundaries. However, OSPF mandates that if two routers belong to the same area, the path between them must stay within the area even if a shorter path exists that traverses multiple areas. As such, the OSPF Viewer cannot ignore area boundaries while performing the calculation, and instead has to perform the calculation in two stages. In the first stage, termed the intra-area stage, the viewer computes path costs for each area separately using the intra-area LSAs as shown in
Reduce overhead at the RCS by combining routers into groups. The OSPF Viewer can capitalize on the area structure to reduce the number of routers the RCS must consider. To achieve this, the OSPF Viewer: (i) provides path cost information for all area 0 routers (which also includes border routers in non-zero areas), and (ii) forms a group of routers for each non-zero area and provides this group information. As an added benefit, the OSPF Viewer does not need physical connections to non-zero areas, since the summary LSAs from area 0 allows it to compute path costs from every area 0 router to every other router. The OSPF Viewer also uses the summary LSAs to determine the groups of routers. It is potentially important to note that combining routers into groups is a construct internal to the RCP to improve efficiency, and it does not require any protocol or configuration changes in the routers.
4.3 Prototype BGP Engine
The BGP Engine receives BGP messages from the routers and sends them to the RCS. The BGP Engine also receives instructions from the RCS to send BGP routes to individual routers. We have implemented the BGP Engine by modifying the Quagga (see reference 11) software router to store the outbound routes on a per-router basis and accept route assignments from the RCS rather than computing the route assignments itself. The BGP Engine off-loads work from the RCS by applying the following two design insights:
Cache BGP routes for efficient refreshes. The BGP Engine stores a local cache of the RIB-In and RIB-Out. The RIB-In cache allows the BGP Engine to provide the RCS with a fresh copy of the routes without affecting the routers, which makes it easy to introduce a new RCS replica or to recover from an RCS failure. Similarly, the RIB-Out cache allows the BGP Engine to re-send BGP route assignments to operational routers without affecting the RCS, which is useful for recovering from the temporary loss of iBGP connectivity to the router. Because routes are assigned on a per-router basis, the BGP Engine maintains a RIB-Out for each router, using the same kind of data structure as the RCS.
Manage the low-level communication with the routers. The BGP Engine provides a simple, stable layer that interacts with the routers and maintains BGP sessions with the routers and multiplexes the update messages into a single stream to and from the RCS. It manages a large number of TCP connections and supports the low-level details of establishing BGP sessions and exchanging updates with the routers.
In this section, we evaluate our prototype implementation, with an emphasis on the scalability and efficiency of the system. The purpose of the evaluation is twofold. First, to determine the feasible operating conditions for our prototype, i.e., its performance as a function of the number of prefixes and routes, and the number of routers or router groups. Second, we want to determine what the bottlenecks (if any), would require further enhancements. We present our methodology in Section 5.1 and the evaluation results in Sections 5.2 and 5.3. In Section 5.4 we present experimental results of an approach that weakens the current tight coupling between IGP path-cost changes and BGP decision making.
5.1 Methodology
For a realistic evaluation, we use BGP and OSPF data collected from a Tier-1 ISP backbone on Aug. 1, 2004. The BGP data contains both time-stamped BGP updates as well as periodic table dumps from the network. Note that we filtered the BGP data so that only externally learned BGP updates were used. This represents the BGP traffic that an RCP would process when deployed. Similarly, the OSPF data contains time-stamped Link State Advertisements (LSAs). We developed a router emulator tool that reads the time-stamped BGP and OSPF data and then “plays back” these messages against instrumented implementations of the prototype RCP components. To initialize the prototype RCS to realistic conditions, the router emulator reads and replays the BGP table dumps before any experiments are conducted.
By selectively filtering the data, we use this single data set to consider the impact of network size (i.e., the number of routers or router groups in the network) and number of routes (i.e., the number of prefixes for which routes were received). We vary the network size by only calculating routes for a subset of the router groups in the network. Similarly, we only consider a subset of the prefixes to evaluate the impact of the number of routes on the prototype RCP. Considering a subset of routes is relevant for networks that do not have to use a full set of Internet routes but might still benefit from the RCP functionality, such as private or virtual private networks.
For the RCS evaluation, the metrics of potentially greatest interest are (i) the time taken to perform customized per-router route selection under different conditions and (ii) the memory required to maintain the various data structures. We measure these metrics in three ways:
Whitebox: First, we perform whitebox testing by instrumenting specific RCS functions and measuring on the RCS both the memory usage and the time required to perform route selection when BGP and OSPF related messages are being processed.
Blackbox no queuing: For blackbox no queuing, the router-emulator replays one message at a time and waits to see a response before sending the next message. This technique measures the additional overhead of the message passing protocol needed to communicate with the RCS.
Blackbox real-time: For blackbox real-time testing, the router-emulator replays messages based on the timestamps recorded in the data. In this case, ongoing processing on the RCS can cause messages to be queued, thus increasing the effective processing times as measured at the router-emulator.
For all blackbox tests, the RCS sends routes back to the router-emulator to allow measurements to be done.
In Section 5.2, we focus our evaluation on how the RCP processes BGP updates and performs customized route selection. Our BGP Engine implementation extends the Quagga BGP daemon process and as such inherits many of its qualities from Quagga. Since we made no enhancements to the BGP protocol part of the BGP Engine but rely on the Quagga implementation we do not present an evaluation of its scalability herein. Note that our modular architecture would allow other BGP Engine implementations to be utilized if needed. Indeed, if required for scalability reasons, multiple BGP Engines can be deployed to “cover” a network. Our main enhancement, the shadow tables maintained to realize per-router RIB-Outs, use the same data structures as the RCS, and hence, the evaluation of the RCS memory requirements is sufficient to show its feasibility.
In Section 5.3, we present an evaluation of the exemplary OSPF Viewer and the OSPF-related processing in the RCS. We evaluate the OSPF Viewer by having it read and process LSAs that were previously dumped to a file by a monitoring process. The whitebox performance of the OSPF Viewer is determined by measuring the time it takes to calculate the all pairs shortest paths and OSPF groups. The OSPF Viewer can also be executed in a test mode where it can log the path cost changes and group changes that would be passed to the RCS under normal operating conditions. The router-emulator reads and then plays back these logs against the RCS for blackbox evaluation of the RCS OSPF processing.
The evaluations were performed with the RCS and OSPF Viewer running on a dual 3.2 GHz Pentium-4 processor Intel system with 8 GB of memory and running a Linux 2.6.5 kernel. We ran the router-emulator on a 1 GHz Pentium-3 Intel system with 1 GB of memory and running a Linux 2.4.22 kernel.
5.2 BGP Processing
We saw more than 200,000 unique prefixes in our data. The effectiveness of the RCS shadow tables is evident by the modest rate of increase of the memory needs as the number of groups are increased. For example, storing all 203,000 prefixes for 1 group takes 175 MB, while maintaining the table for 2 groups only requires an additional 21 MB, because adding a group only increases the number of pointers into the global table, not the total number of unique routes maintained by the system. The total amount of memory needed for all prefixes and 100 groups is 2.2 GB, a fairly modest amount of memory by today's standards. We also show the memory requirements for networks requiring fewer prefixes.
For the BGP (only) processing considered in this subsection, we evaluate the RCS using 100 groups, all 203,000 prefixes and BGP updates only. Specifically, for these experiments the RCS used static IGP information and no OSPF related events were played back at the RCS.
5.3 OSPF and Overall Processing
In this section, we first evaluate only the OSPF processing of RCP by considering both the performance of the exemplary OSPF Viewer and the performance of the RCS in processing OSPF-related messages. Then we evaluate the overall performance of RCP for combined BGP and OSPF related processing.
OSPF: Recall that per LSA processing on the OSPF Viewer depends on the type of LSA. Table 2 shows the breakdown of LSA traffic into these types for Aug. 1, 2004 data. Note that the refreshes account for 99.9% of the LSAs and require minimal processing in the OSPF Viewer; furthermore, the OSPF Viewer completely shields RCS from the refresh LSAs. For the remaining, i.e., change LSAs, Table 3 shows the whitebox, blackbox no queuing, and blackbox real-time measurements of the OSPF Viewer, as mean LSA processing time (in seconds). The table also shows the breakdown of white-box measurements into various calculation steps.
The results in Table 3 allow us to make several potentially important conclusions. First, and potentially most importantly, the OSPF Viewer can process all change LSAs in a reasonable amount of time. Second, the SPF calculation and path cost change steps are the main contributors to the processing time. Third, the area 0 change LSAs take an order of magnitude more processing time than non-zero change LSAs, since area 0 changes require re-computing the path costs to every router; fortunately, the delay is still less than 0.8 seconds and, as shown in Table 2, area 0 changes are responsible for a very small portion of the change LSA traffic.
We now consider the impact of OSPF related events on the RCS processing times. Recall that OSPF events can cause the recalculation of routes by the RCS. We consider OSPF related events in isolation by playing back to the RCS only OSPF path cost changes; i.e., the RCS was pre-loaded with BGP table dumps into a realistic operational state, but no other BGP updates were played back.
Overall: The above evaluation suggests that processing OSPF path cost changes would dominate the overall processing time. This is indeed the case and
5.4 Decoupling BGP from IGP
Although our RCP prototype handles BGP update messages very quickly, processing the internal topology changes introduces a significant challenge. The problem stems from the fact that a single event (such as a link failure) can change the IGP path costs for numerous pairs of routers, which can change the BGP route assignments for multiple routers and destination prefixes. This is fundamental to the way the BGP decision process uses the IGP path cost information to implement hot-potato routing.
The vendors of commercial routers also face challenges in processing the many BGP routing changes that can result from a single IGP event. In fact, some vendors do not execute the BGP decision process after IGP events and instead resort to performing a periodic scan of the BGP routing table to revisit the routing decision for each destination prefix. For example, some versions of commercial routers scan the BGP routing table once every 60 seconds, introducing the possibility of long inconsistencies across routers that cause forwarding loops to persist for tens of seconds (see reference 20). The router can be configured to scan the BGP routing table more frequently, at the risk of increasing the processing load on the router.
RCP arguably faces a larger challenge from hot-potato routing changes than a conventional router, since RCP can and/or must compute BGP routes for multiple routers. Although optimizing the software would reduce the time for RCP to respond to path-cost changes, such enhancements cannot make the problem disappear entirely. Instead, we believe RCP should be used as a platform for moving beyond the artifact of hot-potato routing. In today's networks, a small IGP event can trigger a large, abrupt shift of traffic in a network (see reference 20). We would like RCP to prevent these traffic shifts from happening, except when they are necessary to avoid congestion or delay.
To explore this direction, we performed an experiment where the prototype RCP would not have to react to all internal IGP path cost changes, but only to those that impact the availability of the tunnel endpoint. We assume a backbone where RCP can freely direct an ingress router to any egress point that has a BGP route for the destination prefix, and can have this assignment persist across internal topology changes. This would be the case in a “BGP-free” core network, where internal routers do not have to run BGP, for example, an MPLS network or indeed any tunneled network. The edge routers in such a network still run BGP and therefore would still use IGP distances to select amongst different routes to the same destination. Some commercial router vendors accommodate this behavior by assigning an IGP weight to the tunnels and treating the tunnels as virtual IGP links. In the case of RCP, we need not necessarily treat the tunnels as IGP links, but would still need to assign some ranking to tunnels in order to facilitate the decision process.
We simulate this kind of environment by only considering OSPF path cost changes that would affect the availability of the egress points (or tunnel endpoints) but ignoring all changes that would only cause internal topology changes. The results for this experiment are shown with the filtered lines in
The results presented herein, while potentially important, do not tell the whole story. From a network-wide perspective, we ultimately want to understand how long an RCP-enabled network will take to converge after a BGP event. Our initial results, presented in the technical report version of this description (see reference 24), suggest that RCP convergence should be comparable to that of an iBGP route reflector hierarchy. In an iBGP topology with route reflection, convergence can actually take longer than with RCP in cases where routes must traverse the network multiple times before routing converges.
The networking research community has been struggling to find an effective way to redesign the Internet's routing architecture in the face of the large installed base of legacy routers and the difficulty of having a “flag day” to replace BGP. We believe that RCP provides an evolutionary path toward improving, and gradually replacing, BGP while remaining compatible with existing routers.
This description takes a potentially important first step by demonstrating that RCP is a viable alternative to the way BGP routes are distributed inside AS's today. RCP can emulate a full-mesh iBGP configuration while substantially reducing the overhead on the routers. By sending a customized routing decision to each router, RCP can avoid the problems with forwarding loops and protocol oscillations that have plagued route-reflector configurations. RCP can assign routes consistently even when the functionality is replicated and distributed. Experiments with our initial prototype implementation show that the delays for reacting to BGP events are small enough to make RCP a viable alternative to today's iBGP architectures. We also showed the performance benefit of reducing the tight coupling between IGP path cost changes and the BGP decision process.
Thus, certain exemplary embodiments comprise a method comprising a plurality of activities, comprising: for each of the plurality of routing entities in an AS: obtaining IGP topology information; learning available BGP routes associated with the routing entity; utilizing the available BGP routes and the IGP topology information for all routing entities in the AS, assigning the routing entity a customized routing decision comprising a BGP route; and sending the customized routing decision to the routing entity.
At activity 13100, for each of the plurality of routing entities in the AS, via one or more Interior Gateway Protocol (IGP) sessions with the routing entity, an IGP adjacency to the routing entity can be established. At activity 13200, for each of the plurality of routing entities in the AS, via the one or more Interior Gateway Protocol (IGP) sessions with the routing entity, link state advertisements can be received from the routing entity. At activity 13300, for each of the plurality of routing entities in the AS, via the one or more Interior Gateway Protocol (IGP) sessions with the routing entity, IGP topology information can be maintained. At activity 13400, for each of the plurality of routing entities in the AS, via one or more Internal Border Gateway Protocol (IBGP) sessions with the routing entity, available BGP routes associated with the routing entity can be learned in real-time. At activity 13500, pair-wise shortest paths for all routing entities in the AS can be computed. At activity 13600, based on the computer pair-wise shortest paths, for each routing entity in the AS, a closest egress routing entity can be determined. At activity 13700, utilizing the available BGP routes and the IGP topology information for all routing entities in the AS, for each destination prefix and each routing entity, the routing entity can be assigned a customized routing decision comprising a BGP route. At activity 13800, for each destination prefix and each routing entity, the customized routing decision can be sent to the routing entity via IBGP. At activity 13900, for one or more selected routing entities, the assigned BGP route can shift predetermined traffic to a predetermined and/or alternative destination.
In certain exemplary embodiments, via one or more user interfaces 14600, such as a graphical user interface, a user and/or operator can view a rendering of information related to specifying, designing, configuring, simulating, operating, maintaining, restoring, and/or managing, etc., one or more RCP's, AS's, and/or networks.
Incorporated by reference herein in its entirety is U.S. patent application Ser. No. 11/019,845, filed 22 Dec. 2004.
Definitions
When the following terms are used substantively herein, the accompanying definitions apply:
network interface—any device, system, or subsystem capable of coupling an information device to a network. For example, a network interface can be a telephone, cellular phone, cellular modem, telephone data modem, fax modem, wireless transceiver, Ethernet card, cable modem, digital subscriber line interface, bridge, hub, router, or other similar device.
Still other embodiments will become readily apparent to those skilled in this art from reading the above-recited detailed description and drawings of certain exemplary embodiments. It should be understood that numerous variations, modifications, and additional embodiments are possible, and accordingly, all such variations, modifications, and embodiments are to be regarded as being within the spirit and scope of this application. For example, regardless of the content of any portion (e.g., title, field, background, summary, abstract, drawing figure, etc.) of this application, unless clearly specified to the contrary, such as via an explicit definition, there is no requirement for the inclusion in any claim herein (or of any claim of any application claiming priority hereto) of any particular described or illustrated characteristic, function, activity, or element, any particular sequence of activities, or any particular interrelationship of elements. Moreover, any activity can be repeated, any activity can be performed by multiple entities, and/or any element can be duplicated. Further, any activity or element can be excluded, the sequence of activities can vary, and/or the interrelationship of elements can vary. Accordingly, the descriptions and drawings are to be regarded as illustrative in nature, and not as restrictive. Moreover, when any number or range is described herein, unless clearly stated otherwise, that number or range is approximate. When any range is described herein, unless clearly stated otherwise, that range includes all values therein and all subranges therein. Any information in any material (e.g., a United States patent, United States patent application, book, article, etc.) that has been incorporated by reference herein, is only incorporated by reference to the extent that no conflict exists between such information and the other statements and drawings set forth herein. In the event of such conflict, including a conflict that would render invalid any claim herein or seeking priority hereto, then any such conflicting information in such incorporated by reference material is specifically not incorporated by reference herein.
This application is a continuation of, claims priority to, and incorporates by reference in its entirety, U.S. patent application Ser. No. 11/205,396, filed 17 Aug. 2005, titled “Systems, Methods, and Devices for Managing Routing”, and claims priority to, and incorporates by reference in its entirety U.S. Provisional Patent Application Ser. No. 60/694,117, filed 24 Jun. 2005, and titled “Systems, Devices, and Methods for Routing Control”.
Number | Date | Country | |
---|---|---|---|
60694117 | Jun 2005 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 11205396 | Aug 2005 | US |
Child | 11270843 | Nov 2005 | US |