Это настройка данной копии протокола 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–2024 | Отдел документации |