IP Library Granted Patent US 7,698,439
Granted Patent B2
US 7,698,439 · App. 11/526,380 · Granted Apr 13, 2010

Application programming interface for efficient multicasting of communications

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 7,698,439
App. No.
11/526,380
Granted
Apr 13, 2010
Kind
B2
Abstract

An API enables an application to make a single call for a send operation to an operating system that results in a multicast communication. The API may provide the ability to define a socket group including one or more sockets, in which each socket represents a respective network connection to another network device. An application may utilize the socket group when calling to the operating system with a send operation, by specifying an identifier (i.e., a handle) of the socket group to the operating system. Based on the socket group identifier, the operating system may control sending multiple instances of a communication to the network devices corresponding to the connections represented by the sockets of the socket group. Tasks that are repeated for every destination of a multicast in known systems may be performed only once, reducing CPU utilization and making applications that use multicasting more scalable.

Claims (41)

1. A system for creating a socket group representing one or more network connections, the system comprising:

a first network device; and

an application programming interface operative to:

expose one or more abstractions for creating and/or modifying a socket group abstraction representing a plurality of network connections, each network connection being between the first network device and a respective one of a plurality of second network devices;

receive a send instruction indicating to send the communication to the plurality of second network devices, the send instruction specifying an identifier of a socket group;

control a sending of a plurality of instances of the communication based on the socket group identifier, each instance sent to a respective one of the plurality of second network devices;

wherein the first network device comprises an operating system operative to implement a user mode and a kernel mode, and the controlling comprises:

making only a single transition from the user mode to the kernel mode,

allocating a kernel-mode memory buffer only once or locking an application send buffer into memory only once; and

signaling completion of the sending of the plurality of instances, only once, to an application component that sent the send request to the operating system.

2. The system of claim 1 , wherein the one or more abstractions comprise a create function for creating the socket group.

3. The system of claim 1 , wherein the one or more abstractions comprise an add function for adding a socket to the socket group.

4. The system of claim 1 , wherein the one or more abstractions comprise a remove function for removing a socket from the socket group.

5. The system of claim 1 , wherein the application programming interface is part of an operating system of the network device.

6. A computer program product comprising:

at least one computer-readable storage medium; and

instructions stored on the at least one computer-readable storage medium which, as a result of being executed by a computer, control the computer to perform a method of multicasting a communication from a first network device to a plurality of respective second network devices, the method comprising acts of:

(A) creating and/or modifying a socket group representing a plurality of network connections, each network connection being between the first network device and a respective one of the plurality of second network devices;

(B) receiving a send instruction indicating to send the communication to the plurality of second network devices, the send instruction specifying an identifier of the socket group; and

(C) controlling a sending of a plurality of instances of the communication based on the socket group identifier, each instance sent to a respective one of the plurality of second network devices;

wherein the first network device comprises an operating system operative to implement a user mode and a kernel mode, and the act (C) comprises:

making only a single transition from the user mode to the kernel mode;

allocating a kernel-mode memory buffer only once or locking an application send buffer into memory only once; and

signaling completion of the sending of the plurality of instances, only once, to an application component that sent the send request to the operating system.

7. The computer program product of claim 6 , wherein the act (B) comprises: determining the plurality of member sockets based on the socket group identifier.

8. The computer program product of claim 6 , wherein the act (B) comprises:

locating a socket group abstraction identified by the socket group identifier received in the send instruction.

9. A method of multicasting a communication from a first network device to a plurality of respective second network devices, the method comprising acts of:

(A) creating and/or modifying a socket group representing a plurality of network connections, each network connection being between the first network device and a respective one of the plurality of second network devices;

(B) receiving a send instruction indicating to send the communication to the plurality of second network devices, the send instruction specifying an identifier of the socket group; and

(C) controlling a sending of a plurality of instances of the communication based on the socket group identifier, each instance sent to a respective one of the plurality of second network devices;

wherein the first network device comprises an operating system operative to implement a user mode and a kernel mode, and the act (C) comprises:

making only a single transition from the user mode to the kernel mode;

allocating a kernel-mode memory buffer only once or locking an application send buffer into memory only once; and

signaling completion of the sending of the plurality of instances, only once, to an application component that sent the send request to the operating system.

10. The method of claim 9 , wherein the socket group includes a plurality of sockets, each socket representing a connection to one of the respective second network devices, and

wherein the act (C) comprises determining the plurality of sockets based on the socket group identifier.

11. The method of claim 9 , wherein the act (B) comprises:

receiving the send instruction from an application component to initiate the multicast to a plurality of respective other application components, each other application component residing on a respective one of the second network devices.

12. The method of claim 9 , wherein the act (C) comprises:

locating a socket group abstraction identified by the socket group identifier received in the send instruction.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034542/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 17, 2006
From: ZUBERI, KHAWAR M.
To: MICROSOFT CORPORATION
Reel/Frame 018399/0551 →