Это настройка данной копии протокола Pipe.
Псевдо-протокол Pipe осуществляет обмен маршрутами между двумя таблицами BIRD.
Основное назначение множественных таблиц и протокола Pipe состоит в обеспечении маршрутизации на основе совокупности критериев (policy routing), при которой решение относительно дальнейшей передачи пакета принимается на основе не только его адреса назначения, но также адреса источника, входного интерфейса, протокола 4 уровня и других параметров. Ядро Linux позволяет реализовать такие политики с помощью множественных таблиц маршрутизации, выбор между которыми производится именно на основе этих расширенных критериев. Правила для такого выбора (routing rules) устанавливаются вне рамок BIRD; для того, чтобы отразить эту многозначность в BIRD, следует создать несколько таблиц BIRD, связать их с соответствующими таблицами ядра и управлять передачей маршрутов из одной таблицы в другую при помощи фильтров. При этом Pipe используется для передачи выбранного подмножества маршрутов из одной таблицы BIRD в другую.
Настройки протокола выполняются применительно к одной из таблиц, которая является для него первичной (table); помимо неё, обязательным параметром является вторичная таблица (peer-table). Направление операций экспорта-импорта подразумевается по отношению к первичной таблице, т.е. перенос маршрутов из первичной таблицы во вторичную называется экспортом, из вторичной в первичную — импортом.
Использовать отладчик.
(из документации BIRD) Маршрутизатор является граничным между двумя автономными системами. Каждая AS подключена к своей группе интерфейсов и имеет свой собственный выход во внешний мир. Требуется использовать каждую из систем в качестве резервного выхода для другой на случай, если у той откажет штатный канал связи с внешним миром.
Простейшее решение состоит в том, чтобы создать две таблицы маршрутизации (as1 и as2) и настроить правила маршрутизации в ядре Linux (в данной версии — только средствами ОС Linux) таким образом, чтобы пакеты, входящие с интерфейсов первой AS, маршрутизировались по таблице ядра 1, а с интерфейсов второй AS — по таблице 2. Таким образом, маршрутизатор, по существу, разделяется на два логических устройства, каждое из которых имеет свою таблицу маршрутизации и использует свой собственный набор протоколов маршрутизации на своём собственном наборе интерфейсов. Для того, чтобы добавить в эту таблицу маршруты через другую автономную систему как резервные, они передаются между таблицами BIRD по протоколу Pipe, при этом понижается их приоритет и корректируются пути BGP в соответствии с переходом через границу AS.
dynamic-routing
: table # Define the tables
: : 1 = "as1"
: : 2 = "as2"
: kernel
: : 1 # Synchronize them with the kernel
: : : table = "as1"
: : : kernel-table = 1
: : 2
: : table = "as2"
: : kernel-table = 2
: bgp # The outside connections
: : 1
: : : table = "as1"
: : : local-as = "0.0.0.1"
: : : neighbor-ip = "192.168.0.1"
: : : neighbor-as = "0.0.3.233"
: : : export = "all"
: : : import = "all"
: : 2
: : : table = "as2"
: : : local-as = "0.0.0.2"
: : : neighbor-ip = "10.0.0.1"
: : : neighbor-as = "0.0.3.234"
: : : export = "all"
: : : import = "all"
: pipe # The Pipe
: : 1
: : : table = "as1"
: : : peer-table = "as2"
: : : export = "filter { if net ~ [ 1.0.0.0/8+] then { if preference>10 then preference = preference-10;if source=RTS_BGP then bgp_path.prepend(1); accept; } reject; }"
: : : import = "filter { if net ~ [ 2.0.0.0/8+] then { if preference>10 then preference = preference-10;if source=RTS_BGP then bgp_path.prepend(2); accept; } reject; }"
| © Network Systems Group 2015–2025 | Отдел документации |