En el enrutamiento , el plano de reenvío , a veces llamado plano de datos o plano de usuario , define la parte de la arquitectura del enrutador que decide qué hacer con los paquetes que llegan a una interfaz entrante. Por lo general, se refiere a una tabla en la que el enrutador busca la dirección de destino del paquete entrante y recupera la información necesaria para determinar la ruta desde el elemento receptor, a través del tejido de reenvío interno del enrutador y a la interfaz de salida adecuada. (s).
En ciertos casos, la tabla puede especificar que un paquete debe descartarse. En tales casos, el enrutador puede devolver un "destino inalcanzable" ICMP u otro código apropiado. Algunas políticas de seguridad, sin embargo, dictan que el enrutador debe descartar el paquete en silencio, para que un atacante potencial no se dé cuenta de que un objetivo está siendo protegido.
El elemento de reenvío entrante también disminuirá el campo de tiempo de vida (TTL) del paquete y, si el nuevo valor es cero, descartará el paquete. Si bien la especificación del Protocolo de Internet (IP) indica que se debe enviar un mensaje de tiempo excedido del Protocolo de mensajes de control de Internet (ICMP) al originador del paquete (es decir, el nodo indicado por la dirección de origen), el enrutador puede configurarse para descartar el paquete. silenciosamente (de nuevo de acuerdo con las políticas de seguridad).
Dependiendo de la implementación específica del enrutador, la tabla en la que se busca la dirección de destino podría ser la tabla de enrutamiento (también conocida como base de información de enrutamiento, RIB) o una base de información de reenvío (FIB) separada que se completa (es decir, se carga ) por el plano de control de enrutamiento , pero utilizado por el plano de reenvío para búsquedas a velocidades mucho más altas. Antes o después de examinar el destino, se pueden consultar otras tablas para tomar decisiones para descartar el paquete en función de otras características, como la dirección de origen, el campo de identificador del protocolo IP o el Protocolo de control de transmisión (TCP) o el Protocolo de datagramas de usuario (UDP). número de puerto.
Las funciones del plano de reenvío se ejecutan en el elemento de reenvío. [1] Los enrutadores de alto rendimiento a menudo tienen múltiples elementos de reenvío distribuidos, de modo que el enrutador aumenta el rendimiento con el procesamiento paralelo.
La interfaz de salida encapsulará el paquete en el protocolo de enlace de datos apropiado. Dependiendo del software del enrutador y su configuración, las funciones, generalmente implementadas en la interfaz de salida, pueden establecer varios campos de paquetes, como el campo DSCP utilizado por servicios diferenciados .
En general, el paso de la interfaz de entrada directamente a una interfaz de salida, a través de la estructura con una modificación mínima en la interfaz de salida, se denomina ruta rápida del enrutador. Si el paquete necesita un procesamiento significativo, como segmentación o encriptación, puede ir a una ruta más lenta, que a veces se denomina plano de servicios del enrutador. Los planos de servicio pueden tomar decisiones de reenvío o procesamiento basadas en información de capa superior, como una URL web contenida en la carga útil del paquete.
Problemas en el rendimiento del reenvío del enrutador
Los proveedores diseñan productos de enrutadores para mercados específicos. El diseño de enrutadores destinados a uso doméstico, que quizás admitan varias PC y telefonía VoIP, se basa en mantener el costo lo más bajo posible. En un enrutador de este tipo, no hay una estructura de reenvío separada, y solo hay una ruta de reenvío activa: hacia el procesador principal y fuera del procesador principal.
Los enrutadores para aplicaciones más exigentes aceptan un mayor costo y complejidad para obtener un mayor rendimiento en sus planos de reenvío.
Varios factores de diseño afectan el rendimiento del reenvío del enrutador:
- Procesamiento de la capa de enlace de datos y extracción del paquete
- Decodificando el encabezado del paquete
- Buscando la dirección de destino en el encabezado del paquete
- Analizando otros campos en el paquete
- Enviar el paquete a través de la "estructura" que interconecta las interfaces de entrada y salida
- Procesamiento y encapsulación del enlace de datos en la interfaz de salida
Los enrutadores pueden tener uno o más procesadores. En un diseño de monoprocesador, estos parámetros de rendimiento se ven afectados no solo por la velocidad del procesador, sino también por la competencia por el procesador. Los enrutadores de mayor rendimiento tienen invariablemente múltiples elementos de procesamiento, que pueden ser chips de procesador de propósito general o circuitos integrados de aplicación específica (ASIC) especializados.
Los productos de muy alto rendimiento tienen múltiples elementos de procesamiento en cada tarjeta de interfaz. En tales diseños, el procesador principal no participa en el reenvío, sino solo en el plano de control y el procesamiento de gestión.
Rendimiento de evaluación comparativa
En el Grupo de Trabajo de Ingeniería de Internet , dos grupos de trabajo en el Área de Operaciones y Mantenimiento se ocupan de los aspectos del desempeño. El grupo Interprovider Performance Measurement (IPPM) se centra, como su nombre sugiere, en la medición operativa de servicios. Las mediciones de rendimiento en enrutadores únicos, o sistemas de enrutadores estrictamente definidos, son competencia del Grupo de trabajo de evaluación comparativa (BMWG).
RFC 2544 es el documento clave de BMWG. [2] Un estándar de referencia RFC 2544 usa la mitad de los puertos del enrutador (es decir, el dispositivo bajo prueba (DUT)) para la entrada de una carga definida y mide el tiempo en el que las salidas aparecen en los puertos de salida.
Diseño de base de información de reenvío
Originalmente, todos los destinos se buscaban en el RIB. Quizás el primer paso para acelerar los enrutadores fue tener un RIB y FIB separados en la memoria principal, con el FIB, generalmente con menos entradas que el RIB, organizado para una búsqueda rápida de destinos. Por el contrario, el RIB se optimizó para una actualización eficiente mediante protocolos de enrutamiento.
Los primeros enrutadores que no procesaban generalmente organizaban la FIB como una tabla hash , mientras que la RIB podría ser una lista vinculada . Dependiendo de la implementación, el FIB puede tener menos entradas que el RIB, o el mismo número.
Cuando los enrutadores comenzaron a tener procesadores de reenvío separados, estos procesadores generalmente tenían mucha menos memoria que el procesador principal, de modo que el procesador de reenvío solo podía contener las rutas utilizadas con más frecuencia. En los primeros Cisco AGS + y 7000, por ejemplo, la caché del procesador de reenvío podía contener aproximadamente 1000 entradas de ruta. En una empresa, esto a menudo funcionaría bastante bien, porque había menos de 1000 servidores u otras subredes de destino populares. Sin embargo, dicha caché era demasiado pequeña para el enrutamiento general de Internet. Los diferentes diseños de enrutadores se comportaron de diferentes maneras cuando un destino no estaba en la caché.
Problemas de pérdida de caché
Una condición de falta de caché puede resultar en que el paquete se envíe de regreso al procesador principal, para que se busque en una ruta lenta que tenga acceso a la tabla de enrutamiento completa. Dependiendo del diseño del enrutador, una falta de caché puede causar una actualización de la caché de hardware rápida o la caché rápida en la memoria principal. En algunos diseños, fue más eficiente invalidar la caché rápida por una falla de caché, enviar el paquete que causó la falla de caché a través del procesador principal y luego repoblar la caché con una nueva tabla que incluye el destino que causó la falla. Este enfoque es similar a un sistema operativo con memoria virtual, que mantiene la información utilizada más recientemente en la memoria física.
A medida que se redujeron los costos de memoria y aumentaron las necesidades de rendimiento, surgieron FIB que tenían la misma cantidad de entradas de ruta que en el RIB, pero estaban organizadas para una búsqueda rápida en lugar de una actualización rápida. Siempre que cambiaba una entrada RIB, el enrutador cambiaba la entrada FIB correspondiente.
Alternativas de diseño de FIB
Los FIB de alto rendimiento alcanzan su velocidad con combinaciones específicas de implementación de algoritmos y hardware especializados.
Software
Se han utilizado varios algoritmos de búsqueda para la búsqueda de FIB. Si bien se utilizaron por primera vez estructuras de datos de uso general bien conocidas, como tablas hash , surgieron algoritmos especializados, optimizados para direcciones IP. Incluyen:
- Árbol binario
- Árbol de radix
- Trie de cuatro vías
- Patricia árbol [3]
Una arquitectura de CPU multinúcleo se usa comúnmente para implementar sistemas de red de alto rendimiento. Estas plataformas facilitan el uso de una arquitectura de software en la que el procesamiento de paquetes de alto rendimiento se realiza dentro de un entorno de ruta rápida en núcleos dedicados, para maximizar el rendimiento del sistema. Un modelo de ejecución hasta la finalización minimiza la sobrecarga y la latencia del sistema operativo. [4]
Hardware
Se utilizaron varias formas de RAM rápida y, eventualmente, memoria básica direccionable por contenido (CAM) para acelerar la búsqueda. CAM, aunque útil en conmutadores de capa 2 que necesitaban buscar una cantidad relativamente pequeña de direcciones MAC de longitud fija , tenía una utilidad limitada con direcciones IP con prefijos de enrutamiento de longitud variable (consulte Enrutamiento entre dominios sin clases ). Ternary CAM (CAM), aunque caro, se presta a búsquedas de prefijos de longitud variable. [5]
Uno de los desafíos del diseño de búsqueda de reenviadores es minimizar la cantidad de memoria especializada necesaria y, cada vez más, minimizar la energía consumida por la memoria. [6]
Reenvío distribuido
El siguiente paso para acelerar los enrutadores fue tener un procesador de reenvío especializado separado del procesador principal. Todavía existía una única ruta, pero el reenvío ya no tenía que competir con el control en un solo procesador. El procesador de enrutamiento rápido generalmente tenía una FIB pequeña, con memoria de hardware (por ejemplo, memoria estática de acceso aleatorio (SRAM)) más rápida y más cara que la FIB en la memoria principal. La memoria principal era generalmente una memoria dinámica de acceso aleatorio (DRAM).
Reenvío distribuido temprano
Luego, los enrutadores comenzaron a tener múltiples elementos de reenvío, que se comunicaban a través de un bus compartido de alta velocidad [7] o mediante una memoria compartida . [8] Cisco usó buses compartidos hasta que se saturaron, mientras que Juniper prefirió la memoria compartida. [9]
Cada elemento de reenvío tenía su propia FIB. Vea, por ejemplo, el procesador de interfaz versátil en el Cisco 7500 [10]
Finalmente, el recurso compartido se convirtió en un cuello de botella, con el límite de velocidad del bus compartido de aproximadamente 2 millones de paquetes por segundo (Mpps). Las telas de travesaños rompieron este cuello de botella.
A medida que aumentaba el ancho de banda de reenvío, incluso con la eliminación de la sobrecarga de fallas de caché, las rutas compartidas limitaban el rendimiento. Si bien un enrutador puede tener 16 motores de reenvío, si hubiera un solo bus, solo sería posible una transferencia de paquetes a la vez. Hubo algunos casos especiales en los que un motor de reenvío podría encontrar que la interfaz de salida era una de las interfaces lógicas o físicas presentes en la tarjeta del reenviador, de modo que el flujo de paquetes estaba totalmente dentro del reenviador. Sin embargo, a menudo era más fácil, incluso en este caso especial, enviar el paquete desde el autobús y recibirlo desde el autobús.
Si bien algunos diseños experimentaron con múltiples buses compartidos, el enfoque final fue adaptar el modelo de conmutador de barra transversal de los conmutadores telefónicos, en el que cada motor de reenvío tenía una ruta de hardware a todos los demás motores de reenvío. Con una pequeña cantidad de motores de reenvío, los tejidos de reenvío de barras transversales son prácticos y eficientes para enrutamiento de alto rendimiento. Existen diseños de múltiples etapas para sistemas de barras transversales, como las redes Clos .
Ver también
Referencias
- ^ Marco de separación de elementos de control y reenvío (ForCES) , RFC 3746, Grupo de trabajo de red, abril de 2004
- ^ Metodología para dispositivos de interconexión de red , RFC 2544, S. Bradner & J. McQuade, marzo de 1999
- ^ Enrutamiento en prefijos coincidentes más largos , ID, W. Doeringer 'et al.', IEEE / ACM Transactions on Networking, febrero de 1996
- ^ "Módulos de software 6WINDGate" . 6 VIENTO . Consultado el 14 de agosto de 2015 .
- ^ Mapeo eficiente del clasificador de rango en Ternary-CAM , Simposio de IEEE sobre interconexiones de alta velocidad, H. Liu, agosto de 2002
- ^ Reducción del consumo de energía TCAM y aumento del rendimiento , Simposio IEEE sobre interconexiones de alta velocidad, R Panigrahy & S. Sharma, agosto de 2002
- ^ Reenvío de IP de alto rendimiento mediante peering de interfaz de host , J. Touch et al. , Proc. IX Taller de IEEE sobre redes de área local y metropolitana (LANMAN), mayo de 1998
- ^ Arquitecturas de multiprocesador de memoria compartida para enrutadores IP de software , Y. Luo et al. , IEEE Transactions on Parallel and Distributed Systems, 2003
- ^ Juniper Networks Router Arquitectura , Guía de referencia de Juniper Networks: JunOS enrutamiento, configuración y Arquitectura , T. Thomas, Addison-Wesley Professional, 2003
- ^ Arquitectura de hardware del enrutador Cisco 7500 , dentro de la arquitectura de software Cisco IOS (Desarrollo profesional de CCIE , V.Bollapragada et al. , Cisco Press, 2000