Kaip veikia BGP

Šiandien pažvelgsime į BGP protokolą. Mes ilgai nekalbėsime apie tai, kodėl taip yra ir kodėl jis naudojamas kaip vienintelis protokolas. Pavyzdžiui, šia tema yra gana daug informacijos čia.

Taigi, kas yra BGP? BGP yra dinaminis maršruto parinkimo protokolas ir vienintelis EGP (External Gateway Protocol) protokolas. Šis protokolas naudojamas kuriant maršrutą internete. Pažiūrėkime, kaip tarp dviejų BGP maršrutizatorių kuriama kaimynystė.

Kaip veikia BGP
Apsvarstykite kaimynystę tarp Router1 ir Router3. Sukonfigūruokime juos naudodami šias komandas:

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

Kaimynystė vienoje autonominėje sistemoje yra AS 10. Įvedęs informaciją maršrutizatoriuje, pvz., Router1, maršrutizatorius bando nustatyti gretumo ryšį su Router3. Pradinė būsena, kai nieko nevyksta, vadinama Idle. Kai tik bgp bus sukonfigūruotas Router1, jis pradės klausytis TCP prievado 179 - jis pereis į būseną prisijungti, ir kai jis bandys atidaryti seansą su Router3, jis pereis į būseną Aktyvus.

Užmezgus seansą tarp Router1 ir Router3, apsikeičiama atvirais pranešimais. Kai šį pranešimą išsiunčia Router1, ši būsena bus iškviesta Atidarykite Išsiųsta. Ir kai jis gaus atvirą pranešimą iš Router3, jis pereis į būseną Atidarykite Patvirtinti. Pažvelkime atidžiau į atvirą pranešimą:

Kaip veikia BGP
Šis pranešimas perduoda informaciją apie patį BGP protokolą, kurį maršrutizatorius naudoja. Keisdamiesi atvirais pranešimais, Router1 ir Router3 perduoda informaciją apie savo nustatymus vienas kitam. Perduodami šie parametrai:

  • versija: tai apima BGP versiją, kurią naudoja maršrutizatorius. Dabartinė BGP versija yra 4 versija, aprašyta RFC 4271. Du BGP maršruto parinktuvai bandys susitarti dėl suderinamos versijos, o jei bus neatitikimų, BGP seanso nebus.
  • Mano AS: tai apima BGP maršrutizatoriaus AS numerį, maršrutizatoriai turės susitarti dėl AS numerio (-ų) ir taip pat apibrėžia, ar jie veiks iBGP ar eBGP.
  • Laikykite laiką: jei BGP negauna jokių išlikimo ar atnaujinimo pranešimų iš kitos pusės per palaikymo laiką, ji paskelbs kitą pusę „mirusia“ ir nutrauks BGP seansą. Pagal numatytuosius nustatymus Cisco IOS maršrutizatoriuose sulaikymo laikas nustatytas į 180 sekundžių, o žinutė siunčiama kas 60 sekundžių. Abu maršrutizatoriai turi susitarti dėl sulaikymo laiko, kitaip BGP seansas nebus.
  • BGP identifikatorius: tai vietinis BGP maršrutizatoriaus ID, kuris pasirenkamas taip pat, kaip OSPF:
    • Naudokite maršrutizatoriaus ID, kuris buvo sukonfigūruotas rankiniu būdu su komanda bgp router-id.
    • Naudokite aukščiausią IP adresą atgalinio ryšio sąsajoje.
    • Naudokite aukščiausią IP adresą fizinėje sąsajoje.
  • Pasirenkami parametrai: čia rasite kai kurias pasirenkamas BGP maršrutizatoriaus galimybes. Šis laukas buvo pridėtas, kad prie BGP būtų galima pridėti naujų funkcijų nekuriant naujos versijos. Čia galite rasti šiuos dalykus:
    • MP-BGP (Multi Protocol BGP) palaikymas.
    • „Route Refresh“ palaikymas.
    • 4 oktetų AS numerių palaikymas.

Norint įkurti kaimynystę, turi būti įvykdytos šios sąlygos:

  • Versijos numeris. Dabartinė versija yra 4.
  • AS numeris turi atitikti tai, ką sukonfigūravote kaimynas 192.168.13.3 nuotolinis-as 10.
  • Maršrutizatoriaus ID turi skirtis nuo kaimyninio.

Jei kuris nors iš parametrų neatitinka šių sąlygų, maršrutizatorius išsiųs Pranešimas pranešimas, nurodantis klaidą. Išsiuntus ir gavus atvirus pranešimus, kaimynystės santykiai pereina į būseną NUSTATYTA. Po to maršrutizatoriai gali keistis informacija apie maršrutus ir tai padaryti naudodami Atnaujinti žinutes. Tai atnaujinimo pranešimas, kurį Router1 siuntė Router3:

Kaip veikia BGP

Čia galite pamatyti tinklus, apie kuriuos praneša Router1 ir Path atributai, kurie yra analogiški metrikai. Išsamiau pakalbėsime apie kelio atributus. TCP seanso metu taip pat siunčiami nuolatiniai pranešimai. Pagal numatytuosius nustatymus jie perduodami kas 60 sekundžių. Tai yra laikmatis. Jei „Keepalive“ pranešimas negaunamas per „Hold Timer“, tai reikš ryšio su kaimynu praradimą. Pagal numatytuosius nustatymus jis yra lygus 180 sekundžių.

Naudingas ženklas:

Kaip veikia BGP

Atrodo, kad mes supratome, kaip maršrutizatoriai perduoda informaciją vienas kitam, dabar pabandykime suprasti BGP protokolo logiką.

Norint reklamuoti maršrutą į BGP lentelę, kaip ir IGP protokoluose, naudojama tinklo komanda, tačiau veikimo logika skiriasi. Jei IGP, tinklo komandoje nurodęs maršrutą, IGP žiūri, kurios sąsajos priklauso šiam potinkliui ir įtraukia jas į savo lentelę, tai tinklo komanda BGP žiūri į maršruto lentelę ir ieško tiksliai atitinka maršrutą tinklo komandoje. Jei tokių bus, šie maršrutai bus rodomi BGP lentelėje.

Dabartinėje maršrutizatoriaus IP maršruto parinkimo lentelėje ieškokite maršruto, kuris tiksliai atitinka tinklo komandos parametrus; jei IP maršrutas egzistuoja, įdėkite lygiavertį NLRI į vietinę BGP lentelę.

Dabar pakelkime BGP į visus likusius ir pažiūrėkime, kaip maršrutas pasirenkamas vienoje AS. Kai BGP maršrutizatorius gauna maršrutus iš savo kaimyno, jis pradeda pasirinkti optimalų maršrutą. Čia reikia suprasti, kokio tipo kaimynai gali būti – vidiniai ir išoriniai. Ar maršrutizatorius pagal konfigūraciją supranta, ar sukonfigūruotas kaimynas yra vidinis ar išorinis? Jei komandoje:

neighbor 192.168.13.3 remote-as 10 

parametras remote-as nurodo AS, kuri sukonfigūruojama pačiame maršrutizatoriuje maršrutizatoriaus komandoje bgp 10. Maršrutai, ateinantys iš vidinės AS, laikomi vidiniais, o maršrutai iš išorinės AS – išoriniais. Ir kiekvienam veikia skirtinga gavimo ir siuntimo logika. Apsvarstykite šią topologiją:

Kaip veikia BGP

Kiekvienas maršrutizatorius turi atgalinę sąsają, sukonfigūruotą su ip: xxxx 255.255.255.0 – kur x yra maršrutizatoriaus numeris. Maršrutizatoriuje 9 turime atgalinę sąsają su adresu - 9.9.9.9 255.255.255.0. Paskelbsime per BGP ir pamatysime, kaip plis. Šis maršrutas bus perduotas Router8 ir Router12. Iš Router8 šis maršrutas pateks į Router6, bet į Router5 jo nebus maršruto lentelėje. Taip pat Router12 šis maršrutas bus rodomas lentelėje, tačiau Router11 jo taip pat nebus. Pabandykime tai išsiaiškinti. Panagrinėkime, kokius duomenis ir parametrus Router9 perduoda savo kaimynams, pranešdamas apie šį maršrutą. Žemiau esantis paketas bus išsiųstas iš Router9 į Router8.

Kaip veikia BGP
Maršruto informaciją sudaro kelio atributai.

Kelio atributai skirstomi į 4 kategorijas:

  1. Gerai žinomas privalomas - Visi maršrutizatoriai, kuriuose veikia BGP, turi atpažinti šiuos atributus. Turi būti visuose atnaujinimuose.
  2. Gerai žinomas diskrecinis - Visi maršrutizatoriai, kuriuose veikia BGP, turi atpažinti šiuos atributus. Jie gali būti pateikiami atnaujinimuose, tačiau jų buvimas nebūtinas.
  3. Neprivaloma pereinamoji – gali būti atpažinti ne visi BGP diegimai. Jei maršrutizatorius neatpažįsta atributo, jis pažymi atnaujinimą kaip dalinį ir persiunčia jį savo kaimynams, išsaugodamas neatpažintą atributą.
  4. Neprivaloma nepereinamoji – gali būti atpažinti ne visi BGP diegimai. Jei maršrutizatorius neatpažįsta atributo, atributas yra ignoruojamas ir atmetamas, kai perduodamas kaimynams.

BGP atributų pavyzdžiai:

  • Gerai žinomas privalomas:
    • Autonominės sistemos kelias
    • Kitas šuolis
    • Kilmė

  • Gerai žinomas diskrecinis:
    • Vietinė pirmenybė
    • Atominis agregatas
  • Neprivaloma pereinamoji:
    • Agregatorius
    • Bendruomenės
  • Neprivaloma nepereinamoji:
    • Kelių išėjimų diskriminatorius (MED)
    • Pradėjo ID
    • Klasterių sąrašas

Šiuo atveju kol kas mus domina „Origin“, „Next-hop“, „AS Path“. Kadangi maršrutas perduodamas tarp Router8 ir Router9, tai yra per vieną AS, jis laikomas vidiniu ir mes atkreipsime dėmesį į Origin.

Origin atributas – nurodo, kaip buvo gautas maršrutas atnaujinime. Galimos atributų reikšmės:

  • 0 – IGP: NLRI gautas pradinėje autonominėje sistemoje;
  • 1 – EGP: NLRI išmokstama naudojant išorinio šliuzo protokolą (EGP). BGP pirmtakas, nenaudotas
  • 2 – Nebaigta: NLRI buvo išmokta kitu būdu

Mūsų atveju, kaip matyti iš paketo, jis lygus 0. Kai šis maršrutas bus perduotas Router12, šis kodas turės 1 kodą.

Kitas, Next-hop. Next-hop atributas

  • Tai yra eBGP maršrutizatoriaus IP adresas, per kurį eina kelias į paskirties tinklą.
  • Atributas pasikeičia, kai priešdėlis siunčiamas į kitą AS.

iBGP atveju, ty vienoje AS, Next-hop nurodys tas, kuris sužinojo arba papasakojo apie šį maršrutą. Mūsų atveju tai bus 192.168.89.9. Bet kai šis maršrutas bus perduodamas iš Router8 į Router6, Router8 jį pakeis ir pakeis savo. Kitas šuolis bus 192.168.68.8. Tai veda prie dviejų taisyklių:

  1. Jei maršrutizatorius persiunčia maršrutą savo vidiniam kaimynui, jis nekeičia Next-hop parametro.
  2. Jei maršrutizatorius perduoda maršrutą savo išoriniam kaimynui, jis pakeičia Next-hop į sąsajos, iš kurios šis maršrutizatorius perduoda, IP adresą.

Tai leidžia suprasti pirmąją problemą – kodėl maršruto parinkimo lentelėje Router5 ir Router11 nebus maršruto. Pažiūrėkime atidžiau. Taigi, Router6 gavo informaciją apie maršrutą 9.9.9.0/24 ir sėkmingai įtraukė ją į maršruto lentelę:

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>

Ta pati situacija atsitiks tarp Router11-Router12. Norėdami išvengti šios situacijos, turite sukonfigūruoti Router6 arba Router12, kai perduodate maršrutą vidiniams kaimynams, kad jų IP adresas būtų pakeistas kaip Next-hop. Tai atliekama naudojant komandą:

neighbor 192.168.56.5 next-hop-self

Po šios komandos Router6 atsiųs Update pranešimą, kur sąsajos Gi0/0 Router6 ip bus nurodytas Next-hop for routes - 192.168.56.6, po kurio šis maršrutas jau bus įtrauktas į maršrutų lentelę.

Eikime toliau ir pažiūrėkime, ar šis maršrutas rodomas Router7 ir Router10. Jo nebus maršruto parinkimo lentelėje ir galime manyti, kad problema yra ta pati, kaip ir pirmojoje su Next-hop parametru, bet jei pažvelgsime į komandos show ip bgp išvestį, pamatysime, kad maršrutas ten nebuvo gautas net su netinkamu Next-hop, vadinasi, maršrutas net nebuvo perduotas. Ir tai prives mus prie kitos taisyklės:

Iš vidinių kaimynų gauti maršrutai kitiems vidiniams kaimynams neplatinami.

Kadangi Router5 gavo maršrutą iš Router6, jis nebus perduotas kitam vidiniam kaimynui. Kad perkėlimas įvyktų, turite sukonfigūruoti funkciją Maršruto atšvaitas, arba sukonfigūruoti visiškai susietus kaimynystės ryšius (Full Mesh), tai yra, Router5-7 kiekvienas bus visų kaimynas. Tokiu atveju naudosime Route Reflector. Router5 turite naudoti šią komandą:

neighbor 192.168.57.7 route-reflector-client

Route-Reflector pakeičia BGP elgseną pravažiuojant maršrutą vidiniam kaimynui. Jei vidinis kaimynas nurodytas kaip maršruto atšvaitas-klientas, tada šiems klientams bus reklamuojami vidiniai maršrutai.

Maršrutas nepasirodė Router7? Nepamirškite ir apie Next-hop. Po šių manipuliacijų maršrutas taip pat turėtų eiti į Router7, tačiau tai neįvyksta. Tai atveda mus prie kitos taisyklės:

Kito šuolio taisyklė veikia tik išoriniams maršrutams. Vidiniuose maršrutuose kito šuolio atributas nepakeičiamas.

Ir gauname situaciją, kai reikia sukurti aplinką naudojant statinį maršruto parinkimą arba IGP protokolus, kad maršrutizatoriai būtų informuoti apie visus AS viduje esančius maršrutus. Užregistruokime statinius maršrutus Router6 ir Router7 ir po to maršrutizatoriaus lentelėje gausime norimą maršrutą. AS 678 tai darysime šiek tiek kitaip – ​​Router192.168.112.0 užregistruosime statinius maršrutus 24/10, o Router192.168.110.0 – 24/12. Toliau nustatysime kaimynystės ryšį tarp Router10 ir Router12. Taip pat sukonfigūruosime Router12, kad jis siųstų kitą šuolį į Router10:

neighbor 192.168.110.10 next-hop-self

Rezultatas bus toks, kad Router10 gaus maršrutą 9.9.9.0/24, jis bus gautas ir iš Router7, ir iš Router12. Pažiūrėkime, kokį pasirinkimą daro 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  

Kaip matome, du maršrutai ir rodyklė (>) reiškia, kad pasirinktas maršrutas per 192.168.112.12.
Pažiūrėkime, kaip veikia maršruto parinkimo procesas:

  1. Pirmasis žingsnis gavus maršrutą yra patikrinti, ar yra jo Next-hop. Štai kodėl, kai gavome maršrutą Router5 nenustatę Next-hop-self, šis maršrutas nebuvo toliau apdorotas.
  2. Toliau pateikiamas svorio parametras. Šis parametras nėra kelio atributas (PA) ir nėra siunčiamas BGP pranešimais. Jis sukonfigūruojamas lokaliai kiekviename maršrutizatoriuje ir naudojamas tik valdyti maršruto pasirinkimą pačiame maršrutizatoriuje. Pažiūrėkime į pavyzdį. Tiesiog aukščiau matote, kad Router10 pasirinko maršrutą 9.9.9.0/24 per Router12 (192.168.112.12). Norėdami pakeisti Wieght parametrą, galite naudoti maršruto žemėlapį konkretiems maršrutams nustatyti arba priskirti svorį kaimynui naudodami komandą:
     neighbor 192.168.107.7 weight 200       

    Dabar visi maršrutai iš šio kaimyno turės tokį svorį. Pažiūrėkime, kaip pasikeičia maršruto pasirinkimas po šios manipuliacijos:

    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

    Kaip matote, dabar pasirinktas maršrutas per Router7, tačiau tai neturės jokios įtakos kitiems maršrutizatoriams.

  3. Trečioje pozicijoje turime Vietinę pirmenybę. Šis parametras yra gerai žinomas diskrecinis atributas, o tai reiškia, kad jo buvimas yra neprivalomas. Šis parametras galioja tik vienoje AS ir turi įtakos kelio pasirinkimui tik vidiniams kaimynams. Štai kodėl jis perduodamas tik atnaujinimo pranešimuose, skirtuose vidiniam kaimynui. Jo nėra išorinių kaimynų naujinimo pranešimuose. Todėl jis buvo klasifikuojamas kaip gerai žinomas diskrecinis. Pabandykime jį pritaikyti Router5. Router5 turėtume turėti du maršrutus 9.9.9.0/24 – vieną per Router6 ir antrą per Router7.

    Mes žiūrime:

    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

    Bet kaip matome vieną maršrutą per Router6. Kur yra maršrutas per Router7? Galbūt Router7 jo taip pat neturi? Pažiūrėkime:

    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 

    Keista, atrodo, kad viskas gerai. Kodėl jis neperduodamas į Router5? Reikalas tas, kad BGP turi taisyklę:

    Maršrutizatorius perduoda tik tuos maršrutus, kuriuos naudoja.

    Router7 naudoja maršrutą per Router5, todėl maršrutas per Router10 nebus perduodamas. Grįžkime prie Vietinės nuostatos. Nustatykime „Router7“ vietines nuostatas ir pažiūrėkime, kaip „Router5“ reaguoja į tai:

    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>

    Taigi, mes sukūrėme maršruto žemėlapį, kuriame yra visi maršrutai, ir liepėme Router7 gavus pakeisti parametrą Local Preference į 250, numatytasis yra 100. Pažiūrėkime, kas nutiko 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

    Kaip matome, Router5 teikia pirmenybę maršrutui per Router7. Tas pats vaizdas bus ir Router6, nors jam pelningiau pasirinkti maršrutą per Router8. Taip pat pridedame, kad norint pakeisti šį parametrą, reikia iš naujo paleisti kaimynystę, kad pakeitimas įsigaliotų. Skaityti čia. Sutvarkėme vietines nuostatas. Pereikime prie kito parametro.

  4. Pirmenybę teikite maršrutui su Next-hop parametru 0.0.0.0, ty vietiniams arba agreguotiems maršrutams. Įvedus tinklo komandą, šiems maršrutams automatiškai priskiriamas svorio parametras, lygus maksimaliam – 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. Trumpiausias kelias per AS. Pasirinktas trumpiausias AS_Path parametras. Kuo mažiau AS eina maršrutas, tuo jis geresnis. Apsvarstykite maršrutą į 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

    Kaip matote, Router10 pasirinko maršrutą per 192.168.112.12, nes šiam maršrutui AS_Path parametre yra tik 45, o kitu atveju 123 ir 45. Intuityviai aišku.

  6. Kitas parametras yra kilmė. IGP (maršrutas, gautas naudojant BGP) yra geresnis nei EGP (maršrutas, gautas naudojant BGP pirmtaką, nebenaudojamas), o EGP yra geresnis nei Neužbaigtas? (gaunamas kokiu nors kitu būdu, pavyzdžiui, perskirstant).
  7. Kitas parametras yra MED. Mes turėjome Wieght, kuris veikė tik vietoje maršrutizatoriuje. Buvo „Local Preference“, kuri veikė tik vienoje autonominėje sistemoje. Kaip jau galima spėti, MED yra parametras, kuris bus perduodamas tarp autonominių sistemų. Labai gerai straipsnis apie šį parametrą.

Daugiau atributų nebus naudojami, bet jei du maršrutai turi tuos pačius atributus, naudojamos šios taisyklės:

  1. Pasirinkite kelią per artimiausią IGP kaimyną.
  2. Pasirinkite seniausią eBGP kelio maršrutą.
  3. Pasirinkite kelią per kaimyną su mažiausiu BGP maršrutizatoriaus ID.
  4. Pasirinkite kelią per kaimyną su mažiausiu IP adresu.

Dabar pažvelkime į BGP konvergencijos klausimą.

Pažiūrėkime, kas nutiks, jei Router6 praras maršrutą 9.9.9.0/24 per Router9. Išjungkime Router0 sąsają Gi1/6, kuri iš karto supras, kad BGP seansas su Router8 buvo nutrauktas ir kaimynas dingo, vadinasi, iš jo gautas maršrutas negalioja. Router6 iš karto siunčia naujinimo pranešimus, kur lauke Atšaukti maršrutai nurodo tinklą 9.9.9.0/24. Kai tik Router5 gaus tokį pranešimą, jis išsiųs jį Router7. Tačiau kadangi „Router7“ turi maršrutą per „Router10“, jis nedelsdamas atsakys atnaujinimu su nauju maršrutu. Jei pagal sąsajos būseną neįmanoma aptikti kaimyno kritimo, turėsite palaukti, kol įsijungs laikmatis.

konfederacija.

Jei prisimenate, mes kalbėjome apie tai, kad dažnai turite naudoti visiškai prijungtą topologiją. Kai viename AS yra daug maršrutizatorių, tai gali sukelti didelių problemų, kad to išvengtumėte, turite naudoti konfederacijas. Viena AS yra padalinta į keletą sub-AS, todėl jos gali veikti nereikalaujant visiškai prijungtos topologijos.

Kaip veikia BGP

Čia yra nuoroda į tai labuIr čia GNS3 konfigūracija.

Pavyzdžiui, turėdami šią topologiją, turėtume sujungti visus AS 2345 maršrutizatorius tarpusavyje, tačiau naudodami konfederaciją gretimumo ryšius galime nustatyti tik tarp maršrutizatorių, tiesiogiai sujungtų vienas su kitu. Pakalbėkime apie tai išsamiai. Jei turėtume tik AS 2345, tada laForge gavęs maršą iš Picard tai pasakytų maršrutizatoriams Duomenys и Worf, bet jie apie tai nepranešė maršrutizatoriui Trupintuvas . Taip pat maršrutai, platinami paties maršrutizatoriaus laForge, nebūtų perduotas Trupintuvas nei Worf- oi, ne Duomenys.

Turėtumėte sukonfigūruoti maršruto atšvaitą arba visiškai susietą kaimynystės ryšį. Padalijus vieną AS 2345 į 4 sub-AS (2,3,4,5) kiekvienam maršrutizatoriui, gauname skirtingą veikimo logiką. Viskas puikiai aprašyta čia.

Šaltiniai:

  1. CCIE Routing and Switching v5.0 oficialus sertifikato vadovas, 2 tomas, penktasis leidimas, Narbik Kocharians, Terry Vinson.
  2. Vieta xgu.ru
  3. Vieta GNS3Vault.

Šaltinis: www.habr.com

Добавить комментарий