IP Library Granted Patent US 10,936,405
Granted Patent B2
US 10,936,405 · App. 16/121,942 · Granted Mar 2, 2021

Efficient networking for a distributed storage system

Inventors: Maor Ben Dayan (Tel Aviv, IL); Omri Palmon (Tel Aviv, IL); Liran Zvibel (Tel Aviv, IL); Tomer Filiba (Tel Aviv, IL)
G06F11/1004G06F3/064G06F3/067G06F3/0619H04L67/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 10,936,405
App. No.
16/121,942
Granted
Mar 2, 2021
Kind
B2
Abstract

A plurality of computing devices are communicatively coupled to each other via a network, and each of the plurality of computing devices is operably coupled to one or more of a plurality of storage devices. Data communication is made more efficient by removing the need to copy data in the networking stack, using hardware accelerated end-to-end checksum calculation, and supporting transmission formatting of data and header for special cases.

Claims (37)

1. A system for networking, comprising:

a memory management unit configured to enable writing data and its header to a physical memory page, wherein the data in the physical memory page is a data block and the header in the physical memory page is a header block;

a processor configured to generate and store a particular value as a header checksum seed in a header checksum field in the header block, wherein the particular value is generated such that a header checksum calculated according to the particular value is equal to zero; and

a network adaptor configured to transmit the header block and the data block.

2. The system of claim 1 , wherein the network adaptor is configured to calculate a data checksum for the data block.

3. The system of claim 1 , wherein the processor is configured to generate the particular value while the header checksum seed is set to a pre-determined number.

4. The system of claim 1 , wherein:

the processor is configured to use a partial checksum to generate the header checksum,

the partial checksum being a checksum for baseline header fields, and

the baseline header fields being pre-determined header fields in the header block that are not expected to change from a transmission of a first data block to a transmission of a second data block.

5. The system of claim 4 , wherein the processor is configured to generate a new partial checksum when one or more of the baseline header fields have changed for the second data block compared to the first data block.

6. The system of claim 4 , wherein the processor generates the header checksum by adding the partial checksum to a checksum of non-baseline header fields, the non-baseline header fields being one or more of the header fields in the header block that are not baseline header fields.

7. The system of claim 1 , wherein, if a number of bytes in the header block not used for storing the header is greater than a first pre-determined threshold, the processor is configured to set up a special frame for transmission prior to transmission of the data block.

8. The system of claim 7 , wherein the processor is configured to use an additional special frame when a number of data blocks to be transmitted is greater than a second pre-determined threshold.

9. The system of claim 7 , wherein the processor is configured to:

copy a first number of bytes at a beginning of the data block to the special frame, the first number of bytes being the number of bytes in the header; and

copy the header to the beginning of the data block.

10. The system of claim 1 , wherein the network adaptor is configured to:

transmit inbound traffic directly to a child partition; and

receive outbound traffic directly from the child partition, wherein the child partition is executing on the processor.

11. A method for networking, comprising:

writing data and a header for the data to a physical memory page, wherein the data in the physical memory page is a data block and the header in the physical memory page is a header block;

writing a particular value as a header checksum seed value in a header checksum field wherein the particular value is generated such that a header checksum calculated according to the particular value is equal to zero; and

transmitting the header block and the data block.

12. The method of claim 11 , comprising using a network adaptor to calculate a data checksum for the data block.

13. The method of claim 11 , comprising generating the particular value while the header checksum seed is set to a pre-determined number.

14. The method of claim 11 , comprising using a partial checksum to generate the header checksum, wherein:

the partial checksum is a checksum for baseline header fields, and

the baseline header fields are pre-determined header fields in the header block that are not expected to change from a transmission of a first data block to a transmission of a second data block.

15. The method of claim 14 , comprising generating a new partial checksum when one or more of the baseline header fields have changed for the second data block compared to the first data block.

16. The method of claim 14 , wherein the header checksum is generated by adding the partial checksum to a checksum of non-baseline header fields, the non-baseline header fields being one or more of the header fields in the header block that are not baseline header fields.

17. The method of claim 11 , comprising, if a number of bytes in the header block not used for storing the header is greater than a first pre-determined threshold, transmitting a special frame prior to transmitting the data block.

18. The method of claim 17 , wherein an additional special frame is used when a number of data blocks to be transmitted is greater than a second pre-determined threshold.

19. The method of claim 17 , comprising:

copying a first number of bytes at a beginning of the data block to the special frame, wherein the first number of bytes is the number of bytes in the header; and

copying the header to the beginning of the data block.

20. The method of claim 11 , comprising a child partition executing on a processor receiving inbound traffic directly from a network adaptor and transmitting outbound traffic directly to the network adaptor.

Assignments (3)
RELEASE OF SECURITY INTEREST Recorded Jun 20, 2024
From: BANK LEUMI LE-ISRAEL B.M.
To: WEKAIO LTD.
Reel/Frame 067783/0962 →
SECURITY INTEREST Recorded Mar 29, 2020
From: WEKAIO LTD.
To: BANK LEUMI LE-ISRAEL B.M.
Reel/Frame 052253/0860 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 18, 2018
From: DAYAN, MAOR BEN; PALMON, OMRI; ZVIBEL, LIRAN; FILIBA, TOMER
To: WEKA.IO LTD.
Reel/Frame 047101/0383 →
Continuity (2)
Provisional Application 62585047 · Nov 13, 2017
Related Publication 20190146865A1 · May 16, 2019
Cited By (1)
US 12,259,782