Як налаштувати динамічну маршрутизацію. OSPF на Cisco IOS

Dynamic routing. Setting up OSPF in Cisco IOS

Хочете знати, для чого потрібна динамічна маршрутизація Cisco і як налаштувати OSPF у Cisco? Тоді ця стаття призначена для вас!

Давайте розглянемо наступну топологію мережі:

Dynamic routing. Setting up OSPF in Cisco IOS

Припустимо, що ми використовуємо статичну маршрутизацію в цій мережі. Потім виникає необхідність додати новий маршрутизатор (R4). Маршрутизатори "знають" тільки про мережі, які безпосередньо до них підключені. У цьому випадку ми повинні вручну додати всі маршрути до підмереж на R4 і додати маршрути до підмереж, які обслуговує R4, до інших маршрутизаторів:

Dynamic routing. Setting up OSPF in 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):

Dynamic routing. Setting up OSPF in Cisco IOS

Почнемо з налаштування роутера R1. Представляю Вашій увазі безпосередньо сам приклад налаштування.

Запустимо процес ospf:

R1(config)# router ospf 1

Остання цифра - це ідентифікатор процесу, який може відрізнятися для різних роутерів. Для зручності краще використовувати один і той самий номер.

Тепер ми вимкнемо надсилання пакетів привітання для всіх інтерфейсів. З міркувань безпеки ми будемо явно вказувати інтерфейси, які використовуються для сусідських відносин.

R1(config-router)#passive-interface default

Далі вкажемо інтерфейси, які будуть використовуватися для надсилання привітальних пакетів. Для R1 це будуть fa0/0 та fa0/1:

R1(config-router)#no passive-interface fa0/0
R1(config-router)#no passive-interface fa0/1

За допомогою команди network ми можемо зробити дві речі: вказати, які мережі ми хочемо оголосити іншим маршрутизаторам через OSPF, і які інтерфейси будуть використовуватися для надсилання hello-пакетів. Ось чому раніше ми додали певні інтерфейси для hello-пакетів. Наприклад, нам потрібно 3 мережі для маршрутизатора R1: 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 маска і останнім номер зони..

Простіше кажучи, ця команда вказує маршрутизатору, які інтерфейси використовуються для оголошення підмереж через 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.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 type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       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

Ми отримали два маршрути через OSPF від R1, який позначено літерою 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 з однією областю (область 0). Тепер наша мережа використовує OSPF для динамічної маршрутизації.

Multi Area OSPF

Коли варто розділити мережу на кілька зон? Перш за все, коли нам потрібна агрегація маршрутів. Наприклад, в нашій топології маршрутизатор R4 оголошує 4 маршрути в мережу, але всі мережі в діапазоні 172.16.1.0-172.16.1.255 належать виключно R4. Ми хочемо оголосити лише один маршрут: 172.16.1.0/24. Це особливо актуально для великих мереж з великою таблицею маршрутизації.

По-друге, враховуючи природу всіх протоколів динамічної маршрутизації, кожен маршрутизатор в OSPF знає, коли будь-який з каналів мережі виходить з ладу. Звичайно, це покращує процес вибору оптимального маршруту, але значно збільшує навантаження. Припустимо, у нас є 15 офісів у Хмельницькому та 10 у Вінниці. Маршрутизаторам у Вінниці не потрібно знати, що якийсь маршрутизатор у Хмельницькому вийшов з ладу. Поділ мережі на кілька зон допомагає вирішити цю проблему

Dynamic routing. Setting up OSPF in 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

Тепер на маршрутизаторах з областю 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 type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       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
...