Bgp » Historial » Revisió 1
Revisió 1/3
| Següent »
Agustí Moll Garcia, 16-04-2011 09:10
Bgp¶
#Apunts sobre BGP
##Escenari
Disposo del següent escenari:
- Node MANET amb GSF (routerstation2): 10.229.193.6
- Node MANET amb GSF (routerstation1): 10.228.193.4 / 10.0.1.4
- Virtual amb openWRT (prova1): 10.0.1.2 / 10.0.0.2
- Virtual amb openWRT (prova2): 10.0.0.3
La conexió física és la següent:
RS2 ----- RS1 ----- prova1 ----- prova2
Tant prova1 com prova2, representen supernodes de guifi en infraestrucutra. RS1 representa un node MANET frontera entre el núbol i guifi.
L'objectiu és que prova2 vegi RS2 mitjançant una instància BGP publicada per RS1 a través de prova1
RS2 i RS1 ja és veuen mitjançant BMX
##Configuració BGP
1. Primer instal·lem quagga en RS1 + prova1 + prova2
{{{ opkg install quagga quagga-bgpd quagga-vtysh }}}
2. Configurem /etc/quagga/zebra.conf
{{{ interface eth0
!
access-list vty permit 127.0.0.0/8
!
access-list vty deny any
!
ip forwarding
!
line vty
access-class vty
!
}}}
Afegim totes les interfaces de cada màquina....
3. Configurem /etc/quagga/bgpd.conf
{{{hostname rs1
router bgp 400
bgp router-id 10.0.1.4
network 10.228.193.6/32
neighbor 10.0.1.2 remote-as 200
}}}
{{{hostname prova2
router bgp 300
bgp router-id 10.0.0.3
neighbor 10.0.0.2 remote-as 200
}}}
{{{hostname prova1
router bgp 200
3.3 prova1
bgp router-id 10.0.0.2
network 10.0.0.0/24
network 10.0.1.0/24
neighbor 10.0.0.3 remote-as 300
neighbor 10.0.1.4 remote-as 400
}}}
- `router bgp` -> El nom del AS
- `network` -> La xarxa a publicar
- `neighbor` -> Els veins amb qui ens comuniquem
{{{/etc/init.d/quagga start}}}
##Proves
Des de prova2:
{{{ip route show
10.228.193.6 via 10.0.0.2 dev eth1 proto zebra
10.0.0.0/24 dev eth1 proto kernel scope link src 10.0.0.3
10.0.1.0/24 via 10.0.0.2 dev eth1 proto zebra
192.168.10.0/24 dev br-lan proto kernel scope link src 192.168.10.3
10.3.3.0/24 dev eth1 proto kernel scope link src 10.3.3.1
172.20.0.0/14 via 10.0.0.2 dev eth1 proto zebra
1.0.0.0/8 dev eth0 proto kernel scope link src 1.1.1.1
default via 192.168.10.1 dev br-lan
}}}
Com es pot veure, des de prova dos veiem 10.228.193.6, que és la IP de RS2, per tant el recorregut dels paquets seria: {{{prova2 ---bgp---> prova1 ---bgp---> RS1 ---bmx---> RS2 }}}
##Implamtació a GSF
Bé, ja hem conseguit que el node MANET frontera sigui capaç de publicar una IP del seu núvol.
Però ens queda resoldre la pregunta: Cóm fem això dinàmic?
Amb l'aplicació vtysh podem fer el següent per afegir dinàmicament una nova ruta (10.228.193.7/32), i eliminar l'anterior (10.228.193.6/32)
{{{vtysh
configure terminal
router bgp 400
network 10.228.193.7/32
no network 10.228.193.6/32
end
write memory
exit
}}}
Seria el mateix que executar aquesta comanda bash:
{{{printf `configure terminal\nrouter bgp 400\nnetwork 10.228.193.7/32\nno network 10.228.193.6/32\nend\nwrite memory\ne
xit\n` | vtysh
}}}
Mola bastant eh!!
Per tant és podria fer un script executat cada X temps (diguem 10 minuts?). Que recullís les IPs vistes mitjançant BMX, i ho publiques al BGP, d'aquesta manera des de GUIFI ens podran veure i enrutar directament cap a nosaltres. I el més important, podrem disposar de varis nodes frontera :-D
##Referències
- http://www.quagga.net/docs/quagga.html
- http://martybugs.net/wireless/openwrt/quagga.cgi
- http://www.mcmcse.com/cisco/guides/bgp_neighbor_process.shtml
Actualitzat per Agustí Moll Garcia fa més de 13 anys · 1 revisions