Release v0.6.6.2
[olsrd.git] / unmaintained / README-Olsr-Switch.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 <HTML>
3 <HEAD>
4         <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
5         <TITLE>Olsr Switch</TITLE>
6         <STYLE>
7         <!--
8                 H1 { color: #000000 }
9                 P { color: #000000; font-family: "verdana", "arial", sans-serif; font-size: 10pt }
10                 H2 { color: #000000 }
11                 H3 { color: #000000 }
12                 PRE { color: #000000 }
13         -->
14         </STYLE>
15 </HEAD>
16 <BODY>
17 <H1>Olsr_Switch network simulation</H1>
18 </P>
19 <H2>Summary</H2>
20 <P>This document gives a brief introduction to the <A HREF="http://www.olsr.org/">olsr.org</A>
21 OLSR daemon network simulation extentions and tools. The network
22 simulation tool olsr_switch provides olsrd processes running in a
23 special <I>host-emultion</I> mode with access to a virtual network.
24 Multiple such processes can run on a host. This network can be freely
25 manipulated by the user allowing for simulation of dynamic
26 large-scale networks. 
27 </P>
28 <P>Only IPv4 is supported for now. 
29 </P>
30 <H2>Background</H2>
31 <P>olsr_switch was inspired by the uml_switch used to communicate
32 between <A HREF="http://user-mode-linux.sourceforge.net/">UML</A>
33 instances, which I have used for olsrd testing. Also I remember
34 seeing that the guys at LRI working on the <A HREF="http://qolsr.lri.fr/">qolsr</A>
35 project has done something similar. 
36 </P>
37 <P>The target users for this kind of things are probably mainly
38 developers and researchers. But it might come in handy for others as
39 well. 
40 </P>
41 <H2>Description</H2>
42 <H3>olsr.org</H3>
43 <P>The olsr.org OLSR daemon is an implementation of the <A HREF="http://ietf.org/rfc/rfc3626.txt">Optimized
44 Link State Routing protocol</A> a IP routing protocol for mobile
45 ad-hoc networks. Multiple interesting extensions are available for
46 the implementation. Read more at <A HREF="http://www.olsr.org/">olsr.org</A>.
47 </P>
48 <H3>olsr_switch</H3>
49 <P>The application, called olsr_switch, is really a traffic router
50 that will allow multiple olsrd instances to connect and communicate
51 over TCP via the loopback interface. Connecting to olsr_switch on
52 remote hosts will be possible, but it is not implemented at the
53 current time. 
54 </P>
55 <P>Basically olsr_switch works on two datasets - clients and links. A
56 client is a connected olsrd process and there are two uni-directional
57 link between all nodes(A-&gt;B and B-&gt;A) that can be manipulated
58 independently. When receiving traffic from a olsrd client the switch
59 will forward this traffic to all other clients to which it has a
60 valid link. Links can be set to three different &quot;modes&quot;
61 based on the <I>quality</I> set on the link: 
62 </P>
63 <UL>
64         <LI><P STYLE="margin-bottom: 0in"><B>Open</B>(quality 100) - all
65         traffic will be forwarded over this link. 
66         </P>
67         <LI><P STYLE="margin-bottom: 0in"><B>Closed</B>(quality 0) - no
68         traffic will be forwarded over this link. 
69         </P>
70         <LI><P><B>Lossy</B>(quality 1-99) - in this mode the quality
71         constraint is used as the chance in percentage, for traffic to be
72         forwarded over the link. So if quality is set to 25 there will in
73         average be 75% packet loss. 
74         </P>
75 </UL>
76 <P>The application provides the user with a prompt/shell where
77 various commands for topology manipulation or data retrieval are
78 available. A help command is provided for the users convenience. This
79 help command will also provide the user with specific help on all
80 available commands. More on this later. 
81 </P>
82 <H3>olsrd host-emulation clients</H3>
83 <P>The communication interface against olsr_switch can naturally not
84 be 100% transparent for the olsrd process which normally runs on
85 UDP/698 on &quot;real&quot; network interfaces. Olsrd itself had to
86 be modified to set up a virtual interface connecting to olsr_switch.
87 This virtual interface is transparent to all overlying functionality.
88 This means that that olsrd host-emulation can run in both RFC and LQ
89 mode, and that plugins can be loaded normally etc. But no routes are
90 added by the olsrd process. Later on route information might be
91 signaled from the olsrd instance to olsr_switch so that a centralized
92 route database is available to the user. As of now, you can watch the
93 olsrd debug output or easier yet, run one node with the httpinfo
94 plugin to get the route/topology/link information. 
95 </P>
96 <P>Currently olsrd cannot run on both real and host-emulation
97 interfaces, but this might change in the future if I get convinced
98 that it is useful. No routes can be added by the host-emulating olsrd
99 instances, so 
100 </P>
101 <H2>Building and running</H2>
102 <P>As of yet, olsr_switch builds and runs on GNU/Linux and FreeBSD
103 systems. 
104 </P>
105 <H3>Building</H3>
106 <P>The olsr.org olsrd source code and pre-compiled packages can be
107 downloaded from the olsr.org <A HREF="http://www.olsr.org/index.cgi?action=download">download</A>
108 section. But as of now you need the CVS version if you want the
109 olsr_switch code. To check out the current snapshot do: 
110 </P>
111 <PRE>cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/olsrd login
112
113 cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/olsrd co olsrd-current</PRE><P>
114 Now enter the olsrd source directory and do: 
115 </P>
116 <PRE STYLE="margin-bottom: 0.2in">olsrd-current# make</PRE><P>
117 to build olsrd itself, and: 
118 </P>
119 <PRE STYLE="margin-bottom: 0.2in">olsrd-current# make switch</PRE><P>
120 to build olsr_switch. If no error messages occurred, you should now
121 have the two executables <I>olsrd</I> and <I>olsr_switch</I>
122 available in the current directory. 
123 </P>
124 <H3>Running</H3>
125 <P>Before starting any olsrd host-emu clients the switch must be
126 started. This is done using the command <I>olsr_switch</I> and the
127 application will initiate the communication socket and provide the
128 user with a prompt for input: 
129 </P>
130 <PRE>olsrd-current# ./olsr_switch
131 olsrd host-switch daemon version 0.1 starting
132 Initiating socket TCP port 10150
133 OHS command interpreter reading from STDIN
134 &gt;</PRE><P>
135 <BR><BR>
136 </P>
137 <P>olsrd_switch has a buildt-in command for starting and
138 stopping local olsrd instances and we will learn more about 
139 this later. But olsrd can also be ran in host-emulation mode
140 from the command line. To start olsrd in host-emulation mode do: 
141 </P>
142 <PRE STYLE="margin-bottom: 0.2in">./olsrd -hemu <B>IP-ADDRESS</B></PRE><P>
143 Here <I>IP-ADDRESS</I> will be the IP address that the process will
144 set as its main address in the emulation mode. This address has no
145 connection to the real IP-stack and can be chosen freely. Of cause,
146 no two instances can run using the same IP.<BR>It might be wise to
147 have a separate olsrd configuration file for host-emulation. In that
148 case issue: 
149 </P>
150 <PRE STYLE="margin-bottom: 0.2in">./olsrd -f <B>FILENAME</B> -hemu <B>IP-ADDRESS</B></PRE><P>
151 As of now there is no emulated destination address used. All traffic
152 will be passed on regardless of the network address used. Olsrd
153 communicates using broadcast/multicast so that multiple &quot;overlapping&quot;
154 networks might exist. 
155 </P>
156 <H2>Command-line interface</H2>
157 <P>Blah blah blah 
158 </P>
159 <H3>help</H3>
160 <P>Type 'help cmd' for help on a specific command 
161 </P>
162 <PRE>&gt; help
163 Olsrd host switch version 0.1
164 Available commands:
165         help - Help on shell commands
166         exit - Exits olsr host switch
167         log - Displays or sets log bits
168         list - List all connected clients or links
169         link - Manipulate links</PRE><H3>
170 list</H3>
171 <P>The <I>list</I> command is used for client and link listing. The
172 help page states: 
173 </P>
174 <PRE>&gt; help list
175 Usage: <B>list &lt;clients|links&gt;</B>
176 Description:
177 <I>This command will list all the clients or all the links registered </I>
178 <I>by olsr_switch. By default clients are listed.</I></PRE><H3>
179 link</H3>
180 <P>The <I>link</I> command is used for manipulating links. Here is
181 the help page for this command: 
182 </P>
183 <PRE>&gt; help link
184 Usage: <B>link &lt;bi&gt; [srcIP|*] [dstIP|*] [0-100]</B>
185 Description:
186 <I>This command is used for manipulating olsr links. The link quality </I>
187 <I>is a number between 0-100 representing the chance in percentage </I>
188 <I>for a packet to be forwarded</I>
189 <I>on the link.</I>
190 To make the link between 10.0.0.1 and 10.0.0.2 have 50% packetloss do:
191  link 10.0.0.1 10.0.0.2 50
192 Note that this will only effect the unidirectional link 
193 10.0.0.1 -&gt; 10.0.0.2. To make the changes affect traffic 
194 in both directions do:
195  link bi 10.0.0.1 10.0.0.2 50
196 To completely block a link do:
197  link 10.0.0.1 10.0.0.2 0
198 To make all traffic pass(delete the entry) do:
199  link 10.0.0.1 10.0.0.2 100
200 Note that &quot;bi&quot; can be used in all these examples.
201 Wildcard source and/or destinations are also supported.
202 To block all traffic from a node do:
203 link 10.0.0.1 * 0
204 To set 50% packetloss on all links to 10.0.0.2 do:
205  link * 10.0.0.2 50
206 To delete all links do:
207  link * * 100
208 Wildcards can also be used in combination with 'bi'.
209 To list all manipulated links use 'list links'.</PRE>
210 <H3>olsrd</H3>
211 <P>The <I>olsrd</I> command is used for manipulating links. Here is
212 the help page for this command: 
213 </P>
214 <PRE>
215 > help olsrd
216 Usage: <B>olsrd [start|stop|show|setb|seta] [IP|path|args]</B>
217 Description:
218 <I>This command is used for managing local olsrd instances from within olsr_switch.</I>
219 <I>The command can be configured in runtime using the setb and seta sub-commands.</I>
220 To show the current olsrd command-configuration do:
221  olsrd show
222 To set the olsrd binary path do:
223  olsrd setb /full/path/to/olsrd
224 To start a olsrd instance with a IP address of 10.0.0.1, do:
225  olsrd start 10.0.0.1
226 To stop that same instance do:
227  olsrd stop 10.0.0.1
228 </PRE>
229 <H3>others</H3>
230 <P>Two other commands are available: 
231 </P>
232 <UL>
233         <LI><P STYLE="margin-bottom: 0in"><B>exit</B> - terminates
234         olsr_switch. 
235         </P>
236         <LI><P><B>log</B> - sets the log level. 
237         </P>
238 </UL>
239 <P>Read the help pages for details. 
240 </P>
241 <H2>Running olsrd in host-emulation mode</H2>
242 <P>Now for a real world example of connecting olsrd instances. Let's
243 assume we have a modified configuration file, <I>./olsrd.emu.conf</I>
244 that we use for host-emu instances. We'll choose the 10.0.0.0/24 IP
245 address space for our clients.<BR>First start the olsr_switch in one
246 terminal: 
247 </P>
248 <PRE STYLE="margin-bottom: 0.2in">./olsr_switch</PRE><P>
249 Now start the olsrd instances in other terminal(s). If you want to
250 follow olsrd operation you should use a debug value &gt; 0. To easen
251 CPU usage and terminal count you can start multiple instances that
252 will run in the background using the <I>-d 0</I> option. In this
253 example we'll run our olsrd instances in the foreground using debug
254 level 1. Start them off(in separate terminals) using: 
255 </P>
256 <PRE STYLE="margin-bottom: 0.2in">./olsrd -f /etc/olsrd.emu.conf -hemu 10.0.0.x -d 1</PRE><P>
257 where x is 1-8(we'll run 8 instances). The <A HREF="http://www.gnu.org/software/screen/">screen</A>
258 terminal multiplexer application is <I>highly</I> recomended for
259 making your life easier if working on multiple terminals. 
260 </P>
261 <P>Here is the output form the 10.0.0.1 instance of olsrd after some
262 time: 
263 </P>
264 <PRE>       *** olsr.org - 0.4.10-pre (May 30 2005) ***
265
266 --- 20:53:26.58 ---------------------------------------------------- LINKS
267
268 IP address       hyst   LQ     lost   total  NLQ    ETX
269 10.0.0.8         0.000  1.000  0      10     1.000  1.00
270 10.0.0.7         0.000  1.000  0      10     1.000  1.00
271 10.0.0.6         0.000  1.000  0      10     1.000  1.00
272 10.0.0.5         0.000  1.000  0      10     1.000  1.00
273 10.0.0.4         0.000  1.000  0      10     1.000  1.00
274 10.0.0.3         0.000  1.000  0      10     1.000  1.00
275 10.0.0.2         0.000  1.000  0      10     1.000  1.00
276
277 --- 20:53:26.58 ------------------------------------------------ NEIGHBORS
278
279 IP address       LQ     NLQ    SYM   MPR   MPRS  will
280 10.0.0.2         1.000  1.000  YES   NO    NO    3
281 10.0.0.3         1.000  1.000  YES   NO    NO    3
282 10.0.0.4         1.000  1.000  YES   NO    NO    3
283 10.0.0.5         1.000  1.000  YES   NO    NO    3
284 10.0.0.6         1.000  1.000  YES   NO    NO    3
285 10.0.0.7         1.000  1.000  YES   NO    NO    3
286 10.0.0.8         1.000  1.000  YES   NO    NO    3
287
288 --- 20:53:26.58 ------------------------------------------------- TOPOLOGY
289
290 Source IP addr   Dest IP addr     LQ     ILQ    ETX
291 </PRE><P>
292 We now have our own virtual network! Notice that you can
293 start olsrd instances from olsr_switch using the <i>olsrd</i>
294 command. The equvivalent of the above command line statement
295 would be:
296 <PRE>
297 olsrd start 10.0.0.x
298 </PRE>
299 <P>
300 Given that the olsrd command is configured properly
301 (see olsrd show, setb and seta).
302 </P>
303 <P>
304 At our switch prompt the command
305 <I>list</I> yields the following output: 
306 </P>
307 <PRE>All connected clients:
308         10.0.0.8 - Rx: 647 Tx: 89 LinkCnt: 0
309         10.0.0.7 - Rx: 752 Tx: 105 LinkCnt: 0
310         10.0.0.6 - Rx: 790 Tx: 120 LinkCnt: 0
311         10.0.0.5 - Rx: 809 Tx: 112 LinkCnt: 0
312         10.0.0.4 - Rx: 811 Tx: 125 LinkCnt: 0
313         10.0.0.3 - Rx: 804 Tx: 138 LinkCnt: 0
314         10.0.0.2 - Rx: 805 Tx: 140 LinkCnt: 0
315         10.0.0.1 - Rx: 829 Tx: 119 LinkCnt: 0</PRE><P>
316 Hey - everything is running a-ok! 
317 </P>
318 <H2>Manipulating links</H2>
319 <P>So lets create some link trouble. This introduction has become too
320 long already, so we'll introduce two simple example conditions: 
321 </P>
322 <UL>
323         <LI><P STYLE="margin-bottom: 0in">We want 10.0.0.1 only to have a
324         link to 10.0.0.2 and no one else. 
325         </P>
326         <LI><P>We want 10.0.0.8 only to have 25% chance of getting direct
327         traffic trough to 10.0.0.2,3,4 
328         </P>
329 </UL>
330 <P>Here's what we need to do: 
331 </P>
332 <PRE>&gt; link bi 10.0.0.1 * 0
333 Setting bidirectional link(s) 10.0.0.1 &lt;=&gt; 10.0.0.8 quality 0
334 Setting bidirectional link(s) 10.0.0.1 &lt;=&gt; 10.0.0.7 quality 0
335 Setting bidirectional link(s) 10.0.0.1 &lt;=&gt; 10.0.0.6 quality 0
336 Setting bidirectional link(s) 10.0.0.1 &lt;=&gt; 10.0.0.5 quality 0
337 Setting bidirectional link(s) 10.0.0.1 &lt;=&gt; 10.0.0.4 quality 0
338 Setting bidirectional link(s) 10.0.0.1 &lt;=&gt; 10.0.0.3 quality 0
339 Setting bidirectional link(s) 10.0.0.1 &lt;=&gt; 10.0.0.2 quality 0
340
341
342 &gt; link bi 10.0.0.1 10.0.0.2 100
343 Removing bidirectional link(s) 10.0.0.1 &lt;=&gt; 10.0.0.2 quality 100
344
345 &gt; list links
346 All configured links:
347         10.0.0.8 =&gt; 10.0.0.1 Quality: 0
348         10.0.0.7 =&gt; 10.0.0.1 Quality: 0
349         10.0.0.6 =&gt; 10.0.0.1 Quality: 0
350         10.0.0.5 =&gt; 10.0.0.1 Quality: 0
351         10.0.0.4 =&gt; 10.0.0.1 Quality: 0
352         10.0.0.3 =&gt; 10.0.0.1 Quality: 0
353         10.0.0.1 =&gt; 10.0.0.3 Quality: 0
354         10.0.0.1 =&gt; 10.0.0.4 Quality: 0
355         10.0.0.1 =&gt; 10.0.0.5 Quality: 0
356         10.0.0.1 =&gt; 10.0.0.6 Quality: 0
357         10.0.0.1 =&gt; 10.0.0.7 Quality: 0
358         10.0.0.1 =&gt; 10.0.0.8 Quality: 0
359 </PRE><P>
360 Now our first condition is met. First all bidirectional links from
361 10.0.0.1 was blocked and then the bidirectional link to 10.0.0.2 was
362 opened. Now 10.0.0.1 can only see 10.0.0.2 as a neighbor. Note that
363 only manipulated links are listed when issuing 'list links'. olsrd at
364 10.0.0.1 now shows: 
365 </P>
366 <PRE>       *** olsr.org - 0.4.10-pre (May 30 2005) ***
367
368 --- 21:17:46.06 ---------------------------------------------------- LINKS
369
370 IP address       hyst   LQ     lost   total  NLQ    ETX
371 10.0.0.2         0.000  1.000  0      10     1.000  1.00
372
373 --- 21:17:46.06 ------------------------------------------------ NEIGHBORS
374
375 IP address       LQ     NLQ    SYM   MPR   MPRS  will
376 10.0.0.2         1.000  1.000  YES   YES   NO    3
377
378 --- 21:17:46.06 ------------------------------------------------- TOPOLOGY
379
380 Source IP addr   Dest IP addr     LQ     ILQ    ETX
381 10.0.0.2         10.0.0.1         1.000  1.000  1.00
382 10.0.0.2         10.0.0.3         1.000  1.000  1.00
383 10.0.0.2         10.0.0.4         1.000  1.000  1.00
384 10.0.0.2         10.0.0.5         1.000  1.000  1.00
385 10.0.0.2         10.0.0.6         1.000  1.000  1.00
386 10.0.0.2         10.0.0.7         1.000  1.000  1.00
387 10.0.0.2         10.0.0.8         1.000  1.000  1.00</PRE><P>
388 works like a charm. Now let's make sure we can meet condition two: 
389 </P>
390 <PRE>&gt; link bi 10.0.0.8 10.0.0.2 25
391 Setting bidirectional link(s) 10.0.0.8 &lt;=&gt; 10.0.0.2 quality 25
392
393 &gt; link bi 10.0.0.8 10.0.0.3 25
394 Setting bidirectional link(s) 10.0.0.8 &lt;=&gt; 10.0.0.3 quality 25
395
396 &gt; link bi 10.0.0.8 10.0.0.4 25
397 Setting bidirectional link(s) 10.0.0.8 &lt;=&gt; 10.0.0.4 quality 25
398
399 &gt; list links
400 All configured links:
401         10.0.0.8 =&gt; 10.0.0.4 Quality: 25
402         10.0.0.8 =&gt; 10.0.0.3 Quality: 25
403         10.0.0.8 =&gt; 10.0.0.2 Quality: 25
404         10.0.0.8 =&gt; 10.0.0.1 Quality: 0
405         10.0.0.7 =&gt; 10.0.0.1 Quality: 0
406         10.0.0.6 =&gt; 10.0.0.1 Quality: 0
407         10.0.0.5 =&gt; 10.0.0.1 Quality: 0
408         10.0.0.4 =&gt; 10.0.0.8 Quality: 25
409         10.0.0.4 =&gt; 10.0.0.1 Quality: 0
410         10.0.0.3 =&gt; 10.0.0.8 Quality: 25
411         10.0.0.3 =&gt; 10.0.0.1 Quality: 0
412         10.0.0.2 =&gt; 10.0.0.8 Quality: 25
413         10.0.0.1 =&gt; 10.0.0.3 Quality: 0
414         10.0.0.1 =&gt; 10.0.0.4 Quality: 0
415         10.0.0.1 =&gt; 10.0.0.5 Quality: 0
416         10.0.0.1 =&gt; 10.0.0.6 Quality: 0
417         10.0.0.1 =&gt; 10.0.0.7 Quality: 0
418         10.0.0.1 =&gt; 10.0.0.8 Quality: 0
419 </PRE><P>
420 Now for a look at olsrd 10.0.0.8s output: 
421 </P>
422 <PRE>       *** olsr.org - 0.4.10-pre (May 30 2005) ***
423
424 --- 21:23:00.35 ---------------------------------------------------- LINKS
425
426 IP address       hyst   LQ     lost   total  NLQ    ETX
427 10.0.0.7         0.000  1.000  0      10     1.000  1.00
428 10.0.0.5         0.000  1.000  0      10     1.000  1.00
429 10.0.0.6         0.000  1.000  0      10     1.000  1.00
430 10.0.0.2         0.000  0.800  2      10     0.498  2.51
431 10.0.0.3         0.000  0.600  4      10     0.498  3.35
432 10.0.0.4         0.000  0.900  1      10     0.800  1.39
433
434 --- 21:23:00.35 ------------------------------------------------ NEIGHBORS
435
436 IP address       LQ     NLQ    SYM   MPR   MPRS  will
437 10.0.0.2         0.800  0.498  YES   YES   NO    3
438 10.0.0.3         0.600  0.498  NO    NO    NO    3
439 10.0.0.4         0.900  0.800  YES   NO    NO    3
440 10.0.0.5         1.000  1.000  YES   NO    NO    3
441 10.0.0.6         1.000  1.000  YES   YES   NO    3
442 10.0.0.7         1.000  1.000  YES   YES   NO    3
443
444 --- 21:23:00.35 ------------------------------------------------- TOPOLOGY
445
446 Source IP addr   Dest IP addr     LQ     ILQ    ETX
447 10.0.0.2         10.0.0.1         1.000  1.000  1.00
448 10.0.0.2         10.0.0.3         1.000  1.000  1.00
449 10.0.0.2         10.0.0.4         1.000  1.000  1.00
450 10.0.0.2         10.0.0.5         1.000  1.000  1.00
451 10.0.0.2         10.0.0.6         1.000  1.000  1.00
452 10.0.0.2         10.0.0.7         1.000  1.000  1.00
453 10.0.0.2         10.0.0.8         0.898  0.498  2.24
454 10.0.0.5         10.0.0.4         1.000  1.000  1.00
455 10.0.0.6         10.0.0.8         1.000  1.000  1.00
456 10.0.0.7         10.0.0.2         1.000  1.000  1.00
457 10.0.0.7         10.0.0.3         1.000  1.000  1.00
458 10.0.0.7         10.0.0.8         1.000  1.000  1.00
459 </PRE><P>
460 Yes, there most certainly are some very weak links here. 
461 </P>
462 <P>Well, lets leave it at that :-) The command line interface is
463 meant to be used by applications as well as humans, so if somebody
464 wants to create a GUI front-end that should not be to much work. 
465 </P>
466 <H2>Performance</H2>
467 <P>Regarding CPU load I have not done any real testing, but I did try
468 seeing how far I could get on my 1.3Ghz/512MB-RAM desktop system
469 running LQ olsrd instances in the background initiated from olsrd_switch. 
470 When reaching a certain amount (15+) the cPU load is very high for 
471 neighbor detection, but as soon as links stabelize the CPU is almost
472 idle again. I have ran with 30+ nodes with no problem. But do not start
473 to many instances at the same time.
474 </P>
475 <P>
476 Note that, this
477 was only using a idle network(no topology changes except new nodes joining). 
478 But as soon as olsrd instances can connect from other hosts one can 
479 distribute the load. Also the application will be subject to various future
480 optimizations.
481 </P>
482 <P>
483 Network load measurement tools will also be on the to-do list.
484 </P>
485 <HR>
486 <P><I>by <A HREF="mailto:andreto--at--olsr.org">Andreas T&oslash;nnesen</A></I>
487 </P>
488 </BODY>
489 </HTML>