Kochbuch für das Fangen von Traces unter Linux

PC`s verfügen heute üblicherweise über einen 500 bis 1000 MHz Prozessor. 64 bis 128 Mbyte Hauptspeicher und eine 20 bis 30 Gbyte Festplatte. Ich denke es genügt wenn Sie einen PC mit 200 MHz Prozessor, mindestens 64 Mbyte Hauptspeicher, sowie etwa eine 8 Gbyte Festplatte besitzen.
Allerdings müssen Sie eine SuSE 7.0 (oder höher) installiert haben. Sodann sollte ihr Rechner mit einer ISDN-Karte vom Typ Arowana PCI (mit HFC-Chip), TELES 16.3c ISA PnP  (mit HFC-Chip), oder Teles PCMCIA (mit HFC-Chip) bestückt sein.
Dabei wird die Arowana-Karte (weil PCI) vom System leichter installiert. Leider ist die Teles PCMCIA Karte (mit HFC-Chip) die einzige unter Linux auf einem LapTop betreibbare Karte dieser Art. Die Intec GmbH baut zwar auch ISDN-Karten mit HFC-Chip aber vertreibt sie nur mit ihrem Analyzertool Argus.

Man kann auch anstelle von einer Karte mit HFC-Chip, zwei ISDN-Karten ohne HFC-Chip einsetzen, z.B. Fritz-Karten, das wird von Alexander Kool im unten genannten README beschrieben. An dieser Stelle soll aber nur das Vorgehen beim Einsatz einer Arowana-Karte beschrieben werden.
Die Installation haben Sie mit YAST2 vorgenommen, der die ISDN-Karte automatisch erkannt und konfiguriert hat. Sie haben zwar den ppp-Zugang zu Ihrem Provider konfiguriert, aber sie haben "manuelle" Anwahl eingestellt. Wenn Sie "kinternet" anklicken, wird die ppp-Verbindung zu Ihrem Povider hergestellt.

1.) Als "Werkzeug", zur Kontrolle was passiert, lassen Sie in einer Konsole das Kommando "tail -f /var/log/messages" laufen. Ich stelle für dieses Fenster, zur leichteren Orientierung auf dem Bildschirm, immer die Option->Schema->Green on Black ein.

2.) Sie müssen nun den isdnlog von Alexander Kool, nach dessen Vorschrift, veranlassen, den D-Kanal zu monitoren und das Ergebnis nach /tmp/isdnctrl0 zu schreiben. Nun ist der isdnlog ein kleines Wunderwerk, mit dem man "least cost routen" kann, oder den man beauftragen kann den D-Kanal nach bestimmten Ereignissen zu überwachen, usw. All das kann man in /usr/share/doc/packages/i4l/isdnlog/README nachlesen.
Da die vorliegenden Zeilen ein Kochbuch darstellen sollen, will ich direkt zur Sache kommen. Der isdnlog muß mit den im nachstehenden Script aufgeführten Schaltern aufgerufen werden (4. Zeile). Wenn Sie das tun, bekommen Sie in Ihrem (grün-schwarzen) Statusfenster den Hinweis, daß bereits ein isdnlog in Betrieb ist, denn Sie haben ja die ISDN-Karte automatisch installiert, gleichzeitig wird Ihnen dessen Prozessnummer mitgeteilt. Sie können nun diesen Prozess löschen und anschließend den neuen isdnlog mit den in Zeile 4 aufgeführten Argumenten starten.

                    ps -x|grep /usr/sbin/isdnlog|awk '{a = $1
                    system("kill -9 "a" ") }'
                    rm /tmp/isdnctrl0
                    isdnlog -ns -v9 -t2 -w1 -l7 -h7:5 -H5 -21 -1 /dev/isdnctrl0&
                    hisaxctrl HiSax 1 4
                    hisaxctrl HiSax 10 1
                    hisaxctrl HiSax 12 1

Die erste und zweite Zeile des o.a. Scripts besorgt das Löschen des vorhandenen isdnlogs automatisch. Ehe der isdnlog seine Ergebnisse in die Datei /tmp/isdnctrl0 schreibt, sollte man die alte Datei aus Platzgründen löschen (Zeile 3). Dann legt der isdnlog eine neue Datei an.

3.) Damit der isdnlog seine Arbeit verrichten kann, muß dem Treiber der ISDN-Karte noch mitgeteilt werden, welche Informationen er durchreichen soll. Das wird mit Karsten Keils hisaxctrl erledigt, In der fünften Zeile des Scripts wird festgelegt, dass die D-Kanal Informationen in Hexformat, wie in der Q.931 festgelegt, ausgegeben werden sollen. Die sechste Zeile schränkt die benutzbaren B-Kanäle auf einen ein. Das ist der Preis für die Anweisung der sechsten Zeile, das Echo-Bit abzufragen.

4.) Wenn Sie das Script von Hand abgearbeitet oder die Zeilen als Shellscript ausführbar gemacht haben, nennen wir das Kommando "startilog" oder kurz "Stai", so können Sie damit jederzeit nach Hochfahren Ihres Linux Ihre ISDN-Karte in den Monitormode versetzen.
Wenn Sie in einer Konsole in das Verzeichnis /tmp wechseln, dann können Sie das Kommando tail -f  isdnctrl0 eingeben (das dazugehörige Shellscript sollte "tail -f /tmp/isdnctrl0" lauten und könnte Rtrace heißen). Sie sehen daraufhin im Terminalfenster Zeilen, wie als Beispiel nachfolgend dargestellt. Das sind RR's im "arbeitslosen" D-Kanal.

                Sat Dec 09 20:42:53 2000 0 HEX: 00 FB 01 A1
                Sat Dec 09 20:43:02 2000 1 HEX: 02 FB 01 E9
                Sat Dec 09 20:43:12 2000 1 HEX: 00 FB 01 E9
                Sat Dec 09 20:43:21 2000 0 HEX: 02 FB 01 A1

Die Ziffer in der siebenden Spalte stellt die Richtung dar, in der der D-Kanal-String ausgesendet ("1"), oder empfangen ("0") wird.
Wenn Sie disziplierte:-)ISDN-Endgeräte besitzen, sehen Sie im ersten Moment ggf. nichts, da die Schicht 2 des D-Kanals nach Beendigung der Verbindung abgebaut wird. Die obigen Zeilen wurden von der Teles.iLCR 2S0 Box des Autors verursacht.

5.) Es ist natürlich informativer ein Shellscript unter Verwendung von awk zu schreiben, und den Live-trace teilweise zu entschlüsseln. Es sollte mit dem Namen Atrace aufgerufen werden.

    snd 21:19:26 TEI:125 L2: RR
    snd 21:19:26 TEI:125 Meldg: SETUP CRW: 01 BC: CCITT Sprache CAPN: 29821 HLC: Telefonie
    rcv 21:19:26 TEI:125 L2: RR
    rcv 21:19:27 TEI:125 Meldg: SETUP ACKNOWLEDGE CRW: 81
    snd 21:19:27 TEI:125 L2: RR
    snd 21:19:29 TEI:125 Meldg: DISCONNECT
    rcv 21:19:29 TEI:125 L2: RR
    rcv 21:19:30 TEI:125 Meldg: RELEASE CRW: 81
    snd 21:19:30 TEI:125 L2: RR
    snd 21:19:30 TEI:125 Meldg: RELEASE COMPLETE
    rcv 21:19:30 TEI:125 L2: RR

Das Kommando lautet

               tail -f /tmp/isdnctrl0|awk -f /tmp/awktr

worin awktr ein File in der Programmiersprache awk ist. Wie soetwas aussieht kann der Leser am gelinkten Beispiel ablesen, das sicherlich von erfahrenen awk-Programmierern leicht zu verbessern ist:-)

6.) Nun besteht sicherlich der Wunsch einzelne "Traceepisoden" aufzuzeichnen, z.B. zu analysieren, welche Informationen bei Inanspruchnahme des Dienstmerkmals "Call Deflection" auf dem D-Kanal ausgetauscht werden. Um die Datei trace.alz zu generieren bastelt man sich wieder ein einfaches Kommando. Nennen wir es Gtrace, womit wie nachstehend dargestellt

                rm /tmp/trace.alz
                tail -f /tmp/isdnctrl0>/tmp/trace.alz&

eine bereits bestehende Datei trace.alz gelöscht und die D-Kanal-Rahmen ab sofort in derDatei trace.alz gesammelt werden.
Wollen Sie die Datei trace.alz nicht generieren, sondern nur verfolgen welche D-Kanal-Rahmen bei verschiedenen Manipulationen am ISDN-Endgerät mit dem Netz ausgetauscht werden, so genügt es, am Prompt des Xfensters das Kommando Trace einzugeben

                tail -f /tmp/trace.alz

Sie sehen die D-Kanal-Rahmen dann solange, bis Sie das Telnetfenster schließen, oder den Prozess durch  Eingabe von ^C (Strg+C) beenden.

Mit dem Kommando Kt

                ps -x|grep "tail -f /tmp/isdnctrl0"|awk '{a = $1
                system("kill -9 "a" ") }'

wird der Prozess, der für das Sammeln der D-Kanal-Rahmen in die Datei trace.alz verantwortlich ist, beendet . Die Datei trace.alz bleibt bestehen und kann mit unterschiedlichen Methoden ausgewertet werden.
 

7.) Warum wurde nun, wie im Abschnitt 6 beschrieben, die erzeugte Tracedatei trace.alz genannt? Das ist dem Zusammenwirken mit der CBT-CD "Der ISDN-D-Kanal Transparent" geschuldet, deren Inhalt im Link "Über das Projekt" beschrieben ist . In dieser CD werden Übungen aus Powerpointfolien gestartet. Die Rohtrace werden dann automatisch mit dem Programm TelesViewG übersetzt, was dann so aussieht:

                -----[ 4 ]---[ S ]---[ 11:31:32 ]--------------------------------------

                00 df 00 00 08 01 03 05 a1 04 02 88 90 6c 07 01 80 32 39 38 32 31 70 0d
                81 30 33 30 36 37 37 36 38 33 30 37 32 7c 02 88 90

                00 SAPI=0 C/R=0 E/A=0
                df TEI=111 E/A=1
                00 I-B N=0 00: N(R)=0 P=0
                08 E-DSS1, PD=08
                01 CRL=1 03: CRW=3 Ursprungsseite
                05 SETUP
                a1 ---> sending complete
                04 ---> bearer service indication
                02 length=2
                88 CCITT uneingeschraenkte digitale Informationen
                90 Leitungs Mode 64 kbit/s
                6c ---> calling party number
                07 length=7
                01 Nummerntyp unbekannt
                ISDN-Telefonie Nummerierungsplan
                80 Darstellung der Nummer erlaubt
                     vom Endgeraet generiert, nicht geprueft
                32..31 29821
                70 ---> called party number
                0d length=13
                81 Adresstyp unbekannt
                     Nummerierungsplan ISDN-Telefonie
                30..32 030677683072
                7c ---> low layer compatibility
                02 length=2
                88 CCITT uneingeschraenkte digitale Informationen
                90 Leitungs Mode 64 kbit/s

-----[ 5 ]---[ R ]---[ 11:31:32 ]--------------------------------------
 

.......

8.) Damit aus Windows auf die Datei trace.alz im LINUX zugegriffen werden kann, muß SAMBA eingerichtet werden. Bei mir funktioniert folgende Datei /etc/smb.conf:

                ;
                ; /etc/smb.conf
                ;
                ; Copyright (c) 1999 SuSE GmbH Nuernberg, Germany.
                ;
                [global]
                workgroup = arbeitsgruppe
                guest account = <IhrName>
                keep alive = 30
                os level = 2
                security = share
                encrypt passwords = yes
                smb passwd file = /etc/smbpasswd
                interfaces = <Die ip-Nummer Ihres Netzes>/24testparm
                wins support = no
 

                [tmp]
                path = /tmp
                comment = tracedatei
                browseable = yes
                read only = no
                create mode = 0750
                public = yes
 
 

Wenn Sie SAMBA das erste Mal einrichten, sollten Sie sich in der SuSE 7.0 /usr/share/doc/howto/en/html/smb-howto-1.html anschauen.

9.) Ist das erledigt, können Sie aus jedem Windows-Rechner in Ihrem Netz auf die Datei \\<NameDesLinuxRechners\tmp\trace.alz zugreifen. Wenn Sie die das Tracetool

TelesViewG besitzen (siehe Bild), können Sie im Menü Optionen. Den Pfad zu /tmp/trace.alz einstellen.
Bei mir sieht das (zusammen mit vmware) aus, wie nachstehend dargestellt.

Wenn Sie vmware nicht installiert haben, sieht der Pfad so aus: \\<NameDesLinuxRechners\tmp\trace.alz.
Sobald Sie TelesViewG mit diesen Einstellungen in einem Windows-Rechner in Ihrem Netz aufrufen startet das Tracetool mit der zuletzt im Linux aufgezeichneten Datei /tmp/trace.alz.

10.) Natürlich können Sie auch vmware  installieren, dazu sollte Ihr Rechner aber etwas leistungsfähiger sein Diese Zeilen schreibe ich in Microsoft Word unter vmware auf einem Rechner mit 800 MHz CPU, 30 Gbyte Platte und 128 Mbyte RAM Hauptspeicher. Das oben dargestellte Fenster TelesViewG habe ich im Windows98 Fenster auf meinem LINUX-Rechner aufgerufen. Der Fensterinhalt zeigt den Inhalt meines letzten Traces.
 

11.) Nun sind folgende Scenarien denkbar :

11.1 Wenn Sie mit vmware arbeiten, starten Sie den Tracevorgang mit Stai in einer Linux-Konsole und in der gleichen Konsole darauf Atrace. Sie sehen jetzt live (Teilkodiert) was sich auf dem D-Kanal abspielt. Diese Monitoring können Sie nun stundenlag durchführen. Sie besitzen damit (mit /tmp/isdnctrl0) ein genaues Protokoll aller D-Kanal-Aktivitäten über einen längeren Zeitraum. Auf /tmp/isdnctrl0 lässt sich allerdings mit TelecViewG nicht zugreifen, da das Unixformat nicht interpretiert wird. Soll das gesamte /tmp/isdnctrl0 analysiert werden, kopiert man sich (über "Netzwerkumgebung") diese File auf den Desktop und konvertiert es im DOS-Fenster mit dem Kommando unix2dos

                                                C:\WINDOWS\Desktop>unix2dos isdnct~1 isdnctrl.alz

Das File isdnctrl.alz läßt sich mit TelesViewG übersetzen und mit den eingebauten Suchfunktionen analysieren.
Eine Traceepisode, d.h. ein bestimmtes Verhalten (oder Fehlverhalten) einer ISDN-Schaltung untersucht man besser indem man in einer zweiten Linux-Konsole Gtrace startet, dh das File trace.alz erzeugt. In der gleichen Konsole kann man dann das Kommando Trace ausführen und so die Rahmen des Rohtraces beobachten, die in trace.alz gespeichert werden. Mit TelesViewG kann man nun (über das Netzwerk) jederzeit /tmp/trace.alz übersetzen und analysieren.
Es empfiehlt sich jedoch mit dem Kommando Kt die Generierung von trace.alz abzubrechen, damit man nur die interesierenden Elemente der TraceEpisode konserviert.

11.2 Sie sind Lehrer und demonstrieren bestimmte TraceEpisoden von Ihrem Arbeitsplatz aus, ggf. mit einem Beamer gekoppelt an der Tafel.
Dann kann auf die Datei /tmp/trace.alz  natürlich auch aus dem Netz einer Lehrklasse heraus zugegriffen werden.
Selbstverständlich muß dann von den Schülerarbeitsplätzen  (WindowsRechner) auf denen das TraceTool läuft auch der Trace im Linuxrechner gestartet werden können. Das geschieht  (solange bis ein geeigneter Client zur Verfügung steht) unter Verwendung des TELNET-Clienten, den man sich als Verknüpfung aus dem Verzeichnis c:\windows auf den Desktop holt. Man öffnet TELNET, gibt den Namen des Linuxrechners an und loggt sich als gast ein, (der Nutzer den Sie ohne Passwort eingerichtet haben). Durch Auswahl der Zugriffsrechte wird nun vermieden, dass die Schüler Gtrace oder Kt aufrufen können. Nurdas Kommando Trace gestattet den Schülern in Ihrem Telnetfenster die TraceEpisode zu verfolgen. Natürlich kann trace.alz auf jedem Arbeitsplatz mit TelesViewG übersetzt werden.
 
 

11.3 Sie arbeiten ohne vmware und benutzten den Linuxrechner (sogar ohne KDE) nur zum Fangen der D-Kanal-Rahmen.
Wenn Sie von Ihrem PC mit Telnet im Linux eingeloggt sind, nehmen Sie sich die Rechte des Superusers, durch Eingabe von su am Prompt . Danach werden Sie aufgefordert das SuperuserPasswort einzugeben. Ist das erfolgt können Sie die oben beschriebenen Kommandos von Ihren Telnet Fenster aus eingeben. Auch den livetrace, der mit atrace gestartet wird (beschrieben in Pkt 5) können Sie sich (ggf. in einem separaten Telnetfenster) auf die Windowsoberfläche holen. Sodann führen Sie alle Operationen aus wie in 11.1 und 11.2 beschrieben
 

Nachstehend ist eine Powerpoint Folie aus der

 
 
 

der CBT-CD "Der ISDN-D-Kanal transparent" dargestellt, aus der Sie direkt auf /tmp/trace.alz zugreifen können. Die Demo-CD dieser CBT-CD enthält  eine Demoversion von TelesViewG, die alle Q.931 Nachrichten und Informationselemente außer Facility übersetzt.
Die Demo-CD erhalten Sie für 10,- DM bei:

                                       Elektronik-Praktiker-Verlagsgesellschaft mbH
                                                Postfach 1163 - 37107 Duderstadt