Matching port pick for RSS disaggregation hashing

US9712460B1 · US · B1

Patent metadata
FieldValue
Publication numberUS-9712460-B1
Application numberUS-201314010185-A
CountryUS
Kind codeB1
Filing dateAug 26, 2013
Priority dateAug 26, 2013
Publication dateJul 18, 2017
Grant dateJul 18, 2017

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

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.

First claim

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

Assignees

Inventors

Classifications

  • by embedding flow control information in regular packets, e.g. piggybacking · CPC title

  • H04L49/253Primary

    using establishment or release of connections between ports · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9712460B1 cover?
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…
Who is the assignee on this patent?
F5 Networks Inc
What technology area does this patent fall under?
Primary CPC classification H04L49/253. Mapped technology areas include Electricity.
When was this patent published?
Publication date Tue Jul 18 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (B1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 1 related publication on this page (citations in our corpus or others sharing the same primary CPC).