LINUXMAKER, OpenSource, Tutorials

Begriffsdefinitionen, grundsätzliches Funktionsprinzip

Bei Asterisk kursieren die Begriffe User, Peer, Friends, Address-of-Record (AOR) und Endpoint.

Die folgende Tabelle zeigt die jeweiligen Typ-Funktionen bei der alten sip.conf:

Asterisk <= User
Asterisk => Peer
Asterisk <=> Friend

Ein Peer kann also nur angerufen werden, ein User dagegen kann nur anrufen und ein Friend kann sowohl anrufen als auch angerufen werden. Diese Unterscheidungen betreffen noch die alte sip.conf. Inzwischen verwendet Asterisk den neuen SIP-Stack PJSIP anstelle des alten „chan_sip“. Man hat zwar noch die Möglichkeit den alten zu installieren, allerdings ist PJSIP wesentlich stabiler, so dass hier auf die sip.conf nicht mehr eingegangen wird.

Mit pjsip.conf die Endpoints

Statt der eben erwähnten Typen kommt bei PJSIP mittlerweile das Konzept der Endpoints zum Tragen. Damit ist ein Endpunkt in einer SIP-Kommunikation gemeint. Somit kommunizieren normalerweise zwei Endpoints per SIP miteinander. Und einem Endpoint können durchaus mehrere Nutzer zugeordnet sein. Sofern der Endpoint ein Telefon ist, dann können auf diesem mehrere Benutzer angemeldet sein. Die Details sind dann Sache des Telefons, nicht aber von Asterisk. Welche Nutzer einem Endpoint zugeordnet sind, das wird in PJSIP mit einem Address-of-Record (AOR) ausgedrückt.

Wenn Asterisk ein Telefonat, oder anders ausgedrückt ein entsprechendes SIP-Paket, in Empfang nimmt, dann wird der entsprechende Benutzer gesucht, den dieses Paket erreichen soll. Deshalb ist es interessant zu wissen, welchem Endpoint dieser Nutzer zugeordnet ist, und somit die Kommunikation mit dem richtigen Endpoint erfolgen kann. Das SIP-Paket liefert dazu die Identifikation des Empfängers – sinnvollerweise der Name. Im nächsten Schritt wird nach einem type=aor-Abschnitt mit diesem Namen und dann nach einem Endpoint in den Konfigurationsdateien gesucht, dem dieser AOR zugeordnet wird.
Alternativ kann die Zuordnung auch über die IP-Adresse gehen, indem man explizit bestimmte IP-Adressen bestimmten Endpoints zuordnet mittels eines type=identify-Abschnitts. Dann wird natürlich eine Zusatzinformation zum Nutzer, der dem Endpoint zugeordnet ist, benötigt.
Sobald sich ein Nutzer über einen Endpoint (OpenStage, Snom, Zoiper) am Asterisk registriert wird die IP-Adresse des Endpoint Asterisk ebenfalls zur Verfügung gestellt. Erst jetzt weiß Asterisk die IP-Adresse des Senders des SIP-Paketes, wie auch den Namen des Nutzers aus dem Paketinhalt und schlussendlich die Zuordnung zu einem Endpoint über den AOR-Eintrag. So wird gewährleistet, dass ein Nutzer seinen SIP-Account von einem Telefon zum anderen mitnehmen kann und sich im Netzwerk überall neu anmelden kann.

Über die IP-Adresse lässt sich ebenfalls die Zuordnung vornehmen. So werden explizit bestimmte IP-Adressen jeweiligen Endpoints über den type=identify-Abschnitt zugeordnet. Notwendig ist dann eine Zusatzinformation zu dem Nutzer, der den entsprechenden Endpoint in Benutzung hat.

Daneben gibt es noch die Möglichkeit, einen Nutzer ("Contact") fest einem Endpoint zuzuordnen. Dies kann man verwenden, wenn man einen Nutzer anrufen möchte und auch weiß, auf welchem Endpoint der Nutzer zu finden ist, sich dieser Nutzer aber nicht bei Asterisk registriert hat. Das wird für ausgehende Gespräche über den Telekom-Anschluss benötigt, denn die Telekom erwartet zwar von unserem Asterisk eine Registrierung, sendet unserem Asterisk selbst aber keine Registrierung, so dass Asterisk grundsätzlich nicht wissen kann, welchem Endpoint die eigene Festnetznummer zugeordnet bei der Telekom ist.

Damit Asterisk die Endpoints kennt, für die es zuständig ist respektive wo die nächste Vermittlungstelle (Telekom) ist, braucht es die Konfigurationsdatei pjsip.conf, die sich ihrerseits in mehrere Abschnitte aufgliedert. Die Benennung kann sehr individuell und funktional erfolgen, wichtig ist nur, dass sie einmalig sind. Denn andere Abschnitte greifen in ihrer Konfiguration wiederum auf sie zurück, so dass Einmaligkeit Voraussetzung ist.
Wichtig zu wissen ist noch, dass jeder Abschnitt einem Typ entspricht. Dabei können die Typen „
global, transport, registration, out, endpoint, aor, identify, acl“ auftreten.