User Tools

Site Tools


inbox:mesh.olsr

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

inbox:mesh.olsr [2013/01/26 04:46]
— (current)
Line 1: Line 1:
-====== OLSR Mesh ====== 
-[[wp>​Optimized Link State Routing Protocol]] and [[http://​www.olsr.org/​]] 
  
-Mesh networks self-arrange and auto-configure themselves on the basis of network topology changes. ​ For example, the properly configured OLSR mesh will automatically arrange itself in cases where one node fails, or when a new route emerges, or when a low traffic route becomes available or disappears. ​ The concept of a mesh network is not new; the Internet itself is a huge mesh network. ​ So what's new?  Well, mesh networks with wireless technology on OpenWrt simply rocks! ;) 
- 
-OLSR is one of the routing protocols available to create a [[http://​en.wikipedia.org/​wiki/​Mobile_ad-hoc_network|Mobile Adhoc Networks (MANET)]], or rather, in more general terms, a wireless mesh network. ​ [[http://​www.olsr.org|The OLSR code developed by Andreas Tønnesen]] is the best suited for our case as packages have been created for OpenWrt. 
- 
-This wiki page contains information on how to create an OLSR mesh network by configuring OpenWrt and olsrd (the OLSR daemon process) yourself. ​ If your objective is to get an OLSR network quickly running, you may want to have a look at firmware that has been specifically created for this purpose. ​ An example of this sort of firmare is the [[http://​firmware.freifunk.net|Freifunk project]]. ​ If you're determined to get OLSR running on OpenWrt without the assistance of pre-packaged firmare, keep reading! 
- 
-^  olsrd  0.6.1-3 ​ ^^^ 
-^ Name               ​^ ​ Size  ^ Description ​ ^ 
-| olsrd                |  108257 | OLSR (Optimized Link State Routing) daemon ​ | 
-| olsrd-mod-dyn-gw-plain ​ |  2902 | Dynamic internet gateway plain plugin ​ | 
-| olsrd-mod-bmf ​        ​| ​ 12106 | Basic multicast forwarding plugin, dependece: ''​kmod-tun'' ​ | 
-| olsrd-mod-httpinfo ​   |  23831 | Small informative web server plugin ​ | 
-| olsrd-mod-quagga ​     |   5848 | Quagga plugin ​ | 
-| olsrd-mod-dyn-gw ​     |   4348 | Dynamic internet gateway plugin ​ | 
-| olsrd-mod-txtinfo ​    ​| ​  6201 | Small informative web server plugin ​ | 
-| olsrd-mod-nameservice |  11511 | Lightweight hostname resolver plugin ​ | 
-| olsrd-mod-dot-draw ​   |  4233 | Dot topology information plugin ​ | 
-| olsrd-mod-mdns ​       |  5648 | Multicast DNS plugin ​ | 
-| olsrd-mod-watchdog ​   |  2316 | Watchdog plugin ​ | 
-| olsrd-mod-arprefresh ​ |  2703 | Kernel ARP cache refresh plugin ​ | 
-| olsrd-mod-p2pd ​       |  8066 | Peer to Peer Discovery plugin ​ | 
-| olsrd-mod-secure ​     |  9710 | Message signing plugin to secure routing domain ​ | 
- 
- 
- 
-===== The Network ===== 
- 
-There are an infinite number of ways that a mesh network can be configured; below is a simple example that allows routing over a set of subnets in the 10.0.0.0/​255.0.0.0 range through the OLSR mesh. 
- 
-<​code>​ 
- 
-      WAN                                                 WAN 
-       ​| ​                                                  | 
-OpenWrt + OLSR Node 1 ---- wireless link ---- OpenWrt + OLSR Node 2 
-       ​| ​                                                  | 
-      LAN                                                 LAN 
-       ​| ​                                                  | 
-  Workstation A                                      Workstation B 
- 
-</​code>​ 
- 
- 
-Both nodes (in this case the [[toh/​linksys/​wrt54gl]] was used) need to have OLSR installed. ​ In general, OLSR will have to be installed on any node that participates in establishing routing between the OLSR-aware subnets that you configure. ​ OLSR needs to be configured to listen on all WIFI interfaces on these routers. ​ Running it on wired interfaces is usually not necessary, and according to some sources may interfere with other services on these interfaces such as DHCP. 
- 
-If the "​wired"​ interfaces on your router are on a different subnet from the wireless interfaces you can configure OLSR to distribute //host and network association//​ (HNA) messages to other routers. ​ Depending on if if you are running IPv4 or IPv6 you will either have Hna4 or Hna6 directives in your ''/?/​olsrd.conf''​ configuration file. 
- 
- 
- 
-{{page>​meta:​infobox:​outdated&​noheader&​nofooter&​noeditbtn}} 
- 
- 
-===== HOW TO ===== 
-  - separate the wireless and lan interface in ''​[[doc:​uci:​network|/​etc/​config/​network]]''​ again, by default they are bridged 
-  - configure the WNICs to work in //​adhoc//​-mode. Your file ''​[[doc:​uci:​wireless|/​etc/​config/​wireless]]''​ might look as follows:<​code>​ 
-config wifi-device ​ wl0 
-        option type     ​broadcom 
-        option channel ​ 11 
-        # disable radio to prevent an open ap after reflashing: 
-        option disabled 0 
- 
-config wifi-iface 
-        option device ​  wl0 
-        # option network ​       lan 
-        option mode     adhoc 
-        option ssid     OLSR 
-        option hidden ​  0 
-        option encryption none 
-</​code>​ 
-  - install olsrd<​code>​ 
-  opkg update 
-  opkg install olsrd 
-</​code>​ 
-  - Edit the ''/​etc/​olsrd.conf''​ and replace "​Interface "​XXX"​ with the wireless interface on your router. Example<​code>​ 
-# olsr.org OLSR daemon config file 
-# /​etc/​olsrd.conf 
-# 
-# Modified for sample OLSR network by Justin S. Leiteb 
-# http://​justin.phq.org/​ Fri Jun  8 10:34:27 EDT 2007 
-# Many comments and commented line from conf file distributed 
-# with olsrd omitted for brevity in wiki. 
- 
-DebugLevel 0 
-IpVersion 4 
-ClearScreen ​    yes 
- 
-# On the second OLSR node (olsrd.conf not supplied for this node, since only one line is different), 
-# which has a LAN interface on the 10.100.2.0/​255.255.255.0 network, the Hna4 entry is: 
-# 10.100.2.0 255.255.255.0. ​ These Hna4 entries are what propagates information about how to route 
-# to these subnets through the mesh. 
-Hna4 
-{ 
- # My home LAN 
- 10.100.1.0 ​ 255.255.255.0 
-} 
- 
-AllowNoInt yes 
-UseHysteresis yes 
- 
-# Hysteresis parameters 
-HystScaling 0.50 
-HystThrHigh 0.80 
-HystThrLow 0.30 
- 
- 
-LinkQualityLevel 0 
-Pollrate 0.05 
-NicChgsPollInt ​ 3.0 
- 
-Interface "​wl0"​ 
-{ 
-    AutoDetectChanges ​           yes 
-} 
- 
-# Run http server with mesh information. ​ Won't work unless you've already installed 
-# the olsrd_httpinfo plugin through ipkg. 
-LoadPlugin "​olsrd_httpinfo.so.0.1"​ 
-{ 
- PlParam "​port"​ "​1979"​ 
- PlParam "​Net"​ "​0.0.0.0 0.0.0.0"​ 
-} 
-</​code>​ 
-  - firewall, allow the router to forward packets between the interfaces, example:<​code>​ 
-#!/bin/sh 
- 
-# Copyright (C) 2006 OpenWrt.org 
- 
-iptables -F input_rule 
-iptables -F output_rule 
-iptables -F forwarding_rule 
-iptables -t nat -F prerouting_rule 
-iptables -t nat -F postrouting_rule 
- 
-# The following chains are for traffic directed at the IP of the 
-# WAN interface 
- 
-iptables -F input_wan 
-iptables -F forwarding_wan 
-iptables -t nat -F prerouting_wan 
- 
-# Does anyone have a command to get the name of the WIFI interface on Kamikaze so 
-# that it doesn'​t have to be hard-coded here?  This is a bit sloppy it seems. 
-WIFI=wl0 
- 
-iptables ​       -A input_wan ​     -p tcp --dport 22 -j ACCEPT 
- 
-# Allow connections to olsr info port. 
-iptables ​       -A input_wan ​     -p tcp --dport 1979 -j ACCEPT 
- 
-# OLSR needs port 698 to transmit state messages. 
-iptables -A input_rule -p udp --dport 698 -j ACCEPT 
- 
- 
-# Debugging... do we have WIFI, LAN and WAN appropriately defined? 
-# These values are passed to us from /​etc/​init.d/​firewall,​ which 
-# calls this script. 
- 
-# echo WIFI == $WIFI 
-# echo LAN == $LAN 
-# echo WAN == $WAN 
- 
-iptables -A forwarding_rule -i $WAN -o $WIFI -j ACCEPT 
- 
-iptables -A forwarding_rule -i $WIFI -o $WAN -j ACCEPT 
- 
-# For forwarding LAN & WIFI in nodes 
-iptables -A forwarding_rule -i $LAN -o $WIFI -j ACCEPT 
- 
-# For WIFI clients to connect to nodes. 
-iptables -A forwarding_rule -i $WIFI -o $WIFI -j ACCEPT 
- 
-# For connecting a wired lan client of node 1 to wired lan client of node 2 
-iptables -A forwarding_rule -i $LAN -o $LAN -j ACCEPT 
- 
-# WIFI needs to go to LAN ports, too! 
-iptables -A forwarding_rule -i $WIFI -o $LAN -j ACCEPT 
-</​code>​ 
-  - start olsrd<​code>​ 
-/​etc/​init.d/​olsrd start 
-/​etc/​init.d/​olsrd enable 
-</​code>​ 
- 
-Reboot your router and test everything by pinging interfaces on the different devices. ​ Go and have a beverage of choice to celebrate! 
- 
- 
-===== After basic configuration ===== 
-You may want to check out some of the plugins that are easy to configure and show you the basic status of your mesh.  On my network I run ''​olsrd-mod-httpinfo'',​ which provides a basic http server that shows you the status of the mesh. 
- 
- 
-===== References ===== 
-  * [[http://​www.olsr.org|Master'​s thesis of primary developer of olsrd]] - should be read before attempting to install OLSR if you aren't clear on the fundamentals of how it works 
-  * [[http://​nbd.name/​openwrt|Manual for Kamikaze by one of the developers]] - great reference on networking interface configuration and other parts of the OpenWrt system 
- 
-{{tag>​mesh}} 
inbox/mesh.olsr.1359172019.txt.bz2 · Last modified: 2013/01/26 04:46 (external edit)