ES2296752T3 - Metodo y dispostivo para almacenar y hacer coincidir (emparejar) expresiones anchas (de gran tamaño) arbitrarias con memorias direccionables por contenido (cam). - Google Patents
Metodo y dispostivo para almacenar y hacer coincidir (emparejar) expresiones anchas (de gran tamaño) arbitrarias con memorias direccionables por contenido (cam). Download PDFInfo
- Publication number
- ES2296752T3 ES2296752T3 ES01934691T ES01934691T ES2296752T3 ES 2296752 T3 ES2296752 T3 ES 2296752T3 ES 01934691 T ES01934691 T ES 01934691T ES 01934691 T ES01934691 T ES 01934691T ES 2296752 T3 ES2296752 T3 ES 2296752T3
- Authority
- ES
- Spain
- Prior art keywords
- cam
- word
- words
- match
- search
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Fluid-Damping Devices (AREA)
- Devices For Checking Fares Or Tickets At Control Points (AREA)
- Management Or Editing Of Information On Record Carriers (AREA)
- Image Analysis (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
Método para almacenar expresiones (31) de anchura arbitraria en memorias direccionables por contenido (CAMs: content addressable memories) (33), en el que el método comprende los pasos de: * dividir la expresión en un número de partes consecutivas denominadas palabras de CAM en lo sucesivo; * almacenar cada palabra en un elemento (33) respectivo de CAM, en el que dichos elementos de CAM son un número de CAMs físicas y/o partes designadas de una CAM física; * asociar cada palabra (32) de CAM con las otras palabras de CAM de la expresión, donde todas las palabras asociadas de CAM expresan la expresión almacenada; * anotar una palabra de CAM que se cruza con una o más de las palabras de CAM de un elemento (33) de CAM; caracterizado por: * crear una palabra, denominada participación (X010) en lo sucesivo, para la que esos bits de las palabras (32) de CAM que se cruzan, que tienen igual valor, los bits correspondientes de la participación reciben ese valor, y para la que esos bits que son definidos en una sola de las palabras de CAM que se cruzan, los bits correspondientes de la participación reciben dicho valor definido; * añadir la participación a la CAM (33) y almacenarla en sus palabras de CAM; * asignar un valor (35) de asociación a la participación, y establecer dicho valor de asociación para coincidir con los valores de asociación de las palabras que se cruzan.
Description
Método y dispositivo para almacenar y hacer
coincidir (emparejar) expresiones anchas (de gran tamaño)
arbitrarias con memorias direccionables por contenido (CAM).
La presente invención se refiere a un método
para almacenar expresiones anchas (de gran tamaño) en una memoria
direccionable por contenido (CAM: content addressable memory) que
comprende un conjunto de elementos de memoria direccionable por
contenido (CAM) de anchura (tamaño) menor, y hacer coincidir
(emparejar) las expresiones anchas (de gran tamaño) con los
contenidos del conjunto de elementos de CAM.
Una memoria direccionable por contenido (CAM) es
un dispositivo de memoria que ha resultado crecientemente valioso
durante los últimos años en algunas aplicaciones. Una CAM puede
realizar operaciones rápidas de almacenamiento y búsqueda. La CAM
proporciona una ventaja de comportamiento funcional respecto a
algoritmos de búsqueda en memoria, tales como búsquedas binarias y
basadas en árbol o memorias intermedias de etiquetas de examen
lateral, comparando la información deseada con toda la lista de
datos prealmacenados simultáneamente, produciendo una reducción de
orden de magnitud del tiempo de búsqueda. Una vez que información
está almacenada en una posición de CAM, es hallada comparando cada
bit en la CAM con los bits de los datos en una expresión de
búsqueda. Si hay una coincidencia para cada bit en una posición con
cada bit correspondiente en la expresión de búsqueda, una salida es
obtenida de la CAM que es un valor de asociación o dirección que
señala la información asociada. La información asociada puede ser
almacenada en un dispositivo de memoria convencional tal como una
memoria RAM de acceso aleatorio. Dependiendo de la aplicación, la
memoria RAM de acceso aleatorio puede contener información o
instrucciones u operaciones, etc. para ser exhibidas o realizadas
cuando hay una coincidencia entre la expresión de búsqueda y la
información almacenada en la CAM. Así, con una CAM, los datos son
suministrados y la dirección es
obtenida.
obtenida.
Como la memoria direccionable por contenido CAM
no necesita líneas de direcciones para hallar datos, la profundidad
de un sistema de memorias que usa CAMs puede ser ampliada tanto como
se desee pero la anchura es limitada por el tamaño del chip. Por
ejemplo, un chip de CAM puede tener 64 a 128 bits de anchura pero
32.768 entradas de profundidad.
Algunas memorias direccionales por contenido
(CAMs) son denominadas CAMs ternarias en las que los datos
almacenados pueden contener valores de bits de 0,1 o X donde X es
"no importa", o sea el valor es igual tanto a 0 como a 1.
La función y las ventajas de la CAM la hace muy
adecuada para aplicaciones y operaciones tales como redes de área
local (LANs: local área networks), gestión de bases de datos,
gestión de almacenamiento de archivos, consulta para reconocimiento
de modelos, etc., y es particularmente adecuada para realizar
operaciones de búsqueda. Por ejemplo, las CAMs pueden ser
utilizadas en conexión con la clasificación Internet Protocol (IP)
que es efectuada en encaminadores. Este es el proceso de clasificar
paquetes IP en categorías que exigen tratamiento especial. Un
subconjunto de la clasificación IP es la filtración IP. La
filtración IP es una característica de seguridad que restringe el
tráfico IP permitiendo o rechazando paquetes aplicando ciertas
reglas. De este modo, los usuarios pueden ser limitados a dominios
o aplicaciones específicas en Internet. Para realizar la
clasificación, las cabeceras IP de paquetes que llegan a un
encaminador necesitan ser comparadas con modelos almacenados en una
tabla, generando una salida que clasifica el paquete. Usualmente,
esta tabla está almacenada en memoria y la coincidencia es efectuada
en software.
Debido a exigencias crecientes de comportamiento
funcional y a conjuntos de búsqueda más grandes y anchos, los
algoritmos de búsqueda basados en software resultan demasiado lentos
y es necesario considerar implementaciones alternativas. Una
alternativa tal es usar una CAM. Sin embargo, las CAMs
comercialmente disponibles no son bastante anchas para la
clasificación de versión 6 de IP (IPv6). Actualmente, las CAMs más
anchas disponibles tienen 136 bits de anchura, que es suficiente
para contener una dirección IPv6 de 128 bits de anchura. Sin
embargo, cuando se clasifican paquetes en un encaminador, es
necesario examinar un número de campos en la cabecera tales como la
dirección de destino, que tiene 128 bits de anchura, y la dirección
de origen que también tiene 128 bits de anchura. También puede ser
necesario observar información adicional que en total puede precisar
varios cientos de bits. Así, no es posible usar las CAMs
comercialmente disponibles en un encaminador IPv6 de una manera
convencional.
En XP000277663, T. Moors y A. Cantoni,
"Memorias direccionables por contenido en cascada", se
describen métodos diferentes de disponer en cascada dispositivos de
CAM para conseguir sistemas de dimensiones mayores. Los métodos
incluyen formar una cadena de margarita de CAMs para aumentar el
número de elementos y posiblemente usar lógica de acarreo
anticipado para aumentar la velocidad a la que la señal habilitadora
se propaga a través de la cascada. Para aumentar el tamaño de
datos, se describe reproducir las etiquetas en CAMs distintas, usar
el almacenamiento de datos disponibles en una memoria CAM primaria
para indexar una memoria CAM/RAM secundaria, o reducir la
redundancia en etiquetas. Para aumentar el tamaño de etiqueta, se
muestra usar una cascada de elementos con o sin un registro de
desplazamiento, una cascada de maestro-esclavo o una
cascada de trie (árbol de búsqueda).
La solicitud WO 01 11630 maneja la resolución de
coincidencia para una memoria asociativa. Se describe la
determinación de una coincidencia óptima a partir de una pluralidad
de coincidencias en una búsqueda en la memoria asociativa. Un campo
de prioridad es asociado con cada elemento de datos almacenado en la
memoria. Una estructura de resolución de coincidencia compara los
campos de prioridad de hacer coincidir elementos de datos para
determinar el elemento de datos de prioridad máxima, lo que es
indicado como coincidencia óptima para una entrada de búsqueda
particular.
El objeto de la invención es proporcionar un
método en el que CAMs de anchura menor son usadas para almacenar
expresiones en CAMs y hacer coincidir expresiones con los contenidos
de CAMs, donde la anchura de la expresión es mayor que la anchura
de las CAMs usadas, o sea emular una CAM ancha con un conjunto de
CAMs menores. En este contexto, el término "expresión" ha de
ser entendido como comprendiendo una fila de un número arbitrario
de bits, donde cada bit puede ser 0,1 y posiblemente X si se usan
CAMs ternarias, donde la expresión forma o contiene información o
datos tales como palabras, direcciones, números de puertos, etc.
Para emular una CAM ancha usando una estructura
de CAMs menos anchas asociadas, la expresión ancha es dividida en
partes más pequeñas, denominadas palabras de CAM en lo sucesivo,
donde cada palabra de CAM es asignada a un elemento de CAM y
almacenada en el elemento de CAM. En este contexto, un elemento de
CAM puede ser una CAM física o una parte dedicada de una CAM. En
cualquier caso, el elemento de CAM tiene una anchura menor que la
expresión ancha.
A cada palabra de CAM que es almacenada en el
elemento respectivo de CAM se le asigna un valor de asociación como
salida, cuyo valor es combinado con otra palabra de CAM asignada a
otro elemento de CAM. Tales asociaciones entre las palabras de CAM
de los elementos de CAM pueden ser efectuadas usando un esquema en
serie o un esquema en paralelo o cualquier combinación de estos.
En un esquema en serie, cada palabra de CAM está
asociada con la palabra subsiguiente de CAM de la expresión
almacenada, formando así una conexión en serie entre las palabras de
CAM. En un esquema en paralelo, cada palabra de CAM está asociada
con la última de las palabras de CAM de la expresión almacenada,
formando así una conexión en paralelo entre las palabras de CAM.
A una palabra de CAM asignada a un elemento de
CAM se la asigna el valor de salida de la expresión completa. Este
elemento de CAM es designado como último elemento de CAM. La palabra
de CAM de este último elemento de CAM debe ser asociada, directa o
indirectamente, con todas las otras palabras de CAM de los otros
elementos de CAM tal que verifica que todas las palabras de CAM
forman conjuntamente la expresión completa.
Cuando se realiza la coincidencia, la expresión
a ser hecha coincidir (emparejada), denominada en lo sucesivo la
expresión de búsqueda, es dividida en partes más pequeñas, palabras
de búsqueda, donde cada palabra de búsqueda es comparada con el
contenido del elemento correspondiente de CAM, las palabras de CAM,
en un orden secuencial a través del elemento de CAM. Cuando una
coincidencia es obtenida entre una palabra de CAM del elemento de
CAM y la palabra específica de búsqueda, o sea una parte de la
expresión buscada, el valor de salida de la palabra de CAM es
combinado con la entrada de su elemento asociado de CAM siguiendo el
mismo esquema anterior.
La salida del último elemento de CAM será la
salida resultante de la CAM emulada total. El valor de salida puede
ser usado directamente tal como, por ejemplo, rechazando o
permitiendo un acceso de paquete a recursos de red de área local
(LAN) cuando se halla una coincidencia, o el valor puede ser usado
en combinación con, por ejemplo una memoria RAM de acceso aleatorio
que contiene información y/o datos, tal como encaminar un paquete a
un puerto específico en un encaminador cuando se halla una
coincidencia, donde la información respecto al puerto es almacenada
en una posición de memoria, asociada con la palabra almacenada y
emparejada de CAM.
Como una CAM solo puede devolver un valor,
coincidencias múltiples no son detectadas, que podría ser el caso
con CAMs ternarias donde algunos bits puede ser X, o sea 0 o 1, y
solo es devuelta la salida de la palabra de CAM con prioridad
máxima. En la mayoría de CAMs, la prioridad es secuencial y
descendente, o sea las palabras de CAM en la parte superior de la
CAM tienen prioridad mayor, principalmente debido al modo secuencial
de buscar. Sin embargo, podría haber otros órdenes de prioridad tal
como ascendente o que cada palabra almacenada de CAM reciba una
prioridad individual con independencia de su posición en la CAM. Sin
embargo, la palabra de CAM con prioridad máxima podría no ser parte
de la expresión coincidente completa, pero lo es una palabra de CAM
con prioridad menor. Para resolver esto, palabras adicionales de
CAM, denominadas "participaciones" ("shares"), son
añadidas
a la CAM.
a la CAM.
Las participaciones (shares) son el resultado de
una operación sobre un número de palabras almacenadas de CAM. Si
dos palabras de CAM se cruzan, o sea existen palabras de búsqueda
para las que coinciden estas dos palabras de CAM, una participación
ha de ser creada. La creación de la participación es tal que para
esos bits de las palabras comparadas de CAM que son iguales, los
bits correspondientes de la participación reciben ese valor, y para
los bits que son X en una de las palabras de CAM y definidos (0 o 1)
en la otra palabra de CAM, los bits correspondientes de la
participación reciben el valor definido. De ese modo, la
participación coincidirá con todas las palabras de búsqueda para
las que coinciden todos sus argumentos. Además, es necesario
priorizar la participación respecto a las palabras de CAM a partir
de las que fue creada, o sea almacenar la participación por encima
de ellas, para que las cubra u oscurezca de modo que en una
búsqueda, la palabra de búsqueda llegue primero a la
participación.
Según la invención, los elementos de CAM pueden
ser divididos en niveles con prioridad diferente, tal que
participaciones creadas debido a dos palabras de CAM que se cruzan
son situadas en un nivel superior que las palabras que se cruzan,
asegurando y facilitando de tal modo la priorización de las
participaciones con relación a las palabras de CAM.
Usando participaciones, es posible detectar
coincidencias múltiples que usan un valor de salida. De este modo,
se exploran todas las expresiones completas que coinciden
posiblemente.
Para incluir todos los casos posibles de
coincidencias múltiples en un elemento de CAM, todas las
participaciones posibles deben ser añadidas basadas en cualquier
combinación y número de palabras de CAM que pueden coincidir
simultáneamente. Además, cada participación debe ser añadida tal que
sea priorizada respecto a las palabras originales de CAM y también
respecto a otras participaciones que tienen menos argumentos.
Finalmente, palabras de CAM pueden ser omitidas
si las oscurece (cubre) la unión de todas las palabras de CAM que
tienen una prioridad mayor. Con el método según la invención,
expresiones anchas pueden ser almacenadas en un conjunto de CAMs
más pequeñas. Esto permite búsquedas eficientes de expresiones con
anchura arbitraria usando circuitos comercialmente disponibles. Una
alternativa al método según la invención es un algoritmo basado en
memoria tal como una búsqueda binaria o basada en árbol. Las CAMs
proporcionan la ventaja de comportamiento funcional respecto a esta
clase de algoritmos comparando la expresión que queremos hacer
coincidir con toda la lista de palabras prealmacenadas de CAM
simultáneamente, proporcionando reducción de órdenes de magnitud en
el tiempo de búsqueda. Usando CAMs, las búsquedas son efectuadas en
tiempo constante y el tiempo de búsqueda depende simplemente del
número necesario de llamadas de CAM y, por tanto, de la anchura de
las expresiones.
Estas y otras ventajas y aspectos de la
invención resultarán evidentes a partir de la descripción detallada
siguiente y a partir de los dibujos adjuntos.
En la descripción detallada siguiente de la
invención, se hará referencia a los dibujos adjuntos, de los
que:
la Figura 1 muestra una representación
esquemática de almacenar expresiones anchas de búsqueda en elementos
menores de CAM usando un esquema en serie según la invención,
la Figura 2 muestra una representación
esquemática de almacenar expresiones anchas de búsqueda en tres
elementos menores de CAM usando un esquema en paralelo según la
invención,
las Figuras 3a-e muestran la
conexión entre palabras de CAM en elementos diferentes de CAM,
la Figura 4 muestra las palabras A y B de CAM
representadas como intervalos numéricos,
la Figura 5 muestra las palabras A, B y A\capB
de CAM representadas como intervalos numéricos,
la Figura 6 muestra las palabras A, B y C de CAM
representadas como intervalos numéricos,
la Figura 7 muestra las palabras A, B y C de CAM
representadas como intervalos numéricos y el uso de participaciones
según la invención, y
la Figura 8 muestra esquemáticamente un
dispositivo computador según la invención.
La presente invención se refiere a almacenar y
buscar en CAMs y en particular CAMs ternarias. Las búsquedas en una
CAM se efectúan comparando una expresión de búsqueda, que es
suministrada como entrada a la CAM, con modelos (palabras de CAM)
que están almacenados en la CAM. Si una palabra de CAM coincide con
la expresión de búsqueda, una coincidencia es indicada y un valor
de salida es devuelto. El valor de salida puede ser una dirección
que puede ser usada para acceder a una memoria, por ejemplo una
memoria RAM de acceso aleatorio, donde el valor de salida
correspondiente para esta coincidencia es especificado. En este
documento, el término CAM se refiere a esta combinación.
En una CAM ternaria, las palabras de CAM pueden
contener valores de bits de 0, 1 y X, donde X es igual tanto a 1
como a 0 en la palabra de búsqueda.
Supóngase que las expresiones o entradas que son
usadas y han de ser almacenadas son más anchas que la anchura de la
CAM usada. Según la invención, la expresión 31 es dividida en
partes, aquí denominadas palabras 32 de CAM. Cada parte es
almacenada en una posición de un elemento 33 de CAM, en el que cada
elemento 33 de CAM es menos ancho que la anchura total de la
expresión 31. Cada elemento 33 de CAM puede ser una CAM física o
una parte dedicada de una CAM y puede ser de tamaño diferente en
términos de anchura en bits y número de posiciones de
almacenamiento (profundidad de la CAM). Si los elementos de CAM
están dispuestos en una CAM física, partes de los bits de la CAM
pueden ser usadas para indicar que un cierto número de posiciones
pertenecen a un cierto elemento de CAM. Cada palabra 32 de CAM de
la expresión es almacenada en un campo 34 de palabra de un elemento
específico de CAM y cada palabra de CAM es conectada a otras
palabras de CAM usando un valor 35 de asociación (indicado
simbólicamente por medio de una flecha en la Figura 1 y en la Figura
2), donde el valor 35 de asociación es el valor de salida desde una
palabra de CAM y donde el valor de asociación es dispuesto en un
apéndice, denominado campo 36 de selección en lo sucesivo,
conectado al campo 34 de palabra de la palabra asociada de CAM en
otro elemento 33 de CAM. Al menos uno de los elementos 33 de CAM
tiene un campo 36 de selección.
Un enfoque según la invención es combinar en
serie estos elementos 33 de CAM. El esquema en serie puede
describirse como sigue: probar el número de bits que ajusta en el
primer elemento de CAM y almacenar esta parte de la expresión 31,
la palabra 32 de CAM, en el campo 34 de palabra del elemento 33 de
CAM. Un número subsiguiente de bits de la expresión son probados
respecto al elemento siguiente de CAM y esta palabra de CAM es
almacenada en el elemento siguiente de CAM. El valor 35 de
asociación de la primera palabra de CAM es introducido en el campo
36 de selección de la palabra subsiguiente de CAM. El proceso es
repetido hasta que toda la expresión es almacenada en elementos 33
de CAM, donde cada palabra de CAM es asociada con la palabra
subsiguiente de CAM por los valores 35 de asociación, Figura 1.
Aparte de ilustrar el almacenamiento de
expresiones anchas 31, la Figura 1 puede ser usada para ilustrar la
coincidencia de una expresión de búsqueda con expresiones almacenada
en CAMs. En la descripción siguiente de coincidencia, el número 31
de referencia se refiere a una expresión de búsqueda y el número 32
de referencia se refiere a una palabra de búsqueda.
Cuando la coincidencia ha de ser realizada, la
expresión 31 de búsqueda es dividida en un número de partes,
palabras 32 de búsqueda, donde cada palabra 32 de búsqueda tiene una
anchura en bits correspondiente a su elemento 33 de CAM. La primera
palabra 32 de búsqueda es comparada con las palabras de CAM en los
campos 34 de palabras del primer elemento de CAM. Cuando una
coincidencia es obtenida, el valor de salida de la palabra
emparejada de CAM, el valor 35 de asociación, es combinado con la
siguiente palabra de búsqueda. La siguiente palabra de búsqueda,
junto con el valor 35 de asociación obtenido de la primera
coincidencia, es probada respecto a las palabras de CAM en el
segundo elemento de CAM. Cuando una coincidencia es obtenida entre
la palabra 32 de búsqueda y una palabra de CAM y el valor 35 de
asociación combinado con la palabra de búsqueda coincide con el
contenido del campo 36 de selección, un valor de salida es obtenido,
el valor 35 de asociación que, a su vez, es combinado con la parte
siguiente de la expresión. El proceso continua hasta que es obtenida
una coincidencia entre todas las palabras de búsqueda y las
palabras de CAM de los elementos de CAM.
Cuando es obtenida una coincidencia completa de
la palabra específica de CAM, es devuelto un valor de asociación
para la expresión completa. El valor de asociación puede ser usado
como una dirección a una memoria RAM convencional.
El número de elementos 33 de CAM que es
necesario para hacer coincidir (emparejar) la palabra ancha 31 de
búsqueda es tal que la anchura total de todos los campos 34 de
palabras es mayor o igual que la anchura de la palabra de búsqueda
que ha de ser emparejada.
Otro enfoque según la invención es usar un
esquema en paralelo. Con el esquema en paralelo, la anchura de la
expresión 31 es comprobada para establecer el número de elementos 33
de CAM necesarios para almacenar, basado en el conocimiento de la
anchura de cada elemento de CAM disponible. La primera parte de la
expresión, la primera palabra 32 de CAM, es almacenada en un campo
34 de palabra en un primer elemento de CAM. El valor 35 de
asociación de la palabra de CAM es introducido en un campo 36 de
selección del último elemento de CAM necesario para almacenar la
expresión 31 particular. La parte siguiente de la expresión es
almacenada en el campo de palabra de otro elemento de CAM y su
valor 35 de asociación es introducido en un campo adicional 36 de
selección en el último elemento de CAM. El proceso continúa hasta
que todas las partes de la expresión son almacenadas en elementos
33 de CAM. Así, el último elemento de CAM tiene un número de campos
36 de selección correspondiente al número de elementos de CAM
usados para almacenar la expresión excepto por la última parte de la
expresión (si hay alguna). Este esquema es ilustrado en la Figura 2
para tres elementos de CAM.
Cuando una coincidencia ha de ser realizada con
el esquema en paralelo, la primera parte de la expresión 31 de
búsqueda, la palabra 32 de búsqueda, es comparada con los contenidos
de los campos 34 de palabras del primer elemento 33 de CAM. Cuando
una coincidencia es obtenida entre la palabra 32 de búsqueda y una
palabra de CAM, el valor 35 de asociación de la palabra de CAM es
introducido como entrada en el último elemento de CAM. Las otras
partes de la expresión 31 de búsqueda son comparadas del mismo modo
con las palabras de CAM de los elementos correspondientes de CAM.
Cada coincidencia genera un valor 35 de asociación que es usado como
entrada en el último elemento de CAM. En el último elemento de CAM
en el esquema en paralelo, los valores 35 de asociación de todos
los elementos 33 anteriores de CAM son combinados en un conjunto de
campos 36 de selección, y este conjunto es probado junto con el
campo restante de palabra (si hay alguno).
\newpage
Ha de comprenderse que los esquemas en serie y
en paralelo antes descritos pueden ser combinados en esquemas más
complejos. Por ejemplo, en una estructura en serie, cada elemento de
CAM puede ser sustituido por una estructura en paralelo de
elementos de CAM y viceversa. De este modo, pueden construirse
estructuras de complejidad
arbitraria.
arbitraria.
Un modo de formar esquemas es proveer a los
elementos de CAM de un bit de control. El bit de control puede ser
usado para indicar si las palabras de CAM del elemento de CAM están
provistas o no de campos de selección o, en otras palabras, si el
elemento sigue el esquema en serie o el esquema en paralelo. Por
ejemplo, el bit de control puede ser dispuesto en cero si el
elemento de CAM no tiene campos de selección y en uno si elemento
de CAM tiene campos de selección. Los esquemas que son combinaciones
sencillas de los esquemas en serie y en paralelo pueden ser
formados por medio de usar un solo bit de control. Más de un bit de
control pueden ser necesarios para formar esquemas más
complejos.
En general, el esquema en serie requiere menos
entradas de CAM que el esquema en paralelo mientras que el esquema
en paralelo favorece el tiempo de búsqueda, especialmente si ramales
en paralelo son asignados a CAMs físicas diferentes.
Los esquemas anteriores funcionan como se
describió si solo hay coincidencias únicas en los elementos de CAM,
o sea cuando los bits de la palabra de búsqueda y las palabras de
CAM solo pueden tener los valores definidos 0 o 1. Cuando se usan
CAMs ternarias, las palabras de CAM pueden contener valores de bits
de 0, 1 y X, lo que hace posible coincidencias múltiples. X es
igual tanto a 0 como con 1 en la palabra de búsqueda. Si son
posibles coincidencias múltiples, solo se detecta la coincidencia
más priorizada en la CAM. Esta palabra podría no ser parte de la
expresión coincidente completa pero una palabra de CAM con prioridad
menor lo es.
Un ejemplo de esto es mostrado en la Figura 3a.
Supóngase que tenemos dos expresiones A: x0x000 y B: x01x10 con
valores de salida 00 y 01, respectivamente, como se muestra en la
Figura 3a. Supóngase además que los elementos de CAM usados tienen
campos de palabras que pueden contener cuatro bits como máximo cada
uno y tienen un orden de prioridad descendente. En realidad, los
elementos de CAM pueden ser, y casi siempre lo son, más anchos que
eso, pero cuatro es usado aquí por claridad. A y B son almacenados
según la invención tal que los cuatro primeros bits, las palabras
a0 y b0 de CAM, de las expresiones son almacenados en primer
elemento de CAM. Estas palabras de CAM obtienen valores 00 y 01 de
salida, respectivamente. El resto de los bits, las palabras a1 y b1
de CAM, de las expresiones A y B son almacenados en el elemento
subsiguiente de CAM, donde los campos de selección de estas
palabras de CAM obtienen los valores correspondientes 00 y 01,
respectivamente. Los valores de salida de las expresiones A y B son
asignados al último elemento de CAM.
Si una expresión de búsqueda como 001010 ha de
ser emparejada con los contenidos de los elementos de CAM, Figura
3b, la expresión de búsqueda es dividida de modo que los primeros
cuatro bits, la palabra de búsqueda, son comparados con las
palabras de CAM del primer elemento de CAM. Como puede verse en la
figura, la palabra de búsqueda coincide con ambas palabras a0 y b0
de CAM debido a los valores X en los bits tres y cuatro de a0 y b0.
Sin embargo, solo a0 es comprobada y emparejada puesto que está más
alta, priorizada. La coincidencia producirá un valor 00 de salida,
que es combinado con la palabra 10 de búsqueda subsiguiente. Sin
embargo, esto no producirá una coincidencia en el elemento
subsiguiente de CAM puesto que 0010 no está almacenada allí. Esto
es porque la coincidencia en el primer elemento de CAM no fue una
coincidencia correcta.
La solución según la invención es convertir las
palabras de CAM en elementos de CAM que tienen una CAM asociada de
tal modo que solo son posibles coincidencias únicas.
En la Figura 4, dos palabras de CAM, A y B, son
representadas como "intervalos" de valores numéricos que
representan palabras de CAM para los que coinciden. Obsérvese que
estos intervalos no son necesariamente contiguos sino que
representan el conjunto de palabras de búsqueda que coincide con una
palabra de CAM que consta de un número de bits, donde los bits
pueden tener valores 0, 1 y X.
Para conseguir solo coincidencias únicas, A y B
pueden ser sustituidas por tres expresiones:
- 1.
- valores que coinciden tanto con A como con B,
- 2.
- valores que coinciden solo con A,
- 3.
- valores que coinciden solo con B.
Según la invención, se usa una expresión
"participación" ("share") con la que es posible construir
la expresión 1, o sea que coincide tanto con A como con B. La
expresión "participación" será definida y descrita con detalle
a continuación. Sin embargo, no hay modo fácil de expresar los casos
2 y 3.
Esto se resuelve usando el hecho de que la CAM
prioriza coincidencias como se describió antes, por ejemplo según el
orden en el que las expresiones son almacenadas, véase la Figura
5.
\newpage
La Figura 5 ilustra que los tres intervalos en
la Figura 4 pueden ser representados por las expresiones
"A\capB" (A y B) y las expresiones originales siempre que
A\capB sea priorizada, "oscureciendo" de tal modo los
intervalos indeseados de A y B.
La participación de dos palabras puede ser
calculada usando el operador relativo a bits definido en la Tabla 1
siguiente. Si uno o más bits en el resultado de este operador
contienen Ø, no hay participación.
Supóngase que dos expresiones anchas A y B son
almacenadas en elementos de CAM. A y B han sido divididas en partes
a_{0},a_{1}... y b_{0},b_{1},... que son añadidas a
elementos diferentes de CAM como se describió antes en relación con
la Figura 3a.
Si a_{0}\capb_{0}\neqØ, como se muestra
en las Figuras 3a y b, es necesario añadir una participación en el
primer elemento de CAM. La participación es creada usando el
operador de bits y, en el ejemplo mostrado en las Figuras
3a-c, la participación obtiene el valor X010. Para
priorizar la participación, es situada por encima de las palabras
de CAM. A esta participación debe ser asignado además un valor de
asociación que coincida con los campos de selección tanto de a_{1}
como de b_{1} para realizar la operación de participación.
Un modo de conseguir este efecto es crear copias
de a_{1} y b_{1} (a_{1}' y b_{1}' respectivamente) y
asignar campos de selección que coinciden con el valor de asociación
de a_{0}\capb_{0}, Figura 3c. En el caso mostrado, el valor
de asociación de la participación es dispuesto en 11, como así lo
son los campos de selección de las copias.
Otro modo de conseguir este efecto es usar
valores X en los campos de selección de a_{1} y b_{1}, Figura
3d, y/o X en el valor de asociación de a_{0}\capb_{0}, Figura
3e, tal que a_{1} y b_{1} no necesitan ser copiados.
El concepto de participaciones puede ser
ampliado para cualquier número de palabras de CAM. La participación
de X palabras de CAM es definida entonces como el conjunto de
modelos para el que coinciden todas estas palabras de CAM.
Supóngase que tres entradas A, B y C son
añadidas a un elemento de CAM y que sus intervalos numéricos se
cruzan como se muestra en la Figura 6.
Para conseguir solo coincidencias únicas, no es
suficiente añadir la participación de A, B y C (A\capB\capC)
porque esto incluye solo el caso cuando coinciden todas las tres
palabras de CAM. Para incluir los casos cuando solo coinciden A y
B, A y C o B y C, deberían añadirse también A\capB, A\capC y
B\capC, como se muestra en la Figura 7. En general, todas las
participaciones de cualquier número y combinación de palabras de CAM
deberían ser añadidas tal que sean incluidas todas las
combinaciones de coincidencias múltiples.
En este ejemplo, las palabras B y A\capC de
CAM son oscurecidas (cubiertas) completamente por palabras de CAM
que son priorizadas porque las palabras de CAM más altas en la CAM
son priorizadas tal que la participación es priorizada. Por tanto B
y A\capC nunca pueden devolver su valor y pueden ser omitidas.
La comprobación de si palabras de CAM se cruzan
puede ser realizada cada vez que una palabra nueva de CAM ha de ser
almacenada o después de que un conjunto de palabras de CAM son
almacenadas.
En algunos casos, la participación resultante de
dos palabras de CAM que se cruzan es igual que una de las palabras
de CAM. Como un ejemplo, una palabra 10XX de CAM a ser almacenadas
es comprobada respecto a las palabras de CAM contenidas en el
elemento de CAM. Supóngase que una de las palabras de CAM es 1XXX.
Según la invención, como ellas se cruzan, una participación es
necesaria debido a los segundos bits. Sin embargo, la participación
resultante 10XX es igual que la palabra de CAM a ser almacenada, o
sea si la palabra de CAM fuera introducida, sería oscurecida
(cubierta) completamente por la participación debido a la prioridad.
Por tanto, la palabra oscurecida (cubierta) de CAM no necesita ser
introducida y la participación obtiene el valor de asociación que
la palabra de CAM iba a recibir. También podría ser que la
participación sea igual que una palabra almacenada de CAM. Debido a
la priorización, la participación oscurece (cubre) completamente y
la palabra oscurecida (cubierta) de CAM puede ser eliminada, y
posiblemente también las palabras de CAM con las que está
asociada.
Para algunas aplicaciones, es posible reducir el
número de participaciones necesarias reduciendo el número de
entradas, palabras de CAM, si pueden ser aprovechadas restricciones
y relaciones conocidas dentro de conjuntos de datos. Por ejemplo,
para direcciones IP en muchas aplicaciones, solo es significativo
tener X's en posiciones consecutivas al final de la palabra. Si
este campo de datos es asignado para ser el único campo en un
elemento de CAM, cada participación oscurecerá (cubrirá) una de sus
entradas, no produciendo entradas extras.
El número de entradas añadidas como resultado de
añadir participaciones puede ser reducido si se emplea un esquema
adecuado de usar valores X en campos de selección. Adicionalmente,
los valores de asociación pueden contener valores X usando máscaras
de entrada globales. Un esquema que emplea esto también puede ser
previsto para reducir el número de entradas.
La presente invención puede ser implementada en
cualquier dispositivo destinado y usado para computar información
digital usando CAMs, tal como por ejemplo encaminadores, ordenadores
de uso general, etc. La invención es implementada preferiblemente
en el software del dispositivo para realizar el almacenamiento y la
coincidencia en los elementos de CAM. Como se mencionó antes, la
invención es aplicable tanto a varias CAMs más pequeñas, donde cada
CAM es un elemento de CAM, como a una CAM grande que es dividida en
varios elementos de CAM, o combinaciones de estas. La Figura 8
muestra un ejemplo esquemático de un encaminador 10 en el que la
presente invención puede ser utilizada. En el encaminador, las
direcciones de los paquetes entrantes en el enlace entrantes 12 son
comprobadas en la tabla 14 de encaminamiento con la función 16 de
consulta de tabla, que comprende las CAMs y los medios para dividir
la información de direcciones en partes, medios para hacer coincidir
(emparejar) las partes en elementos de CAM y medios para combinar
las coincidencias en los elementos de CAM donde están situadas.
Dependiendo del resultado de la coincidencia, los paquetes son
enviados después a la función 18 de clasificación IP que decidirá
si desechar el paquete IP, enviarlo a software para procesamiento
adicional o enviar el paquete al enlace saliente 20 por vía de un
dispositivo conmutador 22.
En este contexto, el valor de salida de la
coincidencia en la CAM puede ser usado para obtener información
desde otros medios de memoria que contienen información y datos
referentes a direcciones a las que enviar los paquetes o
instrucciones sobre como tratar o procesar el paquete. En algunas
aplicaciones, la función de clasificación IP está situada antes que
la función de consulta de tabla. También puede haber varias otras
funciones y características incluidas en el encaminador para manejar
paquetes. Puesto que estas no forman parte de la invención, no serán
descritas con detalle.
El manejo de las CAMs según la presente
invención es implementado preferiblemente en el software del
dispositivo computador en la forma de medios de código de programa
de ordenador o porciones de código de software aunque, por
supuesto, es posible implementar la invención en el hardware del
dispositivo computador. El software puede ser almacenado en medios
de memoria adecuados tales como memoria ROM de solo lectura, memoria
EPROM de solo lectura programable y borrable, memoria RAM de acceso
aleatorio, memoria SDRAM de acceso aleatorio dinámica sincrónica,
discos ópticos o magnéticos así como en una forma distribuida.
Ha de comprenderse que las realizaciones
descritas anteriormente y mostradas en los dibujos han de ser
consideradas como ejemplos no limitativos de la presente invención
y que el alcance de protección es definido por las reivindicaciones
de patente.
Claims (15)
-
\global\parskip0.900000\baselineskip
1. Método para almacenar expresiones (31) de anchura arbitraria en memorias direccionables por contenido (CAMs: content addressable memories) (33), en el que el método comprende los pasos de:- -
- dividir la expresión en un número de partes consecutivas denominadas palabras de CAM en lo sucesivo;
- -
- almacenar cada palabra en un elemento (33) respectivo de CAM, en el que dichos elementos de CAM son un número de CAMs físicas y/o partes designadas de una CAM física;
- -
- asociar cada palabra (32) de CAM con las otras palabras de CAM de la expresión, donde todas las palabras asociadas de CAM expresan la expresión almacenada;
- -
- anotar una palabra de CAM que se cruza con una o más de las palabras de CAM de un elemento (33) de CAM;
caracterizado por:- -
- crear una palabra, denominada participación (X010) en lo sucesivo, para la que esos bits de las palabras (32) de CAM que se cruzan, que tienen igual valor, los bits correspondientes de la participación reciben ese valor, y para la que esos bits que son definidos en una sola de las palabras de CAM que se cruzan, los bits correspondientes de la participación reciben dicho valor definido;
- -
- añadir la participación a la CAM (33) y almacenarla en sus palabras de CAM;
- -
- asignar un valor (35) de asociación a la participación, y establecer dicho valor de asociación para coincidir con los valores de asociación de las palabras que se cruzan.
- 2. Método según la reivindicación 1, que comprende los pasos de asignar un valor (35) de asociación a cada palabra de CAM, y asignar un valor de selección a cada palabra asociada de CAM, en el que el valor de selección coincide con el valor de asociación.
- 3. Método según la reivindicación 1 o 2, en el que asociar cada palabra (32) de CAM con su palabra consecutiva de CAM.
- 4. Método según la reivindicación 1 o 3, en el que asociar cada palabra (32) de CAM con la última palabra de CAM de la expresión (31).
- 5. Método según la reivindicación 1 o 2, en el que asociar al menos una primera palabra (32) de CAM con su palabra consecutiva de CAM y en el que asociar al menos una segunda palabra de CAM con una tercera palabra de CAM, cuya tercera palabra de CAM es una palabra de CAM distinta que la palabra consecutiva de CAM de la segunda palabra de CAM.
- 6. Método según cualquiera de las reivindicaciones 1 a 5, en el que cada elemento (33) de CAM tiene una anchura que es menor que la anchura de la expresión (31).
- 7. Método según la reivindicación 1, que comprende los pasos de copiar las palabras asociadas con las palabras coincidentes, y asignar campos (36) de selección a las palabras copiadas, cuyos campos de selección coinciden con el valor de asociación de la participación.
- 8. Método según cualquiera de las reivindicaciones precedentes, que comprende el paso adicional de asignar a la participación (X010) una prioridad más alta que las palabras que se cruzan.
- 9. Método para hacer coincidir (emparejar) expresiones (31) de búsqueda de anchura arbitraria con expresiones almacenadas en CAM según, la reivindicación 1, en el que el método comprende los pasos de:
- -
- dividir la expresión de búsqueda en partes consecutivas denominadas palabras (32) de búsqueda en lo sucesivo;
- -
- comparar cada una de dichas palabras de búsqueda con las palabras de CAM de un elemento (33) respectivo de CAM de un número de elementos de CAM para obtener una coincidencia entre la palabra (32) de búsqueda y una palabra de CAM,
caracterizado por:- -
- asociar dichas coincidencias entre sí, correspondiendo las coincidencias asociadas a dicha expresión (31); y
- -
- obtener un valor de salida a partir de la coincidencia.
\global\parskip1.000000\baselineskip
- 10. Método según la reivindicación 9 y la reivindicación 3, en el que una coincidencia entre una palabra (32) de búsqueda y una palabra de CAM proporciona un valor (35) de asociación, cuyo valor de asociación es usado junto con la palabra consecutiva de búsqueda para hacer coincidir (emparejar) la palabra consecutiva de búsqueda con las palabras de CAM de su elemento (33) de CAM.
- 11. Método según la reivindicación 9 y la reivindicación 4, en el que una coincidencia entre una palabra (32) de búsqueda y las palabras de CAM de su elemento (33) de CAM para todas las palabras de búsqueda de la expresión (31) proporcionan valores (35) de asociación a la última palabra de búsqueda de la expresión.
- 12. Método según la reivindicación 9 y la reivindicación 5, en el que una coincidencia entre al menos una primera palabra (32) de búsqueda y una palabra de CAM proporciona un primer valor (35) de asociación, cuyo primer valor de asociación es usado junto con la palabra consecutiva de búsqueda para hacer coincidir (emparejar) la palabra consecutiva de búsqueda con las palabras de CAM de su elemento (33) de CAM, y en el que una coincidencia entre al menos una segunda palabra (32) de búsqueda y una palabra de CAM proporciona un segundo valor (35) de asociación , cuyo segundo valor de asociación es usado junto con al menos otro valor de asociación para hacer coincidir (emparejar) una de las palabras de búsqueda de la expresión (31).
- 13. Dispositivo (10) para almacenar expresiones (31) de anchura arbitraria en memorias direccionables por contenido (CAMs) (33), que comprende:
- -
- medios (16) para dividir la expresión en un número de partes consecutivas denominadas palabras (32) de CAM en lo sucesivo;
- -
- medios para almacenar cada palabra en un elemento respectivo (33) de CAM, en los que dichos elementos de CAM son un número de CAMs físicas y/o partes designadas de una CAM física;
- -
- medios para asociar cada palabra de CAM con las otras palabras de CAM de la expresión (31) donde todas las palabras asociadas de CAM expresan la expresión almacenada;
- -
- medios (16) para anotar una palabra de CAM que se cruza con una o más de las palabras de CAM de un elemento de CAM;
caracterizado por:- -
- medios (16) para crear una palabra, denominada participación (X010) en lo sucesivo, para la que esos bits de las palabras (32) de CAM que se cruzan que tienen valor igual, los bits correspondientes de la participación reciben ese valor, y para la que esos bits que son definidos en una sola de las palabras de CAM que se cruzan, los bits correspondientes de la participación reciben dicho valor definido;
- -
- medios para añadir la participación a la CAM (33) y almacenarla en sus palabras (32) de CAM;
- -
- medios para asignar un valor (35) de asociación a la participación, y establecer dicho valor de asociación para coincidir con los valores de asociación de las palabras que se cruzan.
- 14. Dispositivo (10) según la reivindicación 13, que comprende medios (16) para asignar el valor (35) de asociación a cada palabra de CAM, y asignar un valor de selección a cada palabra asociada de CAM, en el que el valor de selección coincide con el valor de asociación.
- 15. Dispositivo (10) para hacer coincidir (emparejar) expresiones (31) de búsqueda de anchura arbitraria con expresiones almacenadas en memorias direccionables por contenido (CAMs) (33) según la reivindicación 13, que comprende:
- -
- medios (16) para dividir la expresión de búsqueda en partes consecutivas denominadas palabras (32) de búsqueda en lo sucesivo;
- -
- medios (16) para comparar cada una de dichas palabras de búsqueda con las palabras de CAM de un elemento (33) respectivo de CAM de un número de elementos de CAM para obtener una coincidencia entre la palabra de búsqueda y una palabra de CAM,
caracterizado por:- -
- medios (16) para asociar dichas coincidencias entre sí, correspondiendo las coincidencias asociadas a dicha expresión (31), y
- -
- medios para obtener un valor de salida a partir de la coincidencia.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/SE2001/000719 WO2002082458A1 (en) | 2001-04-03 | 2001-04-03 | Method and device for storing and matching arbitrary wide expressions to content addresseable memories |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2296752T3 true ES2296752T3 (es) | 2008-05-01 |
Family
ID=20283196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES01934691T Expired - Lifetime ES2296752T3 (es) | 2001-04-03 | 2001-04-03 | Metodo y dispostivo para almacenar y hacer coincidir (emparejar) expresiones anchas (de gran tamaño) arbitrarias con memorias direccionables por contenido (cam). |
Country Status (6)
Country | Link |
---|---|
US (1) | US7054996B2 (es) |
EP (1) | EP1393322B1 (es) |
AT (1) | ATE382182T1 (es) |
DE (1) | DE60132117T2 (es) |
ES (1) | ES2296752T3 (es) |
WO (1) | WO2002082458A1 (es) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7177978B2 (en) * | 2002-08-10 | 2007-02-13 | Cisco Technology, Inc. | Generating and merging lookup results to apply multiple features |
US11461666B2 (en) * | 2015-06-23 | 2022-10-04 | Gamesys, Ltd. | Systems and methods for binary tree storage |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10190744A (ja) * | 1996-12-26 | 1998-07-21 | Toshiba Corp | 情報記憶装置 |
US6574702B2 (en) * | 1999-02-23 | 2003-06-03 | Netlogic Microsystems, Inc. | Method and apparatus for determining an exact match in a content addressable memory device |
US6748484B1 (en) * | 1999-08-11 | 2004-06-08 | Intel Corporation | Match resolution circuit for an associative memory |
CA2321466C (en) * | 2000-09-29 | 2006-06-06 | Mosaid Technologies Incorporated | Priority encoder circuit and method |
US6665202B2 (en) * | 2001-09-25 | 2003-12-16 | Integrated Device Technology, Inc. | Content addressable memory (CAM) devices that can identify highest priority matches in non-sectored CAM arrays and methods of operating same |
-
2001
- 2001-04-03 US US10/473,965 patent/US7054996B2/en not_active Expired - Fee Related
- 2001-04-03 AT AT01934691T patent/ATE382182T1/de not_active IP Right Cessation
- 2001-04-03 DE DE60132117T patent/DE60132117T2/de not_active Expired - Lifetime
- 2001-04-03 WO PCT/SE2001/000719 patent/WO2002082458A1/en active IP Right Grant
- 2001-04-03 ES ES01934691T patent/ES2296752T3/es not_active Expired - Lifetime
- 2001-04-03 EP EP01934691A patent/EP1393322B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP1393322B1 (en) | 2007-12-26 |
ATE382182T1 (de) | 2008-01-15 |
DE60132117T2 (de) | 2008-12-11 |
WO2002082458A1 (en) | 2002-10-17 |
US7054996B2 (en) | 2006-05-30 |
US20040111556A1 (en) | 2004-06-10 |
EP1393322A1 (en) | 2004-03-03 |
DE60132117D1 (de) | 2008-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10491521B2 (en) | Field checking based caching of ACL lookups to ease ACL lookup search | |
US7525958B2 (en) | Apparatus and method for two-stage packet classification using most specific filter matching and transport level sharing | |
US20230127391A1 (en) | Algorithmic tcam based ternary lookup | |
US7933282B1 (en) | Packet classification device for storing groups of rules | |
US9269411B2 (en) | Organizing data in a hybrid memory for search operations | |
EP1649389B1 (en) | Internet protocol security matching values in an associative memory | |
US7986696B1 (en) | Method and apparatus for longest prefix matching | |
US7408932B2 (en) | Method and apparatus for two-stage packet classification using most specific filter matching and transport level sharing | |
US20150127900A1 (en) | Ternary content addressable memory utilizing common masks and hash lookups | |
US8599859B2 (en) | Iterative parsing and classification | |
JP2009532989A (ja) | Camのキーサイズを超えるテーブルインデックスを用いてテーブルルックアップ動作を実行する方法 | |
US9672239B1 (en) | Efficient content addressable memory (CAM) architecture | |
Meiners et al. | Hardware based packet classification for high speed internet routers | |
CN105760411B (zh) | 混合通配符匹配表 | |
Pao et al. | A multi-pipeline architecture for high-speed packet classification | |
US7739445B1 (en) | Circuit, apparatus, and method for extracting multiple matching entries from a content addressable memory (CAM) device | |
Wang et al. | Memory-based architecture for multicharacter Aho–Corasick string matching | |
US20040044868A1 (en) | Method and apparatus for high-speed longest prefix match of keys in a memory | |
Lim et al. | A new hierarchical packet classification algorithm | |
Mishra et al. | PC-DUOS: Fast TCAM lookup and update for packet classifiers | |
ES2296752T3 (es) | Metodo y dispostivo para almacenar y hacer coincidir (emparejar) expresiones anchas (de gran tamaño) arbitrarias con memorias direccionables por contenido (cam). | |
Nikolenko et al. | How to represent IPv6 forwarding tables on IPv4 or MPLS dataplanes | |
US7415012B1 (en) | Systems and methods for high speed packet classification | |
US20130163595A1 (en) | Packet classification apparatus and method for classifying packet thereof | |
Kuo et al. | A memory-efficient TCAM coprocessor for IPv4/IPv6 routing table update |