RahPhone: работа сотовых телефонов без вышек, или бизнес-идея стоимостью миллиард долларов

Необходимы перепосты и переводы на другие языки (there exists draft translation to english). Журнал "PC Magazine" pcmag.ru/library/detail.php?ID=44304 Издание 5-е, исправленное и дополненное, постоянно доступное как computer20.euro.ru/rah.htm Процессы выделены красным, переменные программного кода - коречневым, прочие определения - серым, иные важные замечания - зеленым. Другие статьи (оглавление)


Основопологающие концепции

Незанятая ниша

В городах живут настолько плотно, что сигнал сотового телефона, улавливаемый соседней мобилой, оказывается мощнее того, который достигает ретрансляционной вышки (площади антен учтены). Это открыло второй канал передачи пакетов - не через вышку, а непосредственно с телефона на телефон. Такие сети еще не реализованы, но уже получили название MANet, Mobile Ad-hoc Net (вместе с VANet, Vechicle Ad-hoc Net, имеющим меньшее броуновское движение аппаратов и не использующим рукописные сервисы - электроную почту, SMS, чаты - они составляют mesh-сети, т.е. работающие без базовых станций; соответственно общение в таких сетях называется meshworking). Емкость ниши - более 3 млрд. эксплуатируемых на планете сотовых телефонов. Если в каждом городе несколько из них подключить к интернету для междугородней связи (назовем её intercity, она может быть развернута студентом или сотрудником университета на халявном интернете в ночное время; местным фондом, собирающим на intercity пожертвования; индивидом, платящим не за трафик, а за полосу пропускания, которая у него не полностью оказывается задействованной), если протянуть провод между деревнями (подключив по одному телефону к Pentium I, взятым с барахолки), то вкупе имеем следующие уникальные свойства:

Становится дешевле и неподнадзорнее гражданам враждебных государств

Несмотря на интенсивное развитие соответствующих протоколов - см. en.wikipedia.org/wiki/Ad_hoc_routing_protocol_list - на самом деле они не применимы для мобильников. Во-первых, во всех них заложены структурные ограничения (случай является наглядным подтверждением слов Фейнмана, что большинство ученых являются каргопоклонниками), которые быстро остановят развитие сетей на основе этих протоколов. Во-вторых, все они используют distant-vector алгоритмы маршрутизации, требующие большого количества записей в таблицах маршрутизации, а потому неразместимых в телефонах.

Разрабатываемое ПО (пока под WiFi, а вообще может быть применена любая из частот en.wikipedia.org/wiki/Comparison_of_wireless_data_standards) не переносимо на мобильники, т.к. использует выше упомянутые протоколы. Однако для полноты картины перечислим программы, отметив, что все, кроме одной, идентифицируют узлы IP-адресом (чтобы не пересечься с адресами в интернете, в последний нужно выходить через прокси). В одном упомянутом случае адресом устройства является обычный номер телефона, что носит название Distributed Numbering Architecture и привязывает пользователя к институту раздачи телефонных номеров.

FreiFunk.net развернут на ноутбуках и применяется во многих странах. Базируется на библиотеке марштуризации OpenWrt.org и на одном из протоколов BATMAN open-mesh.org , Babel pps.jussieu.fr/~jch/software/babel , OLSR OLSR.org , порочность которых раскрыта, например на lists.alioth.debian.org/pipermail/babel-users/2008-August/000151.html Кроме того, это ПО не допускает хаотических мобильных перемещений, и высока цена ноутбуков.

VillageTelco.org состоит из комплектов MeshPotato и является комбинацией стационарной mesh-сети с обычным аналоговым телефоном, т.е. POTS-телефоном, и преобразователем между ними ATA (вместе MeshPotsAta, в котором увидели испанское Patata и перевели на английский - Potato). От FreiFunk унаследовал алгоритм маршрутизации. Комплекты доступны по 119$ за штуку, обещается снижение до 89$. Итого начинание характеризуется отсутствием мобильности и необходимостью специального оборудования.

Ninux.org будет использовать OLSR для смартфонов. Проект не развивается.

ServalProject.org будет применять для смартфонов прошивку VillageTelco и идентифицировать их по DNA, а как при этом разделяются звонки сотовому провайдеру и звонки в Serval-сеть - НЕизвестно. Проект НЕ предоставляет ни бинарных, ни исходных кодов; обещает выйти на рынок через год, НЕ сообщая под какой лицензией.

Единственный проект, в котором упомянут "резиновый" адрес (этот и другие используемые термины определены в следующем разделе) - Netsukuku для ноутбуков. Резюме документации находится на permalink.gmane.org/gmane.network.peer-to-peer.netsukuku/1693 , на практике адрес только четырехбайтный. Инструкция по установке доступна на permalink.gmane.org/gmane.network.peer-to-peer.netsukuku/1688 Программа разрабатывается очень вяло, судя по списку рассылки lists.dyne.org/mailman/listinfo/netsukuku , и имеет следующие ограничения:

Структурная парадигма

Назовем ее RaH (Rubber-and-Hash), она является суммой технологий, которые будем именовать резиновый адрес и SORT-DHT (sham-open-rubber-transfer DHT).

Адрес состоит из произвольного количества байт. Объединим близлежащие телефоны в группы по 254 штуки и присвоим устройствам идентификаторы от 1 до 254 (255 используется как "звездочка", а 0 - как "конец строки" адреса). Каждые близко расположенные 254 группы объединим в надгруппу, внутри которой перенумеруем аналогично. Продолжим этот процесс, пока весь город не предстанет как единое дерево. Тогда перечень идентификаторов от его корня до самого телефона будет адресом этого аппарата. Последний из них принадлежит самому телефону, поэтому в любой группе могут находиться либо под-группы, либо телефоны. Далее группу-корень дерева будем называть проксимальной, группы-концы ветвей - дистальными.

Забегая вперед отметим, что в каждой группе выделяется специальный телефон - координатор. Он выдает в ней идентификаторы (таким образом под-группы и телефоны добавляются в группу по одному, последовательно); сообщает идентификатор, ближайший к данному (это нужно для R-DHT); принимает решение о перестроении группы и сообщает её элементам выбранные параметры перестроения (через все дерево координаторов проходит также служебный вопрос о максимальной длине адреса - см. слияние в конце статьи). Координаторы групп разного уровня иерархии не совпадают, т.к. память телефонов мала. Координаторы являются уязвимыми звеньями, поэтому каждые 4 часа происходят их перевыборы (но не синфазно для разных уровней).

Для некоторой группы процесс происходит следующим образом. Координаторы под-групп выбирают одного между собой, и передают право решения в его под-группу. Там итерация повторяется и идет дальше в дистальную сторону. Каждый координатор помнит координаторов под-групп (вместе их имена составляют под-общество, что удобно реализовать по технологии computer20.euro.ru/sql5.19.3.pdf с.120, 123-125) и над-имя (имя координатора над-группы). В последней группе телефоны выбирают. Каждый выбирающий генерирует случайное число и сообщает остальным выбирающим, чтобы все проделали одни и те же вычисления, и никто не мог стать координатором в результате обмана. А вычисляется хэш-функция от 254 аргументов (или меньше), инвариантная относительно их перестановки.

SORT-DHT - это гибрид S-DHT (sham DHT), O-DHT (open DHT), R-DHT (rubber DHT) и T-DHT (transfer DHT), каждая из которых - надстройка над обычной DHT.

Последняя является хэш-таблицей, части которой без дублирования расположены на всех телефонах; хэш-ключь указывает на адрес аппарата, а потом повторно используется для нахождения значения внутри него. В процессе передвижения по городу телефоны переходят из группы в группу, и адрес меняется. Но каждый телефон выбирает себе в качестве хэш-ключа произвольное литеральное имя и пару "своё имя - свой адрес" хранит и обновляет в DHT. Таким образом в ней всегда доступен актуальный адрес, кроме того, "двунаправленные" программы - например, голосового разговора - сообщают собеседнику о смене адреса. Однако обычная DHT требует равной длины всех адресов, их неизменности и изолированности DHT от злоумышленников. Эти ограничения преодолевает SORT-DHT.

R-DHT отличается использованием двух генераторов псевдо-случайных чисел. Против бомбежки телефонов и обрезания intercity, пару "имя-адрес" размножают на несколько, например 200, географически удаленных аппаратов-хранителей (таким образом слово "хранители" всегда относится к аппаратам, содержащим одну и ту же пару). Хэш имени является затравкой "перпендикулярного" генератора, который указывает идентификатор в пределах группы. Хэш имени и этот идентификатор являются затравками "продольного" генератора, последовательность чисел которого интерпретируется как резиновый адрес. При промахе мимо под-группы или телефона выбирается ближайшая под-группа или телефон (ближайшую узнаём у координатора). На проксимальном уровне перпендикулярный генератор включается всегда, на более дистальных - если хранителей больше 254, и хотя бы два из них попадают в одну под-группу. Все числа, сгенерированные им для данной копии пары, назовем её отклонением (является строкой, заканчивающейся "/0"). Оно записывается в копию наравне с именем и адресом и является затравкой обоих генераторов на любом уровне иерархии наравне с хэшем имени. При поиске адреса по имени хранителей опрашивают последовательно, по одному (ценой некоторой потери времени), чтобы экономить трафик. Вместе с именем, адресом, отклонением хранятся случайное число-селектор, предназначенное для липовой маршрутизации, и открытый ключ асимметричного шифрования - такой комплект назовем пентлетом.

Сама липовая маршрутизация (sham routing) - это технология, симметричная луковичной маршрутизации (onion routing). В обоих случаях пакет движется не кратчайшим маршрутом, а зигзагом, посещая разные точки планеты. Но луковичная противодействует установлению получателя (по пакетам отправителя), липовая - его физическому поиску (по публичному адресу получателя).

Будущий получатель обращается к произвольному телефону с предложением быть его посредником в течение некоторого времени tsecurity=tpolice*N , где tpolice (3 минуты) - время выезда на место группы захвата из ближайшего отделения полиции, N - количество посредников, которых предполагается задействовать (оно должно быть тем больше, чем больше дыр и отверстий). Если в ответе на предложение посредник указал, что согласен на меньший интервал, то получателю придется сконструировать следующий зигзаг за это меньшее время или отказаться от его помощи. Само предложение состоит из одной или двух просьб. Первая - маршрутизировать пакеты, помеченные селектором получателя (если тело пакета зашифровано, то вместе с селектором), на имя некоторого третьего телефона. Эти селектор и имя назовем дублетом. Посредник sham-верифицирует дублет, отправляя в третьий телефон произвольное число, зашифрованное ключем будущего получателя, и ожидая получить число, на единицу большее. Вторая просьба, если посредник будет первым в зигзаге - разрешить указать его адрес вместо своего в S-DHT, что означает для посредника необходимость запомнить имя просящего и выдать его во время open-верификации.

Open-верификацию пентлета перед сохранением выполняет в O-DHT будущий хранитель, запрашивая имя по адресу и селектору из пентлета - и при отсутствии ответа или несовпадении с именем в пентлете не сохраняет. Таким образом выключенный хозяин имени за некоторое время в результате пертурбаций - переходов хранителя и перестроений групп, содержащих хранитель - теряет своё имя; это стимулирует держать телефоны постоянно включенными и маршрутизирующими чужой трафик.

T-DHT состоит в том, что если пертурбация затронула хранителя, то он пересохраняет все находящиеся в нём пентлеты: по хэшу имени и отклонению вычисляет адреса новых хранителей; отправляет пентлеты в сеть - и они сохраняются на аппаратах, ближайших уже без него; затем удаляет пентлеты в себе. Т.е. сразу после пертурбации он пуст.

Маршрутизационная парадигма

Чтобы телефон мог принимать звонки и от RahNet, и от провайдера, он должен иметь два беспроводных модема (что это такое - см. en.wikipedia.org/wiki/Cellular_modem), т.е. поддерживать две SIM-карты. Провайдер нужен для приема GPRS (intercity) и для приема звонков абонентов, еще не подключенных к RahNet. А вот чтобы звонить, достаточно одного модема, т.е. одно-SIM-очного телефона.

Звонок в RahNet провайдер не распознает как звонок себе и не снимет деньги со счета, т.к. формат пакетов разный. Но даже если бы они были одинаковы, можно не аутентифицироваться, отправив пакет со сбойным SSD_A, которое является результатом хэш-функции CAVE от числа SSD_UPDATE, раз в неделю высылаемого телефону вышкой, и чисел ESN и AKEY, прошитых в телефоне и SIM-карте. Вышка вычисляет SSD_A сама и сравнивает с таковым из пакета (аутентификация SIS проходит аналогично, только размеры чисел в байтах другие, и одна половина результата используется для сравнения, а другая - для шифрования вызываемого номера). И в случае разных форматов, и в случае звонка без аутентификации перепрограммировать надо не ОС, а сам модем.

Звонки в RahNet выглядят так. Саму способность двух телефонов общаться напрямую без посредников назовём связью, а аппараты на её концах - смежниками. Связи, пересекающие границу данной группы, назовем её мостами, а устройства на их концах - напарниками. Связи внутри дистальной группы назовем плечами, а телефоны на их концах - близнецами. При сближении-удалении телефонов происходят соединения и разрывы - дребезг; и аппарат переходит в другую группу, когда количество мостов с ней в 2 раза превысит количество плеч со старой (выбирается новая группа, куда ведет максимальное количество мостов). Разрывы диагностируется не только прекращением трафика: в периоды его отсутствия смежники обмениваются уведомлениями о своем существовании (подобно тому, как в обычной сотовой службе телефоны обмениваются ими с вышками) - и тем чаще, чем чаще дребезг.

Маршрутизация состоит из маршрутизации мостов и маршрутизации плеч.

Телефон узнает от смежников обо всех мостах групп, в которых находится (затем делает выборочную сверку с какими-либо аппаратами в этих группах). Мост состоит из двух адресов, возможно разной длины. Пусть для примера телефон имеет адрес 1.1.1.1 , а мостами являются: 1.1.1.4-1.1.2.5 , 1.1.2.7-1.2.9.3 , 1.2.6.8-2.5.7.4 Телефон ищет в мостах первый байт, отличающий их от его собственного адреса, и удаляет остаток строк после него - нормализирует. Результатом являются 1.1.1.4-1.1.2 , 1.1.2-1.2 , 1.2-2 Так появляются эстакады с бóльшими и меньшими опорами (опоры всегда разной длины, пакет движется от большей к меньшей). Если в перечне эстакад такой еще нет, она добавляется туда; если есть, у нее инкрементируется счетчик.

Множество равновеликих бóльших опор сопоставляется каждой меньшей опоре (самые большие - самые лучшие, т.к. ближе к самому маршрутизирующему телефону). Внутри множества они связаны в кольцо с ползунком - в следующий раз будет использована следующая большая опора (кольцо двунаправленное, чтобы были возможны удаления). Адрес из пакета после нормализации назовем пристрелкой. Для последней находится равная ей меньшая опора, и парная большая рассматривается как новое значение пристрелки. Итерации повторяются до тех пор, пока найденная большая опора не попадет в ту же дистальную группу, что и маршрутизирующий телефон. Если это он сам и есть, он шлет пакет в последнее значение пристрелки. Если нет, для последней большей опоры выполняется маршрутизация плеч. Таким образом итератор обходит дерево эстакад, а вместе с большей опорой хранятся её счетчик и указатель на следующую меньшую опору. Итого парадигма в этой части является весьма ограниченным link-state алгоритмом.

В целях оптимизации введем дополнительные служебные таблицы. Последнее значение пристрелки в первом случае и последнее значение большей опоры во втором назовем устоем. Если для каждой меньшей опоры (в т.ч. не терминальной в дереве эстакад) вычислить устой, маршрутизация становится мгновенной, но пересчитывать придется при каждом дребезге мостов. Длину самого длинного маршрута разделим на 3 части, отложим их во всех маршрутах и для каждого кусочка вычислим устои - пересчитывать придется в 3 раза реже. Хотя и собирать из кусочков маршрут. Резюмируя, оптимизация является ограниченным vector-distance алгоритмом. Поскольку дистальный дребезг происходит при каждом переходе в другую группу, одна такая часть должна состоять только из дистального моста.

Аналогично в пределах дистальной группы телефон узнает от близнецов обо всех плечах (набор плеч может проверить, выборочно обратившись к аппарату, упомянутому в перечне; а набор аппаратов - обратившись к координатору). Каждый раз после этого волновым алгоритмом вычисляется в которого из близнецов нужно отправить, чтобы пакет достиг необходимого соседа по группе, и сколько промежуточных аппаратов на таком пути, т.е. опять link-state. Для которого возможна vector-distance оптимизация.

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

Финансирование

Это - пожертвования; перепрошивки телефонов; реклама в RahNet-поисковике (такой поисковый сервер следует создать даже тем, кто принципиально против рекламы, ибо этим они вредят не пользователям, а Google, который всё равно будет сканировать RahNet); создание-и-обучение-созданию страниц под просмоторщик, более прогрессивный чем браузер с его "времянкой" HTML (например под OSforP, последняя редакция центральных идей которого доступна как computer20.euro.ru/api/api.htm), и который таким образом порождает новую индустрию с отдельной прибылью.

Сначала - до появления огромной массы пользователей - перепрошивки выполняются

а после появления - для всех остальных групп населения. Деньги расходуются сначала на рекламу на форумах, а потом - на рекламу листовками и аренду интернет-каналов для intercity. Протокол не меняется, чтобы не писать самому name2name и RahAsk подо все ОС, и чтобы не отключить Skype.

Если продукт не будет выпущен под открытой лицензией GPL, следует ожидать появления CAPTCHA, включаемого командой, лавинообразно распространяющейся по сети (но не на близнецов, а на аппараты, чьи пентлеты хранятся в достигнутом телефоне), с предложением отправки платного SMS (хотя возможно и с дифференциацией для столичных и провинциальных, для первого мира и третьего).

Идеи второго плана

Противостояние, частные тактики

В сети появятся смежники, от коротых пакеты не идут никуда. Сначала ими будут вышки сотовых провайдеров - дыры. Но их легко обнаружить по тому, что о мосте через одну-две границы и о плече они сообщают слишком большому количеству гаджетов, расположенных за много границ: вышку слышно на GSM-900 за 35 км, на GSM-1800 - за 6 км. Бороться с дырами можно двумя путями. Первый: обнаружившие гаджеты - не все, а некоторые, по генератору случайных чисел, чтобы экономить трафик - извещают о дыре её смежников и соседей по дистальной группе. Один из которых также может оказаться той же самой вышкой, и таким образом она узнает, что обнаружена и сымитирует, что пошла дальше по городу. Второй путь - тот же, что против отверстий.

Поскольку дыры легко обнаруживаемы, в светофорах и на стенах домов установят отверстия - сотовые телефоны, работающие от городской электросети (или обяжут сделать это провайдеров за их счет). Поэтому ОС-отправитель разбрасывает пакеты по нескольким траекториям, пометив их номером траектории, чтобы ОС-получатель ответила, по каким пакеты приходят. Для траекторий вычисляются ETX - доли потерянных пакетов, и dt - промежуток времени между первой и последней принятыми копиями пакета.

Если пакеты дублируются по траекториям, то вещаются в эфир один раз сразу для всех первых смежников. Для этого служебным пред-пакетом все из них, кроме одного, уведомляются об адресе этого последнего, пакеты в который они также должны ловить. Начала вещания ждут 1 секунду, чтобы не запоминать много пред-пакетов. По окончании общения ОСы финализирующим пакетом (с произвольным числом-скрывателем, чтобы подслушивающие вышки не могли вычленить окончание общения) информируют: друг друга - освободить ячейки, использовавшиеся при подсчете ETX и dt; всех первых смежников - что больше не надо ловить чужие адреса. При обрыве связи (возможной гибели собеседника) обе ОСы - и отправитель, и получатель - выдают финализирующий пакет автоматически. ОС-отправитель также отсылает его в старую группу после перехода в другую. В новой группе дублирование по траекториям начинается заново.

Дальнейшим развитием является поиск отверстия на траектории опрашиванием смежников элементов траектории: не выявили ли они гибель своих пакетов. Но после обнаружения все равно нужно вещать в отверстие пакеты-имитаторы, чтобы оно не выключилось и не выдало себя за новый телефон (а если нужно опросить скрытно от отверстия, то, чтобы не изменился объем трафика, интервьюировать придется даже в случае, когда пакеты не теряются).

О разрыве или наведении моста напарники на его концах информируют флудом дребезга аппараты обеих групп, которые мост связывал или будет связывать. При вбросе в сеть дезинформации об исчезновении моста (атака "ложная пропасть"), напарники информируют группы также, как будто между ними появился новый мост. При дезе о появлении (атака "ложный мост") - также, как будто мост исчез. Телефоны, подключенные к компьютерам и располагающие их вместительными винчестерами, отслеживают такие мигающие мосты и уведомляют остальных.

Введение эстакад позволяет не запоминать мириады мостов между гигантскими группами, имеющими огромную общую границу, а значит позволяет экономить память, быть нечувствительным к атаке "мультиводство моста" (когда два аппарата прикинулись группами с большим количеством мостов между ними) - но и не позволяет выбрать кратчайший маршрут, ибо эстакада является информацией сразу о нескольких мостах. Достижение её счетчиком - пусть он занимает 4 байта - максимального значения означает, что эстакада ложная и должны быть удалена (телефоны, подключенные к компьютерам, собирают статистику об удаленных эстакадах). Наличие эстакад, подлежащих удалению, хотя бы на двух соседних уровнях иерархии дерева означает, что телефон находится в тумане - фиктивной ветви дерева, созданной дырой или отверстием. Чтобы покинуть его, аппарат переходит в группу выше него, а если не может - сигнализирует пользователю сменить местоположение.

Возможны закладка молчащих отверстий враждебной страной.

Против государственного глушения и, как его разновидности, наводнения тяжами - фиктивным трафиком между дырами и отверстиями - частных тактик нет, следует применить общую (подходящую равно и против потери пакетов).

Противостояние, общие тактики

Из таковых на ум приходит только одна, условно назовем её kill together. Это вхождение в одну из подсистем противника таким образом, чтобы ущерб, наносимый вам, приходился и на эту подсистему. Государства не могут одновременно глушить провайдерный и RahNet-овский трафики, ибо экономики стали телефоно-зависимыми - не могут существовать без немедленной связи. При том, что сотовых каналов сотни, а телефоны содержат не более четырех беспроводных модемов, максимально поддерживают четыре SIM-карты, а обычно - всего одну, весь RahNet будет работать только на одном частотном канале. И чтобы исключить избирательное глушение, он постоянно переходит на тот канал, где работают провайдеры, иначе нужно физическое уничтожение дыр и отверстий.

Только вот вопрос, максимально ли занятый выбрать? Провайдеры могут не выдавать SIM-карты на определенные каналы, а вышками имитировать их ни с чем не сравнимую загруженность. В разных городах применять разную тактику: в одних работать на средне-загруженных, в других - на максимально. Одним человеком подстройка RahNet к провайдерам выполняться не должна, ибо он будет её самой уязвимой частью, значит отслеживать провайдеров придется всей общине. Телефоны подсчитывают между собой, на каких каналах они сами работают (как оценка провайдеров эта статистика тем точнее, чем большая доля всех аппаратов подключена к RahNet); причем подсчет голосов не переливается через intercity (остается в пределах города), а в разных городах RahNet работает на разных каналах, соединенная воедино intercity.

Другие технологии, реализуемые самостоятельно

Для обеспечения анонимности применяются:

Публичными ресурсами SORT-DHT являются:

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

Другие технологии, реализуемые добровольцами

Браузер Opera имеет turbo-режим - бесплатное получение заархивированной html-страницы (7% изначального объема) с сервера компании, выполнившего закачку страницы самостоятельно. Если есть доступный в исходных кодах turbo-драйвер под FireFox или другой браузер, использовать его. Если нет, мотивируя созданием такового под браузеры, спросить у Opera проприетарный протокол. Если не даст, спросить еще раз, проинформировав о RahPhone (но компания перлюстрирует и может фальсифицировать трафик - против создания поисковой системы для интернета и кэширования интернета в SORT-DHT. С фальсификацией бороться выборочными прямыми загрузками и последующим скандалом - компания не обслуживает пользователей своего же браузера. Turbo-драйверу ходить на сервер через различные прокси, чтобы тот не игнорировал его избирательно). При длительном отсутствии добровольцев, нанять фрилансеров (возможно компания откажется поддерживать turbo-режим вообще, но за время развития событий расходы на написание turbo-драйвера окупятся экономией трафика). Наконец, после распространения RahNet предложить Opera самой написать плагин для телефона.

Для осуществления взаимопомощи предложить добровольцам написать программу, назовем её SimHelp, передающую собеседнику параметры вставленной SIM-карты и тем наделяющей способностью звонить по ней (т.е. использовать номер и его деньги) и покупать (т.е. совершать SMS-банкинг, интернет-банкинг, NFC).

Саму возможность реализации Skype оставить на усмотрение этой компании и добровольцев.

Последним предложить также написать для компьютеров демон, назовем его name2name, сообщающий Rah-имя подключенного к нему телефона (или одного из беспроводных модемов).

А также демон RahAsk, позволяющий из RahNet заводить на компьютерах фиктивные почтовые ящики, чтобы владельцы телефонов могли задавать вопросы в емайлы интернета (письма из бесплатных почтовых хостов никогда не удаляются и остаются в правительственных базах данных). Фиктивность состоит в том, что демон только запоминает на какой телефон переслать письмо, пришедшее данному пользователю компьютера. Он автоматически добавляет компьютер в публичные ресурсы SORT-DHT, а также удаляет соответствие емайл-телефон через 40 суток.

Препятствия проекту

Беспроводный модем, разумеется, невозможно перепрограммировать апплетом. А в некоторых телефонах он может быть такой SoC, элементы которой нечитаемы процессором самого телефона или подключенным компьютером - но нечитаемость модемных RAM или флэш компенсируема перепрограммированием этой флэш через выводы микросхемы. Хуже тивоизированные версии: контрольная сумма модемной ОС, находящейся на его флэш, прописана в модемной ROM и проверяется ROM-загрузчиком - тут уже надо заменять микросхему ROM. Потребность в переходниках "модемный флэш - COM/LPT/USB" (подключаться могут как к компьютеру, так и к самому этому же телефону) и в новых микросхемах ROM создает доход сторонних дельцов, что с одной стороны является входным барьером для желающих присоединиться к RahNet, а с другой - основанием для коммерциализации и источником прибыли, а значит - помощников.

Вместе с перепрошивкой или переделкой беспроводного модема, ОС должна быть заменена на новую с алгоритмами проекта - это технологичнее, чем патчить каждую из уже существующих. Хотя все ОСы с открытым исходным кодом - MeeGo, Ubuntu Mobile, Maemo (прородитель первых двух), Moblin (прородитель первой в списке); NitdRoid, CyanogenMod, VillainROM, AndRoid (прородитель предыдущих трех); OpenMoko, Access Linux Platform - громоздки и эксплуатируются только на смартфонах, последние уже сейчас доступны жителям столиц, а за время реализации проекта могут опуститься до цены телефонов. Следует взять ОС из линейки AndRoid, который уверенно выжимает остальных с рынка, а для простых телефонов редуцировать.

Мала емкость аккумуляторов. Если телефон отправляет пакеты не только, когда говорит сам, но и когда пересылает чужие, он вещает постоянно, а в этом режиме аккумулятора хватает в среднем на 2.5 часа. Реально применимые решения:

Другие варианты в порядке падения полезности (продолжите, пожалуйста, мозговой штурм на форуме этой статьи):

Остальной мета-код технического проекта

Переход телефона

Каждый телефон при включении находится в одиночном состоянии. После соединения с любым другим устройством, он вливается в группу, в которой оно находится - получает у её координатора идентификатор. Если то другое тоже одиночное, кто из них будет координатором решается генератором случайных чисел.

При переходе телефона учитывается групповая разница - количество байт, изменившихся в конце его адреса (изменение самой длины адреса также входит в параметр) - а не количество связей с различными дистальными группами. Во время перехода телефон выполняет следующие действия:

После перехода пустой телефон флудом перетягивания предлагает всем аппаратам дистальной группы пересохранить в нем пентлеты, для которых он ближайший, а не они.

Перестроения групп

Если перед добавлением телефона группа была насыщенной, т.е. содержала 254 аппарата, то сначала она делится пополам. Если в результате этого над-группа оказалась бы переполненной, то предварительно уже она делится на двое, и т.д. в проксимальную сторону. Чтобы телефон, курсирующий по городу, не ожидал таких каскадных расщеплений, чтобы его переход происходил мгновенно, группы 2-х нижних уровней иерархии поддерживаются в состоянии с не более, например, 150 элементами.

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

Если количество элементов в группе падает ниже, например, 70 (ближе к корню дерева флуктуаций меньше, и там этот параметр должен быть больше), то она называется вырожденной и объединяется с ближайшей вырожденной - содержимое более дистальной вливается в более проксимальную.

Когда два города разрастаются и соприкасаются, или соединяются intercity, происходит слияние: проксимальная группа меньшего дерева становится под-группой проксимальной группы большего. Меньшее то, у которого самые длинные адреса короче. Если длины равны, дерево выбирается случайным образом. Адреса, пентлеты и таблицы маршрутизации обновляются (флудом слияния) до открытия мостов между деревьями.

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

Напомним, после перестроения групп все телефоны пусты.

Заключение

И ведь кто первым выпустит упомянутый телефон, станет монополистом de facto на долгие десятилетия. И если это сделает предприниматель или государство, если это будет поставлено на коммерческую основу, их прибыль от meshworking будет больше, чем у Microsoft и Google. И они смогут идеологически вскрывать чужие страны как консервные банки, давая преимущество в маршрутизации международному трафику над местным, ведь общение в приграничной зоне дает возможность легко перешагивать государственные границы (памятуя о том, что славяне уже никого не интересуют, а в ЦРУ набирают со знанием арабского и персидского, и без того подозрения вызывают сегодняшние неповиновения в Тунисе, Ливии, Египте, Йемене). Чтобы обезопасить всех нас, необходимо выпустить продукт под открытой лицензией GPL, поэтому мы обращаемся к общественности с просьбой о пожертвованиях при личной встрече (которые возможны во многих местах континента), а также с просьбой принять участие в написании программного кода, компьютерном моделировании и уточнении параметров, в изменении беспроводного модема.


Дмитрий Тюрин (DmitryTurin.narod.ru):
dima.turin@centrum.cz (все письма из домена .ru попадают в спам), dima.turin@gmail.com