ã¤ã³ãã©ã¨ã³ã¸ãã¢ãªãæ°ã«ãªãQUICã®ãã¼ããã©ã³ãµ (æ¹å¼ç·¨)
ã¯ããã«
æ¬è¨äºã§ã¯ãããã¯ã¨ã³ãã®Webãµã¼ãã¸ãªã¯ã¨ã¹ããæ¯ãåããè£ ç½®ã®æå³ã§ã®ãã¼ããã©ã³ãµ(å³1)ã«ã¤ãã¦ãQUIC対å¿ã®è°è«ç¶æ³ãç´¹ä»ãã¾ããæ¹å¼ç·¨ã¨å®è£ ç·¨ã«ããã¦äºç·¨ãäºå®ãã¦ãããæ¬ç¨¿ã¯æ¹å¼ã«ã¤ãã¦ã®è§£èª¬ã§ãã
IETFã§ã¯ãF5 Networksã¨ãã¤ã¯ãã½ããããææ¡ããããã¼ããã©ã³ã·ã³ã°æ¹å¼ãè°è«ããã¦ãã¾ããæ¬ç¨¿ã§ã¯ä¸è¨ã®ã¤ã³ã¿ã¼ããããã©ãããQUIC-LBã¨è¡¨è¨ãã¾ãã
QUIC-LB: Generating Routable QUIC Connection IDs
https://datatracker.ietf.org/doc/html/draft-ietf-quic-load-balancers
å·çæç¹ã® -07 ããã¼ã¹ã¨ãã¾ããããã©ããã§ãã®ã§ä»å¾ã®è°è«æ¬¡ç¬¬ã§æ¹çãç¶ãã¾ããããããããæ¿ç¥ãããã ããã
ãªããéå»ã®è¨äºã«ããã¦QUIC対å¿Nginxã®å®è£ ããeBPFã使ã£ã¦Linuxã«ã¼ãã«ã®SO_REUSEPORTæ©è½ãæ¡å¼µããæ§åãç´¹ä»ãã¾ããããã¹ãå ã§è¤æ°ããã»ã¹ã¸CPUãå²ãå½ã¦ãææ³ã®ä¸ã¤ã¨è¨ãããã®ã§ããããæ¬ç¨¿ã®å¯¾è±¡ã¯UDP/IPãã±ãããæ¯ãåããªãã転éãè¡ãè£ ç½®ã§ãã
ãªãã¼ã¹ãããã·ã«ããL7çµç«¯æ¹å¼
QUIC-LBã¨ã¯ç°ãªãæ¹å¼ã§ããé¢é£ããéè¦ãªè©±é¡ã§ãã2021å¹´7æ21æ¥ GCP Japan Teamã®ããã°ã§ãã¼ããã©ã³ãµã®HTTP/3対å¿ãæ¡å ããã¾ãããå ¬å¼ã®ç´¹ä»åç»ãããã¥ã¡ã³ããè¦ãã¨ãããã³ãã«ç½®ããããªãã¼ã¹ãããã·ãHTTP/3æ¥ç¶ãåãä»ãã¦QUICã³ãã¯ã·ã§ã³ãçµç«¯ããããã¯ã¨ã³ãã«åãã¦HTTPãªã¯ã¨ã¹ããTCPã«è¼ãæ¿ãã¦åéä¿¡ããæ§æãåãã¾ã(å³2)ã
ã¯ã©ã¤ã¢ã³ãããã¿ã¦QUICã³ãã¯ã·ã§ã³ãå¼µãã¨ã³ããã¹ãã¯ããªãã¼ã¹ãããã·(L7ãã¼ããã©ã³ãµ)ã¨ãªãã¾ããæ¬å½¢æ ã§ã¯TLSå¦çãWebãµã¼ããããªããã¼ããã¦ãã¼ããã©ã³ãµã§æå·ã解ããããWebãµã¼ããHTTP/3ã«å¯¾å¿ãããå¿ è¦ããªãç¹ãã¡ãªããã§ããããããã¨ã³ã-to-ã¨ã³ãã®æå·åãä½é 延ãªã©ãHTTP/3, QUICã®å¹æãæ大éã«çºæ®ããã«ã¯ãã¯ã©ã¤ã¢ã³ãã¨Webãµã¼ãéã§ç´æ¥ã³ãã¯ã·ã§ã³ã確ç«ããã®ãæã¾ããã¨èãããã¾ãã
ãã©ã³ã¹ãã¼ãã¬ã¤ã¤(L4)ã®ãã¼ããã©ã³ãµã¨QUICå©ç¨æã®åé¡
ããã²ã¨ã¤ã ãQUIC-LBã®æ¹å¼ã«ãµããåã«ãTCPã®L4ãã¼ããã©ã³ãµã使ã£ã¦TLSãã¤ãªãå ´åãèãã¾ããTCPã³ãã¯ã·ã§ã³ããã¼ããã©ã³ãµã®åå¾ã§ã¹ããªãããã¾ãããTLSã¯CONNECTã¡ã½ããã延é·ãã¦ãã¯ã©ã¤ã¢ã³ãã¨Webãµã¼ãéã§ç´æ¥ãã´ã·ã¨ã¼ã·ã§ã³ãè¡ãã¾ã(å³2)ã
QUICã³ãã¯ã·ã§ã³ã¯TLS/TCPã¨åæ§ã«ãã¯ã©ã¤ã¢ã³ãã¨Webãµã¼ãã®ã¨ã³ããã¹ãéã§ãã´ã·ã¨ã¼ã·ã§ã³ãè¡ãã¾ãã®ã§ãQUICãã¼ããã©ã³ãµã¯QUICãã±ãã(=UDPãã±ããã®ãã¤ãã¼ã)ãæ¹å¤ãããã¨ãªãé©åãªWebãµã¼ãã«åãã¦è»¢éãããã¨ãå¿ è¦ã§ããUDPã®L4ãã¼ããã©ã³ãµã§ã¯ã4ã¿ãã«æ å ±(éä¿¡å IPã¢ãã¬ã¹, éä¿¡å IPã¢ãã¬ã¹, éä¿¡å ãã¼ãçªå·, éä¿¡å ãã¼ãçªå·)ã使ã£ã¦ããã¼ãèªèãã¦æ¯ãåãã¾ãããQUICã§ã¯åä¸ã®QUICã³ãã¯ã·ã§ã³ã§ããUDPã¬ã¤ã¤ã®4ã¿ãã«æ å ±ãå¤åããããã4ã¿ãã«ã®ããã¼èå¥ã¨QUICã³ãã¯ã·ã§ã³ãå¿ ãããä¸è´ãã¾ãããä¾ãã°ã¯ã©ã¤ã¢ã³ãã®IPã¢ãã¬ã¹ããéä¿¡å ãã¼ãçªå·ãå¤åãã¦ãåä¸ã®QUICã³ãã¯ã·ã§ã³ãç¶æãããã¨ãå¯è½ã§ããå¤åã®ããªã¬ã¨ãªããã´ã·ã¨ã¼ã·ã§ã³ã¯æå·åããã¦ãããã®ããè¦ããã¨ãã§ããªããããã³ãã¯ã·ã§ã³ã¨UDPã¬ã¤ã¤ã®4ã¿ãã«æ å ±ã®å¯¾å¿ã¥ãã追跡ã§ãã¾ããã
ãªãããã¼ããã©ã³ãµã®è»¢éãæé©ã§ã¯ ãªãã¦ãWebãµã¼ãéã§ç®çã®ãµã¼ãã¾ã§è»¢éããæ¹å¼ããã³ãã¯ã·ã§ã³ãã¤ã°ã¬ã¼ã·ã§ã³ãç¡å¹åããæ¹æ³ãªã©ãèãããã¾ããRFC 9000 â5.2.3 Considerations for Simple Load Balancersâ ç¯ã§ã¯ãã¼ããã©ã³ãµã«é¢ããå¶ç´ãèæ ®äºé ãè¨åãã¦ãã¾ãããQUIC-LBã¯å¶ç´ã®è§£æ±ºã試ã¿ãæ¹å¼ã¨è¨ãã¾ãã
QUIC-LB ã®ææ¡æ¹å¼ã®æ¦ç¥
QUIC-LBã¯ããã¼ããã©ã³ãµã¨ã¨ã³ããã¹ãã®Webãµã¼ããããããããQUICã³ãã¯ã·ã§ã³ã«é¢ããæ å ±ãå ±æãã¦ããããã¼ããã©ã³ãµã«QUICã³ãã¯ã·ã§ã³ãèå¥ãããæ¹æ³ãææ¡ãã¦ãã¾ã(å³3)ãå ±æããæ å ±ã¯ã³ãã¯ã·ã§ã³IDã«Webãµã¼ãã示ããµã¼ãIDãåãè¾¼ãæ¹æ³ã§ããã¯ã©ã¤ã¢ã³ããéä¿¡ãã¦ããã¼ããã©ã³ãµã«å°çããQUICãã±ããã®å®å ã³ãã¯ã·ã§ã³IDã«ãæ¯ãåãå ã®Webãµã¼ãã示ããµã¼ãIDã®æ å ±ãåãè¾¼ã¾ããããã«ãã¾ãããã¼ããã©ã³ãµã¯äºåã«ãã©ã®ãããªæ¹æ³ã§åãè¾¼ã¾ããæé ãç¥ã£ã¦ããã°ããµã¼ãIDãåãåºããã¨ãã§ãã¾ãããç¥ããªããã°ã©ã³ãã ã®IDã«ããè¦ãã¾ããããã¼ããã©ã³ãµã¯ãµã¼ãIDããã³ãã¯ã·ã§ã³ç¶æ ã«ä¾åããªãæ¼ç®ã§åãåºããã¨ãã§ãããããã»ã¨ãã©ã¹ãã¼ããæãã(low state)ã«åä½ãã¾ãã
å°ã ãããã«ããã®ã§ã以ä¸ãå ·ä½ä¾ã使ã£ã¦è§£èª¬ãã¾ãããµã¼ãIDã®åãè¾¼ã¿æ¹å¼ã¯è¤æ°ããã¾ããããã£ã¨ãç°¡åã«ç解ã§ããPlain Textæ¹å¼ãå³4ã使ã£ã¦è§£èª¬ãã¾ãã
ãã¼ããã©ã³ãµã¨Webãµã¼ãéã®å ±ææ å ± â ï¼
ããããããã¼ããã©ã³ãµã¨Webãµã¼ãéã§ããµã¼ãIDã®é·ããå ±æãã¾ããå³4ã®ä¾ã§ã¯2ãã¤ãã§ãããµã¼ãIDã¯ã³ãã¯ã·ã§ã³IDã®2ãã¤ãç®ããã³3ãã¤ãç®ã«åãè¾¼ã¿ã¾ããå é ã®1ãã¤ãç®ã«ã¯ç¹å¥ãªæå³ãããã¾ãããå³4ã®ã·ã¼ã±ã³ã¹è§£èª¬ã§ãµãã¾ããã®ã§ãã®ã¡ã®è¨è¿°ããå¾ ã¡ä¸ããã
å¦çâ ï¼ @ QUIC-LB
æ¥ç¶ç¢ºç«ã®ãããã¯ã©ã¤ã¢ã³ããæåã«éä¿¡ãã¦ãã Initialãã±ãããåä¿¡ãããã¼ããã©ã³ãµã¯ããµã¼ãã®ã©ããä¸ã¤ãé¸ãã§è»¢éãã¾ãããã®ã¨ãã¯4ã¿ãã«æ å ±ãå ã«è»¢éå ã®Webãµã¼ããé¸ã³ã¾ããããããä¸è¬çãªL4ãã¼ããã©ã³ãµã®åãã§ãã
å¦çâ ï¼ @ Webãµã¼ã
Webãµã¼ãã¯äºåã«å ±æããæ å ±ã«ãããã£ã¦SCID (Source Connection ID)ãçæããã¯ã©ã¤ã¢ã³ãã¸å¿çããInitialãã±ããã«åãè¾¼ã¿ã¾ããå³4ã®ä¾ã§ã¯ã2ãã¤ãã®ãµã¼ãID㯠1234 (16é²æ°è¡¨è¨)ã§ãããã2ããã³3ãã¤ãç®ã«åãè¾¼ãã SCID㯠001234abcdefabcd ã¨ãã¦ãã¾ãã
å¦çâ ï¼ @ QUIC-LB
ã¯ã©ã¤ã¢ã³ãã¯DCID (Destination Connection ID)ã 001234abcdefabcd ã§ããQUICãã±ãããéä¿¡ãã¦ãã¾ãããã¼ããã©ã³ãµã¯å ±ææ å ±ã使ããã³ãã¯ã·ã§ã³IDã®2ããã³3ãã¤ãç®ãèªã¿åã£ã¦ãµã¼ãIDãåãåºãã¦ãQUICãã±ãããå«ãã UDPãã±ããããµã¼ãIDã«å¯¾å¿ä»ããããWebãµã¼ãã¸è»¢éãã¾ãã ãªãããã¼ããã©ã³ãµã«ã¯ãµã¼ãIDã¨Webãµã¼ã (IPã¢ãã¬ã¹ã¨ãã¼ãçªå·)ã®å¯¾å¿é¢ä¿ãäºåã«è¨å®ããã¦ããã¨ãã¾ãã
â 1ï½â 4 ã®éç¨ã§ããããã¨ã¯ããã¼ããã©ã³ãµã¯åå¥ã®QUICã³ãã¯ã·ã§ã³ç¶æ ãä¿æãããã¨ãªããã¯ã©ã¤ã¢ã³ãã¨Webãµã¼ãéã®ã¨ã³ã-to-ã¨ã³ãã§QUICã³ãã¯ã·ã§ã³ãæç«ãããªãããã¹ãã¼ãã¬ã¹ãªæ¯ãåããå®ç¾ãã¦ãããã¨ã§ãã
QUIC-LB: ã³ãã¯ã·ã§ã³IDã¸ã®ãµã¼ãIDã®åãè¾¼ã¿æ¹å¼
Plain Textæ¹å¼ã¯æãåç´ãªåãè¾¼ã¿æ¹å¼ã§ããã»ãã¥ãªãã£ä¸ã®åé¡ãããã¾ãããµã¼ãIDã®é·ãã¯ã¯ã©ã¤ã¢ã³ãã«æãããã¨ã¯ããã¾ãããããã¼ããã©ã³ãµã¨Webãµã¼ããåä¸çµç¹ã«ããéç¨ãããªãå¤é¨ã«å ¬éããå¿ è¦ãããã¾ãããããããPlain Textæ¹å¼ã¯æ¯è¼ç容æã«ãµã¼ãIDã®æ¨æ¸¬ãå¯è½ã§ãããããã¯ã¨ã³ãã«ããç¹å®ã®Webãµã¼ãã ããçãæã¡ããDoSæ»æãæç«ãã¾ããããã§ãQUIC-LBã§ã¯ããã»ãã¥ã¢ãªæ¹å¼ã¨ãã¦ãµã¼ãIDã®é·ãã¨åæã«æå·éµã®æ å ±ãå ±æããæ¹å¼ãææ¡ãã¦ãã¾ãããµã¼ãIDã¨å ±æéµã«AESæå·ãé©ç¨ããçµæãã³ãã¯ã·ã§ã³IDã¸åãè¾¼ããã¨ã§ãã³ãã¯ã·ã§ã³IDãè¦ã¦ã容æã«ã¯è§£èªã§ããªãç¶æ³ã¨ãã¾ãã
QUIC-LBã§ã¯ãAESæå·ã®é©ç¨æ¹å¼ã®éãã§2ã¤ã®æ¹å¼ãææ¡ãã¦ããã
- Stream Cipher CID Algorithm
- Block Cipher CID Algorithm
åè ã¯è¨ç®éããã¼ã¿éãå°ããã§ããã³ãã¯ã·ã§ã³IDãçãè¨å®ã§ãããå¾è ã¯ãã強度ãå¾ãããããè¨ç®éã大ãããªãã³ãã¯ã·ã§ã³IDã17ãã¤ã以ä¸å¿ è¦ã¨ãªããã¬ã¼ããªãããããè¦ä»¶ã«å¿ãã¦é¸æãããã¨ã«ãªãã¾ããQUIC-LBã§ã®è»¢éå¦çã¯ã¹ãã¼ãã¬ã¹ã¨ã¯è¨ãããã±ããåä½ã®æå·è§£èªå¦çã¨ãªãã®ã§ãè² è·ã®éãã¯éè¦ãªã®ããããã¾ããã
QUIC-LB: Retryãã±ããã®ä»£çå¿çã«ããDDoSé²å¾¡ (ã¯ã©ã¤ã¢ã³ãã®IPã¢ãã¬ã¹æ¤è¨¼)
æ¬ç¯ã®å 容ã¯ãTCP SYN Cookieã®QUICçã¨ãè¨ããä»çµã¿ã§ããTCPã«ããã¦ãéä¿¡å IPã¢ãã¬ã¹ãè©ç§°ãã¦å¤§éã®SYNãã±ãããéãã¤ããDDoSæ»æãããã¾ããWebãµã¼ããSYNãåãåã£ãç´å¾ããã«ç¶æ 管ç(ã³ã³ããã¼ã«ãããã¯)ã®ããã®ã¡ã¢ãªãªã½ã¼ã¹ã確ä¿ããã¨TCPã¹ã¿ãã¯ã®ãªã½ã¼ã¹æ¯æ¸ãæãã¾ãã対çã¨ãã¦ãTCP SYN Cookieã¨å¼ã°ããææ³ããããSYNãåãåã£ã¦ãããã«ç¶æ ãä½ãããã©ã³ãã ãªCookieã®å¤ãå¿çã®SYN+ACKã®ã·ã¼ã±ã³ã¹çªå·ã«åãè¾¼ã¿ã¯ã©ã¤ã¢ã³ãã«éãè¿ãã¾ããå®å¨ããã¯ã©ã¤ã¢ã³ãããã®ã¿Cookieãå«ãACKãè¿çãããã®ã§ãWebãµã¼ãã¯ã¯ã©ã¤ã¢ã³ãã®åå¨æ§(IPã¢ãã¬ã¹ãæ£ãããã¨)ã確èªããå¾ã«ãå§ãã¦ç¶æ ãä½ããã¨ãã§ãã¾ãã
QUICã«ã¯åæ§ãªä»çµã¿ãçµã¿è¾¼ã¾ãã¦ãããRetryãã±ããã¨ãã¼ã¯ã³ã使ã£ã¦ã¯ã©ã¤ã¢ã³ãã®IPã¢ãã¬ã¹ãæ¤è¨¼ããä»çµã¿ãããã¾ããRFC9000ã®8.1.2ç¯ã§ã®è¦å®ã§ãããã¼ã¯ã³ã¨TCP SYN cookieã§ã¯æ ¼ç´ãããæ å ±ã¯å³å¯ã«ã¯ç°ãªãã¾ãããã¯ã©ã¤ã¢ã³ãã®åå¨æ§ã確èªãããããWebãµã¼ãããã¯ã©ã¤ã¢ã³ãã¸æ å ±ãéãã¤ããã¯ã©ã¤ã¢ã³ãããè¿äºãããã°æ£å½ã¨ã¿ãªã観ç¹ã§ã¯åãã§ãã
QUIC-LBã§ã¯ããã¼ããã©ã³ãµãWebãµã¼ãã«ä»£ãã£ã¦Retryãã±ããã®éä¿¡ã代è¡ããä»çµã¿ãçãè¾¼ã¾ãã¦ãã¾ãããã¼ããã©ã³ãµã¯è² è·åæ£ã ãã§ãªãDDoSã®æ¤ç¥ã¨é²å¾¡ã®ä»çµã¿ãæè¼ããããã¨ãå¤ãã§ããã大éã®Initialã«ãããã©ããæ»æãæ³å®ãã¦ãã¾ããæ»æãæ¤ç¥ããéã¯ãWebãµã¼ãã¸ã®è»¢éã¯ææ¢ãããã¼ããã©ã³ãµããã¼ã¯ã³ãå«ãã Retryãã±ãããã¯ã©ã¤ã¢ã³ãã«éãè¿ããå®å¨ããã¯ã©ã¤ã¢ã³ãã§ãããã確èªãã¾ãã
ãã¼ããã©ã³ãµãWebãµã¼ãã«ä»£ãã£ã¦ãã¼ã¯ã³ãéãã«ã¯ãããããããã¼ã¯ã³æ å ±ãå ±æãã¦ããå¿ è¦ãããã¾ãããQUIC-LBã§ã¯åæ¹ã§æå·åãããã¼ã¯ã³æ å ±ãå ±æããæ¹æ³ãææ¡ãã¦ãã¾ããå ±ææ¹æ³ã«é¢ãã¦Webãµã¼ãã®ç¶æ ã極åä¿æããªãã¹ãã¼ãã¬ã¹æ¹å¼ã¨ãç©æ¥µçã«ä¿æããã¹ãã¼ãããã®äºã¤ã®æ¹å¼ãææ¡ãã¦ãã¾ãã
ã³ãã¯ã·ã§ã³IDã®å é ãã¤ãã¸ã®æå³ä»ã
ã³ãã¯ã·ã§ã³IDã®å é ã®1ãã¤ãç®ã¯ããã¼ããã©ã³ãµã¨Webãµã¼ãéã®ã¿ã§éããç¹å¥ãªæå³ä»ãããã¦ãã¾ããã¯ã©ã¤ã¢ã³ãã®åãã«ã¯å½±é¿ãä¸ãã¾ããã
# ã³ãã¯ã·ã§ã³IDã®å é ã®1ãã¤ãç®ã 2bits : 6bits ã«åãã¦æå³ã¥ãFirst Octet of Connection ID {
Config Rotation (CR) (2 bits)
CID Len or Random (6 bits)
}
Config Rotation (CR)
ã³ãã¯ã·ã§ã³IDã®å é ã®2ããããConfig Rotation (CR)ã§ãã2ãããããããã¼ããã©ã³ãµã¨Webãµã¼ãã¸å ±ææ å ±ããããã¤ããéãä¸ä»£ã¾ã§ä¸ä»£ç®¡çãã§ãã¾ã(00, 01, 10)ã11ã¯ãããã¤å¤±ææã«ããã©ã«ãåä½(4ã¿ãã«è»¢é)ã«æ»ãããã«ä½¿ãã¾ããä¸ä»£ãåãå ¥ãããã¨ã§ãã¼ããã©ã³ãµã¨Webãµã¼ãéã®å ±ææ å ±ã段éçã«å¤æ´ã§ãã¾ãã
ä¾ãã°ãWebãµã¼ãã®å¢è¨ãè¡ãããµã¼ãIDã®åãè¾¼ã¿ã«ã¼ã«ãå¤æ´ããã¨ãã¾ããéå»ã®QUICã³ãã¯ã·ã§ã³ãç¶ç¶ãã¦ããã¨ããã§ããããªãåãæ¿ãã¦ãã¾ãã¨æ¢åã®ã³ãã¯ã·ã§ã³ã®åæãçºçãã¦ãã¾ãã¾ããããã§å¤æ´ä¸ã表ãä¸ä»£ãè¨ãã¾ããå¤æ´åããåå¨ãã¦ããQUICã³ãã¯ã·ã§ã³ã«ã¯å¾åã®åãè¾¼ã¿ã«ã¼ã«ãç¶æãã¤ã¤ãæ°è¦ã®QUICã³ãã¯ã·ã§ã³ã¯å¤æ´ä¸ã§ãããã¨æ示ãã¦ããã¼ããã©ã³ãµã¨Webãµã¼ãã®åæ¹ã«æ°æ§ãåºå¥ããã¾ããå¤ãã³ãã¯ã·ã§ã³ãçµäºããããWebãµã¼ãã¯ã³ãã¯ã·ã§ã³IDã®å é 2ãããã00ã«æ»ãã¦åãè¾¼ã¿ã«ã¼ã«å¤æ´ãå®äºãã¾ããQUICã§ã¯ã³ãã¯ã·ã§ã³ãç¶æããã¾ã¾ããã¤ã§ãã³ãã¯ã·ã§ã³IDãå¤æ´ã§ããæ§è³ªãã¤ãã£ã¦ãã¾ãã
CID Len or Random (6 bits)
æ¬ãããã¯Webãµã¼ãã®åä½ãè£å©ãããã³ãæ å ±ã§ããããã¼ããã©ã³ãµã転éå¦çã®ããåç §ãããã¨ã¯ããã¾ãããQUICã·ã§ã¼ããããã«ã¯å®å ã³ãã¯ã·ã§ã³IDã®é·ãã®æ å ±ãå«ã¾ããã·ã§ã¼ããããã ããè¦ã¦ãã©ãã¾ã§ãã³ãã¯ã·ã§ã³IDãªã®ãå¤å¥ã§ãã¾ããããã§ã«ã¨ã³ããã¹ãéãã´ã·ã¨ã¼ã·ã§ã³ã§åæãã¦ããã®ã§ããããå ã«é·ããåãè¾¼ãå¿ è¦ããªãããã§ãã
ããããWebãµã¼ãã§æå·ã¢ã¯ã»ã©ã¬ã¼ã¿ãªã©ã®ãã¼ãã¦ã§ã¢å¦çã®é©ç¨ã®å段ã§ãã³ãã¯ã·ã§ã³IDã®é·ãã®æ¤ç´¢å¦çãããã¯ã«ãªãã¨è¨åãã¦ãã¾ããã³ãã¯ã·ã§ã³IDã®é·ã(æ£ç¢ºã«ã¯1ã ãå°ããå¤)ãåãè¾¼ãã§ããã°ãã·ã§ã¼ããããã§ãå³åº§ã«ã³ãã¯ã·ã§ã³IDãç¹å®ãããã¨ãã§ãããã¼ãã¦ã§ã¢å¦çã¸ç§»è¡ã§ãã¾ããé·ããåãè¾¼ã¾ãªãé¸æãã§ãããã®å ´åã¯6ããããåã«ã©ã³ãã ãªå¤ã§æºããã¾ãã
ã³ãã¯ã·ã§ã³IDã®è¨ç®ã©ã¤ãã©ãªã¨è¨ç®ä¾
F5 NetworksããGitHubãªãã¸ããªã§ã³ãã¯ã·ã§ã³IDãè¨ç®ããã¢ã«ã´ãªãºã ãã©ã¤ãã©ãªåãã¦æä¾ãã¦ãã¾ããæä¾ç¯å²ã¯ã³ãã¯ã·ã§ã³IDã®è¨ç®æ©è½ã ãã§ããããã¼ããã©ã³ãµã¨ãã¦ã®ãã±ãã転éã®æ©è½ã¯ããã¾ããã
ã³ãã¯ã·ã§ã³IDãç®åºãããµã³ãã«ã³ã¼ããæ·»ä»ããã¦ãããä¸è¨ã®ä¸ã¤ã®æ¹å¼ãã¨ã«è¨ç®çµæãè¦ããã¨ãã§ãã¾ããã³ã¼ãã¯BIG-IPã®ä¸é¨ãæãåºãããã®ã«è¦ããF5 Networksã§ã¯è£ ç½®ã¸ã®å®è£ ããããã¦ãããã§ãã
- PCID: Plain Text CID
- SCID: Stream Cipher CID (Source Connection ID ã§ã¯ãªããã¨ã«æ³¨æ)
- BCID: Block Cipher CID
ã³ã¼ãããã«ãããã¨lb_test
ã¨ãããã¤ããªãã§ãã¾ããWebãµã¼ããèªèº«ã®SCID (Source Connection ID)ãç®åºããã¨ãæ¼ç®çµæãè¦ãã¦ããã¾ããããã¯å³4ã®â
3ã®å¦çã«ç¸å½ããé¨åã§ãã
lb_test
ã®åºåçµæã®èªã¿æ¹
â PCID: Plain Text CIDã®ä¾
1:#./lb_test
2: ...
3:PCID LB configuration: cr_bits 0x0 length_self_encoding: n
sid_len 2
4:cid 30e198 sid e198 su
5:cid 15fb7619 sid fb76 su 19
6:cid 3dacfd487d sid acfd su 487d
7:cid 34828366865a sid 8283 su 66865a
8:cid 14d17343900634 sid d173 su 43900634
3è¡ç®ã«è¨å®ã表示ããã¾ããsid_len
ã¯ãµã¼ãIDã®é·ãã§ããã®ä¾ã§ã¯2ãã¤ãã®å ´åãåãä¸ãã¦ãã¾ããããããã¼ããã©ã³ãµã¨å
±æããæ
å ±ã§ããcr_bits 0x0
, length_self_encoding: n
ã¯å
é 2ãããã¯Config Rotationã00(2é²è¡¨è¨), ç¶ã6ãããã¯é·ããåãè¾¼ã¾ãªãã®ã§ã©ã³ãã ã«æºãããæå³ã§ãã4ï½8è¡ç®ã®cid
ã®å
é 1ãã¤ãç®ã®æ§é ã«åæ ããã¦ãã¾ããå
é 2ãããã¯ãã¹ã¦00ã§ãããã¨æ³¨æãã¦ãã ããã
ç¶ã2ããã³3ãã¤ãç®ã®å¤ã¯ãPlain Textæ¹å¼ã§ã¯åè¡ã«è¡¨ç¤ºããã¦ãããµã¼ãID(sid
)ã®å¤ã¨ä¸è´ãã¦ãããã¨ãæ確ã«ãããã¾ããæå¾ã®su
ã¯server usedã®æå³ã§ãæ¯ãåãå
ã®Webãµã¼ãä¸ã§ã³ãã¯ã·ã§ã³èå¥ã«ä½¿ãé¨åã«ãªãã¾ãã4è¡ç®ã ãsu
ã¯ããã¾ãããã1ã¤ã ãã¨è§£éãã¾ãã
â BCID: Block Stream Cipher CIDã®ä¾
1:#./lb_test
2: ...
3: BCID LB configuration: cr_bits 0x0 length_self_encoding: y
sid_len 1 key 1cdb833ce074d05a87fcaa9c00261c64
4: cid 10b0305f384a148bc8d46ec4020c3465cb sid 23
su 3585a11a6d747a1faf6e89dd222066
5: cid 107229d120611490fd8995f6ab0c30890a sid 34
su 1109e3f3de68e1a0310945a99fa9e1
6: cid 1061090df6db3d46411a2521ccc2b3e773 sid 75
su ce140f9c1fad1f0678d68d6f73abd6
7: cid 10dbf87f29011ca10a838d9244e4b152a2 sid 09
su 68d5a15c53baf07119e99d7249ce5a
8: cid 10548af170bcba6a72fdd34e339e4a16a3 sid d0
su 256132ee3fa5d400c7f6d32a7b592e
3è¡ç®ã«è¡¨ç¤ºãè¨å®ããã¼ããã©ã³ãµã¨Webãµã¼ãã®éã§å
±æããæ
å ±ã§ããsid_len
ããµã¼ãIDã®é·ãã§1ãã¤ããç§å¯éµkey
ã1cdb883ce074d05a87fcaa9c00261c64
ã§ããäºã¤ã®æ
å ±ã¨ãªã£ã¦ãã¾ããã³ãã¯ã·ã§ã³IDã®2ï½17ãã¤ãç®ã®é¨åã¯ããµã¼ãIDãç§å¯éµã§æå·åããçµæããçæããã¦ãã¾ãããµã¼ãIDã¯ããã1ãã¤ãã§ãããcid
ãã¿ã¦ãæ¨æ¸¬ãããã¨ã¯ã§ãã¾ããããç¹å®ã®Webãµã¼ããçãããæ»æè
ããããã«å±ããããªã³ãã¯ã·ã§ã³IDãæ£æçã«ä½ãåºããã¨ãã§ãã¾ããã
ãªããcr_bits 0x0
, length_self_encoding: y
ã®æå³ã¯å
é 2ãããã®Config Rotationã00(2é²è¡¨è¨), ç¶ã6ãããã«ã¯(ã³ãã¯ã·ã§ã³ID - 1)ã®é·ããåãè¾¼ãã§ãã¾ãã10(hex)=00-010000(bin) ãªã®ã§ãã³ãã¯ã·ã§ã³IDã®é·ãã¯16ãã¤ã+1=17ãã¤ãã§ãããã¨ããããã¾ãã
æ¹å¼ç·¨ã®ã¾ã¨ã
IETFã§è°è«ãé²ãQUICã®ãã¼ããã©ã³ã¹æ¹å¼ã«ã¤ãã¦æ¹å¼ãç´¹ä»ãã¾ãããQUICã³ãã¯ã·ã§ã³ãã¯ã©ã¤ã¢ã³ãã¨ããã¯ã¨ã³ãã«ããWebãµã¼ãéã§æç«ããã¤ã¤ããã¤ãã³ãã¯ã·ã§ã³ã«é¢ãã¦ã»ã¼ã¹ãã¼ãã¬ã¹ã«æ¯ãåããæ¹å¼ã§ãããã¾ã æ¨æºåã¯è°è«ä¸ã®ç¶æ³ã§ãããä»å¾å®è£ ãé²ããã¨ãæå¾ ãã¾ãã次åã®å®è£ ç·¨ã§ã¯ãQUIC-LBã®å®è£ ãããã¼ããã©ã³ãµã®åºç¤æè¡ã¨ãªã£ã¦ããããã¼èå¥ã®è¦³ç¹ããè¦ãQUICã³ãã¯ã·ã§ã³ã«ã¤ãã¦è§£èª¬ãã¾ãã