A lookup system and a lookup method
20180351865 ยท 2018-12-06
Inventors
- Ville Hallivuori (Espoo, FI)
- Juhamatti Kuusisaari (Helsinki, FI)
- Mika Silvola (Kempele, FI)
- Teemu KOSKI (Espoo, FI)
- Timo NARUMO (Espoo, FI)
Cpc classification
H04L45/50
ELECTRICITY
International classification
Abstract
A lookup system includes a ternary content-addressable memory TCAM configured to carry out a lookup on the basis of a lookup key so as to produce a preliminary lookup result. The lookup system further includes a subsystem configured to produce a final lookup result on the basis of the preliminary lookup result and auxiliary data including at least a part of bit values of do-not-care bit positions of the lookup key such that the preliminary lookup result is independent of the bit values of the do-not-care bit positions. The required number of TCAM-lines can be reduced because different alternatives of the auxiliary data corresponding to different possible bit values of the do-not-care bit positions of the lookup key are handled with the subsystem instead of the TCAM.
Claims
1-16. (canceled)
17. A lookup system comprising: a ternary content-addressable memory configured to carry out a lookup on the basis of a lookup key so as to produce a preliminary lookup result, the lookup key comprising do-not-care bit positions so that the preliminary lookup result is independent of bit values of the do-not-care bit positions, and a subsystem configured to produce a lookup result on the basis of the preliminary lookup result and auxiliary data comprising at least a part of the bit values of the do-not-care bit positions of the lookup key.
18. A lookup system according to claim 17, wherein the ternary content-addressable memory is configured to produce, in addition to the preliminary lookup result when carrying out the lookup on the basis of the lookup key, indicator data indicative of the do-not-care bit positions of the lookup key, and the subsystem is configured form the auxiliary data on the basis of the indicator data and the lookup key.
19. A lookup system according to claim 18, wherein the indicator data is a mask that is a bit vector having a first bit value on bit positions corresponding to the do-not-care bit positions of the lookup key and a second bit value, different from the first bit value, on bit positions corresponding to other bit positions of the lookup key.
20. A lookup system according to claim 18, wherein the indicator data is a numerical value indicating number of the do-not-care bit positions of the lookup key, the do-not-care bit positions locating consecutively at a pre-determined portion of the lookup key.
21. A lookup system according to claim 17, wherein the subsystem comprises a device configured to receive the auxiliary data as input data and to produce output data which, together with the preliminary lookup result, constitutes the lookup result.
22. A lookup system according to claim 17, wherein the subsystem comprises a device configured to receive a combination of the auxiliary data and the preliminary lookup result as input data and to produce the lookup result.
23. A network element comprising: a data transfer interface for connecting the network element to a data transfer network, and a lookup system for carrying out a lookup so that a lookup key of the lookup relates to data being managed by the network element and a lookup result produced by the lookup system determines at least partly operations to be carried out by the network element, wherein the lookup system comprises: a ternary content-addressable memory configured to carry out the lookup on the basis of the lookup key so as to produce a preliminary lookup result, the lookup key comprising do-not-care bit positions so that the preliminary lookup result is independent of bit values of the do-not-care bit positions, and a subsystem configured to produce the lookup result on the basis of the preliminary lookup result and auxiliary data comprising at least a part of the bit values of the do-not-care bit positions of the lookup key.
24. A network element according to claim 23, wherein the network element is at least one of the following: an Internet Protocol IP router, a MultiProtocol Label Switching MPLS switch, a packet optical switch, an Ethernet switch, an asynchronous transfer mode ATM switch, a software-defined networking SDN controlled network element, a virtualized network function runnable in a virtual machine.
25. A lookup method comprising: supplying a lookup key to a ternary content-addressable memory so as to obtain a preliminary lookup result, the lookup key comprising do-not-care bit positions so that the preliminary lookup result is independent of bit values of the do-not-care bit positions, and producing (302) a lookup result on the basis of the preliminary lookup result and auxiliary data comprising at least a part of the bit values of the do-not-care bit positions of the lookup key.
26. A lookup method according to claim 25, wherein the ternary content-addressable memory produces, in addition to the preliminary lookup result when carrying out a lookup on the basis of the lookup key, indicator data indicative of the do-not-care bit positions of the lookup key, and the lookup method comprises forming the auxiliary data on the basis of the indicator data and the lookup key.
27. A lookup method according to claim 26, wherein the indicator data is a mask that is a bit vector having a first bit value on bit positions corresponding to the do-not-care bit positions of the lookup key and a second bit value, different from the first bit value, on bit positions corresponding to other bit positions of the lookup key.
28. A lookup method according to claim 26, wherein the indicator data is a numerical value indicating number of the do-not-care bit positions of the lookup key, the do-not-care bit positions locating consecutively at a pre-determined portion of the lookup key.
29. A lookup method according to claim 25, wherein the lookup method comprises supplying the auxiliary data to a device which produces output data constituting, together with the preliminary lookup result, the lookup result.
30. A lookup method according to claim 25, wherein the lookup method comprises supplying a combination of the auxiliary data and the preliminary lookup result to a device which produces the lookup result.
31. A non-transitory computer readable medium encoded with a computer program comprising computer executable instructions for controlling a programmable processing system to: supply a lookup key to a ternary content-addressable memory so as to obtain a preliminary lookup result, the lookup key comprising do-not-care bit positions so that the preliminary lookup result is independent of bit values of the do-not-care bit positions, and produce a lookup result on the basis of the preliminary lookup result and auxiliary data comprising at least a part of the bit values of the do-not-care bit positions of the lookup key.
Description
BRIEF DESCRIPTION OF FIGURES
[0024] Exemplifying and non-limiting embodiments of the invention and their advantages are explained in greater detail below with reference to the accompanying drawings, in which:
[0025]
[0026]
[0027]
DESCRIPTION OF EXEMPLIFYING AND NON-LIMITING EMBODIMENTS
[0028]
[0029] In the exemplifying lookup system illustrated in
[0030] In the exemplifying lookup system illustrated in
[0031]
[0032] In the exemplifying lookup system illustrated in
[0033] In the exemplifying lookup system illustrated in
[0034] In cases where the do-not-care bit positions are located in a pre-determined and priori known manner in the lookup key, the functional blocks 104 and 114 for forming the auxiliary data are not necessary. In these cases, all or pre-determined ones of the bit values of the priori known do-not-care bit positions of the lookup key can be connected directly from the lookup key to an input of the device 103 or 113, wherein these directly connected bit values represent the above-mentioned auxiliary data 108 or 118.
[0035]
[0036] The network element comprises a processing system 227 for controlling data-forwarding and other functionalities of the network element. The network element comprises a lookup system 226 for carrying out lookups so that a lookup key relates to data being managed by the network element 230 and a lookup result produced by the lookup system 226 at least partly determines operations to be carried out by the network element. The lookup system 226 comprises a ternary content-addressable memory 201 TCAM configured to carry out a lookup on the basis of a lookup key so as to produce a preliminary lookup result. The lookup system 226 further comprises a subsystem 202 configured to produce a final lookup result on the basis of the preliminary lookup result and auxiliary data comprising at least a part of bit values of do-not-care bit positions of the lookup key. In this exemplifying case, the above-mentioned subsystem 202 is implemented with the aid of the processing system 227. Various different implementations are however possible. The lookup system 226 can be, for example, according to any of the exemplifying and non-limiting embodiments of the invention described above with reference to
[0037] The processing system 227 of the network element can be implemented with one or more processor circuits, each of which can be a programmable processor circuit provided with appropriate software, a dedicated hardware processor such as, for example, an application specific integrated circuit ASIC, or a configurable hardware processor such as, for example, a field programmable gate array FPGA. Furthermore, the processing system 227 may comprise one or more memory circuits such as random-access memory RAM circuits.
[0038]
[0041] In a lookup method according to an exemplifying and non-limiting embodiment of the invention, the ternary content-addressable memory produces indicator data in addition to the preliminary lookup result when carrying out the lookup on the basis of the lookup key. The indicator data indicates the do-not-care bit positions of the lookup key, and the lookup method according to this exemplifying and non-limiting embodiment of the invention comprises forming the auxiliary data on the basis of the indicator data and the lookup key. The indicator data may comprise for example pointers to the do-not-care bit positions of the lookup key. For a second example, the indicator data may comprise a mask that is a bit vector having a first bit value, e.g. 0, on bit positions corresponding to the do-not-care bit positions of the lookup key and a second bit value, e.g. 1, on bit positions corresponding to other, i.e. significant, bit positions of the lookup key. In cases where the do-not-care bit positions are located consecutively at a pre-determined portion of the lookup key e.g. at the end of the lookup key, the indicator data can be a mere numerical value which directly or indirectly indicates the number of the do-not-care bit positions.
[0042] A lookup method according to an exemplifying and non-limiting embodiment of the invention comprises supplying the auxiliary data to a device which produces output data constituting, together with the preliminary lookup result, the lookup result. A lookup method according to another exemplifying and non-limiting embodiment of the invention comprises supplying a combination of the auxiliary data and the preliminary lookup result to a device which produces the lookup result. The abovementioned device can be e.g. a random-access memory RAM or a gate logic array, or the device can be implemented with a programmable processor.
[0043] A computer program according to an exemplifying and non-limiting embodiment of the invention comprises computer executable instructions for controlling a programmable processing system to carry out actions related to a method according to any of the above-described exemplifying and non-limiting embodiments of the invention.
[0044] A computer program according to an exemplifying and non-limiting embodiment of the invention comprises software modules for carrying out lookups. The software modules comprise computer executable instructions for controlling a programmable processing system to: [0045] supply a lookup key to a ternary content-addressable memory so as to obtain a preliminary lookup result, and [0046] produce a lookup result on the basis of the preliminary lookup result and auxiliary data comprising at least a part of bit values of do-not-care bit positions of the lookup key such that the preliminary lookup result is independent of the bit values of the do-not-care bit positions.
[0047] The software modules can be e.g. subroutines or functions implemented with a suitable programming language and with a compiler suitable for the programming language and the programmable processing system under consideration. It is worth noting that also a source code corresponding to a suitable programming language represents the computer executable software modules because the source code contains the information needed for controlling the programmable processing system to carry out the above-presented actions and compiling changes only the format of the information. Furthermore, it is also possible that the programmable processing system is provided with an interpreter so that a source code implemented with a suitable programming language does not need to be compiled prior to running.
[0048] A computer program product according to an exemplifying and non-limiting embodiment of the invention comprises a computer readable medium, e.g. a compact disc CD, encoded with a computer program according to an exemplifying embodiment of invention.
[0049] A signal according to an exemplifying and non-limiting embodiment of the invention is encoded to carry information defining a computer program according to an exemplifying embodiment of invention.
[0050] The specific examples provided in the description given above should not be construed as limiting the scope and/or the applicability of the appended claims.