RIPv2: странное правило в рекламе

RIPv2: странное правило в рекламе

В текущей версии Quagga для Linux я обнаружил правило, которое может подавлять передачу некоторой информации о маршрутах соседним маршрутизаторам через RIPv2.

Изображение скажет больше, чем тысяча слов

Если маршрутизатор r1 подключается к другому маршрутизатору r2 через интерфейс 'nic0', а у r1 есть другой интерфейс 'nic1', подключенный к другой сети 'net1'. Тогда r1 надеется объявить маршрут к 'net1' своему соседу r2. Сеть, скажем, net0, является сетью, соединяющей r1 и r2, которая, скажем, 10.3.1.32/27, а сеть 'net1', скажем, 10.3.1.0/24.

В этом случае запись маршрута 10.3.1.0/24 (через nic1) не будет отправлена ​​на r2, поскольку программа RIPv2 в Quagga внутренне подавила запись и удалила ее.

Я проверил исходный код RIPv2 Quagga и обнаружил, что это происходит из-за правила: 10.3.1.0/24 имеет сетевой префикс, который содержится в сетевом префиксе 10.3.1.32/27, другими словами, самые левые 24 бита 10.3.1.0 являются подстрокой самых левых 27 бит 10.3.1.32.

Но я не понимаю, почему есть такое правило. Это определено стандартом RIPv2 или просто причудой Quagga? В моем понимании, перекрытие между net0 и net1 допустимо и не должно быть проблемой из-за «правила сопоставления самого длинного сетевого префикса» в маршрутизации, и маршрутизатору r2 действительно нужно знать, что существует большая сеть net1 (по сравнению с net0), к которой можно добраться через r1. Если эта информация о маршруте была подавлена ​​Quagga, r2 не будет знать об этом, и к хостам в net1 нельзя будет получить доступ из net0 со стороны r2.

Есть ли кто-нибудь, кто это знает?

Спасибо, Вуди.

решение1

Если сеть 10.3.1.0/24 напрямую подключена к R1, это может вызвать проблему. В этом случае R1 имеет перекрывающиеся IP-адреса на обоих своих интерфейсах. Я не эксперт по Linux, но я знаю, что это не поддерживается на маршрутизаторах Cisco (и я почти уверен, что это не поддерживается ни на каком другом маршрутизаторе/брандмауэре).

Если сеть не подключена напрямую к R1, то в сети должен быть третий маршрутизатор, назовем его R0. R0 напрямую подключен к сети 10.3.1.0/24 и подключается к R1 через какую-то другую сеть, например, 172.16.0.0/24. В этом случае настройка должна работать нормально. Я тестировал это на маршрутизаторах Cisco.

      10.0.0.0/8 is variably subnetted, 4 subnets, 4 masks
R        10.3.1.0/24 [120/1] via 172.16.0.101, 00:00:13, Ethernet0/1 (nic1)
C        10.3.1.32/27 is directly connected, Ethernet0/0 (nic0)

Возможно, Quagga — хотя и не жалуется на это — также не может обрабатывать эти перекрывающиеся диапазоны IP-адресов на обоих своих интерфейсах.

Связанный контент