ES2766861T3 - Método de procesamiento de paquetes y elemento de reenvío - Google Patents

Método de procesamiento de paquetes y elemento de reenvío Download PDF

Info

Publication number
ES2766861T3
ES2766861T3 ES17156167T ES17156167T ES2766861T3 ES 2766861 T3 ES2766861 T3 ES 2766861T3 ES 17156167 T ES17156167 T ES 17156167T ES 17156167 T ES17156167 T ES 17156167T ES 2766861 T3 ES2766861 T3 ES 2766861T3
Authority
ES
Spain
Prior art keywords
offset
forwarding element
length
packet
key
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.)
Active
Application number
ES17156167T
Other languages
English (en)
Inventor
Jun Gong
Wenyang Lei
Xiaofei Xu
Hongfei Chen
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Application granted granted Critical
Publication of ES2766861T3 publication Critical patent/ES2766861T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

Un método de procesamiento de paquetes, que comprende: recibir (102), por un elemento de reenvío, un paquete a través de un puerto entrante; buscar (104), por el elemento de reenvío, una tabla de puertos según el puerto entrante para determinar un primer desplazamiento, una primera longitud y un identificador de una primera tabla, en donde el primer desplazamiento, la primera longitud y el identificador de la primera tabla corresponden al puerto entrante; determinar (106), por el elemento de reenvío, una primera clave según el primer desplazamiento y la primera longitud, buscar la primera tabla según la primera clave para determinar una primera instrucción; y procesar (108), por el elemento de reenvío, el paquete según la primera instrucción.

Description

DESCRIPCIÓN
Método de procesamiento de paquetes y elemento de reenvío
Campo técnico
Las realizaciones de la presente invención se refieren a tecnologías de comunicaciones y, en particular, a un método de procesamiento de paquetes y a un elemento de reenvío (en inglés, forwarding element).
Antecedentes
En la técnica anterior, después de recibir un paquete, un elemento de reenvío necesita determinar un formato de datos del paquete, por ejemplo, el elemento de reenvío determina si el paquete es un paquete de Protocolo de Internet (en inglés, Internet Protocol, IP) o un paquete de Conmutación de Etiquetas Multiprotocolo (en inglés, Multiple protocol Label Switching, MPLS), para procesar el paquete. Por ejemplo, después de recibir un paquete Ethernet, un conmutador necesita determinar, según una tabla de puertos, que un protocolo con el que es compatible el paquete Ethernet es el Protocolo de Control de Acceso al Medio (en inglés, Media Access Control, MAC). Luego, el conmutador analiza sintácticamente una cabecera de Protocolo MAC del paquete Ethernet según el Protocolo MAC, para adquirir una dirección de Protocolo MAC de destino del paquete Ethernet. La Patente de EE.UU. N° US7813346 describe un encaminador que recibe un paquete en una interfaz de entrada, y que clasifica el paquete recibido en base al menos a un primer valor de campo contenido en la cabecera del paquete. La Publicación de Solicitud PCT N° WO2006/069278 describe técnicas eficientes basadas en Memoria Direccionable por Contenido (por sus siglas en inglés, CAM) para realizar búsquedas de cadenas en cargas útiles de paquetes.
Compendio
La presente invención se define en las reivindicaciones adjuntas.
En la solución técnica precedente, el elemento de reenvío determina el primer desplazamiento y la primera longitud según el puerto entrante. El elemento de reenvío determina la primera clave según el primer desplazamiento y la primera longitud. El elemento de reenvío determina la primera instrucción según la primera clave, para procesar el paquete. Por lo tanto, antes de procesar el paquete, el elemento de reenvío no necesita interpretar un formato de datos del paquete, de modo que el elemento de reenvío pueda soportar paquetes de manera flexible en diferentes formatos de datos. Cuando se necesita soportar un nuevo formato de datos, el elemento de reenvío puede procesar un paquete en el formato de datos sin la necesidad de actualizar el hardware o el software.
Breve descripción de los dibujos
Para describir las soluciones técnicas en las realizaciones de la presente invención o en la técnica anterior más claramente, a continuación se introducen brevemente los dibujos que se acompañan requeridos para describir las realizaciones o la técnica anterior. Evidentemente, los dibujos que se acompañan en la siguiente descripción muestran algunas realizaciones de la presente invención, y un experto ordinario en la técnica puede derivar aún otros dibujos a partir de estos dibujos que se acompañan sin esfuerzos creativos.
La FIG. 1 es un diagrama de flujo esquemático de un método de procesamiento de paquetes según una realización de la presente invención;
La FIG. 2 es un diagrama de flujo esquemático de un método de procesamiento de paquetes según una realización de la presente invención;
La FIG. 3 es un diagrama de flujo esquemático de un método de procesamiento de paquetes según una realización de la presente invención;
La FIG. 4 es un diagrama de flujo esquemático de un método de procesamiento de paquetes según una realización de la presente invención;
La FIG. 5 es un diagrama estructural esquemático de un elemento de reenvío según una realización de la presente invención;
La FIG. 6 es un diagrama estructural esquemático de un elemento de reenvío según una realización de la presente invención;
La FIG. 7 es un diagrama esquemático de un formato de una entrada según una realización de la presente invención; y
La FIG. 8 es un diagrama esquemático de un formato de una entrada según una realización de la presente invención.
Descripción de realizaciones
Para aclarar los objetivos, las soluciones técnicas y las ventajas de las realizaciones de la presente invención, a continuación se describen clara y completamente las soluciones técnicas en las realizaciones de la presente invención con referencia a los dibujos que se acompañan en las realizaciones de la presente invención. Evidentemente, las realizaciones descritas son una parte, más que todas las realizaciones de la presente invención. Todas las demás realizaciones obtenidas por un experto ordinario en la técnica basadas en las realizaciones de la presente invención sin esfuerzos creativos caerán dentro del alcance de protección de la presente invención.
La FIG. 1 es un diagrama de flujo esquemático de un método de procesamiento de paquetes según una realización de la presente invención. Con referencia a la FIG. 1, el método incluye:
102: Un elemento de reenvío recibe un paquete a través de un puerto entrante.
Por ejemplo, el elemento de reenvío puede ser un encaminador, un conmutador, un cortafuegos o un balanceador de carga.
Por ejemplo, el paquete puede ser un paquete IP, un paquete Ethernet o un paquete MPLS.
Por ejemplo, 102 se puede realizar por un circuito de recepción.
104: El elemento de reenvío busca una tabla de puertos según el puerto entrante para determinar un primer desplazamiento, una primera longitud y un identificador de una primera tabla, donde el primer desplazamiento, la primera longitud y el identificador de la primera tabla corresponden al puerto entrante.
Por ejemplo, el primer desplazamiento, la primera longitud y el identificador de la primera tabla se almacenan en una entrada de la tabla de puertos que se empareja con el puerto entrante. Puede haber uno o más primeros desplazamientos. Puede haber una o más primeras longitudes. Los múltiples desplazamientos están en una correspondencia uno a uno con las múltiples longitudes.
Por ejemplo, la primera tabla puede ser una tabla de Protocolo MAC, una tabla de Protocolo de Resolución de Direcciones (en inglés, Address Resolution Protocol, ARP), una base de información de reenvío (en inglés, forwarding information base, FIB), o una tabla de etiquetas MPLS.
Por ejemplo, 104 se puede realizar por un motor de búsqueda.
106: El elemento de reenvío determina una primera clave según el primer desplazamiento y la primera longitud, busca la primera tabla según la primera clave para determinar una primera instrucción.
Por ejemplo, la primera clave puede ser un segmento de datos en el paquete. La primera clave también puede ser un segmento de datos en metadatos. Los metadatos se almacenan en registros.
Por ejemplo, puede haber una o más primeras claves. Las múltiples claves están en una correspondencia uno a uno con los múltiples desplazamientos. Las múltiples claves están en una correspondencia uno a uno con las múltiples longitudes.
Por ejemplo, la primera clave puede provenir solamente del paquete o puede provenir solamente de los metadatos. La primera clave también puede provenir del paquete y de los metadatos.
Por ejemplo, 106 se puede realizar por el motor de búsqueda y un circuito de ejecución de instrucciones.
108: El elemento de reenvío procesa el paquete según la primera instrucción.
Por ejemplo, la primera instrucción puede ser una instrucción definida en la Especificación de Conmutación de Flujos Abiertos 1.3.0 (en inglés, OpenFlow Switch Specification 1.3.0) publicada por la organización de configuración estándar (en inglés, Standard Setting Organization, SSO), la Fundación de Redes Abiertas (en inglés, Open Networking Foundation, ONF).
Por ejemplo, 108 se puede realizar por un procesador de red (en inglés, network processor, NP). Específicamente, 108 se puede realizar por un circuito de ejecución de instrucciones en el NP.
En la solución técnica precedente, el elemento de reenvío determina el primer desplazamiento y la primera longitud según el puerto entrante. El elemento de reenvío determina la primera clave según el primer desplazamiento y la primera longitud. El elemento de reenvío determina la primera instrucción según la primera clave, para procesar el paquete. Por lo tanto, antes de procesar el paquete, el elemento de reenvío no necesita interpretar un formato de datos del paquete, de modo que el elemento de reenvío pueda soportar paquetes de manera flexible en diferentes formatos de datos. Cuando necesite soportar un nuevo formato de datos, el elemento de reenvío puede procesar un paquete en el formato de datos sin la necesidad de actualizar el hardware o el software.
Opcionalmente, en el método mostrado en la FIG. 1, la determinación, por el elemento de reenvío, de la primera clave según el primer desplazamiento y la primera longitud incluye:
202: El elemento de reenvío adquiere un primer segmento de datos en el paquete, donde se determina una posición de inicio del primer segmento de datos según el primer desplazamiento, y una longitud del primer segmento de datos es la primera longitud.
204: El elemento de reenvío determina el primer segmento de datos como la primera clave.
Para obtener detalles acerca de 202 y 204, consulte la FIG. 2.
Por ejemplo, que la posición de inicio del primer segmento de datos se determine según el primer desplazamiento puede ser específicamente que la posición de inicio del primer segmento de datos se pueda identificar usando una suma de un primer desplazamiento base y el primer desplazamiento, donde el primer desplazamiento base es 0. En la solución técnica precedente, la primera clave proviene del paquete.
Opcionalmente, en el método mostrado en la FIG. 1, la determinación, por el elemento de reenvío, de la primera clave según el primer desplazamiento y la primera longitud incluye:
302: El elemento de reenvío adquiere un segundo segmento de datos en metadatos, donde se determina una posición de inicio del segundo segmento de datos según el primer desplazamiento, y una longitud del segundo segmento de datos es la primera longitud.
304: El elemento de reenvío determina los segundos segmentos de datos como la primera clave.
Para obtener detalles acerca de 302 y 304, consulte la FIG. 3.
Por ejemplo, que la posición de inicio del segundo segmento de datos se determine según el primer desplazamiento puede ser específicamente que la posición de inicio del segundo segmento de datos se pueda identificar usando una suma de un segundo desplazamiento base y el primer desplazamiento, donde el segundo desplazamiento base es 0. En la solución técnica precedente, la primera clave proviene de los metadatos.
Opcionalmente, en el método mostrado en la FIG. 1, los metadatos se almacenan en registros del elemento de reenvío. Por ejemplo, los registros se pueden situar en un NP.
Opcionalmente, en el método mostrado en la FIG. 1, los metadatos se almacenan en una memoria del elemento de reenvío.
Por ejemplo, la memoria se puede acoplar con el NP.
Opcionalmente, en el método mostrado en la FIG. 1, la primera instrucción se usa para ordenar al elemento de reenvío para realizar una operación, donde la operación incluye al menos una de las siguientes operaciones: modificar el paquete, calcular una suma de comprobación del paquete, escribir los metadatos, leer los metadatos, una actualización de contador, realizar un procesamiento CAR sobre el paquete, descartando el paquete, enviar el paquete y modificar un desplazamiento base del paquete.
Por ejemplo, modificar el paquete puede ser eliminar un segmento de datos en el paquete, sustituir un segmento de datos en el paquete, o insertar un segmento de datos dentro del paquete.
Por ejemplo, la suma de comprobación puede ser una suma de comprobación IP, una suma de comprobación del Protocolo de Control de Transmisión (en inglés, Transmission Control Protocol, TCP) o una suma de comprobación del Protocolo de Datagramas de Usuario (en inglés, User Datagram Protocol, UDP).
Opcionalmente, en el método mostrado en la FIG. 1, el procesamiento, por el elemento de reenvío, del paquete según la primera instrucción incluye:
402: El elemento de reenvío determina un desplazamiento base, un segundo desplazamiento, una segunda longitud, un identificador de una segunda tabla según la primera tabla, donde el desplazamiento base, el segundo desplazamiento, la segunda longitud y el identificador de la segunda tabla corresponden a la primera clave.
Por ejemplo, el desplazamiento base es igual a la suma del primer desplazamiento base y del primer desplazamiento.
404: El elemento de reenvío determina una segunda clave según el desplazamiento base, el segundo desplazamiento y la segunda longitud, busca la segunda tabla según la segunda clave para determinar una segunda instrucción. Por ejemplo, puede haber una o más segundas claves. Si hay múltiples segundas claves, hay múltiples desplazamientos base, hay múltiples segundos desplazamientos y hay múltiples segundas longitudes. Los múltiples desplazamientos base están en una correspondencia uno a uno con las múltiples claves. Los múltiples segundos desplazamientos están en una correspondencia uno a uno con las múltiples claves. Las múltiples segundas longitudes están en una correspondencia uno a uno con las múltiples claves.
Por ejemplo, la segunda clave puede provenir solamente del paquete, o puede provenir solamente de los metadatos. La segunda clave también puede provenir del paquete y de los metadatos.
406: El elemento de reenvío procesa el paquete según la segunda instrucción.
Por ejemplo, la segunda instrucción puede ser una instrucción definida en la Especificación de Conmutación de Flujos Abiertos 1.3.0 publicada por la ONF.
Para obtener detalles acerca de 402, 404 y 406, consulte la FIG. 4.
La FIG. 5 es un diagrama estructural esquemático de un elemento de reenvío según una realización de la presente invención. El elemento de reenvío se puede configurar para realizar el método mostrado en la FIG. 1. Por ejemplo, el elemento de reenvío puede ser un encaminador, un conmutador, un cortafuegos o un balanceador de carga. Con referencia a la FIG. 5, el elemento de reenvío incluye un circuito de recepción 502, una unidad de búsqueda 504, una unidad de determinación 506 y una unidad de procesamiento 508.
El circuito de recepción 502 está configurado para recibir un paquete a través de un puerto entrante.
Por ejemplo, el paquete puede ser un paquete IP, un paquete Ethernet o un paquete MPLS.
La unidad de búsqueda 504 se configura para buscar una tabla de puertos según el puerto entrante para determinar un primer desplazamiento, una primera longitud de longitud y un identificador de una primera tabla, donde el primer desplazamiento, la primera longitud y el identificador de la primera tabla corresponden al puerto entrante.
Por ejemplo, el primer desplazamiento, la primera longitud y el identificador de la primera tabla se almacenan en una entrada de la tabla de puertos que se empareja con el puerto entrante. Puede haber uno o más primeros desplazamientos. Puede haber una o más primeras longitudes. Los múltiples desplazamientos están en una correspondencia uno a uno con las múltiples longitudes.
Por ejemplo, la primera tabla puede ser una tabla de Protocolo MAC, una tabla ARP, una FIB o una tabla de etiquetas MPLS.
Por ejemplo, la unidad de búsqueda 504 puede ser un motor de búsqueda.
La unidad de determinación 506 se configura para determinar una primera clave según el primer desplazamiento y la primera longitud, buscar la primera tabla según la primera clave para determinar una primera instrucción.
Por ejemplo, la primera clave puede ser un segmento de datos en el paquete. La primera clave también puede ser un segmento de datos en metadatos. Los metadatos se almacenan en registros.
Por ejemplo, puede haber una o más primeras claves. Las múltiples claves están en una correspondencia uno a uno con los múltiples desplazamientos. Las múltiples claves están en una correspondencia uno a uno con las múltiples longitudes.
Por ejemplo, la primera clave puede provenir solamente del paquete o puede provenir solamente de los metadatos. La primera clave también puede provenir del paquete y de los metadatos.
Por ejemplo, la unidad de determinación 506 puede ser un motor de búsqueda y un circuito de ejecución de instrucciones.
La unidad de procesamiento 508 se configura para procesar el paquete según la primera instrucción.
Por ejemplo, la primera instrucción puede ser una instrucción definida en la Especificación de Conmutación de Flujos Abiertos 1.3.0 publicada por la ONF.
Por ejemplo, la unidad de procesamiento 508 puede ser un NP, y específicamente, la unidad de procesamiento 508 puede ser un circuito de ejecución de instrucciones en el NP.
En la solución técnica precedente, el elemento de reenvío determina el primer desplazamiento y la primera longitud según el puerto entrante. El elemento de reenvío determina la primera clave según el primer desplazamiento y la primera longitud. El elemento de reenvío determina la primera instrucción según la primera clave, para procesar el paquete. Por lo tanto, antes de procesar el paquete, el elemento de reenvío no necesita interpretar un formato de datos del paquete, de modo que el elemento de reenvío pueda soportar paquetes de manera flexible en diferentes formatos de datos. Cuando se necesite soportar un nuevo formato de datos, el elemento de reenvío puede procesar un paquete en el formato de datos sin la necesidad de actualizar el hardware o el software.
Opcionalmente, en el elemento de reenvío descrito en la FIG. 5, la unidad de búsqueda 504 se configura para:
adquirir un primer segmento de datos en el paquete, donde una posición de inicio del primer segmento de datos se determina según el primer desplazamiento, y una longitud del primer segmento de datos es la primera longitud; y
determinar el primer segmento de datos como la primera clave.
Por ejemplo, que la posición de inicio del primer segmento de datos se determine según el primer desplazamiento puede ser específicamente que la posición de inicio del primer segmento de datos se pueda identificar usando una suma de un primer desplazamiento base y el primer desplazamiento, donde el primer desplazamiento base es 0.
En la solución técnica precedente, la primera clave proviene del paquete.
Opcionalmente, en el elemento de reenvío descrito en la FIG. 5, la unidad de búsqueda 504 se configura para:
adquirir un segundo segmento de datos en metadatos, donde una posición de inicio del segundo segmento de datos se determina según el primer desplazamiento, y una longitud del segundo segmento de datos es la primera longitud; y
determinar el segundo segmento de datos como la primera clave.
Por ejemplo, que la posición de inicio del segundo segmento de datos se determine según el primer desplazamiento puede ser específicamente que la posición de inicio del segundo segmento de datos se pueda identificar usando una suma de un segundo desplazamiento base y el primer desplazamiento, donde el segundo desplazamiento base es 0.
En la solución técnica precedente, la primera clave proviene de los metadatos.
Opcionalmente, el elemento de reenvío descrito en la FIG. 5 incluye además registros o una memoria.
Los metadatos se almacenan en los registros o en la memoria.
Opcionalmente, en el elemento de reenvío descrito en la FIG. 5, la primera instrucción se usa para ordenar al elemento de reenvío para realizar una operación, donde la operación incluye al menos una de las siguientes operaciones: modificar el paquete, calcular una suma de comprobación del paquete, escribir los metadatos, leer los metadatos, una actualización de contador, realizar un procesamiento CAR sobre el paquete, descartar el paquete, enviar el paquete y modificar un desplazamiento base del paquete.
Por ejemplo, modificar el paquete puede ser eliminar un segmento de datos en el paquete, sustituir un segmento de datos en el paquete o insertar un segmento de datos dentro del paquete.
Por ejemplo, la suma de comprobación puede ser una suma de comprobación IP, una suma de comprobación de Protocolo de Control de Transmisión TCP, o una suma de comprobación UDP.
Opcionalmente, en el elemento de reenvío descrito en la FIG. 5, la unidad de procesamiento 508 se configura para:
determinar un desplazamiento base del paquete, un segundo desplazamiento, una segunda longitud, un identificador de una segunda tabla según la primera tabla, donde el desplazamiento base del paquete, el segundo desplazamiento, la segunda longitud y el identificador de la segunda tabla corresponden a la primera clave; determinar una segunda clave según el desplazamiento base del paquete, el segundo desplazamiento y la segunda longitud, buscar la segunda tabla según la segunda clave para determinar una segunda instrucción; y procesar el paquete según la segunda instrucción.
Por ejemplo, el desplazamiento base es igual a la suma del primer desplazamiento base y del primer desplazamiento.
Por ejemplo, puede haber una o más segundas claves. Si hay múltiples segundas claves, hay múltiples desplazamientos base, hay múltiples segundos desplazamientos y hay múltiples segundas longitudes. Los múltiples desplazamientos base están en una correspondencia uno a uno con las múltiples claves. Los múltiples segundos desplazamientos están en una correspondencia uno a uno con las múltiples claves. Las múltiples segundas longitudes están en una correspondencia uno a uno con las múltiples claves.
Por ejemplo, la segunda clave puede provenir solamente del paquete o puede provenir solamente de los metadatos. La segunda clave también puede provenir del paquete y de los metadatos.
Por ejemplo, la segunda instrucción puede ser una instrucción definida en Especificación de Conmutación de Flujos Abiertos 1.3.0 publicada por la ONF.
La FIG. 6 es un diagrama estructural esquemático de un elemento de reenvío según una realización de la presente invención. El elemento de reenvío se puede configurar para realizar el método mostrado en la FIG. 1. Por ejemplo, el elemento de reenvío puede ser un encaminador, un conmutador, un cortafuegos o un balanceador de carga. Con referencia a la FIG. 6, el elemento de reenvío incluye: un circuito de interfaz 601, un circuito de interfaz 602, una memoria (en inglés, memory) 603, un motor de búsqueda (en inglés, search engine) 604 y un procesador 609. El procesador 609 incluye un circuito de ejecución de instrucciones 605 y una memoria de instrucciones 607. Opcionalmente, el procesador 609 puede incluir registros (en inglés, registers) 606 y una memoria de datos 608.
El circuito de recepción 601 está configurado para recibir un paquete a través de un puerto entrante.
El procesador 609 se acopla con el circuito de recepción 601, el procesador 609 se acopla con la memoria 603, y el procesador 609 incluye el circuito de ejecución de instrucciones 605 y la memoria de instrucciones 607, donde el circuito de ejecución de instrucciones 605 se acopla con la memoria de instrucciones 607, la memoria de instrucciones 607 está configurada para almacenar una instrucción de ordenador, y el circuito de ejecución de instrucciones 605 realiza las siguientes acciones leyendo la instrucción del ordenador:
desencadenar el motor de búsqueda 604, de modo que el motor de búsqueda 604 busque una tabla de puertos según el puerto entrante para determinar un primer desplazamiento, una primera longitud y un identificador de una primera tabla, donde el primer desplazamiento, la primera longitud y el identificador de la primera tabla corresponde al puerto entrante, y la tabla de puertos se almacena en la memoria 603;
determinar una primera clave según el primer desplazamiento y la primera longitud;
desencadenar el motor de búsqueda 604, de modo que el motor de búsqueda 604 busque la primera tabla según la primera clave para determinar una primera instrucción; y
procesar el paquete según la primera instrucción.
Por ejemplo, el procesador 609 se puede acoplar con la memoria 603 usando una barra transversal (en inglés, crossbar). El procesador 609 se puede acoplar con el motor de búsqueda 604 usando la barra transversal.
Por ejemplo, el paquete puede ser un paquete IP, un paquete Ethernet o un paquete MPLS.
Por ejemplo, el primer desplazamiento, la primera longitud y el identificador de la primera tabla se almacenan en una entrada de la tabla de puertos que se empareja con el puerto entrante. Puede haber uno o más primeros desplazamientos. Puede haber una o más primeras longitudes. Los múltiples desplazamientos están en una correspondencia uno a uno con las múltiples longitudes.
La FIG. 7 es un diagrama esquemático de un formato de una entrada de la tabla de puertos. Un puerto entrante 701, un primer desplazamiento 702, una primera longitud 703 y un identificador 704 de una primera tabla en la FIG. 7 corresponden respectivamente al puerto entrante, al primer desplazamiento, a la primera longitud y al identificador de la primera tabla.
Por ejemplo, la primera tabla puede ser una tabla de Protocolo MAC, una tabla ARP, una FIB o una tabla de etiquetas MPLS.
Por ejemplo, la primera clave puede ser un segmento de datos en el paquete. La primera clave también puede ser un segmento de datos en los metadatos. Los metadatos se almacenan en los registros.
Por ejemplo, puede haber una o más primeras claves. Las múltiples claves están en una correspondencia uno a uno con los múltiples desplazamientos. Las múltiples claves están en una correspondencia uno a uno con las múltiples longitudes.
Por ejemplo, la primera clave puede provenir solamente del paquete o puede provenir solamente de los metadatos. La primera clave también puede provenir del paquete y de los metadatos.
Por ejemplo, la primera instrucción puede ser una instrucción definida en la Especificación de Conmutación de Flujos Abiertos 1.3.0 publicada por la ONF.
En la solución técnica precedente, el elemento de reenvío determina el primer desplazamiento y la primera longitud según el puerto entrante. El elemento de reenvío determina la primera clave según el primer desplazamiento y la primera longitud. El elemento de reenvío determina la primera instrucción según la primera clave, para procesar el paquete. Por lo tanto, antes de procesar el paquete, el elemento de reenvío no necesita interpretar un formato de datos del paquete, de modo que el elemento de reenvío pueda soportar paquetes de manera flexible en diferentes formatos de datos. Cuando se necesite soportar un nuevo formato de datos, el elemento de reenvío puede procesar un paquete en el formato de datos sin la necesidad de actualizar el hardware o el software.
Opcionalmente, en el elemento de reenvío mostrado en la FIG. 6, el motor de búsqueda 604 se configura además para adquirir un primer segmento de datos en el paquete, donde una posición de inicio del primer segmento de datos se determina según el primer desplazamiento, y una longitud del primer segmento de datos es la primera longitud.
El circuito de ejecución de instrucciones 605 se configura además para determinar el primer segmento de datos como la primera clave.
El procesador incluye además la memoria de datos 608, donde la memoria de datos 608 se acopla con el circuito de ejecución de instrucciones 605, y el paquete se almacena en la memoria de datos 608.
Por ejemplo, que la posición de inicio del primer segmento de datos se determine según el primer desplazamiento puede ser específicamente que la posición de inicio del primer segmento de datos se pueda identificar usando una suma de un primer desplazamiento base y el primer desplazamiento, donde el primer desplazamiento base es 0. En la solución técnica precedente, la primera clave proviene del paquete.
Opcionalmente, en el elemento de reenvío mostrado en la FIG. 6, el motor de búsqueda 604 se configura además para adquirir un segundo segmento de datos en metadatos, donde se determina una posición de inicio del segundo segmento de datos según el primer desplazamiento, y una longitud del segundo segmento de datos es la primera longitud.
El circuito de ejecución de instrucciones 605 se configura además para determinar el segundo segmento de datos como la primera clave.
Por ejemplo, que la posición de inicio del segundo segmento de datos se determine según el primer desplazamiento puede ser específicamente que la posición de inicio del segundo segmento de datos se pueda identificar usando una suma de un segundo desplazamiento base y el primer desplazamiento, donde el segundo desplazamiento base es 0. En la solución técnica precedente, la primera clave proviene de los metadatos.
Opcionalmente, en el elemento de reenvío mostrado en la FIG. 6, el procesador 609 incluye además los registros 606, donde los registros 606 se acoplan con el circuito de ejecución de instrucciones 605, y los metadatos se almacenan en los registros 606.
Opcionalmente, en el elemento de reenvío mostrado en la FIG. 6, los metadatos se almacenan en la memoria 603. Opcionalmente, en el elemento de reenvío mostrado en la FIG. 6, la primera instrucción se usa ordenar al circuito de ejecución de instrucciones para realizar una operación, donde la operación incluye al menos una de las siguientes operaciones: modificar el paquete, calcular una suma de comprobación del paquete, escribir los metadatos, leer los metadatos, una actualización de contador, realizar un procesamiento CAR sobre el paquete, descartar el paquete, enviar el paquete y modificar un desplazamiento base del paquete.
Por ejemplo, modificar el paquete puede ser eliminar un segmento de datos en el paquete, sustituir un segmento de datos en el paquete o insertar un segmento de datos dentro del paquete.
Por ejemplo, la suma de comprobación puede ser una suma de comprobación IP, una suma de comprobación TCP o una suma de comprobación UDP.
Por ejemplo, el paquete se puede enviar por el circuito de interfaz 602.
Opcionalmente, en el elemento de reenvío mostrado en la FIG. 6, el circuito de ejecución de instrucciones 605 se configura además para:
determinar un desplazamiento base del paquete, un segundo desplazamiento, una segunda longitud, un identificador de una segunda tabla según la primera tabla, donde el desplazamiento base del paquete, el segundo desplazamiento, la segunda longitud y el identificador de la segunda tabla corresponde a la primera clave; el circuito de ejecución de instrucciones 605 se configura además para:
determinar una segunda clave según el desplazamiento base del paquete, el segundo desplazamiento y la segunda longitud.
El circuito de ejecución de instrucciones 605 se configura además para desencadenar el motor de búsqueda 604, de modo que el motor de búsqueda 604 busque la segunda tabla según la segunda clave para determinar una segunda instrucción.
El circuito de ejecución de instrucciones 605 se configura además para procesar el paquete según la segunda instrucción.
Por ejemplo, el desplazamiento base es igual a la suma del primer desplazamiento base y del primer desplazamiento. Por ejemplo, puede haber una o más segundas claves. Si hay múltiples segundas claves, hay múltiples desplazamientos base, hay múltiples segundos desplazamientos y hay múltiples segundas longitudes. Los múltiples desplazamientos base están en una correspondencia uno a uno con las múltiples claves. Los múltiples segundos desplazamientos están en una correspondencia uno a uno con las múltiples claves. Las múltiples segundas longitudes están en una correspondencia uno a uno con las múltiples claves.
Por ejemplo, la segunda clave puede provenir solamente del paquete o puede provenir solamente de los metadatos. La segunda clave también puede provenir del paquete y de los metadatos.
Por ejemplo, la segunda instrucción puede ser una instrucción definida en la Especificación de Conmutación de Flujos Abiertos 1.3.0 publicada por la ONF.
Por ejemplo, una entrada de la segunda tabla incluye la segunda clave y la segunda instrucción. La FIG. 8 es un diagrama esquemático de un formato de la entrada de la segunda tabla. Una segunda clave 801 y una segunda instrucción 802 en la FIG. 8 corresponden respectivamente a la segunda clave y a la segunda instrucción.
Un experto ordinario en la técnica puede ser consciente de que, en combinación con los ejemplos descritos en las realizaciones descritas en esta especificación, las unidades y las etapas del algoritmo se pueden implementar mediante hardware electrónico o una combinación de software de ordenador y hardware electrónico. Si las funciones se realizan por hardware o software depende de las aplicaciones particulares y las condiciones de restricción de diseño de las soluciones técnicas. Un experto en la técnica puede usar diferentes métodos para implementar las funciones descritas para cada aplicación particular, pero no se debería considerar que la implementación vaya más allá del alcance de la presente invención.
Se puede entender claramente por un experto en la técnica que, con el propósito de una descripción conveniente y breve, para un proceso de trabajo detallado del sistema, aparato y unidad precedentes, se puede hacer referencia a un proceso correspondiente en las realizaciones del método precedentes, y los detalles no se describen de nuevo en la presente memoria.
En las diversas realizaciones proporcionadas en la presente solicitud, se debería entender que el sistema, aparato y método descritos se pueden implementar de otras maneras. Por ejemplo, la realización del aparato descrita es meramente ejemplar. Por ejemplo, la división de unidades es meramente una división de función lógica y puede ser otra división en la implementación real. Por ejemplo, se pueden combinar o integrar múltiples unidades o componentes en otro sistema, o algunas características se pueden ignorar o no realizar. Además, los acoplamientos mutuos o los acoplamientos directos o conexiones de comunicación mostrados o discutidos se pueden implementar a través de algunas interfaces. Los acoplamientos indirectos o las conexiones de comunicación entre los aparatos o unidades se pueden implementar en forma electrónica, mecánica u otras formas.
Las unidades descritas como partes separadas pueden estar físicamente separadas o no, y las partes mostradas como unidades pueden ser unidades físicas o no, se pueden situar en una posición o se pueden distribuir en múltiples unidades de red. Se puede seleccionar una parte o todas las unidades según las necesidades reales para lograr los objetivos de las soluciones de las realizaciones.
Además, las unidades funcionales en las realizaciones de la presente invención se pueden integrar en una unidad de procesamiento, o cada una de las unidades puede existir físicamente sola, o dos o más unidades se integran en una unidad.
Cuando las funciones se implementan en forma de una unidad funcional de software y se venden o usan como un producto independiente, las funciones pueden almacenar en un medio de almacenamiento legible por ordenador. En base a tal comprensión, las soluciones técnicas de la presente invención esencialmente, o la parte que contribuye a la técnica anterior, o una parte de las soluciones técnicas se pueden implementar en forma de un producto de software. El producto de software de ordenador se almacena en un medio de almacenamiento, e incluye diversas instrucciones para ordenar a un dispositivo informático (que puede ser un ordenador personal, un servidor o un dispositivo de red) para realizar todas o parte de las etapas de los métodos descritos en las realizaciones de la presente invención. El medio de almacenamiento precedente incluye: cualquier medio que pueda almacenar código de programa, tal como una unidad de memoria rápida USB, un disco duro extraíble, una memoria de solo lectura (en inglés, Read-Only Memory, ROM), una memoria de acceso aleatorio (en inglés, Random Access Memory, RAM), un disco magnético o un disco óptico.
Las descripciones precedentes son meramente maneras de implementación específicas de la presente invención, pero no se pretende que limiten el alcance de protección de la presente invención. Cualquier variación o sustitución fácilmente resuelta por un experto en la técnica dentro del alcance técnico descrito en la presente invención caerá dentro del alcance de protección de la presente invención. Por lo tanto, el alcance de protección de la presente invención estará sujeto al alcance de protección de las reivindicaciones.
Se proporcionan a continuación realizaciones adicionales de la presente invención. Se debería señalar que la numeración usada en la siguiente sección no necesita cumplir necesariamente la numeración usada en las secciones anteriores.

Claims (14)

REIVINDICACIONES
1. Un método de procesamiento de paquetes, que comprende:
recibir (102), por un elemento de reenvío, un paquete a través de un puerto entrante;
buscar (104), por el elemento de reenvío, una tabla de puertos según el puerto entrante para determinar un primer desplazamiento, una primera longitud y un identificador de una primera tabla, en donde el primer desplazamiento, la primera longitud y el identificador de la primera tabla corresponden al puerto entrante;
determinar (106), por el elemento de reenvío, una primera clave según el primer desplazamiento y la primera longitud, buscar la primera tabla según la primera clave para determinar una primera instrucción; y procesar (108), por el elemento de reenvío, el paquete según la primera instrucción.
2. El método según la reivindicación 1, en donde la determinación (106), por el elemento de reenvío, de la primera clave según el primer desplazamiento y la primera longitud comprende:
adquirir (202), por el elemento de reenvío, un primer segmento de datos en el paquete, en donde una posición de inicio del primer segmento de datos se determina según el primer desplazamiento, y una longitud del primer segmento de datos es la primera longitud; y
determinar (204), por el elemento de reenvío, el primer segmento de datos como la primera clave.
3. El método según la reivindicación 1, en donde la determinación (106), por el elemento de reenvío, de la primera clave según el primer desplazamiento y la primera longitud comprende:
adquirir (302), por el elemento de reenvío, un segundo segmento de datos en metadatos, en donde una posición de inicio del segundo segmento de datos se determina según el primer desplazamiento, y una longitud del segundo segmento de datos es la primera longitud; y
determinar (304), por el elemento de reenvío, el segundo segmento de datos como la primera clave.
4. El método según la reivindicación 3, en donde:
los metadatos se almacenan en registros del elemento de reenvío; o
los metadatos se almacenan en una memoria del elemento de reenvío.
5. El método según una cualquiera de las reivindicaciones 1 a 4, en donde:
la primera instrucción se usa para ordenar al elemento de reenvío para realizar una operación, en donde la operación comprende al menos una de las siguientes operaciones: modificar el paquete, calcular una suma de comprobación del paquete, escribir metadatos, leer metadatos, actualizar un contador, realizar un procesamiento de tasa de acceso comprometida, CAR, sobre el paquete, descartar el paquete, enviar el paquete y modificar un desplazamiento base del paquete.
6. El método según una cualquiera de las reivindicaciones 1 a 4, en donde:
el procesamiento (108), por el elemento de reenvío, del paquete según la primera instrucción comprende: determinar (402), por el elemento de reenvío, un desplazamiento base del paquete, un segundo desplazamiento, una segunda longitud, un identificador de una segunda tabla según la primera tabla, en donde el desplazamiento base del paquete, el segundo desplazamiento, la segunda longitud y el identificador de la segunda tabla corresponden a la primera clave;
determinar (404), por el elemento de reenvío, una segunda clave según el desplazamiento base del paquete, el segundo desplazamiento y la segunda longitud, buscar la segunda tabla según la segunda clave para determinar una segunda instrucción; y
procesar (406), por el elemento de reenvío, el paquete según la segunda instrucción.
7. El método según una cualquiera de las reivindicaciones 1 a 6, en donde:
el elemento de reenvío es un encaminador, un conmutador, un firewall o un balanceador de carga.
8. Un elemento de reenvío, que comprende:
un circuito de recepción (502), configurado para recibir un paquete a través de un puerto entrante;
una unidad de búsqueda (504), configurada para buscar una tabla de puertos según el puerto entrante para determinar un primer desplazamiento, una primera longitud y un identificador de una primera tabla, en donde el primer desplazamiento, la primera longitud y el identificador de la primera tabla corresponden al puerto entrante; una unidad de determinación (506), configurada para determinar una primera clave según el primer desplazamiento y la primera longitud, buscar la primera tabla según la primera clave para determinar una primera instrucción; y una unidad de procesamiento (508), configurada para procesar el paquete según la primera instrucción.
9. El elemento de reenvío según la reivindicación 8, en donde la unidad de búsqueda (504) se configura para: adquirir un primer segmento de datos en el paquete, en donde una posición de inicio del primer segmento de datos se determina según el primer desplazamiento, y una longitud del primer segmento de datos es la primera longitud; y
determinar el primer segmento de datos como la primera clave.
10. El elemento de reenvío según la reivindicación 8, en donde la unidad de búsqueda (504) se configura para: adquirir un segundo segmento de datos en metadatos, en donde una posición de inicio del segundo segmento de datos se determina según el primer desplazamiento, y una longitud del segundo segmento de datos es la primera longitud; y
determinar el segundo segmento de datos como la primera clave.
11. El elemento de reenvío según la reivindicación 10, que comprende además registros o una memoria, en donde: los metadatos se almacenan en los registros o en la memoria.
12. El elemento de reenvío según una cualquiera de las reivindicaciones 8 a 11, en donde:
la primera instrucción se usa para ordenar al elemento de reenvío para realizar una operación, en donde la operación comprende al menos una de las siguientes operaciones: modificar el paquete, calcular una suma de comprobación del paquete, escribir metadatos, leer metadatos, actualizar un contador, realizar procesamiento CAR sobre el paquete, descartar el paquete, enviar el paquete y modificar un desplazamiento base del paquete.
13. El elemento de reenvío según una cualquiera de las reivindicaciones 8 a 11, en donde la unidad de procesamiento (508) se configura para:
determinar un desplazamiento base del paquete, un segundo desplazamiento, una segunda longitud, un identificador de una segunda tabla según la primera tabla, en donde el desplazamiento base del paquete, el segundo desplazamiento, la segunda longitud y el identificador de la segunda tabla corresponden a la primera clave;
determinar una segunda clave según el desplazamiento base del paquete, el segundo desplazamiento y la segunda longitud, buscar la segunda tabla según la segunda clave para determinar una segunda instrucción; y procesar el paquete según la segunda instrucción.
14. El elemento de reenvío según una cualquiera de las reivindicaciones 8 a 13, en donde:
el elemento de reenvío es un encaminador, un conmutador, un cortafuegos o un balanceador de carga.
ES17156167T 2013-01-29 2013-01-29 Método de procesamiento de paquetes y elemento de reenvío Active ES2766861T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP17156167.3A EP3255844B1 (en) 2013-01-29 2013-01-29 Packet processing method and forwarding element
PCT/CN2013/071088 WO2014117327A1 (zh) 2013-01-29 2013-01-29 报文处理方法和转发设备

Publications (1)

Publication Number Publication Date
ES2766861T3 true ES2766861T3 (es) 2020-06-15

Family

ID=51261389

Family Applications (1)

Application Number Title Priority Date Filing Date
ES17156167T Active ES2766861T3 (es) 2013-01-29 2013-01-29 Método de procesamiento de paquetes y elemento de reenvío

Country Status (6)

Country Link
US (1) US9749262B2 (es)
EP (3) EP2942913B1 (es)
JP (1) JP6070863B2 (es)
CN (2) CN104205742B (es)
ES (1) ES2766861T3 (es)
WO (1) WO2014117327A1 (es)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017034723A (ja) * 2016-11-10 2017-02-09 ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. パケット処理方法及び転送要素
CN109729117B (zh) * 2017-10-30 2020-10-27 华为技术有限公司 一种报文处理的方法、芯片系统以及计算机存储介质
CN109688148A (zh) * 2018-12-29 2019-04-26 苏州睿安芯微电子有限公司 一种基于软件配置的自定转发协议安全网络的系统及方法
CN111327546B (zh) * 2020-02-25 2022-01-28 杭州迪普科技股份有限公司 一种报文转发的方法及装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6266706B1 (en) * 1997-09-15 2001-07-24 Effnet Group Ab Fast routing lookup system using complete prefix tree, bit vector, and pointers in a routing table for determining where to route IP datagrams
KR20010030607A (ko) * 1997-09-15 2001-04-16 에프넷 그룹 에이비 고속 라우팅 룩업 방법 및 시스템
US6347087B1 (en) * 1998-10-05 2002-02-12 Packet Engines Incorporated Content-based forwarding/filtering in a network switching device
EP1168726B1 (en) * 2000-06-19 2007-02-14 Broadcom Corporation Switch with memory management unit for improved flow control
US7813346B1 (en) * 2001-11-21 2010-10-12 Juniper Networks, Inc. Filter-based forwarding in a network
US7289498B2 (en) * 2002-06-04 2007-10-30 Lucent Technologies Inc. Classifying and distributing traffic at a network node
US20050114393A1 (en) * 2003-11-24 2005-05-26 Alcatel Dynamic forwarding method using binary search
US7555594B2 (en) * 2004-07-22 2009-06-30 Netlogic Microsystems, Inc. Range representation in a content addressable memory (CAM) using an improved encoding scheme
US20060212426A1 (en) * 2004-12-21 2006-09-21 Udaya Shakara Efficient CAM-based techniques to perform string searches in packet payloads
CN101047649A (zh) * 2007-04-05 2007-10-03 华为技术有限公司 一种转发数据流的方法和设备
CN101471923B (zh) * 2007-12-27 2012-06-20 华为技术有限公司 发送协议报文、识别协议报文类型的方法、设备和系统
CN101267331A (zh) * 2008-04-23 2008-09-17 华为技术有限公司 一种组播转发表查找方法和装置
US8375211B2 (en) * 2009-04-21 2013-02-12 International Business Machines Corporation Optimization of signing soap body element
CN101599960A (zh) * 2009-05-27 2009-12-09 南京欣网视讯科技股份有限公司 一种基于协议分析的p2p流量识别方法
US8694536B2 (en) * 2010-11-16 2014-04-08 Tibco Software Inc. Fast matching for content-based addressing
CN101989954B (zh) * 2010-11-16 2014-09-10 中兴通讯股份有限公司 报文分片方法和网络转发设备
CN102143074B (zh) 2011-03-25 2015-09-16 中兴通讯股份有限公司 网络负荷的分担方法、系统及网络处理器
CN102148768B (zh) * 2011-05-26 2014-11-26 杭州华三通信技术有限公司 报文转发方法和报文转发设备
CN102333039B (zh) * 2011-10-25 2014-09-17 华为技术有限公司 一种转发报文的方法、生成表项的方法及装置
CN102427428A (zh) * 2011-12-07 2012-04-25 西安电子科技大学 基于多域最长匹配的流识别方法及设备
CN102780619B (zh) 2012-07-23 2015-03-11 北京星网锐捷网络技术有限公司 一种处理报文的方法及装置

Also Published As

Publication number Publication date
EP3255844A1 (en) 2017-12-13
EP2942913A4 (en) 2016-01-20
CN106850442A (zh) 2017-06-13
CN104205742A (zh) 2014-12-10
JP6070863B2 (ja) 2017-02-01
EP3255844B1 (en) 2019-10-30
WO2014117327A1 (zh) 2014-08-07
US20150334055A1 (en) 2015-11-19
US9749262B2 (en) 2017-08-29
EP2942913B1 (en) 2017-06-21
CN106850442B (zh) 2019-01-08
EP2942913A1 (en) 2015-11-11
JP2016506217A (ja) 2016-02-25
EP3687123A1 (en) 2020-07-29
CN104205742B (zh) 2017-04-12
EP3687123B1 (en) 2022-07-27

Similar Documents

Publication Publication Date Title
US11374863B2 (en) Segment routing extension headers
US9954779B2 (en) Method, apparatus, and system for supporting flexible lookup keys in software-defined networks
ES2766861T3 (es) Método de procesamiento de paquetes y elemento de reenvío
WO2013059991A1 (zh) 数据报文处理方法和系统、报文转发设备
WO2015125801A1 (ja) ネットワーク制御方法、ネットワークシステムと装置及びプログラム
WO2015131720A1 (zh) 报文处理方法及装置
CN105282133B (zh) 从分组内容形成哈希输入的方法及其装置
WO2018090980A1 (zh) 报文转发
EP2736202B1 (en) Message receiving and sending method, device, and system
WO2015149367A1 (zh) 报文处理的方法与设备
WO2013107056A1 (zh) 报文转发的方法及装置
EP2930890B1 (en) Network device and message processing method
TW201607274A (zh) 擷取封包數據方法及裝置
US9135997B2 (en) System and method for filtering addresses
TW201618516A (zh) 處理大協定層以供層資訊可配置擷取方法及裝置
JP2017034723A (ja) パケット処理方法及び転送要素
JP6073706B2 (ja) 通信装置及びプログラム
CN116346533A (zh) 具有减少的报头信息的vpn业务的传输
JP2005252769A (ja) サービス提供プラットフォーム装置
JP2005318011A (ja) ネットワーク経路検索装置、その検索方法、検索プログラム及びネットワーク経路検索システム
JP2007214717A (ja) インタフェースの高速起動方式