IP Library Granted Patent US 10,009,273
Granted Patent B2
US 10,009,273 · App. 15/167,704 · Granted Jun 26, 2018

Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine

Inventors: Anh T. Tran (Santa Clara, CA); Gerald Schmidt (San Jose, CA); Tsahi Daniel (Palo Alto, CA); Harish Krishnamoorthy (San Jose, CA)
Assignee: Cavium, Inc.
H04L45/745G06F17/30G06F17/30321G06F17/30339G06F17/30867H04L45/00H04L45/74
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 10,009,273
App. No.
15/167,704
Granted
Jun 26, 2018
Kind
B2
Abstract

Embodiments of the present invention relate to a Lookup and Decision Engine (LDE) for generating lookup keys for input tokens and modifying the input tokens based on contents of lookup results. The input tokens are parsed from network packet headers by a Parser, and the tokens are then modified by the LDE. The modified tokens guide how corresponding network packets will be modified or forwarded by other components in a software-defined networking (SDN) system. The design of the LDE is highly flexible and protocol independent. Conditions and rules for generating lookup keys and for modifying tokens are fully programmable such that the LDE can perform a wide variety of reconfigurable network features and protocols in the SDN system.

Claims (35)

1. A method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network (SDN) engine, the method comprising:

buffering input tokens at an Input Buffer;

retrieving metadata bits for each of the input tokens, wherein the metadata bits are not available inside the input tokens;

generating a lookup key for each of the input tokens based on at least specific bits of each of the input tokens and the metadata bits;

receiving a lookup result based on the lookup key;

modifying one or more fields in the input token based on the lookup result and content of the input token;

determining whether the modified token is to be sent back to the current engine or to another engine in a SDN system; and

based on the determination, buffering the modified token in a Loopback Buffer, wherein tokens in the Loopback Buffer have higher priority than tokens in the Input Buffer.

2. The method of claim 1 , wherein a data format of a token includes a Common Portion and a Layers Portion.

3. The method of claim 2 , wherein the Common Portion includes general control bits of a corresponding network packet and a value of a lookup pointer to a Template Table, wherein the value of the lookup pointer is in a “templateID” field of the token.

4. The method of claim 3 , further comprising retrieving a number of layers in the Layers Portion and offsets of the layers in the token.

5. The method of claim 2 , wherein the Layers Portion includes information of all parsed packet headers of a corresponding network packet, wherein each of the parsed packet headers is associated with a “Control” field and a “Data” field in the Layers portion.

6. The method of claim 1 , wherein the Input Buffer and the Loopback Buffer are FIFO buffers.

7. A method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network (SDN) engine, the method comprising:

buffering input tokens at an Input Buffer;

generating a lookup key for each of the input tokens based on at least specific bits of each of the input tokens;

receiving a lookup result based on the lookup key;

modifying one or more fields in the input token based on the lookup result;

determining whether the modified token is to be sent back to the current engine or to another engine in a SDN system; and

based on the determination, buffering the modified token in a Loopback Buffer, wherein tokens in the Loopback Buffer have higher priority than tokens in the Input Buffer.

8. The method of claim 7 , wherein a data format of a token includes a Common Portion and a Layers Portion.

9. The method of claim 8 , wherein the Common Portion includes general control bits of a corresponding network packet and a value of a lookup pointer to a Template Table, wherein the value of the lookup pointer is in a “templateID” field of the token.

10. The method of claim 9 , further comprising retrieving a number of layers in the Layers Portion and offsets of the layers in the token.

11. The method of claim 8 , wherein the Layers Portion includes information of all parsed packet headers of a corresponding network packet, wherein each of the parsed packet headers is associated with a “Control” field and a “Data” field in the Layers portion.

12. The method of claim 7 , wherein the Input Buffer and the Loopback Buffer are FIFO buffers.

13. A method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network (SDN) engine, the method comprising:

buffering input tokens at an Input Buffer, wherein a data format of a token includes a Common Portion and a Layers Portion, wherein the Common Portion includes general control bits of a corresponding network packet and a value of a lookup pointer to a Template Table, wherein the value of the lookup pointer is in a “templateID” field of the token;

retrieving a number of layers in the Layers Portion and offsets of the layers in the token, wherein the Layers Portion includes information of all parsed packet headers of a corresponding network packet, wherein each of the parsed packet headers is associated with a “Control” field and a “Data” field in the Layers portion;

retrieving metadata bits for each of the input tokens, wherein the metadata bits are not available inside the input tokens;

generating a lookup key for each of the input tokens based on at least specific bits of each of the input tokens and the metadata bits;

receiving a lookup result based on the lookup key;

modifying one or more fields in the input token based on the lookup result and content of the input token;

determining whether the modified token is to be sent back to the current engine or to another engine in a SDN system; and

based on the determination, buffering the modified token in a Loopback Buffer, wherein tokens in the Loopback Buffer have higher priority than tokens in the Input Buffer.

14. The method of claim 13 , wherein the Input Buffer and the Loopback Buffer are FIFO buffers.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CHANGE OF NAME Recorded Sep 27, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047577/0653 →
RELEASE OF SECURITY INTEREST Recorded Jul 6, 2018
From: JP MORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: CAVIUM, INC; CAVIUM NETWORKS LLC; QLOGIC CORPORATION
Reel/Frame 046496/0001 →
SECURITY AGREEMENT Recorded Aug 17, 2016
From: CAVIUM, INC.; CAVIUM NETWORKS LLC
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 039715/0449 →
MERGER Recorded May 27, 2016
From: XPLIANT, INC.
To: CAVIUM NETWORKS LLC
Reel/Frame 038740/0630 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 27, 2016
From: CAVIUM NETWORKS LLC
To: CAVIUM, INC.
Reel/Frame 038740/0658 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 27, 2016
From: TRAN, ANH T.; SCHMIDT, GERALD; DANIEL, TSAHI; KRISHNAMOORTHY, HARISH
To: XPLIANT, INC.
Reel/Frame 038740/0616 →
Continuity (2)
Division 14144270 · Dec 30, 2013
Related Publication 20160277295A1 · Sep 22, 2016