La mejor manera de hacer TCP / IP sobre USB en Linux

10

Quiero establecer un enlace TCP / IP entre dos máquinas Linux que tienen varios puertos USB 2.0 como las únicas opciones de conexión. Dado que los puertos host y esclavo están disponibles, puedo conectarlos a través de un simple cable USB. ¿Cuáles son las posibilidades de reenviar TCP / IP a través de ese cable y cuál debo usar para lograr el mayor ancho de banda?

Hasta ahora he intentado el reenvío ADB (Android Debug Bridge), pero el rendimiento es pobre, solo 30-40Mbps. Creo que debería ser posible alcanzar al menos 150-200Mbps usando un controlador especializado: los discos duros USB ocasionalmente mueven archivos a 240-280Mbps de los 480 disponibles teóricamente.

jons34yp
fuente
1
Podría obtener dos tarjetas de red USB (puede obtener tarjetas Gigabit, pero no alcanzarán su velocidad máxima) y simplemente usar la pila de red normal ...
Mark Henderson
Cuestan más y agregan gastos generales adicionales.
jons34yp
1
Bueno, no mencionó nada en su pregunta sobre los requisitos de presupuesto, y pueden ser generales, pero será más rápido que 40Mbps.
Mark Henderson
¿Qué quiere decir que los puertos maestro y esclavo están disponibles? Las PC solo tienen puertos maestros.
psusi
1
@ MarkHenderson - "obtenga dos tarjetas de red USB" - no se llama (correctamente) una "tarjeta" cuando ya no es una PCB (placa de circuito impreso) desnuda. Cuando está encerrado, entonces es un módulo o un adaptador. De lo contrario, estoy de acuerdo, un par de adaptadores de USB a Ethernet es la solución más sencilla (y quizás la "mejor"). A menos que "mejor" solo signifique "más rápido".
aserrín

Respuestas:

11

Los controladores Ethernet sobre USB están incluidos en Linux. Los controladores de tamaño de host relevantes son CDC_ETHER y RNDIS. Sus contrapartes de tamaño esclavo (que esencialmente emulan un puente USB-Ethernet en el software) son USB_ETH, USB_ETH_RNDIS. USB_G_ANDROID también es compatible con el protocolo RNDIS, lo cual es excelente en mi caso, ya que los dispositivos en cuestión usan el núcleo de Android, por lo que el controlador está habilitado de forma predeterminada.

El ancho de banda medido del puente USB que usa el controlador USB_G_ANDROID es ~ 130Mbps de host a esclavo y ~ 90Mbps al revés.

jons34yp
fuente