Merge branch 'release-0.6.6'
[olsrd.git] / README-LINUX_NL80211.txt
1 Abstract
2 ==========================================================================
3 This document describes the OLSRd link quality extension that utilizes
4 linux NL80211 to apply wireless link information in the link quality
5 calculation.
6
7 Design
8 ==========================================================================
9 Each second the latest information is gathered from linux NL80211. This
10 data contains the MAC addresses of the neighbor stations. To match this
11 MAC address with the neighbors IP, the linux ARP cache is queried.
12
13 Implementation
14 ==========================================================================
15 The extension adds an external dependency to build the code namely libnl.
16 This library is used to simplify the IPC communication with linux kernel.
17
18 The files src/linux/nl80211_link_info.* are doing the actual wireless link
19 status gathering. A modified link ffeth quality plugin will use the new
20 link status information for link quality calculations. This link quality
21 plugin is using #ifdef LINUX_NL80211 statements as much as possible to
22 make it easy to merge the code back into the original ffeth plugin. The
23 benefit of merging those link quality plugins will be less duplicate code
24 and less code to maintain.
25
26 Cost calculation
27 ==========================================================================
28 A penalty is added to the old cost from the ffeth plugin, depending on the
29 signal strength and the link bandwidth. Both penalties can have a maximum
30 value of 1.0.
31
32 Costs = EXT + BandwidthPenalty + SignalPenalty
33
34 BandwidthPenalty = 1 - ( ActualBandwidth / ReferenceBandwidth)
35
36 SignalPenalty = LookupSignalPenaltyTable(SignalStrenghtOfNeighbor)
37
38 Both penalties are added into the two unused bytes of LQ_HELLO messages.
39 Currently the nodes won't use this value when received from their neighbor
40 and only use their own NL80211 information.
41
42 Considerations
43 ==========================================================================
44 It is designed mainly for IPv4, but should work with minimal effort on
45 IPv6 as well. Majority of that work will be actually testing it on IPv6.
46
47 The netlink code is blocking, this shouldn't cause major problems but a
48 more ideal design would be non-blocking.
49
50 Current version does not use the NL80211 data received from it's neighbors.
51 A discussion is needed to find out if this is required or not.
52
53 Currently both penalties have a maximum of 1.0, which might not be enough.
54 If that's the case, a configurable multiplier for both penalties might be
55 interesting to add.
56
57 The value for ReferenceBandwidth is hardcoded to 54 MBit.
58 The values in the signal strength penalty table are hardcoded.
59 It's desirable to have them configurable through the configuration file.
60
61 Add configuration option to completely disable the use of NL80211 data, in
62 case the plugin is merged with the existing ff_eth link quality plugin.