wake-up-neo.com

mit SIP, wann zu verwenden TCP nicht UDP?

Ich kenne ziemlich gut die Unterschiede zwischen UDP und TCP im Allgemeinen (zB http://www.onsip.com/about-voip/sip/udp-versus-tcp-for-voip )

Die Frage ist, unter welchen Umständen hätte die Verwendung von TCP als Transport speziell unter SIP VOiP-Kommunikation Vorteile?

18
Marcos

Eine Menge Leute würden UDP normalerweise mit Voip in Verbindung bringen und dies wahrscheinlich belassen, aber in einfachen Worten gibt es zwei Teile für die VoIP-Verbindung - Verbindung und Sprachdatenübertragung.

SIP ist ein sehr leichtes Protokoll. Sobald die Verbindungen hergestellt sind, bleibt es praktisch inaktiv, bis jemand einen Anruf tätigt. TCP (im Gegensatz zu UDP) verringert tatsächlich den Datenverkehr zum Server, da keine Notwendigkeit besteht; 

  1. Melden Sie sich alle paar Minuten erneut an
  2. Server aktualisieren/ping 

Sie können SIP über TCP ausführen und dann (wie empfohlen) UDP für RTP verwenden.

Ich konnte nicht umhin, auf die offensichtlichen Dinge hinzuweisen, die ich mir angesehen habe. Z.B. Anzahl der Geräte, die mit dem Server verbunden sind. Wenn die Anzahl wächst, neigt sich die Gleichung in UDPs Gunst. Dann müssen Sie jedoch auch SIP User Agents erwägen, die sich auf mehrere Codecs, Multimedia, Video und Bildschirmfreigabe erstrecken. Die INVITE-Pakete können groß werden und möglicherweise über die UDP-Größe eines einzelnen Datagramms laufen, wodurch die Gleichung erneut zugunsten von TCP geneigt wird.

Ich hoffe, Sie haben genug Informationen, um die Frage zu beantworten, die Sie beantworten wollten.

Hoffe das hilft.

Bildnachweis: Die wunderbare Diskussion bei onSip: https://www.onsip.com/blog/sip-via-udp-vs-tcp

23
MickJ

SIP over TCP hat bei mobilen Geräten einen erheblichen Vorteil gegenüber UDP. Der Grund liegt in der Verwendung von NAT, und wie NAT Tabelleneinträge in einem WLAN-Router oder einem Router eines Zellanbieters für UDP im Vergleich zu TCP im Allgemeinen viel schneller abgelaufen sind. Da das Gleiche NAT Tabelleneintrag erforderlich ist, um Anrufe zuverlässig empfangen zu können, muss SIP regelmäßig Keep-Alives aussenden, um den NAT Tabelleneintrag zu erhalten. Die erforderliche Häufigkeit für Keep Alives ist für UDP (möglicherweise alle 30 Sekunden) und vs TCP (möglicherweise alle 15 Minuten) viel höher. Dies führt zu einer spürbar höheren Akkuladung von Mobilgeräten. Wenn Sie jemanden sehen, der sich darüber beschwert, dass die Verwendung des Akkus bei Verwendung eines VoIP-Clients einen großen Schaden verursacht, liegt dies daran, dass der Client UDP verwendet.

Also, TCP setzt sich bei UDP-Geräten für mobile Geräte durch.

Beachten Sie, dass Sie davon ausgehen, dass Sie Anrufe auf Ihrem mobilen Gerät zuverlässig empfangen möchten. Wenn Sie nur telefonieren möchten, ist es eine andere Geschichte.

15
Jim R

Wenn eine Nachricht groß ist (innerhalb von 200 Byte MTU-Größe), schreibt RFC 3261 Abschnitt 18.1.1 die Verwendung von TCP vor (genauer gesagt, die Verwendung eines "überlastungsgesteuerten Transportprotokolls wie TCP"). Ich habe das in der Praxis getroffen, als ich eine INVITE mit vielen Kopfzeilen und einem komplexen Request-URI sendete.

6
yotommy

Sie können einen Audiostream nicht zuverlässig aus einem TCP - basierten Protokoll zusammenstellen. Bei Audio ist es weitaus besser, ein Paket zu verlieren, als ein Paket aufgrund eines Paketabfalls erneut übertragen zu haben. Audio funktioniert nicht, wenn das Paket-Timing übermäßiges Jitter verursacht. Audio ist in Echtzeit und erfordert ein Protokoll wie UDP, um korrekt zu funktionieren. Paketverluste beschädigen das Audio nicht, es verringert nur die Qualität. Die perfekte Übermittlung von TCP hilft dem Audio in keiner Weise, es kann keine Qualität geben, wenn Sie 100% der Pakete erhalten, aber sie sind nicht in Echtzeit. Beim Audio bestimmen die Zeit (Latenz, Jitter) die Qualität mehr als die Datenintegrität.

Dieser sip funktioniertBEST, wenn Signal und Kontrolle über TCP sind, die Sprachdaten jedoch über UDP.

Ich beschäftige mich mit der Übertragung von digitalen Voice-over-Network-Protokollen, seit ich 1987 eines der ersten Smartphones für das aufkommende digitale Mobilfunknetz in Japan entwickelt hatte. Der einzige Aspekt der digitalen Sprachübertragung, der sich seit 1987 nicht geändert hat, ist das, was ich hier beschreibe. Die Echtzeitnatur der Audioübertragung (Sprachübertragung) und deren Auswirkungen auf das Systemdesign ist immer noch genauso wie in den Dinosaurier-Tagen, aus denen ich gekommen bin.

2
Bigtexun