Projecte

General

Perfil

Bgp » Historial » Versió 3

Agustí Moll Garcia, 16-04-2011 09:36

1 2 Agustí Moll Garcia
h1. Apunts sobre BGP
2 1 Agustí Moll Garcia
3 2 Agustí Moll Garcia
h2. Escenari
4
5 1 Agustí Moll Garcia
Disposo del següent escenari:
6
7 2 Agustí Moll Garcia
* Node MANET amb GSF (routerstation2): 10.229.193.6
8
* Node MANET amb GSF (routerstation1): 10.228.193.4 / 10.0.1.4
9
* Virtual amb openWRT (prova1): 10.0.1.2 / 10.0.0.2
10
* Virtual amb openWRT (prova2): 10.0.0.3
11 1 Agustí Moll Garcia
12
La conexió física és la següent:
13
14
RS2 ----- RS1 ----- prova1 ----- prova2
15
16
Tant prova1 com prova2, representen supernodes de guifi en infraestrucutra. RS1 representa un node MANET frontera entre el núbol i guifi.
17
18
**L'objectiu és que prova2 vegi RS2 mitjançant una instància BGP publicada per RS1 a través de prova1**
19
20
RS2 i RS1 ja és veuen mitjançant BMX
21
22
23 2 Agustí Moll Garcia
h2. Configuració BGP
24
25 1 Agustí Moll Garcia
1. Primer instal·lem quagga en RS1 + prova1 + prova2
26
27 2 Agustí Moll Garcia
@opkg install quagga quagga-bgpd quagga-vtysh@
28
29 1 Agustí Moll Garcia
2. Configurem /etc/quagga/zebra.conf
30 2 Agustí Moll Garcia
31
<pre><code class=`schema`>
32
interface eth0
33 1 Agustí Moll Garcia
!
34
access-list vty permit 127.0.0.0/8
35
!
36
access-list vty deny any
37
!
38
ip forwarding
39
!
40
line vty
41
!
42 2 Agustí Moll Garcia
access-class vty
43
</code></pre>
44
45 1 Agustí Moll Garcia
Afegim totes les interfaces de cada màquina....
46
47 2 Agustí Moll Garcia
h2. Configurem /etc/quagga/bgpd.conf
48 1 Agustí Moll Garcia
49 3 Agustí Moll Garcia
h3. RS1
50
51 2 Agustí Moll Garcia
<pre><code class=`schema`>
52
hostname rs1
53
  router bgp 400
54
  bgp router-id 10.0.1.4
55
  network 10.228.193.6/32
56
  neighbor 10.0.1.2 remote-as 200
57 1 Agustí Moll Garcia
</code></pre>
58
59 3 Agustí Moll Garcia
h3. prova2
60 2 Agustí Moll Garcia
61
<pre><code class=`schema`>
62
hostname prova2
63 1 Agustí Moll Garcia
router bgp 300                   
64
bgp router-id 10.0.0.3            
65
neighbor 10.0.0.2 remote-as 200
66
</code></pre>
67 2 Agustí Moll Garcia
68 3 Agustí Moll Garcia
h3. prova1
69
70 2 Agustí Moll Garcia
<pre><code class=`schema`>
71
hostname prova1
72 1 Agustí Moll Garcia
router bgp 200
73
74
bgp router-id 10.0.0.2
75
76
network 10.0.0.0/24
77
network 10.0.1.0/24   
78
 	
79
neighbor 10.0.0.3 remote-as 300
80
neighbor 10.0.1.4 remote-as 400
81 2 Agustí Moll Garcia
</code></pre>
82 1 Agustí Moll Garcia
83 2 Agustí Moll Garcia
* `router bgp` -> El nom del AS
84
* `network` -> La xarxa a publicar
85
* `neighbor` -> Els veins amb qui ens comuniquem
86 1 Agustí Moll Garcia
87
88 2 Agustí Moll Garcia
<pre><code class=`schema`>
89
/etc/init.d/quagga start
90
</code></pre>
91 1 Agustí Moll Garcia
92 2 Agustí Moll Garcia
h2. Proves
93 1 Agustí Moll Garcia
94
Des de prova2:
95 2 Agustí Moll Garcia
96
<pre><code class=`schema`>
97
ip route show
98 1 Agustí Moll Garcia
10.228.193.6 via 10.0.0.2 dev eth1  proto zebra 
99
10.0.0.0/24 dev eth1  proto kernel  scope link  src 10.0.0.3 
100
10.0.1.0/24 via 10.0.0.2 dev eth1  proto zebra 
101
192.168.10.0/24 dev br-lan  proto kernel  scope link  src 192.168.10.3 
102
10.3.3.0/24 dev eth1  proto kernel  scope link  src 10.3.3.1 
103
172.20.0.0/14 via 10.0.0.2 dev eth1  proto zebra 
104
1.0.0.0/8 dev eth0  proto kernel  scope link  src 1.1.1.1 
105
default via 192.168.10.1 dev br-lan 
106 2 Agustí Moll Garcia
</code></pre>
107 1 Agustí Moll Garcia
108
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:
109
110 2 Agustí Moll Garcia
@prova2 ---bgp---> prova1 ---bgp---> RS1 ---bmx---> RS2 @
111 1 Agustí Moll Garcia
112 2 Agustí Moll Garcia
h2. Implamtació a GSF
113 1 Agustí Moll Garcia
114 2 Agustí Moll Garcia
Bé,ja hem conseguit que el node MANET frontera sigui capaç de publicar una IP del seu núvol.
115
116 1 Agustí Moll Garcia
Però ens queda resoldre la pregunta: Cóm fem això dinàmic?
117
118
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)
119
120 2 Agustí Moll Garcia
<pre><code class=`schema`>
121
vtysh
122 1 Agustí Moll Garcia
  configure terminal
123
  router bgp 400
124
  network 10.228.193.7/32
125
  no network 10.228.193.6/32
126
  end
127
  write memory
128
  exit
129 2 Agustí Moll Garcia
</code></pre>
130 1 Agustí Moll Garcia
131
Seria el mateix que executar aquesta comanda bash:
132
133 2 Agustí Moll Garcia
<pre><code class=`python`>
134
printf `configure terminal\nrouter bgp 400\nnetwork 10.228.193.7/32\nno network 10.228.193.6/32\nend\nwrite memory\nexit\n` | vtysh
135
</code></pre>
136
137 1 Agustí Moll Garcia
Mola bastant eh!!
138
139
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
140
141 2 Agustí Moll Garcia
h2. Referències
142 1 Agustí Moll Garcia
143
- http://www.quagga.net/docs/quagga.html
144
- http://martybugs.net/wireless/openwrt/quagga.cgi
145
- http://www.mcmcse.com/cisco/guides/bgp_neighbor_process.shtml