DAMA implementation notes

                 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.