XDPã¡ã¢ïŒã¢ãŒããã¯ãã£ãæ§èœããŠãŒã¹ã±ãŒã¹ïŒ
ã¯ããã« The eXpress data path: fast programmable packet processing in the operating system kernel 1 ãèªãã ã ãã®æç« ã¯ã»ãšãã©ãã®è«æãããšã«æžããããäžéšãã¥ãŒã¹èšäºãåŒçšããŠããã eBPFïŒXDPãæµè¡ã£ãŠãããšããããšã¯ãBCCãbpftraceãFacebook KatranãCloudflare Gatebot ãªã©eBPFïŒXDPã䜿ããããžã§ã¯ãã®Github Staræ°ããæãåããã eBPFïŒXDPã«ã¯ãç¹æ®ãªããŒããŠã§ã¢ã»ãœãããŠã§ã¢ã«äŸåããã ã«ãŒãã«ã®ä»æããšããŠé«éãã±ããåŠçãå®çŸã§ãããšãã匷åãªã¡ãªãããããã äžæ¹ã§ããŸã匱ç¹ã䞻匵ãããããªèšäºã¯èŠåœãããªãã®ã§ãå®éã®ãšããã©ããªã®ãæè§Šãç¥ãããã XDPã䜿ããšNICããã€ã¹ãã©ã€ãã®ã³ã³ããã¹ãã§ãeBPF Verifilerã®å¶çŽã¯ããã€ã€ãã æ¯èŒçèªç±ã«ãã±ããåŠçãå®çŸã§ããã ãŸããæçããLinuxã®ãããã¯ãŒã¯ã¹ã¿ãã¯ãšå ±åãã€ã€ã1ã³ã¢ã§24Mppsãšããé«éãªãã±ããåŠçãå®çŸã§ããã XDPããã°ã©ã ã¯ãeBPFã®å¶çŽã®ããšCèšèªã§èšè¿°ããããšãã§ããclangã§ELFãã€ããªã«ã³ã³ãã€ã«ããã XDPã®ç«¶åãšããŠã«ãŒãã«ãã€ãã¹ãªDPDKããããäž¡è ã®ç¹åŸŽã¯ä»¥äžã®ãšããã DPDKïŒ ã«ãŒãã«ãã€ãã¹ã«ãã£ãŠã³ã³ããã¹ãã¹ã€ãããé¿ãé«éåãå³ã ã³ã¢ãå°æããïŒç¹å®ã®ã³ã¢ã§CPU 100%ã«åŒµãä»ãããŠããŒãªã³ã°ïŒ ã¹ã«ãŒããããšã¬ã€ãã³ã·ã©ã¡ãã®èгç¹ã§èŠãŠãDPDKã®ã»ããåªããŠãã ãããã¯ãŒã¯ã¹ã¿ãã¯ãåå®è£ ããå¿ èŠããã XDPïŒ å°çšã³ã¢ãäžèŠïŒé»åé¢ãªã©ã§æå©ïŒ 容æã«ããŒãã»ã¢ã³ããŒãã§ãã åå空éãªã©ã«ãŒãã«ã®æ©èœã«åŒ·ãäŸåããã³ã³ããç°å¢ã®æ®åã§ãXDPã®éèŠåºŠãå¢ããŠããããã«æãã ãã¯ãã«ãŒãã«ãããã¯ãŒã¯ã¹ã¿ãã¯ãšå ±åã§ãããšããã¡ãªããã匷ã ã¢ãŒããã¯ã㣠ãã±ããçä¿¡ã®ãã³ã«ãããã€ã¹ãã©ã€ãã®ããã¯ãã€ã³ãã§XDPããã°ã©ã ãå®è¡ãããã ãã®ããã¯ãã€ã³ãã¯ãããã€ã¹ãã©ã€ãã®åŠçã®äžã§ãåæã«äœçœ®ããïŒsk_buff ã®å²ãåœãŠåïŒã XDPããã°ã©ã ã¯ããããã®ããŒã¹ãeBPFãããã®èªã¿æžãããã«ã颿°ïŒFIBã®ã«ãã¯ã¢ãããªã©ïŒã®åŒã³åºããçµãŠã æçµçã«ãã±ãããã©ãã«éãåºããæ±ºå®ããã éãå ã«ã€ããŠã¯ãXDPããã°ã©ã ã®çµäºã³ãŒãã§å¶åŸ¡ããããšãã§ãã ããããããããåã€ã³ã¿ãŒãã§ã€ã¹ã«éãè¿ããä»ã€ã³ã¿ãŒãã§ã€ã¹ã«è»¢éãããAF_XDPãšããŠãŠãŒã¶ããã°ã©ã ã«éãã éåžžã®ãããã¯ãŒã¯ã¹ã¿ãã¯ã«éããããéžæããã 2ã€ä»¥äžã®XDPããã°ã©ã ãåã€ã³ã¿ãŒãã§ã€ã¹ã«çŽä»ãããå Žåã«ã¯ tail call ãšããŠåŠçãåŒãæž¡ãããšãã§ããã å€éšã®ã·ã¹ãã ãšããŒã¿ã®ããåããããããã«ãeBPF MapãçšæãããŠããã eBPF Verifilerãå³ãããã§ãã¯ããŠããã®ã§ãå¿ ãeBPF Mapã䜿ãããšã«ãªãããã ã åºå žïŒThe eXpress data path: fast programmable packet processing in the operating system kernel...