

In routing, the data plane, sometimes called the forwarding plane or user plane, defines the part of the router architecture that determines what to do with packets arriving on an inbound interface. Most commonly, it refers to a table in which the router looks up the destination address of the incoming packet and retrieves the information necessary to determine the path from the receiving element, through the internal forwarding fabric of the router, and to the proper outgoing interface(s).
In certain cases the table may specify that a packet is to be discarded. In such cases, the router may return an ICMP "destination unreachable" or other appropriate code. Some security policies, however, dictate that the router should drop the packet silently, in order that a potential attacker does not become aware that a target is being protected.
The incoming forwarding element will also decrement the time-to-live (TTL) field of the packet, and, if the new value is zero, discard the packet. While the Internet Protocol (IP) specification indicates that an Internet Control Message Protocol (ICMP) time exceeded message should be sent to the originator of the packet (i.e. the node indicated by the source address), the router may be configured to drop the packet silently (again according to security policies).
Depending on the specific router implementation, the table in which the destination address is looked up could be the routing table (also known as the routing information base, RIB), or a separate forwarding information base (FIB) that is populated (i.e., loaded) by the routing control plane, but used by the forwarding plane for look-ups at much higher speeds. Before or after examining the destination, other tables may be consulted to determine how to handle packets based on other characteristics, such as the source address, the IP protocol identifier field, or Transmission Control Protocol (TCP) or User Datagram Protocol (UDP) port number.
Forwarding plane functions run in the forwarding element.[1] High-performance routers often have multiple distributed forwarding elements, so that the router increases performance with parallel processing.
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 del paquete, como el campo DSCP utilizado por los servicios diferenciados .
En general, el paso directo desde la interfaz de entrada a la interfaz de salida, a través de la red con mínimas modificaciones en la interfaz de salida, se denomina ruta rápida del enrutador. Si el paquete requiere un procesamiento significativo, como segmentación o cifrado, puede seguir una ruta más lenta, a la que a veces se denomina plano de servicios del enrutador. Los planos de servicios pueden tomar decisiones de reenvío o procesamiento basándose en información de capas superiores, como una URL web contenida en la carga útil del paquete.
Contraste con el plano de control
El plano de datos es la parte del software que procesa las solicitudes de datos. [ 2 ] Por el contrario, el plano de control es la parte del software que configura y desactiva el plano de datos. [ 3 ]
La separación conceptual del plano de datos del plano de control se ha realizado durante años. [ 3 ] Un ejemplo temprano es Unix , donde las operaciones básicas de archivos son abrir y cerrar para el plano de control y leer y escribir para el plano de datos. [ 4 ]
La separación conceptual del plano de datos del plano de control en la programación de software ha demostrado ser útil en el campo de la conmutación de paquetes , donde se originó. En redes , el plano de datos a veces se denomina plano de reenvío, ya que separa las preocupaciones: el plano de datos está optimizado para la velocidad de procesamiento, la simplicidad y la regularidad. El plano de control está optimizado para permitir la configuración , el manejo de políticas, el manejo de situaciones excepcionales y, en general, para facilitar y simplificar el procesamiento del plano de datos. [ 5 ] [ 6 ]
Problemas en el rendimiento del reenvío del enrutador
Los fabricantes diseñan routers para mercados específicos. El diseño de routers para uso doméstico, que pueden admitir varios ordenadores y telefonía VoIP, se centra en mantener el coste lo más bajo posible. En este tipo de routers, no existe una arquitectura de reenvío independiente, y solo hay una ruta de reenvío activa: hacia el procesador principal y desde este.
Los enrutadores para aplicaciones más exigentes aceptan un mayor coste y complejidad para obtener un mayor rendimiento en sus planos de reenvío.
Varios factores de diseño afectan al rendimiento del reenvío del enrutador:
- Procesamiento de la capa de enlace de datos y extracción del paquete
- Decodificación del encabezado del paquete
- Consultar la dirección de destino en el encabezado del paquete.
- Analizando otros campos del paquete
- Envío del 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 monoprocesador, estos parámetros de rendimiento se ven afectados no solo por la velocidad del procesador, sino también por la competencia por el mismo. Los enrutadores de mayor rendimiento invariablemente cuentan con múltiples elementos de procesamiento, que pueden ser chips procesadores de propósito general o circuitos integrados de aplicación específica (ASIC) especializados.
Los productos de muy alto rendimiento cuentan con múltiples elementos de procesamiento en cada tarjeta de interfaz. En estos diseños, el procesador principal no participa en el reenvío de datos, sino únicamente en el plano de control y el procesamiento de gestión.
Rendimiento comparativo
En el Grupo de Trabajo de Ingeniería de Internet (IETF), dos grupos de trabajo en el Área de Operaciones y Mantenimiento se ocupan de aspectos del rendimiento. El grupo de Medición del Rendimiento entre Proveedores (IPPM) se centra, como su nombre indica, en la medición operativa de los servicios. Las mediciones de rendimiento en enrutadores individuales, o en sistemas de enrutadores definidos con precisión, son competencia del Grupo de Trabajo de Evaluación Comparativa (BMWG).
RFC 2544 es el documento clave de BMWG. [ 7 ] Una prueba de rendimiento clásica de RFC 2544 utiliza 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 aparecen las salidas en los puertos de salida.
Diseño de la base de información de reenvío
Originalmente, todos los destinos se consultaban en la tabla de enrutamiento (RIB). Quizás el primer paso para acelerar los enrutadores fue disponer de una RIB y una FIB separadas en la memoria principal. La FIB, que generalmente contenía menos entradas que la RIB, estaba organizada para una búsqueda rápida de destinos, mientras que la RIB se optimizó para una actualización eficiente mediante protocolos de enrutamiento.
Los primeros enrutadores de uniprocesamiento solían organizar la FIB como una tabla hash , mientras que la RIB podía ser una lista enlazada . Dependiendo de la implementación, la FIB podía tener menos entradas que la RIB, o la misma cantidad.
Cuando los routers comenzaron a tener procesadores de reenvío independientes, estos procesadores solían tener mucha menos memoria que el procesador principal, de modo que el procesador de reenvío solo podía almacenar las rutas más utilizadas. En los primeros Cisco AGS+ y 7000, por ejemplo, la caché del procesador de reenvío podía almacenar aproximadamente 1000 entradas de ruta. En una empresa, esto solía funcionar bastante bien, ya que había menos de 1000 subredes de servidores u otros destinos populares. Sin embargo, dicha caché era demasiado pequeña para el enrutamiento general de Internet. Los diferentes diseños de routers se comportaban de maneras distintas cuando un destino no estaba en la caché.
Problemas de fallos de caché
Una condición de fallo de caché podría resultar en que el paquete se envíe de vuelta al procesador principal para ser buscado en una ruta lenta que tenga acceso a la tabla de enrutamiento completa. Dependiendo del diseño del enrutador, un fallo de caché podría provocar una actualización de la caché de hardware rápida o de la caché rápida en la memoria principal. En algunos diseños, lo más eficiente era invalidar la caché rápida en caso de fallo de caché, enviar el paquete que causó el fallo a través del procesador principal y luego volver a llenar la caché con una nueva tabla que incluyera el destino que causó el fallo. Este enfoque es similar al de un sistema operativo con memoria virtual , que mantiene la información utilizada más recientemente en la memoria física.
A medida que disminuían los costos de memoria y aumentaban las necesidades de rendimiento, surgieron las FIB (tablas de enrutamiento de archivos) que tenían la misma cantidad de entradas de ruta que la RIB (tabla de enrutamiento de enrutadores), pero que priorizaban la búsqueda rápida en lugar de la actualización rápida. Cada vez que cambiaba una entrada de la RIB, el enrutador modificaba la entrada correspondiente en la FIB.
Alternativas de diseño de FIB
Las FIB de alto rendimiento logran su velocidad mediante combinaciones específicas de algoritmos especializados y hardware.
Software
Se han utilizado diversos algoritmos de búsqueda para la consulta de la FIB. Si bien inicialmente se emplearon estructuras de datos de propósito general bien conocidas, como las tablas hash , posteriormente surgieron algoritmos especializados, optimizados para direcciones IP. Estos incluyen:
- Árbol binario
- Árbol de raíz
- Triángulo de cuatro vías
- Árbol de Patricia [ 8 ]
Una arquitectura de CPU multinúcleo se utiliza 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, con el fin de maximizar el rendimiento del sistema. Un modelo de ejecución hasta su finalización minimiza la sobrecarga del sistema operativo y la latencia. [ 9 ]
Hardware
Se utilizaron diversas formas de RAM rápida y, finalmente, memoria direccionable por contenido (CAM) básica para acelerar las búsquedas. La CAM, si bien era útil en conmutadores de capa 2 que necesitaban buscar un número relativamente pequeño de direcciones MAC de longitud fija , tenía una utilidad limitada con direcciones IP que tenían prefijos de enrutamiento de longitud variable (véase Enrutamiento entre dominios sin clases ). La CAM ternaria (CAM), aunque costosa, se presta a las búsquedas de prefijos de longitud variable. [ 10 ]
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. [ 11 ]
Reenvío distribuido
Un paso más en la aceleración de los enrutadores fue la incorporación de un procesador de reenvío especializado, separado del procesador principal. Si bien seguía existiendo una única ruta, el reenvío ya no tenía que competir con el control en un solo procesador. El procesador de enrutamiento rápido generalmente contaba con una FIB pequeña, con memoria de hardware (por ejemplo, memoria de acceso aleatorio estática (SRAM)) más rápida y costosa que la FIB en la memoria principal. La memoria principal solía ser memoria de acceso aleatorio dinámica (DRAM).
Reenvío distribuido temprano
A continuación, los enrutadores comenzaron a tener múltiples elementos de reenvío, que se comunicaban a través de un bus compartido de alta velocidad [ 12 ] o a través de una memoria compartida . [ 13 ] Cisco utilizó buses compartidos hasta que se saturaron, mientras que Juniper prefirió la memoria compartida. [ 14 ]
Cada elemento de reenvío tenía su propio FIB. Véase, por ejemplo, el procesador de interfaz versátil en el Cisco 7500 [ 15 ].
Finalmente, el recurso compartido se convirtió en un cuello de botella, con un límite de velocidad del bus compartido de aproximadamente 2 millones de paquetes por segundo (Mpps). Las redes de interconexión de barras cruzadas superaron este cuello de botella.
Los caminos compartidos se convierten en cuellos de botella.
A medida que aumentaba el ancho de banda de reenvío, incluso eliminando la sobrecarga por fallos de caché, las rutas compartidas limitaban el rendimiento. Si bien un enrutador podía tener 16 motores de reenvío, si solo había un bus, solo era posible la transferencia de un paquete a la vez. Existían algunos casos especiales en los que un motor de reenvío podía encontrar que la interfaz de salida era una de las interfaces lógicas o físicas presentes en la tarjeta de reenvío, de modo que el flujo de paquetes se encontraba completamente dentro de la tarjeta. Sin embargo, incluso en este caso especial, solía ser más sencillo enviar el paquete fuera del bus y recibirlo desde el mismo.
Si bien algunos diseños experimentaron con múltiples buses compartidos, el enfoque final fue adaptar el modelo de conmutador de barra cruzada de los conmutadores telefónicos, en el que cada motor de reenvío tenía una ruta de hardware hacia todos los demás motores de reenvío. Con un número reducido de motores de reenvío, las redes de reenvío de barra cruzada son prácticas y eficientes para el enrutamiento de alto rendimiento. Existen diseños multietapa para sistemas de barra cruzada, como las redes Clos .
Véase también
Referencias
- ↑ Marco de separación de elementos de reenvío y control (ForCES) , RFC 3746, Grupo de trabajo de redes, abril de 2004
- ↑ Conran, Matt (25 de febrero de 2019). "Redes de datos con nombre: plano de reenvío con estado para la entrega de datagramas" . Network World . Recuperado el 15 de octubre de 2019 .
- 1 2 Do, Truong-Xuan; Kim, Younghan (2017-06-01). "Arquitectura de separación del plano de control y de datos para soportar oyentes de multidifusión sobre gestión de movilidad distribuida" . ICT Express . 3 (2): 90– 95. doi : 10.1016/j.icte.2017.06.001 . ISSN 2405-9595 .
- ↑ Bach, Maurice J. (1986). El diseño del sistema operativo Unix . Prentice-Hall. Bibcode : 1986duos.book.....B . ISBN 9780132017992.
- ↑ Ahmad, Ijaz; Namal, Suneth; Ylianttila, Mika; Gurtoz, Andrei (2015). "Seguridad en redes definidas por software: una revisión" (PDF) . IEEE Communications Surveys & Tutorials . 17 (4): 2317– 2342. doi : 10.1109/COMST.2015.2474118 . S2CID 2138863 .
- ↑ Xia, W.; Wen, Y.; Foh, CH; Niyato, D.; Xie, H. (2015). "Una revisión sobre redes definidas por software" . IEEE Communications Surveys & Tutorials . 17 (1): 27– 51. doi : 10.1109/COMST.2014.2330903 .
- ↑ Metodología para dispositivos de interconexión de red , RFC 2544, S. Bradner y J. McQuade, marzo de 1999
- ↑ Enrutamiento basado en prefijos coincidentes más largos , ID, W. Doeringer y otros, IEEE/ACM Transactions on Networking, febrero de 1996
- ↑ "Módulos de software 6WINDGate" . 6WIND . Consultado el 14 de agosto de 2015 .
- ↑ Mapeo eficiente de clasificador de rango en CAM ternario , Simposio IEEE sobre interconexiones de alta velocidad, H. Liu, agosto de 2002
- ↑ Reducción del consumo de energía de la TCAM y aumento del rendimiento , Simposio IEEE sobre interconexiones de alta velocidad, R. Panigrahy y S. Sharma, agosto de 2002
- ↑ Reenvío IP de alto rendimiento mediante interconexión de interfaces de host , J. Touch et al. , Actas del 9.º Taller IEEE sobre Redes de Área Local y Metropolitana (LANMAN), mayo de 1998
- ↑ Arquitecturas de multiprocesadores de memoria compartida para enrutadores IP de software , Y. Luo et al. , IEEE Transactions on Parallel and Distributed Systems, 2003
- ↑ Arquitectura de enrutadores de Juniper Networks , Guía de referencia de Juniper Networks: Enrutamiento, configuración y arquitectura de JUNOS , T. Thomas, Addison-Wesley Professional, 2003
- ↑ Arquitectura de hardware del router Cisco 7500 , Arquitectura de software de Cisco IOS (CCIE Professional Development , V. Bollapragada et al. , Cisco Press, 2000)
- Arquitectura de Internet
- Enrutadores (informática)