IP Library Granted Patent US 12,259,782
Granted Patent B2
US 12,259,782 · App. 18/614,833 · Granted Mar 25, 2025

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)
Assignee: Weka.IO Ltd.
G06F11/1004G06F3/0619G06F3/064G06F3/067H04L67/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,259,782
App. No.
18/614,833
Granted
Mar 25, 2025
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 (112)

1. A system comprising:

a transmitter configured to transmit a data block and a header block, wherein a checksum seed of the header block is generated such that a checksum of the header block, generated according to the checksum seed, is equal to zero; and

a processor configured to generate the checksum according to 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 a processor is configured to use a partial checksum to generate the checksum.

3. The system of claim 1 , wherein a processor is configured to generate the checksum according to a baseline header field.

4. The system of claim 1 , wherein the transmitter is configured to transmit a special frame prior to the header block, if a number of bytes in the header block is greater than a threshold.

5. The system of claim 1 , wherein the transmitter is configured to transmit a special frame prior to the data block, if a number of bytes in the data block is greater than a threshold.

6. The system of claim 1 , wherein a processor is configured to:

execute a child partition on the processor; and

send outbound traffic from the child partition directly to the transmitter.

7. The system of claim 1 , wherein the checksum seed is generated by a processor.

8. The system of claim 1 , wherein the checksum seed is one of a plurality of pre-determined numbers.

9. The system of claim 1 , wherein the checksum is generated by adding a partial checksum to a checksum of a non-baseline field.

10. A method comprising:

generating a checksum seed of a header block such that a checksum of the header block, generated according to the checksum seed, is equal to zero;

communicating, via a transmitter, a data block and the header block; and

generating the checksum seed according to a pre-determined header field that is not expected to change between a transmission of a first data block and a transmission of a second data block.

11. The method of claim 10 , wherein the method comprises generating the checksum according to a partial checksum.

12. The method of claim 10 , wherein the method comprises generating the checksum according to a baseline header field.

13. The method of claim 10 , wherein the method comprises transmitting a special frame prior to the header block, if a number of bytes in the header block is greater than a threshold.

14. The method of claim 10 , wherein the method comprises transmitting a special frame prior to the data block, if a number of bytes in the data block is greater than a threshold.

15. The method of claim 10 , wherein the method comprises:

executing a child partition; and

sending outbound traffic from the child partition directly to the transmitter.

16. The method of claim 10 , wherein the checksum seed is generated by a processor.

17. The method of claim 10 , wherein the checksum seed is one of a plurality of pre-determined numbers.

18. The method of claim 10 , wherein the method comprises generating the checksum by adding a partial checksum to a checksum of a non-baseline field.

19. A system comprising:

a transmitter configured to transmit a data block and a header block, wherein:

a checksum seed of the header block is generated such that a checksum of the header block, generated according to the checksum seed, is equal to zero, and

the transmitter is configured to transmit a special frame prior to the header block, if a number of bytes in the header block is greater than a threshold.

20. The system of claim 19 , wherein a processor is configured to use a partial checksum to generate the checksum.

21. The system of claim 19 , wherein a processor is configured to generate the checksum according to a baseline header field.

22. The system of claim 19 , wherein the transmitter is configured to transmit a special frame prior to the data block, if a number of bytes in the data block is greater than a threshold.

23. The system of claim 19 , wherein a processor is configured to:

execute a child partition on the processor; and

send outbound traffic from the child partition directly to the transmitter.

24. The system of claim 19 , wherein the checksum seed is generated by a processor.

25. The system of claim 19 , wherein the checksum seed is one of a plurality of pre-determined numbers.

26. The system of claim 19 , wherein the checksum is generated by adding a partial checksum to a checksum of a non-baseline field.

27. A method comprising:

generating a checksum seed of a header block such that a checksum of the header block, generated according to the checksum seed, is equal to zero;

communicating, via a transmitter, a data block and the header block; and

transmitting a special frame prior to the header block, if a number of bytes in the header block is greater than a threshold.

28. The method of claim 27 , wherein the method comprises generating the checksum according to a partial checksum.

29. The method of claim 27 , wherein the method comprises generating the checksum according to a baseline header field.

30. The method of claim 27 , wherein the method comprises transmitting a special frame prior to the data block, if a number of bytes in the data block is greater than a threshold.

31. The method of claim 27 , wherein the method comprises:

executing a child partition; and

sending outbound traffic from the child partition directly to the transmitter.

32. The method of claim 27 , wherein the checksum seed is generated by a processor.

33. The method of claim 27 , wherein the checksum seed is one of a plurality of pre-determined numbers.

34. The method of claim 27 , wherein the method comprises generating the checksum by adding a partial checksum to a checksum of a non-baseline field.

35. A system comprising:

a transmitter configured to transmit a data block and a header block, wherein:

a checksum seed of the header block is generated such that a checksum of the header block, generated according to the checksum seed, is equal to zero, and

the transmitter is configured to transmit a special frame prior to the data block, if a number of bytes in the data block is greater than a threshold.

36. The system of claim 35 , wherein a processor is configured to use a partial checksum to generate the checksum.

37. The system of claim 35 , wherein a processor is configured to generate the checksum according to a baseline header field.

38. The system of claim 35 , wherein a processor is configured to:

execute a child partition on the processor; and

send outbound traffic from the child partition directly to the transmitter.

39. The system of claim 35 , wherein the checksum seed is generated by a processor.

40. The system of claim 35 , wherein the checksum seed is one of a plurality of pre-determined numbers.

41. The system of claim 35 , wherein the checksum is generated by adding a partial checksum to a checksum of a non-baseline field.

42. A method comprising:

generating a checksum seed of a header block such that a checksum of the header block, generated according to the checksum seed, is equal to zero;

communicating, via a transmitter, a data block and the header block; and

transmitting a special frame prior to the data block, if a number of bytes in the data block is greater than a threshold.

43. The method of claim 42 , wherein the method comprises generating the checksum according to a partial checksum.

44. The method of claim 42 , wherein the method comprises generating the checksum according to a baseline header field.

45. The method of claim 42 , wherein the method comprises:

executing a child partition; and

sending outbound traffic from the child partition directly to the transmitter.

46. The method of claim 42 , wherein the checksum seed is generated by a processor.

47. The method of claim 42 , wherein the checksum seed is one of a plurality of pre-determined numbers.

48. The method of claim 42 , wherein the method comprises generating the checksum by adding a partial checksum to a checksum of a non-baseline field.

49. A system comprising:

a transmitter configured to transmit a data block and a header block, wherein a checksum seed of the header block is generated such that a checksum of the header block, generated according to the checksum seed, is equal to zero; and

a processor configured to:

execute a child partition on the processor; and

send outbound traffic from the child partition directly to the transmitter.

50. The system of claim 49 , wherein a processor is configured to use a partial checksum to generate the checksum.

51. The system of claim 49 , wherein a processor is configured to generate the checksum according to a baseline header field.

52. The system of claim 49 , wherein the checksum seed is generated by a processor.

53. The system of claim 49 , wherein the checksum seed is one of a plurality of pre-determined numbers.

54. The system of claim 49 , wherein the checksum is generated by adding a partial checksum to a checksum of a non-baseline field.

55. A method comprising:

generating a checksum seed of a header block such that a checksum of the header block, generated according to the checksum seed, is equal to zero;

communicating, via a transmitter, a data block and the header block, executing a child partition; and

sending outbound traffic from the child partition directly to the transmitter.

56. The method of claim 55 , wherein the method comprises generating the checksum according to a partial checksum.

57. The method of claim 55 , wherein the method comprises generating the checksum according to a baseline header field.

58. The method of claim 55 , wherein the checksum seed is generated by a processor.

59. The method of claim 55 , wherein the checksum seed is one of a plurality of pre-determined numbers.

60. The method of claim 55 , wherein the method comprises generating the checksum by adding a partial checksum to a checksum of a non-baseline field.

61. A system comprising:

a transmitter configured to transmit a data block and a header block, wherein:

a checksum seed of the header block is generated such that a checksum of the header block, generated according to the checksum seed, is equal to zero, and

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

62. The system of claim 61 , wherein a processor is configured to use a partial checksum to generate the checksum.

63. The system of claim 61 , wherein a processor is configured to generate the checksum according to a baseline header field.

64. The system of claim 61 , wherein the checksum seed is generated by a processor.

65. The system of claim 61 , wherein the checksum seed is one of a plurality of pre-determined numbers.

66. A method comprising:

generating a checksum seed of a header block such that a checksum of the header block, generated according to the checksum seed, is equal to zero;

communicating, via a transmitter, a data block and the header block; and

generating the checksum by adding a partial checksum to a checksum of a non-baseline field.

67. The method of claim 66 , wherein the method comprises generating the checksum according to a partial checksum.

68. The method of claim 66 , wherein the method comprises generating the checksum according to a baseline header field.

69. The method of claim 66 , wherein the checksum seed is generated by a processor.

70. The method of claim 66 , wherein the checksum seed is one of a plurality of pre-determined numbers.

Continuity (5)
Continuation 17958480 · Oct 3, 2022
Continuation 17154459 · Jan 21, 2021
Continuation 16121942 · Sep 5, 2018
Provisional Application 62585047 · Nov 13, 2017
Related Publication 20240232005A1 · Jul 11, 2024
References Cited (38)
US 5761427A · Shah · 1998 [cited by examiner]
US 6345301B1 · Burns · 2002 [cited by examiner]
US 6487636B1 · Dolphin et al. · 2002 [cited by applicant]
US 6487689B1 · Chuah · 2002 [cited by examiner]
US 7447839B2 · Uppala · 2008 [cited by applicant]
US 7668162B1 · Albo · 2010 [cited by examiner]
US 7681072B1 · Gibson et al. · 2010 [cited by applicant]
US 7793146B1 · Gibson et al. · 2010 [cited by applicant]
US 7877511B1 · Berger et al. · 2011 [cited by applicant]
US 7889730B1 · Albo · 2011 [cited by examiner]
US 8347010B1 · Radovanovic · 2013 [cited by applicant]
US 8645749B2 · Reche · 2014 [cited by applicant]
US 8918478B2 · Ozzie et al. · 2014 [cited by applicant]
US 9087012B1 · Hayes et al. · 2015 [cited by applicant]
US 9448887B1 · Ben Dayan et al. · 2016 [cited by applicant]
US 9747162B2 · Ben Dayan et al. · 2017 [cited by applicant]
US 10936405B2 · Ben Dayan et al. · 2021 [cited by applicant]
US 20030115218A1 · Bobbitt et al. · 2003 [cited by applicant]
US 20040098415A1 · Bone et al. · 2004 [cited by applicant]
US 20050289152A1 · Earl et al. · 2005 [cited by applicant]
US 20070061542A1 · Uppala · 2007 [cited by applicant]
US 20070143261A1 · Uppala · 2007 [cited by applicant]
US 20070143311A1 · Uppala · 2007 [cited by applicant]
US 20090119541A1 · Inoue et al. · 2009 [cited by applicant]
US 20100199125A1 · Reche · 2010 [cited by applicant]
US 20110213994A1 · Thereska et al. · 2011 [cited by applicant]
US 20120210095A1 · Nellans et al. · 2012 [cited by applicant]
US 20140244897A1 · Goss et al. · 2014 [cited by applicant]
US 20140281280A1 · Goss et al. · 2014 [cited by applicant]
US 20150248366A1 · Bergsten et al. · 2015 [cited by applicant]
US 20150254088A1 · Chou et al. · 2015 [cited by applicant]
US 20150355971A1 · Becker-Szendy et al. · 2015 [cited by applicant]
US 20160246677A1 · Sangamkar et al. · 2016 [cited by applicant]
Int'l Search Report and Written Opinion Appln No. PCT/IB2016/001177 dated Dec. 2, 2016. [cited by applicant]
Int'l Preliminary Report on Patentability Appln No. PCT/IB2016/001177 dated Mar. 8, 2018. [cited by applicant]
Int'l Search Report and Written Opinion Appln No. PCT/IB2016/000996 dated Oct. 20, 2016. [cited by applicant]
Int'l Preliminary Report on Patentability Appln No. PCT/IB2016/000996 dated Jan. 2, 2018. [cited by applicant]
Extended European Search Report Appln No. 16817312.8-1217 dated Oct. 25, 2018. [cited by applicant]