RIP

Описание протокола

Характеристики протокола:

  • RIPv1 и RIPv2 используют UDP порт 520.
  • RIPng использует UDP порт 521.
  • Для передачи сообщений RIPv1 в адресе получателя используется широковещательный адрес 255.255.255.255, а RIPv2 — мультикаст адрес 224.0.0.9.

Таймеры протокола

  • Update timer — частота отправки обновлений протокола, по истечению таймера отправляется обновление. По умолчанию равен 30 секундам.
  • Invalid timer — Если обновление о маршруте не будет получено до истечения данного таймера, маршрут будет помечен как Invalid, то есть с метрикой 16. По умолчанию таймер равен 180 секундам.
  • Flush timer (garbage collection timer) — По умолчанию таймер равен 240 секундам, на 60 больше чем invalid timer. Если данный таймер истечет до прихода обновлений о маршруте, маршрут будет исключен из таблицы маршрутизации. Если маршрут удален из таблицы маршрутизации то, соответственно, удаляются и остальные таймеры, которые ему соответствовали.
  • Holddown timer — Запуск таймера произойдет после того, как маршрут был помечен как не достижимый. До истечения данного таймера маршрут будет находиться в памяти для предотвращения образования маршрутной петли и по этому маршруту передается трафик. По умолчанию равен 180 секундам. Таймер не является стандартным, добавлен в реализации Cisco.

Описание работы протокола

Когда маршрутизатор отправляет обновление RIP, он добавляет к метрике маршрута, которую он использует, 1 и отправляет соседу.

Сосед получает обновление, в котором указано какую метрику для полученного маршрута ему использовать.

Маршрутизатор отправляет каждые 30 секунд все известные ему маршруты соседним маршрутизаторам. Но, кроме этого, для предотвращения петель и для улучшения времени сходимости, используются дополнительные механизмы:

  • Split horizon — если маршрут достижим через определенный интерфейс, то в обновление, которое отправляется через этот интерфейс не включается этот маршрут;
  • Triggered update — обновления отправляются сразу при изменении маршрута, вместо того чтобы ожидать когда истечет Update timer;
  • Route poisoning — это принудительное удаление маршрута и перевод в состояние удержания, применяется для борьбы с маршрутными петлями.
  • Poison reverse — Маршрут помечается, как не достижимый, то есть с метрикой 16 и отправляется в обновлениях.

В обновлениях RIPv2 могут передаваться до 25 сетей.

RIP v2 в Cisco

Базовые настройки

router(conf)# router rip
router(conf-router)# version 2
router(conf-router)# network <классовая сеть>

RIPv2 бесклассовый протокол маршрутизации, но в команде network может быть указана только классовая сеть.

Даже если указать сеть с маской, которая не соответствует классовой, RIP автоматически преобразует её в классовую сеть.

Команда network указывает только на каких интерфейсах включить RIP, а фактическая сеть и маска будет взята из настроек интерфейса.

Включение RIP для классовой сети (команда network) значит включение его на всех интерфейсах, которые являются частью этой сети.

А включение RIP на интерфейсе означает, что маршрутизатор:

  • отправляет с него обновления RIP,
  • слушает обновления RIP на 520 порту,
  • анонсирует сеть интерфейса соседям.

Для того чтобы отключить эти функции на интерфейсе:

Функция Как отключить
Отправление обновлений Указать интерфейс как passive
Ожидание обновлений Фильтровать входящие обновления с помощью distribute list
Анонсирование сети Фильтровать исходящие обновления с помощью distribute list на остальных интерфейсах (указать сеть интересующего интерфейса)

Особенности анонсирования сетей

  • RIP по умолчанию выполняет суммирование маршрутов на границах сетей.
  • RIP не анонсирует суперсети (сети, у которых маска меньше классовой, например, 192.168.0.0/20)
  • RIP анонсирует маршруты к хостам (маска 32)

Схема (используется классовый протокол маршрутизации):

10.10.11.0/24–(R1)–10.10.12.0/24–(R2)–192.168.1.0/24–(R3)–10.10.13.0/24–(R4)–10.10.14.0/24

Информация о сети 10.10.11.0/24 не дойдет до R4.

R2 передаст к R3 информацию о классовой сети 10.0.0.0/8, но у R3 есть более специфический маршрут в сеть 10.0.0.0/8, то он не будет анонсировать эту информацию R4.

Маршрут по умолчанию

Команда default-information originate

Синтаксис команды:

dyn3(config-router)# default-information originate [route-map <map-name>]

RIP будет анонсировать маршрут по умолчанию, даже если маршрута по умолчанию нет в таблице маршрутизации.

Команда redistribute static

Если в таблице маршрутизации есть статический маршрут по умолчанию, то можно анонсировать его с помощью команды redistribute static.

Синтаксис команды:

dyn3(config-router)# redistribute static [metric <metric>] [route-map <map-name>]

Суммирование маршрутов

Маршрутизатор может суммировать сети:

  • автоматически, суммируя подсети в классовую сеть на границе классовой сети (auto-summary),
  • в соответствии с настройками, анонсируя указанную сеть на интерфейсе.

Автоматическое суммирование

Автоматическое суммирование маршрутов перебивает настройки суммарного маршрута на интерфейсе, за исключением случая когда выполняются следующие условия:

  • Настроенный суммарный адрес на интерфейсе и IP-адрес интерфейса разделяют общую классовую сеть,
  • split horizon выключен на интерфейсе
int fa0/0
ip add 10.10.10.1 255.255.255.0
ip summary-address rip 10.20.0.0 255.255.0.0
no ip split-horizon

router rip
network 10.0.0.0

Административное суммирование

Настройка суммарного маршрута:

router(config-if)# ip summary-address rip 10.1.1.0 255.255.255.0

Ограничения суммирования маршрутов в RIP

RIP не позволяет настраивать суммарный маршрут с маской, которая меньше классовой (supernet).

Например, нельзя настроить суммарный маршрут 10.0.0.0/6:

router(config-if)# ip summary-address rip 10.0.0.0 252.0.0.0
Summary mask must be greater or equal to major net

OSPF и EIGRP такое сделать позволяют.

У каждого суммарного маршрута настроенного на интерфейсе маршрутизатора должна быть уникальная классовая сеть.

RIP не позволяет настраивать несколько суммарных подсетей из одной классовой сети на одном интерфейсе.

Например, такие суммарные маршруты не разрешены:

interface FastEthernet 0/0
ip summary-address rip 10.1.0.0 255.255.0.0
ip summary-address rip 10.2.0.0 255.255.0.0
В новых версиях IOS это ограничение снято.

Просмотр настроек

База данных маршрутов RIP

В базе данных хранятся такие маршруты:

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

Просмотр базы данных маршрутов RIP:

router# show ip rip database

Работа с таймерами

В таблице маршрутизации, в каждом маршруте, который получен по протоколу RIP указан Invalid timer:

router# show ip route

Когда маршрут находится в таблице маршрутизации в состоянии possibly down, это значит, что Invalid timer истек, а Flush timer еще нет:

router# show ip route

Для того чтобы посмотреть информацию о текущем значении таймера flush, необходимо дать команду:

router# show ip route <сеть назначения>

Изменение значений таймеров RIP:

router(conf)# router rip
router(conf-router)# timers basic <update invalid hold-down flush>

Для ускорения процесса сходимости можно удалить маршруты из таблицы маршрутизации (это приведет к тому, что и все таймеры RIP обнулятся).

Удалить можно все маршруты:

router# clear ip route *

или маршрут к конкретной сети:

router# clear ip route  <сеть назначения>

Дополнительные возможности

Проверка адреса отправителя обновления

Отключить проверку:

router(config-router)# no validate-update-source

Triggered extension to RIP

Triggered extension to RIP — дополнительный функционал, который позволяет RIP отправлять полную информацию о всех маршрутах только один раз и после этого не отправлять её. Функция разработана для demand circuit и описана в RFC 2091.

Включается на интерфейсе командой ip rip triggered.

Статическое указание соседа

Для того чтобы ограничить отправления обновлений в сети с множественным доступом можно использовать команду neighbor.

До этого надо указать интерфейс как passive.

Тогда, после выполнения команды neighbor, RIP будет отправлять обновления unicast-пакетами только указанному соседу.

Статическое указание соседа:

router(conf)# router rip
router(conf-router)# passive-interface <interface>
router(conf-router)# neighbor <ip-address>

Split horizon

Split horizon по умолчанию включён на всех интерфейсах, кроме случаев когда Frame Relay настроен с IP-адресом на физическом интерфейсе.

Отключить split horizon на интерфейсе:

router(conf-if)# no ip split-horizon

Offset List

Offset list — механизм для увеличения входящей или исходящей метрики маршрутов, которые были выучены через RIP.

Можно применить offset list к конкретному интерфейсу или с помощью ACL отфильтровать конкретные сети для которых надо увеличить метрику.

Создание offset list:

router(conf)# router rip
router(conf-router)# offset-list [access-list-number | name] {in | out} offset [type number]