SlideShare a Scribd company logo
1 of 1
Abstract
==========================================================================
This document describes the OLSRd link quality extension that utilizes
linux NL80211 to apply wireless link information in the link quality
calculation.

Design
==========================================================================
Each second the latest information is gathered from linux NL80211. This
data contains the MAC addresses of the neighbor stations. To match this
MAC 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 link
status gathering. A modified link ffeth quality plugin will use the new
link status information for link quality calculations. This link quality
plugin is using #ifdef LINUX_NL80211 statements as much as possible to
make it easy to merge the code back into the original ffeth plugin. The
benefit of merging those link quality plugins will be less duplicate code
and less code to maintain.

Cost calculation
==========================================================================
A penalty is added to the old cost from the ffeth plugin, depending on the
signal strength and the link bandwidth. Both penalties can have a maximum
value of 1.0.

Costs = EXT + BandwidthPenalty + SignalPenalty

BandwidthPenalty = 1 - ( ActualBandwidth / ReferenceBandwidth)

SignalPenalty = LookupSignalPenaltyTable(SignalStrenghtOfNeighbor)

Both penalties are added into the two unused bytes of LQ_HELLO messages.
Currently the nodes won't use this value when received from their neighbor
and only use their own NL80211 information.

Considerations
==========================================================================
It is designed mainly for IPv4, but should work with minimal effort on
IPv6 as well. Majority of that work will be actually testing it on IPv6.

The netlink code is blocking, this shouldn't cause major problems but a
more ideal design would be non-blocking.

Current version does not use the NL80211 data received from it's 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 that's the case, a configurable multiplier for both penalties might be
interesting to add.

The value for ReferenceBandwidth is hardcoded to 54 MBit.
The values in the signal strength penalty table are hardcoded.
It's desirable to have them configurable through the configuration file.

Add configuration option to completely disable the use of NL80211 data, in
case the plugin is merged with the existing ff_eth link quality plugin.

More Related Content

Similar to Olsrd linux nl80211_extension

Ccna 4 v5 practice skills assessment – packet tracer
Ccna 4 v5 practice skills assessment – packet tracerCcna 4 v5 practice skills assessment – packet tracer
Ccna 4 v5 practice skills assessment – packet tracerĐồng Quốc Vương
 
Troubleshooting Common Network Related Issues with NetScaler
Troubleshooting Common Network Related Issues with NetScalerTroubleshooting Common Network Related Issues with NetScaler
Troubleshooting Common Network Related Issues with NetScalerDavid McGeough
 
Grokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database clusterGrokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database clusterGrokking VN
 
Think of oracle and mysql bind value
Think of oracle and mysql bind value Think of oracle and mysql bind value
Think of oracle and mysql bind value Louis liu
 
Anatomy of neutron from the eagle eyes of troubelshoorters
Anatomy of neutron from the eagle eyes of troubelshoortersAnatomy of neutron from the eagle eyes of troubelshoorters
Anatomy of neutron from the eagle eyes of troubelshoortersSadique Puthen
 
给11g r2 rac添加listener监听器并静态注册
给11g r2 rac添加listener监听器并静态注册给11g r2 rac添加listener监听器并静态注册
给11g r2 rac添加listener监听器并静态注册maclean liu
 
Create your oracle_apps_r12_lab_with_less_than_us1000
Create your oracle_apps_r12_lab_with_less_than_us1000Create your oracle_apps_r12_lab_with_less_than_us1000
Create your oracle_apps_r12_lab_with_less_than_us1000Ajith Narayanan
 
Ccnav5.org ccna 4-v5_practice_skills_assessment__packet_tracer
Ccnav5.org ccna 4-v5_practice_skills_assessment__packet_tracerCcnav5.org ccna 4-v5_practice_skills_assessment__packet_tracer
Ccnav5.org ccna 4-v5_practice_skills_assessment__packet_tracerĐồng Quốc Vương
 
designandimplementanetwork
designandimplementanetworkdesignandimplementanetwork
designandimplementanetworkAdi Fang
 
Make container without_docker_7
Make container without_docker_7Make container without_docker_7
Make container without_docker_7Sam Kim
 
Software Load Balancer for OpenFlow Complaint SDN architecture
Software Load Balancer for OpenFlow Complaint SDN architectureSoftware Load Balancer for OpenFlow Complaint SDN architecture
Software Load Balancer for OpenFlow Complaint SDN architecturePritesh Ranjan
 
Network simulator 2 a simulation tool for linux
Network simulator 2 a simulation tool for linuxNetwork simulator 2 a simulation tool for linux
Network simulator 2 a simulation tool for linuxPratik Joshi
 
Mikrotik link redundancy solution
Mikrotik link redundancy solution Mikrotik link redundancy solution
Mikrotik link redundancy solution S M Tipu
 
(2) documents e books_cisco_networking_books_training_materials_cnap_-_ont_v5...
(2) documents e books_cisco_networking_books_training_materials_cnap_-_ont_v5...(2) documents e books_cisco_networking_books_training_materials_cnap_-_ont_v5...
(2) documents e books_cisco_networking_books_training_materials_cnap_-_ont_v5...Lary Onyeka
 
The Apache Cassandra ecosystem
The Apache Cassandra ecosystemThe Apache Cassandra ecosystem
The Apache Cassandra ecosystemAlex Thompson
 
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...From single MySQL instance to High Availability: the journey to MySQL InnoDB ...
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...Frederic Descamps
 
Single core design space exploration
Single core design space explorationSingle core design space exploration
Single core design space explorationVishesh Chanana
 

Similar to Olsrd linux nl80211_extension (20)

Ccna 4 v5 practice skills assessment – packet tracer
Ccna 4 v5 practice skills assessment – packet tracerCcna 4 v5 practice skills assessment – packet tracer
Ccna 4 v5 practice skills assessment – packet tracer
 
Troubleshooting Common Network Related Issues with NetScaler
Troubleshooting Common Network Related Issues with NetScalerTroubleshooting Common Network Related Issues with NetScaler
Troubleshooting Common Network Related Issues with NetScaler
 
Nic bonding
Nic bonding Nic bonding
Nic bonding
 
Grokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database clusterGrokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database cluster
 
Think of oracle and mysql bind value
Think of oracle and mysql bind value Think of oracle and mysql bind value
Think of oracle and mysql bind value
 
Anatomy of neutron from the eagle eyes of troubelshoorters
Anatomy of neutron from the eagle eyes of troubelshoortersAnatomy of neutron from the eagle eyes of troubelshoorters
Anatomy of neutron from the eagle eyes of troubelshoorters
 
给11g r2 rac添加listener监听器并静态注册
给11g r2 rac添加listener监听器并静态注册给11g r2 rac添加listener监听器并静态注册
给11g r2 rac添加listener监听器并静态注册
 
Create your oracle_apps_r12_lab_with_less_than_us1000
Create your oracle_apps_r12_lab_with_less_than_us1000Create your oracle_apps_r12_lab_with_less_than_us1000
Create your oracle_apps_r12_lab_with_less_than_us1000
 
Ccnav5.org ccna 4-v5_practice_skills_assessment__packet_tracer
Ccnav5.org ccna 4-v5_practice_skills_assessment__packet_tracerCcnav5.org ccna 4-v5_practice_skills_assessment__packet_tracer
Ccnav5.org ccna 4-v5_practice_skills_assessment__packet_tracer
 
designandimplementanetwork
designandimplementanetworkdesignandimplementanetwork
designandimplementanetwork
 
Make container without_docker_7
Make container without_docker_7Make container without_docker_7
Make container without_docker_7
 
Ip basics
Ip basicsIp basics
Ip basics
 
A distributed virtual architecture for data centers
A distributed virtual architecture for data centersA distributed virtual architecture for data centers
A distributed virtual architecture for data centers
 
Software Load Balancer for OpenFlow Complaint SDN architecture
Software Load Balancer for OpenFlow Complaint SDN architectureSoftware Load Balancer for OpenFlow Complaint SDN architecture
Software Load Balancer for OpenFlow Complaint SDN architecture
 
Network simulator 2 a simulation tool for linux
Network simulator 2 a simulation tool for linuxNetwork simulator 2 a simulation tool for linux
Network simulator 2 a simulation tool for linux
 
Mikrotik link redundancy solution
Mikrotik link redundancy solution Mikrotik link redundancy solution
Mikrotik link redundancy solution
 
(2) documents e books_cisco_networking_books_training_materials_cnap_-_ont_v5...
(2) documents e books_cisco_networking_books_training_materials_cnap_-_ont_v5...(2) documents e books_cisco_networking_books_training_materials_cnap_-_ont_v5...
(2) documents e books_cisco_networking_books_training_materials_cnap_-_ont_v5...
 
The Apache Cassandra ecosystem
The Apache Cassandra ecosystemThe Apache Cassandra ecosystem
The Apache Cassandra ecosystem
 
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...From single MySQL instance to High Availability: the journey to MySQL InnoDB ...
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...
 
Single core design space exploration
Single core design space explorationSingle core design space exploration
Single core design space exploration
 

Olsrd linux nl80211_extension

  • 1. Abstract ========================================================================== This document describes the OLSRd link quality extension that utilizes linux NL80211 to apply wireless link information in the link quality calculation. Design ========================================================================== Each second the latest information is gathered from linux NL80211. This data contains the MAC addresses of the neighbor stations. To match this MAC 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 link status gathering. A modified link ffeth quality plugin will use the new link status information for link quality calculations. This link quality plugin is using #ifdef LINUX_NL80211 statements as much as possible to make it easy to merge the code back into the original ffeth plugin. The benefit of merging those link quality plugins will be less duplicate code and less code to maintain. Cost calculation ========================================================================== A penalty is added to the old cost from the ffeth plugin, depending on the signal strength and the link bandwidth. Both penalties can have a maximum value of 1.0. Costs = EXT + BandwidthPenalty + SignalPenalty BandwidthPenalty = 1 - ( ActualBandwidth / ReferenceBandwidth) SignalPenalty = LookupSignalPenaltyTable(SignalStrenghtOfNeighbor) Both penalties are added into the two unused bytes of LQ_HELLO messages. Currently the nodes won't use this value when received from their neighbor and only use their own NL80211 information. Considerations ========================================================================== It is designed mainly for IPv4, but should work with minimal effort on IPv6 as well. Majority of that work will be actually testing it on IPv6. The netlink code is blocking, this shouldn't cause major problems but a more ideal design would be non-blocking. Current version does not use the NL80211 data received from it's 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 that's the case, a configurable multiplier for both penalties might be interesting to add. The value for ReferenceBandwidth is hardcoded to 54 MBit. The values in the signal strength penalty table are hardcoded. It's desirable to have them configurable through the configuration file. Add configuration option to completely disable the use of NL80211 data, in case the plugin is merged with the existing ff_eth link quality plugin.