IP Library Granted Patent US 8,559,332
Granted Patent B2
US 8,559,332 · App. 13/111,497 · Granted Oct 15, 2013

Method for enhancing table lookups with exact and wildcards matching for parallel environments

Inventors: Rerngvit Yanggratoke (Stockholm, SE); Hareesh Puthalath (Stockholm, SE)
Assignee: Telefonaktiebolaget L M Ericsson (publ)
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,559,332
App. No.
13/111,497
Granted
Oct 15, 2013
Kind
B2
Abstract

Presented are methods for performing a constant time flow lookup utilizing parallel processing technology. The methods are suitable for multiprocessor and/or multi-core processor computing environments. The method generates hash table driven tables of exact flow matching patterns and then provides the generated tables to parallel processing based flow selection procedure that iteratively finds the highest priority flow from the exact flow matching patterns. The method is scalable based on the linear relationship between the number of processors and/or processor cores and the time required to perform the lookup. The method is also portable because it does not require any special or custom hardware typically associated with this type of lookup.

Claims (58)

1. A method of enhancing a table lookup for a parallel computing environment, said method comprising:

generating a plurality of flow exact patterns, based on an associated flow table, for grouping flows based on similar exact value fields; and

utilizing a parallel flow selection, based on said plurality of flow exact patterns, for selecting a highest priority flow from said plurality of flow exact patterns;

said flow exact patterns comprising the maximum combinations of said flows from said flow table, based on a binomial coefficient calculation, plus one additional entry;

said binomial coefficient calculation being the number of field combinations of said flows, from said flow table, associated with said fields.

2. The method of claim 1 , wherein said one additional entry comprises all wildcards for a default matching condition.

3. The method of claim 1 , wherein the number of said flow exact patterns equals or is less than the number of flows from said flow table.

4. The method of claim 1 , wherein each flow exact pattern has its own hash table for storing flows associated with said flow exact pattern.

5. The method of claim 1 , wherein said parallel flow selection is distributed among a plurality of Single Instruction Multiple Data (SIMD) processor cores.

6. The method of claim 5 , wherein said parallel flow selection is based on the flow having the highest priority.

7. An apparatus comprising:

a plurality of processor cores, configured to:

generate a plurality of flow exact patterns based on an associated plurality of flows from a flow table; and

select a highest priority flow utilizing a parallel flow selection based on said plurality of flow exact patterns;

said flow exact patterns comprising the maximum combinations of said flows from said flow table, based on a binomial coefficient calculation, plus one additional entry;

said binomial coefficient calculation being the number of field combinations of said flows, from said flow table, associated with said fields.

8. The apparatus of claim 7 , wherein said plurality of processor cores are further configured to execute single instruction multiple data (SIMD) instructions.

9. The apparatus of claim 7 , further comprising a hash table having flow exact patterns and wherein said plurality of processor cores are further configured to store all flows associated with a particular flow exact pattern in the hash table.

10. A method of grouping flows, said method comprising:

generating a plurality of flow exact patterns, based on an associated flow table, for grouping flows based on similar exact value fields;

comparing a plurality of flows and grouping indexes of all flows, all fields of said flows with the same exact value being matched;

generating a table for each group of said indexes; and

storing a predetermined flow priority with each flow index in said table;

said groups of indexes being bounded by a number of combinations of fields of said plurality of flows plus one additional group of indexes.

11. The method of claim 10 , wherein said table is a hash table.

12. The method of claim 10 , wherein said bound is equal to or less than the number of flows.

13. The method of claim 10 , wherein said one additional group of indexes is a default group that matches every flow.

14. An apparatus comprising:

a plurality of processor cores, configured to:

generate a plurality of flow exact patterns based on an associated plurality of flows from a flow table;

compare a plurality of flows and grouping indexes of all flows, all exact fields of said plurality of flows having the same exact value being matched;

generate a table for each group of said indexes; and

store a predetermined flow priority, with each flow index, in said table;

said groups of indexes being bounded by a number of combinations of fields of said plurality of flows plus one additional group of indexes.

15. The apparatus of claim 14 , wherein said plurality of processor cores are further configured to store an entry in said table where all fields are wildcards for a default matching entry.

16. A method of selecting a highest priority flow from a plurality of flows, said method comprising:

generating a plurality of flow exact patterns, based on an associated flow table, for grouping flows based on similar exact value fields;

utilizing a parallel flow selection, based on said plurality of flow exact patterns, for selecting a highest priority flow from said plurality of flow exact patterns;

distributing said plurality of flows equally among a plurality of at least one of processors and processor cores;

performing a first iteration of each of the at least one of the processors and processor cores through comparing assigned flows to select a flow with the highest priority; and

performing a second iteration of comparing each of the at least one of the processors and processor cores output of highest priority flow to another of the at least one of the processor and processor core output to select said highest priority flow;

said flow exact patterns comprising the maximum combinations of said flows from said flow table, based on a binomial coefficient calculation, plus one additional entry;

said binomial coefficient calculation being the number of field combinations of said flows, from said flow table, associated with said fields.

17. The method of claim 16 , wherein each processor and processor core utilizes a single instruction multiple data (SIMD) instruction set.

18. The method of claim 16 , wherein said first iteration performance is scalable up to a number of the at least one of the processors and processor cores equal to one-half the number of flows.

19. The method of claim 16 , wherein a calculation of computation time is determined by the base 2 log of the number of the at least one of the processors and processor cores.

20. The method of claim 16 , wherein said priority is predetermined and associated with said flows.

21. An apparatus comprising:

a plurality of processor cores, configured to:

generate a plurality of flow exact patterns based on an associated plurality of flows from a flow table;

select a highest priority flow utilizing a parallel flow selection based on said plurality of flow exact patterns;

distribute a plurality of flows equally among said plurality of processor cores;

perform a first iteration of each processor core through comparing assigned flows to select a flow with a highest priority as output; and

perform a second iteration of comparing said output from each processor core to select a flow with a highest priority as output;

said flow exact patterns comprising the maximum combinations of said flows from said flow table, based on a binomial coefficient calculation, plus one additional entry;

said binomial coefficient calculation being the number of field combinations of said flows, from said flow table, associated with said fields.

22. The apparatus of claim 21 , wherein said plurality of processor cores are further configured to execute single instruction multiple data (SIMD) instructions.

23. The apparatus of claim 21 , wherein said priority is predetermined and associated with a flow.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 13, 2011
From: YANGGRATOKE, RERNGVIT; PUTHLALATH, HAREESH
To: TELEFONAKTIEBOLAGET LM ERICSSON (PUBL)
Reel/Frame 026893/0701 →
Continuity (2)
Provisional Application 61348038 · May 25, 2010
Related Publication 20110292830A1 · Dec 1, 2011