SIP Retransmission: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
 
=Grundlegendes=
 
=Grundlegendes=
Das Session Initiation Protocol (SIP) ist ein Kommunikationsprotokoll, das für die Signalisierung und Kontrolle von Multimedia-Kommunikationssitzungen in Anwendungen wie Sprach- und Videotelefonie verwendet wird. Im Falle von verlorenen oder verzögerten Paketen hat SIP eingebaute Mechanismen für Retransmission. Diese Mechanismen sind in RFC 3261, die SIP-Spezifikation, definiert.
+
*Das Session Initiation Protocol (SIP) ist ein Kommunikationsprotokoll, das für die Signalisierung und Kontrolle von Multimedia-Kommunikationssitzungen in Anwendungen wie Sprach- und Videotelefonie verwendet wird.  
 +
*Im Falle von verlorenen oder verzögerten Paketen hat SIP eingebaute Mechanismen für Retransmission. Diese Mechanismen sind in RFC 3261, die SIP-Spezifikation, definiert.
  
 
=Prinzip=
 
=Prinzip=
SIP basiert auf dem Request-Response-Modell. Es verwendet mehrere verschiedene Nachrichtentypen, einschließlich INVITE, ACK, BYE, CANCEL, OPTIONS und REGISTER. Ein einfacher Aufruffluss könnte so aussehen:
+
*SIP basiert auf dem Request-Response-Modell.  
 +
*Es verwendet mehrere verschiedene Nachrichtentypen, einschließlich INVITE, ACK, BYE, CANCEL, OPTIONS und REGISTER. Ein einfacher Aufruffluss könnte so aussehen:
 
<pre>
 
<pre>
 
Client            Server
 
Client            Server
Zeile 19: Zeile 21:
 
   |-------ACK------->|
 
   |-------ACK------->|
 
</pre>
 
</pre>
In diesem Flussdiagramm sendet der Client eine INVITE-Nachricht an den Server, um einen Anruf zu initiieren. Wenn die endgültige Antwort des Servers verloren geht, wiederholt der Client die INVITE-Anfrage.
+
*In diesem Flussdiagramm sendet der Client eine INVITE-Nachricht an den Server, um einen Anruf zu initiieren.  
 +
*Wenn die endgültige Antwort des Servers verloren geht, wiederholt der Client die INVITE-Anfrage.
  
 
=Es wird solange wiederholt, bis ein Erfolg eintritt=
 
=Es wird solange wiederholt, bis ein Erfolg eintritt=
Die Anfrage wird mehrmals wiederholt, um zu versuchen, eine erfolgreiche Verbindung herzustellen. Jede Wiederholung erfolgt nach einer festgelegten Wartezeit, die sich nach jedem fehlgeschlagenen Versuch verdoppelt:
+
*Die Anfrage wird mehrmals wiederholt, um zu versuchen, eine erfolgreiche Verbindung herzustellen.  
 +
*Jede Wiederholung erfolgt nach einer festgelegten Wartezeit, die sich nach jedem fehlgeschlagenen Versuch verdoppelt:
 
<pre>
 
<pre>
 
Client          Server
 
Client          Server
Zeile 46: Zeile 50:
  
 
=Oder bis das 32 fache von T1(hier 500ms) erreicht wird=
 
=Oder bis das 32 fache von T1(hier 500ms) erreicht wird=
Wenn keine Antwort vom Server empfangen wird, gibt der Client den Versuch nach einer bestimmten Zeit auf. Diese Zeit ist das 32-fache des ursprünglichen Retransmissions-Intervalls (T1), das hier auf 500 ms gesetzt ist:
+
*Wenn keine Antwort vom Server empfangen wird, gibt der Client den Versuch nach einer bestimmten Zeit auf.  
 +
*Diese Zeit ist das 32-fache des ursprünglichen Retransmissions-Intervalls (T1), das hier auf 500 ms gesetzt ist:
 
<pre>
 
<pre>
 
Client          Server
 
Client          Server
 
   |                |
 
   |                |
   |----INVITE------>|    (Versuch 1, T1 = 500 ms)
+
   |----INVITE------>|    (Versuch 1)
 +
  |                |
 +
  |----INVITE------>|    (Versuch 2, T1 = 500 ms)
 
   |                |
 
   |                |
   |----INVITE------>|    (Versuch 2, T1*2 = 1 s)
+
   |----INVITE------>|    (Versuch 3, T1*2 = 1 s)
 
   |                |
 
   |                |
   |----INVITE------>|    (Versuch 3, T1*2*2 = 2 s)
+
   |----INVITE------>|    (Versuch 4, T1*2*2 = 2 s)
 
   |                |
 
   |                |
   |----INVITE------>|    (Versuch 4, T1*2*2*2 = 4 s)
+
   |----INVITE------>|    (Versuch 5, T1*2*2*2 = 4 s)
 
   |                |
 
   |                |
   |----INVITE------>|    (Versuch 5, T1*2*2*2*2 = 8 s)
+
   |----INVITE------>|    (Versuch 6, T1*2*2*2*2 = 8 s)
 
   |                |
 
   |                |
   |----INVITE------>|    (Versuch 6, T1*2*2*2*2*2 = 16 s)
+
   |----INVITE------>|    (Versuch 7, T1*2*2*2*2*2 = 16 s)
 
   |                |
 
   |                |
   |----INVITE------>|    (Versuch 7, T1*2*2*2*2*2*2 = 32 s)
+
   |----INVITE------>|    (Versuch 8, T1*2*2*2*2*2*2 = 32 s)
 
   |                |
 
   |                |
 
   |  (Client gibt auf, da keine Antwort vom Server erhalten wurde)  |
 
   |  (Client gibt auf, da keine Antwort vom Server erhalten wurde)  |
 
   </pre>
 
   </pre>

Version vom 2. Juli 2023, 11:05 Uhr

Grundlegendes

  • Das Session Initiation Protocol (SIP) ist ein Kommunikationsprotokoll, das für die Signalisierung und Kontrolle von Multimedia-Kommunikationssitzungen in Anwendungen wie Sprach- und Videotelefonie verwendet wird.
  • Im Falle von verlorenen oder verzögerten Paketen hat SIP eingebaute Mechanismen für Retransmission. Diese Mechanismen sind in RFC 3261, die SIP-Spezifikation, definiert.

Prinzip

  • SIP basiert auf dem Request-Response-Modell.
  • Es verwendet mehrere verschiedene Nachrichtentypen, einschließlich INVITE, ACK, BYE, CANCEL, OPTIONS und REGISTER. Ein einfacher Aufruffluss könnte so aussehen:
Client            Server
  |                  |
  |-----INVITE------>|
  |                  |
  |<----100 Trying---|
  |                  |
  |                  |  (Paket geht verloren, keine Antwort)
  |                  |
  |-----INVITE------>|  (Retransmission)
  |                  |
  |<----200 OK-------|
  |                  |
  |-------ACK------->|
  • In diesem Flussdiagramm sendet der Client eine INVITE-Nachricht an den Server, um einen Anruf zu initiieren.
  • Wenn die endgültige Antwort des Servers verloren geht, wiederholt der Client die INVITE-Anfrage.

Es wird solange wiederholt, bis ein Erfolg eintritt

  • Die Anfrage wird mehrmals wiederholt, um zu versuchen, eine erfolgreiche Verbindung herzustellen.
  • Jede Wiederholung erfolgt nach einer festgelegten Wartezeit, die sich nach jedem fehlgeschlagenen Versuch verdoppelt:
Client           Server
  |                 |
  |----INVITE------>|     (Versuch 1)
  |                 |
  |----INVITE------>|     (Versuch 2 nach 500 ms)
  |                 |
  |----INVITE------>|     (Versuch 3 nach 1 s)
  |                 |
  |----INVITE------>|     (Versuch 4 nach 2 s)
  |                 |
  |----INVITE------>|     (Versuch 5 nach 4 s)
  |                 |
  |----INVITE------>|     (Versuch 6 nach 8 s)
  |                 |
  |----INVITE------>|     (Versuch 7 nach 16 s)
  |                 |
  |<---200 OK-------|     (Antwort vom Server erreicht den Client)
  |                 |
  |------ACK------->|

Oder bis das 32 fache von T1(hier 500ms) erreicht wird

  • Wenn keine Antwort vom Server empfangen wird, gibt der Client den Versuch nach einer bestimmten Zeit auf.
  • Diese Zeit ist das 32-fache des ursprünglichen Retransmissions-Intervalls (T1), das hier auf 500 ms gesetzt ist:
Client           Server
  |                 |
  |----INVITE------>|     (Versuch 1)
  |                 |
  |----INVITE------>|     (Versuch 2, T1 = 500 ms)
  |                 |
  |----INVITE------>|     (Versuch 3, T1*2 = 1 s)
  |                 |
  |----INVITE------>|     (Versuch 4, T1*2*2 = 2 s)
  |                 |
  |----INVITE------>|     (Versuch 5, T1*2*2*2 = 4 s)
  |                 |
  |----INVITE------>|     (Versuch 6, T1*2*2*2*2 = 8 s)
  |                 |
  |----INVITE------>|     (Versuch 7, T1*2*2*2*2*2 = 16 s)
  |                 |
  |----INVITE------>|     (Versuch 8, T1*2*2*2*2*2*2 = 32 s)
  |                 |
  |  (Client gibt auf, da keine Antwort vom Server erhalten wurde)  |