Wiki

Clone wiki

configs / network / hardware / cisco / routing / BGP

BGP

Префиксы

Получаем только default маршруты (ибо fullview от 2+ апстримов 3845 не выдержит). Для исключения ошибки на нейборы навешиваем префикс-лист DEFAULT_ONLY

ip prefix-list DEFAULT_ONLY seq 5 permit 0.0.0.0/0
router bgp 65000
 network 8.8.8.0 mask 255.255.255.0
 neighbor 1.1.1.1 remote-as 65001
 neighbor 1.1.1.1 prefix-list DEFAULT_ONLY in
 neighbor 1.1.1.1 route-map AS_ISP1_PREP out
 neighbor 2.2.2.2 remote-as 65002
 neighbor 2.2.2.2 prefix-list DEFAULT_ONLY in
 neighbor 2.2.2.2 route-map AS_ISP2_PREP out

Поднятие пира

Важно

Стоит постоянно помнить о том, что по умолчанию маршрутизатор будет анонсировать все маршруты всем пирам. Поэтому любого neighbor лучше создавать потушеным (просто правило хорошего тона):

router bgp 65000
 neighbor 1.1.1.1 shutdown
 neighbor 1.1.1.1 remote-as 65001

Не очень то работает, так что сначала все таки определяем remote-as и только потом тушим:

cs3845km(config-router)#neighbor 3.3.3.3 shutdown
% Specify remote-as or peer-group commands first

Ripe-db

После поднятия пира необходимо обновить запись в ripedb, объект aut-num

aut-num:        AS65000
as-name:        TEST-AS
descr:          Test
remarks:        Upstreams
import:         from AS65001 accept ANY
export:         to AS65001 announce AS65000
import:         from AS65002 accept ANY
export:         to AS65002 announce AS65000

Балансировка трафика

Входящий

Препенды

Балансировка входящего трафика осуществляется при помощи препендов. Для этого на каждого пира создаются отдельные роутмапы:

router bgp 65000
 neighbor 1.1.1.1 route-map AS_ISP1_PREP out
 neighbor 2.2.2.2 route-map AS_ISP2_PREP out

route-map AS_ISP1_PREP permit 10
 match ip address prefix-list AS_PREFIX
 set as-path prepend 65000 65000

route-map AS_ISP2_PREP permit 10
 match ip address prefix-list AS_PREFIX

ip prefix-list AS_PREFIX seq 5 permit 8.8.8.0/24
Для изменения баланса необходимо менять кол-во повторений номера нашей AS в строке
set as-path prepend 65000 65000
затем применить изменения сбросив BGP в сторону необходимого нейбора:
clear ip bgp 1.1.1.1 soft

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

Более тонкая балансировка

Конфигурирование препендов методом, показанным выше -- хороший способ быстрой и грубой балансировки входящего трафика. Для более тонкой балансировки можно использовать установление препендов на стороне апстрима. Любой порядочный магистральный оператор связи имеет на своей сети community, которые, как правило, описываются в ripedb. Для примера возьмем гордую AS9002:

remarks:        ---------------------------------------------------------------
remarks:        *********** BGP communities accepted from downstream **********
remarks:        ---------------------------------------------------------------
remarks:
remarks:        1.Common, prepending to all peers (but not to customers):
remarks:        9002:6553X, where
remarks:        X < 5       prepend X times to all peers
remarks:        X = 5       advertise to customers but not to peers
remarks:
remarks:        Note #1. If the downstream's route isn't tagged with 9002:6553X
remarks:        community, then community 9002:65530 is applied on ReTN side
remarks:        (advertise everywhere without prepending)
remarks:
remarks:        2.Specific, prepending to peer ASN: ASN:6553X, where
remarks:        X < 5       prepend X times to peer ASN
remarks:        X = 5       do not advertise to peer ASN
remarks:
remarks:        Note #2. Specific communities are applied for a limited subset
remarks:        of ReTN peers, listed below
remarks:
remarks:        Note #3. If downstream tags the route with community ASN:6553X,
remarks:        then community 9002:6553X is ignored while advertising to peer
remarks:        ASN (if is present in the list below). Otherwise the route is
remarks:        advertised to peer ASN in accordance with community 9002:6553X
remarks:
remarks:        Note #4. Unaccepted bgp communities, including well-known ones,
remarks:        are ignored and stripped
remarks:
remarks:        Specific communities are applied for ASNs:
remarks:
remarks:        IPv4 peers
remarks:        ==========
remarks:        286      KPN Telecom
remarks:        702      MCI Europe / Verizon Business EMEA
remarks:        1273     Cable and Wireless
remarks:        1299     TeliaSonera
remarks:        2686     AT&T EMEA
remarks:        2914     NTT Communications
remarks:        3216     Vimpelcom / Golden Telecom
remarks:        3786     LG UPlus / DACOM
remarks:        4134     China Telecom
remarks:        4323     TW Telecom
remarks:        4436     nLayer Communications
remarks:        4651     CAT Telecom
remarks:        4766     Korea Telecom
remarks:        5400     British Telecom
remarks:        5577     root S.A.
remarks:        5580     Atrato IP Networks
remarks:        5588     GTS Central Europe
remarks:        6327     Shaw Cablesystems / Big Pipe
remarks:        6453     TATA Communications / Teleglobe
remarks:        6461     Zayo / AboveNet Communications
remarks:        6539     Bell Canada
remarks:        6830     Liberty Global / UPC Broadband
remarks:        6849     UkrTelecom
remarks:        6939     Hurricane Electric
remarks:        7473     Singapore Telecommunications
remarks:        8220     COLT Telecommunications
remarks:        8928     Interoute
remarks:        8997     RosTelecom, North-West branch
remarks:        9121     Turk Telekom
remarks:        9304     Hutchison Global Communications
remarks:        9318     Hanaro Telecom
remarks:        10310    Yahoo
remarks:        12389    RosTelecom
remarks:        12714    NetByNet
remarks:        13213    UK2
remarks:        13237    LambdaNet
remarks:        13335    CloudFlare
remarks:        13414    Twitter
remarks:        15133    EdgeCast Networks
remarks:        15412    FLAG Telecom
remarks:        16265    LeaseWeb
remarks:        16509    Amazon.com
remarks:        19092    Zayo / 360Networks
remarks:        19151    Broadband One / WV Fiber
remarks:        22822    Limelight Networks
remarks:        24940    Hetzner Online
remarks:        32934    Facebook
remarks:        36351    SoftLayer Technologies
remarks:        44237    RosTelecom, Central branch
remarks:        46489    Justin.tv / TwitchTV
remarks:        46786    IP Transit, Inc.
remarks:        47541    VKontakte-SPb
remarks:        47542    VKontakte-Msk
remarks:        48061    RuTube
remarks:
remarks:        IPv6 peers
remarks:        ==========
remarks:        702      MCI Europe / Verizon Business EMEA
remarks:        1273     Cable and Wireless
remarks:        1299     TeliaSonera
remarks:        2497     Internet Initiative Japan
remarks:        2914     NTT Communications
remarks:        4635     HKIX Route Servers
remarks:        6453     TATA Communications / Teleglobe
remarks:        6695     DE-CIX Route Servers
remarks:        6777     AMS-IX Route Servers
remarks:        6939     Hurricane Electric
remarks:        8631     MSK-IX Route Servers
remarks:        8714     LINX Route Servers
remarks:        13030    Init Seven
remarks:        13237    LambdaNet
remarks:
remarks:        ---------------------------------------------------------------
Для примера представим ситуацию, что мы хотим, чтобы Hetzner видел наш префикс через AS9002 с двумя препендами. Для отправки community нужно дополнить конфиг соседа командой send-community. После чего создается рут-мап, который говорит, что на наш префикс нужно навесить атрибут community со значением 24940:65532.

ip bgp-community new-format

router bgp 65000
 neighbor 3.3.3.3 remote-as 9002
 neighbor 3.3.3.3 send-community
 neighbor 3.3.3.3 prefix-list DEFAULT_ONLY in
 neighbor 3.3.3.3 route-map TO_RETN out

route-map TO_RETN permit 10
 match ip address prefix-list AS_PREFIX
 set community 24940:65532

Инструменты мониторинга

Lookin Glass

Проверять наличие анонсов можно при помощи инструмента Looking Glass, выбрав PoP, режим «v4 bgp route terse» и вбив туда префикс (8.8.8.0/24) Вывод должен быть примерно таким:

inet.0: 490875 destinations, 887664 routes (490850 active, 69 holddown, 263 hidden)
+ = Active Route, - = Last Active, * = Both

A V Destination        P Prf   Metric 1   Metric 2  Next hop        AS path
* ? 8.8.8.0/24    B 170        100         90                  12389 65000 65000 I
  unverified                                       >87.245.233.29
  ?                    B 170        100         90                  12389 65000 65000 I
  unverified                                       >87.245.233.29
  ?                    B 170        100         90                  702 3216 65000 I
  unverified                                       >87.245.233.29
  ?                    B 170        100         90                  702 3216 65000 I
  unverified                                       >87.245.233.29
Тут видно что мы анонсируемся по двум путям, которые были уравнены дополнительным препендом

Qrator radar

Удобный ресурс для постоянного мониторинга своих сетей на предмет уязвимостей и прочих косяков
radar.qrator.net

Проверки состояния пиров

Для проверки работы пиров необходимо проверить их статус командой

#sh ip bgp summary
BGP router identifier 8.8.8.8, local AS number 65000
BGP table version is 8, main routing table version 8
2 network entries using 234 bytes of memory
3 path entries using 156 bytes of memory
4/2 BGP path/bestpath attribute entries using 496 bytes of memory
2 BGP AS-PATH entries using 48 bytes of memory
1 BGP community entries using 24 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 958 total bytes of memory
BGP activity 3/1 prefixes, 4/1 paths, scan interval 60 secs
Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
1.1.1.1   4  3216     130     137        8    0    0 02:04:52        1
2.2.2.2   4 12389  113707  103967        8    0    0 3w0d            1
Строки внизу вывода покажут список пиров их статус и время нахождения в этом статусе.
Также от пиров мы получаем last resort - список полученых роутов можно поглядеть командой
#sh ip bgp
BGP table version is 8, local router ID is 8.8.8.8
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
   Network          Next Hop            Metric LocPrf Weight Path
r  0.0.0.0          1.1.1.1                          0 65001 i
r>                  2.2.2.2                          0 65002 i
*> 8.8.8.0/24  0.0.0.0                  0         32768 i
Посмотреть список анонсируемых сетей в сторону нейбора:
cs3845km#sh ip bgp neighbors 1.1.1.1 advertised-routes
BGP table version is 8, local router ID is 8.8.8.8
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
   Network          Next Hop            Metric LocPrf Weight Path
*> 8.8.8.0/24  0.0.0.0                  0         32768 i
Total number of prefixes 1
Посмотреть что нейбор анонсирует нам (до префиксорезки):
cs3845km#sh ip bgp neighbors 2.2.2.2 received-routes
BGP table version is 48, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*  0.0.0.0          2.2.2.2                           0 35558 28906 i
*  2.2.2.0/19       2.2.2.2             0             0 35558 i
*  3.3.3.0/20       2.2.2.2             0             0 35558 i
*  3.3.3.0/22       2.2.2.2             0             0 35558 i

Total number of prefixes 4

Положить пира:

router bgp 65000
 neighbor 1.1.1.1 shutdown

Updated