Интернет магазин китайских планшетных компьютеров



Компьютеры - Netsukuku - QSPN

05 мая 2011


Оглавление:
1. Netsukuku
2. Реализация
3. Протокол Npv7
4. QSPN



Тому, кто знаком с физикой волны, будет просто понять, как работает qspn. Если бросить камень в бассейн с водой, то можно наблюдать следующее: волны начинают распространяться из начальной точки, причём каждая волна рождает новую волну, которая продолжает распространяться и рождать все новые и новые волны. Когда волна ударяется о края бассейна или о какую-то преграду, она отражается и начинает распространяться в обратную сторону. В применении к qspn камень — это qspn_starter, бассейн — gnode, а каждая волна — tracer_pkt. Каждая новая волна несёт с собой информацию о родившей её волне. Когда tracer_pkt достигает extreme_node, рождается qspn_open.

QSPN базируется на описанном принципе. Начиная трассировку узлов, каждый узел посылает qspn_pkt, называемый qspn_close, становясь тем самым qspn_starter. Qspn_pkt это обычный tracer_pkt, но его метод вещания немного отличается от остальных. Каждый пакет, который получает qspn_close, «закрывает» линк узла, от которого получил этот пакет и отсылает пакеты по всем своим остальным линкам. Все последующие полученные qspn_close пакеты будут переправляется по всем оставшимся незакрытым линкам. Через некоторый промежуток времени появляются узлы, у которых все линки будут закрыты. Такие узлы становятся extreme_node и посылают в качестве ответа другой qspn_pkt пакет. Другими словами, qspn_open пакет отправляется, после того как получены qspn_close пакеты от всех узлов. Пакет qspn_open содержит всю информацию, собранную в последнем полученном пакете qspn_close. Extreme_node посылает пакет qspn_open по всем своим линкам, кроме того узла, от которого он получил последний qspn_close; этому узлу отсылается пустой пакет. Другими словами, пакет qspn_open отправляется после того, как узел получил пакет qspn_close от всех узлов. Узел, получивший пакет qspn_open, открывает все линки. Узлы со всеми открытыми связями абсолютно ничего не делают. Таким образом, гарантируется законченность обмена пакетами qspn_close. У qspn_open пакетов также есть идентификационный номер — число, которое идентифицирует во внешних картах узлы «extreme_node», сгенерировавшие эти qspn_open пакеты. Sub_id, сгенерированный в самом первом пакете и не меняющийся во всех порождённых пакетах, используется для управления большим числом qspn_pkt пакетов, так как рано или поздно каждый узел сгенерирует пакет qspn_open, и все они должны быть независимы и отличны друг от друга. Действительно, все узлы, которые имеют только одну связь, — это узлы extreme_node, ведь когда они получают qspn_close, они уже закрыты. После отправки пакета qspn_open узел не может отвечать больше никому и ни на какие полученные qspn_pkt пакеты, поэтому он больше ничего не отправляет.

Узел qspn_starter, который запустил qspn, становится обычным узлом, но не отправляет пакет qspn_open, так как отправил первый qspn_close. Кроме того, чтобы обновить свою собственную карту, узел будет использовать все полученные qspn_close пакеты, кроме тех, которые были отправлены такими же qspn_start узлами. Таким образом, поддерживается стабильность в случае наличия более одного узла «qspn_starter».



Просмотров: 3237


<<< Nero Burning ROM
Network File System >>>