Inleiding

Vanuit de Universiteit Leiden (LIACS) is er samen met Wireless Leiden gewerkt aan geavanceerde management en monitoring tools. In de eerste plaats is er een 802.11 (WiFi) MIB ontworpen en geimplementeerd, waardoor het eenvoudig wordt om 802.11 specifieke informatie uit te lezen c.q. in te stellen (via het SNMP protocol).

Verder is er een tool ontwikkeld door Willem de Bruijn waarbij "active agents" (feitelijk stukjes code die door een deamon wordt uitgevoerd) SNMP requests kunnen uitvoeren. Er kunnen zo dus management agents geschreven worden die bijvoorbeeld

Groot voordeel van de agents is dat ze zelfstandig hun weg door het netwerk kunnen vinden, dus niet afhankelijk zijn van routing tabellen of in de problemen komen bij kapotte links.

Deze software is aangepast en draait nu ook op de Wireless Leiden nodes. Let wel dat er nu slechts een heel beperkte voorraad is van dat soort agents. Toekomstig onderzoek zou een aantal mooie exemplaren moeten opleveren. Ideeen:

Gebruik WiFi SNMP

Wanneer de 802.11 MIB implementatie is meegecompileerd in de SNMP deamon ("snmpd") is deze toegankelijk via de gebruikelijke "snmpget" en "snmpwalk" requests. Doe een "snmpwalk -c public <host> light80211" voor alle waarden, of "snmpwalk -c public <host> l80211IfaceTable" voor standaard waarden als SSID, channel e.d.

Speciale statistische gegevens (avg bandwidth, avg signal/noise/quality, association tijden), met name dus de l80211StaTable, worden alleen bijgehouden en beschikbaar gemaakt door een nieuwe wi(4) driver. Deze moet dus in een kernel meegecompiled zijn, of als aparte module naast een kernel zonder wi driver geload worden (kldload).

Voorlopig zullen deze waarden slechts read-only toegangelijk zijn, hoewel de implementatie ook read-write ondersteund. Dit is gedaan uit veiligheidsoverwegingen. Zie vooral de LIGHT80211 MIB voor gedetailleerde informatie over de verschillende MIB waarden (zie sectie links).

De "snmpd" implementatie is gebaseerd op net-snmp 5.0.8, source code van de 802.11 MIB is o.a. te vinden op SVN.

Gebruik SPLASH

Om Splash agents rond te kunnen sturen moet ofwel de snapd gestart worden (dat kan naast de snmpd) of moet snmpd met de -S parameter gerund worden. Dit zorgt ervoor dat de snmpd naast gewone snmp requests ook luistert op de snap port (de active agent port) en die paketten afhandelt. Dit moet dus ook in de node boot config! De snmpd -S optie heeft de voorkeur, omdat deze ook SNMP requests van agents af kan handelen, snapd kan dit niet! Let op dat de SNAP handler in ieder geval op source en destination moeten draaien, maar afhankelijk van het forward mechanisme (direct over ip, of via intermediate hosts) ook op tussengelegen hosts. Controleer of hosts SNAP enabled zijn mbv voorbeeld paketten ping, dping (direct ping) en traceroute.

Wanneer je een agent wil schrijven kijk dan onder het kopje Links naar de SPLASH sourceforge pagina (documenation, language reference) en met name ook naar de gedocumenteerde voorbeeld agents (zie ook weer Links).

Compileren mbv "snapas <agent.sas>" waar dan een <agent.sbc> bytecode file uitkomt. Deze kan verstuurt worden naar een willekeurige node mbv "snap_exec <source ip> <dest ip> <agent.sbc>" Hiervoor moet je lokaal een snap handler hebben draaien (snapd of snmpd -S). Let op dat je voor source ip geen 'localhost' invuld, dat is meestal 127.0.0.1, dus wanneer de agent bij destination is en terug wil naar source gaat het fout. Overigens kan ook nog de -l optie worden meegegeven aan snap_exec, zodat het programma blijft wachten op terugkerende agents (tot ctrl-C) ipv stoppen na eerste ontvangst.

SNAP services

Aparte vermelding verdienen de services (hier zijn libs voor die beginnen met libsnap_svc_*). Wanneer een deamon gestart wordt probeert hij deze in te lezen vanuit /usr/local/lib. Deze services zijn extra mogelijkheden voor de agents; er worden als het ware function calls mogelijk gemaakt naar deze services. Achter deze function calls kan willekeurige C code zitten. Een voorbeeld hiervan zijn de SNMP requests. Deze services kunnen gemakkelijk uitgebreid worden, waardoor de agents meer mogelijkheden krijgen. Kijk hiervoor naar de test service, er wordt uitgebreid beschreven hoe een extra service in te bouwen.

Om bij de ospf restart agent te blijven: er zou hiervoor C code geschreven kunnen worden, die met een simpele "calls restartOSPF" aangeroepen wordt.

Note: in principe zijn deze services ook naar FreeBSD omgezet, behalve de proc, route en iface service. Deze laatste lijkt wel goed te werken.

Tijmen Moerland, oktober 2003 <moerland-spamme@yahoo.com>

WiFiSplash (last edited 2009-09-28 06:29:42 by localhost)