Lock free flow learning in a network device

US2016285753A1 · US · A1

Patent metadata
FieldValue
Publication numberUS-2016285753-A1
Application numberUS-201514671751-A
CountryUS
Kind codeA1
Filing dateMar 27, 2015
Priority dateMar 27, 2015
Publication dateSep 29, 2016
Grant date

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.

A method in a network device of flow learning in a network device are provided. The method comprises determining whether the flow of a packet is being learnt by the network device; in response to determining that the flow is already being learnt, forwarding the packet without sending a request to insert a new entry in one of the set of one or more forwarding tables; and in response to determining that the flow is not yet being learnt, performing: 1) updating a retrieved flow learning element to include a second portion of a flow identification, 2) sending a request to store the updated flow learning element into a flow learning table, and 3) in response to determining that the updated flow learning element is stored, sending a request to insert a new entry associated with the flow of the packet in a forwarding table.

First claim

Opening claim text (preview).

What is claimed is: 1 . A method of flow learning in a network device, the method comprising: receiving ( 210 ), by the network device, a packet of a flow of packets; determining ( 240 ), based on an identification of the flow of the packet, whether the packet has a corresponding forwarding table entry within a set of one or more forwarding tables of the network device; responsive to determining that the packet does not have any corresponding forwarding table entry, retrieving ( 250 ) a flow learning element from a flow learning table using a first portion of the flow identification; determining whether the flow of the packet is being learnt by the network device, based at least on a second portion of the flow identification for the received packet matching a sub-element of the retrieved flow learning element; responsive to determining that the flow is being learnt, forwarding ( 270 ) the packet without sending a request to insert a new entry in one of the set of one or more forwarding tables; and responsive to determining that the flow is not yet being learnt, performing the following: updating ( 310 ) the retrieved flow learning element to include the second portion of the flow identification, sending ( 320 ) a request to store the updated flow learning element into the flow learning table, and responsive to determining that the updated flow learning element is stored in the flow learning table, sending ( 340 ) a request to insert a new entry associated with the flow of the packet in a forwarding table from the set of one or more forwarding tables. 2 . The method of claim 1 , further comprising responsive to determining that the updated flow learning element is not stored in the flow learning table, forwarding the packet without sending a request to insert a new entry associated with the flow of the packet in one of the set of one or more forwarding tables. 3 . The method of claim 1 , further comprising mapping ( 220 ) the packet to a packet processing thread. 4 . The method of claim 1 , wherein the method further comprises generating ( 230 ) the flow identification for the received packet based on a key associated with the flow of packets. 5 . The method of claim 4 , wherein generating the flow identification includes generating a hash value using a hashing function. 6 . The method of claim 5 , wherein the first portion of the flow identification is a first portion of the hash value, and the second portion of the flow identification is a second portion of the hash value that is disjoint from the first portion. 7 . The method of claim 1 , wherein the sub-element of the flow learning element is a first sub-element and wherein the updating the retrieved flow learning element further comprises: updating ( 410 ) the first sub-element of the flow learning element with the second portion of the hash value; and updating ( 420 ) a second sub-element of the flow learning element to indicate that the flow associated with the packet is being learnt. 8 . The method of claim 1 , wherein determining that the updated flow learning element is stored in the flow learning table comprises determining that the element has not been updated and stored for another packet of the same flow after being retrieved from the flow learning table for the packet. 9 . The method of claim 1 , wherein forwarding the packet includes one of dropping the packet, and flooding the packet. 10 . The method of claim 1 , wherein sending a request to store the updated flow learning element is performed with an atomic compare and swap instruction. 11 . A non-transitory machine-readable storage medium ( 618 , 648 ) that provides instructions, which when executed by a processor ( 612 , 642 ) of a network device, cause said processor to perform operations comprising: receiving ( 210 ), by the network device, a packet of a flow of packets; determining ( 240 ), based on an identification of the flow, whether the packet has a corresponding forwarding table entry within a set of one or more forwarding tables of the network device; responsive to determining that the packet does not have any corresponding forwarding table entry, retrieving ( 250 ) a flow learning element from a flow learning table using a first portion of the flow identification; determining whether the flow of the packet is being learnt by the network device, based at least on a second portion of the flow identification for the received packet matching a sub-element of the retrieved flow learning element; responsive to determining that the flow is being learnt, forwarding ( 270 ) the packet without sending a request to insert a new entry in one of the set of one or more forwarding tables; and responsive to determining that the flow is not yet being learnt performing the following: updating ( 310 ) the retrieved flow learning element to include the second portion of the flow identification, sending ( 320 ) a request to store the updated flow learning element into the flow learning table, and responsive to determining that the updated flow learning element is stored in the flow learning table, sending ( 340 ) a request to insert a new entry associated with the flow of the packet in a forwarding table from the set of one or more forwarding tables. 12 . The non-transitory machine-readable storage medium ( 618 , 648 ) of claim 11 , wherein the operations further comprise responsive to determining that the updated flow learning element is not stored in the flow learning table, forwarding the packet without sending a request to insert a new entry associated with the flow of the packet in one of the set of one or more forwarding tables. 13 . The non-transitory machine-readable storage medium ( 618 , 648 ) of claim 11 , wherein the operations further comprise mapping ( 220 ) the packet to a packet processing thread. 14 . The non-transitory machine-readable storage medium ( 618 , 648 ) of claim 11 , wherein the operations further comprise generating ( 230 ) the flow identification for the received packet based on a key associated with the flow of packets. 15 . The non-transitory machine-readable storage medium ( 618 , 648 ) of claim 14 , wherein generating the flow identification includes generating a hash value using a hashing function. 16 . The non-transitory machine-readable storage medium ( 618 , 648 ) of claim 15 , wherein the first portion of the flow identification is a first portion of the hash value, and the second portion of the flow identification is a second portion of the hash value that is disjoint from the first portion. 17 . The non-transitory machine-readable storage medium ( 618 , 648 ) of claim 11 , wherein the sub-element of the flow learning element is a first sub-element and wherein the updating the retrieved flow learning element further comprises: updating ( 410 ) the first sub-element of the flow learning element with the second portion of the hash value; and updating ( 420 ) a second sub-element of the flow learning element to indicate that the flow associated with the packet is being learnt. 18 . The non-transitory machine-readable storage medium ( 618 , 648 ) of claim 11 , wherein determining that the updated flow learning element is stored in the flow learning table comprises determining that the element has not been updated and stored for another packet of the same flow after being retrieved from the flow learning table for the packet. 19 . The non-transitory machine-readable storage medium ( 618 , 648 ) of claim 11 , wherein forwar

Assignees

Inventors

Classifications

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 US2016285753A1 cover?
A method in a network device of flow learning in a network device are provided. The method comprises determining whether the flow of a packet is being learnt by the network device; in response to determining that the flow is already being learnt, forwarding the packet without sending a request to insert a new entry in one of the set of one or more forwarding tables; and in response to determini…
Who is the assignee on this patent?
Ericsson Telefon Ab L M
What technology area does this patent fall under?
Primary CPC classification H04L45/38. Mapped technology areas include Electricity.
When was this patent published?
Publication date Thu Sep 29 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (A1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).