diff options
Diffstat (limited to 'doc/net/netzhandbuch')
| -rw-r--r-- | doc/net/netzhandbuch | 2045 | 
1 files changed, 2045 insertions, 0 deletions
| diff --git a/doc/net/netzhandbuch b/doc/net/netzhandbuch new file mode 100644 index 0000000..7083462 --- /dev/null +++ b/doc/net/netzhandbuch @@ -0,0 +1,2045 @@ +____________________________________________________________________________  +  +  +#on("b")##on ("u")#  +#center#Betriebssystem E U M E L  +#off ("u")#  +  +  +#center#Netzsoftware  +  +  +  +  +#off("b")#  +#center#Lizenzfreie Software der  +#on ("b")#  +  +#center#Gesellschaft für Mathematik und Datenverarbeitung mbH,  +#center#5205 Sankt Augustin  +  +  +#off("b")#  +#center#Die Nutzung der Software ist nur im Schul- und Hochschulbereich für  +#center#nichtkommerzielle Zwecke gestattet.  +  +#center#Gewährleistung und Haftung werden ausgeschlossen  +  +  +____________________________________________________________________________  +#page#  +#pagenr ("%",1)##setcount(1)##block##pageblock##count per page#  +#headeven#  +#center#EUMEL Netzbeschreibung  +#center#____________________________________________________________  +  +#end#  +#headodd#  +#center#Inhalt  +#center#____________________________________________________________  +  +#end#  +#bottomeven#  +#center#____________________________________________________________  +Netz - % #right# GMD  +#end#  +#bottomodd#  +#center#____________________________________________________________  +GMD #right#Netz - %  +#end#  +  +#center#Inhalt  +  +#clear pos##lpos(1.0)##rpos(9.5)#  +#table#  +  +1. Einleitung  #topage("0")#  +  +Teil 1: Netz einrichten und benutzen  #topage("1")#  +  +  +1.1. Hardwarevoraussetzungen  #topage("1.1")#  +1.2. Einrichten des Netzes    #topage("1.2")#  +1.3. Benutzung des Netzes   #topage("1.3")#  +1.4. Informationsmöglichkeiten   #topage("1.4")#  +1.5. Eingriffsmöglichkeiten   #topage("1.5")#  +1.6. Fehlerbehebung im Netz   #topage("1.6")#  +1.7. Sicherheit im Netz       #topage("1.7")#  +  +  +  +Teil 2: Arbeitsweise der Netzsoftware   #topage("2")#  +  +  +2.1. Die Netztask    #topage("2.1")#  +2.2. Protokollebenen   #topage("2.2")#  +2.3. Stand der Netzsoftware  #topage("2.3")#  +  +  +  +Teil 3: Netz-Hardware-Interface   #topage("3")#  +  +  +3.1. Einführung   #topage("3.1")#  +3.2. Arbeitsweise des Netz-Hardware-Interfaces   #topage("3.2")#  +3.3. Netztreiber  #topage("3.3")#  +3.4. Prozedurschnittstelle des EUMEL-Netzes  #topage("3.4")#  +  +  +  +Anhang      #topage("A")#  +  +  +1. Fehlermeldungen  #topage("A.1")#  +2. Literaturhinweise    #topage("A.2")#  +3. Index  #topage("A.3")#  +  +#table end#  +#clear pos#  +  +#page#  +#pagenr ("%", 2)##setcount (1)##block##pageblock##count per page#  +#headeven#  +#center#EUMEL Netzbeschreibung  +#center#____________________________________________________________  +  +#end#  +#headodd#  +#center#Einleitung  +#center#____________________________________________________________  +  +#end#  +#bottomeven#  +#center#____________________________________________________________  +Netz - % #right#GMD  +#end#  +#bottomodd#  +#center#____________________________________________________________  +GMD #right#Netz - %  +#end#  + +1. Einleitung  +  +#goalpage("0")#  +Das EUMEL-Netz dient dazu, mehrere EUMEL-Rechner (sog. #ib#Station#ie#en) miteinan +der zu koppeln. Diese Kopplung wird vom Betriebssystem dazu benutzt, das Sen +dungskonzept [1] so auszudehnen, daß Tasks verschiedener Stationen einander +Datenräume zusenden können. Auf dem #ib#Sendungskonzept#ie# aufbauende Konzepte +nutzen daher automatisch das Netz aus: So ist es z.B. möglich  +  +-  von einer Station aus auf einer anderen zu drucken,  +  +-  in die Task PUBLIC einer anderen Station #ib#Datei#ie#en zu sichern (save), vorausge +   setzt, daß PUBLIC dort ein #on("b")#free global manager#off("b")# ist,  +  +-  auf einer anderen Station zu archivieren (z.B. wenn das eigene Archivlaufwerk +   defekt ist oder ein anderes Format hat).  +  +Diese #ib#Netzversion#ie# kann ab EUMEL-Version 1.8.1 eingesetzt werden.  +  +Diese Netzbeschreibung besteht aus drei Teilen. In Teil 1 wird beschrieben, wie das +EUMEL-Netz benutzt und eingerichtet wird. Als Benutzer eines EUMEL- +Rechners, der vernetzt ist, ist nur dieser Teil der Netzbeschreibung für Sie wichtig. +Teil 2 erklärt die Funktionsweise der #ib#Netzsoftware#ie#, im dritten Teil wird die Schnitt +stelle für die Anpassung anderer #ib#Netzhardware#ie# definiert.  +  +Hinweis:  +  +Zur erstmaligen #ib#Installation#ie# des EUMEL-Netzes ist außer dieser Beschreibung noch +die Netzsoftware (auf Floppy) und die EUMEL-Netz-#ib#Installationsanleitung#ie#, die mit +der Software geliefert wird, notwendig.  +  +In der vorliegenden Netzbeschreibung wird das EUMEL-Netz möglichst "hardware +unabhängig" beschrieben. Wenn hardwareabhängige Beispiele gegeben werden, so +ist die dort beschriebene Hardware stets die #ib#Datenbox#ie#.  +#pagenr ("%", 3)##setcount (1)##block##pageblock##count per page#  +#headeven#  +#center#EUMEL Netzbeschreibung  +#cneter#____________________________________________________________  +  +#end#  +#headodd#  +#center#Teil 1 :  Netz einrichten und benutzen  +#center#____________________________________________________________  +  +#end#  +#bottomeven#  +#center#____________________________________________________________  +Netz - % #right#GMD  +#end#  +#bottomodd#  +#center#____________________________________________________________  +GMD #right#Netz - %  +#end#  +#page#  +  +Teil 1: Netz einrichten und benutzen  +#goalpage("1")#  +  +  +  +1.1. Hardwarevoraussetzungen  +#goalpage("1.1")#  +  +  +Zwei Stationen  +  +Sie können zwei #ib#Station#ie# miteinander vernetzen, wenn Sie dafür an jeder Station eine +#ib#V.24#ie#-#ib#Schnittstelle#ie# zur Verfügung stellen.  +  +Diese beiden Schnittstellen verbinden Sie mit einem Kabel zur #ib#Rechnerkopplung#ie# [2].  +  +  +Mehrere Stationen  +  +Wenn Sie mehr als zwei Stationen vernetzen wollen, stehen Ihnen zwei Konzepte zur +Verfügung: das Anlegen von #ib#Netzknoten#ie# bzw. das Verwenden eines #ib#Strang#ie#es. Die +Konzepte können gemischt eingesetzt werden.  +  +Ein Strang besteht aus einer Anzahl von #ib#Netzbox#ie#en (z.B. KHW-Box oder Ethernet +anschluß).  +  +Jede Box besitzt eine #ib#Schnittstelle#ie# (z.B. #ib#V.24#ie#) zum Anschluß an einen der Kanäle +1...15 der zugeordneten #ib#Station#ie# und eine weitere Schnittstelle zur #ib#Verbindung#ie# der +Boxen untereinander.  +  +Ein #ib#Knoten#ie# ist eine Station, bei der der Netzbetrieb über mehrere Kanäle läuft.  +  +Da die #ib#Netzsoftware#ie# pro #ib#Kanal#ie# eines Knotens eine Task generiert, ist das Knoten +konzept dem Strangkonzept hinsichtlich des #ib#Durchsatz#ie#es unterlegen. Preisgünstiger +ist jedoch das #ib#Knotenkonzept#ie#, weil dabei #ib#Netzbox#ie#en überflüssig werden.  +  +Beim Knotenkonzept wird eine #ib#Vermaschung#ie# nicht zur Optimierung benutzt (Ver +maschung heißt, daß eine #ib#Zielstation#ie# über verschiedene Knoten erreichbar ist). Daher +sollte man keine Vermaschung vorsehen.  +  +#ib#Nachbarn#ie# sind Stationen, die an denselben #ib#Netzstrang#ie# angeschlossen oder direkt +über ein #ib#V.24#ie#-Kabel verbunden sind.  +  +Bei der Entscheidung, welche Stationen man zu #ib#Knoten#ie# macht, sollte beachtet wer +den, daß (a) Stationen, zwischen denen hoher Verkehr besteht, Nachbarn werden und +daß (b) besonders leistungsfähige Rechner #ib#Knoten#ie#stationen sein sollten.  +#page#  +  +1.2. Einrichten des Netzes  +#goalpage("1.2")#  +  +  +Hinweis: Dieses Kapitel ist nur für Systembetreuer wichtig.  +  +a) Legen Sie für die am Netz beteiligten Rechner #ib#Stationsnummer#ie#n fest (von 1 an +   aufsteigend).  +  +   Die Boxen haben ebenfalls Stationsnummern. Die Stationsnummern der Box und +   des zugeordneten Rechners müssen übereinstimmen.  +  +  +b) Holen Sie an jeder #ib#Station#ie# die Task #on("bold")#configurator#off("bold")# an ein Terminal und geben Sie +   das Kommando #on("bold")##ib#define station#ie# (x)#off("bold")#, wobei #on("bold")#x#off("bold")# die gewählte Stationsnummer ist.  +  +   Hinweis:  Taskkommunikationen, die zu diesem Zeitpunkt laufen, führen zu feh +             lerhaftem Verhalten. Dies liegt daran, daß durch #on("bold")#define station#off("bold")# alle +             #ib#Task-Id#ie#'s geändert werden müssen, weil eine #ib#Task-Id#ie# u.a. die +             Stationsnummer der eigenen Station enthält (siehe 1.3). TASK- +             Variablen, die noch Task-Id's mit keiner oder falscher Stationsnum +             mer enthalten, können nicht mehr zum Ansprechen einer Task ver +             wendet werden.  +  +   Beispiel: Der #ib#Spoolmanager#ie# [3] richtet beim Kommando #on("bold")#start#off("bold")# einen #ib#Worker#ie# ein +             und merkt sich dessen #ib#Task-Id#ie# in einer TASK-Variablen, um sicher +             zustellen, daß nur der Worker #ib#Datei#ie#en zum Drucken abholt. Wird jetzt +             das Kommando #on("bold")# define station#off("bold")# gegeben, kann der Spoolmanager +             seinen Worker nicht mehr identifizieren, weil der Worker eine neue +             Task-Id erhalten hat. Man muß daher vor #on("b")#define station#off("b")# den Worker +             löschen und ihn danach mit dem Kommando #on("bold")##ib#start#ie##off("bold")# im Spoolmanager +             wieder neu einrichten.  +  +  +   Sinnvollerweise gibt man #on("bold")#define station#off("bold")# sofort nachdem man ein frisches System +   vom Archiv geladen hat.  +  +   Zum Anschluß einer #ib#Datenbox#ie# #ib#konfigurieren#ie# Sie mit dem Kommando #on("bold")##ib#configurate#ie##off("bold")# +   den für das Netz vorgesehenen #ib#Kanal#ie# auf  +  +   -  transparent  +   -  9600 #ib#Baud#ie# (Standardeinstellung der Boxen)  +   -  #ib#RTS/CTS#ie#-#ib#Protokoll#ie#  +   -  großen Puffer  +   -  8 bit  +   -  even parity  +   -  1 stopbit.  +  +   Falls diese Einstellungen nicht alle angeboten werden, klären Sie mit Ihrem +   Rechnerlieferanten, ob und wie diese Einstellungen erreicht werden können.  +  +   Hinweis:  Notfalls kann auf das #ib#RTS/CTS#ie#-Protokoll verzichtet werden, wenn der +             Eingabepuffer der #ib#Station#ie# groß genug ist. Die Anzahl simultan laufen +             der Netzkommunikationen ist dann auf  +  +                    puffergröße DIV 150  +  +             begrenzt (bei Z80, 8086: 3; bei M20: 10).  +  +   Hinweis:  Es können auch andere #ib#Baud#ie#raten (2400, 4800, 19200) an der Box +             eingestellt werden.  +  +  +c) Achten Sie bei der #ib#Verbindung#ie# von der Station zur #ib#Netzbox#ie# (bzw. zur Gegen +   station bei einem Zweistationennetz ohne Boxen) darauf, daß neben den Emp +   fangs- und Sendeleitungen auch die Leitungen RTS und CTS verdrahtet wer +   den, also ein 5-poliges Kabel verwendet wird [2]. Die #ib#Pin-Belegung#ie# der Boxen +   entspricht der eines Kabels zur Rechner-Rechner-Kopplung.  +  +   Beispiel:  +  +   Verbindung eines BICOS-Systems mit der Box:  +  +   Stecker                  Stecker  +   Pin                      Pin  +  +   2  <--------->           3  +   3  <--------->           2  +   4  <--------->           5  +   5  <--------->           4  +   7  <--------->           7  +  +  +d) Richten Sie eine Task #on("bold")##ib#net#ie##off("bold")# unter #on("bold")#SYSUR#off("bold")# ein und legen Sie eine #ib#Datei#ie# #on("b")##ib#netz#ie##off("b")# an, die +   Ihre #ib#Netzkonfiguration#ie# enthält, oder ändern Sie die mitgelieferte Datei ent +   sprechend ab (siehe auch 1.5.).#goalpage("sperre")#  +  +  +   Dem bisherigen Netz entspricht eine Datei #on("b")#netz#off("b")# mit folgendem Inhalt:  +  +     definiere netz;  +     routen (1,127,k);  +     starte kanal (k,1,x);  +     aktiviere netz.  +  +     k: ihr netzkanal.  +     x: IF yes ("#ib#Flußkontrolle#ie#") THEN 10 ELSE 3 FI.  +  +  +  +   Laden Sie die Datei #on("b")##ib#net install#ie##off("b")# vom Archiv #on("b")#net#off("b")# und übersetzen Sie diese. Je nach +   dem, welche EUMEL-Version auf der Maschine installiert ist, werden die notwen +   digen Programmdateien insertiert.  +  +   Es sind dies  +  +                          net report  +                          net hardware interface  +                          basic net  +                          net manager  +  +  +   Das Netz wird dabei gestartet.  +  +  +   Hinweis:  Obwohl die Task #on("b")#net#off("b")# sich noch mit #on("bold")##ib#continue#ie##off ("bold")# an ein Terminal holen +             läßt, sollte man dies nur kurzzeitig tun, da der Netzverkehr solange +             blockiert ist.  +  +             In der #ib#Datei#ie# #on("b")#netz#off("b")# sollte der #ib#Kanal#ie#, über den der meiste Verkehr erwar +             tet wird, zuerst gestartet werden. Für ihn wird die Task #on("b")##ib#net port#ie##off("b")# gene +             riert, für jeden weiteren Kanal wird eine Task #on("b")##ib#net port#ie# k#off("b")# (k=Kanal +             nummer) generiert.  +#page#  + +1.3. Benutzung des Netzes   +#goalpage("1.3")#  +  +  +Zur Benutzung des Netzes stehen folgende Operatoren und Prozeduren zur Verfü +gung:  +  +  +  +TASK OP #ib#/#ie# (INT CONST station, TEXT CONST taskname)  +  +liefert die Task #on("bold")#taskname#off("bold")# von der #ib#Station#ie# #on("bold")#station#off("bold")#.  +  +  +#ib#Fehlerfälle#ie#:  +  +  -  #ib(4)#Task "...." gibt es nicht#ie(4)#  +  +     Die angeforderte Task gibt es auf der #ib#Zielstation#ie# nicht.  +  +  -  #ib(4)##ib#Collectortask#ie# fehlt#ie(4)#  +  +     die Task #on("b")##ib#net port#ie##off("b")# existiert nicht (siehe 6).  +  +     Hinweis:  #on("b")#net port#off("b")# wird bei jedem Start des Netzes neu generiert und beim +               Auftreten eines nicht vorhergesehenen #ib#Fehler#ie#s beendet. Die Feh +               lermeldung steht im #on("b")##ib#report#ie##off("b")# (siehe 4).  +  +  -  #ib(4)#Station x antwortet nicht#ie(4)#  +  +     Eine nicht vorhandene oder abgeschaltete Station wurde angesprochen.  +  +     Hinweis: Dieser #ib#Fehler#ie# wird angenommen, wenn eine Überwachungszeit von +              ca. 30 Sekunden verstrichen ist, ohne daß Station x die Taskidenti +              fikation angeliefert hat.  +  +  -  #ib(4)#Station x gibt es nicht#ie(4)#  +  +     #ib#Station#ie# x steht nicht in den #ib#Routentabelle#ie#n.  +  +     Diese Meldung kann auch erscheinen, wenn Station x erst kürzlich an das Netz +     angeschlossen wurde. Sie steht dann noch nicht in den Routentabellen (siehe +     auch 5.3.).  +  +     Beispiel:  +  +        list (5/"PUBLIC")  +  +     Die Dateiliste von PUBLIC der Station 5 wird angefordert.  +  +  +  +TASK OP #ib#/#ie# (INT CONST station, TASK CONST task)  +  +liefert  +  +station / name (task)  +  +Beispiel:  +  +   list (4/public)  +  +  +Fehlerfall:  +  +   "......" #ib(4)#gibt es nicht#ie(4)#  +  +   Auf der eigenen Station gibt es die Task #on("b")#task#off("b")# nicht.  +   Der Taskname wird auf der eigenen Station bestimmt, wenn es dort die Task  +   nicht gibt, führt dies zur obigen Fehlermeldung.  +  +Abhilfe:  +  +   Statt list(4/public) das Kommando list (4/"PUBLIC") verwenden.  +  +  +  +INT PROC #ib#station#ie# (TASK CONST task)  +  +liefert die #ib#Stationsnummer#ie# der Task #on("bold")#task#off("bold")#.  +  +Beispiel:  +  +   put (station (myself))  +  +   gibt die eigene Stationsnummer aus.  +  +  +  +  +PROC #ib#reserve#ie# (TEXT CONST archivename, TASK CONST archivetask)  +  +dient dazu, das Archiv auf der #ib#Station#ie# #on("bold")#station#off("bold")# anzumelden.  +  +Beispiel:  +  +   reserve ("std", 4/"ARCHIVE"); #ib#list#ie# (4/"ARCHIVE")  +  +   gibt das Inhaltsverzeichnis der Archivfloppy im Laufwerk der Station 4 aus.  +  +   Hinweis: Vergessen Sie bei solchen #ib#Querarchivierungen#ie# nicht die Stationsangabe +            bei jedem einzelnen Archivkommando (z.B fetch ("xxx", #on("bold")#4/#off("bold")# +            "ARCHIVE")).  +  +   Hinweis: Querarchivieren ist langsam. Verwenden Sie es nur, wenn Sie Floppy +            formate umsetzen wollen.  +  +  +  +  +PROC #ib#free global manager#ie#  +  +dient dazu, die eigene Task über das Netz ansprechbar zu machen. Jede andere +Task im Netz kann dann die üblichen #ib#Manager#ie#aufrufe (#on("bold")##ib#save#ie##off ("bold")#, #on("bold")##ib#fetch#ie##off ("bold")#, usw.) an die +eigene Task machen, sofern diese nicht an ein Terminal gekoppelt ist.  +  +Die Task wird (wie bei #on("bold")#break#off ("bold")#) abgekoppelt und meldet sich in Zukunft mit #on("bold")#mainte +nance#off ("bold")# statt mit #on("bold")#gib kommando#off ("bold")#.  +  +Beispiel:  +  +   An Station 4 ruft man in der Task "hugo" das Kommando #on("bold")#free global manager#off("bold")# +   auf. Anschließend kann man von jeder Station aus z.B. #on("bold")#list (4/"hugo")#off ("bold")# usw. auf +   rufen.  +  +  +  +  +TEXT PROC #ib#name#ie# (TASK CONST t)  +  +Diese (schon immer vorhandene) Prozedur wurde dahingehend erweitert, daß der +Name einer auf einer anderen Station existierenden Task über Netz angefordert wird.  +  +Existiert die Task nicht, so wird #on("bold")##ib#niltext#ie##off ("bold")# geliefert.  +  +Hinweis: Die Prozedur #on("bold")##ib#exists#ie##off ("bold")# wurde nicht auf das Netz ausgedehnt, da sie in Situa +         tionen eingesetzt wird, wo es auf eine sehr schnelle Antwort ankommt. +         Daher liefert #on("bold")#exists#off ("bold")# für eine stationsfremde Task immer FALSE. Will man +         wissen, ob eine solche Task existiert, verwende man die Abfrage  +  +         #on("bold")#IF name (task) <> "" THEN ... #off ("bold")#.  +  +#ib#Fehlerfall#ie#:  +  +   - #ib(4)#Station x antwortet nicht#ie(4)#  +  +   - #ib(4)##ib#Station#ie# x gibt es nicht#ie(4)#  +  +#page#  +  +1.4. Informationsmöglichkeiten  +  +#goalpage("1.4")#  +  +In der Task #on("bold")#net#off("bold")# wird eine #ib#Datei#ie# #on("bold")##ib#report#ie##off("bold")# geführt, in der #ib#Fehlersituationen#ie# des Netzes +verzeichnet werden. Diese Datei kann in jeder anderen Task auf derselben Station mit +#on("bold")##ib#list#ie# (/"#ib#net#ie#")#off("bold")# angesehen werden. Eine Erklärung der wichtigsten Meldungen finden Sie +im Anhang.  +  +In jeder Task kann durch das Kommando #on("bold")##ib#list#ie# (/"#ib#net port#ie#")#off("bold")# eine Übersicht über die +momentan laufenden #ib#Netzübertragungen#ie# der eigenen #ib#Station#ie# erhalten werden (nur für +den #ib#Kanal#ie#, an dem #on("b")##ib#net port#ie##off("b")# hängt). Entsprechendes gilt für die weiteren Netports der +eigenen Station.  +  +Mit #on("bold")##ib#list#ie# (/"#ib#net list")#ie##off("bold")# erhält man die Informationen, die man mit #on("b")#list (/"net")#off("b")# und #on("b")##ib#list#ie##off("b")# auf +alle Netports bekommt, sofern #on("b")##ib#listoption#ie##off("b")# (siehe S. #topage("listop")#) beim Generieren des Netzes +aufgerufen wurde. Dieser Aufruf funktioniert auch bei fremden Stationen (z.B. #on("b")#list +(5/"net list")#off("b")#).  +  +#page#  +  +1.5. Eingriffsmöglichkeiten  +  +#goalpage("1.5")#  +  +-  Jede Task kann #ib#Sende#ie(1,"ströme")#- und #ib#Empfangsströme#ie#, die bei #on("bold")#list (/"net port")#off("bold")# gemel +   det worden sind und die eigene Task betreffen, abbrechen. Hierzu ist das Kom +   mando #on("bold")##ib#erase#ie# ("x", /"#ib#net port#ie#")#off ("bold")# zu geben, wobei x die #ib#Stromnummer#ie# (aus dem #on("bold")#list#off ("bold")#) +   ist.  +   Unberechtigte #ib#Löschversuche#ie# werden abgewiesen.  +   Von privilegierten Tasks aus können jedoch mit #on("b")##ib#erase#ie##off("b")# beliebige Ströme abge +   brochen werden.  +  +  +-  Durch das Kommando #on("bold")##ib#start#ie##off("bold")# kann von der Task #on("b")##ib#net#ie##off("b")# aus das Netz neu gestartet +   werden. Dies setzt eine gültige #ib#Datei#ie# #on("bold")#netz#off("bold")# voraus. Es wird ein #on("bold")##ib#run#ie##off("bold")# auf diese Datei +   gegeben. Das Kommando #on("b")##ib#start#ie##off("b")# ist nur noch aus Kompatibilitätsgründen zum alten +   Netz vorhanden.  +  +  +-  Durch das Kommando #on("bold")##ib#routen aufbauen#ie##off("bold")# in der Task #on("b")##ib#net#ie##off("b")# werden die #ib#Routentabelle#ie#n +   neu aufgebaut. Dies kann notwendig werden, wenn eine neue #ib#Station#ie# ans Netz +   angeschlossen wurde (#ib#Fehlermeldung#ie# '#ib(4)#Station x gibt es nicht#ie(4)#'). #on("bold")#routen aufbauen#off ("bold")# +   muß zuvor auch an allen dazwischenliegenden #ib#Knotenstation#ie#en gegeben werden.  +  +   #on("bold")#routen aufbauen#off ("bold")# erzeugt eine Task #on("b")##ib#router#ie##off("b")#, die sich an das Terminal koppelt (die +   Task #on("b")#net#off("b")# koppelt sich ab) und ein #ib#Protokoll#ie# ausgibt. Sind die #ib#Route#ie#n aufgebaut, +   beendet sich die Task #on("b")#router#off("b")# mit der Meldung #on("b")#fertig#off("b")#. Es werden nur Stationen +   bearbeitet, die nicht #ib#gesperrt#ie# (siehe S. #topage("sperre")#), und für die keine festen Routen +   vereinbart sind. Der Vorgang dauert ca. 5 Sek. pro nicht gesperrter Station und +   #ib#Netzkanal#ie#. Die #ib#Route#ie#n werden in einem #ib#Datenraum#ie# #on("b")##ib#port intern#ie##off("b")# hinterlegt.  +  +  +-  Der Aufruf #on("bold")##ib#definiere netz#ie##off("bold")# leitet eine #ib#Netzdefinition#ie# in der #ib#Datei#ie# #on("bold")##ib#netz#ie##off("bold")# ein. Dabei +   werden alle augenblicklichen Netzkommunikationen gelöscht. Die Tasks #on("b")##ib#net port#ie# +   (k)#off("b")#, wobei #on("b")#k#off("b")# die #ib#Kanalnummer#ie# ist, und #on("b")##ib#net timer#ie##off("b")# werden gelöscht.  +  +   Dieser Aufruf muß vor den Aufrufen von #on("bold")##ib#starte kanal#ie#, #ib#erlaube#ie#, #ib#sperre#ie#, #ib#routen#ie#, +   #ib#aktiviere netz#ie# und #ib#list option#ie##off("bold")# erfolgen.  +  +  +-  PROC #ib#sperre#ie# (INT CONST a,z)  +   bewirkt, daß die Stationen #on("bold")#a#off("bold")# bis #on("bold")#z#off("bold")# keine Manageraufrufe an Tasks dieser Station +   geben dürfen (Genauer gesagt werden sendecodes > 6 nicht weitergeleitet, son +   dern ein errornak mit dem Text "#ib(4)#kein Zugriff auf Station#ie(4)#" zurückgeschickt).  +  +   Dieser Aufruf muß vor dem ersten #on("bold")##ib#starte kanal#ie##off("bold")# erfolgen.  +  +  +-  PROC #ib#erlaube#ie# (INT CONST a,z)  +   bewirkt, daß die Stationen #on("bold")#a#off("bold")# bis #on("bold")#z#off("bold")# Manageraufrufe an Tasks dieser Station geben +   dürfen.  +  +   Dieser Aufruf muß vor dem ersten #on("bold")##ib#starte kanal#ie##off("bold")# erfolgen.  +  +   Beispiel: Alle Stationen außer 8 und 10 sollen #ib#gesperrt#ie# sein:  +  +             #ib#sperre#ie# (1,127); erlaube (8,8); erlaube (10,10)  +  +   Hinweis: 127 ist z.Zt. die maximale #ib#Stationsnummer#ie(1," maximale")#.  +  +  +-  PROC #ib#routen#ie# (INT CONST a,z,k)  +   legt fest, daß die Stationen #on("bold")#a#off("bold")# bis #on("bold")#z#off("bold")# an #ib#Kanal#ie# #on("bold")#k#off("bold")# direkt angeschlossen sind. Sen +   dungen dieser Stationen werden nur bearbeitet, wenn sie über diesen Kanal her +   einkommen (siehe 1.7.). Fehlt für eine Station ein entsprechender Routenaufruf, so +   darf sie über einen beliebigen #ib#Netzkanal#ie# angeschlossen sein. Dies wird dann von +   #on("bold")##ib#routen aufbauen#ie##off("bold")# ermittelt.  +  +   PROC routen (INT CONST a,z,k,zw)  +   legt fest, daß die Stationen #on("bold")#a#off("bold")# bis #on("bold")#z#off("bold")# indirekt über die #ib#Knotenstation#ie# #on("bold")#zw#off("bold")# angeschlos +   sen sind, und #on("b")#zw#off("b")# am Kanal #on("bold")#k#off("bold")# hängt.  +  +  +-  PROC #ib#starte kanal#ie# (INT CONST k,m,q)  +   startet eine #ib#Netztask#ie# am #ib#Kanal#ie# #on("bold")#k#off("bold")# im Modus #on("bold")#m#off("bold")# [4]. Dabei wird mit #on("bold")#q#off("bold")# die Anzahl +   paralleler #ib#Empfangsströme#ie# festgelegt. Dadurch kann erreicht werden, daß der +   #ib#Empfangspuffer#ie# nicht überläuft, indem nicht mehr als #on("b")#q#off("b")# Ströme quittiert werden. +   Bei #ib#V.24#ie#-#ib#Schnittstelle#ie#n gebe man 3 (ohne #ib#Flußkontrolle#ie#) bzw. 10 (mit Flußkon +   trolle) an.  +  +  +-  PROC #ib#aktiviere netz#ie#  +   muß als Abschluß in der Datei #on("bold")##ib#netz#ie##off("bold")# aufgerufen werden. Dabei wird die Task vom +   Terminal abgekoppelt. Falls es bei #on("bold")##ib#definere netz#ie##off("bold")# den #ib#Datenraum#ie# #on("b")##ib#port intern#ie##off("b")#, der +   die #ib#Route#ie#n enthält, nicht gab, wird #on("bold")##ib#routen aufbauen#ie##off("bold")# aufgerufen.  +  +  +-  PROC #ib#listoption#ie##goalpage("listop")#  +   erzeugt eine Task #on("b")##ib#net list#ie##off("b")#, die bei #on("bold")#list#off("bold")# den #ib#Fehlermeldung#ie#sreport und den Zustand +   aller Netports liefert. Diese Task ist auch über Netz ansprechbar. In der Regel +   sollte man #on("b")#listoption#off("b")# in der Datei #on("b")#netz#off("b")# aufrufen, es sei denn, das System ist sehr +   klein.  +  +#page#  +  +1.6. #ib#Fehlersuche#ie# im Netz  +  +#goalpage("1.6")#  +  +#ib#Fehler#ie# im Netz können sich verschiedenartig auswirken. Im folgenden wird auf einige +Beispiele eingegangen:  +  +Beispiel:  +  +   Auf #on("bold")#list (4/public)#off("bold")# erfolgt die Meldung '#ib(4)#Station#ie(4, " x antwortet nicht")# 4 antwortet nicht'.  +  +  +#ib#Fehler#ie#möglichkeiten:  +  +   -  #ib#Station#ie# 4 ist nicht eingeschaltet.  +      Abhilfe: Station 4 einschalten. Kommando erneut geben.  +  +  +   -  #ib#Netztask#ie# an Station 4 ist nicht arbeitsfähig.  +      Abhilfe: Kommando #on("bold")##ib#start#ie##off ("bold")# in der Task "net" auf Station 4.  +  +  +   -  Stationsnummern und Boxnummern stimmen nicht überein.  +      Abhilfe: Mit #on("bold")#define station#off ("bold")# #ib#Stationsnummer#ie#n korrigieren (siehe 3.2).  +  +  +   -  #ib#Verbindung#ie# Rechner/Box am eigenen Rechner oder an Station 4 fehlt.  +      Abhilfe: Verbindungen überprüfen. Durch Ansprechen einer dritten Station +               kann oft schnell geklärt werden, welche Rechner/Box-Verbindung +               defekt sein muß.  +  +  +   -  Verbindung der Boxen untereinander defekt.  +      Abhilfe: Fehlende Verbindung, #ib#Masseschluß#ie# und #ib#Dreher#ie# (keine 1:1 Verbin +               dung) überprüfen und beheben.  +  +      Hinweis: Liegt z.B. ein Masseschluß vor, so kann es durchaus sein, daß +               Boxen, die nicht in der Nähe des Masseschlusses stehen, noch +               miteinander arbeiten können. Man kann aus der Tatsache, daß zwei +               Boxen miteinander arbeiten können, also nicht schließen, daß man +               nicht nach diesem Fehler suchen muß.  +  +  +  +Beispiel:  +  +   Auf #on("bold")#list (4/public)#off("bold")# erfolgt keine Reaktion.  +  +  +   -  Station 4 ist während dieser Sendung zusammengebrochen.  +      Abhilfe: Station 4 wieder starten. Die Bearbeitung des #on("bold")##ib#list#ie##off ("bold")#-Kommandos wird +               automatisch wieder aufgenommen.  +  +  +   -  PUBLIC auf Station 4 ist nicht im Managerzustand.  +      Abhilfe: PUBLIC in den Managerzustand versetzen.  +  +  +   -  #ib#Fehler#ie# in der #ib#Netzhardware#ie#.  +      Überprüfen Sie, ob  +  +      -  die Boxen eingeschaltet sind,  +      -  die Bereitlampe blinkt (wenn nicht: #ib#RESET#ie# an der Box),  +      -  die #ib#V.24#ie#-Kabel richtig stecken,  +      -  die Boxen untereinander verbunden sind (1 zu 1 Verbindungen der 5 poli +         gen Diodenbuchsen).  +  +  +   -  Fehler bei der #ib#Netzinstallation#ie#.  +      Überprüfen Sie, ob  +  +      -  alle Stationen an einem #ib#Strang#ie# gleiche oder kompatible Netzmodi einge +         stellt haben [4],  +      -  alle Stationen an einem #ib#Netzstrang#ie# auf die gleiche #ib#Nutzdatenlänge#ie# einge +         stellt sind,  +      -  bei der #ib#Kommunikation#ie# über #ib#Knoten#ie# alle Stationen die gleiche Nutzdaten +         länge bei indirekten Sendungen eingestellt haben,  +      -  die #ib#Route#ie#n auf allen beteiligten Stationen korrekt eingestellt sind.  +  +  +  +Beispiel:  +  +   Auf #on("bold")#list (4/public)#off("bold")# erfolgt die Meldung '#ib(4)##ib#Collectortask#ie# fehlt#ie(4)#'.  +  +   -  Das Kommando #on("b")##ib#start#ie##off("b")# (bzw #on("b")##ib#aktiviere netz#ie##off("b")# in der #ib#Datei#ie# #on("b")#netz#off("b")#) wurde nicht gege +      ben. Somit existiert #on("b")##ib#net port#ie##off("b")# nicht.  +      Abhilfe: Kommando #on("bold")#start#off ("bold")# in der Task #on("b")#net#off("b")# geben.  +  +  +   -  Die #ib#Netzsoftware#ie# ist auf einen nicht vorhergesehenen #ib#Fehler#ie# gelaufen. Dieser +      wird im #ib#Report#ie# vermerkt. #on("b")##ib#net port#ie##off("b")# wird dabei gelöscht.  +      Abhilfe: Geben Sie in der Task #on("bold")#net#off("bold")# das Kommando #on("bold")#start#off("bold")#. Dadurch wird die +               Netzsoftware neu gestartet. Alle Netzkommunikationen dieser Station +               gehen verloren.  +  +  +  +Beispiel:  +  +   Nach #on("bold")##ib#fetch#ie# ("hugo",4/public)#off("bold")# sind Teile der Datei "hugo" verfälscht.  +  +   -  Die #ib#V.24#ie#-#ib#Verbindung#ie# zur Box ist nicht in Ordnung.  +      Abhilfe: Abstand zwischen Rechner und Box verkürzen; #ib#Baud#ie#rate ernie +               drigen; durch Wechseln der #ib#V.24#ie#-#ib#Schnittstelle#ie# feststellen, ob diese +               defekt ist.  +      Hinweis: Die Verbindung zwischen den Boxen ist durch #ib#Prüfsummen#ie# abge +               sichert (Hardware).  +  +#page#  +  +1.7. Sicherheit im Netz  +  +#goalpage("1.7")#  +  +Bei Benutzung eines Rechnernetzes tauchen neue #ib#Sicherheitsprobleme#ie# auf. Um sie +verstehen und eingrenzen zu können, muß man sich mit dem #ib#Sicherheitskonzept#ie# des +Betriebssystems EUMEL vertraut machen:  +  +Eine Task im EUMEL kann nur manipuliert werden, wenn man sie entweder an ein +Terminal koppelt oder ihr Sendungen zustellt.  +  +Das Ankoppeln kann über #ib#Paßwort#ie# abgesichert werden. Nach dem Ankoppeln kann +die Task außerdem selbst bestimmen, wie sie die dann möglichen Eingaben behan +delt. So kann z.B. noch ein komplizierter Paßalgorithmus zu durchlaufen sein, bis +man auf einer offenen Programmierumgebung landet.  +  +Sendungen können eine Task auch nur mit ihrem Einverständnis beeinflussen, da +eine Sendung nur zugestellt wird, wenn die Task in der Prozedur #on("b")##ib#wait#ie##off("b")# steht. Insbe +sondere kann die Task den Absender einer Sendung überprüfen und gewisse Opera +tionen nur bei gewissen Absendern zulassen. So lehnt ein #on("b")##ib#global manager#ie##off("b")# z.B. alle +Dateimanagerkommandos ab, die nicht von Nachkommen (z.B. Söhnen) der Task +kommt. #on("b")##ib#free global manager#ie##off("b")# hingegen läßt Operationen wie #on("b")##ib#save#ie##off("b")# oder #on("b")##ib#erase#ie##off("b")# von +beliebigen Tasks, auch von fremden #ib#Station#ie#en, zu. Will man nur bestimmte Fremd +stationen zulassen, kann man z.B. folgendes Schema verwenden:  +  +   PROC my #ib#manager#ie#  +      (DATASPACE VAR ds, INT CONST code, phase, TASK CONST source):  +  +     IF station (source) = station (myself) OR station (source) = 10  +     THEN  +       free manager (ds, code, phase, source)  +     ELSE  +       errorstop ("kein Zugriff")  +     FI  +  +  END PROC my manager;  +  +  global manager (PROC my manager)  +#page#  +Hier werden nur #on("b")#save#off("b")# usw. von Tasks der eigenen Station und der Station 10 zuge +lassen. Der Rest erhält die #ib#Fehlermeldung#ie# "kein Zugriff".  +  +Dieses Verfahren gewährt nur dann Sicherheit, wenn es nicht möglich ist, daß eine +beliebige Station sich als Station 10 ausgibt.  +  +Damit das Netz diese Sicherheit garantieren kann, müssen natürlich gewisse phy +sische Voraussetzungen erfüllt sein. Wenn z.B. die Station 10 über eine #ib#V.24#ie# ange +schlossen ist, aber jeder die Möglichkeit hat, an diese #ib#Schnittstelle#ie# seinen eigenen +Rechner anzuschliessen, dann kann das Netz natürlich nicht erkennen, ob es mit der +echten Station 10 verkehrt.  +  +Es muß also sichergestellt sein, daß an Kanälen für das Netz nicht manipuliert werden +kann. Bei einem #ib#Strang#ie# (Anschluß über #ib#Netzbox#ie#en) heißt das für die Boxen, daß sie +nur #ib#Telegramm#ie#e weitervermitteln, die die eingestellte #ib#Quellstationsnummer#ie# enthalten. +Sonst könnte jemand, der an denselben Strang wie #ib#Station#ie# 10 angeschlossen ist, +#ib#Telegramm#ie#e erzeugen, die so aussehen, als kämen sie von 10.  +  +Die #ib#Netzsoftware#ie# ihrerseits darf nur Telegramme auswerten, die über die richtige +#ib#Route#ie# (#ib#Kanal#ie# und #ib#Knotenstation#ie#) einlaufen.  +  +Leider hat dies die unangenehme Konsequenz, daß man automatisches Aufbauen und +Ändern von Routen verbieten muß, wodurch die Wartung der #ib#Netzkonfiguration#ie# +erschwert wird.  +  +Diese Version der #ib#Netzsoftware#ie# bietet den folgenden Kompromiß an: Nur für sicher +heitsrelevante #ib#Stationen#ie(1,", sicherheitsrelevante")# (im Beispiel Station 10) muß in der #ib#Datei#ie# #on("b")##ib#netz#ie##off("b")# die Route +angegeben werden. Dies muß in allen Stationen geschehen, für die die Station +sicherheitsrelevant ist, und in allen #ib#Knoten#ie# dazwischen.  +  +Für nicht sicherheitsrelevante Stationen werden #ib#Routeninformationen#ie# automatisch +aufgebaut und geändert.  +  +Hinweis:  +Man wird oft ohne sicherheitsrelevante Stationen auskommen, indem man auf Ebenen +oberhalb der Netzebene Paßwortkontrollen einführt. So ist es z.B. ja möglich, Dateien +durch Paßworte zu schützen. Ein weiteres Beispiel ist ein #ib#Printerserver#ie#, der nur +ausdruckt, wenn eine mitgegebene Abrechnungskennung stimmt. Dabei ist es sogar +wünschenswert, daß die #ib#Station#ie# irrelevant ist, die den Druckauftrag gibt.  +#pagenr ("%",21)##setcount (1)##block##pageblock##count per page#  +#headeven#  +#center#EUMEL Netzbeschreibung  +#center#____________________________________________________________  +  +#end#  +#headodd#  +#center#Teil 2 :  Arbeitsweise der Netzsoftware  +#center#____________________________________________________________  +  +#end#  +#bottomeven#  +#center#____________________________________________________________  +Netz - % #right#GMD  +#end#  +#bottomodd#  +#center#____________________________________________________________  +GMD #right#Netz - %  +#end#  +#page#  +  +Teil 2: Arbeitsweise der Netzsoftware  +#goalpage("2")#  +  +  +  +2.1. Die Netztask  +#goalpage("2.1")#  +  +  +In diesem Kapitel wird beschrieben, wie eine #ib#Netztask#ie# in das System eingebettet ist +und welche Aufgaben sie hat. Unter Einhaltung dieser Konzepte kann die ausgeliefer +te Netzsoftware so geändert werden, daß sie beliebige andere #ib#Netzhardware#ie# unter +stützt. Die Netzsoftware ist so gegliedert, daß i.allg. nur eine hardwareabhängige +Komponente ausgetauscht werden muß (siehe Teil 3).  +  +Die Kommunikation zwischen Tasks im EUMEL-Betriebssystem basiert auf einem +#ib#Rendezvouskonzept#ie#: Die #ib#Zieltask#ie# einer Sendung muß empfangsbereit sein, wenn die +#ib#Quelltask#ie# sendet.  +  +Die Kommunikationsprozeduren auf der niedrigsten Ebene sind #on("bold")##ib#send#ie##off ("bold")# (Senden) und +#on("bold")##ib#wait#ie##off ("bold")# (Warten auf Empfang). Bei der Kommunikation werden ein Integer #on("bold")#code#off ("bold")# und ein +#ib#Datenraum#ie# #on("bold")#dr#off ("bold")# übergeben. #on("bold")#code#off ("bold")# muß >= 0 sein, da negative Codes systemintern ver +wandt werden. Ist die empfangende Task an einen #ib#Kanal#ie# gekoppelt (#on("bold")##ib#continue#ie##off ("bold")#), so +führt eine Zeicheneingabe auf diesem Kanal dazu, daß eine Sendung mit dem Code +-4 ankommt. Die Eingabedaten müssen mit den üblichen #ib#Eingabeprozeduren#ie# (#on("bold")##ib#inchar#ie##off ("bold")# +usw.) abgeholt werden. Der übermittelte #ib#Datenraum#ie# und die Absendertask sind dabei +ohne Bedeutung und dürfen nicht interpretiert werden.  +  +Die Prozedur #on("bold")#send#off ("bold")# hat einen #ib#Rückmeldeparameter#ie#, der besagt, ob die Sendung +übermittelt wurde. Gibt es die Zieltask nicht oder steht sie nicht im #on("bold")#wait#off ("bold")#, so kann die +Sendung nicht übermittelt werden.  +  +Ein Entwicklungskriterium für das EUMEL-Netz war es, möglichst wenig Unterstüt +zung von der virtuellen EUMEL-Maschine (#ib#EUMEL0#ie#) zu fordern, damit weitgehend in +ELAN programmiert werden kann. Dadurch ist es möglich, eine (privilegierte) Task mit +der Netzabwicklung zu betrauen.  +#page#  +Zunächst wird auf die #ib#EUMEL0#ie#-Unterstützung eingegangen:  +  +a)  Es gibt die Prozedur #on("bold")##ib#define collector#ie##off ("bold")#, mit der die für das Netz verantwortliche +    Task der EUMEL0-Maschine bekannt gemacht wird. Diese Task wird im fol +    genden #ib#Collector#ie# genannt.  +  +b)  Es gibt die Prozedur #on("bold")##ib#define station#ie##off ("bold")#, die für den Rechner eine #ib#Stationsnummer#ie# +    einstellt. Anhand dieser Nummer werden die Rechner eines Netzes unterschie +    den. Das Einstellen bewirkt, daß für alle Tasks die Stationsnummer in ihre +    #ib#Task-Id#ie# eingetragen wird (Task-Id's sind die Werte, die der Typ TASK anneh +    men kann).  +  +c)  Der Befehl #on("bold")##ib#station#ie# (task)#off ("bold")# liefert die Stationsnummer der #on("bold")#task#off ("bold")#. So liefert z.B. +    #on("bold")##ib#station#ie# (myself)#off ("bold")# die #ib#Stationsnummer#ie# des eigenen Rechners.  +  +d)  Eine Sendung, deren #ib#Zieltask#ie# auf einem anderen Rechner liegt (also station (ziel) +    <> station (myself)), wird auf die #ib#Collectortask#ie# geleitet.  +  +e)  Es gibt eine Prozedur #on("bold")##ib#collected destination#ie##off ("bold")#, die es dem Collector erlaubt, die +    eigentliche Zieltask einer auf ihn geleiteten Sendung zu erfahren.  +  +f)  Es gibt eine Variante der Prozedur #on("bold")##ib#send#ie##off ("bold")#, die es dem Collector gestattet, der +    #ib#Zieltask#ie# eine andere Task als Absender vorzutäuschen.  +  +g)  Es gibt eine spezielle #ib#Task-Id#ie# #on("bold")##ib#collector#ie##off ("bold")#, durch die der augenblicklich eingestell +    te #ib#Collector#ie# erreicht wird. Diese wird als Zieltask beim Aufruf der Vermittlungs +    dienste angegeben (siehe S. #topage("collector")#). Eine Sendung an #on("bold")#collector#off ("bold")# wird von EUMEL0 +    an den derzeitig eingestellten Collector geschickt.  +  +Ein Collector kann also auf drei Wegen von den übrigen Tasks desselben Rechners +Sendungen erhalten:  +  +  1. Über ein normales #on("b")#send#off("b")# (z.B. bei #on("bold")#list (/"net port")#off ("bold")#, wenn #on("b")#net port#off("b")# der derzeitige +     #ib#Collector#ie# ist),  +  +  2. über ein #on("b")#send#off("b")# an die Task #on("bold")#collector#off ("bold")# (s.u.) und  +  +  3. als umgeleitete Sendung (z.B. bei #on("bold")#list#off ("bold")# an eine Task auf einem anderen +     Rechner).  +  +Der Collector kann diese Fälle anhand von #on("bold")#collected destination#off ("bold")# unterscheiden.  +  +Die Punkte d) bis f) dienen dazu, den Collector für über Netz kommunizierende Tasks +unsichtbar zu machen: Der Collector taucht nicht als Ziel oder #ib#Quelle#ie# von Sendungen +auf. Das ist notwendig, damit normale Tasks sich nicht darum kümmern müssen, ob +eine Sendung übers Netz geht oder im eigenen Rechner bleibt.  +  +Wenn ein #ib#Datenraum#ie# an einen anderen Rechner geschickt wird, muß der gesamte +Inhalt (z. Zt. max. 1 MB) übertragen werden. Dies macht bei der üblichen Netzhard +ware eine Zerlegung in #ib#Paket#ie#e nötig [5]. Bei der Zerlegung eines Datenraumes in +Pakete (#ib#Telegramm#ie#e) gelten folgende Einschränkungen:  +  +  -  Ein Paket kann maximal eine #ib#Datenraumseite#ie# als #ib#Nutzdaten#ie# enthalten.  +  +  -  Die #ib#Nutzdatenlänge#ie# ist für einen #ib#Übertragungsweg#ie# konstant.  +  +  -  Alle Stationen eines #ib#Netzstrang#ie#s senden mit gleicher Nutzdatenlänge (#on("b")##ib#data +     length#ie##off("b")#).  +  +  -  Bei indirekter #ib#Kommunikation#ie(1,"indirekte")# (über #ib#Knoten#ie#) muß die Nutzdatenlänge für in +     direkte Verbindungen (#on("b")##ib#data length via node#ie##off("b")#) auf allen beteiligten Stationen +     gleich eingestellt sein.  +  +  +Für Netze stehen spezielle Blockbefehle zur Verfügung:  +  +  +g)  #ib#blockin#ie# / #ib#blockout#ie# (dr,seite,512+abstand,anzahl,rest)  +  +    Es werden maximal #on("bold")#anzahl#off ("bold")# Bytes transferiert. In #on("bold")#rest#off ("bold")# wird zurückgemeldet, wie +    viele Bytes nicht bearbeitet wurden (z.B. weil der #ib#Kanal#ie# nichts anliefert). Bear +    beitet werden die Bytes  +  +       #on("bold")#seite#off ("bold")# * 512 + #on("bold")#abstand#off ("bold")#  +  +    bis maximal  +  +       #on("bold")#seite#off ("bold")# * 512 + #on("bold")#abstand#off ("bold")# + #on("bold")#anzahl#off ("bold")# - 1  +  +    Der Kanal, an den die Task gekoppelt ist, wird dabei über #ib#Stream-IO#ie# (d.h. +    #on("bold")##ib#incharety#ie##off ("bold")#, bei #on("bold")#blockin#off ("bold")# bzw. #on("bold")#out#off ("bold")# bei #on("bold")#blockout#off ("bold")#) angesprochen.  +  +    Hinweis: Die Anforderung darf nicht über #ib#Seitengrenze#ie# gehen, d.h.  +  +    #on("bold")#abstand#off ("bold")# + #on("bold")#anzahl#off ("bold")# <= 512  +  +    muß erfüllt sein.  +  +  +Eine Netzsendung läuft wie folgt ab:  +  +Die Task q auf Rechner rq mache ein #on("bold")##ib#send#ie##off ("bold")# an die Task z auf Rechner rz.  +  +1. Die Prozedur #on("bold")#send#off ("bold")# ist ein #ib#EUMEL0#ie#-Befehl. Die EUMEL0-Ebene erkennt, daß die +   Sendung an die #ib#Station#ie# rz geht, da die #ib#Stationsnummer#ie# in der #ib#Task-Id#ie# enthalten +   ist. Daher wird die Sendung zum #ib#Collector#ie# umgeleitet, den EUMEL0 wegen der +   Einstellung durch #on("bold")##ib#define collector#ie##off ("bold")# kennt, umgeleitet.  +  +2. Die Task Collector empfängt über #on("bold")##ib#wait#ie##off ("bold")# den #ib#Datenraum#ie#, den #ib#Sendecode#ie# und die +   Absendertask q. Die #ib#Zieltask#ie# z erfährt sie durch #on("bold")##ib#collected destination#ie##off ("bold")#.  +  +3. Der Collector nimmt Kontakt mit dem Collector des Rechners #on("b")#rz#off("b")# auf, dessen Sta +   tionsnummer ja #on("bold")##ib#station#ie#(z)#off ("bold")# ist, und übermittelt diesem Sendecode, #ib#Quelltask#ie# (q), +   eigentliche Zieltask (z) und den #ib#Datenraum#ie#. Da die Collectoren in ELAN geschrie +   ben sind, können sie an beliebige #ib#Netzhardware#ie# und #ib#Protokoll#ie#e angepaßt werden.  +  +4. Der #ib#Collector#ie# auf Rechner #on("b")#rz#off("b")# verwendet das spezielle #on("bold")#send#off ("bold")#, um der Zieltask die +   Sendung zuzustellen. Dadurch erscheint nicht der Collector, sondern die Task #on("b")#q#off("b")# +   als Absender der Sendung.  +  +Zur Abwicklung der #ib#Vermittlungsebene#ie# (siehe S. #topage("vermittlung")#) muß der Collector noch spe +zielle Funktionen beherrschen. Diese sind  +  +   der #on("b")##ib#/#ie#-Operator#off("b")# (Taskname in #ib#Task-Id#ie# wandeln) und  +   die #on("b")##ib#name#ie##off("b")#-Prozedur (Task-Id in Namen wandeln).  +  +Der #on("b")#/#off("b")#-Operator macht eine Sendung an den #on("bold")##ib#collector#ie##off ("bold")#, wobei im #ib#Datenraum#ie# der Name +der Task steht und der #ib#Sendecode#ie# gleich der Stationsnummer ist (siehe [6] ). Der +#ib#Collector#ie# setzt sich mit dem Collector dieser Station in Verbindung, damit dieser die +Task-Id ermittelt und zurückschickt. Der eigene Collector schickt dann dem #on("b")#/#off("b")#-Oper +ator als Antwort einen Datenraum, der die #ib#Task-Id#ie# enthält.  +  +Umgekehrt läuft #on("bold")##ib#name#ie##off ("bold")# ab: Wenn die Task-Id von einer fremden Station ist, schickt +#on("bold")#name#off ("bold")# eine Sendung an den #on("bold")##ib#collector#ie##off ("bold")#, wobei im Datenraum die Task-Id steht und +Sendecode = 256 ist. Der Collector entnimmt die #ib#Stationsnummer#ie# der Task aus der +Task-Id und läßt sich vom entsprechenden Collector den Tasknamen geben. Dieser +wird der #on("bold")#name#off ("bold")#-Prozedur im Antwortdatenraum übergeben.  +  +Netztasks bauen sich #ib#Routentabellen#ie# auf (#ib#Datei#ie#name #on("b")##ib#port intern#ie##off("b")#). Aufgrund dieser +Tabellen weiß jede #ib#Netztask#ie#, über welchen #ib#Kanal#ie# und welche #ib#Nachbarstation#ie# eine +#ib#Zielstation#ie# erreichbar ist. Wenn der #ib#Collector#ie# einen Sendeauftrag erhält, prüft er, ob +die Zielstation über seinen Kanal erreichbar ist. Wenn nicht, leitet er Parameter und +#ib#Datenraum#ie# der Sendung an die geeignete Netztask weiter.  +#page#  +  +2.2. Ebenen  +  +#goalpage("2.2")#  +  +In diesem Kapitel werden die #ib#Protokollebenen#ie# für das Netz beschrieben, wie sie die +ausgelieferte Netzsoftware benutzt und erwartet. Bei anderer Netzhardware als Daten +boxen müssen die Ebenen a) bis c) ausgetauscht werden [4]. Unter Einhaltung der im +vorigen Kapitel beschriebenen Randbedingungen können auch die höheren Ebenen +geändert werden.  +  +  +a) Physikalische Ebene  +  +   -  #ib#Station#ie# <--> Box  +  +      #ib#V.24#ie#-#ib#Schnittstelle#ie# mit #ib#RTS/CTS#ie#-Handshake. Vollduplex.  +  +   -  Box <--> Box  +  +      #ib#RS422#ie# über 2 verdrillte Leitungspaare (Takt und Daten).  +  +  +b) Verbindungsebene  +  +   -  Station <--> Box  +  +      Asynchron  +      8 Bit  +      Even Parity  +      2400/4800/9600/19200 #ib#Baud#ie# einstellbar über Lötbrücken)  +  +   -  Box <--> Box  +  +      #ib#SDLC#ie#  +      400 KBaud  +#page#  +c) #ib#Netzebene#ie#  +#goalpage("quelle")#  +  +   -  Station <--> Box  +  +      #ib#Telegrammformat#ie#:  #ib#STX#ie#, <n>, <ziel>, <#ib#quelle#ie#>, <(n-4) byte>  +  +      <n> ist #ib#Längenangabe#ie# ( 8 <= n <= 160)  +      <ziel>, <quelle> sind #ib#Stationsnummer#ie#n. Diese müssen an den jeweiligen +      Boxen eingestellt sein.  +  +      Box --> Station:  +  +      Ein #ib#Telegramm#ie# kommt nur bei der #ib#Station#ie# an, bei deren Box die Nummer +      <ziel> eingestellt ist. Dadurch ist ein Mithören fremder #ib#Übertragung#ie# nicht +      möglich (Datenschutz).  +  +      Zwischen Telegrammen können #ib#Fehlermeldung#ie#en der Box (Klartext) übermittelt +      werden (z.B. 'skipped x', wenn ein #ib#STX#ie# von der Box erwartet wurde, aber 'x' +      von der Station ankommt).  +  +      Station --> Box:  +  +      Ein Telegramm wird nur abgeschickt, wenn <#ib#quelle#ie#> mit der eingestellten +      Nummer übereinstimmt (Datenschutz: Man kann nicht vorschwindeln, eine +      beliebige Station zu sein, es sei denn, man hat physischen Zugriff zur Box und +      stellt dort die Stationsnummer um).  +  +   -  Box <--> Box  +  +      #ib#Telegrammformat#ie#:  +          FRAME, <ziel>, <#ib#quelle#ie#>, <daten>, <CRC-Code>  +  +      Eine #ib#Längenangabe#ie# ist nicht nötig, da #ib#SDLC#ie# eine Rekonstruktion der Länge +      erlaubt.  +  +      Telegramme mit falschen #ib#CRC-Code#ie# werden vernichtet. Auf höheren Ebenen +      muß dies durch #ib#Zeitüberwachung#ie# erkannt und behandelt werden.  +  +#page#  +d) Transportebene  +  +   Diese Ebene wickelt das Rendezvous zwischen einer Task, die #on("bold")##ib#send#ie##off ("bold")# macht, und +   einer Task, die im #on("bold")##ib#wait#ie##off ("bold")# steht, ab [1].  +  +   Der im #on("bold")#send#off ("bold")# angegebene #ib#Datenraum#ie# wird als Folge von #ib#Seiten#ie# (im EUMEL- +   Sinne: Pagingeinheit und Allokiereinheit) übermittelt, wobei jede Seite ggf. noch in +   n Byte große Stücke zerlegt wird. Es werden nur echt allokierte Seiten übermit +   telt. Um nicht jedes #ib#Telegramm#ie# voll qualifizieren zu müssen, wird zunächst eine +   Art virtuelle #ib#Verbindung#ie# durch ein #ib#OPEN#ie#-Telegramm eröffnet. Danach folgen +   variabel viele #ib#DATA#ie#-Telegramme. Beide Sorten werden durch #ib#QUIT#ie#-Tele +   gramme quittiert, um folgende Funktionen zu ermöglichen:  +  +   #ib#Flußkontrolle#ie# (z.B. Zielrechner langsam),  +   Wiederaufsetzen (verlorene Telegramme),  +   Abbruch (z.B. weil Zieltask inzwischen beendet).  +  +   Ein #ib#CLOSE#ie#-Telegramm ist nicht nötig, da das letzte DATA-Telegramm als +   solches erkannt werden kann (siehe unten).  +#page#  +   -  #ib#OPEN#ie#-Telegramm  +  +#clear pos#  +    0      1      2      3      4      5      6      7      8      9. Byte  ++------+------+------+------+-------------+-------------+-------------------+  +I STX  I  24  I Ziel IQuelleI Endziel     I Endquelle   I Strom             I  ++------+------+------+------+-------------+-------------+-------------------+  +  +   10     11     12     13     14     15     16     17                 ++-------------+-------------+---------------------------+  +I Sequenz     I  Seite      I  Quelltask                I  ++-------------+-------------+---------------------------+  +  +   18     19     20     21     22     23                            ++---------------------------+-------------+  +I  Zieltask                 I  Code       I  ++---------------------------+-------------+  +  +  +  +          <#ib#ziel#ie#>, <#ib#quelle#ie#> siehe S. #topage("quelle")#  +  +          <#ib#endziel#ie#>    Eigentliche #ib#Zielstation#ie#. Ist <ziel> = <endziel>, so ist +                       das #ib#Telegramm#ie# angekommen. Andernfalls muß die Station +                       <ziel> den #ib#Nachbarn#ie# zum Erreichen des <endziel> als +                       neues <ziel> einsetzen und das Telegramm an diesen +                       Nachbarn weiterleiten.  +  +          <#ib#endquelle#ie#>  Eigentliche #ib#Absenderstation#ie#. <quelle> ist dagegen immer +                       die Nummer der sendenden #ib#Nachbarstation#ie#.  +  +          <#ib#strom#ie#>      Die #ib#Stromnummer#ie# identifiziert die virtuelle #ib#Verbindung#ie#. Sie +                       muß in den #ib#QUIT#ie#-Telegrammen angegeben werden.  +  +          <#ib#sequenz#ie#>    -1 (Kennzeichen für OPEN)  +  +          <#ib#seite#ie#>      Nummer der ersten echt allokierten #ib#Seite#ie# des #ib#Datenraum#ie#s +                       (=-1, falls Nilspace)  +  +          <#ib#quelltask#ie#>  #ib#Task-Id#ie# der sendenden Task  +  +          <#ib#zieltask#ie#>   Task-Id der empfangenden Task  +  +          <code>       Wert des im #on("bold")##ib#send#ie##off ("bold")# angegebenen Codes  +#page#  +   -  #ib#DATA#ie#-Telegramm  +  +  +  +  +  +    0      1      2      3      4      5      6      7      8      9. Byte     ++------+------+------+------+-------------+-------------+-------------------+  +I STX  I LängeI Ziel IQuelleI Endziel     I Endquelle   I Strom             I  ++------+------+------+------+-------------+-------------+-------------------+  +  +   10     11     12     13     14                                        ++-------------+-------------+-----------------------------------------------+  +I Sequenz     I Seite       I n Byte Daten  (Länge = 14 + n)                I  ++-------------+-------------+-----------------------------------------------+  + +  +          <#ib#laenge#ie#>     Gesamtlänge des Telegramms.  +                       #on("b")#laenge#off("b")# = #on("b")##ib#nutzlaenge#ie##off("b")# + 14.  +                       Für #on("b")#nutzlaenge#off("b")# sind nur die Werte 64,128,256 und 512 +                       zugelassen (siehe 1). #on("b")#laenge#off("b")# wird codiert dargestellt (siehe +                       Teil 3).  +  +  +          <#ib#sequenz#ie#>    wird von Telegramm zu Telegramm hochgezählt. Sie dient +                       der Überwachung bzgl. verlorengegangener Telegramme +                       bzw. durch #ib#Zeitüberwachung#ie# verdoppelter Telegramme.  +  +          <#ib#seite#ie#>      Nummer der x-ten echt allokierten Seite des #ib#Datenraum#ie#s +                       (x = ((<sequenz> DIV anzahl pakete pro seite) + 2)  +  +          <n byte>     #ib#Nutzinformation#ie#. Diese gehört zur #ib#Adresse#ie# a des Daten +                       raums.  +  +                       a =  +                       N (<sequenz> DIV anzahl pakete pro seite + 1) * 512  +                           + (<sequenz> MOD anzahl pakete pro seite) * n  +  +                       wobei N (x) die Nummer der x-ten Seite und  +                       n die #ib#Nutzdatenlänge#ie# ist.  +  +                       Aus den Formeln ergibt sich, daß diese Nummer schon in +                       einem vorhergehenden DATA/OPEN-Telegramm über +                       mittelt wurde (im Feld <seite>).  +  +   -  #ib#QUIT#ie#-Telegramm  +  +  +    0      1      2      3      4      5      6      7      8      9. Byte     ++------+------+------+------+-------------+-------------+-------------------+  +I STX  I  12  I Ziel IQuelleI Endziel     I Endquelle   I Strom             I  ++------+------+------+------+-------------+-------------+-------------------+  +  +   10     11                                                     ++-------------+  +I Quit        I  ++-------------+  +  +  +  +          <#ib#strom#ie#>      muß die #ib#Stromnummer#ie# sein, die in dem #ib#OPEN#ie#/#ib#DATA#ie# +                       Telegramm stand, das quittiert wird.  +  +          <quit>       0 :  ok. Nächstes Telegramm schicken.  +  +                       -1:  #ib#Übertragung#ie# neu starten (mit #ib#OPEN#ie#), weil die Emp +                            fangsstation das OPEN nicht erhalten hat.  +  +                       -2:  Übertragung ca. 20 Telegramme zurücksetzen.  +  +                       -3:  Übertragung abbrechen.  +  +                       -4:  #ib#Quittung#ie# für letztes Telegramm einer Sendung.  +  +  +e) #ib#Vermittlungsebene#ie##goalpage("vermittlung")# #goalpage("collector")#  +  +   Diese Ebene ist dafür zuständig, Namen von Tasks auf anderen Stationen in +   #ib#Task-Id#ie#'s (Werte des Typs TASK) zu wandeln und umgekehrt. Hierzu wird im +   entsprechenden #ib#OPEN#ie#-Telegramm der Code -6 (bzw. -7) als <code> ein +   getragen. Die #ib#Netzempfangstask#ie# erkennt diese #ib#Codes#ie# und wickelt die Aufgaben +   selbst ab, so daß es dabei nicht nötig ist, irgendeine Task-Id der #ib#Zielstation#ie# zu +   kennen.  +  +   Dieses Verfahren ist möglich, weil im #on("bold")##ib#send#ie##off ("bold")# nur positive Codes erlaubt sind.  +#page#  +f) #ib#Höhere Ebenen#ie#  +  +   Höhere Ebenen sind nicht mehr netzspezifisch. Sie basieren alle auf dem Send/ +   Wait-Konzept des EUMEL. So gibt es z.B. den #on("bold")##ib#global manager#ie##off ("bold")#, der Aufbewah +   rung und Zugriff von #ib#Datei#ie#en in einer Task regelt. Dabei darf diese Task (bei der +   Variante #on("bold")##ib#free global manager#ie##off ("bold")#) auf einer beliebigen #ib#Station#ie# im Netz liegen. Wegen +   des #ib#Rendezvous-Konzept#ie#s können beliebige Sicherheitsstrategien benutzt werden +   (z.B.: keine Dateien an Station 11 ausliefern). Von großem Wert ist z.B., daß +   man ohne weiteres das Archiv (Floppylaufwerk) einer anderen Station anmelden +   und benutzen kann, wodurch eine einfache Konvertierung von Floppyformaten +   möglich ist. Dies ist möglich, weil auch die Archiv-Task der Stationen sich an +   das Globalmanagerprotokoll halten.  +  +  +  +  +  +Bemerkungen  +  +#ib#Fehlerbehandlung#ie# besteht bis Ebene c) darin, fehlerhafte #ib#Telegramm#ie#e einfach zu +entfernen. Die Ebene d) überwacht den Netzverkehr sowieso über #ib#Timeout#ie#s, die eine +Wiederholung eines Telegrammes bewirken, wenn die #ib#Quittung#ie# ausbleibt.  +  +Da bei der sendenden #ib#Station#ie# der ganze #ib#Datenraum#ie# zur Verfügung steht, ist eine +#ib#Fenstertechnik#ie# (wie bei #ib#HDLC#ie#) nicht nötig. Es kann zu jedem Zeitpunkt um beliebig +viele Telegramme zurückgesetzt werden.  +  +Da im EUMEL eine #ib#Textdatei#ie# ein #ib#Datenraum#ie# mit sehr komplexer Struktur ist (wegen +der Insert/Delete-Möglichkeiten, ohne den Rest der #ib#Datei#ie# zu verschieben), ist es ein +hoher Aufwand, von einem fremden Betriebssytem aus eine Textdatei in das +EUMEL-Netz zu senden. Für solche Zwecke muß noch eine einfachere Dateistruktur +definiert und entsprechende Dateikonverter erstellt werden.  +#page#  +  +2.3. Stand der Netzsoftware  +  +#goalpage("2.3")#  +  +Das EUMEL-System wickelt die Prozedur #on("bold")##ib#send#ie##off("bold")# über das Netz ab, wenn die Sta +tionsnummer der #ib#Zieltask#ie# ungleich der eigenen #ib#Stationsnummer#ie# ist. Umgekehrt kann +man der von der Prozedur #on("bold")##ib#wait#ie##off("bold")# gelieferten Absendertask die #ib#Absenderstation#ie# entneh +men (siehe Prozedur #on("bold")##ib#station#ie##off("bold")# in Teil 1).  +  +Anders als bei einem #on("bold")##ib#send#ie##off("bold")# innerhalb einer Station meldet ein #on("bold")#send#off("bold")# an eine Task einer +fremden Station immer 0 zurück (Task gibt es und Task war im wait), obwohl dies +nicht der Fall sein muß. Ist die Sendung vollständig zur Zielstation übertragen, so +versucht der dortige #ib#Collector#ie# diese hundertmal im Sekundenabstand zuzustellen. +Bleibt das erfolglos, wird die Sendung vernichtet.  +#pagenr ("%", 33)##setcount (1)##block##pageblock##count per page#  +#headeven#  +#center#EUMEL Netzbeschreibung  +#center#____________________________________________________________  +  +#end#  +#headodd#  +#center#Teil 3 :  Netz Hardware Interface  +#center#____________________________________________________________  +  +#end#  +#bottomeven#  +#center#____________________________________________________________  +Netz - % #right#GMD  +#end#  +#bottomodd#  +#center#____________________________________________________________  +GMD #right#Netz - %  +#end#  +#page#  +  +Teil 3: Netz-Hardware-Interface       +  +  +#goalpage("3")#  +  +  +3.1. Einführung  +  + #goalpage("3.1")#  +  +In diesem Teil der Netzbeschreibung wird die #ib#Schnittstelle#ie# beschrieben, über die +#ib#Netzhardware#ie# (also #ib#Datenbox#ie#en, #ib#Netzbox#ie#en oder Netzkarten) an die EUMEL-Netz +Software angepaßt werden kann. Dieser Teil der Beschreibung ist also nur für Netz +implementatoren wichtig.  +  +Das EUMEL-Netz wurde dazu konzipiert, zwei oder mehr EUMEL-Rechner über +#ib#V.24#ie#-Leitungen oder Datenboxen miteinander zu vernetzen. Dem heutigen Stand der +Technik entsprechend, werden auf dem Markt eine Reihe von Möglichkeiten ange +boten, um PC's zu vernetzen. Diese Netze unterscheiden sich auch dadurch, daß +unterschiedliche Medien zur Datenübertragung benutzt werden. Das #ib#EUMEL- +Datenboxen-Netz#ie# benutzt Telefonkabel, #ib#Ethernet#ie# beispielsweise Koax-Kabel. Auch +Lichtleiter werden zur Datenübertragung benutzt. Entsprechend gibt es eine ganze +Menge Hardware (#ib#Treiber#ie#, Netzzugangsgeräte, Datenboxen, Anschlußkarten), die die +Kopplung zwischen einem #ib#I/O-Kanal#ie# eines Rechners und dem Übertragungsmedium +(Kabel) übernimmt. Das Netz-Hardware-Interface soll als #ib#Schnittstelle#ie# zwischen der +NetzSoftware und dem Treiber dienen. Damit wird es möglich, mehrere EUMEL- +Rechner über verschiedene (Teil-) Netze (in dieser Beschreibung Stränge genannt) +und unterschiedliche #ib#Netzhardware#ie# (Treiber) miteinander zu verbinden. Für den +EUMEL-Benutzer soll dabei kein Unterschied in der Benutzung des EUMEL-Netzes +feststellbar sein.  +#page#  +Neben unterschliedlichen Übertragungsmedien und Treibern gibt es weitere Unter +schiede zwischen Netzen:  +  +     -  in der Netztopologie (Bus-, Ring- oder Sternnetze),  +  +     -  in den Netzzugangsverfahren (Token passing, time slice token, slotting oder +        CSMA/CD),  +  +     -  in der #ib#Übertragungsgeschwindigkeit#ie#,  +  +     -  im Aufbau der einzelnen #ib#Pakete#ie(1,", Aufbau der")# (#ib#Netztelegramm#ie#e).  +  +Alles, was mit den ersten drei Punkten zusammenhängt, wird von den Netzzugangs +geräten behandelt.  +  +Der Paketaufbau aber muß zumeist im Rechner geschehen und kann in den seltens +ten Fällen ganz vom Treiber übernommen werden. Ebenso kann der Treiber aus den +empfangenen Paketen nicht immer die Teile herausfiltern, die von der EUMEL- +#ib#Netzsoftware#ie# gebraucht werden. Diese Aufgaben übernimmt das #ib#Netz-Hardware- +Interface#ie#. Das Netz-Hardware-Interface stellt die #ib#Verbindung#ie# zwischen EUMEL- +#ib#Netzsoftware#ie# und den verschiedenen Netzhardwarearten dar. Ähnlich wie bei den +Drucker- und Terminal-Anpassungen wurde ein hardwareabhängiger Teil aus der +Netzsoftware abgetrennt und in einem eigenen #ib#Paket#ie# zusammengefaßt. Beim Start +des Netzes wird durch Angabe des entsprechenden #ib#Netzmodus#ie# für den jeweiligen +#ib#Kanal#ie# die entsprechende Anpassung für den benutzten Treiber ausgewählt. Wenn +andere, neue Treiber angepaßt werden sollen, so müssen lediglich in dem Paket #on("b")##ib#net +hardware interface#ie##off("b")# die entsprechenden Prozeduren hinzugefügt und die #ib#Sprungleisten#ie# +(#ib#SELECT#ie#-Statements) erweitert werden.  +  +Durch das #ib#Knotenkonzept#ie# in der #ib#Netzsoftware#ie# ist es möglich, über einen #ib#Knoten +rechner#ie# Teilnetze (Stränge), die mit unterschiedlicher #ib#Netzhardware#ie# arbeiten, mitein +ander zu verbinden. Es sind dann beispielsweise Verbindungen zwischen Rechnern, +die über #ib#Ethernet#ie# vernetzt sind, und Rechnern auf dem EUMEL-Datenboxen-Netz +möglich. Es ist auch möglich, mit einem Rechner Zugang zu einem Netz zu erhalten, +für das spezielle #ib#Netzhardware#ie# erforderlich ist (Datenboxen, Ethernet-Anschluß). Man +kann den Rechner über eine Rechner-Rechner-Kopplung (#ib#V.24#ie#) mit einem Rechner +verbinden, der bereits ans Netz angeschlossen ist, und so (allerdings auf Kosten der +Leistung des #ib#Knotenrechner#ie#s) Netzhardware einsparen.  +#page#  +  +3.2.  Arbeitsweise des  +      Netz-Hardware-Interfaces +       +  +  +  +  +    #goalpage("3.2")#  +  +Grob vereinfacht kann man sich die Arbeitsweise der #ib#EUMEL-Netz-Software#ie# so vor +stellen:  +  +       reset box;  +       REP  +          IF zeichen da THEN lies telegramm ein  +             ELIF telegramm auszugeben THEN gib telegramm aus  +          FI  +       PER .  +  +(Es ist nur der Teil der Software beschrieben, der die Kanalbehandlung betrifft).  +  +  +Das Zusammenspiel zwischen EUMEL-Netz und Netz-Hardware-Interface ge +schieht auf folgende Weise:  +  +  +     #on("b")#reset box;#off("b")#  +     REP  +        IF zeichen da THEN  #on("b")#next packet start#off("b")#;  +                            lies telegramm ein  +           ELIF telegramm auszugeben THEN gib telegramm aus  +        FI  +     PER.  +  +     gib telegramm aus:  +         #on("b")#transmit header#off("b")#;  +         gib eumelnetztelegramm aus;  +         #on("b")#transmit trailer #off("b")#.  +  +Die fett gedruckten Programmteile werden im Netz-Hardware-Interface realisiert, die +anderen Teile stecken in den darüberliegenden Teilen der EUMEL-Netz-Software.  +#page#  +Beim Senden eines #ib#Telegramm#ie#s wird von der #ib#Netzsoftware#ie# zuerst der #ib#Vorspann#ie# in +einem #ib#Datenraum#ie# an das Hardware-Interface übergeben (#on("b")##ib#transmit header#ie##off("b")#). Im Hard +ware-Interface können aus dem Vorspann die entsprechenden Informationen (Tele +grammlänge, #ib#Zielstation#ie# usw.) entnommen werden. Dann wird von der Netzsoftware +das Telegramm (inklusive Vorspann) per #on("b")##ib#blockout#ie##off("b")# übergeben. Danach wird #on("b")##ib#transmit +trailer#ie##off("b")# aufgerufen, um dem Hardware-Interface das Ende des Telegramms zu mel +den. Beim Empfang ruft die Netzsoftware zuerst die #ib#I/O Control#ie# #ib#Telegrammfreigabe#ie# +auf [7]. Danach wird das erste #ib#Zeichen#ie# des Telegramms angefordert (#on("b")##ib#next packet +start#ie##off("b")#). Falls ein #ib#STX#ie# geliefert wurde, wird das Telegramm per #on("b")##ib#blockin#ie##off("b")# eingelesen. Falls +#ib#Niltext#ie# zurückgeliefert wird, wird von der Netzsoftware #ib#Timeout#ie# angenommen. Alle +anderen Zeichen werden so interpretiert, als ob Störungen aufgetreten wären. Die +Netzsoftware übernimmt die #ib#Fehlerbehandlung#ie#. Dazu wird u. U. ein Leerlesen des +Puffers vom Hardware-Interface verlangt (#on("b")##ib#flush buffers#ie##off("b")#).  +  +Bei der Einstellung der #ib#Nutzdatenlänge#ie# (#on("b")##ib#data length#ie##off("b")#) ist zu beachten, daß  +  +a)  alle #ib#Station#ie#en, die an einem #ib#Strang#ie# hängen, auf die gleiche Nutzdatenlänge +    eingestellt sein müssen.  +  +b)  Wenn mehrere Stränge über #ib#Knoten#ie# miteinander verbunden sind, muß die Nutz +    länge für Sendungen über Knoten (#on("b")##ib#data length via node#ie##off("b")#) auf allen Stationen des +    gesamten Netzes gleich eingestellt sein. Die Zusammenfassung oder Aufteilung +    von #ib#Telegramm#ie#en in Knoten ist nicht möglich.  +  +c)  Als mögliche Nutzdatenlänge sind folgende Werte erlaubt:  +  +    64, 128, 256 und 512 Byte.  +  +    Größere Nutzdatenlängen sind zur Zeit nicht möglich.  +  +d)  Je größer die #ib#Nutzdatenlänge#ie# ist, desto geringer ist der Overhead an #ib#Zeichen#ie#, +    die auf den Rechnern verarbeitet werden müssen. Allerdings muß der Rechner +    leistungsfähig genug sein, die ankommenden Blöcke schnell genung zu verarbei +    ten, und die Netztreiber müssen entsprechend große Puffer haben.  +  +  +Alle implementierten Netzanpassungen sollen in einem Netz-Hardware-Interface +zusammengefaßt werden. Dies ist notwendig, um über #ib#Knotenrechner#ie# Netzstränge +verbinden zu können, die mit unterschiedlicher #ib#Netzhardware#ie# arbeiten. So können +zum Beispiel ein #ib#Strang#ie#, der mit Datenboxen aufgebaut ist, und ein #ib#Ethernet#ie#-#ib#Strang#ie# +über einen Knotenrechner miteinander verkoppelt werden.  +#page#  +Aus diesem Grund wurden #on("b")#Netzmodi#off("b")# eingeführt. Man kann dadurch, daß die Netz +modi, genau wie die #ib#Kanal#ie#angaben, in der #ib#Datei#ie# #on("b")##ib#netz#ie##off("b")# niedergelegt sind, ohne Aus +tausch einer Softwarekomponente die Netzhardware wechseln. Es gibt auch die +Möglichkeit, durch verschiedene Netzmodi unterschiedliche Treiber an ein und das +selbe Netz anzuschließen. Beispielsweise gibt es für einige Rechnertypen Steckkarten, +mit denen der Rechner an das Ethernet angeschlossen werden kann. Man kann, +wenn diese Karten angepaßt sind, den #ib#Ethernet#ie#-Zugang über verschiedene Netz +anschlußkarten realisieren.  +  +Das Netz-Hardware-Interface muß folgende Aufgaben übernehmen:  +  +    Bei der Ausgabe an den Treiber:  +  +        -  Generieren und Ausgeben des #ib#Paket#ie#headers,  +        -  Umsetzen von logischen Stationsadressen (#ib#Stationsnummer#ie#n) in phy +           sische #ib#Adresse#ie#n,  +        -  Ausgeben der Daten (EUMEL-Netz-#ib#Telegramm#ie#e),  +        -  Generieren und Ausgeben des Trailers und evtl. Auffüllen des Pakets mit +           #ib#Füllzeichen#ie#, falls auf dem Netz eine Mindestlänge für Pakete gefordert +           wird.  +  +    Bei der Eingabe vom Treiber:  +  +        -  Weglesen von #ib#Füllzeichen#ie#,  +        -  Prüfen der #ib#Adresse#ie#n,  +        -  Weglesen von #ib#Paket#ie#teilen, die in der EUMEL-Netz-Software nicht +           gebraucht werden.  +  +    Weiterhin können Funktionen wie  +  +        -  Reset des Treibers,  +        -  Prüfung, ob Stationsadresse und #ib#Adresse#ie# im Treiber übereinstimmen,  +        -  Statistik und Service  +  +    durch das Netz-Hardware-Interface übernommen werden.  +  +Dazu wird ein Satz von Prozeduren über die #ib#DEFINES#ie#-#ib#Schnittstelle#ie# des Netz- +Hardware-Interfaces zur Verfügung gestellt. Wenn neue Treiber oder Netzarten +implementiert werden sollen, so muß an diesem Interface nichts geändert werden. Die +herausgereichten Prozeduren realisieren #ib#Sprungleisten#ie# (#ib#SELECT#ie#-Statements), über +die durch Erweiterung (#ib#CASE#ie#) die Prozeduren erreicht werden können, die den ent +sprechenden #ib#Netzmodus#ie# realisieren. Außerdem werden Informationsprozeduren für die +darüberliegenden Programmteile zur Verfügung gestellt.  +#page#  +  +3.3. Netztreiber  +  + #goalpage("3.3")#  +Unter #ib#Netztreiber#ie#n versteht man die Einheiten, die den Anschluß des Rechners an ein +Netz realisieren. Das können #ib#Netzbox#ie#en sein, die mit dem Rechner über eine #ib#V.24#ie#- +Leitung verbunden sind, aber auch Anschlußkarten, die direkt auf den Datenbus des +Rechners gehen. Falls die #ib#Schnittstelle#ie# der Treiber-Hardware eine andere als die +serielle #ib#V.24#ie# ist, muß in der Regel eine Anpassung für die Hardware im #ib#SHard#ie# vorge +nommen werden.  +  +Falls der Treiber über eine serielle #ib#V.24#ie#-#ib#Schnittstelle#ie# mit dem Rechner verbunden +ist, wie das auch bei der direkten Kopplung oder dem Datenboxennetz der Fall ist, +wird die hohe #ib#Übertragungsgeschwindigkeit#ie# auf dem eigentlichen Netz durch die +relativ geringe Übertragungsgeschwindigkeit auf der #ib#V.24#ie#-#ib#Schnittstelle#ie# zwischen +Rechner und Treiber (Box) gebremst. Über andere Schnittstellen im Rechner, wenn +sie mit #ib#Stream I/O#ie# [7] betrieben werden, kann man dies vermeiden. Diese Schnitt +stellen müssen vom SHard bedient werden.  +  +Wenn in den Rechner integrierte Netztreiber (Netzanschlußkarten) benutzt werden +sollen, so muß in der Regel die Behandlung dieser Netzanschlußkarte im SHard +durchgeführt werden.  +  +Um effizient implementieren zu können, sollte darauf geachtet werden, daß möglichst +wenig zusätzliche #ib#Zeichen#ie# von der #ib#Netzsoftware#ie# bzw. dem Netz-Hardware-Inter +face bearbeitet werden müssen. Das Auffüllen von Paketen auf eine Mindestlänge +sollte möglichst vom Treiber gemacht werden, ebenso wie das Weglesen dieser +Zeichen.  +  +Um einen sicheren und effektiven Netzbetrieb zu garantieren, sollten die Treiber +folgende Eigenschaften haben:  +  +     -  Die #ib#Stationsadresse#ie# ist im Treiber festgelegt, sie soll nicht ohne weiteres +        verändert werden können (Datenschutz).  +     -  Der Treiber reicht nur #ib#Paket#ie#e mit richtiger #ib#Zieladresse#ie#, keine #ib#Broad- oder +        Multicasts#ie# an die Netzsoftware weiter.  +     -  Der Treiber sendet nur #ib#Paket#ie#e mit richtiger #ib#Absenderadresse#ie# bzw. setzt die +        Absenderadresse selbst ein.  +     -  Die am Treiber eingestellte #ib#Adresse#ie# kann abgefragt werden, oder es wird, +        wenn ein Paket mit falscher #ib#Absenderadresse#ie# vom Rechner kommt, eine +        #ib#Fehlermeldung#ie# an den Rechner gegeben. Die Fehlermeldung muß durch das +        Netz-Hardware-Interface in den #on("b")##ib#report#ie##off("b")# eingetragen werden.  +     -  Falls Pakete mit #ib#Füllzeichen#ie# aufgefüllt werden müssen, sollten die Füll +        zeichen durch den Treiber generiert und beim Empfang wieder entfernt +        werden.  +     -  Falls mehrere Betriebsmodi möglich sind, so sollten sie softwaremäßig +        einstellbar sein.  +     -  Falls die Treiber über eine serielle #ib#Schnittstelle#ie# an den Rechner angeschlos +        sen werden, so sollte der Treiber konfigurierbar sein. In jedem Fall sollte die +        serielle Schnittstelle mit #ib#Flußkontrolle#ie# (#ib#RTS/CTS#ie#) implementiert werden.  +  +Zusätzlich ist ein Transparent-Modus als #ib#Netzmodus#ie# von Vorteil:  +  +     -  Der Modus (transparent) kann zu Testzwecken benutzt werden. Beispiels +        weise um auch mit Rechnern kommunizieren zu können, die über Netz +        erreichbar sind, aber kein EUMEL-Netz-#ib#Protokoll#ie# benutzen.  +  +        Modus n:  transparent.  +  +                  Ausgabeseitig: Das #ib#Paket#ie# wird unverändert ausgegeben. +                                 #ib#Adresse#ie#n usw. müssen schon im Paket vor +                                 handen sein. Es wird nicht mit #ib#Füllzeichen#ie# +                                 aufgefüllt.  +                  Eingabeseitig: Das Paket wird unverändert an die Netzsoft +                                 ware weitergegeben.  +  +#page#  +  +3.4.  Prozedurschnittstelle  +      des EUMEL-Netzes  +       +  +  +  +  +     #goalpage("3.4")#  +Im PACKET #on("b")##ib#net hardware interface#ie##off("b")# sind folgende Prozeduren untergebracht:  +  +  +  +      BOOL PROC #ib#blockin#ie#  +          (DATASPACE VAR ds, INT CONST seite, abstand, länge):  +  +           Versucht, #on("b")#länge#off("b")# Zeichen vom #ib#Kanal#ie# einzulesen. Liefert TRUE, wenn alle +           Zeichen eingelesen wurden, FALSE, wenn innerhalb einer bestimmten +           Zeit nicht alle #on("b")#länge#off("b")# Zeichen eingelesen werden konnten (z.B. weil der +           Kanal nicht mehr Zeichen anliefert). Die eingelesenen Zeichen werden im +           #ib#Datenraum#ie# #on("b")#ds#off("b")# in #ib#Seite#ie# #on("b")#seite#off("b")# ab #on("b")#abstand#off("b")# bis #on("b")#abstand#off("b")# + #on("b")#länge#off("b")# - 1 abge +           legt.  +  +               #ib#Fehlerfall#ie#:  +  +                     #on("b")#blockin Abbruch#off("b")#  +  +           Es werden weniger #ib#Zeichen#ie# innerhalb einer festgelegten Zeitspanne über +           den Kanal angeliefert, als mit #on("b")#länge#off("b")# gefordert.  +  +           Passiert z.B., wenn die Kabel während einer Netzübertragung unter +           brochen werden, oder wenn die Gegenstelle abgeschaltet wird. Das +           #ib#Telegramm#ie# wird vernichtet, die Prozedur liefert FALSE, es wird eine +           entsprechende Meldung im #on("b")##ib#report#ie##off("b")# erzeugt.  +  +      PROC #ib#blockout#ie#  +          (DATASPACE CONST ds, INT CONST seite, abstand, länge):  +  +          Der Inhalt von Seite #on("b")#seite#off("b")# des #ib#Datenraum#ie#s #on("b")#ds#off("b")# wird von #on("b")#abstand#off("b")# bis +          #on("b")#abstand#off("b")# + #on("b")#länge#off("b")# - 1 ausgegeben.  +#page#  +      PROC #ib#set net mode#ie# (INT CONST mode):  +  +          Es wird der #ib#Netzmodus#ie# #on("b")#mode#off("b")# eingestellt. Im Netz-Hardware-Interface +          müssen alle Initialisierungen und Einstellungen vorgenommen werden, +          damit die mit #on("b")#mode#off("b")# geforderte #ib#Netzhardware#ie# unterstützt wird. Diese +          Prozedur wird bei jedem #on("b")##ib#start#ie##off("b")#-Kommando in der Netztask aufgerufen. +          Kann als Initialisierungsprozedur für dieses PACKET verwendet werden. +          Übergibt den in der #ib#Datei#ie# #on("b")##ib#netz#ie##off("b")# für diesen #ib#Kanal#ie# verlangten Netzmodus an +          das Netz-Hardware-Interface. Nach Aufruf dieser Prozedur müssen die +          wertliefernden Prozeduren #on("b")##ib#net mode#ie#, #ib#mode text#ie#, #ib#data length#ie##off("b")# und #on("b")##ib#data +          length via node#ie##off("b")# korrekt initialisiert sein. Der Aufruf von #on("b")##ib#net addess#ie##off("b")# muß +          die korrekten (physikalischen) #ib#Adresse#ie# der #ib#Station#ie#en liefern.  +  +      TEXT PROC net address (INT CONST stationsnummer):  +  +          Liefert die (Hardware-) Netz-#ib#Adresse#ie#, über die der EUMEL-Rechner +          mit der Stationsnummer #on("b")##ib#stationsnummer#ie##off("b")# beim aktuell für diesen Kanal +          eingestellten #ib#Netzmodus#ie# erreichbar ist. Auf diese #ib#Adresse#ie# muß der Treiber +          des entsprechenden Rechners eingestellt sein. Auch die eigene Netz- +          Adresse muß mit der im Treiber eingestellten #ib#Adresse#ie# übereinstimmen. +          Insbesondere müssen alle Stationen, die auf dem Netz arbeiten, dieselbe +          Netz-Adresse für eine #ib#Stationsnummer#ie# errechnen.  +  +      TEXT PROC #ib#mode text#ie#:  +  +          Liefert den Text (Namen) des eingestellten #ib#Netzmodus#ie#. Wird in #on("b")##ib#net +          manager#ie##off("b")# benutzt, um den Netzmodus im #on("b")##ib#report#ie##off("b")# anzugeben.  +  +      TEXT PROC mode text (INT CONST mode):  +  +          Liefert den Text (Namen) zu dem #ib#Netzmodus#ie# #on("b")#mode#off("b")#.  +  +      INT PROC #ib#data length#ie# (INT CONST mode):  +  +          Liefert die #ib#Nutzdatenlänge#ie# (#ib#Länge#ie# der Nettodaten des Eumel- +          Telegramms) im Netz. Wird von #on("b")##ib#basic net#ie##off("b")# beim Neustart aufgerufen. Muß +          in einem Netz auf allen Stationen eines #ib#Strang#ie#s denselben Wert liefern.  +  +          Erlaubte Werte:  64, 128, 256 und 512.  +#page#  +      INT CONST #ib#data length via node#ie#:  +  +          Liefert die #ib#Nutzdatenlänge#ie# für Sendungen, die über #ib#Knoten#ie# gehen.  +          Muß auf allen Stationen des Netzes gleich sein.  +  +          Erlaubte Werte:  64, 128, 256 und 512.  +  +      PROC #ib#decode packet length#ie# (INT VAR value):  +  +          Die #ib#Länge#ie# eines Netztelegramms ist im #ib#Telegramm#ie# codiert enthalten. Mit +          dieser Prozedur wird aus dem Telegrammkopf die Telegrammlänge ermit +          telt:  +  +          Falls beim Aufruf dieser Prozedur in #on("b")#value#off("b")# der Wert des Feldes #on("b")#head#off("b")# aus +          der Struktur #on("b")#vorspann#off("b")#, die in #on("b")#ds#off("b")# per #on("b")##ib#transmit header#ie##off("b")# übergeben wurde, +          enthalten ist, so wird in #on("b")#value#off("b")# die Länge des EUMEL-Netztelegramms +          zurückgeliefert.  +  +      PROC #ib#flush buffers#ie#:  +  +          Liest den Eingabepuffer des #ib#Netzkanal#ie#s leer. Die eingelesenen Zeichen +          werden vernichtet. Wird nach Erkennen von #ib#Übertragungsfehler#ie#n aufge +          rufen.  +  +      TEXT PROC #ib#next packet start#ie#:  +  +          Liefert genau ein #ib#Zeichen#ie# (in der Regel das erste Zeichen des EUMEL- +          Netztelegramms). Wird von der Netzsoftware immer dann aufgerufen, +          wenn ein neues #ib#Paket#ie# erwartet wird.  +  +          Bedeutung des gelieferten Zeichens für die #ib#Netzsoftware#ie#:  +  +          #ib#STX#ie#:      korrekter #ib#Telegrammanfang#ie# (ist das erste Zeichen des +                    EUMEL-Netztelegramms). Der Rest des EUMEL-Netztele +                    gramms steht im Eingabepuffer, ist also über #ib#blockin#ie# lesbar. +                    Vorher wurden nur Zeichen eingelesen, die zum verwendeten +                    #ib#Netzprotokoll#ie# gehören (z.B. #ib#Ethernet#ie#-#ib#Adresse#ie#n, #ib#Füllzeichen#ie# +                    usw.).  +          niltext:  kein neues Telegramm da  +  +          jedes andere Zeichen:  +                    Fehler. Entweder wurden Störzeichen eingelesen oder es +                    gingen Zeichen verloren. #ib#Fehlerbehandlung#ie# erfolgt durch die +                    Netzsoftware.  +#page#  +      PROC #ib#transmit header#ie# (DATASPACE CONST ds):  +  +          Wird vor Ausgabe eines jeden #ib#Telegramm#ie#s aufgerufen. In dem #ib#Datenraum#ie# +          #on("b")#ds#off("b")# wird von der EUMEL-Netz-Software der #on("b")##ib#Vorspann#ie##off("b")# übergeben. Über +          den jeweiligs eingestellten #ib#Netzmodus#ie# kann für jede implementierte Netz +          art über eine #ib#Sprungleiste#ie# (#ib#SELECT#ie#) die Prozedur angesprungen werden, +          die den #ib#Header#ie# für den eingestellten Netzmodus erstellt und ausgibt. +          Struktur des von der EUMEL-Netz-Software benutzten Headers:  +  +              BOUND STRUCT  +              (INT  head,  +                    zwischenziel,  +                    zielrechner,  +                    quellrechner,  +                    strom,  +                    sequenz,  +                    seitennummer ) VAR vorspann.  +  +          Aus dem Inhalt des Feldes #on("b")#head#off("b")# kann mittels #on("b")##ib#decode packet length#ie##off("b")# die +          Gesamtlänge des EUMEL-Netztelegramms errechnet werden.  +  +      PROC #ib#transmit trailer#ie#:  +  +          Wird nach Ausgabe eines jeden Telegramms aufgerufen. Evtl. notwendige +          Nachspänne können ausgegeben werden. Die notwenigen Informationen +          wurden  in #on("b")##ib#transmit header#ie##off("b")# übergeben und müssen aufbewahrt werden, +          falls sie im Trailer mitgeliefert werden müssen. Kann auch dazu benutzt +          werden, den unter diesem Packet liegenden Schichten (#ib#SHard#ie# oder Hard +          ware) das Ende des Telegramms mitzuteilen. Notwendige #ib#Füllzeichen#ie# +          können in dieser Prozedur in das #ib#Paket#ie# eingebaut werden.  +  +      PROC #ib#reset box#ie# (INT CONST net mode):  +  +          Kann zur Initialisierung der #ib#Netzhardware#ie# benutzt werden. Wird von #on("b")##ib#basic +          net#ie##off("b")# beim jedem Neustart aufgerufen.  +  +     INT PROC #ib#max mode#ie#:  +  +          Liefert den Wert des größten erlaubten (implementierten) #ib#Netzmodus#ie#.  +  +     INT PROC #ib#net mode#ie#:  +  +          Liefert den eingestellten Netzmodus.  +#page#  +#pagenr ("%", 45)##setcount (1)##block##pageblock##count per page#  +#headeven#  +#center#EUMEL Netzbeschreibung  +#center#____________________________________________________________  +  +#end#  +#headodd#  +#center#Anhang  +#center#____________________________________________________________  +  +#end#  +#bottomeven#  +#center#____________________________________________________________  +Netz - % #right#GMD  +#end#  +#bottomodd#  +#center#____________________________________________________________  +GMD #right#Netz - %  +#end#  +#clear pos##lpos(1.0)##rpos(9.5)##goalpage("A")#  + +Anhang: Netz-Meldungen#goalpage("A.1")#  +  +Mit dem Kommando #on("b")##ib#list#ie# (/"net list")#off("b")# (siehe Teil 1) erhalten Sie eine temporäre #ib#Datei#ie# +auf den Bildschirm. Diese Datei könnte ungefähr so aussehen:  +  +____________________________________________________________________________  +    +   N e u e r   S t a r t 12:44      Stationsnummer : 38  +  01.06.87 12:55 net port 8:20:Nicht zustellbar. . Empfänger: "net dok". Quelle 34 Taskindex: 255  +  02.06.87 06:30 net port 8:1:wdh data. sqnr 7. Absender: "net dok". Ziel 34 Taskindex: 255  +  02.06.87 07:03 net port:20:Sequenzfehler: soll 13 ist 14. Empfänger: "POST". Quelle 33 Taskindex:  +  02.06.87 07:03 net port:blockin abbruch  +  02.06.87 07:03 net port:20:Sequenzreset von 13 auf 10. Empfänger: "POST". Quelle 33 Taskindex: 29  +  02.06.87 07:36 net port:Call gelöscht."net dok". Strom 1  +  02.06.87 07:43 net port 8:verbotene Route: 34  +  02.06.87 07:50 net port:Header inkorret eingelesen: %0 %2  +  02.06.87 07:50 net port:buffers flushed  +  02.06.87 07:52 net port:Weiterleitung nicht möglich für 34  +  02.06.87 07:53 net port 8:skipped0 6 G O 1 0 . 0 %13 %10 2 8 0 6   0 6 G O 1 0 . 0 %13 %10 2 8 0  +  02.06.87 08:14 net port 8:skipped%13 %10 S p e c .   R e c e i v e   E r r o r   C 2  +  02.06.87 08:21 net port:20:Reopen. Empfänger: "WÜFE". Quelle 40 Taskindex: 22  +  02.06.87 09:25 net port:1:etwas rueckgespult. Absender: "-". Ziel 33 Taskindex: 51  +  02.06.87 09:25 net port:1:wdh data. sqnr 20. Absender: "-". Ziel 33 Taskindex: 51  +  02.06.87 09:54 net port:20:Blocknummer falsch, neu: 192, alt : -1. Empfänger: "WÜFE". Quelle 44  +  02.06.87 10:12 net port:Daten ohne Eroeffnung von 40  Sequenznr 7  +  02.06.87 10:23 net port:Header inkorret eingelesen: O X 0 3 8 B O X 0 4 4 E U %2  +  02.06.87 10:23 net port:buffers flushed  +  02.06.87 10:49 net port:1:wdh open. Absender: "-". Ziel 33 Taskindex: 255  +  02.06.87 10:49 net port:2:wdh open. Absender: "net dok". Ziel 33 Taskindex: 255  +  02.06.87 10:53 net port:1:Sequenzfehler: soll 2 ist 3. Empfänger: "net dok". Quelle 33 Taskindex:  +  02.06.87 10:54 net port:1:Sequenzreset von 8 auf 5. Empfänger: "net dok". Quelle 33 Taskindex: 11  +  02.06.87 10:56 net port:2:etwas rueckgespult. Absender: "-". Ziel 33 Taskindex: 51  +  bekannte Stationen:  +  1(8,1) 2(8,2) 3(8,3) 4(8,4) 5(8,5) 6(8,6) 7(8,7) 8(8,8) 9(8,9) 10(8,10)  +  11(8,11) 12(8,12) 13(8,13) 14(8,14) 15(8,15) 16(8,16) 17(8,17) 18(8,18)  +  19(8,19) 20(8,20) 21(8,21) 22(8,22) 23(8,23) 24(8,24) 25(8,25) 26(8,26)  +  27(8,27) 28(8,28) 29(8,29) 30(8,30) 31(8,31) 32(8,32) 33(9,33) 34(8,34)  +  35(9,35) 36(9,36) 37(9,37) 39(9,39) 40(9,40) 41(9,41) 42(9,42) 43(9,43)  +  44(9,44) 45(9,45) 46(9,46) 47(9,47) 48(9,48)  +  --------  +  Eingestellte Netzmodi:  +  net port 8 haengt an Kanal 8, Modus: (1)  EUMEL-Netz            64 Byte  +  net port haengt an Kanal 9, MODUS: (11) ETHERNET via V.24     512 Byte  +  +  Nutzdatenlänge 512 Byte  +  Nutzdatenlänge bei indirekter Verbindung: 64 Byte  +  ********  +  Netz-Software vom  23.05.87  +  Rechner 38  um 11:11  +  net port 8  +  +  Strom 1 (sqnr7/8) sendet an 34 . Absender ist "net dok".  +  net port  +  +  Strom 1 (sqnr45/45) empfaengt von 40 . Empfaenger ist "PUBLIC".  +  +____________________________________________________________________________  +#page#  +Die Datei enthält den aktuellen #on("b")##ib#report#ie##off("b")#, in dem #ib#Fehlermeldung#ie#en der einzelnen Tasks +gesammelt werden. Außerdem wird der Zustand aller Verbindungen (Ströme) von allen +#on("b")##ib#net port#ie##off("b")#'s angezeigt. Im #on("b")#report#off("b")#-Teil kann man drei Informationsblöcke unterscheiden:  +  +a) den Block mit den Fehlermeldungen. Es werden jeweils Datum, Uhrzeit, der Name +   des betroffenen #on("b")#net port#off("b")# und, wenn notwendig, die #ib#Stromnummer#ie# angegeben. +   Darauf folgt der Meldungstext, der auch Informationen über Absender und Emp +   fänger enthalten kann.  +  +   <Datum> <Zeit> <Name der #ib#Kanaltask#ie#> : [<#ib#Stromnummer#ie#> : ] <Meldung>  +  +  +b) den Block mit der Liste der bekannten #ib#Station#ie#en. Ein Eintrag in dieser Liste ent +   hält jeweils die Stationsnummer der bekannten Station und in Klammern dahin +   ter die Nummer des Kanals auf diesem Rechner, über den die Station erreichbar +   ist und die Nummer der nächsten #ib#Zwischenstation#ie#.  +  +   <Zielstation> (<Kanalnr>,<Zwischenstation>)  +  +   Bei direkt erreichbaren Stationen ist Zwischenstation gleich #ib#Zielstation#ie#.  +  +   Hinweis: Auch #ib#gesperrt#ie#e Stationen erscheinen in dieser Liste.  +  +  +c) den Block, der Auskunft über die Netzinstallation gibt. Es werden für jeden Netz +   kanal die eingestellten Netzmodi angegeben. Des weiteren werden die beiden +   Größen #on("b")##ib#data length#ie##off("b")# (#ib#Nutzdatenlänge#ie#) und #on("b")##ib#data length via node#ie##off("b")# (Nutzdatenlänge bei +   indirekter Verbindung) angegeben. Zusätzlich erscheinen noch die #ib#Netzversion#ie# und +   die genaue Uhrzeit, zu der dieser #on("b")#report#off("b")# erstellt wurde.  +  +#page#  +Für jeden #on("b")##ib#net port#ie##off("b")# wird pro aktivem #ib#Strom#ie# folgende Meldung generiert:  +  +Strom <Stromnr> (sqnr<akt Seqnr>/<max Seqnr>) <Zustand> <Partner>  +  +  +<Stromnr>        #ib#Stromnummer#ie#  +  +<akt Seqnr>      #ib#Sequenznummer#ie# des gerade bearbeiteten #ib#Telegramm#ie#s  +  +<max Seqnr>      Bei #ib#Sendeströme#ie#n die Nummer der letzten zu übertragenden +                 #ib#Sequenz#ie#, bei Empfangsströmen in der Regel die Nummer der +                 letzten Sequenz der gerade übertragenen #ib#Datenraumseite#ie#.  +  +<#ib#Zustand#ie#>        Hier wird die Aktion (senden, empfangen usw.) und die Partner +                 station angegeben.  +  +<#ib#Partner#ie#>        Der Name der Task mit der kommuniziert wird.  +  +  +Die Meldungen, die in der #ib#Datei#ie# #on("b")##ib#report#ie##off("b")# protokolliert werden, kann man in verschiedene +Gruppen einordnen. Die eine Gruppe beschreibt Störungen durch #ib#Zeichenverluste#ie# +oder verfälschungen, eine andere Gruppe protokolliert besondere Situationen, bei +spielsweise den Abbruch von #ib#Übertragung#ie#en, und die letzte Gruppe befasst sich mit +#ib#Fehlermeldung#ie#en, die ein Eingreifen von aussen notwendig machen. Je nachdem, ob +die Station, auf der die Meldung protokolliert wird, Empfänger oder Absender ist, wird +bei den Meldungen #ib#Stationsnummer#ie# und Taskname des Kommunikationspartners mit +angegeben.  +  +Zur ersten Gruppe gehören:  +  +#ib(4)##ib#skipped#ie##ie(4)#  +               'skipped' oder skipped mit einem Zusatztext erscheint, wenn Zei +               chen eingelesen wurden, die zu keinem gültigen #ib#Telegramm#ie# ge +               hören. Dies kann passieren, wenn auf der Leitung zwischen +               Rechner und Box #ib#Zeichen#ie# verlorengegangen sind. Auch nach dem +               Einschalten oder nach einem Reset auf Box oder Rechner kann +               diese Meldung kommen. Mindestens ein Teil der eingelesenen +               Daten wird mit ausgegeben, wobei Steuerzeichen durch % und den +               Code des Steuerzeichens dargestellt werden. Die einzelnen Zeichen +               werden durch ein Blank voneinander getrennt.  +#page#  +#ib(4)##ib#Sequenzfehler#ie##ie(4)#  +               Die #ib#Sequenznummer#ie# ist zu groß, es fehlen also Telegramme. Die +               Gegenstation wird aufgefordert, ab einem früheren Telegramm zu +               wiederholen.  +  +#ib(4)#wdh data#ie(4)#  +               Das letzte Telegramm wird erneut geschickt. Passiert, wenn die +               #ib#Quittung#ie# für dieses Telegramm nach einer bestimmten Zeit nicht +               angekommen ist.  +  +#ib(4)##ib#Sequenzreset#ie##ie(4)#  +               Die #ib#Sequenznummer#ie# des empfangenen Telegramms ist kleiner als +               die Sequenznummer des vorher empfangenen Telegramms. Die +               Verbindung wird bei der zuletzt empfangenen Sequenznummer +               fortgesetzt.  +  +#ib(4)#Blocknummer falsch#ie(4)#  +               Die #ib#Seitennummer#ie# in dem #ib#Telegramm#ie# ist falsch.  +  +#ib(4)#etwas rueckgespult#ie(4)#  +               Auf Anforderung der Gegenseite werden die letzten drei #ib#Datenraum +               seite#ie#n erneut übertragen.  +  +#ib(4)#Daten ohne Eroeffnung#ie(4)#  +               Es werden Telegramme mit einer #ib#Stromnummer#ie# empfangen, zu der +               vorher kein OPEN-Telegramm empfangen wurde. In diesem Fall +               wird die Gegenstation aufgefordert, die #ib#Übertragung#ie# von vorn zu +               beginnen. Diese Meldung kann auch kommen, wenn das Netz neu +               gestartet wurde.  +  +#ib(4)#wdh open#ie(4)#  +               Die Übertragung wird mit dem #ib#OPEN#ie#-Telegramm von vorn begon +               nen. Passiert auf Aufforderung durch die Gegenstation oder wenn +               das erste OPEN-Telegramm nicht quittiert wurde.  +  +#ib(4)##ib#buffers flushed#ie##ie(4)#  +               Alle bereits eingelesenen, aber noch nicht bearbeiteten Zeichen +               wurden gelöscht (der #ib#Eingabepuffer#ie# wurde komplett gelöscht). Verur +               sacht durch schwere Störungen (#ib#Zeichenverluste#ie# oder -verfäl +               schungen).  +#page#  +#ib(4)#blockin abbruch#ie(4)#  +               Es wurden nicht alle Zeichen eines Telegramms innerhalb eines +               bestimmten Zeitraums angeliefert.  +  +#ib(4)#Header inkorrekt eingelesen#ie(4)#  +               Es wurde ein Fehler in dem Teil des Netztelegramms gefunden, der +               nicht zum EUMEL-Netz gehört.  +  +#ib(4)#Strom falsch in Quittung#ie(4)#:  +               In der #ib#Quittung#ie# wurde eine nicht zulässige #ib#Stromnummer#ie# festge +               stellt. Zulässig sind Stromnummern zwischen 1 und 20.  +  +#ib(4)#Neustart#ie(4)#  +               Die Gegenstation hat die #ib#Verbindung#ie# von vorne begonnen.  +  +#ib(4)#Falsche Seitennummer#ie(4)#  +               Die #ib#Seitennummer#ie# in dem empfangenen Telegramm ist falsch. +               Einige Telegramme werden wiederholt.  +  +#ib(4)#Absteigende Seitennummern#ie(4)#  +               Die Seitennummer in dem empfangenen Telegramm ist kleiner als +               die Seitennummer im vorigen #ib#Telegramm#ie#. Es müssen einige Tele +               gramme wiederholt werden.  +  +  +Die folgenden Meldungen beschreiben Situationen, die nicht durch #ib#Zeichenverluste#ie# +entstehen, mit denen die #ib#Netzsoftware#ie# selbst fertig wird:  +  +  +#ib(4)#Sendung von Gegenstelle gelöscht#ie(4)#  +               Die Verbindung wurde von der Gegenstelle abgebrochen.  +  +#ib(4)#Empfangseintrag freigegeben#ie(4)#  +               Die Verbindung wurde von der empfangenden #ib#Station#ie# gelöscht, weil +               seit dem Eintreffen des letzten Telegramms zuviel Zeit vergangen ist +               (#ib#Timeout#ie#).  +  +#ib(4)#Irrläufer#ie(4)#  +               Eine #ib#Intertaskkommunikation#ie# innerhalb der eigenen Station wurde +               fälschlicherweise über den #on("b")##ib#Collector#ie##off("b")# abgewickelt. Dieser Vorgang +               wird abgebrochen.  +#page#  +#ib(4)#Call-Löschung vorgemerkt#ie(4)#  +               Sobald der Call abgewickelt ist, wird diese Verbindung gelöscht. +               Beispielsweise führt ein vom Benutzer abgebrochenes #on("b")##ib#name#ie##off("b")# zu +               dieser Meldung.  +  +#ib(4)#Call gelöscht#ie(4)#  +               Die #ib#Verbindung#ie# wurde auf Anforderung durch den Auftraggeber +               gelöscht.  +  +#ib(4)#Quellrechner#ie(4)#  +               Als #ib#Quellrechnernummer#ie# wurde ein unzulässiger Wert festgestellt. +               Zulässig sind Zahlen zwischen 1 und 127.  +  +#ib(4)#Nicht zustellbar#ie(4)#  +               Innerhalb eines bestimmten Zeitraums war die #ib#Zieltask#ie# nicht emp +               fangsbereit. Die Verbindung wird abgebrochen.  +  +Bei diesen Meldungen sollten die #ib#Routenanweisungen#ie# überprüft werden:  +  +#ib(4)#Verbotene Route bei Quittung#ie(4)#  +               Die #ib#Quittung#ie# kommt auf einer nicht erlaubten #ib#Route#ie# an. Dies kann +               bei #ib#Vermaschung#ie# passieren, oder aber, wenn eine Station versucht, +               sich für eine andere Station auszugeben.  +  +#ib(4)#Verbotene Route#ie(4)#  +               Die danach bezeichnete Station versucht, auf einer anderen Route +               mit diesem Rechner zu kommunizieren, als auf der Route, die für +               diesen Rechner in der Datei #on("b")##ib#netz#ie##off("b")# festgelegt wurde.  +  +               Abhilfe:  +               #ib#Routentabellen#ie# der beiden (oder, falls die Meldung auf einer +               #ib#Knotenstation#ie# erscheint, auf allen beteiligten) Stationen abgleichen.  +  +#ib(4)#Weiterleitung nicht möglich#ie(4)#  +               Die #ib#Routeninformationen#ie# auf dem #ib#Knotenrechner#ie#, wo diese Meldung +               erscheint, und der sendenden #ib#Station#ie# stimmen nicht überein. Die +               angegebene Station ist von dieser Station aus nicht erreichbar.  +  +               Abhilfe:  +               #ib#Routentabellen#ie# der Stationen überprüfen.  +  +#ib(4)#Fremdzugriff#ie(4)#  +               Eine #ib#gesperrt#ie#e Station hat versucht, auf diesen Rechner mit #ib#Sende +               codes#ie# > 6 zuzugreifen.  +  +  +Folgende Meldungen betreffen '#ib#harte Fehler#ie#'. Diese Fehler werden von der Netzsoft +ware nicht abgefangen. In jedem Fall muß das Netz nach einer solchen #ib#Fehler +meldung#ie# neu gestartet werden.  +  +#ib(4)#++++++#ie(4)#  +               Meldungen dieser Form sind 'harte' Fehler. Der aufgetretene Fehler  +               wird mit angegeben. Das Netz muß neu gestartet werden, da die +               Task, in welcher der Fehler aufgetreten ist, gelöscht wird.  +  +#ib(4)#Verbindungsengpaß#ie(4)#  +               Es sind mehr Verbindungen festgestellt worden, als zulässig sind. +               Nach dieser Meldung wurde der entsprechende Netport gelöscht.  +  +  +Literaturverzeichnis  +  +  +#goalpage("A.2")#  +  +#clear pos#  +#lpos(1.0)##lpos(2.5)#  +#table#  +[1]   EUMEL-Systemhandbuch, Teil 5, Intertaskkommunikation  +      GMD St. Augustin, 1986  +[2]   EUMEL-Systemhandbuch, Teil 2, Hardware und ihre Steuerung  +[3]   EUMEL-Systemhandbuch, Teil 8, Spooler  +[4]   EUMEL-Netz Installationsanweisung  +      GMD St. Augustin, 1987  +[5]   EUMEL-Systemhandbuch, Teil 4, Blockorientierte Ein/Ausgabe  +[6]   EUMEL-Quellcode, Packet #on("b")#tasks#off("b")#  +      GMD St. Augustin, 1986  +[7]   EUMEL-Portierungshandbuch 8086, Version 8  +      GMD St. Augustin, 1987  +  +#table end# + + | 
