IP Library Granted Patent US 8,190,960
Granted Patent B1
US 8,190,960 · App. 12/315,836 · Granted May 29, 2012

Guaranteed inter-process communication

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,190,960
App. No.
12/315,836
Granted
May 29, 2012
Kind
B1
Abstract

A multiprocessor system includes multiple processors executing multiple processes that send messages to each other. The system uses a connectionless single-window inter-process communication (IPC) protocol to avoid the high message-processing overhead of a connection-based protocol like TCP. The IPC protocol uses a central message-receive service that runs in the kernel on each processor to handle error-checking and sequence number checking and acknowledge received messages, while the single-window mechanism avoids out-of-order message reordering/buffering complexity. Since each process sending a message does not need to wait for the receiving process (which may be otherwise preoccupied or not even the focus of the receiving processor when the message is received and queued) before receiving acknowledgments, the protocol greatly reduces single-window message latency for all processes without resorting to complex connection-based multi-packet transmission windows.

Claims (30)

1. A method of operating a first processor, the method comprising:

receiving, at a connectionless message service supporting multiple processes running on the first processor, a first message from a second processor, the first message addressed to a first process running on the first processor, the first message containing header information including a sequence number and error detection coding;

the connectionless message service performing error detection and sequence number checks on the first message, based on the sequence number and error detection coding;

when the first message passes the error detection and sequence number checks on the first message, the connectionless message service attempting to queue the contents of the first message in a first queue assigned to the first process; and

when the first message is successfully queued, the connectionless message service creating and sending, to the second processor, a first acknowledgment message indicating the first message was successfully received.

2. The method of claim 1 , wherein the connectionless message service utilizes the Uniform Datagram Protocol (UDP) for message transport and the Internet Protocol (IP) for delivery to the second processor.

3. The method of claim 2 , the connectionless message service using information existing in a UDP header attached to the first message to perform at least one of the tasks including performing error detection, determining the identity of the first queue, determining the identity of the first process, and creating the first acknowledgment message.

4. The method of claim 2 , the connectionless message service using information existing in an IP header attached to the first message to perform at least one of the tasks including performing error detection, determining the location of a saved sequence number to be used for the sequence number check, and creating the first acknowledgment message.

5. The method of claim 1 , the connectionless message service interpreting an Inter Process Communication (IPC) header attached to the first message to process the message.

6. The method of claim 5 , the connectionless message service removing the IPC header in the first message as queued in the first queue.

7. The method of claim 5 , the IPC header containing a checksum field and a sequence number field, the connectionless message service using the checksum field to perform the error detection check and the connectionless message service using the sequence number field to perform the sequence number check.

8. The method of claim 5 , the IPC header containing a sequence number field and a sequence number reset flag, the connectionless message service performing the sequence number check by:

when the sequence number reset flag is unset, retrieving a stored sequence number value associated with the first process and the second processor, comparing the stored sequence number value to a value stored in the sequence number field, and failing the sequence number check when the comparison evaluates false or passing the sequence number check when the comparison evaluates true; and

when the sequence number reset flag is set, storing the value stored in the sequence number field as the stored sequence number value, and passing the sequence number check.

9. The method of claim 1 , further comprising, when the first message is not successfully queued, the connectionless message service creating and sending, to the second processor, a second acknowledgment message indicating the first message was not successfully received, and a code indicating the reason for failure.

10. The method of claim 1 , further comprising the connectionless message service distinguishing whether the first message is a data message or an acknowledgment message corresponding to a second message sent to the second processor by the first process, the connectionless message service handling the first message, when the first message is an acknowledgment message, by performing an error detection check and queuing the acknowledgment message in a second queue assigned to the first process for acknowledgments.

11. The method of claim 10 , the first process calling a send function of the connectionless message service to send messages to other processors, the send function allowing the first process to have extant at any given time one sent, unacknowledged message to each combination of another processor and port number, the send function attaching a sequence number to each unacknowledged message, the sequence number based on the identity of the other processor and the port number, and any last sequence number used for the other processor and port number, the send function allowing the first process to send another unacknowledged message to a previously used combination of other processor and port number once the prior message sent to the combination has been acknowledged.

12. The method of claim 11 , the send function operating a retry timer and resending a previously sent message upon expiry of the timer without receiving an acknowledgment corresponding to that previously sent message.

13. The method of claim 1 , wherein the connectionless message service for receiving, checking, queuing, and acknowledging messages runs in a kernel executing on the first processor.

14. The method of claim 13 , the connectionless message service allowing processes running on the first processor to register a port and receive a corresponding receive queue assignment, the connectionless message service tracking sequence numbers for each combination of registered port and remote processor sending a message to that registered port.

15. The method of claim 13 , the connection message service allowing processes running on the first processor to register an outgoing port and receive a corresponding send queue assignment, the connectionless message service tracking sequence numbers for each combination of registered outgoing port and remote processor and remote port to which a message is sent from that registered port, sending messages from the outgoing port with a sequence number based on the tracked sequence number for the combination of registered port, and remote processor and remote port to which the messages are addressed, and receiving acknowledgments of the packets sent from a registered port.

16. The method of claim 15 , the connectionless message service resending messages for which an acknowledgment is not received within a given timer interval.

17. The method of claim 15 , the connectionless message service sending a pending message from one of the send queues and addressed to a given combination of remote port and remote processor, when an acknowledgment is received for a previous message sent to that given combination of remote port and remote processor.

18. The method of claim 15 , the connection message service allowing each process registering an outgoing port to check the acknowledgment status for messages placed in the send queue assigned to that outgoing port.

19. An apparatus comprising a computer-readable medium containing computer instructions that, when executed by a first processor, causes the first processor to perform a method comprising:

receiving, at a connectionless message service supporting multiple processes running on the first processor, a first message from a second processor, the first message addressed to a first process running on the first processor, the first message containing header information including a sequence number and error detection coding;

the connectionless message service performing error detection and sequence number checks on the first message, based on the sequence number and error detection coding;

when the first message passes the error detection and sequence number checks on the first message, the connectionless message service attempting to queue the contents of the first message in a first queue assigned to the first process; and

when the first message is successfully queued, the connectionless message service creating and sending, to the second processor, a first acknowledgment message indicating the first message was successfully received.

20. The apparatus of claim 19 , the computer instructions for receiving, checking, queuing, and acknowledging messages running in a kernel executing on the first processor.

Assignments (15)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
MERGER Recorded Mar 4, 2021
From: FORCE10 NETWORKS, INC.
To: DELL MARKETING CORPORATION
Reel/Frame 056104/0988 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040040/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040065/0618 →
RELEASE OF SECURITY INTEREST Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLANT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040065/0216 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Jan 2, 2014
From: APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS FIRST LIEN COLLATERAL AGENT
Reel/Frame 031897/0348 →
PATENT SECURITY AGREEMENT (ABL) Recorded Jan 2, 2014
From: DELL INC.; APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 031898/0001 →
PATENT SECURITY AGREEMENT (TERM LOAN) Recorded Jan 2, 2014
From: DELL INC.; APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 031899/0261 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 12, 2009
From: BAHADUR, SACHIN; VISWANATHAN, ARUN
To: FORCE 10 NETWORKS, INC.
Reel/Frame 023083/0966 →