Le SATA peut-il être utilisé pour connecter des ordinateurs?

9

SATA peut-il être utilisé pour connecter deux ordinateurs ensemble, comme le ferait un câble Ethernet croisé?

Je sais que SATA n'a pas de fonctionnalités de «mise en réseau» et même si un contrôleur peut avoir plusieurs ports, les disques ne se «voient» pas, et qu'en SATA, un périphérique agit comme hôte (l'ordinateur) et l'autre périphérique en est un. sorte de "client" (le lecteur de stockage).

Mais quand même, quelqu'un a-t-il tenté de faire un module du noyau qui ferait apparaître un ordinateur comme un "client" (de sorte que le contrôleur SATA de l'hôte le détecte comme un disque dur standard), puis configuré comme une liaison pseudo-Ethernet ou très liaison série haute vitesse (puis exécutez pppd-la et faites la mise en réseau)?

Remarque: Je sais que c'est une idée non professionnelle et totalement stupide, je demande juste par curiosité.

Keltari
la source
Intéressant. Le contrôleur est-il en mesure de le faire?
Kimmax
@Kimmax pas sûr, je dirais probablement ... C'est pourquoi j'ai posé cette question.
1
Pour autant que je sache, cela n'a pas été fait. Je ne peux pas dire si c'est possible ou non, mais si je peux dire que la réalisation d'un tel objectif nécessiterait un immense effort et du code. Le client hôte de SATA est configuré uniquement pour le stockage, pas pour la mise en réseau. Ainsi, vous devrez soit écrire les pilotes de mise en réseau vous-même, trouver un moyen d'envelopper les pilotes déjà existants pour la nouvelle interface, soit abandonner la mise en réseau traditionnelle et écrire un pilote pour refléter le stockage du client afin que l'hôte puisse le voir. Les trois avenues présentent des écueils majeurs. C'est une idée amusante cependant.
HalosGhost

Réponses:

3

Après avoir brièvement examiné les spécifications SATA, j'étais initialement optimiste car SATA ne parle pas seulement aux périphériques de disque, il peut également parler aux boîtiers de disques.

Cependant, il semble qu'il ne soit pas possible d'utiliser SATA pour connecter deux ordinateurs ensemble, principalement parce qu'il s'agit d'une topologie hôte / périphérique. Cela signifie que l'hôte envoie une commande spéciale "hôte-à-périphérique", et le périphérique renvoie différentes commandes "de périphérique à hôte".

Il existe des commandes génériques "données" bidirectionnelles qui pourraient être utilisées pour échanger des paquets, mais je soupçonne que celles-ci devraient être précédées de la demande "hôte-appareil" correcte et d'une réponse "appareil-à-hôte" appropriée. Je suppose que les PC ne peuvent pas envoyer de messages "appareil à hôte" (car ils sont l'hôte), ce qui est nécessaire, mais je peux me tromper sur ce point. S'il est possible pour un PC d'envoyer une commande de périphérique à hôte, alors oui, vous pouvez établir une liaison hôte à hôte via SATA.

Cependant, même si vous pouviez le faire, vous auriez également besoin de câbles personnalisés, car l'utilisation de câbles SATA standard signifierait que les deux PC transmettent sur la même paire de fils et que les deux reçoivent sur la même paire de fils (où personne ne transmet, donc ils ne recevront jamais de données!) Vous auriez besoin de pirater l'équivalent SATA d'un câble croisé Ethernet, qui permute les lignes TX et RX.

Je pense que ce problème reflète étroitement celui de l'USB. Vous ne pouvez pas connecter deux ordinateurs avec un câble USB nu, car ils sont tous deux des hôtes sans appareils avec lesquels parler. Cependant, il existe des périphériques USB qui reçoivent des données des deux hôtes et les transmettent de sorte que le contrôleur USB de chaque hôte pense qu'il parle à un périphérique (ce qui est techniquement le cas), ce qui permet la communication d'hôte à hôte via USB.

Il serait possible de faire de même pour SATA, où vous avez un périphérique auquel les deux contrôleurs hôtes se connectent, et ils pensent chacun qu'ils parlent à un périphérique. Vous auriez toujours besoin de pilotes personnalisés pour que le périphérique SATA apparaisse comme un périphérique réseau, mais ce serait réalisable.

Cependant, cela ne serait utile que pour les connexions à très courte portée, car SATA a une longueur de câble maximale d'un mètre. Ainsi, avec votre traducteur SATA spécial au milieu, vos deux ports SATA devront être distants de moins de deux mètres (y compris la distance à parcourir entre la carte mère ou la carte d'extension et l'extérieur du boîtier).

Malvineous
la source
1

Pour autant que je sache, cela n'a pas été fait. Je ne peux pas dire si c'est possible ou non, mais je peux dire que la réalisation d'un tel objectif nécessiterait un immense effort et du code.

La configuration hôte-client de SATA est uniquement destinée au stockage, pas à la mise en réseau. Donc, vous devrez soit

  1. Écrivez vous-même les pilotes de mise en réseau
  2. Trouver un moyen d'envelopper les pilotes préexistants pour la nouvelle interface, ou
  3. Abandonnez la mise en réseau traditionnelle et écrivez un pilote pour refléter le stockage du client afin que l'hôte puisse le voir.

Les trois avenues ont des écueils majeurs mais je suppose qu'en théorie, ce serait faisable - le résultat final ne serait probablement pas aussi rapide que vous l'imaginez. C'est une idée amusante cependant.

HalosGhost
la source