Немного теории

Итак, настало время поговорить о DR (Designated Router) и BDR (Backup Designated Router) в протоколе OSPF. Возьмем простенькую сеть из четырех маршрутизаторов, подключенных друг с другом через широковещательную сеть 192.168.1.0/24:

Интерфейсы роутеров, подключенных к данному сегменту сети, находятся в общем адресном пространстве 192.168.1.0/24 (последняя цифра соответствует номеру маршрутизатора).

Теперь представим, что у нас установлена full-mesh (каждый с каждым) связность по протоколу OSPF между роутерами:

Таким образом, при количестве маршрутизаторов = 4 у нас получается 6 OSPF-соседств. А если количество маршрутизаторов будет больше, то вырастет количество OSPF-связей между роутерами. Общая формула зависимости OSPF-соседств X от количества роутеров N выглядит так:

То есть, при наличии 10 роутеров в сети, у нас будет 45 OSPF-соседств. Что даст ощутимую нагрузку на процессоры и на сеть в целом в момент установления соседства или пересчета топологии. Например, на R1 у нас появилась еще одна сеть 10.0.255.0/24, которую необходимо проанонсировать своим соседям:

R1 сгенерирует LSA1, упакует его в Link-State Update пакет и разошлет его всем своим OSPF-соседям, указав в качестве IP-адреса назначения мультикастовый адрес OSPF-роутеров 224.0.0.5:

После получения LSA маршрутизаторы

  • отправляют в ответ Link-State Acknowledgment
  • пересылают Link-State Update другим своим OSPF-соседям в пределах области
  • запускает пересчет топологии сети с целью поиска кратчайшего маршрута

В случае с большим количеством роутеров или появлением большого количества анонсов в сети есть шанс подгрузить сеть и процессоры маршрутизаторов, что несколько негативно скажется на работоспособности сетевого сегмента.

Данную проблему можно решить при помощи добавления в сеть Designated Router (DR) и Backup Designated Router (BDR). Смысл данных ролей в том, что выделенные роутеры аккумулируют на себе все соединения и являются ведущими маршрутизаторами в данном сетевом сегменте. Маршрутизаторы устанавливают full ospf-соседства с DR и BDR, а с остальными — 2WAY.

На примере рассматриваемой сети, пусть R1 будет DR, а R2 — BDR:

На вышеуказанном примере между R3 и R4 будет установлено 2WAY-соседство, остальные связи будут в состоянии FULL. Даже в случае из 4 роутеров видно, что количество связей между роутерами меньше, чем в full-mesh топологии. В общем же случае, при присутствии DR и BDR в сегменте сети количество OSPF-соседств X определяется по формуле:

Рассмотрим случай, когда на R3 появилась новая сеть и ее нужно проанонсировать в данный участок сети:

В данном примере R3 сгенерирует LSA1, который упакует в Link-State Update пакет и отправит на мультикастовый адрес 224.0.0.6 (данный пакет получат только DR и BDR):

Получив Update, BDR просто обработает его и отправит Link-State Acknowledgment в сторону R3 (на адрес 224.0.0.5), подтверждающий получение обновления

DR выполняет следующие действия:

  • отправляет Link-State Acknowledgment в сторону R3 на адрес 224.0.0.5
  • перенаправляет данный Link-State Update в в широковещательный сегмент сети, указав в качестве адреса назначения IP 224.0.0.5

В данном случае отправленный пакет будет обработан только R4, поскольку R3 был инициатором обновления, а R2 получил данный Update ранее.

После получения обновления R4 отправляет Link-State Acknowledgment на адрес 224.0.0.6 (для DR и BDR), тем самым подтверждая получение пакета.

Ниже представлена сравнительная таблица, в которой отражено количество OSFP-соседств для FULL-MESH топологии и при выборе DR и BDR роутеров:

Как видно, при росте количество маршрутизаторов в сети резко возрастает количество связей между роутерами и потенциальная нагрузка на сеть в случае full-mesh топологии.

С ролью DR разобрались, теперь о BDR — он пассивно «слушает» изменения на сети и, в случае выхода из строя Designated Router’а, оперативно принимает его роль на себя и сам становится DR. После этого оставшиеся роутеры принимают решение о том, кто же будет BDR.

Выборы DR/BDR делаются по следующему принципу (в порядке убывания значимости):

  1. DR становится роутер с наивысшим приоритетом (число от 0 до 255)
  2. Если приоритеты равны, DR становится роутер с бОльшим значением Router-ID
  3. Роутер со вторым по старшинству значением приоритета или Router-ID становится BDR.

У маршрутизаторов Cisco и Huawei по-умолчанию значение приоритета интерфейса равно единице, у Juniper равно 128. Если приоритет равен нулю, то данный роутер не участвует в выборах DR и BDR, и, соответственно, никогда не может стать одним из них. Значение приоритета настраивается на самом интерфейсе, то есть он может отличаться для различных сегментов сети.

Немного практики

Перейдем к практике. Возьмем топологию, которую мы рассматривали ранее. Из вендоров у нас будет 2 роутера Cisco и 2 Juniper:

На роутерах настроена IP-адресация, Router-ID и базовый OSPF. То есть, зная, что дефолтные значения приоритета у маршрутизаторов Juniper равны 128, а Cisco = 1, можно предположить, что DR и BDR роли заберут себе именно vMX. А поскольку у обоих роутеров одинаковые приоритеты, DR будет именно тот, у которого больше Router-ID, в данном случае это R4 (10.0.0.4 > 10.0.0.3). Проверим догадку на практике. Посмотрим OSPF-соседей на R1 и R2:

R1#sh ip ospf neighbor 

Neighbor ID     Pri   State           Dead Time   Address         Interface
10.0.0.2          1   2WAY/DROTHER    00:00:30    192.168.1.2     Ethernet0/0
10.0.0.3        128   FULL/BDR        00:00:39    192.168.1.3     Ethernet0/0
10.0.0.4        128   FULL/DR         00:00:36    192.168.1.4     Ethernet0/0
R2#sh ip ospf neighbor 

Neighbor ID     Pri   State           Dead Time   Address         Interface
10.0.0.1          1   2WAY/DROTHER    00:00:33    192.168.1.1     Ethernet0/0
10.0.0.3        128   FULL/BDR        00:00:34    192.168.1.3     Ethernet0/0
10.0.0.4        128   FULL/DR         00:00:33    192.168.1.4     Ethernet0/0

Как видно выше, у Cisco приоритет соседа и его роль можно увидеть прям из вывода команды show ip ospf neighbor (столбцы Pri и State). Как и ожидалось, роль DR взял на себя R4, а BDR — R3. Между R1 и R2 установилось отношение 2WAY.

Глянем Juniper:

root@vMX-3> show ospf neighbor 
Address          Interface              State     ID               Pri  Dead
192.168.1.4      ge-0/0/3.0             Full      10.0.0.4         128    35
192.168.1.1      ge-0/0/3.0             Full      10.0.0.1           1    36
192.168.1.2      ge-0/0/3.0             Full      10.0.0.2           1    32
root@vMX-4> show ospf neighbor     
Address          Interface              State     ID               Pri  Dead
192.168.1.1      ge-0/0/3.0             Full      10.0.0.1           1    34
192.168.1.2      ge-0/0/3.0             Full      10.0.0.2           1    39
192.168.1.3      ge-0/0/3.0             Full      10.0.0.3         128    34

Здесь же видно, что в столбце Pri указан приоритет, но вот роль узла не до конца ясна. Увидеть ее можно с помощью команды show ospf interface или show ospf interface detail

root@vMX-4> show ospf interface 
Interface           State   Area            DR ID           BDR ID          Nbrs
ge-0/0/3.0          DR      0.0.0.0         10.0.0.4        10.0.0.3           3
lo0.0               DRother 0.0.0.0         0.0.0.0         0.0.0.0            0

Из вывода ясно, что интерфейс vMX-4 ge-0/0/3.0 является DR, здесь же видно, что DR является роутер 10.0.0.4, а BDR — 10.0.0.3

Глянем более детальный вывод интерфейса ge-0/0/3.0:

root@vMX-3> show ospf interface ge-0/0/3.0 detail 
 Interface           State   Area            DR ID           BDR ID          Nbrs
 ge-0/0/3.0          BDR     0.0.0.0         10.0.0.4        10.0.0.3           3
   Type: LAN, Address: 192.168.1.3, Mask: 255.255.255.0, MTU: 1500, Cost: 1
   DR addr: 192.168.1.4, BDR addr: 192.168.1.3, Priority: 128
   Adj count: 3
   Hello: 10, Dead: 40, ReXmit: 5, Not Stub
   Auth type: None
   Protection type: None
   Topology default (ID 0) -> Cost: 1

Здесь можно увидеть значение приоритета, выставленного на интерфейсе: 128. Помимо прочего, здесь можно увидеть значения таймеров, MTU и IP-адресацию и прочее.

На Cisco также можно увидеть более детальную информацию по OSPF-интерфейсам. Делается это с помощью команд show ip ospf interface brief или show ip ospf interface

R1#show ip ospf interface brief 
Interface    PID   Area            IP Address/Mask    Cost  State Nbrs F/C
Lo0          1     0               10.0.0.1/32        1     LOOP  0/0
Et0/0        1     0               192.168.1.1/24     10    DROTH 2/3
R1#sh ip ospf interface e0/0
Ethernet0/0 is up, line protocol is up 
  Internet Address 192.168.1.1/24, Area 0, Attached via Interface Enable
  Process ID 1, Router ID 10.0.0.1, Network Type BROADCAST, Cost: 10
  Topology-MTID    Cost    Disabled    Shutdown      Topology Name
        0           10        no          no            Base
  Enabled by interface config, including secondary ip addresses
  Transmit Delay is 1 sec, State DROTHER, Priority 1
  Designated Router (ID) 10.0.0.4, Interface address 192.168.1.4
  Backup Designated router (ID) 10.0.0.3, Interface address 192.168.1.3
  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
    oob-resync timeout 40
    Hello due in 00:00:05
  Supports Link-local Signaling (LLS)
  Cisco NSF helper support enabled
  IETF NSF helper support enabled
  Index 2/2, flood queue length 0
  Next 0x0(0)/0x0(0)
  Last flood scan length is 0, maximum is 1
  Last flood scan time is 0 msec, maximum is 0 msec
  Neighbor Count is 3, Adjacent neighbor count is 2 
    Adjacent with neighbor 10.0.0.3  (Backup Designated Router)
    Adjacent with neighbor 10.0.0.4  (Designated Router)
  Suppress hello for 0 neighbor(s)

Теперь попробуем выставить значения приоритетов в соответствии с теми, что указаны в топологии: R1 — 0, R2 — 200, vMX-4 — 196.

На Cisco приоритеты настраиваются в режиме конфигурации интерфейса:

R1:

R1(config)#int e0/0
R1(config-if)#ip ospf priority 0
R1(config-if)#end

R2:

R2(config)#int e0/0
R2(config-if)#ip ospf priority 200
R2(config-if)#end

На Juniper приоритет выставляется также в настройках интерфейса, но в контексте OSPF:

vMX4:

root@vMX-4> configure 
Entering configuration mode

[edit]
root@vMX-4# edit protocols ospf area 0 interface ge-0/0/3.0 

[edit protocols ospf area 0.0.0.0 interface ge-0/0/3.0]
root@vMX-4# set priority 196 

[edit protocols ospf area 0.0.0.0 interface ge-0/0/3.0]
root@vMX-4# commit and-quit 
commit complete

Проверим OSPF после внесения правок:

R1:

R1#sh ip ospf neighbor 

Neighbor ID     Pri   State           Dead Time   Address         Interface
10.0.0.2        200   2WAY/DROTHER    00:00:33    192.168.1.2     Ethernet0/0
10.0.0.3        128   FULL/BDR        00:00:34    192.168.1.3     Ethernet0/0
10.0.0.4        196   FULL/DR         00:00:34    192.168.1.4     Ethernet0/0
R1#show ip ospf interface e0/0
Ethernet0/0 is up, line protocol is up 
  Internet Address 192.168.1.1/24, Area 0, Attached via Interface Enable
  Process ID 1, Router ID 10.0.0.1, Network Type BROADCAST, Cost: 10
  Topology-MTID    Cost    Disabled    Shutdown      Topology Name
        0           10        no          no            Base
  Enabled by interface config, including secondary ip addresses
  Transmit Delay is 1 sec, State DROTHER, Priority 0
  Designated Router (ID) 10.0.0.4, Interface address 192.168.1.4
  Backup Designated router (ID) 10.0.0.3, Interface address 192.168.1.3
  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
    oob-resync timeout 40
    Hello due in 00:00:04
  Supports Link-local Signaling (LLS)
  Cisco NSF helper support enabled
  IETF NSF helper support enabled
  Index 2/2, flood queue length 0
  Next 0x0(0)/0x0(0)
  Last flood scan length is 0, maximum is 1
  Last flood scan time is 0 msec, maximum is 0 msec
  Neighbor Count is 3, Adjacent neighbor count is 2 
    Adjacent with neighbor 10.0.0.3  (Backup Designated Router)
    Adjacent with neighbor 10.0.0.4  (Designated Router)
  Suppress hello for 0 neighbor(s)

Из выводов R1 видно, что значения приоритетов поменялись, но вот DR и BDR остались прежними.

Проверим vMX-4:

root@vMX-4> show ospf neighbor 
Address          Interface              State     ID               Pri  Dead
192.168.1.1      ge-0/0/3.0             Full      10.0.0.1           0    33
192.168.1.2      ge-0/0/3.0             Full      10.0.0.2         200    33
192.168.1.3      ge-0/0/3.0             Full      10.0.0.3         128    39

root@vMX-4> show ospf interface ge-0/0/3.0 detail 
Interface           State   Area            DR ID           BDR ID          Nbrs
ge-0/0/3.0          DR      0.0.0.0         10.0.0.4        10.0.0.3           3
  Type: LAN, Address: 192.168.1.4, Mask: 255.255.255.0, MTU: 1500, Cost: 1
  DR addr: 192.168.1.4, BDR addr: 192.168.1.3, Priority: 196
  Adj count: 3
  Hello: 10, Dead: 40, ReXmit: 5, Not Stub
  Auth type: None
  Protection type: None
  Topology default (ID 0) -> Cost: 1

Абсолютно аналогичная ситуация: приоритеты изменились, но вот роли маршрутизаторов остались прежними. Это связано с тем, что на момент смены приоритетов DR и BDR уже были выбраны. Для обновления ролей необходимо заново инициировать выборы. Можно либо спросить OSPF-процессы на маршрутизаторах, или же просто разорвать связности.

На Cisco OSPF можно сбросить с помощью команды clear ip ospf process, на Juniper — clear ospf neighbor interface ge-0/0/3.0

Проверим OSPF-соседства после сброса OSPF:

R2:

R2#sh ip ospf neighbor 

Neighbor ID     Pri   State           Dead Time   Address         Interface
10.0.0.1          0   FULL/DROTHER    00:00:36    192.168.1.1     Ethernet0/0
10.0.0.3        128   FULL/DROTHER    00:00:38    192.168.1.3     Ethernet0/0
10.0.0.4        196   FULL/BDR        00:00:34    192.168.1.4     Ethernet0/0
R2#sh ip ospf interface e0/0
Ethernet0/0 is up, line protocol is up 
  Internet Address 192.168.1.2/24, Area 0, Attached via Interface Enable
  Process ID 1, Router ID 10.0.0.2, Network Type BROADCAST, Cost: 10
  Topology-MTID    Cost    Disabled    Shutdown      Topology Name
        0           10        no          no            Base
  Enabled by interface config, including secondary ip addresses
  Transmit Delay is 1 sec, State DR, Priority 200
  Designated Router (ID) 10.0.0.2, Interface address 192.168.1.2
  Backup Designated router (ID) 10.0.0.4, Interface address 192.168.1.4
  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
    oob-resync timeout 40
    Hello due in 00:00:06
  Supports Link-local Signaling (LLS)
  Cisco NSF helper support enabled
  IETF NSF helper support enabled
  Index 2/2, flood queue length 0
  Next 0x0(0)/0x0(0)
  Last flood scan length is 0, maximum is 1
  Last flood scan time is 0 msec, maximum is 0 msec
  Neighbor Count is 3, Adjacent neighbor count is 3 
    Adjacent with neighbor 10.0.0.1
    Adjacent with neighbor 10.0.0.3
    Adjacent with neighbor 10.0.0.4  (Backup Designated Router)
  Suppress hello for 0 neighbor(s)

vMX-3:

root@vMX-3> show ospf neighbor 
Address          Interface              State     ID               Pri  Dead
192.168.1.4      ge-0/0/3.0             Full      10.0.0.4         196    34
192.168.1.1      ge-0/0/3.0             2Way      10.0.0.1           0    30
192.168.1.2      ge-0/0/3.0             Full      10.0.0.2         200    32
root@vMX-3> show ospf interface ge-0/0/3.0 detail 
Interface           State   Area            DR ID           BDR ID          Nbrs
ge-0/0/3.0          DRother 0.0.0.0         10.0.0.2        10.0.0.4           3
  Type: LAN, Address: 192.168.1.3, Mask: 255.255.255.0, MTU: 1500, Cost: 1
  DR addr: 192.168.1.2, BDR addr: 192.168.1.4, Priority: 128
  Adj count: 2
  Hello: 10, Dead: 40, ReXmit: 5, Not Stub
  Auth type: None
  Protection type: None
  Topology default (ID 0) -> Cost: 1

Вот теперь видно, что произошли перевыборы и на данный момент R2 является DR, а R4 — BDR.

В завершении давайте потушим интерфейс e0/0 на R2 и посмотрим, кто займет роль BDR:

R2(config)#int e0/0
R2(config-if)#shutdown 
*Apr 27 18:05:01.464: %OSPF-5-ADJCHG: Process 1, Nbr 10.0.0.1 on Ethernet0/0 from FULL to DOWN, Neighbor Down: Interface down or detached
*Apr 27 18:05:01.464: %OSPF-5-ADJCHG: Process 1, Nbr 10.0.0.3 on Ethernet0/0 from FULL to DOWN, Neighbor Down: Interface down or detached
*Apr 27 18:05:01.464: %OSPF-5-ADJCHG: Process 1, Nbr 10.0.0.4 on Ethernet0/0 from FULL to DOWN, Neighbor Down: Interface down or detached
R2(config-if)#
*Apr 27 18:05:03.463: %LINK-5-CHANGED: Interface Ethernet0/0, changed state to administratively down
*Apr 27 18:05:04.471: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/0, changed state to down
R2(config-if)#

R1:

R1#show ip ospf neighbor 

Neighbor ID     Pri   State           Dead Time   Address         Interface
10.0.0.3        128   FULL/BDR        00:00:33    192.168.1.3     Ethernet0/0
10.0.0.4        196   FULL/DR         00:00:39    192.168.1.4     Ethernet0/0

Из вывода R1 видно, что связь с R2 полностью прервалась, R4 стал DR, а R3 взял на себя роль BDR.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.