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