Хтось назвав політику EXPORT-STATIC, прив'язав її і тепер дивується, чому префікс з екземпляра маршрутизації VPN ніколи не доходить до далекого кінця. Ім'я аж ніяк не впливає на вибір. Політика — це визначення плюс прив'язка, і те, що вона експортує, визначають її умови збігу, упорядковані терми та контекст, який її використовує. Прочитайте ці три в цій послідовності, і загадка зазвичай зводиться до одного терма, який так і не збігся.

Ім'я — це мітка, а не умова

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

Ставтеся до несподіваного результату експорту як до прохання прочитати визначення, а не як до доказу, що прив'язка зламана. Прочитайте визначення і дозвольте йому суперечити мітці.

Спочатку знайдіть прив'язку, потім терми

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

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

Терми обчислюються по порядку, і перше рішення перемагає

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

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

Приклад, який експортує лише статичні маршрути, з прив'язкою на групі:

policy-options {
    policy-statement EXPORT-STATIC {
        term statics { from protocol static; then accept; }
    }
}
protocols bgp group TO-PEER { export EXPORT-STATIC; }

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

Дії змінюють копію, а не початковий маршрут

Дії політики працюють з маршрутом у тому вигляді, у якому він обчислюється для цього оголошення, тобто з копією, а не із записом у таблиці маршрутизації. Тому локальна команда show route може показувати маршрут з одним набором атрибутів, тоді як експортована версія несе інші, і експорт не переписує початковий маршрут. Ця різниця пояснює кілька суперечок про те, чий висновок правильний: правильні обидва, і вони описують різні об'єкти. Кажіть, яке подання ви цитуєте, щоразу, коли двоє інженерів розходяться щодо атрибута маршруту.

Прийняття і відхилення — остаточні рішення; зміни атрибутів не обов'язково такими є. Не припускайте, що встановлення community завершує політику, бо обчислення може продовжитися в термах, які ви не врахували.

Порівняйте оголошене подання з очікуванням

Використовуйте подання, специфічне для протоколу, на фактичному пірі, наприклад show route advertising-protocol bgp 192.0.2.1, і читайте його в правильному контексті екземпляра маршрутизації. Маршрут, наявний у VRF, не обов'язково пройшов політику експорту, а маршрут, що з'являється в оголошеному виводі, не обов'язково прийнятий далекою стороною. Це три окремі стани, і відмовляють вони по-різному.

Прийміть проєкт з одним префіксом, який має оголошуватися, і одним, який має залишитися локальним. Це дає політиці договір, який можна перевірити, і дозволяє уникнути альтернативного виправлення — розширення експорту, доки нарешті не з'явиться один іменований маршрут.

Схожі статті