www.voip-asterisk.info |
||||
![]() |
![]() |
|||
ArchitekturAsterisk (www.asterisk.org) ist eine freie Software nach der GNU GPL Licence, die alle Funktionalitäten einer herkömmlichen Telefonanlage im Rahmen von Voice-over-IP (VoIP) abdecken kann und zusätzliche Funktionalität bietet. Asterisk unterstützt VoIP mit unterschiedlichen Protokollen (u.a. SIP, H.323, IAX2 von Asterisk, MGCP, UNIStim von Nortel Networks sowie das SCCP von Cisco Systems) und kann mittels Hardware mit weiteren Anschlüssen wie POTS (analoger Telefonanschluss), ISDN-Basisanschluss (BRI) oder ISDN-Primärmultiplexanschluss (PRI, E1 oder T1) verbunden werden. Ursprünglich wurde die Software von Marc Spencer (Digium) entwickelt. Viele Erweiterungen können heute allerdings der Community zugeschrieben werden. Neben der freien GPL-Lizenz hat Digium auch eine proprietäre Lizenz herausgebracht, die nichtöffentliche Bestandteile beinhaltet.
Die Architektur der Asterisk-Lösung ist relativ einfach gehalten, wobei Asterisk als eine Art Übersetzer von Paket- bzw. Hardware-basierten Technologien zu Telefonapplikationen wie Call Bridging, Conferencing etc. zu verstehen ist. Bei einem Start von Asterisk wird als erster Schritt der Dynamic Module Loader geladen und initialisiert. Als Module, mit denen Asterisk ohne größere Eingriffe erweitert werden kann, stehen u.a. Unterstützungen für Dateiformate und Codecs zur Verfügung. Anschließend ist Asterisk startbereit und Anrufe können von der Switching Core über die Schnittstellen (Hardware oder VoIP) ange-nommen und in der Konfigurationsdatei "extensions.conf" bearbeitet werden. Falls Anrufe angenommen werden, werden diese an den Application Launcher weitergeleitet, der die angeschlossenen IP-Telefone ansteuert, in dem er z.B. die Ringing-Datenpakete verschickt oder Textnachrichten aufzeichnet (VoiceMail-Funktion). Der Scheduler und der I/O Manager übernehmen dabei die Verwaltung der Applikationen und der Channels (Kanäle). Als letztes Element ist der Codec Translator zu nennen, der die verschiedenen Codecs zu einem einheitlichen Standard (z.B. G711), der intern von allen Applikationen und Dateiformaten verstanden werden kann, übersetzt. Die folgenden Funktionen stellen einen Auszug der Funktionsmöglichkeiten von Asterisk dar:
Ein Anruf über einen Asterisk-Server besteht aus einer eingehenden und einer ausgehenden Verbindung. Jeder Anruf, auch ein interner Anruf, kommt somit über einen sog. Channel herein, der ein Signalisierungsprotokoll wie SIP, IAX2, SCCP usw. unterstützt. Bei Asterisk werden Channels über Treiber (sog. Channel-Treiber) realisiert. Jeder Channel-Treiber, also somit jedes Protokoll, unterstützt seinen eigenen Channel oder seine eigene protokollabhängige Gesprächsstruktur. Dies beinhaltet Art und Weise des Verbindungsauf- und -abbaus sowie die Aufrechterhaltung der Verbindung. Ein Channel ist somit eine abstrakte Bezeichnung für den Weg eines Gesprächs über einen Asterisk-Server, der über entsprechende Treiber bedient wird. Die zentrale Steuereinheit von Asterisk ist der Rufnummernplan. Dieser entscheidet u.a. wohin die Anrufer geleitet werden oder was passiert, wenn ein Teilnehmer ein Gespräch annimmt. Die Entwicklung eines Rufnummernplans ist nicht trivial und bildet die Telefonprozesse eines Unternehmens ab. Das heißt, dass jeder Rufnummernplan - je nach Anforderungen - unterschiedlich aussieht und jeweils bei einem Projekt neu erstellt werden muss. Dabei lassen sich hier auch Funktionen umsetzen, die normalerweise von Asterisk gar nicht angeboten werden. Hier steckt letztendlich die Intelligenz der Asterisk-Anlage und damit auch mit der größte Dienstleistungsaufwand bei der Umsetzung einer solchen Lösung. Konfigurationsdateien unter Asterisk sind, wie für Linux-Betriebssysteme typisch, flache ASCII-Klartextdateien. Sie steuern das Verhalten von Asterisk. Beispiele werden bei den Asterisk-Distributionen bereitgestellt. Die meisten Konfigurationsdateien befinden sich unter /etc/asterisk und müssen auf die Bedürfnisse des Benutzers angepasst werden. Konfigurationsdateien können in folgende Gruppen eingeteilt werden:
Peer, User und Friend sind Profile. Auch wenn dies ein Konzept für das IAX-Protokoll ist, wird es bei Asterisk in der aktuellen Version des SIP-Channels für das SIP-Protokoll verwendet. Hierbei wird über den Parameter „type" in der Konfigurationsdatei angegeben, in welcher Richtung Verbindungen aufgebaut werden dürfen. In der Konfigurationsdatei iax.conf bzw. sip.conf gibt dieser Parameter folgendes an:
Die verwendeten Hauptprotokolle von Asterisk sind RTP, SIP und IAX2. H.323 spielt heute in aktuellen Installationen nur noch eine untergeordnete Rolle. Durch die Vielzahl der unterstützten Protokolle und Funktionen eignet sich Asterisk gleichermaßen für Gateways zwischen verschiedenen Netzen, als Konferenzserver sowie für Sprachmenüs und automatisierte Steuerung durch einen Anrufer. Dementsprechend stellt Asterisk keine reine VoIP-Lösung dar, sondern kann bereits als vollständiges Unified Communication System (UMS) angesehen werden. Besonders der modulare Aufbau kommt dabei der Flexibilität von Asterisk sehr zugute. So kann durch die dokumentierten Schnittstellen sogar eine Anpassung der UMS-Funktionen auf Fremdsysteme erfolgen, falls beispielsweise bereits eine VoIP-Anlage eines anderen Herstellers im Einsatz ist.
Um größere Umgebungen abbilden zu können, lässt sich Asterisk auch um eine externe SIP-Routing-Instanz erweitern. So kann z.B. über Kamailio (www.kamailio.org) das SIP-Routing ausgegliedert werden, um auch größere Telefonnetze (> 1.000 Teilnehmer) abbilden zu können. Kamailio ist eine ebenfalls freie, unter den Bedingungen der GNU General Public License (GPL) verbreitete, SIP-basierte Serveranwendung, die sehr Anpassungsfähig ist. Sie unterstützt alle SIP-Funktionen nach dem Standard RFC-3261. Ziel von Kamailio war es, eine skalierbare SIP-Routing-Instanz zu entwickeln, die verschiedene Funktionen ausüben kann: Registrar Server, Location Server, Proxy Server, SIP Application Server und Redirect Server. Um eine hohe Performance zu erreichen wurde der Programmcode schlank gehalten und modular aufgebaut. Die Hauptbereiche unterteilen sich in Kern-, Bibliotheks- und Modul-Schnittstellen. Extensions können ohne Änderungen am Kamailio-Kern hinzugefügt werden. Für die SIP-Routing-Funktionalität sind u.a. SIP-Proxy-Verarbeitung, NAT Traversal Unterstützung und für SIP bzw. RTP Load Balancing, Least Cost Routing und Routing Failover relevant. Das Accounting kann Event- oder Call-basiert erfolgen. Eine Speicherung findet auf Datenbankebene mittels RADIUS oder Diameter statt. Die Dateninhalte für das Accounting sind frei konfigurierbar. |
||||