6. RIP

Описание

  • Стандартный открытый DV-протокол

    • Алгоритм Беллмана-Форда, 1969 год

    • Разрабатывался под ARPANET, позднее был адаптирован под IP

  • Рассылает пары "маршрут+метрика" каждые 30 секунд

  • Метрика - количество каналов до удаленной сети (не более 15)

  • Балансировка до 6 маршрутов равной стоимости

  • Очень прост в реализации

    • При этом крайне медленно реагирует на изменения в сети

    • Кратковременно допускает возникновении петель маршрутизации

Сравнение версий RIP

  • Все версии рассылают маршруты из базы по таймеру

RIPv1

RIPv2

RIPng

Стандарт

RFC 1058

RFC 2453

RFC 2080

Протокол

Классовый IPv4

Безклассовый IPv4

IPv6

Транспорт

UDP 255.255.255.255:520

UDP 224.0.0.9:520

UDP [FF02::9]:521

Аутентификация

нет

есть

есть

Next-Hop

нет

есть

есть

Метрика RIP

  • Метрика - Hop Count, не зависит от скоростей каналов

  • Из соседских анонсов выбирается маршрут с наименьшей метрикой

Split Horizon

  • Предотвращение временных петель при перестроении топологии

    • Маршрут не анонсируется через тот же интерфейс, где он был получен

    • Решает проблему "подсчета до бесконечности" (бесконечность в RIP = 16)

Route Poisoning

  • Механизм уведомления о недоступности маршрута

  • Маршрут отправляется с метрикой "бесконечность" (бесконечность=16)

Poison Reverse

  • Механизмы предотвращения петли при отключенном Split Horizon

  • Маршрут отправляется с метрикой "бесконечность" обратно в тот же интерфейс, через который был получен

  • Аналог Split Horizon

RIP в Cisco IOS

  • Административное расстояние - 120

  • Рассылка сообщений по таймеру раз в 30 секунд

  • Рассылка сообщений по факту возникновения смены топологии

    • Уведомление соседям о появлении нового маршрута

    • Включен Route Poisoning

    • Включен Split Horizon (в Cisco объединен с Poison Reverse)

  • По умолчанию работает RIPv1

  • В RIPv2 по умолчанию работает автоматическая агрегация по границам классовых сетей

Включение RIP на интерфейсе

  • Команда network в RIP задает классовую сеть для отбора интерфейсов, IP-адреса на которых попадают в эту сеть

    • Начинается рассылка анонсов

    • Приходящие анонсы обрабатываются роутером

    • Все connected маршруты с этих интерфейсов попадают в анонс

Router(config)#router rip
Router(config-rip)#network 10.0.0.0
Router(config-rip)#network 172.16.0.0

Passive-Interface

  • RIP включает в анонс все connected-сети на своих интерфейсах

    • Приходится включать его на клиентских интерфейсах

    • Отправка анонсов в эти сети нежелательна

  • Выход - пассивное участие RIP на интерфейсе

    • Сеть с интерфейса по-прежнему анонсируется

    • Анонсы не отсылаются (но принимаются, поэтому блокируем по ACL)

Router(config)#router rip
Router(config-rip)#passive-interface fa0/0
  • Если таких интерфейсов много, то можно настроить passive поведение по умолчанию и исключить нужные интерфейсы:

Router(config)#router rip
Router(config-rip)#passive-interface default
Router(config-rip)#no passive-interface fa0/0

Отключение классового поведения

  • RIP по-умолчанию отправляет анонсы v1 и принимает любые анонсы

Router(config-router)#version 2
  • После переключения в v2 работает автоматическая агрегация на границе классовых сетей, отключаем:

Router(config-router)#no auto-summary

Диагностика RIP

  • Убедится, что RIP включен на устройстве

Router#show ip protocols
Routing Protocol is "rip" 
  Sending updates every 30 seconds, next due in 17 seconds
  Invalid after 180 seconds, hold down 180, flushed after 240
  Outgoing update filter list for all interfaces is
  Incoming update filter list for all interfaces is
  Redistributing:   rip
  Default version control: send version 2, receive version 2
    Interface        Send  Recv   Key-chain
    FastEthernet2/0    2    2
    FastEthernet3/0    2    2
  Automatic network summarization is not in effect
  Routing for Networks:
    10.0.0.0
    172.16.0.0
  Routing Information Sources:
    Gateway         Distance      Last Update
    172.16.3.1           120      00:00:08
    172.16.1.1           120      00:00:08
  Distance: (default is 120)
  • Вывести только маршруты RIP

Router#show ip route rip
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default
       U - per-user static route

Gateway of last resort is not set

     172.16.0.0/24 is subnetted, 2 subnets
R       172.16.0.0 [120/1] via 172.16.1.1, 00:02:39, FastEthernet3/0
R       172.16.2.0 [120/1] via 172.16.3.1, 00:08:21, FastEthernet2/0
     10.0.0.0/24 is subnetted, 1 subnets
R       10.0.3.0 [120/2] via 172.16.1.1, 00:01:33, FastEthernet3/0

Включение RIPng

  • На интерфейсе включается только в явном виде

  • Можно запустить несколько экземляров, нужно задать имя экземляра

Router(config)#ipv6 unicast-routing
Router(config)#router rip RIPV6
Router(config-rtr)#router-id 0.0.0.1
Router(config-rtr)#passive-interface default
Router(config-rtr)#no passive-interface gi0/1, gi0/2
Router(config)#interface range gi0/1-2
Router(config-if-range)#ipv6 enable
Router(config-if-range)#ipv6 rip RIPV6 enable

Диагностика RIPng

  • Убедится, что RIPng включен на устройстве

Router#show ipv6 protocols
Router#show ipv6 rip
  • Вывести только маршруты RIPng

Router#show ipv6 route rip

Default-Information Originate

  • Можно включить в анонс RIP маршрут по умолчанию из RIB и только если он есть в RIB

  • Для IPv4 задается в контексте процесса RIP

  • Для IPv6 задается в контексте интерфейса, есть две опции:

    • default-information originate добавляет в анонс маршрут по умолчанию

    • default-information originate only отправляет только маршрут по умолчанию (работает только в RIPng)

Router(config)#router rip
Router(config-router)#default-information originate
Router(config)#interface gi0/0
Router(config-if)#ipv6 rip RIPV6 default-information originate only

Агрегация маршрутов RIP

  • Отсылается только агрегатный маршрут, но не его компоненты

    • Хотя бы один компонент должен быть в RIB

  • Метрика агрегата - наименьшая метрика его компонентов

  • В RIB создается виртуальный маршрут на интерфейс Null0

    • DV-протоколы не могут анонсировать маршруты, которых нет в RIB

Router(config)#interface gi0/0
Router(config-if)#ip summary-address rip 10.0.0.0 255.255.0.0
Router(config-if)#ipv6 rip RIPV6 summary address 2001:DB8::/32

Таймеры RIP

  • RIP основан на таймерах

  • Flush и Invalid запускаются одновременно

Таймер

Значение

Описание

Update

30

Частота отправки анонсов на интерфейсах

Invalid

180

Время с последнего принятого анонса, после которого маршрут переходит в HoldDown

Holddown

180

Интервал, в течение которого маршрут признается глобального недоступным: сеть анонсируется с бесконечной метрикой, маршрутизатор не принимает анонсы этой сети, но остается в RIB

Flush

240

Время с последнего принятого анонса, после которого маршрут удаляется из RIB

Router(config)#router rip
Router(config-router)#timers basic 5 15 15 30
Router(config)#ipv6 router rip cisco
Router(config-rtr)#timers 5 15 10 30

База маршрутов RIP

  • Можно отобразить все маршруты в базе RIP и их состояние

Router#show ip rip database
  10.0.0.0/8   auto-summary    !даже с включенным auto-summary
  10.0.0.0/16  int-summary
  10.0.1.0/24  directly connected, GigabitEthernet0/1
  172.16.2.0/24 is possibly down
Router#show ip route 172.16.2.0 255.255.255.0 longer-prefixes
Router#show ip route 172.16.2.0 255.255.255.0
Routing-entry for 172.16.2.0/24
  Known via "rip", distance 120, metric 4294967295 (inaccessable)
  Redistributing via rip
  Last update from 192.168.1.2 on GigabitEthernet1/0, 00:04:06 ago
  Hold Down timer expires in 123 secs

Дебаг RIP

Router#debug ip rip
Router#debug ip rip database
RIP database events debugging is on
*Apr  8 10:58:42.367: RIP-DB: network_update with 10.2.24.0/24 succeeds
*Apr  8 10:58:42.367: RIP-DB: adding 10.2.24.0/24 (metric 1) via 10.2.12.2 on Ethernet0/1 to RIP database
*Apr  8 10:58:42.367: RIP-DB: network_update with 10.2.124.0/24 succeeds
*Apr  8 10:58:42.367: RIP-DB: adding 10.2.124.0/24 (metric 1) via 10.2.12.2 on Ethernet0/1 to RIP database
*Apr  8 10:58:42.367: RIP-DB: network_update with 10.102.2.0/24 succeeds
*Apr  8 10:58:42.367: RIP-DB: adding 10.102.2.0/24 (metric 1) via 10.2.12.2 on Ethernet0/1 to RIP database
*Apr  8 10:58:42.367: RIP-DB: network_update with 12.12.12.1/32 succeeds
Router#debug ip events
RIP event debugging is on
R1#
*Apr  8 10:59:38.317: RIP: received v2 update from 10.2.12.2 on Ethernet0/1
*Apr  8 10:59:38.317: RIP: Update contains 6 routes
*Apr  8 10:59:39.074: RIP: sending v2 update to 224.0.0.9 via Loopback2 (2.2.2.2)
*Apr  8 10:59:39.074: RIP: Update contains 12 routes
*Apr  8 10:59:39.074: RIP: Update queued
*Apr  8 10:59:39.074: RIP: Update sent via Loopback2
*Apr  8 10:59:39.074: RIP: ignored v2 packet from 2.2.2.2 (sourced from one of our addresses)
R1#
*Apr  8 10:59:40.458: RIP: sending v2 update to 224.0.0.9 via Loopback3 (2.2.2.3)
*Apr  8 10:59:40.458: RIP: Update contains 12 routes
*Apr  8 10:59:40.458: RIP: Update queued
*Apr  8 10:59:40.458: RIP: Update sent via Loopback3
*Apr  8 10:59:40.458: RIP: ignored v2 packet from 2.2.2.3 (sourced from one of our addresses)
*Apr  8 10:59:40.739: RIP: sending v2 update to 224.0.0.9 via Ethernet0/1 (10.2.12.1)
*Apr  8 10:59:40.739: RIP: Update contains 6 routes
*Apr  8 10:59:40.739: RIP: Update queued
*Apr  8 10:59:40.739: RIP: Update sent via Ethernet0/1

Редистрибуция

  • Процесс импорта маршрутов из RIB в таблицу топологии RIP

    • Connected

    • Static

    • Динамические (BGP/EIGRP/OSPF/IS-IS)

  • Каждому импортируемому префиксу нужно указать seed metric

    • Можно назначить метрику явно, неявно или через route-map

    • Префиксы без назначенной метрики получают метрику infinity

Router(config)#router rip
Router(config-router)#redistribute connected
Router(config-router)#redistribute static metric 1
Router(config-router)#redistribute ospf 1 route-map OSPF_TO_EIGRP
Router(config-router)#default-metric 1

Route-map при редистрибуции RIP

  • С помощью Route-map можно отобрать префиксы для редистрибуции или назначить специальные метрики

R1(config)#ip route 10.0.1.1 255.255.255.255 10.0.0.1 tag 1
R1(config)#ip route 10.0.2.2 255.255.255.255 10.0.0.1 tag 2
R1(config)#ip route 10.0.3.3 255.255.255.255 10.0.0.1 tag 3
R1(config)#route-map STATIC_TO_RIP permit 10
R1(config-route-map)#match tag 1
R1(config-route-map)#set metric 1
R1(config-route-map)#route-map STATIC_TO_RIP permit 20
R1(config-route-map)#match tag 2
R1(config-route-map)#set metric 2
R1(config)#router rip
R1(config-router)#redistribute static route-map STATIC_TO_RIP
R2#show ip route
R    10.0.1.1/32 [110/2] via 192.168.1.2, 00:05:03, GigabitEthernet0/0
R    10.0.2.2/32 [110/3] via 192.168.1.2, 00:05:03, GigabitEthernet0/0

Distribute-list

  • Позволяет фильтровать:

    • отправляемые и принимаемые префиксы (в т. ч. на уровне интерфейса)

    • импорт маршрутов других протоколов из RIB при редистрибуции

Router(config-router)#distribute-list ACL_RIP_INCOMING in
Router(config-router)#distribute-list ACL_RIP_INCOMING_GI00 in gi0/0
Router(config-router)#distribute-list prefix PREF_MASK_8_24 in
Router(config-router)#distribute-list gateway PREF_NEIGH in
Router(config-router)#distribute-list ACL_RIP_OTGOING out
Router(config-router)#distribute-list prefix PREF_RIP_OUTGOING_GI00 out gi0/0
Router(config-router)#distribute-list prefix PREF_REDIST_OSPF_TO_RIP out ospf 1

Манипуляции с AD

  • Можно задать AD префиксам RIP в RIB

    • по-умолчанию 120

Router(config-router)#distance 150
Router(config-router)#distance 180 10.1.2.0 0.0.0.255 ACL_DISTANCE_180

Last updated