The present invention relates generally to addressing schemes for communication networks, and particularly to functional addressing schemes for routing data packets through communication networks.
The vast majority of communication protocols employ location-based addressing schemes to route data packets through a communication network. For example, both public and private computer networks use Internet Protocol (IP) addresses to route packets of data. IP addresses are useful for routing data packets to a specific network device; however, they only contain information that identifies the network device based on its location in the network. IP addresses provide no information about the functional capabilities of the networked devices.
The use of location-based addresses is helpful, but not as efficient as it could be. Particularly, conventional protocols allow the application clients to handle only logical identifiers, such as Uniform Resource Locators (URLs), and require the network to translate these logical identifiers to location-based identifiers. However, this requires translation tables to be distributed throughout the network, which must be updated with new information as networked devices are added or removed to and from service. One example of such a translation table is the Global Title Translation (GTT) tables used in Signaling System #7 (SS7). The Dynamic Name Service (DNS) is another example.
Although useful, location-based addressing schemes carry information that defines where a networked device is located in the network. However, it does not carry information that could indicate the functional capabilities of that networked device.
The present invention sends data packets over a communication network using directly addressable destination addresses. The destination addresses provide information about the location of devices in the network, and about the services that are hosted by those devices.
More particularly, the communication network includes one or more networked devices, each of which may host one or more services and instances of those services. The communication network also uses a conventional addressing scheme, such as an Internet Protocol (IP) or a Media Access Control (MAC) addressing scheme, to route data packets. To map functional information onto these addresses, a network operator partitions an address space into a plurality of address subspaces based on the services hosted by the networked devices. The network operator then maps these services onto destination addresses within each address subspace. The resulting destination addresses are formatted according to a conventional addressing scheme, but provide location information about the networked devices, as well as information about the functional topology of the network.
In one embodiment, a computing device on the network includes an application that generates data packets for a service hosted by another networked device. When generating the data packets, the computing device generates a functional indicator and an instance indicator. The functional indicator identifies the target service hosted by another networked device, and the instance indicator identifies an instance of that service. The application assembles the destination address using the functional and instance identifiers, and inserts the destination address into the data packet. The application then sends the data packet over the network to the destination address.
The present invention provides a method of sending data packets over a communication network. The communication network may use a conventional addressing scheme, such as IP addresses, to route data packets through the network. The IP address conventionally identifies the location of devices connected to the network, but does not provide any information about the functions or services provided by the networked devices. The present invention provides a method of mapping the function of networked devices onto IP addresses within a given address space. As described in more detail below, various functions or instances of a function can be mapped onto specific bits or bytes of an IP address. Thus, the IP address can be generated to provide location information about the networked devices and information about the functional topology of the network. The present invention can be practiced when a network administrator or network designer can freely manipulate at least part of the address space.
In this embodiment, the third byte of IP address 10 is used as a functional indicator 14 to identify a function or service associated with a networked device. For example, the networked device may function as an SMTP server for email, an HTTP server, a domain name server, or the like. Each of these services would have a different value for the functional indicator 14. The value for the functional indicator 14 of
Similarly, the fourth byte of IP address 10 is used as an instance indicator 16 to identify a particular instance of a service. In particular, the network may have multiple instances of a given function or service. The multiple service instances may be hosted by a single networked device, or may be hosted by several networked devices. Thus, the instance indicator 16 would identify which particular instance of a service the data packet is to be routed. As an example,
Although the embodiment of
In practice, the network administrator or network designer assigns IP addresses such that networked devices performing a common function use IP addresses with the same functional indicator 14, but with different instance indicators 16. For example,
As seen in
By allocating the IP addresses 10 to networked devices in this manner, the network designer can eliminate the need to use logical identifiers and, in some cases, eliminate the need to maintain translation tables for translating the logical identifiers into corresponding conventional IP addresses. Instead, applications on networked devices can use an IP address 10 to directly address other applications and services executing on other networked devices based on the function to be performed.
Although
As is known in the art, MAC addresses are hardware addresses. They are normally associated with a particular network adaptor or network interface card (NIC) in a networked device, and have no relation to the physical location of the adaptor in the network. Usually, a manufacturer will define the MAC addresses for their particular devices; however, network designers will also have control over at least some of this address space. As with the IP addresses 10 above, network designers may use this freedom to manipulate at least part of the MAC addresses to better suit the needs of their particular network.
In operation, the network designer may partition an available part of the MAC address space in a manner similar to that stated above for
With the present invention, an application hosted by a networked device can send data packets to functions on other networked devices based on a service that is associated with the data packets. By way of example, a packet generated by a browser application would be sent to an HTTP service instance hosted by an HTTP server. Likewise, while a packet generated by an email client may be sent to an SMTP service instance hosted by an SMTP server. Addressing data packets for delivery to services as is done by the present invention deviates from prior art systems that rely on location-based addressing schemes to route their data packets. Particularly, conventional schemes provide only location information about their networked devices. However, the addressing scheme of the present invention also provides information about the functional topology of the network.
In practice, an application executing on a networked device would generate the directly addressable destination address for a data packet. In one embodiment, this is accomplished by determining the network prefix, such as prefix 12 or prefix 32, and appending the functional indicator 14 and the instance indicator 16 to the prefix. Once assembled, the application would insert the destination address into each data packet and send it over the network to that destination address. This avoids the need for creating and maintaining translation tables and distributing them throughout the network.
An application may generate the components of the destination address in any of a number of ways. For example, the network prefix is a value known a priori to the application generating the data packets. It may be hard-coded into the application, or it may be stored in memory and made available to the application. In some embodiments, the prefix comprises a fixed value that identifies the manufacturer of the networked device. In other embodiments, the prefix comprises a predetermined value assigned by the network designer. The application generating the destination address need only populate the destination address with this value.
Similarly, the application may create the functional indicator 14 from a predefined constant value. For example, if the value “50” were to identify data packets destined for an HTTP server, the application creating those packets (e.g., a browser) would simply append a “50” onto the network prefix for each data packet. In other embodiments, the application might monitor a port or socket over which the data packets are sent, and use that ID as the functional indicator 14. For example, if all HTTP packets are sent over socket “80,” the application may use the value “80” as the functional indicator 14. Where a MAC address 30 is used, the application might convert the socket ID to a hexadecimal number (i.e., “50”), and use that hexadecimal equivalent as the functional indicator 14. In some embodiments, the application could maintain a table of different functions—each identified by a different predetermined value—and select a value for the functional indicator 14 from the table based on the type of data packet that it is generating.
There are also a variety of different ways in which the application may create the instance indicator 16. In one embodiment, the application uses its own host ID. Where MAC addressing is used, the applications may first convert the host ID values to hexadecimal values and append those to the destination address. In other embodiments, the application hashes its host ID, or a part or all of a data field, such as a character string, message content, or IP address, such as the source or destination IP address. In some embodiments, the application may hash any of the information contained in the Layer 2-Layer 4 fields of the data packet once the functional indicator 14 has been determined. Regardless of the method used, the resultant hash value, which is typically bounded within a range of values, is then appended as the instance indicator 16. In some cases, the application may employ an algorithm to randomly generate or select a value from a range of values. Assuming a random distribution, generating the destination addresses for the data packets in this manner may help to balance a network load.
Additionally, the application may dynamically select a method by which to generate the instance indicator 16. Selection may be based, for example, on current or expected load conditions, or on parameters entered by a network operator. In some cases, the network operator may specify one or more of the parameters used to generate the instance indicator 16, or introduce new or modified methods of generating the instance indicator 16. There are any number of ways to accomplish this function, but in one embodiment, the parameters and/or the generating method is described in an extended Markup Language (XML) file. The network operator places this file on the network such that the application generating the instance indicator can access that file.
The network infrastructure 50 includes the hardware and software components necessary to send packets of data to and from each of the networked devices 60. In this embodiment, the network infrastructure 50 includes a Layer 2 switch 52, although other types of switches are suitable for use with the present invention. Switch 52 operates at the Media Access Control (MAC) sub-layer of the data link layer, and comprises an Application Specific Integrated Circuit (ASIC) 54 and a binding table 56. Each of the networked devices 60 connects to switch 52 via a respective physical port 70, 72, 74, 76.
As stated above, each networked device 60 hosts one or more instances of a service 64. For example, the services 64 may comprise one or more instances of a function such as an HTTP service, an SMTP service, or the like. Each instance of each service is identified using a directly addressable destination address, which in this embodiment, comprises the MAC address 30 previously described. The address of each service has a prefix 32, a functional indicator 14, and an instance indicator 16.
Additionally, each networked device 60 comprises an application 62. The applications may be, for example, web browsers, mail clients, or the like, that will communicate data packets with the various services 64 hosted by the networked devices 60. According to the present invention, the applications 62 generate a functional destination address for each data packet and send the packet to switch 50. Upon receipt, the switch 50 receives the data packets and, based on their destination addresses, sends the packet to the corresponding physical port.
Particularly, ASIC 54 inspects the data packets when they arrive from an application 64 to determine the MAC address 30. For example, ASIC 54 may inspect the header of the incoming data packet to determine the associated MAC address 30. ASIC 54 then compares the received MAC address 30 to the information stored in the binding table 56 to determine where to route the data packet. In this embodiment, binding table 56 maps MAC addresses 30 to a corresponding physical port number 70, 72, 74, 76. If a match is found, ASIC 54 determines the corresponding physical port, and sends the data packet to that port. If no match is found, the data packet may be dropped, or the switch 52 may send the data packet to a default port.
Method 80 begins when an application 62 determines the network prefix for MAC address 30 (box 82). The application 62 then generates the functional indicator 14 based on the service associated with the data packet (box 84), and the instance indicator 16 (box 86). In this embodiment, the instance indicator 16 is generated based on the host source ID; however, as previously stated, the present invention is not limited solely to this method. Those skilled in the art will readily appreciate that there are other ways by which to generate the instance indicator 16. Once application 56 has generated the functional indicator 14 and the instance indicator 14, it assembles the MAC address 30 for the data packet (box 88). Application 62 then inserts the MAC address 30 into the data packet (box 90), and sends the data packet to that address via the infrastructure 50 (box 92). Switch 52 receives the data packet, inspects the header, and sends the data packet to the particular service instance identified by the MAC address 30.
Using MAC addresses 30 and a Layer 2 switch as in the previous embodiment is advantageous. For example, MAC addresses are divorced from any location information related to the networked devices 60. Further, Layer 2 switches generally include the capability to discover new or changed MAC addresses whenever networked devices are added to or removed from the network. Particularly, ASIC 54 may periodically query the networked devices 60 to determine their assigned MAC addresses 30. Thus, whenever a networked device is brought into or out of service, ASIC 54 can quickly discover or “learn” the MAC address 30 and about the services and instances thereon, and update the binding table 56 to reflect the changes accordingly. These updates are autonomous, and there is no need to distribute the changes throughout the network.
However, using MAC addresses 30 as in the previous embodiments is not required for the present invention to operate. Other embodiments, for example, may generate the full address at the host device.
The present invention may, of course, be carried out in other ways than those specifically set forth herein without departing from essential characteristics of the invention. Therefore, the present embodiments are to be considered in all respects as illustrative and not restrictive, and all changes coming within the meaning and equivalency range of the appended claims are intended to be embraced therein.