Beruflich Dokumente
Kultur Dokumente
SEMINARSKI RAD
iz predmeta
RAUNARSKE MREE
Dejan Bogdanovi
Semestralni rad
1. SADRAJ
1. SADRAJ...............................................................................................................................................................................................2 2. UVOD.....................................................................................................................................................................................................4 2.1 BGP ..................................................................................................................................................................................................4 3. OPENBGPD...........................................................................................................................................................................................5 3.1 INSTALACIJA.........................................................................................................................................................................................5 3.2 KONFIGURACIJA....................................................................................................................................................................................6 3.3 UPRAVLJANJE I MONITORING..................................................................................................................................................................10 4. PRIMER BGP TOPOLOGIJE REALIZOVANE POMOU OPENBGPD-A........................................................................11 4.1 TOPOLOGIJA........................................................................................................................................................................................11 4.2 KONFIGURACIJA..................................................................................................................................................................................12 4.3 VERIFIKACIJA......................................................................................................................................................................................16 5. ZAKLJUAK......................................................................................................................................................................................19 6. LITERATURA....................................................................................................................................................................................20
Strana 2
Dejan Bogdanovi
Semestralni rad
Strana 3
Dejan Bogdanovi
Semestralni rad
Dejan Bogdanovi
Semestralni rad
3. OPENBGPD
OpenBGPd je open-source implementacija BGP protokola za *BSD platforme, kreirana od strane OpenBSD tima. Za sada postoji samo na *BSD platformama, mada postoji i projekat portovanja na Linux, o kome nema puno informacija. Nastao je iz nezadovoljstva postojeim Open Source BGP reenjima, s ciljem da se dosledno isprati standard koji postavlja RFC 1771, i da se ostvari maksimalna stabilnost, sigurnost i performanse putem minimalizacije. Postavljeni ciljevi su vrlo uspeno realizovani. Ceo OpenBGPd paket softvera zauzima nekoliko stotina kilobajta i sadri samo nekoliko fajlova: Sam izvrni program - bgpd, kontrolni alat - bgpctl, konfiguracioni fajl - bgpd.conf, pratee skripte za pokretanje, zaustavljanje i kontrolu daemon-a specifine za konkretan operativni sistem, kao i dokumentaciju u obliku man stranica. Implementacija je potpuno ispotovala RFC standarde, ak do te mere da su usput po prvi put otkrivene neke nedoslednosti u drugim BGP implementacijama. to se performansi tie, OpenBSD tim navodi da je za potpunu funkcionalnost dovoljan i P III na 800mhz sa dovoljnom koliinom memorije, mada ovakve tvrdnje treba uzeti sa rezervom, jer se ne navodi koliko optereenje saobraajem moe podneti takav ruter. Na stranici http://www.openbgpd.org/users.html postoje brojna svedoanstva internet provajdera koji trenutno koriste OpenBGPd, i njihov broj polako raste. Evidentno je da su uglavnom u pitanju mali provajderi, to upuuje da OpenBGPd nije dobro reenje za one vee, ali u isto vreme potvruje njegovu upotrebljivost.
3.1 Instalacija
Napomena: Svi navedeni postupci instalacije i konfiguracije odnose se na FreeBSD. U sluaju drugih BSD sistema postoje razlike koje su neznatne i svode se uglavnom na lokacije pojedinih fajlova. Zbog minimalistike prirode aplikacije instalacija je vrlo jednostavna i svodi se na instaliranje binarnog paketa sledeom komandom. Naravno, potrebna je internet konekcija.
openbgpd_enable="YES"
Ova linija slui kao "okida" koji aktivira odgovarajuu skriptu u /usr/local/etc/rc.d pomou koje kontroliemo BGP daemon. Gruba kontrola procesa se moe izvesti sledeim komandama:
Dejan Bogdanovi
Semestralni rad
Naravno, u sluaju BGP procesa, ovakva kontrola uopte nije dobra ideja, ve se u te svrhe koristi alat bgpctl koji e biti opisan kasnije.
3.2 Konfiguracija
OpenBGPd ima samo jedan konfiguracioni fajl, bgpd.conf, koji se nalazi u direktorijumu /usr/local/etc. Ne kreira se automatski po instalaciji, ve ga moramo sami kreirati sledeim komandama:
holdtime broj
listen on ip adresa log updates network ip adresa/maska [set ...] network [inet|inet6] static [set ...]
Dejan Bogdanovi
Semestralni rad
network [inet|inet6] connected [set ...] nexthop qualify via (bgp | default)
rute iz ruting tabele; set direktivom moemo podeavati BGP atribute pojedinane mree nain na koji se odreuje validni next-hop ruter; bgp oznaava da e se koristiti BGP rute, a default da e se koristiti statike rute kao i rute dobijene od drugih ruting protokola ukoliko je ova opcija yes, ne vri se proces selekcije najbolje rute, ve bgpd slui samo da pokupi informacije o rutama od suseda; podrazumevano ponaanje je no oznaava adresu koja se koristi za identifikaciju rutera i koja mora biti lokalna za ruter odreuje da li je u pitanju transparentni autonomni sistem, tj. da li se broj lokalnog autonomnog sistema dodaje na ASPATH rute koja se oglaava EBGP susedu
3. Opcije koje se odnose na susede i grupe Jedan BGP sused se definie direktivom: neighbor ip_adresa_suseda { opcije_koje_se_odnose_na_suseda } Vie suseda moe sainjavati grupu, kao u sledeem primeru: group "ime grupe" { opcije koje se odnose na grupu neighbor ip_adresa_prvog suseda { opcije_koje_se_odnose_na_prvog suseda } neighbor ip_adresa_drugog suseda { opcije_koje_se_odnose_na_drugog suseda } } Pri tom, svaka opcija koja se navede kao opcija za grupu automatski vai za svakog lana grupe i nema potrebe navoditi je ponovo. U nastavku su vanije opcije koje se odnose na susede i grupe:
Strana 7
Dejan Bogdanovi
Semestralni rad
announce (all|none|self|default-route)
odreuje koji e tipovi ruta biti oglaeni BGP susedu (sve rute, nijedna ruta, sopstvene rute ili default ruta, respektivno); podrazumevano ponaanje za EBGP sesiju je self, a za IBGP sesiju all. objavljuje implementirane mogunosti OpenBGPd rutera BGP susedima, podrazumevano ponaanje je yes definie simboliko ime za suseda, koje se koristi u show komandama i log fajlovima; potpuno opciono broj autonomnog sistema u kome se nalazi sused; obavezno
ipsec esp (in|out) spi broj_konekcije podrka za ipsec autentifikaciju i enkripciju bgp poruka; u authspec (sha1|md5) klju (3des|aes) sluaju da se koristi, moraju postojati dve direktive, jedna u klju in i jedna u out smeru; enkripcija je opciona i moe se izostaviti, a kljuevi moraju biti u heksadecimalnom formatu max-prefix broj multihop broj route-reflector adresa softreconfig (in|out) (yes|no) maksimalan broj mrenih prefiksa koji moe biti primljen od suseda, zatita od preoptereenja maksimalan broj hop-ova do suseda Ruter se ponaa kao route-reflector za ovog suseda omoguava "meku" rekonfiguraciju sesije u zadatom smeru, tj. primenu filtara na UPDATE poruke tako da se po promeni konfiguracije osveavaju samo oni unosi u ruting tabeli za koje postoji potreba, a ne svi; ovo ubrzava konvergenciju ruting tabela, ali poveava memorijsku zahtevnost BGP procesa ukljuuje TCP MD5 potpise, jedan od naina za autentifikaciju osigurava da je BGP sused direktno konektovan (tj. da ne postoji ruter izmeu) putem provere TTL vrednosti paketa; u sluaju da se koristi multihop, paket koji putuje do susednog rutera moe biti rutiran maksimalno onoliko puta kolika je vrednost multihop-a postavlja vrednosti parametara koji utiu na izbor najbolje rute, detaljnije u nastavku
set atribut
Pomou set opcije moemo postaviti vrednost sledeih atributa: set community broj AS-a:community postavlja vrednost community atributa; mogu se koristiti i predefinisane vrednosti kao NO_EXPORT i NO_ADVERTISE postavlja vrednost local preference atributa postavlja vrednost MED atributa postavlja vrednost NEXTHOP atributa vri prepend AS-PATH atributa AS brojem suseda, ili sopstvenim, navedeni broj puta postavlja vrednost WEIGHT atributa
set localpref broj set med broj set nexthop (adresa | blackhole | reject | self | no-modify) prepend-neighbor broj prepend-self broj weight broj
Strana 8
Dejan Bogdanovi
Semestralni rad
4. Opcije koje se odnose na filtriranje Poslednji deo bgpd.conf konfiguracionog fajla se odnosi na filtriranje ruta iz UPDATE poruka po njihovim specifinim atributima i njihovo prihvatanje, odbacivanje, ili modifikaciju u zavisnosti od vrednosti tih atributa. Filtriranje se vri direktivama koje imaju sledei oblik: (allow|deny) (from|to) identifikator atribut Prvi i drugi deo odreuju da li se update prihvata ili odbija, kao i smer na koji se pravilo odnosi. Identifikator moe biti neto od sledeeg: any adresa group ime_grupe bilo koji host IP adresa pojedinanog host-a identifikator grupe koja je prethodno definisana
Vie identifikatora se moe grupisati zajedno u obliku: { identifikator1, identifikator2... } Atribut moe biti neto od sledeeg: Autonomni sistem: (AS | peer-as | source-as | transit-as) (autonomni sistem | {autonomni sistem1, autonomni sistem2,...} ) AS oznaava bilo koji deo AS-path-a, peer-as zadnji broj, source-as prvi broj, transit-as bilo koji broj osim prvog. Community: community ( community-string | { community-string1, community-string2... } ) Community-string moe biti u obliku broj AS-a:community ili neka od predefinisanih vrednosti. Mreni prefiks: prefix (adresa/maska | { adresa1/maska1, adresa2/maska2... } ) Duina mrenog prefiksa: prefixlen ( = | != | < | > | <= | >= | >< ) broj Uporeuje duinu mrenog prefiksa sa brojem, obino se koristi zajedno sa prefix. Vie atributa se moe grupisati zajedno u obliku: { atribut1, atribut2... } Ukoliko umesto filtriranja elimo da izvrimo modifikaciju atributa, koristimo sledeu direktivu: match (from|to) identifikator [atribut] set atribut Set direktiva se koristi na isti nain kao u definiciji suseda. Ovaj put, atribut po kome se vri filtriranje je opcion. Sve navedene opcije pruaju velike mogunosti za preciznu kontrolu UPDATE poruka. Fleksibilnost je neto manja nego u sluaju Cisco route-map ekvivalenta, ali je i dalje jako zadovoljavajua. Jedan primer:
Strana 9
Dejan Bogdanovi
Semestralni rad
match from { 147.91.213.1, 147.91.213.2} { source-as 32123, community 32123:313, prefix 147.91.1.0/24} set {localpref 150, prepend-neighbor 2} Ova direktiva e svim update-ovima koji dolaze od suseda 147.91.213.1 i 147.91.213.2 i koji imaju izvorni AS broj 32123, community 313 i koji se odnose na prefiks 147.91.1.0/24 postaviti local-preference atribut na 150 i prepend-ovati AS-PATH 2 puta sa AS brojem suseda. Ovim su u kratkim crtama opisane glavne konfiguracione opcije bgpd daemon-a. Postoje jo mnoge, a i veliki broj BSD-specifinih, pomou kojih moemo, na primer, koristiti nekoliko sistemskih ruting tabela, povezati bgpd sa pf firewall-om, konfigurisati high availability pomou carp protokola itd.
Komanda bgpctl show rib podrava dodatne argumente kao to su as, source-as, transit-as, peer-as, empty-as, community, detail, in, out, neighbor, adresa/maska pomou kojih moemo filtrirati njen izlaz, ili dobiti detaljnije informacije o pojedinanom ulazu tabele. Ove komande pruaju potpuno ekvivalentnu funkcionalnost Cisco IOS show ip bgp i clear ip bgp komandama. Takoe, mogue je pokrenuti bgpd u debug modu komandom bgpd -d -v, i dobiti ekvivalent debug ip bgp komandama.
Strana 10
Dejan Bogdanovi
Semestralni rad
4.1 Topologija
Topologija mree je prikazana na sledeoj slici:
EBGP
EBGP
AS 65001 R1
Lo0 10.0.0.1/32
Postoje 3 autonomna sistema, AS 65001, AS 65002 i AS 65003. U AS 65001 se nalazi jedan ruter, R1, koji oglaava mreu 10.0.0.1/32, koja je realizovana preko loopback interfejsa, to je sluaj i sa mreama koje oglaavaju ostali ruteri. U AS 65002 se nalaze 2 rutera, R2, koji oglaava mreu 10.0.0.2/32, i R3, koji oglaava mreu 10.0.0.3/32. U AS 65003 se nalazi ruter R4, koji oglaava mree 10.0.0.4/32 i 10.0.0.5/32. Svi ruteri su povezani virtuelnim VMWare sviem, i nalaze se u opsegu 192.168.1.0/24 na adresama 101, 102, 103, i 104 respektivno. Update sistemske ruting tabele je ukljuen na svim ruterima. Ruter R1 ostvaruje EBGP sesiju sa ruterom R2, router R2 IBGP sesiju sa ruterom R3, a router R4 EBGP sesiju sa ruterom R3. Sledi konfiguracija OpenBGPd procesa na pojedinanim ruterima.
Strana 11
Dejan Bogdanovi
Semestralni rad
4.2 Konfiguracija
Strana 12
Dejan Bogdanovi
Semestralni rad
Strana 13
Dejan Bogdanovi
Semestralni rad
# /usr/local/etc/bgpd.conf AS 65001 listen on 192.168.1.101 log updates network 10.0.0.1/32 router-id 10.0.0.1 neighbor 192.168.1.102 { remote-as 65002 descr "R2" announce all announce capabilities yes } match to 192.168.1.102 set { med 150 } match from any prefix { 10.0.0.4/32 } set { prepend-neighbor 2 }
bgpd.conf (R1) Ruter R1 pripada AS 65001, i vezan je za fiziku adresu 192.168.1.101. Oglaava mreu 10.0.0.1/32. Za router-id je uzeta ista adresa. Definisan je neighbor 192.168.1.102, koji pripada AS 65002, i kome je dato simboliko ime "R2". Oglaavaju mu se sve mree poznate bgpd procesu, kao i mogunosti rutera. Postoje 2 opcije za modifikovanje UPDATE poruka. Prva, match to 192.168.1.102 set { med 150 }, postavlja vrednost MED atributa na 150 za sve rute koje se oglaavaju susedu R2. Druga, match from any prefix { 10.0.0.4/32 } set { prependneighbor 2 }, prependuje prefiks 10.0.0.4/32 dva puta AS brojem suseda od koga je on pristigao.
# /usr/local/etc/bgpd.conf AS 65002 listen on 192.168.1.102 log updates network 10.0.0.2/32 router-id 10.0.0.2 neighbor 192.168.1.101 { remote-as 65001 descr "R1" announce all announce capabilities yes } neighbor 192.168.1.103 { remote-as 65002 descr "R3" announce all announce capabilities yes }
bgpd.conf (R2) Ruter R2 pripada AS 65002, i vezan je za fiziku adresu 192.168.1.102. Oglaava mreu 10.0.0.2/32. Za router-id je uzeta ista adresa. Definisana su 2 neighbor-a: EBGP neighbor 192.168.1.101, koji pripada AS 65001, i kome je dato simboliko ime "R1". Oglaavaju mu se sve mree poznate bgpd procesu, kao i mogunosti rutera. IBGP neighbor 192.168.1.103, koji pripada AS 65002, i kome je dato simboliko ime "R3". Oglaavaju mu se sve mree poznate bgpd procesu, kao i mogunosti rutera.
Strana 14
Dejan Bogdanovi
Semestralni rad
# /usr/local/etc/bgpd.conf AS 65002 listen on 192.168.1.103 log updates network 10.0.0.3/32 router-id 10.0.0.3 neighbor 192.168.1.102 { remote-as 65002 descr "R2" announce all announce capabilities yes } neighbor 192.168.1.104 { remote-as 65003 descr "R4" announce all announce capabilities yes } match from any AS { 65003 } set { localpref 150 }
bgpd.conf (R3) Ruter R3 pripada AS 65002, i vezan je za fiziku adresu 192.168.1.103. Oglaava mreu 10.0.0.3/32. Za router-id je uzeta ista adresa. Definisana su 2 neighbor-a: IBGP neighbor 192.168.1.102, koji pripada AS 65002, i kome je dato simboliko ime "R2". Oglaavaju mu se sve mree poznate bgpd procesu, kao i mogunosti rutera. EBGP neighbor 192.168.1.104, koji pripada AS 65003, i kome je dato simboliko ime "R4". Oglaavaju mu se sve mree poznate bgpd procesu, kao i mogunosti rutera.
Postoji opcija za modifikovanje UPDATE poruka, match from any AS { 65003 } set { localpref 150 }, kojom se postavlja vrednost local preference atributa za svaki update koji sadri AS 65003 u svom AS-PATH-u.
# /usr/local/etc/bgpd.conf AS 65003 listen on 192.168.1.104 log updates network 10.0.0.4/32 network 10.0.0.5/32 router-id 10.0.0.4 neighbor 192.168.1.103 { remote-as 65002 descr "R3" announce all announce capabilities yes } match to any prefix { 10.0.0.5/32 } set { community NO_EXPORT }
bgpd.conf (R4) Ruter R4 pripada AS 65003, i vezan je za fiziku adresu 192.168.1.104. Oglaava mree 10.0.0.4/32 i 10.0.0.5/32. Za router-id je uzeta adresa 10.0.0.4. Definisan je EBGP neighbor 192.168.1.103, koji pripada AS 65002, i kome je dato simboliko ime "R3". Oglaavaju mu se sve mree poznate bgpd procesu, kao i mogunosti rutera.
Postoji opcija za modifikovanje UPDATE poruka, match to any prefix { 10.0.0.5/32 } set { community NO_EXPORT }, koja postavlja predefinisani community atribut NO_EXPORT prefiksu 10.0.0.5/32 prilikom njegovog oglaavanja.
Strana 15
Dejan Bogdanovi
Semestralni rad
4.3 Verifikacija
Poto su ruteri konfigurisani, i OpenBGPd na njima pokrenut, posle kratkog vremena potrebnog za konvergenciju ruting tabela moemo potvrditi njegovu funkcionalnost komandom bgpctl show ip bgp na svakom od rutera: R1:
[root@R1 ~]# bgpctl show ip bgp flags: * = Valid, > = Selected, I = via IBGP, A = Announced origin: i = IGP, e = EGP, ? = Incomplete
flags destination AI*> 10.0.0.1/32 *> *> *> 10.0.0.2/32 10.0.0.3/32 10.0.0.4/32
lpref med aspath origin 100 100 100 100 0i 0 65002 i 0 65002 i 0 65002 65002 65002 65003 i
R2:
[root@R2 ~]# bgpctl show ip bgp flags: * = Valid, > = Selected, I = via IBGP, A = Announced origin: i = IGP, e = EGP, ? = Incomplete
lpref med aspath origin 100 150 65001 i 100 100 150 150 0i 0i 0 65003 i 0 65003 i
R3:
[root@R3 ~]# bgpctl show ip bgp flags: * = Valid, > = Selected, I = via IBGP, A = Announced origin: i = IGP, e = EGP, ? = Incomplete
flags destination I*> 10.0.0.1/32 I*> 10.0.0.2/32 AI*> 10.0.0.3/32 *> *> 10.0.0.4/32 10.0.0.5/32
lpref med aspath origin 100 150 65001 i 100 100 150 150 0i 0 65003 i 0 65003 i 0i
R4:
[root@R4 ~]# bgpctl show ip bgp flags: * = Valid, > = Selected, I = via IBGP, A = Announced origin: i = IGP, e = EGP, ? = Incomplete
lpref med aspath origin 100 100 100 0 65002 65001 i 0 65002 i 0 65002 i
Strana 16
Dejan Bogdanovi
AI*> 10.0.0.4/32 AI*> 10.0.0.5/32 0.0.0.0 0.0.0.0 100 100 0i 0i
Semestralni rad
Moemo primetiti da je mrea 10.0.0.4/32 na ruteru R1 prepend-ovana 2 puta sa AS 65002, kao i da se mrea 10.0.0.5/32 ne pojavljuje na ruteru R1, zbog community atributa NO-EXPORT koji spreava njenu propagaciju van AS 65002. U AS 65002, tj. na ruterima R2 i R3, mrea 10.0.0.1/32 ima MED atribut sa vrednou 150. Takoe, mree koje potiu iz AS 65003, tj. sa rutera R4, u AS 65002 imaju atribut local-preference 150. Sve ovo je u skladu sa match/set pravilima koja smo definisali u bgpd.conf fajlovima. Sistemske ruting tabele sadre sve odgovarajue BGP rute, i mrea je konvergirala, to moemo pokazati ping-om sa rutera R1 do mree 10.0.0.4/32.
[root@R1 ~]# ping 10.0.0.4 PING 10.0.0.4 (10.0.0.4): 56 data bytes 64 bytes from 10.0.0.4: icmp_seq=0 ttl=64 time=3.146 ms 64 bytes from 10.0.0.4: icmp_seq=1 ttl=64 time=0.454 ms 64 bytes from 10.0.0.4: icmp_seq=2 ttl=64 time=0.437 ms ^C --- 10.0.0.4 ping statistics --3 packets transmitted, 3 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 0.437/1.346/3.146/1.273 ms [root@R1 ~]#
Internet: Destination default 10.0.0.1 10.0.0.2/32 10.0.0.3/32 10.0.0.4/32 192.168.1.0 R1 Gateway 192.168.1.1 link#3 Flags UGS UH UG1 UG1 UG1 U UHS 0 3 0 Refs 0 0 0 0 0 4614 0 lo0 Use Netif Expire 0 le0 lo0 0 0 3 le0 le0 le0
le0
Strana 17
Dejan Bogdanovi
Semestralni rad
Strana 18
Dejan Bogdanovi
Semestralni rad
5. ZAKLJUAK
Sledea tabela prikazuje uporedne napredne mogunosti Cisco rutera i OpenBGPd rutera vezane za BGP. Cisco IPv6 Multicast MPLS IPsec za BGP Da Da Da Zavisno od IOS-a OpenBGPd Da Ne Ne Da
Glavni nedostatak koji e spreiti iru upotrebu OpenBGPd-a je nedostatak podrke za MPLS, koji znaajno suava njegovu primenu u velikim sistemima. Sreom, MPLS podrka je u planu u skorijoj budunosti. Takoe izostaje podrka za multicast, ali to ne predstavlja previe ozbiljan problem obzirom da on jo uvek nije zaiveo u praksi koliko je bilo oekivano. Ali, OpenBGPd ima i dve velike prednosti: Cenu i jednostavnost. Prosean server sa instaliranim OpenBGPd-om (koji je naravno besplatan) kota daleko manje od Cisco rutera istih performansi, i dosta je jednostavniji za konfiguraciju. Izvetaji provajdera koji koriste OpenBGPd takoe govore da su performanse i stabilnost na zadovoljavajuem nivou, to je osnovna zamerka ostalim Open-Source BGP implementacijama. Ukoliko zadovoljava konkretne potrebe, OpenBGPd zasluuje da bude ozbiljno uzet u razmatranje kao alternativa Cisco/Juniper i ostalim namenskim BGP ruterima.
Strana 19
Dejan Bogdanovi
Semestralni rad
6. LITERATURA
Web stranice: [1] [2] http://www.openbgpd.org/ http://www.cisco.com/en/US/docs/internetworking/technology/handbook/bgp.html
FreeBSD manual stranice: [1] [2] [3] man bgpd man bgpd.conf man bgpctl
Strana 20