Passa al contenuto principale

7. Proprietà (Properties)

Le seguenti proprietà sono comuni sia a PRR-CRB che a PRR-SSRB, salvo diversa indicazione:

1. Mantenimento dell'orologio ACK

PRR tenta di mantenere l'orologio ACK del mittente attraverso gli eventi di ripristino, incluse le perdite a raffica. Al contrario, [RFC6675] può (può) inviare raffiche grandi e non sincronizzate dopo perdite a raffica.

Vantaggio: Evita di introdurre traffico aggiuntivo a raffica nella rete, aiutando a stabilizzare il controllo della congestione.

2. Riduzione della finestra fluida

Normalmente, PRR distribuisce le riduzioni volontarie della finestra uniformemente su un RTT completo. Questo ha il potenziale di ridurre generalmente il carattere a raffica del traffico Internet e può (può) essere considerato come una forma di pacing morbido.

Ipoteticamente, qualsiasi pacing aumenta la probabilità che flussi diversi siano interlacciati, riducendo l'opportunità di compressione degli ACK e altri fenomeni che aumentano il carattere a raffica del traffico. Tuttavia, questi effetti non sono stati quantificati.

3. Convergenza precisa alla finestra target

Se ci sono perdite minime, PRR convergerà con precisione alla finestra target scelta dall'algoritmo di controllo della congestione. Si noti che quando il mittente si avvicina alla fine del ripristino, prr_delivered si avvicinerà a RecoverFS, e SndCnt sarà calcolato in modo che prr_out si avvicini a ssthresh.

Garanzia matematica: In condizioni ideali, inflight = ssthresh alla fine del ripristino.

4. Adattamento automatico alle riduzioni implicite della finestra

Le riduzioni implicite della finestra, dovute a multiple perdite isolate durante il ripristino, causano il salto delle riduzioni volontarie successive. Per un piccolo numero di perdite, la dimensione della finestra termina precisamente alla finestra scelta dall'algoritmo di controllo della congestione.

Meccanismo: PRR si adatta automaticamente in modo che la somma delle perdite effettive e delle riduzioni volontarie raggiunga la riduzione target.

5. Gestione delle perdite a raffica

Per le perdite a raffica, le precedenti riduzioni volontarie della finestra possono (può) essere annullate inviando segmenti aggiuntivi in risposta agli ACK che arrivano più tardi durante il ripristino. Si noti che finché alcune riduzioni volontarie della finestra non vengono annullate e non c'è arresto dell'applicazione, il valore finale di inflight sarà lo stesso di ssthresh.

Flessibilità: Consente di essere più conservativi quando viene rilevata una congestione grave e più aggressivi quando le condizioni migliorano.

6. Gestione dell'arresto dell'applicazione

PRR con uno dei due limiti di riduzione migliora la situazione quando c'è un arresto dell'applicazione, ad esempio, quando l'applicazione mittente non accoda i dati per la trasmissione abbastanza rapidamente o il ricevitore smette di far avanzare la sua finestra di ricezione.

Gestione degli scenari di arresto

Quando si verifica un arresto dell'applicazione all'inizio durante il ripristino:

  • prr_out rimarrà indietro rispetto alla somma delle trasmissioni consentite da SndCnt
  • Le opportunità di trasmissione mancate a causa degli arresti sono trattate come riduzioni volontarie della finestra depositate in banca
  • Specificamente, fanno sì che prr_delivered - prr_out sia significativamente positivo

Meccanismo di recupero

Se l'applicazione recupera mentre il mittente è ancora in ripristino:

  • Il mittente invierà una raffica di finestra parziale per aumentare inflight
  • Questo fa sì che inflight si avvicini alla posizione esatta in cui sarebbe stato se l'applicazione non si fosse mai arrestata
  • Sebbene una tale raffica possa (può) essere dannosa per il flusso dato o altri flussi che condividono il percorso, questo è esattamente ciò che accade per gli arresti parziali RTT dell'applicazione ogni volta che non è in ripristino

Comportamento unificato: PRR rende uniforme il comportamento di arresto RTT parziale in tutti gli stati. Modificare questo comportamento è al di fuori dell'ambito di questo documento.

7. Robustezza agli errori dell'estimatore inflight

PRR con limiti di riduzione è meno sensibile agli errori nell'estimatore inflight.

Durante il ripristino, inflight è fondamentalmente un estimatore che utilizza informazioni incomplete per stimare se i segmenti non SACKati sono effettivamente persi o semplicemente fuori ordine nella rete. In alcune condizioni, inflight può (può) avere errori significativi; ad esempio, quando una raffica di dati riordinati viene prematuramente assunta come persa e contrassegnata per la ritrasmissione, inflight viene sottostimato.

Meccanismo di tolleranza agli errori

Se le trasmissioni sono regolate direttamente da inflight (come in [RFC6675]):

  • Una discontinuità a gradini nell'estimatore inflight causa una raffica di dati
  • La raffica non può (può) essere ritrattata una volta che l'estimatore inflight è corretto alcuni ACK dopo

Con la dinamica PRR:

  • inflight determina solo quale algoritmo (PRR o limite di riduzione) viene utilizzato per calcolare SndCnt da DeliveredData
  • Quando inflight viene sottostimato, gli algoritmi differiscono al massimo di 1 segmento per ACK
  • Una volta che inflight viene aggiornato, convergono alla stessa finestra finale alla fine del ripristino

8. Limite di conservazione dei pacchetti forte (PRR-CRB)

In tutte le condizioni e sequenze di eventi durante il ripristino, PRR-CRB limita rigorosamente i dati trasmessi ad essere uguali o inferiori alla quantità di dati consegnati al ricevitore. Questo limite di conservazione dei pacchetti forte è l'algoritmo più aggressivo che non porta a perdite forzate aggiuntive in alcuni ambienti.

Proprietà della lunghezza della coda

Ha la proprietà che se c'è una coda permanente in un collo di bottiglia senza traffico incrociato, la coda manterrà una lunghezza completamente costante durante il ripristino, eccetto fluttuazioni +1/-1 dovute a differenze nei tempi di arrivo e partenza dei pacchetti.

Vedere l'appendice A per una discussione dettagliata di questa proprietà.

9. Compromesso PRR-SSRB

Sebbene il limite di conservazione dei pacchetti forte sia molto attraente per una serie di ragioni, misurazioni precedenti (discusse nella sezione 6 di [RFC6675]) suggeriscono che non è abbastanza aggressivo e non performa bene come l'algoritmo descritto in [RFC6675], che consente raffiche di dati in presenza di perdite a raffica.

PRR-SSRB è un compromesso che consente a una connessione di inviare 1 segmento aggiuntivo per ACK rispetto al limite di conservazione dei pacchetti quando l'ACK indica che il ripristino sta procedendo bene senza ulteriori perdite.

Bilanciamento delle prestazioni

Dal punto di vista del limite rigoroso di conservazione dei pacchetti:

  • PRR-SSRB apre effettivamente la finestra durante il ripristino
  • Ma è molto meno aggressivo di [RFC6675] in presenza di perdite a raffica
  • Supera quest'ultimo a causa della minore probabilità di perdite aggiuntive durante il ripristino

Effetto pratico: PRR-SSRB fornisce una migliore stabilità rispetto a [RFC6675] mantenendo buone prestazioni.