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 PDF

Info

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
Application number
ES01934691T
Other languages
English (en)
Inventor
Kjell Gunnar Torkelsson
Johan Mathijs Ditmar
Lars-Orjan Kling
Hakan Otto Ahl
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Application granted granted Critical
Publication of ES2296752T3 publication Critical patent/ES2296752T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital 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).
Campo técnico
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.
Antecedentes de la invención
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.
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.
Descripción breve de la invención
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.
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.
Descripción breve de los dibujos
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.
Descripción detallada de 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.
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.
TABLA 1
1
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)

  1. \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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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.
ES01934691T 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). Expired - Lifetime ES2296752T3 (es)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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