У нас есть несколько машин, которые подключены как к высокоскоростной, так и к низкоскоростной сети; другие машины находятся только в низкоскоростной сети. Я изучаю возможность развертывания OSPF, чтобы каждое соединение могло автоматически выбирать самый быстрый маршрут. Однако я не хочу, чтобы машины случайно стали маршрутизаторами, поэтому я использую опцию max-metric router-lsa administrative
в /etc/quagga/ospfd.conf.
К сожалению, в дополнение к установке стоимости исходящей ссылки на ∞ в целях рекламы, она также, кажется, использует ∞ (ну, 65535) в качестве стоимости канала при вычислении стоимости маршрута на хосте. В результате вместо того, чтобы отдавать предпочтение путям, использующим высокоскоростное соединение, он обрабатывает их как пути с равной стоимостью. Если я удалю max-metric
установка, то он правильно вычисляет, что предпочтительнее высокоскоростное соединение.
Примечание: на данный момент я просто экспериментирую с виртуальными машинами и виртуальными сетями, поэтому ссылки фактически эквивалентны, и я вручную указываю затраты. Три машины подключены к одной сети с адресами 192.168.50.2-4, две подключены к другой сети с адресами 192.168.51.2-3, и каждая машина также имеет адрес обратной связи 192.168.100.x, по которому они будут обращаться к каждой. Другой. Вот мой файл /etc/quagga/ospfd.conf на одной из машин:
hostname ospf
password zebra
enable password zebra
interface eth1
ip ospf area 0
ip ospf cost 1000
ip ospf hello-interval 1
ip ospf dead-interval 5
interface eth2
ip ospf area 0
ip ospf cost 100
ip ospf hello-interval 1
ip ospf dead-interval 5
interface lo
ip ospf area 0 192.168.100.1
ip ospf cost 100
router ospf
log-adjacency-changes
passive-interface lo
max-metric router-lsa administrative
auto-cost reference-bandwidth 1000
log stdout
а вот таблица маршрутизации:
node1# show ip ospf route
============ OSPF network routing table ============
N 192.168.50.0/24 [65535] area: 0.0.0.0
directly attached to eth1
N 192.168.51.0/24 [65535] area: 0.0.0.0
directly attached to eth2
N 192.168.100.1/32 [0] area: 0.0.0.0
directly attached to lo
N 192.168.100.2/32 [65535] area: 0.0.0.0
via 192.168.50.3, eth1
via 192.168.51.3, eth2
N 192.168.100.3/32 [65535] area: 0.0.0.0
via 192.168.50.4, eth1
============ OSPF router routing table =============
Как видите, для доступа к 192.168.100.2 он стоит 65535 и будет маршрутизироваться через любой интерфейс.
Есть ли способ заставить хост использовать стоимость канала для своего собственного расчета кратчайшего пути, при этом не допуская использования хоста в качестве транзитного маршрутизатора?
Мне не удалось заставить Quagga делать то, что я хотел (также пытался с FRR, та же проблема), но я обнаружил, что Bird с OSPF v3 работает хорошо. OSPF v3 имеет встроенную функцию для тупиковых маршрутизаторов, вместо того, чтобы полагаться на бесконечную установку стоимости канала. Quagga / FRR не поддерживают RFC 5838, поэтому я не смог попробовать OSPF v3 с ними.