OpenBGPD kasutamine operatsioonisüsteemiga OpenBSD

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti

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.

Ruutinguprotokolli põhiline ülesanne on tegeleda võrgus võrgu erinevate osade kättesaadavust puudutava info (ingl. k. reachibility information) vastuvõtmise, kasutamise ja levitamisega.

BGP tööpõhimõte

Üldiselt on BGP juures olulised kolm asjaolu

  • tagada silmusevaba (ingl. k. loop-free) ruuting st paketi alguspunktist lõpppunkti jõudmisel ei läbi pakett ühte ja sama AS'i mitu korda
  • BGP ei taga iseenesest AS sees silmusevaba ruutingut (see on vastavas AS'is töötava IGP protokolli ülesanne)
  • 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 (iseenesest tuleb eristada füüsilise ühenduse mõttes kahte omavahel kokkuühendatud BGP ruuterit ja loogilises mõttes omavahel otse suhtlevat (nn peeringut tegevat) BGP ruuterit, paljudel juhtudev füüsiline ja loogiline topoloogia langevad kokku)
  • 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

Fail:Bgp-3.gif

kus

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

Mõisted

  • ruuting domeen (ingl. routing domain), autonomous system - kogum ruutereid, mida haldab üks organisatsioon (BGP konktekstis)
  • 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)
  • BGP speaker - seade (tavaliselt ruuter) mis oskab suhelda teiste seadmetega BGP protokolli kasutades
  • BGP peers ehk BGP neighbors - kaks BGP speakerit, mis moodustavad BGP ühenduse eesmärgiga kasutada seda ruutinguinfo vahetamiseks
  • NLRI (Network Layer Reachability Information) - rahvapäraselt prefiks
  • BGP Identifier ehk router ID
  • SOO - Source of Origin
  • peer - ruutingupartner, kellega toimub nö otse liikluse pidamine, kuid kumbki ei ole teise jaoks nn transit AS; ühel võib olla mitu peer'i
  • uplink - ruutingupartner, kelle kaudu toimub liiklus internetiga, st ta on nn transit AS; ühel võib olla mitu uplink'i

Atribuudid

  • Well-known mandatory attributes - kõik BGP peerid peavad neid tundma ja peavad sisalduma igas sõnumis
  • Well-known discretionary attributes - kõik BGP peerid peavad neid tundma kuid ei pea sisalduma igas sõnumis
  • Optional transitive attributes - kõik BPG peerid ei pea tundma, kui peavad säilitama
  • Optional nontransitive attributes - kõik BPG peerid ei pea tundma, update millest ei saada aru ei tohi edastatada peeridele

Näited well-known mandatory atribuutidest

  • Origin Code (ORIGIN) - näitab prefix'i allikat (IGP, EGP INCOMPLETE)
  • AS Path - nimekiri AS'idest, millest kõnealune update on läbi käinud
  • Next Hop - ip aadress, millega BGP spiiker kuulutab prefiksit teise AS BGP spiikerile
  • Local Preference

Lisaks näiteid

  • Multiple Exit Discriminator (MED, optional nontransitive attribute)
  • Communities (optional transitive attribute)

IX - Internet Exchange

Kui mingis asukohas töötavad mitmed erinevad interneti teenusepakkujad (ingl. k. - internet service provider, ISP), siis tavaliselt neist mõnel on kanalid nö välismaaga, kuid kõigil ei ole. Kellel on, need müüvad teistele nn välisühendust. Tavaliselt kogunevad ISPid ühe või mitme sõlmpunkti ümber, mille kaudu saavad kõik kõigi teistega otse suhelda ja läbi meelepärase välisühenduse teenusepakkuja ühenduda välismaaga. Selliseid sõlmpunkte nimetatakse IX (internet exchange, ingl. k. interneti vahetuspunkt). Eestis on nt sellised IX keskused

Kui organisatsioon otsustab kasutada internetiühendust ja oluline on töökindlus, siis üheks võimaluseks seda saavutada on muretseda kahe erineva teenusepakkuja käest ühendus ning kasutada selle haldamiseks BGP protokolli. Lisaks tehnilisele töökindlusele võib see anda ka eelise sobivamas hinnas kokkuleppele jõudmise osas.

Aadressil http://bgp.he.net/ saab infot AS kasutuse ja peeringute kohta, nt pildil on toodud ühe teenusepakkuja peeringud

Fail:Bgp-5.gif

Samas on ka valik Graph v4, mis kujutab AS path'i graafiliselt.

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

Fail: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

Fail: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; viimasena klappivat reeglit rakendatakse
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

Öeldakse, et AS sees töötavad BGP ruuterid on omavahel iBGP suhetes kusjuures

  • kõik sama AS sees töötavad ruuterid peavad olema omavahel otse ühendatud, mis teeb praktiliselt üle nelja viie BGP ruuteri pidamise samas AS'is keerukaks (kuigi selle probleemi lahendamiseks on mitmeid nö abivõtted, nt ruutingupeeglid (ingl. k. route reflectors))
  • iBGP peerilt saadud ruutisid ei edastata (teistele iBGP peeridele)
  • omavahelisesl info edastamisel iBGP peerilt saadud attribuute ei muudeta
  • omavahelisel info edastamisel iBGP ruuterid ei muuda AS Path'i sh 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
  • iBGP peerid ei pruugi olla omavahel otse füüsiliste ühendustega ühendatud, töötamiseks on vajalik TCP ühendus (eBGP peerid on seevastu tavaliselt füüsiliselt otse ühendatud)

Üks iBGP praktilist kasutust selgitav juhtum võiks olla nt selline, kus kliendi ruuteri subnet on ühendatud kahe teenusepakkujaga

                       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    |                          |
                          |                          |
                          |                          |
                          |                          |   
  192.168.67.107 - em0  __|__                      __|__  em0 - 192.168.23.103
                       |     |                    |     |
       ruuter-klient-1 | R1  |                    | R2  | ruuter-klient-2
                       |_____|                    |_____|
                          |                          |
  192.168.37.107 - em1    |                          |    em1 - 192.168.37.103
                          |         AS 65108         |
                          |      iBGP full mesh      |
     --------|------------|-------------|------------|-------------|------
             |               OSPF       |                          |
             |                          |                          |
           __|__  em0                 __|__  em0                 __|__  em0
          |     | 192.168.37.3       |     | 192.168.37.4       |     | 192.168.37.5
          | R3  |                    | R4  |                    | R5  |
          |_____|                    |_____|                    |_____|
      em1    |   .1              em1    |   .1              em1    |   .1
             |                          |                          |
        -----|------------         -----|------------         -----|------------
          10.0.3.0/24                10.0.4.0/24                10.0.5.0/24

kus

  • kliendi ruuterites R1 - R5 töötab BGP tarkvara
  • kliendi ruuterid on oma ühte võrguseadet pidi seadistatud ühte nö kliendi ruuterite 192.168.37.0/24 subnetti
  • R1 - R5 ruuterid on seadistatud omavahel peerima moodustades iBGP full meshi (ruuterite vahel on ka füüsiliste ühenduste full mesh)
  • R1 ja R2 ruuterid peerivad lisaks vastavalt AS 65107 ja AS 64103 ruuteritega
  • 192.168.37.0/24 subnetis töötab OSPF

Kui nt iBGP meshi ruuterid on BGP abil õppinud, et paketi aadressile 10.45.45.45 saatmiseks on nexthop ruuter-isp-1 aadress 192.168.67.106, siis ruuterite R3, R4 ja R5 taga olevates subnettides olevate arvutite jaoks, nt 10.0.3.15 näitel, töötab paketi liikumine selliselt

  • arvuti 10.0.3.15 (mida skeemil ei ole näidatud) vaikelüüsiks on staatiliselt seadistatud 10.0.3.1
  • arvuti 10.0.3.15 saadab välja paketi aadressile 10.45.45.45 mis peab jõudma ruuter-isp-1 juurde välja (ja liigub sealt edasi)
  • R3 ruuter teab tänu BGP'le, et see pakett tuleb saata edasi vastava ASi nexthop aadressile 192.168.67.106
  • R3 ruuter teab tänu OSPF'ile, et paketi aadressile 192.168.67.106 saatmiseks tuleb kasutada lüüsi 192.168.37.107

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 teenusepakkuja 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
                            ,------------------|_____|-------------------,
                            |                                            |
                            |                  .......                   |
                            |            teenusepakkuja võrk             |
                            |                    ...                     |
                            |                                            |
      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 65100                   AS 65100      |
                            |                                            |
                            |                                            |
                            |                                            |
                            |                                            |   
                --------|---|----                                    ----|---|--------
                        |                                                    |
                      __|__  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 nii loogilises kui füüsilises mõttes (st kõik kolm ruuterit on omavahel füüsiliselt otse ühendatud)
  • 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

# iBGP mesh
neighbor 10.0.21.190 {
  remote-as       65111
  descr           AS65111
}

# iBGP mesh
neighbor 192.168.10.2 {
  remote-as       65111
  descr           AS65111
}
 
# naaber AS65100
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
 
# iBGP mesh
neighbor 10.0.22.190 {
  remote-as       65111
  descr           AS65111
}

# iBGP mesh
neighbor 192.168.10.1 {
  remote-as       65111
  descr           AS65111
}

# naaber A65100
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

# iBGP mesh
neighbor 10.0.21.254 {
  remote-as       65111
  descr           AS65111
}

# iBGP mesh
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

Fail: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

Teine variant, kasutada neighbor sektsioonis set nexthop direktiivi (ja vajadusel lisaks multihop arv, et ttl'id otsa ei saaks), nt

neighbor 10.246.205.154 {
       remote-as       65201
       descr           yksasutus
       local-address   10.204.62.114
       announce        IPv4 unicast
       multihop        13
       set nexthop     10.204.62.118
}

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.

BGP TCP paketi TTL

Vaikimisi on BGP TCP paketi TTL 1, mis tähendab, et andmevahetus on võimalik vaid otse omavahel ühendatud ruuterite vahel.

Ruutingutabeli koormuse vähendamine

Kui BGP peeril on ainult üks uplink, st default gateway on kindlalt teada, siis on mõttekas kasutada deny ja allow reegleid sellist, et rib baas ega ruutingutabel ei risustuks suure hulga sissekannetega, nt

...
deny from any
deny to any
# allow from 192.168.112.99
allow to 192.168.112.99

Sel juhul küll tekib õigustatud küsimus, milleks üldse BGP'd kasutada.

BGP Capabilities

BGP peer teatab suhtlemise algul oma capabilitid, nt

# bgpctl show nei                                                                                                               
BGP neighbor is 10.10.11.1, remote AS 65001
 Description: AS65001
  BGP version 4, remote router-id 10.10.11.1
  BGP state = Established, up for 10:44:46
  Last read 00:00:15, holdtime 90s, keepalive interval 30s
  Neighbor capabilities:
    Multiprotocol extensions: IPv4 unicast, IPv4 vpn
    Route Refresh
    4-byte AS numbers
...

Route reflectors

TODO

IPv6 kasutamine

Põhimõtteliselt toimub IPv6 ruutingutega töötamine sarnaselt kui IPv4 ruutingutega. Üks OpenBSD bgpd protsess võib töötada nn dual-stack režiimis, st tegeleb sama-aegselt mõlema IP protokolliga. Kui peer on samuti dual-stack, siis reeglina võiks nende vahel olla kaks kanalit

  • üle IPv6 kanali toimub IPv6 ruutinguid puudutavate sõnumite vahetus
  • üle IPv4 kanali toimub IPv4 ruutinguid puudutavate sõnumite vahetus

Näiteks võiks kasutada dual-stack puhul sellist bgpd.conf seadistusfaili

AS 65000
router-id 10.80.111.162
listen on 10.80.111.162
listen on 2001:db8:1:179::2

network 195.80.127.128/30
network 2001:db8:1:180::/64

nexthop qualify via default
log updates

neighbor 10.80.111.161 {
  remote-as      65001
  descr          AS65001
  depend on      carp106
  announce       IPv4 unicast
  local-address  10.80.111.162
}

neighbor 2001:db8:1:179::1 {
  remote-as      65001
  descr          AS65001
  announce       IPv6 unicast
  local-address  2001:db8:1:179::2
}

deny from any
allow from any inet prefixlen 8 - 24
allow from any inet6 prefixlen 16 - 48

# do not accept a default route
deny from any prefix 0.0.0.0/0
deny from any prefix ::/0

# filter bogus networks according to RFC5735
deny from any prefix 0.0.0.0/8 prefixlen >= 8
deny from any prefix 10.0.0.0/8 prefixlen >= 8
deny from any prefix 127.0.0.0/8 prefixlen >= 8
...

# filter bogus IPv6 networks according to IANA
deny from any prefix ::/8 prefixlen >= 8
deny from any prefix 2001:2::/48 prefixlen >= 48
...

kus

  • annouce määrab selgelt millise peeriga millise protokolli ruutingutega tegeldakse
  • kummagi protokolliga vaikelüüsi ei aktsepteerita
  • mitmesugused avalikus võrgu mitte kasutusel olevad ruudid välistatakse

Kasulikud lisamaterjalid