Early Media oder "183 Session Progress"

Mit OCS 2007R2 ist die Funktion Early Media eingeführt worden. Sie ist essentiell, damit bei einem VoIP-Gespräch nicht die ersten Sekunden "verloren" gehen. Die beiden Endpunkte sprechen zwar per SIP über den SIP-Server miteinander aber die Audio-Verbindung wird losgelöst davon aufgebaut. ICE, STUN, TURN sind hier die relevanten Begriffe. per SIP tauschen die beiden Partner ihre möglichen "Endpunkte" (Candidates) aus und versuchen sich dann zu erreichen.

Early-Media wird bei einer Verbindung über eine Response-Groups nicht eingesetzt, da hier der RGS-Dienst ansonsten zu jedem Agenten parallel EarlyMedia starten müsste und bei der Zuweisung eines Calls dann der RGS-Dienst als "Relay" agieren müsste. Bei einem "Blind Transfer" kann die Mediaaushandlung erst erfolgen, wenn der Call übertragen wird.

Early-Mediat ist eine Funktion, die nicht den Lync-Frontend Server betrifft, sondern die beiden Endpunkte. Das können also sein:

  • Lync <-> Lync
    Bei einer internen Kommunikation versuchen natürlich
  • Lync <-> Mediation Server
  • Lync <-> Gateway
  • Lync <-> AV MCU

Zwischen einem externen Lync Client und dem Edge Server gibt es kein richtiges "Early Media", da der Edge ja nur ein Relay oder Proxy für die A/V-Daten ist. Es handeln also weiterhin die beiden Endpunkte miteinander die A/V-Verbindung aus und bedienen sich dabei natürlich auch dem Edge als Relay. Alle OCS2007R2 und neuere Module unterstützen Early Media und seit Lync 2010 CU ist dies sogar wichtig, damit Lync das Gateway als "alive" ansieht

Kein Early Media zu "Check Voice"

Wenn Sie auf dem Lync Client die "Check" Funktion verwenden, dann können Sie sehr einfach ermitteln, wie sich das Problem darstellt

Diese Verbindung sieht im SIP-Logger wie folgt aus:

Interessant sind hier folgende Pakete.

  • INVITE
    Dieses Paket startet den Anruf und sendet gleich die "Candidates" mit (Screencapture gekürzt)
  • 200 OK
    Dieses Paket ist dann die Bestätigung, dass die Gegenseite schon angenommen hat (Paket gekürzt)

Sie können aber sehen, dass erst mit dem "200 OK" der Anrufer auch eine Liste der Kandidaten bekommt. Erst dann können die beiden Partner aber anfangen, ihre Sprachverbindungen aufzubauen. Insofern "hören" sie bei dem Test in der Regel die ersten Wort nicht mehr

Early Media

Diese "Stille am Anfang" wird mit EarlyMedia verhindert. Besser ist noch, dass ein Client quasi gar nicht erst "klingelt", wenn es keine funktionierende Audio-Verbindung gibt. Dazu sind aber ein paar SIP-Pakete mehr erforderlich. Hier ein kleiner SIP-Auszug einer Verbindung:

Sie sehen hier schon deutlich mehr Pakete:

  • INVITE
    Hier ist wieder der ganz normale Invite des Clients an den SIP-Server. Auch hier sendet mein Client eine Liste der Kandidaten mit. Dieses Paket entspricht dem INVITE ohne Early Media. Der Client weiß ja noch nichts von Early Media
  • 183 Session Progress
    Dieses Paket ist nun aber neu. Die angerufene Gegenstelle antwortet mir und liefert in diesem Paket schon seine Kandidaten mit. Beachten Sie, dass diese Paket 2,5 Sekunden vor dem "180 RINGING" kommt. Der Client kann also schon anfangen einen Audiokanal zum Ziel aufzubauen und von der Gegenstelle anzunehmen. Genau genommen verbietet dieses Paket eine lokale Erzeugung eines Signalisierungstons, da der ja gleich von der Gegenstelle (oder dem Gateway) gesendet wird.

Wichtig:
Seit Lync 2010 CU4 muss dieses 183 vom Gateway umgehend gesendet werden. Ansonsten geht Lync davon aus, dass das Gateway nicht funktioniert und sucht einen anderen Weg. Siehe auch
Outgoing calls after Lync CU4 Update http://ucblog.deutinger.de/?p=211
Der Anruf kann nicht durchgeführt werden… http://blog.mrinas.de/2012/01/17/der-anruf-kann-nicht-durchgefhrt-werden/

  • PRACK
    Das Paket muss natürlich durch einen PRACK vom Anrufer bestätigt werden.
  • 180 RINGING
    Erst wenn die andere Seite nun Daten vom Anrufe empfängt, kommt das "RINGING", welches mir anzeigt, dass die andere Seite Daten empfängt
  • INVITE (replace)
    Wenn die Endpunkte sich schon auf einen Kanal für Audio geeinigt haben, dann sendet z.B. der Anrufer einen neuen INVITE, der den ersten INVITE ersetzt. Hier sind aber nur noch die zwei Kandidaten enthalten, die verwendet werden sollen:
  • OK bei Verbindungsaufbau
    Wenn die Gegenseite dann abhebt, dann kommt ein OK als Quittung zurück, welches auch nur die bereits ausgehandelten Kandidaten der anderen Seite enthält.

Die Audioverbindung "steht" also schon, noch ehe der Teilnehmer quasi abnimmt. Zumindest wenn der Anwender nicht "sofort" abnimmt und den SIP-Stacks und Mediastacks etwas Zeit lässt. ICA kann manchmal schon einige Sekunden benötigen, bis alle Kandidaten untereinander ausprobiert wurden und letztlich die günstigste Möglichkeit ausgehandelt wird.

Early Media und Netmon

Wenn Sie die nicht per TLS verschlüsseln, können Sie auch mit NetMon mit verfolgen, wie so eine Verbindung etabliert wird. Hier ein Anruf aus dem Telefonnetz über einen Audiocodes auf die Zentrale von Net at Work:

In der ersten Zeile kommt der INVITE und noch ehe in Zeile 5125 der "183 Session Progress" kommt, hat das Gateway schon eine Audioverbindung zum Lync Mediation Server aufgebaut und vom Lync auch ein RTCP Feedback bekommen.

In dem Netmon sieht man nun nicht mehr die Rufannahme. Es ist ja noch nicht klar, welche Endstelle letztlich die Verbindung annimmt.

Lync Signaltöne beim VoIP-Verbindungsaufbau

An ein "neuartiges" Vorhalten beim Verbindungsaufbau werden Sie Anwender auch gewöhnen müssen. Da bei VoIP die Signalisierung per SIP erfolgt, aber die Nutzdaten über eine separate Verbindung aufgebaut wird, kann das Wähl und Freizeichen ab und an ändern und erst wenn die Gegenseite abhebt, wird auch die angeforderte Datenverbindung aufgebaut. Und das kann auch mal ein bisschen dauern oder an Firewalls komplett scheitern. Es ist also durchaus möglich, dass bei einem zu frühen Gesprächsstart beim gegenüber die Sprache noch gar nicht ankommt. Wer z B. einen Anruf tätigt, kann manchmal drei verschiedene Töne hören.

  1. Freizeichen beim Client u.a.
    Bei einem klassischen Telefon erwarten die Menschen, dass beim Abheben des Hörers auch ein "Freizeichen" (Langer Ton) zu hören ist. Früher war das dass Zeichen, dass die Vermittlungsstelle gemerkt hat, dass Sie abgehoben haben und ein Hebdrehwähler zugeordnet worden ist.
    Bei VoIP gibt es sowas nicht aber viele Telefone simulieren ein "Freizeichen", ohne überhaupt ein SIP-Paket versendet zu haben. Wenn ein VoIP-Telefon also angemeldet ist und sie abheben, dann gaukelt ihnen das Telefon ein Freizeichen vor.
  2. Lync Client "ping ping ping"
    Wenn Lync einen Ruf vorbereitet, dann hören sie das typische "ping ping ping", welches anzeigt, dass der Clients z.B.: seine lokalen Ports öffnet und Kandidaten vom Edge Server mit eventuell erforderliche Authentifizierung anfordert. Das dauert in der Regel sehr kurz.
  3. Zwischenfreizeichen
    Wenn dann z.B. der Mediation Server die Verbindung zur nächten Station (dem Gateway) aufgebaut hat, erhält er von dort ein "Trying". Dann hören Sie vielleicht ein amerikanisches Freizeichen. Dieser Ton wird vom Lync Client erzeugt, nachdem er ein "RINGING" erhalten hat. Das heißt aber noch nicht, dass die Verbindung wirklich steht. Mit EarlyMedia kann dies aber auch schon ein per VoIP übertragenes Freizeichen sein, welches das Gateway generiert.
  4. Zielfreizeichen
    Das Gateway baut über die TDM-Strecke eine Verbindung zur angerufenen Nummer her. Wenn dies z.B. ein Mobiltelefon ist, dann hört der Anwender am Ende das "Freizeichen" des Mobilfunkanbieters.
  5. Sprache
    Irgendwann hebt dann die Gegenseite hoffentlich ab. Die Audioverbindung wird dann eventuell auf der Remote Site, also von ihrem Gateway per ISDN oder beim angerufenen Teilnehmer noch eine Verbindung erstellt.

All diese Freizeichen sind natürlich nur durch "Software" abgebildet. Bislang ist noch keine "Sprachverbindung" über einen Codec hergestellt worden. Das ist übrigens im ISDN-Netz auch so. Der B-Kanal zur Sprache wird erst aufgebaut, wenn die Verbindung von der Gegenseite angenommen wurde. Auf bei VoIP wird das Annehmen der Gegenstelle über die jeweilige Protokollverbindung gemeldet und die Sprachverbindung aufgebaut.

Das ganze können Sie auch gut im SIP-Ablaufdiagramm sehen:

Die SIP-Pakete müssen nicht immer genauso erscheinen. Es kann durchaus sein, dass abhängig von Client, Media Bypass etc. zusätzliche oder andere Meldungen erscheinen können. für die Signaltöne ist aber der 180 RINGING bzw. ein 183 Session Progress, was ich auf Freizeichen mit VoIP 180/183 näher beschrieben habe. In aller Kürze:

  • 180 RINGING
    Beschreibt, dass das Zielsystem sicher ist, dass es klingelt und dem Anrufer dies mitgeteilt wird. Meist ist das ein Gateway, welches z.B. ein echtes Telefon klingeln lässt oder das VoIP-Telefon selbst sendet die Meldung.
  • 183 Session progress
    Beschreibt, dass der INVITE weiter gegeben wurde, aber das absendende System nicht sicher sein kann, dass es dort schon klingelt. Oft sehen Sie dies bei Lync aber auch mit Session Border controller

Wichtig ist dann noch, ob diese Pakete einen "SDP" enthalten. Wenn dies der Fall ist, dann kommt Early Media zum Einsatz und der Client spielt selbst keine Rufzeichen mehr ab. Es liegt dann an der anderen Seite bzw. der nächsten Station die Signaltöne zu generieren und per RTP zu senden.

Early Media und Gateway

Alle OCS2007R2 und neuere Module unterstützen Early Media. Da aber mittlerweile mit MediaBypass auch ein Weg offen steht, am Mediation Server vorbei zu kommunizieren, müssen auch die Gateways, SBCs oder SIP-Trunk-Provider die Funktion unterstützen. Und das tun diese in der Regel auch aber oft erst nach einer entsprechenden Konfiguration. Denn nicht alle SIP-Systeme kommen mit dem "183 Session Progress" zurecht. Hier ein paar Hinweise:

Leider habe ich nicht jedes Gateway in jeder Version vorliegen, so dass Sie gegebenenfalls ihren Anbieter fragen müssen.

Weitere Links