[Berlin-wireless] announce_services plugin fuer olsrd

Sven-Ola Tuecke mail2news
Fr Mär 31 10:48:08 CEST 2006


Jens,

ok - na dann mal richtig: Unterscheiden wir zunaechst mal:

* Serviceanbieter-PC oder WRT: z.B. WRT54GS mit massig Platz oder einen 
Extra-PC fuer den Service. Da passt also jede Menge Zusatzsoftware drauf und 
eine /etc/services macht sicher kein Problem.

* Service-Announce-Node: Von diesem Node aus wird der Service angekuendigt.

* Standard-Node: Praktisch kein Platz. Per OLSR-Message-Flooding wird der 
Ankuendigungen sowieso an Nachbarn weiterreichen (egal ob Nameplugin 
installiert). Hier waere evt. noch eine Zusatzseite mit "Services in diesem 
Mesh" drin, wenn das dazu noetige OLSR-Plugin zur Abfrage nicht zuviel Platz 
kostet.

* Service-Nutzer: Sitzt an einem PC und hatt massig Rechenpower + Platz 
sowie einen Bildschirm und einen Browser.

Praktisch jeder Service basiert auf UDP (z.B. NFS-Share) oder TCP (z.B. IRC) 
und hat damit eine Portnummer. Andere (z.B. Spezial-Pingdienst oder 
Multicast-Radio) fallen aus diesem Schema. Service-Anbieter-PC und 
Service-Announce-WRT sollten unterschiedliche Rechner sein koennen. Eine 
Web-URL z.B. mit Erlaeuterungen "und so kommst du auf meinen NFS-Server" 
waere natuerlich prima. Ich wuerde daher vorschlagen, dass die 
Service-Ankuendigung folgendes enthaelt:

ipaddr-service,protonun-ervice[,portnum-service][,service-file]:Service-Ueberschrift:http://helpseite/

Protokoll+Portnummern kann sich jeder selber offline heraussuchen. Wer das 
nicht gebacken bekommt kann halt nix anbieten. portnum-service und helpseite 
ist optional.

Die IP-Adresse muss im Mesh erreichbar sein
Die Protokollnummer ist aus /etc/protocols
Die Portnummer ist aus /etc/services (nur bei Protokoll=6 oder 17)
Das Service-File (nur bei HTTP-Services) kann mit Browser abgerufen werden
Die Service-Ueberschrift ist auf 64 Zeichen begrenzt (keine Doppelpunkte / 
CRLF)
Die Help-URL (wenn vorhanden) muss mit Browser aufzurufen sein

Statt Doppelpunkt kann man naterlich auch z.B. das Tabzeichen nehmen. Ein 
Beispiel:

104.65.65.104,6,80,/img/video.asf:Webcam Alex:http://104.65.65.97/index.html

Die Statusseite "Services in diesem Netz" koennte alle Services mit 
Helpseite weiter oben anzeigen. Bei Port-basierten Protokollen prueft ein 
Cronjob auf dem Service-Announce-Node, ob diese Kombi gerade erreichbar ist 
(aehlich Dyngw). Wenn ja -> OLSR-Flooding, wenn nein dann nicht. Das geht 
naterulich nur fuer Proto=6 || 17 und nicht fuer Multicast. Die im Beispiel 
genannte Webcam kann ueber "mplayer http://104.65.65.104:80/img/video.asf " 
angeguckt werden.

Gruesze,
Sven-Ola

"Jens Nachtigall" <nachtigall at web.de> schrieb im Newsbeitrag 
news:200603310857.58349.nachtigall at web.de...

Hallo Sven-Ola,

> sowas wollte ich schon lange machen. Bruno hat damls recht lange an dem
> Plugin debuggt -> der Source strotzt vor Debug-Messages, die ich fuer die
> FFF alle rauspatche (wie immer: Bytes sparen). Kann man Deine Erweiterung
> nicht einfach gleich in das nameplugin einbauen -> Platz +
> Debug-nicht-so-noetig?

Das könnte man sicherlich dort mit einbauen, guck ich mal.

> Ich wuerde ausserdem gerne eine FFF-Statusseite "Services in diesem Netz"
> anbieten. Moeglichst mit einem Test ob der Service tatsaechlich Online ist
> -> Service ist immer mit IP + Port + UDP||TCP, dann koennte ein Cronjob
> pruefen, ob diese Kombi erreichbar ist. WIr haben sonst zuviele "Ich 
> wollte
> da mal was anbieten" statt "ich biete an". Ersteres ist witzlos.

"IP + Port + UDP||TCP" reicht nicht. Der Pfad fehlt noch und der service
(protokoll), welcher sich hinter dem port verbirgt.

Ich dachte, dass wäre mittels URL-angabe gewährleistet:
protokoll:host_oder_ip[:port]/pfad/. Leider gibt es auf dem wrt
keine /etc/services, so dass bei nichtangabe des ports nicht immer der
standard-port und TCPbzw.UDP klar wäre. Hhm, so ne richtige KISS-lösung 
fällt
mir nicht ein, man könnte aber verlangen, dass die URL den port enthalten
muss. Also http://ich:80/mein/pfad. Wegen TCP|UDP könnte man einfach auf
beides testen (zuerst TCP, dann UPD auf dem port bei dem host-namen), wenn
eines von beiden geht, dann gilt es als vorhanden. Die /etc/services hat
leider 20KB, aber da steht alles drin, was wir bräuchten. Andere Ideen, wie
solch ein service syntaktisch in der config stehen sollte?

Grüße,
Jens


-------------- nächster Teil --------------
_______________________________________________
Berlin mailing list
Berlin at olsrexperiment.de
https://www.olsrexperiment.de/cgi-bin/mailman/listinfo/berlin




Mehr Informationen über die Mailingliste Berlin