Привіт, щось я не можу роздуплити логіку Bird :-( Є, умовно, два хости, зв'язані між собою напряму через eth-інтерфейс. Піднято OSPF та iBGP. На кожному хості є локальний брідж та лупбек. Я хочу, щоб - OSPF обмінювався виключно інформацією про інтерфейси та лупбеки - BGP (між лупбеками) анонсував все інше - локальний брідж та мережі, отримані по eBGP по першому нібито ясно - protocol kernel { import none; export all; } protocol ospf blah { import all; export none; area 0.0.0.0 { interface eth1 { }; interface lo { stub yes; }; }; } питання по другому пункту - як сказати бьорду анонсувати мережу локального бріджа? В Cisco/FRR таке робиться за допомогою стейтмента 'network x.x.x.x/x', а як це зробити в пташці? Дякую. -- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison _______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
Привіт, дав собі раду перейти на Bird v2 :) ну шо сказати, він значно краще за v1. Особливо подобається наявність окремих таблиць маршрутизації - коли, наприклад, iBGP можна зібрати в одній таблиці й тягати раути в eBGP через pipe - зменшуючи таким чином кількість фільтрів та потенційних джерел misconfiguration. Ну й з точки зору конфігурації - темплейти теж зручна штука. Мені складно сказати, наскільки він з точки зору функціональності гірше за FRR (я не в курсі, чим зараз дихають "дорослі" SP на кшталт DT або AT&T), але, того, що я бачу, для звичаних SP вистачає з головою. Ну й важливе - з мого досвіду, він працює стабільніше за FRR. Повертаючись до мого питання, якщо не використовувати різні таблиці, то ключовим моментом є політика імпорта/експорта в/з протоколів : protocol kernel { # Preserve OS routing table on exit persist; ipv4 { # nothing to import from OS routing table # so no DHCP learned or manually configured routes will affect global routing import none; # but export everything we learned from routing protocols export all; }; } # These are aggregates to announce through BGP protocol static { ipv4; route 192.0.2.0/24 blackhole; } protocol ospf v2 mgmt { ipv4 { # Import into Bird (and then export through kernel) everything learned in OSPF import all; # while export to OSPF nothing except explicitly identified interfaces below export none; }; area 0 { interface "eth0" { }; interface "lo" { # Just propagate info about lo stub; }; }; } protocol bgp home { local 100.64.53.22 as 65035; neighbor 100.64.53.1 as 65035; ipv4 { # Import into Bird (and then export through kernel) everything import all; # Export to peer only aggregates and routes received by BGP from other peers # thus excluding OSPF management routes (interfaces, loopbacks) export where source ~ [RTS_STATIC, RTS_BGP]; }; } On 2/7/24 14:01, Volodymyr Litovka wrote:
Привіт,
щось я не можу роздуплити логіку Bird :-(
Є, умовно, два хости, зв'язані між собою напряму через eth-інтерфейс. Піднято OSPF та iBGP. На кожному хості є локальний брідж та лупбек. Я хочу, щоб
- OSPF обмінювався виключно інформацією про інтерфейси та лупбеки - BGP (між лупбеками) анонсував все інше - локальний брідж та мережі, отримані по eBGP
по першому нібито ясно -
protocol kernel { import none; export all; }
protocol ospf blah { import all; export none; area 0.0.0.0 { interface eth1 { }; interface lo { stub yes; }; }; }
питання по другому пункту - як сказати бьорду анонсувати мережу локального бріджа? В Cisco/FRR таке робиться за допомогою стейтмента 'network x.x.x.x/x', а як це зробити в пташці?
Дякую.
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison _______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
Нє, шось я тупо не розумію, як воно працює. На "правому" хості - filter default_route { if ( net = 0.0.0.0/0 ) then { accept; } reject; } protocol kernel { merge paths yes; persist; import filter default_route; export all; } protocol ospf mgmt { rfc1583compat yes; import all; export none; ecmp yes; area 0.0.0.0 { interface "blue" { }; interface "orange" { }; interface "lo" { stub yes; }; }; } protocol direct { interface br-local; } reload / restart незважаючи на те, що в proto ospf чітко написано - "export none", на другому кінці бачу адреси локального бріджа - bird> show route protocol mgmt [ ... ] 100.64.4.0/23 multipath [mgmt 13:49:33] * I (150/20) [100.64.4.1] via 100.64.98.3 on blue weight 1 via 100.64.99.3 on orange weight 1 капець, яке воно дивне. Є ідеї що з цим робити ? Ну крім поставити FRR... On 2/7/24 14:01, Volodymyr Litovka wrote:
Привіт,
щось я не можу роздуплити логіку Bird :-(
Є, умовно, два хости, зв'язані між собою напряму через eth-інтерфейс. Піднято OSPF та iBGP. На кожному хості є локальний брідж та лупбек. Я хочу, щоб
- OSPF обмінювався виключно інформацією про інтерфейси та лупбеки - BGP (між лупбеками) анонсував все інше - локальний брідж та мережі, отримані по eBGP
по першому нібито ясно -
protocol kernel { import none; export all; }
protocol ospf blah { import all; export none; area 0.0.0.0 { interface eth1 { }; interface lo { stub yes; }; }; }
питання по другому пункту - як сказати бьорду анонсувати мережу локального бріджа? В Cisco/FRR таке робиться за допомогою стейтмента 'network x.x.x.x/x', а як це зробити в пташці?
Дякую.
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison _______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
Ха, прибрав секцію direct - зникло з OSPF... це ХЄРНЯ а не робота. Якщо чорним по білому написано фільтр 'export none' то regardless of other protocols there should be nothing except own LSADB Вірогідно, треба дати ще один шанс frr, там безумовно є глюки, але там хоч логіка пряма та логічна. On 2/7/24 14:58, Volodymyr Litovka wrote:
Нє, шось я тупо не розумію, як воно працює.
На "правому" хості -
filter default_route { if ( net = 0.0.0.0/0 ) then { accept; } reject; } protocol kernel { merge paths yes; persist; import filter default_route; export all; } protocol ospf mgmt { rfc1583compat yes; import all; export none; ecmp yes; area 0.0.0.0 { interface "blue" { }; interface "orange" { }; interface "lo" { stub yes; }; }; } protocol direct { interface br-local; }
reload / restart незважаючи на те, що в proto ospf чітко написано - "export none", на другому кінці бачу адреси локального бріджа -
bird> show route protocol mgmt [ ... ] 100.64.4.0/23 multipath [mgmt 13:49:33] * I (150/20) [100.64.4.1] via 100.64.98.3 on blue weight 1 via 100.64.99.3 on orange weight 1
капець, яке воно дивне. Є ідеї що з цим робити ? Ну крім поставити FRR...
On 2/7/24 14:01, Volodymyr Litovka wrote:
Привіт,
щось я не можу роздуплити логіку Bird :-(
Є, умовно, два хости, зв'язані між собою напряму через eth-інтерфейс. Піднято OSPF та iBGP. На кожному хості є локальний брідж та лупбек. Я хочу, щоб
- OSPF обмінювався виключно інформацією про інтерфейси та лупбеки - BGP (між лупбеками) анонсував все інше - локальний брідж та мережі, отримані по eBGP
по першому нібито ясно -
protocol kernel { import none; export all; }
protocol ospf blah { import all; export none; area 0.0.0.0 { interface eth1 { }; interface lo { stub yes; }; }; }
питання по другому пункту - як сказати бьорду анонсувати мережу локального бріджа? В Cisco/FRR таке робиться за допомогою стейтмента 'network x.x.x.x/x', а як це зробити в пташці?
Дякую.
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison _______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
хай
Ти чув коли-небудь про дмарк? чи ти вже звик, що користувачі з гмєйла твої
листи не отримують, бо воно все у спам падає
Будьте обережні з цим листом
Повідомлення не автентифіковано на стороні відправника, тому Пошта vpm не
може підтвердити, що воно надійшло саме від нього. Не натискайте посилання,
не завантажуйте вкладені файли й не надсилайте у відповідь особисту
інформацію.
ср, 7 лют. 2024 р. о 15:58 Volodymyr Litovka
Нє, шось я тупо не розумію, як воно працює.
На "правому" хості -
filter default_route { if ( net = 0.0.0.0/0 ) then { accept; } reject; } protocol kernel { merge paths yes; persist; import filter default_route; export all; } protocol ospf mgmt { rfc1583compat yes; import all; export none; ecmp yes; area 0.0.0.0 { interface "blue" { }; interface "orange" { }; interface "lo" { stub yes; }; }; } protocol direct { interface br-local; }
reload / restart незважаючи на те, що в proto ospf чітко написано - "export none", на другому кінці бачу адреси локального бріджа -
bird> show route protocol mgmt [ ... ] 100.64.4.0/23 multipath [mgmt 13:49:33] * I (150/20) [100.64.4.1] via 100.64.98.3 on blue weight 1 via 100.64.99.3 on orange weight 1
капець, яке воно дивне. Є ідеї що з цим робити ? Ну крім поставити FRR...
On 2/7/24 14:01, Volodymyr Litovka wrote:
Привіт,
щось я не можу роздуплити логіку Bird :-(
Є, умовно, два хости, зв'язані між собою напряму через eth-інтерфейс. Піднято OSPF та iBGP. На кожному хості є локальний брідж та лупбек. Я хочу, щоб
- OSPF обмінювався виключно інформацією про інтерфейси та лупбеки - BGP (між лупбеками) анонсував все інше - локальний брідж та мережі, отримані по eBGP
по першому нібито ясно -
protocol kernel { import none; export all; }
protocol ospf blah { import all; export none; area 0.0.0.0 { interface eth1 { }; interface lo { stub yes; }; }; }
питання по другому пункту - як сказати бьорду анонсувати мережу локального бріджа? В Cisco/FRR таке робиться за допомогою стейтмента 'network x.x.x.x/x', а як це зробити в пташці?
Дякую.
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
_______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
_______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
Давно смотрел... Кажется нужны примерно такие блоки protocol direct -- чтобы брало адреса с интерфейсов protocol kernel -- чтобы меняло FIB В самом OSPF protocol ospf v2 { ipv4 { import filter { # ospf -> fib } export filter { # misc -> ospf } } ipv6 { # ?? import filter { # ospf -> fib } export filter { # misc -> ospf } } area 0.0.0.0 { networks {} interface "xxx" { } } } И если не ошибаюсь import/export в неочевидную сторону 07.02.2024 15:01, Volodymyr Litovka пишет:
Привіт,
щось я не можу роздуплити логіку Bird :-(
Є, умовно, два хости, зв'язані між собою напряму через eth-інтерфейс. Піднято OSPF та iBGP. На кожному хості є локальний брідж та лупбек. Я хочу, щоб
- OSPF обмінювався виключно інформацією про інтерфейси та лупбеки - BGP (між лупбеками) анонсував все інше - локальний брідж та мережі, отримані по eBGP
по першому нібито ясно -
protocol kernel { import none; export all; }
protocol ospf blah { import all; export none; area 0.0.0.0 { interface eth1 { }; interface lo { stub yes; }; }; }
питання по другому пункту - як сказати бьорду анонсувати мережу локального бріджа? В Cisco/FRR таке робиться за допомогою стейтмента 'network x.x.x.x/x', а як це зробити в пташці?
Дякую.
_______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
ну от протокол Direct типу те, що треба, але в документації сказано - "The question is *whether it is a good idea to have such device routes in BIRD routing table*. OS kernel usually handles device routes for directly connected networks by itself so we don't need (and don't want) to export these routes to the kernel protocol. OSPF protocol creates device routes for its interfaces itself and *BGP protocol is usually used for exporting aggregate routes*." Власне тому я морочусь питанням - якщо документація посилається на _інший_ шлях анонсування, то як його в конфігурації описати? Ну й, власне, документація права - це в моєму випадку адреса на бріджі віповідає тому, що треба анонсити, але ж звичайно - ні, воно все розбито на підмережі, а аносувати краще агрегат. Ще один варіант, який, в теорії, підхопиться бегепою - protocol static { route bridge_ip/mask blackhole ; } ну, кароч, треба пробувати. Я гадав, що якимось чином існує прямий аналог 'network x.x.x.x/x', але, здається, таки немає On 2/7/24 14:16, Andrey Blochintsev wrote:
Давно смотрел... Кажется нужны примерно такие блоки protocol direct -- чтобы брало адреса с интерфейсов protocol kernel -- чтобы меняло FIB В самом OSPF protocol ospf v2 { ipv4 { import filter { # ospf -> fib } export filter { # misc -> ospf } } ipv6 { # ?? import filter { # ospf -> fib } export filter { # misc -> ospf } } area 0.0.0.0 { networks {} interface "xxx" { } } } И если не ошибаюсь import/export в неочевидную сторону
07.02.2024 15:01, Volodymyr Litovka пишет:
Привіт,
щось я не можу роздуплити логіку Bird :-(
Є, умовно, два хости, зв'язані між собою напряму через eth-інтерфейс. Піднято OSPF та iBGP. На кожному хості є локальний брідж та лупбек. Я хочу, щоб
- OSPF обмінювався виключно інформацією про інтерфейси та лупбеки - BGP (між лупбеками) анонсував все інше - локальний брідж та мережі, отримані по eBGP
по першому нібито ясно -
protocol kernel { import none; export all; }
protocol ospf blah { import all; export none; area 0.0.0.0 { interface eth1 { }; interface lo { stub yes; }; }; }
питання по другому пункту - як сказати бьорду анонсувати мережу локального бріджа? В Cisco/FRR таке робиться за допомогою стейтмента 'network x.x.x.x/x', а як це зробити в пташці?
Дякую.
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison _______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
Вітаю. Саме так і працює: protocol static { route X.X.X.X/X unreachable; } 07.02.24 15:28, Volodymyr Litovka:
ну от протокол Direct типу те, що треба, але в документації сказано - "The question is *whether it is a good idea to have such device routes in BIRD routing table*. OS kernel usually handles device routes for directly connected networks by itself so we don't need (and don't want) to export these routes to the kernel protocol. OSPF protocol creates device routes for its interfaces itself and *BGP protocol is usually used for exporting aggregate routes*."
Власне тому я морочусь питанням - якщо документація посилається на _інший_ шлях анонсування, то як його в конфігурації описати? Ну й, власне, документація права - це в моєму випадку адреса на бріджі віповідає тому, що треба анонсити, але ж звичайно - ні, воно все розбито на підмережі, а аносувати краще агрегат.
Ще один варіант, який, в теорії, підхопиться бегепою -
protocol static { route bridge_ip/mask blackhole ; }
ну, кароч, треба пробувати. Я гадав, що якимось чином існує прямий аналог 'network x.x.x.x/x', але, здається, таки немає
On 2/7/24 14:16, Andrey Blochintsev wrote:
Давно смотрел... Кажется нужны примерно такие блоки protocol direct -- чтобы брало адреса с интерфейсов protocol kernel -- чтобы меняло FIB В самом OSPF protocol ospf v2 { ipv4 { import filter { # ospf -> fib } export filter { # misc -> ospf } } ipv6 { # ?? import filter { # ospf -> fib } export filter { # misc -> ospf } } area 0.0.0.0 { networks {} interface "xxx" { } } } И если не ошибаюсь import/export в неочевидную сторону
07.02.2024 15:01, Volodymyr Litovka пишет:
Привіт,
щось я не можу роздуплити логіку Bird :-(
Є, умовно, два хости, зв'язані між собою напряму через eth-інтерфейс. Піднято OSPF та iBGP. На кожному хості є локальний брідж та лупбек. Я хочу, щоб
- OSPF обмінювався виключно інформацією про інтерфейси та лупбеки - BGP (між лупбеками) анонсував все інше - локальний брідж та мережі, отримані по eBGP
по першому нібито ясно -
protocol kernel { import none; export all; }
protocol ospf blah { import all; export none; area 0.0.0.0 { interface eth1 { }; interface lo { stub yes; }; }; }
питання по другому пункту - як сказати бьорду анонсувати мережу локального бріджа? В Cisco/FRR таке робиться за допомогою стейтмента 'network x.x.x.x/x', а як це зробити в пташці?
Дякую.
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
_______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
_______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
То есть ты хочешь, чтобы в RIB появился агрегат, которого в FIB нет? Может и умеет, не помню. А сделать агрегат в static и потом запихнуть в BGP/OSPF - так должно работать. Ну и если использовать direct - то не обязательно все втягивать в другие протоколы import/export filter же есть 07.02.2024 15:28, Volodymyr Litovka пишет:
ну от протокол Direct типу те, що треба, але в документації сказано - "The question is *whether it is a good idea to have such device routes in BIRD routing table*. OS kernel usually handles device routes for directly connected networks by itself so we don't need (and don't want) to export these routes to the kernel protocol. OSPF protocol creates device routes for its interfaces itself and *BGP protocol is usually used for exporting aggregate routes*."
Власне тому я морочусь питанням - якщо документація посилається на _інший_ шлях анонсування, то як його в конфігурації описати? Ну й, власне, документація права - це в моєму випадку адреса на бріджі віповідає тому, що треба анонсити, але ж звичайно - ні, воно все розбито на підмережі, а аносувати краще агрегат.
Ще один варіант, який, в теорії, підхопиться бегепою -
protocol static { route bridge_ip/mask blackhole ; }
ну, кароч, треба пробувати. Я гадав, що якимось чином існує прямий аналог 'network x.x.x.x/x', але, здається, таки немає
On 2/7/24 14:16, Andrey Blochintsev wrote:
Давно смотрел... Кажется нужны примерно такие блоки protocol direct -- чтобы брало адреса с интерфейсов protocol kernel -- чтобы меняло FIB В самом OSPF protocol ospf v2 { ipv4 { import filter { # ospf -> fib } export filter { # misc -> ospf } } ipv6 { # ?? import filter { # ospf -> fib } export filter { # misc -> ospf } } area 0.0.0.0 { networks {} interface "xxx" { } } } И если не ошибаюсь import/export в неочевидную сторону
07.02.2024 15:01, Volodymyr Litovka пишет:
Привіт,
щось я не можу роздуплити логіку Bird :-(
Є, умовно, два хости, зв'язані між собою напряму через eth-інтерфейс. Піднято OSPF та iBGP. На кожному хості є локальний брідж та лупбек. Я хочу, щоб
- OSPF обмінювався виключно інформацією про інтерфейси та лупбеки - BGP (між лупбеками) анонсував все інше - локальний брідж та мережі, отримані по eBGP
по першому нібито ясно -
protocol kernel { import none; export all; }
protocol ospf blah { import all; export none; area 0.0.0.0 { interface eth1 { }; interface lo { stub yes; }; }; }
питання по другому пункту - як сказати бьорду анонсувати мережу локального бріджа? В Cisco/FRR таке робиться за допомогою стейтмента 'network x.x.x.x/x', а як це зробити в пташці?
Дякую.
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
_______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
_______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
От я зазвичай роблю саме так (protocol static, route .. drop; )
Але подекуди буває зручно саме щоб директ реаннонсило по мережі, просто підняв десь інтерфейс - а воно само все зробило, без зміни конфігів, інтерфейс розтікся по мережі.
Тоді треба protocol direct, import all; (або import filter ... якщо треба).
Якщо bird використовувати серьозно та багато, краще купити у Maria підписку сапорту.
On Wed, 7 Feb 2024 14:28:24 +0100
Volodymyr Litovka
ну от протокол Direct типу те, що треба, але в документації сказано - "The question is *whether it is a good idea to have such device routes in BIRD routing table*. OS kernel usually handles device routes for directly connected networks by itself so we don't need (and don't want) to export these routes to the kernel protocol. OSPF protocol creates device routes for its interfaces itself and *BGP protocol is usually used for exporting aggregate routes*."
Власне тому я морочусь питанням - якщо документація посилається на _інший_ шлях анонсування, то як його в конфігурації описати? Ну й, власне, документація права - це в моєму випадку адреса на бріджі віповідає тому, що треба анонсити, але ж звичайно - ні, воно все розбито на підмережі, а аносувати краще агрегат.
Ще один варіант, який, в теорії, підхопиться бегепою -
protocol static { route bridge_ip/mask blackhole ; }
ну, кароч, треба пробувати. Я гадав, що якимось чином існує прямий аналог 'network x.x.x.x/x', але, здається, таки немає
On 2/7/24 14:16, Andrey Blochintsev wrote:
Давно смотрел... Кажется нужны примерно такие блоки protocol direct -- чтобы брало адреса с интерфейсов protocol kernel -- чтобы меняло FIB В самом OSPF protocol ospf v2 { ipv4 { import filter { # ospf -> fib } export filter { # misc -> ospf } } ipv6 { # ?? import filter { # ospf -> fib } export filter { # misc -> ospf } } area 0.0.0.0 { networks {} interface "xxx" { } } } И если не ошибаюсь import/export в неочевидную сторону
07.02.2024 15:01, Volodymyr Litovka пишет:
Привіт,
щось я не можу роздуплити логіку Bird :-(
Є, умовно, два хости, зв'язані між собою напряму через eth-інтерфейс. Піднято OSPF та iBGP. На кожному хості є локальний брідж та лупбек. Я хочу, щоб
- OSPF обмінювався виключно інформацією про інтерфейси та лупбеки - BGP (між лупбеками) анонсував все інше - локальний брідж та мережі, отримані по eBGP
по першому нібито ясно -
protocol kernel { import none; export all; }
protocol ospf blah { import all; export none; area 0.0.0.0 { interface eth1 { }; interface lo { stub yes; }; }; }
питання по другому пункту - як сказати бьорду анонсувати мережу локального бріджа? В Cisco/FRR таке робиться за допомогою стейтмента 'network x.x.x.x/x', а як це зробити в пташці?
Дякую.
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
participants (5)
-
Andrey Blochintsev
-
Max Tulyev
-
VASYL MELNYK
-
Volodymyr Litovka
-
Volodymyr O. Pidgornyi