- Nachfrage nach Route per Broadcast ähnlich AHCP
- jeweil Broadcasts 3x senden
- später irgendwie per Multicast optimieren
- über das tun interface
ndisc6 -q $IP br-client Wichtig wäre nur, ob es überhaupt eine Antwort gibt (und dass die IP passt). Sollte man wahrscheinlich 3 mal wiederholen.
“liest die Routingtabelle”
- muss keine Prefixe kennen. Das geschieht implizit über die Route.
- passendes Prefix mit passendem Protokoll (babel)
“schreibt die Routingtabelle”
- Timestamp ist, wann der Client gesehen wurde
- Wie “jung” er ist
- ein Knoten, der glaub MAC zu haben aber bei dem Timestamp älter ist gibt alle IPs der MAC frei
- ist die MAC jünger, broadcasten wir selber nochmal (MAC, (IP, Timestamp))
- bei Konflikt direkt per Unicast einigen. Was wird dann getan? Welcher Fall ist das?
- Das ist ähnlich wie DDHCP!
- Wenn sich nicht per Unicast geeinigen werden kann, was dann?
- Sollten beide Knoten den Client “vergessen”?
- Sind dann beide Routen im Mesh?
- Wenn ein Knoten einen Client nicht freigeben will, kann man sowieso wenig tun.
…und dann, nach einer Weile, entfernt Wäre es schlimm viele solcher Routen im Mesh zu haben oder hilft es sogar?
- ein Broadcastpaket (MAC, [(IP, Timestamp)]) “Ich hab jetzt den Client!”
- ggf. noch so ein Paket “Nein, das ist meiner!”
- ggf. eine Einigung per Unicast
- ein Broadcastpaket “Wer kann zum Client mit $IP routen?”
- Antwort erfolgt indirekt über babel
- erstmal ein statisches prefix
- später einen mix aus statischen und dynamischen prefixen
Hashtable(IP, (Timeout, nTry, [Paket]))
- State “DONE” from “TODO” [2015-08-22 Sa 01:44]
- State “DONE” from “TODO” [2015-08-24 Mo 00:49]
- State “DONE” from “TODO” [2015-08-24 Mo 23:03]
- ndisc senden
- ndisc empfangen, whitelist für prefixe
- State “DONE” from “TODO” [2015-08-25 Di 12:16]
- [X] testen ob paket schon bearbeitet wurde
- [X] per ndisc nachfragen
- [X] anfrage weiterbroadcasten
- State “DONE” from “TODO” [2015-08-25 Di 17:20]
- [X] mehrere interfaces unterstützen
- [X] sendto über alle interfaces
- [X] netlink socket, neue interfaces erkennen und multicast joinen
- State “DONE” from “TODO” [2015-08-27 Do 01:05]
- State “DONE” from “TODO” [2015-08-27 Do 01:05]
- State “DONE” from “TODO” [2015-08-27 Do 01:05]
- index mit MAC
- last seen
- last known node’s IP
- liste von IPs
- State “DONE” from “TODO” [2015-08-27 Do 01:06]
- [X] route eintragen
- [X] client merken*
- State “DONE” from “TODO” [2015-08-27 Do 01:07]
- libnl-tiny verwenden
- braucht eine liste von ifindexes
- also auch irgendwie libnetlink foo
- State “DONE” from “TODO” [2015-08-27 Do 19:46]
- generelles broadcast format bauen mit ttl, random nonce, absender IP, node id (eui-64)
- ttl
- random nonce
- gesuchte IP
- ttl
- random nonce
- MAC
- lastseen (relativ)
- liste von Client IPs
- [ ] funktionsnamen
- [ ] variablennamen
- nach halben timeout ndisc machen und ggf. erneuern?
- dann kein ndisc machen
- verwaltet die clients
- verwaltet auch die routen
- bekommt neue Clients (wifistation, ndisc) mit
- bekommt client roaming pakete von anderen knoten mit
Wenn seine Adressen gesehen wurden. = max(map(lastseen, addresses))
Muss das in der Datenstruktur abgebildet werden?
- IPs (und routen) entfernen
- client ganz entfernen
- find_entry (main.c)
- clientmgr.c
- usw…
falls ein knoten mal neustartet
- nachbarn nach deren client tables fragen
- antworten per unicast
- muss mitbekommen, dass er neue Nachbarn hat
- muss nachbarn auch mal vergessen
- Routen ganz entfernen