Personal tools

Difference between revisions of "Quagga on Linux"

From linux360

Jump to: navigation, search
 
(32 intermediate revisions by 9 users not shown)
Line 1: Line 1:
== BGP mit Quagga ==
+
== Notiuni introductive ==
  
 
BGP4 RFC: RFC 1772
 
BGP4 RFC: RFC 1772
  
Folosirea BGP presupune 2 lucruri:
+
Folosirea BGP presupune:
# detinerea unui [http://en.wikipedia.org/wiki/Autonomous_system_%28Internet%29 Autonomous System Number], pe scurt AS
+
* 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
+
* 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# conf t
 
 
  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)# neigbor 10.1.2.2 remote-as 65535
+
  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
  
RouterB:
+
Router B:
 
   
 
   
  RouterB#
+
  RouterB# configure terminal
RouterB# conf t
 
 
  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)# neigbor 10.1.2.1 description RouterA
+
  RouterB(config-router)# neighbor 10.1.2.1 description RouterA
 +
RouterB# write memory
  
Acum pe scurt explicat ce face fiecare comanda de mai sus:
+
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 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 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
  
se defineste AS-ul local
+
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