User Tools

Site Tools


ru:inbox:mesh.olsr

Differences

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

Link to this comparison view

ru:inbox:mesh.olsr [2012/11/27 03:53]
ru:inbox:mesh.olsr [2015/12/30 01:29] (current)
tmomas link fixed
Line 1: Line 1:
 +====== OLSR Mesh ======
 +[[wp>​OLSR]] и [[http://​www.olsr.org/​]]
  
 +Сети с ячеистой топологией (mesh-сети) обладают самоорганизацией и автонастройкой на основе сведений об изменении топологии сети. ​
 +
 +Для примера,​ правильно настроенная OLSR сеть автоматически конфигурируется в случаях когда одна нода повреждается или появляется новый маршрут,​ или в случае появления или пропажи более быстрого маршрута.
 +
 +Эта концепцияя mesh сетей не нова - Интернет сам представляет из себя огромную mesh сеть. Что-же нового?​ Ну, Wi-Fi mesh сети построенные на OpenWRT - это просто круто ;)
 +
 +OLSR - это один из нескольких протоколов маршрутизации,​ предназначенный для создания ​ [[http://​ru.wikipedia.org/​wiki/​MANET|Mobile Adhoc Networks (MANET)]], или, проще говоря,​ беспроводные децентрализованные самоорганизующиеся сети. ​ [[http://​www.olsr.org|OLSR код разработанный Andreas Tønnesen]] это лучшее решение для нашей сборки созданной для OpenWRT.
 +
 +Эта страница содержит информацию,​ о том как создать mesh-сеть путём настройки OpenWrt и olsrd (процесс демона OLSR). ​ Если ваша цель - быстро запустить OLSR-сеть,​ возможно вам захочется взглянуть на прошивку которая была создана специально для этих целей. ​ Примером такой прошивки является[[http://​firmware.freifunk.net|Freifunk project]]. ​ Если вы хотите запустить OLSR в OpenWrt без помощи готовых прошивок,​ продолжайте чтение :)
 +
 +^  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 ​ |
 +
 +===== Сеть =====
 +
 +Есть бесчисленное количество вариантов конфигурации mesh сетей; ниже находится простой пример разрешающий роутинг подсетей 10.0.0.0/​255.0.0.0 через OLSR mesh.
 +
 +<​code>​
 +
 +      WAN                                                 WAN
 +       ​| ​                                                  |
 +OpenWrt + OLSR Node 1 ---- wireless link ---- OpenWrt + OLSR Node 2
 +       ​| ​                                                  |
 +      LAN                                                 LAN
 +       ​| ​                                                  |
 +  Workstation A                                       ​Workstation B
 +
 +</​code>​
 +
 +На всех узлах (в нашем случае используется [[toh:​linksys:​wrt54g|WRT54GL]]) должен быть установлен OLSR. В общем, OLSR должен быть установлен на любом узле который учавствует в создании маршрутизации между заданными OLSR подсетями.
 +
 +OLSR узлы должны быть сконфигурированы на прослушивание всех WiFi интерфейсах на роутере. Включение на проводных интерфейсах не обязательно,​ в некоторых случаях это может помешать работе других служб, например DHCP.
 +
 +Если проводные интерфейсы на роутере имеют подесть отличающуюся от WiFi то можно настроить OLSR для передачи //host и network association//​ (HNA) сообщений другим роутерам. В зависимости от использования IPv4 или IPv6 вы можете настроить опции Hna4 или Hna6 в файле ''/?/​olsrd.conf''​
 +
 +{{page>​meta:​infobox:​outdated&​noheader&​nofooter&​noeditbtn}}
 +
 +
 +===== HOW TO =====
 +  - Разделите WiFi и LAN интерфейсы в файле ''​[[doc:​uci:​network|/​etc/​config/​network]]'',​ по умолчанию они соеденены в мост.
 +  - Настройте WNICs для работы в режиме //adhoc//. Файл ''​[[doc:​uci:​wireless|/​etc/​config/​wireless]]''​ должен выглядеть так:<​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>​
 +  - Установите olsrd<​code>​
 +  opkg update
 +  opkg install olsrd
 +</​code>​
 +  - Измените ''/​etc/​olsrd.conf''​ и поменяйте "​Interface "​XXX"​ на WiFi интерфейс вашего роутера. Пример<​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>​
 +  - Файрвол - разрешите роутеру форвардинг пакетов между интерфейсами:<​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>​
 +  - Запустите olsrd<​code>​
 +/​etc/​init.d/​olsrd start
 +/​etc/​init.d/​olsrd enable
 +</​code>​
 +
 +Перезагрузите роутер пропингуйте интерфейсы на разных устройствах. Выпейте любимый напиток для ощущения праздника!
 +
 +===== После начальной конфигурации =====
 +Вы можете попробовать некоторые плагины которые легко настраиваются и могут показать простые статус вашей сети. В своей сети я запустил ''​olsrd-mod-httpinfo''​ который запускает простой http сервер показывающий статус mesh сети.
 +
 +===== Ссылки =====
 +  * [[http://​www.olsr.org|Master'​s thesis of primary developer of olsrd]] - Cледует читать перед установкой OLSR если вы не до конца понимаете фундаментальные осного его работы.
 +  * [[http://​nbd.name/​openwrt|Manual for Kamikaze by one of the developers]] - Отличный справочник по настройке сетевых интерфейсов и других частей OpenWrt.
 +
 +{{tag>​mesh}}