![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Зацикливание
К сожалению, поведение дистанционно-векторных протоколов (и в частности, протокола RIP) при изменении топологии системы не всегда корректно и предсказуемо.
Рассмотрим вышеописанную ситуацию с отсоединением узла (1) от сети А. Мы предполагали, что узел (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, расстояние до сети Х не указывается. В нашем примере узел (3) будет рассылать в сети В вектор (B=1, C=1, D=2, E=1). Элемент А=2 не будет включен в этот вектор, потому что дейтаграммы в сеть А отправляются узлом (3) через узел (1), а узел (1) находится в сети В. При рассылке узлом (3) вектора расстояний в другие сети элемент A=1 будет указан (но не будут указаны какие-то другие элементы).
2. Если маршрутизатор G объявляет новое расстояние до сети Х, то это расстояние вносится в таблицы маршрутов узлов, отправляющих дейтаграммы в сеть X через G, независимо от того, больше оно или меньше уже внесенного в таблицы расстояния. В нашем примере это означает, что если в маршрутной таблице узла (3) записано А=1-> (1) и (3) получает от (1) вектор с элементом А=16, то несмотря на то, что 1 меньше бесконечности, узел (3) модифицирует запись в таблице: А=16-> (1).
Очевидно, что при выполнении вышеуказанных условий зацикливания, рассмотренного в примере, не образуется и строятся корректные маршруты. Однако таким образом устраняются далеко не все случаи зацикливания. Существует модификация дополнения 1, позволяющая ликвидировать более сложные особые ситуации, в том числе, некоторые случаи счета до бесконечности (см. также следующий пункт):
3. Если дейтаграммы, адресованные в сеть Х, посылаются через маршрутизатор G, находящийся в сети N, то в векторе расстояний, рассылаемом в сети N, расстояние до сети Х полагается равным бесконечности. Тем не менее и в этом случае особые ситуации все еще остаются.
|