Concurrent hashes and sub-hashes on data streams
View Patent ↗One embodiment of the present invention provides a system for performing concurrent hashing of packet streams. During operation, the system receives a stream of packets at a controller. The controller then identifies types and parameters for a plurality of different hashing operations based on a received packet. The controller further sends the packet concurrently to corresponding different hashing modules to produce different hash values, which can be used to facilitate packet forwarding.
1. A computer-executable method for performing concurrent hashing of packet streams, the method comprising:
receiving a stream of packets at a controller;
identifying by the controller types and parameters for a plurality of different hashing operations based on a received packet;
sending the packet concurrently to corresponding different hashing modules to produce different hash values, which can be used to facilitate packet forwarding;
receiving a status for the different hashing operations from the corresponding different hashing modules; and
scheduling hashing operations in a next cycle based on the received status for the different hashing operations.
2. The method of claim 1 , wherein a first of the plurality of hashing operations uses as input an intermediate state of a second hashing operation.
3. The method of claim 2 , wherein the first and second hashing operations are SipHash operations.
4. The method of claim 1 , wherein the plurality of different hashing operations include one or more of:
a SHA-2 hash;
a SHA-3 hash;
a SipHash; and
a Fowler-Noll-Vo (FNV) hash.
5. The method of claim 1 , further comprising:
receiving multiple packet streams in parallel into a plurality of corresponding controllers; and
cross-connecting a respective packet stream to an array of hashing modules, thereby facilitating concurrent multiple hashing operations for each of the multiple packet streams.
6. The method of claim 5 , further comprising:
in response to determining that the received status for a hashing operation indicates error or fault, discontinuing using the corresponding hashing module.
7. A non-transitory computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method, the method comprising:
receiving a stream of packets at a controller;
identifying by the controller types and parameters for a plurality of different hashing operations based on a received packet;
sending the packet concurrently to corresponding different hashing modules to produce different hash values, which can be used to facilitate packet forwarding;
receiving a status for the different hashing operations from the corresponding different hashing modules; and
scheduling hashing operations in a next cycle based on the received status for the different hashing operations.
8. The storage medium of claim 7 , wherein a first of the plurality of hashing operations uses as input an intermediate state of a second hashing operation.
9. The storage medium of claim 8 , wherein the first and second hashing operations are SipHash operations.
10. The storage medium of claim 7 , wherein the plurality of different hashing operations include one or more of:
a SHA-2 hash;
a SHA-3 hash;
a SipHash; and
a Fowler-Noll-Vo (FNV) hash.
11. The storage medium of claim 7 , wherein the method further comprises:
receiving multiple packet streams in parallel into a plurality of corresponding controllers; and
cross-connecting a respective packet stream to an array of hashing modules, thereby facilitating concurrent multiple hashing operations for each of the multiple packet streams.
12. The storage medium of claim 11 , wherein the method further comprises:
in response to determining that the received status for a hashing operation indicates error or fault, discontinuing using the corresponding hashing module.
13. A computer system for performing concurrent hashing of packet streams, the computer system comprising:
a processor;
a storage device coupled to the processor and storing instructions which when executed by the processor cause the processor to perform a method, the method comprising:
receiving a stream of packets at a controller;
identifying by the controller types and parameters for a plurality of different hashing operations based on a received packet;
sending the packet concurrently to corresponding different hashing modules to produce different hash values, which can be used to facilitate packet forwarding;
receiving a status for the different hashing operations from the corresponding different hashing modules; and
scheduling hashing operations in a next cycle based on the received status for the different hashing operations.
14. The computer system of claim 13 , wherein a first of the plurality of hashing operations uses as input an intermediate state of a second hashing operation.
15. The computer system of claim 14 , wherein the first and second hashing operations are SipHash operations.
16. The computer system of claim 13 , wherein the plurality of different hashing operations include one or more of:
a SHA-2 hash;
a SHA-3 hash;
a SipHash; and
a Fowler-Noll-Vo (FNV) hash.
17. The computer system of claim 13 , wherein the method further comprises:
receiving multiple packet streams in parallel into a plurality of corresponding controllers; and
cross-connecting a respective packet stream to an array of hashing modules, thereby facilitating concurrent multiple hashing operations for each of the multiple packet streams.
18. The computer system of claim 17 , wherein the method further comprises:
in response to determining that the received status for a hashing operation indicates error or fault, discontinuing using the corresponding hashing module.