The disclosure relates to a lookup system suitable for lookups such as, for example but not necessarily, Internet Protocol “IP”-address lookups. Furthermore, the disclosure relates to a lookup method and to a computer program for carrying out lookups. Furthermore, the disclosure relates to a network element such as, for example but not necessarily, an Internet Protocol “IP” router.
A network element of a data transfer network comprises typically a lookup system for carrying out lookups so that a lookup key 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. The data being managed by the network element may comprise for example Internet Protocol “IP” packets, Ethernet frames, or some other data frames. The above-mentioned operations may comprise for example forwarding the data to appropriate one or more data transfer links of the data transfer network, discarding the data, and/or delivering the data to a central processing unit “CPU” of the network element for further processing. The above-mentioned lookup key may comprise for example a destination address, a source address, and/or other information related to the data being managed. The network element can be for example an Internet Protocol “IP” router, a multiprotocol label switching “MPLS” node, a packet optical switch, an Ethernet switch, an asynchronous transfer mode “ATM” switch, a software-defined networking “SDN” controlled network element, and/or a virtualized network function runnable in a virtual machine.
In many cases, a lookup system of the kind mentioned above is implemented with a ternary content-addressable memory “TCAM”. An inherent drawback of the TCAM is however that the TCAM is essentially more expensive than for example a random-access memory “RAM” having a same size as the TCAM. Furthermore, the power consumption of the TCAM is notably higher than the power consumption of the RAM when the TCAM and the RAM are used with a same reading frequency. For these reasons, in practical applications it is endeavored that the amount of the TCAM could be as small as possible.
A typical lookup system where Internet Protocol “IP” address lookups are implemented with a TCAM may consume even four TCAM-lines per each IP-address: an own address, a network address, a broad-cast address, and a connected network address. For example, a connected network 1.2.3.4/24 would have the following four TCAM lines: own address 1.2.3.4/32, network address 1.2.3.0/32, broad-cast address 1.2.3.255/32, and connected network address 1.2.3.0/24. For example in a case of 100,000 interfaces, there would be 400,000 TCAM-lines. In conjunction with the Internet Protocol version 6 “IPv6”, the situation is even more TCAM consuming because it is typical in the IPv6 that a single interface may have many IP-addresses.
The following presents a simplified summary in order to provide a basic understanding of some aspects of various invention embodiments. The summary is not an extensive overview of the invention. It is neither intended to identify key or critical elements of the invention nor to delineate the scope of the invention. The following summary merely presents some concepts of the invention in a simplified form as a prelude to a more detailed description of exemplifying embodiments of the invention.
In accordance with the invention, there is provided a new lookup system suitable for lookups such as, for example but not necessarily, Internet Protocol “IP”-address lookups. A lookup system according to the invention comprises:
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.
For example, in a case where there are the following addresses: own address 1.2.3.4/32, network address 1.2.3.0/32, broad-cast address 1.2.3.255/32, and connected network address 1.2.3.0/24, it is sufficient to have only one TCAM-line for the address 1.2.3.0/24. In a case where a lookup key under consideration matches the above-mentioned TCAM-line for 1.2.3.0/24, the leftmost byte of the lookup key corresponding to the do-not-care bit positions indicated by the 24 bits mask-length is checked by the above-mentioned subsystem in order to find out whether the leftmost byte is 4 when there is 1.2.3.4/32 match, or 0 when there is 1.2.3.0/32 match, or 255 when there is 1.2.3.255/32 match, or something else in which case the final lookup result is the 1.2.3.0/24 match.
In accordance with the invention, there is provided also a new network element for a data transfer network. The network element can be, for example, 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, and/or a virtualized network function runnable in a virtual machine. A network element according to the invention comprises:
In accordance with the invention, there is provided also a new lookup method. A lookup method according to the invention comprises:
In accordance with the invention, there is provided also a new computer program for carrying out lookups. A computer program according to the invention comprises computer executable instructions for controlling a programmable processing system to:
In accordance with the invention, there is provided also a new computer program product. The computer program product comprises a non-volatile computer readable medium, e.g. a compact disc “CD”, encoded with a computer program according to the invention.
A number of exemplifying and non-limiting embodiments of the invention are described in accompanied dependent claims.
Various exemplifying and non-limiting embodiments of the invention both as to constructions and to methods of operation, together with additional objects and advantages thereof, will be best understood from the following description of specific exemplifying embodiments when read in connection with the accompanying drawings.
The verbs “to comprise” and “to include” are used in this document as open limitations that neither exclude nor require the existence of also un-recited features. The features recited in the accompanied dependent claims are mutually freely combinable unless otherwise explicitly stated. Furthermore, it is to be understood that the use of “a” or “an”, i.e. a singular form, throughout this document does not exclude a plurality.
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:
In the exemplifying lookup system illustrated in
In the exemplifying lookup system illustrated in
In the exemplifying lookup system illustrated in
In the exemplifying lookup system illustrated in
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.
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
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.
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.
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.
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.
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:
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.
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.
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.
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.
Number | Date | Country | Kind |
---|---|---|---|
20146012 | Nov 2014 | FI | national |
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/FI2015/050788 | 11/12/2015 | WO | 00 |