The invention itself, as well as a preferred mode of use, further objects, and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
The present invention provides a method, system, and computer program product for substantially improving the efficiency of Internet Protocol Control Block (INPCB) lookup operations at sender or receiver device of a Transmission Control Protocol (TCP) based computer network transmission by modifying the TCP/Internet Protocol (IP) stacks of the TCP sender and TCP receiver such that every data packet includes both data and INPCB address information.
With reference now to
According to the invention, TCP sender 102 operates as a sender and/or receiver for TCP/IP transmission in a computer network. Thus, TCP sender 102 comprises network interface 130 by which TCP sender 102 communicates with TCP receiver 150 via network 128. Network interface 130 is coupled to system bus 106. Network 128 may be an external network such as the Internet, or an internal network such as an Ethernet or a Virtual Private Network (VPN). Network 128 includes TCP sender 102 and TCP receiver 150, which may be computers or other data processing systems. For purposes of the invention, network is any network that supports TCP/IP transmission based on the modified TCP provided by the present invention.
Hard drive interface 132 is also coupled to system bus 106. Hard drive interface 132 interfaces with hard drive 134. In a preferred embodiment, hard drive 134 populates system memory 136, which is also coupled to system bus 106. Data that populates system memory 136 includes operating system (OS) 138 and application programs 144 of TCP sender 102. TCP sender 102 thus comprises one or more application programs 144 within system memory 136. As shown, application programs 144 include browser 146, which enables user access to the World Wide Web (WWW) to send and receive network messages to the Internet.
OS 138 includes shell 140 (as called in UNIX®), for providing transparent user access to resources such as application programs 144. Generally, shell 140 is a program that provides an interpreter and an interface between the user and the operating system. As depicted, OS 138 also includes kernel 142, which includes lower levels of functionality for OS 138, including providing essential services required by other parts of OS 138 and application programs 144, including memory management, process and task management, disk management, and mouse and keyboard management. Similarly, OS 138 includes TCP/IP stack 148, which includes functionality for TCP and IP data transmission. In an embodiment of the present invention, TCP/IP stack 148 is modified such that every data packet sent by TCP/IP stack 148 includes both data and INPCB address information. In such an embodiment, TCP/IP stack 148 may be modified in TCP sender 102 and/or TCP receiver 150. When TCP sender 102 comprises TCP/IP stack modified to provide this feature (INPCB address information within the data packet), the TCP/IP provides notice of this functionality during set up of a TCP/IP session with TCP receiver 150.
The hardware elements depicted in TCP sender 102 are not intended to be exhaustive, but rather are representative to highlight certain components that mat be utilized to practice the present invention. For instance, TCP sender 102 may include alternate memory storage devices such as magnetic cassettes, Digital Versatile Disks (DVDs), Bernoulli cartridges, and the like. These and other variations are intended to be within the spirit and scope of the present invention.
Within the descriptions of the figures, similar elements are provided similar names and reference numerals as those of the previous figure(s). Where a later figure utilizes the element in a different context or with different functionality, the element is provided a different leading numeral representative of the figure number (e.g., 1xx for
With reference now to
A TCP/IP connection is provided on which transmission of one or more data packet 220 is completed between TCP sender 102 and TCP receiver 150. TCP sender 102 is coupled to a plurality of sockets 210, which may contain data transmitted by (or received for) an application executing on TCP sender 102. Similarly, TCP receiver 150 is coupled to a plurality of sockets 215, which may also contain data (both sender and receiver data are represented by single TCP data 230). In an embodiment of the invention, data 230 contained within sockets 210 may be efficiently transmitted via network 128 to sockets 215 (and vice versa) through the use of a TCP connection implementing a modified TCP/IP stack 148 such that data packet 220 includes INPCB address 225 and data 230. An exemplary method of utilizing modified data packets with INPCB address information to substantially eliminate latency of INPCB address resolution of data packets transmitted over network 128 is provided in
Although
Turning now to
In an alternate embodiment of the present invention, TCP/IP stack 148 within TCP sender 102 may define the INPCB address as an Internet Protocol (IP) option. In such an embodiment, an IP option containing an INPCB address may be transmitted via any transport layer protocol, such as TCP, User Datagram Protocol (UDP), Stream Control Transmission Protocol (SCTP), Datagram Congestion Control Protocol (DCCP), Reliable User Datagram Protocol (RUDP), Real-time Transport Protocol (RTP), and the like. At block 315, a determination is made whether the TCP/IP stack within TCP receiver 150 generally supports data packets that include INPCB addresses as TCP options.
According to the illustrative embodiment, data packet generation with the TCP option is only provided when both the TCP sender and TCP receiver have their TCP/IP stacks modified to automatically generate enhanced TCP data packets 220. Thus, it is contemplated that only some network devices on network 128 have TCP/IP stacks modified/configured to support the TCP options, in accordance with the present invention. If the TCP/IP stack within TCP receiver 150 does not support modified TCP options that contain INPCB addresses, a standard (or conventional) TCP transmission process is utilized and TCP receiver 150 ignores the TCP option, if the TCP option is included within the data packet, as depicted in block 320. TCP receiver 150 performs a conventional INPCB lookup operation from INPCB lookup table 205 located within system memory. During this conventional INPCB lookup operation, the local port, foreign port, local address, and foreign address information contained in data 220 are compared with the local port, foreign port, local address, and foreign address information of each INPCB within INPCB lookup table 205 until the appropriate INPCB address 225 is found. TCP receiver 150 may then deliver data 230 to the corresponding location within sockets 215. In accordance with the conventional TCP transmission process, INPCB lookup tables 200 and 205 may be accessed multiple times for all data packets transmitted between TCP sender 102 and TCP receiver 150. When no additional data packets are being transmitted, the conventional TCP transmission process terminates at block 340 and the TCP connection is closed.
Returning to decision block 315, if TCP receiver 150 supports data packets that include INPCB addresses as TCP options, TCP receiver 150 thereafter echoes all data packets 220 (including acknowledgments of received data packets) transmitted back to TCP sender 102 with the INPCB address included, as shown in block 325. At block 330, TCP sender 102 receives the data packet(s) from TCP receiver 150 and immediately forwards data 230 to the correct socket 210 (or application) corresponding to INPCB address 225 within the received data packet 220. In this way TCP sender 102 automatically delivers received data 230 to the appropriate location within sockets 210, thereby bypassing INPCB lookup table 200 of TCP sender 102. A decision is made at block 335 whether additional data packets are received by TCP sender 102 from TCP receiver 150. If additional data packets are being received by TCP sender 102, TCP sender 102 fetches data 230 from the received data packets 220 and accesses the INPCB address 225 within data packet 220. TCP sender 102 then forwards data 230 for delivery to the appropriate socket 210 corresponding to the INPCB address at block 330, thereby bypassing INPCB lookup table 200. If no additional data packets are being received by TCP sender 102, the process terminates at block 340 and the TCP connection is closed.
Turning now to
A determination is made at block 410 whether TCP receiver 150 is generating a data packet 220 for transmission back to TCP sender 102. If a packet is being generated, TCP/IP stack within TCP receiver 150 generates data packet 220 and includes INPCB address 225 as a TCP option along with data 230 within data packet 220, as shown at block 415 At block 420, TCP receiver 150 transmits data packet 220 to TCP sender 102, which is then able to process data packet 220 without requiring an INPCB table lookup. The process at TCP receiver 150 terminates at block 425 when the TCP connection is closed.
Assuming TCP receiver 150 is configured with a modified TCP/IP stack and that TCP receiver 150 is receiving packets for an application at TCP receiver that has established its INPCB address with TCP sender, TCP receiver 150 utilizes INPCB address 225 to deliver data 230 to the corresponding location within sockets 215. This portion of the process is similar to that of TCP sender 102 illustrated by
In accordance with the present invention, the utilization of modified TCP/IP stack 148 to generate TCP options within data packets, whereby INPCB address information is transmitted along with the data, substantially eliminates the utilization of INPCB lookup tables 200 and 205. These tables are otherwise repeatedly accessed during conventional TCP/IP transmission sessions. The present invention thus enables quick, efficient, and scalable TCP communication.
It is understood that the use herein of specific names are for example only and not meant to imply any limitations on the invention. The invention may thus be implemented with different nomenclature/terminology and associated functionality utilized to describe the above devices/utility, etc., without limitation.
Note that while an illustrative embodiment of the present invention has been, and will continue to be, described in the context of a fully functional computer system with installed software, those skilled in the art will appreciate that the software aspects of an illustrative embodiment of the present invention are capable of being distributed as a program product in a variety of forms, and that an illustrative embodiment of the present invention applies equally regardless of the particular type of signal bearing media used to actually carry out the distribution. Examples of signal bearing media include recordable type media such as thumb drives, floppy disks, hard drives, CD ROMs, DVDs, and transmission type media such as digital and analogue communication links.
While the invention has been particularly shown and described with reference to a preferred embodiment, it will be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention.