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.

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 Regeln

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.

ICEWarn-Nummer: (Hex mit 0x voran eingeben)

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 en 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 en 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

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 Verbindnug aber zustande gekommen, dann zeigt diese Flag an, dass Bandbreitenrichtlinien angewendet wurden.

12

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.

13

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.

14

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.

15

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.

16

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).

17

0x40000

Bandwidth policy allocation failure.

Fehler

Der CAC Server verbietet, dass die Clients eine Verbindung über zwei Edge-Server (Relay zu Relay)nutzen.

18

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.

19

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.

20

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.

21

0x400000

Received alternate server

Warnung

Der genutzte TURN-Server ist überlastet und der alternative Server ist nicht erreichbar.

22

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.

23

0x1000000

HTTP proxy configured.

Info

Diese Bit zeigt an, dass ein HTTP-Proxy konfiguriert ist. Es ist kein Fehler.

24

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.

25

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.

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