Articulo de referencia

Motor de descarga TCP

El motor de descarga TCP ( TOE ) es una tecnología utilizada en algunas tarjetas de interfaz de red (NIC) para descargar el procesamiento de toda la pila TCP/IP al controlador d...

El motor de descarga TCP ( TOE ) es una tecnología utilizada en algunas tarjetas de interfaz de red (NIC) para descargar el procesamiento de toda la pila TCP/IP al controlador de red. Se utiliza principalmente con interfaces de red de alta velocidad, como Gigabit Ethernet y 10 Gigabit Ethernet , donde la sobrecarga de procesamiento de la pila de red se vuelve significativa. Los TOE se utilizan a menudo [ 1 ] como una forma de reducir la sobrecarga asociada con los protocolos de almacenamiento del Protocolo de Internet (IP), como iSCSI y el Sistema de Archivos de Red (NFS).

Objetivo

Originalmente, TCP fue diseñado para redes de baja velocidad poco fiables (como los primeros módems de acceso telefónico ), pero con el crecimiento de Internet en términos de velocidades de transmisión de la red troncal (utilizando enlaces de portadora óptica , Gigabit Ethernet y 10 Gigabit Ethernet ) y mecanismos de acceso más rápidos y fiables (como DSL y módems de cable ), se utiliza frecuentemente en centros de datos y entornos de PC de escritorio a velocidades superiores a un gigabit por segundo. A estas velocidades, las implementaciones de software TCP en los sistemas host requieren una potencia de cálculo significativa. A principios de la década de 2000, la comunicación TCP gigabit dúplex completo podía consumir más del 80 % de un procesador Pentium 4 de 2,4 GHz , [ 2 ] lo que resultaba en pocos o ningún recurso de procesamiento disponible para que las aplicaciones se ejecutaran en el sistema. 

TCP es un protocolo orientado a la conexión, lo que añade complejidad y sobrecarga de procesamiento. Estos aspectos incluyen:

Al trasladar algunas o todas estas funciones a un hardware dedicado, un motor de descarga TCP, se libera la CPU principal del sistema para otras tareas.

Ciclos de CPU liberados

Una regla general aceptada es que se necesita un ciclo de CPU por cada bit enviado o recibido (es decir, se requiere un hercio de procesamiento de CPU para enviar o recibir).1 bit/s  de TCP/IP). [ 2 ] Por ejemplo, 5 Gbit/s ( 625 MB/s ) de tráfico de red requieren 5  GHz de procesamiento de CPU. Esto implica que se requerirán dos núcleos completos de un procesador multinúcleo  de 2,5 GHz para manejar el procesamiento TCP/IP asociado con 5 Gbit/s de tráfico TCP/IP. Dado que Ethernet (10GE en este ejemplo) es bidireccional, es posible enviar y recibir 10 Gbit/s (para un rendimiento agregado de 20 Gbit/s ). Usando la regla de un ciclo por bit, esto equivale a ocho núcleos de 2,5 GHz. 

Muchos de los ciclos de CPU utilizados para el procesamiento TCP/IP se liberan mediante la descarga de TCP/IP y pueden ser utilizados por la CPU (generalmente la CPU de un servidor ) para realizar otras tareas, como el procesamiento del sistema de archivos (en un servidor de archivos) o la indexación (en un servidor de medios de copia de seguridad). En otras palabras, un servidor con descarga de TCP/IP puede realizar más trabajo de servidor que un servidor sin tarjetas de red con descarga de TCP/IP.

Reducción del tráfico PCI

Además de la sobrecarga del protocolo que TOE puede solucionar, también puede abordar algunos problemas arquitectónicos que afectan a un gran porcentaje de puntos finales basados ​​en host (servidores y PC). Muchos hosts de punto final antiguos se basan en el bus PCI , que proporciona una interfaz estándar para la adición de ciertos periféricos , como interfaces de red, a servidores y PC. PCI es ineficiente para transferir pequeñas ráfagas de datos desde la memoria principal a través del bus PCI a los circuitos integrados de la interfaz de red, pero su eficiencia mejora a medida que aumenta el tamaño de la ráfaga de datos. Dentro del protocolo TCP, se crea una gran cantidad de paquetes pequeños (por ejemplo, acuses de recibo) y, dado que estos generalmente se generan en la CPU del host y se transmiten a través del bus PCI y hacia la interfaz física de red, esto afecta el rendimiento de E/S del equipo host.

Una solución TOE, ubicada en la interfaz de red, se encuentra al otro lado del bus PCI con respecto al host de la CPU, por lo que puede abordar este problema de eficiencia de E/S, ya que los datos que se van a enviar a través de la conexión TCP se pueden enviar al TOE desde la CPU a través del bus PCI utilizando grandes ráfagas de datos sin que ninguno de los paquetes TCP más pequeños tenga que atravesar el bus PCI.

Historia

Una de las primeras patentes en esta tecnología, para la descarga de UDP, fue otorgada a Auspex Systems a principios de 1990. [ 3 ] El fundador de Auspex, Larry Boucher, y varios ingenieros de Auspex fundaron Alacritech en 1997 con la idea de extender el concepto de descarga de pila de red a TCP e implementarlo en silicio personalizado. Introdujeron la primera tarjeta de red de descarga completa de pila paralela a principios de 1999; la SLIC (Session Layer Interface Card) de la compañía fue la predecesora de sus ofertas TOE actuales. Alacritech posee varias patentes en el área de descarga de TCP/IP. [ 4 ]

Para 2002, cuando el surgimiento del almacenamiento basado en TCP, como iSCSI , despertó interés, se decía que "al menos una docena de nuevos participantes, la mayoría fundados hacia el final de la burbuja de las puntocom, están persiguiendo la oportunidad de aceleradores de semiconductores comerciales para protocolos y aplicaciones de almacenamiento, compitiendo con media docena de proveedores establecidos y diseños ASIC propios". [ 5 ]

En 2005, Microsoft obtuvo la licencia de la base de patentes de Alacritech y, junto con esta, creó la arquitectura de descarga parcial de TCP conocida como TCP Chimney Offload. Esta arquitectura se basa en la patente de Alacritech "Communication Block Passing Patent". Al mismo tiempo, Broadcom también obtuvo una licencia para fabricar chips TCP Chimney Offload.

Tipos

En lugar de reemplazar completamente la pila TCP con un TOE, existen técnicas alternativas para descargar algunas operaciones en cooperación con la pila TCP del sistema operativo. La descarga de suma de comprobación TCP y la descarga de segmentos grandes son compatibles con la mayoría de las NIC Ethernet actuales. Técnicas más recientes, como la descarga de recepción de grandes paquetes y la descarga de acuse de recibo TCP, ya están implementadas en algunos dispositivos Ethernet de gama alta, pero resultan efectivas incluso cuando se implementan exclusivamente por software. [ 6 ] [ 7 ]

Descarga completa de pila paralela

La descarga completa de pila paralela recibe su nombre del concepto de dos pilas TCP/IP paralelas. La primera es la pila principal del host, que viene incluida con el sistema operativo del host. La segunda, o "pila paralela", se conecta entre la capa de aplicación y la capa de transporte (TCP) mediante un "interceptor vampiro". Este interceptor intercepta las solicitudes de conexión TCP de las aplicaciones y se encarga de la gestión de la conexión TCP, así como de la transferencia de datos TCP. Muchas de las críticas que se presentan en la siguiente sección se refieren a este tipo de descarga TCP.

Descarga completa de HBA

La descarga completa de HBA (Host Bus Adapter) se encuentra en los adaptadores de host iSCSI que se presentan como controladores de disco al sistema host al conectarse (a través de TCP/IP) a un dispositivo de almacenamiento iSCSI . Este tipo de descarga de TCP no solo descarga el procesamiento de TCP/IP, sino también la función de iniciador iSCSI. Dado que el HBA se presenta al host como un controlador de disco, solo puede utilizarse con dispositivos iSCSI y no es adecuado para la descarga general de TCP/IP.

Descarga parcial de la chimenea TCP

La descarga TCP mediante chimenea aborda la principal crítica de seguridad de la descarga completa en pila paralela. En la descarga parcial, la pila principal del sistema controla todas las conexiones con el host. Una vez establecida una conexión entre el host local (normalmente un servidor) y un host remoto (normalmente un cliente), la conexión y su estado se transfieren al motor de descarga TCP. El dispositivo de descarga se encarga de la transmisión y recepción de datos. Casi todos los motores de descarga TCP utilizan algún tipo de implementación de hardware TCP/IP para realizar la transferencia de datos sin la intervención de la CPU del host. Cuando se cierra la conexión, el motor de descarga devuelve el estado de la conexión a la pila principal del sistema. Mantener el control de las conexiones TCP permite a la pila principal del sistema implementar y controlar la seguridad de la conexión.

Descarga de segmentación TCP

La descarga de segmentación TCP (TSO) puede descargar las tareas de segmentación TCP al controlador de interfaz de red . [ 8 ]

Gran descarga de recepción

La descarga de recepción a gran escala ( LRO ) es una técnica para aumentar el rendimiento de entrada en conexiones de red de alto ancho de banda al reducir la sobrecarga de la unidad central de procesamiento (CPU). Funciona agregando múltiples paquetes entrantes de un único flujo en un búfer más grande antes de que se transmitan a niveles superiores de la pila de red, lo que reduce la cantidad de paquetes que deben procesarse. Las implementaciones de Linux generalmente usan LRO junto con la nueva API (NAPI) para reducir también la cantidad de interrupciones .

Según los puntos de referencia, incluso la implementación de esta técnica completamente en software puede aumentar significativamente el rendimiento de la red. [ 6 ] [ 7 ] [ 9 ] A abril de 2007 El kernel de Linux admite LRO para TCP solo por software. FreeBSD 8 admite LRO por hardware en adaptadores que lo admiten. [ 10 ] [ 11 ] [ 12 ] [ 13 ]

LRO no debería operar en máquinas que actúan como enrutadores, ya que rompe el principio de extremo a extremo y puede afectar significativamente el rendimiento. [ 14 ] [ 15 ]

Descarga de recepción genérica

La descarga de recepción genérica ( GRO ) implementa una LRO generalizada en software que no está restringida a TCP/ IPv4 ni tiene los problemas creados por LRO. [ 16 ] [ 17 ]

Gran envío de descarga

En redes informáticas , la descarga de envíos grandes ( LSO ) es una técnica para aumentar el rendimiento de salida de conexiones de red de alto ancho de banda al reducir la sobrecarga de la CPU . Funciona pasando un búfer de múltiples paquetes a la tarjeta de interfaz de red (NIC). La NIC divide este búfer en paquetes separados. Esta técnica también se conoce como descarga de segmentación TCP ( TSO ) o descarga de segmentación genérica ( GSO ) cuando se aplica a TCP . LSO y LRO son independientes y el uso de una no requiere el uso de la otra.

Cuando un sistema necesita enviar grandes cantidades de datos a través de una red informática, estas cantidades deben dividirse primero en segmentos más pequeños que puedan pasar por todos los elementos de la red, como enrutadores y conmutadores, entre los equipos de origen y destino. Este proceso se denomina segmentación . A menudo, el protocolo TCP del equipo host realiza esta segmentación. La descarga de esta tarea a la tarjeta de red se denomina descarga de segmentación TCP (TSO).

Por ejemplo, una unidad de 64 KiB (65.536 bytes) de datos se suele segmentar en 45 segmentos de 1460 bytes cada uno antes de enviarla a través de la NIC y por la red. Gracias a la inteligencia de la NIC, la CPU del host puede entregar los 64 KB de datos a la NIC en una única solicitud de transmisión. La NIC puede dividir esos datos en segmentos más pequeños de 1460 bytes, añadir las cabeceras de protocolo TCP, IP y de la capa de enlace de datos —según una plantilla proporcionada por la pila TCP/IP del host— a cada segmento y enviar las tramas resultantes por la red. Esto reduce significativamente el trabajo realizado por la CPU. (Datos de 2014)Muchas tarjetas de red nuevas en el mercado son compatibles con TSO.

Algunas tarjetas de red implementan TSO de forma lo suficientemente genérica como para poder utilizarse para descargar la fragmentación de otros protocolos de la capa de transporte , o para realizar la fragmentación IP para protocolos que no admiten la fragmentación por sí mismos, como UDP .

Descarga de fragmentación UDP

La descarga de fragmentación UDP (UFO) puede descargar tareas de datagramas UDP al controlador de interfaz de red . [ 18 ]

Soporte en Linux

A diferencia de otros sistemas operativos, como FreeBSD, el kernel de Linux no incluye soporte para TOE (que no debe confundirse con otros tipos de descarga de red). [ 19 ] Si bien existen parches de fabricantes de hardware como Chelsio o Qlogic que agregan soporte para TOE, los desarrolladores del kernel de Linux se oponen a esta tecnología por varias razones: [ 20 ]

  • Seguridad : dado que TOE se implementa en hardware, es necesario aplicar parches al firmware de TOE , en lugar de solo al software, para solucionar cualquier vulnerabilidad de seguridad detectada en una implementación específica de TOE. Esto se ve agravado por la novedad y la especificidad del proveedor de este hardware, en comparación con una pila TCP/IP bien probada como la que se encuentra en un sistema operativo que no utiliza TOE.
  • Limitaciones del hardware: debido a que las conexiones se almacenan en búfer y se procesan en el chip TOE, la falta de recursos puede ocurrir con mayor facilidad en comparación con la generosa CPU y memoria disponibles para el sistema operativo.
  • Complejidad : TOE rompe con la premisa de que los núcleos tienen acceso a todos los recursos en todo momento; detalles como la memoria utilizada por las conexiones abiertas no están disponibles con TOE. Además, TOE requiere cambios muy importantes en la pila de red para funcionar correctamente, e incluso cuando se realizan, es posible que funciones como la calidad de servicio y el filtrado de paquetes no funcionen.
  • Propietario : TOE se implementa de forma diferente según el fabricante del hardware. Esto implica que se debe reescribir más código para adaptarse a las distintas implementaciones de TOE, lo que conlleva la complejidad mencionada y, posiblemente, una mayor seguridad. Además, el firmware de TOE no se puede modificar fácilmente, ya que es de código cerrado.
  • Obsolescencia : Cada tarjeta de red TOE tiene una vida útil limitada, ya que el hardware del sistema se adapta rápidamente a los niveles de rendimiento de TOE y, finalmente, los supera.

Proveedores

Gran parte del trabajo actual sobre la tecnología TOE lo realizan fabricantes de tarjetas de interfaz Ethernet de 10 Gigabit, como Broadcom , Chelsio Communications , Emulex , Mellanox Technologies y QLogic .

Véase también

Referencias

  1. Jeffrey C. Mogul (18 de mayo de 2003). La descarga de TCP es una idea tonta cuyo momento ha llegado . HotOS. Usenix .
  2. 1 2 Annie P. Foong; Thomas R. Huff; Herbert H. Hum; Jaidev P. Patwardhan; Greg J. Regnier (2003-04-02). Revisión del rendimiento de TCP (PDF) . Actas del Simposio Internacional sobre Análisis del Rendimiento de Sistemas y Software (ISPASS). Austin, Texas.
  3. Patente de Estados Unidos: 5355453 "Categoría de arquitectura de servidor de archivos de red de E/S paralela"
  4. Patente de Estados Unidos: 6247060 "Transmisión de un bloque de comunicación desde el host a un dispositivo local para que el mensaje se procese en el dispositivo"
  5. "Los recién llegados impulsan el desarrollo de redes de almacenamiento de silicio" , Rick Merritt, 21/10/2002, EE Times
  6. 1 2 Jonathan Corbet (01-08-2007). "Gran descarga de recepción" . LWN.net . Recuperado el 22-08-2007 .
  7. 1 2 Aravind Menon; Willy Zwaenepoel (2008-04-28). Optimización del rendimiento de recepción TCP . Conferencia técnica anual de USENIX. USENIX.
  8. https://docs.kernel.org/networking/segmentation-offloads.html
  9. Andrew Gallatin (25-07-2007). "lro: Descarga genérica de recepción de grandes paquetes para tráfico TCP" . linux-kernel (Lista de correo) . Consultado el 22-08-2007 .
  10. "Cxgb" . Freebsd.org . Consultado el 12 de julio de 2018 .
  11. "Mxge" . Freebsd.org . Consultado el 12 de julio de 2018 .
  12. "Nxge" . Freebsd.org . Consultado el 12 de julio de 2018 .
  13. "El bajo rendimiento de TCP puede ocurrir en máquinas virtuales Linux con LRO habilitado" . VMware . 4 de julio de 2011. Consultado el 17 de agosto de 2011 .
  14. "Controlador base Linux* para la familia de adaptadores Intel(R) Ethernet 10 Gigabit PCI Express" . Intel Corporation . 12 de febrero de 2013. Archivado del original el 24 de noviembre de 2019. Consultado el 24 de abril de 2013 .{{cite web}}: CS1 maint: bot: estado de la URL original desconocido ( enlace )
  15. "Deshabilitar LRO para todas las NIC que tengan LRO habilitado" . Red Hat, Inc. 10 de enero de 2013. Consultado el 24 de abril de 2013 .
  16. "JLS2009: Descarga de recepción genérica" . lwn.net .
  17. Huang, Shu; Baldine, Ilia (marzo de 2012). Schmitt, Jens B. (ed.). Evaluación del rendimiento de las NIC 10GE con soporte SR-IOV: virtualización de E/S y optimizaciones de la pila de red . Medición, modelado y evaluación de sistemas informáticos y fiabilidad y tolerancia a fallos: 16.ª Conferencia Internacional GI/ITG, MMB & DFT 2012. Lecture Notes in Computer Science. Vol. 7201. Kaiserslautern, Alemania: Springer (publicado en 2012). pág. 198. ISBN   9783642285400Recuperado el 11/10/2016 . Large-Receive-Offload (LRO) reduce la sobrecarga de procesamiento por paquete al agrupar paquetes más pequeños en otros más grandes y enviarlos a la pila de red. Generic-Receive-Offload (GRO) proporciona una versión de software generalizada de LRO [...].
  18. https://docs.kernel.org/networking/segmentation-offloads.html
  19. "Motores de descarga de Linux y TCP" , 22 de agosto de 2005, LWN.net
  20. Redes: TOE , Fundación Linux.
  • Artículo: TCP Offload al rescate por Andy Currid en ACM Queue
  • Solicitud de patente 20040042487
  • Mogul, Jeffrey C. (2003). "La descarga TCP es una idea tonta cuyo momento ha llegado" (PDF) . Actas de HotOS IX: Noveno taller sobre temas candentes en sistemas operativos . Asociación USENIX . Recuperado el 23 de julio de 2006 .
  • "Motor de descarga TCP/IP (TOE)" . 10 Gigabit Ethernet Alliance . Abril de 2002.
  • Descarga de tareas de red de Windows
  • GSO en Linux
  • Breve descripción de LSO en Linux
  • Estudios de caso sobre problemas de rendimiento con LSO y modelado de tráfico (Linux)
  • Nuevas características de FreeBSD 7.0, breve análisis sobre la compatibilidad con TSO. Archivado el 21/12/2016 en Wayback Machine.