Протоколы динамической маршрутизации.
Протоколы маршрутизации обеспечивают обмен служебной информацией, необходимой для построения таблиц маршрутизации. Существует множество протоколов маршрутизации, однако здесь мы рассмотрим только два протокола: RIP (представитель дистанционно-векторных протоколов) и OSPF (представитель протоколов состояния связей).
Построение таблицы маршрутизации по протоколу RIP (Routing Information Protocol) происходит следующим образом:
1) Маршрутизаторы создают минимальные таблицы маршрутизации, на основании имеющейся информации о сетях, непосредственно подключенным к их сетевым интерфейсам.
2) Маршрутизаторы рассылают минимальные таблицы соседям (соседями считаются те маршрутизаторы, которые могут получить сообщение напрямую, не пользуясь услугами промежуточных маршрутизаторов, т.е. маршрутизаторы которые одним из своих сетевых интерфейсов подключены к той же сети, что и маршрутизатор, отправляющий сообщение).
3) Маршрутизаторы анализируют полученные минимальные таблицы других маршрутизаторов, наращивая поле "метрика" (расстояние до сети/компьютера) на единицу, учитывая таким образом тот соседний маршрутизатор, от которого была получена минимальная таблица, как еще один маршрутизатор на пути до сети назначения. После этого полученная минимальная таблица сравнивается с уже имеющейся таблицей маршрутизации. Если в обоих таблицах имеется несколько маршрутов до одной и той же сети, то в результирующую таблицу попадает вариант с наименьшей метрикой (расстоянием до сети).
4) Рассылка новой, уже не минимальной, таблицы соседям и последующая обработка полученных от соседей не минимальных таблиц. Соседям рассылается полный вариант имеющейся таблицы маршрутизации, за исключением информации о сетях, которая была получена непосредственно от самих этих соседей. Делается это для предотвращения создания петлевых маршрутов и зацикливания пакетов (техника "расщепления горизонта" – split horizont). Этап 4 повторяется циклически каждые 30 секунд (протокол RIP IP). В результате, все маршрутизаторы в сети будут иметь корректную таблицу маршрутизации: информация из таблиц любого маршрутизатора, через соседей, рано или поздно дойдет до любого другого маршрутизатора в сети. Более того, при изменениях в сети (подключение к какому-либо маршрутизатору новой сети или временная недоступность старой сети) информация об изменениях также распространится по сети.
5) Для автоматического обновления таблиц маршрутизации, каждая запись, созданная при помощи протокола RIP, имеет свой срок жизни (TTL, Time To Live). В RIP IP срок жизни записи равен шести периодам рассылки таблиц маршрутизации, т.е. 180 секунд. Если какой-либо маршрутизатор выходит из строя и перестает слать своим соседям сообщения о сетях, которые можно достичь через него, то через 180 секунд все записи, которые породил этот маршрутизатор, станут недействительными у его ближайших соседей. После этого процесс повторится уже для соседей ближайших соседей – они вычеркнут подобные записи уже через 360 секунд, так как первые 180 секунд ближайшие соседи еще передавали сообщения об этих записях и т.д. Как видно из объяснения, сведения о недоступных через отказавший маршрутизатор сетях распространяются по сети не очень быстро. Поэтому есть более быстрый способ объявить сеть недоступной. Если отказал не весь маршрутизатор (что случается редко), а только один из его интерфейсов, подключенных к какой-либо сети, то при следующем обмене таблицами маршрутизации (через 30 секунд), маршрутизатор укажет "бесконечное" расстояние до недоступной сети, что приведет к исключению данного маршрута из таблиц других маршрутизаторов. Бесконечному расстоянию в протоколе RIP IP соответствует метрика 16 (16 маршрутизаторов между отправителем и получателем). Такое небольшое значение "бесконечного" расстояния связано с низкой скоростью распространения информации об отказах между маршрутизаторами (см. выше). Большее значение может привести к длительным периодам зацикливания и потерь пакетов.
Протокол OSPF (Open Shortest Path First) является более современным и эффективным, чем протокол RIP.
В OSPF процесс построения таблицы маршрутизации происходит по следующим этапам:
1) Каждый маршрутизатор строит граф связей сети, в котором вершинами графа являются маршрутизаторы и IP-сети, а ребрами — интерфейсы маршрутизаторов. Все маршрутизаторы для этого обмениваются со своими соседями той информацией о графе сети, которой они располагают к данному моменту времени. Этот процесс похож на процесс распространения векторов расстояний до сетей в протоколе RIP, однако сама информация качественно другая — это информация о топологии сети. Эти сообщения называются router links advertisement — объявление о связях маршрутизатора. Кроме того, при передаче топологической информации маршрутизаторы ее не модифицируют, как это делают RIP-маршрутизаторы, а передают в неизменном виде. В результате распространения топологической информации все маршрутизаторы сети располагают идентичными сведениями о графе сети, которые хранятся в топологической базе данных маршрутизатора.
2) Нахождении оптимальных маршрутов с помощью полученного графа. Каждый маршрутизатор считает себя центром сети и ищет оптимальный маршрут до каждой известной ему сети. В каждом найденном таким образом маршруте запоминается только один шаг – до следующего маршрутизатора, в соответствии с принципом одношаговой маршрутизации. Данные об этом шаге и попадают в таблицу маршрутизации. Задача нахождения оптимального пути на графе является математически достаточно сложной и трудоемкой. В протоколе OSPF для ее решения используется итеративный алгоритм Дийкстры. Если несколько маршрутов имеют одинаковую метрику до сети назначения, то в таблице маршрутизации запоминаются первые шаги всех этих маршрутов.
3) После первоначального построения таблицы маршрутизации необходимо отслеживать изменения состояния сети и вносить коррективы в таблицу маршрутизации. Для контроля состояния связей в сети OSPF-маршрутизаторы не используют обмен полной таблицей маршрутизации, как это не очень рационально делают RIP-маршрутизаторы. Вместо этого они передают специальные короткие сообщения HELLO. Если состояние сети не меняется, то OSPF-маршрутизаторы корректировкой своих таблиц маршрутизации не занимаются и не посылают соседям объявления о связях. Если же состояние связи изменилось, то ближайшим соседям посылается новое объявление, касающееся только данной связи, что экономит пропускную способность сети. Получив новое объявление об изменении состояния связи, маршрутизатор перестраивает граф сети, заново ищет оптимальные маршруты (не обязательно все, а только те, на которых отразилось данное изменение) и корректирует свою таблицу маршрутизации. Одновременно маршрутизатор ретранслирует объявление каждому из своих ближайших соседей (кроме того, от которого он получил это объявление).