Routing using global address pairs

The present invention extends to methods, systems, and computer program products for routing using global address pairs. Embodiments of the invention use publicly routable Internet Protocol (“IP”) addresses to represent sites rather than individual hosts. Hosts can be represented by a global address pair, including site public IP address and a node private IP address. Nodes route packets to address processing modules using IP-in-IP encapsulation. An outer header contains a site public IP address and is destined to a site on inter-site links. An inner header contains a node private IP address and is destined to a private endpoint in intra-site links. In some embodiments, a site public IPv4 address and a node private IPv4 address are encoded into an IPv6 address. Use of an IPv6 address makes encoding of the two IPv4 address transparent to IPv6 applications.

CROSS-REFERENCE TO RELATED APPLICATIONS

Not Applicable.

BACKGROUND

Background and Relevant Art

Computer systems and related technology affect many aspects of society. Indeed, the computer system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, accounting, etc.) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired and wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. Accordingly, the performance of many computing tasks are distributed across a number of different computer systems and/or a number of different computing environments.

To appropriately communicate between computer systems on a network, one computer system must have address information for another computer system. For example, for a computer system to communicate with another computer system on the Internet, the computer system typically uses an Internet Protocol (“IP”) address for the other computer system. In most cases, communication on the Internet is based on Internet Protocol version 4 (“IPv4”) addresses and thus each device communicating on the Internet is typically allocated an IPv4 address. There is a large and well established infrastructure for using IPv4 address on the Internet.

IPv4 addresses are32-bit (four byte) addresses. Thus, IPv4 has an address space of 232(4,294,967,296) possible unique addresses. Further, many of the addresses within the IPv4 address space are reserved for special purposes, such as, for example, private networks and mutli-casting. As the number of unique devices on the Internet continues to grow, the number of unallocated IPv4 continues to decrease (and will eventually result in IPv4 address exhaustion). The rate of allocated to IPv4 address has been mitigated to some extent by changes in address allocation and routing infrastructure on the Internet. For example, classful networking and particularly classless inter-domain routing have substantially delayed IPv4 address exhaustion. In addition, network address translation (“NAT”) permits large Internet Service Providers (“ISPs”) to allocation a limited number (and potentially just one) public IPv4 address to their users. However, due to a continuing increase in the number of devices using the Internet, IPv4 address exhaustion will eventually occur.

Accordingly, Internet Protocol version 6 (“IPv6”) was designed as the successor to IPv4. IPv6 uses a 128-bit (16 byte) address space providing a vastly larger address space of 2128(or approximately 3.4×1038) unique addresses. IPv6 provides significantly flexibility in allocate addresses and routing traffic and eliminates the primary need for NAT. However, despite its advantages and its likely future dominance on the Internet, the deployment of IPv6 has been relatively slow. As such, IPv6 accounts for a very small portion of the used address and traffic on the Internet, which is still dominated by IPv4. This is due at least in part to costs associated with deploying IPv6.

These and other IPv6 deployment difficulties result in many organizations delaying deployment of IPv6 as long as possible. For example, due to ownership of significant and well established IPv4 infrastructure, an organization may desire to get as much return from existing infrastructure as possible. However, as other organizations deploy IPv6, IPv4 infrastructure must become compatible with IPv6. Likewise, any organization deploying IPv6 mostly likely has to remain compatible with IPv4. As such, organizations continuing to operate established IPv4 infrastructure as well as organizations that invest fully in IPv6 have to compatibly operate with both IPv4 and IPV6 addresses.

BRIEF SUMMARY

The present invention extends to methods, systems, and computer program products routing using global address pairs. A sending side address processing module at a sending site, receives a network packet from a sending application within the sending site. The network packet has an address header and a data payload. The address header includes a destination address field and a source address field. The destination address field contains a unique identifier for a receiving computer system from the perspective of the sending application. The source address field contains a local address for the sending application within the sending site. The data payload contains data for the receiving computer system.

The sending side address processing module accesses an address mapping from a sending side local store. The address mapping maps the unique identifier to a site address for the receiving site and to a local address for the receiving computer system within the receiving site

The sending side address processing module modifies the network packet based on the address mapping to include an outer address header, an inner address header, and the data payload. The outer address header includes a destination address field and a source address field. The destination field of the outer address header contains the site address for the receiving site. The source address field of the outer address header contains a site address for the sending site. The inner address header also includes a destination address field and a source address field. The destination address field of the inner address header contains the local address for the receiving computer system within the receiving site. The source address field of the inner address header contains the local address for the application within the sending site.

The sending side address processing module sends the modified network packet to a sending side site edge router for the sending site. The sending side site edge router routes the modified packet to a receiving side site edge router at the receiving site based on the site address for the receiving site.

A receiving side address processing module receives the modified network packet from the receiving side site edge router. The network packet was transferred over a wide area network from the sending side site edge router. The receiving side address processing module accessing an address mapping from a receiving side local store. The address mapping maps the site address for the sending site and the local address for the sending computer system within the sending site to a further unique identifier for the sending computer system from the perspective of the receiving application.

The receiving side address processing module further modifies the modified network packet based on the address mapping to have an address header and the payload. The address header includes a destination address field and a source address field. The destination address field contains the local address for the receiving application within the receiving site and the source address field contains the further unique identifier. The receiving side address processing module sends the further modified network packet to the receiving application based on the local address for the receiving application within the site. The further unique identifier indicates where the receiving application can send any response data packets.

DETAILED DESCRIPTION

The present invention extends to methods, systems, and computer program products for routing using global address pairs. A sending side address processing module at a sending site, receives a network packet from a sending application within the sending site. The network packet has an address header and a data payload. The address header includes a destination address field and a source address field. The destination address field contains a unique identifier for a receiving computer system from the perspective of the sending application. The source address field contains a local address for the sending application within the sending site. The data payload contains data for the receiving computer system.

The sending side address processing module accesses an address mapping from a sending side local store. The address mapping maps the unique identifier to a site address for the receiving site and to a local address for the receiving computer system within the receiving site

The sending side address processing module modifies the network packet based on the address mapping to include an outer address header, an inner address header, and the data payload. The outer address header includes a destination address field and a source address field. The destination field of the outer address header contains the site address for the receiving site. The source address field of the outer address header contains a site address for the sending site. The inner address header also includes a destination address field and a source address field. The destination address field of the inner address header contains the local address for the receiving computer system within the receiving site. The source address field of the inner address header contains the local address for the application within the sending site.

The sending side address processing module sends the modified network packet to a sending side site edge router for the sending site. The sending side site edge router routes the modified packet to a receiving side site edge router at the receiving site based on the site address for the receiving site.

A receiving side address processing module receives the modified network packet from the receiving side site edge router. The network packet was transferred over a wide area network from the sending side site edge router. The receiving side address processing module accessing an address mapping from a receiving side local store. The address mapping maps the site address for the sending site and the local address for the sending computer system within the sending site to a further unique identifier for the sending computer system from the perspective of the receiving application.

The receiving side address processing module further modifies the modified network packet based on the address mapping to have an address header and the payload. The address header includes a destination address field and a source address field. The destination address field contains the local address for the receiving application within the receiving site and the source address field contains the further unique identifier. The receiving side address processing module sends the further modified network packet to the receiving application based on the local address for the receiving application within the site. The further unique identifier indicates where the receiving application can send any response data packets.

Generally, embodiments of the invention use publicly routable Internet Protocol (“IP”) addresses to represent sites rather than individual hosts. Hosts can be represented by a global address pair, including site public IP address and a node private IP address. Nodes route packets to address processing modules using IP-in-IP encapsulation. An outer header contains a site public IP address and is destined to a site on inter-site links. An inner header contains a node private IP address and is destined to a private endpoint in intra-site links. In some embodiments, a site public IPv4 address and a node private IPv4 address are encoded into an IPv6 address. Use of an IPv6 address makes encoding of the two IPv4 address transparent to IPv6 applications.

FIGS. 1A and 1Billustrate an example computer architecture100that facilitates routing using global address pairs. Referring toFIG. 1, computer architecture100includes site106and site116. Sites106and116are connected to one another over (or are part of) network107, such as, for example, a Local Area Network (“LAN”), a Wide Area Network (“WAN”), and even the Internet. Accordingly, Connected computer systems and other components within sites106and116, can create message related data and exchange message related data (e.g., Internet Protocol (“IP”) datagrams and other higher layer protocols that utilize IP datagrams, such as, Transmission Control Protocol (“TCP”), Hypertext Transfer Protocol (“HTTP”), Simple Mail Transfer Protocol (“SMTP”), etc.) over the network.

Name server108contains a number of entries binding domain names to IP addresses, including globally unique IPv6 address. Local address122is a private IPv4 address for node101within site106. Site address121is a public IPv4 address for site106. Name server108can bind a fully qualified domain name for node101to an IPv6 address (i.e., IPv6 (Node101)). Site106can maintain addressing information for node101in entry169A in local store109.

Similarly, local address132is a private IPv4 address for node111within site116. Site address131is a public IPv4 address for site116. Name server108can also bind a fully qualified domain name for node111to an IPv6 address (i.e., IPv6 (Node111)). Site116can maintain addressing information for node111in entry179A in local store119

Globally unique IPv6 address contained in name server108can encode a pair of IPv4 address, a site IPv4 address and a local IPv4 address, in accordance with algorithms that are also know to address processing modules103and113. For example, IPv6 (Node101) can encode site address121and local address122. Likewise, IPv6 (Node111) can encodes site address131and local address132.

Thus, upon receiving a globally unique IPv6 address, address processing modules103and113can extract an encoded site IPv4 address and local IPv4 address from the globally unique IPv6 address. For example, site address121and local address122can be extracted from IPv6 (Node101). Likewise, site address131and local address132can be extracted from IPv6 (Node111).

The algorithms can also be reversible such that a site IPv4 address and a local IPv4 address can be combined into a corresponding globally unique IPV6 address that encodes the site IPv4 address and a local IPv4 address. For example, site address121and local address122can be combined into IPv6 (Node101). Likewise, site address131and local address132can be combined into IPv6 (Node111).

FIG. 2illustrates a flow chart of an example method200for routing using global address pairs. Method200will be described with respect to the components and data of computer architecture100.

Node101can know node111with a unique name, such as, for example, a fully qualified domain name, and vice versa. Application102may desire to communicate with application112. Node101can issue name resolution request151to name server108. Name resolution request151can be a request for an IP address bound to the fully qualified domain name for node111(i.e., FQDN (Node111)). Name server108can determine that IPv6 (Node111) is a globally unique IPv6 address bound to FQDM (Node111). Name server108can return response152to address processing module103. Response152indicates the binding between FQDM (Node111) and IPv6 (Node111).

Address processing module103can extract site address131and local address132from IPv6 (Node111). Address processing module132can also formulate unique identifier133. Application102is to use unique identifier133to refer to node111. When application102uses only IPv4, unique identifier133is selected as a unique four byte identifier for node111from the perspective of application102. When application102is IPv6 compatible, then unique identifier133is IPv6 (Node111). Address processing module103can store addressing information for node111in entry169B in local store109.

Address processing module103can return response153to application102in response to application151sending name resolution request151. Response153indicates that FQDN (Node111) is bound to identifier133. Thus, when application102is to communicate with node111, application102uses identifier133as the destination address for the communication. Address processing module103can then handle using the appropriate site address and local address to forward the communication onto node111.

Method200includes an act of receiving a network packet from a sending application within a sending site, the network packet having an address header and a data payload, the address header including a destination address field and a source address field, the destination address field containing a unique identifier for a receiving computer system from the perspective of the sending application, the source address field containing a local address for a sending application within the sending site, the data payload containing data for the receiving computer system (act201). For example, address processing module103can receive packet142from application102. Packet142has an address header including identifier133in a destination address field and local address122in a source address field. Payload141contains data for node111.

Method200includes an act of accessing an address mapping from a sending side local store, the address mapping mapping the unique identifier to a site address for the receiving site and to a local address for the receiving computer system within the receiving site (act202). For example, address processing module103can access entry169B from local store109. Entry169B maps identifier133to site address131and local address132.

Method200includes an act of modifying the network packet based on the address mapping to include an outer address header, an inner address header, and the data payload, the outer address header including a destination address field and a source address field, the destination field of the outer address header containing the site address for the receiving site, the source address field of the outer address header containing a site address for the sending site, the inner address header also including a destination address field and a source address field, the destination address field of the inner address header containing the local address for the receiving computer system within the receiving site, the source address field of the inner address header containing the local address for the application within the sending site (act203). For example, address processing module103can modify packet142into packet143based on the contents of entry169B. Packet143includes outer header171, inner header172, and payload141. Outer header171includes site address131in a destination address field and site address121in a source address field. Inner header172includes local address132in a destination address field and local address122in a source address field. Payload141contains data for node111.

In some embodiments, inner header172is encapsulated (e.g., using IP-in-IP encapsulation) within outer header171. Outer header171can be added before inner header142in packet143. The destination address field and source address field of outer header171essentially identifier endpoints of a tunnel. The destination address field and source address field of inner header172identify the original sender and recipient of packet143(e.g., a datagram).

Method200includes an act of sending the modified network packet to a sending side site edge router for the sending site so that the sending side site edge router can route the modified packet to a receiving side site edge router at the receiving site based on the site address for the receiving site (act204). For example, address processing module103can send packet143to site router104. Site router104can forward packet143onto network107.

Routers within network107can route packet107to site116based on the destination address field of outer header171contained site address131. Eventually, packet143is routed to site router114. Site router114can forward packet143to address processing module113.

Method200includes an act of receiving the modified network packet from the receiving side site edge router for the receiving site, the network packet having been transferred over a wide area network from a sending side site edge router at the sending site (act205). For example, address processing module113can receive packet143from site router114after network packet143is transferred over network107from site router104.

Method200includes an act of constructing an address mapping for the sending computer system, the address mapping mapping the site address for the sending site and the local address for the sending computer system within the sending site to a further unique identifier for the sending computer system from the perspective of the receiving application (act206). For example, address processing module113can construct a mapping that maps site address121and local address122to identifier123. Application112is to use unique identifier123to refer to node101

Address processing module113can combine address121and local address122into IPv6 (Node101) in accordance with known algorithms. Address processing module132can also formulate unique identifier123. When application112uses only IPv4, unique identifier123is selected as a unique four byte identifier for node101from the perspective of application112. When application112is IPv6 compatible, then unique identifier123is IPv6 (Node101). Address processing module113can store addressing information for node101in entry179B in local store119.

Method200includes an act of further modifying the modified network packet based on the address mapping to have an address header and the payload, the address header including a destination address field and a source address field, the destination address field containing the local address for the receiving application within the receiving site and the source address field containing the further unique identifier (act207). For example, address processing module113can modify packet143into packet144based on data in entry179B (before and/or after entry179B is stored in local store119). Packet144has an address header with a destination address field containing local address132and a source address field containing identifier123. Payload141contains data for application112.

Method200includes an act of sending the further modified network packet to the receiving application based on the local address for the receiving application within the site, the further unique identifier indicating where the receiving application can send any response data packets (act208). For example, address processing module113can send packet144to application112based on local address132. Identifier123indicates where application112is to send any data packets responsive to packet144.

Address processing module113may choose to resolve IPv6 (Node101) to FQDN (Node101) by performing a reverse lookup at name server108. For example, address processing module113can issue reverse lookup154to name server108. Name server108can refer to the FQDN (Node101)::IPv6 (Node101) binding to identifier FQDN (Node101). Name server108can return response156back to address processing module indicating that IPv6 (Node101)=FQDN (Node101). Address processing module113can store the contents of response156in entry179B in local store119.

Application112can also send a message back to node101. For example, application112can send packet147to node101. Address processing module113can receive packet147from application102. Packet147has an address header including identifier123in a destination address field and local address132in a source address field. Payload146contains data for node101. Address processing module113can access entry179B from local store119. Entry179B maps identifier133to site address121and local address122.

Address processing module113can modify packet147into packet148based on the contents of entry179B. Packet148includes outer header173, inner header174, and payload146. Outer header173includes site address121in a destination address field and site address131in a source address field Inner header174includes local address122in a destination address field and local address132in a source address field. Payload146contains data for node101. Inner header174can be encapsulated (e.g., using IP-in-IP encapsulation) within outer header173as previously described.

Address processing module113can send packet148to site router114. Site router114can forward packet148onto network107. Routers within network107can route packet107to site106based on the destination address field of outer header171contained site address121. Eventually, packet148is routed to site router104. Site router104can forward packet148to address processing module103.

Address processing module103can receive packet148from site router104after network packet148is transferred over network107from site router114. Address processing module103can access entry169B that maps site address131and local address132to identifier133. Address processing module103can modify packet148into packet149based on data in entry169B. Packet149has an address header with a destination address field containing local address122and a source address field containing identifier133. Payload146contains data for application102. Address processing module103can send packet104to application102based on local address122. Identifier133indicates where application102is to send any data packets responsive to packet149.

In some embodiments, there is a single address processing module for an entire site. The single address processing module can be embedded in to the site edge router and carry the same public address as the site edge router. For example, address processing module103can be embedded in and carry the same public address as site router104(i.e., site address121is the address of site router104).

In other embodiments, address processing modules are distributed in across various nodes within a site. In these other embodiments, a site address is associated with all address processing modules in the site. Thus the site address is essentially utilized as a mutli-cast address reaching all address processing modules in the site. For example, site106may contain one or more other address processing modules in addition to address processing module103. Any packets sent to site address121reach address processing module103as well as each of the one or more other address processing modules.