EulerHobeln:Protokoll O2Mega

Aus II-Wiki
Zur Navigation springen Zur Suche springen
Einordnung
Level 2 ÜDP VRace Lobby
Level 1 O2Mega
Transport TCP

Das O2Mega-Protokoll realisiert eine Datenübertragung durch mehrere Tunnel zwischen zwei Rechnern über eine TCP/IP Verbindung. Maximal können 65536 Tunnel gleichzeitig genutzt werden, wobei jeder duch eine Portnummer identifiziert wird.

Das Protokoll entstand im Rahmen des EulerHobeln-Projekts.

Konzept

Über eine bestehende TCP/IP-Verbindung zwischen dem Client und dem Server werden TunnelBlöcke ausgetauscht. Diese enthalten neben den Daten auch den Empfängerport.

Es gibt im Gegensatz zu TCP/IP weder halboffenen Verbindungen noch den Auf- bzw. Abbau einer Verbindung. Jede Seite kann immer auf allen Ports senden. Einzig und allein der Empfänger kann die Daten verwerfen oder bearbeiten.

TunnelBlock

Ein TunnelBlock ist das atomare Datenpaket des O2Mega-P. Es enthält einen Header, Nutzdaten und den Footer. Der Header besteht aus fünf Bytes. Das Erste ist das Startbyte und hat immer den Wert 0xff. Als Zweites kommt der zwei Byte lange Port (niederwertigstes Byte zuerst), an den die Daten weitergeleitet werden. Nun folgt Len. Es gibt die Länge in zwei Bytes (niederwertigstes Byte zuerst) der nachfolgenden Nutzdaten an. Nach den Nutzdaten endet der Block mit dem FooterByte 0x00.

TunnelBlock
0 1 2 3 4 5 .. L+5
Header Data Footer
Start Port Length (L) Stop
0xff LSB MSB LSB MSB 0x00

Bespiel

Ein Beispiel eines IP-Datenblocks mit drei TunnelBlocks

+--+--+--+--+--+--------+--+--+--+--+--+--+-------------+--+--+--+--+--+--+---------------------+--+
|ff|00|00|08|00|MOINMOIN|00|ff|00|00|0d|00|NICKCHNG R2d2|00|ff|00|00|15|00|GAMEJOIN DaReals-Game|00|
+--+--+--+--+--+--------+--+--+--+--+--+--+-------------+--+--+--+--+--+--+---------------------+--+

Analyse

Es stellt sich die Frage, welche Anteile der physikalischen Übertragung (Bitstream durchs LAN) auf die Nutzdaten des O2Megaprotokolls entfallen.

Datei:O2MegaAnalyse.jpg

Wird z.B nur ein TunnelBlock mit 8 Bytes Nutzdaten versendet, machen diese Daten 3,4% der gesammten physikalischen Übertragung aus. ;) Bei 224 Bytes Nutzdaten machen sie hingegen schon 50% aus.

Quellen

Realisierung

Die Realisierung findet auf OOP-Ebene statt und arbeitet mit Threads und Kritischen Bereichen (synchronized).

Verteiler

Der Verteiler ist der erste Layer, der direckt auf das TCP/IP aufsetzt. Seine Aufgaben bestehen darin, eingehende TunnelBlocks weiterzuleiten und Ausgehende zu versenden.

Er kann eingehende Daten auch verwerfen, wenn er kein Tor hat, das diesen Port reserviert hat.