К сожалению, поведение дистанционно-векторных протоколов (и в частности, протокола RIP) при изменении топологии системы не всегда корректно и предсказуемо.
Рассмотрим вышеописанную ситуацию с отсоединением узла (1) от сети А.
Рис. 4.2.1. Изменение состояния RIP-системы
Мы предполагали, что узел (3) не отправлял дейтаграмм через узел (1) (и, следовательно, изменение таблицы маршрутов в узле (1) не повлияло на таблицу узла (3) ). Предположим теперь, что (3) отправлял дейтаграммы в сеть А через (1) , то есть таблица в узле (3) имела вид:
A=2->
(1)
B=1->
(3)
C=1->
(3)
D=2->
(4)
Е=1->
(3)
После отсоединения (1) от сети А узел (3) получает от (1) вектор (A=16,B=1,C=16,D=16,E=2). Проанализировав этот вектор, (3) делает вывод, что все указанные в нем расстояния больше значений, содержащихся в его маршрутной таблице, на основании чего этот вектор узлом (3) игнорируется.
В свою очередь узел (3) рассылает в сети В, С, Е вектор (A=2,B=1,C=1,D=2,E=1). Узел (1) получает этот вектор, увеличивает расстояния на 1: (А=3,В=2,С=2,D=3,E=2) и замечает, что расстояния А=3, С=2 и D=3 меньше бесконечности, следовательно, соответствующие записи таблицы маршрутов в узле (1) модифицируются и она принимает вид:
A=3->
(3)
B=1->
(1)
C=2->
(3)
D=3->
(3)
Е=2->
(3)
Очевидно, после этого содержимое таблиц узлов (1) и (3) стабилизируется.
Рассмотрим теперь записи о достижении сети А в таблицах маршрутизаторов (1) и (3) .
В узле (1) : A=3->
(3)
В узле (3) : A=2->
(1)
Таким образом, возникло зацикливание: данные, адресованные в сеть А, будут пересылаться между узлами (1) и (3) до тех пор, пока не истечет время жизни дейтаграмм и они не будут уничтожены.
Для того, чтобы избежать зацикливания, в алгоритм рассылки векторов расстояний вносятся следующие дополнения.
1. Если дейтаграммы, адресованные в сеть Х, посылаются через маршрутизатор G, находящийся в сети N, то в векторе расстояний, рассылаемом в сети N, расстояние до сети Х не указывается.