¡Ojo con las interfaces USB-Ethernet a 5Gbps!

Hace poco me topé con un interesante vídeo para los que nos gustan las redes de computadores en el canal ServeTheHome. En este probaban varias interfaces USB a Ethernet y se encontraban con algo realmente curioso; con ninguna de las interfaces de red lograban alcanzar la velocidad máxima de 5Gbps.

Poniéndonos en situación

Antes de que alguien elucubre que eso de los 5Gbps no se alcanza nunca, decir que tras deducir cabaceras de la capa de enlace a la de transporte y suponiendo un sistema sin cuellos de botella tanto en recursos hardware como de implementación de software, la velocidad útil de un interfaz a 5Gbps será de 4,7Gbps.
Pues bien, en ningún caso alcanzaron más de 3,5Gbps que, pese a ser una velocidad nada despreciable, es un 25% menos de la tasa de transferencia que debiéramos esperar.

¿Por qué ocurre esto?

Durante el vídeo se plantean que sea la CPU el cuello de botella y por ello prueban con procesadores más potentes obteniendo el mismo resultado con lo que descartan que sea este el motivo.
Aquí me gustaría añadir algo y es que no hace mucho, los sistemas operativos y los fabricantes de interfaces de red no soportaban la tecnología RSS (Receive Side Scalling) que en resumidas cuentas habilita repartir el tráfico de red de un interfaz pueda ser procesado por varios núcleos del procesador permitiendo incrementar el ancho de banda por CPU (que se sitúa en 3-4Gbps por núcleo).
A a día de hoy cualquier Windows o Linux relativamente moderno e interfaz intel y Aquantia (usado en los interfaces testeados) soportan RSS (no todos los interfaces Realtek parecen soportarlo).

Comando powershell para comprobar qué interfaces conectados soportan RSS.

Tras seguir investigando concluyen que la limitación está en el interfaz USB que emplean estas interfaces. El USB 3.1 Gen 1, o simplemente USB 3.0, el cual dispone de una tasa máxima de 5Gbps.

Pero entonces si soporta hasta 5Gbps de tasa de transferencia, ¿no debería poder alcanzar esta velocidad transmitiendo por la red?. Y la respuesta se puede ver representada gráficamente en la siguiente ilustración.

Diagrama de bloques del chipset utilizado (AQC111U) por los interfaces analizados.

Traducido en palabras sería que la interfaz USB sí funciona a 5Gbps pero la trama de bits del protocolo USB ha de transformarse en una trama Ethernet. Ello requiere de circuitería adicional que añade una latencia adicional y por tanto solo puede resultar una velocidad siempre inferior a esos 5Gbps. Cuanto más cerca esté de esa velocidad, implicará una mejor implementación del compendio de chipset y drivers del interfaz.

igazmi