IP Library Granted Patent US 9,667,446
Granted Patent B2
US 9,667,446 · App. 14/150,761 · Granted May 30, 2017

Condition code approach for comparing rule and packet data that are provided in portions

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,667,446
App. No.
14/150,761
Granted
May 30, 2017
Kind
B2
Abstract

A condition code approach for comparing dimension match data of a rule with corresponding data in a key is provided. The approach includes, given dimension match data divided into first and second portions, comparing the first portion with a corresponding first portion of data in a key and setting a first condition code based on the comparison. The approach further includes comparing the second portion with a corresponding second portion of key data and setting a second condition code based on the comparison. The approach further includes determining whether the dimension match data is equal to, greater than, or less than the corresponding data in the key based on the first and second condition codes, and returning a response indicating whether the data matches based on the determination.

Claims (46)

1. A method for comparing dimension match data of a rule with corresponding data in a packet, the method comprising:

in a rule match engine (RME) provided with dimension match data divided into a first portion and a second portion, the first portion of the dimension match data provided in a first cycle of the RME and the second portion provided in a second cycle of the RME: in the first cycle of the RME, comparing the first portion of the dimension match data with a corresponding first portion of data in a packet;

in the first cycle of the RME, setting a first condition code to equal to, greater than, or less than based on the comparison of the first portion of the dimension match data with the corresponding first portion of data in the packet;

in the second cycle of the RME, comparing the second portion of the dimension match data with a corresponding second portion of data in the packet;

in the second cycle of the RME, setting a second condition code to equal to, greater than, or less than based on the comparison of the second portion of the dimension match data with the corresponding second portion of data in the packet;

determining whether the dimension match data is equal to, greater than, or less than the corresponding data in the packet based on the first and second condition codes, the determination being a combined result of the RME partially comparing the dimension match data with the packet as each portion of the dimension match data is provided to the RME over multiple cycles; and

returning a response indicating whether the dimension match data and the corresponding data in the packet match based on the determination, and the response causing an action to be taken on the packet by a network service.

2. The method of claim 1 , given a minimum value and a maximum value of a range match are interleaved into an interleaved minimum/maximum value and the dimension match data is the interleaved minimum/maximum value, wherein comparing the first portion of the dimension match data, includes comparing the first portion of the interleaved minimum/maximum value to the corresponding first portion of data in the packet;

wherein setting the first condition code, includes setting a first condition code for the minimum value and a first condition code for the maximum value to equal to, greater than, or less than based on the comparison of the first portion of the interleaved minimum/maximum value with the corresponding first portion of data in the packet;

wherein comparing the second portion of the dimension match data, includes comparing the second portion of the interleaved minimum/maximum value to the corresponding second portion of data in the packet;

wherein setting the second condition code, includes setting a second condition code for the minimum value and a second condition code for the maximum value to equal to, greater than, or less than based on the comparison of the second portion of the interleaved minimum/maximum value with the corresponding second portion of data in the packet; and

wherein the determining includes, determining whether the packet is within the minimum and maximum values of the range match based on the first and second condition codes for the minimum value and the first and second condition codes for the maximum value.

3. The method of claim 1 wherein each of the condition codes includes a first bit and a second bit; and wherein setting a respective condition code includes setting the first and second bits forming a first value, a second value different than the first value or a third value different than the first and second values; and

wherein the first, second, and third values correspond to equal to, greater than, and less than comparisons, respectively.

4. The method of claim 1 wherein setting the first condition code further includes setting the first condition code to equal to, greater than, or less than based on the determination, the first condition code being a running condition code keeping a status of prior comparisons.

5. The method of claim 1 wherein comparing the second portion of the dimension match data, further includes:

determining whether to compare the second portion of the dimension match data with the corresponding second portion of data in the based on the setting of the first condition code; and

comparing the second portion of the dimension match data with the corresponding second portion of data in the packet based on the determination.

6. The method of claim 1 wherein the determining includes, determining that the dimension match data and the corresponding data in the packet are equal when the first and second condition codes are set to equal.

7. The method of claim 1 wherein the determining includes, determining the dimension match data is less than the corresponding data in the packet when the first condition code is set to less than or when the first condition code is set to equal to and the second condition codes is set to less than.

8. The method of claim 1 wherein the determining includes, determining that the dimension match data is greater than the corresponding data in the packet when the first condition code is set to greater than or when the first condition code is set to equal to and the second condition codes is set to greater than.

9. The method of claim 1 further comprising, given a value and a mask of a mask match, each provided in a first portion and a second portion, applying the first portion of the mask to the first portion of the value and to the corresponding first portion of data in the packet resulting in a masked first portion of the value and a masked corresponding first portion of data in the packet, respectively;

comparing the masked first portion of the value to the masked corresponding first portion of data in the packet;

setting a first condition code to equal to or not equal to based on the comparison of the masked first portion of the value with the masked corresponding first portion of data in the packet;

applying the second portion of the mask to the second portion of the value and to the corresponding second portion of data in the packet resulting in a masked second portion of the value and a masked corresponding second portion of data in the packet, respectively;

comparing the masked second portion of the value to the masked corresponding second portion of data in the packet;

setting a second condition code to equal to or not equal to based on the comparison of the masked second portion of the value with the masked corresponding second portion of data in the;

determining whether the masked value is equal to or not equal to the masked corresponding data in the packet based on the first and second condition codes; and

returning a response indicating whether the masked value and the masked corresponding data in the match based on the determination.

10. A system for comparing dimension match data of a rule with corresponding data in a packet, the system comprising:

a memory;

at least one interface for receiving dimension match data divided into a first portion and a second portion;

a rule match engine (RME) communicatively coupled to the memory and the at least one interface, the RME configured to:

in a first cycle of the RME, compare the first portion of the dimension match data with a corresponding first portion of data in a packet, the first portion of the dimension match data provided in the first cycle of the RME;

in the first cycle of the RME, set a first condition code to equal to, greater than, or less than based on the comparison of the first portion of the dimension match data with the corresponding first portion of data in the packet;

in a second cycle of the RME, compare the second portion of the dimension match data with a corresponding second portion of data in the packet, the second portion provided in the second cycle of the RME;

in the second cycle of the RME, set a second condition code to equal to, greater than, or less than based on the comparison of the second portion of the dimension match data with the corresponding second portion of data in the packet;

determine whether the dimension match data is equal to, greater than, or less than the corresponding data in the based on the first and second condition codes, the determination being a combined result of the RME partially comparing the dimension match data with the packet as each portion of the dimension match data is provided to the RME over multiple cycles; and

return a response indicating whether the dimension match data and the corresponding data in the packet match based on the determination, and the response causing an action to be taken on the packet by a network service.

11. A tangible non-transitory computer-readable storage medium having computer readable instructions stored therein for comparing dimension match data of a rule with corresponding data in a packet, which when executed by a rule match engine (RME), provided with dimension match data divided into a first portion and a second portion, the first portion of the dimension match data provided in a first cycle of the RME and the second portion provided in a second cycle of the RME: in the first cycle of the RME, cause the RME to:

in the first cycle of the RME, compare the first portion of the dimension match data with a corresponding first portion of data in a packet;

in the first cycle of the RME, set a first condition code to equal to, greater than, or less than based on the comparison of the first portion of the dimension match data with the corresponding first portion of data in the;

in the second cycle of the RME, compare the second portion of the dimension match data with a corresponding second portion of data in the packet;

in the second cycle of the RME, set a second condition code to equal to, greater than, or less than based on the comparison of the second portion of the dimension match data with the corresponding second portion of data in the packet;

determine whether the dimension match data is equal to, greater than, or less than the corresponding data in the packet based on the first and second condition codes, the determination being a combined result of the RME partially comparing the dimension match data with the packet as each portion of the dimension match data is provided to the RME over multiple cycles; and

return a response indicating whether the dimension match data and the corresponding data in the packet match based on the determination, and the response causing an action to be taken on the packet by a network service.

Assignments (6)
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 →
CONVERSION Recorded Oct 6, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047202/0690 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 31, 2014
From: WORRELL, FRANK
To: CAVIUM, INC.
Reel/Frame 032103/0908 →