IP Library Granted Patent US 11,494,257
Granted Patent B2
US 11,494,257 · App. 17/154,459 · Granted Nov 8, 2022

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 11,494,257
App. No.
17/154,459
Granted
Nov 8, 2022
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 (155)

1. A system comprising:

a network adaptor configured to generate a header checksum seed such that a header checksum calculated according to the header checksum seed is equal to zero wherein:

the network adaptor is configured to use a partial checksum to generate the header checksum,

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

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

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

3. The system of claim 1 , wherein the network adaptor is configured to generate the header checksum seed is one of a plurality of pre-determined numbers.

4. The system of claim 1 , wherein the network adaptor is configured to generate a new partial checksum when a first baseline header field for the first data block is different than a second baseline header field for the second data block.

5. The system of claim 1 , wherein the network adaptor is configured to generate the header checksum by adding the partial checksum to a checksum of a non-baseline header field.

6. The system of claim 1 , wherein if a number of bytes in a header block is greater than a threshold, the network adaptor is configured to generate a special frame for transmission prior to a transmission of the header block.

7. The system of claim 6 , wherein the network adaptor 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.

8. The system of claim 1 , wherein if a number of bytes in a data block is greater than a threshold, the network adaptor is configured to generate a special frame for transmission prior to a transmission of the data block.

9. 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.

10. A method for networking, comprising:

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

transmitting the header block and the data block wherein:

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

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

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

12. The method of claim 10 , comprising the header checksum seed value is one of a plurality of pre-determined numbers.

13. The method of claim 10 , comprising generating a new partial checksum when the baseline header field has changed for the second data block compared to the first data block.

14. The method of claim 10 , wherein the header checksum is generated by adding the partial checksum to a checksum of a non-baseline header field.

15. The method of claim 10 , 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.

16. The method of claim 15 , 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.

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

18. The method of claim 10 , 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.

19. A system comprising:

a network adaptor configured to generate a header checksum seed such that a header checksum calculated according to the header checksum seed is equal to zero, wherein if a number of bytes in a header block is greater than a threshold, the network adaptor is configured to generate a special frame for transmission prior to a transmission of the header block.

20. The system of claim 19 , wherein the network adaptor is configured to calculate a data checksum.

21. The system of claim 19 , wherein the network adaptor is configured to generate the header checksum seed is one of a plurality of pre-determined numbers.

22. The system of claim 19 , wherein:

the network adaptor is configured to use a partial checksum to generate the header checksum,

the partial checksum is a checksum for a baseline header field,

the baseline header field is a pre-determined header field that is not expected to change from a transmission of a first data block to a transmission of a second data block, and

the network adaptor is configured to generate a new partial checksum when a first baseline header field for the first data block is different than a second baseline header field for the second data block.

23. The system of claim 19 , wherein:

the network adaptor is configured to use a partial checksum to generate the header checksum,

the partial checksum is a checksum for a baseline header field,

the baseline header field is a pre-determined header field that is not expected to change from a transmission of a first data block to a transmission of a second data block, and

the network adaptor is configured to generate the header checksum by adding the partial checksum to a checksum of a non-baseline header field.

24. The system of claim 19 , wherein if a number of bytes in a data block is greater than a threshold, the network adaptor is configured to generate a special frame for transmission prior to a transmission of the data block.

25. The system of claim 19 , wherein the network adaptor 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.

26. The system of claim 19 , 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.

27. A method for networking, comprising:

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

transmitting the header block and the data block; and

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.

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

29. The method of claim 27 , comprising the header checksum seed value is one of a plurality of pre-determined numbers.

30. The method of claim 27 , comprising

using a partial checksum to generate the header checksum, wherein:

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

the baseline header field is a pre-determined header field in the header block that is not expected to change from a transmission of a first data block to a transmission of a second data block; and

generating a new partial checksum when the baseline header field has changed for the second data block compared to the first data block.

31. The method of claim 27 , using a partial checksum to generate the header checksum, wherein:

the partial checksum is a checksum for a baseline header field,

the baseline header field is a pre-determined header field in the header block that is not expected to change from a transmission of a first data block to a transmission of a second data block, and

the header checksum is generated by adding the partial checksum to a checksum of a non-baseline header field.

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

33. The method of claim 27 , 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.

34. The method of claim 27 , 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.

35. A system comprising:

a network adaptor configured to generate a header checksum seed such that a header checksum calculated according to the header checksum seed is equal to zero, wherein if a number of bytes in a data block is greater than a threshold, the network adaptor configured to generate a special frame for transmission prior to a transmission of the data block.

36. The system of claim 35 , wherein the network adaptor is configured to calculate a data checksum.

37. The system of claim 35 , wherein the network adaptor is configured to generate the header checksum seed is one of a plurality of pre-determined numbers.

38. The system of claim 35 , wherein

the network adaptor is configured to use a partial checksum to generate the header checksum,

the partial checksum is a checksum for a baseline header field,

the baseline header field is a pre-determined header field that is not expected to change from a transmission of a first data block to a transmission of a second data block, and

the network adaptor is configured to generate a new partial checksum when a first baseline header field for the first data block is different than a second baseline header field for the second data block.

39. The system of claim 35 , wherein

the network adaptor is configured to use a partial checksum to generate the header checksum,

the partial checksum is a checksum for a baseline header field,

the baseline header field is a pre-determined header field that is not expected to change from a transmission of a first data block to a transmission of a second data block, and

the network adaptor is configured to generate the header checksum by adding the partial checksum to a checksum of a non-baseline header field.

40. The system of claim 35 , wherein:

if a number of bytes in a header block is greater than a threshold, the network adaptor is configured to generate a special frame for transmission prior to a transmission of the header block, and

the network adaptor 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.

41. The system of claim 35 , 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.

42. A method for networking, comprising:

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

transmitting the header block and the data block,

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

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

44. The method of claim 42 , comprising the header checksum seed value is one of a plurality of pre-determined numbers.

45. The method of claim 42 , comprising

using a partial checksum to generate the header checksum, wherein:

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

the baseline header field is a pre-determined header field in the header block that is not expected to change from a transmission of a first data block to a transmission of a second data block; and

generating a new partial checksum when the baseline header field has changed for the second data block compared to the first data block.

46. The method of claim 42 , comprising

using a partial checksum to generate the header checksum, wherein:

the partial checksum is a checksum for a baseline header field,

the baseline header field is a pre-determined header field in the header block that is not expected to change from a transmission of a first data block to a transmission of a second data block, and

the header checksum is generated by adding the partial checksum to a checksum of a non-baseline header field.

47. The method of claim 42 , 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;

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.

48. The method of claim 42 , 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.

49. A system comprising:

a network adaptor configured to generate a header checksum seed such that a header checksum calculated according to the header checksum seed is equal to zero, 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.

50. The system of claim 49 , wherein the network adaptor is configured to calculate a data checksum.

51. The system of claim 49 , wherein the network adaptor is configured to generate the header checksum seed is one of a plurality of pre-determined numbers.

52. The system of claim 49 , wherein:

the network adaptor is configured to use a partial checksum to generate the header checksum,

the partial checksum is a checksum for a baseline header field,

the baseline header field is a pre-determined header field that is not expected to change from a transmission of a first data block to a transmission of a second data block, and

the network adaptor is configured to generate a new partial checksum when a first baseline header field for the first data block is different than a second baseline header field for the second data block.

53. The system of claim 49 , wherein:

the network adaptor is configured to use a partial checksum to generate the header checksum,

the partial checksum is a checksum for a baseline header field,

the baseline header field is a pre-determined header field that is not expected to change from a transmission of a first data block to a transmission of a second data block, and

the network adaptor is configured to generate the header checksum by adding the partial checksum to a checksum of a non-baseline header field.

54. The system of claim 49 , wherein:

if a number of bytes in a header block is greater than a threshold, the network adaptor is configured to generate a special frame for transmission prior to a transmission of the header block; and

the network adaptor 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.

55. A method for networking, comprising:

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

transmitting the header block and the data block; and

a child partition executing on a processor receiving inbound traffic directly from a network adaptor and transmitting outbound traffic directly to the network adaptor.

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

57. The method of claim 55 , comprising the header checksum seed value is one of a plurality of pre-determined numbers.

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

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

the baseline header field is a pre-determined header field in the header block that is not expected to change from a transmission of a first data block to a transmission of a second data block; and

generating a new partial checksum when the baseline header field has changed for the second data block compared to the first data block.

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

the partial checksum is a checksum for a baseline header field,

the baseline header field is a pre-determined header field in the header block that is not expected to change from a transmission of a first data block to a transmission of a second data block, and

the header checksum is generated by adding the partial checksum to a checksum of a non-baseline header field.

60. The method of claim 55 , 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; and

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.

Continuity (3)
Continuation 16121942 · Sep 5, 2018
Provisional Application 62585047 · Nov 13, 2017
Related Publication 20210141686A1 · May 13, 2021