
ãããŠãããã¯Twitterã§çºèŠãããŸãã
Linuxã«ãŒãã«ã«ã¯ãã³ã³ãããŒãåå ã®ãšã©ãŒããããŸãã TCPãã§ãã¯ãµã ã®ãã§ãã¯ãåé¿ããããã«ãã³ã³ããã¯ãããã¯ãŒã¯ã«ãŒãã£ã³ã°ã«vethããã€ã¹ïŒIPv6 DockerãKubernetesãGoogle Container EngineãMesosãªã©ïŒã䜿çšããŸãã ããã«ãããé害ã®ãããããã¯ãŒã¯æ©åšã§çºçããããã«ãã¢ããªã±ãŒã·ã§ã³ã誀ã£ãŠç ŽæããããŒã¿ãåä¿¡ããå ŽåããããŸãã ãã®ãšã©ãŒã¯å°ãªããšã3幎åã«çºçãããŸã ã«ãŒãã«ã«ã座ã£ãŠãããããšã確èªããŸããã ãããã¯ãã¹ããããã«ãŒãã«ã«å°å ¥ãããçŸåšãããŸããŸãªãã£ã¹ããªãã¥ãŒã·ã§ã³ïŒSuseãCanonicalãªã©ïŒã®å®å®çãªãªãŒã¹3.14ã®ã¬ãããµããŒããæäŸããŠããŸãã ã·ã¹ãã ã§ã³ã³ããã䜿çšããå Žåã¯ããã®ãããã䜿çšããããå©çšå¯èœã«ãªã£ããšãã«ã«ãŒãã«ãã€ã³ã¹ããŒã«ããããšããå§ãããŸãã
泚ïŒGoogle Container Engineã¯ä»®æ³ãããã¯ãŒã¯ã«ããããŒããŠã§ã¢ãšã©ãŒããå®è³ªçã«ä¿è·ãããŠãããããããã¯Dockerã§ããã©ã«ãã§äœ¿çšãããNATãããã¯ãŒã¯ã«ã¯é©çšãããŸããã Jake Bowerã¯ãŸãããã®ãšã©ãŒã¯ä»¥åã«çºèŠãããPager Dutyãšã©ãŒã«éåžžã«äŒŒãŠãããšèããŠããŸãã
ããããã¹ãŠå§ãŸã£ãæ¹æ³
11æã®ããé±æ«ãTwitterãµããŒããšã³ãžãã¢ã®ã°ã«ãŒãããã°ãã¹ãã£ã³ããŸããã åäœããªãåã¢ããªã±ãŒã·ã§ã³ã¯ãå¥åŠãªæååãå¿ é ãã£ãŒã«ãã®çç¥ãšãã圢ã§ãä¿¡ããããªãããšã©ãŒãçæããŸããã ãããã®ãšã©ãŒã®é¢ä¿ã¯ãTwitterã®åæ£ã¢ãŒããã¯ãã£ã®æ§è³ªã«ããæããã§ã¯ãããŸããã§ããã åæ£ã·ã¹ãã ã§ã¯ãããŒã¿ãç Žæãããšãããªãã®æéãšã©ãŒãçºçããå¯èœæ§ããããããç¶æ³å šäœãè€éã«ãªããŸããïŒãã£ãã·ã¥ããã£ã¹ã¯ããžã£ãŒãã«ãªã©ã«ä¿åãããŸãïŒã
ã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã§ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã«é¢ãã1æ¥ã®ç¶ç¶çãªäœæ¥ã®åŸãããŒã ã¯åé¡ãåã ã®ã©ãã¯ã©ãã¯ã«ããŒã«ã©ã€ãºããããšã«æåããŸããã ãšã³ãžãã¢ã¯ãå®å ã«å°éããçŽåã«ãæ€åºãããTCPãã§ãã¯ãµã ãšã©ãŒã®æ°ãå€§å¹ ã«å¢å ãããšå€æããŸããã ãã®çµæã¯ãœãããŠã§ã¢ãã解æŸãããããã«èŠããŸãããã¢ããªã±ãŒã·ã§ã³ã¯ãããã¯ãŒã¯ã®èŒ»èŒ³ãåŒãèµ·ããå¯èœæ§ããããŸããããã±ããã®æå·ã¯çããŸããã§ããïŒ
泚ïŒ
çåœã®ãããŒã ãã®èšåã¯ããã®åé¡ã«åãçµãã 人ã
ã®æ°ãèªè
ããé ããããããŸããã äŒç€Ÿå
šäœã®å€ãã®ãšã³ãžãã¢ãããããã®å¥åŠãªé害ã®èšºæã«åãçµã¿ãŸããã å
šå¡ããªã¹ãããã®ã¯é£ããã§ãããäž»ãªè²¢ç®è
ã¯ãã©ã€ã¢ã³ã»ããŒãã£ã³ãããããã»ããã³ãœã³ãã±ã³ã»ã«ã¯ã¢ããããã¯ã»ããã£ããŒããããšã«ã»ã«ãã«ãã³ãããµã³ãã£ã»ã¹ããã³ã°ã§ãã ãã¶ãã¯ã»ããŒã«ããŠã£ã«ã»ãã£ã³ãã«ãã©ãã³ã»ããã£ããã€ãªã»ãŠãšãããŒã¯ã»ãããŒã«ãããããã»ããŒããŽãã«ã»ã©ãŒãžãããããããžã§ã»ãã»ã¹ãã¹ãããã¹ã»ã¡ãã³ãã¢ã¬ãã¯ã¹ã»ã©ã³ããŒããã€ã¢ã³ã»ããŠã³ãºãã³ã³ã°ã»ã¯ã³ïŒ
ãããã®ã©ãã¯ã®é»æºãåããšããã«ãã¢ããªã±ãŒã·ã§ã³ãšã©ãŒããªããªããŸããã ãã¡ããããããã¯ãŒã¯ã¬ãã«ã§ã®ããŒã¿ç Žæã¯ããŸããŸãªçç±ã§çºçããå¯èœæ§ããããŸããæãå¥åŠãªæ¹æ³ã§ã¯ãã¹ã€ãããæ éããããã¯ã€ã€ãç Žæããããé»æºãæ éãããããããšããããããŸãã TCPããã³IPã®ãã§ãã¯ãµã ã¯ããã®ãããªé害ããä¿è·ããããã«èšèšãããŠããŸãã å®éãæ©åšã«ã€ããŠåéãããçµ±èšã¯ããšã©ãŒãååšããããšã瀺ããŠããŸããã ã§ã¯ããªãããŸããŸãªã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ãå§ããã®ã§ããïŒ
ç¹å®ã®ã¹ã€ãããåé¢ããåŸããããã®ãšã©ãŒãåçŸããè©Šã¿ãè¡ãããŸããïŒäž»ã«ã·ãã¢ä¿¡é Œæ§ãšã³ãžãã¢ã®ãã©ã€ã¢ã³ã»ããŒãã£ã³ã®å€å€§ãªäœæ¥ã«ãããã®ã§ãïŒã ãããã®ã©ãã¯ã«å€æ°ã®ããŒã¿ãã±ãããéä¿¡ããããšã«ãããç ŽæããããŒã¿ãåçŸããã®ã¯æ¯èŒçç°¡åã§ããããšãå€æããŸããã äžéšã®ã¹ã€ããã§ã¯ãéä¿¡ããããã±ããã®æ倧10ïŒ ãç ŽæããŠããŸããã ãã ããæå·ã¯åžžã«TCPãã§ãã¯ãµã ïŒTcpInCsumErrors netstat-aãªã©ã®ã¡ãã»ãŒãžïŒã䜿çšããŠã«ãŒãã«ã«ãã£ãŠæ€åºãããã¢ããªã±ãŒã·ã§ã³ã«å°éããããšã¯ãããŸããã§ããã ïŒLinuxã§ã¯ãææžåãããŠããªãSO_NO_CHECKãªãã·ã§ã³ã䜿çšããŠããã§ãã¯ãµã ãç¡å¹ã«ããŠIPv4 UDPãã±ãããéä¿¡ã§ããŸãããã®å Žåããã±ãããç ŽæããŠããããšãããããŸããïŒ
Evan Jonesã¯ãç ŽæããããŒã¿ã«ã¯æ£ããTCPãã§ãã¯ãµã ãããããšãææ¡ããŸããã åã16ãããã¯ãŒãã§2ãããããå転ãïŒããšãã°ã0â1ããã³1â0ïŒãã©ãŒãªã³ã°ãããŠããå ŽåãTCPãã§ãã¯ãµã ãžã®åœ±é¿ã¯äºãã«çžæ®ºãããŸãïŒTCPãã§ãã¯ãµã ã¯åçŽãªãããã®è¿œå ã§ãïŒã ã¡ãã»ãŒãžå ã®ããŒã¿ç ŽæïŒã¢ãžã¥ã32ãã€ãïŒã¯åžžã«åããããäœçœ®ãå€æŽããããšã«ãããŸãããããã®ãããªå¯èœæ§ãæé€ãããã¹ãã£ãããŒããããïŒ0â1ïŒããã£ããšããäºå®ã äžæ¹ããã§ãã¯ãµã èªäœã¯ä¿åãããåã«å転ãããããããã§ãã¯ãµã å ã®ãããã®ãããªããããšããŒã¿å ã®ãããã®ãããªãããã¯äºãã«çžæ®ºã§ããŸãã ãã ããç§ãã¡ã芳å¯ãããããäœçœ®ã¯TCPãã§ãã¯ãµã ã«å€æŽã§ããªããããããã¯äžå¯èœã§ããã
ããã«ãããŒã ã¯ãã¹ããæšæºã®Linuxã·ã¹ãã ã§å®è¡ãããTwitterã®ã»ãšãã©ã®ãµãŒãã¹ãLinuxã³ã³ããã䜿çšããŠããŸããŸãªã¢ããªã±ãŒã·ã§ã³ãåé¢ããMesosã§å®è¡ãããããšã«æ°ä»ããŸããã ç¹ã«ãä»®æ³ã€ãŒãµãããããã€ã¹ïŒvethããã€ã¹ïŒã¯Twitteræ§æã§äœæããããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ãã±ããã¯ããããä»ããŠéä¿¡ãããŸãã ãã¡ããããã¹ãã¢ããªã±ãŒã·ã§ã³ãèµ·åããåŸãTCPãã§ãã¯ãµã ãééã£ãŠããïŒããã³äžæ£ãšããŠæ€åºãããïŒTcpInCsumErrorsã®æ°ãå¢å ããïŒã«ãããããããç ŽæããããŒã¿ãTCPæ¥ç¶ãä»ããŠMesosã³ã³ãããŒãä»ããŠããã«çŸããŸããã 誰ãããä»®æ³ã€ãŒãµãããããã€ã¹ã®ããã§ãã¯ãµã ãªãããŒããèšå®ãå€æŽããããšãææ¡ããŸãããããã«ãããåé¡ã解決ããã察å¿ããç ŽæããŒã¿ãåé€ãããŸããã
ä»ãç§ãã¡ã«ã¯é倧ãªä»äºããããŸãã Mesos TwitterããŒã ã¯ãæ å ±ãMesosãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã«è¿ éã«äžç¶ãããã¹ãŠã®Twitteräœæ¥ã³ã³ããã®èšå®ãå€æŽããŸããã
ããã«æã
Evanãšç§ããã®ãšã©ãŒã«ã€ããŠè©±ãåã£ããšããTCP / IPãããã³ã«ã¯OSã«éåããŠãããããMesosã®æ§æãã¹ã®çµæã§ã¯ãªããã«ãŒãã«ãããã¯ãŒã¯ã¹ã¿ãã¯ã§ä»¥åã«æ€åºãããªãã£ããšã©ãŒã®çµæã§ããå¯èœæ§ãé«ããšå€æããŸããã
ãã®èª¿æ»ãç¶è¡ããããã«ãå¯èœãªéãåçŽãªãã¹ãã·ã¹ãã ãäœæããŸããã
- ãœã±ãããéããéåžžã«ã·ã³ãã«ã§é·ãã¡ãã»ãŒãžã1ç§ã«1åéä¿¡ããåçŽãªã¯ã©ã€ã¢ã³ãã
- åçŽãªãµãŒããŒïŒå®éã«ã¯ãªã¹ãã³ã°ã¢ãŒãã§ãããã¯ãŒã¯ã³ã³ãã¥ãŒã¿ãŒã䜿çšããŸããïŒãããã¯ããœã±ããããªãã¹ã³ããæ å ±ãåä¿¡ãããšæ å ±ã衚瀺ããŸãã
- ãããã¯ãŒã¯ããã€ã¹ããŠãŒã¶ãŒããã±ãããæç·ã§éä¿¡ããåã«ä»»æã«æå·ããããšãå¯èœã«ããäŒéã³ã³ãããŒã©ãŒã
- ã¯ã©ã€ã¢ã³ããšãµãŒããŒãæ¥ç¶ãããããããã¯ãŒã¯ããã€ã¹ã䜿çšããŠã10ç§ä»¥å ã«éä¿¡ããããã¹ãŠã®ãã±ãããç Žå£ããŸããã
ã¯ã©ã€ã¢ã³ãããããã·ã³ãã管çãããµãŒããŒãå¥ã®ãã·ã³ãã管çããŸããã ã¹ã€ãããä»ããŠæ¥ç¶ãããã³ã³ãã¥ãŒã¿ãŒã ã³ã³ãããªãã§ãã¹ãã·ã¹ãã ãèµ·åãããšããæåŸ ã©ããã«åäœããŸããã ç Žæããããã±ãŒãžã®ã¢ã©ãŒãã¯åä¿¡ãããŠããŸããã å®éãç ŽæããããŒã¿ãéä¿¡ãããŠãã10ç§éã¯ãã¡ãã»ãŒãžããŸã£ããåä¿¡ããŸããã§ããã ã¯ã©ã€ã¢ã³ãããã±ããã®ç Žæãåæ¢ãããšã10åãã¹ãŠã®ã¡ãã»ãŒãžïŒé ä¿¡ãããªãã£ãïŒãããã«å°çããŸããã ããã«ãããã³ã³ãããªãã®Linuxäžã®TCPãæ£åžžã«æ©èœããããšã確èªãããŸããäžè¯TCPãã±ããã¯é 延ããããšã©ãŒãªãã§åä¿¡ã§ãããŸã§åžžã«åéä¿¡ãããŸãã

ãããã£ãŠãããã¯çè«çã«ã¯æ©èœããã¯ãã§ããç ŽæããããŒã¿ã¯é ä¿¡ãããŸããã TCPã¯ããããåéä¿¡ããŸãã
Linuxãšã³ã³ãããŒ
ãã®å Žæã«æ»ã£ãŠïŒåé¡ã蚺æãããšãã«è¡ã£ãããã«ïŒLinuxã³ã³ãããŒç°å¢ã§ãããã¯ãŒã¯ã¹ã¿ãã¯ãã©ã®ããã«æ©èœããããç°¡åã«èª¬æãããšäŸ¿å©ã§ãã ã³ã³ããã¯ããŠãŒã¶ãŒãµãŒãã³ã°ã¢ããªã±ãŒã·ã§ã³ãã³ã³ãã¥ãŒã¿ãŒã§é£æºã§ããããã«èšèšãããŠãããããä»®æ³åç°å¢ã®å€ãã®å©ç¹ãæäŸããŸãïŒã¢ããªã±ãŒã·ã§ã³ãçžäºã«åœ±é¿ããå¯èœæ§ãäœæžãŸãã¯å®å šã«æé€ããè€æ°ã®ã¢ããªã±ãŒã·ã§ã³ãç°ãªãç°å¢ãŸãã¯ç°ãªãã©ã€ãã©ãªãŒã§åäœããæ©èœãäœã³ã¹ãã§æäŸããŸãïŒä»®æ³åã çæ³çã«ã¯ãäºãã«ç«¶åãããã¹ãŠã®ãªããžã§ã¯ããåé¢ãããŸãã äŸã«ã¯ããã£ã¹ã¯èŠæ±ãã¥ãŒããã£ãã·ã¥ãããã³ãããã¯ãŒã¯æäœãå«ãŸããŸãã
Linuxã§ã¯ãã³ã³ãã¥ãŒã¿ãŒã§å®è¡ãããŠããäžéšã®ã³ã³ãããŒãä»ã®ã³ã³ãããŒããåé¢ããããã«vethããã€ã¹ã䜿çšãããŸãã Linuxãããã¯ãŒã¯ã¹ã¿ãã¯ã¯éåžžã«è€éã§ãããåºæ¬çã«vethããã€ã¹ã¯ããŠãŒã¶ãŒã®èŠ³ç¹ããã¯ãéåžžã®ãã€ãŒãµãããããã€ã¹ã®ããã«èŠããã¯ãã®ã€ã³ã¿ãŒãã§ã€ã¹ã§ãã
ä»®æ³ã€ãŒãµãããããã€ã¹ã䜿çšããŠã³ã³ãããäœæããã«ã¯ãïŒæåââã«ïŒã³ã³ãããäœæããïŒ2çªç®ã«ïŒvethãäœæããïŒ3çªç®ã«ïŒvethã®äžç«¯ãã³ã³ããã«ãã€ã³ãããïŒ4çªç®ã«ïŒvethã«IPã¢ãã¬ã¹ãå²ãåœãŠãïŒ5çªç®ã«ïŒã«ãŒãã£ã³ã°ãæ§æããå¿ èŠããããŸããLinuxãã©ãã£ãã¯å¶åŸ¡ã䜿çšããŠãã³ã³ããããã±ãããéåä¿¡ã§ããããã«ããŸãã
ãªããã®ãã¹ãŠã®ä»®æ³çµæžããèœã¡ãŠãããã®ã
ãµãŒããŒãã³ã³ããå ã§åäœããŠããããšãé€ããäžèšã®ãã¹ãã·ã¹ãã ãåäœæããŸããã ãããããããèµ·åãããšããæ£å察ã®ç»åãèŠãŸããïŒç ŽæããããŒã¿ã¯é 延ããããã¢ããªã±ãŒã·ã§ã³ã«é ä¿¡ãããŸããïŒ éåžžã«åçŽãªãã¹ãã·ã¹ãã ïŒããŒãã«äžã®2å°ã®ãã·ã³ãš2ã€ã®éåžžã«åçŽãªããã°ã©ã ïŒã§ãšã©ãŒãåçŸããŸããã

ç ŽæããããŒã¿ã¯ã¢ããªã±ãŒã·ã§ã³ã«é ä¿¡ãããŸããå·ŠåŽã®ãŠã£ã³ããŠãèŠãŠãã ããïŒ
ãŸãããã®ãã¹ãã·ã¹ãã ãã¯ã©ãŠããã©ãããã©ãŒã ã§åçŸããããšãã§ããŸããã Kubernetesã®æ§æã«ã¯ãããã©ã«ãã§åãç»åã衚瀺ãããŸãïŒããšãã°ãGoogle Container Engineã䜿çšããå ŽåïŒã ããã©ã«ãã®Dockeræ§æïŒNATã䜿çšïŒã¯å®å šã§ãããIPv6äžã®Dockeræ§æã¯å®å šã§ã¯ãããŸããã
ãšã©ãŒãä¿®æ£ããŸã
ã«ãŒãã«ãããã¯ãŒã¯ã³ãŒãã調ã¹ãåŸããã®ãšã©ãŒãã«ãŒãã«vethã¢ãžã¥ãŒã«ã«ããããšãæããã«ãªããŸããã ã«ãŒãã«ã§ã¯ãå®éã®ãããã¯ãŒã¯ããã€ã¹ããã®ãã±ããã§ãããŒããŠã§ã¢ããã§ãã¯ãµã ããã§ãã¯ããå Žåã¯ip_summedãCHECKSUM_UNNECESSARYã«èšå®ããããã±ãããäžè¯ã§ããããã§ãã¯ããæ¹æ³ããªãå Žåã¯CHECKSUM_NONEã«èšå®ãããŸãã
veth.cã®ã³ãŒãã¯ãCHECKSUM_NONEãCHECKSUM_UNNECESSARYã«çœ®ãæããŸããã ããã«ããããœãããŠã§ã¢ã«ãã£ãŠæ€èšŒããã³æåŠãããã¯ãã®ãã§ãã¯ãµã ãåã«é»ã£ãŠç¡èŠããããšããäºå®ã«è³ããŸããã ãã®ã³ãŒããåé€ããåŸããã±ããã¯å€æŽãããã«ã¹ã¿ãã¯ããå¥ã®ã¹ã¿ãã¯ã«è»¢éããå§ãïŒäºæ³ã©ãããtcpdumpã¯äž¡åŽã§èª€ã£ããã§ãã¯ãµã ã瀺ããŸããïŒãã¢ããªã±ãŒã·ã§ã³ã«æ£ããé ä¿¡ïŒãŸãã¯é 延ïŒãããŸããã ãã¹ããšã³ã³ããéã®NATã䜿çšããããªããžã³ã³ããæ¥ç¶ãå®éã®ããã€ã¹ããã³ã³ãããžã®ã«ãŒãã£ã³ã°ãªã©ãããã€ãã®äžè¬çãªãããã¯ãŒã¯æ§æã®ã¿ããã§ãã¯ããŸããã ãããTwitterã«å¹æçã«å®è£ ããŸããïŒåä¿¡æã®ãã§ãã¯ãµã èšç®ãç¡å¹ã«ããvethããã€ã¹ãã¢ã³ããŒãããŸãïŒã
ã³ãŒãããã®ããã«èšè¿°ãããçç±ã¯æ£ç¢ºã«ã¯ããããŸããããããã¯æé©åã®è©Šã¿ã ãšèããŠããŸãã å€ãã®å Žåãåãç©çãã·ã³äžã®ã³ã³ãããæ¥ç¶ããããã«vethããã€ã¹ã䜿çšãããŸãã åãç©çãã¹ãå ã®ã³ã³ãããŒïŒãŸãã¯ä»®æ³ãã·ã³ïŒéã§éä¿¡ããããã±ããã¯ããã§ãã¯ãµã ãèšç®ãŸãã¯ãã§ãã¯ãã¹ãã§ã¯ãªãããšã¯è«ççã§ãïŒãã±ããã¯æ±ºããŠã¯ã€ã€ãä»ããŠéä¿¡ãããªããããå¯äžã®æå·ã®åå ã¯ãã¹ãèªèº«ã®RAMã§ãã æ®å¿µãªããããã®æé©åã¯æå³ãããšããã«æ©èœããŸãããããŒã«ã«ã«éä¿¡ããããã±ããã®å Žåãip_summedãã©ã¡ãŒã¿ãŒã¯CHECKSUM_NONEã§ã¯ãªãCHECKSUM_PARTIALã«èšå®ãããŸãã
ãã®ã³ãŒãã¯ãæåã®ãã©ã€ããŒãªãªãŒã¹çšã«äœæãããŠããŸãïŒã³ãããe314dbdc1c0dc6a548ecf [NET]ïŒä»®æ³ã€ãŒãµãããããã€ã¹ãã©ã€ããŒïŒã Commit 0b7967503dc97864f283a net / vethã®ãªãªãŒã¹ïŒãã±ãããã§ãã¯ãµã ã®ä¿®æ£ïŒ2010幎12æïŒã¯ãCHECKSUM_PARTIALãå€æŽããã«ããŒã«ã«ã§äœæãããå®éã®ããã€ã¹ã«éä¿¡ããããã±ããã«å¯ŸããŠãããèšå®ããŸããã ãã ããå®éã®ããã€ã¹ããéä¿¡ããããã±ããã®å Žåããã®åé¡ã¯ãŸã 解決ãããŠããŸããã
以äžã¯ãã«ãŒãã«ã®ãããã§ãã
diff â git a/drivers/net/veth.cb/drivers/net/veth.c
index 0ef4a5a..ba21d07 100644
â â a/drivers/net/veth.c
+++ b/drivers/net/veth.c
@@ -117,12 +117,6 @@ static netdev_tx_t veth_xmit(struct sk_buff *skb, struct net_device *dev)
kfree_skb(skb);
goto drop;
}
- /* don't change ip_summed == CHECKSUM_PARTIAL, as that
- * will cause bad checksum on forwarded packets
- */
- if (skb->ip_summed == CHECKSUM_NONE &&
- rcv->features & NETIF_F_RXCSUM)
- skb->ip_summed = CHECKSUM_UNNECESSARY;
if (likely(dev_forward_skb(rcv, skb) == NET_RX_SUCCESS)) {
struct pcpu_vstats *stats = this_cpu_ptr(dev->vstats);
çµè«
å šäœãšããŠãnetdevã°ã«ãŒããšLinuxã«ãŒãã«ã®å°é家ã«ã¯æ¬åœã«æéãåããŸããã ã³ãŒãæ€æ»ã¯ååã«éãããããã¯æ°é±éæ¥ç¶ããã1ãæåŸã«ã¯ãããŸããŸãªã«ãŒãã«ãã£ã¹ããªãã¥ãŒã·ã§ã³ïŒCanonicalãSuseïŒã§å€ãå®å®ããŒãžã§ã³ïŒ3.14 +ïŒã®ã¬ãããµããŒããæäŸãããŸããã ã³ã³ããç°å¢ã®ãã¹ãŠã®å©ç¹ã«ããããã®ãšã©ãŒãäœå¹Žãæ°ä»ãããã«ç¶ããããšãæ¬åœã«é©ããŸããã ãããåå ã§ãã¢ããªã±ãŒã·ã§ã³ããã°ã©ã ã®é害ããã®ä»ã®äºæž¬ã§ããªãåäœãããã€çºçããã®ã ãããã