IP Library Granted Patent US 8,837,322
Granted Patent B2
US 8,837,322 · App. 13/164,009 · Granted Sep 16, 2014

Method and apparatus for snoop-and-learn intelligence in data plane

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 8,837,322
App. No.
13/164,009
Granted
Sep 16, 2014
Kind
B2
Abstract

An approach is provided where incoming packets are received at a data plane and header fields are extracted from the incoming packet. Flows from a flow data store are matched with the extracted header fields from the incoming packet. Packet descriptor data associated with the incoming packet is marked in the selected incoming packet forming a marked ingress packet with marking performed when the matching fails. The marked ingress packet is forwarded to a control plane that retrieves flow-related data related to the marked ingress packet and updates the marked packet descriptor data using the retrieved flow-related data, thereby forming an updated marked packet. The control plane passes the updated marked packet back to the data plane for further processing to update the flow data stored in the flow data store.

Claims (113)

1. A method to handle information packets comprising:

receiving an incoming packet at a data plane at a network data handling apparatus;

extracting packet data from the incoming packet;

matching a plurality of flows from a flow data store with the extracted packet data;

marking a packet descriptor data associated with the incoming packet, the marking forming a marked ingress packet, wherein the marking is performed in response to the matching failing to find a matching flow;

forwarding the marked ingress packet to a control plane at the network data handling apparatus;

retrieving a flow-related data related to the marked ingress packet at the control plane;

updating, by the control plane, the packet descriptor data included in the marked ingress packet using the flow-related data, the updating forming an updated marked packet; and

sending the updated marked packet back to the data plane, wherein the data plane processes the updated marked packet utilizing the flow-related data from the updated marked packet.

2. The computer-implemented method of claim 1 further comprising:

creating, by the data plane, one or more entries in the flow data store using the flow-related data from the updated marked.

3. The computer-implemented method of claim 1 further comprising:

updating, by the control plane, L2 header data into a header portion of the updated marked packet;

snooping, by the data plane, the L2 header data that was updated by the control plane that is passed back to the data plane; and

based on the snooping, updating an L2 table that is managed by the data plane using the L2 header that was updated by the control plane.

4. The computer-implemented method of claim 1 further comprising:

sending a plurality of dummy packets from the data plane to the control plane, wherein each of the plurality of dummy packets relate to one of the plurality of flows from the flow data store;

updating, by the control plane, the packet descriptor data of the plurality of dummy packets with the flow-related data;

updating, by the control plane, L2 header data into a header that is included in each of the plurality of dummy packets;

sending, by control plane, the updated plurality of dummy packets to the data plane;

identifying, at the data plane, the updated marked packet as being one of the plurality of dummy packets;

updating an L2 table that is managed by the data plane using the L2 header that was updated in the updated marked dummy packet; and

discarding the updated marked packet after the updating of the L2 table.

5. The computer-implemented method of claim 4 further comprising:

storing a truncated copy of the incoming packet and associating the truncated copy with one of the plurality of flows from the flow data store, wherein a plurality of truncated copies are stored corresponding to a plurality of incoming packets, wherein each of the plurality of truncated copies is associated with a different one of the plurality of flows from the data store; and

generating the plurality of dummy packets from the plurality of truncated copies.

6. The computer-implemented method of claim 1 further comprising:

generating a plurality of dummy packets based on a plurality of previously received incoming packets, wherein each of the dummy packets relate to one of the plurality of flows from the flow data store;

sending the plurality of dummy packets from the data plane to the control plane;

identifying one or more dummy packets where a corresponding updated marked packet was not received at the data plane; and

deleting, at the data plane, one or more of the plurality of flows from the flow data store corresponding to the identified one or more dummy packets.

7. The computer-implemented method of claim 1 further comprising:

periodically generating a plurality of dummy packets based on a plurality of previously received incoming packets, wherein each of the dummy packets relate to one of the plurality of flows from the flow data store;

sending the plurality of dummy packets from the data plane to the control plane;

identifying, at the data plane, the updated marked packet as being one of the dummy packets;

validating the matching flow in the flow data store using the flow-related data; and

validating L2 header data stored in an L2 Table with a L2 header that is included in the updated marked packet.

8. The computer-implemented method of claim 7 further comprising:

updating one or more of the plurality of flows in the flow data store using the flow-related data; and

updating the L2 header data stored in the L2 Table with the L2 header that is included in the updated marked packet.

9. A system comprising:

one or more processors;

a memory accessible by at least one of the processors, wherein a first set of the memory is allocated to a data plane that is executed by one or more of the processors and wherein a second set of the memory is allocated to a control plane that is executed by one or more of the processors;

a network adapter, accessible by at least one of the processors, that connects the system to a computer network;

a set of instructions stored in the memory and executed by at least one of the processors in order to perform actions comprising:

receiving, at the network adapter, an incoming packet at the data plane;

extracting packet data from the incoming packet;

matching a plurality of flows from a flow data store with the extracted packet data, wherein the flow data store resides in the first set of memory;

marking a packet descriptor data associated with the incoming packet, the marking forming a marked ingress packet, wherein the marking is performed in response to the matching failing to find a matching flow;

forwarding the marked ingress packet to the control plane, the forwarding including storing the marked ingress packet in the second set of memory;

retrieving a flow-related data related to the marked ingress packet at the control plane, wherein the flow-related data is retrieved from the second set of memory;

updating, by the control plane, the packet descriptor data included in the marked ingress packet using the flow-related data, the updating forming an updated marked packet; and

sending the updated marked packet back to the data plane, wherein the data plane processes the updated marked packet utilizing the flow-related data from the updated marked packet.

10. The system of claim 9 wherein the set of instructions perform further actions comprising:

creating, by the data plane, one or more entries in the flow data store using the flow-related data from the updated marked packet.

11. The system of claim 9 wherein the set of instructions perform further actions comprising:

updating, by the control plane, L2 header data into a header portion of the updated marked packet;

snooping, by the data plane, the L2 header data that was updated by the control plane that is passed back to the data plane; and

based on the snooping, updating an L2 table that is managed by the data plane using the L2 header that was updated by the control plane.

12. The system of claim 9 wherein the set of instructions perform further actions comprising:

sending a plurality of dummy packets from the data plane to the control plane, wherein each of the plurality of dummy packets relate to one of the plurality of flows from the flow data store;

updating, by the control plane, the packet descriptor data of the plurality of dummy packets with the flow-related data;

updating, by the control plane, L2 header data into a header that is included in each of the plurality of dummy packets;

sending, by control plane, the updated plurality of dummy packets to the data plane;

identifying, at the data plane, the updated marked packet as being one of the plurality of dummy packets;

updating an L2 table that is managed by the data plane using the L2 header that was updated in the updated marked dummy packet; and

discarding the updated marked packet after the updating of the L2 table.

13. The system of claim 12 wherein the set of instructions perform further actions comprising:

storing a truncated copy of the incoming packet and associating the truncated copy with one of the plurality of flows from the flow data store, wherein a plurality of truncated copies are stored corresponding to a plurality of incoming packets, wherein each of the plurality of truncated copies is associated with a different one of the plurality of flows from the data store; and

generating the plurality of dummy packets from the plurality of truncated copies.

14. The system of claim 9 wherein the set of instructions perform further actions comprising:

periodically generating a plurality of dummy packets based on a plurality of previously received incoming packets, wherein each of the dummy packets relate to one of the plurality of flows from the flow data store;

sending the plurality of dummy packets from the data plane to the control plane;

identifying one or more dummy packets where a corresponding updated marked packet was not received at the data plane; and

deleting, at the data plane, one or more of the plurality of flows from the flow data store corresponding to the identified one or more dummy packets.

15. The system of claim 9 wherein the set of instructions perform further actions comprising:

periodically generating a plurality of dummy packets based on a plurality of previously received incoming packets, wherein each of the dummy packets relate to one of the plurality of flows from the flow data store;

sending the plurality of dummy packets from the data plane to the control plane;

identifying, at the data plane, the updated marked packet as being one of the dummy packets;

validating the matching flow in the flow data store using the flow-related data; and

validating L2 header data stored in an L2 Table with a L2 header that is included in the updated marked packet.

16. The system of claim 15 wherein the set of instructions perform further actions comprising:

updating one or more of the plurality of flows in the flow data store using the flow-related data; and

updating the L2 header data stored in the L2 Table with the L2 header that is included in the updated marked packet.

17. A computer program product stored in a non-transitory computer readable medium, comprising functional descriptive material that, when executed by an information handling system, causes the information handling system to perform actions comprising:

receiving an incoming packet at a data plane;

extracting packet data from the incoming packet;

matching a plurality of flows from a flow data store with the extracted packet data;

marking a packet descriptor data associated with the incoming packet, the marking forming a marked ingress packet, wherein the marking is performed in response to the matching failing to find a matching flow;

forwarding the marked ingress packet to a control plane;

retrieving a flow-related data related to the marked ingress packet at the control plane;

updating, by the control plane, the packet descriptor data included in the marked ingress packet using the flow-related data, the updating forming an updated marked packet; and

sending the updated marked packet back to the data plane, wherein the data plane processes the updated marked packet utilizing the flow-related data from the updated marked packet.

18. The computer program product of claim 17 wherein the information handling system performs further actions comprising:

creating, by the data plane, one or more entries in the flow data store using the flow-related data from the updated marked packet;

updating, by the control plane, L2 header data into a header portion of the updated marked packet;

snooping, by the data plane, the L2 header data that was updated by the control plane that is passed back to the data plane; and

based on the snooping, updating an L2 table that is managed by the data plane using the L2 header that was updated by the control plane.

19. The computer program product of claim 17 wherein the information handling system performs further actions comprising:

storing a truncated copy of the incoming packet and associating the truncated copy with one of the plurality of flows from the flow data store, wherein a plurality of truncated copies are stored corresponding to a plurality of incoming packets, wherein each of the plurality of truncated copies is associated with a different one of the plurality of flows from the data store;

generating a plurality of dummy packets from the plurality of truncated copies;

sending the plurality of dummy packets from the data plane to the control plane, wherein each of the plurality of dummy packets relate to one of the plurality of flows from the flow data store;

updating, by the control plane, the packet descriptor data of the plurality of dummy packets with the control plane flow information;

updating, by the control plane, L2 header data into a header that is included in each of the plurality of dummy packets;

sending, by control plane, the updated plurality of dummy packets to the data plane;

identifying, at the data plane, the updated marked packet as being one of the plurality of dummy packets;

updating the L2 table that is managed by the data plane using the L2 header data that was updated in the updated marked packet; and

discarding the updated marked packet after the updating of the L2 table.

20. The computer program product of claim 17 wherein the information handling system performs further actions comprising:

generating a plurality of dummy packets based on a plurality of previously received incoming packets, wherein each of the plurality of dummy packets relate to one of the plurality of flows from the flow data store;

sending the plurality of dummy packets from the data plane to the control plane;

identifying one or more dummy packets where a corresponding updated marked packet was not received at the data plane; and

deleting, at the data plane, one or more of the plurality of flows from the flow data store corresponding to the identified one or more dummy packets.

Assignments (23)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 2, 2021
From: NXP B.V.
To: FUTURE LINK SYSTEMS, LLC
Reel/Frame 055115/0491 →
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 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Dec 10, 2019
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 053547/0421 →
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 TO CORRECT THE APPLICATION NO. FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536. ASSIGNOR(S) HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS.. Recorded Feb 20, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SHENZHEN XINGUODU TECHNOLOGY CO., LTD.
Reel/Frame 048734/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 1, 2017
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 041703/0536 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040652 FRAME: 0241. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Jan 5, 2017
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 041260/0850 →
MERGER Recorded Nov 8, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 040652/0241 →
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 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 13, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037518/0292 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 12, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037486/0517 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0285 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0387 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0334 →
SECURITY AGREEMENT Recorded Nov 6, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031591/0266 →
SECURITY AGREEMENT Recorded Jun 18, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030633/0424 →
SECURITY AGREEMENT Recorded Jan 31, 2012
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 027622/0075 →
SECURITY AGREEMENT Recorded Jan 31, 2012
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 027621/0928 →
SECURITY AGREEMENT Recorded Jan 31, 2012
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 027622/0477 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 29, 2011
From: VENKATARAMANAN, SUBHASHINI A; ADDEPALLI, SRINIVASA R
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 026821/0986 →