Application programming interface and generalized network address translator for translation of transport-layer sessions
First Claim
1. A method of communicating between a client process and a server process in a distributed processing system, comprising:
- issuing, by the client process, a message packet containing an IP source address and an IP destination address;
translating, by a kernel-mode translation process, at least one of the IP source address and the IP destination address;
forwarding, by a TCP/IP driver, the message packet containing the translated at least one of the IP source and the IP destination address;
commanding, by a user-mode application process, a translation of at least one of the IP source address and the IP destination address;
mapping, by the kernel-mode translation process, the translation of the at least one of the IP source address and the IP destination address; and
translating at least one of the IP source address and the IP destination address comprises the step of translating both of the IP source address and the IP destination address.
2 Assignments
0 Petitions
Accused Products
Abstract
An application programming interface for translation of transport-layer sessions is presented. The system includes kernel-mode support for application-controlled network address translation and user-mode implementation of the redirect API routines. In this way, an application process may request that a network gateway modify the source and/or destination of a given network session in a manner transparent to the original source host and/or the replacement destination host. The ability to perform arbitrary redirection on network sessions under application control allows the establishment of fast path sessions, server load balancing, etc. With the generalized NAT (gNAT) of the instant invention and its associated API, both the source and the destination addresses of message packets may be changed. The address changes are mapped in the gNAT, and may result in apparent sessions between different clients and servers. Depending on the protocol in use (e.g. TCP or UDP), the address translation may be made dynamically by the gNAT, under the command of the application, and take place at the kernel level. This significantly improves the data flow of the system by short-circuiting previously required data transfer between the kernel and user modes.
134 Citations
9 Claims
-
1. A method of communicating between a client process and a server process in a distributed processing system, comprising:
-
issuing, by the client process, a message packet containing an IP source address and an IP destination address;
translating, by a kernel-mode translation process, at least one of the IP source address and the IP destination address;
forwarding, by a TCP/IP driver, the message packet containing the translated at least one of the IP source and the IP destination address;
commanding, by a user-mode application process, a translation of at least one of the IP source address and the IP destination address;
mapping, by the kernel-mode translation process, the translation of the at least one of the IP source address and the IP destination address; and
translating at least one of the IP source address and the IP destination address comprises the step of translating both of the IP source address and the IP destination address. - View Dependent Claims (2, 3)
passing the message packet to an application process, thereby forming a first session;
copying, by the application process, the message packet to a second session;
passing the message packet copied to the second session to the TCP/IP driver for forwarding to the IP destination address;
commanding, by the application process, a redirect of subsequent message packets; and
wherein said step of translating is accomplished in accordance with the commanded redirect from the application process.
-
-
3. The method of claim 2, wherein said step of translating in accordance with the commanded redirect precludes, for subsequent message packets containing at least one of an IP source address and an IP destination address matching the commanded redirect, further processing of the steps of passing the message packet to an application process, copying, by the application process, the message packet to a second session, and passing the message packet copied to the second session to the TCP/IP driver.
-
4. A method of communicating between a client and a server, comprising:
-
receiving in the kernel-mode a first control message packet from a client;
establishing a first control session by passing the first control message packet to an user-mode application process;
establishing a second control session by passing the first control message packet from the application process to a kernel-mode driver;
transmitting the first control message packet on the second session to a server;
establishing a data session by commanding an address redirect in a kernel-mode network address translation process;
receiving in the kernel-mode data from the server;
dynamically redirecting the data within the kernel-mode in accordance with the commanded address redirect to the client thereby precluding the passing of the data to the user-mode; and
transmitting the data on the data session to the client. - View Dependent Claims (5, 6)
receiving in the kernel-mode a second control message packet from a client;
passing the second control message packet to the user-mode application process;
passing the second control message packet from the application process to the kernel-mode driver;
transmitting the second control message packet to a server;
canceling the data session by commanding the revocation of the address redirect in the kernel-mode network address translation process.
-
-
7. A method of load balancing a plurality of network servers, comprising the steps of:
-
monitoring, by a user-mode application process, processor load levels of the plurality of network servers;
identifying one of the plurality of network servers based on processor load levels to service an incoming request;
commanding an address redirect of incoming message packets to change a destination IP address of the message packets at a kernel-mode to the one of the plurality of network servers;
receiving an message packet;
translating the destination IP address of the message packet to the IP address of the one of the plurality of network servers; and
transmitting the message packet to the one of the plurality of network servers. - View Dependent Claims (8, 9)
-
Specification