IP Library Granted Patent US 12,248,770
Granted Patent B1
US 12,248,770 · App. 17/955,317 · Granted Mar 11, 2025

Data processing and transmission using hardware serialization and deserialization functions

Inventors: Brian Arnold Petersen (San Francisco, CA); Joseph Andonieh (Aurora, CA); Roy T. Myers, Jr. (Morgan City, CA)
Assignee: Ethernovia Inc.
G06F8/51
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,248,770
App. No.
17/955,317
Granted
Mar 11, 2025
Kind
B1
Abstract

Various embodiments described herein support or provide for data communication using hardware serialization and deserialization functions, such as identifying definition data that defines structured data for transmission from a first electronic device to a second electronic device; generating a description file based on the definition data and using a compiler to generate, based on the description file, a plurality of hardware parameters and to generate source code defining a class that incorporates the structured data.

Claims (80)

1. A method comprising:

identifying, by a hardware processor, definition data that defines structured data for transmission from a first electronic device to a second electronic device;

generating, by the hardware processor, a description file based on the definition data, the description file comprising a set of variables that describes the structured data;

using, by the hardware processor, a compiler to generate a set of hardware parameters based on the description file and to generate source code based on the description file, the source code defining a class that incorporates the structured data, the class comprising a definition of a serialization function that is configured to cause the first electronic device to use data communication hardware of the first electronic device to serialize data stored in the class for transmitting to the second electronic device, the data communication hardware of the first electronic device being separate from a hardware processor of the first electronic device; and

causing, by the hardware processor, the data communication hardware of the first electronic device to perform operations comprising:

using the serialization function included in the class to serialize the data stored in the class to generate a serialized byte string based on the set of hardware parameters, the data stored in the class comprising a set of messages each comprising at least one variable, the serializing comprising:

for each individual message of the set of messages, encoding an individual length value into the serialized byte string included by the individual message, the individual length value representing a length of data content associated with the individual message;

generating one or more data packets based on the serialized byte string;

appending one or more headers to the one or more data packets, the one or more headers including a set of network parameters; and

transmitting, via a network coupled to the first electronic device, the one or more headers and the one or more data packets to the second electronic device based on the set of network parameters.

2. The method of claim 1 , wherein the operations comprise:

generating a new instance of the class using the source code, the generating of the new instance of the class comprising populating one or more instance variables in the class with values to be serialized.

3. The method of claim 1 , wherein the using of the serialization function included in the class to serialize the data stored in the class comprising:

calling the serialization function of a new instance of the class to cause the data communication hardware of the first electronic device to serialize, based on the set of variables, the set of hardware parameters, and the data stored in the class.

4. The method of claim 1 , wherein the set of hardware parameters comprises a pointer that identifies a location of a new instance of the class in a memory of the first electronic device and a set of identifiers of message types.

5. The method of claim 1 , wherein the set of hardware parameters is a first set of hardware parameters, the method further comprising:

sending, from the first electronic device, a request to the second electronic device to coordinate the transmission of a new instance of the class; and

in response to the request, receiving from the second electronic device, a second set of hardware parameters associated with the second electronic device, the using of the serialization function to serialize the data stored in the class is based further on the second set of hardware parameters associated with the second electronic device.

6. The method of claim 5 , wherein the second set of hardware parameters associated with the second electronic device comprises a virtual memory location, a memory size, and a plurality of message types.

7. The method of claim 1 , wherein the serializing of the data comprises:

determining the individual length value for each of the set of messages.

8. The method of claim 7 , wherein the set of messages comprises at least a parent message and one or more child messages, and wherein a select length value of the parent message is determined subsequent to one or more length values of the one or more child messages is determined.

9. The method of claim 1 , wherein the data communication hardware of the first electronic device comprises an accelerated network interface controller of the first electronic device.

10. A system comprising:

a memory storing instructions; and

one or more hardware processors communicatively coupled to the memory and configured by the instructions to perform operations comprising:

identifying definition data that defines structured data for transmission from a first electronic device to a second electronic device;

generating a description file based on the definition data, the description file comprising a set of variables that describes the structured data;

using a compiler to generate a set of hardware parameters based on the description file and to generate source code based on the description file, the source code defining a class that incorporates the structured data, the class comprising a definition of a serialization function that is configured to cause the first electronic device to use data communication hardware of the first electronic device to serialize data stored in the class for transmitting to the second electronic device, the data communication hardware of the first electronic device being separate from the hardware processor of the first electronic device; and

causing the data communication hardware of the first electronic device to perform operations comprising:

using the serialization function included in the class to serialize the data stored in the class to generate a serialized byte string based on the set of hardware parameters, the data stored in the class comprising a set of messages each comprising at least one variable, the serializing of the data comprising:

for each individual message of the set of messages, encoding an individual length value into the serialized byte string included by the individual message, the individual length value representing a length of data content associated with the individual message;

generating one or more data packets based on the serialized byte string;

appending one or more headers to the one or more data packets, the one or more headers including a set of network parameters; and

transmitting, via a network coupled to the first electronic device, the one or more headers and the one or more data packets to the second electronic device based on the set of network parameters.

11. The system of claim 10 , wherein the causing of the data communication hardware to perform operations comprising:

generating a new instance of the class using the source code, the generating of the new instance of the class comprising populating one or more instance variables in the class with values to be serialized.

12. The system of claim 10 , wherein the using of the serialization function included in the class to serialize the data stored in the class comprising:

calling the serialization function of a new instance of the class to cause the data communication hardware of the first electronic device to serialize, based on the set of variables, the set of hardware parameters, and the data stored in the class.

13. The system of claim 10 , wherein the set of hardware parameters is a first set of hardware parameters, and wherein the operations further comprise:

sending, from the first electronic device, a request to the second electronic device to coordinate the transmission of a new instance of the class; and

in response to the request, receiving from the second electronic device, a second set of hardware parameters associated with the second electronic device, the using of the serialization function to serialize the data stored in the class is based further on the second set of hardware parameters associated with the second electronic device.

14. The system of claim 13 , wherein the second plurality set of hardware parameters associated with the second electronic device comprises a virtual memory location, a memory size, and a plurality of message types.

15. A non-transitory computer-readable medium comprising instructions that, when executed by a hardware processor of a first electronic device, cause the first electronic device to perform operations comprising:

identifying definition data that defines structured data for transmission from the first electronic device to a second electronic device;

generating a description file based on the definition data, the description file comprising a set of variables that describes the structured data;

using a compiler to generate a set of hardware parameters based on the description file and to generate source code based on the description file, the source code defining a class that incorporates the structured data, the class comprising a definition of a serialization function that is configured to cause the first electronic device to use data communication hardware of the first electronic device to serialize data stored in the class for transmitting to the second electronic device, the data communication hardware of the first electronic device being separate from the hardware processor of the first electronic device; and

causing the data communication hardware of the first electronic device to perform operations comprising:

using the serialization function included in the class to serialize the data stored in the class to generate a serialized byte string based on the set of hardware parameters, the data stored in the class comprising a set of messages each comprising at least one variable, the serializing of the data comprising:

for each individual message of the set of messages, encoding an individual length value into the serialized byte string included by the individual message, the individual length value representing a length of data content associated with the individual message;

generating one or more data packets based on the serialized byte string;

appending one or more headers to the one or more data packets, the one or more headers including a set of network parameters; and

transmitting, via a network coupled to the first electronic device, the one or more headers and the one or more data packets to the second electronic device based on the set of network parameters.

16. The non-transitory computer-readable medium of claim 15 , wherein the set of hardware parameters comprises a pointer that identifies a location of a new instance of the class in a memory of the first electronic device and a set of identifiers of message types.

17. A method comprising:

identifying, by a hardware processor, source code that defines a class that incorporates structured data, the class comprising a definition of a serialization function that is configured to cause a first electronic device to use data communication hardware of the first electronic device to serialize data stored in the class for transmitting to a second electronic device;

generating, by the hardware processor, a new instance of the class using the source code, the generating of the new instance of the class including populating instance variables in the class with values to be serialized;

calling, by the hardware processor, the serialization function of the new instance of the class to cause the data communication hardware of the first electronic device to serialize the data stored in the new instance of the class to generate a serialized byte string based on a set of hardware parameters, the data stored in the new instance of the class comprising a set of messages each comprising at least one variable, the serializing of the data comprising:

for each individual message of the set of messages, encoding an individual length value into the serialized byte string included by the individual message, the individual length value representing a length of data content associated with the individual message;

generating one or more data packets based on the serialized byte string;

appending one or more headers to the one or more data packets, the one or more headers including a set of network parameters; and

transmitting, via a network coupled to the first electronic device, the one or more headers and the one or more data packets to the second electronic device based on the set of network parameters.

18. A system comprising:

a memory storing instructions; and

one or more hardware processors communicatively coupled to the memory and configured by the instructions to perform operations comprising:

identifying source code that defines a class that incorporates structured data, the class comprising a definition of a serialization function that is configured to cause a first electronic device to use data communication hardware of the first electronic device to serialize data stored in the class for transmitting to a second electronic device;

generating a new instance of the class using the source code, the generating of the new instance of the class including populating instance variables in the class with values to be serialized;

calling the serialization function of the new instance of the class to cause the data communication hardware of the first electronic device to serialize the data stored in the new instance of the class to generate a serialized byte string based on a set of hardware parameters, the data stored in the new instance of the class comprising a set of messages each comprising at least one variable, the serializing of the data comprising:

for each individual message of the set of messages, encoding an individual length value into the serialized byte string included by the individual message, the individual length value representing a length of data content associated with the individual message;

generating one or more data packets based on the serialized byte string;

appending one or more headers to the one or more data packets, the one or more headers including a set of network parameters; and

transmitting, via a network coupled to the first electronic device, the one or more headers and the one or more data packets to the second electronic device based on the set of network parameters.

19. A non-transitory computer-readable medium comprising instructions that, when executed by a hardware processor of a device, cause the device to perform operations comprising:

identifying source code that defines a class that incorporates structured data, the class comprising a definition of a serialization function that is configured to cause a first electronic device to use data communication hardware of the first electronic device to serialize data stored in the class for transmitting to a second electronic device;

generating, by a processor, a new instance of the class using the source code, the generating of the new instance of the class including populating instance variables in the class with values to be serialized;

calling, by a processor, the serialization function of the new instance of the class to cause the data communication hardware of the first electronic device to serialize the data stored in the new instance of the class to generate a serialized byte string based on a set of hardware parameters, the data stored in the new instance of the class comprising a set of messages each comprising at least one variable, the serializing of the data comprising:

for each individual message of the set of messages, encoding an individual length value into the serialized byte string included by the individual message, the individual length value representing a length of data content associated with the individual message;

generating one or more data packets based on the serialized byte string;

appending one or more headers to the one or more data packets, the one or more headers including a set of network parameters; and

transmitting, via a network coupled to the first electronic device, the one or more headers and the one or more data packets to the second electronic device based on the set of network parameters.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 11, 2022
From: PETERSEN, BRIAN ARNOLD; ANDONIEH, JOSEPH; MYERS, ROY T., JR.
To: ETHERNOVIA INC.
Reel/Frame 061739/0013 →
Continuity (1)
Provisional Application 63261825 · Sep 29, 2021
References Cited (40)
US 6636511B1 · Roy et al. · 2003 [cited by applicant]
US 7161937B1 · Dunning et al. · 2007 [cited by applicant]
US 7248573B2 · Harrison et al. · 2007 [cited by applicant]
US 7366267B1 · Lee et al. · 2008 [cited by applicant]
US 9087138B2 · Zhou · 2015 [cited by applicant]
US 9723091B1 · Krock et al. · 2017 [cited by applicant]
US 10333731B2 · Ebrom · 2019 [cited by examiner]
US 11172054B2 · Hermesh et al. · 2021 [cited by applicant]
US 12008259B1 · Petersen · 2024 [cited by examiner]
US 20080114842A1 · Ellis et al. · 2008 [cited by applicant]
US 20110137991A1 · Russell · 2011 [cited by applicant]
US 20120120960A1 · Nishioka · 2012 [cited by applicant]
US 20120216216A1 · Lopez Taboada · 2012 [cited by examiner]
US 20160100027A1 · Haghighi · 2016 [cited by applicant]
US 20160179595A1 · Wong et al. · 2016 [cited by applicant]
US 20170163662A1 · Zhou et al. · 2017 [cited by applicant]
US 20170318031A1 · Zhou et al. · 2017 [cited by applicant]
US 20180054214A1 · Takahashi · 2018 [cited by applicant]
US 20190149751A1 · Wise · 2019 [cited by applicant]
US 20190278701A1 · Enz et al. · 2019 [cited by applicant]
US 20190347022A1 · Thiel et al. · 2019 [cited by applicant]
US 20190354310A1 · Tsirkin · 2019 [cited by applicant]
US 20210117360A1 · Kutch et al. · 2021 [cited by applicant]
CN 112712842 · 2021 [cited by applicant]
EP 3012740 · 2016 [cited by applicant]
WO 2005052754 · 2005 [cited by applicant]
Giuseppe, “Custom Struct Serialization for Networking in Unreal Engine”, 2016, retrieved from http://www.aclockworkberry.com/custom-struct-serialization-for-networking-in-unreal-engine/, 8 pages. (Year: 2016). [cited by examiner]
Radosław Sokol, “Serialization of data structures in the C++ programming language using the reflection information”, 2020, retrieved from https://web.archive.org/web/20200710005734/https://dspace5.zcu.cz/bitstream/11025… [cited by examiner]
Arslan et al., , “Nano Transport: A Low-Latency, Programmable Transport Layer for NICs”, Sep. 2021, retrieved from https://web.stanford.edu/˜sarslan/files/ , Stanford University, 14 pages. (Year: 2021). [cited by examiner]
Ibanez et al., “The nanoPU: A Nanosecond Network Stack for Datacenters”, Jul. 2021, USENIX Association, pp. 239-256. (Year: 2021). [cited by examiner]
“U.S. Appl. No. 17/955,324, Non Final Office Action mailed Dec. 7, 2023”, 15 pgs. [cited by applicant]
“U.S. Appl. No. 17/955,324, Response filed Dec. 29, 2023 to Non Final Office Action mailed Dec. 7, 2023”, 14 pgs. [cited by applicant]
“U.S. Appl. No. 17/955,324, Examiner Interview Summary mailed Jan. 2, 2024”, 2 pgs. [cited by applicant]
“U.S. Appl. No. 17/955,324, Notice of Allowance mailed Feb. 8, 2024”, 8 pgs. [cited by applicant]
“U.S. Appl. No. 17/955,324, 312 Amendment filed Feb. 27, 2024”, 6 pgs. [cited by applicant]
“U.S. Appl. No. 17/955,324, PTO Response to Rule 312 Communication mailed Mar. 21, 2024”, 2 pgs. [cited by applicant]
Hazelcase, “What Is Deserialization?”, (Jun. 14, 2021), 1-3. [cited by applicant]
Microsoft, “Computer Dictionary”, Fifth Edition, (2002), p. 122, 329, and 390. [cited by applicant]
“U.S. Appl. No. 17/955,315, Non Final Office Action mailed Oct. 18, 2024”, 10 pgs. [cited by applicant]
Tanenbaum, Andrew S., “Structured Computer Organization”, Prentice-Hall, Inc., Englewood Cliffs, New Jersey, 2nd Edition, (1984), 10-12. [cited by applicant]