
- •Анализ теоретических основ построения сети на базе технологии 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 Распределенные интернет-подключения
Анализ теоретических основ построения сети на базе технологии Netsukuku
4.1 Анализ протокола сети
4.1.1 Сетевая модель
Приоритеты Netsukuku это стабильность и масштабируемость сети: сеть должна иметь возможность расти до размеров 227 узлов.
Полностью динамическая сеть потребовала бы быстрых и частых обновлений маршрутов, и это не подходит под требования стабильности и масштабируемости Netsukuku. Поэтому мы ограничиваем Netsukuku случаем, где узел не будет изменять свое физическое местоположение быстро или часто.
Это предположение является законным, потому что местоположение узла Wi-Fi, установленного на вершине здания, не будет меняться, и его единственными динамическими действиями были бы соединение и разъединение к и от сети и изменений качества этих соединений.
Однако, есть некоторые последствия связаные с этим предположением:
узлы мобильных телефонов не поддержаны алгоритмами Netsukuku (Есть возможность использовать другие мобильные протоколы для обьединения с Netsukuku, таким же образом как они соединяются с Интернетом (наподобии gprs и др.). Ради простоты мы принемаем, то что работаем на уровне 0 (уровень, сформированный 256 единственными узлами);
сеть не может обновлятся быстро: несколько минут может требоваться прежде, чем все узлы узнают о изменении в сети (новые узлы присоединились, более эффективные маршруты стали доступными...). Однако, когда узел присоединяется к сети, он может достигнуть всех других узлов с первого момента, используя маршруты своих соседей.
Алгоритм маршрутизации. Одна из самых важных частей Netsukuku - алгоритм открытой маршрутизации, который ответственен за то чтобы найти все самые эффективные маршруты сети.
Алгоритм маршрутизации должен быть способным найти маршруты, не перезагружая сеть или центральный процессор, используя минимальные ресурсы памяти узлов.
В Netsukuku существует собственный алгоритм, QSPN. Он основан на предположениях, описанных выше.
4.1.2 Топология сети
Один QSPN не был бы способен к обработке целой сети, потому что будет все еще требоваться слишком много памяти. Например, предположим что мы сохраняем только один маршрут, чтобы достигнуть одного узла и даже если бы этот маршрут стоял из одного байта, мы нуждались бы в 1 гигабайте памяти для сети, составленной из 109 узлов (текущий Интернет). Поэтому необходимо структурировать сеть в удобной топологии.
Иерархическая топология. Netsukuku адаптирует иерархическую структуру: 256 узлов сгруппированы в узле группы (gnode), 256 узлов группы сгруппированы в единственной группе узлов группы (ggnode), 256 групп узлов группы сгруппированы в gggnode, и так далее.
Начиная от каждого gnode, являющегося единственным реальным узлом, QSPN начинает оперировать непосредственно на каждом уровне иерархии.
Пока считается что в каждом уровне есть максимум - 256 (g) узлов, QSPN будет всегда оперировать максимально с 256 (g) узлами. Поэтому мы должны были бы только убедиться, что это работает как и ожидается на все случаи графа, составленного из ≤ 256 узлов. Между прочим, мы непосредственно проанализируем общий случай.
4.1.3 Трассирующий пакет
TP (трассирующий пакет) является фундаментальным понятием, на котором базируется QSPN: это - пакет, который сохраняет идентификатор пройденных перелетов в своем теле.
Движение трассирующего пакета. TP не посылают определенному адресату, вместо этого, он используется, для движения по сети. Говоря "узел A посылает TP", мы подразумеваем, что "узел A запускает движение TP".
Движение TP проходит только один раз через каждый узел сети: узел, который получает TP, отправит его всем своим соседям, кроме того, от которого получил TP. Как только узел отправил TP, он не будет отправлять никакой другой TP того же самого направления.
Свойства трассирующего пакета. Узел D, который получил TP, может знать точный маршрут, пройденный TP. Поэтому, D может знать, что маршрут достигает исходного узла S (который послал TP), и маршруты достижения узлов, стоящих в середине маршрута движения ТР.
Например, предположим, что TP, полученный D: {S, A, B, C, D}. Смотря на пакет, D будет знать, что маршрут, достижения B является C→B, достигния A - C→B→ A, и наконец чтобы достигнуть S - C→B→А→ S. То же самое происходит со всеми другими узлами которые получили TP, то есть, B знает, что маршрут, чтобы достигнуть S является А→ S.
Букет S - набор всех TP, который будет предан или послан узлом S во время движения пакета. Первый TP этого букета, полученного универсальным узлом D, будет TP, который прошел самый быстрый маршрут, который подключает S к D. Самый быстрый S→D маршрут является маршрутом с минимальным rtt (Round – Trip Time) между S и D. Это свойство также правильно, если S - узел, который запустил движение TP, то есть первый узел, который послал первый букет движения TP.
Рисунок 4.1 - Простой граф
Предположим, что D посылает TP. TP пройдет маршруты: D→E→ F и D→ C→B→A. Когда TP достигнет узла F и узла A, движение остановится, потому что любой A и F не в состоянии отправить TP любому другому узлу.
В конце A будет знать маршрут, A →B→ C→ D, а F будет знать движение F→E→D (рис. 4.1).
Нециклическое движение трассирующего пакета. Нециклическое движение не ограничено как нормальное движение TP: один или более ATP(Acyclic Tracer Packet) могут посылаться от того же самого узла. Конец движения задан таким правилом: узел не будет отправлять ATP кому-нибудь из своих соседей, если его идентификатор узла уже присутствует в маршруте, содержавшемся в теле пакета. С этим правилом ATP может идти в цикле только единожды, отсюда и название.
Наконец, как в нормальном TP, узел не отправляет ATP соседу, от которого получил пакет непосредственно.
Если каждый узел сети пошлет движение ATP, то каждый узел получит все возможные маршруты достижения любого другого узла.
Непрерывный трассирующий пакет (Continuos Taracer Paket - CTP) является расширением движения TP: узел будет всегда отправлять TP всем своим соседям, за исключением того, от которого он получил TP.
Если узел будет экстремальным значением сегмента, то есть узлом только с одной ссылкой, то это сотрет маршрут, сохраненный в теле TP, и отправит его назад.
Короче говоря, CTP - движение TP, которое никогда не будет заканчиваться, таким образом он продолжит исследовать всю бесконечную комбинацию маршрутов.
Интересное информационное правило. Это правило может быть описано в единственной фразе: трассирующий пакет продолжит передвигаться в сети, пока он несёт интересующюю нас информацию.
Узел находит полученный TP интересным, когда его тело содержит по крайней мере один новый маршрут. Другими словами, если TP содержит маршруты, уже известные узлу, он считается неинтересным.
Когда узел получает интересный TP, он пересылает пакет всем своим соседям, за исключением того, от которого получил TP. Если TP неинтересен, пакет уничтожается узлом.
Если TP неинтересен для узла N, то это также неинтересно для всех других узлов (соседей). Это потому что неинтересный TP содержит маршруты, которые были ранее получены, запомнены и отправлены узлом N. Поэтому все другие узлы также уже знают те же самые маршруты.
Рассмотрим этот граф, представленный на рис. 4.2
Рисунок 4.2: цикл A-B-C-A
Предположим, что A посылает CTP. Два CTP, покроют следующие два пути и остановятся:
A→B→C→A→B→C
A→C→B→A→C→B
Проанализируем первый CTP шаг за шагом, полагая, что перед посланным CTP, ни один из узлов не знал маршрута.
A→B В этом пункте B не знает никакого маршрута достижния A, поэтому он рассматривает этот CTP как интересный и передает его к C.
A→B→C, смотря на этот пакет, C получает маршруты достижения A и B.
A→B→C→А, узел A изучает маршрут достижения C.
A→B→C→А→B, узел B изучает маршрут достижения C.
A→B→C→А→B→C, Наконец C уничтожает пакет, потому что он уже знает все маршруты, содержавшиеся в CTP.