Quantcast

Freifunk@FreeRunner: OLSRD

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Freifunk@FreeRunner: OLSRD

Robert Schuster
Hi,
you know we already have B.A.T.M.A.N in OpenEmbedded but now I gave good
old OLSRD a try too.

I added a recipe for the latest release 0.5.5 and tested it on the
device. It is working nicely along with the ar6000 being in ad-hoc mode
(the preferred mode for mesh networks ;) ). No luck with 0.5.3 though -
it crashes when I want to view the page generated by the httpinfo plugin.

I wanted to do some NATting between the wifi interface and the usbnet
connection (effectively making my desktop computer an internet gateway
for the Berlin Freifunk community).

However this was impossible since OpenMoko does not provide the iptables
package (you can get the kernel modules but not the userspace
application). You can build it on your own and then everything is fine
though.

There are also some minor issues with the wifi driver. I reported
this[0] a while ago already.

I am already happy but I would be so even more if:
 - olsrd version preference could be set to 0.5.5
 - iptables could be installed directly via opkg

The FreeRunner as a wifi mesh-node is a nice use case for the time after
being a mobile phone. It would be one of the very few nodes that have a
screen attached. :)

I would like to offer screen shots but there is nothing spectacular to
see on them. But perhaps you like some console output instead:

root@om-gta02:~# iwconfig eth0
eth0      AR6000 802.11g  ESSID:"olsr.freifunk.net"
          Mode:Ad-Hoc  Frequency:2.457 GHz  Cell: 02:CA:FF:EE:BA:BE
          Bit Rate=1 Mb/s   Tx-Power=15 dBm   Sensitivity=0/3
          Retry:on
          Encryption key:off
          Power Management:off
          Link Quality:168/94  Signal level:-183 dBm  Noise level:-96 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

(A fixed BSSID of '02:CA:FF:EE:BA:BE' is what we use in Berlin to
overcome some problems with ad-hoc mode specification.)

Starting the daemon:

root@om-gta02:~# /etc/init.d/olsrd start
Starting OLSR routing protocol daemon: olsr.org

 *** olsr.org - 0.5.5 ***
 Build date: 2008-06-26 23:09:18 on linkist
 http://www.olsr.org

Parsing file: "/etc/olsrd.conf"
olsr.org - 0.5.5 detaching from the current process...
done.
root@om-gta02:~# pidof olsrd
4479

Pinging a node that is a few hops away:

root@om-gta02:~# ping 104.192.0.156
PING 104.192.0.156 (104.192.0.156): 56 data bytes
64 bytes from 104.192.0.156: seq=0 ttl=62 time=89.001 ms
64 bytes from 104.192.0.156: seq=3 ttl=62 time=45.555 ms

--- 104.192.0.156 ping statistics ---
4 packets transmitted, 2 packets received, 50% packet loss
round-trip min/avg/max = 45.555/67.278/89.001 ms

Traceroute to it:

root@om-gta02:~# traceroute 104.192.0.156
traceroute to 104.192.0.156 (104.192.0.156), 30 hops max, 38 byte packets
 1  104.131.4.24 (104.131.4.24)  15.096 ms  29.789 ms  12.770 ms
 2  104.131.4.26 (104.131.4.26)  12.536 ms  11.377 ms  10.147 ms
 3  104.192.0.156 (104.192.0.156)  25.497 ms  51.212 ms  51.228 ms

Actually I could find something that may show I am really using this on
the Neo. I attached is httpinfo plugin generated webpage showing my
configuration. There are few devices where eth0 is a wifi card. :D

If you are interested I also attached by olsrd.conf. You need to have
olsrd-plugin-httpinfo, olsrd-plugin-nameservice (didn't work as
expected) and olsrd-plugin-dyngw installed besides the daemon.

Regards
Robert

[0] - http://docs.openmoko.org/trac/ticket/1392

olsr.org httpinfo plugin
   olsr.org OLSR daemon olsrd logo
Version: olsr.org - 0.5.5 (built on 2008-06-26 23:09:18 on linkist)
OS: GNU/Linux
System time: Fri, 27 Jun 2008 14:27:37
Olsrd uptime: 00 hours 15 minutes 55 seconds
HTTP stats(ok/dyn/error/illegal): 20/0/0/0
Click here to generate a configuration file for this node.

Variables

Main address: 104.131.4.193 IP version: 4 Debug level: 0 FIB Metrics: flat
Pollrate: 0.05 TC redundancy: 2 MPR coverage: 7 NAT threshold: 1.000000
Fisheye: Enabled TOS: 0x0010 RtTable: 0x00fe/254 RtTableDefault: 0x0000/0 Willingness: 7
LQ extension: Enabled LQ level: 2 LQ winsize: 100

Interfaces

eth0
IP: 104.131.4.193 MASK: 255.0.0.0 BCAST: 104.255.255.255
MTU: 1472 WLAN: Yes STATUS: UP
Olsrd is configured to run even if no interfaces are available

Plugins

NameParameters
olsrd_nameservice.so.0.3
olsrd_httpinfo.so.0.1
olsrd_dyn_gw.so.0.4

Announced HNA entries

Network
0.0.0.0/0

##################################################
##  Freifunk Default OLSRD.CONF ##
## olsr.org OLSR daemon config file ##
##  onelektra at gmx dot net ##
##################################################

#
# Lines starting with a # are discarded
#
# This file was edited by Elektra and needs
# olsrd-0.4.10 CVS or higher
#

# This file is an example of a typical configuration
# for a huge (250 Nodes or more), reliable, scalable
# routing-loop-free (well, almost :) and mostly static
# network (regarding mobility) using the LQ extention
# and FishEyeAlgorithm with LinkQualityDijkstraLimit
# to reduce CPU-Overhead

# Debug level(0-9)
# If set to 0 the daemon runs in the background
# Use Debug level 0 on a embedded system -
# debugging draws a lot of CPU-Power

DebugLevel 0

# FishEyeAlgorithm - Disable only if you want to
# experience routing loops :)
# See the README about Fisheye in the olsrd-source

LinkQualityFishEye 1

# Don't recalculate the Dijkstra-Table for every
# incoming TC-Message from nodes more than n hops away -
# Disable this algorithm in a huge mesh only if you are
# interested to accelerate global warming with overheated CPUs
# The first integer tells the algorithm to recalculate
# the Dijkstra-table when a TC-Message arrives from a node
# not more than n hops away. If set to 0 it will not
# recalculate it upon incoming TCs
# The second number (float) sets the time interval when
# the Dijkstra table will be recalculated anyway.
# Whatever comes first...
 
LinkQualityDijkstraLimit 0 10.0

# IP version to use (4 or 6)

IpVersion 4

# Clear the screen each time the internal state changes

ClearScreen     yes

# HNA IPv4 routes
# syntax: netaddr netmask
# Example Internet gateway:
# 0.0.0.0 0.0.0.0

Hna4
{
# Don't use this to announce an Internet Gateway -
# rather use the dyn_gw plugin that checks wheter you are
# actually a gateway or a black hole for other peoples
# internet traffic...

#   Internet gateway:
#   0.0.0.0      0.0.0.0
#   more entries can be added:
#   192.168.1.0  255.255.255.0
}

# HNA IPv6 routes
# syntax: netaddr prefix
# Example Internet gateway:
Hna6
{
#   Internet gateway:
#   ::              0
#   more entries can be added:
#   fec0:2200:106:: 48
}


# Should olsrd keep on running even if there are
# no interfaces available? This is a good idea
# for a PCMCIA/USB hotswap environment.
# "yes" OR "no"

AllowNoInt yes

# TOS(type of service) value for
# the IP header of control traffic.
# If not set it will default to 16

#TosValue 16

# The fixed willingness to use(0-7)
# If not set willingness will be calculated
# dynamically based on battery/power status
# if such information is available

Willingness     7

# Allow processes like the GUI front-end
# to connect to the daemon.

IpcConnect
{
     # Determines how many simultaneously
     # IPC connections that will be allowed
     # Setting this to 0 disables IPC

     MaxConnections  1

     # By default only 127.0.0.1 is allowed
     # to connect. Here allowed hosts can
     # be added

     Host            127.0.0.1
     #Host            10.0.0.5

     # You can also specify entire net-ranges
     # that are allowed to connect. Multiple
     # entries are allowed

     #Net             192.168.1.0 255.255.255.0    
}

# Enable Hysteresis only if you want your routing table
# to brake down every 5 seconds
# Hysteresis is one of this fancy looking 'optimizations'
# in RFC 3626 that don't work in real life
# If unsure say "NO!"

UseHysteresis no

# Hysteresis parameters
# Do not alter these unless you know
# what you are doing!
#
# If you know what you are doing
# you make sure that hysteresis
# is completely SWITCHED OFF!
#
# Set to auto by default. Allowed
# values are floating point values
# in the interval 0,1
# THR_LOW must always be lower than
# THR_HIGH.

#HystScaling 0.50
#HystThrHigh 0.80
#HystThrLow 0.30


# Link quality level
# 0 = do not use link quality
# 1 = use link quality for MPR selection
# 2 = use link quality for MPR selection and routing
# Defaults to 0


LinkQualityLevel 2

# Link quality window size
# Defaults to 10
# 100 is slow but stable...

LinkQualityWinSize 100

# Polling rate in seconds(float).
# Default value 0.05 sec

Pollrate 0.05


# TC redundancy
# Specifies how much neighbor info should
# be sent in TC messages
# Possible values are:
# 0 - only send MPR selectors
# 1 - send MPR selectors and MPRs
# 2 - send all neighbors
#
# defaults to 0
# MultiPointRelais is another notorious
# 'optimization' feature in RFC3626...
# Switch it off by chosing redundancy value 2

TcRedundancy 2


#
# MPR coverage
# Specifies how many MPRs a node should
# try select to reach every 2 hop neighbor
#
# Can be set to any integer >0
#
# defaults to 1
#
# Full coverage is the way to get rid of this
# annoying 'optimization'

MprCoverage 7


# Olsrd plugins to load
# This must be the absolute path to the file
# or the loader will use the following scheme:
# - Try the paths in the LD_LIBRARY_PATH
#   environment variable.
# - The list of libraries cached in /etc/ld.so.cache
# - /lib, followed by /usr/lib

# Example plugin entry with parameters:


# This plugin generates the information to make those fancy
# 2D and 3D topology graphs

#LoadPlugin         "olsrd_dot_draw.so.0.3"


#{
#       PlParam     "accept" "192.168.120.17"
#}


# This plugin announces that this node is a gateway into
# other networks, it it actually is:

LoadPlugin "olsrd_dyn_gw.so.0.4"
{
    # Here parameters are set to be sent to the
    # plugin. Theese are on the form "key" "value".
    # Parameters ofcause, differs from plugin to plugin.
    # Consult the documentation of your plugin for details.

    # Example: dyn_gw params

    # how often to check for Internet connectivity
    # defaults to 5 secs
   PlParam     "Interval"   "40"
   
    # if one or more IPv4 addresses are given, do a ping on these in
    # descending order to validate that there is not only an entry in
    # routing table, but also a real internet connection. If any of
    # these addresses could be pinged successfully, the test was
    # succesful, i.e. if the ping on the 1st address was successful,the
    # 2nd won't be pinged
   PlParam     "Ping"       "141.1.1.1"
   PlParam     "Ping"       "194.25.2.129"
}

# This plugin announces services available on your router:
# Of course the configfile should be present...

# LoadPlugin    "olsrd_servicediscover.so.0.3"
#{
#        PlParam "configfile" "/etc/servicediscover.conf"
#};


# Add more plugins here...
LoadPlugin "olsrd_httpinfo.so.0.1"
{
        PlParam "port"  "8080"
        PlParam "Host"  "127.0.0.1"
        PlParam "Net"   "0.0.0.0 0.0.0.0"
}


LoadPlugin "olsrd_nameservice.so.0.3"
{
        PlParam "name"          "freerunner.olsr"
        PlParam "hosts-file"    "/var/hosts"
        PlParam "suffix"        ".olsr"
        PlParam "interval"      "180"
        PlParam "timeout"       "3600"
        PlParam "latlon-infile" "/var/run/latlon.txt"
        PlParam "latlon-file" "/var/run/latlon.js"
}

# Finally, the interfaces section:

# Interfaces and their rules
# Omitted options will be set to the
# default values. Multiple interfaces
# can be specified in the same block
# and multiple blocks can be set.

# !!CHANGE THE INTERFACE LABEL(s) TO MATCH YOUR INTERFACE(s)!!
# (eg. wlan0 or eth1):

Interface "eth0"
{

    # IPv4 broadcast address to use. The
    # one usefull example would be 255.255.255.255
    # If not defined the broadcastaddress
    # every card is configured with is used

    # Ip4Broadcast 255.255.255.255

    # IPv6 address scope to use.
    # Must be 'site-local' or 'global'

    # Ip6AddrType site-local

    # IPv6 multicast address to use when
    # using site-local addresses.
    # If not defined, ff05::15 is used

    # Ip6MulticastSite ff05::11

    # IPv6 multicast address to use when
    # using global addresses
    # If not defined, ff0e::1 is used

    # Ip6MulticastGlobal ff0e::1


    # Emission intervals.
    # If not defined, RFC proposed values will
    # be used in most cases.

    # Hello interval in seconds(float)
    HelloInterval    5.0

    # HELLO validity time
    HelloValidityTime 300.0

    # TC interval in seconds(float)
    TcInterval        2.0

    # TC validity time
    TcValidityTime 300.0

    # MID interval in seconds(float)
    MidInterval 5.0

    # MID validity time
    MidValidityTime 300.0

    # HNA interval in seconds(float)
    HnaInterval 5.0

    # HNA validity time
    HnaValidityTime 300.0

    # When multiple links exist between hosts
    # the weight of interface is used to determine
    # the link to use. Normally the weight is
    # automatically calculated by olsrd based
    # on the characteristics of the interface,
    # but here you can specify a fixed value.
    # Olsrd will choose links with the lowest value.

    # Weight 0


}

_______________________________________________
Openmoko community mailing list
[hidden email]
http://lists.openmoko.org/mailman/listinfo/community

signature.asc (260 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Freifunk@FreeRunner: OLSRD

Evgeniy Ginzburg
Robert Schuster wrote:

> Hi,
> you know we already have B.A.T.M.A.N in OpenEmbedded but now I gave good
> old OLSRD a try too.
>
> I added a recipe for the latest release 0.5.5 and tested it on the
> device. It is working nicely along with the ar6000 being in ad-hoc mode
> (the preferred mode for mesh networks ;) ). No luck with 0.5.3 though -
> it crashes when I want to view the page generated by the httpinfo plugin.
>
> I wanted to do some NATting between the wifi interface and the usbnet
> connection (effectively making my desktop computer an internet gateway
> for the Berlin Freifunk community).
>
> However this was impossible since OpenMoko does not provide the iptables
> package (you can get the kernel modules but not the userspace
> application). You can build it on your own and then everything is fine
> though.
>
> There are also some minor issues with the wifi driver. I reported
> this[0] a while ago already.
>
> I am already happy but I would be so even more if:
>  - olsrd version preference could be set to 0.5.5
>  - iptables could be installed directly via opkg
>
> The FreeRunner as a wifi mesh-node is a nice use case for the time after
> being a mobile phone. It would be one of the very few nodes that have a
> screen attached. :)
>
> I would like to offer screen shots but there is nothing spectacular to
> see on them. But perhaps you like some console output instead:
>
> root@om-gta02:~# iwconfig eth0
> eth0      AR6000 802.11g  ESSID:"olsr.freifunk.net"
>           Mode:Ad-Hoc  Frequency:2.457 GHz  Cell: 02:CA:FF:EE:BA:BE
>           Bit Rate=1 Mb/s   Tx-Power=15 dBm   Sensitivity=0/3
>           Retry:on
>           Encryption key:off
>           Power Management:off
>           Link Quality:168/94  Signal level:-183 dBm  Noise level:-96 dBm
>           Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
>           Tx excessive retries:0  Invalid misc:0   Missed beacon:0
>
> (A fixed BSSID of '02:CA:FF:EE:BA:BE' is what we use in Berlin to
> overcome some problems with ad-hoc mode specification.)
>
> Starting the daemon:
>
> root@om-gta02:~# /etc/init.d/olsrd start
> Starting OLSR routing protocol daemon: olsr.org
>
>  *** olsr.org - 0.5.5 ***
>  Build date: 2008-06-26 23:09:18 on linkist
>  http://www.olsr.org
>
> Parsing file: "/etc/olsrd.conf"
> olsr.org - 0.5.5 detaching from the current process...
> done.
> root@om-gta02:~# pidof olsrd
> 4479
>
> Pinging a node that is a few hops away:
>
> root@om-gta02:~# ping 104.192.0.156
> PING 104.192.0.156 (104.192.0.156): 56 data bytes
> 64 bytes from 104.192.0.156: seq=0 ttl=62 time=89.001 ms
> 64 bytes from 104.192.0.156: seq=3 ttl=62 time=45.555 ms
>
> --- 104.192.0.156 ping statistics ---
> 4 packets transmitted, 2 packets received, 50% packet loss
> round-trip min/avg/max = 45.555/67.278/89.001 ms
>
> Traceroute to it:
>
> root@om-gta02:~# traceroute 104.192.0.156
> traceroute to 104.192.0.156 (104.192.0.156), 30 hops max, 38 byte packets
>  1  104.131.4.24 (104.131.4.24)  15.096 ms  29.789 ms  12.770 ms
>  2  104.131.4.26 (104.131.4.26)  12.536 ms  11.377 ms  10.147 ms
>  3  104.192.0.156 (104.192.0.156)  25.497 ms  51.212 ms  51.228 ms
>
> Actually I could find something that may show I am really using this on
> the Neo. I attached is httpinfo plugin generated webpage showing my
> configuration. There are few devices where eth0 is a wifi card. :D
>
> If you are interested I also attached by olsrd.conf. You need to have
> olsrd-plugin-httpinfo, olsrd-plugin-nameservice (didn't work as
> expected) and olsrd-plugin-dyngw installed besides the daemon.
>
> Regards
> Robert
>
> [0] - http://docs.openmoko.org/trac/ticket/1392

Nice enough!
I really like mesh networking protocols work on Neos.
Maybe I'll try to run Netsukuku.
OK first I have to buy one.

_______________________________________________
Openmoko community mailing list
[hidden email]
http://lists.openmoko.org/mailman/listinfo/community
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Freifunk@FreeRunner: OLSRD

Robert Schuster
Hi.

Evgeny Ginzburg schrieb:
> Nice enough!
> I really like mesh networking protocols work on Neos.
> Maybe I'll try to run Netsukuku.
> OK first I have to buy one.
We do not have netsukuku recipes in OE yet. But that could be fixed
quickly if it is easy to build.

Volunteering to provide a recipe? Then you can have the binary before
your phone arrives. :)

Regards
Robert


_______________________________________________
Openmoko community mailing list
[hidden email]
http://lists.openmoko.org/mailman/listinfo/community

signature.asc (260 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Freifunk@FreeRunner: OLSRD

Vinc.be
In reply to this post by Robert Schuster
Hello,

I'm trying to use olsrd on my FreeRunner but I cannot compile it. When I type "make", I get a error :

src/unix/ifnet.c: In function 'chk_if_up':
src/unix/ifnet.c:551: error: 'tos' undeclared (first use in this function)
src/unix/ifnet.c:551: error: (Each undeclared identifier is reported only once
src/unix/ifnet.c:551: error: for each function it appears in.)
make: *** [src/unix/ifnet.o] Error 1

Complete log here : http://www.geosharing-project.org/logs/log_olsrd-1.txt

Do you have an idea why I cannot compile it ? I'm using SHR on my FreeRunner.

Thanks a lot !

Vinc.be
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Freifunk@FreeRunner: OLSRD

shamsul hassan
Hi Vinc,

Instead of compiling it over SHR can you try it over QTMoko or H1 if you have any of them flashed either in your NAND or in SDcard.
Just try it once.

Thanks
Shamsul

On Tue, Mar 8, 2011 at 2:46 PM, Vinc.be <[hidden email]> wrote:
Hello,

I'm trying to use olsrd on my FreeRunner but I cannot compile it. When I
type "make", I get a error :

src/unix/ifnet.c: In function 'chk_if_up':
src/unix/ifnet.c:551: error: 'tos' undeclared (first use in this function)
src/unix/ifnet.c:551: error: (Each undeclared identifier is reported only
once
src/unix/ifnet.c:551: error: for each function it appears in.)
make: *** [src/unix/ifnet.o] Error 1


Complete log here : http://www.geosharing-project.org/logs/log_olsrd-1.txt

Do you have an idea why I cannot compile it ? I'm using SHR on my
FreeRunner.

Thanks a lot !

Vinc.be

--
View this message in context: http://openmoko-public-mailinglists.1958.n2.nabble.com/Freifunk-FreeRunner-OLSRD-tp15412p6126189.html
Sent from the Openmoko Community mailing list archive at Nabble.com.

_______________________________________________
Openmoko community mailing list
[hidden email]
http://lists.openmoko.org/mailman/listinfo/community


_______________________________________________
Openmoko community mailing list
[hidden email]
http://lists.openmoko.org/mailman/listinfo/community
Loading...