
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.