Efficient Error Correction of Multi-Bit Errors
US-2015039976-A1 · Feb 5, 2015 · US
US9712460B1 · US · B1
| Field | Value |
|---|---|
| Publication number | US-9712460-B1 |
| Application number | US-201314010185-A |
| Country | US |
| Kind code | B1 |
| Filing date | Aug 26, 2013 |
| Priority date | Aug 26, 2013 |
| Publication date | Jul 18, 2017 |
| Grant date | Jul 18, 2017 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Embodiments are directed towards selecting a local port number for server side connections that hash to a same processor as a matching client side flow on a multiprocessor device using Receive Side Scaling (RSS) for the disaggregation hash. A hash of a flow key is computed with an initial port number. An exclusive-or (XOR) distance is computed to a desired hash, using least significant bits. An XOR is performed on a corrected pre-computed collision value, to transform the source port number to a value that hashes correctly with other elements within the flow key. The transformed source port number may then be inserted into network packets sent to a server device, such that the transformed source port number can be used in a returning RSS hash to again select the same processor.
Opening claim text (preview).
The invention claimed is: 1. A method for managing communications, the method comprising: receiving, at a Processing Unit (PU) within a plurality of PUs, a first network packet from a network interface controller (NIC) card that is configured to perform a Receive Side Scaling (RSS) hash to select the PU; generating a first flow key based on data within the first network packet; selecting an initial source port number; generating a second flow key using the initial source port number and source network address information internal to the PU; performing a first RSS hash on at least a portion of the first flow key, and a second RSS hash on at least a portion of the second flow key; determining a delta error between the first RSS hash and the second RSS hash; when the delta error is determined to be non-zero, performing actions including: using the delta error as an index to a swizzle table to identify a local port correction value that is based on an initialization vector, wherein the swizzle table is populated with local port correction values that are valid for initialization vectors employed for selecting initial source port numbers; performing an exclusive-or on the initial source port number and the local port correction value to generate a modified source port number; and generating network packets using the source network address information internal to the PU and the modified source port number, to ensure that a second network packet returning to the network device is hashed using the RSS in the NIC to select the same PU as having received the first network packet, wherein the modified source port number is employed to generate headers for the network packets; and when the delta error is determined to be zero, generating network packets using the source network address information internal to the PU and the initial source port number to ensure that the second network packet returning to the network device is hashed using the RSS in the NIC to select the same PU as having received the first network packet. 2. The method of claim 1 , wherein determining the delta error further comprises performing an exclusive-or on a defined number of least significant bits in the first RSS hash and the second RSS hash. 3. The method of claim 1 , wherein the initial source port number is a source port number associated with a client device sending the first network packet. 4. The method of claim 1 , wherein the NIC employs an indirection table that employs an index using a defined number of least significant bits of the RSS hash to select one of the PUs from within the plurality of PUs to send the network packet, the RSS hash being performed using the first flow key. 5. The method of claim 1 , wherein the first flow key and second flow key comprise a source Internet Protocol (IP) address, a destination IP address, a source port number, and a destination port number. 6. The method of claim 1 , wherein the generated network packets are forwarded to a server device within a plurality of server devices, selected in part based on a load balancing algorithm. 7. The method of claim 1 , wherein the initial source port number is selected randomly from a list of available port numbers. 8. A network device, comprising: at least one network interface controller (NIC) card configured to perform a Receive Side Scaling (RSS) hash to select a destination processor unit (PU) within the network device for network packets; and a plurality of processor units (PUs), each PU having at least one processor that is configured to perform actions, including: receiving a first network packet through the at least one NIC card; generating a first flow key based on data within the first network packet; selecting an initial source port number; generating a second flow key using the initial source port number and source network address information internal to the PU; performing a first RSS hash on at least a portion of the first flow key, and a second RSS hash on at least a portion of the second flow key; determining a delta error between the first RSS hash and the second RSS hash; when the delta error is determined to be non-zero, performing actions including: using the delta error as an index to a swizzle table to identify a local port correction value that is based on an initialization vector, wherein the swizzle table is populated with local port correction values that are valid for initialization vectors employed for selecting initial source port numbers; performing an exclusive-or on the initial source port number and the local port correction value to generate a modified source port number; and generating network packets using the source network address information internal to the PU and the modified source port number, to ensure that a second network packet returning to the network device is hashed using the RSS in the NIC to select the same PU as having received the first network packet, wherein the modified source port number is employed to generate headers for the network packets; and when the delta error is determined to be zero, generating network packets using the source network address information internal to the PU and the initial source port number to ensure that the second network packet returning to the network device is hashed using the RSS in the NIC to select the same PU as having received the first network packet. 9. The network device of claim 8 , wherein determining the delta error further comprises performing an exclusive-or on a defined number of least significant bits in the first RSS hash and the second RSS hash. 10. The network device of claim 8 , wherein the initial source port number is a source port number associated with a client device sending the first network packet. 11. The network device of claim 8 , wherein the at least one NIC employs an indirection table that employs an index using a defined number of least significant bits of the RSS hash to select one of the PUs from within the plurality of PUs to send the network packet, the RSS hash being performed using the first flow key. 12. The network device of claim 8 , wherein the first flow key and second flow key comprise a source Internet Protocol (IP) address, a destination IP address, a source port number, and a destination port number. 13. The network device of claim 8 , wherein the generated network packets are forwarded to a server device within a plurality of server devices, selected in part based on a load balancing algorithm. 14. A non-transitory computer readable storage device, having computer-executable instructions stored thereon, that in response to execution by a processor unit (PU) within a plurality of PUs with a network device, cause the PU to perform operations, comprising: receiving, at the Processing Unit (PU) within the plurality of PUs, a first network packet through from a network interface controller (NIC) card that is configured to perform a Receive Side Scaling (RSS) hash to select the PU; generating a first flow key based on data within the first network packet; selecting an initial source port number; generating a second flow key using the initial source port number and source network address information internal to the PU; performing a first RSS hash on at least a portion of the first flow key, and a second RSS hash on at least a portion of the second flow key; determining a delta error between the first RSS hash and the second RSS hash; when the delta error is determined to be non-zero, performing actions including: using the delta error as an index to a swizzle table to identify a local port correction value that is based on an i
by embedding flow control information in regular packets, e.g. piggybacking · CPC title
using establishment or release of connections between ports · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.