Alternatív TCP variánsok vizsgálata nagy sávszélességű, magas késleltetésű kapcsolatokon Orosz Péter, Sztrik János, Che Soong Kim** Debreceni Egyetem Informatikai Kar oroszp@unideb.hu, jsztrik@inf.unideb.hu ** Department of Industrial Engineering, Sangji University dowoo@mail.sangji.ac.kr Bevezetés A nagytávolságú adatkommunikációs kapcsolatok fizikai sávszélessége a technológiai fejlődésnek köszönhetően egyre dinamikusabban növekszik, átlépve a LAN környezetben alkalmazott 1Gbit/sec-os átviteli kapacitást. A fizikai sávszélesség növekedése azonban nem elegendő ahhoz, hogy a nagyságrendbeli átviteli teljesítménytöbbletet alkalmazás szinten is érzékelhessük. Tudjuk, hogy nagymennyiségű adatot megbízhatóan TCP szállítási protokoll segítségével továbbíthatunk. Azonban a TCP torlódásvezérlő mechanizmusa komoly korlátot jelent az átviteli teljesítményre a nagytávolságú és nagy sávszélességű kapcsolatokon. A standard TCP torlódásvezérléséből eredő szűk keresztmetszetre egy gyakorlati példával szeretnénk rávilágítani: Egy 100ms késleltetésű, 10Gbit-es kapcsolaton 1500 bájtos standard TCP csomagokat forgalmazunk. Ahhoz, hogy egy TCP adatfolyammal tartósan elérjük a 10Gbit-es fizikai kapcsolat maximális kapacitását, az ablakméretet 121665kB méretűre kellene beállítani, ráadásul a csomagvesztési arány nem lehetne több mint egy torlódás 5 millió csomagonként. A felállított tesztrendszerrel és a benne végzett mérésekkel célunk az volt, hogy megvizsgáljunk az utóbbi időkben megjelent alternatív TCP változatok teljesítményparamétereit és viselkedésüket nagysebességű, magas késleltetésű hálózatokon. Vizsgálatainkat két lépésre bontottuk, az elsőben meghagytuk a TCP protokollhoz kapcsolódó kernel-paramétereket alapértelmezett értékeiken, majd a második lépésben elvégeztük a méréseket finomhangolt paraméter-beállításokkal is. Vizsgált TCP variánsok TCP BIC/Cubic (nagy sávszélességű hálózatok: WAN/LAN) TCP Reno (Van Jacobson) TCP Westwood (vezeték nélküli hálózat: bit hiba <> torlódás) Highspeed TCP (HSTCP) Scalable TCP (STCP) (max. ablakméret > 65536) TCP Vegas TCP Hybla (műholdas kapcsolat, magas RTT, nagy sávszélesség) 1
Nagysebességű TCP variánsok A TCP BIC/Cubic a nagysebességű, nagy távolságú kapcsolatokon jelentkező teljesítmény problémára ad megoldást. Ennek megfelelően egyedi ablak-növelő függvényt alkalmaz. Nagyobb dinamikával képes alkalmazkodni a rendelkezésre álló sávszélességhez, anélkül, hogy rontaná a TCP fairness tulajdonságát. Bináris kereső algoritmus alkalmaz, mellyel logaritmikusan növelhető az ablakméret. A Westwood algoritmus a nyugta-folyamból próbál a kapcsolatra vonatkozó információt gyűjteni, miáltal pontosabb torlódási-ablak meghatározást érhető el. HSTCP módosított válaszfüggvénye kizárólag nagy ablakméret esetén érezteti hatását, sűrű torlódásos környezetben klasszikus TCP módban működik. A HSTCP különválasztja a válaszfüggvény módosításától a nagy kezdeti ablakméretet megvalósítását, mivel ahhoz közvetlen visszajelzésre lenne szükség a kapcsolatban közreműködő minden forgalomirányítótól, ellenkező esetben magas kockázatot hordozna csomagvesztés tekintetében. TCP BIC/Cubic A középső, lineáris szakasz ideje alatt az egyidejű TCP kapcsolatok versenyezhetnek a rendelkezésre álló sávszélességért: teljesül a fairness kritérium. Mérési környezet FTP szerver 1Gbit/sec LAN kapcsolattal. 1Gbit/sec gerinc sávszélesség Szoftver-környezet: OS: Linux Fedora Core 7, kernel v2.6.20-1 Forgalom generátor: Iperf v2.0.2 Forgalomelemző eszközök: Wireshark v0.99.5, tcpdump Mérési intervallum: 30 sec. Egyidejű TCP kapcsolatok száma: 1 (egyirányú) Alapértelmezett és módosított TCP kernel-paraméterek Módosítható torlódásvezérlés (sysctl) 2
Forgalom-karakterisztika: generált, folyamatos flow BDP (Bandwidth Delay Product) Átviteli teljesítmény számítása az aktuális ablak- és puffer-méretek, valamint az adott küldési ablakhoz tartozó RTT ismeretében: Torlódás-korlátozott átvitel: alacsony torlódási ablakméret Puffer-korlátozott átvitel: alacsony küldő vagy fogadó puffer-méret Debrecen-Budapest kapcsolat késleltetése (RTT): ~4.4ms Gerinckapcsolat maximális fizikai sávszélessége: 10Gbit/sec A következő szabály alkalmazásával meghatározhatóak a fogadó oldalon kívánatos optimális TCP puffer méretek a B x D szozat ismeretében. A képletben a sávszélesség megadásakor a két hálózati végpont közötti összeköttetés legalacsonyabb sávszélességű szegmensét vesszük alapul. (A mi esetünkben az 1Gbit/sec-os access kapcsolat a legszűkebb keresztmetszet.) Kernel paraméterek: Fogadó TCP puffer mérete: >= (RTT x BW) R= 0.0044 x 1Gbit = ~550Kbyte (BDP) Konfigurációs példa a Linux kernel TCP paramétereinek módosítására: /sbin/sysctl -w net.ipv4.tcp_congestion_control=bic echo "65536 131072 " > /proc/sys/net/ipv4/tcp_mem TCP átviteli teljesítmény Default: alapértelmezett TCP kernel-paraméterek, a kernel határozza meg rendszerindításkor a változók értékeit. Tuned: tcp_mem, tcp_rmem, tcp_wmem, tcp_app_win, tcp_sack, tcp_wmax, tcp_rmax kernelparaméterek módosított, finomhangolt értékekkel. BIC Cubic Reno Vegas HTCP Westwood Scalable Hybla 3
TCP Maximális átviteli teljesítmény (Mbit/sec) paraméterek Default 306 302 284 132 304 289 298 287 Tuned 549 552 575 243 608 606 539 - kbyte tcp_mem tcp_wmem tcp_rmem tcp_app_win tcp_sack wmem_max rmem_max Default Tuned 38912 51882 77824 65536 131072 16384 1660224 131072 87380 1660224 174760 31 1 131071 131071 15 1 Eredmények A klasszikus Reno torlódásvezérlés korlátai: alacsony hatékonyság magas BDP értékű hálózatokon, 64K maximális ablakméret, nincs szelektív nyugtázás (SACK). Számos TCP variáns látott napvilágot az elmúlt pár évben, jellemzően mindegyiket egy-egy jól meghatározott forgalom- és kapcsolattípusra tervezték, ezért univerzális TCP mechanizmusként nem sikerült felváltani a jelenleg is alapértelmezett TCP-Reno változatot. Ennek következtében a legoptimálisabb átviteli teljesítményt akkor kapjuk, ha az adott hálózati paraméterek, valamint forgalom-karakterisztika ismeretében választjuk ki a megfelelő torlódásvezérlő mechanizmust, valamint az alapértelmezett kernel-paramétereket hangoljuk a forgalom karakterisztikája alapján: sávszélesség, késleltetés, egyidejű TCP kapcsolatok száma, csomagvesztés, forgalom jellege, teljesítmény vs. fairness. A magas sávszélesség-késleltetés szorzatú kapcsolatokon a Reno és Vegas lassú ablaknövelő függvénye nem eredményez hatékony sávszélesség kihasználást, ezen kívül tovább rontja teljesítményüket a 64kB-ra korlátozott maximális ablakméret. A mérési eredményekből az is megállapítható, hogy a BIC, Cubic és HSTCP mechanizmusok nem megfelelő kernel-paraméter beállításokkal átlag alatti átviteli teljesítményt eredményeznek. A Westwood algoritmus működéséből adódóan alacsony maximális ablakméret (85kB) esetén is hatékony lehet bizonyos forgalmi szituációkban. Megoldás TCP kernel-paraméterek dinamikus szabályozása: minden kiépülő TCP kapcsolathoz karakterisztikájának megfelelő (útvonal sávszélessége, késleltetés, konkurens kapcsolatok, forgalom jellege) egyéni puffer méretek, illetve torlódásvezérlő mechanizmus beállítása. Window-based vs. Rate-based átvitelvezérlés Window-based: a maximális nyugtázatlan adatmennyiség hangolása (különböző TCP variánsok) 4
Rate-based: Csomagok közötti időtartam szabályozása küldésnél (UDT) Irodalom Allman, M. Paxson, V. Stevens, W.: TCP congestion control, RFC 2581 (RFC2581), http://www.faqs.org/rfcs/rfc2581.html TCP Westwood reference pages: http://www.cs.ucla.edu/nrl/hpi/tcpw/ TCP BIC/Cubic reference pages: http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/index_files/page703.htm 5