SIP Retransmission: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| 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. | *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. | + | *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= | + | =Timer= |
| + | ;T1: | ||
| + | *Dieser Timer steuert das Basis-Retransmissionsintervall für INVITE-Anfragen und deren Bestätigungen. | ||
| + | *Der Standardwert beträgt 500 Millisekunden. | ||
| + | *Nach jeder erfolglosen Retransmission verdoppelt sich das Intervall. Dies führt zu einem exponentiellen Rückoff, um das Netzwerk nicht zu überlasten. | ||
| + | ;T2: | ||
| + | *Der T2-Timer steuert das maximale Retransmissionsintervall für INVITE-Anfragen und ihre Bestätigungen. | ||
| + | *Selbst wenn das Retransmissionsintervall aufgrund mehrerer erfolgloser Versuche das Doppelte von T2 erreichen würde, bleibt es auf T2 begrenzt. | ||
| + | *Der Standardwert für T2 ist 4 Sekunden. | ||
| + | ;F Timer: | ||
| + | *Der Timer F steuert die maximale Zeit, die eine Nicht-INVITE-Anforderung auf eine Antwort wartet. | ||
| + | *Wenn diese Zeit abgelaufen ist und keine Antwort empfangen wurde, gibt der Client auf und die Transaktion schlägt fehl. | ||
| + | *Der Standardwert für den F Timer ist 32 Sekunden. | ||
| + | |||
| + | =INVITE Nachricht= | ||
| + | ==Prinzip== | ||
*SIP basiert auf dem Request-Response-Modell. | *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: | + | *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 24: | Zeile 41: | ||
*Wenn die endgültige Antwort des Servers verloren geht, wiederholt der Client die INVITE-Anfrage. | *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. | *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: | *Jede Wiederholung erfolgt nach einer festgelegten Wartezeit, die sich nach jedem fehlgeschlagenen Versuch verdoppelt: | ||
| Zeile 48: | Zeile 65: | ||
|------ACK------->| | |------ACK------->| | ||
</pre> | </pre> | ||
| − | + | ==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. | *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: | *Diese Zeit ist das 32-fache des ursprünglichen Retransmissions-Intervalls (T1), das hier auf 500 ms gesetzt ist: | ||
| Zeile 68: | Zeile 84: | ||
| | | | | | ||
|----INVITE------>| (Versuch 7, T1*2*2*2*2*2 = 16 s) | |----INVITE------>| (Versuch 7, T1*2*2*2*2*2 = 16 s) | ||
| − | |||
| − | |||
| | | | | | ||
| (Client gibt auf, da keine Antwort vom Server erhalten wurde) | | | (Client gibt auf, da keine Antwort vom Server erhalten wurde) | | ||
</pre> | </pre> | ||
| + | |||
| + | =Nicht INVITE Nachricht= | ||
| + | *Ein wichtiger Unterschied besteht darin, dass SIP die exponentielle Backoff-Strategie nicht für die Retransmission von Nicht-INVITE-Anforderungen oder deren Antworten verwendet. | ||
| + | *Stattdessen wird eine feste Zeit verwendet, die durch den Timer T2 definiert wird. | ||
| + | ==Prinzip== | ||
| + | *Hier ist ein einfacher Ablauf einer Nicht-INVITE-Transaktion: | ||
| + | <pre> | ||
| + | Client Server | ||
| + | | | | ||
| + | |-----BYE--------->| | ||
| + | | | | ||
| + | |<----200 OK-------| | ||
| + | | | | ||
| + | </pre> | ||
| + | *Wenn der Server nicht innerhalb einer bestimmten Zeit auf die BYE-Anforderung antwortet, wiederholt der Client die Anforderung nach einer festen Zeitintervall (T2). | ||
| + | *Der Standardwert für T2 ist 4 Sekunden. | ||
| + | |||
| + | ==Retransmission, wenn die 200 OK-Antwort auf die BYE-Anforderung verloren geht== | ||
| + | <pre> | ||
| + | Client Server | ||
| + | | | | ||
| + | |-----BYE--------->| (Versuch 1) | ||
| + | | | | ||
| + | | | (Antwort geht verloren, keine Antwort) | ||
| + | | | | ||
| + | |-----BYE--------->| (Retransmission nach T2=4s) | ||
| + | | | | ||
| + | |<----200 OK-------| | ||
| + | | | | ||
| + | </pre> | ||
| + | *Wie Sie sehen können, ist der Retransmissionsmechanismus für Nicht-INVITE-Anforderungen und -Antworten einfacher als für INVITE-Anforderungen, da er nicht das exponentielle Backoff verwendet. | ||
| + | *Aber das Grundprinzip bleibt das gleiche | ||
| + | *Wenn eine Antwort auf eine Anforderung ausbleibt, wird die Anforderung erneut gesendet, um eine erfolgreiche Kommunikation sicherzustellen. | ||
| + | ==Nicht-INVITE-Transaktion, wenn keine Antwort kommt== | ||
| + | <pre> | ||
| + | Client Server | ||
| + | | | | ||
| + | |-----BYE--------->| (Versuch 1) | ||
| + | | | | ||
| + | | | (Keine Antwort) | ||
| + | | | | ||
| + | |-----BYE--------->| (Retransmission nach T2=4s) | ||
| + | | | | ||
| + | | | (Keine Antwort) | ||
| + | | | | ||
| + | |-----BYE--------->| (Retransmission nach T2=4s) | ||
| + | | | | ||
| + | | | (Keine Antwort) | ||
| + | | | | ||
| + | |-----BYE--------->| (Retransmission nach T2=4s) | ||
| + | | | | ||
| + | | | (Keine Antwort) | ||
| + | | | | ||
| + | |-----BYE--------->| (Retransmission nach T2=4s) | ||
| + | | | | ||
| + | | | (Keine Antwort) | ||
| + | | | | ||
| + | |-----BYE--------->| (Retransmission nach T2=4s) | ||
| + | | | | ||
| + | | | (Keine Antwort) | ||
| + | | | | ||
| + | | (Client gibt auf, da keine Antwort vom Server erhalten wurde) | | ||
| + | </pre> | ||
| + | *Im obigen Beispiel wird die BYE-Anforderung alle 4 Sekunden erneut gesendet. | ||
| + | *Der Client gibt auf und die Transaktion schlägt fehl, wenn innerhalb von 32 Sekunden (Timer F) keine Antwort vom Server empfangen wird. | ||
Aktuelle Version vom 5. Juli 2023, 06:25 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.
Timer
- T1
- Dieser Timer steuert das Basis-Retransmissionsintervall für INVITE-Anfragen und deren Bestätigungen.
- Der Standardwert beträgt 500 Millisekunden.
- Nach jeder erfolglosen Retransmission verdoppelt sich das Intervall. Dies führt zu einem exponentiellen Rückoff, um das Netzwerk nicht zu überlasten.
- T2
- Der T2-Timer steuert das maximale Retransmissionsintervall für INVITE-Anfragen und ihre Bestätigungen.
- Selbst wenn das Retransmissionsintervall aufgrund mehrerer erfolgloser Versuche das Doppelte von T2 erreichen würde, bleibt es auf T2 begrenzt.
- Der Standardwert für T2 ist 4 Sekunden.
- F Timer
- Der Timer F steuert die maximale Zeit, die eine Nicht-INVITE-Anforderung auf eine Antwort wartet.
- Wenn diese Zeit abgelaufen ist und keine Antwort empfangen wurde, gibt der Client auf und die Transaktion schlägt fehl.
- Der Standardwert für den F Timer ist 32 Sekunden.
INVITE Nachricht
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) | | | (Client gibt auf, da keine Antwort vom Server erhalten wurde) |
Nicht INVITE Nachricht
- Ein wichtiger Unterschied besteht darin, dass SIP die exponentielle Backoff-Strategie nicht für die Retransmission von Nicht-INVITE-Anforderungen oder deren Antworten verwendet.
- Stattdessen wird eine feste Zeit verwendet, die durch den Timer T2 definiert wird.
Prinzip
- Hier ist ein einfacher Ablauf einer Nicht-INVITE-Transaktion:
Client Server | | |-----BYE--------->| | | |<----200 OK-------| | |
- Wenn der Server nicht innerhalb einer bestimmten Zeit auf die BYE-Anforderung antwortet, wiederholt der Client die Anforderung nach einer festen Zeitintervall (T2).
- Der Standardwert für T2 ist 4 Sekunden.
Retransmission, wenn die 200 OK-Antwort auf die BYE-Anforderung verloren geht
Client Server | | |-----BYE--------->| (Versuch 1) | | | | (Antwort geht verloren, keine Antwort) | | |-----BYE--------->| (Retransmission nach T2=4s) | | |<----200 OK-------| | |
- Wie Sie sehen können, ist der Retransmissionsmechanismus für Nicht-INVITE-Anforderungen und -Antworten einfacher als für INVITE-Anforderungen, da er nicht das exponentielle Backoff verwendet.
- Aber das Grundprinzip bleibt das gleiche
- Wenn eine Antwort auf eine Anforderung ausbleibt, wird die Anforderung erneut gesendet, um eine erfolgreiche Kommunikation sicherzustellen.
Nicht-INVITE-Transaktion, wenn keine Antwort kommt
Client Server | | |-----BYE--------->| (Versuch 1) | | | | (Keine Antwort) | | |-----BYE--------->| (Retransmission nach T2=4s) | | | | (Keine Antwort) | | |-----BYE--------->| (Retransmission nach T2=4s) | | | | (Keine Antwort) | | |-----BYE--------->| (Retransmission nach T2=4s) | | | | (Keine Antwort) | | |-----BYE--------->| (Retransmission nach T2=4s) | | | | (Keine Antwort) | | |-----BYE--------->| (Retransmission nach T2=4s) | | | | (Keine Antwort) | | | (Client gibt auf, da keine Antwort vom Server erhalten wurde) |
- Im obigen Beispiel wird die BYE-Anforderung alle 4 Sekunden erneut gesendet.
- Der Client gibt auf und die Transaktion schlägt fehl, wenn innerhalb von 32 Sekunden (Timer F) keine Antwort vom Server empfangen wird.