Projecte

General

Perfil

Gateways » Historial » Versió 9

Pau Escrich, 18-02-2014 12:59

1 8 Pau Escrich
h1. Gateways in bmx6
2 1 Pau Escrich
3 3 Pau Escrich
The gateways of the mesh are those nodes who are able to reach some other networks, such as the Internet or another wireless community,and are used as a door for the nodes of the mesh who cannot reach these networks directly.
4 1 Pau Escrich
5 4 Pau Escrich
In bmx6 these gateways are reached using IP tunnels between the node who offer the network and the node who wants to fetch the network. 
6 1 Pau Escrich
7 7 Pau Escrich
The list of tunnels can be seen from the web interface (Mesh -> Tunnels) or from the terminal using the command "bmx6 -c --tunnels".
8 6 Pau Escrich
9 2 Pau Escrich
A node (not gateway) should look for some specific network, as shown in the next */etc/config/bmx6* configuration example:
10 1 Pau Escrich
11 2 Pau Escrich
<pre>
12 1 Pau Escrich
config 'tunOut'
13
	option 'tunOut' 'ipv6'
14
	option 'network' '::/0'
15
16
config 'tunOut'
17
	option 'tunOut' 'inet'
18
	option 'network' '0.0.0.0/0'
19
	option 'maxPrefixLen' '0'
20
	
21
config 'tunOut'  
22
	option 'tunOut' 'guifi'    
23
	option 'network' '10.0.0.0/8'
24
	option 'maxPrefixLen' '8'
25
	
26
config 'tunOut'
27
	option 'tunOut' 'cloud'
28
	option 'network' '10.0.0.0/8'
29
	option 'minPrefixLen' '16'
30 2 Pau Escrich
</pre>
31 1 Pau Escrich
32 5 Pau Escrich
33 2 Pau Escrich
# *ipv6* Look for all IPv6 announcements
34
# *inet* Look only for v4 internet 0.0.0.0/0 (and not smaller)
35
# *guifi* Look for the big announcements to other networks, inside the subnetwork 10.0.0.0/8 not smaller than /8
36
# *cloud* Lookg for all (small) announcements from /16 to /32 inside the subnetwork 10.0.0.0/8
37 5 Pau Escrich
38
39
In the mesh network there might be several gateways publishing the same network, in such case the node will choose his best path.
40
There are many options which can be used to modify the path decision, for instance one quite useful is the "gwName".
41
42
<pre>
43
config 'tunOut'  
44 8 Pau Escrich
        option 'tunOut' 'guifi'    
45
        option 'network' '10.0.0.0/8'
46
        option 'maxPrefixLen' '8'
47
        option 'gwName' 'GSmVictoria-RK71'
48 1 Pau Escrich
</pre>
49
50
In this example, if exist a node named "GSmVictoria-RK71" publishing the network 10.0.0.0/8 it will be selected and not the another ones.
51 8 Pau Escrich
52
h1. Gateways in qMp
53
54
QMP implements an abstraction layer of the bmx6 gateways. It is configured in the file /etc/config/gateways which can look like this (there is also a nice web interface under Configuration->Gateways to manage them):
55
56
<pre>
57
config gateway 'inet6'
58
 	option type 'search'
59
	option network '::/0'
60
 	option maxPrefixLen '0'
61
	option tableRule '32767/253'
62
	option ignore '0'
63
64
config gateway 'inet6_offer'
65
	option type 'offer'
66
	option network '::/0'
67
	option ignore '1'
68
69
config gateway 'inet4'
70
	option type 'search'
71
	option network '0.0.0.0/0'
72
 	option maxPrefixLen '0'
73
	option tableRule '32767/253'
74
 	option ignore '0'
75
76
config gateway 'inet4_offer'
77
	option type 'offer'
78
	option network '0.0.0.0/0'
79
 	option ignore '1'
80
81
config gateway 'cloud'
82
	 option type 'search'
83
	 option network '10.0.0.0/8'
84
	 option minPrefixLen '24'
85
86
config gateway 'cloud6'
87
	option type 'search'
88
	option network '::/0'
89
 	option minPrefixLen '48'
90
91
config gateway 'community'
92
	 option type 'search'
93
	 option network '10.0.0.0/8'
94
	 option maxPrefixLen '8'
95
	 option gwName 'UPCc6-65ab'
96
97
config gateway 'community6'
98
	 option type 'search'
99
	 option network '::/0'
100
	 option minPrefixLen '32'
101
	 option maxPrefixLen '48'
102
103
config gateway 'community_offer'
104
	option type 'offer'
105
	option network '10.0.0.0/8'
106
	option ignore '1'
107
108
config gateway 'example'
109
	option ignore '1'
110
	option type 'search'
111
	option gwName 'qMp-example'
112
	option network '10.1.0.0/16'
113
	option address '10.2.2.2/32'
114
	option minPrefixLen '16'
115
	option maxPrefixLen '24'
116
	option hysteresis '20'
117
	option bonus '10'
118
	option minBandwidth '10000'
119
	option exportDistance '10'
120
121
config gateway 'inet4_upc'
122
	option type 'search'
123
	option network '0.0.0.0/0'
124
	option gwName 'UPCc6-alix1c'
125
	option maxPrefixLen '0'
126
	option bonus '20'
127 9 Pau Escrich
</pre>
128 8 Pau Escrich
129
h2. More info about qMp gateways (copy&pasted from mailing list)
130
131
To choose the best GW bmx6 consider several things:
132
133
- PathMetric (based on packet losses of the e2e path)
134
- Bandwidth announced
135
- Bonus/Hysteresis/etc...
136
137
If you go to one node via web interface, under Mesh->Tunnels you will
138
find this information. The final calculation is the row named "Tun Metric".
139
140
The Hysteresis defines how good has to be an alternative GW to select it
141
(by default it is 20%). So you can consider this scenario:
142
143
- GW A is the best (TunMetric=100)
144
- GW B is not so good (TunMetric=85)
145
- Node C is looking for a gateway
146
147
So Node C will select GW A because it is better. However in some moment
148
node A reboots because of an electricity problem. Then node C will
149
select GW B because it is the only remaining choice. After 5 minuts GW A
150
comes back, but as the Hysteresis is set tun 20% it won't be selected
151
again until B or C reboot.
152
153
So, this could be your scenario, I don't know. To solve this bmx6 will
154
implement a window time before the hysteresis is taken into account.
155
156
Another typical problem is that two GW are announcing different
157
bandwidth. The bandwidth has a big impact in the TunMetric calculation.
158
In old versions of qMp the default announced BW was 1Mbit/s. But in
159
newer versions it has changed to the bmx6 default which is 100Kbit/s.
160
So it could happen that a node is announcing 1Mbit/s and the other
161
100Kbit/s, so all nods will select the first one.
162
163
To solve this (actually it was a treated in a long mailing list thread)
164
the best option would be to remove all the bandwidth announcements and
165
leave bmx6 use the default bandwidth announcement (which is 100Kbit/s).
166
So if all GW are announcing the same, bmx6 will take into account only
167
the PathMetric.
168
Enter into the gateways, look into the file /etc/config/gateways and
169
remove all the lines which configures the "bandwidth".
170
171
There is also another solution which consists in setting minBW=0 in the
172
non-GW nodes. This will do that the nodes do not look in the bandwidth
173
announcements of the GW but only in the PathMetric. I'll add this by
174
default in future versions of qMp.