IP Library Granted Patent US 12,445,392
Granted Patent B2
US 12,445,392 · App. 17/606,715 · Granted Oct 14, 2025

Streaming communication between devices

Inventors: Zhixiong Niu (Redmond, WA); Ran Shu (Redmond, WA); Lei Qu (Redmond, WA); Peng Chen (Redmond, WA); Yongqiang Xiong (Beijing, CN); Guo Chen (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
H04L49/102H04L49/9005H04L49/9036H04L67/1097
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,445,392
App. No.
17/606,715
Granted
Oct 14, 2025
Kind
B2
Abstract

In accordance with implementations of the subject matter described herein, there is provided a solution for streaming communication between devices. In this solution, a memory of a first device comprising a ring buffer is allocated to be dedicated for storing a data stream of an application to be transmitted to a second electronic device. The application of the first device writes data to be transmitted into the ring buffer, to form a portion of the first data stream, and a write pointer of the ring buffer is thus updated. A portion of data is read based on a source memory address from the ring buffer via the interface device. The interface device also transmits the data portion to a second device. The read data portion is stored in a dedicated ring buffer of the memory. In accordance with the solution, an efficient streaming communication interface is provided between devices.

Claims (51)

1. An interface device comprising:

a physical interface connected to a first device comprising a first memory, the first memory comprising a first ring buffer allocated to be dedicated for storing a first data stream of an application to be transmitted to a second device; and

control logic configured to:

in response to detection of a command from the first device, read, based on a source memory address indicated by the command, a first data portion of the first data stream from the first ring buffer via the physical interface;

transmit, based on a destination memory address indicated by the command, the first data portion to the second device via the physical interface; and

receive, via a network, a second packet to confirm that the first data portion is stored, the second packet comprising a second header, and the second header at least indicating that the first data portion is confirmed to be stored to the destination memory address, wherein the second packet is received from a further interface device coupled to the physical interface, the further interface device comprising a second physical interface connected with the second device, wherein the network is used to establish a connection between the first device and the second device.

2. The interface device of claim 1 , wherein the control logic is configured to:

encapsulate the first data portion and a first header into a first packet for data transmission, the first header at least indicating the destination memory address; and

transmit the first packet to the further interface device via the network.

3. The interface device of claim 2 , wherein the second header is extracted from the first header by the further interface device to be comprised in the second packet.

4. The interface device of claim 2 , wherein the second device comprises a second ring buffer allocated to be dedicated for storing the first data stream received from the first device, the first memory storing a write pointer of the second ring buffer to a data-writable memory address in the second ring buffer; and

wherein the control logic is further configured to cause, in response to the second packet, the first device to update the write pointer of the second ring buffer to point to a new data-writable memory address in the second ring buffer.

5. The interface device of claim 4 , wherein the control logic is further configured to:

transmit a third packet comprising a third header to the further interface device via the network, the third packet indicating that the further interface device transmits an interrupt request to an application of the second device, the third header at least indicating an interrupt address of the second ring buffer to be used by the application of the second device.

6. The interface device of claim 4 , wherein the first memory stores a read pointer of the second ring buffer to a data-readable memory address in the second ring buffer; and

wherein the control logic is further configured to:

receive, from the further interface device and via the network, a fourth packet comprising a fourth header and notifying an update of the read pointer of the second ring buffer, the update being triggered by reading data from the second ring buffer by an application of the second device, and the fourth header indicating a memory address pointed to by the updated read pointer.

7. A method implemented at an interface device, comprising:

detecting a command from a first device with a first memory, the first memory comprising a first ring buffer allocated to be dedicated for storing a first data stream of an application to be transmitted to a second device;

in response to detection of the command, reading, based on a source memory address indicated by the command, a first data portion of the first data stream from the first ring buffer via a physical interface of the interface device;

transmitting, based on a destination memory address indicated by the command, the first data portion to the second device via the physical interface; and

receiving, via a network, a second packet to confirm that the first data portion is stored, the second packet comprising a second header, and the second header at least indicating that the first data portion is confirmed to be stored to the destination memory address, wherein the second packet is received from a further interface device coupled to the physical interface, the further interface device comprising a second physical interface connected with the second device, wherein the network used to establish a connection between the first device and the second device.

8. The method of claim 7 , wherein transmitting the first data portion to the second device comprises:

encapsulating the first data portion and a first header into a first packet for data transmission, the first header at least indicating the destination memory address; and

transmitting the first packet to the further interface device via the network.

9. The method of claim 8 , wherein the second header is extracted from the first header by the further interface device to be comprised in the second packet.

10. The method of claim 7 , wherein the second device comprises a second ring buffer allocated to be dedicated for storing the first data stream received from the first device, the first memory storing a write pointer of the second ring buffer to a data-writable memory address in the second ring buffer and the method further comprising:

in response to the second packet, updating, by the first device, the write pointer of the second ring buffer to point to a new data-writable memory address in the second ring buffer.

11. The method of claim 10 , further comprising:

transmitting a third packet comprising a third header to the further interface device via the network, the third packet indicating that the further interface device transmits an interrupt request to an application of the second device, the third header at least indicating an interrupt address of the second ring buffer to be used by the application of the second device.

12. The method of claim 10 , wherein the first memory stores a read pointer of the second ring buffer to a data-readable memory address in the second ring buffer and the method further comprising:

receiving, from the further interface device and via the network, a fourth packet comprising a fourth header and notifying an update of the read pointer of the second ring buffer, the update being triggered by reading data from the second ring buffer by an application of the second device, and the fourth header indicating a memory address pointed to by the updated read pointer.

13. The method of claim 7 , wherein a third ring buffer is allocated to be dedicated for storing a second data stream for the application received from the further interface device and the method further comprising:

in response to a third data portion of the second data stream being directly written by the interface device into the third ring buffer, modifying a write pointer of the third ring buffer stored in the first memory to point to a data-writable memory address in the third ring buffer.

14. At least one non-transitory machine-readable medium comprising instructions that, when executed by at least one processor, cause the at least one processor to perform operations to:

detect a command from a first device with a first memory, the first memory comprising a first ring buffer allocated to be dedicated for storing a first data stream of an application to be transmitted to a second device;

in response to detection of the command, read, based on a source memory address indicated by the command, a first data portion of the first data stream from the first ring buffer via a physical interface of an interface device;

transmit, based on a destination memory address indicated by the command, the first data portion to the second device via the physical interface; and

receive, via a network, a second packet to confirm that the first data portion is stored, the second packet comprising a second header, and the second header at least indicating that the first data portion is confirmed to be stored to the destination memory address, wherein the second packet is received from a further interface device coupled to the physical interface, the further interface device comprising a second physical interface connected with the second device, wherein the network used to establish a connection between the first device and the second device.

15. The at least one non-transitory machine-readable medium of claim 14 , wherein the instructions to transmit the first data portion to the second device comprises instructions to:

encapsulate the first data portion and a first header into a first packet for data transmission, the first header at least indicating the destination memory address; and

transmit the first packet to the further interface device via the network.

16. The at least one non-transitory machine-readable medium of claim 15 , wherein the second header is extracted from the first header by the further interface device to be comprised in the second packet.

17. The at least one non-transitory machine-readable medium of claim 14 , wherein the second device comprises a second ring buffer allocated to be dedicated for storing the first data stream received from the first device, the first memory storing a write pointer of the second ring buffer to a data-writable memory address in the second ring buffer and the instructions further comprising instructions to:

in response to the second packet, update, by the first device, the write pointer of the second ring buffer to point to a new data-writable memory address in the second ring buffer.

18. The at least one non-transitory machine-readable medium of claim 17 , further comprising instructions to:

transmit a third packet comprising a third header to the further interface device via the network, the third packet indicating that the further interface device transmits an interrupt request to an application of the second device, the third header at least indicating an interrupt address of the second ring buffer to be used by the application of the second device.

19. The at least one non-transitory machine-readable medium of claim 17 , wherein the first memory stores a read pointer of the second ring buffer to a data-readable memory address in the second ring buffer and the at least one non-transitory machine-readable medium further comprising instructions to:

receive, from the further interface device and via the network, a fourth packet comprising a fourth header and notifying an update of the read pointer of the second ring buffer, the update being triggered by reading data from the second ring buffer by an application of the second device, and the fourth header indicating a memory address pointed to by the updated read pointer.

20. The at least one non-transitory machine-readable medium of claim 14 , wherein a third ring buffer is allocated to be dedicated for storing a second data stream for the application received from the further interface device and further comprising instructions to:

in response to a third data portion of the second data stream being directly written by the interface device into the third ring buffer, modify a write pointer of the third ring buffer stored in memory to point to a data-writable memory address in the third ring buffer.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 29, 2021
From: NIU, ZHIXIONG; SHU, RAN; QU, LEI; CHENG, PENG; XIONG, YONGQIANG; CHEN, GUO
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 057960/0729 →
Priority Claims (1)
CN 201910472421.7 · May 31, 2019 · national
Continuity (1)
Related Publication 20220217098A1 · Jul 7, 2022
References Cited (62)
US 7554976B2 · Feng et al. · 2009 [cited by applicant]
US 7664833B2 · Shoolman et al. · 2010 [cited by applicant]
US 8495257B2 · Desai et al. · 2013 [cited by applicant]
US 9792248B2 · Shamis et al. · 2017 [cited by applicant]
US 10198397B2 · Fu · 2019 [cited by applicant]
US 11025564B2 · Humphrey et al. · 2021 [cited by applicant]
US 20070162639A1 · Chu · 2007 [cited by examiner]
US 20080043732A1 · Desai · 2008 [cited by examiner]
US 20090083392A1 · Wong · 2009 [cited by examiner]
US 20140258438A1 · Ayoub · 2014 [cited by examiner]
US 20170075816A1 · Okada · 2017 [cited by examiner]
US 20180295052A1 · St-Laurent · 2018 [cited by examiner]
US 20190034381A1 · Burstein et al. · 2019 [cited by applicant]
US 20220217098A1 · Niu et al. · 2022 [cited by applicant]
CN 1368681A · 2002 [cited by applicant]
CN 1540523A · 2004 [cited by applicant]
CN 101199011A · 2008 [cited by applicant]
CN 103163827A · 2013 [cited by applicant]
CN 107257354A · 2017 [cited by applicant]
Office Action Received for Chinese Application No. 201910472421.7, mailed on Jan. 27, 2024, 11 pages (English Translation Provided). [cited by applicant]
Third Office Action Received for Chinese Application No. 201910472421.7, mailed on May 14, 2024, 23 pages. (English Translation Provided). [cited by applicant]
“Apache Storm”, Retrieved from: https://web.archive.org/web/20181229081009/http:/storm.apache.org/, Dec. 29, 2018, 4 Pages. [cited by applicant]
“DPDK: Data Plane Development Kit”, Retrieved from: https://web.archive.org/web/20190103072605/https:/www.dpdk.org/, Jan. 3, 2019, 4 Pages. [cited by applicant]
“Mellanox Adapters Programmer's Reference Manual (PRM)”, Retrieved from: https://web.archive.org/web/20170129063105/http:/www.mellanox.com/related-docs/user_manualsEthernet_Adapters_Programming_Manual.pdf, Jan. 29, 2017… [cited by applicant]
“MPI Forum”, Retrieved from: https://web.archive.org/web/20181216032042/https:/www.mpi-forum.org/, Dec. 16, 2018, 2 Pages. [cited by applicant]
“Network Direct SPI”, Retrieved from: https://docs.microsoft.com/en-us/previous-versions/windows/desktop/cc904397 (v=vs.85), Jul. 2, 2010, 2 Pages. [cited by applicant]
“RDMA-iWarp”, Retrieved from: https://web.archive.org/web/20190405165726/http:/www.chelsio.com/nic/rdma-iwarp/, Apr. 5, 2019, 4 Pages. [cited by applicant]
“Seastar”, Retrieved from: https://web.archive.org/web/20190216041409/http://seastar.io/, Apr. 5, 2019, 4 Pages. [cited by applicant]
“SQL Server 2016”, Retrieved from: https://web.archive.org/web/20161018101330/https:/www.microsoft.com/en-us/sql-server/sql-server-2016, Oct. 18, 2016, 12 Pages. [cited by applicant]
“Streaming DMA Accelerator Functional Unit User Guide”, Retrieved from: https://www.intel.com/content/www/us/en/programmable/documentation/ctb1526061110715.html, Mar. 6, 2020, 30 Pages. [cited by applicant]
“TCP Chimney Offload”, Retrieved from: https://docs.microsoft.com/en-us/previous-versions/windows/hardware/network/ndis-tcp-chimney-offload, Apr. 20, 2017, 2 Pages. [cited by applicant]
Atikoglu, et al., “Workload Analysis of a Large-Scale Key-Value Store”, In Proceedings of the 12th ACM Sigmetrics/Performance Joint International Conference on Measurement and Modeling of Computer Systems, Jun. 11, 2012… [cited by applicant]
Balaji, et al., “Sockets Direct Protocol over InfiniBand in Clusters: Is it beneficial?”, In Proceedings of the IEEE International Symposium on—ISPASS Performance Analysis of Systems and Software, Mar. 10, 2004, pp. 28-… [cited by applicant]
Belay, et al., “IX: A Protected Dataplane Operating System for High Throughput and Low Latency”, In Proceedings of the 11th USENIX Symposium on Operating Systems Design and Implementation, Oct. 6, 2014, pp. 49-65. [cited by applicant]
Caulfield, et al., “A Cloud-Scale Acceleration Architecture”, In Proceedings of the 49th Annual IEEE/ACM International Symposium on Microarchitecture, Oct. 15, 2016, 13 Pages. [cited by applicant]
Caulfield, et al., “Beyond SmartNICs: Towards a Fully Programmable Cloud”, In Proceedings of the IEEE International Conference on High Performance Switching and Routing, Jun. 2018, 6 Pages. [cited by applicant]
Dragojević, et al., “FaRM: Fast Remote Memory”, In Proceedings of 11th USENIX Symposium on Networked Systems Design and Implementation, Apr. 2, 2014, pp. 401-414. [cited by applicant]
Goldenberg, et al., “Zero Copy Sockets Direct Protocol over InfiniBand—Preliminary Implementation and Performance Analysis”, In Proceedings of 13th Symposium on High Performance Interconnects, Aug. 17, 2005, 10 Pages. [cited by applicant]
Guo, et al., “ROMA over Commodity Ethernet at Scale”, In Proceedings of the ACM SIGCOMM Conference, Aug. 22, 2016, 14 Pages. [cited by applicant]
Handley, et al., “Re-architecting Datacenter Networks and Stacks for Low Latency and High Performance”, In Proceedings of the Conference of the ACM Special Interest Group on Data Communication, Aug. 21, 2017, pp. 29-42. [cited by applicant]
Jeong, et al., “mTCP: A Highly Scalable User-level TCP Stack for Multicore Systems”, In Proceedings of 11th USENIX Symposium on Networked Systems Design and Implementation, Apr. 2, 2014, pp. 489-502. [cited by applicant]
Kalia, et al., “Design Guidelines for High Performance RDMA Systems”, In Proceedings of USENIX Annual Technical Conference, Jun. 22, 2016, pp. 437-450. [cited by applicant]
Kalia, et al., “FaSST: Fast, Scalable and Simple Distributed Transactions with Two-Sided (ROMA) Datagram RPCs”, In Proceedings of 12th USENIX Symposium on Operating Systems Design and Implementation, Nov. 2, 2016, pp. 1… [cited by applicant]
Kaufmann, et al., “Lightweight Data Center TCP Packet Processing”, In Journal of Under Submission, Feb. 26, 2019, 20 Pages. [cited by applicant]
Li, et al., “A Hardware Supported Method of RDMA Transmission for Unreliable Networks”, In Proceedings of the 3rd IEEE International Conference on Computer and Communications, Dec. 13, 2017, pp. 2648-2653. [cited by applicant]
MacArthur, “An Efficient Method for Stream Semantics over RDMA”, In Proceedings of IEEE 28th International Parallel and Distributed, May 19, 2014, pp. 841-851. [cited by applicant]
MacArthur, et al., “Implementing TCP Sockets over ROMA”, In 2nd Annual InfiniBand User Group Workshop, Apr. 3, 2014, 31 Pages. [cited by applicant]
Marrinos, et al., “Network Stack Specialization for Performance”, In Proceedings of ACM SIGCOMM Computer Communication Review, vol. 44, Aug. 17, 2014, pp. 175-186. [cited by applicant]
Mittal, et al., “Timely: RTT-based Congestion Control for the Datacenter”, In Proceedings of ACM Conference on Special Interest Group on Data Communication, Aug. 17, 2015, pp. 537-550. [cited by applicant]
Nangare, Sagar, “NVMe over Fabrics: Fibre Channel vs. RDMA”, Retrieved from: https://www.networkcomputing.com/data-centers/nvme-over-fabrics-fibre-channel-vs-rdma, Aug. 15, 2018, 6 Pages. [cited by applicant]
Nishtala, et al., “Scaling Memcache at Facebook”, In Proceedings of the 10th USENIX conference on Networked Systems Design and Implementation, vol. 13, Apr. 2, 2013, pp. 385-398. [cited by applicant]
“International Search Report and Written Opinion Issued in PCT Application No. PCT/US20/026467”, Mailed Date: Jun. 12, 2020, 12 Pages. [cited by applicant]
Recio, et al., “A Remote Direct Memory Access Protocol Specification”, Retrieved from: https://tools.ietf.org/pdf/rfc5040.pdf, Oct. 2007, 66 Pages. [cited by applicant]
Rizzo, Luigi, “Netmap: A Novel Framework for Fast Packet I/O”, In Proceedings of the USENIX conference on Annual Technical Conference, Jun. 13, 2012, 12 Pages. [cited by applicant]
Satran, et al., “Internet Small Computer Systems Interface (iSCSI)”, Retrieved from: https://datatracker.ietf.org/doc/html/rfc3720, Apr. 2004, 257 Pages. [cited by applicant]
Shieh, et al., “Trickles: A Stateless Network Stack for Improved Scalability, Resilience, and Flexibility”, In Proceedings of the 2nd conference on Symposium on Networked Systems Design & Implementation—vol. 2, May 2, 2… [cited by applicant]
Willhalm, et al., “Intel® Performance Counter Monitor—A Better Way to Measure CPU Utilization”, Retrieved from: https://software.intel.com/en-us/articles/intel-performance-counter-monitor, Aug. 16, 2012, 14 Pages. [cited by applicant]
Zhu, et al., “Congestion control for large-scale RDMA Deployments”, In Proceedings of the ACM Conference on Special Interest Group on Data Communication, vol. 45, Aug. 17, 2015, pp. 523-536. [cited by applicant]
“First Office Action and Search Report Issued in Chinese Patent Application No. 201910472421.7”, Mailed Date: Jul. 3, 2023, 18 Pages. [cited by applicant]
“Notice of Allowance Issued in European Patent Application No. 20722105.2”, Mailed Date: Oct. 20, 2023, 8 Pages. [cited by applicant]
Office Action Received for Chinese Application No. 201910472421.7, mailed on Aug. 2, 2024, 16 pages. (English Translation Provided). [cited by applicant]
“Decision to grant a European patent pursuant to Article 97(1) received in European Application No. 20722105.2”, mailed on Mar. 28, 2024, 2 pages. [cited by applicant]