stringtranslate.com

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 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 de Protocolo de Internet (IP), como iSCSI y Network File System (NFS).

Objetivo

Originalmente TCP fue diseñado para redes de baja velocidad no confiables (como los primeros módems de acceso telefónico ), pero con el crecimiento de Internet en términos de velocidades de transmisión troncal (utilizando enlaces de portadora óptica , Gigabit Ethernet y 10 Gigabit Ethernet ) y mecanismos de acceso más rápidos y confiables (como DSL y módems de cable ), se usa con frecuencia en centros de datos y entornos de PC de escritorio a velocidades de más de 1 Gigabit por segundo. A estas velocidades, las implementaciones de software TCP en sistemas host requieren una potencia de procesamiento significativa. A principios de la década de 2000, la comunicación TCP gigabit full-duplex 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 para que las aplicaciones se ejecutaran en el sistema.

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

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

Ciclos de CPU liberados

Una regla general aceptada es que se requiere 1 hercio de procesamiento de CPU para enviar o recibirbit/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 necesitarán 2 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 total de 20 Gbit/s). Si se utiliza la regla de 1 Hz/(bit/s), 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 la CPU (normalmente, la CPU de un servidor ) puede utilizarlos 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 NIC de descarga de TCP/IP.

Reducción del tráfico PCI

Además de la sobrecarga de protocolo que TOE puede abordar, también puede abordar algunos problemas de arquitectura que afectan a un gran porcentaje de los puntos finales basados ​​en host (servidor y PC). Muchos hosts de puntos finales más antiguos se basan en 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 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, reconocimientos) y, como estos generalmente se generan en la CPU del host y se transmiten a través del bus PCI y fuera de 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 ubica en el otro lado del bus PCI desde el host de la CPU para que pueda abordar este problema de eficiencia de E/S, ya que los datos que se enviarán a través de la conexión TCP se pueden enviar al TOE desde la CPU a través del bus PCI utilizando tamaños de ráfagas de datos grandes sin que ninguno de los paquetes TCP más pequeños tenga que atravesar el bus PCI.

Historia

Una de las primeras patentes de 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. Presentaron la primera tarjeta de red de descarga completa de pila paralela a principios de 1999; la SLIC (tarjeta de interfaz de capa de sesión) de la empresa fue la predecesora de sus ofertas TOE actuales. Alacritech posee varias patentes en el área de descarga de TCP/IP. [4]

En 2002, cuando el surgimiento del almacenamiento basado en TCP, como iSCSI , despertó interés, se dijo que "al menos una docena de recién llegados, la mayoría fundados hacia el final de la burbuja puntocom, están buscando la oportunidad de los aceleradores de semiconductores comerciales para protocolos y aplicaciones de almacenamiento, compitiendo con media docena de proveedores consolidados y diseños ASIC internos". [5]

En 2005, Microsoft obtuvo la licencia de la base de patentes de Alacritech y, junto con Alacritech, creó la arquitectura de descarga parcial TCP que se conoce como descarga de chimenea TCP. La descarga de chimenea TCP se centra en la "Patente de paso de bloque de comunicación" de Alacritech. Al mismo tiempo, Broadcom también obtuvo una licencia para construir chips de descarga de chimenea TCP.

Tipos

En lugar de reemplazar la pila TCP por un TOE en su totalidad, 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. Las técnicas más nuevas, como la descarga de recepción grande y la descarga de reconocimiento TCP, ya están implementadas en algunos equipos Ethernet de alta gama, pero son efectivas incluso cuando se implementan puramente en 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 se incluye con el sistema operativo del host. La segunda, o "pila paralela", está conectada entre la capa de aplicación y la capa de transporte (TCP) mediante un "tapón vampiro". El tapón vampiro intercepta las solicitudes de conexión TCP de las aplicaciones y es responsable de la gestión de la conexión TCP, así como de la transferencia de datos TCP. Muchas de las críticas en la siguiente sección se relacionan con este tipo de descarga TCP.

Descarga completa de HBA

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

Descarga parcial de chimenea TCP

La descarga por chimenea TCP resuelve la principal crítica de seguridad de la descarga completa de pila paralela. En la descarga parcial, la pila del sistema principal controla todas las conexiones al host. Una vez que se ha establecido una conexión entre el host local (normalmente un servidor) y un host externo (normalmente un cliente), la conexión y su estado se pasan al motor de descarga TCP. El dispositivo de descarga se encarga de la parte pesada 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 estado de la conexión se devuelve desde el motor de descarga a la pila del sistema principal. Mantener el control de las conexiones TCP permite que la pila del sistema principal implemente y controle la seguridad de la conexión.

Gran descarga de recepción

La descarga de recepción grande ( LRO ) es una técnica para aumentar el rendimiento de entrada de 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 solo flujo en un búfer más grande antes de que pasen a un nivel superior 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] [8] A partir de abril de 2007 , el núcleo de Linux admite LRO para TCP solo en software. FreeBSD 8 admite LRO en hardware en adaptadores que lo admiten. [9] [10] [11] [12]

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

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 la LRO. [15] [16]

Gran envío de descarga

En redes informáticas , la descarga de envío de gran tamaño ( LSO ) es una técnica para aumentar el rendimiento de salida de conexiones de red de gran ancho de banda al reducir la sobrecarga de la CPU . Funciona al pasar un búfer de múltiples paquetes a la tarjeta de interfaz de red (NIC). Luego, la NIC divide este búfer en paquetes separados. La técnica también se denomina 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 uno no requiere el uso del otro.

Cuando un sistema necesita enviar grandes cantidades de datos a través de una red informática, primero es necesario dividirlas en segmentos más pequeños que puedan pasar por todos los elementos de la red, como enrutadores y conmutadores, entre las computadoras de origen y destino. Este proceso se conoce como segmentación . A menudo, el protocolo TCP en la computadora host realiza esta segmentación. La descarga de este trabajo a la NIC se denomina descarga de segmentación TCP (TSO).

Por ejemplo, una unidad de 64 KiB (65.536 bytes) de datos suele segmentarse en 45 segmentos de 1460 bytes cada uno antes de enviarse a través de la NIC y por la red. Con algo de inteligencia en 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 los encabezados de protocolo TCP, IP y de capa de enlace de datos (según una plantilla proporcionada por la pila TCP/IP del host) a cada segmento y enviar los marcos resultantes por la red. Esto reduce significativamente el trabajo realizado por la CPU. A partir de 2014, muchas NIC nuevas en el mercado admiten TSO.

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

Soporte en Linux

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

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. ^ de Annie P. Foong; Thomas R. Huff; Herbert H. Hum; Jaidev P. Patwardhan; Greg J. Regnier (2 de abril de 2003). 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 paralelas"
  4. ^ Patente de Estados Unidos: 6247060 "Pasar un bloque de comunicación desde un host a un dispositivo local de modo que se procese un mensaje en el dispositivo"
  5. ^ "Los recién llegados hacen girar el silicio en la red de almacenamiento", Rick Merritt, 21/10/2002, EE Times
  6. ^ por Jonathan Corbet (1 de agosto de 2007). "Gran descarga de recepción". LWN.net . Consultado el 22 de agosto de 2007 .
  7. ^ por Aravind Menon; Willy Zwaenepoel (28 de abril de 2008). Optimización del rendimiento de recepción TCP. Conferencia técnica anual de USENIX. USENIX.
  8. ^ Andrew Gallatin (25 de julio de 2007). «lro: Descarga genérica de recepción de gran volumen para tráfico TCP». linux-kernel (lista de correo) . Consultado el 22 de agosto de 2007 .
  9. ^ "Cxgb". Freebsd.org . Consultado el 12 de julio de 2018 .
  10. ^ "Mxge". Freebsd.org . Consultado el 12 de julio de 2018 .
  11. ^ "Nxge". Freebsd.org . Consultado el 12 de julio de 2018 .
  12. ^ "Puede producirse un rendimiento TCP deficiente en máquinas virtuales Linux con LRO habilitado". VMware . 2011-07-04 . Consultado el 2011-08-17 .
  13. ^ "Controlador base Linux* para la familia de adaptadores Intel(R) Ethernet 10 Gigabit PCI Express". Intel Corporation . 12 de febrero de 2013 . Consultado el 24 de abril de 2013 .
  14. ^ "Deshabilitar LRO para todas las NIC que tengan LRO habilitado". Red Hat, Inc. 2013-01-10 . Consultado el 2013-04-24 .
  15. ^ "JLS2009: Descarga de recepción genérica". lwn.net .
  16. ^ 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 confiabilidad y tolerancia a fallos: 16.ª conferencia internacional GI/ITG, MMB y DFT 2012. Lecture Notes in Computer Science. Vol. 7201. Kaiserslautern, Alemania: Springer (publicado en 2012). pág. 198. ISBN 9783642285400. Recuperado el 11 de octubre de 2016. Large-Receive-Offload (LRO) reduce la sobrecarga de procesamiento por paquete al agrupar paquetes más pequeños en paquetes más grandes y pasarlos a la pila de red. Generic-Receive-Offload (GRO) proporciona una versión de software generalizada de LRO [...].
  17. ^ "Motores de descarga de Linux y TCP", 22 de agosto de 2005, LWN.net
  18. ^ Redes: TOE, Fundación Linux.

Enlaces externos