Можно ли использовать SATA для подключения компьютеров?

9

Можно ли использовать SATA для соединения двух компьютеров, как это сделал бы перекрестный кабель Ethernet?

Я знаю, что у SATA нет «сетевых» функций, и хотя контроллер может иметь несколько портов, накопители не «видят» друг друга, и что в SATA одно устройство выступает в роли хоста (компьютера), а другое - вид "клиент" (накопитель).

Но все же, кто-нибудь пытался сделать модуль ядра, который бы заставлял один компьютер выглядеть как «клиент» (чтобы контроллер SATA хоста определял его как стандартный жесткий диск), а затем настраивал его как псевдо-Ethernet-канал или очень высокоскоростной последовательный канал (а затем запустить pppdна нем и сделать сеть)?

Примечание: я знаю, что это непрофессиональная и совершенно глупая идея, я просто спрашиваю из любопытства.

Keltari
источник
Interessting. Может ли контроллер сделать это?
Kimmax
@ Kimmax не уверен, я бы сказал, наверное ... Вот почему я задал этот вопрос.
1
Насколько я знаю, это не было сделано. Я не могу говорить о том, возможно ли это, но если я могу сказать, что достижение такой цели потребует огромных усилий и кода. Хост-клиент SATA настроен только для хранения, а не для работы в сети. Таким образом, вам нужно либо написать сетевые драйверы самостоятельно, найти способ обернуть уже существующие драйверы для нового интерфейса, либо отказаться от традиционной сети и вместо этого написать драйвер для зеркалирования хранилища клиента, чтобы хост мог его видеть. Все три проспекта имеют серьезные подводные камни. Это забавная идея.
HalosGhost

Ответы:

3

Кратко рассмотрев спецификацию SATA, я поначалу надеялся, что SATA не только взаимодействует с дисковыми устройствами, но и с дисками.

Однако похоже, что невозможно использовать SATA для соединения двух компьютеров, главным образом потому, что это топология хоста / устройства. Это означает, что хост отправляет специальную команду «хост-устройство», а устройство отправляет обратно разные команды «устройство-хост».

Существуют общие двунаправленные команды «данных», которые можно использовать для обмена пакетами, однако я подозреваю, что им должен предшествовать правильный запрос «хост-устройство» и соответствующий ответ «устройство-хост». Я предполагаю, что ПК не могут отправлять сообщения «устройство-хост» (поскольку они являются хостом), что для этого потребуется, но я могу ошибаться в этом вопросе. Если ПК может отправлять команду устройство-хост, то да, вы можете установить соединение хост-хост через SATA.

Однако даже если бы вы могли это сделать, вам, несомненно, потребовались бы специальные кабели, так как использование стандартных кабелей SATA означало бы, что оба ПК передают данные по одной и той же паре проводов, и оба принимают по одной и той же паре проводов (где никто не передает, поэтому они никогда не получат никаких данных!) Вам потребуется взломать SATA-эквивалент кроссовера Ethernet, который меняет местами линии TX и RX.

Я думаю, что эта проблема тесно связана с проблемой USB. Вы не можете соединить два компьютера вместе с помощью кабеля USB, потому что они оба являются хостами без устройств для общения. Однако есть USB-устройства, которые получают данные от обоих хостов и передают их таким образом, что USB-контроллер каждого хоста думает, что он взаимодействует с устройством (что технически так и есть), что позволяет осуществлять связь между хостами через USB.

Можно было бы сделать то же самое для SATA, где у вас есть устройство, к которому подключаются оба хост-контроллера, и каждый из них думает, что разговаривает с устройством. Вам все еще потребуются пользовательские драйверы, чтобы устройство SATA отображалось как сетевое устройство, но оно будет работоспособным.

Однако это будет полезно только для соединений с очень малой дальностью, поскольку максимальная длина кабеля SATA составляет один метр. Таким образом, с вашим специальным устройством трансляции SATA посередине, ваши два порта SATA должны быть на расстоянии менее двух метров (включая расстояние от материнской платы или платы расширения до внешней стороны корпуса).

Malvineous
источник
1

Насколько я знаю, это не было сделано. Я не могу говорить о том, возможно ли это, но я могу сказать, что достижение такой цели потребует огромных усилий и кода.

Настройка хоста-клиента SATA предназначена только для хранения, а не для работы в сети. Итак, вам либо нужно

  1. Напишите сетевые драйверы самостоятельно
  2. Найдите способ обернуть уже существующие драйверы для нового интерфейса или
  3. Откажитесь от традиционных сетей и вместо этого напишите драйвер для зеркалирования хранилища клиента, чтобы хост мог его видеть.

Во всех трех направлениях есть серьезные подводные камни, хотя, я думаю, теоретически это было бы выполнимо - конечный результат все еще, вероятно, был бы не таким быстрым, как вы себе представляете. Это забавная идея.

HalosGhost
источник