IP Library Granted Patent US 9,866,398
Granted Patent B2
US 9,866,398 · App. 15/298,117 · Granted Jan 9, 2018

Pattern coalescing for remote wake-enabled applications

Inventors: Praveen Balasubramanian (Redmond, WA); Poornananda R. Gaddehosur (Bellevue, WA); David Garfield Thaler, III (Redmond, WA); Dmitry A. Anipko (Seattle, WA); Christopher Benjamin Palmer (Seattle, WA)
Assignee: Microsoft Technology Licensing, LLC
H04L12/12G06F1/3209G06F1/3287G06F9/4418H04L29/06095H04L67/141G06F1/3203H04L67/125H04W52/028H04W52/0225H04W52/0229H04W52/0274Y02B60/34Y02B60/50
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 9,866,398
App. No.
15/298,117
Granted
Jan 9, 2018
Kind
B2
Abstract

In various embodiments, methods and systems for managing wake-enabled transport connections of wake-enabled applications is provided. A set of ports is designated as a wake-enabled port set. An operating system (OS) of a computing device running applications plumbs the multiport wake pattern to the one or more network interface controllers (NIC) of the computing device. A wake-enabled application acquires a port from the wake-enabled port set. The OS makes a determination that the application is wake-enabled and as such, assigns a port, from the wake-enable port set, to the wake-enabled application. Upon receiving a packet at the NIC, a determination is made whether the packet corresponds to a wake-enabled transport connection based on comparing the packet to the multiport wake pattern. Upon matching the packet to the multiport wake pattern, the NIC communicates with the OS to wake a portion of the wake-enabled application associated with the wake-enabled transport connection.

Claims (53)

1. One or more computer storage media storing computer-readable instructions that, when used by one or more computing devices, cause the one or more computing devices to perform operations for managing wake-enabled applications, the operations comprising:

receiving a packet;

determining that the packet corresponds to a wake-enabled transport connection of a wake-enabled application, based on comparing the packet to a multiport wake pattern, wherein comparing the packet to the multiport wake pattern comprises:

identifying a port in the packet; and

matching the port in the packet to the multiport wake pattern using bit masking, wherein the multiport wake pattern is matchable to a plurality of ports in a wake-enabled port set, wherein the multiport wake pattern is a wild card pattern corresponding to the wake-enabled port set comprising the plurality of ports, wherein the multiport wake pattern is a bit pattern supporting wake functionality for multiple source ports in the wake-enabled port set, and the plurality of ports are assigned to wake-enabled applications to support wake functionality; and

waking at least a portion of the wake-enabled application associated with the wake-enabled transport connection based at least in part on the identified port.

2. The media of claim 1 , wherein the packet is received when the wake-enabled application is in a suspended state.

3. The media of claim 1 , wherein a wake-enabled port from the wake-enabled port set is assigned to the wake-enabled transport connection when creating the wake-enabled transport connection.

4. The media of claim 1 , wherein the multiport wake pattern is constructed without a local internet protocol address, a remote internet protocol address, and a remote port.

5. The media of claim 4 , wherein the multiport wake pattern is one of a plurality of multiport wake patterns, wherein each multiport wake pattern is assigned to a corresponding configurable slot of a plurality of configurable slots of a network interface controller.

6. The media of claim 1 , wherein the wake-enabled port set is a non-contiguous port range.

7. The media of claim 1 , wherein the wake-enabled port set is a contiguous port range.

8. The media of claim 1 , wherein a selected port or port subset from the wake-enabled port set is selected specifically for one of the following:

a user;

a process; and

an application.

9. The media of claim 1 , wherein waking at least the portion of the wake-enabled application comprises transitioning the wake-enabled application from a suspended state to an active state.

10. A system for managing wake-enabled applications, the system comprising:

a processor and a memory configured for providing computer program instructions to the processor;

an operating system configured to:

reserve a reserved port set having a wake-enabled port set and a non-wake-enabled port set;

assign a reserved port from the reserved port set; and

assign a multiport wake pattern corresponding to the wake-enabled port set, wherein the multiport wake pattern is a wild card pattern constructed as a bit pattern for supporting wake functionality for multiple source ports in the wake-enabled port set;

a multiport wake pattern component having a network interface controller, the multiport wake pattern component configured to:

receive a packet;

determine that the packet corresponds to a wake-enabled transport connection of a wake-enabled application, based on comparing the packet to the multiport wake pattern, wherein comparing the packet to the multiport wake pattern comprises:

identifying a port in the packet; and

matching the port in the packet to the multiport wake pattern using bit masking, wherein the multiport wake pattern is matchable to a plurality of ports in the wake-enabled port set, the plurality of ports are assigned to wake-enabled applications to support wake functionality; and

facilitate waking at least a portion of the wake-enabled application associated with the wake-enabled transport connection; and

the wake-enabled application configured to:

receive a wake command to wake at least a portion of the wake-enabled application.

11. The system of claim 10 , wherein the operating system dynamically determines the reserved port set, wherein the reserved port set is not hardcoded to the operating system.

12. The system of claim 10 , wherein the operating system includes a known reserved port set comprising the wake-enabled port set and the non-wake-enabled port set, wherein the operating system configures wake-enabled transport connections for one or more applications not specifically bound to a port number.

13. The system of claim 10 , wherein the operating system supports a plurality of network interface controllers, wherein each of the network interface controllers is assigned the multiport wake pattern.

14. The system of claim 10 , wherein the multiport wake pattern component is further configured to:

support a plurality of Internet protocol (IP) addresses, wherein a first IP address supports one or more specific-bind wake-enabled applications and a second IP address supports one or more dynamic-bind wake-enabled applications, and wherein the second IP address supports multiport wake patterns.

15. The system of claim 10 , the multiport wake pattern component is further configured to:

deliver the packet to the operating system to wake the wake-enabled application;

the operating system is further configured to:

wake at least the portion of the wake-enabled application associated with the wake-enabled transport connection operating based on the identified port, the identified port is matched based on the multiport wake pattern; and

queue the packet for delivery to the wake-enabled transport connection.

16. The system of claim 10 , wherein the operating system is further configured to:

assign a wake-enabled port from the wake-enabled port set upon determining that the transport connection is wake-enabled; and

assign a non-wake-enabled port from the non-wake-enabled port set upon determining that the transport connection is not wake-enabled.

17. A computer-implemented method for managing wake-enabled transport connections of wake-enabled applications based on multiport wake patterns, the method comprising:

receiving a packet;

determining that the packet corresponds to a wake-enabled transport connection of a wake-enabled application, based on comparing the packet to a multiport wake pattern, wherein comparing the packet to the multiport wake pattern comprises:

identifying a port in the packet; and

matching the port in the packet to the multiport wake pattern using bit masking, wherein the multiport wake pattern is matchable to a plurality of ports in a wake-enabled port set, wherein the multiport wake pattern is a wild card pattern corresponding to the wake-enabled port set comprising the plurality of ports, wherein the multiport wake pattern is a bit pattern supporting wake functionality for multiple source ports in the wake-enabled port set, and the plurality of ports are assigned to wake-enabled applications to support wake functionality; and

waking at least a portion of the wake-enabled application associated with the wake-enabled transport connection.

18. The method of claim 17 , wherein the multiport wake pattern is one of a plurality of multiport wake patterns, wherein each multiport wake pattern is assigned to a corresponding configurable slot of a plurality of configurable slots of a network interface controller.

19. The method of claim 17 , wherein the multiport wake pattern is constructed without a local internet protocol address, a remote internet protocol address and a remote port.

20. The method of claim 17 , wherein the wake-enabled port set is selected as a range of ports, wherein a start of the range has a set of 8 least significant 8 bits, the set of least significant 8 bits set to zero.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 31, 2017
From: BALASUBRAMANIAN, PRAVEEN; GADDEHOSUR, POORNANANDA R.; THALER, DAVID GARFIELD, III; ANIPKO, DMITRY A.; PALMER, CHRISTOPHER BENJAMIN
To: MICROSOFT CORPORATION
Reel/Frame 042549/0256 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 31, 2017
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 042549/0293 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 25, 2017
From: BALASUBRAMANIAN, PRAVEEN; GADDEHOSUR, POORNANANDA R.; THALER, DAVID GARFIELD, III; ANIPKO, DMITRY A.; PALMER, CHRISTOPHER BENJAMIN
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 042142/0536 →
Continuity (3)
Continuation 14019243 · Sep 5, 2013
Provisional Application 61828663 · May 29, 2013
Related Publication 20170041154A1 · Feb 9, 2017