Jump to content

Recommended Posts

Posted (edited)

Здравствуйте.

Прошу помощи, т.к. моих знаний немного не хватает, с протоколом BGP знаком довольно слабо. Есть пограничный маршрутизатор J-mx80, два вышестоящих провайдера, с ними поднят BGP, от обоих получаю фулвью. Провайдер А дает полосу 1,5Гб/с, провайдер Б - 200мб/с. С балансировкой входящего трафика разобрался (add as-prepend и анонсами сетей), а вот с исходящим беда. Большая часть трафика идет через провайдера Б (через него маршруты короче), соответственно забивается полоса пропускания в 200мб, другая часть трафика идет через провайдера А. Нужно чтобы весь трафик уходил через провайдера А, кроме сетей, указанных в пбр. Хотел поменять значение Local Pref, но не получилось. Прописал значение для конкретных нейборов, но после обновления маршрутов, значение Local Pref в них осталось дефолтное. Собственно вопрос, что я криво настроил, и так ли вообще сделал? Вот конфиг:

root@BR#show protocols bgp

path-selection cisco-non-deterministic;

advertise-inactive;

no-aggregator-id;

mtu-discovery;

out-delay 0;

log-updown;

local-as 12345;

group Uplink {

type external;

description "Uplink to inet";

multipath multiple-as;

neighbor x.x.x.x {

description "Провайдер А";

local-preference 200;

local-address x.x.x.1;

export AllNets;

peer-as XXX;

}

neighbor y.y.y.y {

description "Провайдер Б";

local-preference 150;

local-address y.y.y.1;

export SomeNets;

peer-as YYY;

 

Заранее спасибо!

Edited by Andy_999
Posted
Прошу помощи, т.к. моих знаний немного не хватает, с протоколом BGP знаком довольно слабо.

 

Зачем же ты тогда понапрописывал команды, которые в твоем случае не будут использоваться?

 

Нужно чтобы весь трафик уходил через провайдера А, кроме сетей, указанных в пбр.

 

Это твои префиксы или те, на которые ты стучишься? Типо, "идем на гугл - значит сюды, яндыкс - сюды"

 

и роутмап выкладывай

Posted

Зачем же ты тогда понапрописывал команды, которые в твоем случае не будут использоваться?

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

 

Это твои префиксы или те, на которые ты стучишься? Типо, "идем на гугл - значит сюды, яндыкс - сюды"

нужно чтобы трафик с определенных source ip, шел на конкретный next-hop. Типо, "префикс1 идем next-hop провайдер А, префикс 2 - next-hop пров Б"

вот роут мапы, если я правильно понял:

 

policy-statement AllNets {

term "Announce accept" {

from {

prefix-list-filter "77.94.162.0/23 tn" exact;

prefix-list-filter "77.94.178.0/23 tn" exact;

prefix-list-filter "77.94.184.0/23 tn" exact;

prefix-list-filter "77.94.188.0/24 tn" exact;

prefix-list-filter "77.94.190.0/23 tn" exact;

prefix-list-filter "84.47.128.0/23 IDC" exact;

prefix-list-filter "84.47.154.0/23 ns" exact;

prefix-list-filter "84.47.184.0/23 ns" exact;

prefix-list-filter "85.91.108.0/22 ns" exact;

prefix-list-filter "85.91.116.0/22 ns" exact;

prefix-list-filter "91.219.72.0/22 ns" exact;

prefix-list-filter "91.205.200.0/22 ITCentr" exact;

prefix-list-filter "213.208.160.0/24 ns" exact;

prefix-list-filter "213.208.176.0/24 STV" exact;

prefix-list-filter "213.208.184.0/23 ns" exact;

prefix-list-filter "213.208.161.0/24 STV" exact;

prefix-list-filter "95.215.12.0/22 Smarts" exact;

prefix-list-filter "77.94.172.0/23 ns" exact;

prefix-list-filter "188.0.192.0/19 tn" exact;

prefix-list-filter "81.162.0.0/20 tn" exact;

prefix-list-filter "81.162.16.0/21 tn" exact;

prefix-list-filter "91.233.28.0/22 ns" exact;

}

then accept;

}

term "Announce reject" {

then reject;

}

}

policy-statement SomeNets {

term "Announce accept" {

from {

prefix-list-filter "77.94.172.0/23 ns" exact;

prefix-list-filter "84.47.154.0/23 ns" exact;

prefix-list-filter "84.47.128.0/23 IDC" exact;

prefix-list-filter "84.47.184.0/23 ns" exact;

prefix-list-filter "85.91.108.0/22 ns" exact;

prefix-list-filter "85.91.116.0/22 ns" exact;

prefix-list-filter "91.219.72.0/22 ns" exact;

prefix-list-filter "91.205.200.0/22 ITCentr" exact;

prefix-list-filter "213.208.160.0/24 ns" exact;

prefix-list-filter "213.208.176.0/24 STV" exact;

prefix-list-filter "213.208.184.0/23 ns" exact;

prefix-list-filter "213.208.161.0/24 STV" exact;

prefix-list-filter "95.215.12.0/22 Smarts" exact;

prefix-list-filter "91.233.28.0/22 ns" exact;

}

then {

as-path-prepend "34829 34829 34829";

accept;

}

}

term "Announce reject" {

then reject;

}

}

 

 

Posted

нужно чтобы трафик с определенных source ip, шел на конкретный next-hop. Типо, "префикс1 идем next-hop провайдер А, префикс 2 - next-hop пров Б"

еще как вариант, исходящий трафик шел через провайдера А, но в случае падения последнего трафик шел через Провайдер Б. поэтому я и хочу использовать аттрибут Local Pref.

Posted (edited)

Во входящие анонсы от провайдера Б вставь препенды (номер АС провайдера Б), чтобы маршруты получаемые через А стали приоритетнее.

Можно конечно весами попробовать, но будет или-или скорее всего.

Edited by anix
Posted

а загрузку интерфейсов смотрели?

да, тот что на 200мб забит исходящим трафиком.

Во входящие анонсы от провайдера Б вставь препенды (номер АС провайдера Б), чтобы маршруты получаемые через А стали приоритетнее.

спасибо за совет, попробую так.

 

все же интересно насчет local pref. данный атрибут надо вешать на анонсы от других провайдеров? т.е. создаю политику импорта, в ней прописываю изменять аттрибут local pref? или это локальный аттрибут, добавляемый роутером в таблице маршрутизации?

Posted

Префикс-листы у вас сделаны предельно идиотски - это касается и имени префикс-листов (это ж надо додуматься использовать в них имена сетей и описание с пробелами!) и политики exact (очень будет смешно, когда апстрим захочет вместо указанных у вас "/23 exact" анонсировать две по /24) и общей их организации.

 

Чтобы было понятно, как это должно выглядеть (хоть и это у меня не идеал), вот пример взятого наугад пира:

 

dyr@rj39> show configuration protocols bgp group ebgp-spb-ix neighbor 194.226.102.79
description seanet-spb-ix;
import ebgp-import-seanet-spb-ix;
peer-as 31444;

dyr@rj39> show configuration policy-options policy-statement ebgp-import-seanet-spb-ix
term pass-filter {
   from {
       prefix-list pl-as-seanet;
   }
   then {
       metric 200;
       community set comm-ebgp-spb-ix;
       accept;
   }
}
term deny-any {
   then reject;
}


dyr@rj39> show configuration policy-options prefix-list pl-as-seanet
83.68.32.0/20;
83.68.60.0/22;
194.1.198.0/24;
212.113.103.0/24;

 

 

 

 

 

 

все же интересно насчет local pref. данный атрибут надо вешать на анонсы от других провайдеров? т.е. создаю политику импорта, в ней прописываю изменять аттрибут local pref? или это локальный аттрибут, добавляемый роутером в таблице маршрутизации?

Это локальный (распространяется только в пределах вашей AS) атрибут.

 

Quick start: http://xgu.ru/wiki/BGP#Well-known_discretionary

 

 

 

Posted

Префикс-листы у вас сделаны предельно идиотски - это касается и имени префикс-листов

очень удобно управлять сетями, любую подсеть можно анонсировать в любой пир.

(это ж надо додуматься использовать в них имена сетей и описание с пробелами!)

а как мне их назвать? сеть1, сеть2, сеть побольше1, sdfgsdfg! ? :D

(очень будет смешно, когда апстрим захочет вместо указанных у вас "/23 exact" анонсировать две по /24)

такого не бывает.

Во входящие анонсы от провайдера Б вставь препенды (номер АС провайдера Б), чтобы маршруты получаемые через А стали приоритетнее.

Можно конечно весами попробовать, но будет или-или скорее всего.

спасибо за идею! все теперь как надо.

Posted

Andy_999, да я вас уговаривать-то не собираюсь. Верите, что анонсируют всегда aggregated-сети, продолжайте верить. Удобно пользоваться такими извращёнными префикс-листами - пользуйтесь. Посмотрим, что скажете где-нибудь через несколько месяцев. :)

Posted

хм. А что будет если упадет провайдер которому вы анонсируете AllNets? Судя по вашим настройкам у вас часть сети останется без связи несмотря на то что второй провайдер работает.

Posted
(очень будет смешно, когда апстрим захочет вместо указанных у вас "/23 exact" анонсировать две по /24)
такого не бывает.

бывает, к сожалению. и когда с аплинка прилетают свои же сети, но как more specific - это очень весело

Posted

Andy_999, да я вас уговаривать-то не собираюсь. Верите, что анонсируют всегда aggregated-сети, продолжайте верить. Удобно пользоваться такими извращёнными префикс-листами - пользуйтесь. Посмотрим, что скажете где-нибудь через несколько месяцев. :)

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

хм. А что будет если упадет провайдер которому вы анонсируете AllNets? Судя по вашим настройкам у вас часть сети останется без связи несмотря на то что второй провайдер работает.

увы это так. провайдер Б - резерв под особо важных клиентов. сделать норм резерв не получается по объективным причинам.

Posted
вообще, любой пользователь обязан анонсировать сети в точности так, как они прописаны на райпе.

 

Гггг, спасибо, насмешили. В RIPE import и export прописывается в терминах as-num, а вовсе не в network address. И вы свои сети можете анонсировать хоть по /32 (хотя, конечно, столь мелкие сети никто вменяемый принимать у вас не будет).

Posted

Andy_999, вам нужно делать через import policy. Параметр local-preference в конфиге пира указывает на то какой localpref вы анонсируете сами. На ebgp сессии его ставить бесполезно. Пример импортной политики:

 

agr@rt> show configuration policy-options policy-statement uplink-in
term uplinlk1 {
   from protocol bgp;
   then {
       local-preference 200;
       accept;
   }
}

 

Dyr, а вы специально выставляете MED на входящем анонсе или перепутали с localpref? Если от другого пира придет тот же префикс с меньшим as-path, то метрика роли не сыграет.

Posted

Гггг, спасибо, насмешили. В RIPE import и export прописывается в терминах as-num, а вовсе не в network address. И вы свои сети можете анонсировать хоть по /32 (хотя, конечно, столь мелкие сети никто вменяемый принимать у вас не будет).

А как же route object?

Posted (edited)

agr, если правильно помню, то выставлял специально. Чтобы пир, с которым мы обмениваемся трафиком через Route Reflector и напрямую, на SPB-IX, шёл при прочих равных через прямой канал (AS-PATH в обоих случаях одинаков):

 


dyr@rj39> show route 46.231.208.0/21 exact

inet.0: 394997 destinations, 791338 routes (394996 active, 0 holddown, 313 hidden)
Restart Complete
+ = Active Route, - = Last Active, * = Both

46.231.208.0/21    *[bGP/170] 1w1d 07:19:32, MED 200, localpref 100
                     AS path: 8492 I
                   > to 194.226.102.81 via ge-2/0/3.4011
                   [bGP/170] 01:35:32, MED 250, localpref 100, from 194.226.100.100
                     AS path: 8492 I
                   > to 194.226.100.81 via ge-2/0/3.4011
                   [bGP/170] 01:35:48, MED 250, localpref 100, from 194.226.102.100
                     AS path: 8492 I
                   > to 194.226.102.81 via ge-2/0/3.4011
[ ...skipped...]

 

 

194.226.100.100 и 194.226.102.100 - адрес RR, 194.226.102.81 - прямой пир.

Edited by Dyr
Posted
А как же route object?

 

В RFC 2622 не говорится ничего о том, что вы обязаны анонсировать в том же виде, в котором записана сеть. Более того, для точного описания сети с префиксами нужно в route object дописывать опциональные параметры : aggr-bndry, aggr-mtd, export-comps, inject и holes.

 

 

Кстати, в свежем RIPE'овском Resource Certification PKI можно и даже нужно (дефолтного значения нет) задавать вплоть до какой маски разрешается анонсировать сеть.

 

 

Posted (edited)

Andy_999, вам нужно делать через import policy. Параметр local-preference в конфиге пира указывает на то какой localpref вы анонсируете сами. На ebgp сессии его ставить бесполезно. Пример импортной политики:

 

agr@rt> show configuration policy-options policy-statement uplink-in
term uplinlk1 {
   from protocol bgp;
   then {
       local-preference 200;
       accept;
   }
}

 

Dyr, а вы специально выставляете MED на входящем анонсе или перепутали с localpref? Если от другого пира придет тот же префикс с меньшим as-path, то метрика роли не сыграет.

спасибо, я уже все сделал через as-path prepend. за инфу про local pref отдельное спасибо :)

Edited by Andy_999

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.