En las redes de comunicaciones digitales , el procesamiento de paquetes se refiere a la amplia variedad de algoritmos que se aplican a un paquete de datos o información a medida que se desplaza a través de los diversos elementos de red de una red de comunicaciones. Con el aumento del rendimiento de las interfaces de red, existe una necesidad correspondiente de un procesamiento de paquetes más rápido. [1]
Existen dos clases amplias de algoritmos de procesamiento de paquetes que se alinean con la subdivisión de red estandarizada del plano de control y el plano de datos . Los algoritmos se aplican a:
Dentro de cualquier dispositivo habilitado para red (por ejemplo, enrutador , conmutador , elemento de red o terminal como una computadora o un teléfono inteligente), es el subsistema de procesamiento de paquetes el que administra el recorrido de la red multicapa o la pila de protocolos desde las capas inferiores, físicas y de red hasta la capa de aplicación .
La historia del procesamiento de paquetes es la historia de Internet y de la conmutación de paquetes . Los hitos del procesamiento de paquetes incluyen:
Las referencias históricas y la cronología se pueden encontrar en la sección Recursos externos a continuación.
Para que las redes tengan éxito es necesario contar con un estándar unificador que defina la arquitectura de los sistemas de redes. El requisito fundamental para un estándar de este tipo es proporcionar un marco que permita a los fabricantes de hardware y software de todo el mundo desarrollar tecnologías de redes que funcionen juntas y aprovechar sus capacidades de inversión acumuladas para hacer avanzar el estado de las redes.
En la década de 1970, dos organizaciones, la Organización Internacional de Normalización [2] (ISO) y el Comité Consultivo Internacional Telegráfico y Telefónico [3] (CCITT, ahora llamado Unión Internacional de Telecomunicaciones (UIT-T), iniciaron proyectos con el objetivo de desarrollar estándares internacionales de redes. En 1983, estos esfuerzos se fusionaron y en 1984 el estándar, llamado El modelo básico de referencia para la interconexión de sistemas abiertos , [4] fue publicado por ISO y como estándar X.200 [5] por el UIT-T.
El modelo OSI es un modelo de 7 capas [6] que describe cómo funciona un sistema operativo de red. Un modelo en capas tiene muchos beneficios [7], incluida la capacidad de cambiar una capa sin afectar a las demás y como modelo para comprender cómo funciona un sistema operativo de red. Mientras se mantenga la interconexión entre capas, los proveedores pueden mejorar la implementación de una capa individual sin afectar a las demás capas.
Paralelamente al desarrollo del modelo OSI, la Agencia de Proyectos de Investigación Avanzada de Defensa de los Estados Unidos [8] ( DARPA ) estaba implementando una red de investigación. El protocolo de interconexión de redes desarrollado para soportar la red, llamado ARPAnet , [9] se denominó TCP o Programa de Control de Transmisión. A medida que avanzaba la investigación y el desarrollo y el tamaño de la red crecía, se determinó que el diseño de interconexión de redes que se estaba utilizando se estaba volviendo difícil de manejar y no seguía exactamente el enfoque en capas del modelo OSI. Esto condujo a la división del TCP original y a la creación de la arquitectura TCP/IP [10] : TCP ahora significa Protocolo de Control de Transmisión e IP significa Protocolo de Internet.
Las redes de paquetes [11] surgieron a principios de los años 60 como resultado de la necesidad de hacer más fiables las redes de comunicaciones. Se las puede considerar como la implementación del modelo en capas utilizando una estructura de paquetes.
Las primeras redes comerciales estaban compuestas por circuitos analógicos dedicados que se utilizaban para las comunicaciones de voz. El concepto de conmutación de paquetes se introdujo para crear una red de comunicaciones que siguiera funcionando a pesar de las fallas de los equipos en toda la red. En este cambio de paradigma, las redes se consideran conjuntos de sistemas que transmiten datos en pequeños paquetes que recorren su camino desde el origen hasta el destino por cualquier número de rutas. Las funciones iniciales de procesamiento de paquetes respaldaban el enrutamiento de paquetes a través de la red, la detección y corrección de errores de transmisión y otras funciones de gestión de la red .
La conmutación de paquetes con sus funciones de procesamiento de paquetes de apoyo tiene varias ventajas prácticas con respecto a las redes tradicionales de conmutación de circuitos: [12]
Un paquete de red es el elemento fundamental para las redes de conmutación de paquetes. [15] Cuando un elemento, como un archivo, un mensaje de correo electrónico, una transmisión de voz o de vídeo, se transmite a través de la red, se divide en fragmentos denominados paquetes que pueden moverse a través de la red de manera más eficiente que un gran bloque de datos. Numerosos estándares [16] cubren la estructura de los paquetes, pero normalmente estos se componen de tres elementos:
En una red de conmutación de paquetes , el equipo host emisor paquetiza el elemento original y cada paquete se enruta a través de la red hasta su destino. Algunas redes utilizan paquetes de longitud fija, normalmente de 1024 bits, mientras que otras utilizan paquetes de longitud variable e incluyen la longitud del paquete en el encabezado.
Los paquetes individuales pueden tomar diferentes rutas hacia el destino y llegar a él desordenadamente. La computadora de destino verifica la exactitud de los datos en cada paquete (usando la información del final), vuelve a ensamblar el elemento original usando la información del número de paquete en el encabezado y presenta el elemento a la aplicación o al usuario receptor.
Este ejemplo básico incluye las tres funciones de procesamiento de paquetes más fundamentales: paquetización, enrutamiento y ensamblaje. Las funciones de procesamiento de paquetes varían desde las más simples hasta las más complejas. Como ejemplo, la función de enrutamiento es en realidad un proceso de varios pasos [17] que involucra varios algoritmos de optimización y búsquedas en tablas. Una función de enrutamiento básica en Internet se parece a lo siguiente:
Las funciones de enrutamiento más avanzadas incluyen el equilibrio de carga de la red [18] y los algoritmos de ruta más rápidos [19] . Estos ejemplos ilustran la gama de algoritmos de procesamiento de paquetes posibles y cómo pueden introducir retrasos significativos [20] en la transmisión de un elemento. Los diseñadores de equipos de red utilizan con frecuencia una combinación de aceleradores de hardware y software para minimizar la latencia en la red.
Los equipos basados en IP se pueden dividir en tres elementos básicos: plano de datos, plano de control y plano de gestión. [21]
El plano de datos es un subsistema de un nodo de red que recibe y envía paquetes desde una interfaz, los procesa según lo requiere el protocolo aplicable y los entrega, descarta o reenvía según corresponda.
El plano de control mantiene información que se puede utilizar para cambiar los datos utilizados por el plano de datos. Mantener esta información requiere el manejo de protocolos de señalización complejos. La implementación de estos protocolos en el plano de datos daría lugar a un rendimiento de reenvío deficiente. Una forma habitual de gestionar estos protocolos es dejar que el plano de datos detecte los paquetes de señalización entrantes y los reenvíe localmente al plano de control. Los protocolos de señalización del plano de control pueden actualizar la información del plano de datos e inyectar paquetes de señalización salientes en el plano de datos. Esta arquitectura funciona porque el tráfico de señalización es una parte muy pequeña del tráfico global.
El plano de gestión proporciona una interfaz administrativa con el sistema general. Contiene procesos que respaldan la administración operativa, la gestión o las acciones de configuración/aprovisionamiento, como:
También se pueden incluir soluciones más sofisticadas basadas en XML ( eXtensible Markup Language ).
La lista de aplicaciones de procesamiento de paquetes [22] suele dividirse en dos categorías. A continuación se presentan algunos ejemplos seleccionados para ilustrar la variedad de aplicaciones que se utilizan en la actualidad.
La conmutación de paquetes [24] también presenta algunos compromisos arquitectónicos. La realización de funciones de procesamiento de paquetes en la transmisión de información introduce demoras que pueden ser perjudiciales para la aplicación que se está ejecutando. Por ejemplo, en aplicaciones de voz y video, la conversión necesaria de analógico a digital y viceversa en el destino junto con las demoras introducidas por la red pueden causar brechas notables que son disruptivas para los usuarios. La latencia es una medida del retraso de tiempo experimentado por un sistema complejo.
Se han desarrollado múltiples enfoques arquitectónicos para el procesamiento de paquetes [25] para abordar los requisitos de rendimiento y funcionalidad de una red específica y para abordar el problema de latencia.
Una pila de red estándar utiliza servicios proporcionados por el sistema operativo (OS) que se ejecuta en un solo procesador ( monohilo ). Si bien las arquitecturas monohilo son las más simples de implementar, están sujetas a sobrecargas asociadas con el desempeño de las funciones del SO, como preempciones, administración de subprocesos, temporizadores y bloqueos. Estas sobrecargas de procesamiento del SO se imponen en cada paquete que pasa por el sistema, lo que resulta en una pérdida de rendimiento.
Se pueden realizar mejoras de rendimiento en una pila de redes de SO adaptando el software de procesamiento de la pila de protocolos para que admita varios procesadores ( multiproceso ), ya sea mediante el uso de plataformas de multiprocesamiento simétrico (SMP) o una arquitectura de procesador multinúcleo . Se obtienen aumentos de rendimiento para una pequeña cantidad de procesadores, [26] pero no se logra escalar linealmente en cantidades mayores de procesadores (o núcleos) y un procesador con, por ejemplo, ocho núcleos puede no procesar paquetes significativamente más rápido que uno con dos núcleos.
En una implementación de ruta rápida , el plano de datos se divide en dos capas. La capa inferior, normalmente denominada ruta rápida, procesa la mayoría de los paquetes entrantes fuera del entorno del SO y sin incurrir en ninguna de las sobrecargas del SO que degradan el rendimiento general. Solo los paquetes que requieren un procesamiento complejo se reenvían a la pila de red del SO (la capa superior del plano de datos), que realiza las funciones de gestión, señalización y control necesarias. Cuando se requieren algoritmos complejos, como el enrutamiento o la seguridad, la pila de red del SO reenvía el paquete a componentes de software dedicados en el plano de control.
Un procesador multinúcleo puede proporcionar una mejora de rendimiento adicional a una implementación de ruta rápida. [27] Para maximizar el rendimiento general del sistema, se pueden dedicar varios núcleos a ejecutar la ruta rápida, mientras que solo se requiere un núcleo para ejecutar el sistema operativo, la pila de red del SO y el plano de control de la aplicación.
La única restricción a la hora de configurar la plataforma es que, dado que los núcleos que ejecutan la ruta rápida se ejecutan fuera del sistema operativo, deben estar dedicados exclusivamente a la ruta rápida y no compartirse con otro software. El sistema también se puede reconfigurar de forma dinámica a medida que cambian los patrones de tráfico. Dividir el plano de datos en dos capas también agrega complejidad, ya que las dos capas deben tener la misma información para garantizar la coherencia del sistema.
Para crear plataformas especializadas de procesamiento de paquetes, se han desarrollado e implementado diversas tecnologías, que abarcan todo el espectro de hardware y software, y que han sido diseñadas con el objetivo de maximizar la velocidad y el rendimiento, al tiempo que se minimiza la latencia.
Una unidad de procesamiento de red (NPU) es similar en muchos aspectos a los procesadores de propósito general (GPP) que alimentan la mayoría de las computadoras, pero con su arquitectura interna y funciones adaptadas a las operaciones centradas en la red. Las NPU suelen tener funciones específicas de la red, como búsqueda de direcciones, comparación de patrones y gestión de colas, integradas en su microcódigo . Las operaciones de procesamiento de paquetes de nivel superior, como la seguridad o la detección de intrusiones, suelen estar integradas en las arquitecturas de NPU. [28] Los ejemplos de procesadores de red incluirían:
Un procesador multinúcleo es un paquete semiconductor único que tiene 2 o más núcleos, cada uno representando una unidad de procesamiento individual, capaz de ejecutar código en paralelo. Las CPU de propósito general como Intel Xeon [29] ahora admiten hasta 8 núcleos. Algunos procesadores multinúcleo integran capacidades de procesamiento de paquetes dedicadas para proporcionar un SoC (sistema en chip) completo. Generalmente integran interfaces Ethernet , motores de cifrado , motores de coincidencia de patrones , colas de hardware para QoS y, a veces, funciones más sofisticadas que utilizan micronúcleos. Todas estas características de hardware pueden descargar el procesamiento de paquetes de software. Ejemplos recientes de estos paquetes multinúcleo especializados, como Cavium OCTEON II, pueden admitir desde 2 hasta 32 núcleos.
Para acciones claramente definibles y repetitivas, la creación de un acelerador dedicado integrado directamente en una solución de hardware de semiconductores acelerará las operaciones en comparación con el software que se ejecuta en un procesador de propósito general. [30] Las implementaciones iniciales utilizaban FPGA (matriz de puertas programables en campo) o ASIC (circuito integrado específico de la aplicación), pero ahora las funciones específicas como el cifrado y la compresión están integradas tanto en GPP como en NPU como aceleradores de hardware internos. Los ejemplos actuales de procesadores multinúcleo con aceleradores de hardware específicos de la red incluyen el Cavium CN63xx con aceleración para seguridad, TCP/IP, QOS y coincidencia de patrones HFA [31] y la familia de procesadores Netlogic Microsystems XFS con motores de aceleración de redes y seguridad. [32]
La posibilidad de tomar decisiones basadas en el contenido de paquetes individuales permite una amplia variedad de nuevas aplicaciones, como la función de políticas y reglas de cobro (PCRF) y la calidad del servicio. Los sistemas de procesamiento de paquetes separan tipos específicos de tráfico mediante el uso de tecnologías de inspección profunda de paquetes (DPI) [33] . Las tecnologías DPI utilizan algoritmos de comparación de patrones para examinar el interior de la carga útil de datos e identificar el contenido de todos y cada uno de los paquetes que fluyen a través de un dispositivo de red. Las coincidencias de patrones exitosas se informan a la aplicación de control para que se tomen las medidas correspondientes.
El software del sistema operativo contendrá ciertas pilas de red estándar que funcionarán tanto en entornos de uno como de varios núcleos. [34] Para poder implementar arquitecturas de bypass del sistema operativo (ruta rápida) se requiere el uso de software de procesamiento de paquetes especializado como 6WINDGate de 6WIND . Este tipo de software proporciona un conjunto de protocolos de red que se pueden distribuir entre múltiples blades, procesadores o núcleos y escalar adecuadamente.