6.3. Retransmissionsanforderungen
Das im AVPF-Profil definierte NACK-Feedback-Nachrichtenformat SHOULD von Empfängern zum Senden von Retransmissionsanforderungen verwendet werden. Ob ein Empfänger ein Paket anfordert, ist eine Implementierungsfrage. Eine konkrete Empfängerimplementierung sollte Faktoren wie tolerierbare Anwendungsverzögerung, Netzumgebung und Medientyp berücksichtigen.
Der Empfänger sollte im Allgemeinen einschätzen, ob das retransmittierte Paket zum Empfangszeitpunkt noch nützlich wäre. Der Zeitstempel des fehlenden Pakets kann aus den Zeitstempeln der Pakete vor und/oder nach der durch das fehlende Paket verursachten Sequenznummernlücke im Originalstrom geschätzt werden. In den meisten Fällen reicht eine lineare Schätzung des Zeitstempels.
Darüber hinaus sollte der Empfänger eine Schätzung der Round-Trip Time (RTT) zum Sender berechnen. Das kann z. B. durch Messen der Retransmissionsverzögerung bis zum Empfang eines Retransmission-Pakets nach einem NACK für dieses Paket geschehen. Die Schätzung kann auch aus früheren Beobachtungen, der RTT aus RTCP-Berichten falls verfügbar oder auf andere Weise gewonnen werden. In „RTP Control Protocol Extended Reports (RTCP XR)“ [11] ist ein Standardmechanismus zur RTT-Schätzung am Empfänger spezifiziert.
Der Empfänger sollte keine Retransmissionsanforderung unmittelbar nach Erkennen einer fehlenden Sequenznummer senden, sondern zusätzliche Verzögerung einplanen, um Paketumordung auszugleichen. Diese zusätzliche Verzögerung kann z. B. auf beobachteter Paketumordung basieren. In Umgebungen, in denen Umordung selten ist oder nicht vorkommt, z. B. wenn die untere Schicht geordnete Zustellung bietet, kann die Verzögerung sehr gering oder null sein. In solchen Fällen kann ein geeigneter „Reorder-Delay“-Algorithmus nicht zeitbasiert, sondern paketbasiert sein: Nach n empfangenen Paketen nach Erkennen einer Lücke kann angenommen werden, dass das Paket wirklich verloren ging statt außer der Reihe. Das kann auf manchen Plattformen einfacher als ein zeitbasierter Mechanismus sein, z. B. als sehr kurzer fester FIFO-Paketpuffer.
Um Robustheit gegen Verlust eines NACK oder eines Retransmission-Pakets zu erhöhen, kann ein Empfänger einen neuen NACK für dasselbe Paket senden. Das wird als mehrfache Retransmissionen bezeichnet. Vor einem neuen NACK für ein fehlendes Paket sollte der Empfänger auf einen Timer setzen, um sicherzugehen, dass der vorherige Retransmissionsversuch fehlgeschlagen ist und unnötige Retransmissionen vermieden werden. Der Timerwert soll auf der beobachteten Round-Trip Time basieren. Ein statischer oder adaptiver Wert MAY verwendet werden. Ein adaptiver Timer könnte sich bei jeder neuen Anforderung desselben Pakets ändern. Dieses Dokument gibt keine Richtlinien zur Berechnung dieses adaptiven Werts, da keine Experimente dazu vorliegen.
NACKs MUST nur für den Original-RTP-Strom gesendet werden. Wollte ein Empfänger sonst mehrfache Retransmissionen durch NACK im Retransmission-Strom durchführen, könnte er die Original-Sequenznummer und eine Zeitstempelschätzung des angeforderten Pakets nicht kennen.
Anhang A enthält Richtlinien zur Steuerung der Anzahl von Retransmissionen.