# US 2010/0161771 A1 · Internet protocol (ip) address virtualization for terminal server sessions

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2010/0161771 A1
- Document ID: US20100161771A1
- Status: Published application
- Kind: A1
- Application number: 12/341,523
- Filed: 2008-12-22
- Published: 2010-06-24
- Earliest claimed: 2008-12-22
- Assignees: Microsoft Corporation
- Inventors: Huei Wang; NK Srinivas; Ashwin Palekar; Olga B. Ivanova; Costin Hagiu; Rouslan Beletski; Sriram Sampath; Seema J. Lukose
- Web page: https://patentgrep.com/patent/US20100161771A1

## CPC

- H04L 61/5014: using dynamic host configuration protocol [DHCP] or bootstrap protocol [BOOTP]
- H04L 45/745: Address table lookup; Address filtering
- H04L 61/103: across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]
- H04L 65/1045: Proxies, e.g. for session initiation protocol [SIP]
- H04L 65/61: for supporting one-way streaming services, e.g. Internet radio
- H04L 67/146: Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
- H04L 67/51: Discovery or management thereof, e.g. service location protocol [SLP] or web services
- H04L 61/4511: using domain name system [DNS]
- H04L 67/306: User profiles
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Techniques are disclosed for virtualizing internet protocol (IP) addresses in terminal server sessions. A client component comprises a layer service provider (LSP) and a name service provider (NSP) that intercept a socket call to associate a port with a socket for a terminal server session. The client component queries a server component for a virtual IP address, and the server component determines whether the terminal server session can use a virtual IP address. Where the session can use a virtual IP address, the server returns a virtual IP address and the client component binds the socket call to the virtual IP address. Where the session cannot use a virtual IP address, the server returns an indication of that, and the client component acts as a proxy for that socket call and any future calls for that socket.

## Claims

### Claim 1

A method for virtualizing internet protocol (IP) addresses in terminal server sessions, comprising:
intercepting a request to associate a port number and a socket destined for a destination;
sending a request for a virtual IP address to an IP virtualization server;
receiving a requested virtual IP address;
modifying the request to associate the port number and the socket to include the requested virtual IP address; and
associating the requested virtual IP address with the socket.

### Claim 2 (depends on 1)

The method of claim 1, where the request to associate the port number with the socket is a bind request and is received across a communications network.

### Claim 3 (depends on 1)

The method of claim 1, where the request to associate the port number with the socket is a connect request and is received from a local application.

### Claim 4 (depends on 1)

The method of claim 1, wherein the request to associate the port number with the socket is received by a layered service provider (LSP).

### Claim 5 (depends on 1)

The method of claim 1, wherein the requested virtual IP address is a unique IP address.

### Claim 6 (depends on 1)

The method of claim 1, wherein a terminal server session corresponds to the requested virtual IP address.

### Claim 7 (depends on 1)

The method of claim 1, wherein an application within the terminal server session corresponds to the requested virtual IP address.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
receiving a request to resolve a domain name service (DNS) hostname into an IP address; and
returning a machine IP address and the requested virtual IP address.

### Claim 9 (depends on 1)

The method of claim 1, further comprising
receiving a request to provide host information corresponding to a host name from a host database; and
returning a machine IP address and the requested virtual IP address that correspond to the host name from the host database.

### Claim 10 (depends on 1)

The method of claim 1, wherein the request is received from a terminal server session.

### Claim 11 (depends on 10)

The method of claim 10, wherein the request is received from the terminal server session when the session logs into a host.

### Claim 12

A method for virtualizing internet protocol (IP) addresses in terminal server sessions, comprising:
receiving a request from a requester for a virtual IP address;
determining whether the requester can use a virtual IP address; and
sending a requested virtual IP address to the requester when the requester can use a virtual IP address.

### Claim 13 (depends on 12)

The method of claim 12, further comprising:
sending an indication that the requester cannot use a virtual IP address to the requester when the requester cannot use a virtual IP address.

### Claim 14 (depends on 12)

The method of claim 12, wherein determining includes attempting to retrieve a IP route entry for the best route to the a destination IP address corresponding to the request.

### Claim 15 (depends on 12)

The method of claim 12, further comprising:
pre-allocating a pool of addresses comprising at least one virtual IP address; and
wherein the pool of addresses comprises the requested virtual IP address.

### Claim 16 (depends on 12)

The method of claim 12, further comprising:
selecting the requested virtual IP address via a dynamic configuration protocol (DHCP).

### Claim 17 (depends on 12)

The method of claim 12, further comprising:
when a allocating a pool of addresses is not enabled, generating a MAC address that comprises a session ID;
sending the MAC address to a DHCP server in a request for a virtual IP address; and
receiving the virtual IP address.

### Claim 18 (depends on 12)

The method of claim 12, wherein determining whether the requestor can use a virtual IP address includes:
determining that the requestor cannot use a virtual IP address when the requestor corresponds to a service process or a system process.

### Claim 19 (depends on 12)

The method of claim 12, wherein determining whether the requestor can use a virtual IP address includes:
determining that the requestor cannot use a virtual IP address when the requestor is included in an exclude list, the exclude list comprising applications that cannot use a virtual IP address.

### Claim 20

A computer readable storage medium, comprising computer readable instructions that, when executed on a processor perform operations comprising:
intercepting a request from a terminal server session to associate a port number and a socket destined for a destination, the request comprising either a bind request or a connect request;
sending a request for a virtual IP address to a IP virtualization server, the virtual IP address comprising a unique IP address;
receiving the requested virtual IP address when the terminal server session can use the requested virtual IP address;
modifying the request to associate the port number and the socket to include the virtual IP address; and
associating the virtual IP address with the socket.
