Optimaler Neuübertragungsalgorithmus für einen Broadcast-Kanal

8

Ich habe eine Anzahl von Mikrocontrollern, die über ein Übertragungsmedium (in diesem Fall IR) kommunizieren können. Jeder Knoten möchte seine Anwesenheit allen anderen Knoten regelmäßig mitteilen, da es jedoch ein Übertragungsmedium ist, erzeugen zwei Knoten, die gleichzeitig senden, eine Kollision und keine Nachricht wird korrekt übertragen.

Um die Dinge noch komplizierter zu machen, wenn ein Knoten eine ungültige Nachricht empfängt, erscheint es nicht praktisch, zuverlässig zu bestimmen, ob dies auf eine Kollision oder auf Hintergrundrauschen oder ein schwaches Signal zurückzuführen ist. Während die Knotensichtbarkeit normalerweise reflexiv ist (A sehendes B bedeutet, dass B A sehen kann), wird es normalerweise der Fall sein, dass nicht alle Knoten alle anderen Knoten sehen können.

Wenn man externe Störungen für einen Moment außer Acht lässt, scheint es ein rationaler Ansatz zu sein, Zeitschlitze zu erzeugen, wobei jeder Knoten in jedem Zeitschlitz mit einer kleinen Wahrscheinlichkeit (idealerweise ähnlich zwischen den Knoten) sendet. Wenn es n Knoten gibt, die mit der Wahrscheinlichkeit p senden, dann wird keine Nachricht (1 - p) n von der Zeit übertragen; genau eine Nachricht wird gesendet n * p * (1 - p) n-1 der Zeit, und der Rest der Zeit wird es zu einer Kollision kommen. Das maximale Auftreten von erfolgreichen Kollisionen tritt auf, wenn jeder der n Knoten 1 / n der Zeit überträgt, und dies führt zu ziemlich stabilen 38% erfolgreichen Übertragungen und 24% Kollisionen; Dieser Wert ändert sich nur geringfügig mit zunehmender Anzahl der Knoten.

Angesichts dessen scheint es, als könnten wir die Rate erfolgreicher Übertragungen und / oder Kollisionen beobachten und unsere eigene Übertragungsrate anpassen, um sie zu ihren erwarteten Werten zu zwingen. Was ich nicht sicher bin, ist der beste Feedback-Mechanismus, um dies zu erreichen, so dass jeder mit ähnlichen Wahrscheinlichkeiten endet. Dies berücksichtigt auch keine externen Störungen, die dazu führen werden, dass wir unsere Übertragungsrate weiter reduzieren, um Kollisionen zu vermeiden, die nicht existieren.

Was ist der optimale Algorithmus - entweder eine Verfeinerung des obigen oder ein völlig anderer Ansatz - um den Anteil an Ankündigungsnachrichten zu maximieren, die jeder Knoten ohne Kollision empfangen kann?

    
Nick Johnson 08.11.2012, 13:29
quelle

1 Antwort

1

Was Sie wollen, ist eigentlich ein drahtloses Mesh-Netzwerk, das ein ganzes Suchfeld ist. Abgesehen davon sind Bestätigungsnachrichten eine gute Idee. Sie können sie mit den Ankündigungen selbst pendeln, wenn der Paket-Overhead ein Problem darstellt. Sie ermöglichen die Unterscheidung zwischen Kollisionen und Hintergrundrauschen, indem sie beobachten, wie viele Nachbarn geantwortet haben, und erlauben eine Grundfrequenzbegrenzung, indem sie warten, bis (die meisten) Nachbarn jede Übertragung bestätigen (Stop-and-Go). Das wird natürlich noch komplizierter, wenn die Controller sehr mobil sind.

Es wird sehr schwierig (und wahrscheinlich nicht wünschenswert) sein, eine gleiche Aktualisierungsrate über das gesamte Netzwerk aufrechtzuerhalten, da die Übertragungsqualität in verschiedenen Bereichen und Zeitpunkten stark variieren kann.

    
Stefan Friesel 21.11.2012 19:18
quelle