Crusader governor


Stazeni programku

crusaderg.tgz

Zálohování konektivity FSO spoje

Bohužel spoj přes optiku není 100% spolehlivý a proto je potřeba k němu přidat paralelně další spoj, který v případě potřeby zaskočí.

Zamykání FSO spoje

Tento nápad vypadá pěkně:

Protoze port pri snizeni RSSI spadne okamzite (i na druhe strane - na 100megabitu), tak se hned prepocita metrika cest a system se s vypadkem FSO vyrovna.

Bohužel se ukazuje jako nepříliš funkční. Správně dokáže očetřit snad jen hustou mlhu. V některých případech vůbec nedojde k poklesu RSSI a přitom spoj není spolehlivý. Typicky se to děje při východu/západu Slunce.

Řešení přes Quaggu

Quagga podporuje dynamický routing a dokáže najít optimální cestu i v případě duální linky. Quagga většinou nebývá nakonfigurována aby po ztrátě jednoho EHLO paketu přeplánovala všechny routy. A EHLO pakety nejsou sítí rychle šířeny, aby nedošlo k jejímu zahlcení. Proto je reakce Quaggy přepínající na zálohu pomalá a nevyhovující.

Létající smetí létá tam a zpět

a ptáci také. Tím přerušují komunikaci Crusaderu. Zajímavé je, že reportované RSSI nepoklesne a tento jev nelze pomocí RSSI vůbec poznat.

NeklesloRSSIpod500.gif

Ukázka výpisu z logů:
2012/04/09 12:03:28.405  Routing policy change 4->1 Excellent reported RSSI.
2012/04/09 12:03:29.002  Routing policy change 1->4 Crusader packetloss.
2012/04/09 12:03:57.498  Routing policy change 4->1 Excellent reported RSSI.
2012/04/09 12:04:14.807  Routing policy change 1->4 Crusader packetloss.
2012/04/09 12:04:15.403  Routing policy change 4->1 Excellent reported RSSI.

Východ Slunce nad Crusaderem

Takhle vypadá RSSI pri východu Slunce, který nastal v 7:04 a skoncil v 7:33.

VychodSlunce.gif

Zjistil jsem zajímavé nezdokumentované chování. Crusader zacne vykazovat pomalu rostoucí packetloss až ke 100%. Na konci se jev opakuje a packetloss se snižuje zase zpet k 0%.

Jediné rešení je trvale sledovat packetloss a pri prekrocení 2% prepnout na zálohu.

Ošetrit mlhu je mnohem snazší, jde to poznat podle poklesu RSSI. I v maximu vlivu Slunce RSSI nekleslo pod 310.

Rybnícek brcálník a mlha, která se dá krájet

Detekovat mlhu je daleko snadnější než předchozí východ/západ Slunce. Mlha se projevuje konstantním útlumem a tak je možné podle poklesu RSSI s předstihem přepnout na záložní spoj.

Ukázka vlivu mlhy na kvalitu signálu:

CrusaderMlha.gif

Load balancing mezi záložním spojem a Crusaderem

Standardní postup:

Crusader beží a když dojde k problému, tak se spojení preruší. Po jisté dobe Quagga najde druhou linku a obnoví spojení. To se projeví nepríjemným výpadkem všech streamovaných dat.

+ relativne jednoduché
- citelná doba prepnutí a výpadku

Nový postup:

Obe linky jsou sdíleny (load balancing) a mení se jen váha. I když je crusader aktivní, tak 10% komunikace stále jede po WiFi a tím se ješte zvetší kapacita spoje.


+ prepnutí není poznatelné
+ navýšení kapacity spoje
- nutno neustále sledovat Crusader po sériové lince
- nutno mít v kernelu zakompilován load balancer

Prográmek pro správu spoje s Crusaderem

root@dvouramenna:~/crusaderg# ./crus -help

Crusader helper.
Copyright: (C) 2012 Jaroslav Fojtik, inspired by crusader100_read_rss

Usage: crus [switches]
Switches:
  -?  --help   Display this help page.
  --COMM_PORT dev     [/dev/ttyS0] set crusader COM port
  --UDP_PORT port     [2008] UDP communication port
  --CRUSADER_GW GW    [10.23.204.201] set crusader gateway
  --WIFI_GW GW        [10.23.202.254] set wifi gateway
  --CRUSADER_DEV eth  [eth2] set crusader ethernet device
  --WIFI_DEV eth      [wlan1] set crusader ethernet device
  --SHR_ROUTE route   [NULL] set shared route
  --ip_PATH ip_path   [/sbin/ip] set path to 'ip' command
  --rrdupdate_PATH rr_path [/usr/sbin/rrdupdate] set path to 'rrdupdate' command
  --RRD_DATABASE db_path [/var/rrd/crusader.rrd] set path to rrd RSSI database
  --BASE_CHANNEL val  [2] set crusader base channel
  --CRUS_STAT_FILE file [/tmp/crusader.txt] crusader status file
  --SERIAL_TIMEOUT val [2.5] Timeout for serial line in [s].
  --LOG_FILE file      [NULL] file with logs
  --MAX_RRD_RATE_MS val [1000] Maximal allowed rate for RRD database update.
  -s | -v             silent or verbose mode

Tady experimentálně měřím RSSI spoje s Crusaderem: http://78.108.103.11/cgi-bin/crusaderg.cgi

<~ Go to the Fojtik's Home Page