Fastly ã QUIC ã倧奜ããªã®ã¯èª°ããç¥ãäºå®ã§ããããä¿¡é ŒåºŠã®é«ããããã«åªããã€ã³ã¿ãŒãããã®æ§ç¯ã«å¿ èŠã ãšèããŠãããããšããããšããããŸãããããã ãã§ãªããåœç€Ÿã«ã¯ QUIC ãå®é𿮵éããã€ã³ã¿ãŒãããæšæºã«ç§»è¡ããããã»ã¹ã« 6 幎以äžãç©æ¥µçã«é¢äžããŠããè ããããšããããšãçç±ã§ããÂ
QUICã¯ãæ©èœã®è¿œå ãå®è£ ãè©äŸ¡ããããŠç¶ç¶çãªç²Ÿæ»ã«èããããªãããšã§å¿ èŠãªå調æŽãç Žæ£ãæ¹è¯ãªã©IETFã§ã®å調çã§å埩çãªããã»ã¹ãçµãŠé²åãç¶ããŠããŸããããããããšã§ãQUICã¯æ³å以äžã«æçããåœåã®ãã®ãšã¯å€§ããç°ãªããå®è³ªçã«åªãããããã³ã«ãçã¿åºããŸãããããã§ãQUICãã©ã®ããã«ããŠåæã®å®éšããã€ã³ã¿ãŒããããè¿ä»£åããããã®æšæºãšãªããŸã§ã«è³ã£ãã®ããã玹ä»ããŸãã
Google ã®æ©æå®éš
Google ã® gQUIC å®éšã¯ã HTTP/2ã®ããã©ãŒãã³ã¹åäžãã»ãã¥ãªãã£ãšãã©ã³ã¹ããŒãã¬ã€ã€ãŒã«ãŸã§æ¡åŒµããããã®åãçµã¿ãšããŠå§ãŸããŸãããããã¯å€§èãã€çŽ æŽãããå®éšã§ãHTTP é äžã®ãããã³ã«ã眮ãæããããšããã®ç®æšã§ãããã€ã³ã¿ãŒãããçµç±ã§ Google ãµãŒããŒãš Chrome éãæåã® gQUIC ã®ãã€ããæµããã®ã¯2013 幎ã®ããšã§ããGoogle ã¯ãããŸããŸãªèªç€ŸãµãŒãã¹ããã©ã€ããã©ãã£ã¯ã gQUIC çµç±ã§ Chrome ã¯ã©ã€ã¢ã³ãã«é ä¿¡ããGoogle ãµãŒãã¹ãæ©æµãåããã«ã€ããŠåŸã ã« gQUICã®å©çšãå¢ãããŸãããÂ
ãã®åæã®å®éšã®ããŒã¿ã¯ãQUIC ã®èšèšã«ãããä»åŸã®çºå±ã«éåžžã«éèŠãªãã®ã§ãããŸãããã®åæã®åãçµã¿ã¯ææžåãããŠããŸãããããã§ã¯æ©æ gQUIC ã®äžéšã§ããããã®åŸå埩ãéããŠå€§éšåãåé€ããã 2 ã€ã®éèŠãªæè¡äŸã«æ³šç®ããŸãã
åæ¹èª€ãèšæ£ (Forward Error CorrectionãFEC) : ãã®æ©èœã¯ 1 ã€ã®ã¹ããŒã (ããªãã£) ã䜿çšããä»ã®ã¹ããŒã ãå®è£ ã§ããã ãã®æè»æ§ããããŸããã§ããããã®ããªãã£ã¹ããŒã ã¯ç¡å¹ãšã¿ãªãããããã«éèŠãªã®ã¯ããã®æ©èœãç¶æããããã«å¿ èŠãªã³ãŒãéã¯ã¡ãªãããã¯ããã«äžåã£ãŠãããšããããšã§ãã
ACK ãšã³ããããŒ: ãããã³ã«ã®ãã®æ©èœã¯ã ACK ã¹ããŒãã£ã³ã°æ»æããéä¿¡è ãä¿è·ãããã®ã§ããå šãã©ãã£ãã¯ãæå·åããããããACK ã¯ãšã³ããã€ã³ãã®ãããã 1 ã€ããéä¿¡ãããå¿ èŠãããããã®æ©èœã¯éä¿¡è ãäžæ£ãªåä¿¡è ããä¿è·ããŸããACK ãšã³ããããŒãåé€ãããã®ã¯ãä¿è·å¯Ÿè±¡ã®æ»æãç¹ã«åœ±é¿ã倧ãããã®ã§ã¯ãªããšããããšãšãå°ãªããªãã³ãŒãéãšãããã³ã«ã®è€éæ§ãçºçããããã§ããã
ã©ã¡ãã®æ©èœããããã³ã«ã®æé©åãæ©ãããäŸã§ãããããã³ã«ãé²åããã«ã€ããŠããããã£ãæ©èœãã¡ã³ããã³ã¹ã«ããã匱ç¹ãšãªããã¡ã³ããã³ã¹ã³ã¹ããæœåšçãªã¡ãªãããäžåãå Žåããã®æ©èœã¯åé€ãããŸãã
IETF ãããã³ã«ã®èªç
2015 幎ãGoogle ã IETF ã«ãŠBar-BoF (éå ¬åŒã®ãåãèå³ãæã€äºº (birds-of-a-feather)ãã«ããéãŸã) ãšåŒã°ããåæã®éå ¬åŒãªå ¬éèšè«ãéå§ããgQUIC ã®å®éšã«ã€ããŠè°è«ããŸãããã³ãã¥ããã£ããã®é¢å¿ã¯éåžžã«é«ãã Bar-BoF ã¯ç¿å¹Žã«ãã㊠2 ã€ã®éèŠãªäœæ¥ãä¿é²ããŸããã
第äžã«ãããã€ãã®ç¬ç«ãã gQUIC ã®å®è£ ãå ·äœåãå§ããã³ãã¥ããã£å ã®ãã£ããã§ã¯ãIETF ã QUIC ã®äœæ¥ãéå§ãããšããã«å€ãã®çµç¹ãå®è£ ãéå§ããããšèºèµ·ã«ãªã£ãŠããããšãæããã«ãªããŸãããããã¯éèŠãªããšã§ãããªããªããããã³ã«ã®æšæºåã¯ãè€æ°ã®å®è£ ãããå Žåã«ã®ã¿æå³ãããããã§ãããã®ãããªå€§èŠæš¡ã®æšæºãæ§ç¯ããã«ã¯èšå€§ãªäœæ¥éãå¿ èŠãªã®ã§ãäžè¬çã«ã¯ãå€ãã®å®è£ è ãæç¢ºãªé¢å¿ãæã£ãŠããããšãéå§ããããã®èŠä»¶ãšãªããŸãããããã£ãç¬ç«ããå®è£ ã«ãããQUICã®æšæºåãæš¡çŽ¢ããææ¬²ãããããšã蚌æãããŸããã
第äºã«ãgQUIC ãã¢ããªã¹ã ã£ããšããããšã§ãããã©ã³ã¹ããŒããšæå·ãã³ãã·ã§ã€ã¯ãèåããæ±çšãã©ã³ã¹ããŒããšããŠã§ã¯ãªã HTTP ãšäœµçšããããã«ãããã³ã«ãæ§ç¯ãããŸãããç¿å¹Žã«ã¯ã³ã¢ãã©ã³ã¹ããŒããæå·ãã³ãã·ã§ã€ã¯ããã©ã³ã¹ããŒãäžã«ãã HTTP ãããã³ã°ãããã®ãªã©ã®ããŒãã«ãã®ã¢ããªã¹ã¯åå²ãããŸããããã®äœæ¥ã¯ Google ãã³ãã¥ããã£ã§å®æœãããŸãããããã®ææã¯æçµçã«ã¯æ£åŒãªã¯ãŒãã³ã°ã°ã«ãŒãã®äœæ¥ã®å ãšãªã£ãã€ã³ã¿ãŒããããã©ããã®æ§é ã®äžã§ç®ã«èŠãã圢ã§çŸããŸãããããããäŒè©±ãããQUIC ã®æŽ»åã®æšé²ããµããŒãããã³ãã¥ããã£ã®åå è ãæµ®ãã³äžãã£ãŠããŸããã
Bar-BoF äŒè°ã®ç¿å¹ŽãgQUIC ã¯ããå€ãã®ãã©ãã£ãã¯ãé ä¿¡ããçµæãšã㊠Google ã¯ããå€ãã®ããŒã¿ãå ¬éããããšã«ãªããŸããããã®ããŒã¿ãåæãããã³ã«ãã©ãããååèšç«èš±å¯ã«ãããã³ãã¥ããã£ã¯åé²ã§ããããã«ãªããŸããã(Google ãšã³ãã¥ããã£å šäœã®ãã¡) å°æ°ã 2016 幎㫠IETF ã§æ£åŒãª BoF äŒè°ãéå¬ããHTTP åãã®æ°èŠãã©ã³ã¹ããŒããæ§ç¯ããã¯ãŒãã³ã°ã°ã«ãŒããäœããŸããããã㯠IETF ã§æãåå è ã®å€ãã£ãäŒè°ã® 1 ã€ã§ãã400 åè¿ãåå è ãéãŸããææ¡ãããèšç«èš±å¯ã§ã¯ãŒãã³ã°ã°ã«ãŒããäœãããšã«æç¢ºãªåæãåããŸããã
ããã¯æ¥µããŠéèŠãªç¬éã§ããQUIC ã¯äºå®äž IETF ãææããŠããããããããã³ã«ã®éçºã¯ã³ã³ã»ã³ãµã¹ããŒã¹ã® IETF ããã»ã¹çµç±ã§é²ããããŸãã
IETF ã«ããã QUIC
æ°ããIETFãã©ã³ã¹ããŒãã¯æŽå²çã«åºãæ®åããã®ã«èŠåŽããŠããŸããããgQUIC ã®çµæã¯äž»ãªæ¥çãã³ããŒã®é¢å¿ãéããŸããã圌ãã¯å šå¡ IETF ã®ã¯ãŒãã³ã°ã°ã«ãŒãã«åå ããŠããã¡ã³ããŒã§ããåºç¯å²ã§ã®æ¡çšã¯ååã«ããåŸãããšã§ãããQUIC ã®ã¯ãŒãã³ã°ã°ã«ãŒãåå è ã¯ãèªåãã¡ãåå è å šå¡ã®ããŒãºãæºããæçãããããã³ã«ãæ§ç¯ããå¿ èŠãããããšãçè§£ããŠããŸããããŸããgQUIC ãå®èšŒããäž»ãªæ§èœäžã®å©ç¹ãæãªãããšãªããããå®çŸããå¿ èŠããããŸããã
QUIC ã®éçºãéå»ãçŸåšãå ±åäœæ¥ã§ããããšã¯æ³šç®ã«å€ããŸãããã®ãããã³ã«ã¯ãããŸããŸãªçµç¹ããã®ã³ã³ããªãã¥ãŒã¿ãŒã«ãã£ãŠéçºãããŠããããã¹ãŠã®ã€ã³ã¿ãŒããããŠãŒã¶ãŒãå©çšã§ããããå€§èŠæš¡ãªãããã³ã«ãå ±ã«æ§ç¯ããå¿ èŠããããŸãããèªå·±äžå¿çãªããæ¹ãéå£ãèå»¶ãäžçã«ãããŠãç«¶åä»ç€Ÿãšèªç±ã«ååããŠèª°ã«ãšã£ãŠãããè¯ãã€ã³ã¿ãŒããããæ§ç¯ãããšãããã®çšãªç°å¢ãå¯èœã«ããŠããã®ã¯ IETF ã®ä¿¡å¿µã®èšŒã§ãã
ãã®ã°ã«ãŒãã®äœæ¥ã¯ 2 ã€ã®æèšãããŠããªãæéã«æ²¿ã£ãŠããŸããã
ããã¯ãQUIC ã匷åãªæ©å¯æ§ãšãã©ã€ãã·ãŒæ§ãäºè éãããã³ã«ãšããããšãšãå°æ¥çãªãããã³ã«ã®é å¿æ§ãä¿ã€ããã«æµåæ§ãæãããããšã§ãããããã¯ã€ãŸããã§ããã ãå€ãã®ãããã³ã«ã匷åã«æå·åãããšããããšã§ãããŸãããããã£ããã±ããã転éãããããã¯ãŒã¯ã QUIC ã®ãã±ããããããŒã®ã»ãšãã©ã®æ å ±ã«é¢äžããªããšããããšã§ããããŸãã
ãããã³ã«æ©èœã¯å€§èŠæš¡ã«ãã§ãã¯ãããŸãããããã³ã«æ©èœãå®è£ ã«ããè€éæ§ãã¡ãªãããäžåãå Žåããã®æ©èœã¯é€å€ãããŸããã¡ã³ããã³ã¹ã¯èšå€§ãªé ããã³ã¹ãã§ãå®è£ è ã¯ä»éããã¡ãªãããçã¿åºããªãã³ãŒãã®ã¡ã³ããã³ã¹ãè¡ãã»ã©å¿è匷ããããŸãããã·ã³ãã«ã§ããããšãé£ãããããŸããããããã³ã¢ããªã¥ãŒã§ããã
ãããã³ã«æ©èœã®é²å
QUIC ã®éçºã«ã¯äžäžžãšãªã£ãååãå¿ èŠã§ãæã«ã¯æ©èœã®åèšèšãå¿ èŠã«ãªãããšããããŸããããã®å€æŽãããã»ã¹ãã©ããã£ããã®ãªã®ããçããã«å°ãããã£ãŠããããããããããã¯ãããã³ã«ã®é²åã«ãããŠé¡èãªæµããã玹ä»ããŸãã
ãã³ãã·ã§ã€ã¯
åœåãããã®ã¯ãŒãã³ã°ã°ã«ãŒãã®å€§ããªã¿ã¹ã¯ã® 1 ã€ããä»ã®ãªãŒãã³ã¹ã¿ã³ããŒããšæå·ãã³ãã·ã§ã€ã¯ã調æŽããããšã§ãããgQUIC ãæ¡çšããã®ã¯ QUIC-Crypto ãšåŒã°ããç¬èªã®ãã³ãã·ã§ã€ã¯ã§ããQUIC-Crypto ã¯ãTLS 1.3 ããåããååšããŠããŠã0-RTT ã®æå·ãã³ãã·ã§ã€ã¯ãšããæŠå¿µãå°å ¥ããæ³šç®ãã¹ããã¯ãããžãŒã§ãããTLS 1.3 ã¯äžéš QUIC-Crypto ã®åœ±é¿ãåããŠããŠãQUIC-Crypto ããããããã¬ã€ãã³ã·ã®å šã¡ãªãããæã£ãŠããŸããå€ãã®è°è«ã®åŸãäž»ã«gQUICãšTLS 1.3ã®é¢ä¿è ã®éã§ãQUICãç¬èªã®QUIC-Cryptoã®ä»£ããã«TLS 1.3æšæºãæ¡çšããããšãåæãããŸãããgQUIC ãQUIC-Crypto ãšã®ç·å¯ãªçµ±åã«ããåŸãããããã©ãŒãã³ã¹äžã®ã¡ãªããã倱ãããšãªããTLS 1.3 ãæ¡çšããã«ã¯å€å°ã®åŽåãããããšããããšãã°ã«ãŒãã¯èªèããŠããŸãããÂ
äœåºŠãèšèšãç¹°ãè¿ãè¡ã£ãäžã«ã¯ãQUICãã³ãã·ã§ã€ã¯ã广çã«DTLSãã³ãã·ã§ã€ã¯ã«çœ®ãæããä»£æ¿æ¡ãå«ãŸããŠããŸãããããŠã¯ãŒãã³ã°ã°ã«ãŒãã¯ã€ãã«çŸåšã®èšèšã«ãã©ãçããã®ã§ãããããã¯æ¬¡ã®ããã«çè§£ããããšãã§ããŸããTLS ã¯ãã³ãã·ã§ã€ã¯ãããã³ã«ãšã¬ã³ãŒãã¬ã€ã€ãŒã§æ§æããã 2 å±€ã®ãããã³ã«ã§ããåŸæ¥ããã®ã¬ã€ã€ãªã³ã°ã¯ TLS ãããã³ã«ã®å éšã«ãããã®ãšèããããŠããŸãããã¯ãŒãã³ã°ã°ã«ãŒãã«ãã QUIC ãšTLS ã®çµ±åã«ã¯ãŠããŒã¯ãªéšåããããŸããæçµèšèšã§ã¯ TLS ãã³ãã·ã§ã€ã¯ãããã³ã«ãæ¡çšããŸããããã¬ã³ãŒãã¬ã€ã€ãŒã¯ QUIC ç¬èªã®ãã®ãæ¡çšããŠããã®ã§ããã³ãã·ã§ã€ã¯ã¡ãã»ãŒãžã®è»¢é㯠QUIC ã管çããã®ã§ããTLS 㯠Web çšã®ã»ãã¥ãªãã£ãããã³ã«ã§ãQUICã®æåã®ã¢ããªã±ãŒã·ã§ã³ãšãªãäºå®ã§ãã£ããããã¯ãŒãã³ã°ã°ã«ãŒã㯠QUIC ã®ããŒãžã§ã³ 1 ã« TLS ãå¿ èŠã§ããããšã«åæããŸããããã ããä»ã®ã¢ããªã±ãŒã·ã§ã³ãã»ãã¥ãªãã£ã« TLS ã䜿çšããŠããªãããšããããããQUIC ã§ã¯å¥ã®æå·ãã³ãã·ã§ã€ã¯ã䜿ããããã«ãªã£ãŠããŸãããã©ã³ã¹ããŒããã©ããã«ã¯ãããã£ããããã³ã«ã«å¿ èŠãªæ©èœã®æŠèŠãèšãããŠããŠãç ç©¶è ã«ããæè¿ã®ç ç©¶ã¯ãã®å¯èœæ§ã®ååšèšŒæãæäŸããŠããŸãã
ãã±ããçªå·ã®æå·å
QUIC ããããŒã®å€§éšåãæå·åãããŸããããããããã±ããçªå·ãäž»ãªãã§ãŒãºããããšãã£ãäžéšã®ãããã¯å¹³æã®ãŸãŸã§ããããããæå·åãããã£ãã®ã§ãããæè¡çã«è¡ãè©°ãŸã£ãŠããããã«èŠããŸããããã®çç±ãç°¡æœã«èª¬æããŸãããå°ã è€éãªã®ã§ãäºæ¿ãã ããã
QUIC ã®ãã±ããçªå·ã¯ä¿¡é Œæ§ãšãã±ããæå·åã®ããã®ãã³ã¹ (äœ¿ãæšãŠã®å€) ãšããŠäœ¿çšããŠããŸããããããŠæå€±ã®æ€åºãšå§çž®ã®åäžã®ããããã±ããçªå·ã¯å調ã«å¢ãç¶ããŠããŸãããæ¥ç¶ ID åæ§ããã±ããçªå·ã¯ãããã¯ãŒã¯éãç§»åããæ¥ç¶ãé¢é£ä»ããããšãã§ãããããç°¡åã«ãã³ãŒãå¯èœãªãã±ãããåé¡ãšãªã£ãŠããŸãããåœåã®ãœãªã¥ãŒã·ã§ã³ã§ã¯ãã¯ã©ã€ã¢ã³ãããããã¯ãŒã¯éãç§»åããéã«ã©ã³ãã ãªãã±ããçªå·ã®ãžã£ã³ããè¡ããããã«ããæ°ã ã®æŠç¥ãå«ãŸããŠããŸãããããããããããæŠç¥ã¯è€éãã«æºã¡ãŠãããæ°ããªåŒ±ç¹ãç¹°ãè¿ãèŠã€ãããŸãããããã«ããã±ããçªå·ã®å ¬éã«ãã£ãŠãããã¯ãŒã¯ã®ããã«ããã¯ã¹ã«ããåºå®åãæããé²åãå¶éãããå¯èœæ§ããããŸããã
ãã±ããçªå·ã®æå·åã¯æç¢ºãªãœãªã¥ãŒã·ã§ã³ã§ããããããå®è¡ããã«ã¯å¥ã®ãã³ã¹ãå¿ èŠã§ãããã®ãã³ã¹ã¯ããããŒå ã§éä¿¡ãããå¿ èŠãããããã±ããã®ããããŒãªãŒããŒããããå¢å ããŸãã2018 幎 6 æã«ã¹ãŠã§ãŒãã³ã®ãã¹ã¿ã§éå¬ããã QUIC ã®äžéäŒè°ã§çºããããéãæŽå¯ããä¿¡ããããããšãå¯èœã«ããŸãããã¯ãŒãã³ã°ã°ã«ãŒãã¯æå·åãããããã¹ããæå·çã«ã©ã³ãã ã§ããããã®ãããã³ã¹ãšããŠå©çšã§ããããšã«æ°ä»ããã®ã§ããã€ãŸãããã±ããã«ã¯ãã±ããçªå·ã®æå·åã«äœ¿ãããŠãããã³ã¹ãæ¢ã«å«ãŸããŠãããšããããšã§ãïŒãã®æŽå¯ã¯ããã±ããçªå·ã«ã¯ä»ã®ãã±ãããšåããããªåŒ·åºŠã®ä¿è·ãäžèŠã§ãããšããèªèãšãšãã«ã2 段éã®æå·åããã»ã¹ãäœæããããšãå¯èœã«ããŸãããããã¯ããŸããã³ã¹ãããŠã®ãã±ããçªå·ã䜿ã£ãŠãã±ãããæå·åãããããããã³ã¹ãšããŠæå·åãããã±ãã (ãšå¥ã®ããŒ) ã®äžéšã䜿çšããŠãã±ããçªå·ãæå·åãããšãããã®ã§ãããã®æŠç¥ãçšããããšã§ãQUIC ã¯ããããŒå ã®å€§åã®ããããæå·åã§ããããã«ãªããŸããã
ããã§ãFastly ã®ååã®äžäººã«æè¬ã衚æããããšæããŸããFastly ã®å¥¥äžç©ãçŸåšã®èšèšã«ç¹ãããã³ãã·ã§ã€ã¯ãšãã±ããçªå·ã®æå·åã«é¢ããè°è«ã«ãããŠéèŠãªçªç Žå£ã瀺ããŠãããŸããã
ãã±ããããããŒ
åæã®ããããŒåœ¢åŒã¯åŸã ã«é²åããæçµçã«ã¯å€æ°ã®ãã£ãŒã«ããšå¶çŽãæã€æ±ãã«ãããããã«ãªããŸãããã°ã«ãŒããå±é¢ãæéããã®ã¯ãããããŒãã£ãŒã«ãã 2 ã€ã«åå²ã§ãããšããããšã«æ°ä»ãããšãã§ãããæ¥ç¶ã®ç¢ºç«ã«äœ¿çšãããã±ããã¯æ°ãããã®æ å ±ãšéä¿¡ããå¿ èŠããããŸãããäžæŠæ¥ç¶ã確ç«ããã°ãå¿ èŠãšãªãã®ã¯ããã€ãã®äž»èŠããããŒã®ã¿ã§ããçµæãšããŠé·çã®ããããŒåœ¢åŒãäœãåºãããŸãããé·ãããããŒã¯ã衚çŸè±ãã§æ¡åŒµæ§ã®ããæ§é ã§ãæ¥ç¶ã確ç«ããããä»åŸã®æ¡åŒµã«å¯Ÿå¿ã§ããããã«ãªã£ãŠããŸããçãããããŒã¯ã广çãšãªãããèšèšãããŠããŸãããããã¯æ¥ç¶äžã®ãã±ããã®å€§åããã®ããããŒã転éããæ³å®ã§ããããã§ããæ¥ç¶ã®ç¢ºç«åŸã«QUIC ã䜿çšããã®ã¯ã4 ãã€ããšããå°ããã®çããã±ããããããŒã§ãã
æ¥ç¶ ID
ãã©ã³ã¹ããŒããããã³ã«ã«ãããé·å¹Žã®åé¡ã¯ãã¯ã©ã€ã¢ã³ããšãµãŒããŒã® IP ã¢ãã¬ã¹ãšããŒãçªå·ãšãã 4 ã€ã®ã¿ãã«ã«ãã£ãŠæ¥ç¶ãèå¥ãããããšã§ããããšãã° TCP æ¥ç¶ã®å Žåãã¯ã©ã€ã¢ã³ãã® IP ã¢ãã¬ã¹ãããŒãçªå·ã«å€æŽããããšæ¥ç¶ãéåããŠããŸããŸããããã¯ã€ãŸããåŸæ¥ã®æ¥ç¶ã«ã¯äŒã¯ã©ã€ã¢ã³ãã®ç§»åãæ¥ç¶äžã«ãšã³ããã€ã³ãã®ããŒãçªå·ã倿Žããå¯èœæ§ã®ããããã«ããã¯ã¹ã«å¯Ÿããèæ§ããªãããšãæå³ããŸããåªåã«ãé¢ãããããããŸã§ã®ãœãªã¥ãŒã·ã§ã³ã¯åºç¯å²ã®å±éãé¿ããŠããŸãããÂ
QUIC ãªããã®åé¡ãäžåºŠã«ãã¹ãŠè§£æ±ºããããšãã§ããŸããåæã® QUIC ã®èšèšã¯ãã¯ã©ã€ã¢ã³ããéžãã 8 ãã€ãã®æ¥ç¶ IDã䜿çšããŠæ¥ç¶ãèå¥ããŠããŸãããããã IP ã¢ãã¬ã¹ãšããŒãçªå·ã®ã¿ãã«ã®ä»£ãããšããŠäœ¿çšãããŠããã®ã§ããããããªããããã®èšèšã«ã¯æ ¹æ¬çãªæ¬ é¥ã 2 ã€ãããŸããã
ããã¯ããµãŒããŒãæ¥ç¶ ID ãã³ã³ãããŒã«ã§ããªãããšããããŠãµãŒããŒã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãæ¥ç¶ãããã±ãããæ£ãããµãŒããŒã«ã«ãŒãã£ã³ã°ããã®ã«å¿ èŠãªæ å ±ã ID ã«åã蟌ãããšãã§ããªããšããããšã§ãã
æ¥ç¶ ID ã¯ãã¯ã©ã€ã¢ã³ãåŽã§ IP ã¢ãã¬ã¹ã倿ŽãããŠãä¿æãããã®ã§ãã¯ã©ã€ã¢ã³ããæ°ããªãããã¯ãŒã¯ãã€ã³ãã«ç§»åããŠã (äŸãã°ãWi-Fi ãããã¯ãŒã¯ããã¢ãã€ã«ãããã¯ãŒã¯ã«åãæ¿ãããªã©) æ¥ç¶ãäžæãããã«ç¶ç¶ã§ããããã«ããŸããããããã第äžè ã®ãªãã¶ãŒããŒãåãæ¥ç¶ ID ã衚瀺ãããŠãããã®ä»ã®ç¡é¢ä¿ãªãããã¯ãŒã¯ã«åºã¥ããŠã¯ã©ã€ã¢ã³ãã®åããé¢é£ä»ããããšãã§ããã®ã§ãããã«ããå人æ å ±ã®æŒããã«ãªã£ãŠããŸããŸããã
æ°åã®ç¹°ãè¿ãã®åŸãæçµçã«ãã®èšèšã¯ã察å¿ãããšã³ããã€ã³ãã«ãã£ãŠéžæãããåæ¹åã«1ã€ãã€ã2ã€ã®å¯å€é·ã®æ¥ç¶IDã䜿çšããããšã«çœ®ãæããããŸãããã°ã«ãŒãã¯äž¡æ¹ã®ãšã³ããã€ã³ãã«ãã®æ¥ç¶ ID ãæ¥ç¶äžã«å€æŽããä»çµã¿ãæ§ç¯ããŸãããããã«ããã¯ã©ã€ã¢ã³ããæ¥ç¶ã倱ãããšãªããããã¯ãŒã¯éãç§»åããããšãã§ãããã©ã€ãã·ãŒæŒãããåé¿ããããæ¥ç¶ ID ã倿Žããããšãå®çŸããŸããããããããã®æ°ããªèšèšã§ã¯ãç¹ã«æ¥ç¶ ID ã®éä¿¡ã倿Žã«é¢ããã«ãŒãã£ã³ã°ã®å®å®ä¿èšŒã«ã€ããŠããã€ãã®èª²é¡ãçºçããŸããããæçµçã«è§£æ±ºãããŠããŸãã
æ¥ç¶ã®ç§»è¡ã¯ QUIC ã®è峿·±ãæ°æ©èœã§ããFastly ã¯ãã®æ©èœãã¢ããªã±ãŒã·ã§ã³ã§å®éã«äœ¿çšãããããšã楜ãã¿ã«ããŠããŸãã
HTTP ãããã³ã°
gQUIC ã¯ã·ã³ãã«ãªæ¹æ³ã§ HTTP ã»ãã³ãã£ã¯ã¹ã®ãã©ã³ã¹ããŒããæäŸããŠããŸããããããã«ã¯ããããªãã©ã€ã³ããããã³ã°åé¡ããããHTTPãã¬ãŒã©ãåŠçããŠããŸããã§ãããQUIC ã¯ãŒãã³ã°ã°ã«ãŒãã¯ãä»ã®ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããããã« QUIC ã®äžã«æ°èŠãµãŒãã§ã¹ã圢æããããšã§ãHTTP ãš QUIC ãããããªåé¢ãäœããŸããããã®ãµãŒãã§ã¹äžã«HTTP çšã®æ°ããªãããã³ã°ãäœæãããŸãããQUIC ã¹ããªãŒã ãšã¹ããªãŒã ID ã®ããã®æ°ããã»ãã³ãã£ã¯ã¹ãäœæãããHTTP Pushãšãã£ãèŠä»¶ã«å¯Ÿå¿ããããåäžæ¹åã®ã¹ããªãŒã ãäœæããã HTTP ãã¬ãŒã©ãŒãæèŒãããŸãããÂ
幟床ãšãªãè°è«ãçµãŠãQUIC ãš HTTPbis ã¯ãŒãã³ã°ã°ã«ãŒãã®ã³ã³ã»ã³ãµã¹ã«ããããã®ãããã³ã°ã HTTP/3 ãšåŒã¶ããšã§åæãããŸããã
ããã«ãQPACK ãšããŠç¥ããã QUIC çµç±ã® HTTP ããããŒåãã®æ°ããªããããŒå§çž®æ¹åŒã¯ã HTTP/2 ã® HPACK ã®ä»£æ¿ãšããŠèšèšãããŸãããQPACK 㯠QUIC ã¹ããªãŒã ã®äžŠåæ§ãæ¡çšããŠãããããªãã©ã€ã³ããããã³ã°åé¡ãåé¿ããŠããŸãã
ãªãã¬ãŒã¿ãŒåé¡
ãããã¯ãŒã¯äºæ¥è ã¯ããããã¯ãŒã¯ç®¡çæ§ã®åé¡ãåãäžããŸãããTCP ã§ã¯ãQUIC ãããã¯ãŒã¯ã§ã¯èŠããŠããªãæ¥ç¶æ å ±ã衚瀺ãããŠããã®ã§ããã¯ãŒãã³ã°ã°ã«ãŒãã®äž»ãªçåã¯ããããã¯ãŒã¯ä»²ä»è ã«å¯ŸããŠã©ã®çšåºŠã®æ å ±ãé瀺ãã¹ãããšããããšã§ããã倿°ã®è°è«ãšèšèšå€æŽã®çµæãæçµçãªè§£æ±ºçãšãªã£ãã®ã¯ Spin Bit ã§ãããããã¯æå·åãããŠããªã (ãã ãããšã³ããã€ã³ãã«èªèšŒãããŠãã) ããããŒå ã®åäžãããã§ãããã䜿ããšãããã¯ãŒã¯ä»²ä»è ããããŒã®åŸåŸ©æéã®å€åãæž¬å®ããããšãã§ããŸãããã®ãããã¯ãšã³ããã€ã³ããèšå®ãããããŠãããéèŠãªã®ã§ããããšã³ããã€ã³ãããã©ã€ãã·ãŒäžã®æžå¿µããããšå€æããå Žåã¯ããããã®ãã¹ããã³ã°ããäžæ¹çã«ç¡å¹åã§ãããšããããšã§åæãããŸãããããã¯ãIETF ãèšèšãããã®ä»ã®ãšã³ãããŒãšã³ããããã³ã«ã«ãšã£ãŠéèŠãªåºçºç¹ãšãªããŸããããããã¯ãŒã¯ããã€ã¹ã¯éåžžããšã³ãããŒãšã³ãã®ãããã³ã«ããããŒãããããŒã«é¢ããæ å ±ãååŸããŸããããããQUIC ã§ã¯ Spin Bit ã䜿ã£ãŠãããã¯ãŒã¯ã«ãã®æ å ±ãæç€ºçã«å ±æããŠããã®ã§ãã
å¿ èŠãªè€éæ§
QUIC ã®æçµèšèšããå¿ èŠä»¥äžã«è€éã«ãªã£ãŠããªããã©ããæ¯ãè¿ãå¿ èŠããããŸããã¯ãŒãã³ã°ã°ã«ãŒãã¯ãã§ããéãå€ãæå·åããããšã§ãåºå®åãã€ã€ããããã«ããã¯ã¹ã«çŽé¢ããŠãããããã³ã«èšèšè ãšå®è£ è ããããã³ã«ã®å°æ¥ã®é²åãå¶åŸ¡ã§ããããã«ããããšã«åæããŸããããã±ããçªå·ã®æå·åã¯ããããã³ã«ã®åºå®åãæ å ±æŒããã®æœåšçãªãªã¹ã¯ã«å¯Ÿããéå°ãªä»çµã¿ã§ããããããã¯ãŒã¯ç®¡çããã€ã¹ãžã®ã³ã¹ãã¯å°ãããªããšããæèŠããããããããŸããããŸãããšã³ããã€ã³ããæå¹ã«ããèŠçŽ ãäžæçã ãšããŠã Spin Bit ãäžèŠãªä»çµã¿ã ãšãã人ãããã§ãããã
QUIC ã®è€éæ§ã¯ã仿¥ã®ã€ã³ã¿ãŒãããã«ããããšã³ã·ã¹ãã ã®çžäºäœçšã管çããã®ã«å¿ èŠãªããšãåæ ããŠãããšç§ãã¡ã¯æã£ãŠããŸããçŸä»£ã®ã€ã³ã¿ãŒãããã«ã¯ããŸããŸãªã¹ããŒã¯ãã«ããŒããããã€ã³ã¿ãŒããããé²åããããšããç¹ã«ãããŠãçå¥ã ã®ãæã«ã¯å¯Ÿç«ããæ¹åãžã®é·æçãªé¢å¿ãæã£ãŠããŸããããšãã°ããã©ã€ãã·ãŒããããã³ã«ãé²åã§ãããã©ããã¯ããããã¯ãŒã¯ç®¡çã®ããŒãºãšè¡çªããå Žåãå€ããããŸããQUIC ã®èšèšã«ããã®èè€ãåæ ãããŠããŸãã
ã€ãŸããQUIC ã¯çŸä»£ã€ã³ã¿ãŒãããã®éèŠãšåããããã·ã³ãã«ã§ãããšããããšã§ãããããŠãããã¯å®éã«ã¯éåžžã«è€éãªã®ã§ãã
ã¯ãŒãã³ã°ã°ã«ãŒããããã¹ãŠã®ãã¬ãŒããªããæ£ããçè§£ããŠããªãã£ãå¯èœæ§ã倧ãã«ãããŸãããããããã®æ°ããªãããã³ã«ã«ãããæéãšçµéšã圹ã«ç«ã€ã§ãããããããã³ã«ãé²åãç¶ããéããçµéšãæªæ¥ã®ããŒãžã§ã³ã圢äœãç¶ããã®ã§ãã
ããŸããŸãªèšèšã®æ±ºå®ã«ã€ãªãã£ãåºãæ·±ãè°è«ã®ãã¹ãŠãåãäžããããšã¯äžå¯èœã§ãããããã幞ããªããšã«ããããã®è°è«ã¯ãã¹ãŠ GitHub Issues ãã¯ãŒãã³ã°ã°ã«ãŒãã®ã¡ãŒãªã³ã°ãªã¹ããã¯ãŒãã³ã°ã°ã«ãŒãã®äŒè°ã®è°äºé²ã«å ¬éãããŠããŸãã
ä»åŸã®å±æ
å®è£ ããããã€ãæ°ãåããªãã»ã©ã®è°è«ãéããŠãQUIC ã¯ç¬èªã®ã¢ã€ãã£ã¢ãã IETF ãéçºããå®æåºŠã®é«ããããã³ã«ãžãšãã£ãããã®éãæ©ãã§ããŸããQUIC ãåºç¯å²ã«å±éããããšã§æªæ€èšãããã¯éèŠãšãããŠããªãã£ãåé¡ãèŠã€ãããæ°ããªäºäŸããã£ãšçºçããã§ãããããããŠããããã³ã«ã¯é²åããæ°ããªèª²é¡ã«å¯Ÿå¿ãã¹ãæçãç¶ããŠãããŸãã
IETF ã®ã¯ãŒãã³ã°ã°ã«ãŒãã¯ãQUIC ã®æåã®ããŒãžã§ã³ãã©ããã¢ããããã€ã³ã¿ãŒãããå šäœãžã®å±éã®æºåãæŽããããšããŠããŸããFastly ãã客æ§ãã§ããã ãæ©ã QUIC ã®æ©æµãåãããããããQUIC ã®å±éæºåã«åãçµãã§ããŸãããŸããFastly ç¬èªã® QUIC å®è£ quicly ã«ãç±å¿ã«åãçµãã§ããŸããçŸåšãæ¬çªç°å¢ãžã®ç§»è¡æ®µéã«ãããæ©æããŒã¿çã®ãªãªãŒã¹æºåãããŠããŸãïŒåŒãç¶ãããã°ãã芧ã«ãªããFastly ã®QUIC 補åã QUIC ã«ãããä»åŸã®å±éãã確èªãã ããã
