
æåã®éšåã§ã¯ãTCPã®ãããªãã«ãã³ãã·ã§ã€ã¯ããšããã€ãã®ãã¯ãããžãŒïŒTCPé«éãªãŒãã³ããããŒå¶åŸ¡ãšèŒ»èŒ³ããŠã£ã³ããŠã¹ã±ãŒãªã³ã°ïŒã調ã¹ãŸãã ã 第2éšã§ã¯ãTCPã¹ããŒã¹ã¿ãŒããšã¯äœããããŒã¿è»¢éé床ãæé©åããŠåæãŠã£ã³ããŠãå¢ããæ¹æ³ãããã³TCP / IPã¹ã¿ãã¯ãæé©åããããã®ãã¹ãŠã®æšå¥šäºé ãåéããŸãã
ã¹ããŒã¹ã¿ãŒã
TCPã«ã¯ãããŒå¶åŸ¡ãååšããŸããã80幎代åã°ã«ã¯ãããã¯ãŒã¯èç©ã®åŽ©å£ãæ¬åœã®åé¡ã§ããã åé¡ã¯ããããŒå¶åŸ¡ã§ã¯éä¿¡è ãããŒã¿å ã®åä¿¡è ããownãããããããšãèš±å¯ããŠããªãã£ããããããã¯ãŒã¯ã§ãããè¡ãããªãããã«ããã¡ã«ããºã ããªãã£ããšããããšã§ããã çµå±ãéä¿¡è ãåä¿¡è ãæ¥ç¶éå§æã®ãã£ãã«å¹ ãç¥ããªãããããããã¯ãŒã¯å ã®å€åããæ¡ä»¶ã«é床ãé©å¿ãããããã®äœããã®ã¡ã«ããºã ãå¿ èŠã§ãã
ããšãã°ãèªå® ã«ããŠãæ倧é床ã確ä¿ããããã«ãã¹ãŠã®ããŠã³ãªã³ã¯ãããŠã³ããŒããããªã¢ãŒããµãŒããŒãã倧ããªãããªãããŠã³ããŒãããå Žåã 次ã«ãèªå® ã®å¥ã®ãŠãŒã¶ãŒãäžæ¬ãœãããŠã§ã¢æŽæ°ããã°ã©ã ãããŠã³ããŒãããããšã«ããŸããã ãããªã®å©çšå¯èœãªãã£ãã«ã¯çªç¶éåžžã«å°ãããªãããããªãéä¿¡ãããµãŒããŒã¯ããŒã¿ã®éä¿¡é床ãå€æŽããå¿ èŠããããŸãã 圌ãåãé床ã§ç¶ãããšãããŒã¿ã¯åã«äžéã²ãŒããŠã§ã€ã§ãããŒãã«èç©ãããããã±ããã¯ããããããããŸããããã¯ããããã¯ãŒã¯ã®éå¹ççãªäœ¿çšãæå³ããŸãã
1988幎ãVan JacobsonãšMichael J. Karelsã¯ããã®åé¡ã«å¯ŸåŠããããã«ããã€ãã®ã¢ã«ãŽãªãºã ãéçºããŸãããã¹ããŒã¹ã¿ãŒããéè² è·é²æ¢ãé«éåéä¿¡ãé«éå埩ã§ãã ãããã¯ããã«TCPä»æ§ã®å¿ é éšåã«ãªããŸããã ãããã®ã¢ã«ãŽãªãºã ã®ãããã§ãã€ã³ã¿ãŒãããã®äžççãªåé¡ã¯ããã©ãã£ãã¯ãææ°é¢æ°çã«å¢å ãã80幎代åŸå/ 90幎代ååã«åé¿ããããšèããããŠããŸãã
ã¹ããŒã¹ã¿ãŒãã®ä»çµã¿ãç解ããããã«ããã¥ãŒãšãŒã¯ã®ã¯ã©ã€ã¢ã³ãããã³ãã³ã®ãµãŒããŒãããã¡ã€ã«ãããŠã³ããŒãããããšããŠããäŸã«æ»ããŸãããã ãŸããããªãã«ãã³ãã·ã§ã€ã¯ãå®è¡ãããŸãããã®éã«ãåœäºè ã¯ASKãã±ããã§åä¿¡ãŠã£ã³ããŠã®å€ã亀æããŸãã æåŸã®ACKãã±ããããããã¯ãŒã¯ã«å ¥ããšãããŒã¿äº€æãéå§ã§ããŸãã
ã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®ãã£ãã«å¹ ãæšå®ããå¯äžã®æ¹æ³ã¯ãããŒã¿äº€æäžã«ãã£ãã«å¹ ã枬å®ããããšã§ãããããããŸãã«ã¹ããŒã¹ã¿ãŒãã®åå ã§ãã æåã«ããµãŒããŒã¯TCPæ¥ç¶ã®æ°ãã茻茳ãŠã£ã³ããŠå€æ°ïŒcwndïŒãåæåããã·ã¹ãã å€ïŒLinuxã§ã¯initcwndïŒã«åŸã£ãŠå€ãæ§ããã«èšå®ããŸãã
cwndå€æ°ã®å€ã¯ãã¯ã©ã€ã¢ã³ããšãµãŒããŒéã§äº€æãããŸããã ããã¯ããã³ãã³ã®ãµãŒããŒã®ããŒã«ã«å€æ°ã«ãªããŸãã 次ã«ãæ°ããã«ãŒã«ãå°å ¥ãããŸããããµãŒããŒãšã¯ã©ã€ã¢ã³ãéã®ãéä¿¡äžãã®ããŒã¿ã®æ倧éïŒASKã§ç¢ºèªãããªãïŒã¯ãrwndãšcwndã®æå°å€ã§ãªããã°ãªããŸããã ãããããµãŒããŒãšã¯ã©ã€ã¢ã³ãã¯ããªãŒããŒããŒããŠã£ã³ããŠã®æé©å€ã«ã€ããŠã©ã®ããã«ãåæãããããšãã§ããŸããã å®éããããã¯ãŒã¯ã®ç¶æ ã¯çµ¶ããå€åããŠãããããåTCPæ¥ç¶ã調æŽããå¿ èŠãªãã¢ã«ãŽãªãºã ãæ©èœããããšãæãã§ããŸãã
解決çïŒäœéã§éä¿¡ãéå§ãããã±ããåä¿¡ã確èªããããšãŠã£ã³ããŠãå¢ãããŸãã ããã¯é ãã¹ã¿ãŒãã§ãã
åæcwndå€ã¯ãæåã«1ãããã¯ãŒã¯ã»ã°ã¡ã³ãã«èšå®ãããŠããŸããã RFC 2581ã§ã¯ãããã¯4ã»ã°ã¡ã³ãã«å€æŽãããRFC 6928ã§ã¯æ倧10ã»ã°ã¡ã³ãã«å€æŽãããŸããã
ãããã£ãŠããµãŒããŒã¯æ倧10åã®ãããã¯ãŒã¯ã»ã°ã¡ã³ããã¯ã©ã€ã¢ã³ãã«éä¿¡ã§ããŸãããã®åŸãéä¿¡ãåæ¢ããŠç¢ºèªãåŸ ã€å¿ èŠããããŸãã 次ã«ãåä¿¡ããACKããšã«ããµãŒããŒã¯cwndå€ã1ã»ââã°ã¡ã³ããã€å¢ããããšãã§ããŸãã ã€ãŸããASKã§ç¢ºèªãããåããã±ãŒãžã«å¯ŸããŠã2ã€ã®æ°ããããã±ãŒãžãéä¿¡ã§ããŸãã ããã¯ããµãŒããŒãšã¯ã©ã€ã¢ã³ãã䜿çšå¯èœãªãã£ãã«ãããã«ãå æãããããšãæå³ããŸãã

å³ 1.éè² è·å¶åŸ¡ããã³é²æ¢ã
ã¹ããŒã¹ã¿ãŒãã¯ããã©ãŠã¶ã¢ããªã±ãŒã·ã§ã³ã®éçºã«ã©ã®ããã«åœ±é¿ããŸããïŒ åTCPæ¥ç¶ã¯ã¹ããŒã¹ã¿ãŒããã§ãŒãºãééããå¿ èŠãããããã䜿çšå¯èœãªãã£ãã«å šäœãããã«äœ¿çšããããšã¯ã§ããŸããã ãã¹ãŠã¯å°ããªãªãŒããŒããŒããŠã£ã³ããŠããå§ãŸããåŸã ã«æ¡å€§ããŠããŸãã ãããã£ãŠãæå®ã®ããŒã¬ãŒãã«éãããŸã§ã«ãããæéã¯ãåŸåŸ©é 延ãšèŒ»èŒ³ãŠã£ã³ããŠã®åæå€ã®é¢æ°ã§ãã
Nã«çããcwndã«éãããŸã§ã®æéã

ãããå®éã«ã©ã®ããã«è¡ãããããç解ããããã«ã次ã®åæãèããŠã¿ãŸãããã
- ã¯ã©ã€ã¢ã³ããšãµãŒããŒããŠã£ã³ããŠãåä¿¡ããïŒ65,535ãã€ãïŒ64 KBïŒ
- ãªãŒããŒããŒããŠã£ã³ããŠã®åæå€ïŒ10ã»ã°ã¡ã³ã
- ãã³ãã³ãšãã¥ãŒãšãŒã¯éã®åŸªç°é 延ïŒ56ããªç§
64Kã®åä¿¡ãŠã£ã³ããŠã«ãããããããTCPæ¥ç¶ã®ã¹ã«ãŒãããã¯æåã¯èŒ»èŒ³ãŠã£ã³ããŠã«ãã£ãŠå¶éãããŸãã 64Kã®å¶éã«å°éããã«ã¯ã茻茳ãŠã£ã³ããŠã45ã»ã°ã¡ã³ãã«æ¡å€§ããå¿ èŠããããŸããããã«ã¯168ããªç§ããããŸãã

ã¯ã©ã€ã¢ã³ããšãµãŒããŒãã¡ã¬ããã/ç§ãçžäºã«äº€æã§ããå¯èœæ§ããããšããäºå®ã¯ãã¹ããŒã¹ã¿ãŒãã«ãšã£ãŠéèŠã§ã¯ãããŸããã

å³ 2.茻茳ãŠã£ã³ããŠã®æ¡å€§ã
茻茳ãŠã£ã³ããŠã®æ倧å€ã«éãããŸã§ã®æéãççž®ããããã«ããã±ãããè¡ãæ¥ããæéãã€ãŸããµãŒããŒãã¯ã©ã€ã¢ã³ãã«å°ççã«è¿ã¥ããæéãççž®ã§ããŸãã
ã¯ã©ã€ã¢ã³ããšãµãŒããŒã¯æ°åãŸãã¯æ°çŸããªç§ã§èŒ»èŒ³ãŠã£ã³ããŠã®æ倧å€ã«éããããããã¯1ã€ã®TCPæ¥ç¶ã§ãããããã¹ããŒã¹ã¿ãŒãã¯å€§ããªãã¡ã€ã«ã®ããŠã³ããŒãããããªã®ã¹ããªãŒãã³ã°ã«ã¯ã»ãšãã©åœ±é¿ããŸããã
ãã ããå€ãã®HTTPèŠæ±ã§ã¯ãã¿ãŒã²ãããã¡ã€ã«ãæ¯èŒçå°ããå Žåãæ倧茻茳ãŠã£ã³ããŠã«éããåã«è»¢éãçµäºããå ŽåããããŸãã ã€ãŸããWebã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã¯ããµãŒããŒãšã¯ã©ã€ã¢ã³ãéã®åŸåŸ©é 延ã«ãã£ãŠå¶éãããããšããããããŸãã
ã¹ããŒã¹ã¿ãŒãåèµ·åïŒSSRïŒ
TCPã¯ãæ°ããæ¥ç¶ã®ããŒã¬ãŒãã®èª¿æŽã«å ããŠãæ¥ç¶ãæå®ãããæé䜿çšãããªãã£ãå Žåã«èŒ»èŒ³ãŠã£ã³ããŠããªã»ããããã¹ããŒã¹ã¿ãŒãåèµ·åã¡ã«ããºã ãæäŸããŸãã ããã§ã®ããžãã¯ã¯ãæ¥ç¶ã®éã¢ã¯ãã£ãäžã«ãããã¯ãŒã¯æ¡ä»¶ãå€åããå¯èœæ§ãããããšã§ããéè² è·ãåé¿ããããã«ããŠã£ã³ããŠå€ã¯å®å šãªå€ã«ãªã»ãããããŸãã
åœç¶ã®ããšãªãããSSRã¯ãããšãã°ãŠãŒã¶ãŒã®éã¢ã¯ãã£ããªã©ã«ããäžæçã«ã¢ã€ãã«ç¶æ ã«ãªãå¯èœæ§ã®ãããé·å¯¿åœã®TCPæ¥ç¶ã®ããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸãã ãããã£ãŠããµãŒããŒäžã§SSRãç¡å¹ã«ããŠãé·æéæå¹ãªæ¥ç¶ã®ããã©ãŒãã³ã¹ãæ¹åããããšããå§ãããŸãã Linuxã§ã¯ã次ã®ã³ãã³ãã䜿çšããŠSSRã®ã¹ããŒã¿ã¹ã確èªããç¡å¹ã«ããããšãã§ããŸãã
$> sysctl net.ipv4.tcp_slow_start_after_idle $> sysctl -w net.ipv4.tcp_slow_start_after_idle = 0
å°ããªãã¡ã€ã«ã®è»¢éã«ãããã¹ããŒã¹ã¿ãŒãã®åœ±é¿ã瀺ãããã«ããã¥ãŒãšãŒã¯ã®ã¯ã©ã€ã¢ã³ãã次ã®ãã©ã¡ãŒã¿ãŒã䜿çšããŠæ°ããTCPæ¥ç¶ãä»ããŠãã³ãã³ã®ãµãŒããŒã«64 KBãã¡ã€ã«ãèŠæ±ãããšããŸãã
- 埪ç°é 延ïŒ56ããªç§
- ã¯ã©ã€ã¢ã³ããšãµãŒããŒã®åž¯åå¹ ïŒ5 Mbps
- ã¯ã©ã€ã¢ã³ããšãµãŒããŒã®åä¿¡ãŠã£ã³ããŠïŒ65 535ãã€ã
- 茻茳ãŠã£ã³ããŠã®åæå€ïŒ10ã»ã°ã¡ã³ãïŒ10 x 1460ãã€ã=ã14 KBïŒ
- å¿çãçæããããã®ãµãŒããŒã§ã®åŠçæéïŒ40ããªç§
- ãã±ããã¯å€±ãããããã±ããããšã«ASKãGETèŠæ±ã¯1ã»ã°ã¡ã³ãã«åãŸããŸã

å³ 3.æ°ããTCPæ¥ç¶ãä»ããŠãã¡ã€ã«ãããŠã³ããŒãããŸãã
- 0 msïŒã¯ã©ã€ã¢ã³ãã¯SYNãã±ããã§TCPãã³ãã·ã§ã€ã¯ãéå§ããŸã
- 28 msïŒãµãŒããŒã¯SYN-ACKãéä¿¡ãããµã€ãºrwndãèšå®ããŸã
- 56ããªç§ïŒã¯ã©ã€ã¢ã³ãã¯SYN-ACKã確èªããrwndãµã€ãºãèšå®ããŠãããã«HTTP GETèŠæ±ãéä¿¡ããŸã
- 84ããªç§ïŒãµãŒããŒãHTTPèŠæ±ãåä¿¡ããŸã
- 124ããªç§ïŒãµãŒããŒã¯64 KBå¿çã®äœæãçµäºãã10åã®TCPã»ã°ã¡ã³ããéä¿¡ããŸãããã®åŸãACKãåŸ æ©ããŸãïŒåæcwndå€ã¯10ã§ãïŒ
- 152ããªç§ïŒã¯ã©ã€ã¢ã³ãã¯10åã®TCPã»ã°ã¡ã³ããåä¿¡ããããããã«ACKã§å¿çããŸã
- 180ããªç§ïŒãµãŒããŒã¯ãACKãåä¿¡ãããã³ã«cwndãå¢ããã20åã®TCPã»ã°ã¡ã³ããéä¿¡ããŸã
- 208ããªç§ïŒã¯ã©ã€ã¢ã³ãã¯20åã®TCPã»ã°ã¡ã³ããåä¿¡ããããããã«ACKã§å¿çããŸã
- 236ããªç§ïŒãµãŒããŒã¯ãACKãåä¿¡ãããã³ã«cwndãå¢ããã15åã®æ®ãã®TCPã»ã°ã¡ã³ããéä¿¡ããŸã
- 264 msïŒã¯ã©ã€ã¢ã³ãã¯15åã®TCPã»ã°ã¡ã³ããåä¿¡ããããããã«ACKã§å¿çããŸã
æ°ããTCPæ¥ç¶ã§64 KBãã¡ã€ã«ã転éããã«ã¯ã264ããªç§ããããŸãã ããã§ãã¯ã©ã€ã¢ã³ããåãæ¥ç¶ãåå©çšããåãèŠæ±ãå床è¡ãããšãæ³åããŠã¿ãŸãããã

å³ 4.æ¢åã®TCPæ¥ç¶ãä»ããŠãã¡ã€ã«ãããŠã³ããŒãããŸãã
- 0 msïŒã¯ã©ã€ã¢ã³ãã¯HTTPãªã¯ãšã¹ããéä¿¡ããŸã
- 28ããªç§ïŒãµãŒããŒãHTTPèŠæ±ãåä¿¡ããŸã
- 68ããªç§ïŒãµãŒããŒã¯64 KBã®å¿çãçæããŸãããcwndå€ã¯ãã®ãã¡ã€ã«ãéä¿¡ããããã«å¿ èŠãª45ã»ã°ã¡ã³ããããæ¢ã«å€§ãããªã£ãŠããŸãã ãããã£ãŠããµãŒããŒã¯ãã¹ãŠã®ã»ã°ã¡ã³ããäžåºŠã«éä¿¡ããŸã
- 96ããªç§ïŒã¯ã©ã€ã¢ã³ãã¯45åã®ã»ã°ã¡ã³ããã¹ãŠãåä¿¡ããããããã«ACKã«å¿çããŸã
åãæ¥ç¶ãä»ããŠè¡ãããåãèŠæ±ãããã³ãã·ã§ã€ã¯ã«æéãè²»ããããšãªããã¹ããŒã¹ã¿ãŒãã«ããã¹ã«ãŒããããå¢å ãããããšãªãã96ããªç§ã§å®è¡ãããŸããã€ãŸãã275ïŒ é«éã§ãã
ã©ã¡ãã®å Žåããã¯ã©ã€ã¢ã³ããšãµãŒããŒã5 Mbpsã®åž¯åå¹ ãæã€ãã£ãã«ã䜿çšãããšããäºå®ã¯ããã¡ã€ã«ã®ããŠã³ããŒãæéã«åœ±é¿ãäžããŸããã§ããã 茻茳ãŠã£ã³ããŠã®ãµã€ãºãšãããã¯ãŒã¯é 延ã®ã¿ãå¶éèŠå ã§ããã èå³æ·±ãããšã«ããããã¯ãŒã¯é 延ãå¢å ãããšãæ°èŠããã³æ¢åã®TCPæ¥ç¶ã䜿çšãããšãã®ããã©ãŒãã³ã¹ã®å·®ã倧ãããªããŸãã
æ°ããæ¥ç¶ã®äœæã«ãããé 延ã®åé¡ãèªèããããããŒãã¢ã©ã€ãããã€ãã©ã€ã³ãå€éåãªã©ã®æé©åæ¹æ³ãããã«äœ¿çšããå¿ èŠããããŸãã
TCP茻茳ãŠã£ã³ããŠã®åæå€ãå¢ãããŸã
ããã¯ãTCPã䜿çšãããã¹ãŠã®ãŠãŒã¶ãŒãŸãã¯ã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããæãç°¡åãªæ¹æ³ã§ãã å€ãã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§ã¯ãæŽæ°ã§æ¢ã«10ãšããæ°ããå€ã䜿çšãããŠããŸãã Linux 10ã®å Žåãã«ãŒãã«ããŒãžã§ã³2.6.39以éã®ãªãŒããŒããŒããŠã£ã³ããŠã®ããã©ã«ãå€ã
éè² è·é²æ¢
TCPã¯ãããã©ãŒãã³ã¹ã®èª¿æŽã«åœ¹ç«ã€ãã£ãŒãããã¯ã¡ã«ããºã ãšããŠãã±ããæ倱ã䜿çšããããšãç解ããããšãéèŠã§ãã ã¹ããŒã¹ã¿ãŒãã¯ã茻茳ãŠã£ã³ããŠã®æ§ãããªå€ãšã®æ¥ç¶ãäœæããåä¿¡è ã®åä¿¡ãŠã£ã³ããŠãsshtreshã·ã¹ãã ã®ãããå€ã«éãããŸã§ããŸãã¯ãã±ããã倱ããå§ãããŸã§ãæéããšã«éä¿¡ãããããŒã¿éã2åã«ããŸãããã®åŸã茻茳åé¿ã¢ã«ãŽãªãºã ããªã³ã«ãªããŸãã
茻茳åé¿ã¯ããã±ããæ倱ããããã¯ãŒã¯èŒ»èŒ³ã®ææšã§ãããšããä»®å®ã«åºã¥ããŠããŸãã ãªã³ã¯äžã®ãã±ããã®ãã¹äžã®ã©ããããŸãã¯èç©ãããã«ãŒã¿ãŒãã±ããäžã®ã©ããã§ãããã¯ããããã¯ãŒã¯ã®ãããªããã©ãã£ãã¯ã®è©°ãŸããé²ãããã«èŒ»èŒ³ãŠã£ã³ããŠãæžããå¿ èŠãããããšãæå³ããŸãã
ãªãŒããŒããŒããŠã£ã³ããŠãçž®å°ãããåŸãå¥ã®ã¢ã«ãŽãªãºã ã䜿çšããŠããŠã£ã³ããŠãããã«æ¡å€§ããæ¹æ³ã決å®ããŸãã é ããæ©ãããå¥ã®ãã±ããæ倱ãçºçããããã»ã¹ãç¹°ãè¿ãããŸãã TCPæ¥ç¶ãééãããã©ãã£ãã¯ã®ã®ãããã®ãããªã°ã©ããèŠãããšãããå Žåãããã¯ãå¶åŸ¡ããã³èŒ»èŒ³é²æ¢ã¢ã«ãŽãªãºã ããããã¯ãŒã¯å ã®ãã±ããæ倱ã«å¿ããŠèŒ»èŒ³ãŠã£ã³ããŠã調æŽããããã§ãã
ãããã®ã¢ã«ãŽãªãºã ã®æ¹åã¯ãç§åŠçç 究ãšåžè²©è£œåã®éçºã®äž¡æ¹ã®æŽ»çºãªåéã§ããããšã¯æ³šç®ã«å€ããŸãã ç¹å®ã®ã¿ã€ãã®ãããã¯ãŒã¯äžã§ããŸãã¯ç¹å®ã®ã¿ã€ãã®ãã¡ã€ã«ã転éãããããªã©ãããé©åã«æ©èœãããªãã·ã§ã³ããããŸãã å®è¡ããŠãããã©ââãããã©ãŒã ã«å¿ããŠãTCP Tahoe and RenoïŒåæå®è£ ïŒãTCP VegasãTCP New RenoãTCP BICãTCP CUBICïŒããã©ã«ãã§ã¯LinuxïŒãCompound TCPïŒby Windowsã®ããã©ã«ãïŒããã³ä»ã®å€ãã®ã ç¹å®ã®å®è£ ã«é¢ä¿ãªããWebã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã«å¯Ÿãããããã®ã¢ã«ãŽãªãºã ã®åœ±é¿ã¯äŒŒãŠããŸãã
TCPã®æ¯äŸé床äœäž
ãã±ããæ倱ããå埩ããæåã®æ¹æ³ã決å®ããããšã¯ãæãç°¡åãªäœæ¥ã§ã¯ãããŸããã ããã«ç©æ¥µçã«åå¿ãããããšãå¶çºçãªãã±ããæ倱ãæ¥ç¶é床ã«é床ã«æªåœ±é¿ãåãŒããŸãã ååã«è¿ éã«å¿çããªãå Žåãããã«ãããã±ããæ倱ãããã«çºçããå¯èœæ§ãé«ããªããŸãã
æåã¯ãTCPã¯ä¹æ°ã®æžå°ãšå ç®ã®å¢å ïŒAIMDïŒã¢ã«ãŽãªãºã ã䜿çšããŸããããã±ããã倱ããããšã茻茳ãŠã£ã³ããŠã¯ååã«ãªããã©ãŠã³ãããªãããã±ãããééãããã³ã«æå®ã®éãã€åŸã ã«å¢å ããŸãã å€ãã®å ŽåãAIMDã¯é床ã«ä¿å®çãªã¢ã«ãŽãªãºã ã§ããããšãå€æãããããæ°ããã¢ã«ãŽãªãºã ãéçºãããŸããã
Proportional Rate ReductionïŒPRRïŒã¯ãRFC 6937ã§èª¬æãããŠããæ°ããã¢ã«ãŽãªãºã ã§ããããã®ç®çã¯ããã±ããæ倱åŸã«ããè¿ éã«å埩ããããšã§ãã ã¢ã«ãŽãªãºã ãéçºãããGoogleã®æž¬å®ã«ãããšããã±ããæ倱ã«é¢é£ããŠãããã¯ãŒã¯é 延ãå¹³å3ã10ïŒ åæžã§ããŸãã Linux 3.2以éã§ã¯ãPPRã¯ããã©ã«ãã§æå¹ã«ãªã£ãŠããŸãã
ãã£ãã«å¹ ãšé 延ã®ç©ïŒåž¯åå¹ é 延ç©-BDPïŒ
çµã¿èŸŒã¿ã®TCP茻茳å¶åŸ¡ã¡ã«ããºã ã«ã¯éèŠãªçµæããããŸããåä¿¡åŽãšéä¿¡åŽã®æé©ãªãŠã£ã³ããŠå€ã¯ãåŸåŸ©é 延ãšã¿ãŒã²ããããŒã¿ã¬ãŒãã«å¿ããŠå€åããå¿ èŠããããŸãã ãéä¿¡äžãã®æªç¢ºèªãã±ããã®æ倧æ°ã¯ãåä¿¡ããã³éè² è·ãŠã£ã³ããŠïŒrwndããã³cwndïŒããã®æå°å€ãšããŠå®çŸ©ãããããšãæãåºããŠãã ããã éä¿¡è ãæªç¢ºèªãã±ããã®æ倧æ°ãè¶ ããå Žåãéä¿¡è ã転éãåéã§ããããã«ãéä¿¡ãåæ¢ããåä¿¡è ãç¹å®ã®æ°ã®ãã±ããã確èªãããŸã§åŸ æ©ããå¿ èŠããããŸãã 圌ã¯ã©ããããåŸ ã€ã¹ãã§ããïŒ ããã¯ã埪ç°é 延ã«ãã£ãŠæ±ºãŸããŸãã
BDPã¯è»¢éäžã®ããŒã¿éã決å®ããŸã
éä¿¡è ãé »ç¹ã«åæ¢ãã以åã«éä¿¡ããããã±ããã®ACK確èªãåŸ ã€å¿ èŠãããå Žåãããã«ããããŒã¿ã¹ããªãŒã ã«ã®ã£ãããçããæ倧æ¥ç¶é床ãå¶éãããŸãã ãã®åé¡ãåé¿ããã«ã¯ã以åã«éä¿¡ãããã±ããããã®ACK確èªã®åä¿¡ãåŸ æ©ããŠãããŒã¿ãéä¿¡ã§ããããã«ãŠã£ã³ããŠãµã€ãºãååã«å€§ããèšå®ããå¿ èŠããããŸãã ãã®åŸãæ倧äŒéé床ãå¯èœã«ãªããã®ã£ããããªããªããŸãã ãããã£ãŠãæé©ãªãŠã£ã³ããŠãµã€ãºã¯åŸªç°é 延ã®é床ã«äŸåããŸãã

å³ 5.å°ããªãŠã£ã³ããŠå€ã«ããäŒéã®ã£ããã
åä¿¡ãŠã£ã³ããŠãšãªãŒããŒããŒããŠã£ã³ããŠã®å€§ããã¯ã©ããããã§ããïŒ äŸãèŠãŠã¿ãŸãããïŒcwndãšrwndã16 KBã«çããã埪ç°é 延ã100 msã«çãããšããŸãã 次ã«ïŒ

éä¿¡åŽãšåä¿¡åŽã®éã®ãã£ãã«ã®å¹ ã«é¢ä¿ãªãããã®ãããªæ¥ç¶ã§ã¯1.31 Mbpsãè¶ ããé床ãåŸãããªãããšãããããŸãã é床ãäžããã«ã¯ããŠã£ã³ããŠã®å€ãå¢ãããã埪ç°é 延ãæžããå¿ èŠããããŸãã
åæ§ã«ã埪ç°é 延ãšå¿ èŠãªãã£ãã«å¹ ãç¥ã£ãŠããŠã£ã³ããŠã®æé©å€ãèšç®ã§ããŸãã æéã¯åãïŒ100ããªç§ïŒã®ãŸãŸã§ãéä¿¡åŽãã£ãã«å¹ ã¯10 Mbit / sã§ãããåä¿¡åŽã¯100 Mbit / sã®é«éãã£ãã«äžã«ãããšä»®å®ããŸãã ãããã®éã®ãããã¯ãŒã¯ã«äžéã»ã¯ã·ã§ã³ã§åé¡ããªããšä»®å®ãããšãéä¿¡è ã¯æ¬¡ã®ããã«ãªããŸãã

10 Mbpsãã£ãã«ãå®å šã«å æããã«ã¯ããŠã£ã³ããŠãµã€ãºãå°ãªããšã122.1 KBã§ããå¿ èŠããããŸãã ãŠã£ã³ããŠã¹ã±ãŒãªã³ã°ãæå¹ã«ãªã£ãŠããªãéããTCPã®æ倧åä¿¡ãŠã£ã³ããŠãµã€ãºã¯64 KBã§ããããšãæãåºããŠãã ããïŒRFC 1323ïŒã èšå®ãå確èªãããã1ã€ã®çç±ïŒ
幞ããªããšã«ããŠã£ã³ããŠã®ãµã€ãºå€æŽã¯ãããã¯ãŒã¯ã¹ã¿ãã¯ã§èªåçã«è¡ãããŸãã æªããã¥ãŒã¹ã¯ããããå¶éèŠå ã«ãªãå Žåãããããšã§ãã æ¥ç¶ãå©çšå¯èœãªãã£ãã«å¹ ã®ã»ãã®äžéšã®é床ã§éä¿¡ãããçç±ãçåã«æã£ãå Žåãããã¯ãŠã£ã³ããŠã®ãµã€ãºãå°ããããã§ããå¯èœæ§ãé«ãã§ãã
é«éããŒã«ã«ãšãªã¢ãããã¯ãŒã¯ã®BDP
埪ç°é 延ã¯ãããŒã«ã«ãããã¯ãŒã¯ã®ããã«ããã¯ã«ãªãå¯èœæ§ããããŸãã 1ããªç§ã®åŸåŸ©é 延ã§1ã®ã¬ããã/ç§ãéæããã«ã¯ãå°ãªããšã122 KBã®ãªãŒããŒããŒããŠã£ã³ããŠãå¿ èŠã§ãã èšç®ã¯äžã«ç€ºãããã®ãšåæ§ã§ãã
ãã¥ãŒã®å é ã®ãããã¯ïŒè¡é ããããã³ã°-HOLããããã³ã°ïŒ
TCPã¯äžè¬çãªãããã³ã«ã§ãããç¹å®ã®ã±ãŒã¹ã«æãé©ããŠããã®ã¯ãããã ãã§ã¯ãããŸããã 泚æã®é éãªã©ã®æ©èœã¯å¿ ãããå¿ èŠã§ã¯ãªããå Žåã«ãã£ãŠã¯é 延ãå¢å ããå¯èœæ§ããããŸãã
åTCPãã±ããã«ã¯äžæã®ã·ãŒã±ã³ã¹çªå·ãå«ãŸããŠãããããŒã¿ã¯é çªã«å°çããå¿ èŠããããŸãã ãã±ããã®1ã€ã倱ãããå Žåããã®åŸã®ãã¹ãŠã®ãã±ããã¯ã倱ããããã±ãããåéãããŠåä¿¡è ã«å±ããŸã§ãåä¿¡è ã®TCPãããã¡ãŒã«æ ŒçŽãããŸãã ããã¯TCPå±€ã§çºçãããããã¢ããªã±ãŒã·ã§ã³ã¯ãããã®åéä¿¡ããããã¡å ã®ãã±ãããã¥ãŒããèªèããããããŒã¿ã䜿çšå¯èœã«ãªããŸã§åŸ æ©ããŸãã ã¢ããªã±ãŒã·ã§ã³ããèªèãããã®ã¯ããœã±ããããããŒã¿ãèªã¿åããšãã«çºçããé 延ã ãã§ãã ãã®å¹æã¯ããã¥ãŒã®éå§ããããã¯ããããšãšããŠç¥ãããŠããŸãã
ãã¥ãŒã®å é ããããã¯ãããšãã¢ããªã±ãŒã·ã§ã³ã§ãã±ãããæŽçããå¿ èŠããªããªããã³ãŒããç°¡çŽ åãããŸãã ãã ããäžæ¹ã§ããã±ããã®å°çã«äºæž¬ã§ããªãé 延ãçºçããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã«æªåœ±é¿ãåãŒããŸãã

å³ 6.ãã¥ãŒã®å é ããããã¯ããŸãã
äžéšã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãä¿èšŒä»ãé ä¿¡ãŸãã¯æ³šæé ä¿¡ãå¿ èŠãªãå ŽåããããŸãã åãã±ãããåå¥ã®ã¡ãã»ãŒãžã§ããå Žåãé çªã«é ä¿¡ããå¿ èŠã¯ãããŸããã ãŸããæ°ããã¡ãã»ãŒãžããããã以åã®ã¡ãã»ãŒãžãäžæžãããå Žåãä¿èšŒãããé ä¿¡ãå¿ èŠãããŸããã ããããTCPã«ã¯ãã®ãããªå Žåã®èšå®ã¯ãããŸããã ãã¹ãŠã®ãã±ãããé çªã«é ä¿¡ãããäžéšãé ä¿¡ãããªãå ŽåãåéãããŸãã é 延ãéèŠãªã¢ããªã±ãŒã·ã§ã³ã§ã¯ãUDPãªã©ã®ä»£æ¿ãã©ã³ã¹ããŒãã䜿çšã§ããŸãã
ãã±ããæ倱ã¯æ£åžžã§ã
TCPããã©ãŒãã³ã¹ãåäžãããã«ã¯ããã±ããæ倱ãå¿ èŠã§ãã 倱ããããã±ããã¯ããããã¯ãŒã¯ã®èŒ»èŒ³ãåé¿ããŠé 延ãæå°éã«æããããã«ãåä¿¡è ãšéä¿¡è ãéä¿¡é床ãå€æŽã§ãããã£ãŒãããã¯ã¡ã«ããºã ãšããŠæ©èœããŸãã
äžéšã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãããã±ãŒãžã®çŽå€±ããã³ããŒãã§ããŸããããšãã°ããªãŒãã£ãªããããªãåçããããã²ãŒã å ã®ã¹ããŒã¿ã¹ã転éããããé ä¿¡ã®ä¿èšŒãé åºã©ããã®é ä¿¡ã¯å¿ èŠãããŸããã ãããã£ãŠãWebRTCã¯ãã©ã€ããªãã©ã³ã¹ããŒããšããŠUDPã䜿çšããŸãã
ãªãŒãã£ãªã®åçäžã«ãã±ããæ倱ãçºçããå ŽåããªãŒãã£ãªã³ãŒããã¯ã¯åçã«å°ããªã®ã£ãããæ¿å ¥ããã ãã§ãçä¿¡ãã±ããã®åŠçãç¶è¡ã§ããŸãã ã®ã£ãããå°ããå ŽåããŠãŒã¶ãŒã¯ããã«æ°ä»ããªãå¯èœæ§ãããã倱ããããã±ããã®é ä¿¡ãåŸ æ©ãããšãåçã®é¡èãªé 延ãçºçããå¯èœæ§ããããããã¯ãŠãŒã¶ãŒã«ãšã£ãŠéåžžã«æªãããšã§ãã
åæ§ã«ãã²ãŒã ããã®ç¶æ ãæž¡ãå ŽåãæéTã®ç¶æ ã«é¢ããæ å ±ãæ¢ã«ããå ŽåãæéT-1ã®ç¶æ ãèšè¿°ãããã±ãããåŸ ã€ããšã¯æå³ããããŸããã
TCPã®æé©å
TCPã¯ããããã¯ãŒã¯ãæ倧éã«æŽ»çšããããã«èšèšãããé©å¿åãããã³ã«ã§ãã TCPã®æé©åã«ã¯ãTCPããããã¯ãŒã¯æ¡ä»¶ã«ã©ã®ããã«å¿çããããç解ããå¿ èŠããããŸãã ã¢ããªã±ãŒã·ã§ã³ã¯ããŠãŒã¶ãŒã®å®å®ããåäœã確ä¿ããããã«ãç¬èªã®å質ä¿èšŒïŒQoSïŒã¡ãœãããå¿ èŠãšããå ŽåããããŸãã
ã¢ããªã±ãŒã·ã§ã³ã®èŠä»¶ãšTCPã¢ã«ãŽãªãºã ã®å€æ°ã®æ©èœã«ããããã®åéã§ã®çžäºæ¥ç¶ãšæé©åã¯ç 究ã®å€§ããªåéãšãªã£ãŠããŸãã ãã®èšäºã§ã¯ãTCPã®ããã©ãŒãã³ã¹ã«åœ±é¿ããããã€ãã®èŠå ã«ã€ããŠã®ã¿è§ŠããŸããã éžæç確èªå¿çïŒSACKïŒãä¿çäžã®ç¢ºèªå¿çãé«éåéä¿¡ãªã©ã®è¿œå ã¡ã«ããºã ã«ãããTCPã»ãã·ã§ã³ã®ç解ãšæé©åãè€éã«ãªããŸãã
åã¢ã«ãŽãªãºã ãšãã£ãŒãããã¯ã¡ã«ããºã ã®ç¹å®ã®è©³çŽ°ã¯å€åãç¶ããŸãããäž»èŠãªååãšãã®çµæã¯å€ãããŸããã
- ããªãã«TCPãã³ãã·ã§ã€ã¯ã«ã¯é倧ãªé 延ã䌎ããŸãã
- TCPã¹ããŒã¹ã¿ãŒãã¯ããã¹ãŠã®æ°ããæ¥ç¶ã«é©çšãããŸãã
- TCPãããŒããã³èŒ»èŒ³å¶åŸ¡ã¡ã«ããºã ã¯ããã¹ãŠã®æ¥ç¶ã®ã¹ã«ãŒãããã調æŽããŸãã
- TCPã¹ã«ãŒãããã¯ã茻茳ãŠã£ã³ããŠãµã€ãºã«ãã£ãŠå¶åŸ¡ãããŸãã
ãã®çµæãçŸä»£ã®é«éãããã¯ãŒã¯ã®TCPæ¥ç¶ã§ããŒã¿ãéä¿¡ã§ããé床ã¯ã埪ç°é 延ã«ãã£ãŠå¶éãããããšããããããŸãã ãã£ãã«å¹ ã¯å¢å ãç¶ããŸãããé 延ã¯å ã®é床ã«ãã£ãŠå¶éãããå€ãã®å ŽåãTCPããã«ããã¯ã§ããã®ã¯ãã£ãã«å¹ ã§ã¯ãªãé 延ã§ãã
ãµãŒããŒæ§æã®ã»ããã¢ãã
åã ã®TCPãã©ã¡ãŒã¿ãŒãããããæ§æãã代ããã«ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ææ°ããŒãžã§ã³ã«æŽæ°ããããšããå§ããã®ãæåã§ãã TCPã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹ã¯é²åãç¶ããŠããããããã®å€æŽã®ã»ãšãã©ã¯ãæè¿ã®OSããŒãžã§ã³ã§ãã§ã«å©çšå¯èœã§ãã
ããµãŒããŒäžã®OSã®æŽæ°ãã¯ãããããªã¢ããã€ã¹ã®ããã«æããŸãã ãããå®éã«ã¯ãå€ãã®ãµãŒããŒã¯ç¹å®ã®ããŒãžã§ã³ã®ã«ãŒãã«çšã«æ§æãããŠãããã·ã¹ãã 管çè ã¯æŽæ°ã«å察ããå ŽåããããŸãã ã¯ããã¢ããã°ã¬ãŒãã«ã¯ç¬èªã®ãªã¹ã¯ã䌎ããŸãããTCPããã©ãŒãã³ã¹ã®èŠ³ç¹ããã¯ããããæãå¹æçãªã¢ã¯ã·ã§ã³ã«ãªãå¯èœæ§ããããŸãã
OSãæŽæ°ããåŸããã¹ããã©ã¯ãã£ã¹ã«åŸã£ãŠãµãŒããŒãæ§æããå¿ èŠããããŸãã
- 茻茳ãŠã£ã³ããŠã®åæå€ãå¢ãããŸããããã«ãããæåã®äº€æã§ããå€ãã®ããŒã¿ã転éã§ããããã«ãªãã茻茳ãŠã£ã³ããŠã®æé·ãå€§å¹ ã«å éãããŸãã
- ã¹ããŒã¹ã¿ãŒããç¡å¹ã«ããïŒäžå®æéã¢ã€ãã«æ¥ç¶ããåŸã«ã¹ããŒã¹ã¿ãŒããç¡å¹ã«ãããšãé·æéæå¹ãªTCPæ¥ç¶ã®ããã©ãŒãã³ã¹ãåäžããŸã
- ãŠã£ã³ããŠã®ã¹ã±ãŒãªã³ã°ãæå¹ã«ããïŒããã«ãããåä¿¡ãŠã£ã³ããŠã®æ倧å€ãå¢å ããé 延ã倧ããæ¥ç¶ãé«éåããŸã
- TCP Fast Openãæå¹ã«ããïŒããã«ãããæåã®SYNãã±ããã§ããŒã¿ãéä¿¡ã§ããããã«ãªããŸãã ããã¯æ°ããã¢ã«ãŽãªãºã ã§ãããã¯ã©ã€ã¢ã³ããšãµãŒããŒã®äž¡æ¹ãããããµããŒãããå¿ èŠããããŸãã ã¢ããªã±ãŒã·ã§ã³ããã®æ©æµãåãããã©ããã確èªããŸãã
ä»ã®TCPãã©ã¡ãŒã¿ãèšå®ããå¿ èŠãããå ŽåããããŸãã HTTPã®TCPãã¥ãŒãã³ã°ãåç §ããŠãã ãããããã¯ãHTTPã¯ãŒãã³ã°ã°ã«ãŒãã«ãã£ãŠå®æçã«æŽæ°ãããŸãã
LinuxãŠãŒã¶ãŒã®å Žåãssã¯éããŠãããœã±ããã®ããŸããŸãªçµ±èšã確èªããã®ã«åœ¹ç«ã¡ãŸãã ã³ãã³ãããã³ããã§ã次ã®ããã«å ¥åããŸã
ss --options --extended --memory --processes --info
çŸåšã®ãã¢ãšãã®èšå®ã衚瀺ãããŸãã
ã¢ããªã±ãŒã·ã§ã³ã®ã»ããã¢ãã
ã¢ããªã±ãŒã·ã§ã³ãæ¥ç¶ã䜿çšããæ¹æ³ã¯ãããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸãã
- ããŒã¿è»¢éã«ã¯æéãããããŸã> 0ã éä¿¡ãããããŒã¿ã®éãæžããæ¹æ³ãæ¢ããŸãã
- ããŒã¿ãå°ççã«é¡§å®¢ã«è¿ã¥ãã
- TCPæ¥ç¶ãåå©çšããããšã¯ãããã©ãŒãã³ã¹ãåäžãããããã«éèŠã§ãã
äžèŠãªããŒã¿è»¢éã®é€å€ã¯ããã¡ãããæé©åã®æãéèŠãªã¿ã€ãã§ãã ããã§ãç¹å®ã®ããŒã¿ã転éããå¿ èŠãããå Žåã¯ãããããé©åãªå§çž®ã¢ã«ãŽãªãºã ã䜿çšããŠããããšã確èªããããšãéèŠã§ãã
äžçäžã®ãµãŒããŒããã¹ãããããCDNã䜿çšããŠããŒã¿ãã¯ã©ã€ã¢ã³ãã«è¿ã¥ãããšãã©ãŠã³ãããªããã¬ã€ãã³ã·ãåæžããTCPããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸãã
æåŸã«ãå¯èœãªå Žåã¯ãã¹ãŠãæ¢åã®TCPæ¥ç¶ãåå©çšããŠãã¹ããŒã¹ã¿ãŒãã¢ã«ãŽãªãºã ãšèŒ»èŒ³å¶åŸ¡ã«ããé 延ãåé¿ããå¿ èŠããããŸãã
çµè«ãšããŠãTCPãæé©åããããã«å¿ èŠãªããšã®ãã§ãã¯ãªã¹ãã¯æ¬¡ã®ãšããã§ãã
- ãµãŒããŒOSã®æŽæ°
- cwndã10ã«èšå®ãããŠããããšã確èªããŠãã ãã
- ãŠã£ã³ããŠã®ã¹ã±ãŒãªã³ã°ãæå¹ã«ãªã£ãŠããããšã確èªããŠãã ãã
- ã¢ã€ãã«æ¥ç¶åŸã®ã¹ããŒã¹ã¿ãŒããç¡å¹ã«ãã
- å¯èœãªå Žåã¯TCP Fast Openãæå¹ã«ããŸã
- äžèŠãªããŒã¿ã®è»¢éãæé€
- éä¿¡ããŒã¿ãå§çž®ãã
- ãµãŒããŒãå°ççã«ã¯ã©ã€ã¢ã³ãã«è¿ã¥ããŠãåŸåŸ©é 延ãåæžããŸã
- å¯èœãªå Žåã¯TCPæ¥ç¶ãåå©çšããŸã
- HTTPã¯ãŒãã³ã°ã°ã«ãŒãã®æšå¥šäºé ã確èªãã