Telekommunikation:
Projekt: Least-Cost-Router im Selbstbau
Wer über den richtigen Provider zur richtigen Zeit telefoniert, der kann
bekanntlich eine ganze Menge Geld sparen. Doch wer kennt im aktuellen Tarifchaos
schon immer die richtige Netznummer? Ein selbstgebauter Least-Cost-Router hilft Ihnen
dabei.
Wer sparen will, muss leiden! Das gilt zumindest fürs Telefonieren in Deutschland.
Denn nur wenn man tatsächlich immer zum richtigen Zeitpunkt den günstigsten Netzbetreiber
anwählt, kann man wirklich so richtig sparen. Doch das fällt schwer: In Deutschland
gibt es zurzeit etwa zwei Dutzend wichtige Provider, die über 13 Zeitzonen verteilt
mindestens 7 unterschiedliche Distanzkategorien anbieten. Das macht alles in allem
über 2000 Einzeltarife, die sich wohl kaum jemand neben das Telefon klebt, geschweige
denn im Kopf behält (Zum Vergleich: Bei unserem Nachbarn Frankreich gibt es zwar
mindestens genauso viele Provider, erfreulicherweise aber nur 2 Zeitzonen und 4
Distanzen).
Mögliche
Auswege aus diesem Dilemma bietet bekanntlich die Preselection eines Netzanbieter
bzw. die Anschaffung eines Least-Cost-Router. Bei ersterem wird man grundsätzlich
über einen hoffentlich günstigsten Provider verbunden, wodurch allerdings die Call-by-Call-Flexibilität
und somit die Sparkurve leidet. Und bei einem Least-Cost-Router ist man auf die
Aktualität, Fairness sowie die Preisgestaltung des zugehörigen Update-Dienstes
angewiesen. Denn nur wenn die Datenbank des Geräts auch immer auf dem neuesten
Stand und vor allem komplett ist, kann man einen echten Spareffekt erwarten - der
hoffentlich nicht von den Kosten des Update-Abos wieder aufgefressen wird.
Do it yourself!
Dennoch ist die Lösung über einen Least-Cost-Router noch am interessantesten. Doch
wie kann man dessen Nachteile am besten aufheben? Indem man sich ein solches "Gerät"
einfach selbst baut.
Dies ist durchaus keine absurde Idee, zumal man dazu nicht einmal den Lötkolben
schwingen muss: Alles was man dazu als Grundvoraussetzung benötigt, ist eine beliebige
Telefonanlage mit zumindest zwei analogen Anschlüssen. Die Anlage muss darüber
hinaus Gespräche über die R-Taste (Hook-Flash) makeln können, was bei den meisten
Geräten aber ohnehin der Fall ist. Ob Ihre Telefonanlage geeignet ist, testen Sie
wie folgt:
- 1. Wählen Sie mit Telefon A den Apparat B als Interngespräch an.
- 2. Nehmen Sie Telefon B ab und drücken Sie die R-Taste (Hook-Flash).
- 3. Holen Sie anschließend an Apparat B die Amtsleitung - normalerweise über
eine "0".
- 4. Sobald das Freizeichen zu hören ist, legen Sie auf.
- 5. Ist das Freizeichen der Amtsleitung jetzt am Telefon A zu hören, so war
der Test erfolgreich.
Den Least-Cost-Router selbst mimt ein ausrangierter PC mit zwei Modems. Der Rechner
muss keinerlei besondere Performance aufweisen, eine Maschine der AT- oder gar
XT-Klasse genügt völlig. Als Speicherausbau genügen 512 KByte und ein Diskettenlaufwerk,
dazu zwei serielle Ports für die Modems. Eine Festplatte ist unnötig und auch eine
(besondere) Grafikkarte ist nicht erforderlich. Weder Monitor, noch Tastatur oder
gar Maus werden für den späteren Einsatz gebraucht. Wichtig hingegen ist eine funktionierende
interne Uhr, die aber nicht unbedingt Jahr-2000-fähig sein muss.
Zumindest eines der beiden benötigten Modems muss voice-fähig sein, damit es
die Multifrequenztöne (DTMF) einer Anwahl interpretieren kann - eine maximal Übertragungsgeschwindigkeit
von 9600 Baud dabei völlig ausreichend. Das zweite Modem kann dagegen aus den Hardware-Mottenkiste
der 80er stammen. Ein 2400-Baud-sonst-kann-ich-nichts reicht hierfür völlig aus.
Beide Modems werden parallel an einen freien analogen Anschluss der Telefonanlage
angeschlossen. Bei den aktuellen Preisen für gebrauchte Hardware aus dem letzten
Jahrtausend dürften dafür kaum mehr als 100 DM nötig sein.
Das Prinzip
Der oben gezeigte Tauglichkeitstest für die Telefonanlage zeigt schon recht
deutlich das Prinzip des Selbstbau-Routers - das Gerät ist einfach eine smarte
Gesprächsvermittlung auf Basis Ihrer Anlage:
- 1. Über eines der an die Anlage angeschlossenen (DTMF-fähigen) Telefone wählt
man den Anschluss mit den beiden Modems an.
- 2. Von der Least-Cost-Router-Software (dazu gleich mehr) gesteuert nimmt das
voice-fähige Modem ab. Es gibt einen kurzen Quittungston aus und schaltet die
DTMF-Erkennung ein.
- 3. Sie sind jetzt mit Ihrer "persönlichen Telefonvermittlung" verbunden. Nun
gibt man wie üblich die Rufnummer des gewünschten Gesprächspartners ein. Erhält
das Modem länger als 5 Sekunden lang keine weiteren DTMF-Töne, so wird die anzuwählende
Nummer als komplett angesehen.
- 4. Jetzt legt das erste Modem auf und etwa 500 ms später nimmt das zweite
Modem ab. Dies generiert einen Hook-Flash an der Telefonanlage, wodurch die Leitung
des Anrufers gehalten wird (Dieses simulierte Drücken der R-Taste kann leider
nicht vom ersten Modem allein ausgeführt werden: Da es bereits einen Anruf angenommen
hat, sperrt sich die Firmware gegen einen Hook-Flash, da dies ein Kommando für
abgehende Anrufe ist. Und die equivalente Sequenz "Auflegen-Abnehmen" nimmt mindestens
2 Sekunden in Anspruch, was für einen Hook-Flash viel zu lange ist - die Telefonanlage
würde die Leitung nicht halten. Daher auch die Notwendigkeit eines zweiten Modems).
- 5. Die Router-Software analysiert jetzt die übermittelte Rufnummer und wählt
abhängig von Wochentag, Tageszeit und Distanz den günstigsten Provider aus der
Datenbank.
- 6. Das zweite Modem generiert jetzt eine Amtsholung und wählt anschließend
die Netznummer des ermittelten Netzanbieters sowie die gewünschte Rufnummer.
- 7. Dann legt auch das zweite Modem wieder auf, woraufhin die Telefonanlage
das sich im Aufbau befindliche Gespräch an die gehaltene Leitung (also an Sie)
weitergibt.
Die Steuerungs-Software
Weil der Least-Cost-Router auch selbst kaum etwas kosten soll, muss aufgrund
der verwendeten Hardware auch die Software "zeitgemäß" sein: Da für das Gerät allein
ein Diskettenstart vorgesehen ist, kommen Windows und dergleichen als Betriebssystem
natürlich nicht in Frage. Da die Steuerungs-Software möglichst von jedermann erweiterbar
und wartbar sein soll, fällt zudem auch Linux aus. Bleibt also ein DOS-Qbasic-Gespann,
dass inklusive Logik problemlos auf eine 720-KByte-Diskette passt. Was will man
mehr?

Der Selbstbau-Least-Cost-Router wird einfach von einer Bootdiskette aus über
ein Qbasic-Programm gesteuert.
Die Boot-Diskette lässt sich entweder mit Windows 95/98 oder auch allein unter
DOS erstellen. Legen Sie die formatierte Diskette ein und übertragen Sie die für
den Start notwendigen Systemdateien io.sys und msdos.sys mit folgenden Befehl (Unter
Windows beispielsweise über Startmenü/Ausführen):
sys c: a:
Anschließend ist der Basic-Interpreter Qbasic auf die Floppy zu kopieren. Die Datei
qbasic.exe befindet sich normalerweise im DOS- bzw. Windows-Verzeichnis. Ist sie
dort nicht auszumachen, muss sie gegebenenfalls nachinstalliert werden. Beispielsweise
auf der Installations-CD von Windows 95 befindet sich die gesuchte Datei im Ordner
\others\oldmsdos. Sollte man auch dort nicht fündig werden, so kann man den Basic-Interpreter
auch von Microsoft über das Internet beziehen (Die Adresse steht am Ende des Artikels).
Jetzt fehlt auf der Diskette noch die Steuerungsroutine selbst. Sie verbirgt
sich in der Datei lcr.bas, die Sie über den Link am Ende des Artikels herunterladen.
Damit beim Booten der Least-Cost-Router-Diskette auch alle Module automatisch
gestartet werden, muss auf der Floppy noch eine kleines Startskript angelegt werden.
Öffnen Sie also einen beliebigen Editor und schreiben Sie folgendes Kommando:
qbasic /run lcr.bas
Speichern Sie diesen Text anschließend unter a:\autoexec.bat. Die Boot-Diskette
für den Least-Cost-Router ist damit fertiggestellt.
Aufbau der Hardware
Eigentlich ist durch die vorangegangenen Erläuterungen der Aufbau der Hardware
schon beschrieben. Lediglich auf die Anschlussreihenfolge der Schnittstellenkabel
zu den Modems ist zu achten: Die Steuerungs-Software geht davon aus, dass das voice-fähige
Gerät an com1: angeschlossen ist, das zweite, einfachere Modem entsprechend an
com2:.
Die Telefonanschlüsse der beiden Modems sind parallel an einen freien, analogen
Anschluss der Telefonanlage zu klemmen. Falls mehrere freie Anschlüsse zur Verfügung
stehen, sollte man den wählen, der eine möglichst sinnfällige Nummer hat. Eine
detaillierte Übersicht der Verschaltung zeigt die nachfolgende Skizze:

Die Hardware-Verkabelung der einzelnen Routerkomponeten ist recht einfach. Wichtig:
Das Voice-Modem gehört an com1. Schnittstellenkabel sind
grün, Telefonstrippen dagegen blau.
Die Steuerung der Modems
Wichtigster Bestandteil des Least-Cost-Routers ist die Fähigkeit des voice-fähigen
Modems, DTMF-Töne dekodieren zu können. Erst dadurch ist es der Software möglich,
die gewünschte Rufnummer zu erkennen. Für diesen Zweck gibt es zwar fertig vorkonfektionierte
Mikroschaltkreise wie beispielsweise den CM8888 von California Micro Devices. Nur
für deren Preis, und nicht zuletzt den notwendigen Mehraufwand beim Aufbau, bekommt
man auch ein gebrauchtes Modem, das man schließlich einfach nur an den PC zu stecken
braucht.
Um das Voice-Modem für die automatische Nummernannahme zu präparieren sendet
die Steuerungs-Software zu Beginn die Codes für Reset (&f), automatisches Abheben
(s0=1) sowie Eintritt in den Voice-Modus (#cls=8):
at&fs0=1#cls=8
Das Modem befindet sich danach bereits im Voice-Modus und antwortet daher auch
nicht mehr mit dem üblichen "OK", sondern liefert die beiden Codes [dle]h. Der
Code [dle] hat den Wert 16 und ist ein Signal dafür, dass das Modem nach diesem
Zeichen eine Voice-Mode-Zustandsaussage mach: "h" steht nämlich für "hung up",
zu deutsch "aufgelegt".
Kommt es nun zu einem Anruf über die betreffende Nebenstelle der Telefonanlage
so erzeugt das Modem zunächst die Meldung "ring", gefolgt von "vcon". Ersteres
deutet lediglich auf das Klingelzeichen hin und kann ignoriert werden. Die Meldung
"vcon" dagegen zeigt an, dass nun eine Voice-Mode-Verbindung besteht und entsprechende
Kommandos eingesetzt werden können. Die Steuerungs-Software beginnt daraufhin mit
der Annahme der Rufnummer.
Sobald eine der zwölf Wähltasten (0-9, * und #) vom Anrufer gedrückt wird, generiert
das Modem eine entsprechende Statusmeldung vom Format [dle][zeichen], wobei zeichen
für die genannten Wähltasten steht. Wird vom Anwender in dieser Phase das "Gespräch"
vorzeitig beendet, so liefert das Modem die Nachricht [dle]b. Das Zeichen "b" steht
dabei für "busy", da das Modem von der Anlage ein Besetztzeichen signalisiert bekommt.
Das Modem legt aber erst dann auf, wenn das LCR-Programm dies explizit über das
Kommando ath (Hang up, Modem verlässt Voice-Mode und antwortet mit "OK") verlangt.
Kommt es während der Rufnummerneingabe zu einer Pause von 5 Sekunden, so deutet
die Steuerungs-Software dies als Hinweis auf das Ende der Ziffernsequenz. Die erhaltene
Rufnummer wird daraufhin analysiert und auf Basis der aktuellen Uhrzeit, des Wochentages
und der Distanz die Netznummer des hierfür günstigsten Providers ermittelt. Das
Voice-Modem erhält daraufhin das Kommando zum Auflegen (ath). Etwa 500 Millisekunden
später erhält das zweite Modem den Befehl zum Öffnen der Leitung mittels atx0d;
(Dial, Modem antwortet mit "OK"). Wie bereits beschrieben, wird dadurch ein Drücken
der R-Taste (Hook-Flash) simuliert, wodurch die Leitung des Anwenders von der Telefonanlage
gehalten wird und das zweite Modem freie Bahn für den Zugriff aufs Amt erhält.
Bitte beachten Sie, dass das oben genannte Dial-Kommando mit einem Semikolon
abgeschlossen wurde. Dies ist sehr wichtig, da das Modem dadurch im AT-Kommando-Modus
bleibt und nicht versucht, wie eigentlich üblich, per Pfeifton eine Verbindung
aufzubauen. Da viele Telefonanlage an den Nebenstellen einen gepulsten Freiton
signalisieren, wurde dem Wählkommando auch der Zusatz x0 hinzugefügt. Diese Option
unterdrückt die Wähl- und Besetzttonerkennung des Modems, so dass das atypische
Nebenstellenfreizeichen nicht fälschlich mit einer Busy- oder No Dialtone-Fehlermeldung
quittiert wird.
Als nächstes wird ein weiteres Wählkommando abgesetzt, diesmal zur Amtsholung
(die erste 0) gefolgt von der Netznummer des anzuwählenden Providers (Beispielnummer
01234) und der eigentlichen Teilnehmernummer (hier 089-143120). Das "t" in diesem
Kommando veranlasst das Modem mittels DTMF zu wählen, anstatt mit dem veralteten
Pulswahlverfahren ("p"):
atdt0,01234089143120;
Das Komma nach der Null zur Amtsholung generiert eine Pause von 2 Sekunden. Währenddessen
hat die Telefonanlage Zeit, die betreffende Nebenstelle auch tatsächlich mit der
Amtsleitung zu verbinden, bevor die restliche Anwahlsequenz geschickt wird.
Wurden alle Ziffern gewählt, meldet das Modem "OK" (da das Kommando wieder mit
einem Semikolon abgeschlossen wurde). Die Steuerungs-Software schickt daraufhin
das Kommando zum Auflegen (ath), wodurch das sich gerade im Aufbau befindliche
Gespräch an die gehaltene Leitung weitergereicht wird. Der Least-Cost-Router hat
damit seine Arbeit getan, kehrt in die Warteschleife zurück und der Anwender hat
sein verbilligtes Telefongespräch.

Der Debug-Mitschnitt zeigt die einzelnen Stationen auf, die das Steuerungsprogramm
bei einer Nummernumsetzung durchläuft.
Fehlt noch das Betriebssystem ...
für den Least-Cost-Router. Hierfür kommt jede DOS-Variante in Frage, also auch
Windows 95/98. Wer Microsofts Qbasic-Interpreter noch nicht auf seinem System oder
zumindest auf den Installations-CDs hat,
findet hier bei Microsoft ein enstprechendes Paket.
|