У меня есть мастер и n подчиненных устройств в локальной сети (WiFi) и CMS на inte rnet.
Мне нужно иметь возможность загружать / загружать мультигигабайтный видеофайл из CMS на всех подчиненных, выбрав его на ведущем. Трафик c в ЛВС должен быть зашифрован, шифрование в ЛВС было бы неплохо иметь. Если какое-либо ведомое устройство отбрасывает пакет, оно должно иметь возможность запросить его либо у CMS, либо у другого ведомого устройства. Все устройства в локальной сети являются планшетами под управлением android. Ведущий должен иметь возможность инициировать распространение видеофайла, расположенного на сервере в формате inte rnet, всем подчиненным. Эта передача файлов должна быть максимально быстрой. Сервер будет настроен заново, поэтому он может работать в основном что угодно.
Internet ------------------------> WLAN
| |
| +----Master
CMS +----Slave-1
holds large file +----Slave-...
+----Slave-n
На мой взгляд, есть 4 способа сделать это:
- (Trivial) Дайте рабам имя файла и пусть они скачивают файл по отдельности. Количество traffi c: O (n * размер файла)
- (Trivial) Загрузите файл на мастер, и подчиненные загрузят его с мастера, а не с inte rnet. Traffi c Inte rnet: O (размер файла), Traffi c LAN: O (n * размер файла)
- Загрузите файл в мастер и передайте его всем клиентам. Сумма трафика c: O (2 * размер файла)
- Использовать что-то для трансляции файла в локальной сети. Поскольку WiFi является общей средой, теоретически каждый пакет должен отправляться только один раз, а traffi c должен иметь значение O (размер файла).
В то время как решение 1 было бы просто реализовать с помощью, например, загрузок scp это будет ужасно медленно и неэффективно. Я надеюсь внедрить решение 4, если это возможно, но я не знаю ни одной доступной технологии, способной сделать это «из коробки». Какие способы достижения трансляции описаны в 3 и 4?