OpenBGPD kasutamine OpenBSDga

Allikas: Kuutõrvaja

Sissejuhatus

Internet koosneb võrkude haldajatele usaldatud suurtest võrkudest, mida nimetatakse autonoomseteks süsteemideks (AS - Autonomous System) ning neid süsteeme tähistatakse AS numbritega (ASN - Autonomous System Number). Üheks oluliseks ülesandeks nende võrkude pidamisel on ruutingute haldamine, reeglina räägitakse võrkude vahel EGP protokolli ja võrgude sees IGP protokolli.

  • EGP (Exterior Gateway Protocol) - nt BGP4 (Border Gateway Protocol) protokoll ja implementatsioon OpenBGPD; BGP4 on 2009 aastal praktiliselt ainus levinud EGP
  • IGP (Interior Gateway Protocol) - nt OSPF (Open Shortest Path First) protokoll ja implementatsioon OpenOSPFD; OSPF on 2009 aastal tõenäoliselt kõige levinum IGP, lisaks on palju kasutusel IS-IS

Border Gateway Protocol (BGP) kasutusalad

  • nn suurte võrkude omavahel ühendamiseks (nt ISP'ide vahelised ühendused)
  • kasutaja ühendamiseks võrku mitme erineva ISP ühenduse abil

BGP protokolli oluline omadus on asjaolu, et tegemist on avatud standardiga (ingl. k. open standard). BGP protokoll loodi 1989 aastal vastuseks vajadusele hallata järjest suurenavas võrgus ruutinguid sklaeeruval ja toimival viisil. Enne BGP kasutuselevõtmist kasutati nn Hello protocol'i, millele järgnes RIP protokolli kasutamine. Oluline on tähele panna, et enne BGP protokolli kasutamist ei eristatud selgelt interior ja exterior ruutingut.

BGP tööpõhimõte

Üldiselt on BGP juures olulised kolm asjaolu

  • tagada loop-free ruuting st paketi alguspunktist lõpppunkti jõudmisel ei läbi pakett ühe sama ruuterit mitu korda
  • töötada võimalikult väikeste andmemahtudega, osalised vahetavad alguses kõik andmed ja seejärel vahetatakse vaid muudatusi
  • BGP on tehtud lähtudes praktilistelt kaalutlustelt, nt kasutatakse andmevahetuseks olemasolevat TCP protokolli ja ei leiutatud selleks uut protokolli

BGP on path vector protokoll (erinevalt nt link state protokollist).

Üheks iseloomulikus BGP kui exterior ruuting protokolli omaduseks on võimaldada toimuvat liiklust kokkulepitud korra alusel kontrollida (ingl. k. to implement a policy), nt lähtudes, millist teed mööda käib AS'i läbiv liiklus: kõige kiiremat, kallimat, turvalisemat teed.

BGP protokolli seisukohast koosneb internet erinevatele haldajatele usaldatud võrgusegmentidest, mis on omavahel ühendatud suhteliselt suurt andmevahetust võimaldavate kanalitega

                                                       .......                   ,----------,
                     - -... R2   -------------- R3 .'          \   R8       R9  -             \
                  .'        '.                     /            '--------------|   AS 65102  |
                 |  AS 65100  |                    |. AS 65101  |              |            .  R10
                  |           -                     \          |                  ' -------/  \
                    ' - R1  '                          ...   '                                  \  
                          \                             R7                             R11        \          R12
                            \                           /                          ... -------------\.--------| ---,
                              \                        /                            |                         |
                                \     -------         /                             |                         |  
                                  \ '        '       /                           |       \               /         \
                               R4   AS 65105  |-----/                          ( AS 65103 |             | AS 65104  |
                                  |.        '  R6                               \   -----)               \-.-...---/
                                     .._____/            

Skeemil on kujutatud

  • AS 65100, AS 65101 jne autonoomsete numbritele vastavaid võrgusegmente; need ei pruugi sisaldada järjestikuseid ip aadress vaid nt mitmed /22, /24, /16 võrgusegmente
  • R1, R2 jne tähistavad autonoomsete võrkude piiridel töötavaid ruutereid, mis on naaber AS'iga ühendatud suurt andmevahetust võimaldava kanaliga

Ühe asjaolune on skeemil näha, et nt AS 65103 seest saab jõuda AS 65105 juurde välja kahte erinevat teed pidi

 AS 65103 -> AS 65102 -> AS 65101 -> AS 65105

ja

 AS 65103 -> AS 65102 -> AS 65101 -> AS 65100 -> AS 65105

kusjuures sellel teel ei pea AS numbrid kuidagi järjest paiknema ning täiesti normaalne võib olla ka see, kui liiklus käib nö visuaalselt skeemi vaadates pikemat teed mööda. See võib olla tingitud nt administratiivsetest kokkulepetest või ühenduskanalite omadustest ja nende kasutamisega seotud maksumusest lähtudes on nii otstarbekam.

BGP protokolli ülesanne on hallata ruutinguid ehk kontrollida, millist teed pidi üle paljudele erinevatele haldajatele usaldatud võrgusegmentidest liiklust jõuab lähtepunktist sihtpunkti. Üldiselt kaasneb andmesidega pakettide mõlemasuunamline liikumine, kusjuures paketid ei pruugi liikuda mõlemas suunas sama teed mööda. Sellist juhtumit nimetatakse asümmeetriliseks ruutinguks.

Kõik skeemil kujutatud ruuterid räägivad BGP protokolli kusjuures

  • BGP ruuter suhtleb ainult temaga otseselt ühendatud teiste AS'ide ruuteritega ning oma AS'i kõigi BGP ruuteritega
  • kui ruuter suhtleb teise AS ruuteriga, siis öeldakse, et nad räägivad omavahel eBGP'd (external BGP)
  • kui ruuter suhtleb oma AS'i ruuteriga, siis öeldakse, et nad räägivad omavahel iBGP'd (internal BGP)
  • BGP ruuteri ülesanne on teatada teda otseselt ümbritsevatele teistele BGP ruuteritele, millised võrgud on tema AS'is; selle alusel teavad teised BGP ruuterid kuhu saata kõnealuse AS'i suunas saadetud liiklust
  • BGP ruuteri ülesanne on teatada edasi järgmistele BGP ruuteritele, milliste AS'ide ja nende võrgusegmentide juurde jõuab läbi kõnealuse AS'i; nii levib tulemusena info kogu võrgu struktuurist kõigisse võrgu BGP ruuteritesse
  • kõigil BGP ruuteritel on mälus samasugune nö pilt kogu võrgu ruutingutest; sellel põhjusel on tegelevad võrgusegmentide haldajad pigem väiksema (nt /21) kui suurema (nt /29) täpsusega võrkudega
  • BGP tarkvara töö tulemusena tekib ruuteris ruutingutabel, mille alusel oskab ruuter saata talle mingi võrguseadme kaudu sisenenud pakette välja sobiva muu võrguseadme kaudu
  • BGP ülesanne on korraldada liiklus AS'ide vahel, BGP ülesanne ei ole korraldada liiklust AS sees; AS sees korraldatakse liiklust keerukamal juhul IGP ruutinguprotokollidega, nt OSPF või AS sisemistes ruuterites staatiliselt seadistatud ruutingutabelid

BGP andmevahetuseks pöördub BGP peer suvaliselt pordilt BGP peer'i poole pordile 179/tcp. Üldiselt võiks arvestada, et ühenduste algatamine võib toimuda mõlemas suunas. Nt Wireshark abil paistab BGP liiklus selline

Bgp-3.gif

kus

  • valitud real on kirjas vastavas BGP UPDATE sõnumis olev AS path

Mõisted

  • AS numbrid (ASN - Autonomous System Number) vahemikus 64512 - 65535 ei ole avalikult kasutuses ja on mõeldud privaatseks kasutamiseks.
  • stub AS - AS omab ainult ühte ühendust ühe teise AS'iga; AS sees liigub ainult kohalik liiklus (ingl. k. local traffic)
  • multihomed AS - AS omab ühendusi enam kui ühe teise AS'iga; AS sees liigub ainult kohalik liiklus
  • transit AS - AS omab ühendusi enam kui ühe teise AS'iga; AS sees liigub kohalik liiklus ja teatud tingimustel läbiv liiklus (ingl. k. transit traffic)

Icedove ASnumber plugin

Icedove ASnumber plugin näitab brauseri all paremas nurgas parasjagu avatud lehe veebiserverile vastavat AS numbrit. Lisaks, kui hiir viia numbrile, siis esitatakse üksikasjalisem info selle AS kohta, nt selliselt Kuutorvaja puhul

Bgp-1.gif

Plugini parema hiireklõpsuga avanenud hüpikmenüüst saab valida Whois lookup ning sooritatakse päring vastava AS kohta http://www.db.ripe.net veebikohas ning esitatakse tulemus järgmises brauseri sakis.

Sellise plugini kasutamisel tuleb arvestada, et nö plugina isand saab üsna hea ülevaate, milliseid veebikohti brauseriga külastatakse.

eBGP kasutamine

Olgu kasutada selliselt seadistatud võrk

  • arvutites on seadistatud võrguseadmed
  • vaikelüüs on seadistamata
  • ip forwarding on sisselülitatud
                                             RNW - 10.2.0.0/24
haapsalu                                     tallinn                                    narva
AS 65101                                     AS 65102                                   AS 65103
          ___  em0 - 192.168.12.101 (r-id)     ___  em1 - 192.168.23.102 (r-id)     ___
         |   |                                |   |                                |   |
         | 1 |--------------------------------| 2 |--------------------------------| 3 |
         |___|           192.168.12.102 - em0 |___|           192.168.23.103 - em0 |___|
           |                                    |                                    |   em1 - 192.168.37.103 (r-id)
           | em1 - 192.168.14.101               |                                    |  
           |                                    |                                    |
           |                                    |                                    |
           |                                    |                                    |
           |                                    |                                    |
           |                                    |                                    |
           | em0 - 192.168.14.104               |                                    |
parnu      |                                    |   tartu                            |
AS 65104  _|_  em1 - 192.168.45.104            _|_  AS 65105                         |
         |   |                                |   |                                  |
         | 4 |--------------------------------| 5 | em1 - 192.168.23.105             |
         |___|     192.168.45.105 (r-id)- em0 |___|                                  |
           |                                    |   em2 -  192.168.56.105            |
           | em2 - 192.168.46.104 (r-id)        |                                    |
           |                                    |                                    |
           |                                    |                                    | 
           |                                    |                                    |
           |                                    |                                    |
           |                                    |                                    |
           |                                    |                                    |
           | em0 - 192.168.46.106               |                                    |
          _|_   em1 - 192.168.56.106 (r-id)     |                                   _|_  em1 - 192.168.37.107
         |   |                                  |                                  |   |
         | 6 |----------------------------------'     192.168.67.107 (r-id) - em0  | 7 | 
         |___|---------------------------------------------------------------------|___|
           em2 - 192.168.67.106
voru                                                                                     pihkva
AS 65106                                                                                 AS 65107
RNW - 10.6.0.0/24

ning eesmärgiks kasutades OpenBSD OpenBGPD tarkvara

  • seadistada iga arvutid tööle BGP ruuteritena oma Autonomous System (AS) jaoks (nt AS 65101)
  • ruuterid levitavad üle BGP kuuldud ruutinguid
  • 10.6.0.0/24 ja 10.2.0.0/24 võrgus töötavad arvutid peavad saama omavahel suhelda (RNW - routed network, ingl. k. ruuditud võrk)

Testvõrgu ettevalmistamine

Tundub, et 2009 aasta suvel on kõige otstarbekam BGP testiks kasutada tarkvara VMware Server v. 2 abil moodustatud virtuaalset keskkonda. Antud juhtumil on WMware keskkonnas seadistatud

  • igale ruuterite omavahelisele ühendusele vastav nn hostonly võrk
  • igale ruuterile vastav virtuaalne arvuti
  • eemalt üle ssh ligipääsuks on tallinn ja voru arvutitele seadistatud lisaks üks sillatud režiimis töötav võrguseade; läbi nende arvutite pääseb seadistama ssh abil ka ülejäänud arvuteid

Openbgpd-1.gif

Lisaks tasub kaaluda GNS3 tarkvara kasutamist mida on kirjeldatud aadressil http://kuutorvaja.eenet.ee/wiki/GNS3 ja mis võimaldab simuleerida Cisco ruuteritest jms võrguseadmetest koosnevat võrku. Eelduseks on, et kasutada on mõni nö päris Cisco IOS tõmmis.

eBGP seadistamine

Erinevalt IGP protokolli, nt OSPF kasutamisest tuleb kõik BGP protokolli kasutavad osalised seadistada näidates ära vähemalt kaks parameetrit

  • suhtluspartneri võrguseadme IP aadress
  • suhtluspartneri ASN

BGP deemoni bgpd tööd kontrollib seadistusfail /etc/bgpd.conf, kus võib esineda neli sektsiooni, üldiselt alltoodud järjekorras

  • makrod (ingl. k. macros) - muutujate kirjeldused, mille kasutamine seadistusfailis parandab loetavust ja korduvakasutust
  • globaalsed seadistused (ingl. k. global configuration) - seadistuste üldosas mis kehtib ruuteri kohta üldiselt, nt ruuteri id väärtus ning AS number
  • naabrid ja grupid (ingl. k. neighbors and groups) - naabruses asuvate ruuteritega andmevahetust pidamist kirjeldav osa
  • filter (ingl. k. filter) - filtreerivad reeglid ruuterisse siseneva ja ruuterist väljuvale BGP protokolliga toimuvale andmevahetusele

Järgnevates alampunktides on esitatud kõigi skeemil kujutatud ruuterite seadistusfailid.

AS 65101 - Haapsalu
 # cat /etc/bgpd.conf
 # global configuration
 AS 65101
 router-id 192.168.12.101
 
 neighbor 192.168.12.102 {
         remote-as       65102
         descr           AS65102 
         announce        all
 }
 
 neighbor 192.168.14.104 {
         remote-as       65104
         descr           AS65104
         announce        all
 }
 
 # filter out prefixes longer than 24 or shorter than 8 bits
 deny from any
 allow from any inet prefixlen 8 - 24
 # do not accept a default route
 deny from any prefix 0.0.0.0/0
 
 # filter bogus networks
 deny from any prefix 169.254.0.0/16 prefixlen >= 16
 deny from any prefix 192.0.2.0/24 prefixlen >= 24
 deny from any prefix 224.0.0.0/4 prefixlen >= 4
 deny from any prefix 240.0.0.0/4 prefixlen >= 4

kus

  • AS 65101 - autonoomse süsteemi number, mida ruuter esindab
  • router-id 192.168.12.101 - ruuteri identifikaator, tavaliselt kasutatakse sellena mõne ruuteri võrguseadme ip aadressi
  • neighbor 192.168.12.102 { ... } - ruuteriga ühendatud teise ASi kuuluva ja ip aadressil 192.168.12.102 asuva ruuteri suhtlemise kirjelduse sektsioon
  • remote-as 65104 - teise ASi number
  • descr AS65104 - sissekande kirjeldus
  • announce all - näitab, et sellele naaber-as ruuterile tuleb edastada info kõigist teada olevatest ruutingutest st kohalikest ja õle BGP teiste ruuterite käest õpitutest
  • deny ja allow kirjed näitavad, milliseid üle BGP esitatud ruutinguid kõnealune ruuter õpib ja milliseid mitte
AS 65102 - Tallinn
 # cat /etc/bgpd.conf                                                                          
 # global configuration
 AS 65102
 router-id 192.168.23.102
 network 10.2.0.0/24
 
 neighbor 192.168.12.101 {
          remote-as       65101
          descr           AS65101
 }
 
 neighbor 192.168.23.103 {
          remote-as       65103
          descr           AS65103
 }
 
 neighbor 192.168.25.105 {
          remote-as       65105
          descr           AS65105
 }
 
 # filter out prefixes longer than 24 or shorter than 8 bits
 deny from any
 allow from any inet prefixlen 8 - 24
 # do not accept a default route
 deny from any prefix 0.0.0.0/0
 
 # filter bogus networks
 deny from any prefix 169.254.0.0/16 prefixlen >= 16
 deny from any prefix 192.0.2.0/24 prefixlen >= 24
 deny from any prefix 224.0.0.0/4 prefixlen >= 4
 deny from any prefix 240.0.0.0/4 prefixlen >= 4

kus

  • network 10.2.0.0/24 - ruuter levitab ise (ingl. k. router is originating 10.2.0.0/24 network) selle võrgu ruutinguid, st sellele võrgule saab ligi kõnealuse ruuteri kaudu
AS 65103 - Narva
 # cat /etc/bgpd.conf 
 # global configuration
 AS 65103
 router-id 192.168.37.103
 
 neighbor 192.168.23.102 {
          remote-as       65102
          descr           AS65102 
          announce all    
 }
 
 neighbor 192.168.37.107 {
          remote-as       65107
          descr           AS65107
          announce all
 }
 
 # filter out prefixes longer than 24 or shorter than 8 bits
 deny from any
 allow from any inet prefixlen 8 - 24
 # do not accept a default route
 deny from any prefix 0.0.0.0/0
 
 # filter bogus networks
 deny from any prefix 169.254.0.0/16 prefixlen >= 16
 deny from any prefix 192.0.2.0/24 prefixlen >= 24
 deny from any prefix 224.0.0.0/4 prefixlen >= 4
 deny from any prefix 240.0.0.0/4 prefixlen >= 4
AS 65104 - Pärnu
 # cat /etc/bgpd.conf 
 # global configuration
 AS 65104
 router-id 192.168.46.104
 
 neighbor 192.168.14.101 {
          remote-as       65101
          descr           AS65101
          announce        all
 }
 
 neighbor 192.168.45.105 {
          remote-as       65105
          descr           AS65105
          announce        all     
 }
  
 neighbor 192.168.46.106 {
          remote-as       65106
          descr           AS65106
          announce all
 }
  
 # filter out prefixes longer than 24 or shorter than 8 bits
 deny from any
 allow from any inet prefixlen 8 - 24
 # do not accept a default route
 deny from any prefix 0.0.0.0/0
 
 # filter bogus networks
 deny from any prefix 169.254.0.0/16 prefixlen >= 16
 deny from any prefix 192.0.2.0/24 prefixlen >= 24
 deny from any prefix 224.0.0.0/4 prefixlen >= 4
 deny from any prefix 240.0.0.0/4 prefixlen >= 4
AS 65105 - Tartu
 # cat /etc/bgpd.conf 
 # global configuration
 AS 65105
 router-id 192.168.45.105
 
 neighbor 192.168.45.104 {
          remote-as       65104
          descr           AS65104 
 }
 
 neighbor 192.168.25.102 {
          remote-as       65102
          descr           AS65102
          announce all
 }
 
 neighbor 192.168.56.106 {
          remote-as       65106
          descr           AS65106
          announce all
 }
 
 # filter out prefixes longer than 24 or shorter than 8 bits
 deny from any
 allow from any inet prefixlen 8 - 24
 # do not accept a default route
 deny from any prefix 0.0.0.0/0
 
 # filter bogus networks
 deny from any prefix 169.254.0.0/16 prefixlen >= 16
 deny from any prefix 192.0.2.0/24 prefixlen >= 24
 deny from any prefix 224.0.0.0/4 prefixlen >= 4
 deny from any prefix 240.0.0.0/4 prefixlen >= 4
AS 65106 - Võru
 # cat /etc/bgpd.conf 
 # global configuration
 AS 65106
 router-id 192.168.56.106
 network 10.6.0.0/24
 
 neighbor 192.168.46.104 {
          remote-as       65104
          descr           AS65104
 }
 
 neighbor 192.168.56.105 {
          remote-as       65105
          descr           AS65105
 }
 
 neighbor 192.168.67.107 {
          remote-as       65107
          descr           AS65107
 }
 
 # filter out prefixes longer than 24 or shorter than 8 bits
 deny from any
 allow from any inet prefixlen 8 - 24
 # do not accept a default route
 deny from any prefix 0.0.0.0/0
 
 # filter bogus networks
 deny from any prefix 169.254.0.0/16 prefixlen >= 16
 deny from any prefix 192.0.2.0/24 prefixlen >= 24
 deny from any prefix 224.0.0.0/4 prefixlen >= 4
 deny from any prefix 240.0.0.0/4 prefixlen >= 4
AS 65107 - Pihkva
 # cat /etc/bgpd.conf
 # global configuration
 AS 65107
 router-id 192.168.67.107
   
 neighbor 192.168.67.106 {
          remote-as       65106
          descr           AS65106
          announce all
 }
 
 neighbor 192.168.37.103 {
          remote-as       65103
          descr           AS65103
          announce all
 }
 
 # filter out prefixes longer than 24 or shorter than 8 bits
 deny from any
 allow from any inet prefixlen 8 - 24
 # do not accept a default route
 deny from any prefix 0.0.0.0/0
 
 # filter bogus networks
 deny from any prefix 169.254.0.0/16 prefixlen >= 16
 deny from any prefix 192.0.2.0/24 prefixlen >= 24
 deny from any prefix 224.0.0.0/4 prefixlen >= 4
 deny from any prefix 240.0.0.0/4 prefixlen >= 4

eBGP kasutamine

BGP tarkvara käivitamiseks tuleb öelda

 # bgpd

kusjuures algul võib olla abi käivitades võtmetega -v ja -d selleks, et programm väljastaks rohkem infot ja töötaks foregroundis

 # bgpd -vd

Parsitud seadistusfaili sisu esitatakse öeldes

 # bgpd -nv

BGP töötab kolme bgpd protsessina

 # ps aux | grep bgpd
 root      3387  0.0  0.5   812  1312 p0  I+    12:07PM    0:00.01 bgpd: parent (bgpd)
 _bgpd    22260  0.0  0.5   864  1304 p0  I+    12:07PM    0:00.01 bgpd: route decision engine (bgpd)
 _bgpd    22081  0.0  0.5  1060  1408 p0  S+    12:07PM    0:00.34 bgpd: session engine (bgpd)

Töötava BGP ruuteri haldamiseks on kasutada utiliit bgpctl, nt küsides ruuteris voru kokkuvõtet tuleb öelda

 # bgpctl show summary
 Neighbor                   AS    MsgRcvd    MsgSent  OutQ Up/Down  State/PrfRcvd
 AS65107                 65107        310        308     0 02:32:58      4
 AS65105                 65105        317        314     0 02:35:40      7
 AS65104                 65104        317        314     0 02:35:40      7

mis tähendab, et kõnealune ruuter suhtleb kolme loetletud AS'iga.

Selleks, et saada teada, milliste ASide kaudu toimub andmevahetus 10.2.0.0/24 võrguga tuleb öelda

 # bgpctl show ip bgp | grep 10.2.0.0
 *>    10.2.0.0/24         192.168.56.105     100     0 65105 65102 i
 *     10.2.0.0/24         192.168.46.104     100     0 65104 65101 65102 i
 *     10.2.0.0/24         192.168.67.107     100     0 65107 65103 65102 i

ning saame teada, et liiklus toimub läbi AS 65105 ja AS 65102.

Üks BGP kasutamise põhjus seisneb selles, et kui mõni võrgusõlm rikneb, siis süsteem hääletab ruutingud automaatselt ümber. Kui nt peatada BGP deemon ruuteris tartu, siis peaks hakkama liiklus käima läbi parnu või pihkva ruuteri; lülitades tartu tagasi tööle, liiklus läbi tartu taastub. Oluline on seejuures, et säilivad otspunktide vahelised tcp sessioonid, kuna ruuterid töötavad iseenesest IP kihis.

Lihne moodust asjakorraldust selles suhtes kontrollida on seadistada ruuteris tallinn lo1 võrguseade

 # ifconfig lo1 create
 # ifconfig lo1 10.2.0.102/24

ning vorus

 # ifconfig lo1 create
 # ifconfig lo1 10.6.0.106/24

Seejärel saab kasutada vorus pingi

 # ping -I 10.6.0.106 10.2.0.102

või ssh'd

 # ssh -b 10.6.0.106 10.2.0.102

Korrektsem testimine oleks kui ühendada voru ja tallinn ruuterite külge mõne nö päris vastav 10.x.x.x subnet.

iBGP kasutamine

Sama AS sees räägivad BGP ruuterid iBGP protokolli, seejuures

  • kõik iBGP ruuterid peavad olema otse ühendatud kõigi teiste iBGP ruuteritega, mis teeb praktiliselt üle nelja viie BGP ruuteri pidamise samas AS'is keerukaks (kuigi selle probleemi lahendamiseks on mitmeid nö abivõtted)
  • info edastamisel iBGP ruuterid ei muuda nn nexthop väärtust
  • et iBGP ruuterid saaksid töötada, peavad nad üldiselt saama kasutada nö alumises kihis ka ruutingu mõttes toimivat võrku andmete edastamiseks; praktiliselt tähendab see nt seda, et iBGP ruuterites on käivitatud lisaks BGP tarkvarale ka IGP tarkvara, nt OSPF

Võrgu ühendamine kahe teenusepakkujaga

Võrgu ühendamisel mitme teenusepakkujaga on tavaliselt eesmärgiks saavutada parem st redundantsem võrguühendus ühenduse olemasolu mõttes, aga mitte niivõrd liikluse koormusjaotust korraldada. Järgnevas tutvustatakse asjakorraldust, kus võrguühenduseks on kasutada kaks erinevat internetiteenusepakkujat ning kliendi võrguseadmed sh ruuterid on dubleeritud. Kliendi võrguühendusel on sellised omadusel

  • ühendus avaliku võrguga jääb toimima ühe teenusepakkuja võrgus toimuvate tõrgete puhul
  • ühendus avaliku võrguga jääb toimima ühe teenusepakkuja ja kliendi vahelise ühenduse riknemisel
  • ühendus avaliku võrguga jääb toimima kui rikneb üks kliendi ruuter või switch
  • ühendus avaliku võrguga toimub eelistatud läbi teenusepakkuja isp1 ehk joonisel vasakpoolse

Tehnilises mõttes saab rakendada toodud kasutusjuhtu ka ühe teenusepakkuja kahe võrgusõlme kasutamisel, aga lahenduse sisuline tähendus siis muutub vähem redundantseks. Praktiliselt võib kliendi ruuterites kasutada lisaks ka paketifiltri funktsionaalsust, st ruuterid on lisaks ka kliendi tulemüürideks.

Sõltuvalt võimalustest ja konkreetsetest vajadustest peab klient otsustama, kas kasutada avalikku ASN numbrit või ta lepib oma teenusepakkujatega kokku mingi privaatse ASN kasutamise.

Järgnevas testis on tegelikult kasutatud ülaltoodud virtuaalseid arvuteid ja nendevahelisi ühendusi, narva ja pihkva ruutereid on kasutatud kliendi ruuteritena; voru ja tallinn on vastavalt ISP 1 ja ISP 2.

Lähtetingimused ja eesmärk

Olgu kliendi võrgu 192.168.37.0/24 (AS 65108) ühendamiseks internetiga kasutada kaks teenusepakkujat suheldes kummagagi nende ühe ruuteri kaudu

  • ISP 1 - AS 65107 (ühenduspunkt 192.168.67.106)
  • ISP 2 - AS 65103 (ühenduspunkt 192.168.23.102)

kusjuures mõlemad teenusepakkujad on nõus seadistama kliendiga kaks bgp ühendust (mis kasutavad sama füüsilist kanalit).

Kliendi võrgu internetti ühendamiseks on kasutada kaks ruuterit ja kaks switchi, kumbagi switchi on ühendatud kaks erinevate ruuterite porti ning ühe ISP'i port. Ühendatava võrgu poolt on kasutuses neli ip aadressi

  • 192.168.23.107 - ruuter-1
  • 192.168.67.107 - ruuter-1
  • 192.168.23.103 - ruuter-2
  • 192.168.67.103 - ruuter-2

Skeem

Üldiselt on skeemil kujutatud

  • suvaline arvuti internetis, ip aadressiga 10.5.0.12, AS 65105; selle abil saab kontrollida seadistatud süsteemi nõuetekohast töötamist
  • kõrgendatud võrgulise redundantsusega kliendi võrk 192.168.37.0/24, AS 65108, mis jääb allapoole 'kliendi võrgu piir' tähistust
  • kliendi võrgus töötavate arvutite vaikelüüsi aadress 192.168.37.254 on carp seadmel, mis on kas ühe või teise füüsilise ruuteri juures
  • võrk on ühendatud kahe teenusepakkuja ISP 1 (AS 65107) ja ISP 2 (AS 65103) ruuterite abil internetiga
                                              ___
                                             |   |  arvuti
                                             |___|  10.5.0.12
                                               |
                                ------|--------|-----
                                      |      
                                     _|_   AS 65105
                                    |   | ruuter
                                    |___|
                                      | 
                                     ...
 
                                   internet
                           ...                    ...
                          _|_                      _|_
                         |   |                    |   |
                         |___|                    |___|   
                           |                        |
  
                    AS 65107  .....          AS 65103 ...
 
                           |                        |    
  192.168.56.106 - em1  ___|_                      _|___  em1 - 192.168.25.102
                       |     |                    |     |
          ruuter-isp-1 |_____|                    |_____| ruuter-isp-2
                         |                            |   em0 - 192.168.23.102
  192.168.67.106 - em0   |                            |
                        ....  kliendi võrgu piir    ....
                        _|___                      ___|_
              switch-1 |     |                    |     | switch-2
                       |_____|---,            ,---|_____| 
                         |         \        /         |
                         |             \/             |
                         |          /      \          |
                         |      /              \      |
  192.168.67.107 - em0   |  /                      \  |   em0 - 192.168.23.103
  192.168.23.107 - em1  _|_|_                      _|_|_  em1 - 192.168.67.103
                       |     |                    |     |
              ruuter-1 |_____|                    |_____| ruuter-2
                           |       AS 65108         |
  192.168.37.107 - em2     |  carp1 192.168.37.254  |     em2 - 192.168.37.103
                           |                        |
                           |                        |
                         --|----------------|-------|--|-----
                          _|_              _|_        _|_
                         |   |            |   |      |   |
                         |___|            |___|      |___|
      
                       arvuti-1         arvuti-2   arvuti-3
                       ip: 192.168.37.108
                       gw: 192.168.37.254

Täpsemalt on skeemil kujutatud

  • ruuter-isp-1 - ühe teenusepakkuja ruuter, üks pool vaatab nö isp'i AS võrgu sisse; teine kliendi poole oma ühe pordiga
  • ruuter-isp-2 - teise teenusepakkuja ruuter, üks pool vaatab nö isp'i AS võrgu sisse; teine kliendi poole oma ühe pordiga
  • switch-1,2 - kliendi switchid
  • ruuter-1 - kliendi üks ruuter, millel on kaks nö interneti-poolset võrguseadet em0 ja em1, need on ühendatud ühe ühe ja teine teise isp'iga läbi erinevate switchide
  • ruuter-2 - kliendi teine ruuter, millel on kaks nö interneti-poolset võrguseadet em0 ja em1, need on ühendatud ühe ühe ja teine teise isp'iga läbi erinevate switchide
  • arvuti-1,2,3 - kliendi arvutid, mille vaikelüüsiks on carp1 seadmega seotud ip aadress 192.168.37.254
  • ruuter - ühe suvalise internetis oleva AS 65105 ruuter ja selle taga AS'i kuuluv arvuti, 10.5.0.12

Kliendi ruuterite seadistamine

BGP seadistamiseks sobib kasutada ruuteris ruuter-1 sellist bgpd seadistusfaili

 # cat /etc/bgpd.conf                                                                                            
 # global configuration
 AS 65108
 router-id 192.168.37.103
 network 192.168.37/24
 
 # ISP 1
 neighbor 192.168.67.106 {
          remote-as       65106
          descr           AS65106
          depend on carp1
          demote carp
 }
   
 # ISP 2
 neighbor 192.168.23.102 {
          remote-as       65102
          descr           AS65102 
          set prepend-neighbor 1
          set prepend-self 1
 }
 
 # IBGP naaber
 neighbor 192.168.37.103 {
          remote-as       65108
          descr           AS65108
 }
 
 # filter out prefixes longer than 24 or shorter than 8 bits
 deny from any
 allow from any inet prefixlen 8 - 24
 
 # do not accept a default route
 deny from any prefix 0.0.0.0/0
  
 # filter bogus networks
 deny from any prefix 169.254.0.0/16 prefixlen >= 16
 deny from any prefix 192.0.2.0/24 prefixlen >= 24
 deny from any prefix 224.0.0.0/4 prefixlen >= 4
 deny from any prefix 240.0.0.0/4 prefixlen >= 4

ja ruuteris ruuter-2 sellist seadistusfaili

 # cat /etc/bgpd.conf                                                                                                     
 # global configuration
 AS 65108
 router-id 192.168.67.107
 network 192.168.37/24 
 
 # ISP 1
 neighbor 192.168.67.106 {
          remote-as       65106
          descr           AS65106 
   }
 
 # ISP 2
 neighbor 192.168.23.102 {
          remote-as       65102
          descr           AS65102
          depend on carp1
          demote carp
          set prepend-neighbor 1
          set prepend-self 1
 }
  
 # IBPG naaber
 neighbor 192.168.37.107 {
          remote-as       65108
          descr           AS65108
 }
 
 # filter out prefixes longer than 24 or shorter than 8 bits
 deny from any
 allow from any inet prefixlen 8 - 24
 
 # do not accept a default route
 deny from any prefix 0.0.0.0/0
  
 # filter bogus networks
 deny from any prefix 169.254.0.0/16 prefixlen >= 16
 deny from any prefix 192.0.2.0/24 prefixlen >= 24
 deny from any prefix 224.0.0.0/4 prefixlen >= 4
 deny from any prefix 240.0.0.0/4 prefixlen >= 4

Seadistusfailides on seadistatud kahte tüüpi BGP ühendused

  • eBGP (exterior BGP) - kommentaaride ISP1 ja ISP2 all toodud naabritega suhtlemist kirjeldavad sektsioonid
  • iBGP (interior BGP) - kõik sama AS sees töötavad BGP serverid peavad olema omavahel otse ühendatud ja seadistatud suhtlema seadistusfailis esitatud viisil, sektsioon kommentaariga '# IBPG naaber'; muus osas on see tavaline sektsiooni, kuid remote-as väärtus langab kokku globaalse sektsiooni AS väärtusega; öeldakse ka nii, et AS sees töötavate BGP ruuterite vahel peab moodustuma full mesh

CARP ja OpenBGPD

Kliendi võrgu arvutites kasutatakse vaikelüüsina CARP seadme carp1 aadressi 192.168.37.254, mille seadistamiseks on lülitatud sisse carp preemt

 # grep preempt /etc/sysctl.conf 
 net.inet.carp.preempt=1

ning ühes ruuteris on /etc/hostname.carp1 sellise sisuga

 # cat /etc/hostname.carp1
 inet 192.168.37.254 255.255.255.0 192.168.37.255 advskew 128 vhid 107 carpdev em2 pass parool

ja teises

 # cat /etc/hostname.carp1
 inet 192.168.37.254 255.255.255.0 192.168.37.255 advskew 0 vhid 107 carpdev em2 pass parool

Lisaks on kasutatud bgpd.conf seadistusparameetrid

  • depend on carp1 - et kontrollida bgp sessiooni olekut sõltuvalt sellest, milline on carp seadme olek; kui carp seade on backup olekus, siis vastav bgp sessioon on Idle olekus ja kui carp seade liigub masterisse, siis bgp sessioon hakkab tööle
  • demote carp - et kontrollida carp seadme olekut tulenevalt sellest, milline on bgp sessiooni olek; kui nt teine osaline ei räägi enam bgp'd, siis carp seadme master olek viiakse backup olekusse

Masteris

 # bgpctl show int                                                                     
 Interface      Nexthop state  Flags          Link state
 carp113        ok             UP             CARP, master
 ..

ja slave'is

 # bgpctl show int                                                                              
 Interface      Nexthop state  Flags          Link state
 carp113        invalid        UP             CARP, backup
 ...

Teenusepakkujate ruuterite seadistamine

Lahenduse terviklikkuse huvides on esitatud, milline võiks olla teenusepakkujate bgpd seadistus OpenBGPD tarkvara kasutamise korral.

ruuter-isp-1

 # cat /etc/bgpd.conf                                                                                    
 # global configuration
 AS 65106
 router-id 192.168.56.106
 
 # kliendi üks bgp ühendus
 neighbor 192.168.67.107 {
          remote-as       65108
          descr           AS65108
          announce all
 }
 
 # kliendi teine bgp ühendus  
 neighbor 192.168.67.103 {
          remote-as       65108
          descr           AS65108
          announce all
 }
 
 # näiteks, mingi muu naaber
 neighbor 192.168.56.105 {
          remote-as       65105
          descr           AS65105
          announce all
 }
 
 # filter out prefixes longer than 24 or shorter than 8 bits
 deny from any
 allow from any inet prefixlen 8 - 24
 
 # do not accept a default route
 deny from any prefix 0.0.0.0/0
 
 # filter bogus networks
 deny from any prefix 169.254.0.0/16 prefixlen >= 16
 deny from any prefix 192.0.2.0/24 prefixlen >= 24
 deny from any prefix 224.0.0.0/4 prefixlen >= 4
 deny from any prefix 240.0.0.0/4 prefixlen >= 4

ruuter-isp-2

 # cat /etc/bgpd.conf                                                                          
 # global configuration
 AS 65102
 router-id 192.168.23.102
 
 # kliendi üks bgp ühendus
 neighbor 192.168.23.103 {
          remote-as       65108
          descr           AS65108
          announce all
 }
 
 # kliendi teine bgp ühendus
 neighbor 192.168.23.107 {
          remote-as       65108
          descr           AS65108
          announce all
 }
 
 # näiteks, mingi muu naaber
 neighbor 192.168.25.105 {
          remote-as       65105
          descr           AS65105
         announce all
 }  
   
 # filter out prefixes longer than 24 or shorter than 8 bits
 deny from any
 allow from any inet prefixlen 8 - 24
 
 # do not accept a default route
 deny from any prefix 0.0.0.0/0
 
 # filter bogus networks
 deny from any prefix 169.254.0.0/16 prefixlen >= 16
 deny from any prefix 192.0.2.0/24 prefixlen >= 24
 deny from any prefix 224.0.0.0/4 prefixlen >= 4
 deny from any prefix 240.0.0.0/4 prefixlen >= 4

Oluline on tähele panna, et

  • teenusepakkuja announce'ib kliendile kõiki ruutinguid, mida ta teab
  • teenusepakkuja on ettevalmistanud omalt poolt kaks bgp ühenduspunkti selle kliendi võrgu ühenduseks

Süsteemi töö kontrollimine

Süsteemi töö kontrollimiseks tuleb teha prooviks need katkestused, mille süsteem on planeeritud üle elama

  • kliendi ühe ruuteri katkestus, nt reboot
  • kliendi ruuterite vahel carp seadme abil vaikelüüsi ümberlülitamine
  • ühe teenusepakkujaga ühenduse katkestamine

Mitte ühelgi juhul ei tohi kliendi võrgus töötavad arvutid kaotada eemal AS 65105 võrgus töötava arvutiga 10.5.0.12 tcp ühendust.

Oluline on tähele panna, et esitatud asjakorraldus ei ela üle kui ainult bgpd deemon ise lakkab töötamast.

TODO

  • kas bgp'd kasutada active või passive režiimis
  • kas erinevate teenusepakkujate ühendusi prioritiseerida ja püüda nt teha mingit load-balance'ingut

Kahe lokatsiooni ühendamine teenusepakkujaga võrguga kahe ühenduspunkti kaudu

Eesmärgiks on teenuseid pakkuva võrgusegmendi kaks eksemplari, nö põhiline ja sekundaarne lokatsioon, ühendada ühe ja sama teenusepakkuja võrguga kahe punkti kaudu, kusjuures ühenduspunktides kasutatakse erinevaid ip aadresse.

                                                           _____
                                                          |     |  smtp client
                                                          |_____|
                                                             |    172.3.1.31 
                                                             |      -> 172.16.0.13:25
                                      ------------|----------|--
                                                  |
                       
                                              internet
                   
                                                  |
                                                __|__  em2 172.31.1.254
                                               |     |
                            10.0.21.190/24 em0 |  R5 | em1 10.0.22.190/24
                            ,------------------|_____|-------------------,
                            |                                            |
      10.0.21.254/24 em1  __|__             ISP AS 65111               __|__  em1 10.0.22.254/24
                         |     |                 iBGP                 |     |
                         |  R1 |--------------------------------------|  R2 |
                         |_____| em2 192.168.10.1    192.168.10.2 em2 |_____|
  192.168.111.161/29 em0    |                                            |    em0 192.168.111.113/29
                            |                                            |
                            |                                            |
                            |                                            |
  192.168.111.162/29 em0  __|__                                        __|__  em0 192.168.111.114/29
                         |     |                                      |     |
                         |  R3 |                                      |  R4 |
                         |_____|                                      |_____|
        10.0.13.1/24 em1    |                                            |   em1 10.0.13.1/24             
                            |   AS 65 100                   AS 65 100    |
                            |                                            |
                            |                                            |
                            |                                            |
                            |                                            |   
                --------|---|----                                    ----|---|--------
                        |                                                    |
                      __|__  10.0.13.13/24                                 __|__  10.0.13.13/24
                     |     |                                              |     |
                     |_____| stmp server                                  |_____| smtp server

kus

  • teenusepakkuja ruuterid R1, R2 ja R5 moodustavad iBGP nn mesh'i
  • R3, R4 - ruuterid kahe sisemiselt identselt seadistatud lokatsiooni ees, mis on valmis vaheldumisi teenuseid pakkuma

Teenusepakkuja IGP seadistused

Teenusepakkuja kasutab iBGP ruuterite all IGP protokollina OSPF'i ning osalistel on OpenOSPFD seadistatud selliselt

  • R1
 # cat /etc/ospfd.conf
 router-id 195.80.111.161
 redistribute connected
 
 # areas
 area 0.0.0.0 {
   interface em1
 }
  • R2
 # cat /etc/ospfd.conf
 router-id 195.80.111.113
 redistribute connected
 
 # areas
 area 0.0.0.0 {
   interface em1
 }
  • R5
 # cat /etc/ospfd.conf
 router-id 172.31.1.254
 redistribute connected
 
 # areas
 area 0.0.0.0 {
   interface em0
   interface em1
 }

Teenusepakkuja BGP seadistused

OpenBGPD on seadistatud teenusepakkuja ruuterites selliselt

  • R1
 # global configuration
 AS 65111
 router-id 192.168.111.161
 log updates
 
 neighbor 10.0.21.190 {
   remote-as       65111
   descr           AS65111
 }
 
 # 
 neighbor 192.168.10.2 {
   remote-as       65111
   descr           AS65111
 }
  
 #
 neighbor 192.168.111.162 {
   remote-as       65100
   descr           AS65100
 }
 
 # filter out prefixes longer than 24 or shorter than 8 bits
 deny from any
 allow from any inet prefixlen 8 - 24
 
 # do not accept a default route
 deny from any prefix 0.0.0.0/0
 
 # filter bogus networks
 deny from any prefix 169.254.0.0/16 prefixlen >= 16
 deny from any prefix 192.0.2.0/24 prefixlen >= 24
 deny from any prefix 224.0.0.0/4 prefixlen >= 4
 deny from any prefix 240.0.0.0/4 prefixlen >= 4
  • R2
 # global configuration
 AS 65111
 router-id 192.168.111.113
 log updates
 
 # 
 neighbor 10.0.22.190 {
   remote-as       65111
   descr           AS65111
 }
 
 #
 neighbor 192.168.10.1 {
   remote-as       65111
   descr           AS65111
 }
 
 #
 neighbor 192.168.111.114 {
   remote-as       65100
   descr           AS65100
 }
 
 # filter out prefixes longer than 24 or shorter than 8 bits
 deny from any
 allow from any inet prefixlen 8 - 24
 
 # do not accept a default route
 deny from any prefix 0.0.0.0/0
 
 # filter bogus networks
 deny from any prefix 169.254.0.0/16 prefixlen >= 16
 deny from any prefix 192.0.2.0/24 prefixlen >= 24
 deny from any prefix 224.0.0.0/4 prefixlen >= 4
 deny from any prefix 240.0.0.0/4 prefixlen >= 4
  • R5
 # global configuration
 AS 65111
 router-id 172.31.1.254
 network 172.31.1.0/24
 log updates
 
 #
 neighbor 10.0.21.254 {
   remote-as       65111
   descr           AS65111
 }
 
 #
 neighbor 10.0.22.254 {
   remote-as       65111
   descr           AS65111
 }
 
 # filter out prefixes longer than 24 or shorter than 8 bits
 allow from any
 allow from any inet prefixlen 8 - 24
 
 # do not accept a default route
 deny from any prefix 0.0.0.0/0
 
 # filter bogus networks
 deny from any prefix 169.254.0.0/16 prefixlen >= 16
 deny from any prefix 192.0.2.0/24 prefixlen >= 24
 deny from any prefix 224.0.0.0/4 prefixlen >= 4
 deny from any prefix 240.0.0.0/4 prefixlen >= 4

Kliendi lokatsioonide eBGP seadistused

Kliendi kahes lokatsioonis töötab OpenBGPD tarkvara nn eBGP režiimis, sellise seadistusega

  • R3
 # global configuration
 AS 65100
 router-id 192.168.111.162
 network 10.0.13.0/24
 log updates
 
 #
 neighbor 192.168.111.161 {
   remote-as 65111
   descr AS65111
   set prepend-self 2
 }
 
 # filter out prefixes longer than 24 or shorter than 8 bits
 deny from any
 allow from any inet prefixlen 8 - 24
 
 # do not accept a default route
 deny from any prefix 0.0.0.0/0
 
 # filter bogus networks
 deny from any prefix 169.254.0.0/16 prefixlen >= 16
 deny from any prefix 192.0.2.0/24 prefixlen >= 24
 deny from any prefix 224.0.0.0/4 prefixlen >= 4
 deny from any prefix 240.0.0.0/4 prefixlen >= 4
  • R4
 # global configuration
 AS 65100
 router-id 192.168.111.114
 network 10.0.13.0/24
 log updates
 
 #
 neighbor 192.168.111.113 {
   remote-as 65111
   descr AS65111
   set prepend-self 3
 }
 
 # filter out prefixes longer than 24 or shorter than 8 bits
 deny from any
 allow from any inet prefixlen 8 - 24
 
 # do not accept a default route
 deny from any prefix 0.0.0.0/0
 
 # filter bogus networks
 deny from any prefix 169.254.0.0/16 prefixlen >= 16
 deny from any prefix 192.0.2.0/24 prefixlen >= 24
 deny from any prefix 224.0.0.0/4 prefixlen >= 4
 deny from any prefix 240.0.0.0/4 prefixlen >= 4

kus

  • selleks, et BGP ruuting eelistaks R3 ruuteri taga olevat lokatsiooni, kasutatakse seal väiksemat prepend-self väärtusi

Süsteemi kasutamine

Selleks, et teenusepakkuja asuks ruutima teenusega seotud avalikke 10.0.13.0 aadresse ühte või teise lokatsiooni tuleb muuda prepend-self väärtusi ning kehtestada bgpd.conf muudatus öeldes

 # bgpctl reload

Teenusepakkuja ruuterites on abiks kontrollida nexthop väärtusi, korrektsel juhul peab olema tulemus midagi sellist

 R5 # bgpctl show nexthop                                                                                                     
 Nexthop              State     
 192.168.111.162       valid     
 R4 # bgpctl show rib
 flags: * = Valid, > = Selected, I = via IBGP, A = Announced
 origin: i = IGP, e = EGP, ? = Incomplete
 
 flags destination         gateway          lpref   med aspath origin
 I*>   10.0.13.0/24        192.168.111.162    100     0 65100 65100 65100 i
 *     10.0.13.0/24        192.168.111.114    100     0 65100 65100 65100 65100 i
 I*>   172.31.1.0/24       10.0.22.190        100     0 i

BGP andmevahetuse turvalisus

Selleks, et muuta BGP osaliste andmevahetus turvalisemaks sobib kasutada nende osaliste vastavatest sektsioonides 'tcp md5sig password' direktiivi, nt selliselt (teisel osaliselt sama tcp ... direktiiv)

 neighbor 192.168.111.161 {
   remote-as  65101
   descr      AS65101
   depend on carp113
   demote carp
   tcp md5sig password salajanejargnevus
 }

Transparent AS

Asugu kolm AS'i järjest

     R100           R101           R102
  AS 65100 <---- AS 65101 <---- AS 65102 <--- intenet

ning olgu vajalik selline asjakorraldus, et internetist poleks näha AS path peal AS 65101. Selleks sobib kasutada

ruuteri R101 sektsiooni

 neighbor 192.168.101.2 {
   remote-as 65101
   descr  AS65101
   announce all
   transparent-as yes
 }

ja ruuteris R102

 neighbor 192.168.102.2 {
   remote-as 65102
   descr  AS65102
   announce all
   enforce neighbor-as no
 }

OpenBGPD looking glass

OpenBSD tarkvara baaskomplektis sisaldub man bgplg (looking glass for the OpenBSD Border Gateway Protocol daemon) tarkvara, mis on cgi skript arvutis töötava bgpd tegevuse vaatamiseks.

Tulemusena saab brauseris esitada nt andmed parasjagu olemas olevate naabrite kohta

Bgp-4.gif

Märkused

Järgnevas on püütud tuua ära olulised asjaolud, mille arvestamisest võib olla kasu.

Ruutingutee otsuse tegemine

Ruutingutee (ingl. k. AS-path) üle tehakse otsust sellistel kaalutlustel ja sellises järjekorras, http://unduli.bsws.de/papers/linuxforum2006/

  1. check if prefix is eligible a.k.a reachable
  2. localpref, bigger is better
  3. aspath length, the shorter the better
  4. origin, the lower the better
  5. MED decision, only comparable between the same neighboring AS
  6. EBGP is cooler than IBGP
  7. weight, bigger is better (extension)
  8. route age: older is better (extension, off by default)
  9. lowest BGP ID wins
  10. lowest peer address wins
  • BGP puhul saab erinevalt OSPF protokollist välja kuulutada ka otseselt ruuteris mitte seadistatud seadmetele vastavaid võrke.

BGP naaber ei ole otse ühendatud

BGP naabrid ei pruugi olla tingimata otse ühendatud, st ei pea asuma samas subnetis. Kui AS65100 BGP ruuteri naaber on kättesaadav vaikelüüsi kaudu (eeldusel, et vaikelüüs on staatiliselt seadistatud), siis sobib kasutada seadistusfaili globaalses osas nexthop parameetrit selliselt

 # global configuration
 AS 65100
 router-id 192.168.111.162
 network 10.0.13.0/24
 nexthop qualify via default

Vaikimisi kasutab bgpd ainult staatiliselt või teiste ruutingudeemonite, nt ospfd poolt seadistatud ruutinguid.

Privaatse AS varjamine

2009 aasta sügisel ei ole võimalik OpenBGPD tarkvara abil varjata ühte AS'i teise abil. Nt ei saa lahendada sellist ülesannet

     R1                R2                R3
 AS private ------ AS public ------- AS another public
    65100             65101             65102
 192.168.101.1     192.168.101.2     192.168.102.3
                   192.168.102.2

kus

  • kõigis AS'ides kasutatakse avalikke ip aadresse
  • R1, R2, R3 on vastavate AS'de BGP ruuterid
  • AS 65100 on privaatne AS, muud on avalikud (kuigi näites on kasutatud kõiki privaatseid numbreid iseenesest)
  • R3 bgpctl show rib väljundis ei ole näha R1 aadressruumi kohta mitte AS5100, vaid AS65101

Usutavasti võib seda olukorda nimetada teatud mõttes AS kihis toimuva NATi või proximisena.

Loopback aadressi kasutamine

Tundub, et bgpd ei pahanda, kui bgp peer ei ole kättesaadav nö otse st samas subnetis asuva aadressiga, vaid oma loopback aadressiga. bgpd enda puhul saab kasutusele võtta loopback seadme seadistades nt lo1 seadme öeldes

 # ifconfig lo1 create
 # ifconfig lo1 10.81.0.1/24

ning kasutades neighbor sektsioonides direktiivi

 local-address 10.81.0.1

Naabrid saavad seda aadressi kasutada kusjuures kui naabrib on ka bgpd'd, siis peaksid nad lisama sobiva staatilise ruutingu, et kõnealune loopback aadress oleks iseenesest ligipääsetav.

loopback aadressi kasutamisel on oluline, et ka ruuterist väljuvad ühendused paistaksid kõnealuselt src ip aadressilt lähtuvatena. Nt kui OpenBSD ruuteri peer on Cisco ruuter ning OpenBSD kasutab Cisco loopback aadressi, siis peab Cisco poolt algatatud ühenduse src ip olema mitte tema OpenBSD poolse võrguseadme ip aadress vaid loopback ip aadress.

Kasulikud lisamaterjalid