IP Library › Granted Patent US 12,244,670
Granted Patent B2
US 12,244,670 · App. 18/363,005 · Granted Mar 4, 2025

Session-based remote direct memory access

Inventors: Liran Liss (Atzmon-Segev, IL); Yamin Friedman (Jerusalem, IL); Michael Kagan (Zichron Yaakov, IL); Diego Crupnicoff (Buenos Aires, AR); Idan Burstein (Akko, IL); Matty Kadosh (Hadera, IL); Tzah Oved (Ramat Gan, IL); Dror Goldenberg (Zichron Yaakov, IL); Ron Yuval Efraim (Tzur Hadassah, IL); Alexander Eli Rosenbaum (Elishama, IL); Aviad Yehezkel (Yokneam Ilit, IL); Rabia Loulou (Nazareth, IL)
Assignee: Mellanox Technologies, Ltd
H04L67/141G06F15/17331H04L9/0825H04L67/146H04L69/161
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,244,670
App. No.
18/363,005
Granted
Mar 4, 2025
Kind
B2
Abstract

Apparatus for data communication includes a network interface for connection to a packet data network and a host interface for connection to a host computer, which includes a central processing unit (CPU) and a host memory. Packet processing circuitry receives, via the host interface, from a kernel running on the CPU, associations between multiple remote direct memory access (RDMA) sessions and multiple different User Datagram Protocol (UDP) 5-tuple, which are assigned respectively to the RDMA sessions, and receives from an application running on the CPU a request to send an RDMA message, using a selected group of one or more of the RDMA sessions, to a peer application over the packet data network, and in response to the request, transmits, via the network interface, one or more data packets using a UDP 5-tuple that is assigned to one of the RDMA sessions in the selected group.

Claims (39)

1. Apparatus for data communication, comprising:

a network interface for connection to a packet data network;

a host interface for connection to a host computer, which includes a central processing unit (CPU) and a host memory; and

packet processing circuitry to receive, via the host interface, from a kernel running on the CPU, associations between multiple remote direct memory access (RDMA) sessions and multiple different User Datagram Protocol (UDP) 5-tuples, which comprise different, respective UDP source ports and are assigned respectively to the RDMA sessions, and to receive from an application running on the CPU a request to send an RDMA message, using a selected group of one or more of the RDMA sessions, to a peer application over the packet data network, and in response to the request, to transmit to a destination node, via the network interface, one or more Internet Protocol (IP) data packets encapsulating respective RDMA payloads and having an IP header containing a selected one of the UDP 5-tuples that is assigned to one of the RDMA sessions in the selected group,

wherein a UDP source port field in the IP header contains a respective port number that is assigned to the one of the RDMA sessions in the selected group, and

wherein upon receiving an incoming IP packet from the packet data network, the packet processing circuitry identifies a UDP 5-tuple in a header of the incoming IP packet, recognizes an RDMA session to which the UDP 5-tuple in the header is assigned, wherein the UDP 5-tuple in the header includes the assigned port number that is inserted by the destination node in a UDP destination port field of the received incoming IP packet.

2. The apparatus according to claim 1 , wherein based on the recognized session, the packet processing circuitry decapsulates and delivers an RDMA payload of the incoming IP packet to the application.

3. The apparatus according to claim 2 , wherein the kernel assigns different ones of the RDMA sessions to work queues associated with different, respective applications running on the CPU, and wherein the packet processing circuitry delivers the RDMA payload to the application only after verifying that the recognized session is assigned to a work queue that is assigned to the application.

4. The apparatus according to claim 1 , wherein in response to instructions conveyed by the kernel, the packet processing circuitry stores assignments of different ones of the RDMA sessions to different, respective applications running on the CPU.

5. The apparatus according to claim 4 , wherein the packet processing circuitry stores an assignment of a group of two or more of the RDMA sessions to a single one of the applications.

6. The apparatus according to claim 4 , wherein the application enters the request to send the RDMA message in a work queue that is assigned to the application, and the work queue is bound by the kernel to an RDMA session that is assigned to the application, and wherein the packet processing circuitry stores records of the RDMA sessions and the work queues that are respectively bound to the RDMA sessions, and applies the records in validating RDMA messages from and to the application.

7. The apparatus according to claim 1 , wherein the packet processing circuitry stores respective cryptographic keys for one or more of the RDMA sessions, and applies the respective cryptographic keys in encrypting and decrypting RDMA payloads of data packets that are transmitted to and received from the packet data network in the one or more of the RDMA sessions.

8. A method for data communication, comprising:

coupling a network interface controller (NIC) between a packet data network and a host computer, which includes a central processing unit (CPU) and a host memory;

receiving in the NIC, from a kernel running on the CPU, a definition of multiple remote direct memory access (RDMA) sessions and multiple different User Datagram Protocol (UDP) 5-tuples, which comprise different, respective UDP source ports and which are assigned respectively to the RDMA sessions;

receiving in the NIC, from an application running on the CPU, a request to send an RDMA message, using a selected group of one or more of the RDMA sessions, to a peer application over the packet data network;

in response to the request, transmitting from the NIC to a destination node, via the packet data network, one or more Internet Protocol (IP) data packets encapsulating respective RDMA payloads and having an IP header containing a selected one of the UDP 5-tuples that is assigned to one of the RDMA sessions in the selected group,

wherein a UDP source port field in the IP header contains a respective port number that is assigned to the one of the RDMA sessions in the selected group;

receiving in the NIC an incoming IP packet from the packet data network;

identifying, by the NIC, a UDP 5-tuple in a header of the incoming IP packet; and

recognizing an RDMA session to which the UDP 5-tuple in the header is assigned,

wherein the UDP 5-tuple in the header includes the assigned port number that is inserted by the destination node in a UDP destination port field of the received incoming IP packet.

9. The method according to claim 8 , and comprising: based on the recognized session, decapsulating and delivering an RDMA payload of the incoming IP packet to the application.

10. The method according to claim 9 , and comprising receiving in the NIC, from the kernel, assignments of different ones of the RDMA sessions to work queues associated with different, respective applications running on the CPU, wherein delivering the RDMA payload comprises passing the RDMA payload to the application only after verifying that the recognized session is assigned to a work queue that is assigned to the application.

11. The method according to claim 8 , and comprising assigning, by the kernel, different ones of the RDMA sessions to different, respective applications running on the CPU.

12. The method according to claim 11 , wherein assigning the different ones of the RDMA sessions comprises assigning a group of two or more of the RDMA sessions to a single one of the applications.

13. The method according to claim 11 , wherein receiving the request comprises queueing a work request to send the RDMA message in a work queue that is assigned to the application, wherein the work queue is bound by the kernel to an RDMA session that is assigned to the application, and wherein the NIC stores records of the RDMA sessions and the work queues that are respectively bound to the RDMA sessions, and applies the records in validating RDMA messages from and to the application.

14. The method according to claim 10 , and comprising storing in the NIC respective cryptographic keys for one or more of the RDMA sessions, and applying the respective cryptographic keys in encrypting and decrypting RDMA payloads of data packets that are transmitted to and received from the packet data network in the one or more of the RDMA sessions.

15. A system for data communication, comprising:

a host memory;

a central processing unit (CPU), which is to run a kernel, which defines multiple remote direct memory access (RDMA) sessions and respectively assigns multiple different User Datagram Protocol (UDP) 5-tuples, which comprise different, respective UDP source ports, to the RDMA sessions, and an application, which generates a request to send an RDMA message, using a selected group of one or more of the RDMA sessions, to a peer application over a packet data network; and

a network interface controller (NIC), which is to transmit to a destination node, in response to the request, via the packet data network, one or more Internet Protocol (IP) data packets encapsulating respective RDMA payloads and having an IP header containing a selected one of the UDP 5-tuples that is assigned to one of the RDMA sessions in the selected group,

wherein a UDP source port field in the IP header contains a respective port number that is assigned to the one of the RDMA sessions in the selected group, and

wherein upon receiving an incoming IP packet from the packet data network, the NIC identifies a UDP 5-tuple in a header of the incoming IP packet, recognizes an RDMA session to which the UDP 5-tuple in the header is assigned, wherein the UDP 5-tuple in the header includes the assigned port number that is inserted by the destination node in a UDP destination port field of the received incoming IP packet.

16. The system according to claim 15 , wherein based on the recognized session, the NIC decapsulates and delivers an RDMA payload of the incoming IP packet to the application.

17. The system according to claim 16 , wherein the kernel assigns different ones of the RDMA sessions to work queues associated with different, respective applications running on the CPU, and wherein the NIC delivers the RDMA payload to the application only after verifying that the recognized session is assigned to a work queue that is assigned to the application.

18. The system according to claim 15 , wherein in response to instructions conveyed by the kernel, the NIC stores assignments of different ones of the RDMA sessions to different, respective applications running on the CPU.

19. The system according to claim 18 , wherein the application enters the request to send the RDMA message in a work queue that is assigned to the application, and the work queue is bound by the kernel to an RDMA session that is assigned to the application, and wherein the NIC stores records of the RDMA sessions and the work queues that are respectively bound to the RDMA sessions, and applies the records in validating RDMA messages from and to the application.

20. The system according to claim 15 , wherein the NIC stores respective cryptographic keys for one or more of the RDMA sessions, and applies the respective cryptographic keys in encrypting and decrypting RDMA payloads of [the] data packets that are transmitted to and received from the packet data network in the one or more of the RDMA sessions.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2023
From: LISS, LIRAN; FRIEDMAN, YAMIN; KAGAN, MICHAEL; CRUPNICOFF, DIEGO; BURSTEIN, IDAN; KADOSH, MATTY; OVED, TZAH; GOLDENBERG, DROR; EFRAIM, RON YUVAL; ROSENBAUM, ALEXANDER ELI; YEHEZKEL, AVIAD; LOULOU, RABIA
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 064444/0754 →
Continuity (2)
Continuation 17724540 · Apr 20, 2022
Related Publication 20230379390A1 · Nov 23, 2023
References Cited (64)
US 7046668B2 · Pettey et al. · 2006 [cited by applicant]
US 7152122B2 · Kagan et al. · 2006 [cited by applicant]
US 7457906B2 · Pettey et al. · 2008 [cited by applicant]
US 7620066B2 · Pettey et al. · 2009 [cited by applicant]
US 8811417B2 · Bloch et al. · 2014 [cited by applicant]
US 8982703B2 · Almog et al. · 2015 [cited by applicant]
US 9143467B2 · Kagan et al. · 2015 [cited by applicant]
US 9696942B2 · Kagan et al. · 2017 [cited by applicant]
US 9727503B2 · Kagan et al. · 2017 [cited by applicant]
US 9787590B2 · Sivan et al. · 2017 [cited by applicant]
US 9925492B2 · Raikin et al. · 2018 [cited by applicant]
US 10152441B2 · Liss et al. · 2018 [cited by applicant]
US 10275375B2 · Ayoub · 2019 [cited by applicant]
US 10284383B2 · Bloch et al. · 2019 [cited by applicant]
US 10387358B2 · Oved · 2019 [cited by applicant]
US 10430374B2 · Menachem et al. · 2019 [cited by applicant]
US 10496595B2 · Degani et al. · 2019 [cited by applicant]
US 10505677B2 · Shpiner et al. · 2019 [cited by applicant]
US 10594617B2 · Shpiner et al. · 2020 [cited by applicant]
US 10642775B1 · Voks et al. · 2020 [cited by applicant]
US 10999364B1 · Itigin et al. · 2021 [cited by applicant]
US 11005770B2 · Gafni et al. · 2021 [cited by applicant]
US 11088966B2 · Menachem et al. · 2021 [cited by applicant]
US 11115339B2 · Shen · 2021 [cited by examiner]
US 11218413B2 · Shpigelman et al. · 2022 [cited by applicant]
US 11296988B2 · Shpigelman et al. · 2022 [cited by applicant]
US 11308024B2 · Chen · 2022 [cited by examiner]
US 11336581B2 · Borikar · 2022 [cited by examiner]
US 20060031524A1 · Freimuth · 2006 [cited by examiner]
US 20130159568A1 · Shahar · 2013 [cited by examiner]
US 20160065659A1 · Bloch et al. · 2016 [cited by applicant]
US 20160188527A1 · Cherian · 2016 [cited by examiner]
US 20170255590A1 · Shuler et al. · 2017 [cited by applicant]
US 20180026878A1 · Zahavi et al. · 2018 [cited by applicant]
US 20180052803A1 · Graham et al. · 2018 [cited by applicant]
US 20180267919A1 · Burstein · 2018 [cited by applicant]
US 20190028505A1 · Shpiner et al. · 2019 [cited by applicant]
US 20190171612A1 · Shahar et al. · 2019 [cited by applicant]
US 20190173810A1 · Shpiner et al. · 2019 [cited by applicant]
US 20190327173A1 · Gafni et al. · 2019 [cited by applicant]
US 20200084150A1 · Burstein et al. · 2020 [cited by applicant]
US 20200089816A1 · Shattah · 2020 [cited by applicant]
US 20200099620A1 · Shen · 2020 [cited by examiner]
US 20200106828A1 · Elias et al. · 2020 [cited by applicant]
US 20200153739A1 · Gafni et al. · 2020 [cited by applicant]
US 20200371708A1 · Karmani et al. · 2020 [cited by applicant]
US 20200374230A1 · Aibester et al. · 2020 [cited by applicant]
US 20210083981A1 · Shmilovici · 2021 [cited by examiner]
US 20210117246A1 · Lal · 2021 [cited by examiner]
US 20210168354A1 · Levi et al. · 2021 [cited by applicant]
US 20210243155A1 · Anderson · 2021 [cited by examiner]
US 20210306166A1 · Piasetzky et al. · 2021 [cited by applicant]
US 20210344782A1 · Shpigelman et al. · 2021 [cited by applicant]
US 20220060417A1 · Kfir et al. · 2022 [cited by applicant]
US 20220078043A1 · Marcovitch et al. · 2022 [cited by applicant]
US 20220158772A1 · Burstein et al. · 2022 [cited by applicant]
US 20220174000A1 · Mendelson et al. · 2022 [cited by applicant]
US 20220188147A1 · Nudelman et al. · 2022 [cited by applicant]
EP 3719657A1 · 2017 [cited by applicant]
EP 3654563A1 · 2020 [cited by applicant]
EP 3952254A1 · 2022 [cited by applicant]
EP 4002734A1 · 2022 [cited by applicant]
TW 486633B · 2002 [cited by applicant]
Feng et al., “Accelerating Distributed Deep Learning using Multi-Path RDMA in Data Center Networks,” ACM SIGCOMM Symposium on SDN Research—SOSR '21, Association for Computing Machinery, pp. 1-13, year 2021. [cited by applicant]
Cited By (5)
US 12,483,387 US 12,483,388 US 12,483,389 US 12,483,390 US 12,489,607