¿Se puede usar SATA para conectar computadoras?

9

¿Se puede utilizar SATA para conectar dos computadoras juntas, como lo haría un cable cruzado de Ethernet?

Sé que SATA no tiene características de "conexión en red" y aunque un controlador puede tener múltiples puertos, las unidades no se "ven" entre sí, y que en SATA un dispositivo actúa como el host (la computadora) y el otro dispositivo es tipo de "cliente" (la unidad de almacenamiento).

Pero aún así, ¿alguien intentó hacer un módulo de kernel que hiciera aparecer una computadora como un "cliente" (para que el controlador SATA del host lo detecte como un disco duro estándar) y luego lo configuró como un enlace pseudo-Ethernet o muy enlace serie de alta velocidad (y luego ejecutarlo pppdy hacer redes)?

Nota: Sé que esta es una idea poco profesional y totalmente estúpida, solo pregunto por curiosidad.

Keltari
fuente
Interesante ¿El controlador puede hacerlo?
Kimmax
@Kimmax no estoy seguro, diría que probablemente ... Es por eso que hice esta pregunta.
1
Hasta donde sé, esto no se ha hecho. No puedo hablar sobre si es posible o no, pero si puedo decir que lograr tal objetivo requeriría una inmensa cantidad de esfuerzo y código. El host-cliente de SATA está configurado solo para almacenamiento, no para redes. Por lo tanto, necesitaría escribir los controladores de red usted mismo, encontrar una forma de envolver los controladores ya existentes para la nueva interfaz, o abandonar la red tradicional y, en su lugar, escribir un controlador para reflejar el almacenamiento del cliente para que el host pueda verlo. Las tres avenidas tienen grandes dificultades. Sin embargo, es una idea divertida.
HalosGhost

Respuestas:

3

Después de mirar brevemente la especificación SATA, inicialmente tenía esperanzas ya que SATA no solo habla con dispositivos de disco, sino que también puede hablar con gabinetes de unidades.

Sin embargo, parece que no es posible usar SATA para conectar dos computadoras juntas, principalmente porque es una topología de host / dispositivo. Esto significa que el host envía un comando especial "host-to-device", y el dispositivo envía diferentes comandos "device-to-host".

Existen comandos genéricos de "datos" bidireccionales que podrían usarse para intercambiar paquetes, sin embargo, sospecho que estos deberían estar precedidos por la solicitud correcta de "host a dispositivo" y una respuesta apropiada de "dispositivo a host". Supongo que las PC no pueden enviar mensajes de "dispositivo a host" (ya que son el host), que es lo que esto requeriría, pero podría estar equivocado en este punto. Si es posible que una PC envíe un comando de dispositivo a host, entonces sí, puede establecer un enlace de host a host a través de SATA.

Sin embargo, incluso si pudiera hacer esto, sin duda también necesitaría cables personalizados, ya que el uso de cables SATA estándar significaría que ambas PC están transmitiendo en el mismo par de cables, y ambas están recibiendo en el mismo par de cables (donde nadie está transmitiendo, por lo que ¡nunca recibirán ningún dato!) Debería hackear el equivalente SATA de un cable cruzado Ethernet, que intercambia las líneas TX y RX.

Creo que este problema es muy similar al del USB. No puede conectar dos computadoras juntas con un cable USB desnudo, porque ambas son hosts sin dispositivos con los que hablar. Sin embargo, hay dispositivos USB que reciben datos de ambos hosts y los transmiten para que el controlador USB de cada host piense que está hablando con un dispositivo (que técnicamente es), lo que permite la comunicación de host a host a través de USB.

Sería posible hacer lo mismo para SATA, donde tiene un dispositivo al que ambos controladores host se conectan, y cada uno piensa que está hablando con un dispositivo. Aún necesitaría controladores personalizados para que el dispositivo SATA aparezca como un dispositivo de red, pero sería viable.

Sin embargo, esto solo sería útil para conexiones de muy corto alcance, ya que SATA tiene una longitud máxima de cable de un metro. Entonces, con su dispositivo traductor SATA especial en el medio, sus dos puertos SATA tendrán que estar a menos de dos metros de distancia (incluida la distancia para llegar desde la placa base o la tarjeta de expansión al exterior de la carcasa).

Malvinoso
fuente
1

Hasta donde sé, esto no se ha hecho. No puedo hablar sobre si es posible o no, pero puedo decir que lograr tal objetivo requeriría una inmensa cantidad de esfuerzo y código.

La configuración de host-cliente de SATA es solo para almacenamiento, no para redes. Entonces, o necesitarías

  1. Escriba los controladores de red usted mismo
  2. Encuentre una forma de envolver controladores preexistentes para la nueva interfaz, o
  3. Abandone las redes tradicionales y, en su lugar, escriba un controlador para reflejar el almacenamiento del cliente para que el host pueda verlo.

Las tres vías tienen grandes dificultades, aunque supongo que, en teoría, sería factible: el resultado final probablemente aún no sería tan rápido como te imaginas. Sin embargo, es una idea divertida.

HalosGhost
fuente