IP Library Granted Patent US 8,484,666
Granted Patent B2
US 8,484,666 · App. 12/880,195 · Granted Jul 9, 2013

Optimizations for implementing multi-stack stack hosts

Inventors: Yury Berezansky (Haifa, IL); Moshe Sapir (Haifa, IL); Ben Bernstein (Tel Aviv, IL); Maxim Braitmaiere (Tel-Mond, IL)
Assignee: Microsoft Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,484,666
App. No.
12/880,195
Granted
Jul 9, 2013
Kind
B2
Abstract

Architecture that includes optimizations for “Bump-in-the-API” (BIA) as employed for multi-stack hosts. These optimizations reduce the limitations imposed by the existing translation technologies by simplifying the implementation and addressing possible compatibility issues. More specifically, the architecture discloses optimizations that use a preconfigured NAT64 prefix for mapping of NAT64 IPv6 addresses in the prefix subnet to IPv4 addresses, without a mapping table (stateless), use configuration information for enabling API translation per application (resolves possible compatibility issues), and use a local IPv4 socket and a data pump to reduce the number of translated API calls.

Claims (35)

1. A computer-implemented system, comprising:

a computer having a processor and a memory, the memory having:

a multi-stack local host, having an application of a first transport address version application program interface (API) that seeks communication with a remote host of a second transport address version API; and

an API translation component that facilitates the communication between the application and the remote host based on automatic stateless transport address version translation between the local host and the remote host, application configuration information that determines if API translation is needed for the application, and a localized transport address version socket that creates a listening connection between the API translation component and the application, the API translation component including an address mapper that performs the automatic stateless transport address version translation without an address table by reconstructing a second transport address version into a first transport address version by stripping a prefix from the second transport address version and adding the prefix to the first transport address version.

2. The system of claim 1 , wherein the prefix is a NAT64 prefix.

3. The system of claim 1 , wherein the second transport address version pertains to IPv6 and the first transport address version pertains to IPv4.

4. The system of claim 1 , wherein the API translation component comprises a connect mapper that intercepts a function call to connect to a transport address, creates a local connect socket, and establishes a connection with the remote host via the local connect socket.

5. The system of claim 4 , wherein the connect mapper creates a listening socket that monitors communications between the remote host and the application via the local connect socket.

6. A computer-implemented system, comprising:

a computer configured as a multi-stack local host, the multi-stack local host having a processor and a memory, the memory having:

an application of a first transport address version application program interface (API) that seeks communication with a remote host of a second transport address version API;

a configuration component that stores application configuration information accessible for a given application seeking communications with the remote host, the configuration component determines if API translation is needed for the application; and

an API translation component that facilitates the communication between the application and the remote host, the API translation component associated with,

a name resolver component that performs name resolution based on the application configuration information;

an address mapper component that statelessly deduces and reconstructs an address of the first transport address version into an address of the second transport address version, the address mapper reconstructing the second transport address version into the first transport address version by stripping a prefix from the second transport address version and adding the prefix to the first transport address version; and

a connect mapper component that creates sockets for the application and the remote host via which the application communicates with the remote host.

7. The system of claim 6 , wherein the connect mapper component creates a data pump with an application listening socket and remote host socket that enables communications between the application and the remote host.

8. The system of claim 6 , wherein the prefix is a NAT64 prefix.

9. The system of claim 8 , wherein the first transport address version is IPv4 and the second transport address version is IPv6.

10. The system of claim 8 , wherein the prefix is based on a network address translation device imposed between the remote host and the application.

11. The system of claim 6 , wherein the application is of the first transport address version that seeks to communicate with remote host which is of the first transport address version, via a network address translation component.

12. The system of claim 6 , wherein the stack is based on a bump-in-the-API technology.

13. A computer-implemented method executed by a processor, comprising:

in a multi-stack host, receiving a socket application programming interface (API) call from an application to access a remote host, the application of a first transport address version and the remote host of a second transport address version;

accessing application configuration information to determine to whether to intercept the socket API call from the application;

mapping the first transport address version to the second transport address version using a reversible stateless transformation process that reconstructs the second transport address version into the first transport address version by stripping a prefix from the second transport address version and adding the prefix to the first transport address version;

creating a remote host socket of the second transport address version that facilitates communication with remote host;

creating a listening socket of the first transport address version that facilitates communication with application; and

transmitting data between the listening socket and the remote host socket for communications between the application and the remote host.

14. The method of claim 13 , further comprising performing name resolution based on the application configuration information.

15. The method of claim 13 , further comprising enabling or disabling API translation for the application based on the application configuration information.

16. The method of claim 13 , further comprising intercepting a connection call associated with creation of a local application socket for the application, using a connect mapper.

17. The method of claim 13 , further comprising obtaining from an address mapper an address in the second transport address version for the remote host socket.

18. The method of claim 13 , wherein the first transport address version is IPv4 and the second transport address version is IPv6.

19. The method of claim 13 , wherein the prefix is a NAT64 prefix.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 17, 2010
From: BEREZANSKY, YURY; SAPIR, MOSHE; BERNSTEIN, BEN; BRAITMAIERE, MAXIM
To: MICROSOFT CORPORATION
Reel/Frame 025002/0226 →
Continuity (1)
Related Publication 20120066695A1 · Mar 15, 2012