IP Library › Granted Patent US 10,148,570
Granted Patent B2
US 10,148,570 · App. 14/983,431 · Granted Dec 4, 2018

Connectionless reliable transport

Inventors: Leah Shalev (Zichron Yaakov, IL); Brian William Barrett (Seattle, WA); Nafea Bshara (San Jose, CA); Georgy Machulsky (San Jose, CA)
Assignee: Amazon Technologies, Inc.
H04L45/745
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 10,148,570
App. No.
14/983,431
Granted
Dec 4, 2018
Kind
B2
Abstract

Provided are systems and methods for connection establishment over a network that does not require a user application to establish an explicit connection with a target application. In some implementations, provided is an apparatus configured to communicate with a network and a host device. The apparatus may receive a message and destination information associated with the message from the host device. The apparatus may further determine, using the destination information, a transport context from a plurality of transport contexts. The transport context may include a state of a connection with a destination on the network. The destination on the network may be associated with the destination information.

Claims (93)

1. A computing system, comprising:

a host device, comprising:

a processor;

a memory coupled with and readable by the processor, wherein the memory is configured to store a user application; and

a network adapter device configured to communicate with a network;

wherein the host device is configured to:

execute the user application, wherein the user application is configured to:

determine a destination address for a set of data, wherein the destination address identifies a server on the network;

determine an address handle for the destination address, wherein the address handle is an index for reading a memory of the network adapter device, wherein the memory of the network adapter device is operable to store a plurality of transport contexts;

provide the set of data and the address handle to the network adapter device;

and wherein the network adapter device is configured to:

identify, using the address handle, a transport context from the plurality of transport contexts maintained in the memory of the network adapter device, wherein a transport service is assigned to the transport context, the transport service providing a protocol for transmitting packets to the server identified by the destination address, and, wherein the transport context maintains a state of packets transmitted to the server identified by the destination address;

generate a packet, wherein the packet includes at least a portion of the set of data, wherein the transport context provides data for generating the packet, and wherein the packet is addressed to the destination address; and

transmit the packet over the network.

2. The computing system of claim 1 , wherein the host device is further configured to execute a driver program, and wherein the user application is further configured to, upon being unable to determine the address handle for the destination address:

request the address handle from the driver program, wherein the request includes the destination address;

and wherein the driver program is configured to:

determine the address handle for the destination address using an address map; and

provide the address handle to the user application.

3. The computing system of claim 2 , wherein the driver program is further configured to:

determine that the address map does not include the destination address; and

provide the destination address to the network adapter device;

wherein the network adapter device is further configured to:

generate the transport context for a new communication channel, wherein generating the transport context includes assigning the destination address to the transport context;

store, using the address handle, the transport context in the memory of the network adapter device;

provide the address handle to the driver program; and

establish the new communication channel with the server identified by the destination address;

and wherein the driver program is further configured to:

store the destination address in the address map using the address handle.

4. An apparatus, comprising:

a processor; and

a memory coupled with and readable by the processor, wherein the memory is configured to store a plurality of transport contexts;

wherein the apparatus is configured to:

receive a set of data and destination information identifying a destination on a network for the set of data; and

determine, using the destination information, a transport context from the plurality of transport contexts, wherein a transport service is assigned to the transport context, the transport service providing a protocol for transmitting packets between the apparatus and the destination on the network, and wherein the transport context maintains a state of packets transmitted to the destination on the network; and

use the transport service to send the set of data to the destination on the network.

5. The apparatus of claim 4 , wherein the apparatus is further configured to:

generate a packet including at least a portion of the set of data; and

transmit the packet over the network, wherein the packet is transmitted according to the protocol provided by the transport service.

6. The apparatus of claim 4 , wherein the destination information comprises an address handle, and wherein the apparatus is further configured to:

determine, using the address handle, a network address map object from a plurality of address map objects stored in the memory, wherein the address map object provides a data structure for storing information for transport context in the memory.

7. The apparatus of claim 6 , wherein the network address map object includes a pre-generated packet header.

8. The apparatus of claim 6 , wherein the apparatus is further configured to:

receive a request for a new address handle, wherein the request includes the destination information;

identify, using the destination information, the network address map object;

generate the new address handle, wherein the new address handle is an index in the memory for storing the network address map object; and

return the new address handle.

9. The apparatus of claim 6 , wherein the apparatus is further configured to:

receive a request for a new address handle, wherein the request includes new destination information;

upon determining that the plurality of transport contexts does not include a transport context for the new destination information:

generate a new transport context for a new communication channel;

generate a new network address map object, wherein the network address map object is a data structure for storing information for the new transport context in the memory;

generate the new address handle, wherein the new address handle is an index for storing the new network address map object in the memory; and

return the new address handle.

10. The apparatus of claim 9 , wherein the apparatus is further configured to, upon determining that the plurality of transport contexts does not include a transport context for the new destination information, establish a new communication channel with a new destination on the network that is identified by the new destination information.

11. The apparatus of claim 9 , wherein generating a new network address map object includes generating a packet header using the new destination information, wherein the packet header is stored as part of the new network address map object.

12. The apparatus of claim 4 , wherein the apparatus is further configured to establish a communication channel with a destination on the network that is identified by the destination information.

13. The apparatus of claim 4 , wherein the destination information comprises a network address.

14. The apparatus of claim 4 , wherein the destination information comprises a flow identifier.

15. The apparatus of claim 4 , wherein the destination on the network is on a server on the network.

16. The apparatus of claim 4 , wherein the destination on the network is associated with one or more Internet Protocol addresses.

17. The apparatus of claim 4 , wherein the destination on the network is associated with Internet Protocol address and a communication endpoint identifier.

18. The apparatus of claim 4 , wherein the set of data includes a sequence identifier, the sequence identifier indicating a sequence of the set of data with respect to other sets of data from a same application, and wherein the apparatus is configured to:

generate a packet including at least a portion of the set of data and the sequence identifier;

transmit the packet over the network, wherein the packet is transmitted according to the protocol provided by the transport service; and

monitor status for the packet.

19. The apparatus of claim 4 , wherein the apparatus is a network adapter device.

20. The apparatus of claim 4 , wherein the apparatus includes a system-on-chip (SoC), a field-programmable gate array (FPGA), or an application-specific integrated circuit (ASIC).

21. The apparatus of claim 4 , further comprising an integrated circuit configured to perform operations for the transport service.

22. The apparatus of claim 21 , where the operations include sending the set of data to the destination on the network.

23. The apparatus of claim 21 , wherein the integrated circuit executes firmware to perform the operations.

24. A method, comprising:

receiving, by a network adapter device, a set of data and destination information identifying a destination on a network for the set of data; and

determining, using the destination information, a transport context from a plurality of transport contexts, wherein a transport service is assigned to the transport context, the transport service providing a protocol for transmitting packets over the network to the destination on the network, and wherein the transport context maintains a state of packets transmitted to the destination on the network; and

using the transport service to send the set of data to the destination on the network.

25. The method of claim 24 , further comprising:

generating a packet including at least a portion of the set of data; and

transmitting the packet over the network, wherein the packet is transmitted according to the protocol provided by the transport service.

26. The method of claim 24 , wherein the destination information comprises an address handle, and further comprising:

determining, using the address handle, a network address map object from a plurality of address map objects stored in a memory of the network adapter device, and wherein the address map object provides a data structure for storing information for the transport context in the memory.

27. The method of claim 26 , further comprising:

receiving, by the network adapter device, a request for a new address handle, wherein the request includes the destination information;

identifying, using the destination information, the network address map object;

generating the new address handle, wherein the new address handle is associated with the network address map object; and

returning the new address handle.

28. The method of claim 26 , further comprising:

receiving, by the network adapter device, a request for a new address handle, wherein the request includes new destination information;

upon determining that the plurality of transport contexts does not include a transport context associated with the new destination information:

generating a new transport context, for a new communication channel; and

establishing the new communication channel with a new destination on the network that is associated with the new destination information;

generating a new network address map object, wherein the network address map object is associated with the new transport context;

generating the new address handle, wherein the new address handle is associated with the new network address map object; and

return the new address handle.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 5, 2016
From: SHALEV, LEAH; BARRETT, BRIAN WILLIAM; BSHARA, NAFEA; MACHULSKY, GEORGY
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 039948/0904 →
Continuity (1)
Related Publication 20170187621A1 · Jun 29, 2017
Cited By (7)
US 12,218,841 US 12,301,460 US 12,368,790 US 12,443,349 US 12,531,772 US 12,531,808 US 12,549,480