Прынцыпы працы пратакола BGP

Сёння мы разгледзім пратакол BGP. Не будзем доўга казаць навошта ён і чаму ён выкарыстоўваецца як адзіны пратакол. Даволі шмат інфармацыі ёсць на гэты конт, напрыклад тут.

Такім чынам, што такое BGP? BGP – гэта пратакол дынамічнай маршрутызацыі, які з'яўляецца адзіным EGP (External Gateway Protocol) пратаколам. Дадзены пратакол выкарыстоўваецца для пабудовы маршрутызацыі ў інтэрнэце. Разгледзім як будуецца суседства паміж двума маршрутызатарамі BGP.

Прынцыпы працы пратакола BGP
Разгледзім суседства паміж Router1 і Router3. Наладзім іх пры дапамозе наступных каманд:

router bgp 10
  network 192.168.12.0
  network 192.168.13.0
  neighbor 192.168.13.3 remote-as 10

router bgp 10
  network 192.168.13.0
  network 192.168.24.0
  neighbor 192.168.13.1 remote-as 10

Суседства ўнутры адной аўтаномнай сістэмы – AS 10. Пасля ўводу дадзеных на маршрутызатары, напрыклад на Router1, дадзены маршрутызатар спрабуе наладзіць адносіны суседства з маршрутызатарам Router3. Пачатковы стан, калі нічога не адбываецца называецца ўхаластую. Як толькі будзе наладжаны bgp на Router1, ён пачне слухаць TCP порт 179 – пяройдзе ў стан падключаць, а калі спрабуе адкрыць сесію з Router3, то пяройдзе ў стан Актыўны.

Пасля таго, як сесія ўсталюецца паміж Router1 і Router3, тое адбываецца абмен Open паведамленнямі. Калі дадзенае паведамленне адправіць Router1, то дадзены стан будзе звацца Open Sent. А калі атрымае Open паведамленне ад Router3, то пяройдзе ў стан Open Confirm. Разгледзім больш падрабязна паведамленне Open:

Прынцыпы працы пратакола BGP
У дадзеным паведамленне перадаецца інфармацыя аб самім пратаколе BGP, які выкарыстоўвае маршрутызатар. Абменьваючыся Open паведамленнямі, Router1 і Router3 паведамляюць адзін аднаму інфармацыю аб сваіх наладах. Перадаюцца наступныя параметры:

  • версія: Гэта ўключае ў сябе BGP version, што router is using. Цяперашняя версія BGP з'яўляецца версія 4, якая змяшчаецца ў RFC 4271. Два BGP routerы будуць патрабаваць неадкладнай схемы, калі яны маюцца, яны будуць не BGP session.
  • My AS: Гэта ўключае ў сябе AS нумар BGP router, routers будзе мець акцыю на AS number(s) і яго таксама defines if they will be running iBGP or eBGP.
  • Час вытрымкі: Калі BGP не мае патрэбы ў ажыўленні або павышэнні паведамленняў ад другога кутка для доўгу часу, каб яна была пазбаўлена іншая бачына "мёртвых" і яна будзе tear down the BGP session. Паколькі тэрмін часу лічыцца 180 seconds на Cisco IOS routers, keepalive message мае 60 seconds. Гэтыя routers маюць акцыю на доўгую гадзіну або яны будуць для BGP session.
  • BGP Identifier: Гэта мясцовы BGP router ID, які з'яўляецца неабходнай як OSPF:
    • Выкарыстоўвайце router-ID, які быў configured manually with bgp router-id command.
    • Выкарыстанне найвышэйшай IP-адрасы на інтэрфейсе злучэння.
    • Выкарыстанне высокіх IP-адрасоў на фізічным інтэрфейсе.
  • Дадатковыя параметры: Тут вы будзеце мець некаторыя функцыйныя магчымасці BGP router. Гэта філія мае быць added so to, že nové features можна added to BGP bez toho, aby vytvorila novú версію.
    • support for MP-BGP (Multi Protocol BGP).
    • support for Route Refresh.
    • support for 4-octet AS numbers.

Для ўсталявання суседства неабходна выкананні наступных умоў:

  • Нумар версіі. Цяперашняя версія 4.
  • Нумар AS павінен супадаць з тым, што вы наладзілі сусед 192.168.13.3 аддалены як 10.
  • Router ID павінен быць адрозным ад суседа.

Калі які-небудзь з параметраў не задавальняе гэтым умовам, то маршрутызатар адправіць апавяшчэнне паведамленне, дзе пакажа памылку. Пасля адпраўкі і атрымання Open паведамленняў, адносіны суседства пераходзіць у стан СТВАРЕНЫ. Пасля гэтага ўжо маршрутызатары могуць абменьвацца інфармацыяй аб маршрутах і робяць гэта пры дапамозе абнаўленне паведамленняў. Вось такое Update паведамленне адпраўляе Router1 да Router3:

Прынцыпы працы пратакола BGP

Тут паказваюць сеткі, аб якіх паведамляе Router1 і Path attributes, якія з'яўляюцца аналагам метрык. Аб Path attributes мы пагаворым больш падрабязна. Таксама ўнутры TCP сесіі перадаюцца Keepalive паведамлення. Яны перадаюцца, па змаўчанні, кожныя 60 секунд. Гэта Keepalive Timer. Калі ў плыні Hold Timer-а не будзе атрымана Keepalive паведамленне, тое гэта будзе азначаць страту сувязі з суседам. Па змаўчанні, ён роўны - 180 секундам.

Карысная таблічка:

Прынцыпы працы пратакола BGP

Накшталт бы разабраліся як маршрутызатары перадаюць адзін аднаму інфармацыю, зараз паспрабуем разабрацца з логікай працы пратаколу BGP.

Што анансаваць які-небудзь маршрут у табліцу BGP, як і ў пратаколах IGP, выкарыстоўваецца каманда network, але логіка працы адрозніваецца. Калі ў IGP, пасля ўказання маршруту ў камандзе network, IGP глядзіць - якія інтэрфейсы належаць дадзенай падсетцы і ўключае іх у сваю табліцу, то каманда network у BGP глядзіць у табліцу маршрутызацыі і шукае дакладнае супадзенне з маршрутам у камандзе network. Пры знаходжанні такіх, дадзеныя маршруты патрапяць у табліцу BGP.

Look for route in the router's current IP routing table that exactly matches the parameters of the network command; калі IP route exists, выкарыстоўвайце ліцэнзію NLRI да мясцовага BGP table.

Зараз паднімем BGP на ўсіх пакінутых і паглядзім як адбываецца выбар маршруту ўсярэдзіне адной AS. Пасля таго, як BGP маршрутызатар атрымае маршруты ад суседа, пачынаецца выбар аптымальнага маршруту. Тут трэба зразумець якога выгляду суседзі могуць быць - унутраныя і вонкавыя. Маршрутызатар па канфігурацыі разумее ці з'яўляецца сканфігураваны сусед унутраным або вонкавым? Калі ў камандзе:

neighbor 192.168.13.3 remote-as 10 

у якасці параметру remote-as паказаны AS, які сканфігураваны на самім маршрутызатары ў камандзе router bgp 10. Маршруты, якія прыйшлі з унутранай AS лічацца ўнутранымі, а маршруты з вонкавай адпаведна вонкавымі. І ў адносінах да кожнага працуе розная логіка атрымання і адпраўкі. Разгледзім такую ​​тапалогію:

Прынцыпы працы пратакола BGP

На кожным маршрутызатары настроены loopback інтэрфейс з ip: xxxx 255.255.255.0 – дзе x нумар маршрутызатара. На Router9 у нас ёсць loopback інтэрфейс з адрасам - 9.9.9.9 255.255.255.0. Яго мы будзем анансаваць па BGP і паглядзім, як ён распаўсюджваецца. Гэты маршрут будзе перададзены на Router8 і Router12. З Router8 дадзены маршрут патрапіць на Router6, але на Router5 у табліцы маршрутызацыі яго не будзе. Таксама і на Router12 гэты маршрут трапіць у табліцу, але на Router11 яго таксама не будзе. Паспрабуем разабрацца з гэтым. Разгледзім якія дадзеныя і параметры перадаецца Router9 сваім суседзям, паведамляючы аб гэтым маршруце. Пакет унізе будзе адпраўлены з Router9 на Router8.

Прынцыпы працы пратакола BGP
Інфармацыя аб маршруце складаецца з аттрыбутаў шляху (Path attributes).

Атрыбуты шляху падзелены на 4 катэгорыі:

  1. Well-known mandatory - Усе маршрутызатары, якія працуюць па пратаколе BGP, павінны распазнаваць гэтыя атрыбуты. Павінны прысутнічаць ва ўсіх абнаўленнях (update).
  2. Well-known discretionary - Усе маршрутызатары, якія працуюць па пратаколе BGP, павінны распазнаваць гэтыя атрыбуты. Могуць прысутнічаць у абнаўленнях (update), але іх прысутнасць не абавязковая.
  3. Optional transitive - могуць не распазнавацца ўсімі рэалізацыямі BGP. Калі маршрутызатар не распазнаў атрыбут, ён пазначае абнаўленне як частковае (partial) і адпраўляе яго далей суседзям, захоўваючы не распазнаны атрыбут.
  4. Неабавязковы непераходны - могуць не распазнавацца ўсімі рэалізацыямі BGP. Калі маршрутызатар не распазнаў атрыбут, то атрыбут ігнаруецца і пры перадачы суседзям адкідваецца.

Прыклады атрыбутаў BGP:

  • Well-known mandatory:
    • Autonomous system path
    • Next-hop
    • Паходжанне

  • Well-known discretionary:
    • Local preference
    • Atomic aggregate
  • Optional transitive:
    • Агрэгатар
    • Супольнасці
  • Неабавязковы непераходны:
    • Multi-exit discriminator (MED)
    • Originator ID
    • Cluster list

У дадзеным выпадку нас пакуль будуць цікавіць Origin, Next-hop, AS Path. Бо маршрут перадае паміж Router8 і Router9, гэта значыць усярэдзіне адной AS, то ён лічыцца ўнутраным і зварачальны ўвага на Origin.

Атрыбут Origin - паказвае на тое, якім чынам быў атрыманы маршрут у абнаўленні. Магчымыя значэнні атрыбуту:

  • 0 - IGP: NLRI атрымана ўнутры зыходнай аўтаномнай сістэмы;
  • 1 – EGP: NLRI вывучана па пратаколе Exterior Gateway Protocol (EGP). Папярэднік BGP, не выкарыстоўваецца
  • 2 — Incomplete: NLRI была вывучана нейкім іншым чынам

У нашым выпадку, як відаць з пакета роўны 0. Калі дадзены маршрут будзе перадавацца да Router12, то дадзены код будзе мець код - 1.

Далей, Next-hop. Атрыбут Next-hop

  • Гэта IP-адрас eBGP-маршрутызатара, праз які ідзе шлях да сеткі прызначэння.
  • Атрыбут мяняецца пры перадачы прэфікса ў іншую AS.

У выпадку ж iBGP, гэта значыць усярэдзіне адной AS, Next-hop будзе паказаны той, які пазнаў або распавёў аб гэтым маршруце. У нашым выпадку гэта будзе 192.168.89.9. Але калі будзе перадаваць гэты маршрут ад Router8 да Router6, Router8 яго зменіць і заменіць на свой. Next-hop будзе - 192.168.68.8. Гэта нас прыводзіць да двух правілаў:

  1. Калі маршрутызатар перадае маршрут свайму ўнутранаму суседу, то ён не мяняе параметр Next-hop.
  2. Калі маршрутызатар перадае маршрут свайму вонкаваму суседу, тое мяняе Next-hop на ip інтэрфейсу, з якога перадае дадзены маршрутызатар.

Гэта прыводзіць нас да разумення першай праблемы - Чаму не будзе маршруту ў табліцы маршрутызацыі на Router5 і Router11. Разгледзім больш дэталёва. Такім чынам, Router6 атрымаў інфармацыю аб маршруце 9.9.9.0/24 і шчасна дадаў яе ў табліцу маршрутызацыі:

Router6#show ip route bgp
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is not set

      9.0.0.0/24 is subnetted, 1 subnets
B        9.9.9.0 [20/0] via 192.168.68.8, 00:38:25<source>
Теперь Router6 передал маршрут Router5 и первому правилу Next-hop не изменил. То есть, Router5 должен добавить  <b>9.9.9.0 [20/0] via 192.168.68.8</b> , но у него нет маршрута до 192.168.68.8 и поэтому данный маршрут добавлен не будет, хотя информация о данном маршруте будет храниться в таблице BGP:

<source><b>Router5#show ip bgp
BGP table version is 1, local router ID is 5.5.5.5
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 * i 9.9.9.0/24       192.168.68.8             0    100      0 45 i</b>

Тая ж самая сітуацыя адбудзецца і паміж Router11-Router12. Каб пазбегнуць такой сітуацыі трэба наладзіць, каб Router6 або Router12, перадаючы маршрут сваім унутраным суседзям, падстаўлялі ў якасці Next-hop свой ip адрас. Робіцца пры дапамозе каманды:

neighbor 192.168.56.5 next-hop-self

Пасля дадзенай каманды, Router6 адправіць Update паведамленне, дзе для маршрутаў у якасці Next-hop будзе паказаны ip інтэрфейсу Gi0/0 Router6 – 192.168.56.6, пасля чаго дадзены маршрут ужо трапіць у табліцу маршрутызацыі.

Пойдзем далей і паглядзім ці з'явіцца гэты маршрут на Router7 і Router10. У табліцы маршрутызацыі яго не апынецца і мы маглі б падумаць, што праблема як у першым з параметрам Next-hop, але калі мы паглядзім выснову каманды show ip bgp, то ўбачым, што тамака маршрут не быў атрыманы нават з няправільным Next-hop, што азначае, што маршрут нават не перадаваўся. І гэта нас прывядзе да існавання яшчэ аднаго правіла:

Маршруты, атрыманыя ад унутраных суседзяў не перадаюцца іншым унутраным суседзям.

Бо, Router5 атрымаў маршрут ад Router6, то іншаму свайму ўнутранаму суседу ён перадавацца не будзе. Для таго каб перадача адбылася неабходна наладзіць функцыю Маршрутны адбівальнік, альбо наладзіць поўнасвязныя адносіны суседства (Full Mesh), гэта значыць Router5-7 кожны будзе суседам з кожным. Мы будзем у дадзеным выпадку выкарыстоўваць Route Reflector. На Router5 неабходна выкарыстоўваць дадзеную каманду:

neighbor 192.168.57.7 route-reflector-client

Route-Reflector мяняе паводзіны BGP пры перадачы маршруту ўнутранаму суседу. Калі ўнутраны сусед пазначаны як route-reflector-client, То дадзеным кліентам будуць анансавацца ўнутраныя маршруты.

Маршрут не з'явіўся на Router7? Не забываем таксама і пра Next-hop. Пасля дадзеных маніпуляцый маршрут павінен і на Router7, але гэтага не адбываецца. Гэта нас падводзіць да яшчэ аднаго правіла:

Правіла next-hop працуе толькі для External маршрутаў. Для ўнутраных маршрутаў замена атрыбута next-hop не адбываецца.

І мы атрымліваем сітуацыю, у якой неабходна стварыць асяроддзе пры дапамозе статычнай маршрутызацыі ці пратаколаў IGP паведаміць маршрутызатарам аб усіх маршрутах усярэдзіне AS. Прапішам статычныя маршруты на Router6 і Router7 і пасля гэтага атрымаем патрэбны маршрут у табліцы маршрутызатары. У AS 678 жа мы паступім крыху інакш – прапішам статычныя маршруты для 192.168.112.0/24 на Router10 і 192.168.110.0/24 на Router12. Далей, усталюем адносіны суседства паміж Router10 і Router12. Таксама настроім на Router12 адпраўку свайго next-hop для Router10:

neighbor 192.168.110.10 next-hop-self

Вынікам будзе тое, што Router10 будзе атрымліваць маршрут 9.9.9.0/24, ён будзе атрыманы і ад Router7 і ад Router12. Паглядзім які выбар зробіць Router10:

Router10#show ip bgp
BGP table version is 3, local router ID is 6.6.6.6
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network              Next Hop            Metric LocPrf Weight Path
 *>i 9.9.9.0/24       192.168.112.12           0    100       0      45 i

                               192.168.107.7                                0     123 45 i  

Як мы бачым, два маршруты і стрэлка ( > ) азначае, што абраны маршрут праз 192.168.112.12.
Паглядзім як адбываецца працэс выбару маршруту:

  1. Перш за ўсё пры атрыманні маршруту, правяраецца даступнасць яго Next-hop. Менавіта таму, калі мы атрымлівалі маршрут на Router5 без налады Next-hop-self, дадзены маршрут далей не аддаваўся на апрацоўку.
  2. Далей ідзе параметр Weight. Гэты параметр не з'яўляецца Атрыбутам шляху ( PA ) і не перадаецца ў паведамленнях BGP. Ён наладжваецца лакальна на кожным маршрутызатары і выкарыстоўваецца толькі для маніпуляцыі выбару маршруту на самім маршрутызатары. Разгледзім прыклад. Крыху вышэй паказана, што Router10 абраў маршрут для 9.9.9.0/24 праз Router12 (192.168.112.12). Каб змяніць параметр Wieght, можна выкарыстоўваць route-map, каб задаць для пэўных маршрутаў, або прысвоіць яго суседу вага пры дапамозе каманды:
     neighbor 192.168.107.7 weight 200       

    Цяпер усе маршруты ад дадзенага суседа будуць мець такую ​​вагу. Паглядзім як зменіцца выбар маршруту пасля дадзенай маніпуляцыі:

    Router10#show bgp
    *Mar  2 11:58:13.956: %SYS-5-CONFIG_I: Configured from console by console
    BGP table version is 2, local router ID is 6.6.6.6
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
                  r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
                  x best-external, a additional-path, c RIB-compressed,
    Origin codes: i - IGP, e - EGP, ? - incomplete
    RPKI validation codes: V valid, I invalid, N Not found
    
         Network          Next Hop            Metric LocPrf Weight      Path
     *>  9.9.9.0/24       192.168.107.7                        200      123 45 i
     * i                          192.168.112.12           0          100      0 45 i

    Як бачыце зараз абраны маршрут праз Router7, але ніякага эфекту на астатнія маршрутызатары гэта мець не будзе.

  3. На трэцяй пазіцыі ў нас ідзе - Local Preference. Дадзены параметр з'яўляецца Well-known discretionary атрыбутам, а гэта азначае, што яго прысутнасць неабавязкова. Дадзены параметр мае сілу толькі ўсярэдзіне адной AS і ўплывае на выбар шляху толькі для ўнутраных суседзяў. Менавіта таму, ён перадаецца толькі ў Update паведамленнях прызначаных для ўнутранага суседа. У Update паведамленнях для знешніх суседзяў ён адсутнічае. Таму ён і быў аднесены да Well-known discretionary. Паспрабуем прымяніць яго на Router5. На Router5 у нас павінна быць два маршруты для 9.9.9.0/24 – адзін праз Router6 і другі праз Router7.

    Глядзім:

    Router5#show bgp
    BGP table version is 2, local router ID is 5.5.5.5
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
                  r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
                  x best-external, a additional-path, c RIB-compressed,
    Origin codes: i - IGP, e - EGP, ? - incomplete
    RPKI validation codes: V valid, I invalid, N Not found
    
         Network          Next Hop            Metric LocPrf Weight Path
     *>i 9.9.9.0/24       192.168.56.6             0    100      0 45 i

    Але як бачым адзін маршрут праз Router6. А дзе ж маршрут праз Router7? Можа і на Router7 яго няма? Глядзім:

    Router#show bgp
    BGP table version is 10, local router ID is 7.7.7.7
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
                  r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
                  x best-external, a additional-path, c RIB-compressed,
    Origin codes: i - IGP, e - EGP, ? - incomplete
    RPKI validation codes: V valid, I invalid, N Not found
    
         Network                Next Hop            Metric LocPrf  Weight    Path
     *>i 9.9.9.0/24       192.168.56.6             0     100           0      45 i
    
                                  192.168.107.10                                  0     678 45 i 

    Дзіўна, быццам усё ў парадку. Чаму ж ён не перадаецца на Router5? Уся справа ў тым, што ў BGP ёсць правіла:

    Маршрутызатар перадае толькі тыя маршруты, якія выкарыстоўвае сам.

    Router7 выкарыстоўваецца маршрут праз Router5, таму маршрут праз Router10 перадавацца не будзе. Вернемся да Local Preference. Давайце задамо Local Preference на Router7 і паглядзім як адрэагуе на гэта Router5:

    route-map BGP permit 10
     match ip address 10
     set local-preference 250
    access-list 10 permit any
    router bgp 123
     neighbor 192.168.107.10 route-map BGP in</b>

    Такім чынам, мы стварылі route-map, у які трапляюцца ўсе маршруты і сказалі Router7, каб пры атрыманні ён мяняў параметр Local Preference на 250, па змаўчанні роўны 100. Глядзім, што адбылося на Router5:

    Router5#show bgp
    BGP table version is 8, local router ID is 5.5.5.5
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
                  r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
                  x best-external, a additional-path, c RIB-compressed,
    Origin codes: i - IGP, e - EGP, ? - incomplete
    RPKI validation codes: V valid, I invalid, N Not found
    
         Network          Next Hop            Metric LocPrf Weight        Path
     *>i 9.9.9.0/24       192.168.57.7             0          250      0 678 45 i

    Як мы бачым зараз Router5 аддае перавагу маршрут праз Router7. Такая ж карціна будзе і на Router6, хоць яму больш выгадна выбраць маршрут праз Router8. Дадамо таксама, што змены дадзенага параметру патрабуе рэстарт суседства, каб змена ўвайшла ў сілу. Чытаць тут. З Local Preference разабраліся. Пераходзім да наступнага параметру.

  4. Перавага маршруту з параметрам Next-hop 0.0.0.0, гэта значыць лакальныя ці агрэгаваныя маршруты. Дадзеным маршрутам аўтаматычна пасля ўводу каманды network прысуджаецца параметр Weight роўны максімуму - 32678:
    Router#show bgp
    BGP table version is 2, local router ID is 9.9.9.9
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
                  r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
                  x best-external, a additional-path, c RIB-compressed,
    Origin codes: i - IGP, e - EGP, ? - incomplete
    RPKI validation codes: V valid, I invalid, N Not found
    
         Network          Next Hop            Metric LocPrf Weight    Path
     *>  9.9.9.0/24       0.0.0.0                  0            32768    i
  5. Найкароткі шлях праз AS. Выбіраецца самы кароткі параметр AS_Path. Чым праз меншую колькасць колькасць AS праходзіць маршрут, тым ён і лепш. Разгледзь маршрут да 9.9.9.0/24 на Router10:
    Router10#show bgp
    BGP table version is 2, local router ID is 6.6.6.6
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
                  r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
                  x best-external, a additional-path, c RIB-compressed,
    Origin codes: i - IGP, e - EGP, ? - incomplete
    RPKI validation codes: V valid, I invalid, N Not found
    
         Network          Next Hop            Metric LocPrf Weight Path
     *   9.9.9.0/24     192.168.107.7                           0           123 45 i
     *>i                     192.168.112.12           0    100       0       45 i

    Як бачыце, Router10 абраў маршрут праз 192.168.112.12 таму, што для дадзенага маршруту параметр AS_Path утрымоўвае толькі 45, а ў іншым выпадку 123 і 45. Інтуітыўна зразумела.

  6. Наступны параметр - Origin. IGP ( маршрут атрыманы пры дапамозе BGP) лепш, чым EGP ( маршрут атрыманы пры дапамозе папярэдніка BGP, цяпер не выкарыстоўваецца), а EGP лепш Incomplete? (атрыманы якім-небудзь іншым спосаб, напрыклад рэдыстрыбуцыяй).
  7. Наступны параметр - MED. У нас быў Wieght, які працаваў толькі лакальна на маршрутызатары. Быў Local Preference, які працаваў толькі ў межах адной аўтаномнай сістэме. Як няцяжка здагадацца, MED – параметр, які будзе перадавацца паміж аўтаномнымі сістэмамі. Вельмі добрая артыкул аб дадзеным параметры.

Больш атрыбутаў выкарыстоўвацца не будзе, але калі ў двух маршрутаў яны аднолькавыя, то выкарыстоўваюцца наступныя правілы:

  1. Выбраць шлях праз бліжэйшага IGP-суседа.
  2. Выбраць самы стары маршрут для eBGP-шляху.
  3. Выбраць шлях праз суседа з найменшай BGP router ID.
  4. Выбраць шлях праз суседа з найменшым IP-адрасам.

Цяпер разгледзім пытанне збежнасці BGP.

Паглядзім, што адбудзецца, калі дапусцім Router6 страціць маршрут 9.9.9.0/24 праз Router9. Адключым інтэрфейс Gi0/1 Router6, які адразу зразумее, што BGP сесія з Router8 абарваная і сусед знік, а значыць і маршрут, атрыманыя ад яго не сапраўдныя. Router6 адразу адпраўляе Update паведамлення, дзе паказвае сетку 9.9.9.0/24 у поле Withdrawn Routes. Як толькі Router5 атрымае падобнае паведамленне, адправіць яго да Router7. Але бо ў Router7 ёсць маршрут праз Router10, то ў адказ адразу адправіць Update c новым маршрутам. Калі дэтэктаваць падзенні суседа па стане інтэрфейсу не атрымліваецца, то давядзецца чакаць спрацоўвання Hold Timer-а.

Канфедэрацыя.

Калі памятаеце, то мы казалі аб тым, што часта даводзіцца выкарыстоўваць полносвязную тапалогію. З вялікай колькасцю маршрутызатараў у адной AS гэта можа даставіць вялікія праблемы, каб пазбегнуць гэтага неабходна выкарыстоўваць канфедэрацыі. Адна AS разбіваецца на некалькі sub-AS, што дазваляе працаваць ім без патрабавання полносвязной тапалогіі.

Прынцыпы працы пратакола BGP

Тут спасылка на дадзеную лабу, А тут канфігурацыя для GNS3.

Напрыклад, пры такой тапалогіі нам прыйшлося б звязваць усе маршрутызатары ў AS 2345 паміж сабой, але выкарыстоўваючы Confederation, мы можам усталяваць адносіны суседства толькі паміж маршрутызатарамі непасрэдна падлучаных сябар да сябра. Пагаворым аб гэтым падрабязна. Калі ў нас была толькі AS 2345, то laForge атрымаўшы маршур ад Пікара расказаў бы яго маршрутызатарам Дата и Ворф, але яны не распавялі б пра яго маршрутызатару драбнілку . Таксама маршруты, якія распаўсюджвае сам маршрутызатар laForge, не былі б перададзены драбнілку ні Ворф-ом, ні Дата.

Прыйшлося б наладжваць Route-Reflector ці поўнасувязныя адносіны суседства. Разбіваючы адну AS 2345 на 4 sub-AS (2,3,4,5) для кожнага маршрутызатара, мы ў выніку атрымліваем іншую логіку працы. Усё выдатна апісана тут.

Крыніцы:

  1. CCIE Routing and Switching v5.0 Official Cert Guide, Volume 2, Fifth Edition, Narbik Kocharians, Terry Vinson.
  2. Сайт xgu.ru
  3. Сайт GNS3Vault.

Крыніца: habr.com

Дадаць каментар