Articles

TCP congestion control

pojmenování pro přetížení řídicí algoritmy (Pks) může mít původ v roce 1996, papír, Kevin Podzim a Sally Floyd.

následující text je jedním z možných třídění podle následující vlastnosti:

  1. typ a množství zpětné vazby přijaté od sítě
  2. inkrementální nasaditelnosti na současném Internetu
  3. aspekt výkonu to má za cíl zlepšit: vysoké šířky pásma a zpoždění sítě (B); ztrátová odkazy (L); spravedlnost (F); výhodou pro krátké toky (S); proměnná-míra odkazy (V); rychlost konvergence (C)
  4. kritérium spravedlnosti, které používá

některé známé mechanismy vyhýbání se přetížení jsou klasifikovány tímto schématem takto:

Variant Feedback Required changes Benefits Fairness
(New) Reno Loss Delay
Vegas Delay Sender Less loss Proportional
High Speed Loss Sender High bandwidth
BIC Loss Sender High bandwidth
CUBIC Loss Sender High bandwidth
C2TCP Loss/Delay Sender Ultra-low latency and high bandwidth
NATCP Multi-bit signal Sender Near Optimal Performance
Elastic-TCP Loss/Delay Sender High bandwidth/short & long-distance
Agile-TCP Loss Sender High bandwidth/short-distance
H-TCP Loss Sender High bandwidth
FAST Delay Sender High bandwidth Proportional
Compound TCP Loss/Delay Sender High bandwidth Proportional
Westwood Loss/Delay Sender L
Jersey Loss/Delay Sender L
BBR Delay Sender BLVC, Bufferbloat
CLAMP Multi-bit signal Receiver, Router V Max-min
TFRC Loss Sender, Receiver No Retransmission Minimum delay
XCP Multi-bit signal Sender, Receiver, Router BLFC Max-min
VCP 2-bit signal Sender, Receiver, Router BLF Proportional
MaxNet Multi-bit signal Sender, Receiver, Router BLFSC Max-min
JetMax Multi-bit signal Sender, Receiver, Router High bandwidth Max-min
ČERVENÁ Hubnutí Router Snížení zpoždění
ECN Single-bit signálu Odesílatele, Příjemce, Router Snížení ztráty

TCP Tahoe a RenoEdit

TCP Tahoe a Reno algoritmy byly dodatečně pojmenován po verzích nebo příchutě 4.3 BSD operační systém, v němž každý se poprvé objevil (které byly samy pojmenována po Jezeře Tahoe a nedalekého města Reno, Nevada). Tahoe algoritmus se poprvé objevil v 4.3 BSD-Tahoe (která byla provedena na podporu CCI Power 6/32 „Tahoe“ minipočítač), a později byla k dispozici non-&T licence jako součást 4.3 BSD Networking Release 1; tím bylo zajištěno jeho šíření a implementace. Vylepšení byla provedena v 4.3 BSD-Reno a následně uvolněna pro veřejnost jako Networking Release 2 a později 4.4 BSD-Lite.

Zatímco oba zvážit retransmission timeout (RTO) a duplicate ACKs jako ztráta paketů události, chování Tahoe a Reno se liší především v tom, jak reagují na duplicitní Ack:

  • Tahoe: pokud tři duplicate ACKs jsou přijata (tj. čtyři ACKs uznává stejné pakety, které nejsou navázalo na data a nemění přijímač je inzerované okno), Tahoe provádí rychlé opakování přenosu, nastaví slow start threshold na polovinu současného přetížení okno, snižuje přetížení okno 1 MSS, a resetuje na pomalý start státu.
  • Reno: pokud tři duplicate ACKs jsou přijímány, Reno bude provádět rychlé opakování přenosu a přeskočit pomalý start fáze tím, že namísto snížení přetížení okna (místo nastavení na 1 MSS jako Tahoe), nastavení pomalý start prahová hodnota rovna nové přetížení okna, a vstoupit do fáze tzv. rychlé zotavení.

v Tahoe i Reno, je-li ACK time out (časový limit RTO), používá se pomalý start a oba algoritmy snižují okno přetížení na 1 MSS.

TCP VegasEdit

Hlavní článek: TCP Vegas

Až do poloviny-1990, všechny TCP je nastavit časové limity a měří round-trip zpoždění byly založeny na pouze poslední přenášených paketů v bufferu pro vysílání. University of Arizona vědci Larryho Petersona a Lawrence Brakmo představil TCP Vegas (pojmenované po Las Vegas, největší město v Nevadě), ve které časové limity byly stanoveny, a round-trip zpoždění byly měřeny pro každý paket v přenosové vyrovnávací paměti. Kromě toho TCP Vegas používá aditivní zvýšení v okně přetížení. Ve srovnávací studii různých TCP CCAs se zdálo, že TCP Vegas je nejhladší následovaný TCP CUBIC.

TCP Vegas nebyl široce nasazen mimo Petersonovu laboratoř, ale byl vybrán jako výchozí metoda řízení přetížení pro firmware DD-WRT V24 SP2.

TCP Nové RenoEdit

TCP New Reno, definovaný RFC 6582 (což obsolesces předchozí definice v RFC 3782 a RFC 2582), zlepšuje přenos během rychlé fáze zotavení TCP Reno. Během rychlého obnovení, aby bylo okno přenosu plné, je pro každý duplicitní ACK, který je vrácen, odeslán nový neodeslaný paket z konce okna přetížení. Pro každé POTVRZENÍ, že dělá částečný pokrok v pořadí prostor, odesílatel předpokládá, že ACK body do nového otvoru, a druhý balíček za ACKed pořadové číslo je odeslána.

protože časový limit je resetován vždy, když dojde k pokroku v vyrovnávací paměti přenosu, může Nové Reno vyplnit velké díry nebo více otvorů v sekvenčním prostoru-podobně jako TCP pytel. Protože New Reno může posílat nové pakety na konci okna přetížení během rychlé obnovy, vysoká propustnost je udržována během procesu vyplňování otvorů, i když existuje více otvorů, z nichž každý má více paketů. Když TCP zadá rychlé zotavení, zaznamená nejvyšší neuznané pořadové číslo paketu. Když je toto pořadové číslo potvrzeno, TCP se vrátí do stavu vyhýbání se přetížení.

problém nastává u Nového Rena, když nedochází ke ztrátám paketů, ale místo toho jsou pakety seřazeny o více než 3 pořadová čísla paketů. V tomto případě nové Reno omylem vstoupí do rychlé obnovy. Když doobjednat paket je doručen, ACK sekvenční číslo pokrok nastane, a od tam do konce rychlé zotavení, všechny sekvence-počet pokrok vytváří duplicitní a zbytečné opakování přenosu, který je okamžitě ACKed.

nové Reno funguje stejně jako SACK při nízké chybovosti paketů a podstatně překonává Reno při vysoké chybovosti.

TCP HyblaEdit

TCP Hybla cílem je odstranit sankce, aby připojení TCP, které obsahují vysokou latencí pozemní nebo satelitní rádio odkazy. Vylepšení Hybla jsou založena na analytickém vyhodnocení dynamiky okna přetížení.

TCP BICEdit

Hlavní článek: BIC TCP

Binární Zvýšit kontrola Přetížení (BIC) je TCP provedení s optimalizovaným CCA pro vysokorychlostní sítě s velkou latencí, známý jako dlouho tuku sítí. BIC se standardně používá v jádrech Linuxu 2.6.8 až 2.6.18.

TCP CUBICEdit

Hlavní článek: CUBIC TCP

KRYCHLOVÝCH je méně agresivní a více systematické derivát BIC, ve které okno je, kubické funkce času od posledního přetížení událost, s inflexní bod nastavit, aby okna před konáním akce. CUBIC se standardně používá v jádrech Linuxu mezi verzemi 2.6.19 a 3.2.

Agile-SD TCPEdit

Agile-SD je CCA založený na Linuxu, který je určen pro skutečné Linuxové jádro. Jedná se o algoritmus na straně přijímače, který využívá přístup založený na ztrátách pomocí nového mechanismu zvaného agility factor (AF). zvýšit využití šířky pásma ve vysokorychlostních a krátkých sítích (sítě s nízkým BDP), jako jsou místní sítě nebo síť z optických vláken, zejména pokud je použitá velikost vyrovnávací paměti malá. Byl vyhodnocen porovnáním jeho výkonu S Compound-TCP (výchozí CCA v MS Windows) a CUBIC (výchozí Linux) pomocí simulátoru NS-2. Zvyšuje celkový výkon až o 55% z hlediska průměrné propustnosti.

TCP Westwood+Upravit

Hlavní článek: TCP Westwood plus

Westwood+ je odesílatel pouze změna TCP Rena, která optimalizuje výkon TCP přetížení kontrolu nad drátových a bezdrátových sítí. TCP Westwood+ je založen na odhadu šířky pásma end-to-end pro nastavení okna přetížení a Prahu pomalého startu po epizodě přetížení, tj. Šířka pásma se odhaduje zprůměrováním rychlosti vracení potvrzovacích paketů. V kontrastu s TCP Rena, která slepě poloviny přetížení okno po třech duplicitní Ack, TCP Westwood+ adaptivně nastaví slow-start práh a přetížení okno, které bere v úvahu odhad šířky pásma k dispozici v době přetížení je zkušený. Ve srovnání s Reno a New Reno Westwood+ výrazně zvyšuje propustnost bezdrátových spojení a zlepšuje spravedlnost v kabelových sítích.

Sloučenina TCPEdit

Hlavní článek: Sloučenina TCP

Compound TCP je Microsoft provádění protokolu TCP, který udržuje dva různé přetížení systému windows současně, s cílem dosažení dobrého výkonu na LFNs když není narušena spravedlnost. To bylo široce nasazen ve verzích Windows od Microsoft Windows Vista a Windows Server 2008 a byl portován na starší verze Microsoft Windows, stejně jako Linux.

TCP proporcionální Rate ReductionEdit

TCP proporcionální rate Reduction (PRR) je algoritmus určený ke zlepšení přesnosti dat odeslaných během obnovy. Algoritmus zajišťuje, že velikost okna po obnovení je co nejblíže prahu pomalého startu. V testech provedených společností Google vedlo PRR ke snížení průměrné latence o 3-10% a časové limity obnovy byly sníženy o 5%. PRR je k dispozici v jádrech Linuxu od verze 3.2.

TCP BBREdit

šířka pásma a doba šíření během cesty (BBR) je CCA vyvinutá ve společnosti Google v roce 2016. Zatímco většina Pks jsou ztráty na bázi, v tom, že oni se spoléhají na ztrátu paketů pro detekci přetížení a nižší sazby převodovka, BBR, jako TCP Vegas, je model-based. Algoritmus používá maximální šířku pásma a čas zpáteční cesty, ve kterém síť dodala nejnovější let odchozích datových paketů k vytvoření modelu sítě. Každé kumulativní nebo selektivní potvrzení doručení paketů vytváří vzorek rychlosti, který zaznamenává množství dat dodaných v časovém intervalu mezi přenosem datového paketu a potvrzením tohoto paketu. Jako síťové rozhraní řadiče vyvíjet od megabitů za sekundu a gigabit za sekundu výkon, latence spojená s bufferbloat místo ztráty paketů se stává spolehlivější ukazatel maximální propustnost, takže model-based Pks, které poskytují vyšší propustnost a nižší latenci, jako BBR, spolehlivější alternativou k více populární, ztráta-založené algoritmy jako TCP CUBIC.

BBR je k dispozici pro Linux TCP od Linux 4.9. Je také k dispozici pro QUIC.

BBR verze 1 (BBRv1) je efektivní a rychlá, ale její spravedlnost vůči jiným proudům než BBR je sporná. Při implementaci na YouTube přinesla BBRv1 v průměru o 4% vyšší propustnost sítě a v některých zemích až o 14%. Zatímco Google je prezentace ukazuje BBRv1 co-existující i s CUBIC, vědci, jako Geoff Huston a Hleznu, Požehnej a Zitterbart zjistí, že je nespravedlivé, aby ostatní proudy a není škálovatelné. Hock et al také našli „některé závažné inherentní problémy ,jako je zvýšené zpoždění ve frontě, nespravedlnost a masivní ztráta paketů“ v implementaci BBR Linuxu 4.9.

Soheil Abbasloo et al. (autoři C2TCP) ukazují, že BBRv1 nefunguje dobře v dynamických prostředích, jako jsou mobilní sítě. Ukázali také, že BBR má problém s nespravedlností. Například, když KUBICKÝ tok (což je výchozí nastavení implementace protokolu TCP v systému Linux, Android a MacOS) koexistuje s BBR tok v síti, BBR tok může ovládnout KUBICKÝ tok a získat celý odkaz pásma (viz obrázek 18 ).

Verze 2 se pokouší řešit problém nespravedlnosti při provozu vedle řízení přetížení založeného na ztrátách, jako je CUBIC. V BBRv2 je model používaný BBRv1 rozšířen o informace o ztrátě paketů a informace z explicitního oznámení o přetížení (ECN). Zatímco BBRv2 může mít někdy nižší propustnost než BBRv1, obecně se má za to, že má lepší goodput.

C2TCPEdit

Mobilní Řízené Zpoždění TCP (C2TCP) bylo motivováno nedostatkem flexibilní end-to-end TCP přístup, který může uspokojit různé QoS požadavky různých aplikací bez nutnosti jakékoliv změny v síti zařízení. C2TCP si klade za cíl uspokojit požadavky na ultra nízkou latenci a vysokou šířku pásma aplikací, jako je virtuální realita, videokonference, online hry, automobilové komunikační systémy atd. ve vysoce dynamickém prostředí, jako jsou současné LTE a budoucí mobilní sítě 5G. C2TCP funguje jako doplněk ke ZTRÁTOVÉMU TCP (např. Reno, NewReno, CUBIC, BIC, …) a činí průměrné zpoždění paketů ohraničené požadovanými zpožděními nastavenými aplikacemi.

vědci z NYU ukázali, že C2TCP překonává výkon zpoždění/chvění různých nejmodernějších TCP schémat. Například ukázali, že ve srovnání s BBR, CUBIC a Westwood v průměru c2tcp snižuje průměrné zpoždění paketů asi o 250%, 900% a 700% v různých prostředích celulární sítě.

C2TCP je nutné instalovat pouze na straně serveru.

Elastic-TCPEdit

Elastic-TCP navrhl v únoru 2019 Mohamed a. Alrshah et al. Chcete-li zvýšit využití šířky pásma přes high-BDP sítě pro podporu nedávných aplikací, jako je cloud computing, big Data transfer, IoT, atd. Jedná se o CCA založený na Linuxu, který je určen pro Linuxové jádro. To je přijímač na straně algoritmus, který zaměstnává Ztráty-zpoždění přístupu založeného pomocí nový mechanismus, tzv. Okna-koreluje Váhové Funkce (WWF). Má vysokou úroveň pružnosti při řešení různých charakteristik sítě bez nutnosti lidského ladění. To byla hodnocena porovnáním jeho výkon Sloučeniny-TCP (výchozí hodnota CCA v MS Windows), KRYCHLOVÝ (výchozí Linux) a TCP-BBR (výchozí Linux 4.9 Google) pomocí NS-2 simulátoru a testbed. Elastic-TCP výrazně zlepšuje celkový výkon z hlediska průměrné propustnosti, ztrátového poměru a zpoždění.

NATCP / NACubicEdit

nedávno, Soheil Abbasloo et. Ala. navrhovaný NATCP (Network-Assisted TCP) kontroverzní návrh TCP zaměřený na mobilní okrajové sítě, jako je MEC. Klíčovou myšlenkou NATCP je, že pokud by byly vlastnosti sítě známy předem, TCP by byl navržen lepším způsobem. Proto NATCP využívá dostupné funkce a vlastnosti v současných buněčných architekturách založených na MEC, aby posunul výkon TCP blízko optimálního výkonu. NATCP používá zpětnou vazbu mimo pásmo ze sítě na servery umístěné poblíž. Zpětná vazba ze sítě, která zahrnuje kapacitu celulárního přístupového spojení a minimální RTT sítě, vede servery k úpravě jejich rychlosti odesílání. Jak ukazují předběžné výsledky, NATCP překonává nejmodernější TCP schémata alespoň dosažením 2x vyššího výkonu (definovaného jako propustnost/zpoždění). NATCP nahrazuje tradiční schéma TCP u odesílatele.

aby se vypořádali s problémem zpětné kompatibility, navrhli další verzi nazvanou NACubic. NACubic je zpětně kompatibilní design, který nevyžaduje žádnou změnu TCP na připojených uzlech. NACubic využívá přijatou zpětnou vazbu a vynucuje limit na okně přetížení (CWND) a rychlost stimulace podle potřeby.

Ostatní TCP zamezení přetížení algorithmsEdit

  • RYCHLE TCP
  • Generalizované RYCHLE TCP
  • H-TCP
  • Datové Centrum TCP
  • Vysoká Rychlost TCP
  • HSTCP-LP
  • TCP-Illinois
  • TCP-LP
  • TCP SACK
  • Scalable TCP
  • TCP Veno
  • Westwood
  • PROGRAM
  • Jo-TCP
  • TCP-FIT
  • Zamezení Přetížení s Normalizovanou časovém Intervalu (MŮŽEBÝT)
  • nelineární neuronové sítě kontrola přetížení na základě genetického algoritmu na sítích TCP/IP

TCP New Reno byl nejčastěji realizován algoritmus, podpora pytel je velmi časté a je rozšíření Reno / New Reno. Většina ostatních jsou konkurenční návrhy, které stále potřebují hodnocení. Počínaje 2.6.8 jádro Linuxu přepnulo výchozí implementaci z Nového Reno na BIC. Výchozí implementace byla opět změněna na CUBIC ve verzi 2.6.19. FreeBSD používá jako výchozí algoritmus nové Reno. Podporuje však řadu dalších možností.

když se produkt šířky pásma a latence zvyšuje, bez ohledu na schéma fronty, TCP se stává neefektivním a náchylným k nestabilitě. To se stává stále důležitější, protože Internet se vyvíjí tak, aby zahrnoval optické odkazy s velmi vysokou šířkou pásma.

TCP Interactive (iTCP) umožňuje aplikacím přihlásit se k odběru událostí TCP a odpovídajícím způsobem reagovat umožňující různé funkční rozšíření TCP z vnější vrstvy TCP. Většina schémat přetížení TCP pracuje interně. iTCP navíc umožňuje pokročilým aplikacím přímo se podílet na řízení přetížení, jako je řízení rychlosti generování zdroje.

Zeta-TCP detekuje přetížení z obou latence a ztrátovosti opatření, a platí různé přetížení okna zdvojnásobení strategie založené na pravděpodobnosti přetížení maximalizovat goodput. Má také několik dalších vylepšení, které přesně detekují ztráty paketů, vyhýbají se retransmission timeout retransmission; a urychlit/řídit příchozí (stahování) provoz.