IP Library › Granted Patent US 12,549,480
Granted Patent B2
US 12,549,480 · App. 18/361,686 · Granted Feb 10, 2026

Reliable, out-of-order transmission of packets

Inventors: Leah Shalev (London, GB); Brian William Barrett (Bellevue, WA); Nafea Bshara (San Jose, CA); Georgy Machulsky (San Jose, CA)
Assignee: Amazon Technologies, Inc.
H04L45/74G06F15/17331H04L1/1841H04L45/24H04L47/34H04L47/624H04L49/90H04L69/22H04L69/324H04L69/326
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 12,549,480
App. No.
18/361,686
Granted
Feb 10, 2026
Kind
B2
Abstract

A computing system supporting reliable network communications can include a virtual machine executing a user application, and a network adapter device coupled to the virtual machine via a plurality of virtual interfaces. The user application can communicate with the network adapter device using a virtual interface assigned to the user application. Queue pairs, each including a send queue and a receive queue, can be implemented to process transmit packets being sent from the virtual machine to the network and incoming packets being sent to the virtual machine from the network.

Claims (48)

1 . A computing system, comprising:

a virtual machine executing a user application;

a network adapter device coupled to the virtual machine via a plurality of virtual interfaces, wherein the user application communicates with the network adapter device using a virtual interface assigned to the user application; and

a plurality of queue pairs each including a send queue and a receive queue,

wherein the user application is operable to place a message for transmission to a destination with an address handle associated with the destination in the send queue of a queue pair assigned to the user application, and

wherein the network adapter device is operable to:

identify a transport context for the destination based on the address handle, the transport context identifying a port of the network adapter device; and

transmit the message from the identified port to the destination via a network over multiple paths associated with the transport context for the destination,

wherein the transport context limits a number of outstanding packets on each of the multiple paths between the identified port and the destination.

2 . The computing system of claim 1 ,

wherein the virtual interface assigned to the user application is associated with an internet protocol (IP) address, and the queue pair assigned to the user application is associated with a queue pair identifier, and

wherein the IP address and the queue pair identifier are used as a sender address of the message.

3 . The computing system of claim 1 , wherein the transport context provides packet header information to route packets generated from the message for transmission to the destination.

4 . The computing system of claim 1 , wherein the network adapter device is operable to receive, from the network, packets containing a source address of a source, and identify a transport context associated with the source by indexing into a network address map using the source address.

5 . The computing system of claim 4 , wherein the transport context associated with the source is operable to place data from the received packets into a receive queue of a queue pair identified by a queue pair identifier included in the received packets.

6 . The computing system of claim 5 , wherein the network adapter device is operable to place the data from the receive queue into a buffer of a host memory of the computing system using direct memory access.

7 . The computing system of claim 6 , wherein the data from the receive queue are placed out of order in the buffer of the host memory.

8 . The computing system of claim 7 , wherein a driver program is operable to reorder the data from the buffer into a correct sequence.

9 . The computing system of claim 1 , wherein the plurality of queue pairs includes a queue pair reserved for management messages used for setting up or taking down connections.

10 . The computing system of claim 1 , wherein the plurality of queue pairs includes multiple queue pairs that are used by the user application.

11 . The computing system of claim 1 , wherein the plurality of virtual interfaces includes a virtual interface shared by multiple applications executing in the virtual machine.

12 . A network adapter device, comprising:

one or more processing cores;

a network interface;

a plurality of queue pairs; and

a plurality of transport contexts,

wherein upon a message being placed by a virtual machine into a send queue of a queue pair for transmission to a destination, the one or more processing cores are operable to:

identify a transport context for the destination based on an address handle of the message, the transport context identifying a port of the network adapter device; and

transmit the message from the identified port to the destination via the network interface on multiple paths associated with the transport context for the destination,

wherein the transport context limits a number of outstanding packets on each of the multiple paths between the identified port and the destination.

13 . The network adapter device of claim 12 , wherein the transport context for the destination provides packet header information to route packets generated from the message for transmission to the destination.

14 . The network adapter device of claim 12 , wherein upon receiving, from the network interface, packets containing a source address of a source, the one or more processing cores are operable to identify a transport context for the source by indexing into a network address map using the source address.

15 . The network adapter device of claim 14 , wherein the transport context of the source is operable to place data from the received packets into a receive queue of a queue pair identified by a queue pair identifier included in the received packets.

16 . The network adapter device of claim 15 , wherein the data from the receive queue are placed into a buffer of a host memory of a host system using direct memory access.

17 . The network adapter device of claim 16 , wherein the data from the receive queue are placed out of order in the buffer of the host memory.

18 . A method comprising:

receiving, at a send queue of a queue pair of a network adapter device, a message from a virtual machine for transmission to a destination;

identifying a transport context for the destination based on an address handle of the message, the transport context identifying a port of the network adapter device;

generating transmit packets from the message using header information provided by the transport context for the destination; and

sending the transmit packets from the identified port to the destination via a network on multiple paths associated with the transport context for the destination,

wherein the transport context limits a number of outstanding packets on each of the multiple paths between the identified port and the destination.

19 . The method of claim 18 , further comprising:

receiving, from the network, incoming packets containing a source address of a source;

identifying a transport context for the source by indexing into a network address map using the source address; and

placing data from the incoming packets into a receive queue of a queue pair identified by a queue pair identifier included in the incoming packets.

20 . The method of claim 19 , further comprising:

placing the data out of order from the receive queue into a buffer of a host memory using direct memory access; and

reordering the data from the buffer before providing the data to a user application.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 28, 2023
From: SHALEV, LEAH; BARRETT, BRIAN WILLIAM; BSHARA, NAFEA; MACHULSKY, GEORGY
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 064426/0598 →
Continuity (5)
Continuation 17663398 · May 13, 2022
Continuation 16864979 · May 1, 2020
Continuation 15990062 · May 25, 2018
Continuation 14983436 · Dec 29, 2015
Related Publication 20240022519A1 · Jan 18, 2024
References Cited (188)
US 5699500A · Dasgupta · 1997 [cited by applicant]
US 6788686B1 · Khotimsky et al. · 2004 [cited by applicant]
US 6990528B1 · Neal et al. · 2006 [cited by applicant]
US 7088718B1 · Srivastava · 2006 [cited by applicant]
US 7171484B1 · Krause et al. · 2007 [cited by applicant]
US 7293107B1 · Hanson et al. · 2007 [cited by applicant]
US 7912064B2 · Elzur · 2011 [cited by applicant]
US 7913077B2 · Ko et al. · 2011 [cited by applicant]
US 8031729B2 · Elzur · 2011 [cited by applicant]
US 8190960B1 · Bahadur et al. · 2012 [cited by applicant]
US 9654385B2 · Chu et al. · 2017 [cited by applicant]
US 9667723B2 · Pandya · 2017 [cited by applicant]
US 9747249B2 · Cherian et al. · 2017 [cited by applicant]
US 9985903B2 · Shalev et al. · 2018 [cited by applicant]
US 9985904B2 · Shalev et al. · 2018 [cited by applicant]
US 10148570B2 · Shalev et al. · 2018 [cited by applicant]
US 10375167B2 · Shamis et al. · 2019 [cited by applicant]
US 10430373B2 · Cherian et al. · 2019 [cited by applicant]
US 10498654B2 · Shalev et al. · 2019 [cited by applicant]
US 10645019B2 · Shalev et al. · 2020 [cited by applicant]
US 10673772B2 · Shalev et al. · 2020 [cited by applicant]
US 10917344B2 · Shalev et al. · 2021 [cited by applicant]
US 11343198B2 · Shalev et al. · 2022 [cited by applicant]
US 11451476B2 · Shalev et al. · 2022 [cited by applicant]
US 11770344B2 · Shalev et al. · 2023 [cited by applicant]
US 20020198927A1 · Craddock et al. · 2002 [cited by applicant]
US 20030031183A1 · Kashyap et al. · 2003 [cited by applicant]
US 20030035433A1 · Craddock et al. · 2003 [cited by applicant]
US 20030053457A1 · Fox et al. · 2003 [cited by applicant]
US 20030065856A1 · Kagan · 2003 [cited by examiner]
US 20030200315A1 · Goldenberg · 2003 [cited by examiner]
US 20040003126A1 · Boucher et al. · 2004 [cited by applicant]
US 20040042458A1 · Elzu · 2004 [cited by applicant]
US 20040042483A1 · Elzur et al. · 2004 [cited by applicant]
US 20040044796A1 · Vangal et al. · 2004 [cited by applicant]
US 20040049612A1 · Boyd et al. · 2004 [cited by applicant]
US 20040049774A1 · Boyd et al. · 2004 [cited by applicant]
US 20040190516A1 · Williams · 2004 [cited by applicant]
US 20050060442A1 · Beverly et al. · 2005 [cited by applicant]
US 20050144310A1 · Biran et al. · 2005 [cited by applicant]
US 20050180327A1 · Banerjee et al. · 2005 [cited by applicant]
US 20060007935A1 · Bennett et al. · 2006 [cited by applicant]
US 20060075067A1 · Blackmore et al. · 2006 [cited by applicant]
US 20060101090A1 · Aloni et al. · 2006 [cited by applicant]
US 20060101225A1 · Aloni et al. · 2006 [cited by applicant]
US 20060168274A1 · Aloni et al. · 2006 [cited by applicant]
US 20070140159A1 · Eronen et al. · 2007 [cited by applicant]
US 20070208820A1 · Makhervaks et al. · 2007 [cited by applicant]
US 20080043750A1 · Keels et al. · 2008 [cited by applicant]
US 20090106771A1 · Benner et al. · 2009 [cited by applicant]
US 20090219939A1 · Isosaari · 2009 [cited by applicant]
US 20090222564A1 · Freimuth et al. · 2009 [cited by applicant]
US 20110013605A1 · Moeller · 2011 [cited by applicant]
US 20110116375A1 · Friedman · 2011 [cited by examiner]
US 20110149977A1 · Thomas et al. · 2011 [cited by applicant]
US 20110280247A1 · Roskind · 2011 [cited by applicant]
US 20120023304A1 · Chan et al. · 2012 [cited by applicant]
US 20120089694A1 · Pandya · 2012 [cited by applicant]
US 20120155458A1 · Larson et al. · 2012 [cited by applicant]
US 20120155468A1 · Greenberg et al. · 2012 [cited by applicant]
US 20120265837A1 · Grant et al. · 2012 [cited by applicant]
US 20120281714A1 · Chang et al. · 2012 [cited by applicant]
US 20120287944A1 · Pandit et al. · 2012 [cited by applicant]
US 20130051222A1 · Gavrilov et al. · 2013 [cited by applicant]
US 20130080561A1 · Fox et al. · 2013 [cited by applicant]
US 20130114606A1 · Schrum, Jr. et al. · 2013 [cited by applicant]
US 20130145035A1 · Pope et al. · 2013 [cited by applicant]
US 20130268980A1 · Russell · 2013 [cited by applicant]
US 20130304796A1 · Jackowski et al. · 2013 [cited by applicant]
US 20130315237A1 · Kagan · 2013 [cited by examiner]
US 20140052808A1 · Krishnan et al. · 2014 [cited by applicant]
US 20140153572A1 · Hampel et al. · 2014 [cited by applicant]
US 20140310369A1 · Makhervaks et al. · 2014 [cited by applicant]
US 20140358972A1 · Guarrieri et al. · 2014 [cited by applicant]
US 20150010090A1 · Sugimoto · 2015 [cited by applicant]
US 20150052280A1 · Lawson · 2015 [cited by applicant]
US 20150124652A1 · Dharmapurikar et al. · 2015 [cited by applicant]
US 20150127797A1 · Attar et al. · 2015 [cited by applicant]
US 20150163144A1 · Koponen et al. · 2015 [cited by applicant]
US 20150172226A1 · Borshteen · 2015 [cited by examiner]
US 20150179227A1 · Russell · 2015 [cited by applicant]
US 20150263932A1 · Chunduri et al. · 2015 [cited by applicant]
US 20150373165A1 · Anand et al. · 2015 [cited by applicant]
US 20160026604A1 · Pandit et al. · 2016 [cited by applicant]
US 20160094356A1 · Xiang et al. · 2016 [cited by applicant]
US 20160212214A1 · Rahman et al. · 2016 [cited by applicant]
US 20160226755A1 · Hammam et al. · 2016 [cited by applicant]
US 20160234127A1 · Agarwal et al. · 2016 [cited by applicant]
US 20160344633A1 · Jiao et al. · 2016 [cited by applicant]
US 20170006142A1 · Kwon · 2017 [cited by applicant]
US 20170134535A1 · Osamura et al. · 2017 [cited by applicant]
US 20170171075A1 · Sajeepa · 2017 [cited by examiner]
US 20170187496A1 · Shalev et al. · 2017 [cited by applicant]
US 20170187621A1 · Shalev et al. · 2017 [cited by applicant]
US 20170187846A1 · Shalev et al. · 2017 [cited by applicant]
US 20170195240A1 · Chen et al. · 2017 [cited by applicant]
US 20170223154A1 · Hammam et al. · 2017 [cited by applicant]
US 20170346742A1 · Shahar et al. · 2017 [cited by applicant]
US 20180004705A1 · Menachem et al. · 2018 [cited by applicant]
US 20180219980A1 · McCulley et al. · 2018 [cited by applicant]
US 20210119930A1 · Debbage et al. · 2021 [cited by applicant]
US 20230006934A1 · Shalev et al. · 2023 [cited by applicant]
AU 2016382952A1 · 2018 [cited by applicant]
AU 2018250412A1 · 2018 [cited by applicant]
CN 1625179A · 2005 [cited by applicant]
CN 101848203A · 2010 [cited by applicant]
CN 103929492A · 2014 [cited by applicant]
CN 103986647A · 2014 [cited by applicant]
CN 104541257A · 2015 [cited by applicant]
CN 104620664A · 2015 [cited by applicant]
CN 108476209B · 2019 [cited by applicant]
CN 110557408A · 2019 [cited by applicant]
CN 110719294A · 2020 [cited by applicant]
JP 2002305535A · 2002 [cited by applicant]
JP 2004531175A · 2004 [cited by applicant]
JP 2005524264A · 2005 [cited by applicant]
JP 2008507201A · 2008 [cited by applicant]
JP 2015050746A · 2015 [cited by applicant]
JP 6490310B2 · 2019 [cited by applicant]
JP 6564960B2 · 2019 [cited by applicant]
JP 6569020B2 · 2019 [cited by applicant]
KR 101941416B1 · 2019 [cited by applicant]
KR 102023122B1 · 2019 [cited by applicant]
KR 102055535B1 · 2019 [cited by applicant]
WO WO2013169073A1 · 2013 [cited by applicant]
WO WO2017117259A1 · 2017 [cited by applicant]
AU First Examination Report dated Jun. 24, 2020 in Application No. AU2019261814. [cited by applicant]
AU First Examination Report dated May 20, 2019 in Application No. AU2018250412. [cited by applicant]
AU Notice of Allowance dated Aug. 6, 2019 in Application No. AU2018250412. [cited by applicant]
AU Notice of Allowance dated Jul. 19, 2018 in Application No. AU2016382952. [cited by applicant]
AU Notice of Allowance dated Sep. 15, 2020 in Application No. AU2019261814. [cited by applicant]
Bryant, S. et al., “Pseudowire Emulation Edge-to-Edge (PWE3) Control Word for Use over an MPLS PSN”, XP015044817, Feb. 1, 2006, 12 pages. [cited by applicant]
CA Office Action dated Apr. 22, 2020 in Application No. CA3010186. [cited by applicant]
CA Notice of Allowance dated Feb. 9, 2021 in Application No. CA3010186. [cited by applicant]
CA Office Action dated Apr. 12, 2019 in Application No. CA3010186. [cited by applicant]
CN Office Action dated Jun. 12, 2020 in Application No. CN201910999314.X. [cited by applicant]
CN Notice of Decision to Grant dated Apr. 8, 2021 in Application No. CN201910999930.5. [cited by applicant]
CN Notice of Decision to Grant dated Aug. 5, 2019 in Application No. CN201680076964.1. [cited by applicant]
CN Notice of Decision to Grant dated Nov. 27, 2020 in CN201910999314.X. [cited by applicant]
CN Office Action dated Feb. 25, 2019 in Application No. CN201680076964.1. [cited by applicant]
CN Office Action dated May 22, 2020 in Application No. CN201910999930.5. [cited by applicant]
EP Notice of Decision to Grant dated Apr. 23, 2020 in Application No. EP16826869.6. [cited by applicant]
EP Extended European Search Report dated Jul. 16, 2020 in Application No. EP20175292.0. [cited by applicant]
EP Extended European Search Report dated Jul. 16, 2020 in Application No. EP20175295.3. [cited by applicant]
EP Office Action dated May 17, 2019 in Application No. EP16826869.6. [cited by applicant]
IN First Examination Report dated Jun. 29, 2020 in Application No. IN201817027852. [cited by applicant]
JP Notice of Allowance dated Jul. 1, 2019 in Application No. JP2019-032253. [cited by applicant]
JP Notice of Allowance dated Jul. 8, 2019 in Application No. JP2019-032252. [cited by applicant]
JP Notice of Decision to Grant dated Jan. 28, 2019 in Application No. JP2018-533679. [cited by applicant]
JP Office Action dated Mar. 25, 2019 in Application No. JP2019-032252. [cited by applicant]
JP Office Action dated Nov. 12, 2018 in Application No. JP2018-533679. [cited by applicant]
KR Notice of Decision to Grant dated Jun. 13, 2019 in Application No. KR10-2019-7001403. [cited by applicant]
KR Notice of Decision to Grant dated Oct. 1, 2019 in Application No. KR10-2019-7026833. [cited by applicant]
KR Notice of Decision to Grant dated Oct. 19, 2018 in Application No. KR10-2018-7021687. [cited by applicant]
KR Office Action dated Aug. 13, 2018 in Application No. KR10-2018-7021687. [cited by applicant]
KR Office Action dated Feb. 7, 2019 in Application No. KR10-2019-7001403. [cited by applicant]
“Open Fabric Interfaces”, OpenFabrics Interfaces Working Group (OFIWG), Libfabric Programmer's Manual: Libfabric Open Fabrics [online], 2015, 6 pages, URL: http://ofiwg.github.io/libfabric [retrieved from the Internet o… [cited by applicant]
“Open Fabrics Software”, OFED Overview. Open Fabrics Alliance, Sep. 7, 2015, 2 pages URL: https://www.openfabrics.org/index.php/openfabrics-software.html [retrieved from the Internet on Dec. 29, 2015]. [cited by applicant]
PCT International Preliminary Report on Patentability dated Jul. 12, 2018 in Application No. PCT/US2016/068954. [cited by applicant]
PCT International Search Report and Written Opinion dated Mar. 28, 2017 in Application No. PCT/US2016/068954. [cited by applicant]
Russell, R.D., “Introduction to RDMA Programming”, University of New Hampshire InterOperability Laboratory, 2012, 76 pages. URL: http://www.cs.unh.edu/-rdr/rdma-intro-module.ppt. [cited by applicant]
SG Notice of Decision to Grant dated Jan. 17, 2020 in Application No. SG11201805409S. [cited by applicant]
U.S. Advisory Action dated Nov. 22, 2019 in U.S. Appl. No. 15/990,300. [cited by applicant]
U.S. Advisory Action dated Oct. 24, 2019 in U.S. Appl. No. 15/990,062. [cited by applicant]
U.S. Corrected Notice of Allowability dated Feb. 26, 2020 in U.S. Appl. No. 15/990,062. [cited by applicant]
U.S. Corrected Notice of Allowability dated Mar. 20, 2020 in U.S. Appl. No. 15/990,300. [cited by applicant]
U.S. Corrected Notice of Allowance dated Mar. 8, 2018 in U.S. Appl. No. 14/983,434. [cited by applicant]
U.S. Final Office Action dated Aug. 14, 2019 in U.S. Appl. No. 15/990,062. [cited by applicant]
U.S. Final Office Action dated Dec. 14, 2017 in U.S. Appl. No. 14/983,434. [cited by applicant]
U.S. Final Office Action dated Dec. 14, 2017 in U.S. Appl. No. 14/983,436. [cited by applicant]
U.S. Final Office Action dated Sep. 11, 2019 in U.S. Appl. No. 15/990,300. [cited by applicant]
U.S. Non-Final Office Action dated Apr. 30, 2019 in U.S. Appl. No. 15/990,062. [cited by applicant]
U.S. Non-Final Office Action dated Aug. 8, 2017 in U.S. Appl. No. 14/983,436. [cited by applicant]
U.S. Non-Final Office Action dated Feb. 1, 2018 in U.S. Appl. No. 14/983,431. [cited by applicant]
U.S. Non-Final Office Action dated Jul. 20, 2017 in U.S. Appl. No. 14/983,434. [cited by applicant]
U.S. Non-Final Office Action dated May 8, 2019 in U.S. Appl. No. 15/990,300. [cited by applicant]
U.S. Non-Final Office Action dated Sep. 28, 2021 in U.S. Appl. No. 16/864,979. [cited by applicant]
U.S. Non-Final Office Action dated Jan. 18, 2023 in U.S. Appl. No. 17/663,398. [cited by applicant]
U.S. Notice of Allowance dated Aug. 1, 2018 in U.S. Appl. No. 14/983,431. [cited by applicant]
U.S. Notice of Allowance dated Feb. 7, 2018 in U.S. Appl. No. 14/983,434. [cited by applicant]
U.S. Notice of Allowance dated Feb. 7, 2018 in U.S. Appl. No. 14/983,436. [cited by applicant]
U.S. Notice of Allowance dated Jan. 21, 2020 in U.S. Appl. No. 15/990,300. [cited by applicant]
U.S. Notice of Allowance dated Jan. 8, 2020 in U.S. Appl. No. 15/990,062. [cited by applicant]
U.S. Notice of Allowance dated May 2, 2023 in U.S. Appl. No. 17/663,398. [cited by applicant]
U.S. Notice of Allowance dated Oct. 7, 2020 in U.S. Appl. No. 16/204,998. [cited by applicant]
U.S. Notice of Allowance dated Feb. 3, 2022 in U.S. Appl. No. 16/864,979. [cited by applicant]
U.S. Appl. No. 16/712,589, inventors Shalev et al., filed Dec. 12, 2019. [cited by applicant]
U.S. Restriction Requirement dated Aug. 25, 2017 in U.S. Appl. No. 14/983,431. [cited by applicant]