1.
Abstract==========================================================================This
document describes the OLSRd link quality extension that
utilizeslinux NL80211 to apply wireless link information in the
link
qualitycalculation.Design==========================================================================Each
second the latest information is gathered from linux NL80211.
Thisdata contains the MAC addresses of the neighbor stations. To
match thisMAC address with the neighbors IP, the linux ARP cache is
queried.Implementation==========================================================================The
extension adds an external dependency to build the code namely
libnl.This library is used to simplify the IPC communication with
linux kernel.The files src/linux/nl80211_link_info.* are doing the
actual wireless linkstatus gathering. A modified link ffeth quality
plugin will use the newlink status information for link quality
calculations. This link qualityplugin is using #ifdef LINUX_NL80211
statements as much as possible tomake it easy to merge the code
back into the original ffeth plugin. Thebenefit of merging those
link quality plugins will be less duplicate codeand less code to
maintain.Cost
calculation==========================================================================A
penalty is added to the old cost from the ffeth plugin, depending
on thesignal strength and the link bandwidth. Both penalties can
have a maximumvalue of 1.0.Costs = EXT + BandwidthPenalty +
SignalPenaltyBandwidthPenalty = 1 - ( ActualBandwidth /
ReferenceBandwidth)SignalPenalty =
LookupSignalPenaltyTable(SignalStrenghtOfNeighbor)Both penalties
are added into the two unused bytes of LQ_HELLO messages.Currently
the nodes wont use this value when received from their neighborand
only use their own NL80211
information.Considerations==========================================================================It
is designed mainly for IPv4, but should work with minimal effort
onIPv6 as well. Majority of that work will be actually testing it
on IPv6.The netlink code is blocking, this shouldnt cause major
problems but amore ideal design would be non-blocking.Current
version does not use the NL80211 data received from its neighbors.A
discussion is needed to find out if this is required or
not.Currently both penalties have a maximum of 1.0, which might not
be enough.If thats the case, a configurable multiplier for both
penalties might beinteresting to add.The value for
ReferenceBandwidth is hardcoded to 54 MBit.The values in the signal
strength penalty table are hardcoded.Its desirable to have them
configurable through the configuration file.Add configuration
option to completely disable the use of NL80211 data, incase the
plugin is merged with the existing ff_eth link quality plugin.