Балансировка нагрузки на исходящий трафик при использовании openbgpd на freebsd


8

Я использую 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

Ответы:


2

Я не использовал openbgpd в течение многих лет, поэтому я дам вам теорию, которую вы можете применить к своей конфигурации.

Провайдер может отправлять вам маршруты. Обычно они отправляют «по умолчанию», «клиенты» или «полный». Маршрут по умолчанию таков: вам объявлено 0.0.0.0/0, и вы знаете, что через него будет проходить 0.0.0.0/0 (любой IP). В вашей ситуации звучит так, будто оба провайдера передают вам маршрут по умолчанию, и, скорее всего, тот, у кого более низкий ASN, получает весь трафик (ASN является прерывателем связей, когда пакет может идти по нескольким получателям, а пути AS равны длина и т. д.).

В ленте «клиентов» они будут объявлять каждый маршрут, который напрямую связан с ними. Если у вас есть провайдер, такой как Level3, вы, вероятно, увидите половину интернета через этот канал. Если у вашего другого провайдера более низкий ASN, он получит любой трафик, который не был напрямую связан с партнером, объявляя вам маршруты своих клиентов.

«Полный» фид будет содержать объявления о маршрутах для каждого сайта, к которому провайдер знает, как добраться, а не только тех, которые напрямую связаны.

Вы должны быть в состоянии сделать что-то вроде:

show ip bgp summary (команда IOS)

который должен перечислить количество префиксов, полученных где-то.

Если оба ваших существующих провайдера отправляют вам маршрут по умолчанию, то ваше соединение в настоящее время настроено на отработку отказа. Провайдер A выходит из строя, после чего вы будете перенаправлять его к провайдеру B. Если вы берете фиды клиентов с обоих вместе с маршрутом по умолчанию, трафик будет перенаправляться провайдеру, у которого самый короткий путь ASpath для достижения заданного адреса, и будет возвращаться к значению по умолчанию маршрут, если он не может найти адрес. Если вы получили полный канал от обоих, в зависимости от совпадения между провайдерами, вы бы отправили трафик по «лучшему» пути к каждому.

На одном из наших пограничных маршрутизаторов я показываю 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 имеет аналогичные методы.


3

BGP не является протоколом балансировки нагрузки.

Позвольте мне повторить, что BGP НЕ является протоколом балансировки нагрузки.

Если весь трафик выходит за одно соединение, я думаю, что вы не получаете полный канал от провайдера, который игнорируется. Маршрутизация такова, что приоритет отдается более конкретным маршрутам, поэтому, если у вас есть маршрут 192.168.0.0/23, идущий к провайдеру a, и два маршрута 192.168.0.0/24 и 192.168.1.0/24, идущие к провайдеру b, провайдеру будет полностью игнорироваться. Я не знаком с OpenBGP. Поэтому я не могу рассказать вам, как проверить некоторые вещи, не глядя. Но первое, что вам нужно сделать, это убедиться, что ОБА провайдеры предоставляют вам полный канал, а не просто маршрут по умолчанию.

Если это так, то вам нужно изучить предпочтения маршрута для исходящего трафика и заполнение пути для входящего трафика. Обязательно подождите от двадцати четырех до сорока восьми часов между изменениями конфигурации, чтобы убедиться, что у вас достаточно большой набор данных для определения эффективности ваших изменений.


1

Построить мост. Freebsd на самом деле будет загружать баланс на восходящие функции текущих префиксов и будет достаточно хорошо балансировать нагрузку. BGP не будет. Вы можете установить как вышестоящего интернет-провайдера, так и объявить обоим интернет-провайдеру в соответствии с вашим / 22, и, скорее всего, вы отклоните ваши префиксы / 30 wan, но iBGP это поймет. iBGP будет хорошо работать на мосту, и тогда не будет необходимости в OSPF. Теперь у вас есть балансировщик нагрузки и полностью резервная настройка BGP. У нас их несколько, и мы любим их на концертных ссылках в Интернете.


1

Первое, что нужно проверить, это то, действительно ли оба сеанса BGP работают. использование

bgpctl показать резюме

И посмотрите, если у вас есть обмен сообщениями с обоими пирами.

И вы должны убрать «объявить все», если вы не хотите, чтобы вы перенаправляли их трафик через вас, что, как правило, противоположно;

Просто убери анонс всего и у тебя все будет хорошо.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.