# Mehrere gleich Packete behandeln



## Amios (22. Nov 2010)

Hallo,
ich arbeite z.Z an einem Netzwerkroutingverfahren bei dem es von Nöten ist, dass ein Knoten(Rechner) Pakete mit identischem Inhalt von unterschiedlichen Nachbarn im Netzwerk erhält. Ich stelle die Anforderung, dass der Knoten von 60% seiner Nachbar diese jenes Paket erhält. Anschließend soll eine Antwort generiert werden und diese an einen weiteren Nachbarn weitergeleitet werden. Nun stellt sich mir jedoch die Frage, wie ich sicherstelle das 1) Ein Paket nicht mehrmals behandelt wird 2) die 60% Schranke eingehalten wird und 3) eventuelle spätere Pakete verworfen werden, wenn ein Antwortpaket bereits versendet wurde 4) Pakete die weniger als häufig als die Schranke eintreffen, verworfen werden. Das ganze sollte möglichst ohne zwischen speichern der Pakete erfolgen (da sehr viele Pakete eintreffen).

Vielen Dank im Vorraus


----------



## XHelp (22. Nov 2010)

Kannst ja den Hash des Pakets speichern und überprüfen ob du so ein Hash bereits hast.


----------



## Gast2 (22. Nov 2010)

Wie willst du ohne Zwischenspeichern der Pakete oder zumindest einer Identitätssumme (Hashwert o.Ä.) denn feststellen ob du ein Paket schon einmal empfangen hast oder nicht?

Du musst ja schon irgendwie mitzählen und identifizieren wie oft du welchs Paket "in den Händen" gehalten hast.


----------



## Amios (24. Nov 2010)

fassy hat gesagt.:


> Wie willst du ohne Zwischenspeichern der Pakete oder zumindest einer Identitätssumme (Hashwert o.Ä.) denn feststellen ob du ein Paket schon einmal empfangen hast oder nicht?
> 
> Du musst ja schon irgendwie mitzählen und identifizieren wie oft du welchs Paket "in den Händen" gehalten hast.


Ja das ist schon richtig. Jedoch müsste eine zeitliche Begrenzung eingerichtet werden um alte Hashwerte zu löschen.

Als Datenstruktur wäre es möglich eine Hashmap die auf Vector abbildet zu nutzen. Key= Messagetype Value= Messageobject(TimeStamp, Sender, Hashwert).

Dann könnte abgefragt werden, wie viele Pakete bereits angekommen sind. Wenn die Länge des Vectors länger ist als die festgelegte Schranke sollte die Abhandlungsroutine gestartet werden.


----------



## FArt (24. Nov 2010)

Hashwert ist ja schön und gut, aber ein Hash hilft dir nur bestimmte Entscheidungen schnell treffen zu können. Ein gleicher Hashwert ist aber keine Garantie dafür, dass auch das Paket bereits bekannt ist. Dafür brauchst du auf jeden Fall einen eindeutigen Identifier für den "identischen Inhalt", egal von wem sie kommen.

Kennst du bereits die Anforderungen für: spätere identische Pakete verwerfen bzw. zu selten gesendetet Pakete ignorieren? Was passiert, wenn dein Zeitfenster für das Aufheben der Pakete abgelaufen ist und dann doch noch ein bereits beantwortetes Paket eintrifft? Oder wenn bestimmte Pakete zwar sehr oft, aber in großem Abstand eintreffen? Ist das relevant?


----------

