Difference between revisions of "Quagga on Linux"
From linux360
(27 intermediate revisions by 9 users not shown) | |||
Line 1: | Line 1: | ||
− | == | + | == Notiuni introductive == |
BGP4 RFC: RFC 1772 | BGP4 RFC: RFC 1772 | ||
− | Folosirea BGP presupune | + | Folosirea BGP presupune: |
− | + | * detinerea unui [http://en.wikipedia.org/wiki/Autonomous_system_%28Internet%29 Autonomous System Number], pe scurt AS | |
− | + | * detinerea unui subnet <tt>/24</tt> (sau mai mic) de adrese IP Provider Independent, pe scurt PI | |
+ | == Exemple practice == | ||
Pentru a seta o sesiune BGP intre 2 neighbori (presupunand ca aveti routerele A si B si AS-urile: 65534 si 65535) faceti in felul urmator: | Pentru a seta o sesiune BGP intre 2 neighbori (presupunand ca aveti routerele A si B si AS-urile: 65534 si 65535) faceti in felul urmator: | ||
Line 12: | Line 13: | ||
Router A: | Router A: | ||
− | RouterA# | + | RouterA# configure terminal |
− | |||
RouterA(config)# router bgp 65534 | RouterA(config)# router bgp 65534 | ||
RouterA(config-router)# network 10.2.2.0 | RouterA(config-router)# network 10.2.2.0 | ||
− | RouterA(config-router)# | + | RouterA(config-router)# neighbor 10.1.2.2 remote-as 65535 |
RouterA(config-router)# neighbor 10.1.2.2 description RouterB | RouterA(config-router)# neighbor 10.1.2.2 description RouterB | ||
+ | RouterA# write memory | ||
− | + | Router B: | |
− | RouterB# | + | RouterB# configure terminal |
− | |||
RouterB(config)# router bgp 65535 | RouterB(config)# router bgp 65535 | ||
RouterB(config-router)# network 10.2.3.0 | RouterB(config-router)# network 10.2.3.0 | ||
RouterB(config-router)# neighbor 10.1.2.1 remote-as 65534 | RouterB(config-router)# neighbor 10.1.2.1 remote-as 65534 | ||
− | RouterB(config-router)# | + | RouterB(config-router)# neighbor 10.1.2.1 description RouterA |
+ | RouterB# write memory | ||
− | In exemplul de mai sus, fiecare router anunta cate un prefix /24 (pentru prefixe mai lungi se trece | + | In exemplul de mai sus, fiecare router anunta cate un prefix <tt>/24</tt> (pentru prefixe mai lungi se trece masca de retea in format [http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]). |
− | Daca in ecuatia de mai sus se mai adauga un | + | Daca in ecuatia de mai sus se mai adauga un Router C astfel incat sa avem topologia urmatoare |
+ | RouterA <--> RouterB <--> RouterC | ||
+ | atunci configuratia se modifica dupa cum urmeaza: | ||
− | + | Router B: | |
− | RouterB# | + | RouterB# configure terminal |
RouterB(config)# router bgp 65535 | RouterB(config)# router bgp 65535 | ||
RouterB(config-router)# network 10.2.3.0 | RouterB(config-router)# network 10.2.3.0 | ||
Line 41: | Line 44: | ||
RouterB(config-router)# neighbor 10.1.2.6 remote-as 65533 | RouterB(config-router)# neighbor 10.1.2.6 remote-as 65533 | ||
RouterB(config-router)# neighbor 10.1.2.6 description RouterC | RouterB(config-router)# neighbor 10.1.2.6 description RouterC | ||
+ | RouterB# write memory | ||
− | + | Router C: | |
− | RouterC# | + | |
+ | RouterC# configure terminal | ||
RouterC(config)# router bgp 65533 | RouterC(config)# router bgp 65533 | ||
RouterC(config-router)# network 10.2.4.0 | RouterC(config-router)# network 10.2.4.0 | ||
RouterC(config-router)# neighbor 10.1.2.5 remote-as 65535 | RouterC(config-router)# neighbor 10.1.2.5 remote-as 65535 | ||
RouterC(config-router)# neighbor 10.1.2.5 description RouterB | RouterC(config-router)# neighbor 10.1.2.5 description RouterB | ||
+ | RouterC# write memory | ||
+ | |||
+ | Daca vrem ca (e.g.) RouterB sa fie default gateway pentru celelalte doua routere, procedam dupa cum urmeaza: | ||
+ | |||
+ | RouterB# configure terminal | ||
+ | RouterB(config)# router bgp 65535 | ||
+ | RouterB(config-router)# network 10.2.3.0 | ||
+ | RouterB(config-router)# neighbor 10.1.2.1 remote-as 65534 | ||
+ | RouterB(config-router)# neighbor 10.1.2.1 default-originate | ||
+ | RouterB(config-router)# neighbor 10.1.2.1 description RouterA | ||
+ | RouterB(config-router)# neighbor 10.1.2.6 remote-as 65533 | ||
+ | RouterB(config-router)# neighbor 10.1.2.6 default-originate | ||
+ | RouterB(config-router)# neighbor 10.1.2.6 description RouterC | ||
+ | RouterB# write memory | ||
+ | |||
+ | Folosind <tt>default-originate</tt>, pe langa prefixele exportate, se va mai exporta si <tt>0.0.0.0/0</tt>. | ||
+ | |||
+ | Cam pana aici au fost configurarile de baza, mai jos veti gasi exemple de configurare putin mai complexe (i.e.: <tt>prefix-lists</tt>, <tt>as-prepend</tt> etc) | ||
+ | |||
+ | Pentru a nu accepta ruta default de la un anumit neighbor se face asa: | ||
+ | |||
+ | RouterC# configure terminal | ||
+ | RouterC(config)# ip prefix-list NO-DEFAULT seq 5 deny 0.0.0.0/0 le 1 | ||
+ | RouterC(config)# ip prefix-list NO-DEFAULT seq 10 permit any | ||
+ | RouterC(config)# router bgp 65533 | ||
+ | RouterC(config-router)# neighbor 10.1.2.5 remote-as 65535 | ||
+ | RouterC(config-router)# neighbor 10.1.2.5 description RouterB | ||
+ | RouterC(config-router)# neighbor 10.1.2.5 prefix-list NO-DEFAULT in | ||
+ | RouterC# clear ip bgp 10.1.2.5 soft in | ||
+ | RouterC# write memory | ||
+ | |||
+ | Daca nu vreti sa deveniti transit provider pentru altii, e bine sa stiti ce anume exportati la alti neighbori: | ||
+ | RouterB# configure terminal | ||
+ | RouterB(config)# ip prefix-list our-subnets seq 10 permit 10.2.3.0/24 | ||
+ | RouterB(config)# ip prefix-list our-subnets seq 20 deny any any | ||
+ | RouterB(config)# router bgp 65535 | ||
+ | RouterB(config-router)# network 10.2.3.0 | ||
+ | RouterB(config-router)# neighbor 10.1.2.1 remote-as 65534 | ||
+ | RouterB(config-router)# neighbor 10.1.2.1 default-originate | ||
+ | RouterB(config-router)# neighbor 10.1.2.1 prefix-list our-subnets out | ||
+ | RouterB(config-router)# neighbor 10.1.2.1 description RouterA | ||
+ | RouterB(config-router)# neighbor 10.1.2.6 remote-as 65533 | ||
+ | RouterB(config-router)# neighbor 10.1.2.6 default-originate | ||
+ | RouterB(config-router)# neighbor 10.1.2.6 prefix-list our-subnets out | ||
+ | RouterB(config-router)# neighbor 10.1.2.6 description RouterC | ||
+ | routerB# clear ip bgp * soft out | ||
+ | RouterB# write memory | ||
+ | |||
[[Category:HowTo]] | [[Category:HowTo]] | ||
+ | [[Category:Networking]] | ||
[[Category:Routing]] | [[Category:Routing]] |
Latest revision as of 12:41, 13 February 2006
Notiuni introductive
BGP4 RFC: RFC 1772
Folosirea BGP presupune:
- detinerea unui Autonomous System Number, pe scurt AS
- detinerea unui subnet /24 (sau mai mic) de adrese IP Provider Independent, pe scurt PI
Exemple practice
Pentru a seta o sesiune BGP intre 2 neighbori (presupunand ca aveti routerele A si B si AS-urile: 65534 si 65535) faceti in felul urmator:
Router A:
RouterA# configure terminal RouterA(config)# router bgp 65534 RouterA(config-router)# network 10.2.2.0 RouterA(config-router)# neighbor 10.1.2.2 remote-as 65535 RouterA(config-router)# neighbor 10.1.2.2 description RouterB RouterA# write memory
Router B:
RouterB# configure terminal RouterB(config)# router bgp 65535 RouterB(config-router)# network 10.2.3.0 RouterB(config-router)# neighbor 10.1.2.1 remote-as 65534 RouterB(config-router)# neighbor 10.1.2.1 description RouterA RouterB# write memory
In exemplul de mai sus, fiecare router anunta cate un prefix /24 (pentru prefixe mai lungi se trece masca de retea in format CIDR).
Daca in ecuatia de mai sus se mai adauga un Router C astfel incat sa avem topologia urmatoare
RouterA <--> RouterB <--> RouterC
atunci configuratia se modifica dupa cum urmeaza:
Router B:
RouterB# configure terminal RouterB(config)# router bgp 65535 RouterB(config-router)# network 10.2.3.0 RouterB(config-router)# neighbor 10.1.2.1 remote-as 65534 RouterB(config-router)# neighbor 10.1.2.1 description RouterA RouterB(config-router)# neighbor 10.1.2.6 remote-as 65533 RouterB(config-router)# neighbor 10.1.2.6 description RouterC RouterB# write memory
Router C:
RouterC# configure terminal RouterC(config)# router bgp 65533 RouterC(config-router)# network 10.2.4.0 RouterC(config-router)# neighbor 10.1.2.5 remote-as 65535 RouterC(config-router)# neighbor 10.1.2.5 description RouterB RouterC# write memory
Daca vrem ca (e.g.) RouterB sa fie default gateway pentru celelalte doua routere, procedam dupa cum urmeaza:
RouterB# configure terminal RouterB(config)# router bgp 65535 RouterB(config-router)# network 10.2.3.0 RouterB(config-router)# neighbor 10.1.2.1 remote-as 65534 RouterB(config-router)# neighbor 10.1.2.1 default-originate RouterB(config-router)# neighbor 10.1.2.1 description RouterA RouterB(config-router)# neighbor 10.1.2.6 remote-as 65533 RouterB(config-router)# neighbor 10.1.2.6 default-originate RouterB(config-router)# neighbor 10.1.2.6 description RouterC RouterB# write memory
Folosind default-originate, pe langa prefixele exportate, se va mai exporta si 0.0.0.0/0.
Cam pana aici au fost configurarile de baza, mai jos veti gasi exemple de configurare putin mai complexe (i.e.: prefix-lists, as-prepend etc)
Pentru a nu accepta ruta default de la un anumit neighbor se face asa:
RouterC# configure terminal RouterC(config)# ip prefix-list NO-DEFAULT seq 5 deny 0.0.0.0/0 le 1 RouterC(config)# ip prefix-list NO-DEFAULT seq 10 permit any RouterC(config)# router bgp 65533 RouterC(config-router)# neighbor 10.1.2.5 remote-as 65535 RouterC(config-router)# neighbor 10.1.2.5 description RouterB RouterC(config-router)# neighbor 10.1.2.5 prefix-list NO-DEFAULT in RouterC# clear ip bgp 10.1.2.5 soft in RouterC# write memory
Daca nu vreti sa deveniti transit provider pentru altii, e bine sa stiti ce anume exportati la alti neighbori:
RouterB# configure terminal RouterB(config)# ip prefix-list our-subnets seq 10 permit 10.2.3.0/24 RouterB(config)# ip prefix-list our-subnets seq 20 deny any any RouterB(config)# router bgp 65535 RouterB(config-router)# network 10.2.3.0 RouterB(config-router)# neighbor 10.1.2.1 remote-as 65534 RouterB(config-router)# neighbor 10.1.2.1 default-originate RouterB(config-router)# neighbor 10.1.2.1 prefix-list our-subnets out RouterB(config-router)# neighbor 10.1.2.1 description RouterA RouterB(config-router)# neighbor 10.1.2.6 remote-as 65533 RouterB(config-router)# neighbor 10.1.2.6 default-originate RouterB(config-router)# neighbor 10.1.2.6 prefix-list our-subnets out RouterB(config-router)# neighbor 10.1.2.6 description RouterC routerB# clear ip bgp * soft out RouterB# write memory