Хотите узнать, для чего нужна динамическая маршрутизация cisco, как настроить OSPF на Cisco? Погрузитесь в эту статью!
Давайте рассмотрим следующую топологию сети:
Допустим, в этой сети мы используем статическую маршрутизацию, и появилась необходимость добавить новый роутер (R4). Роутеры «знают» только про подключенные к ним сети напрямую (directly connected). В таком случае нам придется вручную добавить все маршруты к подсетям на R4, а на остальных роутерах добавить маршруты к подсетям, которые обслуживает R4:
С ростом сети это становится достаточно трудоемкой задачей. Протоколы динамической маршрутизации позволяют обмениваться маршрутами автоматически, упрощая обслуживание сети. Также динамические протоколы маршрутизации сами определяют оптимальный маршрут для отправки пакетов (мы можем влиять на это в случае необходимости) и выбирать альтернативный маршрут в случае падения какого-то канала.
Например, R3 может связаться с R1 через несколько маршрутов: через 10.5.0.4/30, через 10.5.0.8/30 -> 10.5.0.0/30 и 10.5.0.16/30 -> 10.5.0.12/30 -> 10.5.0.0/30. При использовании OSPF роутеры будут постоянно обмениваться информацией про известные маршруты и состояние соединений. В случае падения прямого канала между R1 и R3 трафик пойдет через роутер R2.
Настройка OSPF
Вот так будет выглядеть топология нашей сети с добавленным новым роутером R4:
Начнем с настройки роутера R1. Представляю Ваше вниманию непосредственно сам пример настройки.
Запустим процесс ospf:
R1(config)# router ospf 1
Последнее число — это PID процесса, может отличаться на разных роутерах, но исключительно для удобства лучше задавать одно и тоже число.
Теперь отключим отправку hello пакетов на всех интерфейсах. Из соображений безопасности мы будем явно задавать интерфейсы, на которых будут устанавливаться neighbour отношения.
R1(config-router)#passive-interface default
Теперь укажем интерфейсы, на которых мы будем отправлять hello пакеты. Для R1 это fa0/0 и fa0/1:
R1(config-router)#no passive-interface fa0/0 R1(config-router)#no passive-interface fa0/1
С помощью команды network мы можем сделать 2 вещи — сообщить, какие сети мы хотим анонсировать по OSPF другим роутерам и на каких интерфейсах мы будем отправлять hello пакеты. Именно поэтому ранее мы указали конкретные интерфейсы для hello пакетов. К примеру, на роутере R1 нам нужны 3 сети: 10.5.0.0/30, 10.5.0.4/30 и 172.16.0.0/26. Но в последней сети будут исключительно пользовательские устройства и нам бы совсем не хотелось, чтобы кто-то имел возможность с нее влиять на таблицы маршрутизации роутеров.
Формат команды network:
network 0.0.0.0 255.255.255.255 area 0
Первым параметром идет номер сети, вторым — wildcart маска и последним номер зоны.
Проще говоря, это команда сообщает роутеру, c каких интерфейсов будут анонсироваться подсети по OSPF. В примере выше мы разрешили анонсировать любые подсети, с любых интерфейсов. Данный способ, конечно, упрощает настройку, но не рекомендован Cisco. Потому что любой интерфейс, который вы настроили на роутере, сразу уйдет в таблицы маршрутизации других роутеров. Cisco рекомендует подключать каждую сеть отдельно, для нашей конфигурации сети на R1 это будет выглядеть так:
R1(config-router)#network 10.5.0.1 0.0.0.0 area 0 R1(config-router)#network 10.5.0.5 0.0.0.0 area 0 R1(config-router)#network 172.16.0.1 0.0.0.0 area 0
Для понимания синтаксиса приведу пример, который позволит анонсировать обе служебные сети(10.5.0.0/30 и 10.5.0.4/30):
R1(config-router)#network 10.5.0.0 0.0.0.255 area 0
Дословно это означает: «анонсировать подсети с интерфейсов, которые начинаются на 10.5.0»
Теперь настроим R2:
router ospf 1 passive-interface default no passive-interface FastEthernet0/0 no passive-interface FastEthernet0/1 no passive-interface Vlan30 network 10.5.0.2 0.0.0.0 area 0 network 10.5.0.9 0.0.0.0 area 0 network 10.5.0.13 0.0.0.0 area 0 network 172.16.0.129 0.0.0.0 area 0
После этого мы получим уведомление:
*Mar 1 00:05:29.875: %OSPF-5-ADJCHG: Process 1, Nbr 172.16.0.1 on FastEthernet0/0 from LOADING to FULL, Loading Done
Это означает, что R1 и R2 установили neighbour отношения и обменялись информацией о известных маршрутах. Теперь на R2 должен быть один «сосед»:
R2#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 172.16.0.1 1 FULL/DR 00:00:35 10.5.0.1 FastEthernet0/0
Посмотрим таблицу маршрутизации на R2:
R2#show ip route Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type1, N2 - OSPF NSSA external type2 E1 - OSPF external type1, E2 - OSPF external type2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route Gateway of last resort is not set 172.16.0.0/26 is subnetted, 2 subnets C 172.16.0.128 is directly connected, Vlan20 O 172.16.0.0 [110/11] via 10.5.0.1, 00:06:39, FastEthernet0/0 10.0.0.0/30 is subnetted, 3 subnets C 10.5.0.8 is directly connected, Vlan30 O 10.5.0.4 [110/20] via 10.5.0.1, 00:06:39, FastEthernet0/0 C 10.5.0.0 is directly connected, FastEthernet0/0
От R1 мы получили 2 маршрута по OSPF, о чем и говорит буква O в начале записи о маршруте.
Конфигурация R3:
router ospf 1 passive-interface default no passive-interface FastEthernet0/0 no passive-interface FastEthernet0/1 no passive-interface Vlan20 network 10.5.0.6 0.0.0.0 area 0 network 10.5.0.10 0.0.0.0 area 0 network 10.5.0.17 0.0.0.0 area 0 network 172.16.0.65 0.0.0.0 area 0
И для R4:
router ospf 1 passive-interface default no passive-interface FastEthernet0/0 no passive-interface FastEthernet0/1 network 10.5.0.14 0.0.0.0 area 0 network 10.5.0.18 0.0.0.0 area 0 network 172.16.1.1 0.0.0.0 area 0 network 172.16.1.65 0.0.0.0 area 0 network 172.16.1.129 0.0.0.0 area 0 network 172.16.1.193 0.0.0.0 area 0
Теперь наша таблица маршрутизации выглядит так:
R1#show ip route ... 172.16.0.0/26 is subnetted, 6 subnets O 172.16.1.128 [110/21] via 10.5.0.6, 00:11:05, FastEthernet0/1[110/21] via 10.5.0.2, 00:11:05, FastEthernet0/0 O 172.16.1.192 [110/21] via 10.5.0.6, 00:11:05, FastEthernet0/1[110/21] via 10.5.0.2, 00:11:05, FastEthernet0/0 C 172.16.0.0 is directly connected, Vlan10 O 172.16.1.0 [110/21] via 10.5.0.6, 00:11:05, FastEthernet0/1[110/21] via 10.5.0.2, 00:11:05, FastEthernet0/0 O 172.16.0.64 [110/11] via 10.5.0.6, 00:11:07, FastEthernet0/1 O 172.16.1.64 [110/21] via 10.5.0.6, 00:11:07, FastEthernet0/1[110/21] via 10.5.0.2, 00:11:07, FastEthernet0/0 10.0.0.0/30 is subnetted, 5 subnets O 10.5.0.12 [110/20] via 10.5.0.2, 00:11:07, FastEthernet0/0 O 10.5.0.8 [110/11] via 10.5.0.6, 00:11:08, FastEthernet0/1[110/11] via 10.5.0.2, 00:11:08, FastEthernet0/0 C 10.5.0.4 is directly connected, FastEthernet0/1 C 10.5.0.0 is directly connected, FastEthernet0/0 O 10.5.0.16 [110/20] via 10.5.0.6, 00:11:11, FastEthernet0/1
Теперь можно попробовать сымитировать падения аплинка. Проведем трассировку маршрута с роутера R3 к клиентскому ПК с IP 172.16.0.2:
R3#traceroute 172.16.0.2 Type escape sequence to abort. Tracing the route to 172.16.0.2 1 10.5.0.5 16 msec 16 msec 16 msec 2 172.16.0.2 24 msec 36 msec 44 msec
Из трассировки видно, что трафик пойдет напрямую к R1. Отключим интерфейс на R1, к которому подключен R3:
R1#conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)#interface fa0/1 R1(config-if)#shutdown R1(config-if)#end
R3 заметил падение канала с R1:
*Mar 1 03:32:41.567: %OSPF-5-ADJCHG: Process 1, Nbr 172.16.0.1 on FastEthernet0/0 from FULL to DOWN, Neighbor Down: Dead timer expired
Теперь трафик пойдет через альтернативный канал (R3 -> R2 — R1):
R3#traceroute 172.16.0.2 Type escape sequence to abort. Tracing the route to 172.16.0.2 1 10.5.0.9 16 msec 16 msec 16 msec 2 10.5.0.1 40 msec 32 msec 40 msec 3 172.16.0.2 44 msec 48 msec 68 msec
На этом настройка OSPF с одной зоной (area 0) закончена. Теперь наша сеть использует OSPF для динамической маршрутизации.
Multi Area OSPF
Для чего нам может понадобиться разделить нашу сеть на несколько зон? В первую очередь, для агрегации маршрутов. Например, в нашей топологии роутер R4 анонсирует в сеть 4 маршрута, но все сети из диапазона 172.16.1.0-172.16.1.255 будут принадлежать исключительно ему, и мы хотим анонсировать один маршрут — 172.16.1.0/24. Это особенно актуально в больших сетях с большой таблицей маршрутизации. Так же, в силу специфики всех link-state протоколов динамической маршрутизации, в OSPF каждый роутер узнает о падении любого канала в сети. Это, конечно, повышает качество выбора оптимального маршрута, но и заметно повышает нагрузку. Допустим, у нас есть 15 офисов в Хмельницком и 10 в Виннице — роутерам в Виннице совершенно не обязательно знать о том, что какой-то роутер в Хмельницком упал. Разделение сети на разные зоны решает данный вопрос.
Для начала уберем анонс подсетей с R4:
router ospf 1 no network 172.16.1.1 0.0.0.0 area 0 no network 172.16.1.65 0.0.0.0 area 0 no network 172.16.1.129 0.0.0.0 area 0 no network 172.16.1.193 0.0.0.0 area 0
И добавим их с area 1:
router ospf 1 network 172.16.1.1 0.0.0.0 area 1 network 172.16.1.65 0.0.0.0 area 1 network 172.16.1.129 0.0.0.0 area 1 network 172.16.1.193 0.0.0.0 area 1
И объявим диапазон для зоны:
R4(config-router)#area 1 range 172.16.1.0 255.255.255.0
Теперь на роутерах с area 0 появился только один маршрут:
R1#show ip route Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type1, N2 - OSPF NSSA external type2 E1 - OSPF external type1, E2 - OSPF external type2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route ... O IA 172.16.1.0/24[110/21] via 10.5.0.6, 00:00:30, FastEthernet0/1[110/21] via 10.5.0.2, 00:00:30, FastEthernet0/0 ...