Балансировка нагрузки на исходящий трафик при использовании openbgpd на freebsd
Я использую openbgpd во FreeBSD с 2 соединениями ISP. У меня есть свой номер AS и сеть /22. В настоящее время я рекламирую всю /22 для обеих сетей. Входящий трафик поступает, но мой исходящий трафик идет по одной ссылке.
Я хотел бы либо распределить исходящий трафик через обе ссылки, чтобы исходящий трафик также был сбалансирован по нагрузке.
Как настроить это с помощью openbgpd в freebsd?
Моя текущая конфигурация openbgpd прилагается для справки.
AS 00my-as
listen on xx.xx.xx.x
router-id xx.xx.xx.x
network aa.aa.aa.0/22
group "ISP1" {
remote-as 11remoteas-1
neighbor bb.bb.bb.1 {
descr "ISP1"
announce all
}
}
group "ISP2" {
remote-as 22remoteas-2
neighbor cc.cc.cc.37 {
descr "ISP2"
announce all
}
}
deny from any
deny to any
allow from bb.bb.bb.1
allow to bb.bb.bb.1
allow from cc.cc.cc.37
allow to cc.cc.cc.37
4 ответа
Я не использовал openbgpd в течение многих лет, поэтому я дам вам некоторую теорию, которую вы можете применить к своей конфигурации.
Провайдер может отправлять вам маршруты. Обычно они отправляют "по умолчанию", "клиентов" или "полный". Маршрут по умолчанию таков: вам объявлено 0.0.0.0/0, и вы знаете, что через него будет проходить 0.0.0.0/0 (любой IP). В вашей ситуации звучит так, будто оба провайдера передают вам маршрут по умолчанию, и, скорее всего, тот, у кого более низкий ASN, получает весь трафик (ASN является прерывателем связей, когда пакет может идти по нескольким адресатам, а пути AS равны длина и т. д.).
В ленте "клиентов" они будут объявлять каждый маршрут, который напрямую связан с ними. Если у вас есть провайдер, такой как Level3, вы, вероятно, увидите половину интернета через этот канал. Если у вашего другого провайдера более низкий ASN, он получит любой трафик, который не был напрямую связан с партнером, объявляя вам маршруты своих клиентов.
"Полный" фид будет содержать объявления о маршрутах для каждого сайта, к которому провайдер знает, как добраться, а не только тех, которые напрямую связаны.
Вы должны быть в состоянии сделать что-то вроде:
show ip bgp summary (команда IOS)
который должен перечислить количество префиксов, полученных где-то.
Если оба ваших существующих провайдера отправляют вам маршрут по умолчанию, то ваше соединение в настоящее время настроено на отработку отказа. Провайдер А выходит из строя, после чего вы будете перенаправлять его к провайдеру B. Если вы берете фиды клиентов с обоих вместе с маршрутом по умолчанию, трафик будет перенаправляться к провайдеру, у которого самый короткий путь AS path для достижения заданного адреса, и будет возвращаться к значению по умолчанию. маршрут, если он не может найти адрес. Если вы получили полный канал от обоих, в зависимости от совпадения между провайдерами, вы бы отправили трафик по "лучшему" пути к каждому.
На одном из наших пограничных маршрутизаторов я показываю 310540 активных маршрутов, убедитесь, что у вас достаточно оперативной памяти и настроили машину для обработки маршрутов от обоих провайдеров, если вы используете полные маршруты. Вы можете экспериментировать с маршрутами клиентов от обоих, пока не почувствуете себя более комфортно. Или возьмите маршруты клиентов у меньшего поставщика из двух и посмотрите, как все меняется.
Это все еще не "балансирует нагрузку" и не разделяет трафик равномерно и в зависимости от вашего трафика. Вы можете обнаружить, что один провайдер по-прежнему получает львиную долю трафика. На этом этапе вам нужно будет сделать некоторые префиксы / карты маршрутов, чтобы скорректировать трафик, чтобы он предпочитал одного пира или другого.
После того, как вы настроите карты маршрутов или соответствие ASN для смещения вашего трафика, если сайт назначения выйдет из строя и их маршрут будет удален от этого провайдера, ваш маршрутизатор все равно будет отправлять трафик через другое соединение. BGP несколько самовосстанавливающийся.
Мы сделали несколько карт, которые соответствуют ASN.
PROVIDER_A_TO PROVIDER_A_THROUGH PROVIDER_B_TO PROVIDER_B_THROUGH
Juniper делает это проще, чем использование сообществ, но вы можете сделать и то и другое.
Наши списки префиксов показывают, является ли пункт назначения конкретным ASN, и если это так, он проходит через карту _TO. Если ASN указан в _THROUGH, он предпочтет этого провайдера. Так как один из наших провайдеров имеет прямое соединение с AT&T, PROVIDER_B_THROUGH соответствует 7018|7019 (и нескольким другим ASN), так что трафик AT & T по умолчанию предоставляется провайдеру B. Даже если AT & T доступен из обоих, мы предпочитаем отправлять его через провайдера B,
Я уверен, что openbgpd имеет аналогичные методы.
BGP не является протоколом балансировки нагрузки.
Позвольте мне повторить, что BGP НЕ является протоколом балансировки нагрузки.
Если весь трафик выходит за одно соединение, я думаю, что вы не получаете полный канал от провайдера, который игнорируется. Маршрутизация такова, что приоритет отдается более конкретным маршрутам, поэтому, если у вас есть маршрут 192.168.0.0/23, идущий к провайдеру a, и два маршрута 192.168.0.0/24 и 192.168.1.0/24, идущие к провайдеру b, провайдеру будет полностью игнорироваться. Я не знаком с OpenBGP. Поэтому я не могу рассказать вам о том, как проверить некоторые вещи, не глядя. Но первое, что вам нужно сделать, это убедиться, что ОБА провайдеры предоставляют вам полный канал, а не просто маршрут по умолчанию.
Если это так, то вам нужно изучить предпочтения маршрута для исходящего трафика и заполнение пути для входящего трафика. Обязательно подождите от двадцати четырех до сорока восьми часов между изменениями конфигурации, чтобы убедиться, что у вас достаточно большой набор данных для определения эффективности ваших изменений.
Первое, что нужно проверить, это то, действительно ли оба сеанса BGP работают. использование
bgpctl показать резюме
И посмотрите, если у вас есть обмен сообщениями с обоими пирами.
И вы должны убрать "объявить все", если вы не хотите, чтобы вы перенаправляли их трафик через вас, что, как правило, противоположно;
Просто убери анонс всего и у тебя все будет хорошо.
Построить мост. Freebsd на самом деле будет загружать баланс на восходящие функции текущих префиксов и будет достаточно хорошо балансировать нагрузку. BGP не будет. Вы можете установить как вышестоящего интернет-провайдера, так и объявить обоим интернет-провайдеру в соответствии с вашим /22, и, скорее всего, вы отклоните ваши префиксы /30 wan, но iBGP это поймет. iBGP будет хорошо работать на мосту, и тогда не будет необходимости в OSPF. Теперь у вас есть балансировщик нагрузки и полностью резервная настройка BGP. У нас их несколько, и мы любим их на концертных ссылках в Интернете.