DAMA - Implementierungshinweise =============================== Detlef J. Schmidt DK4EG Steinbrecherstr.22 D-38106 Braunschweig NORD LINK e.V. c/o Peter Gülzow, DB2OS Allensteiner Str. 5 D-30880 LAATZEN Germany D A M A Implementierungshinweise für System-Programmierer. Im folgenden sollen einige Hinweise vermittelt werden für System- Programmierer, die beabsichtigen die DAMA-Features in ihre Software zu implementieren. Die Art der Informationsübertragung um den Slave im weiteren Betrieb in den DAMA-Modus zu versetzen könnte noch änderungs- bedürftig sein. Es gibt z.Zt. bei der ARRL Bestrebungen, ein neues Release für AX.25 Level-2 zu definieren. Aber alle bisher bekannten Entwürfe betreffen nicht das DAMA-Konzept und behindern es auch nicht. Außerdem ist das digital commitee der ARRL über die DAMA-Bestrebungen informiert worden, sodaß es für zukünftige Absichten berücksichtigt werden kann. Daher soll das Verfahren hiermit einstweilen erstmal als Standard vorgeschlagen werden. Es hat den Vorteil, mit allen bisher etablierten AX.25-Level-2 Implementierungen verträglich zu sein. Es ermöglich einem DAMA-Slave auch dann mit einem DAMA-Master zusammen zu arbeiten, wenn der Slave nicht explizit auf DAMA-Betrieb einge- richtet ist. Gemeinsame Kriterien Wie beim bisherigen Verfahren wird eine Träger-Auswertung gleichermaßen erfolgen (CSMA). Das Verfahren nach DAMA ist also quasi eine logische UND-Verknüpfung. Der Begriff >Poll< hat im folgenden jeweils die Bedeu- tung von Sende-Aufforderung. Er korrespondiert nicht mit dem Poll-Bit in einigen Frames. Dieses Bit bleibt aus Kompatibilitäts-Gründen unver- ändert. Es bleiben im übrigen sämtliche Protokoll-Elemente des AX.25- Repertoires unverändert erhalten. Lediglich zur Verabredung des folgen- den Daten-Dialog im DAMA-Verfahren benutzt der DAMA-Master das SSID- Byte seines entsprechend geänderten Adressfeldes. D.h. im Adress-Feld des eigenen Rufzeichens wird das SSID-Byte folgendermaßen übertragen: Bit 7 6 5 4 3 2 1 0 +-------------------------------+ ! H ! 1 ! 0 ! S ! S ! I ! D ! E ! DAMA +-------------------------------+ im Gegensatz dazu sieht das SSID-Byte einer Station, die nicht als DAMA-Master fungiert folgendermaßen aus: Bit 7 6 5 4 3 2 1 0 +-------------------------------+ ! H ! 1 ! 1 ! S ! S ! I ! D ! E ! non-DAMA +-------------------------------+ Darin sind: E end-of-address-field-Bit H has-been-repeated-Bit SSID SSID-Bits Der DAMA-Modus wird also durch die Null in Bit 5 gekennzeichnet. Diese Markierung betrifft nur das Adressfeld der Ursprungs-Station, also des DAMA-Masters. Als Digipeater fungierende Stationen haben diese Markierung nicht in ihrer Adresse. Sie handhaben lediglich das H-Bit in der bisherigen Weise. Für die maximale Effektivität der Übertragung ist es wichtig, daß ein Frame immer erst unmittelbar vor dem Senden generiert wird. Somit können zwischenzeitlich entstandene bzw eingetroffene Frames sofort als Poll bzw als Antwort gesendet werden und es lassen sich etliche leere Polls/Antworten vermeiden. In der folgenden Beschreibung bedeutet Adresse immer das Rufzeichen der Station einschließlich des zugehörigen SSIDs. Außerdem wird nach Imple- mentierungen für DAMA-Slaves und DAMA-Master unterschieden. Neben den beschriebenen Programm-Stretegien sind in Details auch andere möglich. Z.B. könnte man dynamisch gesteuerte Timer anstelle von Zählern be- nutzen. Die beschriebene Strategie ist also Überwiegend als Anregung anzusehen. DAMA für Slaves. Besonders einfach läßt sich der DAMA-Modus in einer Firmware implemen- tieren, die bereits eine p-persistance-Steuerung realisiert hat. Das dürfte inzwischen wohl in fast allen Firmware-Versionen vorhanden sein. Die Firmware wird ohnehin jedes empfangene Frame mitlesen und daraufhin untersuchen, ob die Ziel-Adresse oder eine Repeater-Adresse gleich der eigenen Adresse ist. Ist also die eigene Station im o.a. Sinne ange- sprochen worden, wird ein solches Frame im folgenden als Poll bezeich- net. Hat das erste empfangene Frame in einer Session (SABM oder UA) die DAMA-Markierung (s.o.), dann wird sich die Slave-Station dies bis zur Auflösung der Verbindung (Disconnect) merken und entsprechend als DAMA-Slave fungieren. Jeder Poll wird also eine Sende-Freigabe akti- vieren (transmit enable flag setzen). Jede fremde Adresse wird eine Sende-Sperre bewirken (transmit disable). Wird die eigene Station ange- pollt, d.h. irgendein beliebiges Frame für oder via die eigene Station wird empfangen, dann wird dieses Frame ausgewertet und die eigene Sta- tion antwortet unmittelbar - also ohne p-persistance delay - mit allen sendebereiten Frames. Auch Frames von anderen Subkanälen - also mit unterschiedlichen SSIDs - werden sofort ausgesendet. Damit werden also auch sofort Frames an andere Stationen als dem DAMA-Master mit ausge- sendet. Wird die eigene Station vom DAMA-Master als Digipeater zu einer anderen Station benutzt, so wird das empfangene Frame ebenfalls schnellstmöglich wieder weitergesendet. Dies gilt auch für den umge- kehrten Fall, wenn eine Nachbarstation ein Frame über die eigene Sta- tion zu einem DAMA-Master hin übertragen will. Der DAMA-Master wird dafür nach seinem Poll genügend Zeit lassen, um auch der übernächsten Station eine Chance zum Senden zu gewähren. Wenn der TNC (bzw sonstige Firmware für level-2) aus dem RESET kommt wird er also wie bisher die p-persistance-Steuerung aktivieren. Solange dann irgendein Kanal des TNCs zu einem DAMA-Master connected ist wird die p-persistance-Steuerung auf DAMA-Slave-Modus umgeschaltet sein. Nachdem irgendwann der letzte Kanal des TNCs vom DAMA-Master disconnec- ted wird geht der TNC dann wieder zur p-persistance-Steuerung ber (für ein mögliches neues SABM z.B.). In einer erweiterten Version des DAMA-Slaves könnte der Slave eine Kanal-Aktivitäts-Statistik führen. Ist die Kanalbelegung unter 10% könnte der Slave bei einem freien Kanal sofort mit dem Senden beginnen ohne auf einen Poll seines Masters zu warten. DAMA für Master-Stationen. Aus der Beschreibung für den Slave ist schon z.T. die Strategie des DAMA-Masters abzulesen. Der Master führt eine Liste aller über ihn zur Zeit arbeitenden Stationen. Jede UPLINK-Station wird genau einmal als anzupollende Station markiert. Ist also eine UPLINK-Station im Multiconnect mehrfach mit dem Netzknoten verbunden so wird sie trotzdem nur einmal markiert. Außerdem wird für jede markierte Station ein eigener Aktivitätszähler geführt (8-Bit-Zähler genügt völlig) und ein Aktivitätsmerker. Dieser Merker wird nur vom Sendeverhalten des End- knotens beeinflusst. Der laufende Betrieb sieht dann etwa folgendermaßen aus: Für jede neu hinzukommende Station wird zunächst die höchstmögliche Priorität ange- nommen, ihr Aktivitätsmerker und -Zähler werden mit 0 initialisiert. Dies erfolgt wenn die neu hinzukommende Station in die User-Liste ein- getragen wird. Der DAMA-Master fängt also an, indem er den Aktivitäts- zähler der ersten auf der USER-Liste markierten Station prüft. Ist dieser ungleich Null so wird lediglich der Zähler dekrementiert und die nächste markierte Station der USER-Liste wird angegangen. Ist dagegen der Zählerstand gleich Null, so wird die entsprechende Station anpollt. Dies kann jedes mögliche Frame aus dem AX.25-Repertoire sein, je nach dem, was laut Protokoll-State-table gerade als Frame zu senden ist. Möglichst sollte es aber ein I-Frame sein, wenn auszusendende Frames für die jeweilige Station anstehen sollten. Andernfalls wird im Idle-Status ein RR-Frame als Poll gesendet. Antwortet die Station darauf unmittelbar mit einem oder mehreren I-Frames oder mit DISC so bleiben bzw werden Merker und Zähler auf 0 gesetzt. Jedes andere em- pfangene Frame bewirkt, daß der Merker inkrementiert wird und der Zäh- ler diesen neuen Wert bekommt. Der Maximalwert sollte als Betriebspara- meter vom SYSOP verändert werden können. Am Ende eines ausgesendeten Polls startet der Master einen TIMOUT-Timer. Auch dieser sollte parame- terisiert sein, z.B. in Vielfachen von 100 msec. Erfolgt vor Ablauf des TIMEOUTs keine Antwort (eventuelles DCD-Ende abwarten !), so wird der Zähler der zugehörigen Station auf 0 gesetzt und die nächste Station angegangen. Wird ein Slave über einen Interims-Digi angepollt, so muß der TIMEOUT verlängert werden, um dem nicht gehörten End-Knoten (hinter dem Interims-Digi) Zeit zum Reagieren zu lassen. In diesem Fall kann der TIMEOUT eher großzügig bemessen sein, denn höchstwahrscheinlich wird ja die Antwort des Endknoten via Interims-Digi bald eintreffen und ab dann wird ja nicht mehr unnötig gewartet. Der TIMOUT sollte also die Anzahl der Interims-Digis und die ausgesendete Frame-Länge berücksichtigen. Sind alle markierten Stationseinträge der USER-Liste je einmal bearbeitet worden, dann sollte der Master eine kleine Pause vorsehen, um neuen Stationen die Möglichkeit zum Connect zu ermögli- chen. Dafür reicht die Dauer eines einfachen TIMEOUTs. Einige Betriebsfälle sollen nochmal extra betrachtet werden: - Arbeitet eine Slave-Station im Multiconnect mit dem DAMA-Master sind manchmal Zustände möglich, bei denen Bestätigungen des Masters an ver- schiedene Rufzeichen (SSIDs) eines Slaves zum Senden anstehen. In die- sem Falle sollten möglichst alle Frames unmittelbar zusammen als Poll an den Slave gesendet werden. - Ähnliches gilt, wenn ein Frame an ein Rufzeichen gesendet werden soll, daß in der USER-Liste nicht markiert ist (z.B. weil bereits ein anderes Rufzeichen derselben Station in der Liste markiert ist). In diesem Falle muß der Poll natürlich an die Stations-Adresse gerichtet werden, für die es gedacht ist. Dafür sollte aber ein leerer Poll an die markierte Adresse derselben Station in der aktuellen Runde ausge- lassen werden und der Zähler danach entsprechend neu gesetzt werden. Einen vergleichbaren Effekt kann man erreichen, wenn zwar alle Ruf- zeichen einer UPLINK-Station markiert sind, aber bei leeren Antworten auf den Poll Zähler und Merker um soviel inkrementiert werden, wie die entsprechende Station mehrfach UPLINK connected sind. In diesem Falle sollten aber die Zählerstände um jeweils 1 versetzt geführt werden, damit die Station nicht mehrfach in einer Runde gepollt wird. - Alle auszusendenden I-Frames des Masters sollen sofort dann ausgesen- det werden, wenn der zugehörige Eintrag der USER-Liste gerade bearbei- tet wird. Dies gilt auch, wenn der Zählerstand noch nicht gleich Null ist. - Empfängt ein DAMA-Master ein SABM eines anderen DAMA-Masters, so wird die rufende Station nicht in der USER-Liste markiert. Die Koordinierung zwischen DAMA-Mastern erfolgt also ausschließlich über CSMA. Dieser Fall kann normalerweise nur bei Überreichweiten auftreten. - Sind nur wenige Stationen - oder auch nur eine - auf der USER-Liste markiert, die aber sehr aktiv transferieren, so kann am Ende der Liste die Pause für neue Stationen auch vereinzelt ausgelassen werden. Es genügt meist, wenn die Pause frühestens nach 5 Sekunden auftritt. Aber auch dieser Wert sollte parameterisiert sein. DAMA-Netzknoten <-> Duplex-Digi Bei Einsatz des DAMA-Verfahrens lassen sich einige Probleme lösen, die den DUPLEX-Digis noch anhaften: a) Der Hardware-Aufwand eines Duplex-Digis ist um einiges höher als bei einem Simplex-Digi. b) Ein Duplex-Digi belegt ZWEI Kanäle, bringt aber nur den Durchsatz EINES nahezu kollisionsfreien Kanals. Eine Durchsatzsteigerung tritt nur statistisch durch Kollisionreduzierung auf, es wird aber nicht die Last auf zwei Kanäle verteilt. c) Kollisionen werden nur reduziert aber nicht verhindert. Und das immer wieder im laufenden Betrieb. Es warten ja typischerweise immer mehrere Stationen darauf, daá der Datenträger des vom Digi gesendeten Signals abgeschaltet wird um selber senden zu künnen. Der Digi synchro- nisiert somit quasi alle empfangenden sendebereiten Stationen unter- einander. In der Totzeit dieser Stationen kommt es dann immer wieder zu Kollisionen, wodurch natürlich das gesendete Frame verloren geht. Totzeit ist dabei der Zeitabschnitt zwischen Abschalten des Empfängers und Abstrahlung eines für die anderen Stationen auswertbaren Datenträ- gers. Sie beträgt bei unmodifizierten VHF-Transceivern des Amateur- marktes ca 150...300 msec. Dieser 'Dead-Time-Clobbering-Effekt' kann durch Anwendung von 'p-persistance-Steuerung' zwar gemildert werden, aber damit wird auf jeden Fall erstmal der Durchsatz reduziert, da künstlich Verzögerungen in die Umschaltpausen eingefügt werden. d) Stationen, die zu weit vom Digi entfernt sind, um ihn stabil auf- nehmen zu können, haben nicht die Möglichkeit eine oder mehrere benach- barte Stationen als Zwischen-Digi zu benutzen, um in's Netz einzu- steigen. e) Direkt-Verbindungen auf der Eingabe-Frequenz des Digis sind ohne diesen zu benutzen nicht möglich (bzw. nur mit dem niedrigen ALOHA- Wert), da für diese Direkt-Verbindungen ja die Ausgabe des Digis nicht abgehört werden kann. f) Bei Überreichweiten können sich Duplex-Digipeater derselben Arbeits- frequenz nicht gegenseitig hören und erzeugen somit Kollisionen bei den Stationen, die über die Digis arbeiten wollen. Zusammenfassung Durch das DAMA-Verfahren ergeben sich unmittelbar einige Konsequenzen: Durch die Verzögerung der Bestätigung können Frames, die zwischenzeit- lich eintreffen, in der nächsten Runde bereits als Bestätigung an den Endknoten gesendet werden. Es können so einige leere Bestätigungen eingespart werden, was den Kanal entlastet. Der Pollabstand für inak- tive Stationen wird automatisch erhöht, dadurch wird der Kanal weiter entlastet. In dem Extremfall, daß alle Stationen kontinuierlich Daten übertragen wollen werden keine unnötigen Polls mehr gesendet. Durch Nutzung von zwischenzeitlich eintreffenden Frames als Bestätigung sind sogar insgesamt weniger Frames zu übertragen, als bei einem kollisions- freien CSMA-Kanal. Dadurch daß am Netzknoten empfangene Frames eine gewisse Zeit lang unbestätigt gehalten werden, wird sich auch bei den Endknoten eine Durchsatzsteigerung einstellen, die nicht explizit auf DAMA reagieren können, sondern die reine CSMA-Version fahren. Diese Stationen müßten dazu ihre Betriebs-Parameter z.T etwas anders ein- stellen. z.B. müßte der Delay zwischen Empfang eines an sie gerichteten Frames und der zugehörigen eigenen Bestätigung auf einen Minimalwert gesetzt werden (weniger als 1 sec). Die Zeit bis zur Pollaussendung auf ein eigenes ausgesendetes I-Frame - um eine Bestätigung 'anzu- mahnen' - wird auf einen relativ hohen Wert gesetzt, der deutlich größer ist als normalerweise der zeitliche Abstand zwischen zwei Polls des Netzknotens. Um aber die vollen Möglichkeiten des Verfahrens auszu- schüpfen sollten beide Seiten die neue Protokoll-Version fahren. Der Kanaldurchsatz wird dabei umso besser je mehr Stationen anteilig die neue Variante benutzen. Glossar DISC Disconnect Frame I Information Frame RR Receive Ready SABM Set Asynchonous Balanced Mode UA Unnumbered Acknowledge CSMA Carrier Sense Multiple Access DAMA Demand Assigned Multiple Access connection oriented protocol : alle Knoten der Strecke kennen alle Stationen, die die Strecke benut- zen, zumindest kurzzeitig. Im Gegensatz dazu steht das connectionless protocol, bei dem alle Daten-Packete einfach nur weitergereicht werden, Connec- tion oriented Protokolle sind typischerweise aufwendiger in der Reali- sierung und benötigen mehr Rechnerleistung in den Netzknoten, dafür sind sie aber speziell auf Übertragungskanälen mit geringerer Kapazität überlegen, da nicht in jedem Frame die gesamte Routinginformation mit- transportiert werden muß, sondern nur einmal während des Verbindungs- aufbaus. Literatur Fox,T. AX.25 Level 2 protocol specifications AMRAD Kauffels,F.J. Lokale Netze R.Müller Verlag Mahle,C. Satellite Scenarios and Technology IEEE J. on selected Hyde,G for the 1990's Areas in communication Inukai,Th. May '87 Schmidt,D.J. DAMA, ein neues Verfahren für cq-DL, 4/89 Packed-Radio? Schmidt,D.J. Synchrone DFÜ-Protokolle mit 6809-Micro- TU-Script BS '81 Computern in heterogenen Sternnetzen Tanenbaum,A. Computer Networks Prentice Hall Verlag ------------------------------------------------------------------------- In der Beschreibung zur Implementierung des DAMA-Verfahrens ( MAC-Layer ) scheint sich eine mehrdeutige Interpretations-Moeglichkeit eingeschlichen zu haben. Diese moegliche Unklarheit soll hiermit ausgeraeumt werden. Allgemein sieht das SSID-Byte des DAMA-Masters folgendermassen aus: Bit 7 6 5 4 3 2 1 0 +---+---+---+---+---+---+---+---+ ! H ! 1 ! 0 ! S ! S ! I ! D ! E ! DAMA +---+---+---+---+---+---+---+---+ im Gegensatz dazu sieht das SSID-Byte einer Station, die nicht als DAMA-Master fungiert folgendermassen aus: Bit 7 6 5 4 3 2 1 0 +---+---+---+---+---+---+---+---+ ! H ! 1 ! 1 ! S ! S ! I ! D ! E ! non-DAMA +---+---+---+---+---+---+---+---+ Darin sind: E end-of-address-field-Bit H has-been-repeated-Bit SSID SSID-Bits Der DAMA-Modus wird also durch die Null in Bit 5 gekennzeichnet. Diese Markierung betrifft nur das Adressfeld der Ursprungs-Station, also des DAMA-Masters. Als Digipeater fungierende Stationen haben diese Markierung nicht in ihrer Adresse. Sie handhaben lediglich das H-Bit in der bisherigen Weise. Der DAMA-Slave setzt in seinem Adressfeld NIE das DAMA-Bit, d.h. das Bit ist immer 1 (low true). Das gleiche gilt fuer Rufzeichen des Headers, wenn die eigene Station als Repeater fungiert. Jeder DAMA-Master setzt zur Signalisierung fuer die Slaves im SSID-Byte seines eigenen Adress-Feldes das DAMA-Bit auf 0 (s.o.). Die SSID-Bytes der Adressen von zwischengeschalteten Repeatern bleiben davon aber unberuehrt!
Pr4Win by Bernd M. Stroj (OE8DJK), last updated on May 7, 1998.