USOO8056089B2

(12) United States Patent (10) Patent No.: US 8,056,089 B2 Fried et al. (45) Date of Patent: Nov. 8, 2011

(54) SHORTCUT IP COMMUNICATIONS (56) References Cited BETWEEN SOFTWARE ENTITIES INA SINGLE U.S. PATENT DOCUMENTS 7,051,108 B1* 5/2006 Jones et al...... TO9/230 (75) Inventors: Eric Fried, Austin, TX (US); Vinit Jain, 2006/0034290 A1 2/2006 Kalofonos et al. . 370,395.2 Austin, TX (US); Lance W. Russell, 2006.0075,123 A1* 4, 2006 Burr et al...... TO9,228 Rosansky, TX (US) 2006/0106934 A1* 5/2006 Figaro et al...... 709,227 * cited by examiner (73) Assignee: International Business Machines Primary Examiner — Lechi Truong Corporation, Armonk, NY (US) Assistant Examiner — Tuan Dao (74) Attorney, Agent, or Firm — Dillon & Yudell LLP (*) Notice: Subject to any disclaimer, the term of this patent is extended or adjusted under 35 (57) ABSTRACT U.S.C. 154(b) by 991 days. A method, computer program product, and data processing system for performing efficient communication between Soft (21) Appl. No.: 11/557, 184 ware entities residing in the same operating system using conventional network communications are disclosed. (22) Filed: Nov. 7, 2006 According to a preferred embodiment, whena Software entity (e.g., a ) attempts to communicate through a network (65) Prior Publication Data ing API, the operating system determines whether the other end of the communication refers to the same hardware . US 2008/O1098.18A1 May 8, 2008 If so, the operating system replaces the network protocol connection (socket connection) with a direct interprocess (51) Int. Cl. communication construct. The operating system provides G06F 3/00 (2006.01) additional code to simulate the appearance of an actual net G06F 15/16 (2006.01) work (socket) connection at the API level while performing (52) U.S. Cl...... 71.9/313; 71.9/312; 719/320, 709/218 all actual I/O using the interprocess communication con (58) Field of Classification Search ...... None Struct. See application file for complete search history. 20 Claims, 4 Drawing Sheets

Receive request to openSocket connection CO

OpenSocket connection O7

ls (Onnection to local Oddress? 103

Open IPCConstruct to replace Socket lO4. No Record mapping from SO(kid to PCfd O6 U.S. Patent Nov. 8, 2011 Sheet 1 of 4 US 8,056,089 B2

Receive request to Open SOcket (Onnection OO

Open SOcket (Onnection O2

ls connection to local address? lO3

Open IPCConstruct to replace SOcket 104

Record mapping from SOckfoto PCfd 106

Figurel U.S. Patent Nov. 8, 2011 Sheet 2 of 4 US 8,056,089 B2

200

SOckfic fifof 2

Figure 2 U.S. Patent Nov. 8, 2011 Sheet 3 of 4 US 8,056,089 B2

Receive call to SOcket read/write/close rOUtine 300

ls SOckfd in mopping table? 302

Read/write from/to or destroy Read/write/close Using IPCConstruct corresponding to networking routine(s) SOckfc in table 306 304

Return result of networking Operation Generate network API through AP like result Ondreturn 308 through AP 305

Figure 3 U.S. Patent Nov. 8, 2011 Sheet 4 of 4 US 8,056,089 B2

40 Processor(s) 2 400

Host BUS 402

Level 2 Coche 404 Main Memory 4084. Host-to-PCI Bridge s 406

PCBUS 4

Service ProceSSO? LAN Cord Interface & ISA Access Of PoSSthru 430 412

PCBUS 414

Service PrOceSSOr Flash Memory PC-O-ISA ring Modem 445 416 435 NVRAM 420 Power Mgmt. Serial Parallel 455 464 462 ISA BUS 440 Figure 4 US 8,056,089 B2 1. 2 SHORTCUT IP COMMUNICATIONS type of bypass when applicable. Moreover, this type of bypass BETWEEN SOFTWARE ENTITIES INA cannot be used in a partitioned system, i.e., a system that is SINGLE OPERATING SYSTEM divided into two or more software partitions. Software parti tions are virtual operating system instances residing on the BACKGROUND OF THE INVENTION same physical system and sharing the same operating system (kernel) code. A Software partition cannot see certain aspects 1. Technical Field the global environment and other software partitions (includ The present invention relates generally to networked com ing network-related information), except as they would be puter programming, and specifically to the improvement of visible from a physically separate system. Thus, in the event execution performance of network applications communicat 10 ing with each other in a single operating system. that communicating applications resided in separate Software 2. Description of the Related Art partitions on one global system, the applications would not be Modern telecommunications depends on networks. A net capable of determining that they existed on the same system work is a set of interconnected machines (network elements) and would therefore not be able to bypass the full network that allow data to be relayed across the set of machines from 15 protocol processing using the technique described above. a source to a destination. Networks may be classified accord What is needed, therefore, is a method of bypassing full ing to the geographic area they occupy. A local area network processing for communications between two (LAN) is usually defined as a network that is physically processes residing on the same system, even in the event that limited to a relatively small area, such as a building or group the two processes reside in different software partitions or ofbuildings. A wide area network (WAN) is a general term for under other circumstances that prevent the applications them a network of larger size. selves from determining whether they reside on the same Networking protocols, which define the rules for commu system. The present invention provides a solution to this and nication between network elements, are typically designed to other problems, and offers other advantages over previous work in layers, where each layer performs a slightly different Solutions. role in data transmission. TCP/IP (Transmission Control Pro 25 tocol/ Protocol) is a collection of protocols (called a SUMMARY OF THE INVENTION protocol suite) that forms the basis for the Internet and many other networks. TCP/IP is generally considered to follow a Accordingly, the present invention provides a method, four-layer protocol model. computer program product, and data processing system for An application programmer needing to write networking 30 performing efficient communication between Software enti enabled software typically uses an application programming ties residing in the same operating system using conventional interface (API) that allows the programmer to program net network communications APIs. According to a preferred work communications in an abstract way without explicitly embodiment, whena Software entity (e.g., a process) attempts addressing the specifics of each protocol layer. Perhaps the to communicate through a networking API, the operating most widely utilized of such APIs is the “sockets' API com 35 monly provided in /POSIX-based operating systems: system determines whether the other end of the communica similar “sockets” and “sockets’-like APIs are provided in tion refers to the same hardware node. If so, the operating other operating systems and programming environments, system replaces the network protocol connection (socket con Such as the JAVA programming environment, for example. nection) with a direct interprocess communication construct. The “sockets' approach to network communication is to 40 The operating system provides additional code to simulate model a connection between two network entities as a the appearance of an actual network (Socket) connection at or abstract file, which is called a “socket'. In the usual POSIX the API level while performing all actual I/O using the inter “sockets' for use in programming in the C program process communication construct. ming language, opening a Socket generates a “socket descrip The foregoing is a Summary and thus contains, by neces tor' number, which is analogous to a . Subse 45 sity, simplifications, generalizations, and omissions of detail; quent input/output (I/O) from/to the socket is performed by consequently, those skilled in the art will appreciate that the passing the “socket descriptor' to I/O routines, just as in the Summary is illustrative only and is not intended to be in any case of a file descriptor. way limiting. Other aspects, inventive features, and advan Although it is arguable that the ultimate aim of network tages of the present invention, as defined solely by the claims, programming is to allow various computers in a network to 50 will become apparent in the non-limiting detailed description communicate with one another, it often occurs that two com set forth below. municating network applications will actually reside on the same computer and same operating system instance. For BRIEF DESCRIPTION OF THE DRAWINGS example, an application process may communicate with a database server process on the same operating system 55 The present invention may be better understood, and its instance. In Such cases, a modern operating system will gen numerous objects, features, and advantages made apparent to erally avoid using the computer's networking hardware to those skilled in the art by referencing the accompanying enable the communication, but will still process the commu drawings, wherein: nication through the usual protocol layers (e.g., the layers of FIG. 1 is a flowchart representation of a process of opening the TCP/IP protocol suite). The usefulness of the processing 60 a network connection in an operating system in accordance performed by these layers, however, is of less value for com with a preferred embodiment of the present invention; munication between Software entities on the same system. FIG. 2 is a diagram of a socket descriptor/IPC construct For instance, encryption of data being transmitted between descriptor mapping table in accordance with a preferred two processes on the same system is Superfluous. embodiment of the present invention; In existing technology, however, there is no way to bypass 65 FIG.3 is a diagram of a process of reading from, writing to, this additional network processing without including addi querying, or destroying a network connection in accordance tional (non-standard) code in each application to enable this with a preferred embodiment of the present invention; and US 8,056,089 B2 3 4 FIG. 4 is a block diagram of a data processing system in FIFOs (First-In-First-Out), and the like. Indeed, these other which a preferred embodiment of the present invention may types of constructs, many of which follow a stream-like be implemented. model input/output, are actually preferred over the messaging and communications constructs provided by DETAILED DESCRIPTION “System V IPC”. In particular a preferred embodiment of the present inven The following is intended to provide a detailed description tion replaces the local network connection with a stream-like of an example of the invention and should not be taken to be interprocess communication construct. A number of Such limiting of the invention itself. Rather, any number of varia constructs are widely known in the art. POSIX-compliant tions may fall within the scope of the invention, which is 10 operating systems define a bidirectional “FIFO construct, defined in the claims following the description. which provides stream-based I/O between processes. FIG. 1 is a flowchart representation of a process of opening POSIX-based operating systems also provide a feature called a network connection in an operating system in accordance “pipes, which provide similar stream-based I/O. The POSIX with a preferred embodiment of the present invention. The standard defines only half-duplex pipes, however, so it is process begins with the operating system receiving a request 15 necessary in some operating systems to utilize a pair of pipes to open a network connection (via a call to the appropriate for full-duplex communications (although some operating routine in the sockets API or other suitable networking API systems, such as UNIX System V Release 4, support bidirec one skilled in the art will recognize that the example provided tional pipes or, as in the case of the open-source Linux oper in FIG. 1 utilizes the sockets API, but other similar APIs, such ating system, paired half-duplex pipes). as the X/Open Transport Interface or “XTI.” may be used Another form of interprocess communication construct without limitation) (block 100). In response to this call, the that may be utilized is that of “operating system-domain operating system first naively complies with the request by sockets” or “local domain sockets” (commonly referred to as opening a normal network connection (e.g., a Socket connec “UNIX domain sockets” in the UNIX/POSIX community). tion) (block 102). These are interprocess communication constructs (i.e., they Next, however, a determination is made as to whether the 25 do not allow for communication over a network interface) that address on the other end of the connection (the “destination utilize the same API as network sockets, but that are bound to node') is actually a local address (i.e., that the connection is a pathname (i.e., filename) rather than to a network address. to a Software entity residing in the same operating system on Once the interprocess communication construct has been the same hardware node) (block 103). This determination is created, an entry is made in a mapping table to denote a made by consulting the operating systems internal routing 30 mapping from the original network connection to the new table, which indicates which network interface is used to interprocess communication construct (block 106). In a pre transmit packets to the destination node. If the destination ferred embodiment implemented in a POSIX-like operating node is a local address, a physical network interface is not system, both network sockets and stream-based IPC con used transmit/receive packets to/from the destination node: structs are assigned to numerical "descriptor values, which rather a fictitious or “virtual interface, known as the “loop 35 function like file descriptors. Thus, a mapping table to map back interface.” is used instead. The loopback interface is a network connections to associated IPC constructs may be Software-defined construct that simply sends packets to itself, constructed in the form of table 200 in FIG. 2, where numeri rather than through a hardware network adapter. In a typical cal Socket descriptors (sockfa) are mapped into IPC construct TCP/IP networking system, the loopback interface is descriptors, which in this example are bidirectional FIFOs assigned the IP address 127.0.0.1 by convention. 40 (fiftofa). Once this mapping is complete, all input/output can In a preferred embodiment of the present invention, the be performed through the IPC construct in the manner shown operating system kernel provides a service for determining in FIG. 3. At this point, it is actually possible to close or the route taken by packets through a given network connec destroy the original network connection (generated at block tion and returning that route to the calling routine. Thus, the 102), as long as this is done in a manner that is undetectable destination node for a given network connection is deter 45 by the applications on either end of the connection. In any mined to be local by first querying this route lookup kernel case, the process of responding to the connection request is service, then determining if the returned route is a route complete and control may be returned to the calling applica through the loopback interface. If the route goes through the tion. loopback interface, then the destination node is a local One skilled in the art will recognize that in an alternative address. 50 embodiment of the present invention, the original Socket con If the destination node is not local (block 103:No), then the nection need not actually be established before creating the process of opening the connection simply terminates. If the interprocess communication construct. If it can be deter destination node is local, however (block 103:Yes), then the mined initially that the destination node is local without cre operating system generates an interprocess communication ating a socket connection, then the interprocess communica (IPC) construct to replace the conventional network connec 55 tion construct can be created to begin with, without opening a tion (socket connection) (block 104). Socket connection at all. It should be noted that in this context, the terms “interpro FIG.3 is a diagram of a process of reading from, writing to, cess communication' and "IPC are used in a broad sense to querying, or destroying a network connection in accordance incorporate any of a number of different operating system with a preferred embodiment of the present invention. A call constructs used for facilitating communication between soft 60 is received by the operating system to read, write, query, or ware entities (e.g., processes and threads) in a multitasking close a connection made in accordance with the process operating system, notwithstanding the fact that Some operat shown in FIG. 1 (block 300). The operating system then ing systems (most notably, UNIX System V and related oper determines if the socket descriptor (or other form of ating systems) use the term IPC to refer to a specific type of used to identify the connection) can be found in the mapping interprocess communication construct. The terms “interpro 65 table (table 200 in FIG. 2). If so, then whatever operation cess communication' and “IPC. as used here, encompass would have been performed on that connection’s socket other types of operating system constructs, such as pipes, (reading, writing, querying status, closing, etc.) is performed US 8,056,089 B2 5 6 instead on the IPC construct associated with the socket tem 401 to an ISP to connect to the Internet using a telephone descriptor in the mapping table (block 304). The result of this line connection, modem 475 is connected to serial port 464 operation is then placed in the usual form of output for the API and PCI-to-ISA Bridge 435. in which the call was initially received and this result is While the computer system described in FIG. 4 is capable returned through that API (block 305). In some instances, it of executing the processes described herein, this computer may be necessary to generate spurious information to return system is simply one example of a computer system. Those through the API to maintain compatibility with the original skilled in the art will appreciate that many other computer API specification, where the information normally returned system designs are capable of performing the processes API is not applicable to the IPC construct. At this point, described herein. 10 One of the preferred implementations of the invention is a control returns to the calling application. application, namely, a set of instructions (program As can be seen, the processes of FIGS. 1 and 3 provide an code) or other functional descriptive material in a code mod application-independent method of improving the perfor ule that may, for example, be resident in the random access mance of network applications in a single operating system memory of the computer. Until required by the computer, the that must communicate with one another. This method is 15 set of instructions may be stored in another computer completely transparent to the applications, as it is performed memory, for example, in a hard disk drive, or in a removable by the operating system through normal network system memory Such as an optical disk (for eventual use in a CD calls. ROM) or floppy disk (for eventual use in a floppy disk drive), FIG. 4 illustrates information handling system 401 which or downloaded via the Internet or other . is a simplified example of a computer system/data processing Thus, the present invention may be implemented as a com system capable of performing the computing operations puter program product for use in a computer. In addition, described herein with respect to a preferred embodiment of although the various methods described are conveniently the present invention. Computer system 401 includes proces implemented in a general purpose computer selectively acti sor 400 which is coupled to host bus 402. A level two (L.2) vated or reconfigured by software, one of ordinary skill in the cache memory 404 is also coupled to hostbus 402. Host-to 25 art would also recognize that Such methods may be carried out PCI bridge 406 is coupled to main memory 408, includes in hardware, in firmware, or in more specialized apparatus cache memory and main memory control functions, and pro constructed to perform the required method steps. Functional vides bus control to handle transfers among PCI bus 410. descriptive material is information that imparts functionality processor 400, L2 cache 404, main memory 408, and hostbus to a machine. Functional descriptive material includes, but is 402. Main memory 408 is coupled to Host-to-PCI bridge 406 30 not limited to, computer programs, instructions, rules, facts, as well as hostbus 402. Devices used solely by host processor definitions of computable functions, objects, and data struc (s) 400, such as LAN card 430, are coupled to PCI bus 410. tures. Service Processor Interface and ISA Access Pass-through While particular embodiments of the present invention 412 provides an interface between PCI bus 410 and PCI bus have been shown and described, it will be obvious to those 414. In this manner, PCI bus 414 is insulated from PCI bus 35 skilled in the art that, based upon the teachings herein, 410. Devices, such as flash memory 418, are coupled to PCI changes and modifications may be made without departing bus 414. In one implementation, flash memory 418 includes from this invention and its broader aspects. Therefore, the BIOS code that incorporates the necessary processor execut appended claims are to encompass within their scope all Such able code for a variety of low-level system functions and changes and modifications as are within the true spirit and system boot functions. 40 scope of this invention. Furthermore, it is to be understood PCI bus 414 provides an interface for a variety of devices that the invention is solely defined by the appended claims. It that are shared by host processor(s) 400 and Service Proces will be understood by those with skill in the art that if a sor 416 including, for example, flash memory 418. PCI-to specific number of an introduced claim element is intended, ISA bridge 435 provides bus control to handle transfers such intent will be explicitly recited in the claim, and in the between PCI bus 414 and ISA bus 440, universal serial bus 45 absence of Such recitation no Such limitation is present. For (USB) functionality 445, power management functionality non-limiting example, as an aid to understanding, the follow 455, and can include other functional elements not shown, ing appended claims contain usage of the introductory such as a real-time clock (RTC), DMA control, interrupt phrases “at least one' and “one or more' to introduce claim Support, and system management bus Support. Nonvolatile elements. However, the use of such phrases should not be RAM 420 is attached to ISA Bus 440. Service Processor 416 50 construed to imply that the introduction of a claim element by includes JTAG and I2C buses 422 for communication with the indefinite articles “a” or “an limits any particular claim processor(s) 400 during initialization steps. JTAG/I2C buses containing Such introduced claim element to inventions con 422 are also coupled to L2 cache 404, Host-to-PCI bridge taining only one such element, even when the same claim 406, and main memory 408 providing a communications path includes the introductory phrases “one or more' or “at least between the processor, the Service Processor, the L2 cache, 55 one' and indefinite articles such as 'a' or “an; the same the Host-to-PCI bridge, and the main memory. Service Pro holds true for the use in the claims of definite articles. Where cessor 416 also has access to system power resources for the word 'or' is used in the claims, it is used in an inclusive powering down information handling device 401. sense (i.e., “A and/or B.’ as opposed to “either A or B). Peripheral devices and input/output (I/O) devices can be What is claimed is: attached to various interfaces (e.g., parallel interface 462. 60 1. In a data processing system having one or more operat serial interface 464, keyboard interface 468, and mouse inter ing systems (OS) and a plurality of Software entities execut face 470 coupled to ISA bus 440. Alternatively, many I/O ing thereon, a processor implemented method comprising: devices can be accommodated by a super I/O controller (not an operating system of the one or more operating systems shown) attached to ISA bus 440. receiving a request from an originating software entity to In order to attach computer system 401 to another com 65 open a network connection via a call to a routine in a puter system to copy files over a network, LAN card 430 is networking/sockets application programming interface coupled to PCI bus 410. Similarly, to connect computer sys (API): US 8,056,089 B2 7 8 the operating system determining from an internal routing assigning a and a stream-based IPC con table whethera destination address of a destination node struct with numerical descriptor values, which values of the request is a local address, wherein the local function as file descriptors; and address is the local address of a software entity in the Subsequently performing all input/output through the operating system on a same physical device as the origi 5 stream-based IPC construct. nating Software entity from which the request was gen 6. The method of claim 5, further comprising destroying an erated; original network connection after the mapping is created in response to determining the destination address of the within the mapping table. destination node is a local address, the operating system 7. The method of claim 5, further comprising: generating an interprocess communication (IPC) con 10 the operating system receiving a call to perform a function struct within the operating system to replace a conven on a network connection, wherein the function is one or tional network/socket connection between the originat more from among reading from, writing to, querying or ing software entity and a destination software entity; destroying the network connection; wherein the destination address is determined to be local determining if a socket descriptor can be found in the when the destination address points to a location of the 15 mapping table; destination software entity when the destination soft if the Socket descriptor is found in the mapping table, ware entity exists within a same OS and on the same performing one or more operations intended to be per physical device as the originating software entity, and formed by a connections socket on the IPC construct when the originating software entity and the destination associated with the Socket descriptor in the mapping Software entity exists within separate software partitions table; on the same OS and the same physical device; and placing a result of the one or more operations in a usual in response to the destination address being a local address, form of output for the API in which the call was initially utilizing a loopback interface to transmit/receive packets received; to/from the destination node in lieu of a local network returning the result through the API; and interface indicated by the conventional network/socket 25 returning control to the calling application. connection. 8. The method of claim 1, further comprising creating the 2. The method of claim 1, wherein the determining whether IPC construct without first creating a socket connection when the address of the destination node is a local address further a prior determination is made that the destination node is comprises: local. determining if a location of the destination node for a given 30 9. A data processing system comprising: network connection is local by: at least one processor, (a) querying a route lookup kernel service; and (b) deter data storage accessible to the at least one processor; mining if a return route is a route through the loopback an operating system (OS) and a plurality of software enti interface; wherein the destination node is a local ties also executing on the processor, and address when the route goes through the loopback 35 program code that is executed by the processor to provide interface; or the functions of: (c) consulting an internal routing table of the OS, and the operating system receiving a request from an origi wherein the location is determined to be local when the nating software entity to open a network connection originating Software entity exists within a same OS and via a call to a routine in a networking/sockets appli on the same physical device, and when the originating 40 cation programming interface (API); software entity and the destination node exists within the operating system determining from an internal rout separate Software partitions on a same OS and a same ing table whether a destination address of a destina physical device. tion node of the request is a local address, wherein the 3. The method of claim 1, wherein when the destination local address is the local address of a software entity node is local, the method further comprises: 45 in the operating system on a same physical device as replacing a conventional network/socket connection in an the originating Software entity from which the request internal routing table of the OS with the IPC construct; was generated; and in response to determining the destination address of the wherein the destination node is determined to be local destination node is a local address, the operating sys when the originating Software entity exists within a same 50 tem generating an interprocess communication (IPC) OS and on the same physical device, and when the construct within the operating system to replace a originating software entity and the destination node conventional network/socket connection between the exists within two separate Software partitions, which originating Software entity and a destination Software share a same OS on a same physical device. entity; 4. The method of claim 3, wherein the IPC construct gen 55 wherein the address is determined to be local when the erated is a streamlike IPC such as a pipe or a FIFO structure, address points to a location of a destination Software which provides stream-like model input/output. entity that exists within the same OS and on the same 5. The method of claim 3, wherein said replacing the con physical device as the originating Software entity, and ventional network/socket connection in the internal routing when the originating software entity and the destina table comprises: 60 tion software entity exists within separate software creating a mapping table to map network connections to partitions on the same OS and the same physical associated IPC construct, wherein numerical socket device; and descriptors are mapped into IPC construct descriptors in in response to the address being a local address, utilizing a bidirectional First-In-First-Out (FIFO); a loopback interface to transmit/receive packets making an entry in the mapping table to denote a mapping 65 to/from the destination node in lieu of a local network from an original network connection to a new IPC con interface indicated by the conventional network/ Struct; Socket connection. US 8,056,089 B2 10 10. The data processing system of claim 9, wherein the wherein the destination node is determined to be local program code for determining whether the address of the when the originating Software entity exists within a same destination node is a local address further comprises code that OS and on the same physical device, and when the performs the functions of: originating software entity and the destination node determining if a location of the destination node for a given exists within two separate Software partitions, which network connection is local by: share a same OS on a same physical device. (a) querying a route lookup kernel service; and (b) deter 15. A computer program product comprising a computer mining if a return route is a route through the loopback readable storage medium and program code stored on the interface; wherein the destination node is a local computer readable storage medium that, when executed by a address when the route goes through the loopback 10 data processing system with a single operating system (OS) interface; or Supporting a plurality of Software entities, causes the data (c) consulting an internal routing table of the OS, and processing system to perform the functions of wherein the location is determined to be local when the the operating system receiving a request from an originat originating Software entity exists within a same OS and ing software entity to open a network connection via a on the same physical device, and when the originating 15 call to a routine in a networking/sockets application software entity and the destination node exists within programming interface (API); separate Software partitions on a same OS and a same the operating system determining from an internal routing physical device. table whethera destination address of a destination node 11. The data processing system of claim 10, wherein said of the request is a local address, wherein the local program code for replacing the conventional network/socket address is the local address of a software entity in the connection in the internal routing table comprises code that operating system on a same physical device as the origi performs the functions of: nating Software entity from which the request was gen creating a mapping table to map network connections to erated; associated IPC construct, wherein numerical socket in response to determining the destination address of the descriptors are mapped into IPC construct descriptors in 25 destination node is a local address, the operating system a bidirectional First-In-First-Out (FIFO); generating an interprocess communication (IPC) con making an entry in the mapping table to denote a mapping struct within the operating system to replace a conven from an original network connection to a new IPC con tional network/socket connection between the originat Struct; ing software entity and a destination software entity; assigning a network Socket and a stream-based IPC con 30 wherein the address is determined to be local when the struct with numerical descriptor values, which values address points to a location of a destination Software function as file descriptors; and entity that exists within the same OS and on the same Subsequently performing all input/output through the physical device as the originating Software entity, and stream-based IPC construct. when the originating software entity and the destination 12. The data processing system of claim 11, further com 35 Software entity exists within separate software partitions prising program code that performs the functions of: on the same OS and the same physical device; and creating the IPC construct without first creating a socket in response to the address being a local address, utilizing a connection when a prior determination is made that the loopback interface to transmit/receive packets to/from destination node is local; and the destination node in lieu of a local network interface destroying an original network/socket connection after the 40 indicated by the conventional network/socket connec mapping is created within the mapping table. tion. 13. The data processing system of claim 11, further com 16. The computer program product of claim 15, wherein prising: the program code for determining whether the address of the the operating system receiving a call to perform a function destination node is a local address further comprises code that on a network connection, wherein the function is one or 45 causes the data processing system to perform the functions of more from among reading from, writing to, querying or determining if a location of the destination node for a given destroying the network connection; network connection is local by: determining if a socket descriptor can be found in the (a) querying a route lookup kernel service; and (b) deter mapping table; mining ifa return route is a route through the loopback if the Socket descriptor is found in the mapping table, 50 interface; wherein the destination node is a local performing one or more operations intended to be per address when the route goes through the loopback formed by a connections socket on the IPC construct interface; or associated with the Socket descriptor in the mapping (c) consulting an internal routing table of the OS, and table; wherein the location is determined to be local when the placing a result of the one or more operations in a usual 55 originating Software entity exists within a same OS and form of output for the API in which the call was initially on the same physical device, and when the originating received; software entity and the destination node exists within returning the result through the API; and separate software partitions, which share a same OS and returning control to the calling application. a same physical device. 14. The data processing system of claim 9, wherein when 60 17. The computer program product of claim 16, further the destination node is local, the program code further com comprising: prises code that performs the functions of: the operating system receiving a call to perform a function wherein the IPC construct generated is a streamlike IPC on a network connection, wherein the function is one or such as a pipe or a First-In-First-Out (FIFO) structure, more from among reading from, writing to, querying or which provides stream-like model input/output; and 65 destroying the network connection; replacing a conventional network/socket connection in an determining if a socket descriptor can be found in the internal routing table of the OS with the IPC construct; mapping table; US 8,056,089 B2 11 12 if the Socket descriptor is found in the mapping table, 19. The computer program product of claim 18, wherein performing one or more operations intended to be per said program code for replacing the conventional network/ formed by a connections socket on the IPC construct Socket connection in the internal routing table comprises code associated with the Socket descriptor in the mapping that performs the functions of: table; creating a mapping table to map network connections to placing a result of the one or more operations in a usual associated IPC construct, wherein numerical socket form of output for the API in which the call was initially descriptors are mapped into IPC construct descriptors in received; a bidirectional FIFO: returning the result through the API; and making an entry in the mapping table to denote a mapping returning control to the calling application. from an original network connection to a new IPC con 18. The computer program product of claim 15, wherein Struct; when the destination node is local, the program code further assigning a network Socket and a stream-based IPC con comprises code that causes the data processing to perform the struct with numerical descriptor values, which values functions of: function as file descriptors; and replacing a conventional network/socket connection in an Subsequently performing all input/output through the internal routing table of the OS with the IPC construct; stream-based IPC construct. wherein the IPC construct generated is a streamlike IPC 20. The computer program product of claim 19, further such as a pipe or a First-In-First-Out (FIFO) structure, comprising program code that performs the functions of: which provides stream-like model input/output; and creating the IPC construct without first creating a socket wherein the destination node is determined to be local connection when a prior determination is made that the when the originating Software entity exists within a same destination node is local; and OS and on the same physical device, and when the destroying an original network/socket connection after the originating software entity and the destination node mapping is created within the mapping table. exists within two separate Software partitions, which share a same OS on a same physical device.