Курс по сетевым технологиям
A A A

 

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

Существуют 2 типа протоколов маршрутизации.

IGP (Interior Gateway Protocol) - Протокол внутреннего шлюза.

EGP (Exterior Gateway Protocol) - Протокол внешнего шлюза.

IGP используются внутри автономных систем, а EGP - для связи автономных систем друг с другом.

 

Что такое автономная система? 

Автономная система представляет собой сеть под единым доменом управления. Это может быть сеть одного провайдера или сеть большого предприятия



В свою очередь протоколы IGP делятся на 2 класса: дистанционно-векторные  и по состоянию канала (LSA - Link State Algorithm)

Векторные протоколы

Протоколы по состоянию канала

RIP

OSPF

IGRP

IS-IS

EIGRP

 

 

Протокол IGRP является разработкой Cisco и сейчас практически не используется, поэтому рассматривать его не будем.



Краткая теория о векторном алгоритме маршрутизации 

Принцип дистанционно-векторных протоколов основан на вычислении метрики - расстояния до сети назначения. Под расстоянием понимают количество узлов (участков сети), которые необходимо пройти пакету до сети назначения




Максимальная метрика в протоколе RIP равна 15. Метрика со значением 16 означает, то сеть недостижима.

 

Почему нельзя метрику увеличить? 

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

 

Все маршрутизаторы, на которых запущен данный протокол, периодически рассылают соседям свою таблицу маршрутизации. RIP рассылает свою таблицу каждые 30с.

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


Вот как выглядит процесс рассылки в трейсе




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



Проблемы векторных протоколов и способы их решения 

Векторные протоколы не лишены недостатков:

  • Маршрутизаторы периодически рассылает всю таблицу своим соседям и тем самым загружают канал связи.
  • Медленная сходимость (convergence), то есть при изменении топологии сети (обрыв кабеля или выход из строя одного из маршрутизаторов) уходит много времени на оповещение всех маршрутизаторов и дальнейший расчет таблицы маршрутизации.
  • Нельзя использовать в больших сетях.
  • Не учитывается скорость канала при выборе наилучшего маршрута

 

Рассмотрим сеть ниже в нормальном состоянии



Теперь разберем процесс, когда происходит обрыв в сети.

Произошел обрыв и сеть Е недоступна. Маршрутизатор C отмечает, что  маршрут до сети Е недостижим метрикой 16.

Однако остальные маршрутизаторы пока ничего не знают




Если обновления от соседних маршрутизаторов придут раньше, чем маршрутизатор C успеет отправить свои обновления,  то данный маршрутизатор С обновит свою таблицу в соответствии с полученной информации. То есть в них будет указано, что сеть достижима с метрикой 1, так как у нее все еще есть запись о достижимости сети Е




Маршрутизатор C увеличивает метрику на 1 и помещает запись в свою таблицу. Если сеть большая, то данный процесс может привести к зацикливанию недостижимого маршрута, когда при передаче обновлений от маршрутизатора к маршрутизатору метрика будет все больше и больше увеличиваться. Поэтому было принято установить максимальную метрику равную 15.

 

Получается маршрутизатор C должен успеть передать обновление, иначе это приведет к зацикливанию и неверным записям в таблицах? 

Все верно. Период обновления равен 30 с и это очень много. Поэтому были разработаны технологии для увеличения сходимости и устойчивой работы протокола.

 

Triggered update (немедленные обновления) - как только маршрутизатор обнаруживает обрыв, то сразу высылает обновления своим соседям. Однако это может загрузить канал связи, особенно, если изменения в сети происходят очень часто.

 

Split Horizon (расщепление горизонта) - маршрутизатор никогда не отправит информацию о сети через порт, с которого получил данную информацию.

Например, маршрутизатор B получил от маршрутизатора C информацию, что сеть E  достижима с метрикой 1. Когда маршрутизатор B начнет свою рассылку маршрутизатору C, то в ней не будет указано ничего о маршруте до сети E




Poison reverse (опасный путь) - технология напоминает технологию Split Horizon, но с небольшим отличием. В технологии Split Horizon маршрутизатор не отправит обновление о сети обратно на тот интерфейс, через который получил обновление о данной сети. Poison reverse же наоборот отправляет это обновление о сети, о которой узнал через данный порт, однако помечает эту сеть недостижимой, то есть с  метрикой 16.

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



Таймеры векторных алгоритмов 

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

 

UP (Update timer) - маршрут в рабочем состоянии и присутствует в таблице маршрутизации. Каждые 30с маршрутизатор получает обновление о том, что маршрут достижимый. Частота обновления задается таймером Update timer.

 

Invalid (Holddown timer) - если по каким-то причинам маршрутизатор не получил обновление маршрута по истечении Update timer (30c), то маршрут помечается недостижимым, то есть с метрикой 16. Либо сосед уведомил, что маршрут недостижимый. Одновременно запускается Holddown timer равный 180с. Если в течении 180с маршрутизатор получит обновление маршрута с лучшей метрикой, то таймер обнуляется и маршрут помечается как достижимый.

 

Garbage collection (Flush timer) - если маршрутизатор в течении таймера Holddown не получил обновление, то по истечении таймера запускается Flush timer равный 240с. Если в течении данного времени будет получен маршрут с лучшей метрикой, то таймер обнуляется, а маршрут становится снова достижимым. В противном случае вся информация о маршруте удаляется из базы данных маршрутизатора.

 

Весь процесс проиллюстрирован ниже



 

Зачем столько таймеров? 

Это необходимо для предотвращения зацикливания маршрутов.