OSPF DR/BDR

При роботі OSPF в широкомовної середовищі, якою є Ethernet, вибирається DR/BDR. Давайте розберемося як відбуваються вибори DR/BDR.

Припустимо, що у нас є широкомовний сегмент складається з 10 маршрутизаторів. Кожен маршрутизатор повинен буде встановити сусідство з усіма іншими. Кількість необхідних соседств розраховується за формулою n(n-1)/2, і для 10 вузлів одно 45. Кількість сесій при збільшенні кількості вузлів зростає в геометричній прогресії. У межах кожної сесії довелося б посилати пакети hello і повторити кожне LSA, що призвело б до значного збільшення флуду сигнальних повідомлень протоколу OSPF. Тому була придумана концепція DR/BDR (або DIS в ISIS).

В широкомовному сегменті вибираються два маршрутизатора — DR і BDR. Всі інші маршрутизатори будують відносини сусідства тільки з ними, що зменшує кількість встановлених сесій, розсилаються LSA і hello пакетів. При 10 вузлах у нас вийде замість 45 сесій тільки 20.

DR (Designated Router) призначається маршрутизатор з найвищим пріоритетом. Якщо пріоритети рівні, то вибирається маршрутизатор з найвищим router-id.

BDR (Backup Designated Router) — резервний DR. Їм призначається маршрутизатор з найвищим пріоритетом або router-id залишилися в широкомовному сегменті маршрутизаторів після вибору DR.

Всі інші маршрутизатори переходять у стан DRother і встановлюють відносини сусідство в стані Full тільки з DR і BDR. (між DR та BDR теж встановлюють сусідство в стані Full). У разі будь-яких змін в мережі, маршрутизатор, який зареєстрував ці зміни, надсилає анонси не всім маршрутизаторам, а тільки DR на мультикастный адреса 224.0.0.6, тим самим скорочується кількість інформації, переданої по мережі. А ось DR вже інформує всіх інших про ці зміни, розсилаючи Network LSA.

У разі виходу з ладу DR, його роль бере на себе BDR. Після цього ініціюються вибори нового BDR.

Примітка: варто враховувати, що при використанні в мережі маршрутизаторів різних вендорів, пріоритети необхідно призначати вручну, так як наприклад в Cisco дефолтний пріоритет дорівнює 1, а у Juniper — 128.

Примітка: router-id завжди будуть відрізнятися, в одному OSPF домені не допустимо наявність двох маршрутизаторів з однаковими router-id.

Тепер перевіримо як це працює.
Розглянемо найпростішу схему:

Поглянувши на неї ми відразу бачимо що пріоритет у всіх однаковий, і означає вибір DR/BDR буде проводиться за router-id. Відповідно в даній схемі DR стає Router4, так як володіє найбільшим router-id, а роль BDR бере на себе Router3, що можна легко перевірити. На Router1 дві сесії в стані Full — одна з DR, інша з BDR. Відповідно сусідство з Router2 в стані 2Way.
router1> show interface ospf
Interface State Area DR ID BDR ID Nbrs
ge-0/0/0.0 DRother 0.0.0.0 10.1.1.4 10.1.1.3 3
lo0.0 DR 0.0.0.0 10.1.1.1 0.0.0.0 0

router1> show ospf neighbor
Address Interface State ID Pri Dead
10.0.0.3 ge-0/0/0.0 Full 10.1.1.3 128 33
10.0.0.2 ge-0/0/0.0 2Way 10.1.1.2 128 32
10.0.0.4 ge-0/0/0.0 Full 10.1.1.4 128 34

Router3 (BDR) і Router4 (DR) підтримують сусідство з усіма іншими роутерами в широкомовному сегменті (включаючи і друга) в стані Full:
Router3:
router3> show interface ospf
Interface State Area DR ID BDR ID Nbrs
ge-0/0/0.0 BDR 0.0.0.0 10.1.1.4 10.1.1.3 3
lo0.0 DR 0.0.0.0 10.1.1.3 0.0.0.0 0

router3> show ospf neighbor
Address Interface State ID Pri Dead
10.0.0.1 ge-0/0/0.0 Full 10.1.1.1 128 32
10.0.0.2 ge-0/0/0.0 Full 10.1.1.2 128 32
10.0.0.4 ge-0/0/0.0 Full 10.1.1.4 128 32

Router4:
router4> show interface ospf
Interface State Area DR ID BDR ID Nbrs
ge-0/0/0.0 DR 0.0.0.0 10.1.1.4 10.1.1.3 3
lo0.0 DR 0.0.0.0 10.1.1.4 0.0.0.0 0

router4> show ospf neighbor
Address Interface State ID Pri Dead
10.0.0.1 ge-0/0/0.0 Full 10.1.1.1 128 31
10.0.0.2 ge-0/0/0.0 Full 10.1.1.2 128 31
10.0.0.3 ge-0/0/0.0 Full 10.1.1.3 128 32

Тепер змінимо пріоритет на Router4, зробивши його рівним 1:
router4# set protocols ospf area 0 interface ge-0/0/0.0 priority 1

Як видно з висновку, Router4 залишився DR.
router4> show interface ospf
Interface State Area DR ID BDR ID Nbrs
ge-0/0/0.0 DR 0.0.0.0 10.1.1.4 10.1.1.3 3
lo0.0 DR 0.0.0.0 10.1.1.4 0.0.0.0 0

Маршрутизатор не перестане бути DR навіть якщо в мережі з'явиться більш пріоритетний марушрутизатор, поки з DR що-небудь не станеться (зупинка route демона, падіння інтерфейсу і т д), або поки адміністратор не зробить clear ospf процесу або сусідства (що ми і зробимо):
router4> clear ospf neighbor

І подивимося на результат.
router4> show interface ospf
Interface State Area DR ID BDR ID Nbrs
ge-0/0/0.0 DRother 0.0.0.0 10.1.1.3 10.1.1.2 3
lo0.0 DR 0.0.0.0 10.1.1.4 0.0.0.0 0

Тепер у нас DR Router3 і BDR Router2. А Router4 в стані DRother.

Примітка: Дуже важливим є те, що новим DR може стати тільки BDR. навіть якщо в мережі будуть нові маршрутизатори з найбільшим пріоритетом або router-id. Тобто, що б знову включеному в мережу маршрутизатора стати DR, необхідно, що б стали неактивними і чинний DR і BDR (разом або по черзі).

Зараз ми розібрали стандартну ситуацію.
Давайте тепер розглянемо таку схему:

Якщо ми просто включимо всі маршрутизатори одночасно, то DR буде Router4, а BDR — Router3 (відповідно до пріоритетів і router-id). Але що буде, якщо включати маршрутизатори з затримкою в одну хвилин, як це показано на схемі.
Router1 включився і став розсилати hello пакети. У цей момент його інтерфейс в стані Waiting:
router1> show interface ospf
Interface State Area DR ID BDR ID Nbrs
ge-0/0/0.0 Waiting 0.0.0.0 0.0.0.0 0.0.0.0 0
lo0.0 Waiting 0.0.0.0 0.0.0.0 0.0.0.0 0

Так як в даній момент інших маршрутизаторів в мережі немає, то router1 на пакети hello не отримує відповідей. У підсумку, після закінчення таймера, він призначає себе DR:
router1> show interface ospf
Interface State Area DR ID BDR ID Nbrs
ge-0/0/0.0 DR 0.0.0.0 10.1.1.1 0.0.0.0 0
lo0.0 DR 0.0.0.0 10.1.1.1 0.0.0.0 0

Тепер в мережі з'являється ще одні маршрутизатор, і так як DR вже вибраний (що буде відображено в Hello повідомленні від Router1), Router2 не претендує на цю роль, хоча його router-id вище:
router2> show interface ospf
Interface State Area DR ID BDR ID Nbrs
ge-0/0/0.0 BDR 0.0.0.0 10.1.1.1 10.1.1.2 1
lo0.0 DR 0.0.0.0 10.1.1.2 0.0.0.0 0

Тепер, коли в мережу включаться ще два маршрутизатора Router3 і Router4, вони не стануть ні DR ні BDR, хоча мають і більший пріоритет і більший router-id. Ось приміром висновок з Router4:
router4> show interface ospf
Interface State Area DR ID BDR ID Nbrs
ge-0/0/0.0 DRother 0.0.0.0 10.1.1.1 10.1.1.2 3
lo0.0 DR 0.0.0.0 10.1.1.4 0.0.0.0 0

А тепер перевіримо, що буде, якщо б у Router1 був би пріоритет 0, що говорить про те, що даний маршрутизатор не може бути DR/BDR:

У такому випадку маршрутизатор автоматично переводить свій інтерфейс в стан DRother не чекаючи закінчення таймера, що логічно (так як ні в якому іншому стані цей інтерфейс широкомовної середовищі бути не може з-за нульового пріоритету):
router1> show interface ospf
Interface State Area DR ID BDR ID Nbrs
ge-0/0/0.0 DRother 0.0.0.0 0.0.0.0 0.0.0.0 0
lo0.0 DR 0.0.0.0 10.1.1.1 0.0.0.0 0

Як бачите Router1 в стані DRother.

Примітка: слід враховувати, що якщо ви чинним DR призначите пріоритет 0, то він автоматично перестане бути DR, і перейде в стан DRother, а роль DR візьме на себе BDR.

Може в широкомовному домені не вибиратися DR/BDR?
Можливо, якщо в протоколі OSPF лінк позначений як ptp.

Що буде, якщо всі маршрутизатори будуть мати пріоритет 0?
В такій ситуації не буде жодного сусідства в стані Full, а значить не маршрутизатори не будуть отримувати LSA один від одного.

чи Можлива ситуація, коли в мережі більше двох маршрутизаторів, але немає BDR?
При бажанні можна побудувати мережу з топологією hub-and-spoke. Тоді всім маршрутизаторам, крім одного встановлюється пріоритет в 0. У такій схемі буде один DR і кілька DRother. Але у разі відмови DR ми отримаємо ситуацію, описану вище.

чи Може один і той же маршрутизатор бути DR і DRother одночасно.
DR/BDR/DRother це стан інтерфейсу а не маршрутизатора. Маршрутизатор може бути одночасно і в DR, і BDR, і DRother, а ось інтерфейс може бути тільки в одному з цих станів.

чи Можуть відбутися перевибори DR/BDR, якщо DR/BDR «живі»?
Дана ситуація напевно можливо лише в лабораторних умовах, але все ж можлива при злитті двох OSPF доменів. Припустимо, що є коммутатор1 і коммутатор2, до яких підключені по три маршрутизатора. Комутатори не маю зв'язку один з одним. У цьому випадку маршуртизаторы, підключені до коммутатору1 виберуть DR/BDR і, відповідно, маршрутизатори підключені до коммутатору2 оберуть своїх DR/BDR. Все буде працювати відмінно, поки між комутаторами не з'явиться лінк, який з'єднає два цих домену. У підсумку, з двох доменів вийде одні з двома DR/BDR, що не припустимо. Тому в даному випадку будуть вибиратися нові DR/BDR.

Спасибі за увагу!

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.