Специальная ячеистая сеть Windows

Я чертовски погуглил по этой теме, но мне все еще нужна помощь. Есть похожие вопросы по stackoverflow, но ни один не соответствует точному (и на них нет хороших ответов).

Я хочу написать программу (если она еще не существует и если это возможно), которая позволяет пользователям Windows 7+ настраивать одноранговую ячеистую сеть с помощью одного адаптера Wi-Fi, а затем каким-то образом обеспечивает подключение, подобное обычному подключению к Интернету для каждый узел. Бонусом является то, что устройства, такие как телефоны, не нуждаются в дополнительном программном обеспечении, но могут подключаться к одному или нескольким узлам сетки, как если бы это была стандартная точка доступа.

Не знаю, как это сделать, но думаю:

  1. Одна беспроводная карта может быть настроена для работы в режиме adhoc программно с помощью Windows Wireless-ADHOC API.
  2. Специальный режим обычно исключает режим инфраструктуры, если драйвер адаптера не поддерживает его, поэтому для подключения узла к реальному Интернету потребуется второй адаптер.
  3. Наша программа будет иметь / нуждаться в монопольном управлении адаптером Wi-Fi.
  4. Аспект сети достигается независимо от adhoc-соединения с помощью протокола маршрутизации, такого как Babel.
  5. Интернет должен быть предоставлен через какой-то новый виртуальный адаптер, созданный нашей программой. (Какую роль играет этот новый адаптер, что делает его адаптером, с которым любая программа, поддерживающая работу с сетью, должна проконсультироваться для доступа в Интернет?)
  6. Если на узле доступно реальное интернет-соединение, оно будет передано этим узлом другим узлам в сети через реализацию Babel.
  7. Независимо от того, доступен ли Интернет с какого-либо узла, не уверен, какие службы могут быть размещены в самой сети. Как предоставляется разрешение ресурса / доменного имени?
  8. Если текущий узел имеет Интернет, любые запросы к Интернет-ресурсам будут проходить напрямую через него, а любые ресурсы внутри сетки будут проходить через Babel. Если этот узел потеряет прямой доступ в Интернет, весь трафик будет проходить через Babel. Нужно ли это программировать или сетевой стек Windows знает, как с этим справиться, если наша программа написана правильно?
  9. Поскольку это Windows 7+, IPv6 является законным выбором для адресации узлов в сети, однако ожидается, что не все подключения к Интернету будут поддерживать IPv6. Некоторые могут. Как мы отличим интернет-сегмент от сегмента сетки?
  10. Сетка может быть сколь угодно большой, и Babel и другие компоненты смогут обрабатывать ее с хорошей пропускной способностью, низким использованием памяти и оптимальной конвергенцией путей.

Совершенно ясно, что у меня нет предыстории, чтобы действительно завершить этот проект, но я хотел бы понять схему решения. Можете ли вы прокомментировать, что в схеме правильно, а что отсутствует / неправильно? Какие концепции стали ненужными или устаревшими из-за появления новых технологий?

Насколько простым может быть узел в эксплуатации? Насколько защищен каждый узел от атак других узлов? Отравление сетевого трафика и маршрутизации?

Я читал о проектах, которые преследуют аналогичные цели для Linux, но ничего на текущий момент для Windows. Некоторые дискуссии об автомобилях и аварийно-спасательных службах, но это другое. Меня заинтересовал ураган «Сэнди», связанный с возможностью подключения популярных операционных систем в жилых домах в ситуациях массовых отключений городских сетей. Когда для многих недоступны системы электроснабжения и связи, сетка может помочь.

Почти все участники меша не будут настраивать свои узлы заранее. Вместо этого они могут искать чужие беспроводные сети, когда их не работают, находить SSID «Free Emergency Mesh WiFi» и подключаться. Как и в случае с горячими точками, им будет представлена ​​прокси-страница входа в систему, которая объясняет проект и предлагает ссылку для установки, если они хотят участвовать. Если нет, они все равно могут подключиться к «точке доступа» ячеистой сети в качестве клиента.


person Jason Kleban    schedule 29.10.2012    source источник


Ответы (1)


Проблема в том, что вы, по сути, просите одно радио WiFi одновременно работать в трех разных режимах. Чтобы узел мог разговаривать с другими узлами, он должен быть в режиме Ad-Hoc. Чтобы разговаривать с точкой доступа (AP) для доступа в Интернет, она должна быть в режиме инфраструктуры. Чтобы мобильные телефоны могли подключаться, большинство из них не поддерживают сети Ad-Hoc, поэтому вам также необходимо перевести свои узлы в режим Master (чтобы они отображались как обычные точки доступа). Таким образом, на одной карте Wi-Fi вы пытаетесь совместить три разных режима работы. Теоретически, если карта и драйверы, которые у вас есть, поддерживают инъекцию сырых кадров, вы могли бы имитировать WiFi и сетевые стеки в своем приложении и манипулировать всеми тремя режимами на одной карте, но у меня есть ощущение, что это приведет к очень высокому уровню частота столкновений, потерянные кадры, высокая задержка и все дополнительные циклы ЦП сожгут вашу батарею, если вы запустите это на ноутбуке.

Является ли это возможным? Конечно. Это практическая идея? Не совсем. Лучше дополнить ноутбук небольшими / дешевыми адаптерами Wi-Fi, такими как ASUS USB-N10. Дополнительные адаптеры могут обрабатывать дополнительные режимы, выполнять обработку в микропрограммном обеспечении и пространстве ядра, где это быстрее и эффективнее, и позволяют запускать каждый уровень сети на отдельном канале для НАМНОГО более высокой пропускной способности.

person Sitwon    schedule 29.10.2012
comment
(Пункт 2 допускает необходимость второго, возможно, проводного адаптера для подключения к Интернету). - person Jason Kleban; 30.10.2012
comment
Хорошие идеи. Хорошо, но будет ли ценность принятия пользователями поддержки этих режимов в необработанном режиме, если доступен только один адаптер, но рекламируя это - эй, в следующий раз, второй и даже третий адаптер улучшили бы производительность? - person Jason Kleban; 30.10.2012
comment
Я так не думаю. Mesh-сеть уже имеет довольно слабую репутацию, поэтому выход с медленным и привередливым решением усилит негативные стереотипы для людей, и они не будут пытаться опробовать другие конфигурации. Они просто скажут: "Видите ли, я знал, что ячеистые сети никогда не будут работать!" Имея непосредственный опыт борьбы с мифами и продажи ячеистых сетей как жизнеспособного решения, я советую не предлагать ничего меньшего, чем лучшее. Критики пойдут на самый ленивый путь рецензирования вашего проекта и объявят каждый недостаток доказательством того, что он никогда не сможет работать. - person Sitwon; 30.10.2012
comment
Интересно. Вы знаете, сделает ли 802.11s все, о чем я говорю? И нужна ли 's' аппаратная реализация, такая как 'a' 'b' 'g' и 'n', или это будет отдельный уровень, выполненный в программном обеспечении? - person Jason Kleban; 30.10.2012
comment
... при дальнейших исследованиях мне кажется, что режим 802.11s MAP является правильным выбором и что OPEN80211S предполагает, что реализация может быть выполнена программно на существующем оборудовании. Вы, кажется, много знаете об этой теме. Выполняют ли беспроводные адаптеры обработку на самом адаптере или это делает ЦП? Делает ли этот проект OPEN80211S это на процессоре, переводя адаптер в необработанный режим, как вы упомянули, или это больше похоже на шейдерную программу графической карты, где инструкции даются адаптеру для выполнения самостоятельно? - person Jason Kleban; 31.10.2012