ãªã QUIC ã SPDY ãçã¾ããã®ã ?
Intro
Google ã SPDY ã®éçºãå§ããã®ã¯ 2009 å¹´ã§ã 2012 å¹´ã« HTTP2.0 ã®ãã©ããã¨ãã¦æ¡ç¨ããããããããã¡ãã£ã¨è©±é¡ã«ãªãã¾ããã
ç¿ 2 æã«ã¯æ°ããªãããã³ã« QUIC ã®åå¨ã Chromium ã®ã½ã¼ã¹ãããªã¼ã¯ããã®ã§ããããã°ããã¯é³æ²æ±°ãªãã
6 æã«å
¥ã£ã¦ãã£ã¨ Google ããå
¬å¼ã¢ãã¦ã³ã¹ã¨ããã¥ã¡ã³ãé¡ãåºã¾ããã
å»å¹´ããä»å¹´ã«ããã¦ç«ã¦ç¶ãã«åºã¦ããæ°ãããããã³ã«ã®è©±ã
ãªãä» Web ã®ãããã³ã«ãè¦ç´ãããã®ãï¼
ä½ãåé¡ã§ããªã Google ã¯ããããä½ãå¤ããã®ãï¼
SPDY ã QUIC 㯠Google ã®ç¬èªãããã³ã«ã ãã©ãããã¯æ¬å½ã«ãã ã®ç¬èªãããã³ã«ã§çµãããã¦ããã®ãï¼
20% ã«ã¼ã«ã§ä½ã£ã¦ã¿ã Play ããã¸ã§ã¯ãã§ãããªãã®ãï¼
ããããæ°ããåãã«ã¯ãããªãããããã¾ã§ãã¨ãä»ããè¸ã¾ããè°è«ãèµ·ããã¾ãã
ã¤ã¾ããããã追ãã¨ããä»ä½ãèµ·ãã£ã¦ããã®ãï¼ããç¥ããã¨ãã§ãã¦é常ã«å¾ããã®ãããã¾ãã
ãããã³ã«ã®è§£èª¬ã¯ä½åº¦ãæ¸ãããã©ããããã話ãããå°ãæ¸ãã¦ããããã¨æã
èªåããããç¯å²ã§ã¡ãã£ã¨ã¤ãã¤ãã¨æ¸ãã¦ã¿ãããã¨æãã¾ãã
Web ãéãããã¨ãããã¨
åç´ã«Web ãé«éåããã¨ãã£ã¦ãæ§ã
ãªã¬ã¤ã¤ãããã¾ãã
ãã¨ãã°ãã±ã£ã¨æµ®ãã¶ç¯å²ã§ã以ä¸ã®ãããªãã®ãããã¾ãã
- A, Web ã¢ããª/ã·ã¹ãã /ãµã¼ãã¹ã®é«éå
- B, ãã©ã¦ã¶ããµã¼ããããã¯ããã«ã¼ãã«ã®ãããã¯ã¼ã¯å¨ããªã©ã®é«éå
- C, ãããã¯ã¼ã¯æ©å¨ãªã©ã®é«éå
- D, ãããã¯ã¼ã¯å¸¯åãªã©ã®ã¤ã³ãã©ã®å¼·å
A ã¯ã Web ã¢ããªããã£ã¦ãããé
ãããéããããã¨ããå ´åã§ãã
ISUCON ã§è¡ããã¦ãããããªãã¥ã¼ãã³ã°ãªãããæµ®ãã¶ã§ããããããã¯ä¸è¬ã®éçºè
ã«ã¨ã£ã¦ä¸çªæãåºããããã¬ã¤ã¤ã«ãªãã¾ããèªåã®ã¢ããªãªã®ã§ãã¢ãããã¼ããããããã§ãã
B ã¯ã Chrome ãéããªã Nginx ãéããªãã¨ãã¨ãã£ãã¬ã¤ã¤ã§ãã
OSS ã§ããã°ãããããæãããã¨ã§è²¢ç®ã¯ã§ãã¾ãããèªåã®ãããã¯ãã«æãå ããã®ã¨æ¯ã¹ãã°å¤å°æ·å±
ã¯ä¸ããããããã¾ãããã¢ãããã¼ãã¯å®æçãªãã®ã«ãªããå¤å°æéãå¿
è¦ãªãã¾ãã
C ã¯ã ã¢ããªã®éçºè ããã¯é常æèãããªãã¬ã¤ã¤ã§ããããã¯ã¼ã¯ä¸ã®æ©å¨ã¨ãããããã¬ã¤ã¤ã«ãªãã¾ãããã PC èªä½ã® NIC ã¨ããå ¥ãããã§ããæ¬æ ¼çã«ãã¼ãããããã§ããã®ã§ãã¢ãããã¼ãã¯ããæéãããããããªããªãæãå ¥ãããã¨ãé£ããé¨åã«ãªã£ã¦ãã¾ãã
D ã¯ãé常ä¸è¬ã®éçºè ã§ã¯æãåºãªãã¬ã¤ã¤ã§ãããããã¯ã¼ã¯äºæ¥è ãªã©ãã¤ã³ãã©ã«æè³ããããã¨ã§ãæ¹åãã¦ããã¾ããããããããã®ã¯å¸¯åã®æ¹åãªã©ã§ãããµã¤ã¯ã«ã¯ãããã®ã«ããã¨ããè¨ããªãããã§ãã
ãã¦ããããã®æ¹åã¯ãç¬ç«ãã¦å®æ½ã§ãã¾ããã¤ã¾ãããããããå¥ã ã«åªåããã¦æ¹åã§ããããããçµã¿åããã£ã¦å ¨ä½ããéãããããã¨ãã§ãã¾ãã
ãªããç¬ç«ã§å®æ½ã§ããããããã¯ãããã¯ã¼ã¯ã®ä¸çã«ã¬ã¤ã¤ã®èãæ¹ããããåã¬ã¤ã¤ã«ãç´æäºãã¨ãã¦ã®æ¨æºãããã³ã«/ãã©ã¼ããããåå¨ããããã§ããæ å½ããã¬ã¤ã¤ã®ä¸ã§ããããã³ã«/ãã©ã¼ãããã«å¾ã£ã¦å®è£ ããã¦ããã°ããç¸äºæ¥ç¶æ§ããä¿ããããããã¯ããªã©ãã¢ãããã¼ããã¦ããWeb ãå£ããããã¨ãé²ããã¨ãã§ãã¾ãããããããããã³ã«/ãã©ã¼ãããããæ¨æºä»æ§ãã¨ãã¦å®ç¾©ããã¡ãªããã§ãã
ç¬ç«ã§å®æ½ã§ããã¨ãããã¨ã¯ã大ããã«ã¨ãããã¨ãããã¬ã¤ã¤ãæ¹åããã°ããã«ããã¯ã¯ä»ã«ç§»ãã¾ã(ã¢ããªãååã«æ©ããã°ããããã¯ã¼ã¯ãããã¯ã«ãªããªã©)ãããã¦ãåã ã®ã¬ã¤ã¤ã§æ¹åãé²ãã¨ãæçµçã«ããã«ããã¯ã¯ããã®ã¬ã¤ã¤ãã¤ãªããããã³ã«/ãã©ã¼ãããã«ç§»ã£ã¦ããå ´åãããã¾ããä»åä¸çªçµ¡ãã§ããã®ã¯ããã©ããªã«å¸¯åã¨ã¢ããªãæ©ãã¦ãã HTTP ãããã«ããã¯ã«ãªããã¨ãã£ããã¿ã¼ã³ã§ãã
ãã®ã¬ã¤ã¤ãæ¨æºãããã³ã«/ãã©ã¼ãããèªä½ã®æ¹åã¯ãå
ã»ã©ã®ãªã¹ãã«å ã㦠E ã¨ãã¦ããã¾ãããã
æ¨æºä»æ§ã®æ¹åãªã©ã«ãããã®ã§ã IETF ã W3C ãªã©ã«åå ãããã¨ã§è²¢ç®ã¯ã§ãã¾ããä¸è¬ã®æè¡è
ã«ã¯æ·å±
ãé«ãã§ããããã¾ãã¹ãã¼ã¯ãã«ããå¤ãã®ã§ãè°è«ãå¤å²ã«ãããã決ã¾ã£ã¦ãæ®åã«æéããããå ´åãå¤ãã§ãã
Make the Web Faster
Google ã¯ã Make The Web Faster ã¨ããããã¸ã§ã¯ããå®æ½ãã¦ãããããã§ã¯ Google ã¨ãããã¸ã·ã§ã³ã ããããã§ãã Web ã®æ¹åæ¹æ³ã®éçºããä»æ§ã®ææ¡ãè¡ã£ã¦ãã¾ãã(以ä¸ãé·ãã®ã§åã«ããã¸ã§ã¯ãã¨è¨ã£ãããããæãã¨ãã¾ãã)
Page Speed ã¨ãããããã¯ãã¯ãå ã® A ã«ãããã¾ãã Apache ã®ã¢ã¸ã¥ã¼ã«ãªã©ã¨ãã¦æä¾ããã¦ãã¦ãèªåã®ã¢ããªã«åãè¾¼ãã°ãããã¤ããã©ã¼ãã³ã¹ Web ãµã¤ããã«ãããããªæ¹åã®è£å©ããã¦ããããã®ã§ãããã®å 容ãããã¹ããã©ã¯ãã£ã¹ã¨ãã¦ã¾ã¨ãããã®ãå ¬éããã¦ãã¾ãã
æè¿ãã£ããã·ã§ã¢ã伸ã°ãã Chrome ãéããªãã®ã¯ã B ã«ãããã§ããããã¾ãã Chrome ã®æ¹å㯠Google ãæ®éã«ãã£ã¦ãããã¨ã§ã Make the Web Faster ã«ãªã¹ãããã¦ããã®ã¯ã Chrome ã® Analyze æ©è½ã®æ¹åã«ãªã£ã¦ãã¾ãã
Google ãæä¾ãã DNS ã CDN ãããã¸ã§ã¯ãã«å«ã¾ãã¦ãã¾ãã Google ã®å¼·åãªã¤ã³ãã©ããã¼ã¹ã¨ãããã®ã§ã C ã D ã«å«ã¾ããã¨è¨ãããã§ãã
ã§ã¯ E ã«ã¯ã©ããã£ããã®ãå«ã¾ããã®ã§ããããï¼
Google ãåãçµã Protocol / Standards ã®æ¹å
E ã®ä¸èº«ã¨ã㦠Make the Web Faster ã«ã¯ Protocol / Standards ãåãã¦ã®ãã¦ããã¾ãã
Standards
Web ã¯ãããã¯ã¼ã¯ãä»ãã®ã§ãéä¿¡ãããã¡ã¤ã«ã®ãµã¤ãºã¯å°ããã»ã©æå©ã§ããããã¦ããµã¤ãºã大ãããã¡ã¤ã«ã®ä»£è¡¨ãç»åã¨åç»ã§ãããã
WebP ã¯ã PNG ã JPEG ã¨ãã£ã Standard ãªå½¢å¼ããããå¹çã®è¯ãå§ç¸®å½¢å¼ã§ãã Facebook ãªããã使ãå§ãã¦ãã¾ãããã¾ã 対å¿ãããªã¼ãµãªã³ã°ãã¼ã«ãªã©ããªãã¦ã¡ãã£ã¨åé¡ã«ãªã£ãããã¦ãã¾ãã
æ¨æºçãªãã©ã¼ããããå¤ããã®ã¯ã¾ãé£ãããã®ã§ããããããããã¸ã§ã¯ãã®ä¸ã¤ã§ãã
(ã¡ãªã¿ã«ãåç»çã® WebM ãããã¾ãããã¾ã詳ãããªãã®ã§ãããããã¯ã³ã¼ããã¯åé¡ã¨ããã£ã¡ã主ç¼ã¿ããã§ãããã¸ã§ã¯ãã«ã¯ãªã¹ãããã¦ãã¾ããã)
ç»åãåç»ã«éããå§ç¸®çãé«ããã¨ã¯æå©ã§ããå§ç¸®ãæå¹ã«ããã¨ããã¾ãã¾ãããããã¡ã¤ã誤差ç¨åº¦ã«ãªãã»ã©ã«ã¯å¹çãè¯ããªãå ´åãããã¾ããã§ããã®å§ç¸®ã®å®çªã§ãã gzip ãæ¹åããã®ã Zopfli ã§ãã ããã¸ã§ã¯ãã«ã¯ä¸ãã£ã¦ãã¾ããããå§ç¸®ã«å¤å°æéãããã代ããã«ãµã¤ãºã 3-8% å°ãããªããå±éæéã¯åããã¨ãããã®ãå§ç¸®ã¯ Web ã ãã®åé¡é åã§ã¯ããã¾ããããã¢ããã¼ã·ã§ã³ã¯åãããªã¨æã£ã¦ãã¾ãã
ä»ã«ã¯ã HTML5 ã¾ãã㧠W3C ã«è²¢ç®ãããã¨èªä½ãããã¸ã§ã¯ãã®ä¸ç°ã¨ãã¦ãä½ç½®ä»ãããã¦ããã¿ããã§ãã(ã¾ãããããããã¸ã§ã¯ããè¶
ãã¦ã Google èªä½ã®å¤§ããªããã·ã§ã³ã§ããããã)
Protocol
å ã»ã©ã® D ã®æ¹åã§ãä¾ãã°ãããã¯ã¼ã¯å¸¯åãå¢ããã¨ããåç»ã大ããªãã¡ã¤ã«ã®ããåãã®æ¹åã¯æå¾ ã§ãã¾ãããå°ãããã¡ã¤ã«ã®éåã§ãã Web ãã¼ã¸ã®èªã¿è¾¼ã¿ã®æ¹åã¯éçãããã¾ãã
å®é Web ãã¼ã¸ã«ã¤ãã¦è¨ãã°ã帯åããã RTT ã®æ¹åã®æ¹ãå¹æã大ãããã¨ãã Google ã®調査ãããããã£ã¦ãã¾ãã
RTT ã®æ¹åã¯ãè¦ããã«è¡ã£ã¦è¿ã£ã¦ããã¾ã§ã®æéã®ç縮ã§ãããããã¯ç©ççãªè·é¢ãªã©ãé¢ä¿ããã®ã§æ¹åã¯é£ããã§ãã
Web ãã¼ã¸ã®åå¾ã«ã¯ã DNS åå解決ã TCP æ¥ç¶(3-way-handshake)ã HTTP req/res ãªã©ãå¿ è¦ã«ãªããå¢ããã»ã© RTT ã®ç·åã¯é·ããªãã®ã§ããããããRTT ã®æ°ãæ¸ãããã¨ããã®ãç¾å®çãªã¢ããã¼ãã§ããã¢ããªå´ã§ãã¡ã¤ã«ãçµ±åãããªã©ã®æ¹æ³ãããã«ãããã¾ããããããããããã³ã«èªä½ãè¦ãªããã°ããã£ã¨æ¸ãããããããã¾ããã
HTTP ã¯ãããããè«æã®å
±æãªã©ãç®çã«ä½ãããã·ã¹ãã ãªã®ã§ãè¨è¨ãããã¹ãããã¥ã¡ã³ãã®å
±æã«å¯ããä»çµã¿ã¨ãªã£ã¦ãã¾ããã
ããèªä½ã¯ãéè¦ãªè¨è¨ææ³ã ã£ãã¨æãã¾ããæ±ããããããã¹ããããã³ã«ãã¹ã±ã¼ã«ãããããã¹ãã¼ãã¬ã¹æ§ãã·ã³ãã«ãªãã¶ã¤ã³ã ã£ãããããã Web ã¯ããã¾ã§æ®åããã¨è¨ããã§ãããã
åé¡ã¯ã Web èªä½ãååãããã»ã©ã«æ®åããä»ãã¢ããª/ã·ã¹ãã /ã²ã¼ã ãªã©ã®ãã©ãããã©ã¼ã ã¨ãã¦ä½¿ãããåä¸ããã¥ã¡ã³ãã®é²è¦§ã«çã¾ããªãæ§ã ãªç¨éã«ä½¿ãããããã«ãªã£ãä»ç¾å¨ã«ããã¦ããã®ãã¶ã¤ã³ã¯æ¬å½ã«æé©ãï¼ã¨ãããã¨ã ã¨æãã¾ãã
é常ãæ¨æºãããã³ã«ã«æãå
¥ããã®ã¯ãæ¥ç¶æ§ããªããªãããã«ç°¡åã«ã¯ã§ãã¾ããããããã Google ã¯å¤ãã® Web ãµã¼ãã¹ã¨ã¨ãã«ãã¯ã©ã¤ã¢ã³ãã¨ãªããã©ã¦ã¶ãæã£ã¦ãã¾ãã両æ¹ãåããã¤ã¦ã¼ã¶è¦æ¨¡ã大ãã Google ã¯ãGoogle ã®ãµã¼ãã¹ã« Chrome ã§æ¥ç¶ããã¦ã¼ã¶ã«ã ãããªã¬ãªã¬ãããã³ã«ã§å¤§è¦æ¨¡ãªå®è¨¼è©¦é¨ãè¡ããã¨ãã§ããã®ã§ãã
SPDY ã¨ã¯ãªãã ã£ãã®ã
Web ã®æ ¹å¹¹ãæããããã³ã«ã«æãå
¥ããåãçµã¿ã SPDY ã§ããç¾å¨ã§ã¯ Chrome 㨠Google ã®ã»ã¼ãã¹ã¦ã®ãµã¼ãã¹ã対å¿ãã大è¦æ¨¡ã«éç¨ããã¦ãã¾ãã
ç¬èªãããã³ã«ã¨ã¯ãã£ã¦ãããã¾ãæ¨æºããå¤ãããã±ãããæµãã¨ã intermediaries (proxy ã FW ãªã©ä¸éã«å ¥ããã®) ããã¾ãéããªãå¯è½æ§ãããã¾ããSPDY ãããã©ã«ãã SSL ã«ãã¦ããã®ã¯ããããæå³ãããã¾ããæå·åãã¡ããã°ä¸ã§ä½ãæµãã¦ãä¸éã§ã¯ããããªãã§ãããå¤ã«ããããããã¨ãããã¾ãããã¾ã 443 㯠80 ã¨ä¸¦ãã§ã»ã¼éããã¼ãã§ãã npn ã¨ããã¢ããã°ã¬ã¼ãã®ä»çµã¿ã Google ã®ææ¡ãããã®ã§å¯¾å¿ãå¤ãã®ããããããããã Google 並ã®ãµã¼ãã¹ã ã¨ã»ãã¥ãªãã£çã«å ¨é¨ SSL ã®æ¹ãããã¨ããå¤æã絡ãã§ããã¨æãã¾ããã
SPDY ã«ã¯ãããããªã¢ã¤ãã¢ãçãè¾¼ã¾ãã¦ãã¾ãããããã§ã¯TCP æ¥ç¶ã®æ±ãã«çç®ãã¾ãããã
HTTP/1.0 ã§ã¯ãæ¯åæ¥ç¶ããæ¯ååã£ã¦ãã¾ãããããã¥ã¡ã³ããåå¾ãã¦è¡¨ç¤ºããç¨éã§ããã°ãã¾ãèªç¶ã¨ããã°èªç¶ã§ãã
ãããããã¼ã¸ãæ§æããã³ã³ãã³ã(CSS, JS, Image)ãå¢ããã¨ãæ¯ååã£ã¦ 3-way-handshake ããããç´ãã®ã¯ãã¯ãç¡é§ã§ããããã§ã HTTP/1.1 ã§ã¯ Keep-Alive ã§ç¢ºç«ãã TCP æ¥ç¶ã使ãã¾ããããã«ãªãã¾ããã
使ãã¾ããã¨ãã£ã¦ããç¹ãã£ã±ãªãã¯è² è·ãå¢ããã®ã§ããã¼ã¸ã®ã³ã³ãã³ãå
¨é¨ãè½ã¨ãããåæãããã¨ããã§ãããããããã¼ã¸åä½ã§ã®ã©ã¤ããµã¤ã¯ã«ã®ç®¡çã¯å®¹æã§ã¯ãªãã Apache ãªã©ã§ã¯ãæéããã¢ã¯ã»ã¹åæ°ããªã©ã®ããããããææ¨ã§è¨å®ããã¦ããã®ãç¾ç¶ã®ããã§ãã
ãã¨ããã£ãã使ãã¾ããã¦ããåã®ã¬ã¹ãã³ã¹ãçµãããªãã¨æ¬¡ã®ãªã¯ã¨ã¹ããæããããªãã¨ããä»æ§ãããã 1 æ¬ã®ãªã¯ã¨ã¹ãã使ãã¾ããã¨éã«é
ããªãå ´åãããã¾ãããããã解決ããã®ã pipelining ã¨ããä»æ§ã ã£ãã®ã§ããã対å¿ãé£ãããããã対å¿ãã¦ããªããµã¤ãã¯å´©ãããã¨ããã£ãããããã©ã¦ã¶ããªãã®ãã®ãå¤ãã£ãã®ã§ã(Opera ã¯æå¹ã ã£ããã©ãç¡å¹ã«ãã¦ããã¦ã¼ã¶ãå¤ãã¿ãã)ã
ã¾ãããã£ãã¨ããã§そんなに速くならないという話ããã£ããã
pipelining ã¯10 å¹´è¿ããã£ã¦ãæ®åããããããã©ã¦ã¶ãã³ãã¯ããããã® TCP æ¥ç¶(6 æ¬ãã¡ã¸ã£ã¼)ãåæã«ç¢ºç«ãããã¨ã§ä¸¦è¡ãã¦ã³ã³ãã³ããåãããã«å®è£ ãã¾ãããä»æ§ã§ã¯ãåä¸ãµã¤ãã«ã¯ 2 æ¬ä½ã«ãããããã¨ããæ¨å¥¨ãããã®ã§ãããå®ã£ã¦ããã¨ä»ã®ãã©ã¦ã¶ãããé ããã¨ããã¬ããã«ãå¼µãããããªãã®ã§ããã³ãã¨ãã¦ã¯ãããããªãé¸æã ã£ãã®ã§ãããã(ãã£ã¦ 1 ãã¡ã¤ã³ã«ã¯ 6 æ¬ã¾ã§ã®å¶éã§ãããå¥ãã¡ã¤ã³ã ã¨ãã 6 æ¬ç¢ºç«ã§ãã¾ããéçãã¡ã¤ã«ãªã©ã¯ãµããã¡ã¤ã³ãå¥ãã¡ã¤ã³ã®CDN ã«ç½®ãã¾ãããã¨ããæé©åææ³ã¯ãããããã¾ãã)
SPDY ã¯ã 1 æ¬ã®æ¥ç¶ã極å使ãåãè¨è¨ã«ãªã£ã¦ãã¾ããå ·ä½çã«ã¯ãã³ãã¯ã·ã§ã³ã®ä¸ã«ãã¹ããªã¼ã ãã¨ããè«ççãªæ¥ç¶ãä½ããããã¯å¤éåããã¦ãã¾ãããã¨ãã° 3 ã¤ã®ã³ã³ãã³ãã®åå¾ã¯ 3 ã¤ã®ã¹ããªã¼ã ã確ç«ãã¦è¡ããåå¾ãçµãã£ã¦ãçµããã®ã¯ã¹ããªã¼ã ã§ã³ãã¯ã·ã§ã³ã¯ãã®ã¾ã¾ã§ãããã¹ããªã¼ã ã®é çªãèªç±ãªã®ã§ããããæ¥ç¶ãä½ãå¿ è¦ãããã¾ãã(çæ³ã¯)ã Keep-Alive + Pipelining + α ãªã¤ã¡ã¼ã¸ã§ãã
ãã¨ãä¸æ¬ã® TCP æ¥ç¶ã使ãç¶ãããã¨ã¯ã TCP ã®æ§è³ªä¸ãæå©ã§ãã
TCP ã¯ã輻輳å¶å¾¡ã®ãããæåã¯å°ãããã±ãããéããéããã³ã«ãã®ãµã¤ãºãå¢ããã¦ãããSlow Start ã¨ããä»çµã¿ãããã¾ããæ¥ç¶ãæ¯åããç´ãã¨ããã±ãããµã¤ãºãæ¯åãªã»ãããã¦ãã¾ãã¾ãã使ãã¾ããã°ãéãã°éãã»ã©ã³ãã¯ã·ã§ã³ã温ã¾ã£ã¦ã輻輳ãèµ·ããã¾ã§ã¯ãã±ãããµã¤ãºãå¢ãã¦å¹çããããªãã¾ãã
ã㦠TCP ã使ãã¾ããã¨ããç¹ã§ã¯ SPDY ã¯ã ãã¶å¹çãè¯ããªã£ãã¨æãã¾ããã§ããããã£ã¦ãæ¥ç¶ã確ç«ããå¾ãã®è©±ã§ãããããã ã¦ã¼ã¶ã«ã¨ã£ã¦ã¯ãä¸çªæåãã®è¡¨ç¤ºããã£ã±ãéè¦ã§ãã
Google 㯠SPDY 以å¤ã«ãã TCP ã®å±¤ã«ã¾ã§ä¸ããæ¹åææ¡ãããã¾ãã
ä¾ãã°ã TCP ã® 3-way-handshake ã Cookie ã使ã£ã¦ 1 åçç¥ãã TCP Fast Open ã¨ããä»æ§ããéä¿¡ããæåã®ãã±ãããµã¤ãºã大ãããã Increasing Initial Congestion Window ãªã©ãããã«ãããã¾ã(ãããããã¸ã§ã¯ãã«å
¥ã£ã¦ãã¾ã)ã
å®é㯠SPDY ã®ã¬ã¤ã¤ã ãã§ãªãã TCP ã®ã¬ã¤ã¤ã«ãæãå
¥ãããã®ãæ¬é³ã§ããã
TCP ã¨ã¯ãªãã ã£ãã®ã
TCP ã«ãæãå
¥ãããã¨èããæç¹ã§ããã£ã±ã TCP ã HTTP ã¨åæ§ã«ãç¾å¨ã®ãã¼ãºã«åããªããã¶ã¤ã³ãªã®ãããã¨ããçåãæã¤ã®ãæ£ããèãæ¹ãªã®ããããã¾ããã
ãããã TCP ã®ãã¶ã¤ã³ã£ã¦ãªãã ã£ãã§ãããï¼
èªåã®ããã«ããããã¯ã¼ã¯ãインター博士 ã«å¦ãã 人ãªãã TCP ã¯ãæ£ç¢ºã»ç¢ºå®ãã§ããã¨æãè¾¼ã¾ããã§ãããã
ãã®éãã§ã TCP ã® 3-way-handshake ã輻輳å¶å¾¡ãããããã¯ã¼ã¯ãéãã¦ç¢ºå®ã«ãã¼ã¿ãå±ããããã®ä»çµã¿ã§ããããããã£ããããä»ã»ã©ãããã¯ã¼ã¯ãè¯ããªãæ代ã§ãããã¼ã¿ã¯ç¢ºå®ã«ã¯ã©ã¤ã¢ã³ãã«å±ãã¾ããããæ£ç¢ºã»ç¢ºå®ããå®ç¾ããããã«ãã§ãã¯ããªãã©ã¤ã®ä»çµã¿ãæã£ã¦ããã®ã§ãã
SPDY ã¯ãã㪠TCP ã®ä¸ã«å¤éåã®ä»çµã¿ãè¨ãã¾ãããã¤ã¾ããã©ããªã«ã¹ããªã¼ã ãå¤éåãã¦ãããã±ããã¬ãã«ã§è½ã¡ãã°åéãèµ°ããã輻輳ãèµ·ããã°ãã±ãããµã¤ãºã¯ä¸ãã£ã¦ãã¾ãã¾ãã(HTTPã§ããããæ¥ç¶ãä½ã£ã¦ããé ã¯ãä¸åã®æ¥ç¶ã®å½±é¿ã¯ä»ã«ã¯åºãªãã£ãã®ã«ã)
3-way-handshake ããªãã¨ããªããªããã®ã§ããããã Fast Open ã§éããªãã®ã¯ Cookie ãã§ããå¾ãã¤ã¾ãæ¬å½ã«å対é¢ã®ãµã¼ãã¨ã¯ç¡çãªãã§ãããã
ãããã TCP ã¬ã¤ã¤ã®æ¹åã¯å½±é¿ã大ããããããããä½å°ãå°ãªãããªã«ãã OS ã¬ãã«ã®å¯¾å¿ãªã©ã«ãªãã®ã§ãæ®åã«ãæéããããã¾ã(å ã®äºã¤ã¯ããã«ã¼ãã«ã«ã¯å ¥ã£ã¦ãã¾ããã Windows ã«ã¯ç¡ãã§ã)ã
ãããããTCP ã®ä¸ã«å¤éåã¬ã¤ã¤ãã¨ããçºæ³èªä½ã¯ããããã¯ã¼ã¯ããã°ã©ãã³ã°ã®è¦ç¹ããè¦ãã¨çã®è¯ããã®ã§ã¯ãªãã¨ããã¾ããTCPèªä½ã®æ§è³ªã®ããã«ãããããä¸èªç±ãåºã¦ãã¾ãããåçãªæ¹åãè¦è¾¼ã¿ã«ããã
ãã㦠QUIC ã¸
ããã§ã Google 㯠TCP ã§ã¯ãªã UDP ã®ä¸ã« Web ãæ§ç¯ããã¨ããæ¹éã«ãåãçµã¿å§ãã¾ãããããã QUIC ã§ãã
UDP ã¯ããåãã®ã¨ããä¿¡é ¼æ§ãæ ä¿ããã¬ã¤ã¤ãããã¾ãããã¨ã«ããéãã¤ãã¦ãå¾ã¯ãããã¨ãããããªä»çµã¿ã§ãããã®ãããæ åã®é ä¿¡ã®ãããªãã¡ãã£ã¨ãããæ¬ ãã¦ãããããã©ãã©ãéããã¨ããç¨éãªããã«ä½¿ãããã¨ãã説æãå¤ãã§ãããã
ãããã«ãã®ã¾ã¾ã ã¨ãå®å®ãã Web ã®æä¾ã¯ã§ãã¾ããããã㧠QUIC ã¯ãç¬èªã«ä¿¡é ¼æ§ã確ä¿ããã¬ã¤ã¤ã UDP ã®ä¸ã«æ§ç¯ãã¦ãã¾ãã
å
·ä½çã«ã¯ã TCP ã®ããã«ã¹ããªã¼ã å
¨ä½ã«å½±é¿ããªããããªè¼»è¼³å¶å¾¡ããåéãæ¸ããããã®èª¤ãè¨æ£ã®ä»çµã¿ã§ãã
ã¾ããå
ã®çç±ã¨åããå
¨ä½ãæå·åããã¬ã¤ã¤ãèªåã§æã£ã¦ãã¾ãã
ãã®ä¸ã«ãå¤éåã®ã¬ã¤ã¤ãæ§ç¯ãã¦ã SPDY ãæä¾ãããã¨ã«ãã£ã¦ã TCP ãããã«ããã¯ã«ãªã£ã¦ããé¨åãæ¹åãã¦ã Web ãæä¾ã§ããã®ã§ãã
(å®éã« QUIC ã 443 ãã¼ããéãã¦ã HTTPS ä¸ã§æä¾ã§ããããã«ããããã®å®è£
ããChromium ã§ã¯å§ã¾ã£ã¦ããããã§ãã)
ã¤ã¾ãã QUIC 㯠SPDY over QUIC over UDPã¨ããææ³ãã¨ããã¨ã§ã SPDY over TCP ã®éçãçªç ´ããããã«èãããããããã³ã«ã§ãã
å ¬å¼ã«ã§ãããã¥ã¡ã³ããããã QUIC ã SPDY ãã¾ããè¨èéã³å è¡ã® Play Project ã§ã¯ãªããæ¬æ°ã§ Make the Web Faster ãèããä¸ã«ãã©ãçãããããã³ã«ã ã¨èããã®ããç¡çã¯ãªãã®ã§ã¯ãªãã§ããããï¼
ã¡ãªã¿ã«ããã®æ¹åã®å¹æã¯æªç¥æ°ã§ããGoogle ãå®å
¨ã«å®è£
ãçµãã£ã¦ããããã§ã¯ãªããããªã®ã§ããã Google ã®ã¦ã¼ã¶ã®å¤ããµã¼ãã¹ç¾¤ã¨ãã·ã§ã¢ã®å¤§ãã Chrome ãåããã¦ãã®ãã¡ãã¹ããå§ã¾ãã§ãããã
(ä»ã¯ã SPDY-Indicator ã QUIC ã«åå¿ã§ããããã«ãªã£ã¦ããã®ã§ããã QUIC ãµã¼ãã¹ã«æ°ãä»ãããæãã¦ããã ããã¨å¹¸ãã§ãã)
ããªãåºã¦ããã®ããããã®å¦ã³
QUIC ã¯ãããããã¾ã Google ã®ãªã¬ãªã¬ãããã³ã«ã§ãã Google èªèº«ããããæ¨æºã«ãããã©ããã¨ãã£ãã¨ããã¾ã§ã¾ã èãã¦ã¯ããªãã§ããããå®ç¸¾ãå¹æãæªç¥æ°ã§ãããå®éã«ãã£ã¦ã¿ãªãã¨æ¬å½ã«ä¾¡å¤ããããã¯ããããªãã®ãæ¬é³ã ã¨æãã¾ãã
åãããã«ãä»ã«ãè²ã ãªæ¹åæ¡ã Google 社å ã§ã¯åãã¦ããã®ããããã¾ããã
Make the Web Faster 㯠Google ãæ¬æ°ã§ Web ãèãã¦åãçµãã ææãè©°ã¾ã£ã¦ãã¾ããä»ããåãè¾¼ãããã©ã¯ãã£ã¹ãããã°ãä¸è¬ã®éçºè
ããæãåºãã«ãã Standard ã Protocol ã«ã大ããªãªã½ã¼ã¹ãå²ãã¦ãã¾ãã
ããã¦ã使ããªãã¦ãããããããã¸ã§ã¯ããç¥ããã¨ã§ã Web ãæã¤æ§ã
ãªé¢(è¯ããæ¬ ç¹)ãè¦ãã¦ãã¾ãã
ãããã©ããããã¶ã¤ã³ã§ãå¹æãã©ããã¨ããç¹ããã¡ããéè¦ã§ãã
ãã使ãããã対å¿ã¯ã©ãããã¿ããªã使ã£ã¦ãããã¨ããã®ããã¡ããéè¦ã§ãã
ã§ããããä¸ã¤ã®å´é¢ã¨ãã¦ããªãã§ãããªãã®ãåºã¦ããã®ãï¼ã¨ããè¦ç¹ãæã¤ã¨ãã¾ãããããè¦ãã¦ãããªãã¨ã
ã§ãä»å㯠SPDY/QUIC å¨ããè¦ã¦æã£ããã¨ããé£ä¼ã®ããªã§ãªãã¨ãªãæ¸ãã¦ã¿ãã¨ãã話ã伸ã³ã¦ãã¾ãé·ããªã£ã¦ãã¾ã£ããªãã¨ãããã