ICEWarn Bedeutung
Auf der Seite ICE und Kandidaten habe ich etwas versucht die Aushandlung der RTP-Verbindungen zu beschreiben. Die Lync Endpunkte versuchen genau das und das klappt nicht immer. Der Client liefert dann meist eine relativ wenig aussagekräftige Fehlermeldung. Interessanter ist aber die Diagnosemeldung.
Damit die Auswertung des ICEWARN-Codes in der Tabelle funktioniert, müssen Sie für diese Seite JavaScript aktivieren. Ansonsten funktioniert die MSXFAQ auch ohne JavaScript.
Meldung im Trace
Wenn Sie auf dem Lync Client das Logging angeschaltet haben oder mit Snooper oder CLS auf dem Server die SIP-Pakete mitschneiden, dann findet sich bei einer fehlgeschlagenen Verbindung am Ende immer auch eine aussagekräftige Beschreibung. Suchen Sie einfach nach "ms-client-diagnostics" oder "ICEWarn". Die relevante Zeile ist in der Regel einfach zu finden.
Beispiel eines normalen Call Clear, d.h. Am Ende einer Verbindung mit einem BYE beendet und mein Client sendet ein 200 OK
06/05/2014|14:11:35.833 1384:11C0 INFO :: SIP/2.0 200
ms-client-diagnostics: 51007;reason="Callee media connectivity diagnosis info";
CalleeMediaDebug="audio:ICEWarn=0x0,
LocalSite=192.168.100.1:50034,LocalMR=192.168.100.1::58503,
RemoteSite=80.187.111.135:20726,RemoteMR=80.60.22.20:58091,
PortRange=50020:50039,LocalMRTCPPort=59100,RemoteMRTCPPort=58091,
LocalLocation=2,RemoteLocation=2,FederationType=0,
NetworkName=msxfaq.net,Interfaces=0x12,BaseInterface=0x2,BaseAddress=192.168.100.1:50020"
Hier dann ein vorzeitiger Abbruch einer Verbindung.
06/05/2014|14:12:02.766 1384:11C0 INFO :: BYE sip:frank@msxfaq.net;opaque=User:epid:mV1VibmVCl-rGn-asKt9hQAA;gruu SIP/2.0
ms-client-diagnostics: 51004; reason="Action initiated by User";
CalleeMediaDebug="audio:ICEWarn=0x40003a0, LocalSite=192.168.100.1:50034,LocalMR=192.168.100.1::58503,
RemoteSite=80.187.111.135:20726,RemoteMR=192.168.100.1::58091,
PortRange=50020:50039,LocalMRTCPPort=59100,RemoteMRTCPPort=58091,
LocalLocation=2,RemoteLocation=2,FederationType=0,
NetworkName=msxfaq.net,Interfaces=0x12,BaseInterface=0x2,BaseAddress=192.168.100.1:50020"
Damit stellt sich nun aber die Frage, welche Bedeutung die Nummer hinter dem ICEWarn hat. Aufschlussreiche ist die Tabelle 2 im Kapitel 9 aus "Lync Server 2010 Resource Kit"
Microsoft Lync Server 2010
Resource Kit
hhttp://www.microsoft.com/en-us/download/details.aspx?id=22644
Bei der Warnung handelt es sich nicht um einen individuellen Code, sondern eine Bitmaske. Nehmen wir das Beispiel von oben:
0x40003a0 = 100000000000000001110100000bin bit Bedeutung 5 = Local connectivity failed 7 = UDP TURN server connectivity failed. 8 = TCP NAT connectivity failed 9 = TCP TURN server connectivity failed. 26 = use candidate checks failed
Unter diesen Voraussetzungen kann der Client natürlich nicht wirklich eine Verbindung herstellen.
ICEWARN Decoder
Damit Sie nicht selbst ihre ICEWARN-Codes umrechnen müssen, können Sie den Fehlercode hier eingeben und bei aktiviertem JavaScript direkt die entsprechenden Zeilen der Tabelle ein und ausblenden.
Die Ansicht der folgenden Tabelle verändert sich, wenn Sie einen ICEWARN Code eingegeben und "Auswerten" gedrückt haben.
ICEWarn-Tabelle
In der folgenden Tabelle habe ich alle Bits mit deren Bedeutung aufgeführt und auch, ob der Fehler schwerwiegend ist, nur eine Zusatzinformation ist oder sogar erwartet wurde. Die Bedeutung von "Klassifizierung" ist:
- Fehler
Dieses Bit kennzeichnet einen der Gründe, warum die Verbindung nicht zustande gekommen ist. Hier lohnt es sich zu prüfen, wo die Ursache sein könnte. - Warnung
Der ICE Handshake sagt ihnen damit, dass diese Verbindung nicht möglich ist aber es alternativen gibt. Den Fehler sehen sie oft bei Clients im internen LAN, bei denen NAT auf die externe Edge-IP nicht möglich ist und daher die Ermittlung von Kandidaten für STUN fehlt schlägt. Das ist kein Problem, wenn beide Clients intern Sind oder TURN funktioniert. - Normal
Diese Bit sagt ihnen, dass etwas nicht geht es aber die Verbindung deswegen sicher nicht verhindert wurde.
Bit | ICE Flag | Englische Beschreibung | Klassifizierung | Bedeutung und Lösungsmöglichkeiten |
---|---|---|---|---|
X |
0x0 |
There were no failures or the ICE protocol was not used. |
Erwartet |
Kein Fehler. |
0 |
0x1 |
TURN server is unreachable. |
Fehler |
Prüfen Sie, dass der TURN Server auf dem Edge läuft und die Port (443/3478) erreichbar sind. IP-Leitwege, Firewall, Namensauflösung sind Ansatzpunkte. |
1 |
0x2 |
An attempt to allocate a UDP port on the TURN server failed. |
Warnung |
Bit kann gesetzt sein, wenn der Client hinter einer Firewall ist, die UDP blockt. |
2 |
0x4 |
An attempt to send UDP on the TURN server failed. |
Warnung |
Vermutlich blockt eine Firewall die Verbindung per UDP. |
3 |
0x8 |
An attempt to allocate a TCP port on the TURN server failed. |
Fehler |
Prüfen Sie, dass der Client den AVEdge erreichen kann. Beim Zugriff über einen HTTP-Proxy muss dieser den TLS-Handshake erlauben. Zudem muss der Edge Server noch Ports frei haben. |
4 |
0x10 |
An attempt to send TCP on the TURN server failed. |
Fehler |
Prüfen Sie, dass der Client den AVEdge erreichen kann. Beim Zugriff über einen HTTP-Proxy muss dieser den TLS-Handshake erlauben. |
5 |
0x20 |
Local connectivity failed. (local UDP für audio/video and local TCP für application sharing and file transfer). |
Warnung |
Der Versuch der beiden Clients sich über die lokale IP-Adresse zu erreichen ist fehlgeschlagen. Eventuell verhindere IP-Routing, interne Firewall oder NAT die Verbindung oder die beiden Clients "glauben" nur im gleichen gerouteten Netz zu sein. |
6 |
0x40 |
UDP NAT connectivity failed. |
Warnung |
Eine direkte Verbindung der Clients ist aufgrund von NAT nicht möglich. |
7 |
0x80 |
UDP TURN server connectivity failed. |
Warnung |
Der Client kann den TURN-Server (3478) nicht über UDP erreichen. Meist blockt eine Firewall oder der HTTProxy die Verbindung. |
8 |
0x100 |
TCP NAT connectivity failed. |
Erwartet |
Diese Bit kann gesetzt sein, wenn die lokale direkte Verbindung erfolgreich war und daher TCP NAT gar nicht erst versucht wurde oder keine direkte TCP-Verbindung möglich war. |
9 |
0x200 |
TCP TURN server connectivity failed. |
Erwartet |
Diese Bit kann gesetzt sein, wenn die lokale Verbindung erfolgreich war und der TCP TURN-Weg daher gar nicht versucht wurde. Es kann aber auch sein, dass eine Seite keine TURN-Kandidaten geliefert hat. Wenn die Verbindung fehlschlägt, sollten Sie dort weiter suchen. |
10 |
0x400 |
Message integrity failed in connectivity check request. |
Fehler |
Dieser Fehler sollte nicht auftreten und zeigt an, dass die Pakete durch einen Angriff, Firewall, WAN-Optimierer o.ä. verändert wurden. |
11 |
0x800 |
Bit nicht genutzt |
Bit nicht genutzt |
|
12 |
0x1000 |
A policy server was configured. |
Erwartet |
Wenn eine Bandbreitensteuerung (CAC) genutzt wird, dann zeigt dieses Flag an, das aufgrund von Beschränkungen der Fall fehlgeschlagen sein kann. Ist die Verbindung aber zustande gekommen, dann zeigt diese Flag an, dass Bandbreitenrichtlinien angewendet wurden. |
13 |
0x2000 |
Connectivity check requested failed because of a memory problem or other reasons that prevented sending packets. |
Fehler |
Dieses Bit zeigt einen Fehler an, dass der Computer keine ausreichenden Ressourcen (Speicher, Ports, CPU o.ä.) hat und daher der Call fehlgeschlagen ist. |
14 |
0x4000 |
TURN server credentials have expired or are unknown. |
Fehler |
Dieses Bit zeig den Fehler an, dass der AV-Edge Authorization Server nicht erreichbar ist. Der Client bekommt daher keine Edge-Kandidaten und der Call wird zumindest nach oder von Extern nicht funktionieren. |
15 |
0x8000 |
Bandwidth policy restriction has removed some candidates. |
Fehler |
Diese Fehler bedeutet angeblich eine Fehlkonfiguration des Bandbreiten Servers (CAC), durch den Kandidaten entfernt wurden oder eine andere Verbindung vorgeschrieben wurde, die dann fehlt geschlagen ist. Es könnte auch einen NAT-Übergang intern scheitern. |
16 |
0x10000 |
Bandwidth policy restriction decreases the bandwidth. |
Warnung |
Diese Warnung zeigt an, dass durch CAC die maximal nutzbare Bandbreite beschränkt wurde und daher die Qualität schlechter sein kann, da ein Codec mit geringerer Bitrate oder höherer verlustbehafteter Kompression zum Einsatz kommen muss. |
17 |
0x20000 |
Bandwidth policy keep-alive failed. |
Fehler |
Der Client konnte eine Aktualisierung beim CAC Server erhalten. Die Verbindung bleibt aber bestehen. Prüfen Sie die Erreichbarkeit des CAC oder Edge-Servers (TURN). |
18 |
0x40000 |
Bandwidth policy allocation failure. |
Fehler |
Der CAC Server verbietet, dass die Clients eine Verbindung über zwei Edge-Server (Relay zu Relay) nutzen. |
19 |
0x80000 |
No TURN server configured. |
Warnung |
Clients, die aus dem gerouteten Netzwerk zu anderen Client eine Verbindung aufbauen sollen, benötigen die Hilfe eines TURN-Servers. Prüfen Sie die Lync Topologie und vor allem, ob der Edge-Server für den Client per DNS auflösbar und erreichbar ist. |
20 |
0x100000 |
Multiple TURN servers configured. |
Info |
Dies ist kein Fehler. Der Client hat mehrere TURN-Server gefunden. Dies ist normal, wenn mehrere Edge-Server per DNS-Round Robin verfügbar gemacht werden. |
21 |
0x200000 |
Port range exhausted. |
Warnung |
Der Client hat keine "freien lokalen Ports" mehr allokieren können. Prüfen Sie die Einstellungen bezüglich der Ports und stellen Sie sicher, dass mindestens 20 Ports für Audio/Video und 3 Ports für AppSharing/Filetransfer definiert sind. |
22 |
0x400000 |
Received alternate server |
Warnung |
Der genutzte TURN-Server ist überlastet und der alternative Server ist nicht erreichbar. |
23 |
0x800000 |
Pseudo-TLS failure. |
Warnung |
Dies ist ein Hinweis, dass der HTTPS-Proxy den Datenverkehr durch "Deep Packet inspection" überprüft, was nicht supported ist. |
24 |
0x1000000 |
HTTP proxy configured. |
Info |
Diese Bit zeigt an, dass ein HTTP-Proxy konfiguriert ist. Es ist kein Fehler. |
25 |
0x2000000 |
HTTP proxy authentication failed. |
Fehler |
Die Anmeldung am konfigurierten HTTP-Proxy ist nicht möglich und daher kann der Proxy nicht genutzt werden. Eventuell kommt keine Verbindung zustande. |
26 |
0x4000000 |
TCP-TCP connectivity checks failed over the TURN Server. |
Fehler |
Der TURN-Server kann nicht über 443/TCP erreicht werden. OCS2007 Server müssen zusätzlich über 50000/TCP-59999/TCP erreichbar sein. Prüfen Sie ihre Firewall. Die Verbindung könnte nicht zustande gekommen sein. |
26 |
0x80000000 |
Use candidate checks failed. |
Fehler |
Die Clients haben mit dem ICE Handshake begonnen aber es wurden nur ein paar aber nicht alle Pakete empfangen. mögliche Ursachen sind Firewalls, Virenscanner, Netzwerktreiber, Winsock Layers Service Provider etc. |
- Übersicht der
ICEWARN-Meldungen in Tabelle 2
http://download.microsoft.com/download/9/4/E/94ED1EF4-A2EF-4686-9841-B0390072D524/Chapter_09_External_User_Access.doc
Auswertung mit JavaScript
Seit Anfang 2017 habe ich auf dieser Seite vor der Tabelle ein Formular addiert, in welches Sie ihren ICEWARN-Wert eingeben können. Das JavaScript dahinter, welches Sie Sie im Quellcode einsehen können, blendet anhand ihrer Eingabe die entsprechenden Zeilen aus und ein. Dazu wurde jede Zeile mit einer eindeutigen ID versehen.
Entsprechend kann man in JavaScript das Property "Display" auf "none" stellen.
document.getElementById("1").style.display = "none";
Weitere Links
- ICE und Kandidaten
- MRAS Edge
- Early Media
- MediaBypass
- Media Allocation, Desktop Sharing und MaxUserPort
-
[MS-ICE2]: Interactive
Connectivity Establishment (ICE)
Extensions 2.0 - 4
Protocol Examples
https://docs.microsoft.com/en-us/openspecs/office_protocols/ms-ice2/0879ffca-3284-4a59-b685-6bcc782eb38a - Microsoft Lync Server 2010 Resource
Kit
hhttp://www.microsoft.com/en-us/download/details.aspx?id=22644 - Lync ICE Warning Flag
Decoder
http://www.tharindu.me/2013/11/ice-warning-flag-decoder.html
http://gallery.technet.microsoft.com/ICE-Warning-Flag-Decoder-97058ef3 - ICE Warning Messages
https://dusk1911.wordpress.com/2012/05/28/ice-warning-messages/ - ms-client-diagnostics: 23;
reason="Call failed to establish
due to a media connectivity
failure when one endpoint is
internal and the other is
remote";CalleeMediaDebug="audio:ICEWarn=0x80012b
http://www.ucprimer.com/tech-blog/ms-client-diagnostics-23-reasoncall-failed-to-establish-due-to-a-media-connectivity-failure-when-one-endpoint-is-internal-and-the-other-is-remotecalleemediadebugaudioicewarn0x80012b