Toto je vyrovnávacia pamäť Google pre http://wiki.cnl.tuke.sk/DocumentCisco/BGP. Je to snímka stránky, ako sa zobrazila dňa 25. feb. 2009 04:00:16 GMT. Aktuálna stránka sa odvtedy mohla zmeniť. Viac informácií

Len textová verzia
 
BGP < DocumentCisco < TWiki
r3 - 24 Jan 2009 - 10:34:30 - Main.fecilakYou are here: TWiki >  DocumentCisco Web  > BGP

BGP (Border Gateway Protocol)

BGP formuje spojenie na TCP porte 179, jeho cieľom nie je zaoberať sa výpočtom metrík pre interné trasy (toto riešia IGP protokoly) ale jeho cieľom je preniesť záznamy zo smerovacej tabuľky na iné miesto (iný smerovač) pričom sa zaoberá dosažiteľnosťou sietí cez autonómne systémy?. Smerovač nevidí trasu ako postupnosť smerovačov, ale postupnosť autonómnych systémov.

BGP využíva 4 typy správ:

  • OPEN - otvorenie spojenia
  • KEEPALIVE - test dostupnosti
  • UPDATE - odoslanie smerovacieho updatu
  • NOTIFICATION - zrušenie spojenia v dôsledku chyby

BGP je PATH-VECTOR? protokol, pretože cestu vidí ako vektor a pridáva k nej rôzne atribúty, ktorými trasu zvýhodňuje, alebo značí pre iné použitie. BGP môže byť v nasledovných stavoch:

  • IDLE
  • CONNECT
  • ACTIVE
  • OPEN
  • OPENCONFIRM
  • ESTABLISHED

BGP kategorizuje atribúty do nasledovných oblastí:

  • Well known mandatory - musia byť podporované v každej implementácii a prenášajú sa ďalej - NEXT_HOP, AS_PATH, ORIGIN
  • Well known discretionary - musia byť podporované, avšak nemusia byť odosielané - LOCAL_PREFERENCE, ATOMIC_AGGREGATE
  • Optional transitive - nepovinné, avšak ak ich daná implementácia nemá podporované, musí ich transparentne preposlať ďalej - AGGREGATOR, COMMUNITY
  • Optional non-transitive - nepovinné a ak danou implementáciou nie sú podporované, budú z updatu odstránené - ORIGINATOR_ID, CLUSTER_LIST, MULTI_EXIT_DISC

Algoritmus, ktorým BGP vyberá trasu (vždy iba jednu):

  1. Preferuj najvyššiu hodnotu atribútu WEIGHT. WEIGHT je cisco proprietárny atribút, ktorý sa v správach neprenáša, iba lokálne na danom smerovači hodnotí trasu.
  2. Preferuj najvyššiu lokálnu preferenciu (LOCAL_PREFERENCE). Štandardne je táto preferencia nastavená na hodnotu 100.
  3. Preferuj trasy, ktoré majú pôvod na lokálnom smerovači - boli oznámené príkazom network.
  4. Preferuj trasu s najkratším AS_PATH
  5. Preferuj najmenší ORIGIN code. Platí, že IGP(i) > EGP(e) > incomplete(?)
  6. Preferuj najnižší MED (multi exit discriminator = metrika). MED sa porovnáva len v tom prípade, ak sa rozhodujem medzi trasami, ktoré majú pôvod v tom istom autonómnom systéme. Nanútiť porovnanie aj za iných okolností je možné príkazom bgp always-compare-med.
  7. Preferuj trasy, ktoré boli naučené cez EBGP pred EBGP konfederáciami a EBGP konfederácie pred IBGP smermi
  8. Preferuj trasu, ktorého IGP metrika k NEXT_HOPu je najnižšia
  9. Ak je viacero trás a zapnuté maximum-paths tak vlož všetky smery do smerovacej tabuľky. Susedom sa ale bude odosielať len tá najlepšia trasa.
  10. Preferuj trasu, ktorá bola naučená ako prvá
  11. Ak nie je zapnuté maximum-paths, vlož trasu od suseda s najnižším router-id
  12. Ak je router-ID rovnaké (RR prostredie), preferuj trasu s najkratším Cluster list atribútom.
  13. Vlož trasu od suseda s najnižšou neighbor IP adresou.

Podľa RFC 1771 sa atribút AS_PATH neporovnáva (4. bod) a preto je možné ho na Cisco zariadeniach vypnúť príkazom Router(config-router)# bgp best-path as-path ignore. Ak chcem prehlásiť chýbajúci MED za MED s najvyššou hodnotou, tak sa to dá spraviť cez Router(config-router)# bgp best-path med missing-as-worst. COMMUNITY atribút sa štandardne neodosiela, ak ho chcem odosielať treba na to použíť: neighbor send-community.

Ak je susedný smerovač pripojený za viac ako 1 smerovačom (alebo loopback rozhranie) treba zvýšiť TTL BGP správ. Dá sa to spraviť dvojako:

  • neighbor ... ebgp-multihop 2
  • neighbor ... disable-connected-check

Komunitné skupiny

  • Príkazom neighbor send-community v konfigurácii BGP je možné povoliť odosielanie komunitnej skupiny k danému BGP susedovi
  • Odkazom na route-mapu je možné nastaviť atribút set community none alebo set community no-export, prípadne set community AA:NN kde AA je autonómny systém a NN je komunitná skupina. Cisco implementácia používa v starších verziách IOSu tvar komunitného atribútu NN:AA, čo je možné zmeniť príkazom ip bgp community new-format

Agregované smery

Sú 2 spôsoby ako generovať sumárnu / agregovanú routu. V BGP je to:
  • vytvorenie statického sumárneho smeru s odkazom na null0? rozhranie (dobre známe ako discarding route?) a následné vnesenie do smerovacej tabuľky BGP cez príkaz network
  • použitím príkazu aggregate-address s možnosťou potlačenia čiastkových smerov doplnením summary-only

Agregované smery

  • agregovaný smer môže potlačiť niektoré čiastkové smery, ktoré nemajú byť oznámené prostredníctvom voľby suppress-map v konfigurácii aggregate-address
  • atribúty agregovaného smeru príkazom aggregate-address je možné modifikovať doplnkom attribute-map
  • keďže agregovaný smer je vnášaný do BGP procesu príkazom network, alebo aggregate-address, je vygenerovaný BGP routerom a preto dostáva príznak ORIGIN = IGP.
  • voľba as-set v príkaze aggregate-address umožní AS_SET byť súčasťou AS_PATH, tj.v praxi AS_PATH bude zahŕňať aj AS z ktorých sa sumarizácia robila
  • voľba advertise-map odkázaná na route-mapu v aggregate-address príkaze umožňuje definovať, na základe ktorých smerov (route) sa má vybudovať aggregate adresa (dedenie vlastností)

Manažment BGP

  • RFC 1771 nehovorí striktne o porovnaní shortest AS_PATH a tento krok sa kontroluje iba v Cisco implementácii. Z tohoto dôvodu je možné vypnúť porovnanie AS_PATH atribútu prostredníctvom príkazu bgp bestpath as-path ignore
  • Ak je potrebné limitovať, koľko prefixov sa môžem od neighbora naučiť, dá sa to spraviť pomocou neighbor maximum-prefix
  • príkazom neighbor shutdown je možné aplikačne vypnúť neighbora
  • pri ľubovoľnom zásahu do filtrovania smerovacích záznamov alebo zmene distance je potrebné reštartnúť BGP spojenie
    • clear ip bgp zresetuje celé BGP vrátane všetkých neighborov
    • clear ip bgp zresetuje spojenie konkrétneho neighbora
    • clear ip bgp zresetuje spojenie peer-groupy
    • clear ip bgp soft <in|out> efektívne uplatní zmeny v smerovacej politike v smere in alebo out (distribute listy, route-mapy a podobne).

Filtrovanie smerovacích záznamov

Pre filtrovanie smerovacích záznamov je možné použiť:
  • distribute-listy v smere in/out pomocou neighbor distribute-list <in|out>
  • AS_PATH listy pomocou neighbor filter_list , pričom filter je možné vytvoriť cez ip as-path access-list
    • AS-path ACL vie využívať regulárne výrazy
  • route-mapy v použití neighbor route-map <in|out>
    • pri naviazaní route mapy na AS-path list sa používa match as-path <as-path list>
  • weight atribút je možné nastaviť nasledovnými spôsobmi:
    • pomocou route-mapy, cez set weight
    • pomocou neighbor weight <0-65536> aplikujúc weight na všetky smery, ktoré susediaci smerovač oznámi
    • pomocou fillter-listu pre konkrétny AS alebo skupinu AS cez neighbor filter-list weight <0-65536>

Zmena administratívnej vzdialenosti

  • v konfigurácii BGPv4 je možné využiť príkaz distance bgp EBGP IBGP LOCAL
    • EBGP sú siete naučené cez EBGP (susedné autonómne systémy)
    • IBGP sú siete naučené vo vnútornom autonómnom systéme (AS_PATH tam nie je, takže jediná šanca ako zabrániť slučke je značiť a filtrovať záznamy, alebo jednoducho úlohu smerovania vo vnútri AS nechať na protokoly, ktoré sú na to určené. Teda IGP protokoly. Z tohoto dôvodu má IBGP naučená cesta administratívnu vzdialenosť 200.
    • LOCAL sú smery oznámené lokálne na smerovači pomocou príkazu network. Defaultne majú tiež administratívnu vzdialenosť 200.
      • pri prehlásení siete za vlastnú lokálnu príkazom network je možné zabezpečiť odfiltrovanie siete z outgoing EBGP smerovacích updatov príkazom network X.Y.Z.Q backdoor

Lokálna preferencia

Lokálnu preferenciu je možné v rámci autonómneho systému zabezpečiť pomocou LOCAL_PREFERENCE atribútu, ktorý sa oznamuje iba IBGP peerom, tj. nie cez EBGP spojenia a preto je to atribút lokálny. Dá sa nastaviť nasledovnými spôsobmi:
  • ip default local-preference v konfigurácii BGP
  • prostredníctvom route-mapy a nastavením parametra set local-preference

Multi-Exit Discriminator (MED)

  • MED je iný termín pre metriku alebo aj inak povedané vzdialenosť. Tento parameter sa používa na ovplyvnenie návratovej trasy do zdrojového autonómneho systému a má význam iba pre susedný autonómny systém.
  • EBGP smerovač po prijatíí smerovacej informácie s nastavenou hodnotou MED atribútu tento atribút môže preposlať iba IBGP peerom, teda nemôže ho ďalej preposlať do EBGP spojení.
  • MED hodnotu je možné nastavovať v route-mape pomocou set metric
  • MED hodnota sa porovnáva iba v tom prípade ak sú smery z toho istého autonómneho systému s výnimkou ak je použitý príkaz bgp always-compare med

AS-Path pre-pending

V niektorých špecifických prípadoch je problematické preferovať trasu na základe MED hodnoty, pretože je vo vyhodnocovacom procese neskôr ako shortest AS_PATH. V prípade, že je potrebné umelo vytvoriť rovnakú dĺžku AS_PATH alebo naopak, pri prijatí smerovacieho záznamu trasu umelo predĺžiť aby k vyhodnocovaniu podľa parametra MED nedošlo je možné použiť tzv. AS prepending. Je to technika, ktorá na začiatok zoznamu AS_PATH dopíše konkrétny autonómny systém, alebo skupinu autonómnych systémov.
  • Prepending je možné robiť v route-mape pomocou set as-path prepend ASs

Route dampening

Route dampening je technika penalizácie smerov, ktoré často vypadávajú, tj. spôsobujú link-flapping. BGP dampening je štandardne vypnutý a je možné ho zapnúť príkazom:
  • bgp dampening

alebo

  • bgp dampening half-life reuse supress max-suppress

alebo selektívny dampening pre skupiny smerov

  • bgp dampening route-map MENORMAPY route-map MENORMAPY set dampening half-life reuse supress max-suppress
Kde:
  • supress je hranica penalty pri ktorej sa smerovací záznam potláča (neoznamuje sa ďalej), štandardne je to 2000
  • reuse je hranica pri ktorej sa potlačený smerovací záznam znovu začína oznamovať (štandardne je to 750)
  • half-life je hodnota ako často sa znižuje penalta na polovicu (defaultne 15 minút)
  • max-supress je čas, ako dlho môže byť smer potlačený (štandardne 60 minút)

Štandardná penalta za link-flap je 1000 bodov.

Large-scale BGP - Peer groups

Peer-groupy slúžia za účelom zjednodušenia konfiguračných nastavení, ktoré sa opakujú pre viacero neighborov. Po konfiguračnej stránke treba zabezpečiť:
  • Vytvorenie peer-groupy príkazom neighbor MENO peer-group
  • Aplikovať spoločné nastavenia všetkých členov peer-groupy ako neighbor MENO nastavenia (napr. filtre in/out)
  • Zaradenie neighbora do peer-groupy príkazom neighbor IP peer-group MENO_PEERGROUPY

Large-scale BGP - Komunitné skupiny

Peer-groupy umožňujú v rámci jedného routra aplikovať rovnaké nastavenia na viacerých susedov. Komunitné skupiny umožňujú nastavovať rovnakú politiku pre smery rovnakej povahy, pričom povahu smerovacieho záznamu je možné niesť v komunitnom atribúte. Postup pre konfiguráciu je potom následovný:
  • V jednotlivých smeroch prostredníctvom route-mapy je potrebné nastaviť príkazom set community komunitný atribút
  • V konfigurácii BGP je k jednotlivým neighborom alebo peer-groupe, ktorej sa má atribút community odoslať napísať príkaz neighbor send-community

Špecifický prípad tvorí komunitný atribút NO_EXPORT, ktorý hovorí o tom, že sieť označená ako NO_EXPORT sa nemá ďalej posielať EBGP spojeniami. Nastavenie takéhoto atribútu je možné v route-mape príkazom set community no-export V prípade, že je potrebné komunitný atribút odstrániť, je možné použiť set community none v route-mape pre jednotlivé smery Komunitný atribút NO_ADVERTISE nastavený príkazom set community no-advertise zabezpečuje oznámenie siete iba IBGP peermi.

RFC 1997 a 1998 popisujúce komunitné atribúty definuje komunitu ako 32 bitový register v tvare AA:NN, kde AA je autonómny systém a NN je číslo komunitnej skupiny. Cisco implementácia štandardne využíva iba číselný zápis. V prípade prechodu na zápis podľa RFC 1997 je potrebné použiť príkaz ip bgp-community new-format

V route-mapách pri filtrovaní smerovacích záznamov je možné odkázať sa aj na match community NUM, ktorý kontroluje komunitný atribút podľa community-listu. Community list využíva regulárne výrazy a je možné ho vytvoriť pomocou ip community-list NUM permit REGEX

Pridávanie a odoberanie komunitného atribútu namiesto jeho úplného nahradenia sa robí následovne:

  • set community COMMUNITY additive pre pridanie komunitnej skupiny
  • set comm-list COMMUNITY-list delete pre odstránenie komunitnej skupiny

Large-scale BGP: Konfederácie a filtrovanie AS_PATH

V prípadoch, kedy autonómny systém je prepojený s ďalšími autonómnymi systémami s privátnymi AS číslami (64512 - 64565) je potrebné zabezpečiť, aby privátne autonómne systémy nevystupovali v AS_PATH. Toto je možné docieliť dvojakou cestou:
  • Konfederácie
  • odstránením privátnych rozsahou z AS_PATH pomocou neighbor IP/Peer-group remove-private-AS

Cieľom konfederácie je rozdeliť autonómny systém na niekoľko dielčích AS, ktoré navonok oproti ostatným autonómnym systémom vystupujú ako celok - jeden autonómny systém. Vo vnútri konfederácie je možné využívať jednak privátne a jednak verejné čísla AS, no navonok sa aj tak javia pod jedným spoločným číslom AS.

BGP v režime konfederácie je doplnené o dvojicu hlavných príkazov:

  • bgp condederation identifier AS špecifikujúci číslo AS konfederácie, ktorý bol rozdelený na dielčie AS
  • bgp confederation peers AS1 AS2 AS3 špecifikujúci čísla AS z ktorých konfederácia pozostáva

V konfederácii sa zachovávajú následovné atribúty (za normálnych okolností by sa menili):

  • NEXT_HOP
  • MED
  • LOCAL_PREFERENCE

Route reflektory

Cieľom route-reflektora je zjednodušiť konfiguráciu tak, aby nebolo potrebné medzi všetkými peermi robiť full-mesh IBGP. Za normálnych okolností platí pravidlo, že smer naučený cez IBGP suseda sa nepreposiela ostatným susedom. Route-reflector je prvok, ktorý toto pravidlo porušuje a je mu umožnené smery naučené cez IBGP preposlať ostatným IBGP susedom.

Jedine smerovač, ktorý má byť route-reflector potrebuje podporovať funkcionalitu Route-reflectingu. Ostatné smerovače RR vnímajú ako obyčajného suseda (neighbor).

Route-reflektor má pomocou príkazu neighbor IP route-reflector-client povedané, voči ktorým susedom má porušiť pravidlo nepreposielania IBGP<->IBGP a teda voči ním sa javí ako route-reflector.

Na značenie trasy, odkiaľ sa získala informácia preposlaná route-reflektorom sa používajú atribúty:

  • ORIGINATOR_ID
  • CLUSTER_LIST

Ak sa v topológii nachádza viac ako jeden route-reflector, je potrebné každému takémuto smerovaču zaviesť bgp clustter-id

Outbound route filtering

Cieľom ORF je vymeniť si šablónu na filtrovanie so susedným smerovačom. Na základe prijatej šablóny bude smerovač filtrovať outbound. Konfigurácia:

Router(config)# router bgp X
Router(config-rotuer)# neighbor .... remote-as ....
Router(config-router)# address-family ipv4
Router(config-router-af)# neighbor .... activate
Router(config-router-af)# neighbor .... capability orf prefix-orf  {send-receive-both}
Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r3 < r2 < r1 | More topic actions
 
Powered by TWiki
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback