
- •Анализ теоретических основ построения сети на базе технологии Netsukuku
- •4.1 Анализ протокола сети
- •4.1.1 Сетевая модель
- •4.1.2 Топология сети
- •4.1.3 Трассирующий пакет
- •4.1.4 Динамика сети
- •4.1.5 Оптимизация qspn
- •4.2 Анализ топологии сети
- •4.2.1 Основные определения
- •4.2.2 Топологии сети
- •4.3 Маршрутизация cidr
- •4.3.1 Внутренняя карта и ее миопия
- •4.3.2 Фаза присоединения
- •4.4 Анализ доменной структуры сети
- •4.5 Взаимодействие Netsukuku с Интернетом
- •4.5.1 Ip ограничение
- •4.5.2 Распределенные интернет-подключения
4.3.2 Фаза присоединения
Процедура подключения служит для:
того чтобы заставлять новые узлы присоединиться к сети, сохраняя униформу пространства gnodes.
сохранения gnodes внутренне подключенным
сохранения gnodes компактным.
Вообще говоря, процедура подключения служит для того чтобы решить проблему назначения каждого узла сети к группе. Эта проблема не проста потому что группы должны всегда оставаться внутренне подключенными, они конечны и сеть является динамичной.
Униформа
gnodes. Допустим G
является не пустым gnode. Так как G
должен быть внутренне подключен, узел
n может
стать узлом G
если он непосредственно связан по
крайней мере с одним узлом
.
Этот факт приносит некоторые проблемы
в распределении и распределении
бесплатных IP.
Мы
говорим, что G распределен если он не
пустой. Говорят gnode уровня l
насыщен если все его узлы распределены.
Весь gnode
любого
уровня l
может быть сохранен распределенным
единственным узлом n,
таким образом возможно быстрое насыщение
gnode уровня l
+ 1. Насыщенный gnode может казаться полным,
даже если он имеет пустое пространство,
т.к. предполагают, что gnode
насыщался gnodes
,
предположим также, что A
полон, а у B
и C есть
некоторое свободное пространство. Узел
n, который
является непосредственно связанный с
узлом
,
не будет в состоянии участвовать в
.
Фактически, n
не сможет стать узлом А,
потому что это полный gnode, и не сможет
стать узлом B
и C,
потому что непосредственно не подключен
ни к одному из узлов. Поэтому, единственная
возможность, оставленная n,
ето создание нового gnode в
.
Однако, если
самый
высокий gnode, то есть gnode всех узлов сети,
n не
сможет этого потому что
насыщается A, B,
C. Эту
проблему называют насыщаемостью gnodes
(gnodes saturation).
Стратегия решения проблемы насыщаемости gnodes состоит в том, чтобы однородно распространить узлы: у всего gnodes сети будет приблизительно одно и то же количество узлов, в любое время. Это достигнуто, благодаря использования системы, которая имеет вид сообщающихся сосудов:
сцепляющийся узел n (т.е. узел, который присоединяется к сети) создаст набор
содержащий имена всех самых высоких не насыщеных gnodes, весего уровеня l. n может составить , смотря карту своих соседей. Из он выберет , который является gnode с самым низким количеством узлов, то есть.
тогда, он станет новым (g) node уровня l-1 из gnode ;
допустим b является bnode gnode уровня 1, и B набор соседей b, таким образом что
. Допустим G(c) является gnode уровня 1 из узла c и
Если
,
остановимся здесь, другими словами
является gnode с самым низким число узлов,
то есть
.
Тогда b станет сцепляющим узлом, таким
образом это создаст новый gnode, или это
станет узлом H,
оставив G.
После чего, b сообщит его соседям, принадлежащим G повторить эту ту же самую процедуру (некоторые соседи соединены с b который сейчас является узлом H, будут являтся bnodes G, гранича с H). Сосед сообщивший что не может выполнить эту процедуру, пошлет ETP в G, сообщать другим узлам об уходе b из G.
Пример:
1. Рассмотрим следующий сценарий, где у нас есть только один уровень, насыщаемый 3 gnodes:
11.11 ↔22.11 ↔33.11
2. Два узла присоединяются 11.*:
11.33 ↔11.22 ↔ 11.11 ↔ 22.11 ↔ 33.11
3. Правило сообщающихся сосудов применено:
11.33 ↔ 11.22 ↔ 22.22 ↔ 22.11 ↔ 33.11
4. Другие два узла присоединяются 11.*:
11.55 ↔11.44 ↔11.33 ↔ 11.22 ↔22.22 ↔22.11 ↔33.11
Ситуация развивается к
11.55 ↔ 11.44 ↔11.33 ↔ 22.33 ↔ 22.22 ↔ 22.11 ↔ 33.11
11.55 ↔ 11.44↔11.33 ↔ 22.33 ↔22.22 ↔ 33.22 ↔ 33.11
Узел координатор. Переход узлов от gnode А к другому B, должен быть преобразован в последовательный режим. Узлы не могут транслировать одновременно, потому что, когда узел n перемещается, он знает |A | и |B |, но это не знает, сколько других узлов переходит в B и как много уходят из A. Таким образом, без последовательного упорядочения, слишком много узлов может уйти из gnode или войти в другой, не смотря на правила сообщающихся сосудов.
Решение состоит в том, чтобы назначить объединению узлов координатора co(G) на каждый gnode любого уровня. Это по существу достигнуто, используя “P2P по Ntk”: координатор P2P сервиса создан, и все узлы являются неявными участниками. В этом разделе, достаточно сказать, что предоставленным gnode G мы можем достичь своих координаторов узла сo(G).
Узел n войдет в контакт с сo(G) для любого из следующих случаев:
n хочет стать узлом G, если |G | удовлетворяет данное условие (т.е.
-где N является gnode n)
n хочет покинуть G, если |G | удовлетворяет данное условие (т.е.
)
n хочет создать новый gnode
n хочет знать текущий |G |
n выполнит относительное действие, только если сo(G) ответит утвердительно. Чесно говоря сo(G) должна обработать запросы последовательным способом, то есть обработку одного запроса и блокирование всех других. сo(G) рассмотрит запрос как категорический, когда получит относительный ETP, другими словами вернет изменение после времени ожидания, т.е. n может спросить и предоставить запрос на присоединение к G. Это возможно, не соблюдая это и сo(G), рассмотрит его как пустой запрос после времени ожидания 30 секунд, восстанавливая |G |.
Пределы Сообщающихся Сосудов.
сообщающаяся система сосудов - основная аппаратная часть Netsukuku, и самая требовательная к условиям работы, потому что, когда узел изменяет gnode, он изменяет и IP. Это - также основная причина для отрицания мобильности Netsukuku. Чтобы смягчить эти проблемы, нужно классифицировать узлы как статические и гостевые: узлы подключенные больше чем 10 мин. и эффективные узлы Netsukuku вместо последних подключенных к сети через NAT соседей. Данная проблема находится на стадии разработки.
Внутреннее подключение. gnode G внутренне подключен если
путь
a→b все содержится в G
gnode может стать сломанным
(внутренне не подключенным) если другой
gnode сети принимает тот же самый gnode ID,
или если одно или более соединений в
gnode умрет, разбивая gnode на две отдельные
части. Практически, первый случай может
случитеся, только если две отдельные
сети встречают друг друга впервые:
допустим
являют собой 2 gnodes уровня l + 1, и встречаются
впервые. Предположим это
,
тогда узлы наименьшего gnode или у каво
самый старый период работоспособности
повторно перераспределятся.
Второй
случай, где G
разбит на две части будет обработан
нижеследующим образом: bnode
получает ETP для разрыва соединения.
Обновление карт с этим ETP, напомню, что
у него нет никакого маршрута, достижения
каких либо узлов. Назовем E набором
недостижимых узлов (факт, что n
не знает ни одного маршрута достижения
d, не подразумевает что такие маршруты
не существуют, однако согласно структуре
внутренней карты применение правильно).
Есть
две возможности: узлы E изменили gnode при
помощи системы сообщающихся сосудов,
или разрывая связь эффективно разбивают
G на две
части. n
может отличить эти два случая, потому
что ETP, сгенерированный системой
сообщающихся сосудов отмечена
специфическим способом. Если n
находится во втором случае, то он
принадлежит набору
.
Если
,
то n
решает стать сцепляющим узлом, и сообщает
это всем другим узлам
,
чтобы сделали то же самое.
Рисунок 4.7 - В первом шаге у нас есть gnode 11.* (красный). Во втором, gnode становится сломанным. В третьем, после того, как процедура, описання выше, применина, у нас есть два gnodes: 11.* и 22.*
Компактный
gnodes. gnode G компактен, если, устанавливал
значение rem в
,
где
является лучшим путем от а до b.
gnodes нет необходимоти быть компактными, однако чем они более компактнее, тем меньше групповая аппроксимизация.
Оптимальная методика, сохранения gnodes компактнее еще не была найдена. Как пример, рассмотрите следующий, который был вдохновлен гравитационной моделью: допустим n является узлом и Vn набор его соседей. Поскольку каждый граничит
,
n
вычисляется следующим значение
привлекательности (attraction value):
где
- набор всех оптимальных маршрутов n,
проходящих через v
n
тогда привлечен соседом
,
у которого есть самое высокое значение
привлекательности: n
ввойдет в gnode v (если он еще не там).
Проблема с любой Компактной gnodes системой состоит в том что группирование узлов становится зависящим от качества связей, таким образом сеть может быть перенастроена чаще.