<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wirelessafrica.meraka.org.za/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JHugo</id>
	<title>WirelessAfrica - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wirelessafrica.meraka.org.za/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JHugo"/>
	<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php/Special:Contributions/JHugo"/>
	<updated>2026-05-30T14:05:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=HPN_to-do/done_page&amp;diff=4669</id>
		<title>HPN to-do/done page</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=HPN_to-do/done_page&amp;diff=4669"/>
		<updated>2009-06-02T13:02:36Z</updated>

		<summary type="html">&lt;p&gt;JHugo: New page: == HPN version 1 - To-do/done ==  === Done === ==== Nodes: ====  Automatic, Multi Radio configuration and meshing (using OLSR mesh protocol)  Automatic IPv6 addressing  Automatic IPv4 addr...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== HPN version 1 - To-do/done ==&lt;br /&gt;
&lt;br /&gt;
=== Done ===&lt;br /&gt;
==== Nodes: ====&lt;br /&gt;
 Automatic, Multi Radio configuration and meshing (using OLSR mesh protocol)&lt;br /&gt;
 Automatic IPv6 addressing&lt;br /&gt;
 Automatic IPv4 addressing&lt;br /&gt;
 Automatic IPv4 over IPv6 tunneling&lt;br /&gt;
 End-to-end connectivity in the mesh over IPv4 or IPv6&lt;br /&gt;
 Automatic time synchronization with GateWay via ntp time protocol&lt;br /&gt;
 Automatic &amp;quot;Node Name&amp;quot; generation and registration into DNS&lt;br /&gt;
 Automatic HotSpot setup&lt;br /&gt;
 Automatic DHCP and DNS services on Ethernet and Wifi hotspot&lt;br /&gt;
 Automatic router advertising on IPv6&lt;br /&gt;
 Automatic OLSR HNA advertising of Ethernet and hotspot subnets&lt;br /&gt;
 Automatic OLSR HNA advertising of all 4over6 tunnels&lt;br /&gt;
 IPv6 enabled Web server&lt;br /&gt;
 Remote management via ssh&lt;br /&gt;
 Command line routing information&lt;br /&gt;
 Command line signal strenth indicator&lt;br /&gt;
 &amp;quot;OLSR vis&amp;quot; network visualization tool&lt;br /&gt;
 Intergated and external watchdog&lt;br /&gt;
 Automatic firmware checking and updating if it&#039;s available&lt;br /&gt;
 Automatic hunting / channel selection function&lt;br /&gt;
 Green/red node selection - in startup scripts + after hunting&lt;br /&gt;
 Shell scripts for signal strength display / alignment&lt;br /&gt;
&lt;br /&gt;
==== GateWay: ====&lt;br /&gt;
 Automatic time synchronization and NTP server for the mesh&lt;br /&gt;
 Automatic DNS server for the mesh&lt;br /&gt;
 Automatic Default Gateway advertising into the mesh via OLSR&lt;br /&gt;
&lt;br /&gt;
=== To-do: ===&lt;br /&gt;
==== Nodes: ====&lt;br /&gt;
 Automatic hunting / activate in GUI - on next boot or online&lt;br /&gt;
 Red/Green selection via GUI&lt;br /&gt;
 LED display function - visual status of link connectivity&lt;br /&gt;
 FreeBSD device driver for LEDs&lt;br /&gt;
 Hostname update via GUI&lt;br /&gt;
 info.txt generation during bootup&lt;br /&gt;
 Web interface for node with configuration / statistics&lt;br /&gt;
 Alignment tool (under Web interface)&lt;br /&gt;
 fix auto IPv4 subnet selection (avila MAC byte swap)&lt;br /&gt;
 Change default diversity settings in rc.conf.mesh&lt;br /&gt;
 Change default channel/BSSID settings in rc.conf.mesh&lt;br /&gt;
 Change default ack timoutout settings in rc.conf.mesh for 10km&lt;br /&gt;
 Generate new IPv6 prefix for APEX&lt;br /&gt;
 Attend to olsr multipath smooth changeover&lt;br /&gt;
 External watchdog board&lt;br /&gt;
 Upgrade to FreeBSD 7.2 ?&lt;br /&gt;
&lt;br /&gt;
==== GateWay: ====&lt;br /&gt;
 Automatic gateway selection function ?&lt;br /&gt;
 Settings for DHCP, IPv4 addr, Default GW, DNS server, NTP server&lt;br /&gt;
 Change these setting via GUI&lt;br /&gt;
 Synchronize with upstream DNS server&lt;br /&gt;
 Synchronize with upstream NTP time server&lt;br /&gt;
 FTP server for firmware updates&lt;br /&gt;
&lt;br /&gt;
==== Backbone backend ====&lt;br /&gt;
 Procure server&lt;br /&gt;
 OS + software on server&lt;br /&gt;
 Monitoring of backbone ?&lt;br /&gt;
 SANREN connection ?&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=Johann%27s_Research&amp;diff=4668</id>
		<title>Johann&#039;s Research</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=Johann%27s_Research&amp;diff=4668"/>
		<updated>2009-06-02T10:26:23Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* HPN design discussions page */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Development Team Research Pages]][[Category: Johann&#039;s Research Pages]]&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure if my stuff is really research, but this is some of the stuff that I&#039;m busy with:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[High performance node page]] ==&lt;br /&gt;
&lt;br /&gt;
== [[HPN design discussions page]] ==&lt;br /&gt;
&lt;br /&gt;
== [[HPN to-do/done page]] ==&lt;br /&gt;
&lt;br /&gt;
== [[APEX backbone]] ==&lt;br /&gt;
&lt;br /&gt;
== [[Installing cacti on FreeBSD]] ==&lt;br /&gt;
&lt;br /&gt;
== [[Community wireless networks ]] ==&lt;br /&gt;
&lt;br /&gt;
== [[EeePC and FreeBSD page]] ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Meraka wireless Network]] ==&lt;br /&gt;
&lt;br /&gt;
== [[VOIP page]] ==&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4667</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4667"/>
		<updated>2009-05-28T13:12:03Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Throughput tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following network throughput tests was performed between Meraka and each one of the remote sites. The measurement tool used for the benchmarking is [http://sourceforge.net/projects/iperf iperf]&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms &lt;br /&gt;
  &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.1 sec  7.62 MBytes  &#039;&#039;&#039;3.97 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=55.760 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=25.314 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=23.425 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 23.425/34.833/55.760/14.818 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 60571 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.5 sec  6.22 MBytes  &#039;&#039;&#039;3.17 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=82.330 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=39.529 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=42.279 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 39.529/54.713/82.330/19.561 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  3] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  3]  0.0-16.5 sec  6.19 MBytes  &#039;&#039;&#039;3.15 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=24.918 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=11.442 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=10.283 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 10.283/15.548/24.918/6.643 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-15.8 sec  9.01 MBytes  &#039;&#039;&#039;4.77 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=79.477 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=36.974 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=37.003 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 36.974/51.151/79.477/20.029 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 49707 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.3 sec  6.91 MBytes  &#039;&#039;&#039;3.56 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
&lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 0 packets received, 100.0% packet loss&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 60826 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-16.7 sec  4.93 MBytes  &#039;&#039;&#039;2.48 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=140.747 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=71.639 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=68.055 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 68.055/93.480/140.747/33.455 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.8 sec  4.67 MBytes  &#039;&#039;&#039;2.33 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=147.200 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=76.803 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=73.115 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 73.115/99.039/147.200/34.088 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.7 sec  5.00 MBytes  &#039;&#039;&#039;2.51 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=221.202 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=105.278 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=106.097 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 105.278/144.192/221.202/54.455 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.8 sec  4.98 MBytes  &#039;&#039;&#039;2.49 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=190.682 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=90.929 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=93.045 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 90.929/124.885/190.682/46.533 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 59898 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.8 sec  5.12 MBytes  &#039;&#039;&#039;2.55 Mbits/sec&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4666</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4666"/>
		<updated>2009-05-28T13:11:41Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Throughput tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following network throughput tests was performed between Meraka and each one of the remote sites. The measurement tool used for the benchmarks is [http://sourceforge.net/projects/iperf iperf]&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms &lt;br /&gt;
  &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.1 sec  7.62 MBytes  &#039;&#039;&#039;3.97 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=55.760 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=25.314 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=23.425 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 23.425/34.833/55.760/14.818 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 60571 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.5 sec  6.22 MBytes  &#039;&#039;&#039;3.17 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=82.330 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=39.529 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=42.279 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 39.529/54.713/82.330/19.561 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  3] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  3]  0.0-16.5 sec  6.19 MBytes  &#039;&#039;&#039;3.15 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=24.918 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=11.442 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=10.283 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 10.283/15.548/24.918/6.643 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-15.8 sec  9.01 MBytes  &#039;&#039;&#039;4.77 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=79.477 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=36.974 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=37.003 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 36.974/51.151/79.477/20.029 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 49707 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.3 sec  6.91 MBytes  &#039;&#039;&#039;3.56 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
&lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 0 packets received, 100.0% packet loss&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 60826 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-16.7 sec  4.93 MBytes  &#039;&#039;&#039;2.48 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=140.747 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=71.639 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=68.055 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 68.055/93.480/140.747/33.455 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.8 sec  4.67 MBytes  &#039;&#039;&#039;2.33 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=147.200 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=76.803 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=73.115 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 73.115/99.039/147.200/34.088 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.7 sec  5.00 MBytes  &#039;&#039;&#039;2.51 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=221.202 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=105.278 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=106.097 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 105.278/144.192/221.202/54.455 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.8 sec  4.98 MBytes  &#039;&#039;&#039;2.49 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=190.682 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=90.929 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=93.045 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 90.929/124.885/190.682/46.533 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 59898 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.8 sec  5.12 MBytes  &#039;&#039;&#039;2.55 Mbits/sec&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4665</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4665"/>
		<updated>2009-05-28T13:06:29Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Throughput tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following network throughput tests was performed between Meraka and each one of the remote sites. The measurement tool used for the benchmarks is iperf&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms &lt;br /&gt;
  &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.1 sec  7.62 MBytes  &#039;&#039;&#039;3.97 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=55.760 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=25.314 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=23.425 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 23.425/34.833/55.760/14.818 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 60571 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.5 sec  6.22 MBytes  &#039;&#039;&#039;3.17 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=82.330 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=39.529 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=42.279 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 39.529/54.713/82.330/19.561 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  3] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  3]  0.0-16.5 sec  6.19 MBytes  &#039;&#039;&#039;3.15 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=24.918 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=11.442 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=10.283 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 10.283/15.548/24.918/6.643 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-15.8 sec  9.01 MBytes  &#039;&#039;&#039;4.77 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=79.477 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=36.974 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=37.003 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 36.974/51.151/79.477/20.029 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 49707 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.3 sec  6.91 MBytes  &#039;&#039;&#039;3.56 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
&lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 0 packets received, 100.0% packet loss&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 60826 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-16.7 sec  4.93 MBytes  &#039;&#039;&#039;2.48 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=140.747 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=71.639 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=68.055 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 68.055/93.480/140.747/33.455 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.8 sec  4.67 MBytes  &#039;&#039;&#039;2.33 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=147.200 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=76.803 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=73.115 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 73.115/99.039/147.200/34.088 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.7 sec  5.00 MBytes  &#039;&#039;&#039;2.51 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=221.202 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=105.278 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=106.097 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 105.278/144.192/221.202/54.455 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.8 sec  4.98 MBytes  &#039;&#039;&#039;2.49 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=190.682 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=90.929 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=93.045 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 90.929/124.885/190.682/46.533 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 59898 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.8 sec  5.12 MBytes  &#039;&#039;&#039;2.55 Mbits/sec&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4664</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4664"/>
		<updated>2009-05-28T13:03:19Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Motorola Backbone */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following benchmarks are for network throughputs between Meraka and each one of the remote sites. The measurement tool that was uses is iperf&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms &lt;br /&gt;
  &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.1 sec  7.62 MBytes  &#039;&#039;&#039;3.97 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=55.760 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=25.314 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=23.425 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 23.425/34.833/55.760/14.818 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 60571 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.5 sec  6.22 MBytes  &#039;&#039;&#039;3.17 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=82.330 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=39.529 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=42.279 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 39.529/54.713/82.330/19.561 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  3] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  3]  0.0-16.5 sec  6.19 MBytes  &#039;&#039;&#039;3.15 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=24.918 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=11.442 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=10.283 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 10.283/15.548/24.918/6.643 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-15.8 sec  9.01 MBytes  &#039;&#039;&#039;4.77 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=79.477 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=36.974 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=37.003 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 36.974/51.151/79.477/20.029 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 49707 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.3 sec  6.91 MBytes  &#039;&#039;&#039;3.56 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
&lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 0 packets received, 100.0% packet loss&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 60826 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-16.7 sec  4.93 MBytes  &#039;&#039;&#039;2.48 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=140.747 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=71.639 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=68.055 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 68.055/93.480/140.747/33.455 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.8 sec  4.67 MBytes  &#039;&#039;&#039;2.33 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=147.200 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=76.803 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=73.115 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 73.115/99.039/147.200/34.088 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.7 sec  5.00 MBytes  &#039;&#039;&#039;2.51 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=221.202 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=105.278 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=106.097 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 105.278/144.192/221.202/54.455 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.8 sec  4.98 MBytes  &#039;&#039;&#039;2.49 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=190.682 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=90.929 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=93.045 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 90.929/124.885/190.682/46.533 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 59898 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.8 sec  5.12 MBytes  &#039;&#039;&#039;2.55 Mbits/sec&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4663</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4663"/>
		<updated>2009-05-28T12:59:59Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Mbuzini (May 27 10:00) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini. See picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following benchmarks are for network throughputs between Meraka and each one of the remote sites. The measurement tool that was uses is iperf&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms &lt;br /&gt;
  &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.1 sec  7.62 MBytes  &#039;&#039;&#039;3.97 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=55.760 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=25.314 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=23.425 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 23.425/34.833/55.760/14.818 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 60571 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.5 sec  6.22 MBytes  &#039;&#039;&#039;3.17 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=82.330 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=39.529 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=42.279 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 39.529/54.713/82.330/19.561 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  3] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  3]  0.0-16.5 sec  6.19 MBytes  &#039;&#039;&#039;3.15 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=24.918 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=11.442 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=10.283 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 10.283/15.548/24.918/6.643 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-15.8 sec  9.01 MBytes  &#039;&#039;&#039;4.77 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=79.477 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=36.974 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=37.003 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 36.974/51.151/79.477/20.029 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 49707 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.3 sec  6.91 MBytes  &#039;&#039;&#039;3.56 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
&lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 0 packets received, 100.0% packet loss&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 60826 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-16.7 sec  4.93 MBytes  &#039;&#039;&#039;2.48 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=140.747 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=71.639 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=68.055 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 68.055/93.480/140.747/33.455 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.8 sec  4.67 MBytes  &#039;&#039;&#039;2.33 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=147.200 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=76.803 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=73.115 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 73.115/99.039/147.200/34.088 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.7 sec  5.00 MBytes  &#039;&#039;&#039;2.51 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=221.202 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=105.278 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=106.097 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 105.278/144.192/221.202/54.455 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.8 sec  4.98 MBytes  &#039;&#039;&#039;2.49 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=190.682 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=90.929 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=93.045 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 90.929/124.885/190.682/46.533 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 59898 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.8 sec  5.12 MBytes  &#039;&#039;&#039;2.55 Mbits/sec&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4662</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4662"/>
		<updated>2009-05-28T12:59:10Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Lamomahsa (May 27 07:50) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini. See picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following benchmarks are for network throughputs between Meraka and each one of the remote sites. The measurement tool that was uses is iperf&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms &lt;br /&gt;
  &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.1 sec  7.62 MBytes  &#039;&#039;&#039;3.97 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=55.760 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=25.314 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=23.425 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 23.425/34.833/55.760/14.818 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 60571 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.5 sec  6.22 MBytes  &#039;&#039;&#039;3.17 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=82.330 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=39.529 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=42.279 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 39.529/54.713/82.330/19.561 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  3] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  3]  0.0-16.5 sec  6.19 MBytes  &#039;&#039;&#039;3.15 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=24.918 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=11.442 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=10.283 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 10.283/15.548/24.918/6.643 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-15.8 sec  9.01 MBytes  &#039;&#039;&#039;4.77 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=79.477 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=36.974 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=37.003 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 36.974/51.151/79.477/20.029 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 49707 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.3 sec  6.91 MBytes  &#039;&#039;&#039;3.56 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
&lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 0 packets received, 100.0% packet loss&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 60826 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-16.7 sec  4.93 MBytes  &#039;&#039;&#039;2.48 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=140.747 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=71.639 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=68.055 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 68.055/93.480/140.747/33.455 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.8 sec  4.67 MBytes  &#039;&#039;&#039;2.33 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=147.200 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=76.803 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=73.115 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 73.115/99.039/147.200/34.088 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.7 sec  5.00 MBytes  &#039;&#039;&#039;2.51 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=221.202 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=105.278 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=106.097 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 105.278/144.192/221.202/54.455 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.8 sec  4.98 MBytes  &#039;&#039;&#039;2.49 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4661</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4661"/>
		<updated>2009-05-28T12:58:23Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Mariepskop (May 26 13:36) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini. See picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following benchmarks are for network throughputs between Meraka and each one of the remote sites. The measurement tool that was uses is iperf&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms &lt;br /&gt;
  &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.1 sec  7.62 MBytes  &#039;&#039;&#039;3.97 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=55.760 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=25.314 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=23.425 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 23.425/34.833/55.760/14.818 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 60571 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.5 sec  6.22 MBytes  &#039;&#039;&#039;3.17 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=82.330 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=39.529 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=42.279 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 39.529/54.713/82.330/19.561 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  3] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  3]  0.0-16.5 sec  6.19 MBytes  &#039;&#039;&#039;3.15 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=24.918 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=11.442 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=10.283 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 10.283/15.548/24.918/6.643 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-15.8 sec  9.01 MBytes  &#039;&#039;&#039;4.77 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=79.477 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=36.974 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=37.003 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 36.974/51.151/79.477/20.029 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 49707 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.3 sec  6.91 MBytes  &#039;&#039;&#039;3.56 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
&lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 0 packets received, 100.0% packet loss&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 60826 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-16.7 sec  4.93 MBytes  &#039;&#039;&#039;2.48 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=140.747 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=71.639 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=68.055 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 68.055/93.480/140.747/33.455 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.8 sec  4.67 MBytes  &#039;&#039;&#039;2.33 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=147.200 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=76.803 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=73.115 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 73.115/99.039/147.200/34.088 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.7 sec  5.00 MBytes  &#039;&#039;&#039;2.51 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4660</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4660"/>
		<updated>2009-05-28T12:58:00Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Mariepskop (May 26 13:36) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini. See picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following benchmarks are for network throughputs between Meraka and each one of the remote sites. The measurement tool that was uses is iperf&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms &lt;br /&gt;
  &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.1 sec  7.62 MBytes  &#039;&#039;&#039;3.97 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=55.760 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=25.314 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=23.425 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 23.425/34.833/55.760/14.818 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 60571 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.5 sec  6.22 MBytes  &#039;&#039;&#039;3.17 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=82.330 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=39.529 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=42.279 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 39.529/54.713/82.330/19.561 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  3] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  3]  0.0-16.5 sec  6.19 MBytes  &#039;&#039;&#039;3.15 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=24.918 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=11.442 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=10.283 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 10.283/15.548/24.918/6.643 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-15.8 sec  9.01 MBytes  &#039;&#039;&#039;4.77 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=79.477 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=36.974 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=37.003 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 36.974/51.151/79.477/20.029 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 49707 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.3 sec  6.91 MBytes  &#039;&#039;&#039;3.56 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
&lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 0 packets received, 100.0% packet loss&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 60826 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-16.7 sec  4.93 MBytes  &#039;&#039;&#039;2.48 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=140.747 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=71.639 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=68.055 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 68.055/93.480/140.747/33.455 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.8 sec  4.67 MBytes  &#039;&#039;&#039;2.33 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=147.200 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=76.803 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=73.115 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 73.115/99.039/147.200/34.088 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.7 sec  5.00 MBytes  2.51 Mbits/sec&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4659</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4659"/>
		<updated>2009-05-28T12:57:21Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Kiepersol (May 26 11:28) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini. See picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following benchmarks are for network throughputs between Meraka and each one of the remote sites. The measurement tool that was uses is iperf&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms &lt;br /&gt;
  &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.1 sec  7.62 MBytes  &#039;&#039;&#039;3.97 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=55.760 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=25.314 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=23.425 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 23.425/34.833/55.760/14.818 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 60571 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.5 sec  6.22 MBytes  &#039;&#039;&#039;3.17 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=82.330 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=39.529 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=42.279 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 39.529/54.713/82.330/19.561 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  3] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  3]  0.0-16.5 sec  6.19 MBytes  &#039;&#039;&#039;3.15 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=24.918 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=11.442 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=10.283 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 10.283/15.548/24.918/6.643 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-15.8 sec  9.01 MBytes  &#039;&#039;&#039;4.77 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=79.477 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=36.974 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=37.003 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 36.974/51.151/79.477/20.029 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 49707 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.3 sec  6.91 MBytes  &#039;&#039;&#039;3.56 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
&lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 0 packets received, 100.0% packet loss&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 60826 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-16.7 sec  4.93 MBytes  &#039;&#039;&#039;2.48 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=140.747 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=71.639 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=68.055 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 68.055/93.480/140.747/33.455 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.8 sec  4.67 MBytes  &#039;&#039;&#039;2.33 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4658</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4658"/>
		<updated>2009-05-28T12:57:05Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Kiepersol (May 26 11:28) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini. See picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following benchmarks are for network throughputs between Meraka and each one of the remote sites. The measurement tool that was uses is iperf&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms &lt;br /&gt;
  &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.1 sec  7.62 MBytes  &#039;&#039;&#039;3.97 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=55.760 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=25.314 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=23.425 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 23.425/34.833/55.760/14.818 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 60571 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.5 sec  6.22 MBytes  &#039;&#039;&#039;3.17 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=82.330 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=39.529 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=42.279 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 39.529/54.713/82.330/19.561 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  3] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  3]  0.0-16.5 sec  6.19 MBytes  &#039;&#039;&#039;3.15 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=24.918 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=11.442 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=10.283 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 10.283/15.548/24.918/6.643 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-15.8 sec  9.01 MBytes  &#039;&#039;&#039;4.77 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=79.477 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=36.974 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=37.003 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 36.974/51.151/79.477/20.029 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 49707 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.3 sec  6.91 MBytes  &#039;&#039;&#039;3.56 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
&lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 0 packets received, 100.0% packet loss&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 60826 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-16.7 sec  4.93 MBytes  &#039;&#039;&#039;2.48 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=140.747 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=71.639 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=68.055 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 68.055/93.480/140.747/33.455 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.8 sec  4.67 MBytes  2.33 Mbits/sec&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4657</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4657"/>
		<updated>2009-05-28T12:56:10Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Mauschberg (May 26 09:29) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini. See picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following benchmarks are for network throughputs between Meraka and each one of the remote sites. The measurement tool that was uses is iperf&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms &lt;br /&gt;
  &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.1 sec  7.62 MBytes  &#039;&#039;&#039;3.97 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=55.760 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=25.314 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=23.425 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 23.425/34.833/55.760/14.818 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 60571 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.5 sec  6.22 MBytes  &#039;&#039;&#039;3.17 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=82.330 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=39.529 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=42.279 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 39.529/54.713/82.330/19.561 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  3] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  3]  0.0-16.5 sec  6.19 MBytes  &#039;&#039;&#039;3.15 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=24.918 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=11.442 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=10.283 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 10.283/15.548/24.918/6.643 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-15.8 sec  9.01 MBytes  &#039;&#039;&#039;4.77 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=79.477 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=36.974 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=37.003 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 36.974/51.151/79.477/20.029 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 49707 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.3 sec  6.91 MBytes  &#039;&#039;&#039;3.56 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
&lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 0 packets received, 100.0% packet loss&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 60826 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-16.7 sec  4.93 MBytes  &#039;&#039;&#039;2.48 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4656</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4656"/>
		<updated>2009-05-28T12:54:30Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Dullstroom (May 26 08:08) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini. See picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following benchmarks are for network throughputs between Meraka and each one of the remote sites. The measurement tool that was uses is iperf&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms &lt;br /&gt;
  &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.1 sec  7.62 MBytes  &#039;&#039;&#039;3.97 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=55.760 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=25.314 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=23.425 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 23.425/34.833/55.760/14.818 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 60571 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.5 sec  6.22 MBytes  &#039;&#039;&#039;3.17 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=82.330 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=39.529 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=42.279 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 39.529/54.713/82.330/19.561 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  3] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  3]  0.0-16.5 sec  6.19 MBytes  &#039;&#039;&#039;3.15 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=24.918 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=11.442 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=10.283 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 10.283/15.548/24.918/6.643 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-15.8 sec  9.01 MBytes  &#039;&#039;&#039;4.77 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=79.477 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=36.974 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=37.003 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 36.974/51.151/79.477/20.029 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 49707 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.3 sec  6.91 MBytes  &#039;&#039;&#039;3.56 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4655</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4655"/>
		<updated>2009-05-28T12:53:41Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Garangkuva (May 22 10:29) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini. See picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following benchmarks are for network throughputs between Meraka and each one of the remote sites. The measurement tool that was uses is iperf&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms &lt;br /&gt;
  &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.1 sec  7.62 MBytes  &#039;&#039;&#039;3.97 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=55.760 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=25.314 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=23.425 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 23.425/34.833/55.760/14.818 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 60571 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.5 sec  6.22 MBytes  &#039;&#039;&#039;3.17 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=82.330 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=39.529 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=42.279 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 39.529/54.713/82.330/19.561 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  3] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  3]  0.0-16.5 sec  6.19 MBytes  &#039;&#039;&#039;3.15 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=24.918 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=11.442 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=10.283 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 10.283/15.548/24.918/6.643 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  4] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  4]  0.0-15.8 sec  9.01 MBytes  &#039;&#039;&#039;4.77 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4654</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4654"/>
		<updated>2009-05-28T12:52:33Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Renosterkop (May 21 09:34) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini. See picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following benchmarks are for network throughputs between Meraka and each one of the remote sites. The measurement tool that was uses is iperf&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms &lt;br /&gt;
  &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.1 sec  7.62 MBytes  &#039;&#039;&#039;3.97 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=55.760 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=25.314 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=23.425 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 23.425/34.833/55.760/14.818 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 60571 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.5 sec  6.22 MBytes  &#039;&#039;&#039;3.17 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=82.330 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=39.529 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=42.279 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 39.529/54.713/82.330/19.561 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  3] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  3]  0.0-16.5 sec  6.19 MBytes  &#039;&#039;&#039;3.15 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4653</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4653"/>
		<updated>2009-05-28T12:52:15Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Duhva (May 21 16:49) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini. See picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following benchmarks are for network throughputs between Meraka and each one of the remote sites. The measurement tool that was uses is iperf&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms &lt;br /&gt;
  &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
 &lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.1 sec  7.62 MBytes  &#039;&#039;&#039;3.97 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=55.760 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=25.314 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=23.425 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 23.425/34.833/55.760/14.818 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 60571 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.5 sec  6.22 MBytes  &#039;&#039;&#039;3.17 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=82.330 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=39.529 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=42.279 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 39.529/54.713/82.330/19.561 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  3] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  3]  0.0-16.5 sec  6.19 MBytes  &#039;&#039;&#039;3.15 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4652</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4652"/>
		<updated>2009-05-28T12:51:06Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Lammerskop (May 21 13:37) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini. See picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following benchmarks are for network throughputs between Meraka and each one of the remote sites. The measurement tool that was uses is iperf&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms &lt;br /&gt;
  &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
 &lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.1 sec  7.62 MBytes  &#039;&#039;&#039;3.97 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=55.760 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=25.314 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=23.425 ms&lt;br /&gt;
 &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 23.425/34.833/55.760/14.818 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 60571 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.5 sec  6.22 MBytes  &#039;&#039;&#039;3.17 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4651</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4651"/>
		<updated>2009-05-28T12:50:35Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Renosterkop (May 21 09:34) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini. See picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following benchmarks are for network throughputs between Meraka and each one of the remote sites. The measurement tool that was uses is iperf&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms &lt;br /&gt;
  &lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
 &lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.1 sec  7.62 MBytes  &#039;&#039;&#039;3.97 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
&lt;br /&gt;
PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=55.760 ms&lt;br /&gt;
64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=25.314 ms&lt;br /&gt;
64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=23.425 ms&lt;br /&gt;
&lt;br /&gt;
--- 192.168.10.254 ping statistics ---&lt;br /&gt;
3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
round-trip min/avg/max/stddev = 23.425/34.833/55.760/14.818 ms&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
Server listening on TCP port 5001&lt;br /&gt;
TCP window size: 64.0 KByte (default)&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
TCP window size: 32.5 KByte (default)&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
[  5] local 192.168.10.222 port 60571 connected with 192.168.10.254 port 5001&lt;br /&gt;
[ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
[  5]  0.0-16.5 sec  6.22 MBytes  3.17 Mbits/sec&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4650</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4650"/>
		<updated>2009-05-28T12:50:17Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Renosterkop (May 21 09:34) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini. See picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following benchmarks are for network throughputs between Meraka and each one of the remote sites. The measurement tool that was uses is iperf&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms &lt;br /&gt;
  --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
 &lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.1 sec  7.62 MBytes  &#039;&#039;&#039;3.97 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
&lt;br /&gt;
PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=55.760 ms&lt;br /&gt;
64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=25.314 ms&lt;br /&gt;
64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=23.425 ms&lt;br /&gt;
&lt;br /&gt;
--- 192.168.10.254 ping statistics ---&lt;br /&gt;
3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
round-trip min/avg/max/stddev = 23.425/34.833/55.760/14.818 ms&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
Server listening on TCP port 5001&lt;br /&gt;
TCP window size: 64.0 KByte (default)&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
TCP window size: 32.5 KByte (default)&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
[  5] local 192.168.10.222 port 60571 connected with 192.168.10.254 port 5001&lt;br /&gt;
[ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
[  5]  0.0-16.5 sec  6.22 MBytes  3.17 Mbits/sec&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4649</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4649"/>
		<updated>2009-05-28T12:49:27Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Renosterkop (May 21 09:34) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini. See picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following benchmarks are for network throughputs between Meraka and each one of the remote sites. The measurement tool that was uses is iperf&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
&lt;br /&gt;
 PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
 64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms &lt;br /&gt;
&lt;br /&gt;
 --- 192.168.10.254 ping statistics ---&lt;br /&gt;
 3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
 round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Server listening on TCP port 5001&lt;br /&gt;
 TCP window size: 64.0 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
 TCP window size: 32.5 KByte (default)&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 [  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
 [ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
 [  5]  0.0-16.1 sec  7.62 MBytes  &#039;&#039;&#039;3.97 Mbits/sec&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
&lt;br /&gt;
PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=55.760 ms&lt;br /&gt;
64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=25.314 ms&lt;br /&gt;
64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=23.425 ms&lt;br /&gt;
&lt;br /&gt;
--- 192.168.10.254 ping statistics ---&lt;br /&gt;
3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
round-trip min/avg/max/stddev = 23.425/34.833/55.760/14.818 ms&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
Server listening on TCP port 5001&lt;br /&gt;
TCP window size: 64.0 KByte (default)&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
TCP window size: 32.5 KByte (default)&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
[  5] local 192.168.10.222 port 60571 connected with 192.168.10.254 port 5001&lt;br /&gt;
[ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
[  5]  0.0-16.5 sec  6.22 MBytes  3.17 Mbits/sec&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4648</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4648"/>
		<updated>2009-05-28T12:48:09Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Lammerskop (May 21 13:37) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini. See picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following benchmarks are for network throughputs between Meraka and each one of the remote sites. The measurement tool that was uses is iperf&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
&lt;br /&gt;
PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms&lt;br /&gt;
&lt;br /&gt;
--- 192.168.10.254 ping statistics ---&lt;br /&gt;
3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
Server listening on TCP port 5001&lt;br /&gt;
TCP window size: 64.0 KByte (default)&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
TCP window size: 32.5 KByte (default)&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
[  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
[ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
[  5]  0.0-16.1 sec  7.62 MBytes  3.97 Mbits/sec&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
&lt;br /&gt;
PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=55.760 ms&lt;br /&gt;
64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=25.314 ms&lt;br /&gt;
64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=23.425 ms&lt;br /&gt;
&lt;br /&gt;
--- 192.168.10.254 ping statistics ---&lt;br /&gt;
3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
round-trip min/avg/max/stddev = 23.425/34.833/55.760/14.818 ms&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
Server listening on TCP port 5001&lt;br /&gt;
TCP window size: 64.0 KByte (default)&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
TCP window size: 32.5 KByte (default)&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
[  5] local 192.168.10.222 port 60571 connected with 192.168.10.254 port 5001&lt;br /&gt;
[ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
[  5]  0.0-16.5 sec  6.22 MBytes  3.17 Mbits/sec&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4647</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4647"/>
		<updated>2009-05-28T12:45:31Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Renosterkop (May 21 09:34) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini. See picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following benchmarks are for network throughputs between Meraka and each one of the remote sites. The measurement tool that was uses is iperf&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
&lt;br /&gt;
PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms&lt;br /&gt;
&lt;br /&gt;
--- 192.168.10.254 ping statistics ---&lt;br /&gt;
3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
Server listening on TCP port 5001&lt;br /&gt;
TCP window size: 64.0 KByte (default)&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
TCP window size: 32.5 KByte (default)&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
[  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
[ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
[  5]  0.0-16.1 sec  7.62 MBytes  3.97 Mbits/sec&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4646</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4646"/>
		<updated>2009-05-28T11:03:59Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Motorola Backbone */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network build with Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini. See picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;br /&gt;
&lt;br /&gt;
The following benchmarks are for network throughputs between Meraka and each one of the remote sites. The measurement tool that was uses is iperf&lt;br /&gt;
&lt;br /&gt;
=== Renosterkop (May 21 09:34) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
PING 192.168.10.254 (192.168.10.254): 56 data bytes&lt;br /&gt;
64 bytes from 192.168.10.254: icmp_seq=0 ttl=64 time=40.677 ms&lt;br /&gt;
64 bytes from 192.168.10.254: icmp_seq=1 ttl=64 time=19.507 ms&lt;br /&gt;
64 bytes from 192.168.10.254: icmp_seq=2 ttl=64 time=19.293 ms&lt;br /&gt;
&lt;br /&gt;
--- 192.168.10.254 ping statistics ---&lt;br /&gt;
3 packets transmitted, 3 packets received, 0.0% packet loss&lt;br /&gt;
round-trip min/avg/max/stddev = 19.293/26.492/40.677/10.030 ms&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
Server listening on TCP port 5001&lt;br /&gt;
TCP window size: 64.0 KByte (default)&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
Client connecting to 192.168.10.254, TCP port 5001&lt;br /&gt;
TCP window size: 32.5 KByte (default)&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
[  5] local 192.168.10.222 port 61471 connected with 192.168.10.254 port 5001&lt;br /&gt;
[ ID] Interval       Transfer     Bandwidth&lt;br /&gt;
[  5]  0.0-16.1 sec  7.62 MBytes  3.97 Mbits/sec&lt;br /&gt;
&lt;br /&gt;
=== Lammerskop (May 21 13:37) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
=== Duhva (May 21 16:49) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
=== Garangkuva (May 22 10:29) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
=== Dullstroom (May 26 08:08) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mauschberg (May 26 09:29) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kiepersol (May 26 11:28) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mariepskop (May 26 13:36) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lamomahsa (May 27 07:50) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mbuzini (May 27 10:00) ===&lt;br /&gt;
Meraka:&lt;br /&gt;
&lt;br /&gt;
Remote:&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4638</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4638"/>
		<updated>2009-05-25T14:15:37Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Motorola Backbone */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network, build by Motorola, using Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini. See picture:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4637</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4637"/>
		<updated>2009-05-25T08:16:29Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Motorola Backbone */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network, build by Motorola, using Motorola cannopy equipment.&lt;br /&gt;
The network starts at Meraka and goes right up-to Mariepskop and then down to Mbuzini. See picture:&lt;br /&gt;
&lt;br /&gt;
[[Image:Backbone2.png]]&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4636</id>
		<title>APEX backbone</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=APEX_backbone&amp;diff=4636"/>
		<updated>2009-05-25T08:14:58Z</updated>

		<summary type="html">&lt;p&gt;JHugo: New page: == Motorola Backbone ==  The Motorola backbone is a wireless network, build by Motorola, using Motorola cannopy equipment.  Image:Backbone2.png  === Throughput tests ===&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motorola Backbone ==&lt;br /&gt;
&lt;br /&gt;
The Motorola backbone is a wireless network, build by Motorola, using Motorola cannopy equipment.&lt;br /&gt;
&lt;br /&gt;
Image:Backbone2.png&lt;br /&gt;
&lt;br /&gt;
=== Throughput tests ===&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=File:Backbone2.png&amp;diff=4635</id>
		<title>File:Backbone2.png</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=File:Backbone2.png&amp;diff=4635"/>
		<updated>2009-05-25T08:09:56Z</updated>

		<summary type="html">&lt;p&gt;JHugo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=Johann%27s_Research&amp;diff=4634</id>
		<title>Johann&#039;s Research</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=Johann%27s_Research&amp;diff=4634"/>
		<updated>2009-05-25T07:56:52Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* HPN design discussions page */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Development Team Research Pages]][[Category: Johann&#039;s Research Pages]]&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure if my stuff is really research, but this is some of the stuff that I&#039;m busy with:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[High performance node page]] ==&lt;br /&gt;
&lt;br /&gt;
== [[HPN design discussions page]] ==&lt;br /&gt;
&lt;br /&gt;
== [[APEX backbone]] ==&lt;br /&gt;
&lt;br /&gt;
== [[Installing cacti on FreeBSD]] ==&lt;br /&gt;
&lt;br /&gt;
== [[Community wireless networks ]] ==&lt;br /&gt;
&lt;br /&gt;
== [[EeePC and FreeBSD page]] ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Meraka wireless Network]] ==&lt;br /&gt;
&lt;br /&gt;
== [[VOIP page]] ==&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4633</id>
		<title>High performance node page</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4633"/>
		<updated>2009-05-21T13:47:19Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Behaviour of a normal node in a mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Development Team Research Pages]][[Category: Johann&#039;s Research Pages]][[Category: High Performance Node]]&lt;br /&gt;
&lt;br /&gt;
== What is a HPN (high performance node) ? ==&lt;br /&gt;
&lt;br /&gt;
The HPN is a multi-radio (3x radios), high performance, wireless (802.11) router. It has three antennas, one 5.8Ghz directional panel antenna as well as two omni&#039;s (2.4Ghz + 5.8Ghz). At the bottom of the router there is a weather proof UTP connector that is used for both Power-Over-Ethernet (PoE) and Ethernet connectivity to the router. A special mounting bracket at the back of the router allows it to be attached to an aluminum pole that is usually mounted to the side of a building or some structure.&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN.png]]&lt;br /&gt;
&lt;br /&gt;
== How to build a mesh with HPN&#039;s ==&lt;br /&gt;
The idea is to build a mesh network with these routers by aligning each directional antennas to point to a neighboring omni or another directional antenna. The wireless cards in a router operates on different channels (frequencies). To make it more user friendly each channel (frequencies) is tied to a color. This means that a red panel antenna must be aligned to a red omni (or another red panel) and a green panel must be aligned to a green omni (or green panel). The blue channel (2.4Ghz) is used to create a wifi hostspot for clients who would like to connect to the mesh network via wifi.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mesh-Network.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every mesh network usually have one GateWay that connects to the Internet or to some other network. Any one of the mesh nodes can be configured to become a GateWay for the mesh. When a node becomes a GateWay then the channels (frequencies) of the antennas are fixed  to the following: 5.8Ghz directional panel = RED, 5.8Ghz omni = GREEN and the 2.4Ghz omni = BLUE. The GateWay node will also become the DNS server for the mesh and all the nodes inside the mesh will register their HostNames with the DNS server. Another function of the GateWay node is to act as a time server for the mesh network and all the nodes inside the mesh will synchronize their time with the GateWay node. &lt;br /&gt;
&lt;br /&gt;
The best approach to build a mesh network is to start with the installation of the GateWay node. Next you install the node(s) that aligns to the GateWay node and then grow the mesh from there. Fist perform a visual alignment of the panel antenna on the node before the power is switched on. When a normal node starts up for the first time, then it will hunt for a mesh signal and it will lock it&#039;s channels (frequencies) once connectivity is established. It will first hunt for connectivity on both the red and green channels on the directional panel antenna for X seconds. If no signal is found, then the hunt will continue on the 5.8Ghz omni directional antenna for X seconds. This sequence will repeat itself until a signal is found, or until the channels are manually locked via the web interface on the node itself. &lt;br /&gt;
&lt;br /&gt;
Every node has a GREEN and a RED LED that is visible from underneath the node (should be visible when one stands under the node that is mounted on a pole). These LEDs are there to give some indication of connectivity and they will only turn on if connectivity can be established on either the red or green channel. Note that the LED does not show the signal quality or to what node it is connected to, it only shows that there is connectivity to another HPN node and on what channel (red or green). Signal quality and node connectivity information is only available via the web interface, but in most cases a visual alignment combined with a link indicator will be sufficient enough to get a mesh node up and running.&lt;br /&gt;
&lt;br /&gt;
== How can a client connect to the mesh ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Hpn-switch-pc.png]]&lt;br /&gt;
&lt;br /&gt;
Client devices can connect to any of the nodes via Ethernet or via wifi (blue channel = hostspot). The client devices should be configured to make use of DHCP so that all networking configurations can be done automatically (The node will provide all the networking details via DHCP). It is also recommended that the IPv6 protocol stack should be switch on if it is available. IPv6 should already be enabled on Windows Vista as well as most Unix systems.&lt;br /&gt;
&lt;br /&gt;
== How does the mesh work ? ==&lt;br /&gt;
&lt;br /&gt;
Almost everything in the network will be configured automatically, except for the selection of the gateway node and the channel (red or green) of a wireless link. The mesh supports both IPv6 and IPv4 traffic from any end-point (a place where a mesh client connects) to any other end-point in the mesh, while the backbone uses IPv6 only. A routing protocol called OLSR (Optimized Link State Routing) is used to exchange routing information between all the nodes inside the mesh and to select the best path for data traffic between end-points in the mesh.&lt;br /&gt;
&lt;br /&gt;
[[Image:OLSR.png]]&lt;br /&gt;
&lt;br /&gt;
Lets take an example (see diagram) where HP want to send data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv6 ====&lt;br /&gt;
HP will address the data to the IPv6 address of Dell and send it to node C. Node C will look in it&#039;s routing table and see that there are two routes to Dell, one route via node B-A-D-E and the other route via D-E. It will then select the best route and send it to the next node, in our case node D. Node D will look in it&#039;s routing table and see that the only route to Dell is via node E. Node E will look at it&#039;s routing table and see that Dell is directly connected and it will forward the data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv4 ====&lt;br /&gt;
This one is a bit more complicated. IPv4 is only used on the outside of the network (where the mesh clients connect to it) and then the IPv4 traffic is tunneled over the IPv6 backbone of the mesh to any another end point in the mesh. The mesh will automatically create a one-to-many IPv4 tunnel over the IPv6 network (4over6 tunneling protocol). This means that it looks like a network with an IPv4 tunnel from every IPv4 subnet to every other IPv4 subnet in the mesh. From a client&#039;s perspective it looks like a normal IPv4 routed network. From the backbone&#039;s perspective it looks like a IPv6 only network and all the OLSR routing information is IPv6 only. &lt;br /&gt;
&lt;br /&gt;
So how does the network know how to forward IPv4 packets to the correct destination ? It makes use of IPv4-mapped-IPv6 addresses (see [http://tools.ietf.org/html/rfc4291#section-2.5.5 RFC4291] and [http://tools.ietf.org/html/rfc4038 RFC4038]). Every node will map an IPv4 addresses into a IPv6 address before data goes to the backbone and the IPv4-Mapped-IPv6 addresses are converted back to a plain IPv4 address when it comes out of the backbone. OLSR will advertise these IPv4-Mapped-IPv6 address subnets on the backbone so that all the nodes will learn these subnets and they will calculate the best route to these subnets.&lt;br /&gt;
&lt;br /&gt;
Lets take example again, using IPv4. HP will address the data to the IPv4 address of Dell and send it to node C. Node C will change the IPv4 packet to an IPv6 packet with an IPv4-mapped-IPv6 addresses. From there it will follow the same route as the IPv6 example above. Node E will take the original IPv4 packet out of the IPv4-mapped-IPv6 packet and it will send the original IPv4 packet to Dell.&lt;br /&gt;
&lt;br /&gt;
See http://wirelessafrica.meraka.org.za/wiki/index.php/John%27s_research#4over6_Automatic_tunnels for more detail of the 4over6 tunneling protocol.&lt;br /&gt;
&lt;br /&gt;
=== Why is the mesh using IPv6 ? ===&lt;br /&gt;
&lt;br /&gt;
==== Reason one ====&lt;br /&gt;
It is predicted that unused IPv4 address space will be depleted within the next two years. Operating systems like Vista and most Unix systems defaults to IPv6 by default and most applications are IPv6 ready. With this in mind it makes sense that any new networking products should provide both IPv4 and IPv6 support.&lt;br /&gt;
&lt;br /&gt;
==== Reason two ====&lt;br /&gt;
In a single radio mesh network there is just one RF channel and everybody makes use of the same IP subnet. One limitation of a single radio mesh is that each mesh radio needs to handle both incoming and outgoing traffic. This causes the throughput to be halved because a radio cannot transmit and receive simultaneously. Another problem is that if one radio is transmitting then all its neighbors must all be in listening mode. These problems can cause a single radio mesh to very quickly run out of steam.&lt;br /&gt;
&lt;br /&gt;
Multi-radio mesh technology solves this problem by configuring every radio inside a router to operate on a different frequency and on a different IP subnet. In the HPN two radios are dedicated for backbone traffic and the third is used to create a client hotspot. 802.11a is generally used for backbone traffic, and 802.11b/g for client coverage. &lt;br /&gt;
&lt;br /&gt;
In a multi-radio mesh network it is very difficult to use the same IPv4 subnet on all the backbone wireless interfaces inside a mesh. The OLSR routing protocol uses broadcast packets to flood OLSR routing information to all of it&#039;s neighbors. This works very well with a single radio mesh, but not with a multi-radio mesh. Almost all TCP/IP (IPv4) stacks implementations can only send out broadcast packets on one interface at a time, but not on multiple interfaces on the same IPv4 subnet. This means that every interface needs to operate on a different IPv4 subnet, with the effect that some OLSR links may be physically possible, but it cannot be used for data because the IPv4 subnets are different. A multi-radio IPv4 OLSR network is possible, but it usually needs a lot of planning and configuration.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv4-Network.png]]&lt;br /&gt;
&lt;br /&gt;
The TCP/IP stack of IPv6 does not make use of Broadcast packets and OLSR routing information is flooded to it&#039;s neighbors via multicast packets. These multicast packets will automatically be duplicated by the TCP/IP stack and send out via multiple IPv6 interfaces on the same IPv6 subnet. This means that the mesh can use the same IPv6 subnet, all over the mesh backbone, without any problems. With a multi-radio IPv6 OLSR mesh you don&#039;t need any IPv6 configuration on the backbone as all the nodes use the same IPv6 subnet.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv6-Network.png]]&lt;br /&gt;
&lt;br /&gt;
== Behaviour of a normal node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
The following describes how a normal node will behave inside a mesh and what service it will provide:&lt;br /&gt;
&lt;br /&gt;
* Each HPN node is equipped with two 5.8Ghz wifi adapters and antennas (panel and omni) that is used to build the backbone. Each one of these adapters is configured to operate on a specific wifi frequency that is also tied to a specific wifi channel. In order to make our HPN more user friendly we decided to assign these two channels to the colours &amp;quot;red&amp;quot; and &amp;quot;green&amp;quot;. The HPN node then inherit what ever colour is assigned to the directional panel antenna on the front. &lt;br /&gt;
&lt;br /&gt;
This means that when the &amp;quot;green&amp;quot; channel is configured on the panel antenna, then the &amp;quot;red&amp;quot; is used on the omni and we will refer to the HPN node as a GREEN node. If the &amp;quot;red&amp;quot; channel is used on the panel, then we talk about a RED node and the &amp;quot;green channel is used on the omni. The default setting for a new node is to be a GREEN node and it can be changed to a RED node via the web interface.&lt;br /&gt;
&lt;br /&gt;
When a new node boots up for the fist time, then it will go into a hunting mode and it will search for other nodes in the mesh. There are lots of possible different ways to do this hunting. We decided to implement a very simple and easy algorithm until someone gets &#039;n new bright ideas. The following paragraphs describes our current implementation of our hunting procedure with our [[Initial (old) hunting description]] here.&lt;br /&gt;
&lt;br /&gt;
A HPN node will always start to search for connectivity on the panel antenna, fist on the same colour as the node, and then on the other colour. If no connectivity can be found, then it will hunt on the omni-directional antenna, first on opposite colour as the node, and then on the same colour. This sequence will repeat itself, until connectivity can be found to another node in the network. At this time the channels will be locked the colour of the node will be the same as the colour used on the panel antenna. This setting will stay the same, even across a reboot or power failure, until someone overrides it via the web interface.&lt;br /&gt;
&lt;br /&gt;
Lets take a new GREEN node for a example. When it boots up for the first time then it will come up in the hunting mode. It will first configure the patch antenna on the &amp;quot;green&amp;quot; channel. Then it will perform a link local IPv6 ping on that interface for about 3 seconds to determine if any IPv6 connectivity can be found on that antenna/channel. If no connectivity is found after 3 seconds, then it will hunt further using the &amp;quot;red&amp;quot; channel on the patch, then &amp;quot;red&amp;quot; on the omni and then &amp;quot;green&amp;quot; on the omni.&lt;br /&gt;
&lt;br /&gt;
If no connectivity can be found, then it will start the hunting process from the beginning again, or until it is manually locked via the WEB interface. If connectivity can be established, then it will lock the node with the current settings. It will also enable the green/red link LED on the bottom of the node to show connectivity on that channel (The WEB interface can be used to get more information of which node connectivity has been established to). If connectivity is lost then the LED will turn off again. &lt;br /&gt;
&lt;br /&gt;
See hunt-flow-diagram below.&lt;br /&gt;
&lt;br /&gt;
[[Image:Hunt-flow2.png]]&lt;br /&gt;
&lt;br /&gt;
Note that this hunting procedure does not always end up in the best routing solution and it is not a replacement for common sense. &lt;br /&gt;
&lt;br /&gt;
Future improvements:&lt;br /&gt;
 - In scenarios where connectivity is possible to another node, on both the panel and omni, &lt;br /&gt;
 then our current algorithm will always select the panel, even if the omni may be a better choice.&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up then an unique IPv6 address ((inside this mesh. See IP addressing section) will be configured on all the Ethernet and wireless interfaces. An unique (inside this mesh) IPv4 address is calculated and configured on the Ethernet interface and on the 2.4Ghz omni interface. The node will use the MAC address of the adapter to calculate a unique IPv4 and IPv6 subnet for that interface. These automatic addresses can be override via the WEB interface (E.g. if a globally routeable IPv6 address is required for a website inside the mesh and it should be visible from the Internet). Wireless interfaces are placed into adhoc mode and the channel, ssid and bssid are also configured.&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up then the OLSR daemon is started and it will listen en send OLSR topology packets to all of it&#039;s neighboring nodes. OLSR runs on all the wireless interfaces, but not on the Ethernet interface. All the IPv4 subnets are converted to 4in6 IPv6 addresses and these IPv6 subnets are placed into the HNA section of olsrd.conf, together with the IPv6 subnets that are configured on the Ethernet interface and on the 2.4Ghz omni interface. These HNA subnets are then distributed, via OLSR, to all the other nodes inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The 4over6 tunneling daemon take care of all IPv4 comms and distributing of routing information inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The node will start ntpd daemon on provide NTP time services on all it&#039;s IPv4 and IPv6 addresses. NTP will also synchronize it&#039;s local time with the GW-node on a regular basis.&lt;br /&gt;
&lt;br /&gt;
* The node will register it&#039;s own hostname in DNS on the GW-node. It will start dnsmasq daemon and it will also provide DNS services on all it&#039;s IPv4 and IPv6 addresses. Dnsmasq will forward all DNS queries to the DNS server running on the GW-node.&lt;br /&gt;
&lt;br /&gt;
* Dnsmasq is used to provide IPv4 DHCP services and DNS services on both the Ethernet interface and on the 2.4Ghz omni (hostspot) interface.&lt;br /&gt;
&lt;br /&gt;
* rtadvd will run on both the Ethernet interface and on the 2.4Ghz omni interface and it is used to advertise IPv6 prefixes to locally connected IPv6 client devices.&lt;br /&gt;
&lt;br /&gt;
* sshd allows remote ssh login&#039;s from anywhere in the mesh network.&lt;br /&gt;
&lt;br /&gt;
* watchdog toggles the watchdog during normal operations. Should the system hang for some reason, then the watchdog will restart the HPN node.&lt;br /&gt;
&lt;br /&gt;
* mini_httpd is used for the WEB gui running on the HPN node.&lt;br /&gt;
&lt;br /&gt;
== Behavior of the GateWay node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
Any standard mesh node can become a GateWay node by selecting the &amp;quot;GateWay&amp;quot; button under &amp;quot;Additional features&amp;quot; on the WEB interface. The GateWay node is the place where the mesh will connect to some outside network and it will be the default route for the mesh. When a normal node becomes a GateWay node, then it does not disable any normal node features, but it just adds some additional features. The following are the additional features that a GateWay node will have:&lt;br /&gt;
&lt;br /&gt;
* The GW-node will not go into a hunting mode and it will lock it&#039;s channels with GREEN on the omni and RED on the directional panel. The default channels can be swapped via the WEB interface.&lt;br /&gt;
&lt;br /&gt;
* The GW-node is the default route for the mesh and it will advertise a default route via OLSR to the rest of the mesh.&lt;br /&gt;
&lt;br /&gt;
* The GW-node connects to the outside networks via Ethernet. It will perform a DHCP request on this interface in order to get an automatic IP address and external DNS server configurations from the external network. These setting can be overided via the WEB interface, under &amp;quot;Additional features&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes the DNS server for the mesh and it will configure and start the &#039;named&#039; services on IPv6, as well as on a well known IPv6 address of fec0:0:0:ffff::1. It will allow any node inside a mesh to submit their hostname into DNS and it will provide DNS services to any node or other device inside the mesh on IPv6 only. The GateWay node will also forward external DNS requests to upstream DNS servers if they are available. Upstream DNS servers are usually configured via DHCP but these setting can also be overided under &amp;quot;Additional features&amp;quot; on the WEB interface. DNS services are still available via &#039;dnsmasq&#039;, on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a time server for the mesh. It will synchronize it&#039;s time to an external time server if it&#039;s configured and available, otherwise it will use it&#039;s own internal RTC to synchronize it&#039;s time to. This time will be available to the rest of the mesh on a well known IPv6 address of fec0:0:0:ffff::1 and all the nodes in a mesh will use this time to synchronize their own time servers to. The GW-node will still provide NTP time services on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a firmware update server for the mesh. It will start ftpd services on IPv6, on a well known IPv6 address of fec0:0:0:ffff::1. It will took for new firmware on the Internet. If new firmware is available, then it will download the software and make it available to the other nodes inside the mesh via ftp.&lt;br /&gt;
&lt;br /&gt;
== IPv4 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
IPv4 addresses are not used in the backbone, but only on the edge of the network. This means that every node will have two IPv4 subnets configured, one on the Ethernet adapter (npe0) and the other on the 2.4Ghz omni (ath2) that is used for a wifi hotspot. The High performance node will always use the first IPv4 address on a configured subnet. E.g 10.234.18.1/24&lt;br /&gt;
&lt;br /&gt;
The HPN currently makes use of an automatic IPv4 addressing scheme where the IPv4 subnet is derived from the two least significant bytes of the MAC address of that particular interface. The first bye of the network is always 10 because we are making use of the 10net inside the mesh. The next two byes comes from the last two byes of the Mac address and it will become the IPv4 subnet for that adapter. The adapter itself will be 10.x.x.1 and it will become the default gateway for that subnet. DNSmasq will hand out DHCP addresses form 10.x.x.100 - 10.x.x.199 on the calculated subnet.&lt;br /&gt;
&lt;br /&gt;
 Mac = 00:d0:12:07:cb:73&lt;br /&gt;
 cb.73 (hex) = 203.115 (decimal)&lt;br /&gt;
 IP subnet  = 10.203.115 with /24 subnet mask&lt;br /&gt;
 IP address = 10.203.115.1&lt;br /&gt;
 DHCP = 10.203.115.100-10.203.115.199&lt;br /&gt;
&lt;br /&gt;
This addressing scheme will work 99% of the time, but it is not failsafe. Subnet clashes may occur due to the MAC address numbering schemes used by different vendors. MAC addresses usually have a vendor portion (first part of address) and a product/sequent number portion (last part). The last part is the part that is used to generate an IPv4 address. The last two bytes will most probably, at some stage, be that same for two different cards from two different vendors and there may be a very small chance for both of these cards end up in the same mesh network. In this case the automatic address can be overridden manually in rc.conf.local. At this stage there is no build in detection system that will handle Mac address clashes.&lt;br /&gt;
&lt;br /&gt;
Other addressing schemes to consider:&lt;br /&gt;
* Manage and assign all IPv4 addresses centrally. Program addresses into the HPN&#039;s during the manufacturing process. This will sort out all IPv4 address clashes. Issues - Do you assign a IPv4 address block per community or just sequential per HPN node?&lt;br /&gt;
* Manage a block of IPv4 addresses for each community somewhere on the local mesh. HPN nodes can then request an IPv4 addresses from this repository and use it. Issues - what happens if server is down or during a power failure. Will you get a new IPv4 address every time, simular to what you get with ADSL. This will mean that all the the PC&#039;s and devices that received DHCP addresses from DNSmasq will have to change as well. &lt;br /&gt;
&lt;br /&gt;
Issues that may influence the selection of an addressing scheme:&lt;br /&gt;
* Should there be IPv4 connectivity between different mesh networks ?&lt;br /&gt;
* Should there be IPv4 connectivity between a network inside a mesh and some other place in the Internet ?&lt;br /&gt;
* Should someone upstream device be able to initiate a connection into a mesh network (E.g. web server in mesh). ?&lt;br /&gt;
* Should we make use of legal (routeable) IPv4 address space, or should we stick to the 10net.&lt;br /&gt;
* Should the network be able to build and exchange IPv4 routing information with other networks.&lt;br /&gt;
* Routing information can be simplified if sequential IPv4 addresses are managed centrally and allocated per mesh&lt;br /&gt;
* Should the addressing scheme survive a power cycle or load shedding inside a community&lt;br /&gt;
* Is the WISP going to do NAT ?&lt;br /&gt;
&lt;br /&gt;
== IPv6 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
All the HPN nodes supports end-to-end IPv6 communications over the mesh. IPv6 only needs a network prefix (IPv6 subnet) for every adapter and the protocol stack will work out the IPv6 address for each interface. &lt;br /&gt;
&lt;br /&gt;
Our mesh is making use of a private Unique Local Addresses (ULAs) space, described in [http://www.rfc-editor.org/rfc/rfc4193.txt RFC4193]. This address space in similar to the 10net in IPv4, but with the difference that each ULA is globally unique. This means that we can calculate our own network prefix that we use in a mesh. This leaves the option to use the same prefix for all the different mesh networks, or we can use an unique prefix for every mesh. A unique prefix for every mesh may have an routing advantage if we need to connect different mesh networks together in future, but it also means that HPN&#039;s should be pre-configured with a prefix that is tied to a specific community and the prefix allocations should be managed centrally.&lt;br /&gt;
&lt;br /&gt;
Note that private Unique Local IPv6 addresses are not globally routable, but only inside our mesh. If we need globally routable IPv6 addresses then we need to apply for Provider Independent IPv6 address space from Afrinic. These addresses is uosually someting that is given to some network provider (owner of the network) and it will have a yearly fee attached to it. Issues - it is not always clear who the owner of a communit mesh is.&lt;br /&gt;
&lt;br /&gt;
The best sollution may be to use a combination of both addressing schemes. Use ULA addresses all over the mesh and only use leagal IPv6 addresses where devices needs to be availble on the Internet.&lt;br /&gt;
&lt;br /&gt;
== WEB interface ==&lt;br /&gt;
At the moment there is no WEB GUI for the HPN. This is an suggestion of how the GUI should look like. The idea is to keep it simple as possible with as little as possible that can be changed.&lt;br /&gt;
&lt;br /&gt;
=== WEB Gui main page ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-hunt-html.png|border|300px]][[Image:HPN-green-html.png|border|300px]][[Image:HPN-red-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
The default setting for a HPN is to come up in the hunting mode. After a successful hunt, the HPN will lock to either a red or green node and it will keep the setting, even during power failures. The menu will show the current state of a HPN, but it will also allow you to override the current mode by selecting red, green or hunting manually. Changes are only allowed after a valid login.&lt;br /&gt;
&lt;br /&gt;
The bar graph will give some indication of signal strength to other nodes on both the red and green channel. Note that there can be a link to more than one node on a given channel (red or green). The indicator on the main page will only show the signal to the first node that it links with. A more detailed view is available on the align page under the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
The last thing that can be changed from the main menu is the name of the HPN. This name will also be registered into the mesh DNS. All changes will only take effect after selecting the SUBMIT button. Additional features can be reached via the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
=== More features ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-features-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
==== Configure / Align / Stats ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-configure-html.png|border|300px]][[Image:HPN-align-html.png|border|300px]][[Image:HPN-stats-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
&lt;br /&gt;
[[High_Performance_Node_-_Specification]]&lt;br /&gt;
&lt;br /&gt;
== Upgrades ==&lt;br /&gt;
All the HPN nodes in a mesh will look for new firmware updates from the GateWay node on a regular basis. New firmware is placed inside a special directory on the GateWay node and it is made available, via ftp, to all the other HPN nodes in the mesh. Each HPN nodes will compare the firmware from this directory with it&#039;s current version of firmware to determine if it&#039;s newer. If new firmware is available, then the node will download and untar the new firmware onto a spare partition on the flash disk. After that all the custom configurations are copied over to the new partition. The HPN will then change the active partition to the new one and it will reboot with the new firmware. If someting should go wrong with the upgrade, then the HPN will revert back to the previous version of firmware.&lt;br /&gt;
&lt;br /&gt;
The GateWay node will look for new firmware somewhere on the Internet or from the WISP box. If available it will download the new firmware and place it into the special ftp directory.&lt;br /&gt;
&lt;br /&gt;
== Typical Outdoor Range at 5.8Ghz ==&lt;br /&gt;
At this stage we haven&#039;t found a testing site that is suitable for our tests. The following is just gestimates and it still needs to be tested.&lt;br /&gt;
&lt;br /&gt;
* Omni to Omni: up to xx km (2km?)&lt;br /&gt;
* Panel to Omni: up to xx km (5km?)&lt;br /&gt;
* Panel to Panel: up to xx km (10km?)&lt;br /&gt;
* External to External: more than xx km (20km?), depending on antenna type&lt;br /&gt;
&lt;br /&gt;
Now for some test results:&lt;br /&gt;
For our first test we selected a friendly site for the panel-to-panel test. We selected Anita&#039;s home because she is just over 10km from Meraka and there is a clear line of site between both sites (this is also our longest 11a link so far). Another reason is that we already have a 32bBi directional antenna, from an existing installation on Meraka&#039;s roof, that is pointing directly to her home. &lt;br /&gt;
&lt;br /&gt;
We used one of our new routers for this site, but we replaced the 5.8Ghz omni antenna with a 27dBi grid antenna so that we could have one link to login to the router, while we can do some tests on the second antenna.&lt;br /&gt;
&lt;br /&gt;
Here is a picture of Anita&#039;s husband with the router the he installed on their roof.&lt;br /&gt;
&lt;br /&gt;
[[Image:001.jpg|border|300px]][[Image:002.jpg|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Regulatory ==&lt;br /&gt;
Wirelss equipment that operate in the ISM bands do not need an spectrum licence, but they need to be ICASA approved. All the wifi adapters inside the HPN nodes are ICASA approved. From recent media reports regarding DABBA communications and there equipent in the Orange Farm area, it seems like our HPN node needs to get ICASA approval for the complete assembled HPN node as well. Every node should have it&#039;s own ICASA sticker on the back.&lt;br /&gt;
&lt;br /&gt;
== Using WEP/WPA in adhoc mode ==&lt;br /&gt;
&lt;br /&gt;
One of the requirements of the High Performance Node is to have WEP or WPA enabled between the wireless links of the mesh nodes. This is one of the functionalities that we would like to sort out before we install any of the nodes in the field. It&#039;s very difficult to change the encryption mode after an installation because the mesh nodes will lose connectivity if one node is upgraded to use WEP, while another is still using older software without WEP.&lt;br /&gt;
&lt;br /&gt;
WEP and WPA are both methods to enable the encryption of data that it is send over the air. WEP (Wired equivalence privacy) is an older standard and it makes use of a WEP encryption engine while the newer WPA standard added the use of an AES encryption engine. WEP encryption has some security flaws embedded into the protocol and there are several tools available on the Internet that can crack WEP keys. These tools are more effective with the cracking of 64bit WEP keys than with 128bit keys and they require a large amount of captured data and processing power to crack a key. Note that not all WEP keys can be cracked, but only weak keys and that flaw was addressed and fixed by WPA.&lt;br /&gt;
&lt;br /&gt;
Wireless adapters on Unix Systems can operate in three different modes: Client, Hostap (Access Point) and Adhoc mode. Most of the implementations of wireless (802.11) networks are based on a model where there is one Access Point with several wireless clients attached to to it. &lt;br /&gt;
&lt;br /&gt;
[[Image:AP-client.png|center|One Access point with many nodes]]&lt;br /&gt;
 &lt;br /&gt;
Wireless Mesh networks make use of the less tested Adhoc mode of 802.11.&lt;br /&gt;
&lt;br /&gt;
[[Image:Adhoc.png|center|Many nodes using Adhoc mode (many point to point links)]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
WEP and WPA requires a couple of kld&#039;s to be loaded before they can be configured. The following kld&#039;s should be added to loader.conf&lt;br /&gt;
wlan_acl_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_amrr_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_ccmp_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_tkip_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_wep_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_xauth_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== WEP ====&lt;br /&gt;
Enable and test WEP in Adhoc mode on the HPN.&lt;br /&gt;
WEP makes use of a single PSK that needs to be configured on all the wireless nodes. Any node or wireless device that is configured with this PSK will have the capability to crypt and decrypt these wireless packets. There are two methods to configure WEP in FreeBSD. You can use either  use ifconfig directly or you can make use of the WPA supplicant utility.&lt;br /&gt;
&lt;br /&gt;
ifconfig e.g.&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0 10.10.1.2/24 wep deftxkey 1 wepkey 128bitwepison&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0&lt;br /&gt;
 ath0: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; metric 0 mtu 1500&lt;br /&gt;
        ether 00:80:48:50:9e:69&lt;br /&gt;
        inet6 fe80::280:48ff:fe50:9e69%ath0 prefixlen 64 scopeid 0x1&lt;br /&gt;
        inet6 fd9c:6829:597c:20:280:48ff:fe50:9e69 prefixlen 64&lt;br /&gt;
        inet6 fd9c:6829:597c:20:: prefixlen 64 anycast&lt;br /&gt;
        inet 10.10.1.2 netmask 0xffffff00 broadcast 10.10.1.255&lt;br /&gt;
        media: IEEE 802.11 Wireless Ethernet autoselect mode 11g &amp;lt;adhoc&amp;gt;&lt;br /&gt;
        status: associated&lt;br /&gt;
        ssid ptamesh channel 13 (2472 Mhz 11g) bssid 56:e5:be:30:14:5a&lt;br /&gt;
        authmode OPEN privacy ON deftxkey 1 wepkey 1:104-bit txpower 31.5&lt;br /&gt;
        scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi11g 7&lt;br /&gt;
        roam:rate11g 5 protmode CTS burst&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Enable WEP on three mesh nodes and test connectivity.&lt;br /&gt;
 mesh-9e69:~ # ping6 ff02::1%ath0&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9e69%ath0, icmp_seq=87 hlim=64 time=2.122 ms&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9ddd%ath0, icmp_seq=87 hlim=64 time=5.625 ms(DUP!)&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9a44%ath0, icmp_seq=87 hlim=64 time=32.358 ms(DUP!)&lt;br /&gt;
&lt;br /&gt;
Everything seems to work fine (as expeted) with WEP enabled in the mesh.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WPA&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WPA was designed to work in an environment where you have one AP and several clients and not for Adhoc (mesh) networks. On the AP you have the Authenticator software and on the client you have the supplicant software. This means that if one would like to use WPA to it&#039;s full then every mesh node needs to be an Authenticator for all the other nodes it can see, as well as a supplicant for every node it can see. According to the WPA design document http://wirelessafrica.meraka.org.za/wiki/images/3/39/Wpa_supplicant-devel-04.pdf one can use WPA in Adhoc mode only in a static way with PSK&#039;s:&lt;br /&gt;
 IEEE 802.11 operation mode (Infrastucture/IBSS).&lt;br /&gt;
 0 = infrastructure (Managed) mode, i.e., associate with an AP.&lt;br /&gt;
 1 = IBSS (ad-hoc, peer-to-peer)&lt;br /&gt;
 Note: IBSS can only be used with key_mgmt NONE (plaintext and static WEP) and key_mgmt=WPA-&lt;br /&gt;
 NONE (ﬁxed group key TKIP/CCMP). In addition, ap_scan has to be set to 2 for IBSS. WPA-None requires&lt;br /&gt;
 following network block options: proto=WPA, key_mgmt=WPA-NONE, pairwise=NONE, group=TKIP&lt;br /&gt;
 (or CCMP, but not both), and psk must also be set (either directly or using ASCII passphrase).&lt;br /&gt;
&lt;br /&gt;
This is methods is very similar to the way that WEP is being used. This means the the only advantage of using WPA over WEP is that one can make use of the AES encryption engine that comes with WPA. Please note that with this mode of WPA and with WEP that anyone can decrypt the data being send over the air if they get hold of the mesh-wide PSK that is configured on every node in the network. If security is of importance them end users should consider the use of point-to-point security mechanisms like VPN&#039;s.&lt;br /&gt;
&lt;br /&gt;
The configuration of WPA is not supported in command line mode, but only with the wpa_supplicant software. This is an example of a wpa_supplicant.conf file to enable WPA in Adhoc mode:&lt;br /&gt;
&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 #&lt;br /&gt;
 network={&lt;br /&gt;
   ssid=&amp;quot;ptamesh&amp;quot;&lt;br /&gt;
 # Channel  13 : 2472  Mhz 11g&lt;br /&gt;
   frequency=2472&lt;br /&gt;
   mode=1&lt;br /&gt;
   proto=WPA&lt;br /&gt;
   key_mgmt=WPA-NONE&lt;br /&gt;
   pairwise=NONE&lt;br /&gt;
   group=TKIP&lt;br /&gt;
   psk=&amp;quot;mesh-ipv6&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To start the WPA software during boot-up one needs to add WPA to the ifconfig line in rc.conf. E.g.&lt;br /&gt;
&lt;br /&gt;
 ifconfig_ath0=&amp;quot;WPA 10.10.1.1/24 mode 11g mediaopt adhoc channel 13 ssid ptamesh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Unfortunately WPA did not work as easy as WEP, so it&#039;s off to debugging.&lt;br /&gt;
&lt;br /&gt;
Starting wpa_supplicant in the foreground with debugging enabled. E.g&lt;br /&gt;
&lt;br /&gt;
 wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
&lt;br /&gt;
The debugging output shows that something happens that initiates a wlan scan operation, while the card is in Adhoc mode. This should not happen and wpa_supplicant software never completes the configuration due to this error.&lt;br /&gt;
&lt;br /&gt;
 mesh-9ddd:~ # wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
 Initializing interface &#039;ath0&#039; conf &#039;/etc/wpa_supplicant.conf&#039; driver &#039;default&#039; &lt;br /&gt;
 ctrl_interface &#039;N/A&#039; bridge &#039;N/A&#039;&lt;br /&gt;
 Configuration file &#039;/etc/wpa_supplicant.conf&#039; -&amp;gt; &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 Reading configuration file &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 Priority group 0&lt;br /&gt;
   id=0 ssid=&#039;ptamesh&#039;&lt;br /&gt;
 Initializing interface (2) &#039;ath0&#039;&lt;br /&gt;
 EAPOL: SUPP_PAE entering state DISCONNECTED&lt;br /&gt;
 EAPOL: KEY_RX entering state NO_KEY_RECEIVE&lt;br /&gt;
 EAPOL: SUPP_BE entering state INITIALIZE&lt;br /&gt;
 EAP: EAP entering state DISABLED&lt;br /&gt;
 EAPOL: External notification - portEnabled=0&lt;br /&gt;
 EAPOL: External notification - portValid=0&lt;br /&gt;
 Own MAC address: 00:80:48:50:9d:dd&lt;br /&gt;
 wpa_driver_bsd_set_wpa: enabled=1&lt;br /&gt;
 wpa_driver_bsd_set_wpa_internal: wpa=3 privacy=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=0&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=2&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=3&lt;br /&gt;
 wpa_driver_bsd_set_countermeasures: enabled=0&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 Setting scan request: 0 sec 100000 usec&lt;br /&gt;
 Added interface ath0&lt;br /&gt;
 State: DISCONNECTED -&amp;gt; SCANNING&lt;br /&gt;
 Trying to associate with SSID &#039;ptamesh&#039;&lt;br /&gt;
 Cancelling scan request&lt;br /&gt;
 WPA: clearing own WPA/RSN IE&lt;br /&gt;
 Automatic auth_alg selection: 0x1&lt;br /&gt;
 wpa_driver_bsd_set_auth_alg alg 0x1 authmode 1&lt;br /&gt;
 WPA: No WPA/RSN IE available from association info&lt;br /&gt;
 WPA: Set cipher suites based on configuration&lt;br /&gt;
 WPA: Selected cipher suites: group 8 pairwise 1 key_mgmt 16 proto 1&lt;br /&gt;
 WPA: clearing AP WPA IE&lt;br /&gt;
 WPA: clearing AP RSN IE&lt;br /&gt;
 WPA: using GTK TKIP&lt;br /&gt;
 WPA: using PTK NONE&lt;br /&gt;
 WPA: using KEY_MGMT WPA-NONE&lt;br /&gt;
 WPA: Set own WPA IE default - hexdump(len=24): dd 16 00 50 f2 01 01 00 00 50 &lt;br /&gt;
 f2 02 01 00 00 50 f2 00 01 00 00 50 f2 00&lt;br /&gt;
 No keys have been configured - skip key clearing&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 State: SCANNING -&amp;gt; ASSOCIATING&lt;br /&gt;
 wpa_driver_bsd_associate: ssid &#039;ptamesh&#039; wpa ie len 24 pairwise 0 group 2 key &lt;br /&gt;
 mgmt 4&lt;br /&gt;
 ioctl[SIOCS80211, op 22, len 24]: Invalid argument&lt;br /&gt;
 Association request to the driver failed&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 Cancelling authentication timeout&lt;br /&gt;
 State: ASSOCIATING -&amp;gt; COMPLETED&lt;br /&gt;
 CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (auth) [id=-1 &lt;br /&gt;
 id_str=]&lt;br /&gt;
 EAPOL: External notification - portControl=ForceAuthorized&lt;br /&gt;
&lt;br /&gt;
Next was to install fresh copy of the FreeBSD src code onto my PC. I found the wpa_supplicant source code under /usr/src/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c Build a new driver from source code and run it on a router. After that I&#039;ve added in a lot of printf statements to trace how the driver works and to locate the code that puts the wifi card in scanning mode. In the end I found out that wpa_supplicant driver did not put the card in scanning mode, but it somehow caused the 802.11 stack to start the scanning. Unfortunately I don&#039;t know enough about the 802.11 code in FreeBSD to do any mode debugging. I&#039;ve send a mail about the problem to one of the FreeBSD mailing lists and the originator of most of the 802.11 code in FreeBSD (Sam Leffler) said I must log a problem report. So I logged a problem report with FreeBSD and now we have to wait and see if someone to take responsibility to fix this problem. More information on the problem report can be found at: http://www.freebsd.org/cgi/query-pr.cgi?pr=126822&lt;br /&gt;
&lt;br /&gt;
For now I recommend that we make use of WEP instead of WPA in our implementation as it is working and there isn&#039;t such a big advantage in using WPA over WEP in this mode except for the encryption algorithm that changes from WEP to AES.&lt;br /&gt;
&lt;br /&gt;
== Antenna calculations ==&lt;br /&gt;
&lt;br /&gt;
Every HP-node has two 5.15-5.6 GHz antennas. The one as a build in patch antenna and the other is an 5.1-5.8 GHz omni-directional antenna. The idea is that the patch antenna of a node will either be aligned to the omni or the patch antenna of another node. The following calculations is to get an feeling of what distances should be possible between these antennas.&lt;br /&gt;
&lt;br /&gt;
South African Wifi channels:&lt;br /&gt;
 Channel   1 : 2412  Mhz 11g          Channel  48 : 5240  Mhz 11a&lt;br /&gt;
 Channel   2 : 2417  Mhz 11g          Channel  52 : 5260* Mhz 11a&lt;br /&gt;
 Channel   3 : 2422  Mhz 11g          Channel  56 : 5280* Mhz 11a&lt;br /&gt;
 Channel   4 : 2427  Mhz 11g          Channel  60 : 5300* Mhz 11a&lt;br /&gt;
 Channel   5 : 2432  Mhz 11g          Channel  64 : 5320* Mhz 11a&lt;br /&gt;
 Channel   6 : 2437  Mhz 11g          Channel 100 : 5500* Mhz 11a&lt;br /&gt;
 Channel   7 : 2442  Mhz 11g          Channel 104 : 5520* Mhz 11a&lt;br /&gt;
 Channel   8 : 2447  Mhz 11g          Channel 108 : 5540* Mhz 11a&lt;br /&gt;
 Channel   9 : 2452  Mhz 11g          Channel 112 : 5560* Mhz 11a&lt;br /&gt;
 Channel  10 : 2457  Mhz 11g          Channel 116 : 5580* Mhz 11a&lt;br /&gt;
 Channel  11 : 2462  Mhz 11g          Channel 120 : 5600* Mhz 11a&lt;br /&gt;
 Channel  12 : 2467  Mhz 11g          Channel 124 : 5620* Mhz 11a&lt;br /&gt;
 Channel  13 : 2472  Mhz 11g          Channel 128 : 5640* Mhz 11a&lt;br /&gt;
 Channel  36 : 5180  Mhz 11a          Channel 132 : 5660* Mhz 11a&lt;br /&gt;
 Channel  40 : 5200  Mhz 11a          Channel 136 : 5680* Mhz 11a&lt;br /&gt;
 Channel  44 : 5220  Mhz 11a          Channel 140 : 5700* Mhz 11a&lt;br /&gt;
&lt;br /&gt;
HP-Node detailed specs: http://wirelessafrica.meraka.org.za/wiki/images/0/07/WLAN-A0033.pdf&lt;br /&gt;
&lt;br /&gt;
Pigtail detail specs: http://wirelessafrica.meraka.org.za/wiki/images/0/0a/Ca178_cable_assemblies_datasheet.pdf&lt;br /&gt;
&lt;br /&gt;
Wireless adapter detail specs: http://wirelessafrica.meraka.org.za/wiki/images/2/21/Wlm54sag23.pdf&lt;br /&gt;
&lt;br /&gt;
OR the Mikrotik version of the same adapter called a R52H (also manufactured by Compex, but usually cheaper)&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:R52H.pdf&lt;br /&gt;
&lt;br /&gt;
Another popular adapter is the DCMA-82 from Wistron. They have better RX sensitivity, but lower output power and they are a bit more expensive than the Compex cards. In some of the discussions that I&#039;ve seen they state that the DCMA-82 has much cleaner output power, better RX sensitivity, and a lower failure rate/quality issues than Compex&#039;s cards.&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:DCMA-82.pdf&lt;br /&gt;
&lt;br /&gt;
Node specs summary:&lt;br /&gt;
 Patch antenna            - 21-23 dBi,   16 deg H,  11 deg V, 5.15 -5.6 GHz&lt;br /&gt;
 5Ghz Omni antenna        - 8-11 dBi,    360 deg H, 10 deg V, 5.1 - 5.85 GHz&lt;br /&gt;
 2.4Ghz Omni antenna      - 7.5-8.5 dBi, 360 deg H, 12 deg V, 2.4 - 2.5 GHz&lt;br /&gt;
 30mm U.FL-SMA pigtail    - RG178 cable insertion loss, 2.4 GHZ = -1.1dB, 5.6 GHz = -2dB&lt;br /&gt;
 Compex WLM54AG23 adapter - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            23dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
                            17dBm @ 54Mbps&lt;br /&gt;
 Mikrotik (Compex) R52H   - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            24dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
 Wistron DCMA-82          - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -82 dBm @ 36Mbps&lt;br /&gt;
                            -72 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            22.5dBm @ 6-24Mbps&lt;br /&gt;
                            21.5dBm @ 36Mbps&lt;br /&gt;
                            18dBm @ 48Mbps&lt;br /&gt;
&lt;br /&gt;
I could not find any receive sensitivity info for ranges between 6Mbps and 54Mbps for the WLM54AG23. The closest I could find was the specs of another manufacturer card, using the same Atheros chipset as the WLM54AG23. Here is the receive sensitivity info for a WMIA-166AG Dual-Band miniPCI module (802.11a/g)&lt;br /&gt;
Nominal Temp Range:&lt;br /&gt;
  6Mbps 10-5 BER @ -90 dBm, typical&lt;br /&gt;
  9Mbps 10-5 BER @ -89 dBm, typical&lt;br /&gt;
 12Mbps 10-5 BER @ -88 dBm, typical&lt;br /&gt;
 18Mbps 10-5 BER @ -86 dBm, typical&lt;br /&gt;
 24Mbps 10-5 BER @ -82 dBm, typical&lt;br /&gt;
 36Mbps 10-5 BER @ -78 dBm, typical&lt;br /&gt;
 48Mbps 10-5 BER @ -72 dBm, typical&lt;br /&gt;
 54Mbps 10-5 BER @ -68 dBm, typical &lt;br /&gt;
&lt;br /&gt;
The WLM54AG23 is not the best wifi adapter in the market, but it gives a good compromise between price vs performance. If one need to push the limits of a specific link then I would probable select the SR5 from Ubiquity. They have excellent TX power and RX sensitivity.&lt;br /&gt;
 &lt;br /&gt;
There are lots of wifi/antenna/distance calculators available on the WEB. Most of these calculators cannot calculate the max distance for a link, you have to specify the distance and it will calculate you dBm margin. Links to a couple of Wifi/antenna/distance calculators:&lt;br /&gt;
&lt;br /&gt;
 http://www.radiolabs.com/stations/wifi_calc.html&lt;br /&gt;
 http://www.zytrax.com/tech/wireless/calc.htm&lt;br /&gt;
 http://www.widgetbox.com/widget/wifi-link-calculator&lt;br /&gt;
 http://www.wifiextreme.com.au/index.php?main_page=page_5&lt;br /&gt;
 http://www.rflinx.com/help/calculations&lt;br /&gt;
 http://www.olotwireless.net/castella/radio.htm&lt;br /&gt;
&lt;br /&gt;
Here are some formulas use to calculate a link budget:&lt;br /&gt;
  Free space loss = 36.56 + 20Log10(Frequency) + 20Log10(Dist in miles)&lt;br /&gt;
  mW to dBm = 10Log10(milliWatts) + 30&lt;br /&gt;
  dBm to mW = 10(dBm/10)&lt;br /&gt;
  RX Power = Margin - RX sensitivity&lt;br /&gt;
  Theoretical margin = TX power budget + RX power budget - free space loss&lt;br /&gt;
  SAD factor = Theoretical margin/TX power budget * 100 and shows the percentage of spare power on transmission.&lt;br /&gt;
&lt;br /&gt;
(Free Space Loss) = 92.5 + (20 Log fequency) + (20 log km distance)&lt;br /&gt;
&lt;br /&gt;
Free space loss @ 5400GHz:&lt;br /&gt;
 1km = -107.07dB      11km = -128.028dB&lt;br /&gt;
 2km = -113.09dB      12km = -128.784dB&lt;br /&gt;
 3km = -116.61dB      13km = -129.479dB&lt;br /&gt;
 4km = -119.11dB      14km = -130.123dB&lt;br /&gt;
 5km = -121.05dB      15km = -130.722dB&lt;br /&gt;
 6km = -122.63dB      16km = -131.282dB&lt;br /&gt;
 7km = -123.97dB      17km = -131.809dB&lt;br /&gt;
 8km = -125.13dB      18km = -132.305dB&lt;br /&gt;
 9km = -126.15dB      19km = -132.775dB&lt;br /&gt;
 10km = -127.07dB     20km = -133.221dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPNode with a 5Ghz patch to omni link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Omni: &lt;br /&gt;
 Min link distance @ 54Mbps 0.9km:              Max link distance @ 54Mbps 1.55km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -106dB                      Free space loss = -111dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 6.9km:              Max link distance @ 24Mbps 12.3km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 34km free space  = -124dB                      Free space loss = -129dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 17km:                Max link distance @ 6Mbps 30.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 34km free space  = -132dB                      Free space loss = -137dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPnodes with a 5Ghz patch to patch link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Patch:&lt;br /&gt;
 Min link distance @ 54Mbps 3.9km:              Max link distance @ 54Mbps 6km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -119dB                      Free space loss = -123dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 30.9km:             Max link distance @ 24Mbps 38.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 Free space loss  = -137dB                      Free space loss = -139dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 77.6km:              Max link distance @ 6Mbps 123km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 Free space loss  = -145dB                      Free space loss = -149dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4632</id>
		<title>High performance node page</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4632"/>
		<updated>2009-05-21T13:46:29Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Behaviour of a normal node in a mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Development Team Research Pages]][[Category: Johann&#039;s Research Pages]][[Category: High Performance Node]]&lt;br /&gt;
&lt;br /&gt;
== What is a HPN (high performance node) ? ==&lt;br /&gt;
&lt;br /&gt;
The HPN is a multi-radio (3x radios), high performance, wireless (802.11) router. It has three antennas, one 5.8Ghz directional panel antenna as well as two omni&#039;s (2.4Ghz + 5.8Ghz). At the bottom of the router there is a weather proof UTP connector that is used for both Power-Over-Ethernet (PoE) and Ethernet connectivity to the router. A special mounting bracket at the back of the router allows it to be attached to an aluminum pole that is usually mounted to the side of a building or some structure.&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN.png]]&lt;br /&gt;
&lt;br /&gt;
== How to build a mesh with HPN&#039;s ==&lt;br /&gt;
The idea is to build a mesh network with these routers by aligning each directional antennas to point to a neighboring omni or another directional antenna. The wireless cards in a router operates on different channels (frequencies). To make it more user friendly each channel (frequencies) is tied to a color. This means that a red panel antenna must be aligned to a red omni (or another red panel) and a green panel must be aligned to a green omni (or green panel). The blue channel (2.4Ghz) is used to create a wifi hostspot for clients who would like to connect to the mesh network via wifi.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mesh-Network.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every mesh network usually have one GateWay that connects to the Internet or to some other network. Any one of the mesh nodes can be configured to become a GateWay for the mesh. When a node becomes a GateWay then the channels (frequencies) of the antennas are fixed  to the following: 5.8Ghz directional panel = RED, 5.8Ghz omni = GREEN and the 2.4Ghz omni = BLUE. The GateWay node will also become the DNS server for the mesh and all the nodes inside the mesh will register their HostNames with the DNS server. Another function of the GateWay node is to act as a time server for the mesh network and all the nodes inside the mesh will synchronize their time with the GateWay node. &lt;br /&gt;
&lt;br /&gt;
The best approach to build a mesh network is to start with the installation of the GateWay node. Next you install the node(s) that aligns to the GateWay node and then grow the mesh from there. Fist perform a visual alignment of the panel antenna on the node before the power is switched on. When a normal node starts up for the first time, then it will hunt for a mesh signal and it will lock it&#039;s channels (frequencies) once connectivity is established. It will first hunt for connectivity on both the red and green channels on the directional panel antenna for X seconds. If no signal is found, then the hunt will continue on the 5.8Ghz omni directional antenna for X seconds. This sequence will repeat itself until a signal is found, or until the channels are manually locked via the web interface on the node itself. &lt;br /&gt;
&lt;br /&gt;
Every node has a GREEN and a RED LED that is visible from underneath the node (should be visible when one stands under the node that is mounted on a pole). These LEDs are there to give some indication of connectivity and they will only turn on if connectivity can be established on either the red or green channel. Note that the LED does not show the signal quality or to what node it is connected to, it only shows that there is connectivity to another HPN node and on what channel (red or green). Signal quality and node connectivity information is only available via the web interface, but in most cases a visual alignment combined with a link indicator will be sufficient enough to get a mesh node up and running.&lt;br /&gt;
&lt;br /&gt;
== How can a client connect to the mesh ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Hpn-switch-pc.png]]&lt;br /&gt;
&lt;br /&gt;
Client devices can connect to any of the nodes via Ethernet or via wifi (blue channel = hostspot). The client devices should be configured to make use of DHCP so that all networking configurations can be done automatically (The node will provide all the networking details via DHCP). It is also recommended that the IPv6 protocol stack should be switch on if it is available. IPv6 should already be enabled on Windows Vista as well as most Unix systems.&lt;br /&gt;
&lt;br /&gt;
== How does the mesh work ? ==&lt;br /&gt;
&lt;br /&gt;
Almost everything in the network will be configured automatically, except for the selection of the gateway node and the channel (red or green) of a wireless link. The mesh supports both IPv6 and IPv4 traffic from any end-point (a place where a mesh client connects) to any other end-point in the mesh, while the backbone uses IPv6 only. A routing protocol called OLSR (Optimized Link State Routing) is used to exchange routing information between all the nodes inside the mesh and to select the best path for data traffic between end-points in the mesh.&lt;br /&gt;
&lt;br /&gt;
[[Image:OLSR.png]]&lt;br /&gt;
&lt;br /&gt;
Lets take an example (see diagram) where HP want to send data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv6 ====&lt;br /&gt;
HP will address the data to the IPv6 address of Dell and send it to node C. Node C will look in it&#039;s routing table and see that there are two routes to Dell, one route via node B-A-D-E and the other route via D-E. It will then select the best route and send it to the next node, in our case node D. Node D will look in it&#039;s routing table and see that the only route to Dell is via node E. Node E will look at it&#039;s routing table and see that Dell is directly connected and it will forward the data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv4 ====&lt;br /&gt;
This one is a bit more complicated. IPv4 is only used on the outside of the network (where the mesh clients connect to it) and then the IPv4 traffic is tunneled over the IPv6 backbone of the mesh to any another end point in the mesh. The mesh will automatically create a one-to-many IPv4 tunnel over the IPv6 network (4over6 tunneling protocol). This means that it looks like a network with an IPv4 tunnel from every IPv4 subnet to every other IPv4 subnet in the mesh. From a client&#039;s perspective it looks like a normal IPv4 routed network. From the backbone&#039;s perspective it looks like a IPv6 only network and all the OLSR routing information is IPv6 only. &lt;br /&gt;
&lt;br /&gt;
So how does the network know how to forward IPv4 packets to the correct destination ? It makes use of IPv4-mapped-IPv6 addresses (see [http://tools.ietf.org/html/rfc4291#section-2.5.5 RFC4291] and [http://tools.ietf.org/html/rfc4038 RFC4038]). Every node will map an IPv4 addresses into a IPv6 address before data goes to the backbone and the IPv4-Mapped-IPv6 addresses are converted back to a plain IPv4 address when it comes out of the backbone. OLSR will advertise these IPv4-Mapped-IPv6 address subnets on the backbone so that all the nodes will learn these subnets and they will calculate the best route to these subnets.&lt;br /&gt;
&lt;br /&gt;
Lets take example again, using IPv4. HP will address the data to the IPv4 address of Dell and send it to node C. Node C will change the IPv4 packet to an IPv6 packet with an IPv4-mapped-IPv6 addresses. From there it will follow the same route as the IPv6 example above. Node E will take the original IPv4 packet out of the IPv4-mapped-IPv6 packet and it will send the original IPv4 packet to Dell.&lt;br /&gt;
&lt;br /&gt;
See http://wirelessafrica.meraka.org.za/wiki/index.php/John%27s_research#4over6_Automatic_tunnels for more detail of the 4over6 tunneling protocol.&lt;br /&gt;
&lt;br /&gt;
=== Why is the mesh using IPv6 ? ===&lt;br /&gt;
&lt;br /&gt;
==== Reason one ====&lt;br /&gt;
It is predicted that unused IPv4 address space will be depleted within the next two years. Operating systems like Vista and most Unix systems defaults to IPv6 by default and most applications are IPv6 ready. With this in mind it makes sense that any new networking products should provide both IPv4 and IPv6 support.&lt;br /&gt;
&lt;br /&gt;
==== Reason two ====&lt;br /&gt;
In a single radio mesh network there is just one RF channel and everybody makes use of the same IP subnet. One limitation of a single radio mesh is that each mesh radio needs to handle both incoming and outgoing traffic. This causes the throughput to be halved because a radio cannot transmit and receive simultaneously. Another problem is that if one radio is transmitting then all its neighbors must all be in listening mode. These problems can cause a single radio mesh to very quickly run out of steam.&lt;br /&gt;
&lt;br /&gt;
Multi-radio mesh technology solves this problem by configuring every radio inside a router to operate on a different frequency and on a different IP subnet. In the HPN two radios are dedicated for backbone traffic and the third is used to create a client hotspot. 802.11a is generally used for backbone traffic, and 802.11b/g for client coverage. &lt;br /&gt;
&lt;br /&gt;
In a multi-radio mesh network it is very difficult to use the same IPv4 subnet on all the backbone wireless interfaces inside a mesh. The OLSR routing protocol uses broadcast packets to flood OLSR routing information to all of it&#039;s neighbors. This works very well with a single radio mesh, but not with a multi-radio mesh. Almost all TCP/IP (IPv4) stacks implementations can only send out broadcast packets on one interface at a time, but not on multiple interfaces on the same IPv4 subnet. This means that every interface needs to operate on a different IPv4 subnet, with the effect that some OLSR links may be physically possible, but it cannot be used for data because the IPv4 subnets are different. A multi-radio IPv4 OLSR network is possible, but it usually needs a lot of planning and configuration.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv4-Network.png]]&lt;br /&gt;
&lt;br /&gt;
The TCP/IP stack of IPv6 does not make use of Broadcast packets and OLSR routing information is flooded to it&#039;s neighbors via multicast packets. These multicast packets will automatically be duplicated by the TCP/IP stack and send out via multiple IPv6 interfaces on the same IPv6 subnet. This means that the mesh can use the same IPv6 subnet, all over the mesh backbone, without any problems. With a multi-radio IPv6 OLSR mesh you don&#039;t need any IPv6 configuration on the backbone as all the nodes use the same IPv6 subnet.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv6-Network.png]]&lt;br /&gt;
&lt;br /&gt;
== Behaviour of a normal node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
The following describes how a normal node will behave inside a mesh and what service it will provide:&lt;br /&gt;
&lt;br /&gt;
* Each HPN node is equipped with two 5.8Ghz wifi adapters and antennas (panel and omni) that is used to build the backbone. Each one of these adapters is configured to operate on a specific wifi frequency that is also tied to a specific wifi channel. In order to make our HPN more user friendly we decided to assign these two channels to the colours &amp;quot;red&amp;quot; and &amp;quot;green&amp;quot;. The HPN node then inherit what ever colour is assigned to the directional panel antenna on the front. &lt;br /&gt;
&lt;br /&gt;
This means that when the &amp;quot;green&amp;quot; channel is configured on the panel antenna, then the &amp;quot;red&amp;quot; is used on the omni and we will refer to the HPN node as a GREEN node. If the &amp;quot;red&amp;quot; channel is used on the panel, then we talk about a RED node and the &amp;quot;green channel is used on the omni. The default setting for a new node is to be a GREEN node and it can be changed to a RED node via the web interface.&lt;br /&gt;
&lt;br /&gt;
When a new node boots up for the fist time, then it will go into a hunting mode and it will search for other nodes in the mesh. There are lots of possible different ways to do this hunting. We decided to implement a very simple and easy algorithm until someone gets &#039;n new bright ideas. The following paragraphs describes our current implementation of our hunting procedure with our [[Initial (old) hunting description]] here.&lt;br /&gt;
&lt;br /&gt;
A HPN node will always start to search for connectivity on the panel antenna, fist on the same colour as the node, and then on the other colour. If no connectivity can be found, then it will hunt on the omni-directional antenna, first on opposite colour as the node, and then on the same colour. This sequence will repeat itself, until connectivity can be found to another node in the network. At this time the channels will be locked the colour of the node will be the same as the colour used on the panel antenna. This setting will stay the same, even across a reboot or power failure, until someone overrides it via the web interface.&lt;br /&gt;
&lt;br /&gt;
Lets take a new GREEN node for a example. When it boots up for the first time then it will come up in the hunting mode. It will first configure the patch antenna on the &amp;quot;green&amp;quot; channel. Then it will perform a link local IPv6 ping on that interface for about 3 seconds to determine if any IPv6 connectivity can be found on that antenna/channel. If no connectivity is found after 3 seconds, then it will hunt further using the &amp;quot;red&amp;quot; channel on the patch, then &amp;quot;red&amp;quot; on the omni and then &amp;quot;green&amp;quot; on the omni.&lt;br /&gt;
&lt;br /&gt;
If no connectivity can be found, then it will start the hunting process from the beginning again, or until it is manually locked via the WEB interface. If connectivity can be established, then it will lock the node with the current settings. It will also enable the green/red link LED on the bottom of the node to show connectivity on that channel (The WEB interface can be used to get more information of which node connectivity has been established to). If connectivity is lost then the LED will turn off again. &lt;br /&gt;
&lt;br /&gt;
See hunt-flow-diagram below.&lt;br /&gt;
&lt;br /&gt;
[[Image:Hunt-flow2.png]]&lt;br /&gt;
&lt;br /&gt;
Note that this hunting procedure does not always end up in the best routing solution and it is not a replacement for common sense. &lt;br /&gt;
&lt;br /&gt;
Future improvements:&lt;br /&gt;
 - In scenarios where connectivity is possible to another node, on both the panel and omni, then our current algorithm will always select the panel, even if the omni may be a better choice.&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up then an unique IPv6 address ((inside this mesh. See IP addressing section) will be configured on all the Ethernet and wireless interfaces. An unique (inside this mesh) IPv4 address is calculated and configured on the Ethernet interface and on the 2.4Ghz omni interface. The node will use the MAC address of the adapter to calculate a unique IPv4 and IPv6 subnet for that interface. These automatic addresses can be override via the WEB interface (E.g. if a globally routeable IPv6 address is required for a website inside the mesh and it should be visible from the Internet). Wireless interfaces are placed into adhoc mode and the channel, ssid and bssid are also configured.&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up then the OLSR daemon is started and it will listen en send OLSR topology packets to all of it&#039;s neighboring nodes. OLSR runs on all the wireless interfaces, but not on the Ethernet interface. All the IPv4 subnets are converted to 4in6 IPv6 addresses and these IPv6 subnets are placed into the HNA section of olsrd.conf, together with the IPv6 subnets that are configured on the Ethernet interface and on the 2.4Ghz omni interface. These HNA subnets are then distributed, via OLSR, to all the other nodes inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The 4over6 tunneling daemon take care of all IPv4 comms and distributing of routing information inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The node will start ntpd daemon on provide NTP time services on all it&#039;s IPv4 and IPv6 addresses. NTP will also synchronize it&#039;s local time with the GW-node on a regular basis.&lt;br /&gt;
&lt;br /&gt;
* The node will register it&#039;s own hostname in DNS on the GW-node. It will start dnsmasq daemon and it will also provide DNS services on all it&#039;s IPv4 and IPv6 addresses. Dnsmasq will forward all DNS queries to the DNS server running on the GW-node.&lt;br /&gt;
&lt;br /&gt;
* Dnsmasq is used to provide IPv4 DHCP services and DNS services on both the Ethernet interface and on the 2.4Ghz omni (hostspot) interface.&lt;br /&gt;
&lt;br /&gt;
* rtadvd will run on both the Ethernet interface and on the 2.4Ghz omni interface and it is used to advertise IPv6 prefixes to locally connected IPv6 client devices.&lt;br /&gt;
&lt;br /&gt;
* sshd allows remote ssh login&#039;s from anywhere in the mesh network.&lt;br /&gt;
&lt;br /&gt;
* watchdog toggles the watchdog during normal operations. Should the system hang for some reason, then the watchdog will restart the HPN node.&lt;br /&gt;
&lt;br /&gt;
* mini_httpd is used for the WEB gui running on the HPN node.&lt;br /&gt;
&lt;br /&gt;
== Behavior of the GateWay node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
Any standard mesh node can become a GateWay node by selecting the &amp;quot;GateWay&amp;quot; button under &amp;quot;Additional features&amp;quot; on the WEB interface. The GateWay node is the place where the mesh will connect to some outside network and it will be the default route for the mesh. When a normal node becomes a GateWay node, then it does not disable any normal node features, but it just adds some additional features. The following are the additional features that a GateWay node will have:&lt;br /&gt;
&lt;br /&gt;
* The GW-node will not go into a hunting mode and it will lock it&#039;s channels with GREEN on the omni and RED on the directional panel. The default channels can be swapped via the WEB interface.&lt;br /&gt;
&lt;br /&gt;
* The GW-node is the default route for the mesh and it will advertise a default route via OLSR to the rest of the mesh.&lt;br /&gt;
&lt;br /&gt;
* The GW-node connects to the outside networks via Ethernet. It will perform a DHCP request on this interface in order to get an automatic IP address and external DNS server configurations from the external network. These setting can be overided via the WEB interface, under &amp;quot;Additional features&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes the DNS server for the mesh and it will configure and start the &#039;named&#039; services on IPv6, as well as on a well known IPv6 address of fec0:0:0:ffff::1. It will allow any node inside a mesh to submit their hostname into DNS and it will provide DNS services to any node or other device inside the mesh on IPv6 only. The GateWay node will also forward external DNS requests to upstream DNS servers if they are available. Upstream DNS servers are usually configured via DHCP but these setting can also be overided under &amp;quot;Additional features&amp;quot; on the WEB interface. DNS services are still available via &#039;dnsmasq&#039;, on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a time server for the mesh. It will synchronize it&#039;s time to an external time server if it&#039;s configured and available, otherwise it will use it&#039;s own internal RTC to synchronize it&#039;s time to. This time will be available to the rest of the mesh on a well known IPv6 address of fec0:0:0:ffff::1 and all the nodes in a mesh will use this time to synchronize their own time servers to. The GW-node will still provide NTP time services on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a firmware update server for the mesh. It will start ftpd services on IPv6, on a well known IPv6 address of fec0:0:0:ffff::1. It will took for new firmware on the Internet. If new firmware is available, then it will download the software and make it available to the other nodes inside the mesh via ftp.&lt;br /&gt;
&lt;br /&gt;
== IPv4 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
IPv4 addresses are not used in the backbone, but only on the edge of the network. This means that every node will have two IPv4 subnets configured, one on the Ethernet adapter (npe0) and the other on the 2.4Ghz omni (ath2) that is used for a wifi hotspot. The High performance node will always use the first IPv4 address on a configured subnet. E.g 10.234.18.1/24&lt;br /&gt;
&lt;br /&gt;
The HPN currently makes use of an automatic IPv4 addressing scheme where the IPv4 subnet is derived from the two least significant bytes of the MAC address of that particular interface. The first bye of the network is always 10 because we are making use of the 10net inside the mesh. The next two byes comes from the last two byes of the Mac address and it will become the IPv4 subnet for that adapter. The adapter itself will be 10.x.x.1 and it will become the default gateway for that subnet. DNSmasq will hand out DHCP addresses form 10.x.x.100 - 10.x.x.199 on the calculated subnet.&lt;br /&gt;
&lt;br /&gt;
 Mac = 00:d0:12:07:cb:73&lt;br /&gt;
 cb.73 (hex) = 203.115 (decimal)&lt;br /&gt;
 IP subnet  = 10.203.115 with /24 subnet mask&lt;br /&gt;
 IP address = 10.203.115.1&lt;br /&gt;
 DHCP = 10.203.115.100-10.203.115.199&lt;br /&gt;
&lt;br /&gt;
This addressing scheme will work 99% of the time, but it is not failsafe. Subnet clashes may occur due to the MAC address numbering schemes used by different vendors. MAC addresses usually have a vendor portion (first part of address) and a product/sequent number portion (last part). The last part is the part that is used to generate an IPv4 address. The last two bytes will most probably, at some stage, be that same for two different cards from two different vendors and there may be a very small chance for both of these cards end up in the same mesh network. In this case the automatic address can be overridden manually in rc.conf.local. At this stage there is no build in detection system that will handle Mac address clashes.&lt;br /&gt;
&lt;br /&gt;
Other addressing schemes to consider:&lt;br /&gt;
* Manage and assign all IPv4 addresses centrally. Program addresses into the HPN&#039;s during the manufacturing process. This will sort out all IPv4 address clashes. Issues - Do you assign a IPv4 address block per community or just sequential per HPN node?&lt;br /&gt;
* Manage a block of IPv4 addresses for each community somewhere on the local mesh. HPN nodes can then request an IPv4 addresses from this repository and use it. Issues - what happens if server is down or during a power failure. Will you get a new IPv4 address every time, simular to what you get with ADSL. This will mean that all the the PC&#039;s and devices that received DHCP addresses from DNSmasq will have to change as well. &lt;br /&gt;
&lt;br /&gt;
Issues that may influence the selection of an addressing scheme:&lt;br /&gt;
* Should there be IPv4 connectivity between different mesh networks ?&lt;br /&gt;
* Should there be IPv4 connectivity between a network inside a mesh and some other place in the Internet ?&lt;br /&gt;
* Should someone upstream device be able to initiate a connection into a mesh network (E.g. web server in mesh). ?&lt;br /&gt;
* Should we make use of legal (routeable) IPv4 address space, or should we stick to the 10net.&lt;br /&gt;
* Should the network be able to build and exchange IPv4 routing information with other networks.&lt;br /&gt;
* Routing information can be simplified if sequential IPv4 addresses are managed centrally and allocated per mesh&lt;br /&gt;
* Should the addressing scheme survive a power cycle or load shedding inside a community&lt;br /&gt;
* Is the WISP going to do NAT ?&lt;br /&gt;
&lt;br /&gt;
== IPv6 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
All the HPN nodes supports end-to-end IPv6 communications over the mesh. IPv6 only needs a network prefix (IPv6 subnet) for every adapter and the protocol stack will work out the IPv6 address for each interface. &lt;br /&gt;
&lt;br /&gt;
Our mesh is making use of a private Unique Local Addresses (ULAs) space, described in [http://www.rfc-editor.org/rfc/rfc4193.txt RFC4193]. This address space in similar to the 10net in IPv4, but with the difference that each ULA is globally unique. This means that we can calculate our own network prefix that we use in a mesh. This leaves the option to use the same prefix for all the different mesh networks, or we can use an unique prefix for every mesh. A unique prefix for every mesh may have an routing advantage if we need to connect different mesh networks together in future, but it also means that HPN&#039;s should be pre-configured with a prefix that is tied to a specific community and the prefix allocations should be managed centrally.&lt;br /&gt;
&lt;br /&gt;
Note that private Unique Local IPv6 addresses are not globally routable, but only inside our mesh. If we need globally routable IPv6 addresses then we need to apply for Provider Independent IPv6 address space from Afrinic. These addresses is uosually someting that is given to some network provider (owner of the network) and it will have a yearly fee attached to it. Issues - it is not always clear who the owner of a communit mesh is.&lt;br /&gt;
&lt;br /&gt;
The best sollution may be to use a combination of both addressing schemes. Use ULA addresses all over the mesh and only use leagal IPv6 addresses where devices needs to be availble on the Internet.&lt;br /&gt;
&lt;br /&gt;
== WEB interface ==&lt;br /&gt;
At the moment there is no WEB GUI for the HPN. This is an suggestion of how the GUI should look like. The idea is to keep it simple as possible with as little as possible that can be changed.&lt;br /&gt;
&lt;br /&gt;
=== WEB Gui main page ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-hunt-html.png|border|300px]][[Image:HPN-green-html.png|border|300px]][[Image:HPN-red-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
The default setting for a HPN is to come up in the hunting mode. After a successful hunt, the HPN will lock to either a red or green node and it will keep the setting, even during power failures. The menu will show the current state of a HPN, but it will also allow you to override the current mode by selecting red, green or hunting manually. Changes are only allowed after a valid login.&lt;br /&gt;
&lt;br /&gt;
The bar graph will give some indication of signal strength to other nodes on both the red and green channel. Note that there can be a link to more than one node on a given channel (red or green). The indicator on the main page will only show the signal to the first node that it links with. A more detailed view is available on the align page under the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
The last thing that can be changed from the main menu is the name of the HPN. This name will also be registered into the mesh DNS. All changes will only take effect after selecting the SUBMIT button. Additional features can be reached via the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
=== More features ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-features-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
==== Configure / Align / Stats ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-configure-html.png|border|300px]][[Image:HPN-align-html.png|border|300px]][[Image:HPN-stats-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
&lt;br /&gt;
[[High_Performance_Node_-_Specification]]&lt;br /&gt;
&lt;br /&gt;
== Upgrades ==&lt;br /&gt;
All the HPN nodes in a mesh will look for new firmware updates from the GateWay node on a regular basis. New firmware is placed inside a special directory on the GateWay node and it is made available, via ftp, to all the other HPN nodes in the mesh. Each HPN nodes will compare the firmware from this directory with it&#039;s current version of firmware to determine if it&#039;s newer. If new firmware is available, then the node will download and untar the new firmware onto a spare partition on the flash disk. After that all the custom configurations are copied over to the new partition. The HPN will then change the active partition to the new one and it will reboot with the new firmware. If someting should go wrong with the upgrade, then the HPN will revert back to the previous version of firmware.&lt;br /&gt;
&lt;br /&gt;
The GateWay node will look for new firmware somewhere on the Internet or from the WISP box. If available it will download the new firmware and place it into the special ftp directory.&lt;br /&gt;
&lt;br /&gt;
== Typical Outdoor Range at 5.8Ghz ==&lt;br /&gt;
At this stage we haven&#039;t found a testing site that is suitable for our tests. The following is just gestimates and it still needs to be tested.&lt;br /&gt;
&lt;br /&gt;
* Omni to Omni: up to xx km (2km?)&lt;br /&gt;
* Panel to Omni: up to xx km (5km?)&lt;br /&gt;
* Panel to Panel: up to xx km (10km?)&lt;br /&gt;
* External to External: more than xx km (20km?), depending on antenna type&lt;br /&gt;
&lt;br /&gt;
Now for some test results:&lt;br /&gt;
For our first test we selected a friendly site for the panel-to-panel test. We selected Anita&#039;s home because she is just over 10km from Meraka and there is a clear line of site between both sites (this is also our longest 11a link so far). Another reason is that we already have a 32bBi directional antenna, from an existing installation on Meraka&#039;s roof, that is pointing directly to her home. &lt;br /&gt;
&lt;br /&gt;
We used one of our new routers for this site, but we replaced the 5.8Ghz omni antenna with a 27dBi grid antenna so that we could have one link to login to the router, while we can do some tests on the second antenna.&lt;br /&gt;
&lt;br /&gt;
Here is a picture of Anita&#039;s husband with the router the he installed on their roof.&lt;br /&gt;
&lt;br /&gt;
[[Image:001.jpg|border|300px]][[Image:002.jpg|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Regulatory ==&lt;br /&gt;
Wirelss equipment that operate in the ISM bands do not need an spectrum licence, but they need to be ICASA approved. All the wifi adapters inside the HPN nodes are ICASA approved. From recent media reports regarding DABBA communications and there equipent in the Orange Farm area, it seems like our HPN node needs to get ICASA approval for the complete assembled HPN node as well. Every node should have it&#039;s own ICASA sticker on the back.&lt;br /&gt;
&lt;br /&gt;
== Using WEP/WPA in adhoc mode ==&lt;br /&gt;
&lt;br /&gt;
One of the requirements of the High Performance Node is to have WEP or WPA enabled between the wireless links of the mesh nodes. This is one of the functionalities that we would like to sort out before we install any of the nodes in the field. It&#039;s very difficult to change the encryption mode after an installation because the mesh nodes will lose connectivity if one node is upgraded to use WEP, while another is still using older software without WEP.&lt;br /&gt;
&lt;br /&gt;
WEP and WPA are both methods to enable the encryption of data that it is send over the air. WEP (Wired equivalence privacy) is an older standard and it makes use of a WEP encryption engine while the newer WPA standard added the use of an AES encryption engine. WEP encryption has some security flaws embedded into the protocol and there are several tools available on the Internet that can crack WEP keys. These tools are more effective with the cracking of 64bit WEP keys than with 128bit keys and they require a large amount of captured data and processing power to crack a key. Note that not all WEP keys can be cracked, but only weak keys and that flaw was addressed and fixed by WPA.&lt;br /&gt;
&lt;br /&gt;
Wireless adapters on Unix Systems can operate in three different modes: Client, Hostap (Access Point) and Adhoc mode. Most of the implementations of wireless (802.11) networks are based on a model where there is one Access Point with several wireless clients attached to to it. &lt;br /&gt;
&lt;br /&gt;
[[Image:AP-client.png|center|One Access point with many nodes]]&lt;br /&gt;
 &lt;br /&gt;
Wireless Mesh networks make use of the less tested Adhoc mode of 802.11.&lt;br /&gt;
&lt;br /&gt;
[[Image:Adhoc.png|center|Many nodes using Adhoc mode (many point to point links)]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
WEP and WPA requires a couple of kld&#039;s to be loaded before they can be configured. The following kld&#039;s should be added to loader.conf&lt;br /&gt;
wlan_acl_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_amrr_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_ccmp_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_tkip_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_wep_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_xauth_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== WEP ====&lt;br /&gt;
Enable and test WEP in Adhoc mode on the HPN.&lt;br /&gt;
WEP makes use of a single PSK that needs to be configured on all the wireless nodes. Any node or wireless device that is configured with this PSK will have the capability to crypt and decrypt these wireless packets. There are two methods to configure WEP in FreeBSD. You can use either  use ifconfig directly or you can make use of the WPA supplicant utility.&lt;br /&gt;
&lt;br /&gt;
ifconfig e.g.&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0 10.10.1.2/24 wep deftxkey 1 wepkey 128bitwepison&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0&lt;br /&gt;
 ath0: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; metric 0 mtu 1500&lt;br /&gt;
        ether 00:80:48:50:9e:69&lt;br /&gt;
        inet6 fe80::280:48ff:fe50:9e69%ath0 prefixlen 64 scopeid 0x1&lt;br /&gt;
        inet6 fd9c:6829:597c:20:280:48ff:fe50:9e69 prefixlen 64&lt;br /&gt;
        inet6 fd9c:6829:597c:20:: prefixlen 64 anycast&lt;br /&gt;
        inet 10.10.1.2 netmask 0xffffff00 broadcast 10.10.1.255&lt;br /&gt;
        media: IEEE 802.11 Wireless Ethernet autoselect mode 11g &amp;lt;adhoc&amp;gt;&lt;br /&gt;
        status: associated&lt;br /&gt;
        ssid ptamesh channel 13 (2472 Mhz 11g) bssid 56:e5:be:30:14:5a&lt;br /&gt;
        authmode OPEN privacy ON deftxkey 1 wepkey 1:104-bit txpower 31.5&lt;br /&gt;
        scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi11g 7&lt;br /&gt;
        roam:rate11g 5 protmode CTS burst&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Enable WEP on three mesh nodes and test connectivity.&lt;br /&gt;
 mesh-9e69:~ # ping6 ff02::1%ath0&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9e69%ath0, icmp_seq=87 hlim=64 time=2.122 ms&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9ddd%ath0, icmp_seq=87 hlim=64 time=5.625 ms(DUP!)&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9a44%ath0, icmp_seq=87 hlim=64 time=32.358 ms(DUP!)&lt;br /&gt;
&lt;br /&gt;
Everything seems to work fine (as expeted) with WEP enabled in the mesh.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WPA&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WPA was designed to work in an environment where you have one AP and several clients and not for Adhoc (mesh) networks. On the AP you have the Authenticator software and on the client you have the supplicant software. This means that if one would like to use WPA to it&#039;s full then every mesh node needs to be an Authenticator for all the other nodes it can see, as well as a supplicant for every node it can see. According to the WPA design document http://wirelessafrica.meraka.org.za/wiki/images/3/39/Wpa_supplicant-devel-04.pdf one can use WPA in Adhoc mode only in a static way with PSK&#039;s:&lt;br /&gt;
 IEEE 802.11 operation mode (Infrastucture/IBSS).&lt;br /&gt;
 0 = infrastructure (Managed) mode, i.e., associate with an AP.&lt;br /&gt;
 1 = IBSS (ad-hoc, peer-to-peer)&lt;br /&gt;
 Note: IBSS can only be used with key_mgmt NONE (plaintext and static WEP) and key_mgmt=WPA-&lt;br /&gt;
 NONE (ﬁxed group key TKIP/CCMP). In addition, ap_scan has to be set to 2 for IBSS. WPA-None requires&lt;br /&gt;
 following network block options: proto=WPA, key_mgmt=WPA-NONE, pairwise=NONE, group=TKIP&lt;br /&gt;
 (or CCMP, but not both), and psk must also be set (either directly or using ASCII passphrase).&lt;br /&gt;
&lt;br /&gt;
This is methods is very similar to the way that WEP is being used. This means the the only advantage of using WPA over WEP is that one can make use of the AES encryption engine that comes with WPA. Please note that with this mode of WPA and with WEP that anyone can decrypt the data being send over the air if they get hold of the mesh-wide PSK that is configured on every node in the network. If security is of importance them end users should consider the use of point-to-point security mechanisms like VPN&#039;s.&lt;br /&gt;
&lt;br /&gt;
The configuration of WPA is not supported in command line mode, but only with the wpa_supplicant software. This is an example of a wpa_supplicant.conf file to enable WPA in Adhoc mode:&lt;br /&gt;
&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 #&lt;br /&gt;
 network={&lt;br /&gt;
   ssid=&amp;quot;ptamesh&amp;quot;&lt;br /&gt;
 # Channel  13 : 2472  Mhz 11g&lt;br /&gt;
   frequency=2472&lt;br /&gt;
   mode=1&lt;br /&gt;
   proto=WPA&lt;br /&gt;
   key_mgmt=WPA-NONE&lt;br /&gt;
   pairwise=NONE&lt;br /&gt;
   group=TKIP&lt;br /&gt;
   psk=&amp;quot;mesh-ipv6&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To start the WPA software during boot-up one needs to add WPA to the ifconfig line in rc.conf. E.g.&lt;br /&gt;
&lt;br /&gt;
 ifconfig_ath0=&amp;quot;WPA 10.10.1.1/24 mode 11g mediaopt adhoc channel 13 ssid ptamesh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Unfortunately WPA did not work as easy as WEP, so it&#039;s off to debugging.&lt;br /&gt;
&lt;br /&gt;
Starting wpa_supplicant in the foreground with debugging enabled. E.g&lt;br /&gt;
&lt;br /&gt;
 wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
&lt;br /&gt;
The debugging output shows that something happens that initiates a wlan scan operation, while the card is in Adhoc mode. This should not happen and wpa_supplicant software never completes the configuration due to this error.&lt;br /&gt;
&lt;br /&gt;
 mesh-9ddd:~ # wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
 Initializing interface &#039;ath0&#039; conf &#039;/etc/wpa_supplicant.conf&#039; driver &#039;default&#039; &lt;br /&gt;
 ctrl_interface &#039;N/A&#039; bridge &#039;N/A&#039;&lt;br /&gt;
 Configuration file &#039;/etc/wpa_supplicant.conf&#039; -&amp;gt; &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 Reading configuration file &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 Priority group 0&lt;br /&gt;
   id=0 ssid=&#039;ptamesh&#039;&lt;br /&gt;
 Initializing interface (2) &#039;ath0&#039;&lt;br /&gt;
 EAPOL: SUPP_PAE entering state DISCONNECTED&lt;br /&gt;
 EAPOL: KEY_RX entering state NO_KEY_RECEIVE&lt;br /&gt;
 EAPOL: SUPP_BE entering state INITIALIZE&lt;br /&gt;
 EAP: EAP entering state DISABLED&lt;br /&gt;
 EAPOL: External notification - portEnabled=0&lt;br /&gt;
 EAPOL: External notification - portValid=0&lt;br /&gt;
 Own MAC address: 00:80:48:50:9d:dd&lt;br /&gt;
 wpa_driver_bsd_set_wpa: enabled=1&lt;br /&gt;
 wpa_driver_bsd_set_wpa_internal: wpa=3 privacy=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=0&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=2&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=3&lt;br /&gt;
 wpa_driver_bsd_set_countermeasures: enabled=0&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 Setting scan request: 0 sec 100000 usec&lt;br /&gt;
 Added interface ath0&lt;br /&gt;
 State: DISCONNECTED -&amp;gt; SCANNING&lt;br /&gt;
 Trying to associate with SSID &#039;ptamesh&#039;&lt;br /&gt;
 Cancelling scan request&lt;br /&gt;
 WPA: clearing own WPA/RSN IE&lt;br /&gt;
 Automatic auth_alg selection: 0x1&lt;br /&gt;
 wpa_driver_bsd_set_auth_alg alg 0x1 authmode 1&lt;br /&gt;
 WPA: No WPA/RSN IE available from association info&lt;br /&gt;
 WPA: Set cipher suites based on configuration&lt;br /&gt;
 WPA: Selected cipher suites: group 8 pairwise 1 key_mgmt 16 proto 1&lt;br /&gt;
 WPA: clearing AP WPA IE&lt;br /&gt;
 WPA: clearing AP RSN IE&lt;br /&gt;
 WPA: using GTK TKIP&lt;br /&gt;
 WPA: using PTK NONE&lt;br /&gt;
 WPA: using KEY_MGMT WPA-NONE&lt;br /&gt;
 WPA: Set own WPA IE default - hexdump(len=24): dd 16 00 50 f2 01 01 00 00 50 &lt;br /&gt;
 f2 02 01 00 00 50 f2 00 01 00 00 50 f2 00&lt;br /&gt;
 No keys have been configured - skip key clearing&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 State: SCANNING -&amp;gt; ASSOCIATING&lt;br /&gt;
 wpa_driver_bsd_associate: ssid &#039;ptamesh&#039; wpa ie len 24 pairwise 0 group 2 key &lt;br /&gt;
 mgmt 4&lt;br /&gt;
 ioctl[SIOCS80211, op 22, len 24]: Invalid argument&lt;br /&gt;
 Association request to the driver failed&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 Cancelling authentication timeout&lt;br /&gt;
 State: ASSOCIATING -&amp;gt; COMPLETED&lt;br /&gt;
 CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (auth) [id=-1 &lt;br /&gt;
 id_str=]&lt;br /&gt;
 EAPOL: External notification - portControl=ForceAuthorized&lt;br /&gt;
&lt;br /&gt;
Next was to install fresh copy of the FreeBSD src code onto my PC. I found the wpa_supplicant source code under /usr/src/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c Build a new driver from source code and run it on a router. After that I&#039;ve added in a lot of printf statements to trace how the driver works and to locate the code that puts the wifi card in scanning mode. In the end I found out that wpa_supplicant driver did not put the card in scanning mode, but it somehow caused the 802.11 stack to start the scanning. Unfortunately I don&#039;t know enough about the 802.11 code in FreeBSD to do any mode debugging. I&#039;ve send a mail about the problem to one of the FreeBSD mailing lists and the originator of most of the 802.11 code in FreeBSD (Sam Leffler) said I must log a problem report. So I logged a problem report with FreeBSD and now we have to wait and see if someone to take responsibility to fix this problem. More information on the problem report can be found at: http://www.freebsd.org/cgi/query-pr.cgi?pr=126822&lt;br /&gt;
&lt;br /&gt;
For now I recommend that we make use of WEP instead of WPA in our implementation as it is working and there isn&#039;t such a big advantage in using WPA over WEP in this mode except for the encryption algorithm that changes from WEP to AES.&lt;br /&gt;
&lt;br /&gt;
== Antenna calculations ==&lt;br /&gt;
&lt;br /&gt;
Every HP-node has two 5.15-5.6 GHz antennas. The one as a build in patch antenna and the other is an 5.1-5.8 GHz omni-directional antenna. The idea is that the patch antenna of a node will either be aligned to the omni or the patch antenna of another node. The following calculations is to get an feeling of what distances should be possible between these antennas.&lt;br /&gt;
&lt;br /&gt;
South African Wifi channels:&lt;br /&gt;
 Channel   1 : 2412  Mhz 11g          Channel  48 : 5240  Mhz 11a&lt;br /&gt;
 Channel   2 : 2417  Mhz 11g          Channel  52 : 5260* Mhz 11a&lt;br /&gt;
 Channel   3 : 2422  Mhz 11g          Channel  56 : 5280* Mhz 11a&lt;br /&gt;
 Channel   4 : 2427  Mhz 11g          Channel  60 : 5300* Mhz 11a&lt;br /&gt;
 Channel   5 : 2432  Mhz 11g          Channel  64 : 5320* Mhz 11a&lt;br /&gt;
 Channel   6 : 2437  Mhz 11g          Channel 100 : 5500* Mhz 11a&lt;br /&gt;
 Channel   7 : 2442  Mhz 11g          Channel 104 : 5520* Mhz 11a&lt;br /&gt;
 Channel   8 : 2447  Mhz 11g          Channel 108 : 5540* Mhz 11a&lt;br /&gt;
 Channel   9 : 2452  Mhz 11g          Channel 112 : 5560* Mhz 11a&lt;br /&gt;
 Channel  10 : 2457  Mhz 11g          Channel 116 : 5580* Mhz 11a&lt;br /&gt;
 Channel  11 : 2462  Mhz 11g          Channel 120 : 5600* Mhz 11a&lt;br /&gt;
 Channel  12 : 2467  Mhz 11g          Channel 124 : 5620* Mhz 11a&lt;br /&gt;
 Channel  13 : 2472  Mhz 11g          Channel 128 : 5640* Mhz 11a&lt;br /&gt;
 Channel  36 : 5180  Mhz 11a          Channel 132 : 5660* Mhz 11a&lt;br /&gt;
 Channel  40 : 5200  Mhz 11a          Channel 136 : 5680* Mhz 11a&lt;br /&gt;
 Channel  44 : 5220  Mhz 11a          Channel 140 : 5700* Mhz 11a&lt;br /&gt;
&lt;br /&gt;
HP-Node detailed specs: http://wirelessafrica.meraka.org.za/wiki/images/0/07/WLAN-A0033.pdf&lt;br /&gt;
&lt;br /&gt;
Pigtail detail specs: http://wirelessafrica.meraka.org.za/wiki/images/0/0a/Ca178_cable_assemblies_datasheet.pdf&lt;br /&gt;
&lt;br /&gt;
Wireless adapter detail specs: http://wirelessafrica.meraka.org.za/wiki/images/2/21/Wlm54sag23.pdf&lt;br /&gt;
&lt;br /&gt;
OR the Mikrotik version of the same adapter called a R52H (also manufactured by Compex, but usually cheaper)&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:R52H.pdf&lt;br /&gt;
&lt;br /&gt;
Another popular adapter is the DCMA-82 from Wistron. They have better RX sensitivity, but lower output power and they are a bit more expensive than the Compex cards. In some of the discussions that I&#039;ve seen they state that the DCMA-82 has much cleaner output power, better RX sensitivity, and a lower failure rate/quality issues than Compex&#039;s cards.&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:DCMA-82.pdf&lt;br /&gt;
&lt;br /&gt;
Node specs summary:&lt;br /&gt;
 Patch antenna            - 21-23 dBi,   16 deg H,  11 deg V, 5.15 -5.6 GHz&lt;br /&gt;
 5Ghz Omni antenna        - 8-11 dBi,    360 deg H, 10 deg V, 5.1 - 5.85 GHz&lt;br /&gt;
 2.4Ghz Omni antenna      - 7.5-8.5 dBi, 360 deg H, 12 deg V, 2.4 - 2.5 GHz&lt;br /&gt;
 30mm U.FL-SMA pigtail    - RG178 cable insertion loss, 2.4 GHZ = -1.1dB, 5.6 GHz = -2dB&lt;br /&gt;
 Compex WLM54AG23 adapter - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            23dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
                            17dBm @ 54Mbps&lt;br /&gt;
 Mikrotik (Compex) R52H   - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            24dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
 Wistron DCMA-82          - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -82 dBm @ 36Mbps&lt;br /&gt;
                            -72 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            22.5dBm @ 6-24Mbps&lt;br /&gt;
                            21.5dBm @ 36Mbps&lt;br /&gt;
                            18dBm @ 48Mbps&lt;br /&gt;
&lt;br /&gt;
I could not find any receive sensitivity info for ranges between 6Mbps and 54Mbps for the WLM54AG23. The closest I could find was the specs of another manufacturer card, using the same Atheros chipset as the WLM54AG23. Here is the receive sensitivity info for a WMIA-166AG Dual-Band miniPCI module (802.11a/g)&lt;br /&gt;
Nominal Temp Range:&lt;br /&gt;
  6Mbps 10-5 BER @ -90 dBm, typical&lt;br /&gt;
  9Mbps 10-5 BER @ -89 dBm, typical&lt;br /&gt;
 12Mbps 10-5 BER @ -88 dBm, typical&lt;br /&gt;
 18Mbps 10-5 BER @ -86 dBm, typical&lt;br /&gt;
 24Mbps 10-5 BER @ -82 dBm, typical&lt;br /&gt;
 36Mbps 10-5 BER @ -78 dBm, typical&lt;br /&gt;
 48Mbps 10-5 BER @ -72 dBm, typical&lt;br /&gt;
 54Mbps 10-5 BER @ -68 dBm, typical &lt;br /&gt;
&lt;br /&gt;
The WLM54AG23 is not the best wifi adapter in the market, but it gives a good compromise between price vs performance. If one need to push the limits of a specific link then I would probable select the SR5 from Ubiquity. They have excellent TX power and RX sensitivity.&lt;br /&gt;
 &lt;br /&gt;
There are lots of wifi/antenna/distance calculators available on the WEB. Most of these calculators cannot calculate the max distance for a link, you have to specify the distance and it will calculate you dBm margin. Links to a couple of Wifi/antenna/distance calculators:&lt;br /&gt;
&lt;br /&gt;
 http://www.radiolabs.com/stations/wifi_calc.html&lt;br /&gt;
 http://www.zytrax.com/tech/wireless/calc.htm&lt;br /&gt;
 http://www.widgetbox.com/widget/wifi-link-calculator&lt;br /&gt;
 http://www.wifiextreme.com.au/index.php?main_page=page_5&lt;br /&gt;
 http://www.rflinx.com/help/calculations&lt;br /&gt;
 http://www.olotwireless.net/castella/radio.htm&lt;br /&gt;
&lt;br /&gt;
Here are some formulas use to calculate a link budget:&lt;br /&gt;
  Free space loss = 36.56 + 20Log10(Frequency) + 20Log10(Dist in miles)&lt;br /&gt;
  mW to dBm = 10Log10(milliWatts) + 30&lt;br /&gt;
  dBm to mW = 10(dBm/10)&lt;br /&gt;
  RX Power = Margin - RX sensitivity&lt;br /&gt;
  Theoretical margin = TX power budget + RX power budget - free space loss&lt;br /&gt;
  SAD factor = Theoretical margin/TX power budget * 100 and shows the percentage of spare power on transmission.&lt;br /&gt;
&lt;br /&gt;
(Free Space Loss) = 92.5 + (20 Log fequency) + (20 log km distance)&lt;br /&gt;
&lt;br /&gt;
Free space loss @ 5400GHz:&lt;br /&gt;
 1km = -107.07dB      11km = -128.028dB&lt;br /&gt;
 2km = -113.09dB      12km = -128.784dB&lt;br /&gt;
 3km = -116.61dB      13km = -129.479dB&lt;br /&gt;
 4km = -119.11dB      14km = -130.123dB&lt;br /&gt;
 5km = -121.05dB      15km = -130.722dB&lt;br /&gt;
 6km = -122.63dB      16km = -131.282dB&lt;br /&gt;
 7km = -123.97dB      17km = -131.809dB&lt;br /&gt;
 8km = -125.13dB      18km = -132.305dB&lt;br /&gt;
 9km = -126.15dB      19km = -132.775dB&lt;br /&gt;
 10km = -127.07dB     20km = -133.221dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPNode with a 5Ghz patch to omni link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Omni: &lt;br /&gt;
 Min link distance @ 54Mbps 0.9km:              Max link distance @ 54Mbps 1.55km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -106dB                      Free space loss = -111dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 6.9km:              Max link distance @ 24Mbps 12.3km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 34km free space  = -124dB                      Free space loss = -129dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 17km:                Max link distance @ 6Mbps 30.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 34km free space  = -132dB                      Free space loss = -137dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPnodes with a 5Ghz patch to patch link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Patch:&lt;br /&gt;
 Min link distance @ 54Mbps 3.9km:              Max link distance @ 54Mbps 6km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -119dB                      Free space loss = -123dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 30.9km:             Max link distance @ 24Mbps 38.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 Free space loss  = -137dB                      Free space loss = -139dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 77.6km:              Max link distance @ 6Mbps 123km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 Free space loss  = -145dB                      Free space loss = -149dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4631</id>
		<title>High performance node page</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4631"/>
		<updated>2009-05-21T13:27:23Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Behaviour of a normal node in a mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Development Team Research Pages]][[Category: Johann&#039;s Research Pages]][[Category: High Performance Node]]&lt;br /&gt;
&lt;br /&gt;
== What is a HPN (high performance node) ? ==&lt;br /&gt;
&lt;br /&gt;
The HPN is a multi-radio (3x radios), high performance, wireless (802.11) router. It has three antennas, one 5.8Ghz directional panel antenna as well as two omni&#039;s (2.4Ghz + 5.8Ghz). At the bottom of the router there is a weather proof UTP connector that is used for both Power-Over-Ethernet (PoE) and Ethernet connectivity to the router. A special mounting bracket at the back of the router allows it to be attached to an aluminum pole that is usually mounted to the side of a building or some structure.&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN.png]]&lt;br /&gt;
&lt;br /&gt;
== How to build a mesh with HPN&#039;s ==&lt;br /&gt;
The idea is to build a mesh network with these routers by aligning each directional antennas to point to a neighboring omni or another directional antenna. The wireless cards in a router operates on different channels (frequencies). To make it more user friendly each channel (frequencies) is tied to a color. This means that a red panel antenna must be aligned to a red omni (or another red panel) and a green panel must be aligned to a green omni (or green panel). The blue channel (2.4Ghz) is used to create a wifi hostspot for clients who would like to connect to the mesh network via wifi.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mesh-Network.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every mesh network usually have one GateWay that connects to the Internet or to some other network. Any one of the mesh nodes can be configured to become a GateWay for the mesh. When a node becomes a GateWay then the channels (frequencies) of the antennas are fixed  to the following: 5.8Ghz directional panel = RED, 5.8Ghz omni = GREEN and the 2.4Ghz omni = BLUE. The GateWay node will also become the DNS server for the mesh and all the nodes inside the mesh will register their HostNames with the DNS server. Another function of the GateWay node is to act as a time server for the mesh network and all the nodes inside the mesh will synchronize their time with the GateWay node. &lt;br /&gt;
&lt;br /&gt;
The best approach to build a mesh network is to start with the installation of the GateWay node. Next you install the node(s) that aligns to the GateWay node and then grow the mesh from there. Fist perform a visual alignment of the panel antenna on the node before the power is switched on. When a normal node starts up for the first time, then it will hunt for a mesh signal and it will lock it&#039;s channels (frequencies) once connectivity is established. It will first hunt for connectivity on both the red and green channels on the directional panel antenna for X seconds. If no signal is found, then the hunt will continue on the 5.8Ghz omni directional antenna for X seconds. This sequence will repeat itself until a signal is found, or until the channels are manually locked via the web interface on the node itself. &lt;br /&gt;
&lt;br /&gt;
Every node has a GREEN and a RED LED that is visible from underneath the node (should be visible when one stands under the node that is mounted on a pole). These LEDs are there to give some indication of connectivity and they will only turn on if connectivity can be established on either the red or green channel. Note that the LED does not show the signal quality or to what node it is connected to, it only shows that there is connectivity to another HPN node and on what channel (red or green). Signal quality and node connectivity information is only available via the web interface, but in most cases a visual alignment combined with a link indicator will be sufficient enough to get a mesh node up and running.&lt;br /&gt;
&lt;br /&gt;
== How can a client connect to the mesh ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Hpn-switch-pc.png]]&lt;br /&gt;
&lt;br /&gt;
Client devices can connect to any of the nodes via Ethernet or via wifi (blue channel = hostspot). The client devices should be configured to make use of DHCP so that all networking configurations can be done automatically (The node will provide all the networking details via DHCP). It is also recommended that the IPv6 protocol stack should be switch on if it is available. IPv6 should already be enabled on Windows Vista as well as most Unix systems.&lt;br /&gt;
&lt;br /&gt;
== How does the mesh work ? ==&lt;br /&gt;
&lt;br /&gt;
Almost everything in the network will be configured automatically, except for the selection of the gateway node and the channel (red or green) of a wireless link. The mesh supports both IPv6 and IPv4 traffic from any end-point (a place where a mesh client connects) to any other end-point in the mesh, while the backbone uses IPv6 only. A routing protocol called OLSR (Optimized Link State Routing) is used to exchange routing information between all the nodes inside the mesh and to select the best path for data traffic between end-points in the mesh.&lt;br /&gt;
&lt;br /&gt;
[[Image:OLSR.png]]&lt;br /&gt;
&lt;br /&gt;
Lets take an example (see diagram) where HP want to send data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv6 ====&lt;br /&gt;
HP will address the data to the IPv6 address of Dell and send it to node C. Node C will look in it&#039;s routing table and see that there are two routes to Dell, one route via node B-A-D-E and the other route via D-E. It will then select the best route and send it to the next node, in our case node D. Node D will look in it&#039;s routing table and see that the only route to Dell is via node E. Node E will look at it&#039;s routing table and see that Dell is directly connected and it will forward the data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv4 ====&lt;br /&gt;
This one is a bit more complicated. IPv4 is only used on the outside of the network (where the mesh clients connect to it) and then the IPv4 traffic is tunneled over the IPv6 backbone of the mesh to any another end point in the mesh. The mesh will automatically create a one-to-many IPv4 tunnel over the IPv6 network (4over6 tunneling protocol). This means that it looks like a network with an IPv4 tunnel from every IPv4 subnet to every other IPv4 subnet in the mesh. From a client&#039;s perspective it looks like a normal IPv4 routed network. From the backbone&#039;s perspective it looks like a IPv6 only network and all the OLSR routing information is IPv6 only. &lt;br /&gt;
&lt;br /&gt;
So how does the network know how to forward IPv4 packets to the correct destination ? It makes use of IPv4-mapped-IPv6 addresses (see [http://tools.ietf.org/html/rfc4291#section-2.5.5 RFC4291] and [http://tools.ietf.org/html/rfc4038 RFC4038]). Every node will map an IPv4 addresses into a IPv6 address before data goes to the backbone and the IPv4-Mapped-IPv6 addresses are converted back to a plain IPv4 address when it comes out of the backbone. OLSR will advertise these IPv4-Mapped-IPv6 address subnets on the backbone so that all the nodes will learn these subnets and they will calculate the best route to these subnets.&lt;br /&gt;
&lt;br /&gt;
Lets take example again, using IPv4. HP will address the data to the IPv4 address of Dell and send it to node C. Node C will change the IPv4 packet to an IPv6 packet with an IPv4-mapped-IPv6 addresses. From there it will follow the same route as the IPv6 example above. Node E will take the original IPv4 packet out of the IPv4-mapped-IPv6 packet and it will send the original IPv4 packet to Dell.&lt;br /&gt;
&lt;br /&gt;
See http://wirelessafrica.meraka.org.za/wiki/index.php/John%27s_research#4over6_Automatic_tunnels for more detail of the 4over6 tunneling protocol.&lt;br /&gt;
&lt;br /&gt;
=== Why is the mesh using IPv6 ? ===&lt;br /&gt;
&lt;br /&gt;
==== Reason one ====&lt;br /&gt;
It is predicted that unused IPv4 address space will be depleted within the next two years. Operating systems like Vista and most Unix systems defaults to IPv6 by default and most applications are IPv6 ready. With this in mind it makes sense that any new networking products should provide both IPv4 and IPv6 support.&lt;br /&gt;
&lt;br /&gt;
==== Reason two ====&lt;br /&gt;
In a single radio mesh network there is just one RF channel and everybody makes use of the same IP subnet. One limitation of a single radio mesh is that each mesh radio needs to handle both incoming and outgoing traffic. This causes the throughput to be halved because a radio cannot transmit and receive simultaneously. Another problem is that if one radio is transmitting then all its neighbors must all be in listening mode. These problems can cause a single radio mesh to very quickly run out of steam.&lt;br /&gt;
&lt;br /&gt;
Multi-radio mesh technology solves this problem by configuring every radio inside a router to operate on a different frequency and on a different IP subnet. In the HPN two radios are dedicated for backbone traffic and the third is used to create a client hotspot. 802.11a is generally used for backbone traffic, and 802.11b/g for client coverage. &lt;br /&gt;
&lt;br /&gt;
In a multi-radio mesh network it is very difficult to use the same IPv4 subnet on all the backbone wireless interfaces inside a mesh. The OLSR routing protocol uses broadcast packets to flood OLSR routing information to all of it&#039;s neighbors. This works very well with a single radio mesh, but not with a multi-radio mesh. Almost all TCP/IP (IPv4) stacks implementations can only send out broadcast packets on one interface at a time, but not on multiple interfaces on the same IPv4 subnet. This means that every interface needs to operate on a different IPv4 subnet, with the effect that some OLSR links may be physically possible, but it cannot be used for data because the IPv4 subnets are different. A multi-radio IPv4 OLSR network is possible, but it usually needs a lot of planning and configuration.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv4-Network.png]]&lt;br /&gt;
&lt;br /&gt;
The TCP/IP stack of IPv6 does not make use of Broadcast packets and OLSR routing information is flooded to it&#039;s neighbors via multicast packets. These multicast packets will automatically be duplicated by the TCP/IP stack and send out via multiple IPv6 interfaces on the same IPv6 subnet. This means that the mesh can use the same IPv6 subnet, all over the mesh backbone, without any problems. With a multi-radio IPv6 OLSR mesh you don&#039;t need any IPv6 configuration on the backbone as all the nodes use the same IPv6 subnet.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv6-Network.png]]&lt;br /&gt;
&lt;br /&gt;
== Behaviour of a normal node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
The following describes how a normal node will behave inside a mesh and what service it will provide:&lt;br /&gt;
&lt;br /&gt;
* Each HPN node is equipped with two 5.8Ghz wifi adapters and antennas (panel and omni) that is used to build the backbone. Each one of these adapters is configured to operate on a specific wifi frequency that is also tied to a specific wifi channel. In order to make our HPN more user friendly we decided to assign these two channels to the colours &amp;quot;red&amp;quot; and &amp;quot;green&amp;quot;. The HPN node then inherit what ever colour is assigned to the directional panel antenna on the front. &lt;br /&gt;
&lt;br /&gt;
This means that when the &amp;quot;green&amp;quot; channel is configured on the panel antenna, then the &amp;quot;red&amp;quot; is used on the omni and we will refer to the HPN node as a GREEN node. If the &amp;quot;red&amp;quot; channel is used on the panel, then we talk about a RED node and the &amp;quot;green channel is used on the omni. The default setting for a new node is to be a GREEN node and it can be changed to a RED node via the web interface.&lt;br /&gt;
&lt;br /&gt;
When a new node boots up for the fist time, then it will go into a hunting mode and it will search for other nodes in the mesh. There are lots of possible different ways to do this hunting. We decided to implement a very simple and easy algorithm until someone gets &#039;n new bright ideas. The following paragraphs describes our current implementation of our hunting procedure with our [[Initial (old) hunting description]] here.&lt;br /&gt;
&lt;br /&gt;
A HPN node will always start to search for connectivity on the panel antenna, fist on the same colour as the node, and then on the other colour. If no connectivity can be found, then it will hunt on the omni-directional antenna, first on opposite colour as the node, and then on the same colour. This sequence will repeat itself, until connectivity can be found to another node in the network. At this time the channels will be locked the colour of the node will be the same as the colour used on the panel antenna. This setting will stay the same, even across a reboot or power failure, until someone overrides it via the web interface.&lt;br /&gt;
&lt;br /&gt;
Lets take a new GREEN node for a example. When it boots up for the first time then it will come up in the hunting mode. It will first configure the patch antenna on the &amp;quot;green&amp;quot; frequency. It will perform a link local IPv6 ping on that interface for about 3 seconds to determine if any IPv6 connectivity can be found on that antenna/channel. If no connectivity is found after 3 seconds, then it will hunt further using the &amp;quot;red&amp;quot; channel on the patch, then the &amp;quot;red&amp;quot; channel on the omni and then &amp;quot;green&amp;quot; on the omni.&lt;br /&gt;
&lt;br /&gt;
If no connectivity can be found, then it will start the hunting process from the beginning, or until it is manually locked via the WEB interface. If connectivity can be established, then it will lock the node with the current settings. It will also enable the green/red link LED on the bottom of the node to show connectivity on that channel (The WEB interface can be used to get more information of which node connectivity has been established to). If connectivity is lost then the LED will turn off again. &lt;br /&gt;
&lt;br /&gt;
See hunt-flow-diagram below.&lt;br /&gt;
&lt;br /&gt;
[[Image:Hunt-flow2.png]]&lt;br /&gt;
   &lt;br /&gt;
* When a new node boots up then an unique IPv6 address ((inside this mesh. See IP addressing section) will be configured on all the Ethernet and wireless interfaces. An unique (inside this mesh) IPv4 address is calculated and configured on the Ethernet interface and on the 2.4Ghz omni interface. The node will use the MAC address of the adapter to calculate a unique IPv4 and IPv6 subnet for that interface. These automatic addresses can be override via the WEB interface (E.g. if a globally routeable IPv6 address is required for a website inside the mesh and it should be visible from the Internet). Wireless interfaces are placed into adhoc mode and the channel, ssid and bssid are also configured.&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up then the OLSR daemon is started and it will listen en send OLSR topology packets to all of it&#039;s neighboring nodes. OLSR runs on all the wireless interfaces, but not on the Ethernet interface. All the IPv4 subnets are converted to 4in6 IPv6 addresses and these IPv6 subnets are placed into the HNA section of olsrd.conf, together with the IPv6 subnets that are configured on the Ethernet interface and on the 2.4Ghz omni interface. These HNA subnets are then distributed, via OLSR, to all the other nodes inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The 4over6 tunneling daemon take care of all IPv4 comms and distributing of routing information inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The node will start ntpd daemon on provide NTP time services on all it&#039;s IPv4 and IPv6 addresses. NTP will also synchronize it&#039;s local time with the GW-node on a regular basis.&lt;br /&gt;
&lt;br /&gt;
* The node will register it&#039;s own hostname in DNS on the GW-node. It will start dnsmasq daemon and it will also provide DNS services on all it&#039;s IPv4 and IPv6 addresses. Dnsmasq will forward all DNS queries to the DNS server running on the GW-node.&lt;br /&gt;
&lt;br /&gt;
* Dnsmasq is used to provide IPv4 DHCP services and DNS services on both the Ethernet interface and on the 2.4Ghz omni (hostspot) interface.&lt;br /&gt;
&lt;br /&gt;
* rtadvd will run on both the Ethernet interface and on the 2.4Ghz omni interface and it is used to advertise IPv6 prefixes to locally connected IPv6 client devices.&lt;br /&gt;
&lt;br /&gt;
* sshd allows remote ssh login&#039;s from anywhere in the mesh network.&lt;br /&gt;
&lt;br /&gt;
* watchdog toggles the watchdog during normal operations. Should the system hang for some reason, then the watchdog will restart the HPN node.&lt;br /&gt;
&lt;br /&gt;
* mini_httpd is used for the WEB gui running on the HPN node.&lt;br /&gt;
&lt;br /&gt;
== Behavior of the GateWay node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
Any standard mesh node can become a GateWay node by selecting the &amp;quot;GateWay&amp;quot; button under &amp;quot;Additional features&amp;quot; on the WEB interface. The GateWay node is the place where the mesh will connect to some outside network and it will be the default route for the mesh. When a normal node becomes a GateWay node, then it does not disable any normal node features, but it just adds some additional features. The following are the additional features that a GateWay node will have:&lt;br /&gt;
&lt;br /&gt;
* The GW-node will not go into a hunting mode and it will lock it&#039;s channels with GREEN on the omni and RED on the directional panel. The default channels can be swapped via the WEB interface.&lt;br /&gt;
&lt;br /&gt;
* The GW-node is the default route for the mesh and it will advertise a default route via OLSR to the rest of the mesh.&lt;br /&gt;
&lt;br /&gt;
* The GW-node connects to the outside networks via Ethernet. It will perform a DHCP request on this interface in order to get an automatic IP address and external DNS server configurations from the external network. These setting can be overided via the WEB interface, under &amp;quot;Additional features&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes the DNS server for the mesh and it will configure and start the &#039;named&#039; services on IPv6, as well as on a well known IPv6 address of fec0:0:0:ffff::1. It will allow any node inside a mesh to submit their hostname into DNS and it will provide DNS services to any node or other device inside the mesh on IPv6 only. The GateWay node will also forward external DNS requests to upstream DNS servers if they are available. Upstream DNS servers are usually configured via DHCP but these setting can also be overided under &amp;quot;Additional features&amp;quot; on the WEB interface. DNS services are still available via &#039;dnsmasq&#039;, on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a time server for the mesh. It will synchronize it&#039;s time to an external time server if it&#039;s configured and available, otherwise it will use it&#039;s own internal RTC to synchronize it&#039;s time to. This time will be available to the rest of the mesh on a well known IPv6 address of fec0:0:0:ffff::1 and all the nodes in a mesh will use this time to synchronize their own time servers to. The GW-node will still provide NTP time services on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a firmware update server for the mesh. It will start ftpd services on IPv6, on a well known IPv6 address of fec0:0:0:ffff::1. It will took for new firmware on the Internet. If new firmware is available, then it will download the software and make it available to the other nodes inside the mesh via ftp.&lt;br /&gt;
&lt;br /&gt;
== IPv4 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
IPv4 addresses are not used in the backbone, but only on the edge of the network. This means that every node will have two IPv4 subnets configured, one on the Ethernet adapter (npe0) and the other on the 2.4Ghz omni (ath2) that is used for a wifi hotspot. The High performance node will always use the first IPv4 address on a configured subnet. E.g 10.234.18.1/24&lt;br /&gt;
&lt;br /&gt;
The HPN currently makes use of an automatic IPv4 addressing scheme where the IPv4 subnet is derived from the two least significant bytes of the MAC address of that particular interface. The first bye of the network is always 10 because we are making use of the 10net inside the mesh. The next two byes comes from the last two byes of the Mac address and it will become the IPv4 subnet for that adapter. The adapter itself will be 10.x.x.1 and it will become the default gateway for that subnet. DNSmasq will hand out DHCP addresses form 10.x.x.100 - 10.x.x.199 on the calculated subnet.&lt;br /&gt;
&lt;br /&gt;
 Mac = 00:d0:12:07:cb:73&lt;br /&gt;
 cb.73 (hex) = 203.115 (decimal)&lt;br /&gt;
 IP subnet  = 10.203.115 with /24 subnet mask&lt;br /&gt;
 IP address = 10.203.115.1&lt;br /&gt;
 DHCP = 10.203.115.100-10.203.115.199&lt;br /&gt;
&lt;br /&gt;
This addressing scheme will work 99% of the time, but it is not failsafe. Subnet clashes may occur due to the MAC address numbering schemes used by different vendors. MAC addresses usually have a vendor portion (first part of address) and a product/sequent number portion (last part). The last part is the part that is used to generate an IPv4 address. The last two bytes will most probably, at some stage, be that same for two different cards from two different vendors and there may be a very small chance for both of these cards end up in the same mesh network. In this case the automatic address can be overridden manually in rc.conf.local. At this stage there is no build in detection system that will handle Mac address clashes.&lt;br /&gt;
&lt;br /&gt;
Other addressing schemes to consider:&lt;br /&gt;
* Manage and assign all IPv4 addresses centrally. Program addresses into the HPN&#039;s during the manufacturing process. This will sort out all IPv4 address clashes. Issues - Do you assign a IPv4 address block per community or just sequential per HPN node?&lt;br /&gt;
* Manage a block of IPv4 addresses for each community somewhere on the local mesh. HPN nodes can then request an IPv4 addresses from this repository and use it. Issues - what happens if server is down or during a power failure. Will you get a new IPv4 address every time, simular to what you get with ADSL. This will mean that all the the PC&#039;s and devices that received DHCP addresses from DNSmasq will have to change as well. &lt;br /&gt;
&lt;br /&gt;
Issues that may influence the selection of an addressing scheme:&lt;br /&gt;
* Should there be IPv4 connectivity between different mesh networks ?&lt;br /&gt;
* Should there be IPv4 connectivity between a network inside a mesh and some other place in the Internet ?&lt;br /&gt;
* Should someone upstream device be able to initiate a connection into a mesh network (E.g. web server in mesh). ?&lt;br /&gt;
* Should we make use of legal (routeable) IPv4 address space, or should we stick to the 10net.&lt;br /&gt;
* Should the network be able to build and exchange IPv4 routing information with other networks.&lt;br /&gt;
* Routing information can be simplified if sequential IPv4 addresses are managed centrally and allocated per mesh&lt;br /&gt;
* Should the addressing scheme survive a power cycle or load shedding inside a community&lt;br /&gt;
* Is the WISP going to do NAT ?&lt;br /&gt;
&lt;br /&gt;
== IPv6 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
All the HPN nodes supports end-to-end IPv6 communications over the mesh. IPv6 only needs a network prefix (IPv6 subnet) for every adapter and the protocol stack will work out the IPv6 address for each interface. &lt;br /&gt;
&lt;br /&gt;
Our mesh is making use of a private Unique Local Addresses (ULAs) space, described in [http://www.rfc-editor.org/rfc/rfc4193.txt RFC4193]. This address space in similar to the 10net in IPv4, but with the difference that each ULA is globally unique. This means that we can calculate our own network prefix that we use in a mesh. This leaves the option to use the same prefix for all the different mesh networks, or we can use an unique prefix for every mesh. A unique prefix for every mesh may have an routing advantage if we need to connect different mesh networks together in future, but it also means that HPN&#039;s should be pre-configured with a prefix that is tied to a specific community and the prefix allocations should be managed centrally.&lt;br /&gt;
&lt;br /&gt;
Note that private Unique Local IPv6 addresses are not globally routable, but only inside our mesh. If we need globally routable IPv6 addresses then we need to apply for Provider Independent IPv6 address space from Afrinic. These addresses is uosually someting that is given to some network provider (owner of the network) and it will have a yearly fee attached to it. Issues - it is not always clear who the owner of a communit mesh is.&lt;br /&gt;
&lt;br /&gt;
The best sollution may be to use a combination of both addressing schemes. Use ULA addresses all over the mesh and only use leagal IPv6 addresses where devices needs to be availble on the Internet.&lt;br /&gt;
&lt;br /&gt;
== WEB interface ==&lt;br /&gt;
At the moment there is no WEB GUI for the HPN. This is an suggestion of how the GUI should look like. The idea is to keep it simple as possible with as little as possible that can be changed.&lt;br /&gt;
&lt;br /&gt;
=== WEB Gui main page ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-hunt-html.png|border|300px]][[Image:HPN-green-html.png|border|300px]][[Image:HPN-red-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
The default setting for a HPN is to come up in the hunting mode. After a successful hunt, the HPN will lock to either a red or green node and it will keep the setting, even during power failures. The menu will show the current state of a HPN, but it will also allow you to override the current mode by selecting red, green or hunting manually. Changes are only allowed after a valid login.&lt;br /&gt;
&lt;br /&gt;
The bar graph will give some indication of signal strength to other nodes on both the red and green channel. Note that there can be a link to more than one node on a given channel (red or green). The indicator on the main page will only show the signal to the first node that it links with. A more detailed view is available on the align page under the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
The last thing that can be changed from the main menu is the name of the HPN. This name will also be registered into the mesh DNS. All changes will only take effect after selecting the SUBMIT button. Additional features can be reached via the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
=== More features ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-features-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
==== Configure / Align / Stats ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-configure-html.png|border|300px]][[Image:HPN-align-html.png|border|300px]][[Image:HPN-stats-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
&lt;br /&gt;
[[High_Performance_Node_-_Specification]]&lt;br /&gt;
&lt;br /&gt;
== Upgrades ==&lt;br /&gt;
All the HPN nodes in a mesh will look for new firmware updates from the GateWay node on a regular basis. New firmware is placed inside a special directory on the GateWay node and it is made available, via ftp, to all the other HPN nodes in the mesh. Each HPN nodes will compare the firmware from this directory with it&#039;s current version of firmware to determine if it&#039;s newer. If new firmware is available, then the node will download and untar the new firmware onto a spare partition on the flash disk. After that all the custom configurations are copied over to the new partition. The HPN will then change the active partition to the new one and it will reboot with the new firmware. If someting should go wrong with the upgrade, then the HPN will revert back to the previous version of firmware.&lt;br /&gt;
&lt;br /&gt;
The GateWay node will look for new firmware somewhere on the Internet or from the WISP box. If available it will download the new firmware and place it into the special ftp directory.&lt;br /&gt;
&lt;br /&gt;
== Typical Outdoor Range at 5.8Ghz ==&lt;br /&gt;
At this stage we haven&#039;t found a testing site that is suitable for our tests. The following is just gestimates and it still needs to be tested.&lt;br /&gt;
&lt;br /&gt;
* Omni to Omni: up to xx km (2km?)&lt;br /&gt;
* Panel to Omni: up to xx km (5km?)&lt;br /&gt;
* Panel to Panel: up to xx km (10km?)&lt;br /&gt;
* External to External: more than xx km (20km?), depending on antenna type&lt;br /&gt;
&lt;br /&gt;
Now for some test results:&lt;br /&gt;
For our first test we selected a friendly site for the panel-to-panel test. We selected Anita&#039;s home because she is just over 10km from Meraka and there is a clear line of site between both sites (this is also our longest 11a link so far). Another reason is that we already have a 32bBi directional antenna, from an existing installation on Meraka&#039;s roof, that is pointing directly to her home. &lt;br /&gt;
&lt;br /&gt;
We used one of our new routers for this site, but we replaced the 5.8Ghz omni antenna with a 27dBi grid antenna so that we could have one link to login to the router, while we can do some tests on the second antenna.&lt;br /&gt;
&lt;br /&gt;
Here is a picture of Anita&#039;s husband with the router the he installed on their roof.&lt;br /&gt;
&lt;br /&gt;
[[Image:001.jpg|border|300px]][[Image:002.jpg|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Regulatory ==&lt;br /&gt;
Wirelss equipment that operate in the ISM bands do not need an spectrum licence, but they need to be ICASA approved. All the wifi adapters inside the HPN nodes are ICASA approved. From recent media reports regarding DABBA communications and there equipent in the Orange Farm area, it seems like our HPN node needs to get ICASA approval for the complete assembled HPN node as well. Every node should have it&#039;s own ICASA sticker on the back.&lt;br /&gt;
&lt;br /&gt;
== Using WEP/WPA in adhoc mode ==&lt;br /&gt;
&lt;br /&gt;
One of the requirements of the High Performance Node is to have WEP or WPA enabled between the wireless links of the mesh nodes. This is one of the functionalities that we would like to sort out before we install any of the nodes in the field. It&#039;s very difficult to change the encryption mode after an installation because the mesh nodes will lose connectivity if one node is upgraded to use WEP, while another is still using older software without WEP.&lt;br /&gt;
&lt;br /&gt;
WEP and WPA are both methods to enable the encryption of data that it is send over the air. WEP (Wired equivalence privacy) is an older standard and it makes use of a WEP encryption engine while the newer WPA standard added the use of an AES encryption engine. WEP encryption has some security flaws embedded into the protocol and there are several tools available on the Internet that can crack WEP keys. These tools are more effective with the cracking of 64bit WEP keys than with 128bit keys and they require a large amount of captured data and processing power to crack a key. Note that not all WEP keys can be cracked, but only weak keys and that flaw was addressed and fixed by WPA.&lt;br /&gt;
&lt;br /&gt;
Wireless adapters on Unix Systems can operate in three different modes: Client, Hostap (Access Point) and Adhoc mode. Most of the implementations of wireless (802.11) networks are based on a model where there is one Access Point with several wireless clients attached to to it. &lt;br /&gt;
&lt;br /&gt;
[[Image:AP-client.png|center|One Access point with many nodes]]&lt;br /&gt;
 &lt;br /&gt;
Wireless Mesh networks make use of the less tested Adhoc mode of 802.11.&lt;br /&gt;
&lt;br /&gt;
[[Image:Adhoc.png|center|Many nodes using Adhoc mode (many point to point links)]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
WEP and WPA requires a couple of kld&#039;s to be loaded before they can be configured. The following kld&#039;s should be added to loader.conf&lt;br /&gt;
wlan_acl_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_amrr_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_ccmp_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_tkip_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_wep_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_xauth_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== WEP ====&lt;br /&gt;
Enable and test WEP in Adhoc mode on the HPN.&lt;br /&gt;
WEP makes use of a single PSK that needs to be configured on all the wireless nodes. Any node or wireless device that is configured with this PSK will have the capability to crypt and decrypt these wireless packets. There are two methods to configure WEP in FreeBSD. You can use either  use ifconfig directly or you can make use of the WPA supplicant utility.&lt;br /&gt;
&lt;br /&gt;
ifconfig e.g.&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0 10.10.1.2/24 wep deftxkey 1 wepkey 128bitwepison&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0&lt;br /&gt;
 ath0: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; metric 0 mtu 1500&lt;br /&gt;
        ether 00:80:48:50:9e:69&lt;br /&gt;
        inet6 fe80::280:48ff:fe50:9e69%ath0 prefixlen 64 scopeid 0x1&lt;br /&gt;
        inet6 fd9c:6829:597c:20:280:48ff:fe50:9e69 prefixlen 64&lt;br /&gt;
        inet6 fd9c:6829:597c:20:: prefixlen 64 anycast&lt;br /&gt;
        inet 10.10.1.2 netmask 0xffffff00 broadcast 10.10.1.255&lt;br /&gt;
        media: IEEE 802.11 Wireless Ethernet autoselect mode 11g &amp;lt;adhoc&amp;gt;&lt;br /&gt;
        status: associated&lt;br /&gt;
        ssid ptamesh channel 13 (2472 Mhz 11g) bssid 56:e5:be:30:14:5a&lt;br /&gt;
        authmode OPEN privacy ON deftxkey 1 wepkey 1:104-bit txpower 31.5&lt;br /&gt;
        scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi11g 7&lt;br /&gt;
        roam:rate11g 5 protmode CTS burst&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Enable WEP on three mesh nodes and test connectivity.&lt;br /&gt;
 mesh-9e69:~ # ping6 ff02::1%ath0&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9e69%ath0, icmp_seq=87 hlim=64 time=2.122 ms&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9ddd%ath0, icmp_seq=87 hlim=64 time=5.625 ms(DUP!)&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9a44%ath0, icmp_seq=87 hlim=64 time=32.358 ms(DUP!)&lt;br /&gt;
&lt;br /&gt;
Everything seems to work fine (as expeted) with WEP enabled in the mesh.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WPA&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WPA was designed to work in an environment where you have one AP and several clients and not for Adhoc (mesh) networks. On the AP you have the Authenticator software and on the client you have the supplicant software. This means that if one would like to use WPA to it&#039;s full then every mesh node needs to be an Authenticator for all the other nodes it can see, as well as a supplicant for every node it can see. According to the WPA design document http://wirelessafrica.meraka.org.za/wiki/images/3/39/Wpa_supplicant-devel-04.pdf one can use WPA in Adhoc mode only in a static way with PSK&#039;s:&lt;br /&gt;
 IEEE 802.11 operation mode (Infrastucture/IBSS).&lt;br /&gt;
 0 = infrastructure (Managed) mode, i.e., associate with an AP.&lt;br /&gt;
 1 = IBSS (ad-hoc, peer-to-peer)&lt;br /&gt;
 Note: IBSS can only be used with key_mgmt NONE (plaintext and static WEP) and key_mgmt=WPA-&lt;br /&gt;
 NONE (ﬁxed group key TKIP/CCMP). In addition, ap_scan has to be set to 2 for IBSS. WPA-None requires&lt;br /&gt;
 following network block options: proto=WPA, key_mgmt=WPA-NONE, pairwise=NONE, group=TKIP&lt;br /&gt;
 (or CCMP, but not both), and psk must also be set (either directly or using ASCII passphrase).&lt;br /&gt;
&lt;br /&gt;
This is methods is very similar to the way that WEP is being used. This means the the only advantage of using WPA over WEP is that one can make use of the AES encryption engine that comes with WPA. Please note that with this mode of WPA and with WEP that anyone can decrypt the data being send over the air if they get hold of the mesh-wide PSK that is configured on every node in the network. If security is of importance them end users should consider the use of point-to-point security mechanisms like VPN&#039;s.&lt;br /&gt;
&lt;br /&gt;
The configuration of WPA is not supported in command line mode, but only with the wpa_supplicant software. This is an example of a wpa_supplicant.conf file to enable WPA in Adhoc mode:&lt;br /&gt;
&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 #&lt;br /&gt;
 network={&lt;br /&gt;
   ssid=&amp;quot;ptamesh&amp;quot;&lt;br /&gt;
 # Channel  13 : 2472  Mhz 11g&lt;br /&gt;
   frequency=2472&lt;br /&gt;
   mode=1&lt;br /&gt;
   proto=WPA&lt;br /&gt;
   key_mgmt=WPA-NONE&lt;br /&gt;
   pairwise=NONE&lt;br /&gt;
   group=TKIP&lt;br /&gt;
   psk=&amp;quot;mesh-ipv6&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To start the WPA software during boot-up one needs to add WPA to the ifconfig line in rc.conf. E.g.&lt;br /&gt;
&lt;br /&gt;
 ifconfig_ath0=&amp;quot;WPA 10.10.1.1/24 mode 11g mediaopt adhoc channel 13 ssid ptamesh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Unfortunately WPA did not work as easy as WEP, so it&#039;s off to debugging.&lt;br /&gt;
&lt;br /&gt;
Starting wpa_supplicant in the foreground with debugging enabled. E.g&lt;br /&gt;
&lt;br /&gt;
 wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
&lt;br /&gt;
The debugging output shows that something happens that initiates a wlan scan operation, while the card is in Adhoc mode. This should not happen and wpa_supplicant software never completes the configuration due to this error.&lt;br /&gt;
&lt;br /&gt;
 mesh-9ddd:~ # wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
 Initializing interface &#039;ath0&#039; conf &#039;/etc/wpa_supplicant.conf&#039; driver &#039;default&#039; &lt;br /&gt;
 ctrl_interface &#039;N/A&#039; bridge &#039;N/A&#039;&lt;br /&gt;
 Configuration file &#039;/etc/wpa_supplicant.conf&#039; -&amp;gt; &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 Reading configuration file &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 Priority group 0&lt;br /&gt;
   id=0 ssid=&#039;ptamesh&#039;&lt;br /&gt;
 Initializing interface (2) &#039;ath0&#039;&lt;br /&gt;
 EAPOL: SUPP_PAE entering state DISCONNECTED&lt;br /&gt;
 EAPOL: KEY_RX entering state NO_KEY_RECEIVE&lt;br /&gt;
 EAPOL: SUPP_BE entering state INITIALIZE&lt;br /&gt;
 EAP: EAP entering state DISABLED&lt;br /&gt;
 EAPOL: External notification - portEnabled=0&lt;br /&gt;
 EAPOL: External notification - portValid=0&lt;br /&gt;
 Own MAC address: 00:80:48:50:9d:dd&lt;br /&gt;
 wpa_driver_bsd_set_wpa: enabled=1&lt;br /&gt;
 wpa_driver_bsd_set_wpa_internal: wpa=3 privacy=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=0&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=2&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=3&lt;br /&gt;
 wpa_driver_bsd_set_countermeasures: enabled=0&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 Setting scan request: 0 sec 100000 usec&lt;br /&gt;
 Added interface ath0&lt;br /&gt;
 State: DISCONNECTED -&amp;gt; SCANNING&lt;br /&gt;
 Trying to associate with SSID &#039;ptamesh&#039;&lt;br /&gt;
 Cancelling scan request&lt;br /&gt;
 WPA: clearing own WPA/RSN IE&lt;br /&gt;
 Automatic auth_alg selection: 0x1&lt;br /&gt;
 wpa_driver_bsd_set_auth_alg alg 0x1 authmode 1&lt;br /&gt;
 WPA: No WPA/RSN IE available from association info&lt;br /&gt;
 WPA: Set cipher suites based on configuration&lt;br /&gt;
 WPA: Selected cipher suites: group 8 pairwise 1 key_mgmt 16 proto 1&lt;br /&gt;
 WPA: clearing AP WPA IE&lt;br /&gt;
 WPA: clearing AP RSN IE&lt;br /&gt;
 WPA: using GTK TKIP&lt;br /&gt;
 WPA: using PTK NONE&lt;br /&gt;
 WPA: using KEY_MGMT WPA-NONE&lt;br /&gt;
 WPA: Set own WPA IE default - hexdump(len=24): dd 16 00 50 f2 01 01 00 00 50 &lt;br /&gt;
 f2 02 01 00 00 50 f2 00 01 00 00 50 f2 00&lt;br /&gt;
 No keys have been configured - skip key clearing&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 State: SCANNING -&amp;gt; ASSOCIATING&lt;br /&gt;
 wpa_driver_bsd_associate: ssid &#039;ptamesh&#039; wpa ie len 24 pairwise 0 group 2 key &lt;br /&gt;
 mgmt 4&lt;br /&gt;
 ioctl[SIOCS80211, op 22, len 24]: Invalid argument&lt;br /&gt;
 Association request to the driver failed&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 Cancelling authentication timeout&lt;br /&gt;
 State: ASSOCIATING -&amp;gt; COMPLETED&lt;br /&gt;
 CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (auth) [id=-1 &lt;br /&gt;
 id_str=]&lt;br /&gt;
 EAPOL: External notification - portControl=ForceAuthorized&lt;br /&gt;
&lt;br /&gt;
Next was to install fresh copy of the FreeBSD src code onto my PC. I found the wpa_supplicant source code under /usr/src/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c Build a new driver from source code and run it on a router. After that I&#039;ve added in a lot of printf statements to trace how the driver works and to locate the code that puts the wifi card in scanning mode. In the end I found out that wpa_supplicant driver did not put the card in scanning mode, but it somehow caused the 802.11 stack to start the scanning. Unfortunately I don&#039;t know enough about the 802.11 code in FreeBSD to do any mode debugging. I&#039;ve send a mail about the problem to one of the FreeBSD mailing lists and the originator of most of the 802.11 code in FreeBSD (Sam Leffler) said I must log a problem report. So I logged a problem report with FreeBSD and now we have to wait and see if someone to take responsibility to fix this problem. More information on the problem report can be found at: http://www.freebsd.org/cgi/query-pr.cgi?pr=126822&lt;br /&gt;
&lt;br /&gt;
For now I recommend that we make use of WEP instead of WPA in our implementation as it is working and there isn&#039;t such a big advantage in using WPA over WEP in this mode except for the encryption algorithm that changes from WEP to AES.&lt;br /&gt;
&lt;br /&gt;
== Antenna calculations ==&lt;br /&gt;
&lt;br /&gt;
Every HP-node has two 5.15-5.6 GHz antennas. The one as a build in patch antenna and the other is an 5.1-5.8 GHz omni-directional antenna. The idea is that the patch antenna of a node will either be aligned to the omni or the patch antenna of another node. The following calculations is to get an feeling of what distances should be possible between these antennas.&lt;br /&gt;
&lt;br /&gt;
South African Wifi channels:&lt;br /&gt;
 Channel   1 : 2412  Mhz 11g          Channel  48 : 5240  Mhz 11a&lt;br /&gt;
 Channel   2 : 2417  Mhz 11g          Channel  52 : 5260* Mhz 11a&lt;br /&gt;
 Channel   3 : 2422  Mhz 11g          Channel  56 : 5280* Mhz 11a&lt;br /&gt;
 Channel   4 : 2427  Mhz 11g          Channel  60 : 5300* Mhz 11a&lt;br /&gt;
 Channel   5 : 2432  Mhz 11g          Channel  64 : 5320* Mhz 11a&lt;br /&gt;
 Channel   6 : 2437  Mhz 11g          Channel 100 : 5500* Mhz 11a&lt;br /&gt;
 Channel   7 : 2442  Mhz 11g          Channel 104 : 5520* Mhz 11a&lt;br /&gt;
 Channel   8 : 2447  Mhz 11g          Channel 108 : 5540* Mhz 11a&lt;br /&gt;
 Channel   9 : 2452  Mhz 11g          Channel 112 : 5560* Mhz 11a&lt;br /&gt;
 Channel  10 : 2457  Mhz 11g          Channel 116 : 5580* Mhz 11a&lt;br /&gt;
 Channel  11 : 2462  Mhz 11g          Channel 120 : 5600* Mhz 11a&lt;br /&gt;
 Channel  12 : 2467  Mhz 11g          Channel 124 : 5620* Mhz 11a&lt;br /&gt;
 Channel  13 : 2472  Mhz 11g          Channel 128 : 5640* Mhz 11a&lt;br /&gt;
 Channel  36 : 5180  Mhz 11a          Channel 132 : 5660* Mhz 11a&lt;br /&gt;
 Channel  40 : 5200  Mhz 11a          Channel 136 : 5680* Mhz 11a&lt;br /&gt;
 Channel  44 : 5220  Mhz 11a          Channel 140 : 5700* Mhz 11a&lt;br /&gt;
&lt;br /&gt;
HP-Node detailed specs: http://wirelessafrica.meraka.org.za/wiki/images/0/07/WLAN-A0033.pdf&lt;br /&gt;
&lt;br /&gt;
Pigtail detail specs: http://wirelessafrica.meraka.org.za/wiki/images/0/0a/Ca178_cable_assemblies_datasheet.pdf&lt;br /&gt;
&lt;br /&gt;
Wireless adapter detail specs: http://wirelessafrica.meraka.org.za/wiki/images/2/21/Wlm54sag23.pdf&lt;br /&gt;
&lt;br /&gt;
OR the Mikrotik version of the same adapter called a R52H (also manufactured by Compex, but usually cheaper)&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:R52H.pdf&lt;br /&gt;
&lt;br /&gt;
Another popular adapter is the DCMA-82 from Wistron. They have better RX sensitivity, but lower output power and they are a bit more expensive than the Compex cards. In some of the discussions that I&#039;ve seen they state that the DCMA-82 has much cleaner output power, better RX sensitivity, and a lower failure rate/quality issues than Compex&#039;s cards.&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:DCMA-82.pdf&lt;br /&gt;
&lt;br /&gt;
Node specs summary:&lt;br /&gt;
 Patch antenna            - 21-23 dBi,   16 deg H,  11 deg V, 5.15 -5.6 GHz&lt;br /&gt;
 5Ghz Omni antenna        - 8-11 dBi,    360 deg H, 10 deg V, 5.1 - 5.85 GHz&lt;br /&gt;
 2.4Ghz Omni antenna      - 7.5-8.5 dBi, 360 deg H, 12 deg V, 2.4 - 2.5 GHz&lt;br /&gt;
 30mm U.FL-SMA pigtail    - RG178 cable insertion loss, 2.4 GHZ = -1.1dB, 5.6 GHz = -2dB&lt;br /&gt;
 Compex WLM54AG23 adapter - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            23dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
                            17dBm @ 54Mbps&lt;br /&gt;
 Mikrotik (Compex) R52H   - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            24dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
 Wistron DCMA-82          - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -82 dBm @ 36Mbps&lt;br /&gt;
                            -72 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            22.5dBm @ 6-24Mbps&lt;br /&gt;
                            21.5dBm @ 36Mbps&lt;br /&gt;
                            18dBm @ 48Mbps&lt;br /&gt;
&lt;br /&gt;
I could not find any receive sensitivity info for ranges between 6Mbps and 54Mbps for the WLM54AG23. The closest I could find was the specs of another manufacturer card, using the same Atheros chipset as the WLM54AG23. Here is the receive sensitivity info for a WMIA-166AG Dual-Band miniPCI module (802.11a/g)&lt;br /&gt;
Nominal Temp Range:&lt;br /&gt;
  6Mbps 10-5 BER @ -90 dBm, typical&lt;br /&gt;
  9Mbps 10-5 BER @ -89 dBm, typical&lt;br /&gt;
 12Mbps 10-5 BER @ -88 dBm, typical&lt;br /&gt;
 18Mbps 10-5 BER @ -86 dBm, typical&lt;br /&gt;
 24Mbps 10-5 BER @ -82 dBm, typical&lt;br /&gt;
 36Mbps 10-5 BER @ -78 dBm, typical&lt;br /&gt;
 48Mbps 10-5 BER @ -72 dBm, typical&lt;br /&gt;
 54Mbps 10-5 BER @ -68 dBm, typical &lt;br /&gt;
&lt;br /&gt;
The WLM54AG23 is not the best wifi adapter in the market, but it gives a good compromise between price vs performance. If one need to push the limits of a specific link then I would probable select the SR5 from Ubiquity. They have excellent TX power and RX sensitivity.&lt;br /&gt;
 &lt;br /&gt;
There are lots of wifi/antenna/distance calculators available on the WEB. Most of these calculators cannot calculate the max distance for a link, you have to specify the distance and it will calculate you dBm margin. Links to a couple of Wifi/antenna/distance calculators:&lt;br /&gt;
&lt;br /&gt;
 http://www.radiolabs.com/stations/wifi_calc.html&lt;br /&gt;
 http://www.zytrax.com/tech/wireless/calc.htm&lt;br /&gt;
 http://www.widgetbox.com/widget/wifi-link-calculator&lt;br /&gt;
 http://www.wifiextreme.com.au/index.php?main_page=page_5&lt;br /&gt;
 http://www.rflinx.com/help/calculations&lt;br /&gt;
 http://www.olotwireless.net/castella/radio.htm&lt;br /&gt;
&lt;br /&gt;
Here are some formulas use to calculate a link budget:&lt;br /&gt;
  Free space loss = 36.56 + 20Log10(Frequency) + 20Log10(Dist in miles)&lt;br /&gt;
  mW to dBm = 10Log10(milliWatts) + 30&lt;br /&gt;
  dBm to mW = 10(dBm/10)&lt;br /&gt;
  RX Power = Margin - RX sensitivity&lt;br /&gt;
  Theoretical margin = TX power budget + RX power budget - free space loss&lt;br /&gt;
  SAD factor = Theoretical margin/TX power budget * 100 and shows the percentage of spare power on transmission.&lt;br /&gt;
&lt;br /&gt;
(Free Space Loss) = 92.5 + (20 Log fequency) + (20 log km distance)&lt;br /&gt;
&lt;br /&gt;
Free space loss @ 5400GHz:&lt;br /&gt;
 1km = -107.07dB      11km = -128.028dB&lt;br /&gt;
 2km = -113.09dB      12km = -128.784dB&lt;br /&gt;
 3km = -116.61dB      13km = -129.479dB&lt;br /&gt;
 4km = -119.11dB      14km = -130.123dB&lt;br /&gt;
 5km = -121.05dB      15km = -130.722dB&lt;br /&gt;
 6km = -122.63dB      16km = -131.282dB&lt;br /&gt;
 7km = -123.97dB      17km = -131.809dB&lt;br /&gt;
 8km = -125.13dB      18km = -132.305dB&lt;br /&gt;
 9km = -126.15dB      19km = -132.775dB&lt;br /&gt;
 10km = -127.07dB     20km = -133.221dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPNode with a 5Ghz patch to omni link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Omni: &lt;br /&gt;
 Min link distance @ 54Mbps 0.9km:              Max link distance @ 54Mbps 1.55km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -106dB                      Free space loss = -111dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 6.9km:              Max link distance @ 24Mbps 12.3km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 34km free space  = -124dB                      Free space loss = -129dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 17km:                Max link distance @ 6Mbps 30.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 34km free space  = -132dB                      Free space loss = -137dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPnodes with a 5Ghz patch to patch link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Patch:&lt;br /&gt;
 Min link distance @ 54Mbps 3.9km:              Max link distance @ 54Mbps 6km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -119dB                      Free space loss = -123dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 30.9km:             Max link distance @ 24Mbps 38.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 Free space loss  = -137dB                      Free space loss = -139dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 77.6km:              Max link distance @ 6Mbps 123km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 Free space loss  = -145dB                      Free space loss = -149dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4630</id>
		<title>High performance node page</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4630"/>
		<updated>2009-05-21T13:24:54Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Behaviour of a normal node in a mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Development Team Research Pages]][[Category: Johann&#039;s Research Pages]][[Category: High Performance Node]]&lt;br /&gt;
&lt;br /&gt;
== What is a HPN (high performance node) ? ==&lt;br /&gt;
&lt;br /&gt;
The HPN is a multi-radio (3x radios), high performance, wireless (802.11) router. It has three antennas, one 5.8Ghz directional panel antenna as well as two omni&#039;s (2.4Ghz + 5.8Ghz). At the bottom of the router there is a weather proof UTP connector that is used for both Power-Over-Ethernet (PoE) and Ethernet connectivity to the router. A special mounting bracket at the back of the router allows it to be attached to an aluminum pole that is usually mounted to the side of a building or some structure.&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN.png]]&lt;br /&gt;
&lt;br /&gt;
== How to build a mesh with HPN&#039;s ==&lt;br /&gt;
The idea is to build a mesh network with these routers by aligning each directional antennas to point to a neighboring omni or another directional antenna. The wireless cards in a router operates on different channels (frequencies). To make it more user friendly each channel (frequencies) is tied to a color. This means that a red panel antenna must be aligned to a red omni (or another red panel) and a green panel must be aligned to a green omni (or green panel). The blue channel (2.4Ghz) is used to create a wifi hostspot for clients who would like to connect to the mesh network via wifi.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mesh-Network.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every mesh network usually have one GateWay that connects to the Internet or to some other network. Any one of the mesh nodes can be configured to become a GateWay for the mesh. When a node becomes a GateWay then the channels (frequencies) of the antennas are fixed  to the following: 5.8Ghz directional panel = RED, 5.8Ghz omni = GREEN and the 2.4Ghz omni = BLUE. The GateWay node will also become the DNS server for the mesh and all the nodes inside the mesh will register their HostNames with the DNS server. Another function of the GateWay node is to act as a time server for the mesh network and all the nodes inside the mesh will synchronize their time with the GateWay node. &lt;br /&gt;
&lt;br /&gt;
The best approach to build a mesh network is to start with the installation of the GateWay node. Next you install the node(s) that aligns to the GateWay node and then grow the mesh from there. Fist perform a visual alignment of the panel antenna on the node before the power is switched on. When a normal node starts up for the first time, then it will hunt for a mesh signal and it will lock it&#039;s channels (frequencies) once connectivity is established. It will first hunt for connectivity on both the red and green channels on the directional panel antenna for X seconds. If no signal is found, then the hunt will continue on the 5.8Ghz omni directional antenna for X seconds. This sequence will repeat itself until a signal is found, or until the channels are manually locked via the web interface on the node itself. &lt;br /&gt;
&lt;br /&gt;
Every node has a GREEN and a RED LED that is visible from underneath the node (should be visible when one stands under the node that is mounted on a pole). These LEDs are there to give some indication of connectivity and they will only turn on if connectivity can be established on either the red or green channel. Note that the LED does not show the signal quality or to what node it is connected to, it only shows that there is connectivity to another HPN node and on what channel (red or green). Signal quality and node connectivity information is only available via the web interface, but in most cases a visual alignment combined with a link indicator will be sufficient enough to get a mesh node up and running.&lt;br /&gt;
&lt;br /&gt;
== How can a client connect to the mesh ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Hpn-switch-pc.png]]&lt;br /&gt;
&lt;br /&gt;
Client devices can connect to any of the nodes via Ethernet or via wifi (blue channel = hostspot). The client devices should be configured to make use of DHCP so that all networking configurations can be done automatically (The node will provide all the networking details via DHCP). It is also recommended that the IPv6 protocol stack should be switch on if it is available. IPv6 should already be enabled on Windows Vista as well as most Unix systems.&lt;br /&gt;
&lt;br /&gt;
== How does the mesh work ? ==&lt;br /&gt;
&lt;br /&gt;
Almost everything in the network will be configured automatically, except for the selection of the gateway node and the channel (red or green) of a wireless link. The mesh supports both IPv6 and IPv4 traffic from any end-point (a place where a mesh client connects) to any other end-point in the mesh, while the backbone uses IPv6 only. A routing protocol called OLSR (Optimized Link State Routing) is used to exchange routing information between all the nodes inside the mesh and to select the best path for data traffic between end-points in the mesh.&lt;br /&gt;
&lt;br /&gt;
[[Image:OLSR.png]]&lt;br /&gt;
&lt;br /&gt;
Lets take an example (see diagram) where HP want to send data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv6 ====&lt;br /&gt;
HP will address the data to the IPv6 address of Dell and send it to node C. Node C will look in it&#039;s routing table and see that there are two routes to Dell, one route via node B-A-D-E and the other route via D-E. It will then select the best route and send it to the next node, in our case node D. Node D will look in it&#039;s routing table and see that the only route to Dell is via node E. Node E will look at it&#039;s routing table and see that Dell is directly connected and it will forward the data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv4 ====&lt;br /&gt;
This one is a bit more complicated. IPv4 is only used on the outside of the network (where the mesh clients connect to it) and then the IPv4 traffic is tunneled over the IPv6 backbone of the mesh to any another end point in the mesh. The mesh will automatically create a one-to-many IPv4 tunnel over the IPv6 network (4over6 tunneling protocol). This means that it looks like a network with an IPv4 tunnel from every IPv4 subnet to every other IPv4 subnet in the mesh. From a client&#039;s perspective it looks like a normal IPv4 routed network. From the backbone&#039;s perspective it looks like a IPv6 only network and all the OLSR routing information is IPv6 only. &lt;br /&gt;
&lt;br /&gt;
So how does the network know how to forward IPv4 packets to the correct destination ? It makes use of IPv4-mapped-IPv6 addresses (see [http://tools.ietf.org/html/rfc4291#section-2.5.5 RFC4291] and [http://tools.ietf.org/html/rfc4038 RFC4038]). Every node will map an IPv4 addresses into a IPv6 address before data goes to the backbone and the IPv4-Mapped-IPv6 addresses are converted back to a plain IPv4 address when it comes out of the backbone. OLSR will advertise these IPv4-Mapped-IPv6 address subnets on the backbone so that all the nodes will learn these subnets and they will calculate the best route to these subnets.&lt;br /&gt;
&lt;br /&gt;
Lets take example again, using IPv4. HP will address the data to the IPv4 address of Dell and send it to node C. Node C will change the IPv4 packet to an IPv6 packet with an IPv4-mapped-IPv6 addresses. From there it will follow the same route as the IPv6 example above. Node E will take the original IPv4 packet out of the IPv4-mapped-IPv6 packet and it will send the original IPv4 packet to Dell.&lt;br /&gt;
&lt;br /&gt;
See http://wirelessafrica.meraka.org.za/wiki/index.php/John%27s_research#4over6_Automatic_tunnels for more detail of the 4over6 tunneling protocol.&lt;br /&gt;
&lt;br /&gt;
=== Why is the mesh using IPv6 ? ===&lt;br /&gt;
&lt;br /&gt;
==== Reason one ====&lt;br /&gt;
It is predicted that unused IPv4 address space will be depleted within the next two years. Operating systems like Vista and most Unix systems defaults to IPv6 by default and most applications are IPv6 ready. With this in mind it makes sense that any new networking products should provide both IPv4 and IPv6 support.&lt;br /&gt;
&lt;br /&gt;
==== Reason two ====&lt;br /&gt;
In a single radio mesh network there is just one RF channel and everybody makes use of the same IP subnet. One limitation of a single radio mesh is that each mesh radio needs to handle both incoming and outgoing traffic. This causes the throughput to be halved because a radio cannot transmit and receive simultaneously. Another problem is that if one radio is transmitting then all its neighbors must all be in listening mode. These problems can cause a single radio mesh to very quickly run out of steam.&lt;br /&gt;
&lt;br /&gt;
Multi-radio mesh technology solves this problem by configuring every radio inside a router to operate on a different frequency and on a different IP subnet. In the HPN two radios are dedicated for backbone traffic and the third is used to create a client hotspot. 802.11a is generally used for backbone traffic, and 802.11b/g for client coverage. &lt;br /&gt;
&lt;br /&gt;
In a multi-radio mesh network it is very difficult to use the same IPv4 subnet on all the backbone wireless interfaces inside a mesh. The OLSR routing protocol uses broadcast packets to flood OLSR routing information to all of it&#039;s neighbors. This works very well with a single radio mesh, but not with a multi-radio mesh. Almost all TCP/IP (IPv4) stacks implementations can only send out broadcast packets on one interface at a time, but not on multiple interfaces on the same IPv4 subnet. This means that every interface needs to operate on a different IPv4 subnet, with the effect that some OLSR links may be physically possible, but it cannot be used for data because the IPv4 subnets are different. A multi-radio IPv4 OLSR network is possible, but it usually needs a lot of planning and configuration.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv4-Network.png]]&lt;br /&gt;
&lt;br /&gt;
The TCP/IP stack of IPv6 does not make use of Broadcast packets and OLSR routing information is flooded to it&#039;s neighbors via multicast packets. These multicast packets will automatically be duplicated by the TCP/IP stack and send out via multiple IPv6 interfaces on the same IPv6 subnet. This means that the mesh can use the same IPv6 subnet, all over the mesh backbone, without any problems. With a multi-radio IPv6 OLSR mesh you don&#039;t need any IPv6 configuration on the backbone as all the nodes use the same IPv6 subnet.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv6-Network.png]]&lt;br /&gt;
&lt;br /&gt;
== Behaviour of a normal node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
The following describes how a normal node will behave inside a mesh and what service it will provide:&lt;br /&gt;
&lt;br /&gt;
* Each HPN node is equipped with two 5.8Ghz wifi adapters and antennas (pannel and omni) that is used to build the backbone. Each one of these adapters is configured to operate on a specific wifi frequency that is also tied to a specific wifi channel. In order to make our HPN more user friendly we decided to assign these two channels to the colours &amp;quot;red&amp;quot; and &amp;quot;green&amp;quot;. The HPN node then inherit what ever colour is assigned to the directional pannel antenna on the front. &lt;br /&gt;
&lt;br /&gt;
This means that when the &amp;quot;green&amp;quot; channel is configured on the pannel antenna, then the &amp;quot;red&amp;quot; is used on the omni and we will refer to the HPN node as a GREEN node. If the &amp;quot;red&amp;quot; channel is used on the pannel, then we talk about a RED node and the &amp;quot;green channel is used on the omni. The default setting for a new node is to be a GREEN node and it can be changed to a RED node via the web interface.&lt;br /&gt;
&lt;br /&gt;
When a new node boots up for the fist time, then it will go into a hunting mode and it will search for other nodes in the mesh. There are lots of possible different ways to do this hunting. We decided to implement a very simple and easy algorithm until someone gets &#039;n new bright ideas. The following paragraphs describes our current implementation of our hunting procedure with our [[Initial (old) hunting description]] here.&lt;br /&gt;
&lt;br /&gt;
A HPN node will always start to search for connectivity on the pannel antenna, fist on the same colour as the node, and then on the other colour. If no connectivity can be found, then it will hunt on the omni-directional antenna, first on opposite colour as the node, and then on the same colour. This sequence will repeat itself, until connectivity can be found to another node in the network. At this time the channels will be locked the colour of the node will be the same as the colour used on the pannel antenna. This setting will stay the same, even across a reboot or power failure, until someone overrides it via the web interface.&lt;br /&gt;
&lt;br /&gt;
Lets take a new GREEN node for a example. When it boots up for the first time then it will come up in the hunting mode. It will first configure the patch antenna on the &amp;quot;green&amp;quot; frequency. It will perform a link local IPv6 ping on that interface for about 3 seconds to determine if any IPv6 connectivity can be found on that antenna/channel. If no connectivity is found after 3 seconds, then it will hunt further using the &amp;quot;red&amp;quot; channel on the patch, then the &amp;quot;red&amp;quot; channel on the omni and then &amp;quot;green&amp;quot; on the omni.&lt;br /&gt;
&lt;br /&gt;
If no connectivity can be found, then it will start the hunting process from the beginning, or until it is manually locked via the WEB interface. If connectivity can be established, then it will lock the node with the current settings. It will also enable the green/red link LED on the bottom of the node to show connectivity on that channel (The WEB interface can be used to get more information of wich node connectivity has been established to). If connectivity is lost then the LED will turn off again. &lt;br /&gt;
&lt;br /&gt;
See hunt-flow-diagram below.&lt;br /&gt;
&lt;br /&gt;
[[Image:Hunt-flow2.png]]&lt;br /&gt;
   &lt;br /&gt;
* When a new node boots up then an unique IPv6 address ((inside this mesh. See IP addressing section) will be configured on all the Ethernet and wireless interfaces. An unique (inside this mesh) IPv4 address is calculated and configured on the Ethernet interface and on the 2.4Ghz omni interface. The node will use the MAC address of the adapter to calculate a unique IPv4 and IPv6 subnet for that interface. These automatic addresses can be overrided via the WEB interface (E.g. if a globally routeable IPv6 address is required for a website inside the mesh and it should be visible from the Internet). Wireless interfaces are placed into adhoc mode and the channel, ssid and bssid are also configured.&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up then the OLSR daemon is started and it will listen en send OLSR topology packets to all of it&#039;s neighboring nodes. OLSR runs on all the wireless interfaces, but not on the Ethernet interface. All the IPv4 subnets are converted to 4in6 IPv6 addresses and these IPv6 subnets are placed into the HNA section of olsrd.conf, together with the IPv6 subnets that are configured on the Ethernet interface and on the 2.4Ghz omni interface. These HNA subnets are then distributed, via OLSR, to all the other nodes inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The 4over6 tunneling daemon take care of all IPv4 comms and dirtributing of routing information inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The node will start ntpd daemon on provide NTP time services on all it&#039;s IPv4 and IPv6 addresses. NTP will also synchronize it&#039;s local time with the GW-node on a regular basis.&lt;br /&gt;
&lt;br /&gt;
* The node will register it&#039;s own hostname in DNS on the GW-node. It will start dnsmasq daemon and it will also provide DNS services on all it&#039;s IPv4 and IPv6 addresses. Dnsmasq will forward all DNS queries to the DNS server running on the GW-node.&lt;br /&gt;
&lt;br /&gt;
* Dnsmasq is used to provide IPv4 DHCP services and DNS services on both the Ethernet interface and on the 2.4Ghz omni (hostspot) interface.&lt;br /&gt;
&lt;br /&gt;
* rtadvd will run on both the Ethernet interface and on the 2.4Ghz omni interface and it is used to advertise IPv6 prefixes to locally connected IPv6 client devices.&lt;br /&gt;
&lt;br /&gt;
* sshd allows remote ssh login&#039;s from anywhere in the mesh network.&lt;br /&gt;
&lt;br /&gt;
* watchdogd toggles the watchdog during normal operations. Should the system hang for some reason, then the watchdog will restart the HPN node.&lt;br /&gt;
&lt;br /&gt;
* mini_httpd is used for the WEB gui running on the HPN node.&lt;br /&gt;
&lt;br /&gt;
== Behavior of the GateWay node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
Any standard mesh node can become a GateWay node by selecting the &amp;quot;GateWay&amp;quot; button under &amp;quot;Additional features&amp;quot; on the WEB interface. The GateWay node is the place where the mesh will connect to some outside network and it will be the default route for the mesh. When a normal node becomes a GateWay node, then it does not disable any normal node features, but it just adds some additional features. The following are the additional features that a GateWay node will have:&lt;br /&gt;
&lt;br /&gt;
* The GW-node will not go into a hunting mode and it will lock it&#039;s channels with GREEN on the omni and RED on the directional panel. The default channels can be swapped via the WEB interface.&lt;br /&gt;
&lt;br /&gt;
* The GW-node is the default route for the mesh and it will advertise a default route via OLSR to the rest of the mesh.&lt;br /&gt;
&lt;br /&gt;
* The GW-node connects to the outside networks via Ethernet. It will perform a DHCP request on this interface in order to get an automatic IP address and external DNS server configurations from the external network. These setting can be overided via the WEB interface, under &amp;quot;Additional features&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes the DNS server for the mesh and it will configure and start the &#039;named&#039; services on IPv6, as well as on a well known IPv6 address of fec0:0:0:ffff::1. It will allow any node inside a mesh to submit their hostname into DNS and it will provide DNS services to any node or other device inside the mesh on IPv6 only. The GateWay node will also forward external DNS requests to upstream DNS servers if they are available. Upstream DNS servers are usually configured via DHCP but these setting can also be overided under &amp;quot;Additional features&amp;quot; on the WEB interface. DNS services are still available via &#039;dnsmasq&#039;, on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a time server for the mesh. It will synchronize it&#039;s time to an external time server if it&#039;s configured and available, otherwise it will use it&#039;s own internal RTC to synchronize it&#039;s time to. This time will be available to the rest of the mesh on a well known IPv6 address of fec0:0:0:ffff::1 and all the nodes in a mesh will use this time to synchronize their own time servers to. The GW-node will still provide NTP time services on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a firmware update server for the mesh. It will start ftpd services on IPv6, on a well known IPv6 address of fec0:0:0:ffff::1. It will took for new firmware on the Internet. If new firmware is available, then it will download the software and make it available to the other nodes inside the mesh via ftp.&lt;br /&gt;
&lt;br /&gt;
== IPv4 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
IPv4 addresses are not used in the backbone, but only on the edge of the network. This means that every node will have two IPv4 subnets configured, one on the Ethernet adapter (npe0) and the other on the 2.4Ghz omni (ath2) that is used for a wifi hotspot. The High performance node will always use the first IPv4 address on a configured subnet. E.g 10.234.18.1/24&lt;br /&gt;
&lt;br /&gt;
The HPN currently makes use of an automatic IPv4 addressing scheme where the IPv4 subnet is derived from the two least significant bytes of the MAC address of that particular interface. The first bye of the network is always 10 because we are making use of the 10net inside the mesh. The next two byes comes from the last two byes of the Mac address and it will become the IPv4 subnet for that adapter. The adapter itself will be 10.x.x.1 and it will become the default gateway for that subnet. DNSmasq will hand out DHCP addresses form 10.x.x.100 - 10.x.x.199 on the calculated subnet.&lt;br /&gt;
&lt;br /&gt;
 Mac = 00:d0:12:07:cb:73&lt;br /&gt;
 cb.73 (hex) = 203.115 (decimal)&lt;br /&gt;
 IP subnet  = 10.203.115 with /24 subnet mask&lt;br /&gt;
 IP address = 10.203.115.1&lt;br /&gt;
 DHCP = 10.203.115.100-10.203.115.199&lt;br /&gt;
&lt;br /&gt;
This addressing scheme will work 99% of the time, but it is not failsafe. Subnet clashes may occur due to the MAC address numbering schemes used by different vendors. MAC addresses usually have a vendor portion (first part of address) and a product/sequent number portion (last part). The last part is the part that is used to generate an IPv4 address. The last two bytes will most probably, at some stage, be that same for two different cards from two different vendors and there may be a very small chance for both of these cards end up in the same mesh network. In this case the automatic address can be overridden manually in rc.conf.local. At this stage there is no build in detection system that will handle Mac address clashes.&lt;br /&gt;
&lt;br /&gt;
Other addressing schemes to consider:&lt;br /&gt;
* Manage and assign all IPv4 addresses centrally. Program addresses into the HPN&#039;s during the manufacturing process. This will sort out all IPv4 address clashes. Issues - Do you assign a IPv4 address block per community or just sequential per HPN node?&lt;br /&gt;
* Manage a block of IPv4 addresses for each community somewhere on the local mesh. HPN nodes can then request an IPv4 addresses from this repository and use it. Issues - what happens if server is down or during a power failure. Will you get a new IPv4 address every time, simular to what you get with ADSL. This will mean that all the the PC&#039;s and devices that received DHCP addresses from DNSmasq will have to change as well. &lt;br /&gt;
&lt;br /&gt;
Issues that may influence the selection of an addressing scheme:&lt;br /&gt;
* Should there be IPv4 connectivity between different mesh networks ?&lt;br /&gt;
* Should there be IPv4 connectivity between a network inside a mesh and some other place in the Internet ?&lt;br /&gt;
* Should someone upstream device be able to initiate a connection into a mesh network (E.g. web server in mesh). ?&lt;br /&gt;
* Should we make use of legal (routeable) IPv4 address space, or should we stick to the 10net.&lt;br /&gt;
* Should the network be able to build and exchange IPv4 routing information with other networks.&lt;br /&gt;
* Routing information can be simplified if sequential IPv4 addresses are managed centrally and allocated per mesh&lt;br /&gt;
* Should the addressing scheme survive a power cycle or load shedding inside a community&lt;br /&gt;
* Is the WISP going to do NAT ?&lt;br /&gt;
&lt;br /&gt;
== IPv6 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
All the HPN nodes supports end-to-end IPv6 communications over the mesh. IPv6 only needs a network prefix (IPv6 subnet) for every adapter and the protocol stack will work out the IPv6 address for each interface. &lt;br /&gt;
&lt;br /&gt;
Our mesh is making use of a private Unique Local Addresses (ULAs) space, described in [http://www.rfc-editor.org/rfc/rfc4193.txt RFC4193]. This address space in similar to the 10net in IPv4, but with the difference that each ULA is globally unique. This means that we can calculate our own network prefix that we use in a mesh. This leaves the option to use the same prefix for all the different mesh networks, or we can use an unique prefix for every mesh. A unique prefix for every mesh may have an routing advantage if we need to connect different mesh networks together in future, but it also means that HPN&#039;s should be pre-configured with a prefix that is tied to a specific community and the prefix allocations should be managed centrally.&lt;br /&gt;
&lt;br /&gt;
Note that private Unique Local IPv6 addresses are not globally routable, but only inside our mesh. If we need globally routable IPv6 addresses then we need to apply for Provider Independent IPv6 address space from Afrinic. These addresses is uosually someting that is given to some network provider (owner of the network) and it will have a yearly fee attached to it. Issues - it is not always clear who the owner of a communit mesh is.&lt;br /&gt;
&lt;br /&gt;
The best sollution may be to use a combination of both addressing schemes. Use ULA addresses all over the mesh and only use leagal IPv6 addresses where devices needs to be availble on the Internet.&lt;br /&gt;
&lt;br /&gt;
== WEB interface ==&lt;br /&gt;
At the moment there is no WEB GUI for the HPN. This is an suggestion of how the GUI should look like. The idea is to keep it simple as possible with as little as possible that can be changed.&lt;br /&gt;
&lt;br /&gt;
=== WEB Gui main page ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-hunt-html.png|border|300px]][[Image:HPN-green-html.png|border|300px]][[Image:HPN-red-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
The default setting for a HPN is to come up in the hunting mode. After a successful hunt, the HPN will lock to either a red or green node and it will keep the setting, even during power failures. The menu will show the current state of a HPN, but it will also allow you to override the current mode by selecting red, green or hunting manually. Changes are only allowed after a valid login.&lt;br /&gt;
&lt;br /&gt;
The bar graph will give some indication of signal strength to other nodes on both the red and green channel. Note that there can be a link to more than one node on a given channel (red or green). The indicator on the main page will only show the signal to the first node that it links with. A more detailed view is available on the align page under the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
The last thing that can be changed from the main menu is the name of the HPN. This name will also be registered into the mesh DNS. All changes will only take effect after selecting the SUBMIT button. Additional features can be reached via the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
=== More features ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-features-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
==== Configure / Align / Stats ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-configure-html.png|border|300px]][[Image:HPN-align-html.png|border|300px]][[Image:HPN-stats-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
&lt;br /&gt;
[[High_Performance_Node_-_Specification]]&lt;br /&gt;
&lt;br /&gt;
== Upgrades ==&lt;br /&gt;
All the HPN nodes in a mesh will look for new firmware updates from the GateWay node on a regular basis. New firmware is placed inside a special directory on the GateWay node and it is made available, via ftp, to all the other HPN nodes in the mesh. Each HPN nodes will compare the firmware from this directory with it&#039;s current version of firmware to determine if it&#039;s newer. If new firmware is available, then the node will download and untar the new firmware onto a spare partition on the flash disk. After that all the custom configurations are copied over to the new partition. The HPN will then change the active partition to the new one and it will reboot with the new firmware. If someting should go wrong with the upgrade, then the HPN will revert back to the previous version of firmware.&lt;br /&gt;
&lt;br /&gt;
The GateWay node will look for new firmware somewhere on the Internet or from the WISP box. If available it will download the new firmware and place it into the special ftp directory.&lt;br /&gt;
&lt;br /&gt;
== Typical Outdoor Range at 5.8Ghz ==&lt;br /&gt;
At this stage we haven&#039;t found a testing site that is suitable for our tests. The following is just gestimates and it still needs to be tested.&lt;br /&gt;
&lt;br /&gt;
* Omni to Omni: up to xx km (2km?)&lt;br /&gt;
* Panel to Omni: up to xx km (5km?)&lt;br /&gt;
* Panel to Panel: up to xx km (10km?)&lt;br /&gt;
* External to External: more than xx km (20km?), depending on antenna type&lt;br /&gt;
&lt;br /&gt;
Now for some test results:&lt;br /&gt;
For our first test we selected a friendly site for the panel-to-panel test. We selected Anita&#039;s home because she is just over 10km from Meraka and there is a clear line of site between both sites (this is also our longest 11a link so far). Another reason is that we already have a 32bBi directional antenna, from an existing installation on Meraka&#039;s roof, that is pointing directly to her home. &lt;br /&gt;
&lt;br /&gt;
We used one of our new routers for this site, but we replaced the 5.8Ghz omni antenna with a 27dBi grid antenna so that we could have one link to login to the router, while we can do some tests on the second antenna.&lt;br /&gt;
&lt;br /&gt;
Here is a picture of Anita&#039;s husband with the router the he installed on their roof.&lt;br /&gt;
&lt;br /&gt;
[[Image:001.jpg|border|300px]][[Image:002.jpg|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Regulatory ==&lt;br /&gt;
Wirelss equipment that operate in the ISM bands do not need an spectrum licence, but they need to be ICASA approved. All the wifi adapters inside the HPN nodes are ICASA approved. From recent media reports regarding DABBA communications and there equipent in the Orange Farm area, it seems like our HPN node needs to get ICASA approval for the complete assembled HPN node as well. Every node should have it&#039;s own ICASA sticker on the back.&lt;br /&gt;
&lt;br /&gt;
== Using WEP/WPA in adhoc mode ==&lt;br /&gt;
&lt;br /&gt;
One of the requirements of the High Performance Node is to have WEP or WPA enabled between the wireless links of the mesh nodes. This is one of the functionalities that we would like to sort out before we install any of the nodes in the field. It&#039;s very difficult to change the encryption mode after an installation because the mesh nodes will lose connectivity if one node is upgraded to use WEP, while another is still using older software without WEP.&lt;br /&gt;
&lt;br /&gt;
WEP and WPA are both methods to enable the encryption of data that it is send over the air. WEP (Wired equivalence privacy) is an older standard and it makes use of a WEP encryption engine while the newer WPA standard added the use of an AES encryption engine. WEP encryption has some security flaws embedded into the protocol and there are several tools available on the Internet that can crack WEP keys. These tools are more effective with the cracking of 64bit WEP keys than with 128bit keys and they require a large amount of captured data and processing power to crack a key. Note that not all WEP keys can be cracked, but only weak keys and that flaw was addressed and fixed by WPA.&lt;br /&gt;
&lt;br /&gt;
Wireless adapters on Unix Systems can operate in three different modes: Client, Hostap (Access Point) and Adhoc mode. Most of the implementations of wireless (802.11) networks are based on a model where there is one Access Point with several wireless clients attached to to it. &lt;br /&gt;
&lt;br /&gt;
[[Image:AP-client.png|center|One Access point with many nodes]]&lt;br /&gt;
 &lt;br /&gt;
Wireless Mesh networks make use of the less tested Adhoc mode of 802.11.&lt;br /&gt;
&lt;br /&gt;
[[Image:Adhoc.png|center|Many nodes using Adhoc mode (many point to point links)]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
WEP and WPA requires a couple of kld&#039;s to be loaded before they can be configured. The following kld&#039;s should be added to loader.conf&lt;br /&gt;
wlan_acl_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_amrr_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_ccmp_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_tkip_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_wep_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_xauth_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== WEP ====&lt;br /&gt;
Enable and test WEP in Adhoc mode on the HPN.&lt;br /&gt;
WEP makes use of a single PSK that needs to be configured on all the wireless nodes. Any node or wireless device that is configured with this PSK will have the capability to crypt and decrypt these wireless packets. There are two methods to configure WEP in FreeBSD. You can use either  use ifconfig directly or you can make use of the WPA supplicant utility.&lt;br /&gt;
&lt;br /&gt;
ifconfig e.g.&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0 10.10.1.2/24 wep deftxkey 1 wepkey 128bitwepison&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0&lt;br /&gt;
 ath0: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; metric 0 mtu 1500&lt;br /&gt;
        ether 00:80:48:50:9e:69&lt;br /&gt;
        inet6 fe80::280:48ff:fe50:9e69%ath0 prefixlen 64 scopeid 0x1&lt;br /&gt;
        inet6 fd9c:6829:597c:20:280:48ff:fe50:9e69 prefixlen 64&lt;br /&gt;
        inet6 fd9c:6829:597c:20:: prefixlen 64 anycast&lt;br /&gt;
        inet 10.10.1.2 netmask 0xffffff00 broadcast 10.10.1.255&lt;br /&gt;
        media: IEEE 802.11 Wireless Ethernet autoselect mode 11g &amp;lt;adhoc&amp;gt;&lt;br /&gt;
        status: associated&lt;br /&gt;
        ssid ptamesh channel 13 (2472 Mhz 11g) bssid 56:e5:be:30:14:5a&lt;br /&gt;
        authmode OPEN privacy ON deftxkey 1 wepkey 1:104-bit txpower 31.5&lt;br /&gt;
        scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi11g 7&lt;br /&gt;
        roam:rate11g 5 protmode CTS burst&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Enable WEP on three mesh nodes and test connectivity.&lt;br /&gt;
 mesh-9e69:~ # ping6 ff02::1%ath0&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9e69%ath0, icmp_seq=87 hlim=64 time=2.122 ms&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9ddd%ath0, icmp_seq=87 hlim=64 time=5.625 ms(DUP!)&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9a44%ath0, icmp_seq=87 hlim=64 time=32.358 ms(DUP!)&lt;br /&gt;
&lt;br /&gt;
Everything seems to work fine (as expeted) with WEP enabled in the mesh.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WPA&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WPA was designed to work in an environment where you have one AP and several clients and not for Adhoc (mesh) networks. On the AP you have the Authenticator software and on the client you have the supplicant software. This means that if one would like to use WPA to it&#039;s full then every mesh node needs to be an Authenticator for all the other nodes it can see, as well as a supplicant for every node it can see. According to the WPA design document http://wirelessafrica.meraka.org.za/wiki/images/3/39/Wpa_supplicant-devel-04.pdf one can use WPA in Adhoc mode only in a static way with PSK&#039;s:&lt;br /&gt;
 IEEE 802.11 operation mode (Infrastucture/IBSS).&lt;br /&gt;
 0 = infrastructure (Managed) mode, i.e., associate with an AP.&lt;br /&gt;
 1 = IBSS (ad-hoc, peer-to-peer)&lt;br /&gt;
 Note: IBSS can only be used with key_mgmt NONE (plaintext and static WEP) and key_mgmt=WPA-&lt;br /&gt;
 NONE (ﬁxed group key TKIP/CCMP). In addition, ap_scan has to be set to 2 for IBSS. WPA-None requires&lt;br /&gt;
 following network block options: proto=WPA, key_mgmt=WPA-NONE, pairwise=NONE, group=TKIP&lt;br /&gt;
 (or CCMP, but not both), and psk must also be set (either directly or using ASCII passphrase).&lt;br /&gt;
&lt;br /&gt;
This is methods is very similar to the way that WEP is being used. This means the the only advantage of using WPA over WEP is that one can make use of the AES encryption engine that comes with WPA. Please note that with this mode of WPA and with WEP that anyone can decrypt the data being send over the air if they get hold of the mesh-wide PSK that is configured on every node in the network. If security is of importance them end users should consider the use of point-to-point security mechanisms like VPN&#039;s.&lt;br /&gt;
&lt;br /&gt;
The configuration of WPA is not supported in command line mode, but only with the wpa_supplicant software. This is an example of a wpa_supplicant.conf file to enable WPA in Adhoc mode:&lt;br /&gt;
&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 #&lt;br /&gt;
 network={&lt;br /&gt;
   ssid=&amp;quot;ptamesh&amp;quot;&lt;br /&gt;
 # Channel  13 : 2472  Mhz 11g&lt;br /&gt;
   frequency=2472&lt;br /&gt;
   mode=1&lt;br /&gt;
   proto=WPA&lt;br /&gt;
   key_mgmt=WPA-NONE&lt;br /&gt;
   pairwise=NONE&lt;br /&gt;
   group=TKIP&lt;br /&gt;
   psk=&amp;quot;mesh-ipv6&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To start the WPA software during boot-up one needs to add WPA to the ifconfig line in rc.conf. E.g.&lt;br /&gt;
&lt;br /&gt;
 ifconfig_ath0=&amp;quot;WPA 10.10.1.1/24 mode 11g mediaopt adhoc channel 13 ssid ptamesh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Unfortunately WPA did not work as easy as WEP, so it&#039;s off to debugging.&lt;br /&gt;
&lt;br /&gt;
Starting wpa_supplicant in the foreground with debugging enabled. E.g&lt;br /&gt;
&lt;br /&gt;
 wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
&lt;br /&gt;
The debugging output shows that something happens that initiates a wlan scan operation, while the card is in Adhoc mode. This should not happen and wpa_supplicant software never completes the configuration due to this error.&lt;br /&gt;
&lt;br /&gt;
 mesh-9ddd:~ # wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
 Initializing interface &#039;ath0&#039; conf &#039;/etc/wpa_supplicant.conf&#039; driver &#039;default&#039; &lt;br /&gt;
 ctrl_interface &#039;N/A&#039; bridge &#039;N/A&#039;&lt;br /&gt;
 Configuration file &#039;/etc/wpa_supplicant.conf&#039; -&amp;gt; &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 Reading configuration file &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 Priority group 0&lt;br /&gt;
   id=0 ssid=&#039;ptamesh&#039;&lt;br /&gt;
 Initializing interface (2) &#039;ath0&#039;&lt;br /&gt;
 EAPOL: SUPP_PAE entering state DISCONNECTED&lt;br /&gt;
 EAPOL: KEY_RX entering state NO_KEY_RECEIVE&lt;br /&gt;
 EAPOL: SUPP_BE entering state INITIALIZE&lt;br /&gt;
 EAP: EAP entering state DISABLED&lt;br /&gt;
 EAPOL: External notification - portEnabled=0&lt;br /&gt;
 EAPOL: External notification - portValid=0&lt;br /&gt;
 Own MAC address: 00:80:48:50:9d:dd&lt;br /&gt;
 wpa_driver_bsd_set_wpa: enabled=1&lt;br /&gt;
 wpa_driver_bsd_set_wpa_internal: wpa=3 privacy=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=0&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=2&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=3&lt;br /&gt;
 wpa_driver_bsd_set_countermeasures: enabled=0&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 Setting scan request: 0 sec 100000 usec&lt;br /&gt;
 Added interface ath0&lt;br /&gt;
 State: DISCONNECTED -&amp;gt; SCANNING&lt;br /&gt;
 Trying to associate with SSID &#039;ptamesh&#039;&lt;br /&gt;
 Cancelling scan request&lt;br /&gt;
 WPA: clearing own WPA/RSN IE&lt;br /&gt;
 Automatic auth_alg selection: 0x1&lt;br /&gt;
 wpa_driver_bsd_set_auth_alg alg 0x1 authmode 1&lt;br /&gt;
 WPA: No WPA/RSN IE available from association info&lt;br /&gt;
 WPA: Set cipher suites based on configuration&lt;br /&gt;
 WPA: Selected cipher suites: group 8 pairwise 1 key_mgmt 16 proto 1&lt;br /&gt;
 WPA: clearing AP WPA IE&lt;br /&gt;
 WPA: clearing AP RSN IE&lt;br /&gt;
 WPA: using GTK TKIP&lt;br /&gt;
 WPA: using PTK NONE&lt;br /&gt;
 WPA: using KEY_MGMT WPA-NONE&lt;br /&gt;
 WPA: Set own WPA IE default - hexdump(len=24): dd 16 00 50 f2 01 01 00 00 50 &lt;br /&gt;
 f2 02 01 00 00 50 f2 00 01 00 00 50 f2 00&lt;br /&gt;
 No keys have been configured - skip key clearing&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 State: SCANNING -&amp;gt; ASSOCIATING&lt;br /&gt;
 wpa_driver_bsd_associate: ssid &#039;ptamesh&#039; wpa ie len 24 pairwise 0 group 2 key &lt;br /&gt;
 mgmt 4&lt;br /&gt;
 ioctl[SIOCS80211, op 22, len 24]: Invalid argument&lt;br /&gt;
 Association request to the driver failed&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 Cancelling authentication timeout&lt;br /&gt;
 State: ASSOCIATING -&amp;gt; COMPLETED&lt;br /&gt;
 CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (auth) [id=-1 &lt;br /&gt;
 id_str=]&lt;br /&gt;
 EAPOL: External notification - portControl=ForceAuthorized&lt;br /&gt;
&lt;br /&gt;
Next was to install fresh copy of the FreeBSD src code onto my PC. I found the wpa_supplicant source code under /usr/src/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c Build a new driver from source code and run it on a router. After that I&#039;ve added in a lot of printf statements to trace how the driver works and to locate the code that puts the wifi card in scanning mode. In the end I found out that wpa_supplicant driver did not put the card in scanning mode, but it somehow caused the 802.11 stack to start the scanning. Unfortunately I don&#039;t know enough about the 802.11 code in FreeBSD to do any mode debugging. I&#039;ve send a mail about the problem to one of the FreeBSD mailing lists and the originator of most of the 802.11 code in FreeBSD (Sam Leffler) said I must log a problem report. So I logged a problem report with FreeBSD and now we have to wait and see if someone to take responsibility to fix this problem. More information on the problem report can be found at: http://www.freebsd.org/cgi/query-pr.cgi?pr=126822&lt;br /&gt;
&lt;br /&gt;
For now I recommend that we make use of WEP instead of WPA in our implementation as it is working and there isn&#039;t such a big advantage in using WPA over WEP in this mode except for the encryption algorithm that changes from WEP to AES.&lt;br /&gt;
&lt;br /&gt;
== Antenna calculations ==&lt;br /&gt;
&lt;br /&gt;
Every HP-node has two 5.15-5.6 GHz antennas. The one as a build in patch antenna and the other is an 5.1-5.8 GHz omni-directional antenna. The idea is that the patch antenna of a node will either be aligned to the omni or the patch antenna of another node. The following calculations is to get an feeling of what distances should be possible between these antennas.&lt;br /&gt;
&lt;br /&gt;
South African Wifi channels:&lt;br /&gt;
 Channel   1 : 2412  Mhz 11g          Channel  48 : 5240  Mhz 11a&lt;br /&gt;
 Channel   2 : 2417  Mhz 11g          Channel  52 : 5260* Mhz 11a&lt;br /&gt;
 Channel   3 : 2422  Mhz 11g          Channel  56 : 5280* Mhz 11a&lt;br /&gt;
 Channel   4 : 2427  Mhz 11g          Channel  60 : 5300* Mhz 11a&lt;br /&gt;
 Channel   5 : 2432  Mhz 11g          Channel  64 : 5320* Mhz 11a&lt;br /&gt;
 Channel   6 : 2437  Mhz 11g          Channel 100 : 5500* Mhz 11a&lt;br /&gt;
 Channel   7 : 2442  Mhz 11g          Channel 104 : 5520* Mhz 11a&lt;br /&gt;
 Channel   8 : 2447  Mhz 11g          Channel 108 : 5540* Mhz 11a&lt;br /&gt;
 Channel   9 : 2452  Mhz 11g          Channel 112 : 5560* Mhz 11a&lt;br /&gt;
 Channel  10 : 2457  Mhz 11g          Channel 116 : 5580* Mhz 11a&lt;br /&gt;
 Channel  11 : 2462  Mhz 11g          Channel 120 : 5600* Mhz 11a&lt;br /&gt;
 Channel  12 : 2467  Mhz 11g          Channel 124 : 5620* Mhz 11a&lt;br /&gt;
 Channel  13 : 2472  Mhz 11g          Channel 128 : 5640* Mhz 11a&lt;br /&gt;
 Channel  36 : 5180  Mhz 11a          Channel 132 : 5660* Mhz 11a&lt;br /&gt;
 Channel  40 : 5200  Mhz 11a          Channel 136 : 5680* Mhz 11a&lt;br /&gt;
 Channel  44 : 5220  Mhz 11a          Channel 140 : 5700* Mhz 11a&lt;br /&gt;
&lt;br /&gt;
HP-Node detailed specs: http://wirelessafrica.meraka.org.za/wiki/images/0/07/WLAN-A0033.pdf&lt;br /&gt;
&lt;br /&gt;
Pigtail detail specs: http://wirelessafrica.meraka.org.za/wiki/images/0/0a/Ca178_cable_assemblies_datasheet.pdf&lt;br /&gt;
&lt;br /&gt;
Wireless adapter detail specs: http://wirelessafrica.meraka.org.za/wiki/images/2/21/Wlm54sag23.pdf&lt;br /&gt;
&lt;br /&gt;
OR the Mikrotik version of the same adapter called a R52H (also manufactured by Compex, but usually cheaper)&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:R52H.pdf&lt;br /&gt;
&lt;br /&gt;
Another popular adapter is the DCMA-82 from Wistron. They have better RX sensitivity, but lower output power and they are a bit more expensive than the Compex cards. In some of the discussions that I&#039;ve seen they state that the DCMA-82 has much cleaner output power, better RX sensitivity, and a lower failure rate/quality issues than Compex&#039;s cards.&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:DCMA-82.pdf&lt;br /&gt;
&lt;br /&gt;
Node specs summary:&lt;br /&gt;
 Patch antenna            - 21-23 dBi,   16 deg H,  11 deg V, 5.15 -5.6 GHz&lt;br /&gt;
 5Ghz Omni antenna        - 8-11 dBi,    360 deg H, 10 deg V, 5.1 - 5.85 GHz&lt;br /&gt;
 2.4Ghz Omni antenna      - 7.5-8.5 dBi, 360 deg H, 12 deg V, 2.4 - 2.5 GHz&lt;br /&gt;
 30mm U.FL-SMA pigtail    - RG178 cable insertion loss, 2.4 GHZ = -1.1dB, 5.6 GHz = -2dB&lt;br /&gt;
 Compex WLM54AG23 adapter - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            23dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
                            17dBm @ 54Mbps&lt;br /&gt;
 Mikrotik (Compex) R52H   - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            24dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
 Wistron DCMA-82          - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -82 dBm @ 36Mbps&lt;br /&gt;
                            -72 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            22.5dBm @ 6-24Mbps&lt;br /&gt;
                            21.5dBm @ 36Mbps&lt;br /&gt;
                            18dBm @ 48Mbps&lt;br /&gt;
&lt;br /&gt;
I could not find any receive sensitivity info for ranges between 6Mbps and 54Mbps for the WLM54AG23. The closest I could find was the specs of another manufacturer card, using the same Atheros chipset as the WLM54AG23. Here is the receive sensitivity info for a WMIA-166AG Dual-Band miniPCI module (802.11a/g)&lt;br /&gt;
Nominal Temp Range:&lt;br /&gt;
  6Mbps 10-5 BER @ -90 dBm, typical&lt;br /&gt;
  9Mbps 10-5 BER @ -89 dBm, typical&lt;br /&gt;
 12Mbps 10-5 BER @ -88 dBm, typical&lt;br /&gt;
 18Mbps 10-5 BER @ -86 dBm, typical&lt;br /&gt;
 24Mbps 10-5 BER @ -82 dBm, typical&lt;br /&gt;
 36Mbps 10-5 BER @ -78 dBm, typical&lt;br /&gt;
 48Mbps 10-5 BER @ -72 dBm, typical&lt;br /&gt;
 54Mbps 10-5 BER @ -68 dBm, typical &lt;br /&gt;
&lt;br /&gt;
The WLM54AG23 is not the best wifi adapter in the market, but it gives a good compromise between price vs performance. If one need to push the limits of a specific link then I would probable select the SR5 from Ubiquity. They have excellent TX power and RX sensitivity.&lt;br /&gt;
 &lt;br /&gt;
There are lots of wifi/antenna/distance calculators available on the WEB. Most of these calculators cannot calculate the max distance for a link, you have to specify the distance and it will calculate you dBm margin. Links to a couple of Wifi/antenna/distance calculators:&lt;br /&gt;
&lt;br /&gt;
 http://www.radiolabs.com/stations/wifi_calc.html&lt;br /&gt;
 http://www.zytrax.com/tech/wireless/calc.htm&lt;br /&gt;
 http://www.widgetbox.com/widget/wifi-link-calculator&lt;br /&gt;
 http://www.wifiextreme.com.au/index.php?main_page=page_5&lt;br /&gt;
 http://www.rflinx.com/help/calculations&lt;br /&gt;
 http://www.olotwireless.net/castella/radio.htm&lt;br /&gt;
&lt;br /&gt;
Here are some formulas use to calculate a link budget:&lt;br /&gt;
  Free space loss = 36.56 + 20Log10(Frequency) + 20Log10(Dist in miles)&lt;br /&gt;
  mW to dBm = 10Log10(milliWatts) + 30&lt;br /&gt;
  dBm to mW = 10(dBm/10)&lt;br /&gt;
  RX Power = Margin - RX sensitivity&lt;br /&gt;
  Theoretical margin = TX power budget + RX power budget - free space loss&lt;br /&gt;
  SAD factor = Theoretical margin/TX power budget * 100 and shows the percentage of spare power on transmission.&lt;br /&gt;
&lt;br /&gt;
(Free Space Loss) = 92.5 + (20 Log fequency) + (20 log km distance)&lt;br /&gt;
&lt;br /&gt;
Free space loss @ 5400GHz:&lt;br /&gt;
 1km = -107.07dB      11km = -128.028dB&lt;br /&gt;
 2km = -113.09dB      12km = -128.784dB&lt;br /&gt;
 3km = -116.61dB      13km = -129.479dB&lt;br /&gt;
 4km = -119.11dB      14km = -130.123dB&lt;br /&gt;
 5km = -121.05dB      15km = -130.722dB&lt;br /&gt;
 6km = -122.63dB      16km = -131.282dB&lt;br /&gt;
 7km = -123.97dB      17km = -131.809dB&lt;br /&gt;
 8km = -125.13dB      18km = -132.305dB&lt;br /&gt;
 9km = -126.15dB      19km = -132.775dB&lt;br /&gt;
 10km = -127.07dB     20km = -133.221dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPNode with a 5Ghz patch to omni link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Omni: &lt;br /&gt;
 Min link distance @ 54Mbps 0.9km:              Max link distance @ 54Mbps 1.55km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -106dB                      Free space loss = -111dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 6.9km:              Max link distance @ 24Mbps 12.3km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 34km free space  = -124dB                      Free space loss = -129dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 17km:                Max link distance @ 6Mbps 30.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 34km free space  = -132dB                      Free space loss = -137dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPnodes with a 5Ghz patch to patch link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Patch:&lt;br /&gt;
 Min link distance @ 54Mbps 3.9km:              Max link distance @ 54Mbps 6km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -119dB                      Free space loss = -123dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 30.9km:             Max link distance @ 24Mbps 38.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 Free space loss  = -137dB                      Free space loss = -139dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 77.6km:              Max link distance @ 6Mbps 123km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 Free space loss  = -145dB                      Free space loss = -149dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4629</id>
		<title>High performance node page</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4629"/>
		<updated>2009-05-21T12:26:30Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Behaviour of a normal node in a mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Development Team Research Pages]][[Category: Johann&#039;s Research Pages]][[Category: High Performance Node]]&lt;br /&gt;
&lt;br /&gt;
== What is a HPN (high performance node) ? ==&lt;br /&gt;
&lt;br /&gt;
The HPN is a multi-radio (3x radios), high performance, wireless (802.11) router. It has three antennas, one 5.8Ghz directional panel antenna as well as two omni&#039;s (2.4Ghz + 5.8Ghz). At the bottom of the router there is a weather proof UTP connector that is used for both Power-Over-Ethernet (PoE) and Ethernet connectivity to the router. A special mounting bracket at the back of the router allows it to be attached to an aluminum pole that is usually mounted to the side of a building or some structure.&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN.png]]&lt;br /&gt;
&lt;br /&gt;
== How to build a mesh with HPN&#039;s ==&lt;br /&gt;
The idea is to build a mesh network with these routers by aligning each directional antennas to point to a neighboring omni or another directional antenna. The wireless cards in a router operates on different channels (frequencies). To make it more user friendly each channel (frequencies) is tied to a color. This means that a red panel antenna must be aligned to a red omni (or another red panel) and a green panel must be aligned to a green omni (or green panel). The blue channel (2.4Ghz) is used to create a wifi hostspot for clients who would like to connect to the mesh network via wifi.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mesh-Network.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every mesh network usually have one GateWay that connects to the Internet or to some other network. Any one of the mesh nodes can be configured to become a GateWay for the mesh. When a node becomes a GateWay then the channels (frequencies) of the antennas are fixed  to the following: 5.8Ghz directional panel = RED, 5.8Ghz omni = GREEN and the 2.4Ghz omni = BLUE. The GateWay node will also become the DNS server for the mesh and all the nodes inside the mesh will register their HostNames with the DNS server. Another function of the GateWay node is to act as a time server for the mesh network and all the nodes inside the mesh will synchronize their time with the GateWay node. &lt;br /&gt;
&lt;br /&gt;
The best approach to build a mesh network is to start with the installation of the GateWay node. Next you install the node(s) that aligns to the GateWay node and then grow the mesh from there. Fist perform a visual alignment of the panel antenna on the node before the power is switched on. When a normal node starts up for the first time, then it will hunt for a mesh signal and it will lock it&#039;s channels (frequencies) once connectivity is established. It will first hunt for connectivity on both the red and green channels on the directional panel antenna for X seconds. If no signal is found, then the hunt will continue on the 5.8Ghz omni directional antenna for X seconds. This sequence will repeat itself until a signal is found, or until the channels are manually locked via the web interface on the node itself. &lt;br /&gt;
&lt;br /&gt;
Every node has a GREEN and a RED LED that is visible from underneath the node (should be visible when one stands under the node that is mounted on a pole). These LEDs are there to give some indication of connectivity and they will only turn on if connectivity can be established on either the red or green channel. Note that the LED does not show the signal quality or to what node it is connected to, it only shows that there is connectivity to another HPN node and on what channel (red or green). Signal quality and node connectivity information is only available via the web interface, but in most cases a visual alignment combined with a link indicator will be sufficient enough to get a mesh node up and running.&lt;br /&gt;
&lt;br /&gt;
== How can a client connect to the mesh ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Hpn-switch-pc.png]]&lt;br /&gt;
&lt;br /&gt;
Client devices can connect to any of the nodes via Ethernet or via wifi (blue channel = hostspot). The client devices should be configured to make use of DHCP so that all networking configurations can be done automatically (The node will provide all the networking details via DHCP). It is also recommended that the IPv6 protocol stack should be switch on if it is available. IPv6 should already be enabled on Windows Vista as well as most Unix systems.&lt;br /&gt;
&lt;br /&gt;
== How does the mesh work ? ==&lt;br /&gt;
&lt;br /&gt;
Almost everything in the network will be configured automatically, except for the selection of the gateway node and the channel (red or green) of a wireless link. The mesh supports both IPv6 and IPv4 traffic from any end-point (a place where a mesh client connects) to any other end-point in the mesh, while the backbone uses IPv6 only. A routing protocol called OLSR (Optimized Link State Routing) is used to exchange routing information between all the nodes inside the mesh and to select the best path for data traffic between end-points in the mesh.&lt;br /&gt;
&lt;br /&gt;
[[Image:OLSR.png]]&lt;br /&gt;
&lt;br /&gt;
Lets take an example (see diagram) where HP want to send data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv6 ====&lt;br /&gt;
HP will address the data to the IPv6 address of Dell and send it to node C. Node C will look in it&#039;s routing table and see that there are two routes to Dell, one route via node B-A-D-E and the other route via D-E. It will then select the best route and send it to the next node, in our case node D. Node D will look in it&#039;s routing table and see that the only route to Dell is via node E. Node E will look at it&#039;s routing table and see that Dell is directly connected and it will forward the data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv4 ====&lt;br /&gt;
This one is a bit more complicated. IPv4 is only used on the outside of the network (where the mesh clients connect to it) and then the IPv4 traffic is tunneled over the IPv6 backbone of the mesh to any another end point in the mesh. The mesh will automatically create a one-to-many IPv4 tunnel over the IPv6 network (4over6 tunneling protocol). This means that it looks like a network with an IPv4 tunnel from every IPv4 subnet to every other IPv4 subnet in the mesh. From a client&#039;s perspective it looks like a normal IPv4 routed network. From the backbone&#039;s perspective it looks like a IPv6 only network and all the OLSR routing information is IPv6 only. &lt;br /&gt;
&lt;br /&gt;
So how does the network know how to forward IPv4 packets to the correct destination ? It makes use of IPv4-mapped-IPv6 addresses (see [http://tools.ietf.org/html/rfc4291#section-2.5.5 RFC4291] and [http://tools.ietf.org/html/rfc4038 RFC4038]). Every node will map an IPv4 addresses into a IPv6 address before data goes to the backbone and the IPv4-Mapped-IPv6 addresses are converted back to a plain IPv4 address when it comes out of the backbone. OLSR will advertise these IPv4-Mapped-IPv6 address subnets on the backbone so that all the nodes will learn these subnets and they will calculate the best route to these subnets.&lt;br /&gt;
&lt;br /&gt;
Lets take example again, using IPv4. HP will address the data to the IPv4 address of Dell and send it to node C. Node C will change the IPv4 packet to an IPv6 packet with an IPv4-mapped-IPv6 addresses. From there it will follow the same route as the IPv6 example above. Node E will take the original IPv4 packet out of the IPv4-mapped-IPv6 packet and it will send the original IPv4 packet to Dell.&lt;br /&gt;
&lt;br /&gt;
See http://wirelessafrica.meraka.org.za/wiki/index.php/John%27s_research#4over6_Automatic_tunnels for more detail of the 4over6 tunneling protocol.&lt;br /&gt;
&lt;br /&gt;
=== Why is the mesh using IPv6 ? ===&lt;br /&gt;
&lt;br /&gt;
==== Reason one ====&lt;br /&gt;
It is predicted that unused IPv4 address space will be depleted within the next two years. Operating systems like Vista and most Unix systems defaults to IPv6 by default and most applications are IPv6 ready. With this in mind it makes sense that any new networking products should provide both IPv4 and IPv6 support.&lt;br /&gt;
&lt;br /&gt;
==== Reason two ====&lt;br /&gt;
In a single radio mesh network there is just one RF channel and everybody makes use of the same IP subnet. One limitation of a single radio mesh is that each mesh radio needs to handle both incoming and outgoing traffic. This causes the throughput to be halved because a radio cannot transmit and receive simultaneously. Another problem is that if one radio is transmitting then all its neighbors must all be in listening mode. These problems can cause a single radio mesh to very quickly run out of steam.&lt;br /&gt;
&lt;br /&gt;
Multi-radio mesh technology solves this problem by configuring every radio inside a router to operate on a different frequency and on a different IP subnet. In the HPN two radios are dedicated for backbone traffic and the third is used to create a client hotspot. 802.11a is generally used for backbone traffic, and 802.11b/g for client coverage. &lt;br /&gt;
&lt;br /&gt;
In a multi-radio mesh network it is very difficult to use the same IPv4 subnet on all the backbone wireless interfaces inside a mesh. The OLSR routing protocol uses broadcast packets to flood OLSR routing information to all of it&#039;s neighbors. This works very well with a single radio mesh, but not with a multi-radio mesh. Almost all TCP/IP (IPv4) stacks implementations can only send out broadcast packets on one interface at a time, but not on multiple interfaces on the same IPv4 subnet. This means that every interface needs to operate on a different IPv4 subnet, with the effect that some OLSR links may be physically possible, but it cannot be used for data because the IPv4 subnets are different. A multi-radio IPv4 OLSR network is possible, but it usually needs a lot of planning and configuration.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv4-Network.png]]&lt;br /&gt;
&lt;br /&gt;
The TCP/IP stack of IPv6 does not make use of Broadcast packets and OLSR routing information is flooded to it&#039;s neighbors via multicast packets. These multicast packets will automatically be duplicated by the TCP/IP stack and send out via multiple IPv6 interfaces on the same IPv6 subnet. This means that the mesh can use the same IPv6 subnet, all over the mesh backbone, without any problems. With a multi-radio IPv6 OLSR mesh you don&#039;t need any IPv6 configuration on the backbone as all the nodes use the same IPv6 subnet.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv6-Network.png]]&lt;br /&gt;
&lt;br /&gt;
== Behaviour of a normal node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
[[Initial (old) hunting description]]&lt;br /&gt;
&lt;br /&gt;
The following describes how a normal node will behave inside a mesh and what service it will provide:&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up for the fist time, then it will go into a hunting mode and it will search for other nodes in the mesh. In hunting mode it will first configure the patch antenna on the GREEN frequency. It will perform a link local IPv6 ping on that interface for about X seconds to determine if any IPv6 connectivity can be found on that antenna/channel. If no connectivity is found after X seconds, then it will hunt further using RED on the patch, then GREEN on the omni and then RED on the omni. If no connectivity can be found, then it will start the hunting process from the beginning, or until it is manually locked via the WEB terface. If connectivity can be established, then it will enable the green/red link LED on the bottom of the node to show connectivity (use the WEB interface for more information on to which node connectivity has been established to). If connectivity is lost then the LED will be off again. After stable connectivity for about X consecutive pings, the node will lock the antenna/channels util someone changes it manually via the WEB interface. Once the antennas/channels are locked then it will also change the sensitivity of the link LED and LED updates will be less frequently. The LED sensitivity can be manually changed via the WEB interface by selecting the &amp;quot;alignment&amp;quot; button. The alignment feature will give signal strength information on the WEB interface. See hunt-flow-diagram below.&lt;br /&gt;
&lt;br /&gt;
[[Image:Hunt-flow2.png]]&lt;br /&gt;
   &lt;br /&gt;
* When a new node boots up then an unique IPv6 address ((inside this mesh. See IP addressing section) will be configured on all the Ethernet and wireless interfaces. An unique (inside this mesh) IPv4 address is calculated and configured on the Ethernet interface and on the 2.4Ghz omni interface. The node will use the MAC address of the adapter to calculate a unique IPv4 and IPv6 subnet for that interface. These automatic addresses can be overrided via the WEB interface (E.g. if a globally routeable IPv6 address is required for a website inside the mesh and it should be visible from the Internet). Wireless interfaces are placed into adhoc mode and the channel, ssid and bssid are also configured.&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up then the OLSR daemon is started and it will listen en send OLSR topology packets to all of it&#039;s neighboring nodes. OLSR runs on all the wireless interfaces, but not on the Ethernet interface. All the IPv4 subnets are converted to 4in6 IPv6 addresses and these IPv6 subnets are placed into the HNA section of olsrd.conf, together with the IPv6 subnets that are configured on the Ethernet interface and on the 2.4Ghz omni interface. These HNA subnets are then distributed, via OLSR, to all the other nodes inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The 4over6 tunneling daemon take care of all IPv4 comms and dirtributing of routing information inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The node will start ntpd daemon on provide NTP time services on all it&#039;s IPv4 and IPv6 addresses. NTP will also synchronize it&#039;s local time with the GW-node on a regular basis.&lt;br /&gt;
&lt;br /&gt;
* The node will register it&#039;s own hostname in DNS on the GW-node. It will start dnsmasq daemon and it will also provide DNS services on all it&#039;s IPv4 and IPv6 addresses. Dnsmasq will forward all DNS queries to the DNS server running on the GW-node.&lt;br /&gt;
&lt;br /&gt;
* Dnsmasq is used to provide IPv4 DHCP services and DNS services on both the Ethernet interface and on the 2.4Ghz omni (hostspot) interface.&lt;br /&gt;
&lt;br /&gt;
* rtadvd will run on both the Ethernet interface and on the 2.4Ghz omni interface and it is used to advertise IPv6 prefixes to locally connected IPv6 client devices.&lt;br /&gt;
&lt;br /&gt;
* sshd allows remote ssh login&#039;s from anywhere in the mesh network.&lt;br /&gt;
&lt;br /&gt;
* watchdogd toggles the watchdog during normal operations. Should the system hang for some reason, then the watchdog will restart the HPN node.&lt;br /&gt;
&lt;br /&gt;
* mini_httpd is used for the WEB gui running on the HPN node.&lt;br /&gt;
&lt;br /&gt;
== Behavior of the GateWay node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
Any standard mesh node can become a GateWay node by selecting the &amp;quot;GateWay&amp;quot; button under &amp;quot;Additional features&amp;quot; on the WEB interface. The GateWay node is the place where the mesh will connect to some outside network and it will be the default route for the mesh. When a normal node becomes a GateWay node, then it does not disable any normal node features, but it just adds some additional features. The following are the additional features that a GateWay node will have:&lt;br /&gt;
&lt;br /&gt;
* The GW-node will not go into a hunting mode and it will lock it&#039;s channels with GREEN on the omni and RED on the directional panel. The default channels can be swapped via the WEB interface.&lt;br /&gt;
&lt;br /&gt;
* The GW-node is the default route for the mesh and it will advertise a default route via OLSR to the rest of the mesh.&lt;br /&gt;
&lt;br /&gt;
* The GW-node connects to the outside networks via Ethernet. It will perform a DHCP request on this interface in order to get an automatic IP address and external DNS server configurations from the external network. These setting can be overided via the WEB interface, under &amp;quot;Additional features&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes the DNS server for the mesh and it will configure and start the &#039;named&#039; services on IPv6, as well as on a well known IPv6 address of fec0:0:0:ffff::1. It will allow any node inside a mesh to submit their hostname into DNS and it will provide DNS services to any node or other device inside the mesh on IPv6 only. The GateWay node will also forward external DNS requests to upstream DNS servers if they are available. Upstream DNS servers are usually configured via DHCP but these setting can also be overided under &amp;quot;Additional features&amp;quot; on the WEB interface. DNS services are still available via &#039;dnsmasq&#039;, on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a time server for the mesh. It will synchronize it&#039;s time to an external time server if it&#039;s configured and available, otherwise it will use it&#039;s own internal RTC to synchronize it&#039;s time to. This time will be available to the rest of the mesh on a well known IPv6 address of fec0:0:0:ffff::1 and all the nodes in a mesh will use this time to synchronize their own time servers to. The GW-node will still provide NTP time services on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a firmware update server for the mesh. It will start ftpd services on IPv6, on a well known IPv6 address of fec0:0:0:ffff::1. It will took for new firmware on the Internet. If new firmware is available, then it will download the software and make it available to the other nodes inside the mesh via ftp.&lt;br /&gt;
&lt;br /&gt;
== IPv4 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
IPv4 addresses are not used in the backbone, but only on the edge of the network. This means that every node will have two IPv4 subnets configured, one on the Ethernet adapter (npe0) and the other on the 2.4Ghz omni (ath2) that is used for a wifi hotspot. The High performance node will always use the first IPv4 address on a configured subnet. E.g 10.234.18.1/24&lt;br /&gt;
&lt;br /&gt;
The HPN currently makes use of an automatic IPv4 addressing scheme where the IPv4 subnet is derived from the two least significant bytes of the MAC address of that particular interface. The first bye of the network is always 10 because we are making use of the 10net inside the mesh. The next two byes comes from the last two byes of the Mac address and it will become the IPv4 subnet for that adapter. The adapter itself will be 10.x.x.1 and it will become the default gateway for that subnet. DNSmasq will hand out DHCP addresses form 10.x.x.100 - 10.x.x.199 on the calculated subnet.&lt;br /&gt;
&lt;br /&gt;
 Mac = 00:d0:12:07:cb:73&lt;br /&gt;
 cb.73 (hex) = 203.115 (decimal)&lt;br /&gt;
 IP subnet  = 10.203.115 with /24 subnet mask&lt;br /&gt;
 IP address = 10.203.115.1&lt;br /&gt;
 DHCP = 10.203.115.100-10.203.115.199&lt;br /&gt;
&lt;br /&gt;
This addressing scheme will work 99% of the time, but it is not failsafe. Subnet clashes may occur due to the MAC address numbering schemes used by different vendors. MAC addresses usually have a vendor portion (first part of address) and a product/sequent number portion (last part). The last part is the part that is used to generate an IPv4 address. The last two bytes will most probably, at some stage, be that same for two different cards from two different vendors and there may be a very small chance for both of these cards end up in the same mesh network. In this case the automatic address can be overridden manually in rc.conf.local. At this stage there is no build in detection system that will handle Mac address clashes.&lt;br /&gt;
&lt;br /&gt;
Other addressing schemes to consider:&lt;br /&gt;
* Manage and assign all IPv4 addresses centrally. Program addresses into the HPN&#039;s during the manufacturing process. This will sort out all IPv4 address clashes. Issues - Do you assign a IPv4 address block per community or just sequential per HPN node?&lt;br /&gt;
* Manage a block of IPv4 addresses for each community somewhere on the local mesh. HPN nodes can then request an IPv4 addresses from this repository and use it. Issues - what happens if server is down or during a power failure. Will you get a new IPv4 address every time, simular to what you get with ADSL. This will mean that all the the PC&#039;s and devices that received DHCP addresses from DNSmasq will have to change as well. &lt;br /&gt;
&lt;br /&gt;
Issues that may influence the selection of an addressing scheme:&lt;br /&gt;
* Should there be IPv4 connectivity between different mesh networks ?&lt;br /&gt;
* Should there be IPv4 connectivity between a network inside a mesh and some other place in the Internet ?&lt;br /&gt;
* Should someone upstream device be able to initiate a connection into a mesh network (E.g. web server in mesh). ?&lt;br /&gt;
* Should we make use of legal (routeable) IPv4 address space, or should we stick to the 10net.&lt;br /&gt;
* Should the network be able to build and exchange IPv4 routing information with other networks.&lt;br /&gt;
* Routing information can be simplified if sequential IPv4 addresses are managed centrally and allocated per mesh&lt;br /&gt;
* Should the addressing scheme survive a power cycle or load shedding inside a community&lt;br /&gt;
* Is the WISP going to do NAT ?&lt;br /&gt;
&lt;br /&gt;
== IPv6 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
All the HPN nodes supports end-to-end IPv6 communications over the mesh. IPv6 only needs a network prefix (IPv6 subnet) for every adapter and the protocol stack will work out the IPv6 address for each interface. &lt;br /&gt;
&lt;br /&gt;
Our mesh is making use of a private Unique Local Addresses (ULAs) space, described in [http://www.rfc-editor.org/rfc/rfc4193.txt RFC4193]. This address space in similar to the 10net in IPv4, but with the difference that each ULA is globally unique. This means that we can calculate our own network prefix that we use in a mesh. This leaves the option to use the same prefix for all the different mesh networks, or we can use an unique prefix for every mesh. A unique prefix for every mesh may have an routing advantage if we need to connect different mesh networks together in future, but it also means that HPN&#039;s should be pre-configured with a prefix that is tied to a specific community and the prefix allocations should be managed centrally.&lt;br /&gt;
&lt;br /&gt;
Note that private Unique Local IPv6 addresses are not globally routable, but only inside our mesh. If we need globally routable IPv6 addresses then we need to apply for Provider Independent IPv6 address space from Afrinic. These addresses is uosually someting that is given to some network provider (owner of the network) and it will have a yearly fee attached to it. Issues - it is not always clear who the owner of a communit mesh is.&lt;br /&gt;
&lt;br /&gt;
The best sollution may be to use a combination of both addressing schemes. Use ULA addresses all over the mesh and only use leagal IPv6 addresses where devices needs to be availble on the Internet.&lt;br /&gt;
&lt;br /&gt;
== WEB interface ==&lt;br /&gt;
At the moment there is no WEB GUI for the HPN. This is an suggestion of how the GUI should look like. The idea is to keep it simple as possible with as little as possible that can be changed.&lt;br /&gt;
&lt;br /&gt;
=== WEB Gui main page ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-hunt-html.png|border|300px]][[Image:HPN-green-html.png|border|300px]][[Image:HPN-red-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
The default setting for a HPN is to come up in the hunting mode. After a successful hunt, the HPN will lock to either a red or green node and it will keep the setting, even during power failures. The menu will show the current state of a HPN, but it will also allow you to override the current mode by selecting red, green or hunting manually. Changes are only allowed after a valid login.&lt;br /&gt;
&lt;br /&gt;
The bar graph will give some indication of signal strength to other nodes on both the red and green channel. Note that there can be a link to more than one node on a given channel (red or green). The indicator on the main page will only show the signal to the first node that it links with. A more detailed view is available on the align page under the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
The last thing that can be changed from the main menu is the name of the HPN. This name will also be registered into the mesh DNS. All changes will only take effect after selecting the SUBMIT button. Additional features can be reached via the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
=== More features ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-features-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
==== Configure / Align / Stats ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-configure-html.png|border|300px]][[Image:HPN-align-html.png|border|300px]][[Image:HPN-stats-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
&lt;br /&gt;
[[High_Performance_Node_-_Specification]]&lt;br /&gt;
&lt;br /&gt;
== Upgrades ==&lt;br /&gt;
All the HPN nodes in a mesh will look for new firmware updates from the GateWay node on a regular basis. New firmware is placed inside a special directory on the GateWay node and it is made available, via ftp, to all the other HPN nodes in the mesh. Each HPN nodes will compare the firmware from this directory with it&#039;s current version of firmware to determine if it&#039;s newer. If new firmware is available, then the node will download and untar the new firmware onto a spare partition on the flash disk. After that all the custom configurations are copied over to the new partition. The HPN will then change the active partition to the new one and it will reboot with the new firmware. If someting should go wrong with the upgrade, then the HPN will revert back to the previous version of firmware.&lt;br /&gt;
&lt;br /&gt;
The GateWay node will look for new firmware somewhere on the Internet or from the WISP box. If available it will download the new firmware and place it into the special ftp directory.&lt;br /&gt;
&lt;br /&gt;
== Typical Outdoor Range at 5.8Ghz ==&lt;br /&gt;
At this stage we haven&#039;t found a testing site that is suitable for our tests. The following is just gestimates and it still needs to be tested.&lt;br /&gt;
&lt;br /&gt;
* Omni to Omni: up to xx km (2km?)&lt;br /&gt;
* Panel to Omni: up to xx km (5km?)&lt;br /&gt;
* Panel to Panel: up to xx km (10km?)&lt;br /&gt;
* External to External: more than xx km (20km?), depending on antenna type&lt;br /&gt;
&lt;br /&gt;
Now for some test results:&lt;br /&gt;
For our first test we selected a friendly site for the panel-to-panel test. We selected Anita&#039;s home because she is just over 10km from Meraka and there is a clear line of site between both sites (this is also our longest 11a link so far). Another reason is that we already have a 32bBi directional antenna, from an existing installation on Meraka&#039;s roof, that is pointing directly to her home. &lt;br /&gt;
&lt;br /&gt;
We used one of our new routers for this site, but we replaced the 5.8Ghz omni antenna with a 27dBi grid antenna so that we could have one link to login to the router, while we can do some tests on the second antenna.&lt;br /&gt;
&lt;br /&gt;
Here is a picture of Anita&#039;s husband with the router the he installed on their roof.&lt;br /&gt;
&lt;br /&gt;
[[Image:001.jpg|border|300px]][[Image:002.jpg|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Regulatory ==&lt;br /&gt;
Wirelss equipment that operate in the ISM bands do not need an spectrum licence, but they need to be ICASA approved. All the wifi adapters inside the HPN nodes are ICASA approved. From recent media reports regarding DABBA communications and there equipent in the Orange Farm area, it seems like our HPN node needs to get ICASA approval for the complete assembled HPN node as well. Every node should have it&#039;s own ICASA sticker on the back.&lt;br /&gt;
&lt;br /&gt;
== Using WEP/WPA in adhoc mode ==&lt;br /&gt;
&lt;br /&gt;
One of the requirements of the High Performance Node is to have WEP or WPA enabled between the wireless links of the mesh nodes. This is one of the functionalities that we would like to sort out before we install any of the nodes in the field. It&#039;s very difficult to change the encryption mode after an installation because the mesh nodes will lose connectivity if one node is upgraded to use WEP, while another is still using older software without WEP.&lt;br /&gt;
&lt;br /&gt;
WEP and WPA are both methods to enable the encryption of data that it is send over the air. WEP (Wired equivalence privacy) is an older standard and it makes use of a WEP encryption engine while the newer WPA standard added the use of an AES encryption engine. WEP encryption has some security flaws embedded into the protocol and there are several tools available on the Internet that can crack WEP keys. These tools are more effective with the cracking of 64bit WEP keys than with 128bit keys and they require a large amount of captured data and processing power to crack a key. Note that not all WEP keys can be cracked, but only weak keys and that flaw was addressed and fixed by WPA.&lt;br /&gt;
&lt;br /&gt;
Wireless adapters on Unix Systems can operate in three different modes: Client, Hostap (Access Point) and Adhoc mode. Most of the implementations of wireless (802.11) networks are based on a model where there is one Access Point with several wireless clients attached to to it. &lt;br /&gt;
&lt;br /&gt;
[[Image:AP-client.png|center|One Access point with many nodes]]&lt;br /&gt;
 &lt;br /&gt;
Wireless Mesh networks make use of the less tested Adhoc mode of 802.11.&lt;br /&gt;
&lt;br /&gt;
[[Image:Adhoc.png|center|Many nodes using Adhoc mode (many point to point links)]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
WEP and WPA requires a couple of kld&#039;s to be loaded before they can be configured. The following kld&#039;s should be added to loader.conf&lt;br /&gt;
wlan_acl_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_amrr_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_ccmp_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_tkip_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_wep_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_xauth_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== WEP ====&lt;br /&gt;
Enable and test WEP in Adhoc mode on the HPN.&lt;br /&gt;
WEP makes use of a single PSK that needs to be configured on all the wireless nodes. Any node or wireless device that is configured with this PSK will have the capability to crypt and decrypt these wireless packets. There are two methods to configure WEP in FreeBSD. You can use either  use ifconfig directly or you can make use of the WPA supplicant utility.&lt;br /&gt;
&lt;br /&gt;
ifconfig e.g.&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0 10.10.1.2/24 wep deftxkey 1 wepkey 128bitwepison&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0&lt;br /&gt;
 ath0: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; metric 0 mtu 1500&lt;br /&gt;
        ether 00:80:48:50:9e:69&lt;br /&gt;
        inet6 fe80::280:48ff:fe50:9e69%ath0 prefixlen 64 scopeid 0x1&lt;br /&gt;
        inet6 fd9c:6829:597c:20:280:48ff:fe50:9e69 prefixlen 64&lt;br /&gt;
        inet6 fd9c:6829:597c:20:: prefixlen 64 anycast&lt;br /&gt;
        inet 10.10.1.2 netmask 0xffffff00 broadcast 10.10.1.255&lt;br /&gt;
        media: IEEE 802.11 Wireless Ethernet autoselect mode 11g &amp;lt;adhoc&amp;gt;&lt;br /&gt;
        status: associated&lt;br /&gt;
        ssid ptamesh channel 13 (2472 Mhz 11g) bssid 56:e5:be:30:14:5a&lt;br /&gt;
        authmode OPEN privacy ON deftxkey 1 wepkey 1:104-bit txpower 31.5&lt;br /&gt;
        scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi11g 7&lt;br /&gt;
        roam:rate11g 5 protmode CTS burst&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Enable WEP on three mesh nodes and test connectivity.&lt;br /&gt;
 mesh-9e69:~ # ping6 ff02::1%ath0&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9e69%ath0, icmp_seq=87 hlim=64 time=2.122 ms&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9ddd%ath0, icmp_seq=87 hlim=64 time=5.625 ms(DUP!)&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9a44%ath0, icmp_seq=87 hlim=64 time=32.358 ms(DUP!)&lt;br /&gt;
&lt;br /&gt;
Everything seems to work fine (as expeted) with WEP enabled in the mesh.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WPA&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WPA was designed to work in an environment where you have one AP and several clients and not for Adhoc (mesh) networks. On the AP you have the Authenticator software and on the client you have the supplicant software. This means that if one would like to use WPA to it&#039;s full then every mesh node needs to be an Authenticator for all the other nodes it can see, as well as a supplicant for every node it can see. According to the WPA design document http://wirelessafrica.meraka.org.za/wiki/images/3/39/Wpa_supplicant-devel-04.pdf one can use WPA in Adhoc mode only in a static way with PSK&#039;s:&lt;br /&gt;
 IEEE 802.11 operation mode (Infrastucture/IBSS).&lt;br /&gt;
 0 = infrastructure (Managed) mode, i.e., associate with an AP.&lt;br /&gt;
 1 = IBSS (ad-hoc, peer-to-peer)&lt;br /&gt;
 Note: IBSS can only be used with key_mgmt NONE (plaintext and static WEP) and key_mgmt=WPA-&lt;br /&gt;
 NONE (ﬁxed group key TKIP/CCMP). In addition, ap_scan has to be set to 2 for IBSS. WPA-None requires&lt;br /&gt;
 following network block options: proto=WPA, key_mgmt=WPA-NONE, pairwise=NONE, group=TKIP&lt;br /&gt;
 (or CCMP, but not both), and psk must also be set (either directly or using ASCII passphrase).&lt;br /&gt;
&lt;br /&gt;
This is methods is very similar to the way that WEP is being used. This means the the only advantage of using WPA over WEP is that one can make use of the AES encryption engine that comes with WPA. Please note that with this mode of WPA and with WEP that anyone can decrypt the data being send over the air if they get hold of the mesh-wide PSK that is configured on every node in the network. If security is of importance them end users should consider the use of point-to-point security mechanisms like VPN&#039;s.&lt;br /&gt;
&lt;br /&gt;
The configuration of WPA is not supported in command line mode, but only with the wpa_supplicant software. This is an example of a wpa_supplicant.conf file to enable WPA in Adhoc mode:&lt;br /&gt;
&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 #&lt;br /&gt;
 network={&lt;br /&gt;
   ssid=&amp;quot;ptamesh&amp;quot;&lt;br /&gt;
 # Channel  13 : 2472  Mhz 11g&lt;br /&gt;
   frequency=2472&lt;br /&gt;
   mode=1&lt;br /&gt;
   proto=WPA&lt;br /&gt;
   key_mgmt=WPA-NONE&lt;br /&gt;
   pairwise=NONE&lt;br /&gt;
   group=TKIP&lt;br /&gt;
   psk=&amp;quot;mesh-ipv6&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To start the WPA software during boot-up one needs to add WPA to the ifconfig line in rc.conf. E.g.&lt;br /&gt;
&lt;br /&gt;
 ifconfig_ath0=&amp;quot;WPA 10.10.1.1/24 mode 11g mediaopt adhoc channel 13 ssid ptamesh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Unfortunately WPA did not work as easy as WEP, so it&#039;s off to debugging.&lt;br /&gt;
&lt;br /&gt;
Starting wpa_supplicant in the foreground with debugging enabled. E.g&lt;br /&gt;
&lt;br /&gt;
 wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
&lt;br /&gt;
The debugging output shows that something happens that initiates a wlan scan operation, while the card is in Adhoc mode. This should not happen and wpa_supplicant software never completes the configuration due to this error.&lt;br /&gt;
&lt;br /&gt;
 mesh-9ddd:~ # wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
 Initializing interface &#039;ath0&#039; conf &#039;/etc/wpa_supplicant.conf&#039; driver &#039;default&#039; &lt;br /&gt;
 ctrl_interface &#039;N/A&#039; bridge &#039;N/A&#039;&lt;br /&gt;
 Configuration file &#039;/etc/wpa_supplicant.conf&#039; -&amp;gt; &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 Reading configuration file &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 Priority group 0&lt;br /&gt;
   id=0 ssid=&#039;ptamesh&#039;&lt;br /&gt;
 Initializing interface (2) &#039;ath0&#039;&lt;br /&gt;
 EAPOL: SUPP_PAE entering state DISCONNECTED&lt;br /&gt;
 EAPOL: KEY_RX entering state NO_KEY_RECEIVE&lt;br /&gt;
 EAPOL: SUPP_BE entering state INITIALIZE&lt;br /&gt;
 EAP: EAP entering state DISABLED&lt;br /&gt;
 EAPOL: External notification - portEnabled=0&lt;br /&gt;
 EAPOL: External notification - portValid=0&lt;br /&gt;
 Own MAC address: 00:80:48:50:9d:dd&lt;br /&gt;
 wpa_driver_bsd_set_wpa: enabled=1&lt;br /&gt;
 wpa_driver_bsd_set_wpa_internal: wpa=3 privacy=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=0&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=2&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=3&lt;br /&gt;
 wpa_driver_bsd_set_countermeasures: enabled=0&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 Setting scan request: 0 sec 100000 usec&lt;br /&gt;
 Added interface ath0&lt;br /&gt;
 State: DISCONNECTED -&amp;gt; SCANNING&lt;br /&gt;
 Trying to associate with SSID &#039;ptamesh&#039;&lt;br /&gt;
 Cancelling scan request&lt;br /&gt;
 WPA: clearing own WPA/RSN IE&lt;br /&gt;
 Automatic auth_alg selection: 0x1&lt;br /&gt;
 wpa_driver_bsd_set_auth_alg alg 0x1 authmode 1&lt;br /&gt;
 WPA: No WPA/RSN IE available from association info&lt;br /&gt;
 WPA: Set cipher suites based on configuration&lt;br /&gt;
 WPA: Selected cipher suites: group 8 pairwise 1 key_mgmt 16 proto 1&lt;br /&gt;
 WPA: clearing AP WPA IE&lt;br /&gt;
 WPA: clearing AP RSN IE&lt;br /&gt;
 WPA: using GTK TKIP&lt;br /&gt;
 WPA: using PTK NONE&lt;br /&gt;
 WPA: using KEY_MGMT WPA-NONE&lt;br /&gt;
 WPA: Set own WPA IE default - hexdump(len=24): dd 16 00 50 f2 01 01 00 00 50 &lt;br /&gt;
 f2 02 01 00 00 50 f2 00 01 00 00 50 f2 00&lt;br /&gt;
 No keys have been configured - skip key clearing&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 State: SCANNING -&amp;gt; ASSOCIATING&lt;br /&gt;
 wpa_driver_bsd_associate: ssid &#039;ptamesh&#039; wpa ie len 24 pairwise 0 group 2 key &lt;br /&gt;
 mgmt 4&lt;br /&gt;
 ioctl[SIOCS80211, op 22, len 24]: Invalid argument&lt;br /&gt;
 Association request to the driver failed&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 Cancelling authentication timeout&lt;br /&gt;
 State: ASSOCIATING -&amp;gt; COMPLETED&lt;br /&gt;
 CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (auth) [id=-1 &lt;br /&gt;
 id_str=]&lt;br /&gt;
 EAPOL: External notification - portControl=ForceAuthorized&lt;br /&gt;
&lt;br /&gt;
Next was to install fresh copy of the FreeBSD src code onto my PC. I found the wpa_supplicant source code under /usr/src/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c Build a new driver from source code and run it on a router. After that I&#039;ve added in a lot of printf statements to trace how the driver works and to locate the code that puts the wifi card in scanning mode. In the end I found out that wpa_supplicant driver did not put the card in scanning mode, but it somehow caused the 802.11 stack to start the scanning. Unfortunately I don&#039;t know enough about the 802.11 code in FreeBSD to do any mode debugging. I&#039;ve send a mail about the problem to one of the FreeBSD mailing lists and the originator of most of the 802.11 code in FreeBSD (Sam Leffler) said I must log a problem report. So I logged a problem report with FreeBSD and now we have to wait and see if someone to take responsibility to fix this problem. More information on the problem report can be found at: http://www.freebsd.org/cgi/query-pr.cgi?pr=126822&lt;br /&gt;
&lt;br /&gt;
For now I recommend that we make use of WEP instead of WPA in our implementation as it is working and there isn&#039;t such a big advantage in using WPA over WEP in this mode except for the encryption algorithm that changes from WEP to AES.&lt;br /&gt;
&lt;br /&gt;
== Antenna calculations ==&lt;br /&gt;
&lt;br /&gt;
Every HP-node has two 5.15-5.6 GHz antennas. The one as a build in patch antenna and the other is an 5.1-5.8 GHz omni-directional antenna. The idea is that the patch antenna of a node will either be aligned to the omni or the patch antenna of another node. The following calculations is to get an feeling of what distances should be possible between these antennas.&lt;br /&gt;
&lt;br /&gt;
South African Wifi channels:&lt;br /&gt;
 Channel   1 : 2412  Mhz 11g          Channel  48 : 5240  Mhz 11a&lt;br /&gt;
 Channel   2 : 2417  Mhz 11g          Channel  52 : 5260* Mhz 11a&lt;br /&gt;
 Channel   3 : 2422  Mhz 11g          Channel  56 : 5280* Mhz 11a&lt;br /&gt;
 Channel   4 : 2427  Mhz 11g          Channel  60 : 5300* Mhz 11a&lt;br /&gt;
 Channel   5 : 2432  Mhz 11g          Channel  64 : 5320* Mhz 11a&lt;br /&gt;
 Channel   6 : 2437  Mhz 11g          Channel 100 : 5500* Mhz 11a&lt;br /&gt;
 Channel   7 : 2442  Mhz 11g          Channel 104 : 5520* Mhz 11a&lt;br /&gt;
 Channel   8 : 2447  Mhz 11g          Channel 108 : 5540* Mhz 11a&lt;br /&gt;
 Channel   9 : 2452  Mhz 11g          Channel 112 : 5560* Mhz 11a&lt;br /&gt;
 Channel  10 : 2457  Mhz 11g          Channel 116 : 5580* Mhz 11a&lt;br /&gt;
 Channel  11 : 2462  Mhz 11g          Channel 120 : 5600* Mhz 11a&lt;br /&gt;
 Channel  12 : 2467  Mhz 11g          Channel 124 : 5620* Mhz 11a&lt;br /&gt;
 Channel  13 : 2472  Mhz 11g          Channel 128 : 5640* Mhz 11a&lt;br /&gt;
 Channel  36 : 5180  Mhz 11a          Channel 132 : 5660* Mhz 11a&lt;br /&gt;
 Channel  40 : 5200  Mhz 11a          Channel 136 : 5680* Mhz 11a&lt;br /&gt;
 Channel  44 : 5220  Mhz 11a          Channel 140 : 5700* Mhz 11a&lt;br /&gt;
&lt;br /&gt;
HP-Node detailed specs: http://wirelessafrica.meraka.org.za/wiki/images/0/07/WLAN-A0033.pdf&lt;br /&gt;
&lt;br /&gt;
Pigtail detail specs: http://wirelessafrica.meraka.org.za/wiki/images/0/0a/Ca178_cable_assemblies_datasheet.pdf&lt;br /&gt;
&lt;br /&gt;
Wireless adapter detail specs: http://wirelessafrica.meraka.org.za/wiki/images/2/21/Wlm54sag23.pdf&lt;br /&gt;
&lt;br /&gt;
OR the Mikrotik version of the same adapter called a R52H (also manufactured by Compex, but usually cheaper)&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:R52H.pdf&lt;br /&gt;
&lt;br /&gt;
Another popular adapter is the DCMA-82 from Wistron. They have better RX sensitivity, but lower output power and they are a bit more expensive than the Compex cards. In some of the discussions that I&#039;ve seen they state that the DCMA-82 has much cleaner output power, better RX sensitivity, and a lower failure rate/quality issues than Compex&#039;s cards.&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:DCMA-82.pdf&lt;br /&gt;
&lt;br /&gt;
Node specs summary:&lt;br /&gt;
 Patch antenna            - 21-23 dBi,   16 deg H,  11 deg V, 5.15 -5.6 GHz&lt;br /&gt;
 5Ghz Omni antenna        - 8-11 dBi,    360 deg H, 10 deg V, 5.1 - 5.85 GHz&lt;br /&gt;
 2.4Ghz Omni antenna      - 7.5-8.5 dBi, 360 deg H, 12 deg V, 2.4 - 2.5 GHz&lt;br /&gt;
 30mm U.FL-SMA pigtail    - RG178 cable insertion loss, 2.4 GHZ = -1.1dB, 5.6 GHz = -2dB&lt;br /&gt;
 Compex WLM54AG23 adapter - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            23dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
                            17dBm @ 54Mbps&lt;br /&gt;
 Mikrotik (Compex) R52H   - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            24dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
 Wistron DCMA-82          - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -82 dBm @ 36Mbps&lt;br /&gt;
                            -72 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            22.5dBm @ 6-24Mbps&lt;br /&gt;
                            21.5dBm @ 36Mbps&lt;br /&gt;
                            18dBm @ 48Mbps&lt;br /&gt;
&lt;br /&gt;
I could not find any receive sensitivity info for ranges between 6Mbps and 54Mbps for the WLM54AG23. The closest I could find was the specs of another manufacturer card, using the same Atheros chipset as the WLM54AG23. Here is the receive sensitivity info for a WMIA-166AG Dual-Band miniPCI module (802.11a/g)&lt;br /&gt;
Nominal Temp Range:&lt;br /&gt;
  6Mbps 10-5 BER @ -90 dBm, typical&lt;br /&gt;
  9Mbps 10-5 BER @ -89 dBm, typical&lt;br /&gt;
 12Mbps 10-5 BER @ -88 dBm, typical&lt;br /&gt;
 18Mbps 10-5 BER @ -86 dBm, typical&lt;br /&gt;
 24Mbps 10-5 BER @ -82 dBm, typical&lt;br /&gt;
 36Mbps 10-5 BER @ -78 dBm, typical&lt;br /&gt;
 48Mbps 10-5 BER @ -72 dBm, typical&lt;br /&gt;
 54Mbps 10-5 BER @ -68 dBm, typical &lt;br /&gt;
&lt;br /&gt;
The WLM54AG23 is not the best wifi adapter in the market, but it gives a good compromise between price vs performance. If one need to push the limits of a specific link then I would probable select the SR5 from Ubiquity. They have excellent TX power and RX sensitivity.&lt;br /&gt;
 &lt;br /&gt;
There are lots of wifi/antenna/distance calculators available on the WEB. Most of these calculators cannot calculate the max distance for a link, you have to specify the distance and it will calculate you dBm margin. Links to a couple of Wifi/antenna/distance calculators:&lt;br /&gt;
&lt;br /&gt;
 http://www.radiolabs.com/stations/wifi_calc.html&lt;br /&gt;
 http://www.zytrax.com/tech/wireless/calc.htm&lt;br /&gt;
 http://www.widgetbox.com/widget/wifi-link-calculator&lt;br /&gt;
 http://www.wifiextreme.com.au/index.php?main_page=page_5&lt;br /&gt;
 http://www.rflinx.com/help/calculations&lt;br /&gt;
 http://www.olotwireless.net/castella/radio.htm&lt;br /&gt;
&lt;br /&gt;
Here are some formulas use to calculate a link budget:&lt;br /&gt;
  Free space loss = 36.56 + 20Log10(Frequency) + 20Log10(Dist in miles)&lt;br /&gt;
  mW to dBm = 10Log10(milliWatts) + 30&lt;br /&gt;
  dBm to mW = 10(dBm/10)&lt;br /&gt;
  RX Power = Margin - RX sensitivity&lt;br /&gt;
  Theoretical margin = TX power budget + RX power budget - free space loss&lt;br /&gt;
  SAD factor = Theoretical margin/TX power budget * 100 and shows the percentage of spare power on transmission.&lt;br /&gt;
&lt;br /&gt;
(Free Space Loss) = 92.5 + (20 Log fequency) + (20 log km distance)&lt;br /&gt;
&lt;br /&gt;
Free space loss @ 5400GHz:&lt;br /&gt;
 1km = -107.07dB      11km = -128.028dB&lt;br /&gt;
 2km = -113.09dB      12km = -128.784dB&lt;br /&gt;
 3km = -116.61dB      13km = -129.479dB&lt;br /&gt;
 4km = -119.11dB      14km = -130.123dB&lt;br /&gt;
 5km = -121.05dB      15km = -130.722dB&lt;br /&gt;
 6km = -122.63dB      16km = -131.282dB&lt;br /&gt;
 7km = -123.97dB      17km = -131.809dB&lt;br /&gt;
 8km = -125.13dB      18km = -132.305dB&lt;br /&gt;
 9km = -126.15dB      19km = -132.775dB&lt;br /&gt;
 10km = -127.07dB     20km = -133.221dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPNode with a 5Ghz patch to omni link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Omni: &lt;br /&gt;
 Min link distance @ 54Mbps 0.9km:              Max link distance @ 54Mbps 1.55km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -106dB                      Free space loss = -111dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 6.9km:              Max link distance @ 24Mbps 12.3km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 34km free space  = -124dB                      Free space loss = -129dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 17km:                Max link distance @ 6Mbps 30.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 34km free space  = -132dB                      Free space loss = -137dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPnodes with a 5Ghz patch to patch link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Patch:&lt;br /&gt;
 Min link distance @ 54Mbps 3.9km:              Max link distance @ 54Mbps 6km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -119dB                      Free space loss = -123dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 30.9km:             Max link distance @ 24Mbps 38.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 Free space loss  = -137dB                      Free space loss = -139dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 77.6km:              Max link distance @ 6Mbps 123km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 Free space loss  = -145dB                      Free space loss = -149dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=File:Hunt-flow2.png&amp;diff=4628</id>
		<title>File:Hunt-flow2.png</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=File:Hunt-flow2.png&amp;diff=4628"/>
		<updated>2009-05-21T12:25:57Z</updated>

		<summary type="html">&lt;p&gt;JHugo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=Initial_(old)_hunting_description&amp;diff=4627</id>
		<title>Initial (old) hunting description</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=Initial_(old)_hunting_description&amp;diff=4627"/>
		<updated>2009-05-21T12:24:29Z</updated>

		<summary type="html">&lt;p&gt;JHugo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When a new node boots up for the fist time, then it will go into a hunting mode and it will search for other nodes in the mesh. In hunting mode it will first configure the patch antenna on the GREEN frequency. It will perform a link local IPv6 ping on that interface for about X seconds to determine if any IPv6 connectivity can be found on that antenna/channel. If no connectivity is found after X seconds, then it will hunt further using RED on the patch, then GREEN on the omni and then RED on the omni. If no connectivity can be found, then it will start the hunting process from the beginning, or until it is manually locked via the WEB terface. If connectivity can be established, then it will enable the green/red link LED on the bottom of the node to show connectivity (use the WEB interface for more information on to which node connectivity has been established to). If connectivity is lost then the LED will be off again. After stable connectivity for about X consecutive pings, the node will lock the antenna/channels util someone changes it manually via the WEB interface. Once the antennas/channels are locked then it will also change the sensitivity of the link LED and LED updates will be less frequently. The LED sensitivity can be manually changed via the WEB interface by selecting the &amp;quot;alignment&amp;quot; button. The alignment feature will give signal strength information on the WEB interface. See hunt-flow-diagram below. &lt;br /&gt;
&lt;br /&gt;
[[Image:Hunt-flow-diag.png]]&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=Initial_(old)_hunting_description&amp;diff=4626</id>
		<title>Initial (old) hunting description</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=Initial_(old)_hunting_description&amp;diff=4626"/>
		<updated>2009-05-21T12:21:46Z</updated>

		<summary type="html">&lt;p&gt;JHugo: New page:     *  When a new node boots up for the fist time, then it will go into a hunting mode and it will search for other nodes in the mesh. In hunting mode it will first configure the patch ant...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;    *  When a new node boots up for the fist time, then it will go into a hunting mode and it will search for other nodes in the mesh. In hunting mode it will first configure the patch antenna on the GREEN frequency. It will perform a link local IPv6 ping on that interface for about X seconds to determine if any IPv6 connectivity can be found on that antenna/channel. If no connectivity is found after X seconds, then it will hunt further using RED on the patch, then GREEN on the omni and then RED on the omni. If no connectivity can be found, then it will start the hunting process from the beginning, or until it is manually locked via the WEB terface. If connectivity can be established, then it will enable the green/red link LED on the bottom of the node to show connectivity (use the WEB interface for more information on to which node connectivity has been established to). If connectivity is lost then the LED will be off again. After stable connectivity for about X consecutive pings, the node will lock the antenna/channels util someone changes it manually via the WEB interface. Once the antennas/channels are locked then it will also change the sensitivity of the link LED and LED updates will be less frequently. The LED sensitivity can be manually changed via the WEB interface by selecting the &amp;quot;alignment&amp;quot; button. The alignment feature will give signal strength information on the WEB interface. See hunt-flow-diagram below. &lt;br /&gt;
&lt;br /&gt;
Image:Hunt-flow-diag.png&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4625</id>
		<title>High performance node page</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4625"/>
		<updated>2009-05-21T12:21:28Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Initial (old) hunting description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Development Team Research Pages]][[Category: Johann&#039;s Research Pages]][[Category: High Performance Node]]&lt;br /&gt;
&lt;br /&gt;
== What is a HPN (high performance node) ? ==&lt;br /&gt;
&lt;br /&gt;
The HPN is a multi-radio (3x radios), high performance, wireless (802.11) router. It has three antennas, one 5.8Ghz directional panel antenna as well as two omni&#039;s (2.4Ghz + 5.8Ghz). At the bottom of the router there is a weather proof UTP connector that is used for both Power-Over-Ethernet (PoE) and Ethernet connectivity to the router. A special mounting bracket at the back of the router allows it to be attached to an aluminum pole that is usually mounted to the side of a building or some structure.&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN.png]]&lt;br /&gt;
&lt;br /&gt;
== How to build a mesh with HPN&#039;s ==&lt;br /&gt;
The idea is to build a mesh network with these routers by aligning each directional antennas to point to a neighboring omni or another directional antenna. The wireless cards in a router operates on different channels (frequencies). To make it more user friendly each channel (frequencies) is tied to a color. This means that a red panel antenna must be aligned to a red omni (or another red panel) and a green panel must be aligned to a green omni (or green panel). The blue channel (2.4Ghz) is used to create a wifi hostspot for clients who would like to connect to the mesh network via wifi.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mesh-Network.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every mesh network usually have one GateWay that connects to the Internet or to some other network. Any one of the mesh nodes can be configured to become a GateWay for the mesh. When a node becomes a GateWay then the channels (frequencies) of the antennas are fixed  to the following: 5.8Ghz directional panel = RED, 5.8Ghz omni = GREEN and the 2.4Ghz omni = BLUE. The GateWay node will also become the DNS server for the mesh and all the nodes inside the mesh will register their HostNames with the DNS server. Another function of the GateWay node is to act as a time server for the mesh network and all the nodes inside the mesh will synchronize their time with the GateWay node. &lt;br /&gt;
&lt;br /&gt;
The best approach to build a mesh network is to start with the installation of the GateWay node. Next you install the node(s) that aligns to the GateWay node and then grow the mesh from there. Fist perform a visual alignment of the panel antenna on the node before the power is switched on. When a normal node starts up for the first time, then it will hunt for a mesh signal and it will lock it&#039;s channels (frequencies) once connectivity is established. It will first hunt for connectivity on both the red and green channels on the directional panel antenna for X seconds. If no signal is found, then the hunt will continue on the 5.8Ghz omni directional antenna for X seconds. This sequence will repeat itself until a signal is found, or until the channels are manually locked via the web interface on the node itself. &lt;br /&gt;
&lt;br /&gt;
Every node has a GREEN and a RED LED that is visible from underneath the node (should be visible when one stands under the node that is mounted on a pole). These LEDs are there to give some indication of connectivity and they will only turn on if connectivity can be established on either the red or green channel. Note that the LED does not show the signal quality or to what node it is connected to, it only shows that there is connectivity to another HPN node and on what channel (red or green). Signal quality and node connectivity information is only available via the web interface, but in most cases a visual alignment combined with a link indicator will be sufficient enough to get a mesh node up and running.&lt;br /&gt;
&lt;br /&gt;
== How can a client connect to the mesh ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Hpn-switch-pc.png]]&lt;br /&gt;
&lt;br /&gt;
Client devices can connect to any of the nodes via Ethernet or via wifi (blue channel = hostspot). The client devices should be configured to make use of DHCP so that all networking configurations can be done automatically (The node will provide all the networking details via DHCP). It is also recommended that the IPv6 protocol stack should be switch on if it is available. IPv6 should already be enabled on Windows Vista as well as most Unix systems.&lt;br /&gt;
&lt;br /&gt;
== How does the mesh work ? ==&lt;br /&gt;
&lt;br /&gt;
Almost everything in the network will be configured automatically, except for the selection of the gateway node and the channel (red or green) of a wireless link. The mesh supports both IPv6 and IPv4 traffic from any end-point (a place where a mesh client connects) to any other end-point in the mesh, while the backbone uses IPv6 only. A routing protocol called OLSR (Optimized Link State Routing) is used to exchange routing information between all the nodes inside the mesh and to select the best path for data traffic between end-points in the mesh.&lt;br /&gt;
&lt;br /&gt;
[[Image:OLSR.png]]&lt;br /&gt;
&lt;br /&gt;
Lets take an example (see diagram) where HP want to send data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv6 ====&lt;br /&gt;
HP will address the data to the IPv6 address of Dell and send it to node C. Node C will look in it&#039;s routing table and see that there are two routes to Dell, one route via node B-A-D-E and the other route via D-E. It will then select the best route and send it to the next node, in our case node D. Node D will look in it&#039;s routing table and see that the only route to Dell is via node E. Node E will look at it&#039;s routing table and see that Dell is directly connected and it will forward the data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv4 ====&lt;br /&gt;
This one is a bit more complicated. IPv4 is only used on the outside of the network (where the mesh clients connect to it) and then the IPv4 traffic is tunneled over the IPv6 backbone of the mesh to any another end point in the mesh. The mesh will automatically create a one-to-many IPv4 tunnel over the IPv6 network (4over6 tunneling protocol). This means that it looks like a network with an IPv4 tunnel from every IPv4 subnet to every other IPv4 subnet in the mesh. From a client&#039;s perspective it looks like a normal IPv4 routed network. From the backbone&#039;s perspective it looks like a IPv6 only network and all the OLSR routing information is IPv6 only. &lt;br /&gt;
&lt;br /&gt;
So how does the network know how to forward IPv4 packets to the correct destination ? It makes use of IPv4-mapped-IPv6 addresses (see [http://tools.ietf.org/html/rfc4291#section-2.5.5 RFC4291] and [http://tools.ietf.org/html/rfc4038 RFC4038]). Every node will map an IPv4 addresses into a IPv6 address before data goes to the backbone and the IPv4-Mapped-IPv6 addresses are converted back to a plain IPv4 address when it comes out of the backbone. OLSR will advertise these IPv4-Mapped-IPv6 address subnets on the backbone so that all the nodes will learn these subnets and they will calculate the best route to these subnets.&lt;br /&gt;
&lt;br /&gt;
Lets take example again, using IPv4. HP will address the data to the IPv4 address of Dell and send it to node C. Node C will change the IPv4 packet to an IPv6 packet with an IPv4-mapped-IPv6 addresses. From there it will follow the same route as the IPv6 example above. Node E will take the original IPv4 packet out of the IPv4-mapped-IPv6 packet and it will send the original IPv4 packet to Dell.&lt;br /&gt;
&lt;br /&gt;
See http://wirelessafrica.meraka.org.za/wiki/index.php/John%27s_research#4over6_Automatic_tunnels for more detail of the 4over6 tunneling protocol.&lt;br /&gt;
&lt;br /&gt;
=== Why is the mesh using IPv6 ? ===&lt;br /&gt;
&lt;br /&gt;
==== Reason one ====&lt;br /&gt;
It is predicted that unused IPv4 address space will be depleted within the next two years. Operating systems like Vista and most Unix systems defaults to IPv6 by default and most applications are IPv6 ready. With this in mind it makes sense that any new networking products should provide both IPv4 and IPv6 support.&lt;br /&gt;
&lt;br /&gt;
==== Reason two ====&lt;br /&gt;
In a single radio mesh network there is just one RF channel and everybody makes use of the same IP subnet. One limitation of a single radio mesh is that each mesh radio needs to handle both incoming and outgoing traffic. This causes the throughput to be halved because a radio cannot transmit and receive simultaneously. Another problem is that if one radio is transmitting then all its neighbors must all be in listening mode. These problems can cause a single radio mesh to very quickly run out of steam.&lt;br /&gt;
&lt;br /&gt;
Multi-radio mesh technology solves this problem by configuring every radio inside a router to operate on a different frequency and on a different IP subnet. In the HPN two radios are dedicated for backbone traffic and the third is used to create a client hotspot. 802.11a is generally used for backbone traffic, and 802.11b/g for client coverage. &lt;br /&gt;
&lt;br /&gt;
In a multi-radio mesh network it is very difficult to use the same IPv4 subnet on all the backbone wireless interfaces inside a mesh. The OLSR routing protocol uses broadcast packets to flood OLSR routing information to all of it&#039;s neighbors. This works very well with a single radio mesh, but not with a multi-radio mesh. Almost all TCP/IP (IPv4) stacks implementations can only send out broadcast packets on one interface at a time, but not on multiple interfaces on the same IPv4 subnet. This means that every interface needs to operate on a different IPv4 subnet, with the effect that some OLSR links may be physically possible, but it cannot be used for data because the IPv4 subnets are different. A multi-radio IPv4 OLSR network is possible, but it usually needs a lot of planning and configuration.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv4-Network.png]]&lt;br /&gt;
&lt;br /&gt;
The TCP/IP stack of IPv6 does not make use of Broadcast packets and OLSR routing information is flooded to it&#039;s neighbors via multicast packets. These multicast packets will automatically be duplicated by the TCP/IP stack and send out via multiple IPv6 interfaces on the same IPv6 subnet. This means that the mesh can use the same IPv6 subnet, all over the mesh backbone, without any problems. With a multi-radio IPv6 OLSR mesh you don&#039;t need any IPv6 configuration on the backbone as all the nodes use the same IPv6 subnet.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv6-Network.png]]&lt;br /&gt;
&lt;br /&gt;
== Behaviour of a normal node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
[[Initial (old) hunting description]]&lt;br /&gt;
&lt;br /&gt;
The following describes how a normal node will behave inside a mesh and what service it will provide:&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up for the fist time, then it will go into a hunting mode and it will search for other nodes in the mesh. In hunting mode it will first configure the patch antenna on the GREEN frequency. It will perform a link local IPv6 ping on that interface for about X seconds to determine if any IPv6 connectivity can be found on that antenna/channel. If no connectivity is found after X seconds, then it will hunt further using RED on the patch, then GREEN on the omni and then RED on the omni. If no connectivity can be found, then it will start the hunting process from the beginning, or until it is manually locked via the WEB terface. If connectivity can be established, then it will enable the green/red link LED on the bottom of the node to show connectivity (use the WEB interface for more information on to which node connectivity has been established to). If connectivity is lost then the LED will be off again. After stable connectivity for about X consecutive pings, the node will lock the antenna/channels util someone changes it manually via the WEB interface. Once the antennas/channels are locked then it will also change the sensitivity of the link LED and LED updates will be less frequently. The LED sensitivity can be manually changed via the WEB interface by selecting the &amp;quot;alignment&amp;quot; button. The alignment feature will give signal strength information on the WEB interface. See hunt-flow-diagram below.&lt;br /&gt;
&lt;br /&gt;
[[Image:Hunt-flow-diag.png]]&lt;br /&gt;
   &lt;br /&gt;
* When a new node boots up then an unique IPv6 address ((inside this mesh. See IP addressing section) will be configured on all the Ethernet and wireless interfaces. An unique (inside this mesh) IPv4 address is calculated and configured on the Ethernet interface and on the 2.4Ghz omni interface. The node will use the MAC address of the adapter to calculate a unique IPv4 and IPv6 subnet for that interface. These automatic addresses can be overrided via the WEB interface (E.g. if a globally routeable IPv6 address is required for a website inside the mesh and it should be visible from the Internet). Wireless interfaces are placed into adhoc mode and the channel, ssid and bssid are also configured.&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up then the OLSR daemon is started and it will listen en send OLSR topology packets to all of it&#039;s neighboring nodes. OLSR runs on all the wireless interfaces, but not on the Ethernet interface. All the IPv4 subnets are converted to 4in6 IPv6 addresses and these IPv6 subnets are placed into the HNA section of olsrd.conf, together with the IPv6 subnets that are configured on the Ethernet interface and on the 2.4Ghz omni interface. These HNA subnets are then distributed, via OLSR, to all the other nodes inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The 4over6 tunneling daemon take care of all IPv4 comms and dirtributing of routing information inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The node will start ntpd daemon on provide NTP time services on all it&#039;s IPv4 and IPv6 addresses. NTP will also synchronize it&#039;s local time with the GW-node on a regular basis.&lt;br /&gt;
&lt;br /&gt;
* The node will register it&#039;s own hostname in DNS on the GW-node. It will start dnsmasq daemon and it will also provide DNS services on all it&#039;s IPv4 and IPv6 addresses. Dnsmasq will forward all DNS queries to the DNS server running on the GW-node.&lt;br /&gt;
&lt;br /&gt;
* Dnsmasq is used to provide IPv4 DHCP services and DNS services on both the Ethernet interface and on the 2.4Ghz omni (hostspot) interface.&lt;br /&gt;
&lt;br /&gt;
* rtadvd will run on both the Ethernet interface and on the 2.4Ghz omni interface and it is used to advertise IPv6 prefixes to locally connected IPv6 client devices.&lt;br /&gt;
&lt;br /&gt;
* sshd allows remote ssh login&#039;s from anywhere in the mesh network.&lt;br /&gt;
&lt;br /&gt;
* watchdogd toggles the watchdog during normal operations. Should the system hang for some reason, then the watchdog will restart the HPN node.&lt;br /&gt;
&lt;br /&gt;
* mini_httpd is used for the WEB gui running on the HPN node.&lt;br /&gt;
&lt;br /&gt;
== Behavior of the GateWay node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
Any standard mesh node can become a GateWay node by selecting the &amp;quot;GateWay&amp;quot; button under &amp;quot;Additional features&amp;quot; on the WEB interface. The GateWay node is the place where the mesh will connect to some outside network and it will be the default route for the mesh. When a normal node becomes a GateWay node, then it does not disable any normal node features, but it just adds some additional features. The following are the additional features that a GateWay node will have:&lt;br /&gt;
&lt;br /&gt;
* The GW-node will not go into a hunting mode and it will lock it&#039;s channels with GREEN on the omni and RED on the directional panel. The default channels can be swapped via the WEB interface.&lt;br /&gt;
&lt;br /&gt;
* The GW-node is the default route for the mesh and it will advertise a default route via OLSR to the rest of the mesh.&lt;br /&gt;
&lt;br /&gt;
* The GW-node connects to the outside networks via Ethernet. It will perform a DHCP request on this interface in order to get an automatic IP address and external DNS server configurations from the external network. These setting can be overided via the WEB interface, under &amp;quot;Additional features&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes the DNS server for the mesh and it will configure and start the &#039;named&#039; services on IPv6, as well as on a well known IPv6 address of fec0:0:0:ffff::1. It will allow any node inside a mesh to submit their hostname into DNS and it will provide DNS services to any node or other device inside the mesh on IPv6 only. The GateWay node will also forward external DNS requests to upstream DNS servers if they are available. Upstream DNS servers are usually configured via DHCP but these setting can also be overided under &amp;quot;Additional features&amp;quot; on the WEB interface. DNS services are still available via &#039;dnsmasq&#039;, on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a time server for the mesh. It will synchronize it&#039;s time to an external time server if it&#039;s configured and available, otherwise it will use it&#039;s own internal RTC to synchronize it&#039;s time to. This time will be available to the rest of the mesh on a well known IPv6 address of fec0:0:0:ffff::1 and all the nodes in a mesh will use this time to synchronize their own time servers to. The GW-node will still provide NTP time services on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a firmware update server for the mesh. It will start ftpd services on IPv6, on a well known IPv6 address of fec0:0:0:ffff::1. It will took for new firmware on the Internet. If new firmware is available, then it will download the software and make it available to the other nodes inside the mesh via ftp.&lt;br /&gt;
&lt;br /&gt;
== IPv4 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
IPv4 addresses are not used in the backbone, but only on the edge of the network. This means that every node will have two IPv4 subnets configured, one on the Ethernet adapter (npe0) and the other on the 2.4Ghz omni (ath2) that is used for a wifi hotspot. The High performance node will always use the first IPv4 address on a configured subnet. E.g 10.234.18.1/24&lt;br /&gt;
&lt;br /&gt;
The HPN currently makes use of an automatic IPv4 addressing scheme where the IPv4 subnet is derived from the two least significant bytes of the MAC address of that particular interface. The first bye of the network is always 10 because we are making use of the 10net inside the mesh. The next two byes comes from the last two byes of the Mac address and it will become the IPv4 subnet for that adapter. The adapter itself will be 10.x.x.1 and it will become the default gateway for that subnet. DNSmasq will hand out DHCP addresses form 10.x.x.100 - 10.x.x.199 on the calculated subnet.&lt;br /&gt;
&lt;br /&gt;
 Mac = 00:d0:12:07:cb:73&lt;br /&gt;
 cb.73 (hex) = 203.115 (decimal)&lt;br /&gt;
 IP subnet  = 10.203.115 with /24 subnet mask&lt;br /&gt;
 IP address = 10.203.115.1&lt;br /&gt;
 DHCP = 10.203.115.100-10.203.115.199&lt;br /&gt;
&lt;br /&gt;
This addressing scheme will work 99% of the time, but it is not failsafe. Subnet clashes may occur due to the MAC address numbering schemes used by different vendors. MAC addresses usually have a vendor portion (first part of address) and a product/sequent number portion (last part). The last part is the part that is used to generate an IPv4 address. The last two bytes will most probably, at some stage, be that same for two different cards from two different vendors and there may be a very small chance for both of these cards end up in the same mesh network. In this case the automatic address can be overridden manually in rc.conf.local. At this stage there is no build in detection system that will handle Mac address clashes.&lt;br /&gt;
&lt;br /&gt;
Other addressing schemes to consider:&lt;br /&gt;
* Manage and assign all IPv4 addresses centrally. Program addresses into the HPN&#039;s during the manufacturing process. This will sort out all IPv4 address clashes. Issues - Do you assign a IPv4 address block per community or just sequential per HPN node?&lt;br /&gt;
* Manage a block of IPv4 addresses for each community somewhere on the local mesh. HPN nodes can then request an IPv4 addresses from this repository and use it. Issues - what happens if server is down or during a power failure. Will you get a new IPv4 address every time, simular to what you get with ADSL. This will mean that all the the PC&#039;s and devices that received DHCP addresses from DNSmasq will have to change as well. &lt;br /&gt;
&lt;br /&gt;
Issues that may influence the selection of an addressing scheme:&lt;br /&gt;
* Should there be IPv4 connectivity between different mesh networks ?&lt;br /&gt;
* Should there be IPv4 connectivity between a network inside a mesh and some other place in the Internet ?&lt;br /&gt;
* Should someone upstream device be able to initiate a connection into a mesh network (E.g. web server in mesh). ?&lt;br /&gt;
* Should we make use of legal (routeable) IPv4 address space, or should we stick to the 10net.&lt;br /&gt;
* Should the network be able to build and exchange IPv4 routing information with other networks.&lt;br /&gt;
* Routing information can be simplified if sequential IPv4 addresses are managed centrally and allocated per mesh&lt;br /&gt;
* Should the addressing scheme survive a power cycle or load shedding inside a community&lt;br /&gt;
* Is the WISP going to do NAT ?&lt;br /&gt;
&lt;br /&gt;
== IPv6 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
All the HPN nodes supports end-to-end IPv6 communications over the mesh. IPv6 only needs a network prefix (IPv6 subnet) for every adapter and the protocol stack will work out the IPv6 address for each interface. &lt;br /&gt;
&lt;br /&gt;
Our mesh is making use of a private Unique Local Addresses (ULAs) space, described in [http://www.rfc-editor.org/rfc/rfc4193.txt RFC4193]. This address space in similar to the 10net in IPv4, but with the difference that each ULA is globally unique. This means that we can calculate our own network prefix that we use in a mesh. This leaves the option to use the same prefix for all the different mesh networks, or we can use an unique prefix for every mesh. A unique prefix for every mesh may have an routing advantage if we need to connect different mesh networks together in future, but it also means that HPN&#039;s should be pre-configured with a prefix that is tied to a specific community and the prefix allocations should be managed centrally.&lt;br /&gt;
&lt;br /&gt;
Note that private Unique Local IPv6 addresses are not globally routable, but only inside our mesh. If we need globally routable IPv6 addresses then we need to apply for Provider Independent IPv6 address space from Afrinic. These addresses is uosually someting that is given to some network provider (owner of the network) and it will have a yearly fee attached to it. Issues - it is not always clear who the owner of a communit mesh is.&lt;br /&gt;
&lt;br /&gt;
The best sollution may be to use a combination of both addressing schemes. Use ULA addresses all over the mesh and only use leagal IPv6 addresses where devices needs to be availble on the Internet.&lt;br /&gt;
&lt;br /&gt;
== WEB interface ==&lt;br /&gt;
At the moment there is no WEB GUI for the HPN. This is an suggestion of how the GUI should look like. The idea is to keep it simple as possible with as little as possible that can be changed.&lt;br /&gt;
&lt;br /&gt;
=== WEB Gui main page ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-hunt-html.png|border|300px]][[Image:HPN-green-html.png|border|300px]][[Image:HPN-red-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
The default setting for a HPN is to come up in the hunting mode. After a successful hunt, the HPN will lock to either a red or green node and it will keep the setting, even during power failures. The menu will show the current state of a HPN, but it will also allow you to override the current mode by selecting red, green or hunting manually. Changes are only allowed after a valid login.&lt;br /&gt;
&lt;br /&gt;
The bar graph will give some indication of signal strength to other nodes on both the red and green channel. Note that there can be a link to more than one node on a given channel (red or green). The indicator on the main page will only show the signal to the first node that it links with. A more detailed view is available on the align page under the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
The last thing that can be changed from the main menu is the name of the HPN. This name will also be registered into the mesh DNS. All changes will only take effect after selecting the SUBMIT button. Additional features can be reached via the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
=== More features ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-features-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
==== Configure / Align / Stats ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-configure-html.png|border|300px]][[Image:HPN-align-html.png|border|300px]][[Image:HPN-stats-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
&lt;br /&gt;
[[High_Performance_Node_-_Specification]]&lt;br /&gt;
&lt;br /&gt;
== Upgrades ==&lt;br /&gt;
All the HPN nodes in a mesh will look for new firmware updates from the GateWay node on a regular basis. New firmware is placed inside a special directory on the GateWay node and it is made available, via ftp, to all the other HPN nodes in the mesh. Each HPN nodes will compare the firmware from this directory with it&#039;s current version of firmware to determine if it&#039;s newer. If new firmware is available, then the node will download and untar the new firmware onto a spare partition on the flash disk. After that all the custom configurations are copied over to the new partition. The HPN will then change the active partition to the new one and it will reboot with the new firmware. If someting should go wrong with the upgrade, then the HPN will revert back to the previous version of firmware.&lt;br /&gt;
&lt;br /&gt;
The GateWay node will look for new firmware somewhere on the Internet or from the WISP box. If available it will download the new firmware and place it into the special ftp directory.&lt;br /&gt;
&lt;br /&gt;
== Typical Outdoor Range at 5.8Ghz ==&lt;br /&gt;
At this stage we haven&#039;t found a testing site that is suitable for our tests. The following is just gestimates and it still needs to be tested.&lt;br /&gt;
&lt;br /&gt;
* Omni to Omni: up to xx km (2km?)&lt;br /&gt;
* Panel to Omni: up to xx km (5km?)&lt;br /&gt;
* Panel to Panel: up to xx km (10km?)&lt;br /&gt;
* External to External: more than xx km (20km?), depending on antenna type&lt;br /&gt;
&lt;br /&gt;
Now for some test results:&lt;br /&gt;
For our first test we selected a friendly site for the panel-to-panel test. We selected Anita&#039;s home because she is just over 10km from Meraka and there is a clear line of site between both sites (this is also our longest 11a link so far). Another reason is that we already have a 32bBi directional antenna, from an existing installation on Meraka&#039;s roof, that is pointing directly to her home. &lt;br /&gt;
&lt;br /&gt;
We used one of our new routers for this site, but we replaced the 5.8Ghz omni antenna with a 27dBi grid antenna so that we could have one link to login to the router, while we can do some tests on the second antenna.&lt;br /&gt;
&lt;br /&gt;
Here is a picture of Anita&#039;s husband with the router the he installed on their roof.&lt;br /&gt;
&lt;br /&gt;
[[Image:001.jpg|border|300px]][[Image:002.jpg|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Regulatory ==&lt;br /&gt;
Wirelss equipment that operate in the ISM bands do not need an spectrum licence, but they need to be ICASA approved. All the wifi adapters inside the HPN nodes are ICASA approved. From recent media reports regarding DABBA communications and there equipent in the Orange Farm area, it seems like our HPN node needs to get ICASA approval for the complete assembled HPN node as well. Every node should have it&#039;s own ICASA sticker on the back.&lt;br /&gt;
&lt;br /&gt;
== Using WEP/WPA in adhoc mode ==&lt;br /&gt;
&lt;br /&gt;
One of the requirements of the High Performance Node is to have WEP or WPA enabled between the wireless links of the mesh nodes. This is one of the functionalities that we would like to sort out before we install any of the nodes in the field. It&#039;s very difficult to change the encryption mode after an installation because the mesh nodes will lose connectivity if one node is upgraded to use WEP, while another is still using older software without WEP.&lt;br /&gt;
&lt;br /&gt;
WEP and WPA are both methods to enable the encryption of data that it is send over the air. WEP (Wired equivalence privacy) is an older standard and it makes use of a WEP encryption engine while the newer WPA standard added the use of an AES encryption engine. WEP encryption has some security flaws embedded into the protocol and there are several tools available on the Internet that can crack WEP keys. These tools are more effective with the cracking of 64bit WEP keys than with 128bit keys and they require a large amount of captured data and processing power to crack a key. Note that not all WEP keys can be cracked, but only weak keys and that flaw was addressed and fixed by WPA.&lt;br /&gt;
&lt;br /&gt;
Wireless adapters on Unix Systems can operate in three different modes: Client, Hostap (Access Point) and Adhoc mode. Most of the implementations of wireless (802.11) networks are based on a model where there is one Access Point with several wireless clients attached to to it. &lt;br /&gt;
&lt;br /&gt;
[[Image:AP-client.png|center|One Access point with many nodes]]&lt;br /&gt;
 &lt;br /&gt;
Wireless Mesh networks make use of the less tested Adhoc mode of 802.11.&lt;br /&gt;
&lt;br /&gt;
[[Image:Adhoc.png|center|Many nodes using Adhoc mode (many point to point links)]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
WEP and WPA requires a couple of kld&#039;s to be loaded before they can be configured. The following kld&#039;s should be added to loader.conf&lt;br /&gt;
wlan_acl_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_amrr_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_ccmp_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_tkip_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_wep_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_xauth_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== WEP ====&lt;br /&gt;
Enable and test WEP in Adhoc mode on the HPN.&lt;br /&gt;
WEP makes use of a single PSK that needs to be configured on all the wireless nodes. Any node or wireless device that is configured with this PSK will have the capability to crypt and decrypt these wireless packets. There are two methods to configure WEP in FreeBSD. You can use either  use ifconfig directly or you can make use of the WPA supplicant utility.&lt;br /&gt;
&lt;br /&gt;
ifconfig e.g.&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0 10.10.1.2/24 wep deftxkey 1 wepkey 128bitwepison&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0&lt;br /&gt;
 ath0: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; metric 0 mtu 1500&lt;br /&gt;
        ether 00:80:48:50:9e:69&lt;br /&gt;
        inet6 fe80::280:48ff:fe50:9e69%ath0 prefixlen 64 scopeid 0x1&lt;br /&gt;
        inet6 fd9c:6829:597c:20:280:48ff:fe50:9e69 prefixlen 64&lt;br /&gt;
        inet6 fd9c:6829:597c:20:: prefixlen 64 anycast&lt;br /&gt;
        inet 10.10.1.2 netmask 0xffffff00 broadcast 10.10.1.255&lt;br /&gt;
        media: IEEE 802.11 Wireless Ethernet autoselect mode 11g &amp;lt;adhoc&amp;gt;&lt;br /&gt;
        status: associated&lt;br /&gt;
        ssid ptamesh channel 13 (2472 Mhz 11g) bssid 56:e5:be:30:14:5a&lt;br /&gt;
        authmode OPEN privacy ON deftxkey 1 wepkey 1:104-bit txpower 31.5&lt;br /&gt;
        scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi11g 7&lt;br /&gt;
        roam:rate11g 5 protmode CTS burst&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Enable WEP on three mesh nodes and test connectivity.&lt;br /&gt;
 mesh-9e69:~ # ping6 ff02::1%ath0&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9e69%ath0, icmp_seq=87 hlim=64 time=2.122 ms&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9ddd%ath0, icmp_seq=87 hlim=64 time=5.625 ms(DUP!)&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9a44%ath0, icmp_seq=87 hlim=64 time=32.358 ms(DUP!)&lt;br /&gt;
&lt;br /&gt;
Everything seems to work fine (as expeted) with WEP enabled in the mesh.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WPA&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WPA was designed to work in an environment where you have one AP and several clients and not for Adhoc (mesh) networks. On the AP you have the Authenticator software and on the client you have the supplicant software. This means that if one would like to use WPA to it&#039;s full then every mesh node needs to be an Authenticator for all the other nodes it can see, as well as a supplicant for every node it can see. According to the WPA design document http://wirelessafrica.meraka.org.za/wiki/images/3/39/Wpa_supplicant-devel-04.pdf one can use WPA in Adhoc mode only in a static way with PSK&#039;s:&lt;br /&gt;
 IEEE 802.11 operation mode (Infrastucture/IBSS).&lt;br /&gt;
 0 = infrastructure (Managed) mode, i.e., associate with an AP.&lt;br /&gt;
 1 = IBSS (ad-hoc, peer-to-peer)&lt;br /&gt;
 Note: IBSS can only be used with key_mgmt NONE (plaintext and static WEP) and key_mgmt=WPA-&lt;br /&gt;
 NONE (ﬁxed group key TKIP/CCMP). In addition, ap_scan has to be set to 2 for IBSS. WPA-None requires&lt;br /&gt;
 following network block options: proto=WPA, key_mgmt=WPA-NONE, pairwise=NONE, group=TKIP&lt;br /&gt;
 (or CCMP, but not both), and psk must also be set (either directly or using ASCII passphrase).&lt;br /&gt;
&lt;br /&gt;
This is methods is very similar to the way that WEP is being used. This means the the only advantage of using WPA over WEP is that one can make use of the AES encryption engine that comes with WPA. Please note that with this mode of WPA and with WEP that anyone can decrypt the data being send over the air if they get hold of the mesh-wide PSK that is configured on every node in the network. If security is of importance them end users should consider the use of point-to-point security mechanisms like VPN&#039;s.&lt;br /&gt;
&lt;br /&gt;
The configuration of WPA is not supported in command line mode, but only with the wpa_supplicant software. This is an example of a wpa_supplicant.conf file to enable WPA in Adhoc mode:&lt;br /&gt;
&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 #&lt;br /&gt;
 network={&lt;br /&gt;
   ssid=&amp;quot;ptamesh&amp;quot;&lt;br /&gt;
 # Channel  13 : 2472  Mhz 11g&lt;br /&gt;
   frequency=2472&lt;br /&gt;
   mode=1&lt;br /&gt;
   proto=WPA&lt;br /&gt;
   key_mgmt=WPA-NONE&lt;br /&gt;
   pairwise=NONE&lt;br /&gt;
   group=TKIP&lt;br /&gt;
   psk=&amp;quot;mesh-ipv6&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To start the WPA software during boot-up one needs to add WPA to the ifconfig line in rc.conf. E.g.&lt;br /&gt;
&lt;br /&gt;
 ifconfig_ath0=&amp;quot;WPA 10.10.1.1/24 mode 11g mediaopt adhoc channel 13 ssid ptamesh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Unfortunately WPA did not work as easy as WEP, so it&#039;s off to debugging.&lt;br /&gt;
&lt;br /&gt;
Starting wpa_supplicant in the foreground with debugging enabled. E.g&lt;br /&gt;
&lt;br /&gt;
 wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
&lt;br /&gt;
The debugging output shows that something happens that initiates a wlan scan operation, while the card is in Adhoc mode. This should not happen and wpa_supplicant software never completes the configuration due to this error.&lt;br /&gt;
&lt;br /&gt;
 mesh-9ddd:~ # wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
 Initializing interface &#039;ath0&#039; conf &#039;/etc/wpa_supplicant.conf&#039; driver &#039;default&#039; &lt;br /&gt;
 ctrl_interface &#039;N/A&#039; bridge &#039;N/A&#039;&lt;br /&gt;
 Configuration file &#039;/etc/wpa_supplicant.conf&#039; -&amp;gt; &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 Reading configuration file &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 Priority group 0&lt;br /&gt;
   id=0 ssid=&#039;ptamesh&#039;&lt;br /&gt;
 Initializing interface (2) &#039;ath0&#039;&lt;br /&gt;
 EAPOL: SUPP_PAE entering state DISCONNECTED&lt;br /&gt;
 EAPOL: KEY_RX entering state NO_KEY_RECEIVE&lt;br /&gt;
 EAPOL: SUPP_BE entering state INITIALIZE&lt;br /&gt;
 EAP: EAP entering state DISABLED&lt;br /&gt;
 EAPOL: External notification - portEnabled=0&lt;br /&gt;
 EAPOL: External notification - portValid=0&lt;br /&gt;
 Own MAC address: 00:80:48:50:9d:dd&lt;br /&gt;
 wpa_driver_bsd_set_wpa: enabled=1&lt;br /&gt;
 wpa_driver_bsd_set_wpa_internal: wpa=3 privacy=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=0&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=2&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=3&lt;br /&gt;
 wpa_driver_bsd_set_countermeasures: enabled=0&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 Setting scan request: 0 sec 100000 usec&lt;br /&gt;
 Added interface ath0&lt;br /&gt;
 State: DISCONNECTED -&amp;gt; SCANNING&lt;br /&gt;
 Trying to associate with SSID &#039;ptamesh&#039;&lt;br /&gt;
 Cancelling scan request&lt;br /&gt;
 WPA: clearing own WPA/RSN IE&lt;br /&gt;
 Automatic auth_alg selection: 0x1&lt;br /&gt;
 wpa_driver_bsd_set_auth_alg alg 0x1 authmode 1&lt;br /&gt;
 WPA: No WPA/RSN IE available from association info&lt;br /&gt;
 WPA: Set cipher suites based on configuration&lt;br /&gt;
 WPA: Selected cipher suites: group 8 pairwise 1 key_mgmt 16 proto 1&lt;br /&gt;
 WPA: clearing AP WPA IE&lt;br /&gt;
 WPA: clearing AP RSN IE&lt;br /&gt;
 WPA: using GTK TKIP&lt;br /&gt;
 WPA: using PTK NONE&lt;br /&gt;
 WPA: using KEY_MGMT WPA-NONE&lt;br /&gt;
 WPA: Set own WPA IE default - hexdump(len=24): dd 16 00 50 f2 01 01 00 00 50 &lt;br /&gt;
 f2 02 01 00 00 50 f2 00 01 00 00 50 f2 00&lt;br /&gt;
 No keys have been configured - skip key clearing&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 State: SCANNING -&amp;gt; ASSOCIATING&lt;br /&gt;
 wpa_driver_bsd_associate: ssid &#039;ptamesh&#039; wpa ie len 24 pairwise 0 group 2 key &lt;br /&gt;
 mgmt 4&lt;br /&gt;
 ioctl[SIOCS80211, op 22, len 24]: Invalid argument&lt;br /&gt;
 Association request to the driver failed&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 Cancelling authentication timeout&lt;br /&gt;
 State: ASSOCIATING -&amp;gt; COMPLETED&lt;br /&gt;
 CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (auth) [id=-1 &lt;br /&gt;
 id_str=]&lt;br /&gt;
 EAPOL: External notification - portControl=ForceAuthorized&lt;br /&gt;
&lt;br /&gt;
Next was to install fresh copy of the FreeBSD src code onto my PC. I found the wpa_supplicant source code under /usr/src/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c Build a new driver from source code and run it on a router. After that I&#039;ve added in a lot of printf statements to trace how the driver works and to locate the code that puts the wifi card in scanning mode. In the end I found out that wpa_supplicant driver did not put the card in scanning mode, but it somehow caused the 802.11 stack to start the scanning. Unfortunately I don&#039;t know enough about the 802.11 code in FreeBSD to do any mode debugging. I&#039;ve send a mail about the problem to one of the FreeBSD mailing lists and the originator of most of the 802.11 code in FreeBSD (Sam Leffler) said I must log a problem report. So I logged a problem report with FreeBSD and now we have to wait and see if someone to take responsibility to fix this problem. More information on the problem report can be found at: http://www.freebsd.org/cgi/query-pr.cgi?pr=126822&lt;br /&gt;
&lt;br /&gt;
For now I recommend that we make use of WEP instead of WPA in our implementation as it is working and there isn&#039;t such a big advantage in using WPA over WEP in this mode except for the encryption algorithm that changes from WEP to AES.&lt;br /&gt;
&lt;br /&gt;
== Antenna calculations ==&lt;br /&gt;
&lt;br /&gt;
Every HP-node has two 5.15-5.6 GHz antennas. The one as a build in patch antenna and the other is an 5.1-5.8 GHz omni-directional antenna. The idea is that the patch antenna of a node will either be aligned to the omni or the patch antenna of another node. The following calculations is to get an feeling of what distances should be possible between these antennas.&lt;br /&gt;
&lt;br /&gt;
South African Wifi channels:&lt;br /&gt;
 Channel   1 : 2412  Mhz 11g          Channel  48 : 5240  Mhz 11a&lt;br /&gt;
 Channel   2 : 2417  Mhz 11g          Channel  52 : 5260* Mhz 11a&lt;br /&gt;
 Channel   3 : 2422  Mhz 11g          Channel  56 : 5280* Mhz 11a&lt;br /&gt;
 Channel   4 : 2427  Mhz 11g          Channel  60 : 5300* Mhz 11a&lt;br /&gt;
 Channel   5 : 2432  Mhz 11g          Channel  64 : 5320* Mhz 11a&lt;br /&gt;
 Channel   6 : 2437  Mhz 11g          Channel 100 : 5500* Mhz 11a&lt;br /&gt;
 Channel   7 : 2442  Mhz 11g          Channel 104 : 5520* Mhz 11a&lt;br /&gt;
 Channel   8 : 2447  Mhz 11g          Channel 108 : 5540* Mhz 11a&lt;br /&gt;
 Channel   9 : 2452  Mhz 11g          Channel 112 : 5560* Mhz 11a&lt;br /&gt;
 Channel  10 : 2457  Mhz 11g          Channel 116 : 5580* Mhz 11a&lt;br /&gt;
 Channel  11 : 2462  Mhz 11g          Channel 120 : 5600* Mhz 11a&lt;br /&gt;
 Channel  12 : 2467  Mhz 11g          Channel 124 : 5620* Mhz 11a&lt;br /&gt;
 Channel  13 : 2472  Mhz 11g          Channel 128 : 5640* Mhz 11a&lt;br /&gt;
 Channel  36 : 5180  Mhz 11a          Channel 132 : 5660* Mhz 11a&lt;br /&gt;
 Channel  40 : 5200  Mhz 11a          Channel 136 : 5680* Mhz 11a&lt;br /&gt;
 Channel  44 : 5220  Mhz 11a          Channel 140 : 5700* Mhz 11a&lt;br /&gt;
&lt;br /&gt;
HP-Node detailed specs: http://wirelessafrica.meraka.org.za/wiki/images/0/07/WLAN-A0033.pdf&lt;br /&gt;
&lt;br /&gt;
Pigtail detail specs: http://wirelessafrica.meraka.org.za/wiki/images/0/0a/Ca178_cable_assemblies_datasheet.pdf&lt;br /&gt;
&lt;br /&gt;
Wireless adapter detail specs: http://wirelessafrica.meraka.org.za/wiki/images/2/21/Wlm54sag23.pdf&lt;br /&gt;
&lt;br /&gt;
OR the Mikrotik version of the same adapter called a R52H (also manufactured by Compex, but usually cheaper)&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:R52H.pdf&lt;br /&gt;
&lt;br /&gt;
Another popular adapter is the DCMA-82 from Wistron. They have better RX sensitivity, but lower output power and they are a bit more expensive than the Compex cards. In some of the discussions that I&#039;ve seen they state that the DCMA-82 has much cleaner output power, better RX sensitivity, and a lower failure rate/quality issues than Compex&#039;s cards.&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:DCMA-82.pdf&lt;br /&gt;
&lt;br /&gt;
Node specs summary:&lt;br /&gt;
 Patch antenna            - 21-23 dBi,   16 deg H,  11 deg V, 5.15 -5.6 GHz&lt;br /&gt;
 5Ghz Omni antenna        - 8-11 dBi,    360 deg H, 10 deg V, 5.1 - 5.85 GHz&lt;br /&gt;
 2.4Ghz Omni antenna      - 7.5-8.5 dBi, 360 deg H, 12 deg V, 2.4 - 2.5 GHz&lt;br /&gt;
 30mm U.FL-SMA pigtail    - RG178 cable insertion loss, 2.4 GHZ = -1.1dB, 5.6 GHz = -2dB&lt;br /&gt;
 Compex WLM54AG23 adapter - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            23dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
                            17dBm @ 54Mbps&lt;br /&gt;
 Mikrotik (Compex) R52H   - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            24dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
 Wistron DCMA-82          - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -82 dBm @ 36Mbps&lt;br /&gt;
                            -72 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            22.5dBm @ 6-24Mbps&lt;br /&gt;
                            21.5dBm @ 36Mbps&lt;br /&gt;
                            18dBm @ 48Mbps&lt;br /&gt;
&lt;br /&gt;
I could not find any receive sensitivity info for ranges between 6Mbps and 54Mbps for the WLM54AG23. The closest I could find was the specs of another manufacturer card, using the same Atheros chipset as the WLM54AG23. Here is the receive sensitivity info for a WMIA-166AG Dual-Band miniPCI module (802.11a/g)&lt;br /&gt;
Nominal Temp Range:&lt;br /&gt;
  6Mbps 10-5 BER @ -90 dBm, typical&lt;br /&gt;
  9Mbps 10-5 BER @ -89 dBm, typical&lt;br /&gt;
 12Mbps 10-5 BER @ -88 dBm, typical&lt;br /&gt;
 18Mbps 10-5 BER @ -86 dBm, typical&lt;br /&gt;
 24Mbps 10-5 BER @ -82 dBm, typical&lt;br /&gt;
 36Mbps 10-5 BER @ -78 dBm, typical&lt;br /&gt;
 48Mbps 10-5 BER @ -72 dBm, typical&lt;br /&gt;
 54Mbps 10-5 BER @ -68 dBm, typical &lt;br /&gt;
&lt;br /&gt;
The WLM54AG23 is not the best wifi adapter in the market, but it gives a good compromise between price vs performance. If one need to push the limits of a specific link then I would probable select the SR5 from Ubiquity. They have excellent TX power and RX sensitivity.&lt;br /&gt;
 &lt;br /&gt;
There are lots of wifi/antenna/distance calculators available on the WEB. Most of these calculators cannot calculate the max distance for a link, you have to specify the distance and it will calculate you dBm margin. Links to a couple of Wifi/antenna/distance calculators:&lt;br /&gt;
&lt;br /&gt;
 http://www.radiolabs.com/stations/wifi_calc.html&lt;br /&gt;
 http://www.zytrax.com/tech/wireless/calc.htm&lt;br /&gt;
 http://www.widgetbox.com/widget/wifi-link-calculator&lt;br /&gt;
 http://www.wifiextreme.com.au/index.php?main_page=page_5&lt;br /&gt;
 http://www.rflinx.com/help/calculations&lt;br /&gt;
 http://www.olotwireless.net/castella/radio.htm&lt;br /&gt;
&lt;br /&gt;
Here are some formulas use to calculate a link budget:&lt;br /&gt;
  Free space loss = 36.56 + 20Log10(Frequency) + 20Log10(Dist in miles)&lt;br /&gt;
  mW to dBm = 10Log10(milliWatts) + 30&lt;br /&gt;
  dBm to mW = 10(dBm/10)&lt;br /&gt;
  RX Power = Margin - RX sensitivity&lt;br /&gt;
  Theoretical margin = TX power budget + RX power budget - free space loss&lt;br /&gt;
  SAD factor = Theoretical margin/TX power budget * 100 and shows the percentage of spare power on transmission.&lt;br /&gt;
&lt;br /&gt;
(Free Space Loss) = 92.5 + (20 Log fequency) + (20 log km distance)&lt;br /&gt;
&lt;br /&gt;
Free space loss @ 5400GHz:&lt;br /&gt;
 1km = -107.07dB      11km = -128.028dB&lt;br /&gt;
 2km = -113.09dB      12km = -128.784dB&lt;br /&gt;
 3km = -116.61dB      13km = -129.479dB&lt;br /&gt;
 4km = -119.11dB      14km = -130.123dB&lt;br /&gt;
 5km = -121.05dB      15km = -130.722dB&lt;br /&gt;
 6km = -122.63dB      16km = -131.282dB&lt;br /&gt;
 7km = -123.97dB      17km = -131.809dB&lt;br /&gt;
 8km = -125.13dB      18km = -132.305dB&lt;br /&gt;
 9km = -126.15dB      19km = -132.775dB&lt;br /&gt;
 10km = -127.07dB     20km = -133.221dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPNode with a 5Ghz patch to omni link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Omni: &lt;br /&gt;
 Min link distance @ 54Mbps 0.9km:              Max link distance @ 54Mbps 1.55km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -106dB                      Free space loss = -111dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 6.9km:              Max link distance @ 24Mbps 12.3km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 34km free space  = -124dB                      Free space loss = -129dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 17km:                Max link distance @ 6Mbps 30.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 34km free space  = -132dB                      Free space loss = -137dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPnodes with a 5Ghz patch to patch link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Patch:&lt;br /&gt;
 Min link distance @ 54Mbps 3.9km:              Max link distance @ 54Mbps 6km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -119dB                      Free space loss = -123dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 30.9km:             Max link distance @ 24Mbps 38.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 Free space loss  = -137dB                      Free space loss = -139dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 77.6km:              Max link distance @ 6Mbps 123km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 Free space loss  = -145dB                      Free space loss = -149dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4624</id>
		<title>High performance node page</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4624"/>
		<updated>2009-05-21T12:21:06Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Initial (old) hunting description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Development Team Research Pages]][[Category: Johann&#039;s Research Pages]][[Category: High Performance Node]]&lt;br /&gt;
&lt;br /&gt;
== What is a HPN (high performance node) ? ==&lt;br /&gt;
&lt;br /&gt;
The HPN is a multi-radio (3x radios), high performance, wireless (802.11) router. It has three antennas, one 5.8Ghz directional panel antenna as well as two omni&#039;s (2.4Ghz + 5.8Ghz). At the bottom of the router there is a weather proof UTP connector that is used for both Power-Over-Ethernet (PoE) and Ethernet connectivity to the router. A special mounting bracket at the back of the router allows it to be attached to an aluminum pole that is usually mounted to the side of a building or some structure.&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN.png]]&lt;br /&gt;
&lt;br /&gt;
== How to build a mesh with HPN&#039;s ==&lt;br /&gt;
The idea is to build a mesh network with these routers by aligning each directional antennas to point to a neighboring omni or another directional antenna. The wireless cards in a router operates on different channels (frequencies). To make it more user friendly each channel (frequencies) is tied to a color. This means that a red panel antenna must be aligned to a red omni (or another red panel) and a green panel must be aligned to a green omni (or green panel). The blue channel (2.4Ghz) is used to create a wifi hostspot for clients who would like to connect to the mesh network via wifi.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mesh-Network.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every mesh network usually have one GateWay that connects to the Internet or to some other network. Any one of the mesh nodes can be configured to become a GateWay for the mesh. When a node becomes a GateWay then the channels (frequencies) of the antennas are fixed  to the following: 5.8Ghz directional panel = RED, 5.8Ghz omni = GREEN and the 2.4Ghz omni = BLUE. The GateWay node will also become the DNS server for the mesh and all the nodes inside the mesh will register their HostNames with the DNS server. Another function of the GateWay node is to act as a time server for the mesh network and all the nodes inside the mesh will synchronize their time with the GateWay node. &lt;br /&gt;
&lt;br /&gt;
The best approach to build a mesh network is to start with the installation of the GateWay node. Next you install the node(s) that aligns to the GateWay node and then grow the mesh from there. Fist perform a visual alignment of the panel antenna on the node before the power is switched on. When a normal node starts up for the first time, then it will hunt for a mesh signal and it will lock it&#039;s channels (frequencies) once connectivity is established. It will first hunt for connectivity on both the red and green channels on the directional panel antenna for X seconds. If no signal is found, then the hunt will continue on the 5.8Ghz omni directional antenna for X seconds. This sequence will repeat itself until a signal is found, or until the channels are manually locked via the web interface on the node itself. &lt;br /&gt;
&lt;br /&gt;
Every node has a GREEN and a RED LED that is visible from underneath the node (should be visible when one stands under the node that is mounted on a pole). These LEDs are there to give some indication of connectivity and they will only turn on if connectivity can be established on either the red or green channel. Note that the LED does not show the signal quality or to what node it is connected to, it only shows that there is connectivity to another HPN node and on what channel (red or green). Signal quality and node connectivity information is only available via the web interface, but in most cases a visual alignment combined with a link indicator will be sufficient enough to get a mesh node up and running.&lt;br /&gt;
&lt;br /&gt;
== How can a client connect to the mesh ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Hpn-switch-pc.png]]&lt;br /&gt;
&lt;br /&gt;
Client devices can connect to any of the nodes via Ethernet or via wifi (blue channel = hostspot). The client devices should be configured to make use of DHCP so that all networking configurations can be done automatically (The node will provide all the networking details via DHCP). It is also recommended that the IPv6 protocol stack should be switch on if it is available. IPv6 should already be enabled on Windows Vista as well as most Unix systems.&lt;br /&gt;
&lt;br /&gt;
== How does the mesh work ? ==&lt;br /&gt;
&lt;br /&gt;
Almost everything in the network will be configured automatically, except for the selection of the gateway node and the channel (red or green) of a wireless link. The mesh supports both IPv6 and IPv4 traffic from any end-point (a place where a mesh client connects) to any other end-point in the mesh, while the backbone uses IPv6 only. A routing protocol called OLSR (Optimized Link State Routing) is used to exchange routing information between all the nodes inside the mesh and to select the best path for data traffic between end-points in the mesh.&lt;br /&gt;
&lt;br /&gt;
[[Image:OLSR.png]]&lt;br /&gt;
&lt;br /&gt;
Lets take an example (see diagram) where HP want to send data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv6 ====&lt;br /&gt;
HP will address the data to the IPv6 address of Dell and send it to node C. Node C will look in it&#039;s routing table and see that there are two routes to Dell, one route via node B-A-D-E and the other route via D-E. It will then select the best route and send it to the next node, in our case node D. Node D will look in it&#039;s routing table and see that the only route to Dell is via node E. Node E will look at it&#039;s routing table and see that Dell is directly connected and it will forward the data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv4 ====&lt;br /&gt;
This one is a bit more complicated. IPv4 is only used on the outside of the network (where the mesh clients connect to it) and then the IPv4 traffic is tunneled over the IPv6 backbone of the mesh to any another end point in the mesh. The mesh will automatically create a one-to-many IPv4 tunnel over the IPv6 network (4over6 tunneling protocol). This means that it looks like a network with an IPv4 tunnel from every IPv4 subnet to every other IPv4 subnet in the mesh. From a client&#039;s perspective it looks like a normal IPv4 routed network. From the backbone&#039;s perspective it looks like a IPv6 only network and all the OLSR routing information is IPv6 only. &lt;br /&gt;
&lt;br /&gt;
So how does the network know how to forward IPv4 packets to the correct destination ? It makes use of IPv4-mapped-IPv6 addresses (see [http://tools.ietf.org/html/rfc4291#section-2.5.5 RFC4291] and [http://tools.ietf.org/html/rfc4038 RFC4038]). Every node will map an IPv4 addresses into a IPv6 address before data goes to the backbone and the IPv4-Mapped-IPv6 addresses are converted back to a plain IPv4 address when it comes out of the backbone. OLSR will advertise these IPv4-Mapped-IPv6 address subnets on the backbone so that all the nodes will learn these subnets and they will calculate the best route to these subnets.&lt;br /&gt;
&lt;br /&gt;
Lets take example again, using IPv4. HP will address the data to the IPv4 address of Dell and send it to node C. Node C will change the IPv4 packet to an IPv6 packet with an IPv4-mapped-IPv6 addresses. From there it will follow the same route as the IPv6 example above. Node E will take the original IPv4 packet out of the IPv4-mapped-IPv6 packet and it will send the original IPv4 packet to Dell.&lt;br /&gt;
&lt;br /&gt;
See http://wirelessafrica.meraka.org.za/wiki/index.php/John%27s_research#4over6_Automatic_tunnels for more detail of the 4over6 tunneling protocol.&lt;br /&gt;
&lt;br /&gt;
=== Why is the mesh using IPv6 ? ===&lt;br /&gt;
&lt;br /&gt;
==== Reason one ====&lt;br /&gt;
It is predicted that unused IPv4 address space will be depleted within the next two years. Operating systems like Vista and most Unix systems defaults to IPv6 by default and most applications are IPv6 ready. With this in mind it makes sense that any new networking products should provide both IPv4 and IPv6 support.&lt;br /&gt;
&lt;br /&gt;
==== Reason two ====&lt;br /&gt;
In a single radio mesh network there is just one RF channel and everybody makes use of the same IP subnet. One limitation of a single radio mesh is that each mesh radio needs to handle both incoming and outgoing traffic. This causes the throughput to be halved because a radio cannot transmit and receive simultaneously. Another problem is that if one radio is transmitting then all its neighbors must all be in listening mode. These problems can cause a single radio mesh to very quickly run out of steam.&lt;br /&gt;
&lt;br /&gt;
Multi-radio mesh technology solves this problem by configuring every radio inside a router to operate on a different frequency and on a different IP subnet. In the HPN two radios are dedicated for backbone traffic and the third is used to create a client hotspot. 802.11a is generally used for backbone traffic, and 802.11b/g for client coverage. &lt;br /&gt;
&lt;br /&gt;
In a multi-radio mesh network it is very difficult to use the same IPv4 subnet on all the backbone wireless interfaces inside a mesh. The OLSR routing protocol uses broadcast packets to flood OLSR routing information to all of it&#039;s neighbors. This works very well with a single radio mesh, but not with a multi-radio mesh. Almost all TCP/IP (IPv4) stacks implementations can only send out broadcast packets on one interface at a time, but not on multiple interfaces on the same IPv4 subnet. This means that every interface needs to operate on a different IPv4 subnet, with the effect that some OLSR links may be physically possible, but it cannot be used for data because the IPv4 subnets are different. A multi-radio IPv4 OLSR network is possible, but it usually needs a lot of planning and configuration.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv4-Network.png]]&lt;br /&gt;
&lt;br /&gt;
The TCP/IP stack of IPv6 does not make use of Broadcast packets and OLSR routing information is flooded to it&#039;s neighbors via multicast packets. These multicast packets will automatically be duplicated by the TCP/IP stack and send out via multiple IPv6 interfaces on the same IPv6 subnet. This means that the mesh can use the same IPv6 subnet, all over the mesh backbone, without any problems. With a multi-radio IPv6 OLSR mesh you don&#039;t need any IPv6 configuration on the backbone as all the nodes use the same IPv6 subnet.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv6-Network.png]]&lt;br /&gt;
&lt;br /&gt;
== Behaviour of a normal node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
= [[Initial (old) hunting description]] =&lt;br /&gt;
&lt;br /&gt;
The following describes how a normal node will behave inside a mesh and what service it will provide:&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up for the fist time, then it will go into a hunting mode and it will search for other nodes in the mesh. In hunting mode it will first configure the patch antenna on the GREEN frequency. It will perform a link local IPv6 ping on that interface for about X seconds to determine if any IPv6 connectivity can be found on that antenna/channel. If no connectivity is found after X seconds, then it will hunt further using RED on the patch, then GREEN on the omni and then RED on the omni. If no connectivity can be found, then it will start the hunting process from the beginning, or until it is manually locked via the WEB terface. If connectivity can be established, then it will enable the green/red link LED on the bottom of the node to show connectivity (use the WEB interface for more information on to which node connectivity has been established to). If connectivity is lost then the LED will be off again. After stable connectivity for about X consecutive pings, the node will lock the antenna/channels util someone changes it manually via the WEB interface. Once the antennas/channels are locked then it will also change the sensitivity of the link LED and LED updates will be less frequently. The LED sensitivity can be manually changed via the WEB interface by selecting the &amp;quot;alignment&amp;quot; button. The alignment feature will give signal strength information on the WEB interface. See hunt-flow-diagram below.&lt;br /&gt;
&lt;br /&gt;
[[Image:Hunt-flow-diag.png]]&lt;br /&gt;
   &lt;br /&gt;
* When a new node boots up then an unique IPv6 address ((inside this mesh. See IP addressing section) will be configured on all the Ethernet and wireless interfaces. An unique (inside this mesh) IPv4 address is calculated and configured on the Ethernet interface and on the 2.4Ghz omni interface. The node will use the MAC address of the adapter to calculate a unique IPv4 and IPv6 subnet for that interface. These automatic addresses can be overrided via the WEB interface (E.g. if a globally routeable IPv6 address is required for a website inside the mesh and it should be visible from the Internet). Wireless interfaces are placed into adhoc mode and the channel, ssid and bssid are also configured.&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up then the OLSR daemon is started and it will listen en send OLSR topology packets to all of it&#039;s neighboring nodes. OLSR runs on all the wireless interfaces, but not on the Ethernet interface. All the IPv4 subnets are converted to 4in6 IPv6 addresses and these IPv6 subnets are placed into the HNA section of olsrd.conf, together with the IPv6 subnets that are configured on the Ethernet interface and on the 2.4Ghz omni interface. These HNA subnets are then distributed, via OLSR, to all the other nodes inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The 4over6 tunneling daemon take care of all IPv4 comms and dirtributing of routing information inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The node will start ntpd daemon on provide NTP time services on all it&#039;s IPv4 and IPv6 addresses. NTP will also synchronize it&#039;s local time with the GW-node on a regular basis.&lt;br /&gt;
&lt;br /&gt;
* The node will register it&#039;s own hostname in DNS on the GW-node. It will start dnsmasq daemon and it will also provide DNS services on all it&#039;s IPv4 and IPv6 addresses. Dnsmasq will forward all DNS queries to the DNS server running on the GW-node.&lt;br /&gt;
&lt;br /&gt;
* Dnsmasq is used to provide IPv4 DHCP services and DNS services on both the Ethernet interface and on the 2.4Ghz omni (hostspot) interface.&lt;br /&gt;
&lt;br /&gt;
* rtadvd will run on both the Ethernet interface and on the 2.4Ghz omni interface and it is used to advertise IPv6 prefixes to locally connected IPv6 client devices.&lt;br /&gt;
&lt;br /&gt;
* sshd allows remote ssh login&#039;s from anywhere in the mesh network.&lt;br /&gt;
&lt;br /&gt;
* watchdogd toggles the watchdog during normal operations. Should the system hang for some reason, then the watchdog will restart the HPN node.&lt;br /&gt;
&lt;br /&gt;
* mini_httpd is used for the WEB gui running on the HPN node.&lt;br /&gt;
&lt;br /&gt;
== Behavior of the GateWay node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
Any standard mesh node can become a GateWay node by selecting the &amp;quot;GateWay&amp;quot; button under &amp;quot;Additional features&amp;quot; on the WEB interface. The GateWay node is the place where the mesh will connect to some outside network and it will be the default route for the mesh. When a normal node becomes a GateWay node, then it does not disable any normal node features, but it just adds some additional features. The following are the additional features that a GateWay node will have:&lt;br /&gt;
&lt;br /&gt;
* The GW-node will not go into a hunting mode and it will lock it&#039;s channels with GREEN on the omni and RED on the directional panel. The default channels can be swapped via the WEB interface.&lt;br /&gt;
&lt;br /&gt;
* The GW-node is the default route for the mesh and it will advertise a default route via OLSR to the rest of the mesh.&lt;br /&gt;
&lt;br /&gt;
* The GW-node connects to the outside networks via Ethernet. It will perform a DHCP request on this interface in order to get an automatic IP address and external DNS server configurations from the external network. These setting can be overided via the WEB interface, under &amp;quot;Additional features&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes the DNS server for the mesh and it will configure and start the &#039;named&#039; services on IPv6, as well as on a well known IPv6 address of fec0:0:0:ffff::1. It will allow any node inside a mesh to submit their hostname into DNS and it will provide DNS services to any node or other device inside the mesh on IPv6 only. The GateWay node will also forward external DNS requests to upstream DNS servers if they are available. Upstream DNS servers are usually configured via DHCP but these setting can also be overided under &amp;quot;Additional features&amp;quot; on the WEB interface. DNS services are still available via &#039;dnsmasq&#039;, on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a time server for the mesh. It will synchronize it&#039;s time to an external time server if it&#039;s configured and available, otherwise it will use it&#039;s own internal RTC to synchronize it&#039;s time to. This time will be available to the rest of the mesh on a well known IPv6 address of fec0:0:0:ffff::1 and all the nodes in a mesh will use this time to synchronize their own time servers to. The GW-node will still provide NTP time services on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a firmware update server for the mesh. It will start ftpd services on IPv6, on a well known IPv6 address of fec0:0:0:ffff::1. It will took for new firmware on the Internet. If new firmware is available, then it will download the software and make it available to the other nodes inside the mesh via ftp.&lt;br /&gt;
&lt;br /&gt;
== IPv4 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
IPv4 addresses are not used in the backbone, but only on the edge of the network. This means that every node will have two IPv4 subnets configured, one on the Ethernet adapter (npe0) and the other on the 2.4Ghz omni (ath2) that is used for a wifi hotspot. The High performance node will always use the first IPv4 address on a configured subnet. E.g 10.234.18.1/24&lt;br /&gt;
&lt;br /&gt;
The HPN currently makes use of an automatic IPv4 addressing scheme where the IPv4 subnet is derived from the two least significant bytes of the MAC address of that particular interface. The first bye of the network is always 10 because we are making use of the 10net inside the mesh. The next two byes comes from the last two byes of the Mac address and it will become the IPv4 subnet for that adapter. The adapter itself will be 10.x.x.1 and it will become the default gateway for that subnet. DNSmasq will hand out DHCP addresses form 10.x.x.100 - 10.x.x.199 on the calculated subnet.&lt;br /&gt;
&lt;br /&gt;
 Mac = 00:d0:12:07:cb:73&lt;br /&gt;
 cb.73 (hex) = 203.115 (decimal)&lt;br /&gt;
 IP subnet  = 10.203.115 with /24 subnet mask&lt;br /&gt;
 IP address = 10.203.115.1&lt;br /&gt;
 DHCP = 10.203.115.100-10.203.115.199&lt;br /&gt;
&lt;br /&gt;
This addressing scheme will work 99% of the time, but it is not failsafe. Subnet clashes may occur due to the MAC address numbering schemes used by different vendors. MAC addresses usually have a vendor portion (first part of address) and a product/sequent number portion (last part). The last part is the part that is used to generate an IPv4 address. The last two bytes will most probably, at some stage, be that same for two different cards from two different vendors and there may be a very small chance for both of these cards end up in the same mesh network. In this case the automatic address can be overridden manually in rc.conf.local. At this stage there is no build in detection system that will handle Mac address clashes.&lt;br /&gt;
&lt;br /&gt;
Other addressing schemes to consider:&lt;br /&gt;
* Manage and assign all IPv4 addresses centrally. Program addresses into the HPN&#039;s during the manufacturing process. This will sort out all IPv4 address clashes. Issues - Do you assign a IPv4 address block per community or just sequential per HPN node?&lt;br /&gt;
* Manage a block of IPv4 addresses for each community somewhere on the local mesh. HPN nodes can then request an IPv4 addresses from this repository and use it. Issues - what happens if server is down or during a power failure. Will you get a new IPv4 address every time, simular to what you get with ADSL. This will mean that all the the PC&#039;s and devices that received DHCP addresses from DNSmasq will have to change as well. &lt;br /&gt;
&lt;br /&gt;
Issues that may influence the selection of an addressing scheme:&lt;br /&gt;
* Should there be IPv4 connectivity between different mesh networks ?&lt;br /&gt;
* Should there be IPv4 connectivity between a network inside a mesh and some other place in the Internet ?&lt;br /&gt;
* Should someone upstream device be able to initiate a connection into a mesh network (E.g. web server in mesh). ?&lt;br /&gt;
* Should we make use of legal (routeable) IPv4 address space, or should we stick to the 10net.&lt;br /&gt;
* Should the network be able to build and exchange IPv4 routing information with other networks.&lt;br /&gt;
* Routing information can be simplified if sequential IPv4 addresses are managed centrally and allocated per mesh&lt;br /&gt;
* Should the addressing scheme survive a power cycle or load shedding inside a community&lt;br /&gt;
* Is the WISP going to do NAT ?&lt;br /&gt;
&lt;br /&gt;
== IPv6 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
All the HPN nodes supports end-to-end IPv6 communications over the mesh. IPv6 only needs a network prefix (IPv6 subnet) for every adapter and the protocol stack will work out the IPv6 address for each interface. &lt;br /&gt;
&lt;br /&gt;
Our mesh is making use of a private Unique Local Addresses (ULAs) space, described in [http://www.rfc-editor.org/rfc/rfc4193.txt RFC4193]. This address space in similar to the 10net in IPv4, but with the difference that each ULA is globally unique. This means that we can calculate our own network prefix that we use in a mesh. This leaves the option to use the same prefix for all the different mesh networks, or we can use an unique prefix for every mesh. A unique prefix for every mesh may have an routing advantage if we need to connect different mesh networks together in future, but it also means that HPN&#039;s should be pre-configured with a prefix that is tied to a specific community and the prefix allocations should be managed centrally.&lt;br /&gt;
&lt;br /&gt;
Note that private Unique Local IPv6 addresses are not globally routable, but only inside our mesh. If we need globally routable IPv6 addresses then we need to apply for Provider Independent IPv6 address space from Afrinic. These addresses is uosually someting that is given to some network provider (owner of the network) and it will have a yearly fee attached to it. Issues - it is not always clear who the owner of a communit mesh is.&lt;br /&gt;
&lt;br /&gt;
The best sollution may be to use a combination of both addressing schemes. Use ULA addresses all over the mesh and only use leagal IPv6 addresses where devices needs to be availble on the Internet.&lt;br /&gt;
&lt;br /&gt;
== WEB interface ==&lt;br /&gt;
At the moment there is no WEB GUI for the HPN. This is an suggestion of how the GUI should look like. The idea is to keep it simple as possible with as little as possible that can be changed.&lt;br /&gt;
&lt;br /&gt;
=== WEB Gui main page ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-hunt-html.png|border|300px]][[Image:HPN-green-html.png|border|300px]][[Image:HPN-red-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
The default setting for a HPN is to come up in the hunting mode. After a successful hunt, the HPN will lock to either a red or green node and it will keep the setting, even during power failures. The menu will show the current state of a HPN, but it will also allow you to override the current mode by selecting red, green or hunting manually. Changes are only allowed after a valid login.&lt;br /&gt;
&lt;br /&gt;
The bar graph will give some indication of signal strength to other nodes on both the red and green channel. Note that there can be a link to more than one node on a given channel (red or green). The indicator on the main page will only show the signal to the first node that it links with. A more detailed view is available on the align page under the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
The last thing that can be changed from the main menu is the name of the HPN. This name will also be registered into the mesh DNS. All changes will only take effect after selecting the SUBMIT button. Additional features can be reached via the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
=== More features ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-features-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
==== Configure / Align / Stats ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-configure-html.png|border|300px]][[Image:HPN-align-html.png|border|300px]][[Image:HPN-stats-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
&lt;br /&gt;
[[High_Performance_Node_-_Specification]]&lt;br /&gt;
&lt;br /&gt;
== Upgrades ==&lt;br /&gt;
All the HPN nodes in a mesh will look for new firmware updates from the GateWay node on a regular basis. New firmware is placed inside a special directory on the GateWay node and it is made available, via ftp, to all the other HPN nodes in the mesh. Each HPN nodes will compare the firmware from this directory with it&#039;s current version of firmware to determine if it&#039;s newer. If new firmware is available, then the node will download and untar the new firmware onto a spare partition on the flash disk. After that all the custom configurations are copied over to the new partition. The HPN will then change the active partition to the new one and it will reboot with the new firmware. If someting should go wrong with the upgrade, then the HPN will revert back to the previous version of firmware.&lt;br /&gt;
&lt;br /&gt;
The GateWay node will look for new firmware somewhere on the Internet or from the WISP box. If available it will download the new firmware and place it into the special ftp directory.&lt;br /&gt;
&lt;br /&gt;
== Typical Outdoor Range at 5.8Ghz ==&lt;br /&gt;
At this stage we haven&#039;t found a testing site that is suitable for our tests. The following is just gestimates and it still needs to be tested.&lt;br /&gt;
&lt;br /&gt;
* Omni to Omni: up to xx km (2km?)&lt;br /&gt;
* Panel to Omni: up to xx km (5km?)&lt;br /&gt;
* Panel to Panel: up to xx km (10km?)&lt;br /&gt;
* External to External: more than xx km (20km?), depending on antenna type&lt;br /&gt;
&lt;br /&gt;
Now for some test results:&lt;br /&gt;
For our first test we selected a friendly site for the panel-to-panel test. We selected Anita&#039;s home because she is just over 10km from Meraka and there is a clear line of site between both sites (this is also our longest 11a link so far). Another reason is that we already have a 32bBi directional antenna, from an existing installation on Meraka&#039;s roof, that is pointing directly to her home. &lt;br /&gt;
&lt;br /&gt;
We used one of our new routers for this site, but we replaced the 5.8Ghz omni antenna with a 27dBi grid antenna so that we could have one link to login to the router, while we can do some tests on the second antenna.&lt;br /&gt;
&lt;br /&gt;
Here is a picture of Anita&#039;s husband with the router the he installed on their roof.&lt;br /&gt;
&lt;br /&gt;
[[Image:001.jpg|border|300px]][[Image:002.jpg|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Regulatory ==&lt;br /&gt;
Wirelss equipment that operate in the ISM bands do not need an spectrum licence, but they need to be ICASA approved. All the wifi adapters inside the HPN nodes are ICASA approved. From recent media reports regarding DABBA communications and there equipent in the Orange Farm area, it seems like our HPN node needs to get ICASA approval for the complete assembled HPN node as well. Every node should have it&#039;s own ICASA sticker on the back.&lt;br /&gt;
&lt;br /&gt;
== Using WEP/WPA in adhoc mode ==&lt;br /&gt;
&lt;br /&gt;
One of the requirements of the High Performance Node is to have WEP or WPA enabled between the wireless links of the mesh nodes. This is one of the functionalities that we would like to sort out before we install any of the nodes in the field. It&#039;s very difficult to change the encryption mode after an installation because the mesh nodes will lose connectivity if one node is upgraded to use WEP, while another is still using older software without WEP.&lt;br /&gt;
&lt;br /&gt;
WEP and WPA are both methods to enable the encryption of data that it is send over the air. WEP (Wired equivalence privacy) is an older standard and it makes use of a WEP encryption engine while the newer WPA standard added the use of an AES encryption engine. WEP encryption has some security flaws embedded into the protocol and there are several tools available on the Internet that can crack WEP keys. These tools are more effective with the cracking of 64bit WEP keys than with 128bit keys and they require a large amount of captured data and processing power to crack a key. Note that not all WEP keys can be cracked, but only weak keys and that flaw was addressed and fixed by WPA.&lt;br /&gt;
&lt;br /&gt;
Wireless adapters on Unix Systems can operate in three different modes: Client, Hostap (Access Point) and Adhoc mode. Most of the implementations of wireless (802.11) networks are based on a model where there is one Access Point with several wireless clients attached to to it. &lt;br /&gt;
&lt;br /&gt;
[[Image:AP-client.png|center|One Access point with many nodes]]&lt;br /&gt;
 &lt;br /&gt;
Wireless Mesh networks make use of the less tested Adhoc mode of 802.11.&lt;br /&gt;
&lt;br /&gt;
[[Image:Adhoc.png|center|Many nodes using Adhoc mode (many point to point links)]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
WEP and WPA requires a couple of kld&#039;s to be loaded before they can be configured. The following kld&#039;s should be added to loader.conf&lt;br /&gt;
wlan_acl_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_amrr_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_ccmp_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_tkip_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_wep_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_xauth_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== WEP ====&lt;br /&gt;
Enable and test WEP in Adhoc mode on the HPN.&lt;br /&gt;
WEP makes use of a single PSK that needs to be configured on all the wireless nodes. Any node or wireless device that is configured with this PSK will have the capability to crypt and decrypt these wireless packets. There are two methods to configure WEP in FreeBSD. You can use either  use ifconfig directly or you can make use of the WPA supplicant utility.&lt;br /&gt;
&lt;br /&gt;
ifconfig e.g.&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0 10.10.1.2/24 wep deftxkey 1 wepkey 128bitwepison&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0&lt;br /&gt;
 ath0: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; metric 0 mtu 1500&lt;br /&gt;
        ether 00:80:48:50:9e:69&lt;br /&gt;
        inet6 fe80::280:48ff:fe50:9e69%ath0 prefixlen 64 scopeid 0x1&lt;br /&gt;
        inet6 fd9c:6829:597c:20:280:48ff:fe50:9e69 prefixlen 64&lt;br /&gt;
        inet6 fd9c:6829:597c:20:: prefixlen 64 anycast&lt;br /&gt;
        inet 10.10.1.2 netmask 0xffffff00 broadcast 10.10.1.255&lt;br /&gt;
        media: IEEE 802.11 Wireless Ethernet autoselect mode 11g &amp;lt;adhoc&amp;gt;&lt;br /&gt;
        status: associated&lt;br /&gt;
        ssid ptamesh channel 13 (2472 Mhz 11g) bssid 56:e5:be:30:14:5a&lt;br /&gt;
        authmode OPEN privacy ON deftxkey 1 wepkey 1:104-bit txpower 31.5&lt;br /&gt;
        scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi11g 7&lt;br /&gt;
        roam:rate11g 5 protmode CTS burst&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Enable WEP on three mesh nodes and test connectivity.&lt;br /&gt;
 mesh-9e69:~ # ping6 ff02::1%ath0&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9e69%ath0, icmp_seq=87 hlim=64 time=2.122 ms&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9ddd%ath0, icmp_seq=87 hlim=64 time=5.625 ms(DUP!)&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9a44%ath0, icmp_seq=87 hlim=64 time=32.358 ms(DUP!)&lt;br /&gt;
&lt;br /&gt;
Everything seems to work fine (as expeted) with WEP enabled in the mesh.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WPA&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WPA was designed to work in an environment where you have one AP and several clients and not for Adhoc (mesh) networks. On the AP you have the Authenticator software and on the client you have the supplicant software. This means that if one would like to use WPA to it&#039;s full then every mesh node needs to be an Authenticator for all the other nodes it can see, as well as a supplicant for every node it can see. According to the WPA design document http://wirelessafrica.meraka.org.za/wiki/images/3/39/Wpa_supplicant-devel-04.pdf one can use WPA in Adhoc mode only in a static way with PSK&#039;s:&lt;br /&gt;
 IEEE 802.11 operation mode (Infrastucture/IBSS).&lt;br /&gt;
 0 = infrastructure (Managed) mode, i.e., associate with an AP.&lt;br /&gt;
 1 = IBSS (ad-hoc, peer-to-peer)&lt;br /&gt;
 Note: IBSS can only be used with key_mgmt NONE (plaintext and static WEP) and key_mgmt=WPA-&lt;br /&gt;
 NONE (ﬁxed group key TKIP/CCMP). In addition, ap_scan has to be set to 2 for IBSS. WPA-None requires&lt;br /&gt;
 following network block options: proto=WPA, key_mgmt=WPA-NONE, pairwise=NONE, group=TKIP&lt;br /&gt;
 (or CCMP, but not both), and psk must also be set (either directly or using ASCII passphrase).&lt;br /&gt;
&lt;br /&gt;
This is methods is very similar to the way that WEP is being used. This means the the only advantage of using WPA over WEP is that one can make use of the AES encryption engine that comes with WPA. Please note that with this mode of WPA and with WEP that anyone can decrypt the data being send over the air if they get hold of the mesh-wide PSK that is configured on every node in the network. If security is of importance them end users should consider the use of point-to-point security mechanisms like VPN&#039;s.&lt;br /&gt;
&lt;br /&gt;
The configuration of WPA is not supported in command line mode, but only with the wpa_supplicant software. This is an example of a wpa_supplicant.conf file to enable WPA in Adhoc mode:&lt;br /&gt;
&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 #&lt;br /&gt;
 network={&lt;br /&gt;
   ssid=&amp;quot;ptamesh&amp;quot;&lt;br /&gt;
 # Channel  13 : 2472  Mhz 11g&lt;br /&gt;
   frequency=2472&lt;br /&gt;
   mode=1&lt;br /&gt;
   proto=WPA&lt;br /&gt;
   key_mgmt=WPA-NONE&lt;br /&gt;
   pairwise=NONE&lt;br /&gt;
   group=TKIP&lt;br /&gt;
   psk=&amp;quot;mesh-ipv6&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To start the WPA software during boot-up one needs to add WPA to the ifconfig line in rc.conf. E.g.&lt;br /&gt;
&lt;br /&gt;
 ifconfig_ath0=&amp;quot;WPA 10.10.1.1/24 mode 11g mediaopt adhoc channel 13 ssid ptamesh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Unfortunately WPA did not work as easy as WEP, so it&#039;s off to debugging.&lt;br /&gt;
&lt;br /&gt;
Starting wpa_supplicant in the foreground with debugging enabled. E.g&lt;br /&gt;
&lt;br /&gt;
 wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
&lt;br /&gt;
The debugging output shows that something happens that initiates a wlan scan operation, while the card is in Adhoc mode. This should not happen and wpa_supplicant software never completes the configuration due to this error.&lt;br /&gt;
&lt;br /&gt;
 mesh-9ddd:~ # wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
 Initializing interface &#039;ath0&#039; conf &#039;/etc/wpa_supplicant.conf&#039; driver &#039;default&#039; &lt;br /&gt;
 ctrl_interface &#039;N/A&#039; bridge &#039;N/A&#039;&lt;br /&gt;
 Configuration file &#039;/etc/wpa_supplicant.conf&#039; -&amp;gt; &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 Reading configuration file &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 Priority group 0&lt;br /&gt;
   id=0 ssid=&#039;ptamesh&#039;&lt;br /&gt;
 Initializing interface (2) &#039;ath0&#039;&lt;br /&gt;
 EAPOL: SUPP_PAE entering state DISCONNECTED&lt;br /&gt;
 EAPOL: KEY_RX entering state NO_KEY_RECEIVE&lt;br /&gt;
 EAPOL: SUPP_BE entering state INITIALIZE&lt;br /&gt;
 EAP: EAP entering state DISABLED&lt;br /&gt;
 EAPOL: External notification - portEnabled=0&lt;br /&gt;
 EAPOL: External notification - portValid=0&lt;br /&gt;
 Own MAC address: 00:80:48:50:9d:dd&lt;br /&gt;
 wpa_driver_bsd_set_wpa: enabled=1&lt;br /&gt;
 wpa_driver_bsd_set_wpa_internal: wpa=3 privacy=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=0&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=2&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=3&lt;br /&gt;
 wpa_driver_bsd_set_countermeasures: enabled=0&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 Setting scan request: 0 sec 100000 usec&lt;br /&gt;
 Added interface ath0&lt;br /&gt;
 State: DISCONNECTED -&amp;gt; SCANNING&lt;br /&gt;
 Trying to associate with SSID &#039;ptamesh&#039;&lt;br /&gt;
 Cancelling scan request&lt;br /&gt;
 WPA: clearing own WPA/RSN IE&lt;br /&gt;
 Automatic auth_alg selection: 0x1&lt;br /&gt;
 wpa_driver_bsd_set_auth_alg alg 0x1 authmode 1&lt;br /&gt;
 WPA: No WPA/RSN IE available from association info&lt;br /&gt;
 WPA: Set cipher suites based on configuration&lt;br /&gt;
 WPA: Selected cipher suites: group 8 pairwise 1 key_mgmt 16 proto 1&lt;br /&gt;
 WPA: clearing AP WPA IE&lt;br /&gt;
 WPA: clearing AP RSN IE&lt;br /&gt;
 WPA: using GTK TKIP&lt;br /&gt;
 WPA: using PTK NONE&lt;br /&gt;
 WPA: using KEY_MGMT WPA-NONE&lt;br /&gt;
 WPA: Set own WPA IE default - hexdump(len=24): dd 16 00 50 f2 01 01 00 00 50 &lt;br /&gt;
 f2 02 01 00 00 50 f2 00 01 00 00 50 f2 00&lt;br /&gt;
 No keys have been configured - skip key clearing&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 State: SCANNING -&amp;gt; ASSOCIATING&lt;br /&gt;
 wpa_driver_bsd_associate: ssid &#039;ptamesh&#039; wpa ie len 24 pairwise 0 group 2 key &lt;br /&gt;
 mgmt 4&lt;br /&gt;
 ioctl[SIOCS80211, op 22, len 24]: Invalid argument&lt;br /&gt;
 Association request to the driver failed&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 Cancelling authentication timeout&lt;br /&gt;
 State: ASSOCIATING -&amp;gt; COMPLETED&lt;br /&gt;
 CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (auth) [id=-1 &lt;br /&gt;
 id_str=]&lt;br /&gt;
 EAPOL: External notification - portControl=ForceAuthorized&lt;br /&gt;
&lt;br /&gt;
Next was to install fresh copy of the FreeBSD src code onto my PC. I found the wpa_supplicant source code under /usr/src/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c Build a new driver from source code and run it on a router. After that I&#039;ve added in a lot of printf statements to trace how the driver works and to locate the code that puts the wifi card in scanning mode. In the end I found out that wpa_supplicant driver did not put the card in scanning mode, but it somehow caused the 802.11 stack to start the scanning. Unfortunately I don&#039;t know enough about the 802.11 code in FreeBSD to do any mode debugging. I&#039;ve send a mail about the problem to one of the FreeBSD mailing lists and the originator of most of the 802.11 code in FreeBSD (Sam Leffler) said I must log a problem report. So I logged a problem report with FreeBSD and now we have to wait and see if someone to take responsibility to fix this problem. More information on the problem report can be found at: http://www.freebsd.org/cgi/query-pr.cgi?pr=126822&lt;br /&gt;
&lt;br /&gt;
For now I recommend that we make use of WEP instead of WPA in our implementation as it is working and there isn&#039;t such a big advantage in using WPA over WEP in this mode except for the encryption algorithm that changes from WEP to AES.&lt;br /&gt;
&lt;br /&gt;
== Antenna calculations ==&lt;br /&gt;
&lt;br /&gt;
Every HP-node has two 5.15-5.6 GHz antennas. The one as a build in patch antenna and the other is an 5.1-5.8 GHz omni-directional antenna. The idea is that the patch antenna of a node will either be aligned to the omni or the patch antenna of another node. The following calculations is to get an feeling of what distances should be possible between these antennas.&lt;br /&gt;
&lt;br /&gt;
South African Wifi channels:&lt;br /&gt;
 Channel   1 : 2412  Mhz 11g          Channel  48 : 5240  Mhz 11a&lt;br /&gt;
 Channel   2 : 2417  Mhz 11g          Channel  52 : 5260* Mhz 11a&lt;br /&gt;
 Channel   3 : 2422  Mhz 11g          Channel  56 : 5280* Mhz 11a&lt;br /&gt;
 Channel   4 : 2427  Mhz 11g          Channel  60 : 5300* Mhz 11a&lt;br /&gt;
 Channel   5 : 2432  Mhz 11g          Channel  64 : 5320* Mhz 11a&lt;br /&gt;
 Channel   6 : 2437  Mhz 11g          Channel 100 : 5500* Mhz 11a&lt;br /&gt;
 Channel   7 : 2442  Mhz 11g          Channel 104 : 5520* Mhz 11a&lt;br /&gt;
 Channel   8 : 2447  Mhz 11g          Channel 108 : 5540* Mhz 11a&lt;br /&gt;
 Channel   9 : 2452  Mhz 11g          Channel 112 : 5560* Mhz 11a&lt;br /&gt;
 Channel  10 : 2457  Mhz 11g          Channel 116 : 5580* Mhz 11a&lt;br /&gt;
 Channel  11 : 2462  Mhz 11g          Channel 120 : 5600* Mhz 11a&lt;br /&gt;
 Channel  12 : 2467  Mhz 11g          Channel 124 : 5620* Mhz 11a&lt;br /&gt;
 Channel  13 : 2472  Mhz 11g          Channel 128 : 5640* Mhz 11a&lt;br /&gt;
 Channel  36 : 5180  Mhz 11a          Channel 132 : 5660* Mhz 11a&lt;br /&gt;
 Channel  40 : 5200  Mhz 11a          Channel 136 : 5680* Mhz 11a&lt;br /&gt;
 Channel  44 : 5220  Mhz 11a          Channel 140 : 5700* Mhz 11a&lt;br /&gt;
&lt;br /&gt;
HP-Node detailed specs: http://wirelessafrica.meraka.org.za/wiki/images/0/07/WLAN-A0033.pdf&lt;br /&gt;
&lt;br /&gt;
Pigtail detail specs: http://wirelessafrica.meraka.org.za/wiki/images/0/0a/Ca178_cable_assemblies_datasheet.pdf&lt;br /&gt;
&lt;br /&gt;
Wireless adapter detail specs: http://wirelessafrica.meraka.org.za/wiki/images/2/21/Wlm54sag23.pdf&lt;br /&gt;
&lt;br /&gt;
OR the Mikrotik version of the same adapter called a R52H (also manufactured by Compex, but usually cheaper)&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:R52H.pdf&lt;br /&gt;
&lt;br /&gt;
Another popular adapter is the DCMA-82 from Wistron. They have better RX sensitivity, but lower output power and they are a bit more expensive than the Compex cards. In some of the discussions that I&#039;ve seen they state that the DCMA-82 has much cleaner output power, better RX sensitivity, and a lower failure rate/quality issues than Compex&#039;s cards.&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:DCMA-82.pdf&lt;br /&gt;
&lt;br /&gt;
Node specs summary:&lt;br /&gt;
 Patch antenna            - 21-23 dBi,   16 deg H,  11 deg V, 5.15 -5.6 GHz&lt;br /&gt;
 5Ghz Omni antenna        - 8-11 dBi,    360 deg H, 10 deg V, 5.1 - 5.85 GHz&lt;br /&gt;
 2.4Ghz Omni antenna      - 7.5-8.5 dBi, 360 deg H, 12 deg V, 2.4 - 2.5 GHz&lt;br /&gt;
 30mm U.FL-SMA pigtail    - RG178 cable insertion loss, 2.4 GHZ = -1.1dB, 5.6 GHz = -2dB&lt;br /&gt;
 Compex WLM54AG23 adapter - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            23dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
                            17dBm @ 54Mbps&lt;br /&gt;
 Mikrotik (Compex) R52H   - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            24dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
 Wistron DCMA-82          - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -82 dBm @ 36Mbps&lt;br /&gt;
                            -72 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            22.5dBm @ 6-24Mbps&lt;br /&gt;
                            21.5dBm @ 36Mbps&lt;br /&gt;
                            18dBm @ 48Mbps&lt;br /&gt;
&lt;br /&gt;
I could not find any receive sensitivity info for ranges between 6Mbps and 54Mbps for the WLM54AG23. The closest I could find was the specs of another manufacturer card, using the same Atheros chipset as the WLM54AG23. Here is the receive sensitivity info for a WMIA-166AG Dual-Band miniPCI module (802.11a/g)&lt;br /&gt;
Nominal Temp Range:&lt;br /&gt;
  6Mbps 10-5 BER @ -90 dBm, typical&lt;br /&gt;
  9Mbps 10-5 BER @ -89 dBm, typical&lt;br /&gt;
 12Mbps 10-5 BER @ -88 dBm, typical&lt;br /&gt;
 18Mbps 10-5 BER @ -86 dBm, typical&lt;br /&gt;
 24Mbps 10-5 BER @ -82 dBm, typical&lt;br /&gt;
 36Mbps 10-5 BER @ -78 dBm, typical&lt;br /&gt;
 48Mbps 10-5 BER @ -72 dBm, typical&lt;br /&gt;
 54Mbps 10-5 BER @ -68 dBm, typical &lt;br /&gt;
&lt;br /&gt;
The WLM54AG23 is not the best wifi adapter in the market, but it gives a good compromise between price vs performance. If one need to push the limits of a specific link then I would probable select the SR5 from Ubiquity. They have excellent TX power and RX sensitivity.&lt;br /&gt;
 &lt;br /&gt;
There are lots of wifi/antenna/distance calculators available on the WEB. Most of these calculators cannot calculate the max distance for a link, you have to specify the distance and it will calculate you dBm margin. Links to a couple of Wifi/antenna/distance calculators:&lt;br /&gt;
&lt;br /&gt;
 http://www.radiolabs.com/stations/wifi_calc.html&lt;br /&gt;
 http://www.zytrax.com/tech/wireless/calc.htm&lt;br /&gt;
 http://www.widgetbox.com/widget/wifi-link-calculator&lt;br /&gt;
 http://www.wifiextreme.com.au/index.php?main_page=page_5&lt;br /&gt;
 http://www.rflinx.com/help/calculations&lt;br /&gt;
 http://www.olotwireless.net/castella/radio.htm&lt;br /&gt;
&lt;br /&gt;
Here are some formulas use to calculate a link budget:&lt;br /&gt;
  Free space loss = 36.56 + 20Log10(Frequency) + 20Log10(Dist in miles)&lt;br /&gt;
  mW to dBm = 10Log10(milliWatts) + 30&lt;br /&gt;
  dBm to mW = 10(dBm/10)&lt;br /&gt;
  RX Power = Margin - RX sensitivity&lt;br /&gt;
  Theoretical margin = TX power budget + RX power budget - free space loss&lt;br /&gt;
  SAD factor = Theoretical margin/TX power budget * 100 and shows the percentage of spare power on transmission.&lt;br /&gt;
&lt;br /&gt;
(Free Space Loss) = 92.5 + (20 Log fequency) + (20 log km distance)&lt;br /&gt;
&lt;br /&gt;
Free space loss @ 5400GHz:&lt;br /&gt;
 1km = -107.07dB      11km = -128.028dB&lt;br /&gt;
 2km = -113.09dB      12km = -128.784dB&lt;br /&gt;
 3km = -116.61dB      13km = -129.479dB&lt;br /&gt;
 4km = -119.11dB      14km = -130.123dB&lt;br /&gt;
 5km = -121.05dB      15km = -130.722dB&lt;br /&gt;
 6km = -122.63dB      16km = -131.282dB&lt;br /&gt;
 7km = -123.97dB      17km = -131.809dB&lt;br /&gt;
 8km = -125.13dB      18km = -132.305dB&lt;br /&gt;
 9km = -126.15dB      19km = -132.775dB&lt;br /&gt;
 10km = -127.07dB     20km = -133.221dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPNode with a 5Ghz patch to omni link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Omni: &lt;br /&gt;
 Min link distance @ 54Mbps 0.9km:              Max link distance @ 54Mbps 1.55km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -106dB                      Free space loss = -111dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 6.9km:              Max link distance @ 24Mbps 12.3km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 34km free space  = -124dB                      Free space loss = -129dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 17km:                Max link distance @ 6Mbps 30.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 34km free space  = -132dB                      Free space loss = -137dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPnodes with a 5Ghz patch to patch link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Patch:&lt;br /&gt;
 Min link distance @ 54Mbps 3.9km:              Max link distance @ 54Mbps 6km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -119dB                      Free space loss = -123dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 30.9km:             Max link distance @ 24Mbps 38.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 Free space loss  = -137dB                      Free space loss = -139dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 77.6km:              Max link distance @ 6Mbps 123km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 Free space loss  = -145dB                      Free space loss = -149dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4623</id>
		<title>High performance node page</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4623"/>
		<updated>2009-05-21T12:20:38Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Behaviour of a normal node in a mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Development Team Research Pages]][[Category: Johann&#039;s Research Pages]][[Category: High Performance Node]]&lt;br /&gt;
&lt;br /&gt;
== What is a HPN (high performance node) ? ==&lt;br /&gt;
&lt;br /&gt;
The HPN is a multi-radio (3x radios), high performance, wireless (802.11) router. It has three antennas, one 5.8Ghz directional panel antenna as well as two omni&#039;s (2.4Ghz + 5.8Ghz). At the bottom of the router there is a weather proof UTP connector that is used for both Power-Over-Ethernet (PoE) and Ethernet connectivity to the router. A special mounting bracket at the back of the router allows it to be attached to an aluminum pole that is usually mounted to the side of a building or some structure.&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN.png]]&lt;br /&gt;
&lt;br /&gt;
== How to build a mesh with HPN&#039;s ==&lt;br /&gt;
The idea is to build a mesh network with these routers by aligning each directional antennas to point to a neighboring omni or another directional antenna. The wireless cards in a router operates on different channels (frequencies). To make it more user friendly each channel (frequencies) is tied to a color. This means that a red panel antenna must be aligned to a red omni (or another red panel) and a green panel must be aligned to a green omni (or green panel). The blue channel (2.4Ghz) is used to create a wifi hostspot for clients who would like to connect to the mesh network via wifi.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mesh-Network.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every mesh network usually have one GateWay that connects to the Internet or to some other network. Any one of the mesh nodes can be configured to become a GateWay for the mesh. When a node becomes a GateWay then the channels (frequencies) of the antennas are fixed  to the following: 5.8Ghz directional panel = RED, 5.8Ghz omni = GREEN and the 2.4Ghz omni = BLUE. The GateWay node will also become the DNS server for the mesh and all the nodes inside the mesh will register their HostNames with the DNS server. Another function of the GateWay node is to act as a time server for the mesh network and all the nodes inside the mesh will synchronize their time with the GateWay node. &lt;br /&gt;
&lt;br /&gt;
The best approach to build a mesh network is to start with the installation of the GateWay node. Next you install the node(s) that aligns to the GateWay node and then grow the mesh from there. Fist perform a visual alignment of the panel antenna on the node before the power is switched on. When a normal node starts up for the first time, then it will hunt for a mesh signal and it will lock it&#039;s channels (frequencies) once connectivity is established. It will first hunt for connectivity on both the red and green channels on the directional panel antenna for X seconds. If no signal is found, then the hunt will continue on the 5.8Ghz omni directional antenna for X seconds. This sequence will repeat itself until a signal is found, or until the channels are manually locked via the web interface on the node itself. &lt;br /&gt;
&lt;br /&gt;
Every node has a GREEN and a RED LED that is visible from underneath the node (should be visible when one stands under the node that is mounted on a pole). These LEDs are there to give some indication of connectivity and they will only turn on if connectivity can be established on either the red or green channel. Note that the LED does not show the signal quality or to what node it is connected to, it only shows that there is connectivity to another HPN node and on what channel (red or green). Signal quality and node connectivity information is only available via the web interface, but in most cases a visual alignment combined with a link indicator will be sufficient enough to get a mesh node up and running.&lt;br /&gt;
&lt;br /&gt;
== How can a client connect to the mesh ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Hpn-switch-pc.png]]&lt;br /&gt;
&lt;br /&gt;
Client devices can connect to any of the nodes via Ethernet or via wifi (blue channel = hostspot). The client devices should be configured to make use of DHCP so that all networking configurations can be done automatically (The node will provide all the networking details via DHCP). It is also recommended that the IPv6 protocol stack should be switch on if it is available. IPv6 should already be enabled on Windows Vista as well as most Unix systems.&lt;br /&gt;
&lt;br /&gt;
== How does the mesh work ? ==&lt;br /&gt;
&lt;br /&gt;
Almost everything in the network will be configured automatically, except for the selection of the gateway node and the channel (red or green) of a wireless link. The mesh supports both IPv6 and IPv4 traffic from any end-point (a place where a mesh client connects) to any other end-point in the mesh, while the backbone uses IPv6 only. A routing protocol called OLSR (Optimized Link State Routing) is used to exchange routing information between all the nodes inside the mesh and to select the best path for data traffic between end-points in the mesh.&lt;br /&gt;
&lt;br /&gt;
[[Image:OLSR.png]]&lt;br /&gt;
&lt;br /&gt;
Lets take an example (see diagram) where HP want to send data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv6 ====&lt;br /&gt;
HP will address the data to the IPv6 address of Dell and send it to node C. Node C will look in it&#039;s routing table and see that there are two routes to Dell, one route via node B-A-D-E and the other route via D-E. It will then select the best route and send it to the next node, in our case node D. Node D will look in it&#039;s routing table and see that the only route to Dell is via node E. Node E will look at it&#039;s routing table and see that Dell is directly connected and it will forward the data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv4 ====&lt;br /&gt;
This one is a bit more complicated. IPv4 is only used on the outside of the network (where the mesh clients connect to it) and then the IPv4 traffic is tunneled over the IPv6 backbone of the mesh to any another end point in the mesh. The mesh will automatically create a one-to-many IPv4 tunnel over the IPv6 network (4over6 tunneling protocol). This means that it looks like a network with an IPv4 tunnel from every IPv4 subnet to every other IPv4 subnet in the mesh. From a client&#039;s perspective it looks like a normal IPv4 routed network. From the backbone&#039;s perspective it looks like a IPv6 only network and all the OLSR routing information is IPv6 only. &lt;br /&gt;
&lt;br /&gt;
So how does the network know how to forward IPv4 packets to the correct destination ? It makes use of IPv4-mapped-IPv6 addresses (see [http://tools.ietf.org/html/rfc4291#section-2.5.5 RFC4291] and [http://tools.ietf.org/html/rfc4038 RFC4038]). Every node will map an IPv4 addresses into a IPv6 address before data goes to the backbone and the IPv4-Mapped-IPv6 addresses are converted back to a plain IPv4 address when it comes out of the backbone. OLSR will advertise these IPv4-Mapped-IPv6 address subnets on the backbone so that all the nodes will learn these subnets and they will calculate the best route to these subnets.&lt;br /&gt;
&lt;br /&gt;
Lets take example again, using IPv4. HP will address the data to the IPv4 address of Dell and send it to node C. Node C will change the IPv4 packet to an IPv6 packet with an IPv4-mapped-IPv6 addresses. From there it will follow the same route as the IPv6 example above. Node E will take the original IPv4 packet out of the IPv4-mapped-IPv6 packet and it will send the original IPv4 packet to Dell.&lt;br /&gt;
&lt;br /&gt;
See http://wirelessafrica.meraka.org.za/wiki/index.php/John%27s_research#4over6_Automatic_tunnels for more detail of the 4over6 tunneling protocol.&lt;br /&gt;
&lt;br /&gt;
=== Why is the mesh using IPv6 ? ===&lt;br /&gt;
&lt;br /&gt;
==== Reason one ====&lt;br /&gt;
It is predicted that unused IPv4 address space will be depleted within the next two years. Operating systems like Vista and most Unix systems defaults to IPv6 by default and most applications are IPv6 ready. With this in mind it makes sense that any new networking products should provide both IPv4 and IPv6 support.&lt;br /&gt;
&lt;br /&gt;
==== Reason two ====&lt;br /&gt;
In a single radio mesh network there is just one RF channel and everybody makes use of the same IP subnet. One limitation of a single radio mesh is that each mesh radio needs to handle both incoming and outgoing traffic. This causes the throughput to be halved because a radio cannot transmit and receive simultaneously. Another problem is that if one radio is transmitting then all its neighbors must all be in listening mode. These problems can cause a single radio mesh to very quickly run out of steam.&lt;br /&gt;
&lt;br /&gt;
Multi-radio mesh technology solves this problem by configuring every radio inside a router to operate on a different frequency and on a different IP subnet. In the HPN two radios are dedicated for backbone traffic and the third is used to create a client hotspot. 802.11a is generally used for backbone traffic, and 802.11b/g for client coverage. &lt;br /&gt;
&lt;br /&gt;
In a multi-radio mesh network it is very difficult to use the same IPv4 subnet on all the backbone wireless interfaces inside a mesh. The OLSR routing protocol uses broadcast packets to flood OLSR routing information to all of it&#039;s neighbors. This works very well with a single radio mesh, but not with a multi-radio mesh. Almost all TCP/IP (IPv4) stacks implementations can only send out broadcast packets on one interface at a time, but not on multiple interfaces on the same IPv4 subnet. This means that every interface needs to operate on a different IPv4 subnet, with the effect that some OLSR links may be physically possible, but it cannot be used for data because the IPv4 subnets are different. A multi-radio IPv4 OLSR network is possible, but it usually needs a lot of planning and configuration.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv4-Network.png]]&lt;br /&gt;
&lt;br /&gt;
The TCP/IP stack of IPv6 does not make use of Broadcast packets and OLSR routing information is flooded to it&#039;s neighbors via multicast packets. These multicast packets will automatically be duplicated by the TCP/IP stack and send out via multiple IPv6 interfaces on the same IPv6 subnet. This means that the mesh can use the same IPv6 subnet, all over the mesh backbone, without any problems. With a multi-radio IPv6 OLSR mesh you don&#039;t need any IPv6 configuration on the backbone as all the nodes use the same IPv6 subnet.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv6-Network.png]]&lt;br /&gt;
&lt;br /&gt;
== Behaviour of a normal node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
== [[Initial (old) hunting description]] ==&lt;br /&gt;
&lt;br /&gt;
The following describes how a normal node will behave inside a mesh and what service it will provide:&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up for the fist time, then it will go into a hunting mode and it will search for other nodes in the mesh. In hunting mode it will first configure the patch antenna on the GREEN frequency. It will perform a link local IPv6 ping on that interface for about X seconds to determine if any IPv6 connectivity can be found on that antenna/channel. If no connectivity is found after X seconds, then it will hunt further using RED on the patch, then GREEN on the omni and then RED on the omni. If no connectivity can be found, then it will start the hunting process from the beginning, or until it is manually locked via the WEB terface. If connectivity can be established, then it will enable the green/red link LED on the bottom of the node to show connectivity (use the WEB interface for more information on to which node connectivity has been established to). If connectivity is lost then the LED will be off again. After stable connectivity for about X consecutive pings, the node will lock the antenna/channels util someone changes it manually via the WEB interface. Once the antennas/channels are locked then it will also change the sensitivity of the link LED and LED updates will be less frequently. The LED sensitivity can be manually changed via the WEB interface by selecting the &amp;quot;alignment&amp;quot; button. The alignment feature will give signal strength information on the WEB interface. See hunt-flow-diagram below.&lt;br /&gt;
&lt;br /&gt;
[[Image:Hunt-flow-diag.png]]&lt;br /&gt;
   &lt;br /&gt;
* When a new node boots up then an unique IPv6 address ((inside this mesh. See IP addressing section) will be configured on all the Ethernet and wireless interfaces. An unique (inside this mesh) IPv4 address is calculated and configured on the Ethernet interface and on the 2.4Ghz omni interface. The node will use the MAC address of the adapter to calculate a unique IPv4 and IPv6 subnet for that interface. These automatic addresses can be overrided via the WEB interface (E.g. if a globally routeable IPv6 address is required for a website inside the mesh and it should be visible from the Internet). Wireless interfaces are placed into adhoc mode and the channel, ssid and bssid are also configured.&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up then the OLSR daemon is started and it will listen en send OLSR topology packets to all of it&#039;s neighboring nodes. OLSR runs on all the wireless interfaces, but not on the Ethernet interface. All the IPv4 subnets are converted to 4in6 IPv6 addresses and these IPv6 subnets are placed into the HNA section of olsrd.conf, together with the IPv6 subnets that are configured on the Ethernet interface and on the 2.4Ghz omni interface. These HNA subnets are then distributed, via OLSR, to all the other nodes inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The 4over6 tunneling daemon take care of all IPv4 comms and dirtributing of routing information inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The node will start ntpd daemon on provide NTP time services on all it&#039;s IPv4 and IPv6 addresses. NTP will also synchronize it&#039;s local time with the GW-node on a regular basis.&lt;br /&gt;
&lt;br /&gt;
* The node will register it&#039;s own hostname in DNS on the GW-node. It will start dnsmasq daemon and it will also provide DNS services on all it&#039;s IPv4 and IPv6 addresses. Dnsmasq will forward all DNS queries to the DNS server running on the GW-node.&lt;br /&gt;
&lt;br /&gt;
* Dnsmasq is used to provide IPv4 DHCP services and DNS services on both the Ethernet interface and on the 2.4Ghz omni (hostspot) interface.&lt;br /&gt;
&lt;br /&gt;
* rtadvd will run on both the Ethernet interface and on the 2.4Ghz omni interface and it is used to advertise IPv6 prefixes to locally connected IPv6 client devices.&lt;br /&gt;
&lt;br /&gt;
* sshd allows remote ssh login&#039;s from anywhere in the mesh network.&lt;br /&gt;
&lt;br /&gt;
* watchdogd toggles the watchdog during normal operations. Should the system hang for some reason, then the watchdog will restart the HPN node.&lt;br /&gt;
&lt;br /&gt;
* mini_httpd is used for the WEB gui running on the HPN node.&lt;br /&gt;
&lt;br /&gt;
== Behavior of the GateWay node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
Any standard mesh node can become a GateWay node by selecting the &amp;quot;GateWay&amp;quot; button under &amp;quot;Additional features&amp;quot; on the WEB interface. The GateWay node is the place where the mesh will connect to some outside network and it will be the default route for the mesh. When a normal node becomes a GateWay node, then it does not disable any normal node features, but it just adds some additional features. The following are the additional features that a GateWay node will have:&lt;br /&gt;
&lt;br /&gt;
* The GW-node will not go into a hunting mode and it will lock it&#039;s channels with GREEN on the omni and RED on the directional panel. The default channels can be swapped via the WEB interface.&lt;br /&gt;
&lt;br /&gt;
* The GW-node is the default route for the mesh and it will advertise a default route via OLSR to the rest of the mesh.&lt;br /&gt;
&lt;br /&gt;
* The GW-node connects to the outside networks via Ethernet. It will perform a DHCP request on this interface in order to get an automatic IP address and external DNS server configurations from the external network. These setting can be overided via the WEB interface, under &amp;quot;Additional features&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes the DNS server for the mesh and it will configure and start the &#039;named&#039; services on IPv6, as well as on a well known IPv6 address of fec0:0:0:ffff::1. It will allow any node inside a mesh to submit their hostname into DNS and it will provide DNS services to any node or other device inside the mesh on IPv6 only. The GateWay node will also forward external DNS requests to upstream DNS servers if they are available. Upstream DNS servers are usually configured via DHCP but these setting can also be overided under &amp;quot;Additional features&amp;quot; on the WEB interface. DNS services are still available via &#039;dnsmasq&#039;, on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a time server for the mesh. It will synchronize it&#039;s time to an external time server if it&#039;s configured and available, otherwise it will use it&#039;s own internal RTC to synchronize it&#039;s time to. This time will be available to the rest of the mesh on a well known IPv6 address of fec0:0:0:ffff::1 and all the nodes in a mesh will use this time to synchronize their own time servers to. The GW-node will still provide NTP time services on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a firmware update server for the mesh. It will start ftpd services on IPv6, on a well known IPv6 address of fec0:0:0:ffff::1. It will took for new firmware on the Internet. If new firmware is available, then it will download the software and make it available to the other nodes inside the mesh via ftp.&lt;br /&gt;
&lt;br /&gt;
== IPv4 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
IPv4 addresses are not used in the backbone, but only on the edge of the network. This means that every node will have two IPv4 subnets configured, one on the Ethernet adapter (npe0) and the other on the 2.4Ghz omni (ath2) that is used for a wifi hotspot. The High performance node will always use the first IPv4 address on a configured subnet. E.g 10.234.18.1/24&lt;br /&gt;
&lt;br /&gt;
The HPN currently makes use of an automatic IPv4 addressing scheme where the IPv4 subnet is derived from the two least significant bytes of the MAC address of that particular interface. The first bye of the network is always 10 because we are making use of the 10net inside the mesh. The next two byes comes from the last two byes of the Mac address and it will become the IPv4 subnet for that adapter. The adapter itself will be 10.x.x.1 and it will become the default gateway for that subnet. DNSmasq will hand out DHCP addresses form 10.x.x.100 - 10.x.x.199 on the calculated subnet.&lt;br /&gt;
&lt;br /&gt;
 Mac = 00:d0:12:07:cb:73&lt;br /&gt;
 cb.73 (hex) = 203.115 (decimal)&lt;br /&gt;
 IP subnet  = 10.203.115 with /24 subnet mask&lt;br /&gt;
 IP address = 10.203.115.1&lt;br /&gt;
 DHCP = 10.203.115.100-10.203.115.199&lt;br /&gt;
&lt;br /&gt;
This addressing scheme will work 99% of the time, but it is not failsafe. Subnet clashes may occur due to the MAC address numbering schemes used by different vendors. MAC addresses usually have a vendor portion (first part of address) and a product/sequent number portion (last part). The last part is the part that is used to generate an IPv4 address. The last two bytes will most probably, at some stage, be that same for two different cards from two different vendors and there may be a very small chance for both of these cards end up in the same mesh network. In this case the automatic address can be overridden manually in rc.conf.local. At this stage there is no build in detection system that will handle Mac address clashes.&lt;br /&gt;
&lt;br /&gt;
Other addressing schemes to consider:&lt;br /&gt;
* Manage and assign all IPv4 addresses centrally. Program addresses into the HPN&#039;s during the manufacturing process. This will sort out all IPv4 address clashes. Issues - Do you assign a IPv4 address block per community or just sequential per HPN node?&lt;br /&gt;
* Manage a block of IPv4 addresses for each community somewhere on the local mesh. HPN nodes can then request an IPv4 addresses from this repository and use it. Issues - what happens if server is down or during a power failure. Will you get a new IPv4 address every time, simular to what you get with ADSL. This will mean that all the the PC&#039;s and devices that received DHCP addresses from DNSmasq will have to change as well. &lt;br /&gt;
&lt;br /&gt;
Issues that may influence the selection of an addressing scheme:&lt;br /&gt;
* Should there be IPv4 connectivity between different mesh networks ?&lt;br /&gt;
* Should there be IPv4 connectivity between a network inside a mesh and some other place in the Internet ?&lt;br /&gt;
* Should someone upstream device be able to initiate a connection into a mesh network (E.g. web server in mesh). ?&lt;br /&gt;
* Should we make use of legal (routeable) IPv4 address space, or should we stick to the 10net.&lt;br /&gt;
* Should the network be able to build and exchange IPv4 routing information with other networks.&lt;br /&gt;
* Routing information can be simplified if sequential IPv4 addresses are managed centrally and allocated per mesh&lt;br /&gt;
* Should the addressing scheme survive a power cycle or load shedding inside a community&lt;br /&gt;
* Is the WISP going to do NAT ?&lt;br /&gt;
&lt;br /&gt;
== IPv6 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
All the HPN nodes supports end-to-end IPv6 communications over the mesh. IPv6 only needs a network prefix (IPv6 subnet) for every adapter and the protocol stack will work out the IPv6 address for each interface. &lt;br /&gt;
&lt;br /&gt;
Our mesh is making use of a private Unique Local Addresses (ULAs) space, described in [http://www.rfc-editor.org/rfc/rfc4193.txt RFC4193]. This address space in similar to the 10net in IPv4, but with the difference that each ULA is globally unique. This means that we can calculate our own network prefix that we use in a mesh. This leaves the option to use the same prefix for all the different mesh networks, or we can use an unique prefix for every mesh. A unique prefix for every mesh may have an routing advantage if we need to connect different mesh networks together in future, but it also means that HPN&#039;s should be pre-configured with a prefix that is tied to a specific community and the prefix allocations should be managed centrally.&lt;br /&gt;
&lt;br /&gt;
Note that private Unique Local IPv6 addresses are not globally routable, but only inside our mesh. If we need globally routable IPv6 addresses then we need to apply for Provider Independent IPv6 address space from Afrinic. These addresses is uosually someting that is given to some network provider (owner of the network) and it will have a yearly fee attached to it. Issues - it is not always clear who the owner of a communit mesh is.&lt;br /&gt;
&lt;br /&gt;
The best sollution may be to use a combination of both addressing schemes. Use ULA addresses all over the mesh and only use leagal IPv6 addresses where devices needs to be availble on the Internet.&lt;br /&gt;
&lt;br /&gt;
== WEB interface ==&lt;br /&gt;
At the moment there is no WEB GUI for the HPN. This is an suggestion of how the GUI should look like. The idea is to keep it simple as possible with as little as possible that can be changed.&lt;br /&gt;
&lt;br /&gt;
=== WEB Gui main page ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-hunt-html.png|border|300px]][[Image:HPN-green-html.png|border|300px]][[Image:HPN-red-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
The default setting for a HPN is to come up in the hunting mode. After a successful hunt, the HPN will lock to either a red or green node and it will keep the setting, even during power failures. The menu will show the current state of a HPN, but it will also allow you to override the current mode by selecting red, green or hunting manually. Changes are only allowed after a valid login.&lt;br /&gt;
&lt;br /&gt;
The bar graph will give some indication of signal strength to other nodes on both the red and green channel. Note that there can be a link to more than one node on a given channel (red or green). The indicator on the main page will only show the signal to the first node that it links with. A more detailed view is available on the align page under the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
The last thing that can be changed from the main menu is the name of the HPN. This name will also be registered into the mesh DNS. All changes will only take effect after selecting the SUBMIT button. Additional features can be reached via the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
=== More features ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-features-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
==== Configure / Align / Stats ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-configure-html.png|border|300px]][[Image:HPN-align-html.png|border|300px]][[Image:HPN-stats-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
&lt;br /&gt;
[[High_Performance_Node_-_Specification]]&lt;br /&gt;
&lt;br /&gt;
== Upgrades ==&lt;br /&gt;
All the HPN nodes in a mesh will look for new firmware updates from the GateWay node on a regular basis. New firmware is placed inside a special directory on the GateWay node and it is made available, via ftp, to all the other HPN nodes in the mesh. Each HPN nodes will compare the firmware from this directory with it&#039;s current version of firmware to determine if it&#039;s newer. If new firmware is available, then the node will download and untar the new firmware onto a spare partition on the flash disk. After that all the custom configurations are copied over to the new partition. The HPN will then change the active partition to the new one and it will reboot with the new firmware. If someting should go wrong with the upgrade, then the HPN will revert back to the previous version of firmware.&lt;br /&gt;
&lt;br /&gt;
The GateWay node will look for new firmware somewhere on the Internet or from the WISP box. If available it will download the new firmware and place it into the special ftp directory.&lt;br /&gt;
&lt;br /&gt;
== Typical Outdoor Range at 5.8Ghz ==&lt;br /&gt;
At this stage we haven&#039;t found a testing site that is suitable for our tests. The following is just gestimates and it still needs to be tested.&lt;br /&gt;
&lt;br /&gt;
* Omni to Omni: up to xx km (2km?)&lt;br /&gt;
* Panel to Omni: up to xx km (5km?)&lt;br /&gt;
* Panel to Panel: up to xx km (10km?)&lt;br /&gt;
* External to External: more than xx km (20km?), depending on antenna type&lt;br /&gt;
&lt;br /&gt;
Now for some test results:&lt;br /&gt;
For our first test we selected a friendly site for the panel-to-panel test. We selected Anita&#039;s home because she is just over 10km from Meraka and there is a clear line of site between both sites (this is also our longest 11a link so far). Another reason is that we already have a 32bBi directional antenna, from an existing installation on Meraka&#039;s roof, that is pointing directly to her home. &lt;br /&gt;
&lt;br /&gt;
We used one of our new routers for this site, but we replaced the 5.8Ghz omni antenna with a 27dBi grid antenna so that we could have one link to login to the router, while we can do some tests on the second antenna.&lt;br /&gt;
&lt;br /&gt;
Here is a picture of Anita&#039;s husband with the router the he installed on their roof.&lt;br /&gt;
&lt;br /&gt;
[[Image:001.jpg|border|300px]][[Image:002.jpg|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Regulatory ==&lt;br /&gt;
Wirelss equipment that operate in the ISM bands do not need an spectrum licence, but they need to be ICASA approved. All the wifi adapters inside the HPN nodes are ICASA approved. From recent media reports regarding DABBA communications and there equipent in the Orange Farm area, it seems like our HPN node needs to get ICASA approval for the complete assembled HPN node as well. Every node should have it&#039;s own ICASA sticker on the back.&lt;br /&gt;
&lt;br /&gt;
== Using WEP/WPA in adhoc mode ==&lt;br /&gt;
&lt;br /&gt;
One of the requirements of the High Performance Node is to have WEP or WPA enabled between the wireless links of the mesh nodes. This is one of the functionalities that we would like to sort out before we install any of the nodes in the field. It&#039;s very difficult to change the encryption mode after an installation because the mesh nodes will lose connectivity if one node is upgraded to use WEP, while another is still using older software without WEP.&lt;br /&gt;
&lt;br /&gt;
WEP and WPA are both methods to enable the encryption of data that it is send over the air. WEP (Wired equivalence privacy) is an older standard and it makes use of a WEP encryption engine while the newer WPA standard added the use of an AES encryption engine. WEP encryption has some security flaws embedded into the protocol and there are several tools available on the Internet that can crack WEP keys. These tools are more effective with the cracking of 64bit WEP keys than with 128bit keys and they require a large amount of captured data and processing power to crack a key. Note that not all WEP keys can be cracked, but only weak keys and that flaw was addressed and fixed by WPA.&lt;br /&gt;
&lt;br /&gt;
Wireless adapters on Unix Systems can operate in three different modes: Client, Hostap (Access Point) and Adhoc mode. Most of the implementations of wireless (802.11) networks are based on a model where there is one Access Point with several wireless clients attached to to it. &lt;br /&gt;
&lt;br /&gt;
[[Image:AP-client.png|center|One Access point with many nodes]]&lt;br /&gt;
 &lt;br /&gt;
Wireless Mesh networks make use of the less tested Adhoc mode of 802.11.&lt;br /&gt;
&lt;br /&gt;
[[Image:Adhoc.png|center|Many nodes using Adhoc mode (many point to point links)]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
WEP and WPA requires a couple of kld&#039;s to be loaded before they can be configured. The following kld&#039;s should be added to loader.conf&lt;br /&gt;
wlan_acl_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_amrr_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_ccmp_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_tkip_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_wep_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_xauth_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== WEP ====&lt;br /&gt;
Enable and test WEP in Adhoc mode on the HPN.&lt;br /&gt;
WEP makes use of a single PSK that needs to be configured on all the wireless nodes. Any node or wireless device that is configured with this PSK will have the capability to crypt and decrypt these wireless packets. There are two methods to configure WEP in FreeBSD. You can use either  use ifconfig directly or you can make use of the WPA supplicant utility.&lt;br /&gt;
&lt;br /&gt;
ifconfig e.g.&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0 10.10.1.2/24 wep deftxkey 1 wepkey 128bitwepison&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0&lt;br /&gt;
 ath0: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; metric 0 mtu 1500&lt;br /&gt;
        ether 00:80:48:50:9e:69&lt;br /&gt;
        inet6 fe80::280:48ff:fe50:9e69%ath0 prefixlen 64 scopeid 0x1&lt;br /&gt;
        inet6 fd9c:6829:597c:20:280:48ff:fe50:9e69 prefixlen 64&lt;br /&gt;
        inet6 fd9c:6829:597c:20:: prefixlen 64 anycast&lt;br /&gt;
        inet 10.10.1.2 netmask 0xffffff00 broadcast 10.10.1.255&lt;br /&gt;
        media: IEEE 802.11 Wireless Ethernet autoselect mode 11g &amp;lt;adhoc&amp;gt;&lt;br /&gt;
        status: associated&lt;br /&gt;
        ssid ptamesh channel 13 (2472 Mhz 11g) bssid 56:e5:be:30:14:5a&lt;br /&gt;
        authmode OPEN privacy ON deftxkey 1 wepkey 1:104-bit txpower 31.5&lt;br /&gt;
        scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi11g 7&lt;br /&gt;
        roam:rate11g 5 protmode CTS burst&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Enable WEP on three mesh nodes and test connectivity.&lt;br /&gt;
 mesh-9e69:~ # ping6 ff02::1%ath0&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9e69%ath0, icmp_seq=87 hlim=64 time=2.122 ms&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9ddd%ath0, icmp_seq=87 hlim=64 time=5.625 ms(DUP!)&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9a44%ath0, icmp_seq=87 hlim=64 time=32.358 ms(DUP!)&lt;br /&gt;
&lt;br /&gt;
Everything seems to work fine (as expeted) with WEP enabled in the mesh.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WPA&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WPA was designed to work in an environment where you have one AP and several clients and not for Adhoc (mesh) networks. On the AP you have the Authenticator software and on the client you have the supplicant software. This means that if one would like to use WPA to it&#039;s full then every mesh node needs to be an Authenticator for all the other nodes it can see, as well as a supplicant for every node it can see. According to the WPA design document http://wirelessafrica.meraka.org.za/wiki/images/3/39/Wpa_supplicant-devel-04.pdf one can use WPA in Adhoc mode only in a static way with PSK&#039;s:&lt;br /&gt;
 IEEE 802.11 operation mode (Infrastucture/IBSS).&lt;br /&gt;
 0 = infrastructure (Managed) mode, i.e., associate with an AP.&lt;br /&gt;
 1 = IBSS (ad-hoc, peer-to-peer)&lt;br /&gt;
 Note: IBSS can only be used with key_mgmt NONE (plaintext and static WEP) and key_mgmt=WPA-&lt;br /&gt;
 NONE (ﬁxed group key TKIP/CCMP). In addition, ap_scan has to be set to 2 for IBSS. WPA-None requires&lt;br /&gt;
 following network block options: proto=WPA, key_mgmt=WPA-NONE, pairwise=NONE, group=TKIP&lt;br /&gt;
 (or CCMP, but not both), and psk must also be set (either directly or using ASCII passphrase).&lt;br /&gt;
&lt;br /&gt;
This is methods is very similar to the way that WEP is being used. This means the the only advantage of using WPA over WEP is that one can make use of the AES encryption engine that comes with WPA. Please note that with this mode of WPA and with WEP that anyone can decrypt the data being send over the air if they get hold of the mesh-wide PSK that is configured on every node in the network. If security is of importance them end users should consider the use of point-to-point security mechanisms like VPN&#039;s.&lt;br /&gt;
&lt;br /&gt;
The configuration of WPA is not supported in command line mode, but only with the wpa_supplicant software. This is an example of a wpa_supplicant.conf file to enable WPA in Adhoc mode:&lt;br /&gt;
&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 #&lt;br /&gt;
 network={&lt;br /&gt;
   ssid=&amp;quot;ptamesh&amp;quot;&lt;br /&gt;
 # Channel  13 : 2472  Mhz 11g&lt;br /&gt;
   frequency=2472&lt;br /&gt;
   mode=1&lt;br /&gt;
   proto=WPA&lt;br /&gt;
   key_mgmt=WPA-NONE&lt;br /&gt;
   pairwise=NONE&lt;br /&gt;
   group=TKIP&lt;br /&gt;
   psk=&amp;quot;mesh-ipv6&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To start the WPA software during boot-up one needs to add WPA to the ifconfig line in rc.conf. E.g.&lt;br /&gt;
&lt;br /&gt;
 ifconfig_ath0=&amp;quot;WPA 10.10.1.1/24 mode 11g mediaopt adhoc channel 13 ssid ptamesh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Unfortunately WPA did not work as easy as WEP, so it&#039;s off to debugging.&lt;br /&gt;
&lt;br /&gt;
Starting wpa_supplicant in the foreground with debugging enabled. E.g&lt;br /&gt;
&lt;br /&gt;
 wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
&lt;br /&gt;
The debugging output shows that something happens that initiates a wlan scan operation, while the card is in Adhoc mode. This should not happen and wpa_supplicant software never completes the configuration due to this error.&lt;br /&gt;
&lt;br /&gt;
 mesh-9ddd:~ # wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
 Initializing interface &#039;ath0&#039; conf &#039;/etc/wpa_supplicant.conf&#039; driver &#039;default&#039; &lt;br /&gt;
 ctrl_interface &#039;N/A&#039; bridge &#039;N/A&#039;&lt;br /&gt;
 Configuration file &#039;/etc/wpa_supplicant.conf&#039; -&amp;gt; &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 Reading configuration file &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 Priority group 0&lt;br /&gt;
   id=0 ssid=&#039;ptamesh&#039;&lt;br /&gt;
 Initializing interface (2) &#039;ath0&#039;&lt;br /&gt;
 EAPOL: SUPP_PAE entering state DISCONNECTED&lt;br /&gt;
 EAPOL: KEY_RX entering state NO_KEY_RECEIVE&lt;br /&gt;
 EAPOL: SUPP_BE entering state INITIALIZE&lt;br /&gt;
 EAP: EAP entering state DISABLED&lt;br /&gt;
 EAPOL: External notification - portEnabled=0&lt;br /&gt;
 EAPOL: External notification - portValid=0&lt;br /&gt;
 Own MAC address: 00:80:48:50:9d:dd&lt;br /&gt;
 wpa_driver_bsd_set_wpa: enabled=1&lt;br /&gt;
 wpa_driver_bsd_set_wpa_internal: wpa=3 privacy=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=0&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=2&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=3&lt;br /&gt;
 wpa_driver_bsd_set_countermeasures: enabled=0&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 Setting scan request: 0 sec 100000 usec&lt;br /&gt;
 Added interface ath0&lt;br /&gt;
 State: DISCONNECTED -&amp;gt; SCANNING&lt;br /&gt;
 Trying to associate with SSID &#039;ptamesh&#039;&lt;br /&gt;
 Cancelling scan request&lt;br /&gt;
 WPA: clearing own WPA/RSN IE&lt;br /&gt;
 Automatic auth_alg selection: 0x1&lt;br /&gt;
 wpa_driver_bsd_set_auth_alg alg 0x1 authmode 1&lt;br /&gt;
 WPA: No WPA/RSN IE available from association info&lt;br /&gt;
 WPA: Set cipher suites based on configuration&lt;br /&gt;
 WPA: Selected cipher suites: group 8 pairwise 1 key_mgmt 16 proto 1&lt;br /&gt;
 WPA: clearing AP WPA IE&lt;br /&gt;
 WPA: clearing AP RSN IE&lt;br /&gt;
 WPA: using GTK TKIP&lt;br /&gt;
 WPA: using PTK NONE&lt;br /&gt;
 WPA: using KEY_MGMT WPA-NONE&lt;br /&gt;
 WPA: Set own WPA IE default - hexdump(len=24): dd 16 00 50 f2 01 01 00 00 50 &lt;br /&gt;
 f2 02 01 00 00 50 f2 00 01 00 00 50 f2 00&lt;br /&gt;
 No keys have been configured - skip key clearing&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 State: SCANNING -&amp;gt; ASSOCIATING&lt;br /&gt;
 wpa_driver_bsd_associate: ssid &#039;ptamesh&#039; wpa ie len 24 pairwise 0 group 2 key &lt;br /&gt;
 mgmt 4&lt;br /&gt;
 ioctl[SIOCS80211, op 22, len 24]: Invalid argument&lt;br /&gt;
 Association request to the driver failed&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 Cancelling authentication timeout&lt;br /&gt;
 State: ASSOCIATING -&amp;gt; COMPLETED&lt;br /&gt;
 CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (auth) [id=-1 &lt;br /&gt;
 id_str=]&lt;br /&gt;
 EAPOL: External notification - portControl=ForceAuthorized&lt;br /&gt;
&lt;br /&gt;
Next was to install fresh copy of the FreeBSD src code onto my PC. I found the wpa_supplicant source code under /usr/src/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c Build a new driver from source code and run it on a router. After that I&#039;ve added in a lot of printf statements to trace how the driver works and to locate the code that puts the wifi card in scanning mode. In the end I found out that wpa_supplicant driver did not put the card in scanning mode, but it somehow caused the 802.11 stack to start the scanning. Unfortunately I don&#039;t know enough about the 802.11 code in FreeBSD to do any mode debugging. I&#039;ve send a mail about the problem to one of the FreeBSD mailing lists and the originator of most of the 802.11 code in FreeBSD (Sam Leffler) said I must log a problem report. So I logged a problem report with FreeBSD and now we have to wait and see if someone to take responsibility to fix this problem. More information on the problem report can be found at: http://www.freebsd.org/cgi/query-pr.cgi?pr=126822&lt;br /&gt;
&lt;br /&gt;
For now I recommend that we make use of WEP instead of WPA in our implementation as it is working and there isn&#039;t such a big advantage in using WPA over WEP in this mode except for the encryption algorithm that changes from WEP to AES.&lt;br /&gt;
&lt;br /&gt;
== Antenna calculations ==&lt;br /&gt;
&lt;br /&gt;
Every HP-node has two 5.15-5.6 GHz antennas. The one as a build in patch antenna and the other is an 5.1-5.8 GHz omni-directional antenna. The idea is that the patch antenna of a node will either be aligned to the omni or the patch antenna of another node. The following calculations is to get an feeling of what distances should be possible between these antennas.&lt;br /&gt;
&lt;br /&gt;
South African Wifi channels:&lt;br /&gt;
 Channel   1 : 2412  Mhz 11g          Channel  48 : 5240  Mhz 11a&lt;br /&gt;
 Channel   2 : 2417  Mhz 11g          Channel  52 : 5260* Mhz 11a&lt;br /&gt;
 Channel   3 : 2422  Mhz 11g          Channel  56 : 5280* Mhz 11a&lt;br /&gt;
 Channel   4 : 2427  Mhz 11g          Channel  60 : 5300* Mhz 11a&lt;br /&gt;
 Channel   5 : 2432  Mhz 11g          Channel  64 : 5320* Mhz 11a&lt;br /&gt;
 Channel   6 : 2437  Mhz 11g          Channel 100 : 5500* Mhz 11a&lt;br /&gt;
 Channel   7 : 2442  Mhz 11g          Channel 104 : 5520* Mhz 11a&lt;br /&gt;
 Channel   8 : 2447  Mhz 11g          Channel 108 : 5540* Mhz 11a&lt;br /&gt;
 Channel   9 : 2452  Mhz 11g          Channel 112 : 5560* Mhz 11a&lt;br /&gt;
 Channel  10 : 2457  Mhz 11g          Channel 116 : 5580* Mhz 11a&lt;br /&gt;
 Channel  11 : 2462  Mhz 11g          Channel 120 : 5600* Mhz 11a&lt;br /&gt;
 Channel  12 : 2467  Mhz 11g          Channel 124 : 5620* Mhz 11a&lt;br /&gt;
 Channel  13 : 2472  Mhz 11g          Channel 128 : 5640* Mhz 11a&lt;br /&gt;
 Channel  36 : 5180  Mhz 11a          Channel 132 : 5660* Mhz 11a&lt;br /&gt;
 Channel  40 : 5200  Mhz 11a          Channel 136 : 5680* Mhz 11a&lt;br /&gt;
 Channel  44 : 5220  Mhz 11a          Channel 140 : 5700* Mhz 11a&lt;br /&gt;
&lt;br /&gt;
HP-Node detailed specs: http://wirelessafrica.meraka.org.za/wiki/images/0/07/WLAN-A0033.pdf&lt;br /&gt;
&lt;br /&gt;
Pigtail detail specs: http://wirelessafrica.meraka.org.za/wiki/images/0/0a/Ca178_cable_assemblies_datasheet.pdf&lt;br /&gt;
&lt;br /&gt;
Wireless adapter detail specs: http://wirelessafrica.meraka.org.za/wiki/images/2/21/Wlm54sag23.pdf&lt;br /&gt;
&lt;br /&gt;
OR the Mikrotik version of the same adapter called a R52H (also manufactured by Compex, but usually cheaper)&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:R52H.pdf&lt;br /&gt;
&lt;br /&gt;
Another popular adapter is the DCMA-82 from Wistron. They have better RX sensitivity, but lower output power and they are a bit more expensive than the Compex cards. In some of the discussions that I&#039;ve seen they state that the DCMA-82 has much cleaner output power, better RX sensitivity, and a lower failure rate/quality issues than Compex&#039;s cards.&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:DCMA-82.pdf&lt;br /&gt;
&lt;br /&gt;
Node specs summary:&lt;br /&gt;
 Patch antenna            - 21-23 dBi,   16 deg H,  11 deg V, 5.15 -5.6 GHz&lt;br /&gt;
 5Ghz Omni antenna        - 8-11 dBi,    360 deg H, 10 deg V, 5.1 - 5.85 GHz&lt;br /&gt;
 2.4Ghz Omni antenna      - 7.5-8.5 dBi, 360 deg H, 12 deg V, 2.4 - 2.5 GHz&lt;br /&gt;
 30mm U.FL-SMA pigtail    - RG178 cable insertion loss, 2.4 GHZ = -1.1dB, 5.6 GHz = -2dB&lt;br /&gt;
 Compex WLM54AG23 adapter - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            23dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
                            17dBm @ 54Mbps&lt;br /&gt;
 Mikrotik (Compex) R52H   - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            24dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
 Wistron DCMA-82          - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -82 dBm @ 36Mbps&lt;br /&gt;
                            -72 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            22.5dBm @ 6-24Mbps&lt;br /&gt;
                            21.5dBm @ 36Mbps&lt;br /&gt;
                            18dBm @ 48Mbps&lt;br /&gt;
&lt;br /&gt;
I could not find any receive sensitivity info for ranges between 6Mbps and 54Mbps for the WLM54AG23. The closest I could find was the specs of another manufacturer card, using the same Atheros chipset as the WLM54AG23. Here is the receive sensitivity info for a WMIA-166AG Dual-Band miniPCI module (802.11a/g)&lt;br /&gt;
Nominal Temp Range:&lt;br /&gt;
  6Mbps 10-5 BER @ -90 dBm, typical&lt;br /&gt;
  9Mbps 10-5 BER @ -89 dBm, typical&lt;br /&gt;
 12Mbps 10-5 BER @ -88 dBm, typical&lt;br /&gt;
 18Mbps 10-5 BER @ -86 dBm, typical&lt;br /&gt;
 24Mbps 10-5 BER @ -82 dBm, typical&lt;br /&gt;
 36Mbps 10-5 BER @ -78 dBm, typical&lt;br /&gt;
 48Mbps 10-5 BER @ -72 dBm, typical&lt;br /&gt;
 54Mbps 10-5 BER @ -68 dBm, typical &lt;br /&gt;
&lt;br /&gt;
The WLM54AG23 is not the best wifi adapter in the market, but it gives a good compromise between price vs performance. If one need to push the limits of a specific link then I would probable select the SR5 from Ubiquity. They have excellent TX power and RX sensitivity.&lt;br /&gt;
 &lt;br /&gt;
There are lots of wifi/antenna/distance calculators available on the WEB. Most of these calculators cannot calculate the max distance for a link, you have to specify the distance and it will calculate you dBm margin. Links to a couple of Wifi/antenna/distance calculators:&lt;br /&gt;
&lt;br /&gt;
 http://www.radiolabs.com/stations/wifi_calc.html&lt;br /&gt;
 http://www.zytrax.com/tech/wireless/calc.htm&lt;br /&gt;
 http://www.widgetbox.com/widget/wifi-link-calculator&lt;br /&gt;
 http://www.wifiextreme.com.au/index.php?main_page=page_5&lt;br /&gt;
 http://www.rflinx.com/help/calculations&lt;br /&gt;
 http://www.olotwireless.net/castella/radio.htm&lt;br /&gt;
&lt;br /&gt;
Here are some formulas use to calculate a link budget:&lt;br /&gt;
  Free space loss = 36.56 + 20Log10(Frequency) + 20Log10(Dist in miles)&lt;br /&gt;
  mW to dBm = 10Log10(milliWatts) + 30&lt;br /&gt;
  dBm to mW = 10(dBm/10)&lt;br /&gt;
  RX Power = Margin - RX sensitivity&lt;br /&gt;
  Theoretical margin = TX power budget + RX power budget - free space loss&lt;br /&gt;
  SAD factor = Theoretical margin/TX power budget * 100 and shows the percentage of spare power on transmission.&lt;br /&gt;
&lt;br /&gt;
(Free Space Loss) = 92.5 + (20 Log fequency) + (20 log km distance)&lt;br /&gt;
&lt;br /&gt;
Free space loss @ 5400GHz:&lt;br /&gt;
 1km = -107.07dB      11km = -128.028dB&lt;br /&gt;
 2km = -113.09dB      12km = -128.784dB&lt;br /&gt;
 3km = -116.61dB      13km = -129.479dB&lt;br /&gt;
 4km = -119.11dB      14km = -130.123dB&lt;br /&gt;
 5km = -121.05dB      15km = -130.722dB&lt;br /&gt;
 6km = -122.63dB      16km = -131.282dB&lt;br /&gt;
 7km = -123.97dB      17km = -131.809dB&lt;br /&gt;
 8km = -125.13dB      18km = -132.305dB&lt;br /&gt;
 9km = -126.15dB      19km = -132.775dB&lt;br /&gt;
 10km = -127.07dB     20km = -133.221dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPNode with a 5Ghz patch to omni link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Omni: &lt;br /&gt;
 Min link distance @ 54Mbps 0.9km:              Max link distance @ 54Mbps 1.55km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -106dB                      Free space loss = -111dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 6.9km:              Max link distance @ 24Mbps 12.3km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 34km free space  = -124dB                      Free space loss = -129dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 17km:                Max link distance @ 6Mbps 30.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 34km free space  = -132dB                      Free space loss = -137dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPnodes with a 5Ghz patch to patch link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Patch:&lt;br /&gt;
 Min link distance @ 54Mbps 3.9km:              Max link distance @ 54Mbps 6km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -119dB                      Free space loss = -123dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 30.9km:             Max link distance @ 24Mbps 38.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 Free space loss  = -137dB                      Free space loss = -139dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 77.6km:              Max link distance @ 6Mbps 123km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 Free space loss  = -145dB                      Free space loss = -149dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4622</id>
		<title>High performance node page</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4622"/>
		<updated>2009-05-21T12:20:25Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Behaviour of a normal node in a mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Development Team Research Pages]][[Category: Johann&#039;s Research Pages]][[Category: High Performance Node]]&lt;br /&gt;
&lt;br /&gt;
== What is a HPN (high performance node) ? ==&lt;br /&gt;
&lt;br /&gt;
The HPN is a multi-radio (3x radios), high performance, wireless (802.11) router. It has three antennas, one 5.8Ghz directional panel antenna as well as two omni&#039;s (2.4Ghz + 5.8Ghz). At the bottom of the router there is a weather proof UTP connector that is used for both Power-Over-Ethernet (PoE) and Ethernet connectivity to the router. A special mounting bracket at the back of the router allows it to be attached to an aluminum pole that is usually mounted to the side of a building or some structure.&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN.png]]&lt;br /&gt;
&lt;br /&gt;
== How to build a mesh with HPN&#039;s ==&lt;br /&gt;
The idea is to build a mesh network with these routers by aligning each directional antennas to point to a neighboring omni or another directional antenna. The wireless cards in a router operates on different channels (frequencies). To make it more user friendly each channel (frequencies) is tied to a color. This means that a red panel antenna must be aligned to a red omni (or another red panel) and a green panel must be aligned to a green omni (or green panel). The blue channel (2.4Ghz) is used to create a wifi hostspot for clients who would like to connect to the mesh network via wifi.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mesh-Network.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every mesh network usually have one GateWay that connects to the Internet or to some other network. Any one of the mesh nodes can be configured to become a GateWay for the mesh. When a node becomes a GateWay then the channels (frequencies) of the antennas are fixed  to the following: 5.8Ghz directional panel = RED, 5.8Ghz omni = GREEN and the 2.4Ghz omni = BLUE. The GateWay node will also become the DNS server for the mesh and all the nodes inside the mesh will register their HostNames with the DNS server. Another function of the GateWay node is to act as a time server for the mesh network and all the nodes inside the mesh will synchronize their time with the GateWay node. &lt;br /&gt;
&lt;br /&gt;
The best approach to build a mesh network is to start with the installation of the GateWay node. Next you install the node(s) that aligns to the GateWay node and then grow the mesh from there. Fist perform a visual alignment of the panel antenna on the node before the power is switched on. When a normal node starts up for the first time, then it will hunt for a mesh signal and it will lock it&#039;s channels (frequencies) once connectivity is established. It will first hunt for connectivity on both the red and green channels on the directional panel antenna for X seconds. If no signal is found, then the hunt will continue on the 5.8Ghz omni directional antenna for X seconds. This sequence will repeat itself until a signal is found, or until the channels are manually locked via the web interface on the node itself. &lt;br /&gt;
&lt;br /&gt;
Every node has a GREEN and a RED LED that is visible from underneath the node (should be visible when one stands under the node that is mounted on a pole). These LEDs are there to give some indication of connectivity and they will only turn on if connectivity can be established on either the red or green channel. Note that the LED does not show the signal quality or to what node it is connected to, it only shows that there is connectivity to another HPN node and on what channel (red or green). Signal quality and node connectivity information is only available via the web interface, but in most cases a visual alignment combined with a link indicator will be sufficient enough to get a mesh node up and running.&lt;br /&gt;
&lt;br /&gt;
== How can a client connect to the mesh ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Hpn-switch-pc.png]]&lt;br /&gt;
&lt;br /&gt;
Client devices can connect to any of the nodes via Ethernet or via wifi (blue channel = hostspot). The client devices should be configured to make use of DHCP so that all networking configurations can be done automatically (The node will provide all the networking details via DHCP). It is also recommended that the IPv6 protocol stack should be switch on if it is available. IPv6 should already be enabled on Windows Vista as well as most Unix systems.&lt;br /&gt;
&lt;br /&gt;
== How does the mesh work ? ==&lt;br /&gt;
&lt;br /&gt;
Almost everything in the network will be configured automatically, except for the selection of the gateway node and the channel (red or green) of a wireless link. The mesh supports both IPv6 and IPv4 traffic from any end-point (a place where a mesh client connects) to any other end-point in the mesh, while the backbone uses IPv6 only. A routing protocol called OLSR (Optimized Link State Routing) is used to exchange routing information between all the nodes inside the mesh and to select the best path for data traffic between end-points in the mesh.&lt;br /&gt;
&lt;br /&gt;
[[Image:OLSR.png]]&lt;br /&gt;
&lt;br /&gt;
Lets take an example (see diagram) where HP want to send data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv6 ====&lt;br /&gt;
HP will address the data to the IPv6 address of Dell and send it to node C. Node C will look in it&#039;s routing table and see that there are two routes to Dell, one route via node B-A-D-E and the other route via D-E. It will then select the best route and send it to the next node, in our case node D. Node D will look in it&#039;s routing table and see that the only route to Dell is via node E. Node E will look at it&#039;s routing table and see that Dell is directly connected and it will forward the data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv4 ====&lt;br /&gt;
This one is a bit more complicated. IPv4 is only used on the outside of the network (where the mesh clients connect to it) and then the IPv4 traffic is tunneled over the IPv6 backbone of the mesh to any another end point in the mesh. The mesh will automatically create a one-to-many IPv4 tunnel over the IPv6 network (4over6 tunneling protocol). This means that it looks like a network with an IPv4 tunnel from every IPv4 subnet to every other IPv4 subnet in the mesh. From a client&#039;s perspective it looks like a normal IPv4 routed network. From the backbone&#039;s perspective it looks like a IPv6 only network and all the OLSR routing information is IPv6 only. &lt;br /&gt;
&lt;br /&gt;
So how does the network know how to forward IPv4 packets to the correct destination ? It makes use of IPv4-mapped-IPv6 addresses (see [http://tools.ietf.org/html/rfc4291#section-2.5.5 RFC4291] and [http://tools.ietf.org/html/rfc4038 RFC4038]). Every node will map an IPv4 addresses into a IPv6 address before data goes to the backbone and the IPv4-Mapped-IPv6 addresses are converted back to a plain IPv4 address when it comes out of the backbone. OLSR will advertise these IPv4-Mapped-IPv6 address subnets on the backbone so that all the nodes will learn these subnets and they will calculate the best route to these subnets.&lt;br /&gt;
&lt;br /&gt;
Lets take example again, using IPv4. HP will address the data to the IPv4 address of Dell and send it to node C. Node C will change the IPv4 packet to an IPv6 packet with an IPv4-mapped-IPv6 addresses. From there it will follow the same route as the IPv6 example above. Node E will take the original IPv4 packet out of the IPv4-mapped-IPv6 packet and it will send the original IPv4 packet to Dell.&lt;br /&gt;
&lt;br /&gt;
See http://wirelessafrica.meraka.org.za/wiki/index.php/John%27s_research#4over6_Automatic_tunnels for more detail of the 4over6 tunneling protocol.&lt;br /&gt;
&lt;br /&gt;
=== Why is the mesh using IPv6 ? ===&lt;br /&gt;
&lt;br /&gt;
==== Reason one ====&lt;br /&gt;
It is predicted that unused IPv4 address space will be depleted within the next two years. Operating systems like Vista and most Unix systems defaults to IPv6 by default and most applications are IPv6 ready. With this in mind it makes sense that any new networking products should provide both IPv4 and IPv6 support.&lt;br /&gt;
&lt;br /&gt;
==== Reason two ====&lt;br /&gt;
In a single radio mesh network there is just one RF channel and everybody makes use of the same IP subnet. One limitation of a single radio mesh is that each mesh radio needs to handle both incoming and outgoing traffic. This causes the throughput to be halved because a radio cannot transmit and receive simultaneously. Another problem is that if one radio is transmitting then all its neighbors must all be in listening mode. These problems can cause a single radio mesh to very quickly run out of steam.&lt;br /&gt;
&lt;br /&gt;
Multi-radio mesh technology solves this problem by configuring every radio inside a router to operate on a different frequency and on a different IP subnet. In the HPN two radios are dedicated for backbone traffic and the third is used to create a client hotspot. 802.11a is generally used for backbone traffic, and 802.11b/g for client coverage. &lt;br /&gt;
&lt;br /&gt;
In a multi-radio mesh network it is very difficult to use the same IPv4 subnet on all the backbone wireless interfaces inside a mesh. The OLSR routing protocol uses broadcast packets to flood OLSR routing information to all of it&#039;s neighbors. This works very well with a single radio mesh, but not with a multi-radio mesh. Almost all TCP/IP (IPv4) stacks implementations can only send out broadcast packets on one interface at a time, but not on multiple interfaces on the same IPv4 subnet. This means that every interface needs to operate on a different IPv4 subnet, with the effect that some OLSR links may be physically possible, but it cannot be used for data because the IPv4 subnets are different. A multi-radio IPv4 OLSR network is possible, but it usually needs a lot of planning and configuration.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv4-Network.png]]&lt;br /&gt;
&lt;br /&gt;
The TCP/IP stack of IPv6 does not make use of Broadcast packets and OLSR routing information is flooded to it&#039;s neighbors via multicast packets. These multicast packets will automatically be duplicated by the TCP/IP stack and send out via multiple IPv6 interfaces on the same IPv6 subnet. This means that the mesh can use the same IPv6 subnet, all over the mesh backbone, without any problems. With a multi-radio IPv6 OLSR mesh you don&#039;t need any IPv6 configuration on the backbone as all the nodes use the same IPv6 subnet.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv6-Network.png]]&lt;br /&gt;
&lt;br /&gt;
== Behaviour of a normal node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
== [[Initial (old) hunting description]]&lt;br /&gt;
&lt;br /&gt;
The following describes how a normal node will behave inside a mesh and what service it will provide:&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up for the fist time, then it will go into a hunting mode and it will search for other nodes in the mesh. In hunting mode it will first configure the patch antenna on the GREEN frequency. It will perform a link local IPv6 ping on that interface for about X seconds to determine if any IPv6 connectivity can be found on that antenna/channel. If no connectivity is found after X seconds, then it will hunt further using RED on the patch, then GREEN on the omni and then RED on the omni. If no connectivity can be found, then it will start the hunting process from the beginning, or until it is manually locked via the WEB terface. If connectivity can be established, then it will enable the green/red link LED on the bottom of the node to show connectivity (use the WEB interface for more information on to which node connectivity has been established to). If connectivity is lost then the LED will be off again. After stable connectivity for about X consecutive pings, the node will lock the antenna/channels util someone changes it manually via the WEB interface. Once the antennas/channels are locked then it will also change the sensitivity of the link LED and LED updates will be less frequently. The LED sensitivity can be manually changed via the WEB interface by selecting the &amp;quot;alignment&amp;quot; button. The alignment feature will give signal strength information on the WEB interface. See hunt-flow-diagram below.&lt;br /&gt;
&lt;br /&gt;
[[Image:Hunt-flow-diag.png]]&lt;br /&gt;
   &lt;br /&gt;
* When a new node boots up then an unique IPv6 address ((inside this mesh. See IP addressing section) will be configured on all the Ethernet and wireless interfaces. An unique (inside this mesh) IPv4 address is calculated and configured on the Ethernet interface and on the 2.4Ghz omni interface. The node will use the MAC address of the adapter to calculate a unique IPv4 and IPv6 subnet for that interface. These automatic addresses can be overrided via the WEB interface (E.g. if a globally routeable IPv6 address is required for a website inside the mesh and it should be visible from the Internet). Wireless interfaces are placed into adhoc mode and the channel, ssid and bssid are also configured.&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up then the OLSR daemon is started and it will listen en send OLSR topology packets to all of it&#039;s neighboring nodes. OLSR runs on all the wireless interfaces, but not on the Ethernet interface. All the IPv4 subnets are converted to 4in6 IPv6 addresses and these IPv6 subnets are placed into the HNA section of olsrd.conf, together with the IPv6 subnets that are configured on the Ethernet interface and on the 2.4Ghz omni interface. These HNA subnets are then distributed, via OLSR, to all the other nodes inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The 4over6 tunneling daemon take care of all IPv4 comms and dirtributing of routing information inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The node will start ntpd daemon on provide NTP time services on all it&#039;s IPv4 and IPv6 addresses. NTP will also synchronize it&#039;s local time with the GW-node on a regular basis.&lt;br /&gt;
&lt;br /&gt;
* The node will register it&#039;s own hostname in DNS on the GW-node. It will start dnsmasq daemon and it will also provide DNS services on all it&#039;s IPv4 and IPv6 addresses. Dnsmasq will forward all DNS queries to the DNS server running on the GW-node.&lt;br /&gt;
&lt;br /&gt;
* Dnsmasq is used to provide IPv4 DHCP services and DNS services on both the Ethernet interface and on the 2.4Ghz omni (hostspot) interface.&lt;br /&gt;
&lt;br /&gt;
* rtadvd will run on both the Ethernet interface and on the 2.4Ghz omni interface and it is used to advertise IPv6 prefixes to locally connected IPv6 client devices.&lt;br /&gt;
&lt;br /&gt;
* sshd allows remote ssh login&#039;s from anywhere in the mesh network.&lt;br /&gt;
&lt;br /&gt;
* watchdogd toggles the watchdog during normal operations. Should the system hang for some reason, then the watchdog will restart the HPN node.&lt;br /&gt;
&lt;br /&gt;
* mini_httpd is used for the WEB gui running on the HPN node.&lt;br /&gt;
&lt;br /&gt;
== Behavior of the GateWay node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
Any standard mesh node can become a GateWay node by selecting the &amp;quot;GateWay&amp;quot; button under &amp;quot;Additional features&amp;quot; on the WEB interface. The GateWay node is the place where the mesh will connect to some outside network and it will be the default route for the mesh. When a normal node becomes a GateWay node, then it does not disable any normal node features, but it just adds some additional features. The following are the additional features that a GateWay node will have:&lt;br /&gt;
&lt;br /&gt;
* The GW-node will not go into a hunting mode and it will lock it&#039;s channels with GREEN on the omni and RED on the directional panel. The default channels can be swapped via the WEB interface.&lt;br /&gt;
&lt;br /&gt;
* The GW-node is the default route for the mesh and it will advertise a default route via OLSR to the rest of the mesh.&lt;br /&gt;
&lt;br /&gt;
* The GW-node connects to the outside networks via Ethernet. It will perform a DHCP request on this interface in order to get an automatic IP address and external DNS server configurations from the external network. These setting can be overided via the WEB interface, under &amp;quot;Additional features&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes the DNS server for the mesh and it will configure and start the &#039;named&#039; services on IPv6, as well as on a well known IPv6 address of fec0:0:0:ffff::1. It will allow any node inside a mesh to submit their hostname into DNS and it will provide DNS services to any node or other device inside the mesh on IPv6 only. The GateWay node will also forward external DNS requests to upstream DNS servers if they are available. Upstream DNS servers are usually configured via DHCP but these setting can also be overided under &amp;quot;Additional features&amp;quot; on the WEB interface. DNS services are still available via &#039;dnsmasq&#039;, on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a time server for the mesh. It will synchronize it&#039;s time to an external time server if it&#039;s configured and available, otherwise it will use it&#039;s own internal RTC to synchronize it&#039;s time to. This time will be available to the rest of the mesh on a well known IPv6 address of fec0:0:0:ffff::1 and all the nodes in a mesh will use this time to synchronize their own time servers to. The GW-node will still provide NTP time services on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a firmware update server for the mesh. It will start ftpd services on IPv6, on a well known IPv6 address of fec0:0:0:ffff::1. It will took for new firmware on the Internet. If new firmware is available, then it will download the software and make it available to the other nodes inside the mesh via ftp.&lt;br /&gt;
&lt;br /&gt;
== IPv4 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
IPv4 addresses are not used in the backbone, but only on the edge of the network. This means that every node will have two IPv4 subnets configured, one on the Ethernet adapter (npe0) and the other on the 2.4Ghz omni (ath2) that is used for a wifi hotspot. The High performance node will always use the first IPv4 address on a configured subnet. E.g 10.234.18.1/24&lt;br /&gt;
&lt;br /&gt;
The HPN currently makes use of an automatic IPv4 addressing scheme where the IPv4 subnet is derived from the two least significant bytes of the MAC address of that particular interface. The first bye of the network is always 10 because we are making use of the 10net inside the mesh. The next two byes comes from the last two byes of the Mac address and it will become the IPv4 subnet for that adapter. The adapter itself will be 10.x.x.1 and it will become the default gateway for that subnet. DNSmasq will hand out DHCP addresses form 10.x.x.100 - 10.x.x.199 on the calculated subnet.&lt;br /&gt;
&lt;br /&gt;
 Mac = 00:d0:12:07:cb:73&lt;br /&gt;
 cb.73 (hex) = 203.115 (decimal)&lt;br /&gt;
 IP subnet  = 10.203.115 with /24 subnet mask&lt;br /&gt;
 IP address = 10.203.115.1&lt;br /&gt;
 DHCP = 10.203.115.100-10.203.115.199&lt;br /&gt;
&lt;br /&gt;
This addressing scheme will work 99% of the time, but it is not failsafe. Subnet clashes may occur due to the MAC address numbering schemes used by different vendors. MAC addresses usually have a vendor portion (first part of address) and a product/sequent number portion (last part). The last part is the part that is used to generate an IPv4 address. The last two bytes will most probably, at some stage, be that same for two different cards from two different vendors and there may be a very small chance for both of these cards end up in the same mesh network. In this case the automatic address can be overridden manually in rc.conf.local. At this stage there is no build in detection system that will handle Mac address clashes.&lt;br /&gt;
&lt;br /&gt;
Other addressing schemes to consider:&lt;br /&gt;
* Manage and assign all IPv4 addresses centrally. Program addresses into the HPN&#039;s during the manufacturing process. This will sort out all IPv4 address clashes. Issues - Do you assign a IPv4 address block per community or just sequential per HPN node?&lt;br /&gt;
* Manage a block of IPv4 addresses for each community somewhere on the local mesh. HPN nodes can then request an IPv4 addresses from this repository and use it. Issues - what happens if server is down or during a power failure. Will you get a new IPv4 address every time, simular to what you get with ADSL. This will mean that all the the PC&#039;s and devices that received DHCP addresses from DNSmasq will have to change as well. &lt;br /&gt;
&lt;br /&gt;
Issues that may influence the selection of an addressing scheme:&lt;br /&gt;
* Should there be IPv4 connectivity between different mesh networks ?&lt;br /&gt;
* Should there be IPv4 connectivity between a network inside a mesh and some other place in the Internet ?&lt;br /&gt;
* Should someone upstream device be able to initiate a connection into a mesh network (E.g. web server in mesh). ?&lt;br /&gt;
* Should we make use of legal (routeable) IPv4 address space, or should we stick to the 10net.&lt;br /&gt;
* Should the network be able to build and exchange IPv4 routing information with other networks.&lt;br /&gt;
* Routing information can be simplified if sequential IPv4 addresses are managed centrally and allocated per mesh&lt;br /&gt;
* Should the addressing scheme survive a power cycle or load shedding inside a community&lt;br /&gt;
* Is the WISP going to do NAT ?&lt;br /&gt;
&lt;br /&gt;
== IPv6 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
All the HPN nodes supports end-to-end IPv6 communications over the mesh. IPv6 only needs a network prefix (IPv6 subnet) for every adapter and the protocol stack will work out the IPv6 address for each interface. &lt;br /&gt;
&lt;br /&gt;
Our mesh is making use of a private Unique Local Addresses (ULAs) space, described in [http://www.rfc-editor.org/rfc/rfc4193.txt RFC4193]. This address space in similar to the 10net in IPv4, but with the difference that each ULA is globally unique. This means that we can calculate our own network prefix that we use in a mesh. This leaves the option to use the same prefix for all the different mesh networks, or we can use an unique prefix for every mesh. A unique prefix for every mesh may have an routing advantage if we need to connect different mesh networks together in future, but it also means that HPN&#039;s should be pre-configured with a prefix that is tied to a specific community and the prefix allocations should be managed centrally.&lt;br /&gt;
&lt;br /&gt;
Note that private Unique Local IPv6 addresses are not globally routable, but only inside our mesh. If we need globally routable IPv6 addresses then we need to apply for Provider Independent IPv6 address space from Afrinic. These addresses is uosually someting that is given to some network provider (owner of the network) and it will have a yearly fee attached to it. Issues - it is not always clear who the owner of a communit mesh is.&lt;br /&gt;
&lt;br /&gt;
The best sollution may be to use a combination of both addressing schemes. Use ULA addresses all over the mesh and only use leagal IPv6 addresses where devices needs to be availble on the Internet.&lt;br /&gt;
&lt;br /&gt;
== WEB interface ==&lt;br /&gt;
At the moment there is no WEB GUI for the HPN. This is an suggestion of how the GUI should look like. The idea is to keep it simple as possible with as little as possible that can be changed.&lt;br /&gt;
&lt;br /&gt;
=== WEB Gui main page ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-hunt-html.png|border|300px]][[Image:HPN-green-html.png|border|300px]][[Image:HPN-red-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
The default setting for a HPN is to come up in the hunting mode. After a successful hunt, the HPN will lock to either a red or green node and it will keep the setting, even during power failures. The menu will show the current state of a HPN, but it will also allow you to override the current mode by selecting red, green or hunting manually. Changes are only allowed after a valid login.&lt;br /&gt;
&lt;br /&gt;
The bar graph will give some indication of signal strength to other nodes on both the red and green channel. Note that there can be a link to more than one node on a given channel (red or green). The indicator on the main page will only show the signal to the first node that it links with. A more detailed view is available on the align page under the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
The last thing that can be changed from the main menu is the name of the HPN. This name will also be registered into the mesh DNS. All changes will only take effect after selecting the SUBMIT button. Additional features can be reached via the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
=== More features ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-features-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
==== Configure / Align / Stats ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-configure-html.png|border|300px]][[Image:HPN-align-html.png|border|300px]][[Image:HPN-stats-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
&lt;br /&gt;
[[High_Performance_Node_-_Specification]]&lt;br /&gt;
&lt;br /&gt;
== Upgrades ==&lt;br /&gt;
All the HPN nodes in a mesh will look for new firmware updates from the GateWay node on a regular basis. New firmware is placed inside a special directory on the GateWay node and it is made available, via ftp, to all the other HPN nodes in the mesh. Each HPN nodes will compare the firmware from this directory with it&#039;s current version of firmware to determine if it&#039;s newer. If new firmware is available, then the node will download and untar the new firmware onto a spare partition on the flash disk. After that all the custom configurations are copied over to the new partition. The HPN will then change the active partition to the new one and it will reboot with the new firmware. If someting should go wrong with the upgrade, then the HPN will revert back to the previous version of firmware.&lt;br /&gt;
&lt;br /&gt;
The GateWay node will look for new firmware somewhere on the Internet or from the WISP box. If available it will download the new firmware and place it into the special ftp directory.&lt;br /&gt;
&lt;br /&gt;
== Typical Outdoor Range at 5.8Ghz ==&lt;br /&gt;
At this stage we haven&#039;t found a testing site that is suitable for our tests. The following is just gestimates and it still needs to be tested.&lt;br /&gt;
&lt;br /&gt;
* Omni to Omni: up to xx km (2km?)&lt;br /&gt;
* Panel to Omni: up to xx km (5km?)&lt;br /&gt;
* Panel to Panel: up to xx km (10km?)&lt;br /&gt;
* External to External: more than xx km (20km?), depending on antenna type&lt;br /&gt;
&lt;br /&gt;
Now for some test results:&lt;br /&gt;
For our first test we selected a friendly site for the panel-to-panel test. We selected Anita&#039;s home because she is just over 10km from Meraka and there is a clear line of site between both sites (this is also our longest 11a link so far). Another reason is that we already have a 32bBi directional antenna, from an existing installation on Meraka&#039;s roof, that is pointing directly to her home. &lt;br /&gt;
&lt;br /&gt;
We used one of our new routers for this site, but we replaced the 5.8Ghz omni antenna with a 27dBi grid antenna so that we could have one link to login to the router, while we can do some tests on the second antenna.&lt;br /&gt;
&lt;br /&gt;
Here is a picture of Anita&#039;s husband with the router the he installed on their roof.&lt;br /&gt;
&lt;br /&gt;
[[Image:001.jpg|border|300px]][[Image:002.jpg|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Regulatory ==&lt;br /&gt;
Wirelss equipment that operate in the ISM bands do not need an spectrum licence, but they need to be ICASA approved. All the wifi adapters inside the HPN nodes are ICASA approved. From recent media reports regarding DABBA communications and there equipent in the Orange Farm area, it seems like our HPN node needs to get ICASA approval for the complete assembled HPN node as well. Every node should have it&#039;s own ICASA sticker on the back.&lt;br /&gt;
&lt;br /&gt;
== Using WEP/WPA in adhoc mode ==&lt;br /&gt;
&lt;br /&gt;
One of the requirements of the High Performance Node is to have WEP or WPA enabled between the wireless links of the mesh nodes. This is one of the functionalities that we would like to sort out before we install any of the nodes in the field. It&#039;s very difficult to change the encryption mode after an installation because the mesh nodes will lose connectivity if one node is upgraded to use WEP, while another is still using older software without WEP.&lt;br /&gt;
&lt;br /&gt;
WEP and WPA are both methods to enable the encryption of data that it is send over the air. WEP (Wired equivalence privacy) is an older standard and it makes use of a WEP encryption engine while the newer WPA standard added the use of an AES encryption engine. WEP encryption has some security flaws embedded into the protocol and there are several tools available on the Internet that can crack WEP keys. These tools are more effective with the cracking of 64bit WEP keys than with 128bit keys and they require a large amount of captured data and processing power to crack a key. Note that not all WEP keys can be cracked, but only weak keys and that flaw was addressed and fixed by WPA.&lt;br /&gt;
&lt;br /&gt;
Wireless adapters on Unix Systems can operate in three different modes: Client, Hostap (Access Point) and Adhoc mode. Most of the implementations of wireless (802.11) networks are based on a model where there is one Access Point with several wireless clients attached to to it. &lt;br /&gt;
&lt;br /&gt;
[[Image:AP-client.png|center|One Access point with many nodes]]&lt;br /&gt;
 &lt;br /&gt;
Wireless Mesh networks make use of the less tested Adhoc mode of 802.11.&lt;br /&gt;
&lt;br /&gt;
[[Image:Adhoc.png|center|Many nodes using Adhoc mode (many point to point links)]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
WEP and WPA requires a couple of kld&#039;s to be loaded before they can be configured. The following kld&#039;s should be added to loader.conf&lt;br /&gt;
wlan_acl_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_amrr_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_ccmp_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_tkip_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_wep_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_xauth_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== WEP ====&lt;br /&gt;
Enable and test WEP in Adhoc mode on the HPN.&lt;br /&gt;
WEP makes use of a single PSK that needs to be configured on all the wireless nodes. Any node or wireless device that is configured with this PSK will have the capability to crypt and decrypt these wireless packets. There are two methods to configure WEP in FreeBSD. You can use either  use ifconfig directly or you can make use of the WPA supplicant utility.&lt;br /&gt;
&lt;br /&gt;
ifconfig e.g.&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0 10.10.1.2/24 wep deftxkey 1 wepkey 128bitwepison&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0&lt;br /&gt;
 ath0: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; metric 0 mtu 1500&lt;br /&gt;
        ether 00:80:48:50:9e:69&lt;br /&gt;
        inet6 fe80::280:48ff:fe50:9e69%ath0 prefixlen 64 scopeid 0x1&lt;br /&gt;
        inet6 fd9c:6829:597c:20:280:48ff:fe50:9e69 prefixlen 64&lt;br /&gt;
        inet6 fd9c:6829:597c:20:: prefixlen 64 anycast&lt;br /&gt;
        inet 10.10.1.2 netmask 0xffffff00 broadcast 10.10.1.255&lt;br /&gt;
        media: IEEE 802.11 Wireless Ethernet autoselect mode 11g &amp;lt;adhoc&amp;gt;&lt;br /&gt;
        status: associated&lt;br /&gt;
        ssid ptamesh channel 13 (2472 Mhz 11g) bssid 56:e5:be:30:14:5a&lt;br /&gt;
        authmode OPEN privacy ON deftxkey 1 wepkey 1:104-bit txpower 31.5&lt;br /&gt;
        scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi11g 7&lt;br /&gt;
        roam:rate11g 5 protmode CTS burst&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Enable WEP on three mesh nodes and test connectivity.&lt;br /&gt;
 mesh-9e69:~ # ping6 ff02::1%ath0&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9e69%ath0, icmp_seq=87 hlim=64 time=2.122 ms&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9ddd%ath0, icmp_seq=87 hlim=64 time=5.625 ms(DUP!)&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9a44%ath0, icmp_seq=87 hlim=64 time=32.358 ms(DUP!)&lt;br /&gt;
&lt;br /&gt;
Everything seems to work fine (as expeted) with WEP enabled in the mesh.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WPA&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WPA was designed to work in an environment where you have one AP and several clients and not for Adhoc (mesh) networks. On the AP you have the Authenticator software and on the client you have the supplicant software. This means that if one would like to use WPA to it&#039;s full then every mesh node needs to be an Authenticator for all the other nodes it can see, as well as a supplicant for every node it can see. According to the WPA design document http://wirelessafrica.meraka.org.za/wiki/images/3/39/Wpa_supplicant-devel-04.pdf one can use WPA in Adhoc mode only in a static way with PSK&#039;s:&lt;br /&gt;
 IEEE 802.11 operation mode (Infrastucture/IBSS).&lt;br /&gt;
 0 = infrastructure (Managed) mode, i.e., associate with an AP.&lt;br /&gt;
 1 = IBSS (ad-hoc, peer-to-peer)&lt;br /&gt;
 Note: IBSS can only be used with key_mgmt NONE (plaintext and static WEP) and key_mgmt=WPA-&lt;br /&gt;
 NONE (ﬁxed group key TKIP/CCMP). In addition, ap_scan has to be set to 2 for IBSS. WPA-None requires&lt;br /&gt;
 following network block options: proto=WPA, key_mgmt=WPA-NONE, pairwise=NONE, group=TKIP&lt;br /&gt;
 (or CCMP, but not both), and psk must also be set (either directly or using ASCII passphrase).&lt;br /&gt;
&lt;br /&gt;
This is methods is very similar to the way that WEP is being used. This means the the only advantage of using WPA over WEP is that one can make use of the AES encryption engine that comes with WPA. Please note that with this mode of WPA and with WEP that anyone can decrypt the data being send over the air if they get hold of the mesh-wide PSK that is configured on every node in the network. If security is of importance them end users should consider the use of point-to-point security mechanisms like VPN&#039;s.&lt;br /&gt;
&lt;br /&gt;
The configuration of WPA is not supported in command line mode, but only with the wpa_supplicant software. This is an example of a wpa_supplicant.conf file to enable WPA in Adhoc mode:&lt;br /&gt;
&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 #&lt;br /&gt;
 network={&lt;br /&gt;
   ssid=&amp;quot;ptamesh&amp;quot;&lt;br /&gt;
 # Channel  13 : 2472  Mhz 11g&lt;br /&gt;
   frequency=2472&lt;br /&gt;
   mode=1&lt;br /&gt;
   proto=WPA&lt;br /&gt;
   key_mgmt=WPA-NONE&lt;br /&gt;
   pairwise=NONE&lt;br /&gt;
   group=TKIP&lt;br /&gt;
   psk=&amp;quot;mesh-ipv6&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To start the WPA software during boot-up one needs to add WPA to the ifconfig line in rc.conf. E.g.&lt;br /&gt;
&lt;br /&gt;
 ifconfig_ath0=&amp;quot;WPA 10.10.1.1/24 mode 11g mediaopt adhoc channel 13 ssid ptamesh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Unfortunately WPA did not work as easy as WEP, so it&#039;s off to debugging.&lt;br /&gt;
&lt;br /&gt;
Starting wpa_supplicant in the foreground with debugging enabled. E.g&lt;br /&gt;
&lt;br /&gt;
 wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
&lt;br /&gt;
The debugging output shows that something happens that initiates a wlan scan operation, while the card is in Adhoc mode. This should not happen and wpa_supplicant software never completes the configuration due to this error.&lt;br /&gt;
&lt;br /&gt;
 mesh-9ddd:~ # wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
 Initializing interface &#039;ath0&#039; conf &#039;/etc/wpa_supplicant.conf&#039; driver &#039;default&#039; &lt;br /&gt;
 ctrl_interface &#039;N/A&#039; bridge &#039;N/A&#039;&lt;br /&gt;
 Configuration file &#039;/etc/wpa_supplicant.conf&#039; -&amp;gt; &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 Reading configuration file &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 Priority group 0&lt;br /&gt;
   id=0 ssid=&#039;ptamesh&#039;&lt;br /&gt;
 Initializing interface (2) &#039;ath0&#039;&lt;br /&gt;
 EAPOL: SUPP_PAE entering state DISCONNECTED&lt;br /&gt;
 EAPOL: KEY_RX entering state NO_KEY_RECEIVE&lt;br /&gt;
 EAPOL: SUPP_BE entering state INITIALIZE&lt;br /&gt;
 EAP: EAP entering state DISABLED&lt;br /&gt;
 EAPOL: External notification - portEnabled=0&lt;br /&gt;
 EAPOL: External notification - portValid=0&lt;br /&gt;
 Own MAC address: 00:80:48:50:9d:dd&lt;br /&gt;
 wpa_driver_bsd_set_wpa: enabled=1&lt;br /&gt;
 wpa_driver_bsd_set_wpa_internal: wpa=3 privacy=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=0&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=2&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=3&lt;br /&gt;
 wpa_driver_bsd_set_countermeasures: enabled=0&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 Setting scan request: 0 sec 100000 usec&lt;br /&gt;
 Added interface ath0&lt;br /&gt;
 State: DISCONNECTED -&amp;gt; SCANNING&lt;br /&gt;
 Trying to associate with SSID &#039;ptamesh&#039;&lt;br /&gt;
 Cancelling scan request&lt;br /&gt;
 WPA: clearing own WPA/RSN IE&lt;br /&gt;
 Automatic auth_alg selection: 0x1&lt;br /&gt;
 wpa_driver_bsd_set_auth_alg alg 0x1 authmode 1&lt;br /&gt;
 WPA: No WPA/RSN IE available from association info&lt;br /&gt;
 WPA: Set cipher suites based on configuration&lt;br /&gt;
 WPA: Selected cipher suites: group 8 pairwise 1 key_mgmt 16 proto 1&lt;br /&gt;
 WPA: clearing AP WPA IE&lt;br /&gt;
 WPA: clearing AP RSN IE&lt;br /&gt;
 WPA: using GTK TKIP&lt;br /&gt;
 WPA: using PTK NONE&lt;br /&gt;
 WPA: using KEY_MGMT WPA-NONE&lt;br /&gt;
 WPA: Set own WPA IE default - hexdump(len=24): dd 16 00 50 f2 01 01 00 00 50 &lt;br /&gt;
 f2 02 01 00 00 50 f2 00 01 00 00 50 f2 00&lt;br /&gt;
 No keys have been configured - skip key clearing&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 State: SCANNING -&amp;gt; ASSOCIATING&lt;br /&gt;
 wpa_driver_bsd_associate: ssid &#039;ptamesh&#039; wpa ie len 24 pairwise 0 group 2 key &lt;br /&gt;
 mgmt 4&lt;br /&gt;
 ioctl[SIOCS80211, op 22, len 24]: Invalid argument&lt;br /&gt;
 Association request to the driver failed&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 Cancelling authentication timeout&lt;br /&gt;
 State: ASSOCIATING -&amp;gt; COMPLETED&lt;br /&gt;
 CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (auth) [id=-1 &lt;br /&gt;
 id_str=]&lt;br /&gt;
 EAPOL: External notification - portControl=ForceAuthorized&lt;br /&gt;
&lt;br /&gt;
Next was to install fresh copy of the FreeBSD src code onto my PC. I found the wpa_supplicant source code under /usr/src/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c Build a new driver from source code and run it on a router. After that I&#039;ve added in a lot of printf statements to trace how the driver works and to locate the code that puts the wifi card in scanning mode. In the end I found out that wpa_supplicant driver did not put the card in scanning mode, but it somehow caused the 802.11 stack to start the scanning. Unfortunately I don&#039;t know enough about the 802.11 code in FreeBSD to do any mode debugging. I&#039;ve send a mail about the problem to one of the FreeBSD mailing lists and the originator of most of the 802.11 code in FreeBSD (Sam Leffler) said I must log a problem report. So I logged a problem report with FreeBSD and now we have to wait and see if someone to take responsibility to fix this problem. More information on the problem report can be found at: http://www.freebsd.org/cgi/query-pr.cgi?pr=126822&lt;br /&gt;
&lt;br /&gt;
For now I recommend that we make use of WEP instead of WPA in our implementation as it is working and there isn&#039;t such a big advantage in using WPA over WEP in this mode except for the encryption algorithm that changes from WEP to AES.&lt;br /&gt;
&lt;br /&gt;
== Antenna calculations ==&lt;br /&gt;
&lt;br /&gt;
Every HP-node has two 5.15-5.6 GHz antennas. The one as a build in patch antenna and the other is an 5.1-5.8 GHz omni-directional antenna. The idea is that the patch antenna of a node will either be aligned to the omni or the patch antenna of another node. The following calculations is to get an feeling of what distances should be possible between these antennas.&lt;br /&gt;
&lt;br /&gt;
South African Wifi channels:&lt;br /&gt;
 Channel   1 : 2412  Mhz 11g          Channel  48 : 5240  Mhz 11a&lt;br /&gt;
 Channel   2 : 2417  Mhz 11g          Channel  52 : 5260* Mhz 11a&lt;br /&gt;
 Channel   3 : 2422  Mhz 11g          Channel  56 : 5280* Mhz 11a&lt;br /&gt;
 Channel   4 : 2427  Mhz 11g          Channel  60 : 5300* Mhz 11a&lt;br /&gt;
 Channel   5 : 2432  Mhz 11g          Channel  64 : 5320* Mhz 11a&lt;br /&gt;
 Channel   6 : 2437  Mhz 11g          Channel 100 : 5500* Mhz 11a&lt;br /&gt;
 Channel   7 : 2442  Mhz 11g          Channel 104 : 5520* Mhz 11a&lt;br /&gt;
 Channel   8 : 2447  Mhz 11g          Channel 108 : 5540* Mhz 11a&lt;br /&gt;
 Channel   9 : 2452  Mhz 11g          Channel 112 : 5560* Mhz 11a&lt;br /&gt;
 Channel  10 : 2457  Mhz 11g          Channel 116 : 5580* Mhz 11a&lt;br /&gt;
 Channel  11 : 2462  Mhz 11g          Channel 120 : 5600* Mhz 11a&lt;br /&gt;
 Channel  12 : 2467  Mhz 11g          Channel 124 : 5620* Mhz 11a&lt;br /&gt;
 Channel  13 : 2472  Mhz 11g          Channel 128 : 5640* Mhz 11a&lt;br /&gt;
 Channel  36 : 5180  Mhz 11a          Channel 132 : 5660* Mhz 11a&lt;br /&gt;
 Channel  40 : 5200  Mhz 11a          Channel 136 : 5680* Mhz 11a&lt;br /&gt;
 Channel  44 : 5220  Mhz 11a          Channel 140 : 5700* Mhz 11a&lt;br /&gt;
&lt;br /&gt;
HP-Node detailed specs: http://wirelessafrica.meraka.org.za/wiki/images/0/07/WLAN-A0033.pdf&lt;br /&gt;
&lt;br /&gt;
Pigtail detail specs: http://wirelessafrica.meraka.org.za/wiki/images/0/0a/Ca178_cable_assemblies_datasheet.pdf&lt;br /&gt;
&lt;br /&gt;
Wireless adapter detail specs: http://wirelessafrica.meraka.org.za/wiki/images/2/21/Wlm54sag23.pdf&lt;br /&gt;
&lt;br /&gt;
OR the Mikrotik version of the same adapter called a R52H (also manufactured by Compex, but usually cheaper)&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:R52H.pdf&lt;br /&gt;
&lt;br /&gt;
Another popular adapter is the DCMA-82 from Wistron. They have better RX sensitivity, but lower output power and they are a bit more expensive than the Compex cards. In some of the discussions that I&#039;ve seen they state that the DCMA-82 has much cleaner output power, better RX sensitivity, and a lower failure rate/quality issues than Compex&#039;s cards.&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:DCMA-82.pdf&lt;br /&gt;
&lt;br /&gt;
Node specs summary:&lt;br /&gt;
 Patch antenna            - 21-23 dBi,   16 deg H,  11 deg V, 5.15 -5.6 GHz&lt;br /&gt;
 5Ghz Omni antenna        - 8-11 dBi,    360 deg H, 10 deg V, 5.1 - 5.85 GHz&lt;br /&gt;
 2.4Ghz Omni antenna      - 7.5-8.5 dBi, 360 deg H, 12 deg V, 2.4 - 2.5 GHz&lt;br /&gt;
 30mm U.FL-SMA pigtail    - RG178 cable insertion loss, 2.4 GHZ = -1.1dB, 5.6 GHz = -2dB&lt;br /&gt;
 Compex WLM54AG23 adapter - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            23dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
                            17dBm @ 54Mbps&lt;br /&gt;
 Mikrotik (Compex) R52H   - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            24dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
 Wistron DCMA-82          - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -82 dBm @ 36Mbps&lt;br /&gt;
                            -72 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            22.5dBm @ 6-24Mbps&lt;br /&gt;
                            21.5dBm @ 36Mbps&lt;br /&gt;
                            18dBm @ 48Mbps&lt;br /&gt;
&lt;br /&gt;
I could not find any receive sensitivity info for ranges between 6Mbps and 54Mbps for the WLM54AG23. The closest I could find was the specs of another manufacturer card, using the same Atheros chipset as the WLM54AG23. Here is the receive sensitivity info for a WMIA-166AG Dual-Band miniPCI module (802.11a/g)&lt;br /&gt;
Nominal Temp Range:&lt;br /&gt;
  6Mbps 10-5 BER @ -90 dBm, typical&lt;br /&gt;
  9Mbps 10-5 BER @ -89 dBm, typical&lt;br /&gt;
 12Mbps 10-5 BER @ -88 dBm, typical&lt;br /&gt;
 18Mbps 10-5 BER @ -86 dBm, typical&lt;br /&gt;
 24Mbps 10-5 BER @ -82 dBm, typical&lt;br /&gt;
 36Mbps 10-5 BER @ -78 dBm, typical&lt;br /&gt;
 48Mbps 10-5 BER @ -72 dBm, typical&lt;br /&gt;
 54Mbps 10-5 BER @ -68 dBm, typical &lt;br /&gt;
&lt;br /&gt;
The WLM54AG23 is not the best wifi adapter in the market, but it gives a good compromise between price vs performance. If one need to push the limits of a specific link then I would probable select the SR5 from Ubiquity. They have excellent TX power and RX sensitivity.&lt;br /&gt;
 &lt;br /&gt;
There are lots of wifi/antenna/distance calculators available on the WEB. Most of these calculators cannot calculate the max distance for a link, you have to specify the distance and it will calculate you dBm margin. Links to a couple of Wifi/antenna/distance calculators:&lt;br /&gt;
&lt;br /&gt;
 http://www.radiolabs.com/stations/wifi_calc.html&lt;br /&gt;
 http://www.zytrax.com/tech/wireless/calc.htm&lt;br /&gt;
 http://www.widgetbox.com/widget/wifi-link-calculator&lt;br /&gt;
 http://www.wifiextreme.com.au/index.php?main_page=page_5&lt;br /&gt;
 http://www.rflinx.com/help/calculations&lt;br /&gt;
 http://www.olotwireless.net/castella/radio.htm&lt;br /&gt;
&lt;br /&gt;
Here are some formulas use to calculate a link budget:&lt;br /&gt;
  Free space loss = 36.56 + 20Log10(Frequency) + 20Log10(Dist in miles)&lt;br /&gt;
  mW to dBm = 10Log10(milliWatts) + 30&lt;br /&gt;
  dBm to mW = 10(dBm/10)&lt;br /&gt;
  RX Power = Margin - RX sensitivity&lt;br /&gt;
  Theoretical margin = TX power budget + RX power budget - free space loss&lt;br /&gt;
  SAD factor = Theoretical margin/TX power budget * 100 and shows the percentage of spare power on transmission.&lt;br /&gt;
&lt;br /&gt;
(Free Space Loss) = 92.5 + (20 Log fequency) + (20 log km distance)&lt;br /&gt;
&lt;br /&gt;
Free space loss @ 5400GHz:&lt;br /&gt;
 1km = -107.07dB      11km = -128.028dB&lt;br /&gt;
 2km = -113.09dB      12km = -128.784dB&lt;br /&gt;
 3km = -116.61dB      13km = -129.479dB&lt;br /&gt;
 4km = -119.11dB      14km = -130.123dB&lt;br /&gt;
 5km = -121.05dB      15km = -130.722dB&lt;br /&gt;
 6km = -122.63dB      16km = -131.282dB&lt;br /&gt;
 7km = -123.97dB      17km = -131.809dB&lt;br /&gt;
 8km = -125.13dB      18km = -132.305dB&lt;br /&gt;
 9km = -126.15dB      19km = -132.775dB&lt;br /&gt;
 10km = -127.07dB     20km = -133.221dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPNode with a 5Ghz patch to omni link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Omni: &lt;br /&gt;
 Min link distance @ 54Mbps 0.9km:              Max link distance @ 54Mbps 1.55km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -106dB                      Free space loss = -111dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 6.9km:              Max link distance @ 24Mbps 12.3km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 34km free space  = -124dB                      Free space loss = -129dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 17km:                Max link distance @ 6Mbps 30.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 34km free space  = -132dB                      Free space loss = -137dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPnodes with a 5Ghz patch to patch link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Patch:&lt;br /&gt;
 Min link distance @ 54Mbps 3.9km:              Max link distance @ 54Mbps 6km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -119dB                      Free space loss = -123dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 30.9km:             Max link distance @ 24Mbps 38.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 Free space loss  = -137dB                      Free space loss = -139dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 77.6km:              Max link distance @ 6Mbps 123km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 Free space loss  = -145dB                      Free space loss = -149dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4621</id>
		<title>High performance node page</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4621"/>
		<updated>2009-05-21T12:05:03Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Behavior of a normal node in a mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Development Team Research Pages]][[Category: Johann&#039;s Research Pages]][[Category: High Performance Node]]&lt;br /&gt;
&lt;br /&gt;
== What is a HPN (high performance node) ? ==&lt;br /&gt;
&lt;br /&gt;
The HPN is a multi-radio (3x radios), high performance, wireless (802.11) router. It has three antennas, one 5.8Ghz directional panel antenna as well as two omni&#039;s (2.4Ghz + 5.8Ghz). At the bottom of the router there is a weather proof UTP connector that is used for both Power-Over-Ethernet (PoE) and Ethernet connectivity to the router. A special mounting bracket at the back of the router allows it to be attached to an aluminum pole that is usually mounted to the side of a building or some structure.&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN.png]]&lt;br /&gt;
&lt;br /&gt;
== How to build a mesh with HPN&#039;s ==&lt;br /&gt;
The idea is to build a mesh network with these routers by aligning each directional antennas to point to a neighboring omni or another directional antenna. The wireless cards in a router operates on different channels (frequencies). To make it more user friendly each channel (frequencies) is tied to a color. This means that a red panel antenna must be aligned to a red omni (or another red panel) and a green panel must be aligned to a green omni (or green panel). The blue channel (2.4Ghz) is used to create a wifi hostspot for clients who would like to connect to the mesh network via wifi.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mesh-Network.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every mesh network usually have one GateWay that connects to the Internet or to some other network. Any one of the mesh nodes can be configured to become a GateWay for the mesh. When a node becomes a GateWay then the channels (frequencies) of the antennas are fixed  to the following: 5.8Ghz directional panel = RED, 5.8Ghz omni = GREEN and the 2.4Ghz omni = BLUE. The GateWay node will also become the DNS server for the mesh and all the nodes inside the mesh will register their HostNames with the DNS server. Another function of the GateWay node is to act as a time server for the mesh network and all the nodes inside the mesh will synchronize their time with the GateWay node. &lt;br /&gt;
&lt;br /&gt;
The best approach to build a mesh network is to start with the installation of the GateWay node. Next you install the node(s) that aligns to the GateWay node and then grow the mesh from there. Fist perform a visual alignment of the panel antenna on the node before the power is switched on. When a normal node starts up for the first time, then it will hunt for a mesh signal and it will lock it&#039;s channels (frequencies) once connectivity is established. It will first hunt for connectivity on both the red and green channels on the directional panel antenna for X seconds. If no signal is found, then the hunt will continue on the 5.8Ghz omni directional antenna for X seconds. This sequence will repeat itself until a signal is found, or until the channels are manually locked via the web interface on the node itself. &lt;br /&gt;
&lt;br /&gt;
Every node has a GREEN and a RED LED that is visible from underneath the node (should be visible when one stands under the node that is mounted on a pole). These LEDs are there to give some indication of connectivity and they will only turn on if connectivity can be established on either the red or green channel. Note that the LED does not show the signal quality or to what node it is connected to, it only shows that there is connectivity to another HPN node and on what channel (red or green). Signal quality and node connectivity information is only available via the web interface, but in most cases a visual alignment combined with a link indicator will be sufficient enough to get a mesh node up and running.&lt;br /&gt;
&lt;br /&gt;
== How can a client connect to the mesh ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Hpn-switch-pc.png]]&lt;br /&gt;
&lt;br /&gt;
Client devices can connect to any of the nodes via Ethernet or via wifi (blue channel = hostspot). The client devices should be configured to make use of DHCP so that all networking configurations can be done automatically (The node will provide all the networking details via DHCP). It is also recommended that the IPv6 protocol stack should be switch on if it is available. IPv6 should already be enabled on Windows Vista as well as most Unix systems.&lt;br /&gt;
&lt;br /&gt;
== How does the mesh work ? ==&lt;br /&gt;
&lt;br /&gt;
Almost everything in the network will be configured automatically, except for the selection of the gateway node and the channel (red or green) of a wireless link. The mesh supports both IPv6 and IPv4 traffic from any end-point (a place where a mesh client connects) to any other end-point in the mesh, while the backbone uses IPv6 only. A routing protocol called OLSR (Optimized Link State Routing) is used to exchange routing information between all the nodes inside the mesh and to select the best path for data traffic between end-points in the mesh.&lt;br /&gt;
&lt;br /&gt;
[[Image:OLSR.png]]&lt;br /&gt;
&lt;br /&gt;
Lets take an example (see diagram) where HP want to send data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv6 ====&lt;br /&gt;
HP will address the data to the IPv6 address of Dell and send it to node C. Node C will look in it&#039;s routing table and see that there are two routes to Dell, one route via node B-A-D-E and the other route via D-E. It will then select the best route and send it to the next node, in our case node D. Node D will look in it&#039;s routing table and see that the only route to Dell is via node E. Node E will look at it&#039;s routing table and see that Dell is directly connected and it will forward the data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv4 ====&lt;br /&gt;
This one is a bit more complicated. IPv4 is only used on the outside of the network (where the mesh clients connect to it) and then the IPv4 traffic is tunneled over the IPv6 backbone of the mesh to any another end point in the mesh. The mesh will automatically create a one-to-many IPv4 tunnel over the IPv6 network (4over6 tunneling protocol). This means that it looks like a network with an IPv4 tunnel from every IPv4 subnet to every other IPv4 subnet in the mesh. From a client&#039;s perspective it looks like a normal IPv4 routed network. From the backbone&#039;s perspective it looks like a IPv6 only network and all the OLSR routing information is IPv6 only. &lt;br /&gt;
&lt;br /&gt;
So how does the network know how to forward IPv4 packets to the correct destination ? It makes use of IPv4-mapped-IPv6 addresses (see [http://tools.ietf.org/html/rfc4291#section-2.5.5 RFC4291] and [http://tools.ietf.org/html/rfc4038 RFC4038]). Every node will map an IPv4 addresses into a IPv6 address before data goes to the backbone and the IPv4-Mapped-IPv6 addresses are converted back to a plain IPv4 address when it comes out of the backbone. OLSR will advertise these IPv4-Mapped-IPv6 address subnets on the backbone so that all the nodes will learn these subnets and they will calculate the best route to these subnets.&lt;br /&gt;
&lt;br /&gt;
Lets take example again, using IPv4. HP will address the data to the IPv4 address of Dell and send it to node C. Node C will change the IPv4 packet to an IPv6 packet with an IPv4-mapped-IPv6 addresses. From there it will follow the same route as the IPv6 example above. Node E will take the original IPv4 packet out of the IPv4-mapped-IPv6 packet and it will send the original IPv4 packet to Dell.&lt;br /&gt;
&lt;br /&gt;
See http://wirelessafrica.meraka.org.za/wiki/index.php/John%27s_research#4over6_Automatic_tunnels for more detail of the 4over6 tunneling protocol.&lt;br /&gt;
&lt;br /&gt;
=== Why is the mesh using IPv6 ? ===&lt;br /&gt;
&lt;br /&gt;
==== Reason one ====&lt;br /&gt;
It is predicted that unused IPv4 address space will be depleted within the next two years. Operating systems like Vista and most Unix systems defaults to IPv6 by default and most applications are IPv6 ready. With this in mind it makes sense that any new networking products should provide both IPv4 and IPv6 support.&lt;br /&gt;
&lt;br /&gt;
==== Reason two ====&lt;br /&gt;
In a single radio mesh network there is just one RF channel and everybody makes use of the same IP subnet. One limitation of a single radio mesh is that each mesh radio needs to handle both incoming and outgoing traffic. This causes the throughput to be halved because a radio cannot transmit and receive simultaneously. Another problem is that if one radio is transmitting then all its neighbors must all be in listening mode. These problems can cause a single radio mesh to very quickly run out of steam.&lt;br /&gt;
&lt;br /&gt;
Multi-radio mesh technology solves this problem by configuring every radio inside a router to operate on a different frequency and on a different IP subnet. In the HPN two radios are dedicated for backbone traffic and the third is used to create a client hotspot. 802.11a is generally used for backbone traffic, and 802.11b/g for client coverage. &lt;br /&gt;
&lt;br /&gt;
In a multi-radio mesh network it is very difficult to use the same IPv4 subnet on all the backbone wireless interfaces inside a mesh. The OLSR routing protocol uses broadcast packets to flood OLSR routing information to all of it&#039;s neighbors. This works very well with a single radio mesh, but not with a multi-radio mesh. Almost all TCP/IP (IPv4) stacks implementations can only send out broadcast packets on one interface at a time, but not on multiple interfaces on the same IPv4 subnet. This means that every interface needs to operate on a different IPv4 subnet, with the effect that some OLSR links may be physically possible, but it cannot be used for data because the IPv4 subnets are different. A multi-radio IPv4 OLSR network is possible, but it usually needs a lot of planning and configuration.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv4-Network.png]]&lt;br /&gt;
&lt;br /&gt;
The TCP/IP stack of IPv6 does not make use of Broadcast packets and OLSR routing information is flooded to it&#039;s neighbors via multicast packets. These multicast packets will automatically be duplicated by the TCP/IP stack and send out via multiple IPv6 interfaces on the same IPv6 subnet. This means that the mesh can use the same IPv6 subnet, all over the mesh backbone, without any problems. With a multi-radio IPv6 OLSR mesh you don&#039;t need any IPv6 configuration on the backbone as all the nodes use the same IPv6 subnet.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv6-Network.png]]&lt;br /&gt;
&lt;br /&gt;
== Behaviour of a normal node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
The following describes how a normal node will behave inside a mesh and what service it will provide:&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up for the fist time, then it will go into a hunting mode and it will search for other nodes in the mesh. In hunting mode it will first configure the patch antenna on the GREEN frequency. It will perform a link local IPv6 ping on that interface for about X seconds to determine if any IPv6 connectivity can be found on that antenna/channel. If no connectivity is found after X seconds, then it will hunt further using RED on the patch, then GREEN on the omni and then RED on the omni. If no connectivity can be found, then it will start the hunting process from the beginning, or until it is manually locked via the WEB terface. If connectivity can be established, then it will enable the green/red link LED on the bottom of the node to show connectivity (use the WEB interface for more information on to which node connectivity has been established to). If connectivity is lost then the LED will be off again. After stable connectivity for about X consecutive pings, the node will lock the antenna/channels util someone changes it manually via the WEB interface. Once the antennas/channels are locked then it will also change the sensitivity of the link LED and LED updates will be less frequently. The LED sensitivity can be manually changed via the WEB interface by selecting the &amp;quot;alignment&amp;quot; button. The alignment feature will give signal strength information on the WEB interface. See hunt-flow-diagram below.&lt;br /&gt;
&lt;br /&gt;
[[Image:Hunt-flow-diag.png]]&lt;br /&gt;
   &lt;br /&gt;
* When a new node boots up then an unique IPv6 address ((inside this mesh. See IP addressing section) will be configured on all the Ethernet and wireless interfaces. An unique (inside this mesh) IPv4 address is calculated and configured on the Ethernet interface and on the 2.4Ghz omni interface. The node will use the MAC address of the adapter to calculate a unique IPv4 and IPv6 subnet for that interface. These automatic addresses can be overrided via the WEB interface (E.g. if a globally routeable IPv6 address is required for a website inside the mesh and it should be visible from the Internet). Wireless interfaces are placed into adhoc mode and the channel, ssid and bssid are also configured.&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up then the OLSR daemon is started and it will listen en send OLSR topology packets to all of it&#039;s neighboring nodes. OLSR runs on all the wireless interfaces, but not on the Ethernet interface. All the IPv4 subnets are converted to 4in6 IPv6 addresses and these IPv6 subnets are placed into the HNA section of olsrd.conf, together with the IPv6 subnets that are configured on the Ethernet interface and on the 2.4Ghz omni interface. These HNA subnets are then distributed, via OLSR, to all the other nodes inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The 4over6 tunneling daemon take care of all IPv4 comms and dirtributing of routing information inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The node will start ntpd daemon on provide NTP time services on all it&#039;s IPv4 and IPv6 addresses. NTP will also synchronize it&#039;s local time with the GW-node on a regular basis.&lt;br /&gt;
&lt;br /&gt;
* The node will register it&#039;s own hostname in DNS on the GW-node. It will start dnsmasq daemon and it will also provide DNS services on all it&#039;s IPv4 and IPv6 addresses. Dnsmasq will forward all DNS queries to the DNS server running on the GW-node.&lt;br /&gt;
&lt;br /&gt;
* Dnsmasq is used to provide IPv4 DHCP services and DNS services on both the Ethernet interface and on the 2.4Ghz omni (hostspot) interface.&lt;br /&gt;
&lt;br /&gt;
* rtadvd will run on both the Ethernet interface and on the 2.4Ghz omni interface and it is used to advertise IPv6 prefixes to locally connected IPv6 client devices.&lt;br /&gt;
&lt;br /&gt;
* sshd allows remote ssh login&#039;s from anywhere in the mesh network.&lt;br /&gt;
&lt;br /&gt;
* watchdogd toggles the watchdog during normal operations. Should the system hang for some reason, then the watchdog will restart the HPN node.&lt;br /&gt;
&lt;br /&gt;
* mini_httpd is used for the WEB gui running on the HPN node.&lt;br /&gt;
&lt;br /&gt;
== Behavior of the GateWay node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
Any standard mesh node can become a GateWay node by selecting the &amp;quot;GateWay&amp;quot; button under &amp;quot;Additional features&amp;quot; on the WEB interface. The GateWay node is the place where the mesh will connect to some outside network and it will be the default route for the mesh. When a normal node becomes a GateWay node, then it does not disable any normal node features, but it just adds some additional features. The following are the additional features that a GateWay node will have:&lt;br /&gt;
&lt;br /&gt;
* The GW-node will not go into a hunting mode and it will lock it&#039;s channels with GREEN on the omni and RED on the directional panel. The default channels can be swapped via the WEB interface.&lt;br /&gt;
&lt;br /&gt;
* The GW-node is the default route for the mesh and it will advertise a default route via OLSR to the rest of the mesh.&lt;br /&gt;
&lt;br /&gt;
* The GW-node connects to the outside networks via Ethernet. It will perform a DHCP request on this interface in order to get an automatic IP address and external DNS server configurations from the external network. These setting can be overided via the WEB interface, under &amp;quot;Additional features&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes the DNS server for the mesh and it will configure and start the &#039;named&#039; services on IPv6, as well as on a well known IPv6 address of fec0:0:0:ffff::1. It will allow any node inside a mesh to submit their hostname into DNS and it will provide DNS services to any node or other device inside the mesh on IPv6 only. The GateWay node will also forward external DNS requests to upstream DNS servers if they are available. Upstream DNS servers are usually configured via DHCP but these setting can also be overided under &amp;quot;Additional features&amp;quot; on the WEB interface. DNS services are still available via &#039;dnsmasq&#039;, on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a time server for the mesh. It will synchronize it&#039;s time to an external time server if it&#039;s configured and available, otherwise it will use it&#039;s own internal RTC to synchronize it&#039;s time to. This time will be available to the rest of the mesh on a well known IPv6 address of fec0:0:0:ffff::1 and all the nodes in a mesh will use this time to synchronize their own time servers to. The GW-node will still provide NTP time services on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a firmware update server for the mesh. It will start ftpd services on IPv6, on a well known IPv6 address of fec0:0:0:ffff::1. It will took for new firmware on the Internet. If new firmware is available, then it will download the software and make it available to the other nodes inside the mesh via ftp.&lt;br /&gt;
&lt;br /&gt;
== IPv4 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
IPv4 addresses are not used in the backbone, but only on the edge of the network. This means that every node will have two IPv4 subnets configured, one on the Ethernet adapter (npe0) and the other on the 2.4Ghz omni (ath2) that is used for a wifi hotspot. The High performance node will always use the first IPv4 address on a configured subnet. E.g 10.234.18.1/24&lt;br /&gt;
&lt;br /&gt;
The HPN currently makes use of an automatic IPv4 addressing scheme where the IPv4 subnet is derived from the two least significant bytes of the MAC address of that particular interface. The first bye of the network is always 10 because we are making use of the 10net inside the mesh. The next two byes comes from the last two byes of the Mac address and it will become the IPv4 subnet for that adapter. The adapter itself will be 10.x.x.1 and it will become the default gateway for that subnet. DNSmasq will hand out DHCP addresses form 10.x.x.100 - 10.x.x.199 on the calculated subnet.&lt;br /&gt;
&lt;br /&gt;
 Mac = 00:d0:12:07:cb:73&lt;br /&gt;
 cb.73 (hex) = 203.115 (decimal)&lt;br /&gt;
 IP subnet  = 10.203.115 with /24 subnet mask&lt;br /&gt;
 IP address = 10.203.115.1&lt;br /&gt;
 DHCP = 10.203.115.100-10.203.115.199&lt;br /&gt;
&lt;br /&gt;
This addressing scheme will work 99% of the time, but it is not failsafe. Subnet clashes may occur due to the MAC address numbering schemes used by different vendors. MAC addresses usually have a vendor portion (first part of address) and a product/sequent number portion (last part). The last part is the part that is used to generate an IPv4 address. The last two bytes will most probably, at some stage, be that same for two different cards from two different vendors and there may be a very small chance for both of these cards end up in the same mesh network. In this case the automatic address can be overridden manually in rc.conf.local. At this stage there is no build in detection system that will handle Mac address clashes.&lt;br /&gt;
&lt;br /&gt;
Other addressing schemes to consider:&lt;br /&gt;
* Manage and assign all IPv4 addresses centrally. Program addresses into the HPN&#039;s during the manufacturing process. This will sort out all IPv4 address clashes. Issues - Do you assign a IPv4 address block per community or just sequential per HPN node?&lt;br /&gt;
* Manage a block of IPv4 addresses for each community somewhere on the local mesh. HPN nodes can then request an IPv4 addresses from this repository and use it. Issues - what happens if server is down or during a power failure. Will you get a new IPv4 address every time, simular to what you get with ADSL. This will mean that all the the PC&#039;s and devices that received DHCP addresses from DNSmasq will have to change as well. &lt;br /&gt;
&lt;br /&gt;
Issues that may influence the selection of an addressing scheme:&lt;br /&gt;
* Should there be IPv4 connectivity between different mesh networks ?&lt;br /&gt;
* Should there be IPv4 connectivity between a network inside a mesh and some other place in the Internet ?&lt;br /&gt;
* Should someone upstream device be able to initiate a connection into a mesh network (E.g. web server in mesh). ?&lt;br /&gt;
* Should we make use of legal (routeable) IPv4 address space, or should we stick to the 10net.&lt;br /&gt;
* Should the network be able to build and exchange IPv4 routing information with other networks.&lt;br /&gt;
* Routing information can be simplified if sequential IPv4 addresses are managed centrally and allocated per mesh&lt;br /&gt;
* Should the addressing scheme survive a power cycle or load shedding inside a community&lt;br /&gt;
* Is the WISP going to do NAT ?&lt;br /&gt;
&lt;br /&gt;
== IPv6 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
All the HPN nodes supports end-to-end IPv6 communications over the mesh. IPv6 only needs a network prefix (IPv6 subnet) for every adapter and the protocol stack will work out the IPv6 address for each interface. &lt;br /&gt;
&lt;br /&gt;
Our mesh is making use of a private Unique Local Addresses (ULAs) space, described in [http://www.rfc-editor.org/rfc/rfc4193.txt RFC4193]. This address space in similar to the 10net in IPv4, but with the difference that each ULA is globally unique. This means that we can calculate our own network prefix that we use in a mesh. This leaves the option to use the same prefix for all the different mesh networks, or we can use an unique prefix for every mesh. A unique prefix for every mesh may have an routing advantage if we need to connect different mesh networks together in future, but it also means that HPN&#039;s should be pre-configured with a prefix that is tied to a specific community and the prefix allocations should be managed centrally.&lt;br /&gt;
&lt;br /&gt;
Note that private Unique Local IPv6 addresses are not globally routable, but only inside our mesh. If we need globally routable IPv6 addresses then we need to apply for Provider Independent IPv6 address space from Afrinic. These addresses is uosually someting that is given to some network provider (owner of the network) and it will have a yearly fee attached to it. Issues - it is not always clear who the owner of a communit mesh is.&lt;br /&gt;
&lt;br /&gt;
The best sollution may be to use a combination of both addressing schemes. Use ULA addresses all over the mesh and only use leagal IPv6 addresses where devices needs to be availble on the Internet.&lt;br /&gt;
&lt;br /&gt;
== WEB interface ==&lt;br /&gt;
At the moment there is no WEB GUI for the HPN. This is an suggestion of how the GUI should look like. The idea is to keep it simple as possible with as little as possible that can be changed.&lt;br /&gt;
&lt;br /&gt;
=== WEB Gui main page ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-hunt-html.png|border|300px]][[Image:HPN-green-html.png|border|300px]][[Image:HPN-red-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
The default setting for a HPN is to come up in the hunting mode. After a successful hunt, the HPN will lock to either a red or green node and it will keep the setting, even during power failures. The menu will show the current state of a HPN, but it will also allow you to override the current mode by selecting red, green or hunting manually. Changes are only allowed after a valid login.&lt;br /&gt;
&lt;br /&gt;
The bar graph will give some indication of signal strength to other nodes on both the red and green channel. Note that there can be a link to more than one node on a given channel (red or green). The indicator on the main page will only show the signal to the first node that it links with. A more detailed view is available on the align page under the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
The last thing that can be changed from the main menu is the name of the HPN. This name will also be registered into the mesh DNS. All changes will only take effect after selecting the SUBMIT button. Additional features can be reached via the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
=== More features ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-features-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
==== Configure / Align / Stats ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-configure-html.png|border|300px]][[Image:HPN-align-html.png|border|300px]][[Image:HPN-stats-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
&lt;br /&gt;
[[High_Performance_Node_-_Specification]]&lt;br /&gt;
&lt;br /&gt;
== Upgrades ==&lt;br /&gt;
All the HPN nodes in a mesh will look for new firmware updates from the GateWay node on a regular basis. New firmware is placed inside a special directory on the GateWay node and it is made available, via ftp, to all the other HPN nodes in the mesh. Each HPN nodes will compare the firmware from this directory with it&#039;s current version of firmware to determine if it&#039;s newer. If new firmware is available, then the node will download and untar the new firmware onto a spare partition on the flash disk. After that all the custom configurations are copied over to the new partition. The HPN will then change the active partition to the new one and it will reboot with the new firmware. If someting should go wrong with the upgrade, then the HPN will revert back to the previous version of firmware.&lt;br /&gt;
&lt;br /&gt;
The GateWay node will look for new firmware somewhere on the Internet or from the WISP box. If available it will download the new firmware and place it into the special ftp directory.&lt;br /&gt;
&lt;br /&gt;
== Typical Outdoor Range at 5.8Ghz ==&lt;br /&gt;
At this stage we haven&#039;t found a testing site that is suitable for our tests. The following is just gestimates and it still needs to be tested.&lt;br /&gt;
&lt;br /&gt;
* Omni to Omni: up to xx km (2km?)&lt;br /&gt;
* Panel to Omni: up to xx km (5km?)&lt;br /&gt;
* Panel to Panel: up to xx km (10km?)&lt;br /&gt;
* External to External: more than xx km (20km?), depending on antenna type&lt;br /&gt;
&lt;br /&gt;
Now for some test results:&lt;br /&gt;
For our first test we selected a friendly site for the panel-to-panel test. We selected Anita&#039;s home because she is just over 10km from Meraka and there is a clear line of site between both sites (this is also our longest 11a link so far). Another reason is that we already have a 32bBi directional antenna, from an existing installation on Meraka&#039;s roof, that is pointing directly to her home. &lt;br /&gt;
&lt;br /&gt;
We used one of our new routers for this site, but we replaced the 5.8Ghz omni antenna with a 27dBi grid antenna so that we could have one link to login to the router, while we can do some tests on the second antenna.&lt;br /&gt;
&lt;br /&gt;
Here is a picture of Anita&#039;s husband with the router the he installed on their roof.&lt;br /&gt;
&lt;br /&gt;
[[Image:001.jpg|border|300px]][[Image:002.jpg|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Regulatory ==&lt;br /&gt;
Wirelss equipment that operate in the ISM bands do not need an spectrum licence, but they need to be ICASA approved. All the wifi adapters inside the HPN nodes are ICASA approved. From recent media reports regarding DABBA communications and there equipent in the Orange Farm area, it seems like our HPN node needs to get ICASA approval for the complete assembled HPN node as well. Every node should have it&#039;s own ICASA sticker on the back.&lt;br /&gt;
&lt;br /&gt;
== Using WEP/WPA in adhoc mode ==&lt;br /&gt;
&lt;br /&gt;
One of the requirements of the High Performance Node is to have WEP or WPA enabled between the wireless links of the mesh nodes. This is one of the functionalities that we would like to sort out before we install any of the nodes in the field. It&#039;s very difficult to change the encryption mode after an installation because the mesh nodes will lose connectivity if one node is upgraded to use WEP, while another is still using older software without WEP.&lt;br /&gt;
&lt;br /&gt;
WEP and WPA are both methods to enable the encryption of data that it is send over the air. WEP (Wired equivalence privacy) is an older standard and it makes use of a WEP encryption engine while the newer WPA standard added the use of an AES encryption engine. WEP encryption has some security flaws embedded into the protocol and there are several tools available on the Internet that can crack WEP keys. These tools are more effective with the cracking of 64bit WEP keys than with 128bit keys and they require a large amount of captured data and processing power to crack a key. Note that not all WEP keys can be cracked, but only weak keys and that flaw was addressed and fixed by WPA.&lt;br /&gt;
&lt;br /&gt;
Wireless adapters on Unix Systems can operate in three different modes: Client, Hostap (Access Point) and Adhoc mode. Most of the implementations of wireless (802.11) networks are based on a model where there is one Access Point with several wireless clients attached to to it. &lt;br /&gt;
&lt;br /&gt;
[[Image:AP-client.png|center|One Access point with many nodes]]&lt;br /&gt;
 &lt;br /&gt;
Wireless Mesh networks make use of the less tested Adhoc mode of 802.11.&lt;br /&gt;
&lt;br /&gt;
[[Image:Adhoc.png|center|Many nodes using Adhoc mode (many point to point links)]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
WEP and WPA requires a couple of kld&#039;s to be loaded before they can be configured. The following kld&#039;s should be added to loader.conf&lt;br /&gt;
wlan_acl_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_amrr_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_ccmp_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_tkip_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_wep_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_xauth_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== WEP ====&lt;br /&gt;
Enable and test WEP in Adhoc mode on the HPN.&lt;br /&gt;
WEP makes use of a single PSK that needs to be configured on all the wireless nodes. Any node or wireless device that is configured with this PSK will have the capability to crypt and decrypt these wireless packets. There are two methods to configure WEP in FreeBSD. You can use either  use ifconfig directly or you can make use of the WPA supplicant utility.&lt;br /&gt;
&lt;br /&gt;
ifconfig e.g.&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0 10.10.1.2/24 wep deftxkey 1 wepkey 128bitwepison&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0&lt;br /&gt;
 ath0: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; metric 0 mtu 1500&lt;br /&gt;
        ether 00:80:48:50:9e:69&lt;br /&gt;
        inet6 fe80::280:48ff:fe50:9e69%ath0 prefixlen 64 scopeid 0x1&lt;br /&gt;
        inet6 fd9c:6829:597c:20:280:48ff:fe50:9e69 prefixlen 64&lt;br /&gt;
        inet6 fd9c:6829:597c:20:: prefixlen 64 anycast&lt;br /&gt;
        inet 10.10.1.2 netmask 0xffffff00 broadcast 10.10.1.255&lt;br /&gt;
        media: IEEE 802.11 Wireless Ethernet autoselect mode 11g &amp;lt;adhoc&amp;gt;&lt;br /&gt;
        status: associated&lt;br /&gt;
        ssid ptamesh channel 13 (2472 Mhz 11g) bssid 56:e5:be:30:14:5a&lt;br /&gt;
        authmode OPEN privacy ON deftxkey 1 wepkey 1:104-bit txpower 31.5&lt;br /&gt;
        scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi11g 7&lt;br /&gt;
        roam:rate11g 5 protmode CTS burst&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Enable WEP on three mesh nodes and test connectivity.&lt;br /&gt;
 mesh-9e69:~ # ping6 ff02::1%ath0&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9e69%ath0, icmp_seq=87 hlim=64 time=2.122 ms&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9ddd%ath0, icmp_seq=87 hlim=64 time=5.625 ms(DUP!)&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9a44%ath0, icmp_seq=87 hlim=64 time=32.358 ms(DUP!)&lt;br /&gt;
&lt;br /&gt;
Everything seems to work fine (as expeted) with WEP enabled in the mesh.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WPA&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WPA was designed to work in an environment where you have one AP and several clients and not for Adhoc (mesh) networks. On the AP you have the Authenticator software and on the client you have the supplicant software. This means that if one would like to use WPA to it&#039;s full then every mesh node needs to be an Authenticator for all the other nodes it can see, as well as a supplicant for every node it can see. According to the WPA design document http://wirelessafrica.meraka.org.za/wiki/images/3/39/Wpa_supplicant-devel-04.pdf one can use WPA in Adhoc mode only in a static way with PSK&#039;s:&lt;br /&gt;
 IEEE 802.11 operation mode (Infrastucture/IBSS).&lt;br /&gt;
 0 = infrastructure (Managed) mode, i.e., associate with an AP.&lt;br /&gt;
 1 = IBSS (ad-hoc, peer-to-peer)&lt;br /&gt;
 Note: IBSS can only be used with key_mgmt NONE (plaintext and static WEP) and key_mgmt=WPA-&lt;br /&gt;
 NONE (ﬁxed group key TKIP/CCMP). In addition, ap_scan has to be set to 2 for IBSS. WPA-None requires&lt;br /&gt;
 following network block options: proto=WPA, key_mgmt=WPA-NONE, pairwise=NONE, group=TKIP&lt;br /&gt;
 (or CCMP, but not both), and psk must also be set (either directly or using ASCII passphrase).&lt;br /&gt;
&lt;br /&gt;
This is methods is very similar to the way that WEP is being used. This means the the only advantage of using WPA over WEP is that one can make use of the AES encryption engine that comes with WPA. Please note that with this mode of WPA and with WEP that anyone can decrypt the data being send over the air if they get hold of the mesh-wide PSK that is configured on every node in the network. If security is of importance them end users should consider the use of point-to-point security mechanisms like VPN&#039;s.&lt;br /&gt;
&lt;br /&gt;
The configuration of WPA is not supported in command line mode, but only with the wpa_supplicant software. This is an example of a wpa_supplicant.conf file to enable WPA in Adhoc mode:&lt;br /&gt;
&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 #&lt;br /&gt;
 network={&lt;br /&gt;
   ssid=&amp;quot;ptamesh&amp;quot;&lt;br /&gt;
 # Channel  13 : 2472  Mhz 11g&lt;br /&gt;
   frequency=2472&lt;br /&gt;
   mode=1&lt;br /&gt;
   proto=WPA&lt;br /&gt;
   key_mgmt=WPA-NONE&lt;br /&gt;
   pairwise=NONE&lt;br /&gt;
   group=TKIP&lt;br /&gt;
   psk=&amp;quot;mesh-ipv6&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To start the WPA software during boot-up one needs to add WPA to the ifconfig line in rc.conf. E.g.&lt;br /&gt;
&lt;br /&gt;
 ifconfig_ath0=&amp;quot;WPA 10.10.1.1/24 mode 11g mediaopt adhoc channel 13 ssid ptamesh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Unfortunately WPA did not work as easy as WEP, so it&#039;s off to debugging.&lt;br /&gt;
&lt;br /&gt;
Starting wpa_supplicant in the foreground with debugging enabled. E.g&lt;br /&gt;
&lt;br /&gt;
 wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
&lt;br /&gt;
The debugging output shows that something happens that initiates a wlan scan operation, while the card is in Adhoc mode. This should not happen and wpa_supplicant software never completes the configuration due to this error.&lt;br /&gt;
&lt;br /&gt;
 mesh-9ddd:~ # wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
 Initializing interface &#039;ath0&#039; conf &#039;/etc/wpa_supplicant.conf&#039; driver &#039;default&#039; &lt;br /&gt;
 ctrl_interface &#039;N/A&#039; bridge &#039;N/A&#039;&lt;br /&gt;
 Configuration file &#039;/etc/wpa_supplicant.conf&#039; -&amp;gt; &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 Reading configuration file &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 Priority group 0&lt;br /&gt;
   id=0 ssid=&#039;ptamesh&#039;&lt;br /&gt;
 Initializing interface (2) &#039;ath0&#039;&lt;br /&gt;
 EAPOL: SUPP_PAE entering state DISCONNECTED&lt;br /&gt;
 EAPOL: KEY_RX entering state NO_KEY_RECEIVE&lt;br /&gt;
 EAPOL: SUPP_BE entering state INITIALIZE&lt;br /&gt;
 EAP: EAP entering state DISABLED&lt;br /&gt;
 EAPOL: External notification - portEnabled=0&lt;br /&gt;
 EAPOL: External notification - portValid=0&lt;br /&gt;
 Own MAC address: 00:80:48:50:9d:dd&lt;br /&gt;
 wpa_driver_bsd_set_wpa: enabled=1&lt;br /&gt;
 wpa_driver_bsd_set_wpa_internal: wpa=3 privacy=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=0&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=2&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=3&lt;br /&gt;
 wpa_driver_bsd_set_countermeasures: enabled=0&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 Setting scan request: 0 sec 100000 usec&lt;br /&gt;
 Added interface ath0&lt;br /&gt;
 State: DISCONNECTED -&amp;gt; SCANNING&lt;br /&gt;
 Trying to associate with SSID &#039;ptamesh&#039;&lt;br /&gt;
 Cancelling scan request&lt;br /&gt;
 WPA: clearing own WPA/RSN IE&lt;br /&gt;
 Automatic auth_alg selection: 0x1&lt;br /&gt;
 wpa_driver_bsd_set_auth_alg alg 0x1 authmode 1&lt;br /&gt;
 WPA: No WPA/RSN IE available from association info&lt;br /&gt;
 WPA: Set cipher suites based on configuration&lt;br /&gt;
 WPA: Selected cipher suites: group 8 pairwise 1 key_mgmt 16 proto 1&lt;br /&gt;
 WPA: clearing AP WPA IE&lt;br /&gt;
 WPA: clearing AP RSN IE&lt;br /&gt;
 WPA: using GTK TKIP&lt;br /&gt;
 WPA: using PTK NONE&lt;br /&gt;
 WPA: using KEY_MGMT WPA-NONE&lt;br /&gt;
 WPA: Set own WPA IE default - hexdump(len=24): dd 16 00 50 f2 01 01 00 00 50 &lt;br /&gt;
 f2 02 01 00 00 50 f2 00 01 00 00 50 f2 00&lt;br /&gt;
 No keys have been configured - skip key clearing&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 State: SCANNING -&amp;gt; ASSOCIATING&lt;br /&gt;
 wpa_driver_bsd_associate: ssid &#039;ptamesh&#039; wpa ie len 24 pairwise 0 group 2 key &lt;br /&gt;
 mgmt 4&lt;br /&gt;
 ioctl[SIOCS80211, op 22, len 24]: Invalid argument&lt;br /&gt;
 Association request to the driver failed&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 Cancelling authentication timeout&lt;br /&gt;
 State: ASSOCIATING -&amp;gt; COMPLETED&lt;br /&gt;
 CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (auth) [id=-1 &lt;br /&gt;
 id_str=]&lt;br /&gt;
 EAPOL: External notification - portControl=ForceAuthorized&lt;br /&gt;
&lt;br /&gt;
Next was to install fresh copy of the FreeBSD src code onto my PC. I found the wpa_supplicant source code under /usr/src/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c Build a new driver from source code and run it on a router. After that I&#039;ve added in a lot of printf statements to trace how the driver works and to locate the code that puts the wifi card in scanning mode. In the end I found out that wpa_supplicant driver did not put the card in scanning mode, but it somehow caused the 802.11 stack to start the scanning. Unfortunately I don&#039;t know enough about the 802.11 code in FreeBSD to do any mode debugging. I&#039;ve send a mail about the problem to one of the FreeBSD mailing lists and the originator of most of the 802.11 code in FreeBSD (Sam Leffler) said I must log a problem report. So I logged a problem report with FreeBSD and now we have to wait and see if someone to take responsibility to fix this problem. More information on the problem report can be found at: http://www.freebsd.org/cgi/query-pr.cgi?pr=126822&lt;br /&gt;
&lt;br /&gt;
For now I recommend that we make use of WEP instead of WPA in our implementation as it is working and there isn&#039;t such a big advantage in using WPA over WEP in this mode except for the encryption algorithm that changes from WEP to AES.&lt;br /&gt;
&lt;br /&gt;
== Antenna calculations ==&lt;br /&gt;
&lt;br /&gt;
Every HP-node has two 5.15-5.6 GHz antennas. The one as a build in patch antenna and the other is an 5.1-5.8 GHz omni-directional antenna. The idea is that the patch antenna of a node will either be aligned to the omni or the patch antenna of another node. The following calculations is to get an feeling of what distances should be possible between these antennas.&lt;br /&gt;
&lt;br /&gt;
South African Wifi channels:&lt;br /&gt;
 Channel   1 : 2412  Mhz 11g          Channel  48 : 5240  Mhz 11a&lt;br /&gt;
 Channel   2 : 2417  Mhz 11g          Channel  52 : 5260* Mhz 11a&lt;br /&gt;
 Channel   3 : 2422  Mhz 11g          Channel  56 : 5280* Mhz 11a&lt;br /&gt;
 Channel   4 : 2427  Mhz 11g          Channel  60 : 5300* Mhz 11a&lt;br /&gt;
 Channel   5 : 2432  Mhz 11g          Channel  64 : 5320* Mhz 11a&lt;br /&gt;
 Channel   6 : 2437  Mhz 11g          Channel 100 : 5500* Mhz 11a&lt;br /&gt;
 Channel   7 : 2442  Mhz 11g          Channel 104 : 5520* Mhz 11a&lt;br /&gt;
 Channel   8 : 2447  Mhz 11g          Channel 108 : 5540* Mhz 11a&lt;br /&gt;
 Channel   9 : 2452  Mhz 11g          Channel 112 : 5560* Mhz 11a&lt;br /&gt;
 Channel  10 : 2457  Mhz 11g          Channel 116 : 5580* Mhz 11a&lt;br /&gt;
 Channel  11 : 2462  Mhz 11g          Channel 120 : 5600* Mhz 11a&lt;br /&gt;
 Channel  12 : 2467  Mhz 11g          Channel 124 : 5620* Mhz 11a&lt;br /&gt;
 Channel  13 : 2472  Mhz 11g          Channel 128 : 5640* Mhz 11a&lt;br /&gt;
 Channel  36 : 5180  Mhz 11a          Channel 132 : 5660* Mhz 11a&lt;br /&gt;
 Channel  40 : 5200  Mhz 11a          Channel 136 : 5680* Mhz 11a&lt;br /&gt;
 Channel  44 : 5220  Mhz 11a          Channel 140 : 5700* Mhz 11a&lt;br /&gt;
&lt;br /&gt;
HP-Node detailed specs: http://wirelessafrica.meraka.org.za/wiki/images/0/07/WLAN-A0033.pdf&lt;br /&gt;
&lt;br /&gt;
Pigtail detail specs: http://wirelessafrica.meraka.org.za/wiki/images/0/0a/Ca178_cable_assemblies_datasheet.pdf&lt;br /&gt;
&lt;br /&gt;
Wireless adapter detail specs: http://wirelessafrica.meraka.org.za/wiki/images/2/21/Wlm54sag23.pdf&lt;br /&gt;
&lt;br /&gt;
OR the Mikrotik version of the same adapter called a R52H (also manufactured by Compex, but usually cheaper)&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:R52H.pdf&lt;br /&gt;
&lt;br /&gt;
Another popular adapter is the DCMA-82 from Wistron. They have better RX sensitivity, but lower output power and they are a bit more expensive than the Compex cards. In some of the discussions that I&#039;ve seen they state that the DCMA-82 has much cleaner output power, better RX sensitivity, and a lower failure rate/quality issues than Compex&#039;s cards.&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:DCMA-82.pdf&lt;br /&gt;
&lt;br /&gt;
Node specs summary:&lt;br /&gt;
 Patch antenna            - 21-23 dBi,   16 deg H,  11 deg V, 5.15 -5.6 GHz&lt;br /&gt;
 5Ghz Omni antenna        - 8-11 dBi,    360 deg H, 10 deg V, 5.1 - 5.85 GHz&lt;br /&gt;
 2.4Ghz Omni antenna      - 7.5-8.5 dBi, 360 deg H, 12 deg V, 2.4 - 2.5 GHz&lt;br /&gt;
 30mm U.FL-SMA pigtail    - RG178 cable insertion loss, 2.4 GHZ = -1.1dB, 5.6 GHz = -2dB&lt;br /&gt;
 Compex WLM54AG23 adapter - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            23dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
                            17dBm @ 54Mbps&lt;br /&gt;
 Mikrotik (Compex) R52H   - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            24dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
 Wistron DCMA-82          - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -82 dBm @ 36Mbps&lt;br /&gt;
                            -72 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            22.5dBm @ 6-24Mbps&lt;br /&gt;
                            21.5dBm @ 36Mbps&lt;br /&gt;
                            18dBm @ 48Mbps&lt;br /&gt;
&lt;br /&gt;
I could not find any receive sensitivity info for ranges between 6Mbps and 54Mbps for the WLM54AG23. The closest I could find was the specs of another manufacturer card, using the same Atheros chipset as the WLM54AG23. Here is the receive sensitivity info for a WMIA-166AG Dual-Band miniPCI module (802.11a/g)&lt;br /&gt;
Nominal Temp Range:&lt;br /&gt;
  6Mbps 10-5 BER @ -90 dBm, typical&lt;br /&gt;
  9Mbps 10-5 BER @ -89 dBm, typical&lt;br /&gt;
 12Mbps 10-5 BER @ -88 dBm, typical&lt;br /&gt;
 18Mbps 10-5 BER @ -86 dBm, typical&lt;br /&gt;
 24Mbps 10-5 BER @ -82 dBm, typical&lt;br /&gt;
 36Mbps 10-5 BER @ -78 dBm, typical&lt;br /&gt;
 48Mbps 10-5 BER @ -72 dBm, typical&lt;br /&gt;
 54Mbps 10-5 BER @ -68 dBm, typical &lt;br /&gt;
&lt;br /&gt;
The WLM54AG23 is not the best wifi adapter in the market, but it gives a good compromise between price vs performance. If one need to push the limits of a specific link then I would probable select the SR5 from Ubiquity. They have excellent TX power and RX sensitivity.&lt;br /&gt;
 &lt;br /&gt;
There are lots of wifi/antenna/distance calculators available on the WEB. Most of these calculators cannot calculate the max distance for a link, you have to specify the distance and it will calculate you dBm margin. Links to a couple of Wifi/antenna/distance calculators:&lt;br /&gt;
&lt;br /&gt;
 http://www.radiolabs.com/stations/wifi_calc.html&lt;br /&gt;
 http://www.zytrax.com/tech/wireless/calc.htm&lt;br /&gt;
 http://www.widgetbox.com/widget/wifi-link-calculator&lt;br /&gt;
 http://www.wifiextreme.com.au/index.php?main_page=page_5&lt;br /&gt;
 http://www.rflinx.com/help/calculations&lt;br /&gt;
 http://www.olotwireless.net/castella/radio.htm&lt;br /&gt;
&lt;br /&gt;
Here are some formulas use to calculate a link budget:&lt;br /&gt;
  Free space loss = 36.56 + 20Log10(Frequency) + 20Log10(Dist in miles)&lt;br /&gt;
  mW to dBm = 10Log10(milliWatts) + 30&lt;br /&gt;
  dBm to mW = 10(dBm/10)&lt;br /&gt;
  RX Power = Margin - RX sensitivity&lt;br /&gt;
  Theoretical margin = TX power budget + RX power budget - free space loss&lt;br /&gt;
  SAD factor = Theoretical margin/TX power budget * 100 and shows the percentage of spare power on transmission.&lt;br /&gt;
&lt;br /&gt;
(Free Space Loss) = 92.5 + (20 Log fequency) + (20 log km distance)&lt;br /&gt;
&lt;br /&gt;
Free space loss @ 5400GHz:&lt;br /&gt;
 1km = -107.07dB      11km = -128.028dB&lt;br /&gt;
 2km = -113.09dB      12km = -128.784dB&lt;br /&gt;
 3km = -116.61dB      13km = -129.479dB&lt;br /&gt;
 4km = -119.11dB      14km = -130.123dB&lt;br /&gt;
 5km = -121.05dB      15km = -130.722dB&lt;br /&gt;
 6km = -122.63dB      16km = -131.282dB&lt;br /&gt;
 7km = -123.97dB      17km = -131.809dB&lt;br /&gt;
 8km = -125.13dB      18km = -132.305dB&lt;br /&gt;
 9km = -126.15dB      19km = -132.775dB&lt;br /&gt;
 10km = -127.07dB     20km = -133.221dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPNode with a 5Ghz patch to omni link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Omni: &lt;br /&gt;
 Min link distance @ 54Mbps 0.9km:              Max link distance @ 54Mbps 1.55km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -106dB                      Free space loss = -111dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 6.9km:              Max link distance @ 24Mbps 12.3km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 34km free space  = -124dB                      Free space loss = -129dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 17km:                Max link distance @ 6Mbps 30.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 34km free space  = -132dB                      Free space loss = -137dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPnodes with a 5Ghz patch to patch link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Patch:&lt;br /&gt;
 Min link distance @ 54Mbps 3.9km:              Max link distance @ 54Mbps 6km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -119dB                      Free space loss = -123dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 30.9km:             Max link distance @ 24Mbps 38.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 Free space loss  = -137dB                      Free space loss = -139dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 77.6km:              Max link distance @ 6Mbps 123km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 Free space loss  = -145dB                      Free space loss = -149dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=HPN_design_discussions_page&amp;diff=4616</id>
		<title>HPN design discussions page</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=HPN_design_discussions_page&amp;diff=4616"/>
		<updated>2009-04-16T13:56:38Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* FreeBSD vs Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== FreeBSD vs Linux ==&lt;br /&gt;
&lt;br /&gt;
=== Licencing ===&lt;br /&gt;
Extract form a FreeBSD vs Linux page regarding licensing:&lt;br /&gt;
http://www.lemis.com/bsdpaper.html&lt;br /&gt;
&lt;br /&gt;
How does the BSD license differ from the GNU Public license?&lt;br /&gt;
*Linux is available under the GNU General Public License (GPL), which is designed to eliminate closed source software. In particular, any derivative work of a product released under the GPL must also be supplied with source code if requested. By contrast, the BSD license is less restrictive: binary-only distributions are allowed. This is particularly attractive for embedded applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Atheros based wifi cards ===&lt;br /&gt;
We are currently using Atheros based wifi cards in our HPN&#039;s. The reason for this is that almost all the mini-PCI wifi cards on the market are Atheros based and they are by far the best supported in the open source community. Atheros worked with the open source community (Sam Leffler) and they provided a HAL (hardware abstraction layer) that interfaces between the Atheros wifi card and between the open source OS. At some stage someone release an reverse engineered HAL (called openHAL) based on a very old version from Atheros. By the end of 2008 Atheros decided to open up the source code of their latest HAL for the open source community.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== FreeBSD ===&lt;br /&gt;
&lt;br /&gt;
Pros&lt;br /&gt;
*All field deployments we have so far are on systems running FreeBSD; so we have great knowledge on its performance.&lt;br /&gt;
*We have far more than enough experience; hence turn-around for changes/additions are way too short, compared to Linux.&lt;br /&gt;
*Sam Leffler that wrote most of the Atheros HAL source code is also one of the big FreeBSD developers. &lt;br /&gt;
*All the Atheros driver code (from HAL) is now fully integrated into FreeBSD and is part of the OS.&lt;br /&gt;
*Works great for wireless modes, like ad-hoc, compared to Linux.&lt;br /&gt;
*All tests done on arm/avila boards involved only FreeBSD and none on Linux.&lt;br /&gt;
Cons&lt;br /&gt;
*With regard to the HPN, none.&lt;br /&gt;
*Under-appreciated&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Pros&lt;br /&gt;
*Runs on more (+cheaper) hardware platforms.&lt;br /&gt;
&lt;br /&gt;
Cons&lt;br /&gt;
*There is three different trees for the Atheros diver. &lt;br /&gt;
 1) AR5K - based on a very old, the reversed engineered HAL&lt;br /&gt;
 2) OpenWRT version - I think it is based on the Madwifi driver, but not sure&lt;br /&gt;
 3) Madwifi - This one also have different trees. One base on the old closed HAL and one based on the new open source HAL that Atheros released. I&#039;m not sure it they are also busy incorporating it into the OS.&lt;br /&gt;
*I&#039;ve heard people complaining about the stability of Atheros adhoc mode under Linux.&lt;br /&gt;
&lt;br /&gt;
== OLSR vs B.A.T.M.A.N ==&lt;br /&gt;
&lt;br /&gt;
This discussion is around what mesh routing protocol to use for our High Performance Nodes. Before we look into the protocols we need to understand the environment where the HPNs are going to be used in, who&#039;s going to install and maintain the network and what other system requirements will have an influence on the protocol selection.&lt;br /&gt;
&lt;br /&gt;
From the project contract it is clear that the target is not a pilot/research network, but a real commercial network that must provide connectivity to several schools and government departments, as well as for the community. The installation and maintenance will be the responsibility of external (not Meraka/CSIR) partners. This means that eventually it will not be a research network and whatever protocol we select needs to be very stable and well tested. Another requirement is that the network should be so easy do install (auto configure) and maintain and that it can be done by someone in the community. (It must not need an Engineer to design/configure/tweak the network before it is usable).&lt;br /&gt;
&lt;br /&gt;
The biggest requirement of any network is that it should be stable. After that you get all the other features like speed, ease of use, supported features etc. In a development network one can tolerate some degree of instability while working on new functionalities, but on a network that will be used by other parties should be rock solid and stable. The biggest factor about introducing any new protocols in a network, is that one needs a certain amount of time (years) to test, fix bugs and make sure that everything is stable and usable.&lt;br /&gt;
&lt;br /&gt;
=== OLSR ===&lt;br /&gt;
&lt;br /&gt;
Pros&lt;br /&gt;
* Proven and stable, lots of big networks using it&lt;br /&gt;
* Scales well&lt;br /&gt;
* Support both IPv4 and IPv6&lt;br /&gt;
* Support for Linux, FreeBSD, MacOS&lt;br /&gt;
* Active development&lt;br /&gt;
&lt;br /&gt;
Conns&lt;br /&gt;
* Routing information packets can become big&lt;br /&gt;
* Lots of network overheads to food routing information&lt;br /&gt;
* Can cause high CPU loads on small CPU&#039;s in low cost HW platforms&lt;br /&gt;
* Has difficulty routing in the presence of multiple gateways on the mesh&lt;br /&gt;
&lt;br /&gt;
=== B.A.T.M.A.N ===&lt;br /&gt;
&lt;br /&gt;
B.A.T.M.A.N is a fairly new protocol with many different versions, flavors (L2, L3) and derivatives (R.O.B.I.N, Mikrotik MME).&lt;br /&gt;
https://www.open-mesh.net/wiki/BranchesExplained&lt;br /&gt;
&lt;br /&gt;
==== B.A.T.M.A.N Layer2 ====&lt;br /&gt;
Pros&lt;br /&gt;
* Works on L2 and is protocol independent (support both IPv4 and IPv6)&lt;br /&gt;
* Can use DHCP for automatic IPv4 addressing&lt;br /&gt;
* Small and effective routing table&lt;br /&gt;
&lt;br /&gt;
Conns&lt;br /&gt;
* No FreeBSD port&lt;br /&gt;
* Not a mature protocol, still in developing state&lt;br /&gt;
* Seems like B.A.T.M.A.N development is more active with the Layer3 version than the Layer2 one&lt;br /&gt;
* Problems with multi-radio nodes: https://lists.open-mesh.net/pipermail/b.a.t.m.a.n/2009-February/002405.html&lt;br /&gt;
&lt;br /&gt;
==== B.A.T.M.A.N Layer3 ====&lt;br /&gt;
&lt;br /&gt;
Pros&lt;br /&gt;
* Small and effective routing table&lt;br /&gt;
* Smaller, less frequent routing information packets flooding the network&lt;br /&gt;
* Cannot have routing loops (according to the design, but some people seem to differ)&lt;br /&gt;
http://www.mail-archive.com/babel-users@lists.alioth.debian.org/msg00148.html&lt;br /&gt;
* Active development&lt;br /&gt;
* Intelligent management of multiple gateways with varying bandwidth characteristics&lt;br /&gt;
&lt;br /&gt;
Conns&lt;br /&gt;
* No IPv6 support&lt;br /&gt;
* No FreeBSD port&lt;br /&gt;
** In progress: http://www.mail-archive.com/b.a.t.m.a.n@open-mesh.net/msg00560.html&lt;br /&gt;
* Not a mature protocol, still in developing state&lt;br /&gt;
&lt;br /&gt;
=== Random thoughts. ===&lt;br /&gt;
* Our current Meraka team only have experience with OLSR, but not with BATMAN (Except for David, but he&#039;s overseas). Maybe we need to setup a test network to get a feeling of the amount of tweaking that is needed to get it to run and how much is done automatically. In the end we want a mesh node that is totally auto configured, including all IPv4 and IPv6 addresses.&lt;br /&gt;
** I (Antoine) am in the process of helping George set up a small B.A.T.M.A.N. mesh for the dashboard development work.&lt;br /&gt;
* A google search for a up-to-date comparison between OLSR and BATMAN did not deliver much. From a quick scan in a couple articles and comments it seems like OLSR is very stable and performs well in mesh networks, but BATMAN seems to be very promising and may be the preferred mesh protocol in future. &lt;br /&gt;
* With another google search I could find a couple of big operational networks based on OLSR, but I could not find any big operational BATMAN networks. If there are any big operational BATMAN networks out there then I would really like to get more information and comments on it.&lt;br /&gt;
** http://wiki.opennet-initiative.de/index.php - mixed OLSR &amp;amp; B.A.T.M.A.N.&lt;br /&gt;
** http://wiki.leipzig.freifunk.net/BATMAN  - mixed OLSR &amp;amp; B.A.T.M.A.N.&lt;br /&gt;
** http://www.open-mesh.net/wiki/BerlinExperience  &lt;br /&gt;
** http://www.open-mesh.net/wiki/Experience &lt;br /&gt;
* Meraka has an operational and stable HPN node that is based on FreeBSD. The current HPN mesh protocol is OLSR and the mesh supports both IPv4 and IPv6. The biggest drawback at the moment is that it does not have an user interface and some vi tweaking is needed.&lt;br /&gt;
* The exhaustion of the remaining pool of unallocated IPv4 addresses is approaching within the next few years. IPv4 will not expire or stop to work, but there will be an migration phase where both IPv4 and IPv6 will be used. Some new services and web sites will only be reachable via IPv6. The default protocol on most operating systems are IPv6 and there is a big drive from Microsoft to push IPv6. We cannot just stick our heads in the ground and ignore this fact like an Ostridge. Our current HPN have full IPv6 support and it will not make a lot of sense move backwards to something that does not support IPv6. If we do feel like BATMAN is a better choice then it will make sense to add IPv6 support to it as well.&lt;br /&gt;
* Is there enough development time and money on the project to add a lot of new and promising features to the HPN, or should we rather concentrate on the parts that are missing in order to get a stable network out there.&lt;br /&gt;
&lt;br /&gt;
==Decision==&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=HPN_design_discussions_page&amp;diff=4615</id>
		<title>HPN design discussions page</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=HPN_design_discussions_page&amp;diff=4615"/>
		<updated>2009-04-16T10:58:37Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== FreeBSD vs Linux ==&lt;br /&gt;
We are currently using Atheros based wifi cards in our HPN&#039;s. The reason for this is that almost all the mini-PCI wifi cards on the market are Atheros based and they are by far the best supported in the open source community. Atheros worked with the open source community (Sam Leffler) and they provided a HAL (hardware abstraction layer) that interfaces between the Atheros wifi card and between the open source OS. At some stage someone release an reverse engineered HAL (called openHAL) based on a very old version from Atheros. By the end of 2008 Atheros decided to open up the source code of their latest HAL for the open source community.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== FreeBSD ===&lt;br /&gt;
&lt;br /&gt;
Pros&lt;br /&gt;
*All field deployments we have so far are on systems running FreeBSD; so we have great knowledge on its performance.&lt;br /&gt;
*We have far more than enough experience; hence turn-around for changes/additions are way too short, compared to Linux.&lt;br /&gt;
*Sam Leffler that wrote most of the Atheros HAL source code is also one of the big FreeBSD developers. &lt;br /&gt;
*All the Atheros driver code (from HAL) is now fully integrated into FreeBSD and is part of the OS.&lt;br /&gt;
*Works great for wireless modes, like ad-hoc, compared to Linux.&lt;br /&gt;
*All tests done on arm/avila boards involved only FreeBSD and none on Linux.&lt;br /&gt;
Cons&lt;br /&gt;
*With regard to the HPN, none.&lt;br /&gt;
*Under-appreciated&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Pros&lt;br /&gt;
*Runs on more (+cheaper) hardware platforms.&lt;br /&gt;
&lt;br /&gt;
Cons&lt;br /&gt;
*There is three different trees for the Atheros diver. &lt;br /&gt;
 1) AR5K - based on a very old, the reversed engineered HAL&lt;br /&gt;
 2) OpenWRT version - I think it is based on the Madwifi driver, but not sure&lt;br /&gt;
 3) Madwifi - This one also have different trees. One base on the old closed HAL and one based on the new open source HAL that Atheros released. I&#039;m not sure it they are also busy incorporating it into the OS.&lt;br /&gt;
*I&#039;ve heard people complaining about the stability of Atheros adhoc mode under Linux.&lt;br /&gt;
&lt;br /&gt;
== OLSR vs B.A.T.M.A.N ==&lt;br /&gt;
&lt;br /&gt;
This discussion is around what mesh routing protocol to use for our High Performance Nodes. Before we look into the protocols we need to understand the environment where the HPNs are going to be used in, who&#039;s going to install and maintain the network and what other system requirements will have an influence on the protocol selection.&lt;br /&gt;
&lt;br /&gt;
From the project contract it is clear that the target is not a pilot/research network, but a real commercial network that must provide connectivity to several schools and government departments, as well as for the community. The installation and maintenance will be the responsibility of external (not Meraka/CSIR) partners. This means that eventually it will not be a research network and whatever protocol we select needs to be very stable and well tested. Another requirement is that the network should be so easy do install (auto configure) and maintain and that it can be done by someone in the community. (It must not need an Engineer to design/configure/tweak the network before it is usable).&lt;br /&gt;
&lt;br /&gt;
The biggest requirement of any network is that it should be stable. After that you get all the other features like speed, ease of use, supported features etc. In a development network one can tolerate some degree of instability while working on new functionalities, but on a network that will be used by other parties should be rock solid and stable. The biggest factor about introducing any new protocols in a network, is that one needs a certain amount of time (years) to test, fix bugs and make sure that everything is stable and usable.&lt;br /&gt;
&lt;br /&gt;
=== OLSR ===&lt;br /&gt;
&lt;br /&gt;
Pros&lt;br /&gt;
* Proven and stable, lots of big networks using it&lt;br /&gt;
* Scales well&lt;br /&gt;
* Support both IPv4 and IPv6&lt;br /&gt;
* Support for Linux, FreeBSD, MacOS&lt;br /&gt;
* Active development&lt;br /&gt;
&lt;br /&gt;
Conns&lt;br /&gt;
* Routing information packets can become big&lt;br /&gt;
* Lots of network overheads to food routing information&lt;br /&gt;
* Can cause high CPU loads on small CPU&#039;s in low cost HW platforms&lt;br /&gt;
* Has difficulty routing in the presence of multiple gateways on the mesh&lt;br /&gt;
&lt;br /&gt;
=== B.A.T.M.A.N ===&lt;br /&gt;
&lt;br /&gt;
B.A.T.M.A.N is a fairly new protocol with many different versions, flavors (L2, L3) and derivatives (R.O.B.I.N, Mikrotik MME).&lt;br /&gt;
https://www.open-mesh.net/wiki/BranchesExplained&lt;br /&gt;
&lt;br /&gt;
==== B.A.T.M.A.N Layer2 ====&lt;br /&gt;
Pros&lt;br /&gt;
* Works on L2 and is protocol independent (support both IPv4 and IPv6)&lt;br /&gt;
* Can use DHCP for automatic IPv4 addressing&lt;br /&gt;
* Small and effective routing table&lt;br /&gt;
&lt;br /&gt;
Conns&lt;br /&gt;
* No FreeBSD port&lt;br /&gt;
* Not a mature protocol, still in developing state&lt;br /&gt;
* Seems like B.A.T.M.A.N development is more active with the Layer3 version than the Layer2 one&lt;br /&gt;
* Problems with multi-radio nodes: https://lists.open-mesh.net/pipermail/b.a.t.m.a.n/2009-February/002405.html&lt;br /&gt;
&lt;br /&gt;
==== B.A.T.M.A.N Layer3 ====&lt;br /&gt;
&lt;br /&gt;
Pros&lt;br /&gt;
* Small and effective routing table&lt;br /&gt;
* Smaller, less frequent routing information packets flooding the network&lt;br /&gt;
* Cannot have routing loops (according to the design, but some people seem to differ)&lt;br /&gt;
http://www.mail-archive.com/babel-users@lists.alioth.debian.org/msg00148.html&lt;br /&gt;
* Active development&lt;br /&gt;
* Intelligent management of multiple gateways with varying bandwidth characteristics&lt;br /&gt;
&lt;br /&gt;
Conns&lt;br /&gt;
* No IPv6 support&lt;br /&gt;
* No FreeBSD port&lt;br /&gt;
** In progress: http://www.mail-archive.com/b.a.t.m.a.n@open-mesh.net/msg00560.html&lt;br /&gt;
* Not a mature protocol, still in developing state&lt;br /&gt;
&lt;br /&gt;
=== Random thoughts. ===&lt;br /&gt;
* Our current Meraka team only have experience with OLSR, but not with BATMAN (Except for David, but he&#039;s overseas). Maybe we need to setup a test network to get a feeling of the amount of tweaking that is needed to get it to run and how much is done automatically. In the end we want a mesh node that is totally auto configured, including all IPv4 and IPv6 addresses.&lt;br /&gt;
** I (Antoine) am in the process of helping George set up a small B.A.T.M.A.N. mesh for the dashboard development work.&lt;br /&gt;
* A google search for a up-to-date comparison between OLSR and BATMAN did not deliver much. From a quick scan in a couple articles and comments it seems like OLSR is very stable and performs well in mesh networks, but BATMAN seems to be very promising and may be the preferred mesh protocol in future. &lt;br /&gt;
* With another google search I could find a couple of big operational networks based on OLSR, but I could not find any big operational BATMAN networks. If there are any big operational BATMAN networks out there then I would really like to get more information and comments on it.&lt;br /&gt;
** http://wiki.opennet-initiative.de/index.php - mixed OLSR &amp;amp; B.A.T.M.A.N.&lt;br /&gt;
** http://wiki.leipzig.freifunk.net/BATMAN  - mixed OLSR &amp;amp; B.A.T.M.A.N.&lt;br /&gt;
** http://www.open-mesh.net/wiki/BerlinExperience  &lt;br /&gt;
** http://www.open-mesh.net/wiki/Experience &lt;br /&gt;
* Meraka has an operational and stable HPN node that is based on FreeBSD. The current HPN mesh protocol is OLSR and the mesh supports both IPv4 and IPv6. The biggest drawback at the moment is that it does not have an user interface and some vi tweaking is needed.&lt;br /&gt;
* The exhaustion of the remaining pool of unallocated IPv4 addresses is approaching within the next few years. IPv4 will not expire or stop to work, but there will be an migration phase where both IPv4 and IPv6 will be used. Some new services and web sites will only be reachable via IPv6. The default protocol on most operating systems are IPv6 and there is a big drive from Microsoft to push IPv6. We cannot just stick our heads in the ground and ignore this fact like an Ostridge. Our current HPN have full IPv6 support and it will not make a lot of sense move backwards to something that does not support IPv6. If we do feel like BATMAN is a better choice then it will make sense to add IPv6 support to it as well.&lt;br /&gt;
* Is there enough development time and money on the project to add a lot of new and promising features to the HPN, or should we rather concentrate on the parts that are missing in order to get a stable network out there.&lt;br /&gt;
&lt;br /&gt;
==Decision==&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=HPN_design_discussions_page&amp;diff=4613</id>
		<title>HPN design discussions page</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=HPN_design_discussions_page&amp;diff=4613"/>
		<updated>2009-04-16T09:01:59Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* FreeBSD vs Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== FreeBSD vs Linux ==&lt;br /&gt;
We are currently using Atheros based wifi cards in our HPN&#039;s. The reason for this is that almost all the mini-PCI wifi cards on the market are Atheros based and they are by far the best supported in the open source community. Atheros worked with the open source community (Sam Leffler) and they provided a HAL (hardware abstraction layer) that interfaces between the Atheros wifi card and between the open source OS. At some stage someone release an reverse engineered HAL (called openHAL) based on a very old version from Atheros. By the end of 2008 Atheros decided to open up the source code of their latest HAL for the open source community.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== FreeBSD ===&lt;br /&gt;
&lt;br /&gt;
Pros&lt;br /&gt;
*All field deployments we have so far are on systems running FreeBSD; so we have great knowledge on its performance.&lt;br /&gt;
*We have far more than enough experience; hence turn-around for changes/additions are way too short, compared to Linux.&lt;br /&gt;
*Sam Leffler that wrote most of the Atheros HAL source code is also one of the big FreeBSD developers. &lt;br /&gt;
*All the Atheros driver code (from HAL) is now fully integrated into FreeBSD and is part of the OS.&lt;br /&gt;
*Works great for wireless modes, like ad-hoc, compared to Linux.&lt;br /&gt;
*All tests done on arm/avila boards involved only FreeBSD and none on Linux.&lt;br /&gt;
Cons&lt;br /&gt;
*With regard to the HPN, none.&lt;br /&gt;
*Under-appreciated&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Pros&lt;br /&gt;
*Runs on more (+cheaper) hardware platforms.&lt;br /&gt;
&lt;br /&gt;
Cons&lt;br /&gt;
*There are three main &lt;br /&gt;
*There is three different trees for the Atheros diver. &lt;br /&gt;
 1) AR5K - based on a very old, the reversed engineered HAL&lt;br /&gt;
 2) OpenWRT version - I think it is based on the Madwifi driver, but not sure&lt;br /&gt;
 3) Madwifi - This one also have different trees. One base on the old closed HAL and one based on the new open source HAL that Atheros released. I&#039;m not sure it they are also busy incorporating it into the OS.&lt;br /&gt;
&lt;br /&gt;
== OLSR vs B.A.T.M.A.N ==&lt;br /&gt;
&lt;br /&gt;
This discussion is around what mesh routing protocol to use for our High Performance Nodes. Before we look into the protocols we need to understand the environment where the HPNs are going to be used in, who&#039;s going to install and maintain the network and what other system requirements will have an influence on the protocol selection.&lt;br /&gt;
&lt;br /&gt;
From the project contract it is clear that the target is not a pilot/research network, but a real commercial network that must provide connectivity to several schools and government departments, as well as for the community. The installation and maintenance will be the responsibility of external (not Meraka/CSIR) partners. This means that eventually it will not be a research network and whatever protocol we select needs to be very stable and well tested. Another requirement is that the network should be so easy do install (auto configure) and maintain and that it can be done by someone in the community. (It must not need an Engineer to design/configure/tweak the network before it is usable).&lt;br /&gt;
&lt;br /&gt;
The biggest requirement of any network is that it should be stable. After that you get all the other features like speed, ease of use, supported features etc. In a development network one can tolerate some degree of instability while working on new functionalities, but on a network that will be used by other parties should be rock solid and stable. The biggest factor about introducing any new protocols in a network, is that one needs a certain amount of time (years) to test, fix bugs and make sure that everything is stable and usable.&lt;br /&gt;
&lt;br /&gt;
=== OLSR ===&lt;br /&gt;
&lt;br /&gt;
Pros&lt;br /&gt;
* Proven and stable, lots of big networks using it&lt;br /&gt;
* Scales well&lt;br /&gt;
* Support both IPv4 and IPv6&lt;br /&gt;
* Support for Linux, FreeBSD, MacOS&lt;br /&gt;
* Active development&lt;br /&gt;
&lt;br /&gt;
Conns&lt;br /&gt;
* Routing information packets can become big&lt;br /&gt;
* Lots of network overheads to food routing information&lt;br /&gt;
* Can cause high CPU loads on small CPU&#039;s in low cost HW platforms&lt;br /&gt;
* Has difficulty routing in the presence of multiple gateways on the mesh&lt;br /&gt;
&lt;br /&gt;
=== B.A.T.M.A.N ===&lt;br /&gt;
&lt;br /&gt;
B.A.T.M.A.N is a fairly new protocol with many different versions, flavors (L2, L3) and derivatives (R.O.B.I.N, Mikrotik MME).&lt;br /&gt;
https://www.open-mesh.net/wiki/BranchesExplained&lt;br /&gt;
&lt;br /&gt;
==== B.A.T.M.A.N Layer2 ====&lt;br /&gt;
Pros&lt;br /&gt;
* Works on L2 and is protocol independent (support both IPv4 and IPv6)&lt;br /&gt;
* Can use DHCP for automatic IPv4 addressing&lt;br /&gt;
* Small and effective routing table&lt;br /&gt;
&lt;br /&gt;
Conns&lt;br /&gt;
* No FreeBSD port&lt;br /&gt;
* Not a mature protocol, still in developing state&lt;br /&gt;
* Seems like B.A.T.M.A.N development is more active with the Layer3 version than the Layer2 one&lt;br /&gt;
* Problems with multi-radio nodes: https://lists.open-mesh.net/pipermail/b.a.t.m.a.n/2009-February/002405.html&lt;br /&gt;
&lt;br /&gt;
==== B.A.T.M.A.N Layer3 ====&lt;br /&gt;
&lt;br /&gt;
Pros&lt;br /&gt;
* Small and effective routing table&lt;br /&gt;
* Smaller, less frequent routing information packets flooding the network&lt;br /&gt;
* Cannot have routing loops (according to the design, but some people seem to differ)&lt;br /&gt;
http://www.mail-archive.com/babel-users@lists.alioth.debian.org/msg00148.html&lt;br /&gt;
* Active development&lt;br /&gt;
* Intelligent management of multiple gateways with varying bandwidth characteristics&lt;br /&gt;
&lt;br /&gt;
Conns&lt;br /&gt;
* No IPv6 support&lt;br /&gt;
* No FreeBSD port&lt;br /&gt;
** In progress: http://www.mail-archive.com/b.a.t.m.a.n@open-mesh.net/msg00560.html&lt;br /&gt;
* Not a mature protocol, still in developing state&lt;br /&gt;
&lt;br /&gt;
=== Random thoughts. ===&lt;br /&gt;
* Our current Meraka team only have experience with OLSR, but not with BATMAN (Except for David, but he&#039;s overseas). Maybe we need to setup a test network to get a feeling of the amount of tweaking that is needed to get it to run and how much is done automatically. In the end we want a mesh node that is totally auto configured, including all IPv4 and IPv6 addresses.&lt;br /&gt;
** I (Antoine) am in the process of helping George set up a small B.A.T.M.A.N. mesh for the dashboard development work.&lt;br /&gt;
* A google search for a up-to-date comparison between OLSR and BATMAN did not deliver much. From a quick scan in a couple articles and comments it seems like OLSR is very stable and performs well in mesh networks, but BATMAN seems to be very promising and may be the preferred mesh protocol in future. &lt;br /&gt;
* With another google search I could find a couple of big operational networks based on OLSR, but I could not find any big operational BATMAN networks. If there are any big operational BATMAN networks out there then I would really like to get more information and comments on it.&lt;br /&gt;
** http://wiki.opennet-initiative.de/index.php - mixed OLSR &amp;amp; B.A.T.M.A.N.&lt;br /&gt;
** http://wiki.leipzig.freifunk.net/BATMAN  - mixed OLSR &amp;amp; B.A.T.M.A.N.&lt;br /&gt;
** http://www.open-mesh.net/wiki/BerlinExperience  &lt;br /&gt;
** http://www.open-mesh.net/wiki/Experience &lt;br /&gt;
* Meraka has an operational and stable HPN node that is based on FreeBSD. The current HPN mesh protocol is OLSR and the mesh supports both IPv4 and IPv6. The biggest drawback at the moment is that it does not have an user interface and some vi tweaking is needed.&lt;br /&gt;
* The exhaustion of the remaining pool of unallocated IPv4 addresses is approaching within the next few years. IPv4 will not expire or stop to work, but there will be an migration phase where both IPv4 and IPv6 will be used. Some new services and web sites will only be reachable via IPv6. The default protocol on most operating systems are IPv6 and there is a big drive from Microsoft to push IPv6. We cannot just stick our heads in the ground and ignore this fact like an Ostridge. Our current HPN have full IPv6 support and it will not make a lot of sense move backwards to something that does not support IPv6. If we do feel like BATMAN is a better choice then it will make sense to add IPv6 support to it as well.&lt;br /&gt;
* Is there enough development time and money on the project to add a lot of new and promising features to the HPN, or should we rather concentrate on the parts that are missing in order to get a stable network out there.&lt;br /&gt;
&lt;br /&gt;
==Decision==&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4601</id>
		<title>High performance node page</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4601"/>
		<updated>2009-04-07T10:56:53Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Typical Outdoor Range at 5.8Ghz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Development Team Research Pages]][[Category: Johann&#039;s Research Pages]][[Category: High Performance Node]]&lt;br /&gt;
&lt;br /&gt;
== What is a HPN (high performance node) ? ==&lt;br /&gt;
&lt;br /&gt;
The HPN is a multi-radio (3x radios), high performance, wireless (802.11) router. It has three antennas, one 5.8Ghz directional panel antenna as well as two omni&#039;s (2.4Ghz + 5.8Ghz). At the bottom of the router there is a weather proof UTP connector that is used for both Power-Over-Ethernet (PoE) and Ethernet connectivity to the router. A special mounting bracket at the back of the router allows it to be attached to an aluminum pole that is usually mounted to the side of a building or some structure.&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN.png]]&lt;br /&gt;
&lt;br /&gt;
== How to build a mesh with HPN&#039;s ==&lt;br /&gt;
The idea is to build a mesh network with these routers by aligning each directional antennas to point to a neighboring omni or another directional antenna. The wireless cards in a router operates on different channels (frequencies). To make it more user friendly each channel (frequencies) is tied to a color. This means that a red panel antenna must be aligned to a red omni (or another red panel) and a green panel must be aligned to a green omni (or green panel). The blue channel (2.4Ghz) is used to create a wifi hostspot for clients who would like to connect to the mesh network via wifi.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mesh-Network.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every mesh network usually have one GateWay that connects to the Internet or to some other network. Any one of the mesh nodes can be configured to become a GateWay for the mesh. When a node becomes a GateWay then the channels (frequencies) of the antennas are fixed  to the following: 5.8Ghz directional panel = RED, 5.8Ghz omni = GREEN and the 2.4Ghz omni = BLUE. The GateWay node will also become the DNS server for the mesh and all the nodes inside the mesh will register their HostNames with the DNS server. Another function of the GateWay node is to act as a time server for the mesh network and all the nodes inside the mesh will synchronize their time with the GateWay node. &lt;br /&gt;
&lt;br /&gt;
The best approach to build a mesh network is to start with the installation of the GateWay node. Next you install the node(s) that aligns to the GateWay node and then grow the mesh from there. Fist perform a visual alignment of the panel antenna on the node before the power is switched on. When a normal node starts up for the first time, then it will hunt for a mesh signal and it will lock it&#039;s channels (frequencies) once connectivity is established. It will first hunt for connectivity on both the red and green channels on the directional panel antenna for X seconds. If no signal is found, then the hunt will continue on the 5.8Ghz omni directional antenna for X seconds. This sequence will repeat itself until a signal is found, or until the channels are manually locked via the web interface on the node itself. &lt;br /&gt;
&lt;br /&gt;
Every node has a GREEN and a RED LED that is visible from underneath the node (should be visible when one stands under the node that is mounted on a pole). These LEDs are there to give some indication of connectivity and they will only turn on if connectivity can be established on either the red or green channel. Note that the LED does not show the signal quality or to what node it is connected to, it only shows that there is connectivity to another HPN node and on what channel (red or green). Signal quality and node connectivity information is only available via the web interface, but in most cases a visual alignment combined with a link indicator will be sufficient enough to get a mesh node up and running.&lt;br /&gt;
&lt;br /&gt;
== How can a client connect to the mesh ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Hpn-switch-pc.png]]&lt;br /&gt;
&lt;br /&gt;
Client devices can connect to any of the nodes via Ethernet or via wifi (blue channel = hostspot). The client devices should be configured to make use of DHCP so that all networking configurations can be done automatically (The node will provide all the networking details via DHCP). It is also recommended that the IPv6 protocol stack should be switch on if it is available. IPv6 should already be enabled on Windows Vista as well as most Unix systems.&lt;br /&gt;
&lt;br /&gt;
== How does the mesh work ? ==&lt;br /&gt;
&lt;br /&gt;
Almost everything in the network will be configured automatically, except for the selection of the gateway node and the channel (red or green) of a wireless link. The mesh supports both IPv6 and IPv4 traffic from any end-point (a place where a mesh client connects) to any other end-point in the mesh, while the backbone uses IPv6 only. A routing protocol called OLSR (Optimized Link State Routing) is used to exchange routing information between all the nodes inside the mesh and to select the best path for data traffic between end-points in the mesh.&lt;br /&gt;
&lt;br /&gt;
[[Image:OLSR.png]]&lt;br /&gt;
&lt;br /&gt;
Lets take an example (see diagram) where HP want to send data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv6 ====&lt;br /&gt;
HP will address the data to the IPv6 address of Dell and send it to node C. Node C will look in it&#039;s routing table and see that there are two routes to Dell, one route via node B-A-D-E and the other route via D-E. It will then select the best route and send it to the next node, in our case node D. Node D will look in it&#039;s routing table and see that the only route to Dell is via node E. Node E will look at it&#039;s routing table and see that Dell is directly connected and it will forward the data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv4 ====&lt;br /&gt;
This one is a bit more complicated. IPv4 is only used on the outside of the network (where the mesh clients connect to it) and then the IPv4 traffic is tunneled over the IPv6 backbone of the mesh to any another end point in the mesh. The mesh will automatically create a one-to-many IPv4 tunnel over the IPv6 network (4over6 tunneling protocol). This means that it looks like a network with an IPv4 tunnel from every IPv4 subnet to every other IPv4 subnet in the mesh. From a client&#039;s perspective it looks like a normal IPv4 routed network. From the backbone&#039;s perspective it looks like a IPv6 only network and all the OLSR routing information is IPv6 only. &lt;br /&gt;
&lt;br /&gt;
So how does the network know how to forward IPv4 packets to the correct destination ? It makes use of IPv4-mapped-IPv6 addresses (see [http://tools.ietf.org/html/rfc4291#section-2.5.5 RFC4291] and [http://tools.ietf.org/html/rfc4038 RFC4038]). Every node will map an IPv4 addresses into a IPv6 address before data goes to the backbone and the IPv4-Mapped-IPv6 addresses are converted back to a plain IPv4 address when it comes out of the backbone. OLSR will advertise these IPv4-Mapped-IPv6 address subnets on the backbone so that all the nodes will learn these subnets and they will calculate the best route to these subnets.&lt;br /&gt;
&lt;br /&gt;
Lets take example again, using IPv4. HP will address the data to the IPv4 address of Dell and send it to node C. Node C will change the IPv4 packet to an IPv6 packet with an IPv4-mapped-IPv6 addresses. From there it will follow the same route as the IPv6 example above. Node E will take the original IPv4 packet out of the IPv4-mapped-IPv6 packet and it will send the original IPv4 packet to Dell.&lt;br /&gt;
&lt;br /&gt;
See http://wirelessafrica.meraka.org.za/wiki/index.php/John%27s_research#4over6_Automatic_tunnels for more detail of the 4over6 tunneling protocol.&lt;br /&gt;
&lt;br /&gt;
=== Why is the mesh using IPv6 ? ===&lt;br /&gt;
&lt;br /&gt;
==== Reason one ====&lt;br /&gt;
It is predicted that unused IPv4 address space will be depleted within the next two years. Operating systems like Vista and most Unix systems defaults to IPv6 by default and most applications are IPv6 ready. With this in mind it makes sense that any new networking products should provide both IPv4 and IPv6 support.&lt;br /&gt;
&lt;br /&gt;
==== Reason two ====&lt;br /&gt;
In a single radio mesh network there is just one RF channel and everybody makes use of the same IP subnet. One limitation of a single radio mesh is that each mesh radio needs to handle both incoming and outgoing traffic. This causes the throughput to be halved because a radio cannot transmit and receive simultaneously. Another problem is that if one radio is transmitting then all its neighbors must all be in listening mode. These problems can cause a single radio mesh to very quickly run out of steam.&lt;br /&gt;
&lt;br /&gt;
Multi-radio mesh technology solves this problem by configuring every radio inside a router to operate on a different frequency and on a different IP subnet. In the HPN two radios are dedicated for backbone traffic and the third is used to create a client hotspot. 802.11a is generally used for backbone traffic, and 802.11b/g for client coverage. &lt;br /&gt;
&lt;br /&gt;
In a multi-radio mesh network it is very difficult to use the same IPv4 subnet on all the backbone wireless interfaces inside a mesh. The OLSR routing protocol uses broadcast packets to flood OLSR routing information to all of it&#039;s neighbors. This works very well with a single radio mesh, but not with a multi-radio mesh. Almost all TCP/IP (IPv4) stacks implementations can only send out broadcast packets on one interface at a time, but not on multiple interfaces on the same IPv4 subnet. This means that every interface needs to operate on a different IPv4 subnet, with the effect that some OLSR links may be physically possible, but it cannot be used for data because the IPv4 subnets are different. A multi-radio IPv4 OLSR network is possible, but it usually needs a lot of planning and configuration.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv4-Network.png]]&lt;br /&gt;
&lt;br /&gt;
The TCP/IP stack of IPv6 does not make use of Broadcast packets and OLSR routing information is flooded to it&#039;s neighbors via multicast packets. These multicast packets will automatically be duplicated by the TCP/IP stack and send out via multiple IPv6 interfaces on the same IPv6 subnet. This means that the mesh can use the same IPv6 subnet, all over the mesh backbone, without any problems. With a multi-radio IPv6 OLSR mesh you don&#039;t need any IPv6 configuration on the backbone as all the nodes use the same IPv6 subnet.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv6-Network.png]]&lt;br /&gt;
&lt;br /&gt;
== Behavior of a normal node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
The following describes how a normal node will behave inside a mesh and what service it will provide:&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up for the fist time, then it will go into a hunting mode and it will search for other nodes in the mesh. In hunting mode it will first configure the patch antenna on the GREEN frequency. It will perform a link local IPv6 ping on that interface for about X seconds to determine if any IPv6 connectivity can be found on that antenna/channel. If no connectivity is found after X seconds, then it will hunt further using RED on the patch, then GREEN on the omni and then RED on the omni. If no connectivity can be found, then it will start the hunting process from the beginning, or until it is manually locked via the WEB terface. If connectivity can be established, then it will enable the green/red link LED on the bottom of the node to show connectivity (use the WEB interface for more information on to which node connectivity has been established to). If connectivity is lost then the LED will be off again. After stable connectivity for about X consecutive pings, the node will lock the antenna/channels util someone changes it manually via the WEB interface. Once the antennas/channels are locked then it will also change the sensitivity of the link LED and LED updates will be less frequently. The LED sensitivity can be manually changed via the WEB interface by selecting the &amp;quot;alignment&amp;quot; button. The alignment feature will give signal strength information on the WEB interface. See hunt-flow-diagram below.&lt;br /&gt;
&lt;br /&gt;
[[Image:Hunt-flow-diag.png]]&lt;br /&gt;
   &lt;br /&gt;
* When a new node boots up then an unique IPv6 address ((inside this mesh. See IP addressing section) will be configured on all the Ethernet and wireless interfaces. An unique (inside this mesh) IPv4 address is calculated and configured on the Ethernet interface and on the 2.4Ghz omni interface. The node will use the MAC address of the adapter to calculate a unique IPv4 and IPv6 subnet for that interface. These automatic addresses can be overrided via the WEB interface (E.g. if a globally routeable IPv6 address is required for a website inside the mesh and it should be visible from the Internet). Wireless interfaces are placed into adhoc mode and the channel, ssid and bssid are also configured.&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up then the OLSR daemon is started and it will listen en send OLSR topology packets to all of it&#039;s neighboring nodes. OLSR runs on all the wireless interfaces, but not on the Ethernet interface. All the IPv4 subnets are converted to 4in6 IPv6 addresses and these IPv6 subnets are placed into the HNA section of olsrd.conf, together with the IPv6 subnets that are configured on the Ethernet interface and on the 2.4Ghz omni interface. These HNA subnets are then distributed, via OLSR, to all the other nodes inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The 4over6 tunneling daemon take care of all IPv4 comms and dirtributing of routing information inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The node will start ntpd daemon on provide NTP time services on all it&#039;s IPv4 and IPv6 addresses. NTP will also synchronize it&#039;s local time with the GW-node on a regular basis.&lt;br /&gt;
&lt;br /&gt;
* The node will register it&#039;s own hostname in DNS on the GW-node. It will start dnsmasq daemon and it will also provide DNS services on all it&#039;s IPv4 and IPv6 addresses. Dnsmasq will forward all DNS queries to the DNS server running on the GW-node.&lt;br /&gt;
&lt;br /&gt;
* Dnsmasq is used to provide IPv4 DHCP services and DNS services on both the Ethernet interface and on the 2.4Ghz omni (hostspot) interface.&lt;br /&gt;
&lt;br /&gt;
* rtadvd will run on both the Ethernet interface and on the 2.4Ghz omni interface and it is used to advertise IPv6 prefixes to locally connected IPv6 client devices.&lt;br /&gt;
&lt;br /&gt;
* sshd allows remote ssh login&#039;s from anywhere in the mesh network.&lt;br /&gt;
&lt;br /&gt;
* watchdogd toggles the watchdog during normal operations. Should the system hang for some reason, then the watchdog will restart the HPN node.&lt;br /&gt;
&lt;br /&gt;
* mini_httpd is used for the WEB gui running on the HPN node.&lt;br /&gt;
&lt;br /&gt;
== Behavior of the GateWay node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
Any standard mesh node can become a GateWay node by selecting the &amp;quot;GateWay&amp;quot; button under &amp;quot;Additional features&amp;quot; on the WEB interface. The GateWay node is the place where the mesh will connect to some outside network and it will be the default route for the mesh. When a normal node becomes a GateWay node, then it does not disable any normal node features, but it just adds some additional features. The following are the additional features that a GateWay node will have:&lt;br /&gt;
&lt;br /&gt;
* The GW-node will not go into a hunting mode and it will lock it&#039;s channels with GREEN on the omni and RED on the directional panel. The default channels can be swapped via the WEB interface.&lt;br /&gt;
&lt;br /&gt;
* The GW-node is the default route for the mesh and it will advertise a default route via OLSR to the rest of the mesh.&lt;br /&gt;
&lt;br /&gt;
* The GW-node connects to the outside networks via Ethernet. It will perform a DHCP request on this interface in order to get an automatic IP address and external DNS server configurations from the external network. These setting can be overided via the WEB interface, under &amp;quot;Additional features&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes the DNS server for the mesh and it will configure and start the &#039;named&#039; services on IPv6, as well as on a well known IPv6 address of fec0:0:0:ffff::1. It will allow any node inside a mesh to submit their hostname into DNS and it will provide DNS services to any node or other device inside the mesh on IPv6 only. The GateWay node will also forward external DNS requests to upstream DNS servers if they are available. Upstream DNS servers are usually configured via DHCP but these setting can also be overided under &amp;quot;Additional features&amp;quot; on the WEB interface. DNS services are still available via &#039;dnsmasq&#039;, on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a time server for the mesh. It will synchronize it&#039;s time to an external time server if it&#039;s configured and available, otherwise it will use it&#039;s own internal RTC to synchronize it&#039;s time to. This time will be available to the rest of the mesh on a well known IPv6 address of fec0:0:0:ffff::1 and all the nodes in a mesh will use this time to synchronize their own time servers to. The GW-node will still provide NTP time services on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a firmware update server for the mesh. It will start ftpd services on IPv6, on a well known IPv6 address of fec0:0:0:ffff::1. It will took for new firmware on the Internet. If new firmware is available, then it will download the software and make it available to the other nodes inside the mesh via ftp.&lt;br /&gt;
&lt;br /&gt;
== IPv4 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
IPv4 addresses are not used in the backbone, but only on the edge of the network. This means that every node will have two IPv4 subnets configured, one on the Ethernet adapter (npe0) and the other on the 2.4Ghz omni (ath2) that is used for a wifi hotspot. The High performance node will always use the first IPv4 address on a configured subnet. E.g 10.234.18.1/24&lt;br /&gt;
&lt;br /&gt;
The HPN currently makes use of an automatic IPv4 addressing scheme where the IPv4 subnet is derived from the two least significant bytes of the MAC address of that particular interface. The first bye of the network is always 10 because we are making use of the 10net inside the mesh. The next two byes comes from the last two byes of the Mac address and it will become the IPv4 subnet for that adapter. The adapter itself will be 10.x.x.1 and it will become the default gateway for that subnet. DNSmasq will hand out DHCP addresses form 10.x.x.100 - 10.x.x.199 on the calculated subnet.&lt;br /&gt;
&lt;br /&gt;
 Mac = 00:d0:12:07:cb:73&lt;br /&gt;
 cb.73 (hex) = 203.115 (decimal)&lt;br /&gt;
 IP subnet  = 10.203.115 with /24 subnet mask&lt;br /&gt;
 IP address = 10.203.115.1&lt;br /&gt;
 DHCP = 10.203.115.100-10.203.115.199&lt;br /&gt;
&lt;br /&gt;
This addressing scheme will work 99% of the time, but it is not failsafe. Subnet clashes may occur due to the MAC address numbering schemes used by different vendors. MAC addresses usually have a vendor portion (first part of address) and a product/sequent number portion (last part). The last part is the part that is used to generate an IPv4 address. The last two bytes will most probably, at some stage, be that same for two different cards from two different vendors and there may be a very small chance for both of these cards end up in the same mesh network. In this case the automatic address can be overridden manually in rc.conf.local. At this stage there is no build in detection system that will handle Mac address clashes.&lt;br /&gt;
&lt;br /&gt;
Other addressing schemes to consider:&lt;br /&gt;
* Manage and assign all IPv4 addresses centrally. Program addresses into the HPN&#039;s during the manufacturing process. This will sort out all IPv4 address clashes. Issues - Do you assign a IPv4 address block per community or just sequential per HPN node?&lt;br /&gt;
* Manage a block of IPv4 addresses for each community somewhere on the local mesh. HPN nodes can then request an IPv4 addresses from this repository and use it. Issues - what happens if server is down or during a power failure. Will you get a new IPv4 address every time, simular to what you get with ADSL. This will mean that all the the PC&#039;s and devices that received DHCP addresses from DNSmasq will have to change as well. &lt;br /&gt;
&lt;br /&gt;
Issues that may influence the selection of an addressing scheme:&lt;br /&gt;
* Should there be IPv4 connectivity between different mesh networks ?&lt;br /&gt;
* Should there be IPv4 connectivity between a network inside a mesh and some other place in the Internet ?&lt;br /&gt;
* Should someone upstream device be able to initiate a connection into a mesh network (E.g. web server in mesh). ?&lt;br /&gt;
* Should we make use of legal (routeable) IPv4 address space, or should we stick to the 10net.&lt;br /&gt;
* Should the network be able to build and exchange IPv4 routing information with other networks.&lt;br /&gt;
* Routing information can be simplified if sequential IPv4 addresses are managed centrally and allocated per mesh&lt;br /&gt;
* Should the addressing scheme survive a power cycle or load shedding inside a community&lt;br /&gt;
* Is the WISP going to do NAT ?&lt;br /&gt;
&lt;br /&gt;
== IPv6 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
All the HPN nodes supports end-to-end IPv6 communications over the mesh. IPv6 only needs a network prefix (IPv6 subnet) for every adapter and the protocol stack will work out the IPv6 address for each interface. &lt;br /&gt;
&lt;br /&gt;
Our mesh is making use of a private Unique Local Addresses (ULAs) space, described in [http://www.rfc-editor.org/rfc/rfc4193.txt RFC4193]. This address space in similar to the 10net in IPv4, but with the difference that each ULA is globally unique. This means that we can calculate our own network prefix that we use in a mesh. This leaves the option to use the same prefix for all the different mesh networks, or we can use an unique prefix for every mesh. A unique prefix for every mesh may have an routing advantage if we need to connect different mesh networks together in future, but it also means that HPN&#039;s should be pre-configured with a prefix that is tied to a specific community and the prefix allocations should be managed centrally.&lt;br /&gt;
&lt;br /&gt;
Note that private Unique Local IPv6 addresses are not globally routable, but only inside our mesh. If we need globally routable IPv6 addresses then we need to apply for Provider Independent IPv6 address space from Afrinic. These addresses is uosually someting that is given to some network provider (owner of the network) and it will have a yearly fee attached to it. Issues - it is not always clear who the owner of a communit mesh is.&lt;br /&gt;
&lt;br /&gt;
The best sollution may be to use a combination of both addressing schemes. Use ULA addresses all over the mesh and only use leagal IPv6 addresses where devices needs to be availble on the Internet.&lt;br /&gt;
&lt;br /&gt;
== WEB interface ==&lt;br /&gt;
At the moment there is no WEB GUI for the HPN. This is an suggestion of how the GUI should look like. The idea is to keep it simple as possible with as little as possible that can be changed.&lt;br /&gt;
&lt;br /&gt;
=== WEB Gui main page ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-hunt-html.png|border|300px]][[Image:HPN-green-html.png|border|300px]][[Image:HPN-red-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
The default setting for a HPN is to come up in the hunting mode. After a successful hunt, the HPN will lock to either a red or green node and it will keep the setting, even during power failures. The menu will show the current state of a HPN, but it will also allow you to override the current mode by selecting red, green or hunting manually. Changes are only allowed after a valid login.&lt;br /&gt;
&lt;br /&gt;
The bar graph will give some indication of signal strength to other nodes on both the red and green channel. Note that there can be a link to more than one node on a given channel (red or green). The indicator on the main page will only show the signal to the first node that it links with. A more detailed view is available on the align page under the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
The last thing that can be changed from the main menu is the name of the HPN. This name will also be registered into the mesh DNS. All changes will only take effect after selecting the SUBMIT button. Additional features can be reached via the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
=== More features ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-features-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
==== Configure / Align / Stats ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-configure-html.png|border|300px]][[Image:HPN-align-html.png|border|300px]][[Image:HPN-stats-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
&lt;br /&gt;
[[High_Performance_Node_-_Specification]]&lt;br /&gt;
&lt;br /&gt;
== Upgrades ==&lt;br /&gt;
All the HPN nodes in a mesh will look for new firmware updates from the GateWay node on a regular basis. New firmware is placed inside a special directory on the GateWay node and it is made available, via ftp, to all the other HPN nodes in the mesh. Each HPN nodes will compare the firmware from this directory with it&#039;s current version of firmware to determine if it&#039;s newer. If new firmware is available, then the node will download and untar the new firmware onto a spare partition on the flash disk. After that all the custom configurations are copied over to the new partition. The HPN will then change the active partition to the new one and it will reboot with the new firmware. If someting should go wrong with the upgrade, then the HPN will revert back to the previous version of firmware.&lt;br /&gt;
&lt;br /&gt;
The GateWay node will look for new firmware somewhere on the Internet or from the WISP box. If available it will download the new firmware and place it into the special ftp directory.&lt;br /&gt;
&lt;br /&gt;
== Typical Outdoor Range at 5.8Ghz ==&lt;br /&gt;
At this stage we haven&#039;t found a testing site that is suitable for our tests. The following is just gestimates and it still needs to be tested.&lt;br /&gt;
&lt;br /&gt;
* Omni to Omni: up to xx km (2km?)&lt;br /&gt;
* Panel to Omni: up to xx km (5km?)&lt;br /&gt;
* Panel to Panel: up to xx km (10km?)&lt;br /&gt;
* External to External: more than xx km (20km?), depending on antenna type&lt;br /&gt;
&lt;br /&gt;
Now for some test results:&lt;br /&gt;
For our first test we selected a friendly site for the panel-to-panel test. We selected Anita&#039;s home because she is just over 10km from Meraka and there is a clear line of site between both sites (this is also our longest 11a link so far). Another reason is that we already have a 32bBi directional antenna, from an existing installation on Meraka&#039;s roof, that is pointing directly to her home. &lt;br /&gt;
&lt;br /&gt;
We used one of our new routers for this site, but we replaced the 5.8Ghz omni antenna with a 27dBi grid antenna so that we could have one link to login to the router, while we can do some tests on the second antenna.&lt;br /&gt;
&lt;br /&gt;
Here is a picture of Anita&#039;s husband with the router the he installed on their roof.&lt;br /&gt;
&lt;br /&gt;
[[Image:001.jpg|border|300px]][[Image:002.jpg|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Regulatory ==&lt;br /&gt;
Wirelss equipment that operate in the ISM bands do not need an spectrum licence, but they need to be ICASA approved. All the wifi adapters inside the HPN nodes are ICASA approved. From recent media reports regarding DABBA communications and there equipent in the Orange Farm area, it seems like our HPN node needs to get ICASA approval for the complete assembled HPN node as well. Every node should have it&#039;s own ICASA sticker on the back.&lt;br /&gt;
&lt;br /&gt;
== Using WEP/WPA in adhoc mode ==&lt;br /&gt;
&lt;br /&gt;
One of the requirements of the High Performance Node is to have WEP or WPA enabled between the wireless links of the mesh nodes. This is one of the functionalities that we would like to sort out before we install any of the nodes in the field. It&#039;s very difficult to change the encryption mode after an installation because the mesh nodes will lose connectivity if one node is upgraded to use WEP, while another is still using older software without WEP.&lt;br /&gt;
&lt;br /&gt;
WEP and WPA are both methods to enable the encryption of data that it is send over the air. WEP (Wired equivalence privacy) is an older standard and it makes use of a WEP encryption engine while the newer WPA standard added the use of an AES encryption engine. WEP encryption has some security flaws embedded into the protocol and there are several tools available on the Internet that can crack WEP keys. These tools are more effective with the cracking of 64bit WEP keys than with 128bit keys and they require a large amount of captured data and processing power to crack a key. Note that not all WEP keys can be cracked, but only weak keys and that flaw was addressed and fixed by WPA.&lt;br /&gt;
&lt;br /&gt;
Wireless adapters on Unix Systems can operate in three different modes: Client, Hostap (Access Point) and Adhoc mode. Most of the implementations of wireless (802.11) networks are based on a model where there is one Access Point with several wireless clients attached to to it. &lt;br /&gt;
&lt;br /&gt;
[[Image:AP-client.png|center|One Access point with many nodes]]&lt;br /&gt;
 &lt;br /&gt;
Wireless Mesh networks make use of the less tested Adhoc mode of 802.11.&lt;br /&gt;
&lt;br /&gt;
[[Image:Adhoc.png|center|Many nodes using Adhoc mode (many point to point links)]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
WEP and WPA requires a couple of kld&#039;s to be loaded before they can be configured. The following kld&#039;s should be added to loader.conf&lt;br /&gt;
wlan_acl_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_amrr_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_ccmp_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_tkip_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_wep_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_xauth_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== WEP ====&lt;br /&gt;
Enable and test WEP in Adhoc mode on the HPN.&lt;br /&gt;
WEP makes use of a single PSK that needs to be configured on all the wireless nodes. Any node or wireless device that is configured with this PSK will have the capability to crypt and decrypt these wireless packets. There are two methods to configure WEP in FreeBSD. You can use either  use ifconfig directly or you can make use of the WPA supplicant utility.&lt;br /&gt;
&lt;br /&gt;
ifconfig e.g.&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0 10.10.1.2/24 wep deftxkey 1 wepkey 128bitwepison&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0&lt;br /&gt;
 ath0: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; metric 0 mtu 1500&lt;br /&gt;
        ether 00:80:48:50:9e:69&lt;br /&gt;
        inet6 fe80::280:48ff:fe50:9e69%ath0 prefixlen 64 scopeid 0x1&lt;br /&gt;
        inet6 fd9c:6829:597c:20:280:48ff:fe50:9e69 prefixlen 64&lt;br /&gt;
        inet6 fd9c:6829:597c:20:: prefixlen 64 anycast&lt;br /&gt;
        inet 10.10.1.2 netmask 0xffffff00 broadcast 10.10.1.255&lt;br /&gt;
        media: IEEE 802.11 Wireless Ethernet autoselect mode 11g &amp;lt;adhoc&amp;gt;&lt;br /&gt;
        status: associated&lt;br /&gt;
        ssid ptamesh channel 13 (2472 Mhz 11g) bssid 56:e5:be:30:14:5a&lt;br /&gt;
        authmode OPEN privacy ON deftxkey 1 wepkey 1:104-bit txpower 31.5&lt;br /&gt;
        scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi11g 7&lt;br /&gt;
        roam:rate11g 5 protmode CTS burst&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Enable WEP on three mesh nodes and test connectivity.&lt;br /&gt;
 mesh-9e69:~ # ping6 ff02::1%ath0&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9e69%ath0, icmp_seq=87 hlim=64 time=2.122 ms&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9ddd%ath0, icmp_seq=87 hlim=64 time=5.625 ms(DUP!)&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9a44%ath0, icmp_seq=87 hlim=64 time=32.358 ms(DUP!)&lt;br /&gt;
&lt;br /&gt;
Everything seems to work fine (as expeted) with WEP enabled in the mesh.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WPA&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WPA was designed to work in an environment where you have one AP and several clients and not for Adhoc (mesh) networks. On the AP you have the Authenticator software and on the client you have the supplicant software. This means that if one would like to use WPA to it&#039;s full then every mesh node needs to be an Authenticator for all the other nodes it can see, as well as a supplicant for every node it can see. According to the WPA design document http://wirelessafrica.meraka.org.za/wiki/images/3/39/Wpa_supplicant-devel-04.pdf one can use WPA in Adhoc mode only in a static way with PSK&#039;s:&lt;br /&gt;
 IEEE 802.11 operation mode (Infrastucture/IBSS).&lt;br /&gt;
 0 = infrastructure (Managed) mode, i.e., associate with an AP.&lt;br /&gt;
 1 = IBSS (ad-hoc, peer-to-peer)&lt;br /&gt;
 Note: IBSS can only be used with key_mgmt NONE (plaintext and static WEP) and key_mgmt=WPA-&lt;br /&gt;
 NONE (ﬁxed group key TKIP/CCMP). In addition, ap_scan has to be set to 2 for IBSS. WPA-None requires&lt;br /&gt;
 following network block options: proto=WPA, key_mgmt=WPA-NONE, pairwise=NONE, group=TKIP&lt;br /&gt;
 (or CCMP, but not both), and psk must also be set (either directly or using ASCII passphrase).&lt;br /&gt;
&lt;br /&gt;
This is methods is very similar to the way that WEP is being used. This means the the only advantage of using WPA over WEP is that one can make use of the AES encryption engine that comes with WPA. Please note that with this mode of WPA and with WEP that anyone can decrypt the data being send over the air if they get hold of the mesh-wide PSK that is configured on every node in the network. If security is of importance them end users should consider the use of point-to-point security mechanisms like VPN&#039;s.&lt;br /&gt;
&lt;br /&gt;
The configuration of WPA is not supported in command line mode, but only with the wpa_supplicant software. This is an example of a wpa_supplicant.conf file to enable WPA in Adhoc mode:&lt;br /&gt;
&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 #&lt;br /&gt;
 network={&lt;br /&gt;
   ssid=&amp;quot;ptamesh&amp;quot;&lt;br /&gt;
 # Channel  13 : 2472  Mhz 11g&lt;br /&gt;
   frequency=2472&lt;br /&gt;
   mode=1&lt;br /&gt;
   proto=WPA&lt;br /&gt;
   key_mgmt=WPA-NONE&lt;br /&gt;
   pairwise=NONE&lt;br /&gt;
   group=TKIP&lt;br /&gt;
   psk=&amp;quot;mesh-ipv6&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To start the WPA software during boot-up one needs to add WPA to the ifconfig line in rc.conf. E.g.&lt;br /&gt;
&lt;br /&gt;
 ifconfig_ath0=&amp;quot;WPA 10.10.1.1/24 mode 11g mediaopt adhoc channel 13 ssid ptamesh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Unfortunately WPA did not work as easy as WEP, so it&#039;s off to debugging.&lt;br /&gt;
&lt;br /&gt;
Starting wpa_supplicant in the foreground with debugging enabled. E.g&lt;br /&gt;
&lt;br /&gt;
 wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
&lt;br /&gt;
The debugging output shows that something happens that initiates a wlan scan operation, while the card is in Adhoc mode. This should not happen and wpa_supplicant software never completes the configuration due to this error.&lt;br /&gt;
&lt;br /&gt;
 mesh-9ddd:~ # wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
 Initializing interface &#039;ath0&#039; conf &#039;/etc/wpa_supplicant.conf&#039; driver &#039;default&#039; &lt;br /&gt;
 ctrl_interface &#039;N/A&#039; bridge &#039;N/A&#039;&lt;br /&gt;
 Configuration file &#039;/etc/wpa_supplicant.conf&#039; -&amp;gt; &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 Reading configuration file &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 Priority group 0&lt;br /&gt;
   id=0 ssid=&#039;ptamesh&#039;&lt;br /&gt;
 Initializing interface (2) &#039;ath0&#039;&lt;br /&gt;
 EAPOL: SUPP_PAE entering state DISCONNECTED&lt;br /&gt;
 EAPOL: KEY_RX entering state NO_KEY_RECEIVE&lt;br /&gt;
 EAPOL: SUPP_BE entering state INITIALIZE&lt;br /&gt;
 EAP: EAP entering state DISABLED&lt;br /&gt;
 EAPOL: External notification - portEnabled=0&lt;br /&gt;
 EAPOL: External notification - portValid=0&lt;br /&gt;
 Own MAC address: 00:80:48:50:9d:dd&lt;br /&gt;
 wpa_driver_bsd_set_wpa: enabled=1&lt;br /&gt;
 wpa_driver_bsd_set_wpa_internal: wpa=3 privacy=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=0&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=2&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=3&lt;br /&gt;
 wpa_driver_bsd_set_countermeasures: enabled=0&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 Setting scan request: 0 sec 100000 usec&lt;br /&gt;
 Added interface ath0&lt;br /&gt;
 State: DISCONNECTED -&amp;gt; SCANNING&lt;br /&gt;
 Trying to associate with SSID &#039;ptamesh&#039;&lt;br /&gt;
 Cancelling scan request&lt;br /&gt;
 WPA: clearing own WPA/RSN IE&lt;br /&gt;
 Automatic auth_alg selection: 0x1&lt;br /&gt;
 wpa_driver_bsd_set_auth_alg alg 0x1 authmode 1&lt;br /&gt;
 WPA: No WPA/RSN IE available from association info&lt;br /&gt;
 WPA: Set cipher suites based on configuration&lt;br /&gt;
 WPA: Selected cipher suites: group 8 pairwise 1 key_mgmt 16 proto 1&lt;br /&gt;
 WPA: clearing AP WPA IE&lt;br /&gt;
 WPA: clearing AP RSN IE&lt;br /&gt;
 WPA: using GTK TKIP&lt;br /&gt;
 WPA: using PTK NONE&lt;br /&gt;
 WPA: using KEY_MGMT WPA-NONE&lt;br /&gt;
 WPA: Set own WPA IE default - hexdump(len=24): dd 16 00 50 f2 01 01 00 00 50 &lt;br /&gt;
 f2 02 01 00 00 50 f2 00 01 00 00 50 f2 00&lt;br /&gt;
 No keys have been configured - skip key clearing&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 State: SCANNING -&amp;gt; ASSOCIATING&lt;br /&gt;
 wpa_driver_bsd_associate: ssid &#039;ptamesh&#039; wpa ie len 24 pairwise 0 group 2 key &lt;br /&gt;
 mgmt 4&lt;br /&gt;
 ioctl[SIOCS80211, op 22, len 24]: Invalid argument&lt;br /&gt;
 Association request to the driver failed&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 Cancelling authentication timeout&lt;br /&gt;
 State: ASSOCIATING -&amp;gt; COMPLETED&lt;br /&gt;
 CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (auth) [id=-1 &lt;br /&gt;
 id_str=]&lt;br /&gt;
 EAPOL: External notification - portControl=ForceAuthorized&lt;br /&gt;
&lt;br /&gt;
Next was to install fresh copy of the FreeBSD src code onto my PC. I found the wpa_supplicant source code under /usr/src/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c Build a new driver from source code and run it on a router. After that I&#039;ve added in a lot of printf statements to trace how the driver works and to locate the code that puts the wifi card in scanning mode. In the end I found out that wpa_supplicant driver did not put the card in scanning mode, but it somehow caused the 802.11 stack to start the scanning. Unfortunately I don&#039;t know enough about the 802.11 code in FreeBSD to do any mode debugging. I&#039;ve send a mail about the problem to one of the FreeBSD mailing lists and the originator of most of the 802.11 code in FreeBSD (Sam Leffler) said I must log a problem report. So I logged a problem report with FreeBSD and now we have to wait and see if someone to take responsibility to fix this problem. More information on the problem report can be found at: http://www.freebsd.org/cgi/query-pr.cgi?pr=126822&lt;br /&gt;
&lt;br /&gt;
For now I recommend that we make use of WEP instead of WPA in our implementation as it is working and there isn&#039;t such a big advantage in using WPA over WEP in this mode except for the encryption algorithm that changes from WEP to AES.&lt;br /&gt;
&lt;br /&gt;
== Antenna calculations ==&lt;br /&gt;
&lt;br /&gt;
Every HP-node has two 5.15-5.6 GHz antennas. The one as a build in patch antenna and the other is an 5.1-5.8 GHz omni-directional antenna. The idea is that the patch antenna of a node will either be aligned to the omni or the patch antenna of another node. The following calculations is to get an feeling of what distances should be possible between these antennas.&lt;br /&gt;
&lt;br /&gt;
South African Wifi channels:&lt;br /&gt;
 Channel   1 : 2412  Mhz 11g          Channel  48 : 5240  Mhz 11a&lt;br /&gt;
 Channel   2 : 2417  Mhz 11g          Channel  52 : 5260* Mhz 11a&lt;br /&gt;
 Channel   3 : 2422  Mhz 11g          Channel  56 : 5280* Mhz 11a&lt;br /&gt;
 Channel   4 : 2427  Mhz 11g          Channel  60 : 5300* Mhz 11a&lt;br /&gt;
 Channel   5 : 2432  Mhz 11g          Channel  64 : 5320* Mhz 11a&lt;br /&gt;
 Channel   6 : 2437  Mhz 11g          Channel 100 : 5500* Mhz 11a&lt;br /&gt;
 Channel   7 : 2442  Mhz 11g          Channel 104 : 5520* Mhz 11a&lt;br /&gt;
 Channel   8 : 2447  Mhz 11g          Channel 108 : 5540* Mhz 11a&lt;br /&gt;
 Channel   9 : 2452  Mhz 11g          Channel 112 : 5560* Mhz 11a&lt;br /&gt;
 Channel  10 : 2457  Mhz 11g          Channel 116 : 5580* Mhz 11a&lt;br /&gt;
 Channel  11 : 2462  Mhz 11g          Channel 120 : 5600* Mhz 11a&lt;br /&gt;
 Channel  12 : 2467  Mhz 11g          Channel 124 : 5620* Mhz 11a&lt;br /&gt;
 Channel  13 : 2472  Mhz 11g          Channel 128 : 5640* Mhz 11a&lt;br /&gt;
 Channel  36 : 5180  Mhz 11a          Channel 132 : 5660* Mhz 11a&lt;br /&gt;
 Channel  40 : 5200  Mhz 11a          Channel 136 : 5680* Mhz 11a&lt;br /&gt;
 Channel  44 : 5220  Mhz 11a          Channel 140 : 5700* Mhz 11a&lt;br /&gt;
&lt;br /&gt;
HP-Node detailed specs: http://wirelessafrica.meraka.org.za/wiki/images/0/07/WLAN-A0033.pdf&lt;br /&gt;
&lt;br /&gt;
Pigtail detail specs: http://wirelessafrica.meraka.org.za/wiki/images/0/0a/Ca178_cable_assemblies_datasheet.pdf&lt;br /&gt;
&lt;br /&gt;
Wireless adapter detail specs: http://wirelessafrica.meraka.org.za/wiki/images/2/21/Wlm54sag23.pdf&lt;br /&gt;
&lt;br /&gt;
OR the Mikrotik version of the same adapter called a R52H (also manufactured by Compex, but usually cheaper)&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:R52H.pdf&lt;br /&gt;
&lt;br /&gt;
Another popular adapter is the DCMA-82 from Wistron. They have better RX sensitivity, but lower output power and they are a bit more expensive than the Compex cards. In some of the discussions that I&#039;ve seen they state that the DCMA-82 has much cleaner output power, better RX sensitivity, and a lower failure rate/quality issues than Compex&#039;s cards.&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:DCMA-82.pdf&lt;br /&gt;
&lt;br /&gt;
Node specs summary:&lt;br /&gt;
 Patch antenna            - 21-23 dBi,   16 deg H,  11 deg V, 5.15 -5.6 GHz&lt;br /&gt;
 5Ghz Omni antenna        - 8-11 dBi,    360 deg H, 10 deg V, 5.1 - 5.85 GHz&lt;br /&gt;
 2.4Ghz Omni antenna      - 7.5-8.5 dBi, 360 deg H, 12 deg V, 2.4 - 2.5 GHz&lt;br /&gt;
 30mm U.FL-SMA pigtail    - RG178 cable insertion loss, 2.4 GHZ = -1.1dB, 5.6 GHz = -2dB&lt;br /&gt;
 Compex WLM54AG23 adapter - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            23dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
                            17dBm @ 54Mbps&lt;br /&gt;
 Mikrotik (Compex) R52H   - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            24dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
 Wistron DCMA-82          - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -82 dBm @ 36Mbps&lt;br /&gt;
                            -72 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            22.5dBm @ 6-24Mbps&lt;br /&gt;
                            21.5dBm @ 36Mbps&lt;br /&gt;
                            18dBm @ 48Mbps&lt;br /&gt;
&lt;br /&gt;
I could not find any receive sensitivity info for ranges between 6Mbps and 54Mbps for the WLM54AG23. The closest I could find was the specs of another manufacturer card, using the same Atheros chipset as the WLM54AG23. Here is the receive sensitivity info for a WMIA-166AG Dual-Band miniPCI module (802.11a/g)&lt;br /&gt;
Nominal Temp Range:&lt;br /&gt;
  6Mbps 10-5 BER @ -90 dBm, typical&lt;br /&gt;
  9Mbps 10-5 BER @ -89 dBm, typical&lt;br /&gt;
 12Mbps 10-5 BER @ -88 dBm, typical&lt;br /&gt;
 18Mbps 10-5 BER @ -86 dBm, typical&lt;br /&gt;
 24Mbps 10-5 BER @ -82 dBm, typical&lt;br /&gt;
 36Mbps 10-5 BER @ -78 dBm, typical&lt;br /&gt;
 48Mbps 10-5 BER @ -72 dBm, typical&lt;br /&gt;
 54Mbps 10-5 BER @ -68 dBm, typical &lt;br /&gt;
&lt;br /&gt;
The WLM54AG23 is not the best wifi adapter in the market, but it gives a good compromise between price vs performance. If one need to push the limits of a specific link then I would probable select the SR5 from Ubiquity. They have excellent TX power and RX sensitivity.&lt;br /&gt;
 &lt;br /&gt;
There are lots of wifi/antenna/distance calculators available on the WEB. Most of these calculators cannot calculate the max distance for a link, you have to specify the distance and it will calculate you dBm margin. Links to a couple of Wifi/antenna/distance calculators:&lt;br /&gt;
&lt;br /&gt;
 http://www.radiolabs.com/stations/wifi_calc.html&lt;br /&gt;
 http://www.zytrax.com/tech/wireless/calc.htm&lt;br /&gt;
 http://www.widgetbox.com/widget/wifi-link-calculator&lt;br /&gt;
 http://www.wifiextreme.com.au/index.php?main_page=page_5&lt;br /&gt;
 http://www.rflinx.com/help/calculations&lt;br /&gt;
 http://www.olotwireless.net/castella/radio.htm&lt;br /&gt;
&lt;br /&gt;
Here are some formulas use to calculate a link budget:&lt;br /&gt;
  Free space loss = 36.56 + 20Log10(Frequency) + 20Log10(Dist in miles)&lt;br /&gt;
  mW to dBm = 10Log10(milliWatts) + 30&lt;br /&gt;
  dBm to mW = 10(dBm/10)&lt;br /&gt;
  RX Power = Margin - RX sensitivity&lt;br /&gt;
  Theoretical margin = TX power budget + RX power budget - free space loss&lt;br /&gt;
  SAD factor = Theoretical margin/TX power budget * 100 and shows the percentage of spare power on transmission.&lt;br /&gt;
&lt;br /&gt;
(Free Space Loss) = 92.5 + (20 Log fequency) + (20 log km distance)&lt;br /&gt;
&lt;br /&gt;
Free space loss @ 5400GHz:&lt;br /&gt;
 1km = -107.07dB      11km = -128.028dB&lt;br /&gt;
 2km = -113.09dB      12km = -128.784dB&lt;br /&gt;
 3km = -116.61dB      13km = -129.479dB&lt;br /&gt;
 4km = -119.11dB      14km = -130.123dB&lt;br /&gt;
 5km = -121.05dB      15km = -130.722dB&lt;br /&gt;
 6km = -122.63dB      16km = -131.282dB&lt;br /&gt;
 7km = -123.97dB      17km = -131.809dB&lt;br /&gt;
 8km = -125.13dB      18km = -132.305dB&lt;br /&gt;
 9km = -126.15dB      19km = -132.775dB&lt;br /&gt;
 10km = -127.07dB     20km = -133.221dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPNode with a 5Ghz patch to omni link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Omni: &lt;br /&gt;
 Min link distance @ 54Mbps 0.9km:              Max link distance @ 54Mbps 1.55km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -106dB                      Free space loss = -111dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 6.9km:              Max link distance @ 24Mbps 12.3km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 34km free space  = -124dB                      Free space loss = -129dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 17km:                Max link distance @ 6Mbps 30.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 34km free space  = -132dB                      Free space loss = -137dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPnodes with a 5Ghz patch to patch link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Patch:&lt;br /&gt;
 Min link distance @ 54Mbps 3.9km:              Max link distance @ 54Mbps 6km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -119dB                      Free space loss = -123dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 30.9km:             Max link distance @ 24Mbps 38.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 Free space loss  = -137dB                      Free space loss = -139dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 77.6km:              Max link distance @ 6Mbps 123km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 Free space loss  = -145dB                      Free space loss = -149dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=File:001.jpg&amp;diff=4600</id>
		<title>File:001.jpg</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=File:001.jpg&amp;diff=4600"/>
		<updated>2009-04-07T10:49:38Z</updated>

		<summary type="html">&lt;p&gt;JHugo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4599</id>
		<title>High performance node page</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=High_performance_node_page&amp;diff=4599"/>
		<updated>2009-04-07T10:45:44Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Typical Outdoor Range at 5.8Ghz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Development Team Research Pages]][[Category: Johann&#039;s Research Pages]][[Category: High Performance Node]]&lt;br /&gt;
&lt;br /&gt;
== What is a HPN (high performance node) ? ==&lt;br /&gt;
&lt;br /&gt;
The HPN is a multi-radio (3x radios), high performance, wireless (802.11) router. It has three antennas, one 5.8Ghz directional panel antenna as well as two omni&#039;s (2.4Ghz + 5.8Ghz). At the bottom of the router there is a weather proof UTP connector that is used for both Power-Over-Ethernet (PoE) and Ethernet connectivity to the router. A special mounting bracket at the back of the router allows it to be attached to an aluminum pole that is usually mounted to the side of a building or some structure.&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN.png]]&lt;br /&gt;
&lt;br /&gt;
== How to build a mesh with HPN&#039;s ==&lt;br /&gt;
The idea is to build a mesh network with these routers by aligning each directional antennas to point to a neighboring omni or another directional antenna. The wireless cards in a router operates on different channels (frequencies). To make it more user friendly each channel (frequencies) is tied to a color. This means that a red panel antenna must be aligned to a red omni (or another red panel) and a green panel must be aligned to a green omni (or green panel). The blue channel (2.4Ghz) is used to create a wifi hostspot for clients who would like to connect to the mesh network via wifi.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mesh-Network.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every mesh network usually have one GateWay that connects to the Internet or to some other network. Any one of the mesh nodes can be configured to become a GateWay for the mesh. When a node becomes a GateWay then the channels (frequencies) of the antennas are fixed  to the following: 5.8Ghz directional panel = RED, 5.8Ghz omni = GREEN and the 2.4Ghz omni = BLUE. The GateWay node will also become the DNS server for the mesh and all the nodes inside the mesh will register their HostNames with the DNS server. Another function of the GateWay node is to act as a time server for the mesh network and all the nodes inside the mesh will synchronize their time with the GateWay node. &lt;br /&gt;
&lt;br /&gt;
The best approach to build a mesh network is to start with the installation of the GateWay node. Next you install the node(s) that aligns to the GateWay node and then grow the mesh from there. Fist perform a visual alignment of the panel antenna on the node before the power is switched on. When a normal node starts up for the first time, then it will hunt for a mesh signal and it will lock it&#039;s channels (frequencies) once connectivity is established. It will first hunt for connectivity on both the red and green channels on the directional panel antenna for X seconds. If no signal is found, then the hunt will continue on the 5.8Ghz omni directional antenna for X seconds. This sequence will repeat itself until a signal is found, or until the channels are manually locked via the web interface on the node itself. &lt;br /&gt;
&lt;br /&gt;
Every node has a GREEN and a RED LED that is visible from underneath the node (should be visible when one stands under the node that is mounted on a pole). These LEDs are there to give some indication of connectivity and they will only turn on if connectivity can be established on either the red or green channel. Note that the LED does not show the signal quality or to what node it is connected to, it only shows that there is connectivity to another HPN node and on what channel (red or green). Signal quality and node connectivity information is only available via the web interface, but in most cases a visual alignment combined with a link indicator will be sufficient enough to get a mesh node up and running.&lt;br /&gt;
&lt;br /&gt;
== How can a client connect to the mesh ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Hpn-switch-pc.png]]&lt;br /&gt;
&lt;br /&gt;
Client devices can connect to any of the nodes via Ethernet or via wifi (blue channel = hostspot). The client devices should be configured to make use of DHCP so that all networking configurations can be done automatically (The node will provide all the networking details via DHCP). It is also recommended that the IPv6 protocol stack should be switch on if it is available. IPv6 should already be enabled on Windows Vista as well as most Unix systems.&lt;br /&gt;
&lt;br /&gt;
== How does the mesh work ? ==&lt;br /&gt;
&lt;br /&gt;
Almost everything in the network will be configured automatically, except for the selection of the gateway node and the channel (red or green) of a wireless link. The mesh supports both IPv6 and IPv4 traffic from any end-point (a place where a mesh client connects) to any other end-point in the mesh, while the backbone uses IPv6 only. A routing protocol called OLSR (Optimized Link State Routing) is used to exchange routing information between all the nodes inside the mesh and to select the best path for data traffic between end-points in the mesh.&lt;br /&gt;
&lt;br /&gt;
[[Image:OLSR.png]]&lt;br /&gt;
&lt;br /&gt;
Lets take an example (see diagram) where HP want to send data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv6 ====&lt;br /&gt;
HP will address the data to the IPv6 address of Dell and send it to node C. Node C will look in it&#039;s routing table and see that there are two routes to Dell, one route via node B-A-D-E and the other route via D-E. It will then select the best route and send it to the next node, in our case node D. Node D will look in it&#039;s routing table and see that the only route to Dell is via node E. Node E will look at it&#039;s routing table and see that Dell is directly connected and it will forward the data to Dell.&lt;br /&gt;
&lt;br /&gt;
==== Using IPv4 ====&lt;br /&gt;
This one is a bit more complicated. IPv4 is only used on the outside of the network (where the mesh clients connect to it) and then the IPv4 traffic is tunneled over the IPv6 backbone of the mesh to any another end point in the mesh. The mesh will automatically create a one-to-many IPv4 tunnel over the IPv6 network (4over6 tunneling protocol). This means that it looks like a network with an IPv4 tunnel from every IPv4 subnet to every other IPv4 subnet in the mesh. From a client&#039;s perspective it looks like a normal IPv4 routed network. From the backbone&#039;s perspective it looks like a IPv6 only network and all the OLSR routing information is IPv6 only. &lt;br /&gt;
&lt;br /&gt;
So how does the network know how to forward IPv4 packets to the correct destination ? It makes use of IPv4-mapped-IPv6 addresses (see [http://tools.ietf.org/html/rfc4291#section-2.5.5 RFC4291] and [http://tools.ietf.org/html/rfc4038 RFC4038]). Every node will map an IPv4 addresses into a IPv6 address before data goes to the backbone and the IPv4-Mapped-IPv6 addresses are converted back to a plain IPv4 address when it comes out of the backbone. OLSR will advertise these IPv4-Mapped-IPv6 address subnets on the backbone so that all the nodes will learn these subnets and they will calculate the best route to these subnets.&lt;br /&gt;
&lt;br /&gt;
Lets take example again, using IPv4. HP will address the data to the IPv4 address of Dell and send it to node C. Node C will change the IPv4 packet to an IPv6 packet with an IPv4-mapped-IPv6 addresses. From there it will follow the same route as the IPv6 example above. Node E will take the original IPv4 packet out of the IPv4-mapped-IPv6 packet and it will send the original IPv4 packet to Dell.&lt;br /&gt;
&lt;br /&gt;
See http://wirelessafrica.meraka.org.za/wiki/index.php/John%27s_research#4over6_Automatic_tunnels for more detail of the 4over6 tunneling protocol.&lt;br /&gt;
&lt;br /&gt;
=== Why is the mesh using IPv6 ? ===&lt;br /&gt;
&lt;br /&gt;
==== Reason one ====&lt;br /&gt;
It is predicted that unused IPv4 address space will be depleted within the next two years. Operating systems like Vista and most Unix systems defaults to IPv6 by default and most applications are IPv6 ready. With this in mind it makes sense that any new networking products should provide both IPv4 and IPv6 support.&lt;br /&gt;
&lt;br /&gt;
==== Reason two ====&lt;br /&gt;
In a single radio mesh network there is just one RF channel and everybody makes use of the same IP subnet. One limitation of a single radio mesh is that each mesh radio needs to handle both incoming and outgoing traffic. This causes the throughput to be halved because a radio cannot transmit and receive simultaneously. Another problem is that if one radio is transmitting then all its neighbors must all be in listening mode. These problems can cause a single radio mesh to very quickly run out of steam.&lt;br /&gt;
&lt;br /&gt;
Multi-radio mesh technology solves this problem by configuring every radio inside a router to operate on a different frequency and on a different IP subnet. In the HPN two radios are dedicated for backbone traffic and the third is used to create a client hotspot. 802.11a is generally used for backbone traffic, and 802.11b/g for client coverage. &lt;br /&gt;
&lt;br /&gt;
In a multi-radio mesh network it is very difficult to use the same IPv4 subnet on all the backbone wireless interfaces inside a mesh. The OLSR routing protocol uses broadcast packets to flood OLSR routing information to all of it&#039;s neighbors. This works very well with a single radio mesh, but not with a multi-radio mesh. Almost all TCP/IP (IPv4) stacks implementations can only send out broadcast packets on one interface at a time, but not on multiple interfaces on the same IPv4 subnet. This means that every interface needs to operate on a different IPv4 subnet, with the effect that some OLSR links may be physically possible, but it cannot be used for data because the IPv4 subnets are different. A multi-radio IPv4 OLSR network is possible, but it usually needs a lot of planning and configuration.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv4-Network.png]]&lt;br /&gt;
&lt;br /&gt;
The TCP/IP stack of IPv6 does not make use of Broadcast packets and OLSR routing information is flooded to it&#039;s neighbors via multicast packets. These multicast packets will automatically be duplicated by the TCP/IP stack and send out via multiple IPv6 interfaces on the same IPv6 subnet. This means that the mesh can use the same IPv6 subnet, all over the mesh backbone, without any problems. With a multi-radio IPv6 OLSR mesh you don&#039;t need any IPv6 configuration on the backbone as all the nodes use the same IPv6 subnet.&lt;br /&gt;
&lt;br /&gt;
[[Image:IPv6-Network.png]]&lt;br /&gt;
&lt;br /&gt;
== Behavior of a normal node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
The following describes how a normal node will behave inside a mesh and what service it will provide:&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up for the fist time, then it will go into a hunting mode and it will search for other nodes in the mesh. In hunting mode it will first configure the patch antenna on the GREEN frequency. It will perform a link local IPv6 ping on that interface for about X seconds to determine if any IPv6 connectivity can be found on that antenna/channel. If no connectivity is found after X seconds, then it will hunt further using RED on the patch, then GREEN on the omni and then RED on the omni. If no connectivity can be found, then it will start the hunting process from the beginning, or until it is manually locked via the WEB terface. If connectivity can be established, then it will enable the green/red link LED on the bottom of the node to show connectivity (use the WEB interface for more information on to which node connectivity has been established to). If connectivity is lost then the LED will be off again. After stable connectivity for about X consecutive pings, the node will lock the antenna/channels util someone changes it manually via the WEB interface. Once the antennas/channels are locked then it will also change the sensitivity of the link LED and LED updates will be less frequently. The LED sensitivity can be manually changed via the WEB interface by selecting the &amp;quot;alignment&amp;quot; button. The alignment feature will give signal strength information on the WEB interface. See hunt-flow-diagram below.&lt;br /&gt;
&lt;br /&gt;
[[Image:Hunt-flow-diag.png]]&lt;br /&gt;
   &lt;br /&gt;
* When a new node boots up then an unique IPv6 address ((inside this mesh. See IP addressing section) will be configured on all the Ethernet and wireless interfaces. An unique (inside this mesh) IPv4 address is calculated and configured on the Ethernet interface and on the 2.4Ghz omni interface. The node will use the MAC address of the adapter to calculate a unique IPv4 and IPv6 subnet for that interface. These automatic addresses can be overrided via the WEB interface (E.g. if a globally routeable IPv6 address is required for a website inside the mesh and it should be visible from the Internet). Wireless interfaces are placed into adhoc mode and the channel, ssid and bssid are also configured.&lt;br /&gt;
&lt;br /&gt;
* When a new node boots up then the OLSR daemon is started and it will listen en send OLSR topology packets to all of it&#039;s neighboring nodes. OLSR runs on all the wireless interfaces, but not on the Ethernet interface. All the IPv4 subnets are converted to 4in6 IPv6 addresses and these IPv6 subnets are placed into the HNA section of olsrd.conf, together with the IPv6 subnets that are configured on the Ethernet interface and on the 2.4Ghz omni interface. These HNA subnets are then distributed, via OLSR, to all the other nodes inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The 4over6 tunneling daemon take care of all IPv4 comms and dirtributing of routing information inside the mesh.&lt;br /&gt;
&lt;br /&gt;
* The node will start ntpd daemon on provide NTP time services on all it&#039;s IPv4 and IPv6 addresses. NTP will also synchronize it&#039;s local time with the GW-node on a regular basis.&lt;br /&gt;
&lt;br /&gt;
* The node will register it&#039;s own hostname in DNS on the GW-node. It will start dnsmasq daemon and it will also provide DNS services on all it&#039;s IPv4 and IPv6 addresses. Dnsmasq will forward all DNS queries to the DNS server running on the GW-node.&lt;br /&gt;
&lt;br /&gt;
* Dnsmasq is used to provide IPv4 DHCP services and DNS services on both the Ethernet interface and on the 2.4Ghz omni (hostspot) interface.&lt;br /&gt;
&lt;br /&gt;
* rtadvd will run on both the Ethernet interface and on the 2.4Ghz omni interface and it is used to advertise IPv6 prefixes to locally connected IPv6 client devices.&lt;br /&gt;
&lt;br /&gt;
* sshd allows remote ssh login&#039;s from anywhere in the mesh network.&lt;br /&gt;
&lt;br /&gt;
* watchdogd toggles the watchdog during normal operations. Should the system hang for some reason, then the watchdog will restart the HPN node.&lt;br /&gt;
&lt;br /&gt;
* mini_httpd is used for the WEB gui running on the HPN node.&lt;br /&gt;
&lt;br /&gt;
== Behavior of the GateWay node in a mesh ==&lt;br /&gt;
&lt;br /&gt;
Any standard mesh node can become a GateWay node by selecting the &amp;quot;GateWay&amp;quot; button under &amp;quot;Additional features&amp;quot; on the WEB interface. The GateWay node is the place where the mesh will connect to some outside network and it will be the default route for the mesh. When a normal node becomes a GateWay node, then it does not disable any normal node features, but it just adds some additional features. The following are the additional features that a GateWay node will have:&lt;br /&gt;
&lt;br /&gt;
* The GW-node will not go into a hunting mode and it will lock it&#039;s channels with GREEN on the omni and RED on the directional panel. The default channels can be swapped via the WEB interface.&lt;br /&gt;
&lt;br /&gt;
* The GW-node is the default route for the mesh and it will advertise a default route via OLSR to the rest of the mesh.&lt;br /&gt;
&lt;br /&gt;
* The GW-node connects to the outside networks via Ethernet. It will perform a DHCP request on this interface in order to get an automatic IP address and external DNS server configurations from the external network. These setting can be overided via the WEB interface, under &amp;quot;Additional features&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes the DNS server for the mesh and it will configure and start the &#039;named&#039; services on IPv6, as well as on a well known IPv6 address of fec0:0:0:ffff::1. It will allow any node inside a mesh to submit their hostname into DNS and it will provide DNS services to any node or other device inside the mesh on IPv6 only. The GateWay node will also forward external DNS requests to upstream DNS servers if they are available. Upstream DNS servers are usually configured via DHCP but these setting can also be overided under &amp;quot;Additional features&amp;quot; on the WEB interface. DNS services are still available via &#039;dnsmasq&#039;, on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a time server for the mesh. It will synchronize it&#039;s time to an external time server if it&#039;s configured and available, otherwise it will use it&#039;s own internal RTC to synchronize it&#039;s time to. This time will be available to the rest of the mesh on a well known IPv6 address of fec0:0:0:ffff::1 and all the nodes in a mesh will use this time to synchronize their own time servers to. The GW-node will still provide NTP time services on all it&#039;s IPv4 and IPv6 addresses like a normal node will do.&lt;br /&gt;
&lt;br /&gt;
* The GW-node becomes a firmware update server for the mesh. It will start ftpd services on IPv6, on a well known IPv6 address of fec0:0:0:ffff::1. It will took for new firmware on the Internet. If new firmware is available, then it will download the software and make it available to the other nodes inside the mesh via ftp.&lt;br /&gt;
&lt;br /&gt;
== IPv4 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
IPv4 addresses are not used in the backbone, but only on the edge of the network. This means that every node will have two IPv4 subnets configured, one on the Ethernet adapter (npe0) and the other on the 2.4Ghz omni (ath2) that is used for a wifi hotspot. The High performance node will always use the first IPv4 address on a configured subnet. E.g 10.234.18.1/24&lt;br /&gt;
&lt;br /&gt;
The HPN currently makes use of an automatic IPv4 addressing scheme where the IPv4 subnet is derived from the two least significant bytes of the MAC address of that particular interface. The first bye of the network is always 10 because we are making use of the 10net inside the mesh. The next two byes comes from the last two byes of the Mac address and it will become the IPv4 subnet for that adapter. The adapter itself will be 10.x.x.1 and it will become the default gateway for that subnet. DNSmasq will hand out DHCP addresses form 10.x.x.100 - 10.x.x.199 on the calculated subnet.&lt;br /&gt;
&lt;br /&gt;
 Mac = 00:d0:12:07:cb:73&lt;br /&gt;
 cb.73 (hex) = 203.115 (decimal)&lt;br /&gt;
 IP subnet  = 10.203.115 with /24 subnet mask&lt;br /&gt;
 IP address = 10.203.115.1&lt;br /&gt;
 DHCP = 10.203.115.100-10.203.115.199&lt;br /&gt;
&lt;br /&gt;
This addressing scheme will work 99% of the time, but it is not failsafe. Subnet clashes may occur due to the MAC address numbering schemes used by different vendors. MAC addresses usually have a vendor portion (first part of address) and a product/sequent number portion (last part). The last part is the part that is used to generate an IPv4 address. The last two bytes will most probably, at some stage, be that same for two different cards from two different vendors and there may be a very small chance for both of these cards end up in the same mesh network. In this case the automatic address can be overridden manually in rc.conf.local. At this stage there is no build in detection system that will handle Mac address clashes.&lt;br /&gt;
&lt;br /&gt;
Other addressing schemes to consider:&lt;br /&gt;
* Manage and assign all IPv4 addresses centrally. Program addresses into the HPN&#039;s during the manufacturing process. This will sort out all IPv4 address clashes. Issues - Do you assign a IPv4 address block per community or just sequential per HPN node?&lt;br /&gt;
* Manage a block of IPv4 addresses for each community somewhere on the local mesh. HPN nodes can then request an IPv4 addresses from this repository and use it. Issues - what happens if server is down or during a power failure. Will you get a new IPv4 address every time, simular to what you get with ADSL. This will mean that all the the PC&#039;s and devices that received DHCP addresses from DNSmasq will have to change as well. &lt;br /&gt;
&lt;br /&gt;
Issues that may influence the selection of an addressing scheme:&lt;br /&gt;
* Should there be IPv4 connectivity between different mesh networks ?&lt;br /&gt;
* Should there be IPv4 connectivity between a network inside a mesh and some other place in the Internet ?&lt;br /&gt;
* Should someone upstream device be able to initiate a connection into a mesh network (E.g. web server in mesh). ?&lt;br /&gt;
* Should we make use of legal (routeable) IPv4 address space, or should we stick to the 10net.&lt;br /&gt;
* Should the network be able to build and exchange IPv4 routing information with other networks.&lt;br /&gt;
* Routing information can be simplified if sequential IPv4 addresses are managed centrally and allocated per mesh&lt;br /&gt;
* Should the addressing scheme survive a power cycle or load shedding inside a community&lt;br /&gt;
* Is the WISP going to do NAT ?&lt;br /&gt;
&lt;br /&gt;
== IPv6 addressing scheme ==&lt;br /&gt;
&lt;br /&gt;
All the HPN nodes supports end-to-end IPv6 communications over the mesh. IPv6 only needs a network prefix (IPv6 subnet) for every adapter and the protocol stack will work out the IPv6 address for each interface. &lt;br /&gt;
&lt;br /&gt;
Our mesh is making use of a private Unique Local Addresses (ULAs) space, described in [http://www.rfc-editor.org/rfc/rfc4193.txt RFC4193]. This address space in similar to the 10net in IPv4, but with the difference that each ULA is globally unique. This means that we can calculate our own network prefix that we use in a mesh. This leaves the option to use the same prefix for all the different mesh networks, or we can use an unique prefix for every mesh. A unique prefix for every mesh may have an routing advantage if we need to connect different mesh networks together in future, but it also means that HPN&#039;s should be pre-configured with a prefix that is tied to a specific community and the prefix allocations should be managed centrally.&lt;br /&gt;
&lt;br /&gt;
Note that private Unique Local IPv6 addresses are not globally routable, but only inside our mesh. If we need globally routable IPv6 addresses then we need to apply for Provider Independent IPv6 address space from Afrinic. These addresses is uosually someting that is given to some network provider (owner of the network) and it will have a yearly fee attached to it. Issues - it is not always clear who the owner of a communit mesh is.&lt;br /&gt;
&lt;br /&gt;
The best sollution may be to use a combination of both addressing schemes. Use ULA addresses all over the mesh and only use leagal IPv6 addresses where devices needs to be availble on the Internet.&lt;br /&gt;
&lt;br /&gt;
== WEB interface ==&lt;br /&gt;
At the moment there is no WEB GUI for the HPN. This is an suggestion of how the GUI should look like. The idea is to keep it simple as possible with as little as possible that can be changed.&lt;br /&gt;
&lt;br /&gt;
=== WEB Gui main page ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-hunt-html.png|border|300px]][[Image:HPN-green-html.png|border|300px]][[Image:HPN-red-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
The default setting for a HPN is to come up in the hunting mode. After a successful hunt, the HPN will lock to either a red or green node and it will keep the setting, even during power failures. The menu will show the current state of a HPN, but it will also allow you to override the current mode by selecting red, green or hunting manually. Changes are only allowed after a valid login.&lt;br /&gt;
&lt;br /&gt;
The bar graph will give some indication of signal strength to other nodes on both the red and green channel. Note that there can be a link to more than one node on a given channel (red or green). The indicator on the main page will only show the signal to the first node that it links with. A more detailed view is available on the align page under the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
The last thing that can be changed from the main menu is the name of the HPN. This name will also be registered into the mesh DNS. All changes will only take effect after selecting the SUBMIT button. Additional features can be reached via the &amp;quot;More features&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
=== More features ===&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-features-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
==== Configure / Align / Stats ====&lt;br /&gt;
&lt;br /&gt;
[[Image:HPN-configure-html.png|border|300px]][[Image:HPN-align-html.png|border|300px]][[Image:HPN-stats-html.png|border|300px]]&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
&lt;br /&gt;
[[High_Performance_Node_-_Specification]]&lt;br /&gt;
&lt;br /&gt;
== Upgrades ==&lt;br /&gt;
All the HPN nodes in a mesh will look for new firmware updates from the GateWay node on a regular basis. New firmware is placed inside a special directory on the GateWay node and it is made available, via ftp, to all the other HPN nodes in the mesh. Each HPN nodes will compare the firmware from this directory with it&#039;s current version of firmware to determine if it&#039;s newer. If new firmware is available, then the node will download and untar the new firmware onto a spare partition on the flash disk. After that all the custom configurations are copied over to the new partition. The HPN will then change the active partition to the new one and it will reboot with the new firmware. If someting should go wrong with the upgrade, then the HPN will revert back to the previous version of firmware.&lt;br /&gt;
&lt;br /&gt;
The GateWay node will look for new firmware somewhere on the Internet or from the WISP box. If available it will download the new firmware and place it into the special ftp directory.&lt;br /&gt;
&lt;br /&gt;
== Typical Outdoor Range at 5.8Ghz ==&lt;br /&gt;
At this stage we haven&#039;t found a testing site that is suitable for our tests. The following is just gestimates and it still needs to be tested.&lt;br /&gt;
&lt;br /&gt;
* Omni to Omni: up to xx km (2km?)&lt;br /&gt;
* Panel to Omni: up to xx km (5km?)&lt;br /&gt;
* Panel to Panel: up to xx km (10km?)&lt;br /&gt;
* External to External: more than xx km (20km?), depending on antenna type&lt;br /&gt;
&lt;br /&gt;
Now for some test results:&lt;br /&gt;
For our first test we selected a friendly site for the panel-to-panel test. We selected Anita&#039;s home because she is just over 10km from Meraka and there is a clear line of site between both sites (this is also our longest 11a link so far). Another reason is that we already have a 32bBi directional antenna, from an existing installation on Meraka&#039;s roof, that is pointing directly to her home. &lt;br /&gt;
&lt;br /&gt;
We used one of our new routers for this site, but we replaced the 5.8Ghz omni antenna with a 27dBi grid antenna so that we could have one link to login to the router, while we can do some tests on the second antenna.&lt;br /&gt;
&lt;br /&gt;
Here is a picture of Anita&#039;s husband with the router the he installed on their roof.&lt;br /&gt;
[Image:002.jpg]&lt;br /&gt;
&lt;br /&gt;
== Regulatory ==&lt;br /&gt;
Wirelss equipment that operate in the ISM bands do not need an spectrum licence, but they need to be ICASA approved. All the wifi adapters inside the HPN nodes are ICASA approved. From recent media reports regarding DABBA communications and there equipent in the Orange Farm area, it seems like our HPN node needs to get ICASA approval for the complete assembled HPN node as well. Every node should have it&#039;s own ICASA sticker on the back.&lt;br /&gt;
&lt;br /&gt;
== Using WEP/WPA in adhoc mode ==&lt;br /&gt;
&lt;br /&gt;
One of the requirements of the High Performance Node is to have WEP or WPA enabled between the wireless links of the mesh nodes. This is one of the functionalities that we would like to sort out before we install any of the nodes in the field. It&#039;s very difficult to change the encryption mode after an installation because the mesh nodes will lose connectivity if one node is upgraded to use WEP, while another is still using older software without WEP.&lt;br /&gt;
&lt;br /&gt;
WEP and WPA are both methods to enable the encryption of data that it is send over the air. WEP (Wired equivalence privacy) is an older standard and it makes use of a WEP encryption engine while the newer WPA standard added the use of an AES encryption engine. WEP encryption has some security flaws embedded into the protocol and there are several tools available on the Internet that can crack WEP keys. These tools are more effective with the cracking of 64bit WEP keys than with 128bit keys and they require a large amount of captured data and processing power to crack a key. Note that not all WEP keys can be cracked, but only weak keys and that flaw was addressed and fixed by WPA.&lt;br /&gt;
&lt;br /&gt;
Wireless adapters on Unix Systems can operate in three different modes: Client, Hostap (Access Point) and Adhoc mode. Most of the implementations of wireless (802.11) networks are based on a model where there is one Access Point with several wireless clients attached to to it. &lt;br /&gt;
&lt;br /&gt;
[[Image:AP-client.png|center|One Access point with many nodes]]&lt;br /&gt;
 &lt;br /&gt;
Wireless Mesh networks make use of the less tested Adhoc mode of 802.11.&lt;br /&gt;
&lt;br /&gt;
[[Image:Adhoc.png|center|Many nodes using Adhoc mode (many point to point links)]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
WEP and WPA requires a couple of kld&#039;s to be loaded before they can be configured. The following kld&#039;s should be added to loader.conf&lt;br /&gt;
wlan_acl_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_amrr_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_ccmp_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_tkip_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_wep_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
wlan_xauth_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== WEP ====&lt;br /&gt;
Enable and test WEP in Adhoc mode on the HPN.&lt;br /&gt;
WEP makes use of a single PSK that needs to be configured on all the wireless nodes. Any node or wireless device that is configured with this PSK will have the capability to crypt and decrypt these wireless packets. There are two methods to configure WEP in FreeBSD. You can use either  use ifconfig directly or you can make use of the WPA supplicant utility.&lt;br /&gt;
&lt;br /&gt;
ifconfig e.g.&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0 10.10.1.2/24 wep deftxkey 1 wepkey 128bitwepison&lt;br /&gt;
 mesh-9e69:~ # ifconfig ath0&lt;br /&gt;
 ath0: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; metric 0 mtu 1500&lt;br /&gt;
        ether 00:80:48:50:9e:69&lt;br /&gt;
        inet6 fe80::280:48ff:fe50:9e69%ath0 prefixlen 64 scopeid 0x1&lt;br /&gt;
        inet6 fd9c:6829:597c:20:280:48ff:fe50:9e69 prefixlen 64&lt;br /&gt;
        inet6 fd9c:6829:597c:20:: prefixlen 64 anycast&lt;br /&gt;
        inet 10.10.1.2 netmask 0xffffff00 broadcast 10.10.1.255&lt;br /&gt;
        media: IEEE 802.11 Wireless Ethernet autoselect mode 11g &amp;lt;adhoc&amp;gt;&lt;br /&gt;
        status: associated&lt;br /&gt;
        ssid ptamesh channel 13 (2472 Mhz 11g) bssid 56:e5:be:30:14:5a&lt;br /&gt;
        authmode OPEN privacy ON deftxkey 1 wepkey 1:104-bit txpower 31.5&lt;br /&gt;
        scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi11g 7&lt;br /&gt;
        roam:rate11g 5 protmode CTS burst&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Enable WEP on three mesh nodes and test connectivity.&lt;br /&gt;
 mesh-9e69:~ # ping6 ff02::1%ath0&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9e69%ath0, icmp_seq=87 hlim=64 time=2.122 ms&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9ddd%ath0, icmp_seq=87 hlim=64 time=5.625 ms(DUP!)&lt;br /&gt;
 16 bytes from fe80::280:48ff:fe50:9a44%ath0, icmp_seq=87 hlim=64 time=32.358 ms(DUP!)&lt;br /&gt;
&lt;br /&gt;
Everything seems to work fine (as expeted) with WEP enabled in the mesh.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WPA&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WPA was designed to work in an environment where you have one AP and several clients and not for Adhoc (mesh) networks. On the AP you have the Authenticator software and on the client you have the supplicant software. This means that if one would like to use WPA to it&#039;s full then every mesh node needs to be an Authenticator for all the other nodes it can see, as well as a supplicant for every node it can see. According to the WPA design document http://wirelessafrica.meraka.org.za/wiki/images/3/39/Wpa_supplicant-devel-04.pdf one can use WPA in Adhoc mode only in a static way with PSK&#039;s:&lt;br /&gt;
 IEEE 802.11 operation mode (Infrastucture/IBSS).&lt;br /&gt;
 0 = infrastructure (Managed) mode, i.e., associate with an AP.&lt;br /&gt;
 1 = IBSS (ad-hoc, peer-to-peer)&lt;br /&gt;
 Note: IBSS can only be used with key_mgmt NONE (plaintext and static WEP) and key_mgmt=WPA-&lt;br /&gt;
 NONE (ﬁxed group key TKIP/CCMP). In addition, ap_scan has to be set to 2 for IBSS. WPA-None requires&lt;br /&gt;
 following network block options: proto=WPA, key_mgmt=WPA-NONE, pairwise=NONE, group=TKIP&lt;br /&gt;
 (or CCMP, but not both), and psk must also be set (either directly or using ASCII passphrase).&lt;br /&gt;
&lt;br /&gt;
This is methods is very similar to the way that WEP is being used. This means the the only advantage of using WPA over WEP is that one can make use of the AES encryption engine that comes with WPA. Please note that with this mode of WPA and with WEP that anyone can decrypt the data being send over the air if they get hold of the mesh-wide PSK that is configured on every node in the network. If security is of importance them end users should consider the use of point-to-point security mechanisms like VPN&#039;s.&lt;br /&gt;
&lt;br /&gt;
The configuration of WPA is not supported in command line mode, but only with the wpa_supplicant software. This is an example of a wpa_supplicant.conf file to enable WPA in Adhoc mode:&lt;br /&gt;
&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 #&lt;br /&gt;
 network={&lt;br /&gt;
   ssid=&amp;quot;ptamesh&amp;quot;&lt;br /&gt;
 # Channel  13 : 2472  Mhz 11g&lt;br /&gt;
   frequency=2472&lt;br /&gt;
   mode=1&lt;br /&gt;
   proto=WPA&lt;br /&gt;
   key_mgmt=WPA-NONE&lt;br /&gt;
   pairwise=NONE&lt;br /&gt;
   group=TKIP&lt;br /&gt;
   psk=&amp;quot;mesh-ipv6&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
To start the WPA software during boot-up one needs to add WPA to the ifconfig line in rc.conf. E.g.&lt;br /&gt;
&lt;br /&gt;
 ifconfig_ath0=&amp;quot;WPA 10.10.1.1/24 mode 11g mediaopt adhoc channel 13 ssid ptamesh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Test configuration:&lt;br /&gt;
&lt;br /&gt;
    Host A ----- wep ------- Host B ----- wep Host C&lt;br /&gt;
&lt;br /&gt;
Unfortunately WPA did not work as easy as WEP, so it&#039;s off to debugging.&lt;br /&gt;
&lt;br /&gt;
Starting wpa_supplicant in the foreground with debugging enabled. E.g&lt;br /&gt;
&lt;br /&gt;
 wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
&lt;br /&gt;
The debugging output shows that something happens that initiates a wlan scan operation, while the card is in Adhoc mode. This should not happen and wpa_supplicant software never completes the configuration due to this error.&lt;br /&gt;
&lt;br /&gt;
 mesh-9ddd:~ # wpa_supplicant -d -i ath0 -c /etc/wpa_supplicant.conf&lt;br /&gt;
 Initializing interface &#039;ath0&#039; conf &#039;/etc/wpa_supplicant.conf&#039; driver &#039;default&#039; &lt;br /&gt;
 ctrl_interface &#039;N/A&#039; bridge &#039;N/A&#039;&lt;br /&gt;
 Configuration file &#039;/etc/wpa_supplicant.conf&#039; -&amp;gt; &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 Reading configuration file &#039;/etc/wpa_supplicant.conf&#039;&lt;br /&gt;
 ap_scan=2&lt;br /&gt;
 Priority group 0&lt;br /&gt;
   id=0 ssid=&#039;ptamesh&#039;&lt;br /&gt;
 Initializing interface (2) &#039;ath0&#039;&lt;br /&gt;
 EAPOL: SUPP_PAE entering state DISCONNECTED&lt;br /&gt;
 EAPOL: KEY_RX entering state NO_KEY_RECEIVE&lt;br /&gt;
 EAPOL: SUPP_BE entering state INITIALIZE&lt;br /&gt;
 EAP: EAP entering state DISABLED&lt;br /&gt;
 EAPOL: External notification - portEnabled=0&lt;br /&gt;
 EAPOL: External notification - portValid=0&lt;br /&gt;
 Own MAC address: 00:80:48:50:9d:dd&lt;br /&gt;
 wpa_driver_bsd_set_wpa: enabled=1&lt;br /&gt;
 wpa_driver_bsd_set_wpa_internal: wpa=3 privacy=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=0&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=1&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=2&lt;br /&gt;
 wpa_driver_bsd_del_key: keyidx=3&lt;br /&gt;
 wpa_driver_bsd_set_countermeasures: enabled=0&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 Setting scan request: 0 sec 100000 usec&lt;br /&gt;
 Added interface ath0&lt;br /&gt;
 State: DISCONNECTED -&amp;gt; SCANNING&lt;br /&gt;
 Trying to associate with SSID &#039;ptamesh&#039;&lt;br /&gt;
 Cancelling scan request&lt;br /&gt;
 WPA: clearing own WPA/RSN IE&lt;br /&gt;
 Automatic auth_alg selection: 0x1&lt;br /&gt;
 wpa_driver_bsd_set_auth_alg alg 0x1 authmode 1&lt;br /&gt;
 WPA: No WPA/RSN IE available from association info&lt;br /&gt;
 WPA: Set cipher suites based on configuration&lt;br /&gt;
 WPA: Selected cipher suites: group 8 pairwise 1 key_mgmt 16 proto 1&lt;br /&gt;
 WPA: clearing AP WPA IE&lt;br /&gt;
 WPA: clearing AP RSN IE&lt;br /&gt;
 WPA: using GTK TKIP&lt;br /&gt;
 WPA: using PTK NONE&lt;br /&gt;
 WPA: using KEY_MGMT WPA-NONE&lt;br /&gt;
 WPA: Set own WPA IE default - hexdump(len=24): dd 16 00 50 f2 01 01 00 00 50 &lt;br /&gt;
 f2 02 01 00 00 50 f2 00 01 00 00 50 f2 00&lt;br /&gt;
 No keys have been configured - skip key clearing&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 wpa_driver_bsd_set_drop_unencrypted: enabled=1&lt;br /&gt;
 State: SCANNING -&amp;gt; ASSOCIATING&lt;br /&gt;
 wpa_driver_bsd_associate: ssid &#039;ptamesh&#039; wpa ie len 24 pairwise 0 group 2 key &lt;br /&gt;
 mgmt 4&lt;br /&gt;
 ioctl[SIOCS80211, op 22, len 24]: Invalid argument&lt;br /&gt;
 Association request to the driver failed&lt;br /&gt;
 wpa_driver_bsd_set_key: alg=TKIP addr=ff:ff:ff:ff:ff:ff key_idx=0 set_tx=1 &lt;br /&gt;
 seq_len=6 key_len=32&lt;br /&gt;
 Cancelling authentication timeout&lt;br /&gt;
 State: ASSOCIATING -&amp;gt; COMPLETED&lt;br /&gt;
 CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (auth) [id=-1 &lt;br /&gt;
 id_str=]&lt;br /&gt;
 EAPOL: External notification - portControl=ForceAuthorized&lt;br /&gt;
&lt;br /&gt;
Next was to install fresh copy of the FreeBSD src code onto my PC. I found the wpa_supplicant source code under /usr/src/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c Build a new driver from source code and run it on a router. After that I&#039;ve added in a lot of printf statements to trace how the driver works and to locate the code that puts the wifi card in scanning mode. In the end I found out that wpa_supplicant driver did not put the card in scanning mode, but it somehow caused the 802.11 stack to start the scanning. Unfortunately I don&#039;t know enough about the 802.11 code in FreeBSD to do any mode debugging. I&#039;ve send a mail about the problem to one of the FreeBSD mailing lists and the originator of most of the 802.11 code in FreeBSD (Sam Leffler) said I must log a problem report. So I logged a problem report with FreeBSD and now we have to wait and see if someone to take responsibility to fix this problem. More information on the problem report can be found at: http://www.freebsd.org/cgi/query-pr.cgi?pr=126822&lt;br /&gt;
&lt;br /&gt;
For now I recommend that we make use of WEP instead of WPA in our implementation as it is working and there isn&#039;t such a big advantage in using WPA over WEP in this mode except for the encryption algorithm that changes from WEP to AES.&lt;br /&gt;
&lt;br /&gt;
== Antenna calculations ==&lt;br /&gt;
&lt;br /&gt;
Every HP-node has two 5.15-5.6 GHz antennas. The one as a build in patch antenna and the other is an 5.1-5.8 GHz omni-directional antenna. The idea is that the patch antenna of a node will either be aligned to the omni or the patch antenna of another node. The following calculations is to get an feeling of what distances should be possible between these antennas.&lt;br /&gt;
&lt;br /&gt;
South African Wifi channels:&lt;br /&gt;
 Channel   1 : 2412  Mhz 11g          Channel  48 : 5240  Mhz 11a&lt;br /&gt;
 Channel   2 : 2417  Mhz 11g          Channel  52 : 5260* Mhz 11a&lt;br /&gt;
 Channel   3 : 2422  Mhz 11g          Channel  56 : 5280* Mhz 11a&lt;br /&gt;
 Channel   4 : 2427  Mhz 11g          Channel  60 : 5300* Mhz 11a&lt;br /&gt;
 Channel   5 : 2432  Mhz 11g          Channel  64 : 5320* Mhz 11a&lt;br /&gt;
 Channel   6 : 2437  Mhz 11g          Channel 100 : 5500* Mhz 11a&lt;br /&gt;
 Channel   7 : 2442  Mhz 11g          Channel 104 : 5520* Mhz 11a&lt;br /&gt;
 Channel   8 : 2447  Mhz 11g          Channel 108 : 5540* Mhz 11a&lt;br /&gt;
 Channel   9 : 2452  Mhz 11g          Channel 112 : 5560* Mhz 11a&lt;br /&gt;
 Channel  10 : 2457  Mhz 11g          Channel 116 : 5580* Mhz 11a&lt;br /&gt;
 Channel  11 : 2462  Mhz 11g          Channel 120 : 5600* Mhz 11a&lt;br /&gt;
 Channel  12 : 2467  Mhz 11g          Channel 124 : 5620* Mhz 11a&lt;br /&gt;
 Channel  13 : 2472  Mhz 11g          Channel 128 : 5640* Mhz 11a&lt;br /&gt;
 Channel  36 : 5180  Mhz 11a          Channel 132 : 5660* Mhz 11a&lt;br /&gt;
 Channel  40 : 5200  Mhz 11a          Channel 136 : 5680* Mhz 11a&lt;br /&gt;
 Channel  44 : 5220  Mhz 11a          Channel 140 : 5700* Mhz 11a&lt;br /&gt;
&lt;br /&gt;
HP-Node detailed specs: http://wirelessafrica.meraka.org.za/wiki/images/0/07/WLAN-A0033.pdf&lt;br /&gt;
&lt;br /&gt;
Pigtail detail specs: http://wirelessafrica.meraka.org.za/wiki/images/0/0a/Ca178_cable_assemblies_datasheet.pdf&lt;br /&gt;
&lt;br /&gt;
Wireless adapter detail specs: http://wirelessafrica.meraka.org.za/wiki/images/2/21/Wlm54sag23.pdf&lt;br /&gt;
&lt;br /&gt;
OR the Mikrotik version of the same adapter called a R52H (also manufactured by Compex, but usually cheaper)&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:R52H.pdf&lt;br /&gt;
&lt;br /&gt;
Another popular adapter is the DCMA-82 from Wistron. They have better RX sensitivity, but lower output power and they are a bit more expensive than the Compex cards. In some of the discussions that I&#039;ve seen they state that the DCMA-82 has much cleaner output power, better RX sensitivity, and a lower failure rate/quality issues than Compex&#039;s cards.&lt;br /&gt;
http://wirelessafrica.meraka.org.za/wiki/index.php/Image:DCMA-82.pdf&lt;br /&gt;
&lt;br /&gt;
Node specs summary:&lt;br /&gt;
 Patch antenna            - 21-23 dBi,   16 deg H,  11 deg V, 5.15 -5.6 GHz&lt;br /&gt;
 5Ghz Omni antenna        - 8-11 dBi,    360 deg H, 10 deg V, 5.1 - 5.85 GHz&lt;br /&gt;
 2.4Ghz Omni antenna      - 7.5-8.5 dBi, 360 deg H, 12 deg V, 2.4 - 2.5 GHz&lt;br /&gt;
 30mm U.FL-SMA pigtail    - RG178 cable insertion loss, 2.4 GHZ = -1.1dB, 5.6 GHz = -2dB&lt;br /&gt;
 Compex WLM54AG23 adapter - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            23dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
                            17dBm @ 54Mbps&lt;br /&gt;
 Mikrotik (Compex) R52H   - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -70 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            24dBm @ 6-24Mbps&lt;br /&gt;
                            22dBm @ 36Mbps&lt;br /&gt;
                            19dBm @ 48Mbps&lt;br /&gt;
 Wistron DCMA-82          - IEEE 802.11a/b/g (2.4/5GHz)&lt;br /&gt;
                          - AR5413/5414(AR5006X/XS) Atheros Chipset&lt;br /&gt;
                          - RECEIVER SENSITIVITY 802.11a - &lt;br /&gt;
                            -90 dBm @ 6Mbps&lt;br /&gt;
                            -82 dBm @ 36Mbps&lt;br /&gt;
                            -72 dBm @ 54Mbps&lt;br /&gt;
                          - OUTPUT POWER 802.11a&lt;br /&gt;
                            22.5dBm @ 6-24Mbps&lt;br /&gt;
                            21.5dBm @ 36Mbps&lt;br /&gt;
                            18dBm @ 48Mbps&lt;br /&gt;
&lt;br /&gt;
I could not find any receive sensitivity info for ranges between 6Mbps and 54Mbps for the WLM54AG23. The closest I could find was the specs of another manufacturer card, using the same Atheros chipset as the WLM54AG23. Here is the receive sensitivity info for a WMIA-166AG Dual-Band miniPCI module (802.11a/g)&lt;br /&gt;
Nominal Temp Range:&lt;br /&gt;
  6Mbps 10-5 BER @ -90 dBm, typical&lt;br /&gt;
  9Mbps 10-5 BER @ -89 dBm, typical&lt;br /&gt;
 12Mbps 10-5 BER @ -88 dBm, typical&lt;br /&gt;
 18Mbps 10-5 BER @ -86 dBm, typical&lt;br /&gt;
 24Mbps 10-5 BER @ -82 dBm, typical&lt;br /&gt;
 36Mbps 10-5 BER @ -78 dBm, typical&lt;br /&gt;
 48Mbps 10-5 BER @ -72 dBm, typical&lt;br /&gt;
 54Mbps 10-5 BER @ -68 dBm, typical &lt;br /&gt;
&lt;br /&gt;
The WLM54AG23 is not the best wifi adapter in the market, but it gives a good compromise between price vs performance. If one need to push the limits of a specific link then I would probable select the SR5 from Ubiquity. They have excellent TX power and RX sensitivity.&lt;br /&gt;
 &lt;br /&gt;
There are lots of wifi/antenna/distance calculators available on the WEB. Most of these calculators cannot calculate the max distance for a link, you have to specify the distance and it will calculate you dBm margin. Links to a couple of Wifi/antenna/distance calculators:&lt;br /&gt;
&lt;br /&gt;
 http://www.radiolabs.com/stations/wifi_calc.html&lt;br /&gt;
 http://www.zytrax.com/tech/wireless/calc.htm&lt;br /&gt;
 http://www.widgetbox.com/widget/wifi-link-calculator&lt;br /&gt;
 http://www.wifiextreme.com.au/index.php?main_page=page_5&lt;br /&gt;
 http://www.rflinx.com/help/calculations&lt;br /&gt;
 http://www.olotwireless.net/castella/radio.htm&lt;br /&gt;
&lt;br /&gt;
Here are some formulas use to calculate a link budget:&lt;br /&gt;
  Free space loss = 36.56 + 20Log10(Frequency) + 20Log10(Dist in miles)&lt;br /&gt;
  mW to dBm = 10Log10(milliWatts) + 30&lt;br /&gt;
  dBm to mW = 10(dBm/10)&lt;br /&gt;
  RX Power = Margin - RX sensitivity&lt;br /&gt;
  Theoretical margin = TX power budget + RX power budget - free space loss&lt;br /&gt;
  SAD factor = Theoretical margin/TX power budget * 100 and shows the percentage of spare power on transmission.&lt;br /&gt;
&lt;br /&gt;
(Free Space Loss) = 92.5 + (20 Log fequency) + (20 log km distance)&lt;br /&gt;
&lt;br /&gt;
Free space loss @ 5400GHz:&lt;br /&gt;
 1km = -107.07dB      11km = -128.028dB&lt;br /&gt;
 2km = -113.09dB      12km = -128.784dB&lt;br /&gt;
 3km = -116.61dB      13km = -129.479dB&lt;br /&gt;
 4km = -119.11dB      14km = -130.123dB&lt;br /&gt;
 5km = -121.05dB      15km = -130.722dB&lt;br /&gt;
 6km = -122.63dB      16km = -131.282dB&lt;br /&gt;
 7km = -123.97dB      17km = -131.809dB&lt;br /&gt;
 8km = -125.13dB      18km = -132.305dB&lt;br /&gt;
 9km = -126.15dB      19km = -132.775dB&lt;br /&gt;
 10km = -127.07dB     20km = -133.221dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPNode with a 5Ghz patch to omni link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Omni: &lt;br /&gt;
 Min link distance @ 54Mbps 0.9km:              Max link distance @ 54Mbps 1.55km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -106dB                      Free space loss = -111dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 6.9km:              Max link distance @ 24Mbps 12.3km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 34km free space  = -124dB                      Free space loss = -129dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 17km:                Max link distance @ 6Mbps 30.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 omni min         = 8dBi                        omni max        = 11dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 34km free space  = -132dB                      Free space loss = -137dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
The following are the minimum and maximum link calculations for our HPnodes with a 5Ghz patch to patch link under ideal conditions with a decent fresnel zone. Just note that one very seldom get ideal conditions in real life installations. These calculations are done to get a feeling for what to expect from our equipment. Link distance calculations was done with these calculator at http://www.swisswireless.org/wlan_calc_en.html. I&#039;ve first played around with the Free-space-loss values in the Link Budget tool until I would get a 6dB margin. They recommend to take a sufficient security margin (5-6 dB or more on large distances). Then I&#039;ve used the Free space loss tool to convert my Free-space-loss value to a km distance. Lets do some calculations to see what we get.&lt;br /&gt;
&lt;br /&gt;
Patch - Patch:&lt;br /&gt;
 Min link distance @ 54Mbps 3.9km:              Max link distance @ 54Mbps 6km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 17dBm                       TX power        = 17dBm&lt;br /&gt;
 RX sensitivity   = -70dBm                      RX sensitivity  = -70dBm&lt;br /&gt;
 Free space loss  = -119dB                      Free space loss = -123dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 24Mbps 30.9km:             Max link distance @ 24Mbps 38.9km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -82dBm                      RX sensitivity  = -82dBm&lt;br /&gt;
 Free space loss  = -137dB                      Free space loss = -139dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;br /&gt;
&lt;br /&gt;
 Min link distance @ 6Mbps 77.6km:              Max link distance @ 6Mbps 123km:&lt;br /&gt;
 patch min        = 21dBi                       patch max       = 23dBm&lt;br /&gt;
 pigtail          = -2dBm                       pigtail         = -2dBm&lt;br /&gt;
 TX power         = 23dBm                       TX power        = 23dBm&lt;br /&gt;
 RX sensitivity   = -90dBm                      RX sensitivity  = -90dBm&lt;br /&gt;
 Free space loss  = -145dB                      Free space loss = -149dB&lt;br /&gt;
 link margin      = 6dB                         link margin     = 6dB&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=File:002.jpg&amp;diff=4598</id>
		<title>File:002.jpg</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=File:002.jpg&amp;diff=4598"/>
		<updated>2009-04-07T10:44:54Z</updated>

		<summary type="html">&lt;p&gt;JHugo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
	<entry>
		<id>http://wirelessafrica.meraka.org.za/wiki/index.php?title=EeePC_and_FreeBSD_page&amp;diff=4574</id>
		<title>EeePC and FreeBSD page</title>
		<link rel="alternate" type="text/html" href="http://wirelessafrica.meraka.org.za/wiki/index.php?title=EeePC_and_FreeBSD_page&amp;diff=4574"/>
		<updated>2009-03-24T12:04:40Z</updated>

		<summary type="html">&lt;p&gt;JHugo: /* Putting FreeBSD onto my EeePC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Development Team Research Pages]][[Category: Johann&#039;s Research Pages]]&lt;br /&gt;
&lt;br /&gt;
== Putting FreeBSD onto my EeePC ==&lt;br /&gt;
&lt;br /&gt;
OK, finally get around to it. First read John&#039;s info on the wiki: http://wiki.meraka.csir.co.za/wiki/index.php/Category:ASUS_eeePC&lt;br /&gt;
&lt;br /&gt;
Then copy John&#039;s FreeBSD EeePC distribution (img.tgz) to my PC. Follow Werner&#039;s instructions to get the distro on USB memory stick&lt;br /&gt;
&lt;br /&gt;
 fdisk -I da0&lt;br /&gt;
 fdisk -B da0&lt;br /&gt;
 bsdlabel -w da0s1 auto&lt;br /&gt;
 bsdlabel -B da0s1&lt;br /&gt;
 newfs /dev/da0s1a&lt;br /&gt;
 mount /dev/da0s1a /mnt&lt;br /&gt;
 tar -xvf img.tgz -C /mnt/&lt;br /&gt;
 echo /dev/da0s1a / ufs rw 1 1 &amp;gt; /mnt/etc/fstab&lt;br /&gt;
 echo ifconfig_DEFAULT=DHCP &amp;gt; /mnt/etc/rc.conf&lt;br /&gt;
 echo hostname=demo &amp;gt;&amp;gt; /mnt/etc/rc.conf&lt;br /&gt;
 umount /mnt&lt;br /&gt;
&lt;br /&gt;
Plug into USB port on EeePC. Select boot form USB (Press ESC at bootup to get menu) Boot FreeBSD Dump WinXP image on a USB disk&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/ad2 of=/dev/da2 bs=4k&lt;br /&gt;
&lt;br /&gt;
Follow instructions above to get FreeBSD on ad2&lt;br /&gt;
&lt;br /&gt;
 fdisk -I ad2&lt;br /&gt;
 fdisk -B ad2&lt;br /&gt;
 bsdlabel -w ad2s1 auto&lt;br /&gt;
 bsdlabel -B ad2s1&lt;br /&gt;
 newfs -U /dev/ad2s1a&lt;br /&gt;
 mount /dev/ad2s1a /mnt&lt;br /&gt;
 tar -cf - --exclude /mnt / | tar -xvpf - -C /mnt&lt;br /&gt;
 echo /dev/ad2s1a / ufs rw 1 1 &amp;gt; /mnt/etc/fstab&lt;br /&gt;
&lt;br /&gt;
Enable ipv6, ssh and moused in /etc/rc.conf&lt;br /&gt;
&lt;br /&gt;
 ipv6_enable=&amp;quot;YES&amp;quot;&lt;br /&gt;
 sshd_enable=&amp;quot;YES&amp;quot;&lt;br /&gt;
 moused_enable=&amp;quot;YES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Shutdown and reboot.&lt;br /&gt;
&lt;br /&gt;
Install Xorg and KDE&lt;br /&gt;
&lt;br /&gt;
setenv PACKAGEROOT ftp://ftp2.za.freebsd.org&lt;br /&gt;
 pkg_add -r xorg&lt;br /&gt;
 pkg_add -r kde-lite&lt;br /&gt;
&lt;br /&gt;
Enable and test sound. Add the following line in /boot/loader.conf&lt;br /&gt;
&lt;br /&gt;
 snd_hda_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Search for app that can show the battery status in X. Install and test desktopbsd-tools. Battery status works. Test wifi install gui. Not impressed, it only supports WEP&lt;br /&gt;
&lt;br /&gt;
 pkg_add -r desktopbsd-tools&lt;br /&gt;
&lt;br /&gt;
Battery status works. Test wifi install gui. Not impressed, it only supports WEP. Delete package and search for other battery apps. See that KDE has a package that can show battery status. Install klaptopdaemon.&lt;br /&gt;
&lt;br /&gt;
 pkg_add -r kdeutils-klaptopdaemon&lt;br /&gt;
&lt;br /&gt;
Battle to get it to work. Eventually find out that you have to load AMP (advanced power management). Edit /etc/rc.conf and add the following lines.&lt;br /&gt;
&lt;br /&gt;
 amp_enable=&amp;quot;YES&amp;quot;&lt;br /&gt;
 ampd_enable=&amp;quot;YES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Shutdown and reboot&lt;br /&gt;
&lt;br /&gt;
Login and start KDE. Enable battery monitor under kde &amp;quot;Start&amp;quot; &amp;quot;Settings&amp;quot; &amp;quot;Power control&amp;quot; &amp;quot;Laptop Battery&amp;quot;. Yes, I get a new battery icon. Remove power and test it. Battery shows power, but reporting of &amp;quot;time left&amp;quot; is broken.&lt;br /&gt;
&lt;br /&gt;
Enable power manager to preserve power while running on battery. Add following to rc.conf&lt;br /&gt;
&lt;br /&gt;
 powerd_enable=&amp;quot;YES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and lower CPU speed. Add the following to /etc/sysctl.conf&lt;br /&gt;
&lt;br /&gt;
 dev.cpu.0.cx_lowest=C3 &lt;br /&gt;
&lt;br /&gt;
Try to get dstumbler to work so that we can use the EeePC as a wireless measurement PC. Install BSD-airtools (dstumbler part of it), but it looks like the package is broken. Search for other packages that we can use, but I can&#039;t find anything. Start looking at what command line stats available.&lt;br /&gt;
&lt;br /&gt;
Try to enable virtual screen resolution in Xorg. Add the following in the Screen section of xorg.conf&lt;br /&gt;
&lt;br /&gt;
 SubSection &amp;quot;Display&amp;quot;&lt;br /&gt;
               Viewport   0 0&lt;br /&gt;
               Depth     24&lt;br /&gt;
               Virtual 1200 720&lt;br /&gt;
 EndSubSection&lt;br /&gt;
&lt;br /&gt;
Restart X, but it doesn&#039;t work. Do a lot of reading and playing, but I cannot get it to work.&lt;/div&gt;</summary>
		<author><name>JHugo</name></author>
	</entry>
</feed>