Телекоммуникационные технологии.Сети TCP-IP

       

Зацикливание


К сожалению, поведение дистанционно-векторных протоколов (и в частности, протокола RIP) при изменении топологии системы не всегда корректно и предсказуемо.

Рассмотрим вышеописанную ситуацию с отсоединением узла ?

от сети А.


Рис. 4.2.1. Изменение состояния RIP-системы

Мы предполагали, что узел ?

не отправлял дейтаграмм через узел ?

(и, следовательно, изменение таблицы маршрутов в узле ?

не повлияло на таблицу узла ?

). Предположим теперь, что ?

отправлял дейтаграммы в сеть А через ?

, то есть таблица в узле ?

имела вид:

A=2a



?

B=1a

?

C=1a

?

D=2a

?

Е=1a

?

После отсоединения ?

от сети А узел ?

получает от ?

вектор (A=16,B=1,C=16,D=16,E=2). Проанализировав этот вектор, ?

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

игнорируется.

В свою очередь узел ?

рассылает в сети В, С, Е вектор (A=2,B=1,C=1,D=2,E=1). Узел ?

получает этот вектор, увеличивает расстояния на 1: (А=3,В=2,С=2,D=3,E=2) и замечает, что расстояния А=3, С=2 и D=3 меньше бесконечности, следовательно, соответствующие записи таблицы маршрутов в узле ?

модифицируются и она принимает вид:

A=3a

?

B=1a

?

C=2a

?

D=3a

?

Е=2a

?

Очевидно, после этого содержимое таблиц узлов ?

и ?

стабилизируется.

Рассмотрим теперь записи о достижении сети А в таблицах маршрутизаторов ?

и ?

.

В узле ?

: A=3a

?

В узле ?

: A=2a

?

Таким образом, возникло зацикливание: данные, адресованные в сеть А, будут пересылаться между узлами ?

и ?

до тех пор, пока не истечет время жизни дейтаграмм и они не будут уничтожены.

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

1. Если дейтаграммы, адресованные в сеть Х, посылаются через маршрутизатор G, находящийся в сети N, то в векторе расстояний, рассылаемом в сети N, расстояние до сети Х не указывается.

В нашем примере узел ?

будет рассылать в сети В вектор (B=1,C=1,D=2,E=1). Элемент А=2 не будет включен в этот вектор, потому что дейтаграммы в сеть А отправляются узлом ?


через узел ?

, а узел ?

находится в сети В. При рассылке узлом ?

вектора расстояний в другие сети элемент A=1 будет указан (но не будут указаны какие-то другие элементы).

2. Если маршрутизатор G объявляет новое расстояние до сети Х, то это расстояние вносится в таблицы маршрутов узлов, отправляющих дейтаграммы в сеть X через G, независимо от того, больше оно или меньше уже внесенного в таблицы расстояния.

В нашем примере это означает, что если в маршрутной таблице узла ?

записано А=1a

?

и ?

получает от ?

вектор с элементом А=16, то несмотря на то, что 1 меньше бесконечности, узел ?

модифицирует запись в таблице: А=16a

?

.

Очевидно, что при выполнении вышеуказанных условий зацикливания, рассмотренного в примере, не образуется и строятся корректные маршруты. Однако таким образом устраняются далеко не все случаи зацикливания.

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

1А. Если дейтаграммы, адресованные в сеть Х, посылаются через маршрутизатор G, находящийся в сети N, то в векторе расстояний, рассылаемом в сети N, расстояние до сети Х полагается равным бесконечности.

Тем не менее и в этом случае особые ситуации все еще остаются.


Содержание раздела