2013-03-26 10 views

Odpowiedz

19

Wiele osób na ogół kojarzy UDP z voip i pewnie to zostawi, ale w prostych słowach są dwie części do voip - połączenie i przesyłanie danych głosowych.

SIP to bardzo lekki protokół, po ustanowieniu połączeń jest on skutecznie pozostawiony bezczynny aż do rzadkiego zdarzenia osoby wykonującej połączenie telefoniczne. TCP (w przeciwieństwie do UDP) faktycznie zmniejszy ruch na serwerze, eliminując potrzebę;

  1. ponownie zarejestrować co kilka minut
  2. Refresh/ping serwera

można uruchomić SIP przez TCP, a następnie użyć (co jest zalecane) UDP dla RTP.

Nie mogłem pomóc, ale zwróciłem uwagę na oczywiste rzeczy, które przeglądałem. Na przykład. liczba urządzeń łączących się z serwerem. Gdy liczba rośnie, równanie przechyla się na korzyść UDP. Ale musisz także rozważyć rozszerzenie SIP User Agents, aby objąć wieloma kodekami, multimediami, wideo i udostępnianiem ekranu. Pakiety INVITE mogą zacząć rosnąć w dużym rozmiarze i być potencjalnie uruchamiane przez pojedynczy rozmiar datagramów UDP, tym samym przechylając równanie na korzyść TCP.

Mam nadzieję, że masz wystarczająco dużo informacji, aby odpowiedzieć na pytanie, na które chcesz odpowiedzieć.

Mam nadzieję, że to pomoże.

kredytowe: Cudowny dyskusja na onSip: https://www.onsip.com/blog/sip-via-udp-vs-tcp

+0

Przypomina się również przypadki, w których szyfrowanie jest potrzebne (chociaż SRTP może również używać UDP, jeśli się nie mylę). – Marcos

+0

Tak, a najczęściej używa protokołu SRTP. Chociaż staje się to dyskusją wokół RTP bardziej niż SIP. Dla bezpieczeństwa SIP powinieneś spojrzeć na SIPS (Secure SIP). – MickJ

6

Jeśli wiadomość jest duża (w promieniu 200 bajtów rozmiar MTU), RFC 3261 sekcja 18.1.1 mandaty użyciu protokołu TCP (aby być precyzyjnym, to nakazuje stosowanie "protokół transportu o kontrolowanym przeciążeniu, taki jak TCP"). Uderzyłem to w praktyce, wysyłając początkowy numer INVITE z dużą liczbą nagłówków i złożonym identyfikatorem URI żądania.

12

Protokół SIP over TCP ma znaczną przewagę nad UDP dla urządzeń mobilnych. Przyczyna jest spowodowana użyciem translatora adresów sieciowych oraz tym, że wpisy tablic NAT w routerze bezprzewodowym lub ruterze dostawcy komórek są z reguły znacznie szybsze w przypadku UDP w porównaniu z protokołem TCP. Ponieważ utrzymanie tego samego wpisu tablicy NAT jest konieczne, aby móc niezawodnie odbierać połączenia, SIP musi okresowo wysyłać alive keep, aby utrzymać wpis tablicy NAT. Wymagana częstotliwość utrzymania jest znacznie wyższa w przypadku UDP (być może co 30 sekund) w porównaniu do TCP (może co 15 minut), co powoduje zauważalnie wyższe zużycie baterii urządzenia mobilnego. Często, gdy widzisz, że ktoś narzeka na sposób, w jaki ich użycie baterii ma duże znaczenie przy korzystaniu z klienta VOIP, dzieje się tak, ponieważ klient używa UDP.

Tak, TCP wygrywa przez UDP dla urządzeń przenośnych.

Pamiętaj, że powyższe założenia wymagają niezawodnego odbierania połączeń na urządzeniu mobilnym. Jeśli wszystko, co chcesz zrobić, to móc nawiązywać połączenia, to jest inna historia.

+0

Interesujące. Można się zastanawiać, w jaki sposób nowoczesne telefony komórkowe mają wbudowane aplikacje SIP VoIP skonfigurowane domyślnie (np. Android 4+) w tym kontekście. – Marcos

+1

jakiekolwiek źródła tego? wysyłanie pakietu udp co 30 sekund nie brzmi tak, jakby mogło zużywać dużo baterii. – kritzikratzi

-2

TCP może przejść z doskonałą precyzją na stratnym połączeniu, kiedy UDP może nie być zrozumiały. Dostajesz mniejsze opóźnienie z UDP, ale to nie pomaga, jeśli nie możesz zrozumieć, co jest powiedziane.

+2

SIP nie przenosi części głosowej. To jest PROW. – Andrew

3

Nie można niezawodnie połączyć strumienia audio z protokołu opartego na protokole TCP. W audio znacznie lepiej jest stracić pakiet, a następnie mieć pakiet retransmitowany z powodu upuszczenia pakietu. Dźwięk nie działa, jeśli występuje nadmierne fluktuacje w taktowaniu pakietów. Audio jest protokołem czasu rzeczywistego i wymaga, aby protokół taki jak UDP działał poprawnie. Utrata pakietów nie psuje dźwięku, tylko obniża jakość. Doskonała dostawa TCP nie pomaga w żaden sposób, nie może być żadnej jakości, jeśli otrzymasz 100% pakietów, ale nie są one w czasie rzeczywistym. W audio to czas (opóźnienie, jitter) determinuje jakość bardziej niż integralność danych.

Ten SIP działa BEST gdy sygnał i kontrola są dane przez TCP ale głos jest przez UDP.

Pracuję z transmisją cyfrowych protokołów głosowych przez sieć, ponieważ zaprojektowałem jeden z pierwszych smartfonów w 1987 roku dla nowo powstającej cyfrowej sieci komórkowej w Japonii. Od 1987 roku jedynym aspektem cyfrowej transmisji głosu, który się nie zmienił, jest to, co opisuję tutaj. Charakter transmisji audio (głos) w czasie rzeczywistym i to, jak wpływa to na projektowanie systemu, jest wciąż taki sam, jak w czasach dinozaurów, z których pochodzę.

Powiązane problemy