2013-03-26 14 views

Antwort

19

Viele Leute würden UDP normalerweise mit voip verbinden und es wahrscheinlich dabei belassen, aber in einfachen Worten gibt es zwei Teile zu voip - Verbindung und Sprachdatenübertragung.

SIP ist ein sehr leichtgewichtiges Protokoll. Sobald die Verbindungen hergestellt sind, wird es effektiv bis zum seltenen Ereignis eines Telefonanrufs freigelassen. TCP (im Gegensatz zu UDP) reduziert den Datenverkehr auf den Server, da die Notwendigkeit entfällt;

  1. Ummelden alle paar Minuten
  2. Refresh/ping Server

Sie laufen über TCP SIP und dann verwenden (wie empfohlen) UDP für RTP.

Ich konnte nicht helfen, aber auch auf die offensichtlichen Dinge hinweisen, die ich mir angesehen habe. Z.B. Anzahl der Geräte, die eine Verbindung zum Server herstellen. Wenn die Zahl wächst, neigt sich die Gleichung zugunsten von UDP. Aber dann müssen Sie auch SIP-Benutzeragenten berücksichtigen, die sich auf mehrere Codecs, Multimedia, Video und Screen-Sharing erstrecken. Die INVITE-Pakete können beginnen, groß zu werden und möglicherweise über die einzelne Datagrammgröße von UDP laufen, wodurch die Gleichung wieder zugunsten von TCP gekippt wird.

Alles was gesagt wird Ich hoffe, Sie haben genug Informationen, um die Frage zu beantworten, die Sie beantworten wollten.

Hoffe, das hilft.

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

+0

Fälle, in denen eine Verschlüsselung erforderlich ist, kommen mir auch in den Sinn (obwohl SRTP auch UDP verwenden kann, wenn ich mich nicht irre). – Marcos

+0

Ja, und SRTP meistens. Obwohl das eine Diskussion um RTP mehr als SIP wird. Für die SIP-Sicherheit sollten Sie sich SIPS (Secure SIP) anschauen. – MickJ

6

Wenn eine Nachricht groß ist (innerhalb von 200 Bytes von MTU-Größe), RFC 3261 Abschnitt 18.1.1 Mandate von TCP (um genau zu sein, beauftragt ist, die Nutzung von ein "überlastgesteuertes Transportprotokoll, wie TCP"). Ich habe das in der Praxis beim Senden einer ersten INVITE mit vielen Kopfzeilen und einem komplexen Request URI getroffen.

12

SIP über TCP hat einen wesentlichen Vorteil gegenüber UDP für mobile Geräte. Der Grund liegt in der Verwendung von NAT und der Tatsache, dass NAT-Tabelleneinträge in einem drahtlosen Router oder einem Router eines Zellenanbieters für UDP vs. TCP im Allgemeinen viel schneller abgelaufen sind. Da derselbe NAT-Tabelleneintrag erforderlich ist, um Anrufe zuverlässig empfangen zu können, muss SIP regelmäßig Keep-Alives senden, um den NAT-Tabelleneintrag zu verwalten. Die erforderliche Häufigkeit von Keep-Alives ist für UDP (vielleicht alle 30 Sekunden) gegenüber TCP (möglicherweise alle 15 Minuten) viel höher, was zu einer merklich höheren Batteriebenutzung für Mobilgeräte führt. Wenn Sie jemanden sehen, der sich darüber beschwert, dass sein Akkuverbrauch bei der Verwendung eines VOIP-Clients stark beeinträchtigt wird, liegt dies häufig daran, dass der Client UDP verwendet.

So gewinnt TCP über UDP Hands down für mobile Geräte.

Beachten Sie, dass das obige davon ausgeht, dass Sie Anrufe auf Ihrem Mobilgerät zuverlässig empfangen können. Wenn Sie nur Anrufe tätigen können, ist das eine andere Geschichte.

+0

Interessant. Man fragt sich, wie moderne Handys ihre eingebauten VoIP-SIP-Apps standardmäßig konfiguriert haben (z. B. Android 4+). – Marcos

+1

irgendwelche Quellen für irgendwelche davon? Das Senden eines UDP-Pakets alle 30 Sekunden klingt nicht so, als könnte es viel Akku verbrauchen. – kritzikratzi

-2

TCP kann mit perfekter Klarheit auf einer verlustreichen Verbindung durchkommen, wenn UDP möglicherweise nicht verständlich ist. Sie erhalten eine geringere Latenz mit UDP, aber das hilft Ihnen nicht, wenn Sie nicht verstehen, was gesagt wird.

+2

SIP trägt nicht den Stimme-Teil. Das ist RDP. – Andrew

3

Sie können einen Audiostream nicht zuverlässig von einem TCP-basierten Protokoll erstellen. Bei Audio ist es viel besser, ein Paket zu verlieren, als dass ein Paket aufgrund eines Paketabwurfs erneut übertragen wird. Audio funktioniert nicht, wenn im Paket-Timing übermäßiger Jitter auftritt. Audio ist ein Echtzeitprotokoll und erfordert ein Protokoll wie UDP, um korrekt zu arbeiten. Paketverlust bricht Audio nicht, es reduziert nur die Qualität. TCP's perfekte Lieferung hilft Audio in keiner Weise, es kann keine Qualität geben, wenn Sie 100% der Pakete bekommen, aber sie sind nicht in Echtzeit. Im Audio bestimmt das Timing (Latenz, Jitter) die Qualität mehr als die Datenintegrität.

Dieser Schluck arbeitet BEST, wenn das Signal und Steuerung sind über TCP aber Sprachdaten über UDP.

Ich habe mit der Übertragung digitaler Sprachtelefonie-Protokolle gearbeitet, seit ich 1987 eines der ersten Smartphones für das neu entstehende digitale Mobilfunknetz in Japan entworfen habe. Der einzige Aspekt der digitalen Sprachübertragung, der sich seit 1987 nicht geändert hat, ist das, was ich hier beschreibe. Die Art der Übertragung von Audio (Sprache) in Echtzeit und wie sich dies auf das Systemdesign auswirkt, ist immer noch genau so wie in den Dinosauriertagen, aus denen ich komme.