IP Library Granted Patent US 9,866,491
Granted Patent B2
US 9,866,491 · App. 14/135,792 · Granted Jan 9, 2018

Method and system for avoiding new flow packet flood from data plane to control plane of a network device

Inventors: Denis A. Crasta (San Jose, CA); Srinivasa R. Addepalli (San Jose, CA); Rekesh John (Livermore, CA)
Assignee: NXP USA, Inc.
H04L47/2441H04L47/2483
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 9,866,491
App. No.
14/135,792
Granted
Jan 9, 2018
Kind
B2
Abstract

A mechanism is provided by which communication is reduced between a data plane of a network device and a control plane associated with that network device upon introduction of a new flow. A holding table is provided for every active flow table in the data plane. The holding table holds flow contexts for new flows not found in the associated active flow table, while awaiting flow information from the control plane. Each flow context includes a queue of subsequent data packets associated with the flow, which are held from the control plane pending receipt of the flow information from the control plane. A timeout mechanism compensates for packet loss between the network device and control plane. When the data plane receives the flow information from the control plane, the data plane then processes all the queued packets, deletes the flow context, and enters the data into an associated flow table.

Claims (76)

1. A system for transmitting a data packet in a data network, the system comprising:

a network controller configured to provide data flow information to one or more network devices; and

a network device, coupled to the network controller, wherein the network device further comprises

a data port, coupled to a data network, and configured to receive a data packet comprising information identifying a data flow associated with the data packet,

a flow table memory storing one or more flow tables and one or more holding tables,

a first processor, coupled to the data port, and configured to

determine whether the information identifying the data flow associated with the data packet matches an entry in a flow table stored in the flow table memory,

provide the data packet to a second processor if the information identifying the data flow associated with the data packet fails to match any entry in any flow table stored in the flow table memory, and

the second processor configured to

determine whether the information identifying the data flow associated with the data packet matches an entry in a holding table stored in the flow table memory,

transmit the data packet to the network controller, if the information identifying the data flow associated with the data packet fails to match any entry in the holding table, wherein the holding table comprises identifying information associated with data packets previously transmitted to the network controllers, and

store the data packet in a flow context queue associated with the matching entry in the holding table, if the information identifying the data flow associated with the data packet matches an entry in the holding table, wherein

the flow context queue is stored in the flow table memory, and

the flow context queue comprises data packets awaiting processing instructions for a flow corresponding to each data packet.

2. The system of claim 1 wherein the second processor is further configured to:

store a matching flow context in the holding table wherein the matching flow context matches the information identifying the data flow associated with the data packet, if the information identifying the data flow associated with the data packet fails to match any entry in the holding table; and

store the data packet in association with a flow context matching the information identifying the data flow associated with the data packet.

3. The system of claim 2 wherein the second processor is further configured to:

start a life timer associated with the data flow associated with the data packet in response to storing the matching flow context in the holding table; and

store life timer information in a timer information table memory coupled to the second processor.

4. The system of claim 3 wherein the second processor is further configured to:

delete the matching flow context from the holding table, if the life timer associated with the data flow associated with the data packet expires prior to receiving, from the network controller, a response associated with the data flow.

5. The system of claim 2 wherein the second processor is further configured to:

start a reminder timer associated with the data flow associated with the data packet in response to transmitting the data packet to the network controller; and

transmit a second data packet associated with the data flow associated with the data packet in response to the reminder timer expiring prior to receiving, from the controller, a response associated with the data flow.

6. The system of claim 2 , wherein

the data port of the network device is configured to receive a second data packet comprising information identifying the data flow associated with the data packet; and

the second processor is further configured to

determine whether the information identifying the data flow associated with the second data packet matches an entry in the holding table stored in the flow table memory, and

store the second data packet in a flow context queue associated with the matching entry in the holding table, wherein the flow context queue is stored in the flow table memory.

7. The system of claim 6 wherein the second processor is further configured to:

check if a reminder timer associated with the data flow associated with the second data packet in response to transmitting the data packet to the network controller has expired; and

transmit the second data packet to the network controller in response to the reminder timer expiring.

8. The system of claim 2 wherein the network device further comprises:

a second data port, communicatively coupled to a control network, and configured to transmit the data packet to the network controller over the control network.

9. The system of claim 8 wherein the network device further comprises:

a third data port, coupled to the control network, and configured to receive a flow offload from the network controller;

a third processor, coupled to the third data port and the flow table memory, and configured to

add a flow entry to a corresponding flow table, wherein the flow entry includes information within the flow offload, and

remove the matching flow context associated with the flow offload from the holding table.

10. The system of claim 9 wherein the network device is further configured to:

process the data packet using the flow entry; and

process any additional data packets associated with the data flow associated with the data packet using the flow entry, wherein the additional data packets were stored in a flow context queue associated with the data flow associated with the data packet.

11. A method for determining a flow for a data packet of a stream of packets received at a network device, the method comprising:

comparing, by a first processor, information identifying a data flow associated with the data packet with entries stored in one or more flow tables stored in a flow table memory of a data switch; and

if there are no matching entries stored in the one or more flow tables for the information identifying the data flow associated with the data packet, then

comparing, by a second processor, the information identifying the data flow associated with the data packet with entries stored in a holding table stored in the flow table memory,

transmitting, using a rate limiting interface, the data packet from the network device to a network controller, if the information identifying the data flow associated with the data packet fails to match any entry in the holding table, wherein

the holding table comprises identifying information for data flows associated with previously received data packets that have already been transmitted to the network controller, and

storing, by the second processor, the data packet in a flow context queue associated with the matching entry in the holding table, if the information identifying the data flow associated with the data packet matches an entry in the holding table, wherein

the flow context queue is stored in the flow table memory, and

the flow context queue comprises data packets awaiting processing instructions for a flow corresponding to each data packet.

12. The method of claim 11 further comprising:

storing a matching flow context entry in the holding table wherein the matching flow context entry comprises information matching the information identifying the data flow associated with the data packet, if the information identifying the data flow associated with the data packet fails to match any entry in the holding table; and

storing the data packet in association with a flow context matching the information identifying the data flow associated with the data packet.

13. The method of claim 12 further comprising:

starting a life timer associated with the data flow associated with the data packet in response to storing the matching flow context in the holding table; and

storing information associated with the life timer in a timer table memory.

14. The method of claim 13 further comprising:

deleting the matching flow context entry from the holding table if the life timer associated with the data flow associated with the data packet expires prior to receiving, at the network device from the network controller, a response associated with the data flow.

15. The method of claim 13 further comprising:

starting a reminder timer associated with the data flow associated with the data packet in response to transmitting the data packet to the network controller; and

transmitting a second data packet associated with the data flow associated with the data packet in response to the reminder timer expiring prior to receiving, at the network device from the network controller, a response associated with the data flow, wherein a time associated with the reminder timer is less than a time associated with the life timer.

16. The method of claim 12 further comprising:

determining whether information identifying a data flow associated with a second data packet matches an entry in the holding table stored in the flow table memory; and

storing the second data packet in a flow context queue associated with the matching entry in the holding table, wherein the flow context queue is stored in the flow table memory.

17. The method of claim 16 further comprising:

checking if a reminder timer associated with the data flow associated with the second data packet in response to transmitting a previous data packet to the network controller has expired; and

transmitting the second data packet to the network controller in response to the reminder timer having expired.

18. The method of claim 12 further comprising:

receiving a flow offload from the network controller wherein the flow offload corresponds to the data flow associated with the data packet;

adding a flow table entry to a corresponding flow table wherein the flow table entry includes information comprised within the flow offload; and

removing the matching flow context associated with the flow offload from the holding table.

19. The method of claim 18 further comprising:

processing the data packet using the flow table entry; and

processing any additional data packets associated with the data flow associated with the data packet using the flow entry, wherein the additional data packets were stored in a flow context queue associated with the data flow associated with the data packet.

Assignments (22)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040626 FRAME: 0683. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME EFFECTIVE NOVEMBER 7, 2016. Recorded Jan 12, 2017
From: NXP SEMICONDUCTORS USA, INC. (MERGED INTO); FREESCALE SEMICONDUCTOR, INC. (UNDER)
To: NXP USA, INC.
Reel/Frame 041414/0883 →
CHANGE OF NAME Recorded Nov 16, 2016
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 040626/0683 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE FILING AND REMOVE APPL. NO. 14085520 REPLACE IT WITH 14086520 PREVIOUSLY RECORDED AT REEL: 037515 FRAME: 0390. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Mar 1, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037926/0642 →
CORRECTIVE ASSIGNMENT OF INCORRECT APPL. NO. 14/085,520 PREVIOUSLY RECORDED AT REEL: 037515 FRAME: 0390. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 11, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037792/0227 →
CORRECTIVE ASSIGNMENT OF INCORRECT NUMBER 14085520 PREVIOUSLY RECORDED AT REEL: 037458 FRAME: 0420. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTON OF SECURITY INTEREST IN PATENTS. Recorded Feb 11, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037785/0568 →
CORRECTIVE ASSIGNMENT OF INCORRECT PATENT APPLICATION NUMBER 14085520 ,PREVIOUSLY RECORDED AT REEL: 037458 FRAME: 0399. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 11, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037785/0454 →
CORRECTIVE ASSIGNMENT TO CORRECT THE INCORRECT APPL. NO. 14/085,520 PREVIOUSLY RECORDED AT REEL: 037515 FRAME: 0420. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 11, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037879/0581 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED ON REEL 037458 FRAME 0420. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Jan 14, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037515/0420 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED ON REEL 037458 FRAME 0399. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Jan 14, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037515/0390 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 7, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FOUNDING, INC.
Reel/Frame 037458/0420 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 7, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FOUNDING, INC.
Reel/Frame 037458/0399 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0790 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Mar 13, 2014
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., COLLATERAL AGENT
Reel/Frame 032445/0689 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Mar 13, 2014
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 032445/0577 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Mar 13, 2014
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 032445/0493 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 30, 2013
From: CRASTA, DENIS A.; ADDEPALLI, SRINIVASA R.; JOHN, REKESH
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 031857/0507 →
Continuity (1)
Related Publication 20150180783A1 · Jun 25, 2015