В начале 2011 года мы нашли двоих студентов из Дании, которых заинтриговала идея изучения и реализации концепта, названного «Network Coding». Методика, нацеленная на расширение сети Wi-Fi с объединением нескольких фреймов в один, чтобы снизить количество требуемого эфирного времени. С помощью математических алгоритмов и чуть-чуть танцев с бубном, принимающие передатчики могут декорировать и распаковывать тот фрейм, который им нужен.
В этом примере ретранслятор R присылает комбинированную передачу для A и B. A и B вычисляют свои данные и вычитают из них принадлежащие не себе.
Потом, в Марте, студенты присоединились к WirelessBattleMesh в Испании и рассказали про свой проект «C.A.T.W.O.M.A.N.» (Coding Applied To Wireless On Mobile Ad-hoc Networks). Есть запись обсуждения их доклада с обсуждением механизмов и преимуществ Network Coding, что стало отправной точкой в понимании сути концепта.
Затем они продолжали работать над кодом и разработали рабочий прототип, который позволил представить, приносит ли этот концепт пользу, или нет. Следующие графики (первый, второй) иллюстрируют пропускную способность сети с и без Network Coding (синяя и зелёная линии), а также выигрыш в пропускной способности с использованием Network Coding (красная линия) в цепи из трёх роутеров при передаче данных с одного конца на другой.
Так как этот проект стал их дипломной работой, написана превосходная документация, объясняющая каждую мелочь, что и как работает, которая содержит результаты анализов производительности.
Код batman-adv с включённым Network Coding доступен на GitHub, он может быть полезен для дальнейшего тестирования и изучения (он базируется на снапшоте, сделанном в начале 2011 года). В течение нескольких недель/месяцев мы собираемся полировать код до тех пор, пока он не будет включён в состав ядра Linux. Последнее позволит заинтересованным сторонам тестировать и развивать концепт Network Coding.
Последняя на данный момент версия batman-adv имеет номер 2011.3.0. В этой версии сломана обратная совместимость с предыдущими версиями и прекращена поддержка ядра Linux старше 2.6.29. Это вызвано значительными улучшениями роуминга для клиентов вне сети. Это один из старейших сегментов/концептов кода batman-adv. Также batman-adv наконец-то получил информирование в пространство пользователя с помощью uevent. Алгоритм маршрутизации получил незначительные улучшения, позволяющие уменьшить пинг при передаче мультимедийного потока OGM, чтобы избежать длинных маршрутов при большой нагрузке (исправлена ошибка). Были улучшены и другие компоненты программы.
>>> Подробности