Czy można używać SATA do łączenia komputerów?

9

Czy można użyć SATA do połączenia ze sobą dwóch komputerów, tak jak zrobiłby to kabel Ethernet z przeplotem?

Wiem, że SATA nie ma funkcji „sieciowych” i chociaż kontroler może mieć wiele portów, dyski się „nie widzą”, i że w SATA jedno urządzenie działa jak host (komputer), a drugie to niektóre rodzaj „klienta” (dysk pamięci).

Ale czy ktoś próbował stworzyć moduł jądra, który sprawiłby, że jeden komputer pojawiałby się jako „klient” (tak aby kontroler SATA hosta wykrył go jako standardowy dysk twardy), a następnie skonfigurował się jak łącze pseudo-Ethernet lub bardzo szybkie łącze szeregowe (a następnie uruchomić pppdna nim i zrobić sieć)?

Uwaga: Wiem, że to nieprofesjonalny i całkowicie głupi pomysł, pytam tylko z ciekawości.

Keltari
źródło
Interesujące. Czy kontroler jest w stanie to zrobić?
Kimmax
@Kimmax nie jestem pewien, powiedziałbym pewnie ... Dlatego zadałem to pytanie.
1
O ile wiem, nie zostało to zrobione. Nie mogę powiedzieć, czy jest to możliwe, ale jeśli mogę powiedzieć, że osiągnięcie takiego celu wymagałoby ogromnego wysiłku i kodu. Klient-klient SATA jest skonfigurowany tylko do przechowywania, a nie do pracy w sieci. Musisz więc samodzielnie napisać sterowniki sieciowe, wymyślić sposób na zawarcie już istniejących sterowników dla nowego interfejsu lub zrezygnować z tradycyjnej sieci i zamiast tego napisać sterownik, który będzie odzwierciedlał pamięć klienta, aby host mógł go zobaczyć. Wszystkie trzy drogi mają poważne pułapki. To zabawny pomysł.
HalosGhost

Odpowiedzi:

3

Po krótkim spojrzeniu na specyfikację SATA początkowo miałem nadzieję, że SATA nie tylko rozmawia z urządzeniami dyskowymi, ale może także rozmawiać z obudowami napędów.

Wygląda jednak na to, że nie można użyć SATA do połączenia dwóch komputerów, głównie dlatego, że jest to topologia hosta / urządzenia. Oznacza to, że host wysyła specjalne polecenie „host-urządzenie”, a urządzenie wysyła z powrotem różne polecenia „urządzenie-host”.

Istnieją ogólne dwukierunkowe polecenia „danych”, których można by użyć do wymiany pakietów, jednak podejrzewam, że musiałyby one być poprzedzone prawidłowym żądaniem „host-urządzenie” i odpowiednią odpowiedzią „urządzenie-host”. Zgaduję, że komputery PC nie mogą wysyłać wiadomości „urządzenie-host” (ponieważ są one hostem), co wymagałoby tego, ale w tej kwestii mogę się mylić. Jeśli komputer PC może wysłać polecenie urządzenie z hostem, wówczas tak, można ustanowić połączenie hosta z hostem za pośrednictwem SATA.

Jednak nawet gdybyś mógł to zrobić, bez wątpienia również wymagałbyś niestandardowych kabli, ponieważ użycie standardowych kabli SATA oznaczałoby, że oba komputery transmitują na tej samej parze przewodów i oba odbierają na tej samej parze przewodów (gdzie nikt nie transmituje, więc nigdy nie otrzymają żadnych danych!) Musisz zhakować odpowiednik SATA kabla krosowego Ethernet, który zamienia linie TX i RX.

Myślę, że ten problem ściśle odzwierciedla problem USB. Nie można połączyć dwóch komputerów za pomocą gołego kabla USB, ponieważ oba są hostami bez urządzeń do rozmowy. Istnieją jednak urządzenia USB, które odbierają dane z obu hostów i przekazują je tak, że kontroler USB każdego hosta myśli, że rozmawia z urządzeniem (co technicznie jest), umożliwiając komunikację hosta z hostem przez USB.

To samo można zrobić dla SATA, gdzie masz urządzenie, z którym łączą się oba kontrolery hosta i każdy z nich myśli, że rozmawia z urządzeniem. Nadal potrzebujesz niestandardowych sterowników, aby urządzenie SATA wyglądało jak urządzenie sieciowe, ale byłoby to wykonalne.

Byłoby to jednak przydatne tylko w przypadku połączeń o bardzo krótkim zasięgu, ponieważ SATA ma maksymalną długość kabla wynoszącą jeden metr. Dzięki specjalnemu translatorowi SATA pośrodku dwa porty SATA będą musiały znajdować się w odległości mniejszej niż dwa metry od siebie (w tym odległość do płyty głównej lub karty rozszerzeń na zewnątrz obudowy).

Malvineous
źródło
1

O ile wiem, nie zostało to zrobione. Nie mogę powiedzieć, czy jest to możliwe, ale mogę powiedzieć, że osiągnięcie takiego celu wymagałoby ogromnego wysiłku i kodu.

Konfiguracja host-klient SATA służy wyłącznie do przechowywania, a nie do pracy w sieci. Więc musiałbyś albo

  1. Napisz sterowniki sieciowe
  2. Wymyśl sposób na zawinięcie wcześniej istniejących sterowników dla nowego interfejsu lub
  3. Porzuć tradycyjną sieć i zamiast tego napisz sterownik, który będzie odzwierciedlał pamięć klienta, aby host mógł go zobaczyć.

Wszystkie trzy drogi wiążą się z poważnymi pułapkami, choć wydaje mi się, że w teorii byłoby to wykonalne - wynik końcowy prawdopodobnie nie byłby tak szybki, jak sobie wyobrażasz. To zabawny pomysł.

HalosGhost
źródło