Для перемещения по дереву справки используйте строки заголовка.

Справка по NSG Linux 2.1.6
Дерево команд: ip.dynamic-routing.pipe.NUM.…далее…

Что это такое?

Это настройка данной копии протокола Pipe.

Зачем это нужно?

Псевдо-протокол Pipe осуществляет обмен маршрутами между двумя таблицами BIRD.

Основное назначение множественных таблиц и протокола Pipe состоит в обеспечении маршрутизации на основе совокупности критериев (policy routing), при которой решение относительно дальнейшей передачи пакета принимается на основе не только его адреса назначения, но также адреса источника, входного интерфейса, протокола 4 уровня и других параметров. Ядро Linux позволяет реализовать такие политики с помощью множественных таблиц маршрутизации, выбор между которыми производится именно на основе этих расширенных критериев. Правила для такого выбора (routing rules) устанавливаются вне рамок BIRD; для того, чтобы отразить эту многозначность в BIRD, следует создать несколько таблиц BIRD, связать их с соответствующими таблицами ядра и управлять передачей маршрутов из одной таблицы в другую при помощи фильтров. При этом Pipe используется для передачи выбранного подмножества маршрутов из одной таблицы BIRD в другую.

Как это настроить?

  1. Настроить общие параметры работы данной копии в системе BIRD: первичную рабочую таблицу BIRD, фильтры импорта и экспорта, описание и др.
  2. Указать вторичную рабочую таблицу BIRD.
  3. Выбрать режим передачи маршрутов из одной таблицы в другую.

Настройки протокола выполняются применительно к одной из таблиц, которая является для него первичной (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 Отдел документации