# Patent

## Title
Methods and apparatus for Internet-scale routing using small-scale border routers

## Abstract

Methods and apparatus for Internet-scale routing using small-scale border routers and IP tunneling are described. Each border router is directly connected to a transit provider. Routing protocol peerings may be passed via the border routers through tunnels to a routing service; the routing service and the transit provider router(s) appear to be directly adjacent routing peers. The routing service receives routing data from the transit provider(s), maintains the routing data in a routing table, and processes the routing data in the routing table to select best paths. A mapping service may be informed, by the routing service, of a best exit point (or points) for each Internet prefix of each packet to be routed on the Internet. Outbound packets from devices on the network to the Internet, and inbound packets from the Internet to the network devices, may be encapsulated and passed through tunnels as directed by the mapping service.

## Background
This application is a continuation of U.S. application Ser. No. 12/825,212, filed Jun. 28, 2010, which is hereby incorporated by reference in its entirety.


BACKGROUND
Network/Internet Routing
The Internet, sometimes called simply “the Net,” is a worldwide system of computer networks in which any one computer on a network may, with proper permission, obtain information from, or send information to, any other computer on any other network on the Internet. Routing may be defined as the process of selecting paths, or routes, on a network along which to send network traffic. In computer networks, including the Internet, routing technologies direct the transit of data from a source to a destination through various intermediate devices (which may be collectively referred to as routers). A key routing technology for the Internet is the routing protocol. Currently, the routing protocol used on the Internet is Border Gateway Protocol (BGP), defined originally in Network Working Group Request for Comments (RFC) 1771 and updated in RFC 4271. RFC 4271 defines BGP as an inter-Autonomous System (AS) routing protocol. BGP-enabled systems or devices on a network exchange network reachability (routing) information with other BGP systems or devices on the network. When a BGP-enabled system establishes a BGP connection to another system on a network, the systems interchange BGP messages to update Internet routing information on the systems. The collection of routing information on a BGP system is generally referred to as a routing table. BGP may be used for routing data internally on networks and for routing data external to networks (e.g., from one network to another on the global Internet). BGP used internally on networks may be referred to as internal BGP (iBGP); external (Internet) BGP may be referred to as eBGP.
On the global Internet, connectivity between networks may be provided by transit providers. (However, networks may also establish peer connections). Transit providers may be defined as generally large networks expressly for the purpose of providing connectivity for the Internet. A transit provider network is sometimes referred to as a “backbone.” Transit providers may be, but are not necessarily, commercial enterprises that charge for routing packets via their network infrastructure. Transit providers may provide local, regional, or international/global routing on the Internet. Examples of transit providers include, but are not limited to, Verizon® and Level 3® Communications.
Generally, to use a transit provider, a network must have at least one physical connection, e.g. a fiber optic or cable connection, to at least one transit provider edge or border router, via which routing protocol information, and data packets, may be exchanged. While a network may connect to a single transit provider to establish a presence on the Internet via the transit provider, many networks, especially larger networks (e.g., carriers, content delivery networks (CDNs), and large enterprises), may establish and maintain such connections to multiple transit providers. FIG. 1A illustrates several networks 120A through 120F each physically connected to two transit providers 110A and 110B. The device(s) on a network 120 that are physically connected to transit provider border routers may generally be referred to as border routers. Networks 120 may include a range of networks from small networks, such as local networks for small businesses, schools, government entities, or other relatively small public or private enterprises, to large networks, such as networks for large businesses, schools, government entities, or other relatively large public or private enterprises. Networks 120 may also include local or regional Internet Service Providers (ISP) that provides Internet connectivity to residential customers, small entities, etc. Networks 120 may also include the networks of commercial Web enterprises or e-businesses that, for example, provide electronic retail sales or web services to customers via the Internet. A network 120 may include two or more subnetworks, data centers, smaller local networks, or other network components that are interconnected to form a larger network 120.
FIG. 1B illustrates example routes between two networks provided by two transit providers. Border routers of networks 120A and 120B are physically connected to border routers of transit providers 110A and 110B. Each transit provider 110 may provide one or more paths or routes between networks 120A and 120B via which packets may be sent. Each route passes through one or more nodes of the respective transit provider 110. A node may be a switch, router, computer system, or any other networking component. A path may pass through one or more external nodes as shown on route 110A1. An external node may, for example, be a border router of another network. Each route may include one or more “hops,” the connection between two nodes via which packets are exchanged. As shown in FIG. 1B, some routes may have fewer hops than other routes. For example, route 110A3 includes two hops (ignoring the physical connections between the border routers), while route 110B2 includes four hops. Each transit provider 110 provides routing information to each connected network 120 via routing protocol (e.g., BGP) sessions established between the border routers. This routing information includes descriptions of the routes provided by the respective transit provider 110 between the networks 120A and 120B, as well as the descriptions of routes to other networks 120.
Conventionally, the border router and transit provider router establish a routing protocol (e.g., BGP) connection over the physical connection, and the transit provider router provides the border router with routing information available through the transit provider. The border router collects and stores this routing information (and routing information from other transit providers, if any, that the border router is connected to) as a routing table. The routing table for the global Internet may be referred to as the global Internet routing table. The network border router may perform other functions on the routing information, for example assuring that there are no “loop” routes in the routing table by excluding routes that include the network's border router.
The global Internet routing table is large, currently including over 300,000 routes, and is growing steadily. Many networks, for example carriers, content delivery networks (CDNs), and large enterprise networks, may need to route their external traffic based on the entire Internet routing table. Larger networks are generally connected to two or more transit providers and peers, and must choose appropriate routes to different parts of the Internet. Most other types of routing (enterprise and much of what happens internally within data centers or networks) may require much smaller routing tables (1000s of routes); Internet-bound traffic is handed off to transit providers for routing. Generally, high speed routing (10 gb and up) is hardware accelerated: custom ASICs (Application-Specific Integrated Circuits) perform the bulk of the work, with traditional CPUs (Central Processing Units) performing control-plane functions. A key feature of these ASICs is the size of the forwarding table or Forwarding Information Base (FIB) that they support. Larger FIBs substantially increase the cost and complexity of the ASICs.
A result of the above is that the route table capacity of networking devices has become bi-modal in distribution between Internet-scale routers and commodity routers. Internet-scale routers (referred to herein as large-scale routers) may support one million or more routes. These large-scale routers are manufactured by a relatively small number of companies (e.g., Cisco® Systems, Inc. and Juniper® Networks, Inc.), tend to be expensive (e.g., $300,000-$1,000,000), and sell in relatively small volumes. In addition, these systems are generally proprietary systems that typically do not support customization or user extension. Commodity routers (referred to herein as small-scale routers) support a much smaller number of routes (e.g., 16K-32K routes), and high market volume tends to keep prices relatively low (e.g., $15,000 and under). Most networks use these small-scale routers for internal network routing (e.g., using Open Shortest Path First (OSPF)), although some very large networks may use large-scale routers for at least some internal networking.
FIG. 1C illustrates a network connected to the Internet via physical connections between transit providers and large-scale border router(s), according to the prior art. Network 120A may include multiple computing and peripheral devices 150 such as servers, workstations, printers, storage systems, etc., which may be referred to as endpoint devices, as well as multiple internal networking devices 140 such as internal (generally small-scale) routers, switches, bridges, etc. Network 120A may need to route inbound and outbound external traffic to other networks or devices on the Internet based on the entire Internet routing table 132. Conventionally, because of the large number of routes in the global Internet routing table (300,000+), network 120 will include one or more large-scale border routers 130 that are each physically connected to one or more transit provider 110 border routers, that each establish BGP sessions with connected transit providers 110, and that are each configured to store the full Internet routing table 132.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1A illustrates an example of networks each connected to two transit providers.
FIG. 1B illustrates an example of routes between two networks provided by two transit providers.
FIG. 1C illustrates an example network connected to the Internet via physical connections between transit providers and large-scale border router(s).
FIG. 2 illustrates an example network with full Internet access using small-scale, commodity routers, according to at least some embodiments.
FIG. 3 illustrates establishing a routing protocol peering between a transit provider and a routing service, according to at least some embodiments.
FIG. 4 illustrates a method for routing a packet from a network device onto the Internet, according to some embodiments.
FIG. 5 illustrates a method for routing a packet received from the Internet to a target device on a network, according to some embodiments.
FIG. 6 illustrates an example network that implements hardware virtualization technology and that provides full Internet access using small-scale, commodity routers, according to at least some embodiments.
FIG. 7 illustrates a method for routing a packet from a virtual machine (VM) on a network implementing hardware virtualization technology onto the Internet, according to some embodiments.
FIG. 8 illustrates a method for routing a packet received from the Internet to a target VM on a network implementing hardware virtualization technology, according to some embodiments.
FIG. 9 illustrates establishing a routing protocol peering between a transit provider and a routing service using a TCP proxy, according to at least some embodiments.
FIG. 10 is a block diagram illustrating an example computer system that may be used in some embodiments.



While embodiments are described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that embodiments are not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit embodiments to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include,” “including,” and “includes” mean including, but not limited to.
DETAILED DESCRIPTION OF EMBODIMENTS
Various embodiments of methods and apparatus for achieving Internet-scale routing using small route table commodity devices (i.e., small-scale routers) and Internet Protocol (IP) tunneling are described. Conventionally, because of the large number of routes in the global Internet routing table, a network wishing to perform Internet-scale routing would include one or more large-scale border routers each physically connected to one or more transit providers and each capable of storing the entire global Internet routing table. Embodiments may provide a combined hardware and software solution that enables the configuration of very high capacity networks with full Internet access using small-scale, commodity routers that are not capable of storing the entire Internet routing table as border routers, rather than large-scale routers as is conventionally required to support full Internet access using the entire Internet routing table. In addition to the small-scale routers used as border routers, at least some embodiments may employ an Internet Protocol (IP) tunneling technology to provide the overlay network, a routing service technology, and a mapping service technology. Each of these technologies is further described below in reference to FIG. 2.
Using these technologies and small-scale routers as border routers, embodiments enable the routing of traffic to and from the Internet without a large-scale router in the traffic path that is capable of holding the entire Internet routing table. This allows a network to be configured to support Internet-scale routing at less cost than conventional systems employing large-scale routers as border routers. The use of small-scale routers as border routers may also add flexibility to routing, as a network employing small-scale border routers, routing service technology, and mapping service technology may be more easily configurable to support the application of other parameters, such as business logic and network weather parameters, in routing decisions than are conventional networks employing large-scale routers as border routers.
FIG. 2 illustrates an example network with full Internet access using small-scale commodity routers, according to at least some embodiments. Internet transit providers 210 use a routing protocol (e.g., the external Border Gateway Protocol (eBGP)) to communicate with customers (e.g., network 220) and pass routing information to and fro. Conventionally, eBGP requires that an eBGP peering is established with an adjacent and directly connected peer, e.g. a directly connected border router such as large-scale border router 130 of FIG. 1C. The routing protocol session, once established (e.g., an eBGP session) then communicates routing information directly between the transit provider router and the directly connected border router (e.g., large-scale border router 130 of FIG. 1C). Referring again to FIG. 2, instead of using large-scale border routers, one or more small-scale border routers 230 may be directly connected to the transit provider 210 router(s). The small-scale border routers 230 may be commodity routers that support a smaller number of routes (e.g., 16K-32K routes) than do large-scale routers; market volume tends to keep prices of these small-scale routers relatively low (e.g., $15,000 and under) when compared to large-scale routers. In addition, small-scale routers are generally more flexible than large-scale routers, and are generally easier to program and configure for custom applications and custom routing preferences and parameters. Network devices that may be used in the small-scale border router space to implement the small-scale border routers may include, but are not limited to, general purpose servers, for example running Linux technology.
In some embodiments, each small-scale border router 230 is directly connected (e.g., via a fiber optic or cable connection) to one and only one transit provider 210. In some embodiments, the routing protocol peerings (e.g., eBGP peerings) are passed via the small-scale border routers 230 through transparent tunnels (provided via an overlay network, implemented according to an IP tunneling technology, on network 220) to a routing service 260 so that the routing service 260 and the transit provider 210 router(s) appear to be directly adjacent at Layer 2 of the network. In other embodiments, other methods may be used to establish the routing protocol peerings between the transit provider 210 router(s) and the routing service 260. For example, in some embodiments, a Transmission Control Protocol (TCP) pass-through proxy may be implemented on each border router 230. The TCP proxies passes through the routing protocol peerings via connections to the routing service 260 at the application layer of the network. Using these methods to establish routing protocol peerings between transit provider 210 router(s) and routing service 260, to routing protocol (e.g., eBGP) sessions on transit provider(s) 210, it appears as if the routing service 260 is an adjacent peer and a border router; the transit provider(s) 210 may not even be aware that the routing protocol peerings have been “tunneled” or passed through to the routing service 260.
Note that, in some embodiments, a border router 230 may be connected to more than one transit provider router or to more than one transit provider 210, with appropriate logic on the border router 230 to support decision making for the multiple exit paths to the Internet. Also, in some embodiments, more than one border router 230 may be connected to a given transit provider 210.
Routing Service
In at least some embodiments, the routing service 260 may be a software control system that may be implemented, for example, on one or more server systems, which may be standard commodity servers. However, in some embodiments, for example for smaller deployments, the routing service 260 may be implemented and executed in part or in full on other devices on the network than on dedicated server systems. For example, as well as serving as border routers, typical network devices that may be used in the small-scale border router space may also be general purpose servers, for example running Linux technology, on which other processes may be implemented. Thus, in some embodiments, the routing service 260 may be implemented at least in part on the border router(s) 230. In at least some embodiments, only routing information flows through the routing service 260 server(s); actual data traffic (data packets being sent from endpoint devices 250 to Internet destinations and data packets being received by endpoint devices 250 from Internet sources) does not traverse the routing service 260 server(s). Routing service 260 receives all upstream routing data from the Internet transit provider(s) 210, maintains the routing data in an Internet routing table 262, processes the routing data in routing table 262 to select best paths for each Internet prefix, and distributes the processed routing data to a mapping service 270.
In at least some embodiments, routing service 260 serves as the authoritative router for the network 220. As the authoritative router for the network, routing service 260 directs the routing of outgoing packets from endpoint devices 250 on the network 220 onto the Internet via the one or more network border routers 230 according to the routing information in the Internet routing table 262, and directs the routing of incoming packets from the Internet to endpoint devices 250 on the network 220. The network border routers 230 do not store the full Internet routing table, and do not direct the routing of packets to and from the Internet. Instead, to route packets, the network border routers 230 query the routing service 260 for routing information.
However, in some embodiments, the network border routers 230 may maintain a local cache of some routing information (but not the entire Internet routing table), for example routing information for high traffic routes and/or important routes such as a default route for outbound traffic. In these embodiments, when a network border router 230 receives a packet to be routed, the network border router 230 may first check the local cache to see if there is cached routing information for the packet. If there is cached routing information for the packet in the local cache, the network border router 230 may route the packet according to the cached routing information. If there is no cached routing information for the packet in the local cache, the network border router may query routing service 260 (or query mapping service 270, which obtains routing information from routing service 260) to obtain routing information for the packet, and route the packet according to the obtained routing information. The network border router 230 may, but does not necessarily, cache the obtained routing information in the local cache.
FIG. 3 illustrates establishing a routing protocol peering between a transit provider and a routing service, according to at least some embodiments. As indicated at 300, a routing protocol (e.g., BGP) session is established between a small-scale border router 230 and a transit provider 210 router. BGP (Border Gateway Protocol) is implemented on top of TCP (Transmission Control Protocol); to establish a BGP session, a TCP connection is first established between the border router 230 and the transit provider 210 router. As indicated at 302, routing messages are sent from the transit provider 210 to the border router 230 via the routing protocol session. As indicated at 304, the border router encapsulates the routing messages and sends the encapsulated messages to the routing service 260 via a tunnel on an overlay network implemented according to an IP tunneling technology. As indicated at 306, the routing service 260 strips the encapsulation from the routing messages and processes the routing information in the routing messages. At least some of the routing information is stored to Internet routing table 262.
Mapping Service
The mapping service 270 may be informed, by the routing service 260, of a best exit point (or points) for each Internet prefix of each packet to be routed on the Internet. In addition, the mapping service 270 may be configured to perform some functionality of the IP tunneling technology as described herein. Mapping service 270 may be aware of all network 220 IP prefixes and the IP addresses of routers or other devices serving IP addresses. Thus, various entities on the network 220 may query the mapping service 270 to obtain internal network 220 address information and/or Internet routing exit points. The mapping service 270 may be centralized, for example on a server system, or alternatively may be distributed on two or more server systems or other devices. For example, in some embodiments, the mapping service 270 may be implemented at least in part on the border router(s) 230. In at least some embodiments, actual data traffic does not traverse the mapping service 270 server(s).
The routing service 260 and the mapping service 270 may be implemented on separate devices or systems, or alternatively may both be implemented on the same device(s) or system(s). Furthermore, while FIG. 2 shows the routing service 260 and the mapping service 270 as separate elements, in some embodiments these two services may be merged into one service.
Routing Outbound Packets
FIG. 4 illustrates a method for routing a packet from a network device onto the Internet, according to some embodiments. In at least some embodiments, when a device 250 has a packet to send to an IP address, the device 250 queries the mapping service 270 to determine where to forward the packet, as indicated at 400. If this packet is destined for the Internet, the mapping service 270 obtains a best exit point for the Internet prefix indicated by the packet from the routing service 260, as indicated at 402. The mapping service 270 returns the IP address of the relevant border router 230 serving the best exit point to the device 250, as indicated at 404. The device 250 encapsulates the original packet in an IP tunneling encapsulation format and forwards the encapsulated packet across the network to the correct exit point (the relevant border router 230) via a tunnel 282, as indicated at 406. The border router 230 serving the exit point strips off the IP tunneling encapsulation to reveal the original packet and forwards the packet to the appropriate transit provider 210, as indicated at 408. The transit provider 210 routes the packet as normal to the indicated Internet IP address.
While the above describes the device 250 as querying the mapping service 270 to determine where to forward a packet when the device 250 has a packet to send to an IP address, it is not generally feasible to query the mapping service for every packet or even every flow. Thus, in at least some embodiments, devices such as device 250 may maintain a local cache of routing information. In some embodiments, the local cache may be pre-populated for some routes, for example for high traffic routes and/or important routes. The device 250 may first check the local cache to determine if there is cached routing information for the IP address. If the routing information is not in the local cache, then the device 250 may query the mapping service.
In some embodiments, instead of the device 250 querying the mapping service and encapsulating the packet, a router or other device 240 may receive the packet from device 250 and similarly query the mapping service, perform the encapsulation, and forward the packet to the relevant border router 230.
Routing Inbound Packets
FIG. 5 illustrates a method for routing a packet, received from the Internet, to a target device on a network, according to some embodiments. As indicated at 500, a small-scale border router 230 receives a packet from a transit provider 210. As indicated at 502, the border router 230 queries the mapping service 270 with a destination IP address on the network. Mapping service 270 is aware of all network 220 IP prefixes and the IP addresses of the router or other device serving the destination IP address. As indicated at 504, the mapping service 270 returns the IP address of the router or other device serving the destination IP address to the border router 230. As indicated at 506, the border router 230 encapsulates the original packet in an IP tunneling encapsulation format and forwards the encapsulated packet across the network via a tunnel 282 to the router or other device serving the destination IP address. As indicated at 508, the router or other device serving the IP address strips off the IP tunneling encapsulation and forwards the original packet to the destination IP address.
While the above describes the border router 230 as querying the mapping service 270 to determine where to forward a packet when the border router 230 has a packet to send to a destination IP address on the network, it is not generally feasible to query the mapping service for every packet or even every flow. Thus, in at least some embodiments, border router 230 may maintain a local cache of routing information. In some embodiments, the local cache on a border router 230 may be pre-populated for some routes, for example for high traffic routes and/or important routes. The border router 230 may first check the local cache to determine if there is cached routing information for an IP address. If the routing information is not in the local cache, then the border router 230 may query the mapping service.
IP Tunneling Technology
As mentioned above, at least some embodiments may employ an Internet Protocol (IP) tunneling technology to provide an overlay network via which routing protocol peerings between the transit providers 210 and the routing service 260 are established, and via which encapsulated packets may be passed through an IP tunneling substrate 280 using tunnels 282. The IP tunneling technology may provide a mapping and encapsulating system for creating an overlay network on a network (e.g., network 220 of FIG. 2) and may provide a separate namespace for the overlay layer and the substrate 280 layer. Packets in the overlay layer may be checked against a mapping directory (e.g., provided by mapping service 270) to determine what their tunnel substrate target should be. The IP tunneling technology provides a virtual network topology; the interfaces that are presented to “customers” are attached to the overlay network so that when a customer provides an IP address that they want to send packets to, the IP address is run in virtual space by communicating with a mapping service (e.g., mapping service 270) that knows where the IP overlay addresses are.
In at least some embodiments, the IP tunneling technology may map IP overlay addresses to substrate IP addresses, encapsulate the packets in a tunnel between the two namespaces, and deliver the packet to the correct endpoint via the tunnel, where the encapsulation is stripped from the packet. In some embodiments, the packet may be encapsulated in an IP tunneling packet format before sending, and the IP tunneling packet may be stripped after receiving. In other embodiments, instead of encapsulating packets in IP tunneling packets, an IP tunneling address may be embedded in a substrate address of a packet before sending, and stripped from the packet address upon receiving. As an example, the overlay network may be implemented using 32-bit IPv4 (Internet Protocol version 4) addresses, and the IPv4 addresses may be embedded as part of 128-bit IPv6 (Internet Protocol version 6) addresses used on the substrate network.
Example embodiments of an IP tunneling technology that may be used in at least some embodiments are described in U.S. patent application Ser. No. 12/060,074, titled “CONFIGURING COMMUNICATIONS BETWEEN COMPUTING NODES,” filed Mar. 31, 2008, whose inventor is Daniel T. Cohn, and which is hereby incorporated by reference in its entirety.
Networks with Hardware Virtualization
Some networks in which embodiments may be implemented may include hardware virtualization technology that enables multiple operating systems to run concurrently on a host computer, i.e. as virtual machines (VMs) on the host. The VMs may, for example, be rented or leased to customers of the network provider. A hypervisor, or virtual machine monitor (VMM), on a host presents the VMs on the host with a virtual platform and monitors the execution of the VMs. Each VM may be provided with one or more IP addresses; the VMM on a host may be aware of the IP addresses of the VMs on the host. As previously mentioned, mapping service 270 may be aware of all network 220 IP prefixes and the IP addresses of routers or other devices serving IP addresses. This includes the IP addresses of the VMMs serving multiple VMs. A network may be configured to use the mapping service technology and IP tunneling technology described herein to, for example, route data packets between VMs on different hosts within the network. In addition, a network may be configured to use the mapping service technology, IP tunneling technology, and routing service technology described herein to route packets from the VMs to Internet destinations, and from Internet sources to the VMs.
FIG. 6 illustrates an example network that implements hardware virtualization technology and that provides full Internet access using small-scale, commodity routers, according to at least some embodiments. The network 620 may implement IP tunneling technology, mapping service technology, and routing service technology as described herein to route packets from the VMs 694 on hosts 690 to Internet destinations, and from Internet sources to the VMs 694.
Routing Outbound Packets from a VM
In at least some embodiments, when a VM 694 sends a packet on the network 620, the VMM 692 on the host 690 intercepts the packet. The VMM 692 queries the mapping service 670 to determine where to forward the packet. If the packet is destined for the Internet, the mapping service 670 returns the IP address of the relevant border router 630 serving the best exit point. The VMM 692 encapsulates the original packet in the IP tunneling encapsulation format and forwards the packet across the network 620 to the correct exit point. The border router 630 serving the exit point strips off the IP tunneling encapsulation to reveal the original packet, and forwards the packet to the transit provider 610, which routes it as normal to the Internet IP address.
FIG. 7 illustrates a method for routing a packet from a VM on a network implementing hardware virtualization technology onto the Internet, according to some embodiments. Each VM 694 may have a public internet IP address. It is to be noted that there may be some VMs that do not have public IP addresses. Additionally, there may be other classes of devices that have public IP addresses, such as virtual firewalls and load balancers. As indicated at 700, a VM 694 on a host 690 sends a packet to a public destination internet IP address. As indicated at 702, the packet is intercepted by the VMM 692 on the host 690. As indicated at 704, the VMM 692 queries the mapping service 670 with the IP address of the destination. As indicated at 706, the mapping service 670 is informed of all internet prefixes and the IP address(es) of the best exit point(s) for the packet by the routing service 660. As indicated at 708, the mapping service 670 returns the IP address of the best exit point(s) to the VMM 692. As indicated at 710, the VMM 692 encapsulates the original packet in an IP tunneling encapsulation format and forwards the encapsulated packet across the network 620 to the correct exit point via a tunnel 682. For example, the VMM 692 may forward the packet to the next-hop router. The next-hop router sees the packet as having the source address of the VMM 692 and a destination address of the border router 630 serving the selected exit point. The network 620 transports the packet to the border router 630 serving the selected exit point via the tunnel 682. As indicated at 712, the border router 630 serving the selected exit point strips off the outer IP tunneling encapsulation and reveals the original packet with the public source and destination IP addresses, and forwards the packet to the transit provider 610. The transit provider 610 sees an ordinary internet IP packet and forwards the packet accordingly.
In some embodiments, instead of the VMM 692 querying the mapping service and encapsulating the packet, a router or other device 640 may receive the packet from VMM 692 and similarly query the mapping service, perform the encapsulation, and forward the packet to the relevant border router 630.
While the above describes the VMM 692 as querying the mapping service 670 to determine where to forward a packet when the VMM 692 intercepts a packet to send to an IP address, it is not generally feasible to query the mapping service for every packet or even every flow. Thus, in at least some embodiments, a VMM 692 may maintain a local cache of routing information. In some embodiments, the local cache may be pre-populated for some routes, for example for high traffic routes and/or important routes. The VMM 692 may first check the local cache to determine if there is cached routing information for the IP address. If the routing information is not in the local cache, then the VMM 692 may query the mapping service.
Routing Inbound Packets to a VM
FIG. 8 illustrates a method for routing a packet received from the Internet to a target VM on a network implementing hardware virtualization technology, according to some embodiments. As indicated at 800, a small-scale border router 630 receives a packet from a transit provider 610. As indicated at 802, the border router 630 queries the mapping service 670 with a destination IP address on the network. Mapping service 670 is aware of all network 620 IP prefixes and the IP addresses of the router or other device serving the destination IP address. As indicated at 804, the mapping service 670 returns the IP address of the VMM 692 serving the destination IP address to the border router 630. As indicated at 806, the border router 630 (or, in some embodiments, some other device, such as a top-of-rack router) encapsulates the original packet in an IP tunneling encapsulation format and forwards the encapsulated packet across the network via a tunnel 682 to the VMM 692 serving the destination IP address. As indicated at 808, the VMM 692 serving the IP address (or, alternatively, a router serving the VM 694) strips off the IP tunneling encapsulation and forwards the original packet to the VM 694 with the destination IP address.
While the above describes the border router 630 as querying the mapping service 670 to determine where to forward a packet when the border router 630 has a packet to send to a destination IP address on the network, it is not generally feasible to query the mapping service for every packet or even every flow. Thus, in at least some embodiments, border router 630 may maintain a local cache of routing information. In some embodiments, the local cache on a border router 630 may be pre-populated for some routes, for example for high traffic routes and/or important routes. The border router 630 may first check the local cache to determine if there is cached routing information for an IP address. If the routing information is not in the local cache, then the border router 630 may query the mapping service.
Routing Service Optimizations
Some embodiments of a routing service and/or mapping service as described herein may use various business and/or technical data sources and policies in making routing decisions to bias traffic distribution beyond what is normally possible in conventional systems using standard routing protocol (e.g., BGP) attributes and routing policies. For example, one or more of usage data for individual IP address prefixes, Simple Network Management Protocol (SNMP) data from individual links in the network, Internet “weather” metrics, carrier preferences, and cost optimization metrics may be used in various embodiments, along with appropriate policies, to make routing decisions.
For example, conventional routers are not aware of business logic. In some embodiments, when evaluating routes in the Internet routing table, the routing service may consider business logic in the decision-making process. As an example, transit providers are generally commercial enterprises that charge fees for routing packets. The routing service may thus consider cost when selecting a route; a longer route via first transit provider may be selected over a shorter route via a second transit provider if the cost of the route via the first provider is less.
As another example, some embodiments may monitor how much traffic is coming from and/or going to particular destinations on the network. For example, a network that provides VMs to customers via hardware virtualization technology may monitor traffic to and from individual VMs. Routing decisions for the VMs may be biased by the routing service based on volume. Another example use case directed to business logic is to manage total traffic to transit providers. This traffic may be across multiple links in multiple locations. Transit billing arrangements may include minimum commitments that are to be met and that may be measured monthly or annually, and traffic may need to be rebalanced to meet these business goals.
As yet another example, some embodiments may monitor Internet “weather” metrics to determine performance of various routes. If a route (or routes) with poor performance is detected, the routing service may direct traffic onto different routes. Some embodiments may send test packets on various routes, or use some other type of active probing, to measure latency or other metrics on various routes, and use the statistics resulting from this testing to influence routing decisions.
In some embodiments, Simple Network Management Protocol (SNMP) data from the network, or some other network protocol, may be used to query devices in the internal network to monitor, for example, network congestion in portions of the internal network (e.g., in various data centers of the network). If a data center is detected that is having problems, e.g. traffic congestion, the routing service and mapping service may route some network traffic to a different data center on the network before the packets are sent to the Internet.
BGP Peering Alternatives
The above describes a method for using IP tunneling technology to establish an eBGP peer session between a transit provider and the routing service. Embodiments do not change the standard Internet routing protocol (e.g., BGP). Normal BGP sessions with transit providers are established; however, in embodiments, the sessions terminate at the routing service rather than directly on the border router(s). BGP supports a standard option for eBGP multi-hop links. Some transit providers may support this option. Thus, in some embodiments, the border router(s) may be configured to implement this multi-hop option to carry the eBGP session through to the routing service. For connections to transit services that do not support this option, an IP tunneling technique as described herein may be used to carry the eBGP session to the routing service.
In some embodiments, for at least some border routers, a Transmission Control Protocol (TCP) pass-through proxy may be configured on the border router to carry the eBGP session to the routing service, rather than using the eBGP multi-hop option or an IP tunneling technique. The TCP proxy on a network border router establishes a connection to the routing service, and forwards routing protocol (e.g., BGP) messages received from a respective transit provider network to the routing service via the connection. The TCP proxy is effectively a small daemon running on the network border router. The daemon listens on the TCP port(s) that belong to the routing protocol (e.g., BGP). The daemon establishes another connection to the routing service. This connection acts as a pass-through tunnel to the routing service for the routing protocol messages received from the respective transit provider network. The daemon encapsulates the packets at the application layer of the network rather than at the network layer as is done in the IP tunneling technique. A TCP pass through proxy may allow, for example, the replication of the routing service to provide redundancy. The routing daemon can open two (or more) backend connection to two (or more) instances of the routing service and duplicate the routing protocol messages to the two (or more) instances.
FIG. 9 illustrates establishing a routing protocol peering between a transit provider and a routing service using a TCP proxy, according to at least some embodiments. As indicated at 900, a routing protocol (e.g., BGP) session is established between a small-scale border router on the network and a transit provider router. BGP (Border Gateway Protocol) is implemented on top of TCP (Transmission Control Protocol); to establish a BGP session, a TCP connection is first established between the network border router and the transit provider router. As indicated at 902, routing messages are sent from the transit provider to the network border router via the routing protocol session. As indicated at 904, a TCP proxy on the border router forwards the routing messages to the routing service via a connection to the routing service at the application layer of the network. As indicated at 906, the routing service processes the routing information in the routing messages. At least some of the routing information is stored to an Internet routing table maintained by the routing service.
Redundancy
In some embodiments, redundancy may be provided for some components of a network as illustrated in FIGS. 3 and 6. For the routing service, a number of active/passive and active/active backup mechanisms are possible to provide redundancy. In some embodiments, upstream updates may be replicated. In some embodiments, downstream sessions may be multiple if necessary or desired. In some embodiments, the routing service itself may be replicated to provide redundancy. In these embodiments, for example, a TCP proxy may be implemented on each network border router that establishes pass-through connections from a respective network service provider to each instance of the routing service.
In at least some embodiments, the mapping service may be implemented as a distributed cache of mappings. If the central mapping service fails, the cache persists and traffic continues to flow, although updates cease.
Some embodiments may utilize a multi-path or Equal-Cost Multi-Path (ECMP) strategy to establish more than one best path or route to a destination address in parallel, thus providing route redundancy. ECMP is a routing strategy where packet forwarding to a destination may be performed over multiple best paths. For example, in some embodiments, the mapping service and routing service may provide routing information indicating multiple best paths to a destination address, and the network may route the packet(s) to the destination over at least two of the indicated paths.
Illustrative System
In at least some embodiments, a server that implements a portion or all of one or more of the technologies, including but not limited to the routing service technology, the mapping service technology, and the small-scale border router technology as described herein may include a general-purpose computer system that includes or is configured to access one or more computer-accessible media, such as computer system 1000 illustrated in FIG. 10. In the illustrated embodiment, computer system 1000 includes one or more processors 1010 coupled to a system memory 1020 via an input/output (I/O) interface 1030. Computer system 1000 further includes a network interface 1040 coupled to I/O interface 1030.
In various embodiments, computer system 1000 may be a uniprocessor system including one processor 1010, or a multiprocessor system including several processors 1010 (e.g., two, four, eight, or another suitable number). Processors 1010 may be any suitable processors capable of executing instructions. For example, in various embodiments, processors 1010 may be general-purpose or embedded processors implementing any of a variety of instruction set architectures (ISAs), such as the x86, PowerPC, SPARC, or MIPS ISAs, or any other suitable ISA. In multiprocessor systems, each of processors 1010 may commonly, but not necessarily, implement the same ISA.
System memory 1020 may be configured to store instructions and data accessible by processor(s) 1010. In various embodiments, system memory 1020 may be implemented using any suitable memory technology, such as static random access memory (SRAM), synchronous dynamic RAM (SDRAM), nonvolatile/Flash-type memory, or any other type of memory. In the illustrated embodiment, program instructions and data implementing one or more desired functions, such as those methods and techniques described above for a mapping service, a routing service, small-scale border routers, IP tunneling, and/or a VMM hosting multiple VMs on a host machine, are shown stored within system memory 1020 as code 1025.
In one embodiment, I/O interface 1030 may be configured to coordinate I/O traffic between processor 1010, system memory 1020, and any peripheral devices in the device, including network interface 1040 or other peripheral interfaces. In some embodiments, I/O interface 1030 may perform any necessary protocol, timing or other data transformations to convert data signals from one component (e.g., system memory 1020) into a format suitable for use by another component (e.g., processor 1010). In some embodiments, I/O interface 1030 may include support for devices attached through various types of peripheral buses, such as a variant of the Peripheral Component Interconnect (PCI) bus standard or the Universal Serial Bus (USB) standard, for example. In some embodiments, the function of I/O interface 1030 may be split into two or more separate components, such as a north bridge and a south bridge, for example. Also, in some embodiments some or all of the functionality of I/O interface 1030, such as an interface to system memory 1020, may be incorporated directly into processor 1010.
Network interface 1040 may be configured to allow data to be exchanged between computer system 1000 and other devices 1060 attached to a network or networks 1050, such as other computer systems or devices as illustrated in FIGS. 3 and 6, for example. In various embodiments, network interface 1040 may support communication via any suitable wired or wireless general data networks, such as types of Ethernet network, for example. Additionally, network interface 1040 may support communication via telecommunications/telephony networks such as analog voice networks or digital fiber communications networks, via storage area networks such as Fibre Channel SANs, or via any other suitable type of network and/or protocol.
In some embodiments, system memory 1020 may be one embodiment of a computer-accessible medium configured to store program instructions and data as described above for FIGS. 3 through 9 for implementing embodiments of methods and apparatus for achieving Internet-scale routing using small-scale routers and an overlay network. However, in other embodiments, program instructions and/or data may be received, sent or stored upon different types of computer-accessible media. Generally speaking, a computer-accessible medium may include storage media or memory media such as magnetic or optical media, e.g., disk or DVD/CD coupled to computer system 1000 via I/O interface 1030. A computer-accessible medium may also include any volatile or non-volatile media such as RAM (e.g. SDRAM, DDR SDRAM, RDRAM, SRAM, etc.), ROM, etc, that may be included in some embodiments of computer system 1000 as system memory 1020 or another type of memory. Further, a computer-accessible medium may include transmission media or signals such as electrical, electromagnetic, or digital signals, conveyed via a communication medium such as a network and/or a wireless link, such as may be implemented via network interface 1040.
CONCLUSION
Various embodiments may further include receiving, sending or storing instructions and/or data implemented in accordance with the foregoing description upon a computer-accessible medium. Generally speaking, a computer-accessible medium may include storage media or memory media such as magnetic or optical media, e.g., disk or DVD/CD-ROM, volatile or non-volatile media such as RAM (e.g. SDRAM, DDR, RDRAM, SRAM, etc.), ROM, etc, as well as transmission media or signals such as electrical, electromagnetic, or digital signals, conveyed via a communication medium such as network and/or a wireless link.
The various methods as illustrated in the Figures and described herein represent exemplary embodiments of methods. The methods may be implemented in software, hardware, or a combination thereof. The order of method may be changed, and various elements may be added, reordered, combined, omitted, modified, etc.
Various modifications and changes may be made as would be obvious to a person skilled in the art having the benefit of this disclosure. It is intended to embrace all such modifications and changes and, accordingly, the above description to be regarded in an illustrative rather than a restrictive sense.

## Claims

1. A system, comprising:
one or more network border routers of a network connected to an external network; and
one or more computing devices on the network, wherein at least one of the one or more computing devices is configured to implement a routing service for the network, wherein the at least one computing device implementing the routing service is configured to:
execute program instructions causing the at least one computing device implementing the routing service to establish a routing protocol session between the at least one computing device implementing the routing service and a border router of the external network, wherein the routing protocol session is established through one of the one or more network border routers,
wherein the one or more network border routers are connected to the border router of the external network such that the routing service appears to the border router of the external network to be a peer border router;

execute program instructions causing the at least one computing device implementing the routing service to receive routing information from the border router of the external network via the routing protocol session, wherein the routing information comprises descriptions of routes available via the external network or one or more other external networks;
execute program instructions causing the at least one computing device implementing the routing service to store the received routing information in a routing table, wherein the routing table is maintained by the routing service implemented on the at least one computing device and the entire routing table is not stored on the network border router through which the routing protocol session was established; and
execute program instructions causing the at least one computing device implementing the routing service to direct routing of outgoing packets originating from within the network to the external network via the one or more network border routers according to the routing information in the routing table maintained by the routing service.

2. The system as recited in claim 1, wherein each of the one or more network border routers are small-scale routers each configured with a capacity to locally store only a portion of the Internet routing table.

3. The system as recited in claim 1, wherein the routing protocol is Border Gateway Protocol (BGP).

4. The system as recited in claim 1, wherein to establish a routing protocol session with one of the one or more external network border routers, the program instructions further cause the at least one computing device implementing the routing service is configured to establish a tunnel over the network between the routing service and the respective network border router according to an Internet Protocol (IP) tunneling technology, wherein the respective network border router is configured to encapsulate routing protocol messages received from the external network border router according to an IP tunneling encapsulation format and forward the encapsulated routing protocol messages to the routing service via the tunnel.

5. The system as recited in claim 1, wherein to establish a routing protocol session with one of the one or more external network border routers, a Transmission Control Protocol (TCP) proxy is implemented on the respective network border router, wherein the TCP proxy establishes a connection to the routing service, and wherein the TCP proxy is configured to forward routing protocol messages, received from the external network border router, to the routing service via the connection.

6. The system as recited in claim 1, further comprising a host device on the network, wherein the host device implements a virtual machine monitor (VMM) and one or more virtual machines (VMs),
wherein the routing service implemented on the one or more computing devices is configured to direct outgoing packets originating from a virtual machine of the one or more virtual machines implemented on the host device.

7. The system as recited in claim 1, wherein at least one or more of the one or more computing devices on the network are configured to implement a mapping service, wherein, to route an outgoing packet from an endpoint device onto the Internet via one of the one or more network border routers according to the routing information in the routing table maintained by the routing service, the at least one or more computing devices configured to implement the mapping service are configured to:
receive a query from the endpoint device, wherein the query specifies a destination Internet IP address for the packet;
obtain an indication of a route from the routing table for the packet from the at least one computing device implementing the routing service according to the destination Internet IP address; and
send an indication of the network border router that serves the indicated route to the endpoint device; wherein the endpoint device is configured to send the packet to the indicated network border router via the network; and wherein the network border router is configured to send the packet to the respective border router of the external network.

8. The system as recited in claim 1, wherein at least one or more of the one or more computing devices on the network are configured to implement a mapping service configured to obtain routing information from the routing service, wherein at least one of the one or more network border routers is configured to:
maintain a local cache of cached routing information;
receive incoming packets from an external network;
for each received incoming packet: check the local cache of cached routing information to determine if there is cached routing information for a destination address on the network indicated by the packet; if there is cached routing information for the destination address in the local cache, route the packet to the destination address on the network according to the cached routing information for the destination address; and if there is no cached routing information for the destination address in the local cache, query the mapping service with the destination address on the network indicated by the packet to obtain routing information for the destination address.

9. A method, comprising:
maintaining, by at least one computing device implementing a routing service for a network, a routing table that includes information for routing outgoing packets originating within the network to an external network;
receiving, at a border router for the network, a particular outgoing packet originating within the network for transmission to a destination via the external network, wherein the border router does not store the entire routing table maintained by the at least one computing device implementing the routing service;
obtaining, by the border router, routing information from the at least one computing device implementing the routing service for routing the particular outgoing packet to the external network, wherein the routing information comprises descriptions of routes available via the external network or one or more other external networks; and
routing, by the border router, the particular outgoing packet to the external network according to the obtained routing information.

10. The method as recited in claim 9, wherein the border router for the network is a small-scale router configured with a capacity to locally store only a portion of the routing table.

11. The method as recited in claim 9, wherein the routing protocol is Border Gateway Protocol (BGP).

12. The method as recited in claim 9, wherein said routing the particular outgoing packet to the external network comprises:
obtaining, by an endpoint device on the network, and from the routing service, an indication of a network border router that serves a selected route for a packet, wherein the indication is determined according to the routing information in the routing table;
sending, by the endpoint device, the packet to the indicated network border router via the network; and
sending, by the network border router, the packet to a respective external network border router that corresponds with the selected route.

13. The method as recited in claim 9, wherein the network implements an overlay network according to Internet Protocol (IP) tunneling technology, the method further comprising:
receiving, by a network border router on the network, an incoming packet from a respective external network border router;
querying, by the network border router, a mapping service with a destination IP address on the network indicated by the packet, wherein the mapping service is configured to obtain routing information from the routing service;
receiving, by the network border router, an indication of an endpoint device on the network that serves the destination IP address from the mapping service, wherein the indication of the endpoint device is determined according to internal network address information maintained by the mapping service;
encapsulating, by the network border router, the packet according to an IP tunneling encapsulation protocol;
sending, by the network border router, the encapsulated packet to the endpoint device that serves the destination IP address via a tunnel on the overlay network; and
removing, by the endpoint device, the encapsulation from the packet and forwarding the packet to the destination IP address.

14. A non-transitory computer-accessible storage medium, storing program instructions, which, when executed by one or more computing devices on a network, cause the one or more computing devices to:
establish, by a routing service implemented on at least one computing device, a routing protocol session between the routing service and one or more border routers, wherein the routing protocol session is established such that the routing service appears to the one or more border routers to be a peer border router;
receive, at the routing service implemented on the at least one computing device, routing information from the one or more border routers via the routing protocol session, wherein the routing information comprises descriptions of routes available via the external network or one or more other external networks;
store the received routing information in a routing table, wherein the routing table is maintained by the at least one computing device implementing the routing service and the entire routing table is not stored on one of the one or more the border routers through which the routing protocol session was established; and
direct routing of outgoing packets via the one or more border routers according to the routing information in the routing table maintained by the routing service.

15. The non-transitory computer accessible storage medium as recited in claim 14, wherein the one or more border routers are small-scale routers each configured with a capacity to locally store only a portion of the Internet routing table.

16. The non-transitory computer accessible storage medium as recited in claim 14, wherein the routing protocol is Border Gateway Protocol (BGP).

17. The non-transitory computer accessible storage medium as recited in claim 14, wherein, to establish at least one separate routing protocol session with each of one or more external network border routers, the routing service is configured to:
establish, for each routing protocol session, a separate tunnel over the network between the routing service and a respective network border router according to an Internet Protocol (IP) tunneling technology;
wherein the routing service is configured to receive encapsulated routing protocol messages from the one or more external network border routers via the tunnels, wherein the routing protocol messages are encapsulated according to an IP tunneling encapsulation format and forwarded to the routing service via the tunnels at the network border routers.

18. The non-transitory computer accessible storage medium as recited in claim 14, wherein to direct routing of outgoing packets from one or more endpoint devices on the network onto the Internet via the one or more border routers according to the routing information in the routing table maintained by the at least one computing device implementing the routing service, the program instructions, which, when executed the by the one or more computing devices on the network, cause the one or more computing devices to:
receive a query for routing information for a packet from an endpoint device, and
send an indication of a border router that serves a selected route for the packet to the endpoint device; wherein the indication is determined according to the query and the routing information in the routing table, wherein the endpoint device is configured to send the packet to the indicated border router via the network, and wherein the network border router is configured to send the packet to a respective external network border router for the corresponding route.

19. The non-transitory computer accessible storage medium as recited in claim 14, wherein the routing service is further configured to direct routing of incoming packets from the one or more border routers to destination IP addresses on the network according to the routing information in the routing table maintained by at least one computing device implementing the routing service.

20. The non-transitory computer accessible storage medium as recited in claim 14, wherein the outgoing packets originate from a virtual machine, wherein the virtual machine is implemented on a host device that implements a virtual machine monitor (VMM) and one or more virtual machines (VMs).