Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МІТ-лекції-2014.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
8.65 Mб
Скачать

Література

1. Стивенс У., UNIX: Разработка сетевых приложений. – СПб.: Питер, 2004. – 880 с.

2. W. R. Stevens, S. A. Rago, Advanced Programming in the UNIX® Environment: Second Edition, Addison Wesley Professional, 2005. – 720 с.

3. Мельник В.М., Стешенко Л.І. Основи операційної системи UNIX / Луцьк. – 2012. – 280 с.

4. Рочкинд М. Программирование для UNIX. 2-е изд. и перераб. и доп. – Пер. с англ. – СПб.; БХВ-Петербург, 2005. – 704 с.: ил.

5. Олифер В. Г., Олифер Н. А. Компьютерные сети. Принципы, технологии, протоколы: Учебник для вузов = Computer Networks. Principles, Technologies and Protocols for Network Design. – 3-е изд. – СПб.: Издательский дом «Питер», 2006. – С. 572-576. – 958 с. – ISBN 5-469-00504-6

Тема 4. Маршрутизація трафіку в ос FreeBsd

Алгоритми і протоколи маршрутизації

Протокол маршрутизації – мережевий протокол, який використовується маршрутизаторами для визначення можливих маршрутів прямування даних в комп'ютерній мережі. Застосування протоколу маршрутизації дозволяє уникнути ручного введення всіх допустимих маршрутів, що, у свою чергу, знижує кількість помилок, забезпечує узгодженість дій усіх маршрутизаторів в мережі і полегшує працю адміністраторів.

Протоколи маршрутизації діляться на два види, що залежать від типів алгоритмів, на яких вони засновані (або можуть бути гібридними – поєднувати обидва підходи):

  • Дистанційно-векторні протоколи, засновані на Distance Vector Algorithm (DVA);

  • Протоколи стану каналу зв'язку, засновані на Link State Algorithm (LSA).

Так само протоколи маршрутизації діляться на два види залежно від сфери застосування:

  • Міждоменна маршрутизація;

  • Внутрішньодоменна маршрутизація.

Більшість протоколів маршрутизації, які застосовуються у сучасних мережах з комутацією пакетів, ведуть своє походження від мережі Інтернет і її попередниці – мережі ARPANET. Для того щоб зрозуміти їхнє призначення й особливості, корисно спочатку познайомитися зі структурою мережі Інтернет, що наклала відбиток на термінологію й типи протоколів.

Інтернет споконвічно будувалася як мережа, що поєднує велику кількість існуючих систем. Із самого початку в її структурі виділяли магістральну мережу (core backbone network), а мережі, приєднані до магістралі, розглядалися як автономні системи (autonomous systems, AS). Магістральна мережа й кожна з автономних систем мали своє власне адміністративне управління й власні протоколи маршрутизації. Необхідно підкреслити, що автономна система й домен імен Інтернет – це різні поняття, які служать різним цілям. Автономна система поєднує мережі, у яких під загальним адміністративним керівництвом однієї організації здійснюється маршрутизація, а домен об'єднує комп'ютери (які, можливо, належать різним мережам), у яких під загальним адміністративним керівництвом однієї організації здійснюється призначення унікальних символьних імен. Природно, області дії автономної системи й домена імен можуть в окремому випадку збігатися, якщо одна організація виконує обидві указані функції.

Загальна схема архітектури мережі Інтернет показана на рисунку 4.1. Далі маршрутизатори ми будемо називати шлюзами, щоб залишатися в руслі традиційної термінології Інтернет.

Шлюзи, які використовуються для утворення мереж і підмереж усередині автономної системи, називаються внутрішніми шлюзами (interior gateways), а шлюзи, за допомогою яких автономні системи приєднуються до магістралі мережі, називаються зовнішніми шлюзами (exteriorgateways). Магістраль мережі також є автономною системою. Всі автономні системи мають унікальний 16-розрядний номер, що виділяється організацією, яка заснувала нову автономну систему, InterNIC.

Рисунок 4.1 – Магістраль і автономні системи Інтернет

Відповідно протоколи маршрутизації усередині автономних систем називаються протоколами внутрішніх шлюзів (interior gateway protocol, IGP), а протоколи, що визначають обмін маршрутною інформацією між зовнішніми шлюзами й шлюзами магістральної мережі – протоколами зовнішніх шлюзів (exterior gateway protocol, EGP). Усередині магістральної мережі також допустимо будь-який власний внутрішній протокол IGP.

Смисл розподілу всієї мережі Інтернет на автономні системи – у її багаторівневому модульному представленні, що необхідно для будь-якої великої системи, здатної до розширення в великих масштабах. Зміна протоколів маршрутизації усередині якої-небудь автономної системи ніяк не повинна впливати на роботу інших автономних систем. Крім того, розподіл Інтернет на автономні системи повинен сприяти агрегуванню інформації в магістральних і зовнішніх шлюзах. Внутрішні шлюзи можуть використовуватися для внутрішньої маршрутизації досить докладні графи зв'язків між собою, щоб вибрати найбільш раціональний маршрут. Однак якщо інформація такого ступеня деталізації буде зберігатися у всіх маршрутизаторах мережі, то топологічні бази даних так розростуться, що зажадають наявності пам'яті гігантських розмірів, а час прийняття рішень маршрутизації стане неприйнятно великим.

Тому детальна топологічна інформація залишається усередині автономної системи, а автономну систему як єдине ціле для іншої частини Інтернет представляють зовнішні шлюзи, які повідомляють про внутрішній склад автономної системи мінімально необхідні відомості – кількість IP-мереж, їхні адреси й внутрішню відстань до цих мереж від даного зовнішнього шлюзу.

Техніка безкласової маршрутизації CIDR може значно скоротити обсяги маршрутної інформації, що передається між автономними системами. Так, якщо всі мережі усередині деякої автономної системи починаються із спільного префікса, наприклад 194.27.0.0/16, то зовнішній шлюз цієї автономної системи повинен робити оголошення тільки про цю адресу, не повідомляючи окремо про існування усередині даної автономної системи, наприклад, мережі 194.27.32.0/19 або 194.27.40.0/21, тому що ці адреси агрегуються на адресу 194.27.0.0/16.

Наведена на рисунку 4.1 структура Інтернет з єдиною магістраллю досить довго відповідала дійсності, тому спеціально для неї був розроблений протокол обміну маршрутної інформації між автономними системами, що називається EGP. Однак у міру розвитку мереж постачальників послуг структура Інтернет стала набагато більш складною, з довільним характером зв'язків між автономними системами. Тому протокол EGP поступився місцем протоколу BGP, що дозволяє розпізнати наявність петель між автономними системами й виключити їх з міжсистемних маршрутів. Протоколи EGP і BGP використовуються тільки в зовнішніх шлюзах автономних систем, які найчастіше організуються постачальниками послуг Інтернет. У маршрутизаторах корпоративних мереж працюють внутрішні протоколи маршрутизації, такі як RIP і OSPF.

Розглянемо протоколи внутрішньої маршрутизації:

Протокол GGP (Gateway to Gateway Protocol, RFC 823) був розроблений і реалізований фірмою BBN для перших експериментальних шлюзів мережі Інтернет. Він до цих пір використовується в шлюзах фірми BBN LSI/11, хоча вважається, що GGP має серйозні недоліки і пізніше був замінений на алгоритм SPF. Алгоритм протоколу GGP визначає маршрут з мінімальним числом маршрутизаторів, тобто його мірою довжини є просто число транзитних ділянок мережі між парами шлюзів. Він реалізує розподілений алгоритм найкоротшого шляху, який вимагає глобальної збіжності маршрутних таблиць після змін в топології або зв'язності.

Протокол RIP (Routing Information Protocol, RFC 1058, 1581, 1582, 1724) часто використовується для класу протоколів маршрутизації, що базуються на протоколах XNS (Xerox Network System – мережева система Xerox) фірми Xerox. Реалізація протоколу RIP для сімейства протоколів TCP/IP широко доступна, оскільки входить до складу програмного забезпечення ОС UNIX, наприклад, FreeBSD або Linux. В силу своєї простоти протокол RIP має найбільші шанси перетворитися на «відкритий» протокол IGP, тобто протокол, який може використовуватися для спільної роботи шлюзів, що поставляються різними фірмами. При використанні протоколу RIP працює алгоритм динамічного програмування Беллмана-Форда. В якості метрики маршрутизації RIP використовує число стрибків (кроків) до мети. Такий вид метрики не враховує відмінностей у пропускної здатності чи завантаженості окремих сегментів мережі. Кожному маршруту ставиться у відповідність таймер тайм-ауту і «збирач сміття». Таймер тайм-ауту скидається кожен раз, коли маршрут ініціалізується або коригується. Якщо з часу останньої корекції пройшло 3 хвилини або отримано повідомлення в тому, що вектор відстані дорівнює 16, маршрут вважається закритим, але запис про нього не стирається, поки не закінчиться час «збирання сміття» (2 хвилини). При появі еквівалентного маршруту перемикання на нього не відбувається. Протокол RIP досить простий, але не позбавлений недоліків:

  • потрібно багато часу для відновлення зв'язку після збою в маршрутизаторі (хвилини); в процесі встановлення режиму можливі цикли;

  • число кроків – важливий, але не єдиний параметр маршруту, та й 15 кроків – не межа для сучасних мереж.

Випадок нестійкої роботи мережі по протоколу RIP при зміні конфігурації – відмову лінії зв'язку маршрутизатора M1 з мережею 1. При працездатному стані цьому зв'язку в таблиці маршрутів кожного маршрутизатора є запис про мережу з номером 1 і відповідним відстанню до неї (див. рисунок 4.2).

Рисунок 4.2 – Схема роботи протоколу RIP при відключені порту

При обриві зв'язку з мережею 1 маршрутизатор М1 зазначає, що відстань до цієї мережі взяло значення 16. Проте отримавши через деякий час від маршрутизатора М2 маршрутне повідомлення про те, що від нього до мережі 1 відстань складає 2 хопу, маршрутизатор М1 нарощує цю відстань на 1 і відзначає, що мережа 1 досяжна через маршрутизатор 2. У результаті пакет, призначений для мережі 1, буде циркулювати між маршрутизаторами М1 і М2 до тих пір, поки не закінчиться час зберігання запису про мережу 1 в маршрутизаторі 2, і він не передасть цю інформацію маршрутизатора М1.

Для виключення подібних ситуацій маршрутна інформація про відому маршрутизатора мережі не передається тому маршрутизатора, від якого вона прийшла (див. рисунок 4.3, 4.4).

0

8

16

24

31

Код команди

Номер версії

Повинні бути нулі

Тип сімейства протоколу мережі 1

Повинні бути нулі

IP-адреса мережі 1

Маска підмережі для мережі 1

Адреса найближчої точки переходу для мережі 1

Відстань до мережі 1

Тип сімейства протоколу мережі 2

Повинні бути нулі

IP-адреса мережі 2

Маска підмережі для мережі 2

Адреса найближчої точки переходу для мережі 2

Відстань до мережі 2

Рисунок 4.3 – Формат повідомлення протоколу RIP 1

1 - запит на часткову або повну маршрутну інформацію;

2 - відповідь на запит, що містить пари чисел (адреса мережі, відстань), взяті з таблиці маршрутизації відправника;

9 - запит на оновлення;

10 - відповідь на запит на оновлення.

0

8

16

24

31

Код команди

Номер версії

Повинні бути нулі

Тип сімейства протоколу мережі 1

Ознака маршруту до мережі 1

IP-адреса мережі 1

Маска підмережі для мережі 1

Адреса найближчої точки переходу для мережі 1

Відстань до мережі 1

Тип сімейства протоколу мережі 2

Ознака маршруту до мережі 2

IP-адреса мережі 2

Маска підмережі для мережі 2

Адреса найближчої точки переходу для мережі 2

Відстань до мережі 2

Рисунок 4.4 – Формат повідомлення протоколу RIP 2

Протокол "HELLO". Програмне забезпечення Fuzzball для шлюзу LSI/11 включає в себе реалізацію протоколу IGP під назвою "HELLO". На відміну від RIP в ньому критерієм вибору маршруту служить час, а не відстань, тому "HELLO" вимагає досить точної синхронізації служб часу шлюзів.

Протокол OSPF (Open Shortest Path First, RFC 1850, 1583, 1584, 1587) являє собою протокол стану маршруту, причому в якості метрики використовується коефіцієнт якості обслуговування. Кожен маршрутизатор володіє повною інформацією про стан усіх інтерфейсів шлюзів автономної системи. Визначальними є три характеристики: затримка, пропускна здатність і надійність. Переваги OSPF:

  • для кожної адреси може бути кілька маршрутних таблиць, по одній на кожен вид IP-операції;

  • кожному інтерфейсу присвоюється безрозмірна ціна, що враховує пропускну здатність, час транспортування повідомлення; кожної IP-операції може бути присвоєна своя ціна;

  • при існуванні еквівалентних маршрутів OSPF розподіляє потік рівномірно по цих маршрутах;

  • при зв'язку «точка-точка» не потрібне IP-адреса для кожного з кінців;

  • застосовується мультікастінга замість широкомовлення, що знижує завантаження не залучених в обмін сегментів.

Недоліки OSPF – важко отримати інформацію про перевагу каналів для вузлів, що підтримують інші протоколи або мають статичну маршрутизацію.

Рисунок 4.5 – Ієрархічно структурована автономна мережа OSPF з чотирма областями

Безпосередньо пов'язані (тобто досяжні без використання проміжних маршрутизаторів) маршрутизатори називаються "сусідами". Кожен маршрутизатор зберігає інформацію про те, в якому стані на його думку знаходиться сусід. Маршрутизатор покладається на сусідні маршрутизатори і передає їм пакети даних тільки в тому випадку, якщо він впевнений, що вони повністю працездатні. Для з'ясування стану зв'язків маршрутизатори-сусіди досить часто обмінюються короткими повідомленнями HELLO.

Для поширення по мережі даних про стан зв'язків маршрутизатори обмінюються повідомленнями іншого типу. Ці повідомлення називаються router links advertisement - оголошення про зв'язки маршрутизатора (точніше, про стан зв'язків). OSPF-маршрутизатори обмінюються не тільки своїми, але й чужими оголошеннями про зв'язки, отримуючи в кінці-кінців інформацію про стан всіх зв'язків мережі. Ця інформація і утворює граф зв'язків мережі, який, природно, один і той же для всіх маршрутизаторів мережі.

Крім інформації про сусідів, маршрутизатор у своєму оголошенні перераховує IP-підмережі, з якими він пов'язаний безпосередньо, тому після отримання інформації про графа зв'язків мережі, обчислення маршруту до кожної мережі проводиться безпосередньо з цього графу за алгоритмом Дейкстри. Більш точно, маршрутизатор обчислює шлях не до конкретної мережі, а до маршрутизатора, до якого ця мережа підключена. Кожен маршрутизатор має унікальний ідентифікатор, який передається в оголошенні про стани зв'язків. Такий підхід дає можливість не витрачати IP-адреси на зв'язку типу "точка-точка" між маршрутизаторами, до яких не підключені робочі станції.

Маршрутизатор обчислює оптимальний маршрут до кожної адресується мережі, але запам'ятовує тільки перший проміжний маршрутизатор з кожного маршруту. Таким чином, результатом обчислень оптимальних маршрутів є список рядків, в яких вказується номер мережі та ідентифікатор маршрутизатора, якому потрібно переслати пакет для цієї мережі. Зазначений список маршрутів і є маршрутної таблицею, але обчислений він на підставі повної інформації про графа зв'язків мережі, а не часткової інформації, як в протоколі RIP.

Описаний підхід призводить до результату, який не може бути досягнутий при використанні протоколу RIP або інших дистанційно-векторних алгоритмів. RIP припускає, що всі підмережі певної IP-мережі мають один і той же розмір, тобто, що всі вони можуть потенційно мати однакове число IP-сайтів, адреси яких не перекриваються. Більше того, класична реалізація RIP вимагає, щоб виділені лінії "точка-точка" мали IP-адресу, що призводить до додаткових витрат IP-адрес.

У OSPF такі вимоги відсутні: мережі можуть мати різне число хостів і можуть перекриватися. Під перекриттям розуміється наявність декількох маршрутів до однієї і тієї ж мережі. У цьому випадку адреса мережі в прийшов пакеті може співпасти з адресою мережі, привласненим декількох портів.

Якщо адреса належить кільком подсетям в базі даних маршрутів, то просуває пакет маршрутизатор використовує найбільш специфічний маршрут, тобто адресу підмережі, що має більше довгу маску.

Наприклад, якщо робоча група відгалужується від головної мережі, то вона має адресу головної мережі поряд з більш специфічним адресою, визначеним маскою підмережі. При виборі маршруту до хоста в підмережі цієї робочої групи маршрутизатор знайде два шляхи, один для головної мережі і один для робочої групи. Так як останній більш специфічний, то він і буде обраний. Цей механізм є узагальненням поняття "маршрут за умовчанням", використовуваного в багатьох мережах.

У протоколі OSPF використовується кілька часових параметрів (див. рисунок 4.6, 4.7), і серед них найбільш важливими є інтервал повідомлення HELLO і інтервал відмови маршрутизатора (router dead interval).

0

8

16

24

31

Номер версії

Тип

Довжина повідомлення

IP-адресу вихідного маршрутизатора

Ідентифікатор зони

Контрольна сума

Тип аутентифікації

Дані для аутентифікації (октети 0-3)

Дані для аутентифікації (октети 4-7)

Рисунок 4.6 – Формат повідомлення протоколу OSPF

Типи OSPF-повідомлень:

1 - повідомлення HELLO (використовується для перевірки досяжності);

2 - опис бази даних (топологія);

3 - запит про стан з'єднання;

4 - оновлення стану з'єднання;

5 - повідомлення про стан з'єднання.

Заголовок OSPF повідомлення тип якого дорівнює 1 (довжина заголовка 24 октетів)

Мережева маска

Макс. час відповіді

Інтер. відпр. повід.

Пріоритет маршрутиз.

IP-адреса виділеного маршрутизатора

IP-адреса резервного виділеного маршрутизатора

IP-адреса 1-го сусіда

IP-адреса N-го сусіда

Рисунок 4.7 – Формат повідомлення HELLO протоколу OSPF

Протокол IS-IS. Враховуючи, з одного боку, широке поширення мереж з архітектурою TCP/IP, з іншого боку, підвищена увага урядових і комерційних організацій до архітектури ЕМВОС; очікується, що архітектури TCP/IP і ЕМВОС будуть існувати довгий час разом. Тому виникає необхідність у шлюзах, здатних маршрутизировать одночасно IP-і ЕМВОС-трафік. Протокол IS-IS (Intermediate System to Intermediate System Protocol, RFC 1195) забезпечує підтримку понять IP-підмережі, змінної маски підмережі, маршрутизацію на основі значення поля «тип сервісу» в заголовку IP-пакета і поняття зовнішнього маршруту. Протокол IS-IS є динамічним протоколом маршрутизації, побудованим на основі SPF-алгоритму.

Яскравим прикладом глобального протоколу маршрутизації є протокол BGP.

BGP – це протокол роботи з маршрутною інформацією – обмін, зберігання, редагування. На цьому протоколі побудований весь Інтернет. Сегменти Інтернету розбиті на AS – автономні системи – а за допомогою BGP вони обмінюються інформацією. Автономна система – це якась кількість мережевих пристроїв які управляються однаковою політикою (групою адміністраторів). Якщо дуже просто BGP це протокол дозволяє пакетам з вашого комп'ютера досягати одержувача.

Цей протокол вам може знадобитись, наприклад, якщо ви хочете собі зарезервувати блок адрес не менше 256, і хочете щоб вони були провайдеро-незалежними. Купили адреси – разом з номером AS (автономної системи). Встановили з вашим провайдером з’єднання по BGP, працюєте. Набрид провайдер - або змінили місце вашої дислокації на інше де до цього провайдеру підключитися немає можливості, встановлюйте BGP з новим провайдером і адреси у вас залишаються ті ж. Просто доступні тепер за іншими маршрутами.

Ще приклад – ви хочете підключиться одночасно до двох або більше провайдерам для того щоб підвищити стабільність (вартість) роботи Інтернету – тобто впав один з провайдерів – ви автоматично переходите на запасний пакет. Або з одного каналу дешевше один трафік – з іншого, іншого - за допомогою BGP можна розподілити куди ходити трафіку щоб було вигідніше.

Маршрутизатор BGP обмінюються інформацією про доступність тих чи інших мереж – найчастіше вони містять у своїй пам'яті так звану карти (маршрути) як досягти той чи інший адреса – а точніше номери АS (автономної системи) яка стверджує що необхідний вам адресу перебувати в її зоні відповідальності. Виглядає це карта приблизно так – AS (1111) -> AS (1112) -> AS (1113) і так далі тобто скільки AS доведеться пройти пакету щоб дійти до AS одержувача пакета. BGP це дистанційно-векторний протокол це означає що він буде намагатися вибрати найменшу кількість AS в карті до потрібної AS – такий маршрут коротший і BGP вважає його більш швидким. Також варто враховувати що BGP можна використовувати і усередині AS – а не тільки для зовнішнього обміну маршрутами.

Маршрутизація в FreeBSD

Маршрутизація (англ. Routing) – процес визначення маршруту прямування інформації між мережами. Маршрутизатор (або роутер від англ. router) приймає рішення, що базується на IP-адресі отримувача пакету. Для того, щоб переслати пакет далі, всі пристрої на шляху слідування використовують IP-адресу отримувача. Для прийняття правильного рішення маршрутизатор має знати напрямки і маршрути до віддалених мереж. Є два типи маршрутизації:

Статична маршрутизація – маршрути задаються вручну адміністратором.

Динамічна маршрутизація – маршрути обчислюються автоматично за допомогою протоколів динамічної маршрутизації – RIP, OSPF, EIGRP, IS-IS, BGP, HSRP та ін., які отримують інформацію про топологію і стан каналів зв'язку від інших маршрутизаторів у мережі.

Оскільки статичні маршрути конфігуруються вручну, будь-які зміни мережної топології вимагають участі адміністратора для додавання і видалення статичних маршрутів відповідно до змін. У великих мережах підтримка таблиць маршрутизації вручну може вимагати величезних витрат часу адміністратора. У невеликих мережах це робити легше. Статична маршрутизація не має можливості масштабування, яку має динамічна маршрутизація через додаткові вимоги до налаштування і втручання адміністратора. Але і у великих мережах часто конфігуруються статичні маршрути для спеціальних цілей у комбінації з протоколами динамічної маршрутизації, оскільки статична маршрутизація є стабільнішою і вимагає мінімум апаратних ресурсів маршрутизатора для обслуговування таблиці.

Динамічні маршрути виставляються іншим чином. Після того, як адміністратор активізував і налаштував динамічну маршрутизацію за одним з протоколів, інформація про маршрути оновлюється автоматично в процесі маршрутизації після кожного отримання з мережі нової інформації про маршрути. Маршрутизатори обмінюються повідомленнями про зміни у топології мережі в процесі динамічної маршрутизації.

Всі маршрути статичні (які вводяться вручну) чи динамічні (які автоматично створюються протоколами маршрутизації) зберігаються в таблиці маршрутизації, і саме з цієї таблиці беруться дані для побудови маршруту. Для перегляду таблиці маршрутизації в FreeBSD існує сервісна команда netstat -r:

root@bit-box:/home/artem # netstat -r

Routing tables

Internet:

Destination Gateway Flags Refs Use Netif Expire

default 172.22.0.1 UGS 0 493 ng0

10.0.0.0/17 link#2 U 0 998 re0

10.0.2.202 link#2 UHS 0 0 lo0

localhost link#7 UH 0 6 lo0

172.22.0.1 link#10 UH 0 0 ng0

192.168.1.0 link#9 U 0 0 wlan0

192.168.1.1 link#9 UHS 0 0 lo0

193.150.6.23 link#10 UHS 0 0 lo0

З розвитком мережевої інфраструктури в FreeBSD починаючи з 7 гілки з’явилась підтримка декількох таблиць маршрутизації, для одночасного незалежного керування незалежними мережами, для ввімкнення підтримки більше одної таблиці маршрутизації необхідно задати в ядрі:

options ROUTETABLES=2

Також подвійна таблиця маршрутизації використовується для балансування пропускної спроможності від двох різних джерел, наприклад роздача Інтернету від двох незалежних провайдерів.

Найбільший пріоритет надається статичним маршрутам, які задаються адміністратором, при якому пакети йдуть строго зданим шляхом, навіть якщо є кращій маршрут він ігнорується системою. В складних мережах з певною кількістю альтернативних маршрутів в яких працюють протоколи динамічної маршрутизації система обирає оптимальний найкоротший шлях, яких обертається на основі пропускної спроможності, адміністративної відстані, метрики або інших характеристик, в залежності від протоколу який використовується. На основі обраного параметра який характеризує мережу виконується пошук найкоротшого шляху за допомогою алгоритму Дейкстри.

Налаштування статичної та динамічної маршрутизації

Для налаштування статичної маршрутизації існує спеціальна команда route приклад роботи з якою було наведено в главі 4. Ця команда безпосередньо вводить статичні маршрути в таблицю маршрутизації, для збереження цих налаштування треба задати команди в /etc/rc.conf.

Так як в динамічній маршрутизації використовуються певні протоколи, для роботи з якими в FreeBSD потрібні сторонні пакети, наприклад пакет такий як Quagga підійде ідеально, адже він одночасно може працювати з декількома протоколами динамічної маршрутизації, ще великим плюсом даного пакету є те що він має інтерфейс конфігурування ідентичний до обладнання Cisco, тобто адміністратори які мають досвід в налаштуванні Cisco не відчують складнощів.

Розглінемо приклад інсталяції та налаштування Quagga для протоколу OSPF. Нехай у нас є маленька мережа (див. рисунок 4.8), що складається з трьох підмереж, 3 маршрутизаторів і одного виходу в Інтернет. З них, одна центральна (backbone) 192.168.0.0/24, мережа об'єднує маршрутизатори. Мережі 192.168.10.0.24 і 192.168.20.0/24 – клієнтської мережі, взаємну маршрутизацію яких ми і переводимо на динаміку.

Рисунок 4.8 – Структура мережі

Встановлюємо quagga з портів на всіх маршрутизаторах:

# cd /usr/ports/net/quagga/

# make install clean

Перед побудовою з'явиться діалог налаштування (див. рисунок 4.9) збірки, для ospf рекомендую не встановлювати додаткові налаштування.

┌────────────────────────────────────────────────────────────────────┐

│ Options for quagga 0.99.10_3 │

│ ┌────────────────────────────────────────────────────────────────┐ │

│ │ [ ] ISISD Enable experimental ISIS daemon │ │

│ │ [ ] PAM PAM authentication for vtysh │ │

│ │ [ ] OSPF_NSSA NSSA support (RFC1587) │ │

│ │ [ ] OSPF_OPAQUE_LSA OSPF Opaque-LSA support (RFC2370) │ │

│ │ [ ] RTADV IPv6 Router Advertisements │ │

│ │ [ ] SNMP SNMP support │ │

│ │ [ ] TCPSOCKETS Use TCP/IP sockets for protocol daemons │ │

│ │ [ ] TCPMD5 Use experimental MD5 patch for BGP │ │

│ │ [ ] DLMALLOC Use dlmalloc (makes bgpd much faster) │ │

├─└────────────────────────────────────────────────────────────────┘─┤

[ OK ] Cancel │

└────────────────────────────────────────────────────────────────────┘

Рисунок 4.9 – Діалогове вікно при інсталяції quagga

По закінченні установки, приступимо до налаштування, взагалі налаштувати quagga можна двома способами створити всі файли налаштувань або підключитися telnet до консолі quagga, яка емулює CLI Cisco і налаштовувати з командного рядка (я завжди налаштовую саме через telnet):

  1. Спочатку скопіюємо стандартні файли налаштування, це ми робимо на всіх трьох маршрутизаторах.

cp /usr/local/share/examples/quagga/zebra.conf.sample / /usr/local/etc/quagga/zebra.conf

cp /usr/local/share/examples/quagga/ospf.conf.sample / /usr/local/etc/quagga/ospfd.conf

  1. Тепер в /etc/rc.conf включимо автозавантаження quagga, це теж робимо на всіх трьох маршрутизаторах і запускаємо демон.

echo "quagga_enable=YES">>/etc/rc.conf

/usr/local/etc/rc.d/quagga start

  1. Тепер можна приступати до безпосередньої налаштуванні, почнемо з першого маршрутизатора Router1:

Підключившись до консолі:

telnet 127.0.0.1 ospfd

Пароль за замовчуванням zebra.

Після того, як ми підключилися до консоле ви виконуємо таку послідовність команд:

enable

configure terminal

router ospf

router-id 192.168.0.1

network 192.168.0.0/24 area 0

neighbor 192.168.0.2

neighbor 192.168.0.3

default-information originate

write memory

Опис команд:

enable - перехід в режим адміністратора;

configure terminal - перехід до режиму налаштування;

router ospf - вказуємо, що настроювати будемо ospf.

Тепер команди безпосередньо налаштування ospf:

router-id - ідентифікатор маршрутизатора, повинен бути унікальним;

network 192.168.0.0/24 area 0 - описує мережу на основі якої ми будуємо ospf і вказуємо area 0 для нашої мережі;

neighbor 192.168.0.2 - вказуємо що у нас в мережі є ще один маршрутизатор, то ж ми вказуємо, відповідно, і для третього маршрутизатора;

default-information originate - вказує, що ми з цього маршрутизатора анонсуємо маршрут за замовчуванням, тобто дефолт шлюз в Інтернет;

write memory - зберігаємо конфігураційний файл.

Тепер переходимо до другого маршрутизатора, тут послідовність команд буде така:

enable

configure terminal

router ospf

router-id 192.168.0.2

network 192.168.0.0/24 area 0

neighbor 192.168.0.1

neighbor 192.168.0.3

redistribute connected

write memory

Тут налаштування трохи змінилися, ми встановили router-id 192.168.0.2, вказали neighbor 192.168.0.1 і замінили команду default-information originate на redistribute connected.

redistribute connected - ця установка ospf вказує, що необхідно всі мережі підключені до інтерфейсів анонсувати по ospf своїм партнерам.

Налаштування третього маршрутизатора відрізняються від налаштувань другого, тільки router-id 192.168.0.3 і neighbor 192.168.0.2 буде замість neighbor 192.168.0.3.

Тобто така послідовність команд:

enable

configure terminal

router ospf

router-id 192.168.0.3

network 192.168.0.0/24 area 0

neighbor 192.168.0.1

neighbor 192.168.0.2

redistribute connected

write memory

На цьому налаштування закінчена. Вийти з режиму налаштування можна використовуючи комбінацію клавіш Ctrl+z.

Перевірити працездатність можна в консолі quagga за допомогою команд:

show ip ospf neighbor - ця команда виведе список активних «сусідніх» маршрутизаторів.

show ip ospf route - виведе список маршрутів, які були отримані за протоколом ospf.

Для налаштування інших протоколів маршрутизації принцип той самий, тільки треба скопіювати інші стандартні конфігураційні файли ім’я яких відповідає потрібному протоколу.