1. Field of the Present Invention
The present invention generally relates to the field of data processing networks and more particularly to protocols for transmitting network packets between network addresses.
2. History of Related Art
Information networks including the Internet are typically designed to transmit information in discrete units referred to as packets. Each packet must be processed according to a specific protocol or set of protocols as it traverses the network from its origin or source to its destination. Although network packets can vary widely in size, there is empirical evidence suggesting that the majority of packets flowing through large networks such as the Internet at any give point in time are relatively small.
Requiring the same amount of protocol processing as very large packets, small packets can quickly saturate a network's ability to process them. Network servers, routers, and other devices handling a large volume of small packets must devote an undesirably excessive amount of their resources to overhead processing. It would, therefore, be desirable to implement a network mechanism that addressed this characteristic of packetized networks and attempted to reduce the amount of processing overhead required to handle the packets. It would be further desirable if the implemented solution built upon and did not require any significant modifications to existing network protocols.
A system and method in which small packets having a common destination are bundled into one or more larger packets to address the problem described above. In one embodiment, an originating server, gateway, or other network device recognizes the presence of multiple, small IP packets having a common IP address. The network device according to the present invention is configured to concatenate or bundle two or more such small packets. The bundled packet as a whole is then given a new header, the bundle header, that includes the network destination address and information that informs the receiving protocol processing device that the packet is a bundled packet. The receiving device can then strip off the bundle header and process the component packets individually according to an existing protocol. In one embodiment, protocol processing is reduced by determining a check sum or other error correction information for the bundle as a whole. If the receiving device determines that the bundle passes the error checking routine, the individual packets are assumed to have also passed thereby enabling reduced error checking. The bundled header may be indicated by using a unique IP protocol number in the bundle header, using a unique port number in the header, or some other technique requiring little or no fundamental changes to the header structure.
Other objects and advantages of the invention will become apparent upon reading the following detailed description and upon reference to the accompanying drawings in which:
While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the drawings and detailed description presented herein are not intended to limit the invention to the particular embodiment disclosed, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present invention as defined by the appended claims.
Generally speaking, the invention pertains to the distribution of packets over a network and more particularly to distributing a large number of relatively small packets over the network. A network device such as a server or router buffers multiple packets and determines that two or more of the buffered packets have a common destination address. The device forms a larger packet, referred to herein as a bundled packet, that includes the smaller packets as well as a header that applies to the bundled packet as a whole. Because the bundled packet includes only those packets having a common destination address, the bundled packet represents less processing overhead to the network devices responsible for routing and otherwise processing the packets. To minimize the impact on existing protocol processing mechanisms, the bundled packet process is preferably implemented in a manner that does not alter the structure of the individual packets.
Turning now to the drawings,
Network stations 102 represent sources of network packets. As depicted, each network station 102A through 102C generates network packets 120A through 120C, respectively. Network stations 102 may, for example, represent a collection of email or web browser clients within a corporation network, a set of telnet servers connected within a university or other organization, a set of users subscribing to a common internet service provider, and so forth.
The packets generated by network stations 102A through 102C as depicted in
Network server 104 as depicted in
Referring to
The network protocol extension contemplated by the present invention acts on multiple network packets that share a common destination network address. In an IP implementation, for example, the header portion 202 of packets 120 represents an IP header that includes a 32-bit source network address and a 32-bit destination network address. To illustrate the benefits of the invention, each network packet 120 depicted in
Momentarily referring back to
By bundling packets sharing a common destination network address, server 104 conserves the number of buffers required to temporarily store the packets. If, for example, a network server incorporates a limited amount of buffer space for outbound packets and the individual packets 120 are small, numerous, and destined for a common network address, bundling of individual packets can reduce the number of buffer entries required to hold the outbound packets and thereby increase the availability of buffer space for other packets. In addition to reducing buffering requirements, the bundling of network packets 120 can beneficially improve the overall throughput of network 100 by decreasing the amount of packet processing that occurs in transit between the source network address and the destination network address.
The reduced network processing benefit of the present invention is conceptually represented by the router 108 in
According to one embodiment, network router 108 is enabled with bundle protocol processing substantially similar in function to the bundle protocol processing described above with respect to server 104. Router 108 is preferably configured with the ability to form network bundles from individual network packets, previously bundled network packets, or a combination of the two. As depicted in
Network destination 110 represents a server, likely a server having a popular internet address such as a popular web portal, telnet site, chat room, and so forth. Network destination 110 may include one or more local area networks behind a firewall or gateway (not depicted). Upon receiving a network packet, destination 110 begins its protocol processing. According to the present invention, destination 110 first determines that packet 222 is a bundled packet. Destination 110 then strips off the bundle header that was previously attached to the bundled packet by router 108 or some other network device.
One source of increased efficiency made possible by the bundle processing is the check sum processing that is commonly performed on network packets to insure that there are no bit failures in the packet data. Theoretical processing of bundled packets may opt to bypass the checksum processing for the individual network packets. Instead, the server 104, router 108, or any other network device that is capable of determining a checksum can compute a bundle checksum and include the bundle checksum as part of the bundle header 221. Destination 110 may then elect to verify the bundle checksum and, if it passes, forward the entire bundle into post checksum processing. In this manner, the present invention improves network efficiency by reducing or minimizing the amount of network processing that must be performed to route large numbers of small packets successfully.
Portions of the protocol processing are implemented as a set of computer executable instructions (software) stored on a computer readable medium. In this embodiment, the executable instructions, when executed by a data processing system, may perform the bundle protocol construction and deconstruction.
The bundle packet protocol processing includes determining (block 132) whether two or more of the buffered packets share a common destination address. If multiple such individual packets exist, the bundle processing then includes generating (block 134) the data portion of the bundled packet by concatenating all of the individual network packets that have the common destination address. Although described with respect to server 104, the location where bundle processing occurs is implementation specific and all such implementation lie within the scope of the present invention. Upon completing the formation of the bundle, a bundle header is appended (block 136) to the bundle packet. The bundle header will include of course the (single) destination network address for all of the individual packets that make up the bundle.
Once the bundle packet is completed, it is then forwarded on to its network address in block 138. At the destination or receiving end of the network, a server for processing incoming packets is employed. The receiving server initially determines whether a received packet is a bundle packet. The indication of a bundle packet may be achieved in different ways. In one embodiment, a unique protocol number is assigned for bundle processing and this protocol number is stored in the next level protocol field of the standard IP header. In another embodiment, the bundle header may indicate a secondary protocol such as TCP or UDP that incorporates ports into their respective header formats. In this embodiment, the bundle processing may be achieved by specifying a unique and dedicated port number for bundle processing. Upon detecting a bundle header in block 140, the destination server then deconstructs the network bundle by first performing any remaining processing associated with the bundle. The bundle header is identified and processed (block 142) and the individual packets are then stripped out (block 144) and forwarded to the remainder of the protocol stack for processing (block 146) of individual packets.
It will be apparent to those skilled in the art having the benefit of this disclosure that the present invention contemplates a system and method for bundling network packets into more efficiently processed packets. It is understood that the form of the invention shown and described in the detailed description and the drawings are to be taken merely as presently preferred examples. It is intended that the following claims be interpreted broadly to embrace all the variations of the preferred embodiments disclosed.
This application is a continuation application of and claims priority from U.S. patent application Ser. No. 10/462,257, filed on Jun. 16, 2003.
Number | Date | Country | |
---|---|---|---|
Parent | 10462257 | Jun 2003 | US |
Child | 11761545 | Jun 2007 | US |