Differences

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

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}} 

Back to top

inbox/mesh.olsr.1359172019.txt.bz2 · Last modified: 2013/01/26 04:46 (external edit)