Динамическая маршрутизация. Настройка OSPF на Cisco IOS

Хотите узнать, для чего нужна динамическая маршрутизация cisco, как настроить OSPF на Cisco? Погрузитесь в эту статью!

Давайте рассмотрим следующую топологию сети:

Динамическая маршрутизация. Настройка OSPF на Cisco IOS

Допустим, в этой сети мы используем статическую маршрутизацию, и появилась необходимость добавить новый роутер (R4). Роутеры «знают» только про подключенные к ним сети напрямую (directly connected). В таком случае нам придется вручную добавить все маршруты к подсетям на R4, а на остальных роутерах добавить маршруты к подсетям, которые обслуживает R4:

Динамическая маршрутизация. Настройка OSPF на Cisco IOS

С ростом сети это становится достаточно трудоемкой задачей. Протоколы динамической маршрутизации позволяют обмениваться маршрутами автоматически, упрощая обслуживание сети. Также динамические протоколы маршрутизации сами определяют оптимальный маршрут для отправки пакетов (мы можем влиять на это в случае необходимости) и выбирать альтернативный маршрут в случае падения какого-то канала.

Например, 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:

Динамическая маршрутизация. Настройка OSPF на Cisco IOS

Начнем с настройки роутера 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 в Виннице — роутерам в Виннице совершенно не обязательно знать о том, что какой-то роутер в Хмельницком упал. Разделение сети на разные зоны решает данный вопрос.

Динамическая маршрутизация. Настройка OSPF на Cisco IOS

Для начала уберем анонс подсетей с 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
...