
Un procesador de red es un circuito integrado que cuenta con un conjunto de características específicamente orientadas al dominio de las aplicaciones de red .
Los procesadores de red suelen ser dispositivos programables por software y poseen características genéricas similares a las de las unidades centrales de procesamiento de propósito general que se utilizan habitualmente en muchos tipos diferentes de equipos y productos.
Historia del desarrollo
En las redes de telecomunicaciones modernas , la información (voz, vídeo, datos) se transfiere como datos en paquetes (lo que se denomina conmutación de paquetes ), a diferencia de las redes de telecomunicaciones antiguas que transmitían la información como señales analógicas , como en la red telefónica pública conmutada (RTPC) o las redes analógicas de televisión y radio . El procesamiento de estos paquetes ha dado lugar a la creación de circuitos integrados (CI) optimizados para gestionar este tipo de datos. Los procesadores de red cuentan con características o arquitecturas específicas diseñadas para mejorar y optimizar el procesamiento de paquetes dentro de estas redes.
Los procesadores de red han evolucionado hasta convertirse en circuitos integrados con funciones específicas. Esta evolución ha dado lugar a la creación de circuitos integrados más complejos y flexibles. Los circuitos más recientes son programables, lo que permite que un único diseño de circuito integrado realice diversas funciones, siempre que se instale el software adecuado.
Los procesadores de red se utilizan en la fabricación de muchos tipos diferentes de equipos de red, tales como:
- Enrutadores , enrutadores de software y conmutadores ( procesadores de interconexión de redes )
- Cortafuegos
- controladores de borde de sesión
- Dispositivos de detección de intrusiones
- Dispositivos de prevención de intrusiones
- Sistemas de monitorización de red
- Seguridad de red ( criptoprocesadores seguros )
Tablas de coincidencias reconfigurables
Las tablas de coincidencia reconfigurables [ 1 ] [ 2 ] se introdujeron en 2013 para permitir que los conmutadores operen a altas velocidades manteniendo la flexibilidad con respecto a los protocolos de red habilitados en el dispositivo y/o su procesamiento. El P4 [ 3 ] se utiliza para programar los chips. La empresa Barefoot Networks se basaba en estos procesadores y fue adquirida posteriormente por Intel en 2019.

Una canalización RMT se basa en tres etapas principales: el analizador programable, [ 2 ] las tablas de Match-Action y el desanalizador programable. El analizador lee el paquete en fragmentos y los procesa para determinar qué protocolos se utilizan en el paquete ( Ethernet , VLAN , IPv4 ...) y extrae ciertos campos del paquete en el vector de encabezado del paquete (PHV). Ciertos campos del PHV pueden estar reservados para usos especiales, como los encabezados presentes o la longitud total del paquete. Los protocolos suelen ser programables, al igual que los campos que se extraen. Las tablas de Match-Action son una serie de unidades que leen un PHV de entrada y comparan ciertos campos en él mediante una matriz de interconexión y memoria CAM . El resultado es una instrucción amplia que opera sobre uno o más campos del PHV y datos para respaldar esta instrucción. El PHV de salida se envía a la siguiente etapa MA o al desanalizador. El analizador recibe el PHV, así como el paquete original y sus metadatos (para completar los datos faltantes que no se extrajeron del PHV), y luego genera el paquete modificado en fragmentos. El analizador, al igual que el analizador, suele ser programable y ambos pueden compartir algunos archivos de configuración.
FlexNIC [ 4 ] intenta aplicar este modelo a los controladores de interfaz de red, lo que permite a los servidores enviar y recibir paquetes a altas velocidades manteniendo la flexibilidad del protocolo y sin aumentar la sobrecarga de la CPU.
Funciones genéricas
En su función genérica de procesador de paquetes, un procesador de red suele contar con una serie de características o funciones optimizadas, entre las que se incluyen:
- Coincidencia de patrones: la capacidad de encontrar patrones específicos de bits o bytes dentro de los paquetes en un flujo de paquetes.
- Búsqueda por clave: la capacidad de realizar rápidamente una búsqueda en una base de datos utilizando una clave (normalmente una dirección en un paquete) para encontrar un resultado, normalmente información de enrutamiento .
- Cálculo
- Manipulación de campos de bits de datos: la capacidad de cambiar ciertos campos de datos contenidos en el paquete mientras se está procesando.
- Gestión de colas : a medida que se reciben, procesan y programan los paquetes para su posterior envío, se almacenan en colas.
- Procesamiento de control: las microoperaciones del procesamiento de un paquete se controlan a nivel macro, lo que implica comunicación y coordinación con otros nodos del sistema.
- Asignación y recirculación rápidas de búferes de paquetes.
Paradigmas arquitectónicos
Para gestionar altas tasas de datos, se suelen utilizar varios paradigmas arquitectónicos:
- Segmentación de procesadores: cada etapa de la segmentación consta de un procesador que realiza una de las funciones enumeradas anteriormente.
- Procesamiento paralelo con múltiples procesadores, que a menudo incluye multihilo .
- Motores microcodificados especializados para realizar las tareas de forma más eficiente.
- Con la llegada de las arquitecturas multinúcleo , los procesadores de red pueden utilizarse para el procesamiento de capas superiores ( L4-L7 ).
Además, la gestión del tráfico, un elemento crítico en el procesamiento de redes L2 - L3 que antes era ejecutado por diversos coprocesadores, se ha convertido en parte integral de la arquitectura del procesador de red, y una parte sustancial de su área de silicio ("espacio real") se dedica al gestor de tráfico integrado. [ 5 ] Los procesadores de red modernos también están equipados con redes de interconexión en chip de baja latencia y alto rendimiento, optimizadas para el intercambio de mensajes pequeños entre núcleos (pocas palabras de datos). Dichas redes pueden utilizarse como una alternativa para la comunicación eficiente entre núcleos, además del uso estándar de memoria compartida. [ 6 ]
Aplicaciones
Utilizando la función genérica del procesador de red, un programa de software implementa una aplicación que el procesador de red ejecuta, lo que da como resultado que el equipo físico realice una tarea o proporcione un servicio. Algunos de los tipos de aplicaciones que normalmente se implementan como software que se ejecuta en procesadores de red son: [ 7 ]
- La discriminación y el reenvío de paquetes o tramas , es decir, el funcionamiento básico de un enrutador o conmutador .
- Aplicación de la calidad del servicio (QoS): identificar diferentes tipos o clases de paquetes y proporcionar un trato preferencial a algunos tipos o clases de paquetes a expensas de otros tipos o clases de paquetes.
- Funciones de control de acceso: determinar si se debe permitir que un paquete o un flujo de paquetes específico atraviese el equipo de red.
- El cifrado de flujos de datos, gracias a los motores de cifrado integrados en el hardware, permite que el procesador cifre flujos de datos individuales.
- Procesamiento de descarga TCP
Véase también
Referencias
- ↑ Bosshart, Pat; Gibb, Glen; Kim, Hun-Seok; Varghese, George; McKeown, Nick; Izzard, Martin; Mujica, Fernando; Horowitz, Mark (1 de agosto de 2013). Metamorfosis de reenvío: procesamiento rápido programable de coincidencia-acción en hardware para SDN . ACM SIGCOMM 2013. Archivado del original el 26 de marzo de 2022. Recuperado el 26 de marzo de 2022 .
- 1 2 Gibb, Glen; Varghese, George; Horowitz, Mark; McKeown, Nick (octubre de 2013). "Principios de diseño para analizadores de paquetes". Arquitecturas para sistemas de redes y comunicaciones . págs. 13–24 . doi : 10.1109/ANCS.2013.6665172 . ISBN 978-1-4799-1641-2. S2CID 12282067 .
- ↑ "P4: Programación de procesadores de paquetes independientes del protocolo | acm sigcomm" . www.sigcomm.org . Consultado el 26 de marzo de 2022 .
- ↑ Kaufmann, Antoine; Peter, Simon; Sharma, Naveen Kr.; Anderson, Thomas; Krishnamurthy, Arvind (25 de marzo de 2016). «Procesamiento de paquetes de alto rendimiento con FlexNIC». Actas de la Vigésimo Primera Conferencia Internacional sobre Soporte Arquitectónico para Lenguajes de Programación y Sistemas Operativos . ASPLOS '16. Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 67–81 . doi : 10.1145/2872362.2872367 . ISBN 978-1-4503-4091-5. S2CID 9625891 .
- ↑ Giladi, Ran (2008). Procesadores de red: arquitectura, programación e implementación . Sistemas en silicio. Morgan Kaufmann. ISBN 978-0-12-370891-5.
- ↑ Buono, Daniele; Mencagli, Gabriele (21–25 de julio de 2014). Mecanismos de ejecución para paralelismo de grano fino en procesadores de red: La experiencia TILEPro64 (PDF) . Conferencia Internacional de Simulación de Computación de Alto Rendimiento de 2014 (HPCS 2014). Bolonia, Italia. pp. 55–64 . doi : 10.1109/HPCSim.2014.6903669 . ISBN 978-1-4799-5313-4Archivado (PDF) del original el 27 de marzo de 2019 .URL alternativa
- ↑ Comer, Douglas E. (2005). Diseño de sistemas de red mediante procesadores de red: versión Intel 2XXX . Addison-Wesley. ISBN 978-0-13-187286-8.
- microprocesadores integrados
- Red en un chip
- Hardware de red
- aceleración de hardware
- Circuitos integrados de aplicación específica
- Sistema en un chip