Рисунок 91 - Формат пакета RIP для реализаций IP так, как он определен в RFC 1058
Поле команд (command) содержит целое число, обозначающее либо запрос, либо ответ. Команда "запрос" запрашивает отвечающую систему об отправке всей таблицы маршрутизации или ее части. Пункты назначения, для которых запрашивается ответ, перечисляются далее в данном пакете. Ответная команда представляет собой ответ на запрос или чаще всего какую-нибудь незатребованную регулярную корректировку маршрутизации. Отвечающая система включает всю таблицу маршрутизации или ее часть в ответный пакет. Регулярные сообщения о корректировке маршрутизации включают в себя всю таблицу мааршрутизации.
Поле версии (version) определяет реализуемую версию RIP, оно может быть использовано для сигнализирования о различных потенциально несовместимых реализациях в объединенной сети.
За 16-битовым полем, состоящим из одних нулей, идет поле идентификатора семейства адресов (аddress family identifier), определяющее конкретное используемое семейство адресов. В крупных сетях (например Internet) этим адресным семейством обычно является IP (значение=2), но могут быть также представлены другие типы сетей.
Следом за еще одним 16-битовым полем, состоящим из одних нулей, идет 32-битовое поле адреса (address). В реализациях RIP Internet это поле обычно содержит какой-нибудь адрес IP. За еще двумя 32-битовыми полями из нулей идет поле показателя RIP (metric), представляющий собой число пересылок (hop count).
В каждом отдельном пакете RIP может быть перечислено до 25 пунктов назначения. Для передачи информации из более крупных маршрутных таблиц используется множество пакетов RIP.
RIP использует определенные таймеры для регулирования своей работы. Таймер корректировки маршрутизации RIP (routing update timer) обычно устанавливается на 30 с., что гарантирует отправку каждым роутером полной копии своей маршрутной таблицы всем своим соседям каждые 30 секунд. Таймер недействующих маршрутов (route invalid timer, обычно 90с.) определяет, сколько должно пройти времени без получения сообщений о каком-нибудь конкретном маршруте, прежде чем он будет признан недействительным. Если какой- нибудь маршрут признан недействительным, то соседи уведомяются об этом факте, причем до истечения времени таймера отключения маршрута (route flush timer, обычно 270с.). Когда заданное время таймера отключения маршрута истекает, этот маршрут удаляется из таблицы маршрутизации.
Характеристики, предназначенные для более стабильной работы в условиях быстро изменяющейся топологии сети: ограничение числа пересылок, временные удерживания изменений (hold-downs), расщепленные горизонты (split-horizons) и корректировки отмены (poison reverse updates).
RIP разрешает максимальное число пересылок, равное 15. Любому пункту назначения, который находится дальше, чем на расстоянии 15 пересылок, присваивается ярлык "недосягаемого". Максимальное число пересылок RIP в значительной мере ограничивает его применение в крупных объединенных сетях, однако способствует предотвращению появления проблемы, счета до бесконечности (count to infinity), приводящей к зацикливанию маршрутов в сети.
Рисунок 92 - Проблема счета до бесконечности
Если канал Роутера 1-R1 (канал а), связывающий его с сетью А, откажет, то R1 во время проверки своей информации и обнаруживает, что Роутер 2 (R2) связан с сетью А каналом длиной в одну пересылку. Т.к. R1 знает, что он напрямую соединен с R2, то он объявляет о маршруте из двух пересылок до сети А и начинает направлять весь трафик в сеть А через R2, что приводит к образованию маршрутной петли. Когда R2 обнаруживает, что R1 может теперь достичь сеть А за две пересылки, он изменяет запись своих собственных данных в таблице маршрутизации, чтобы показать, что он имеет тракт длиной в 3 пересылки до сети А. Эта проблема, а также данная маршрутная петля будут продолжаться бесконечно, или до тех пор, пока не будет навязано какое-нибудь внешнее граничное условие - максимальное число пересылок RIP. Когда число пересылок превысит 15, данный маршрут маркируется как недосягаемый. Через некоторое время этот маршрут удаляется из таблицы.
Временные удерживания изменений
Временные удерживания изменений используются для помехи регулярным сообщениям о корректировке незаконного восстановления в правах маршрута, который оказался испорченным. Соседи испорченного маршрутизатора вычисляют новые маршруты и отправляют сообщения об обновлении маршрутизации, чтобы информировать своих соседей об изменениях в маршруте. Так появляется целая волна коррекций маршрутизации, которая фильтруется через сеть.
Приведенные в действие корректировки неодновременно прибывают во все устройства сети, поэтому возможно, что какое-нибудь устройство будет иметь (и возможно, рекламировать) неправильную маршрутную информацию.
Команды о временном удерживании указывают роутерам, чтобы они на некоторое время придержали любые изменения, которые могут оказать влияние на только что удаленные маршруты. Этот период удерживания обычно рассчитывается таким образом, чтобы он был больше периода времени, необходимого для внесения кокого-либо изменения о маршрутизации во всю сеть. Удерживание изменений предотвращает появление проблемы счета до бесконечности.
Расщепленные горизонты используют преимущество того факта, что никогда не бывает полезным отправлять информацию о каком-нибудь маршруте обратно в том направлении, из которого пришла эта информация.
Рисунок 93 - Расщепленные горизонты
Pоутер 1 (R1) первоначально объявляет, что он располагает каким- то маршрутом до Сети А. Pоутеру 2 (R2) нет оснований включать этот маршрут в свою корректировку, отсылаемую обратно роутеру R1, т.к. R1 ближе к Сети А. Правило расщепленного горизонта гласит, что R2 должен исключить (попасть на) этот маршрут при любых корректировках, которые он отправляет в R1.
Правило расщепленного горизонта помогает предотвратить маршрутные петли между двумя узлами.
Корректировки отмены предназначены для устранения более крупных маршрутных петель. В основе их действия лежит положение о том, что увеличение значения показателей маршрутизации обычно указывает на наличие маршрутных петель. В этом случае отправляются корректировки отмены для удаления данного маршрута и помещения его в состояние временного удерживания.
Протокол маршрутизации внутренних роутеров (Interior Gateway Routing Protokol-IGRP) является протоколом маршрутизации, разработанным в середине 1980 гг. компанией Cisco Systems, Inc. Главной целью, которую преследовала Cisco при разработке IGRP, было обеспечение живучего протокола для маршрутизации в пределах автономной системы (AS), имеющей произвольно сложную топологию и включающую в себя носитель с разнообразными характеристиками ширины полосы и задержки. AS – это набор сетей, которые находятся под единым управлением и совместно используют общую стратегию маршрутизации. Обычно AS присваивается уникальный 16-битовый номер, который назначается Центром Сетевой Информации (Network Information Center - NIC) Сети Министерства Обороны (Defense Data Network - DDN).
Хотя RIP вполне пригоден для маршрутизации в пределах относительно однородных объединенных сетей небольшого или среднего размера, его ограничения сдерживают рост сетей. В частности, небольшая допустимая величина числа пересылок (15) RIP ограничивает размер объединенной сети, а его единственный показатель (число пересылок) не обеспечивает достаточную гибкость в сложных средах. Популярность роутеров Cisco и живучесть IGRP побудили многие организации, которые имели крупные объединенные сети, заменить RIP на IGRP.
Первоначальная реализация IGRP компании Cisco работала в сетях IP. Однако IGRP был предназначен для работы в любой сетевой среде, и вскоре Cisco распространила его для работы в сетях использующих Протокол Сет без Установления Соединения (Connectionless Network Protocol - CLNP) OSI.
IGRP является протоколом внутренних роутеров (IGP) с вектором расстояния. Протоколы маршрутизации с вектором расстояния требуют от каждого роутера отправления через определенные интервалы времени всем соседним роутерам всей или части своей маршрутной таблицы в сообщениях о корректировке маршрута. По мере того, как маршрутная информация распространяется по сети, маршрутизаторы могут вычислять расстояния до всех узлов объединенной сети.