Cloudflare ընկերություն
Xdpcap ծրագիրը համատեղելի է tcpdump/libpcap զտիչ արտահայտությունների հետ և թույլ է տալիս նույն սարքաշարի վրա երթևեկության զգալիորեն ավելի մեծ ծավալներ մշակել: Xdpcap-ը կարող է օգտագործվել նաև վրիպազերծման համար այնպիսի միջավայրերում, որտեղ սովորական tcpdump-ը կիրառելի չէ, ինչպիսիք են զտումը, DoS պաշտպանությունը և բեռների հավասարակշռման համակարգերը, որոնք օգտագործում են Linux միջուկի XDP ենթահամակարգը, որը մշակում է փաթեթները՝ նախքան դրանք մշակվել Linux միջուկի ցանցային փաթեթի կողմից (tcpdump): չի տեսնում XDP մշակողի կողմից բաց թողնված փաթեթները):
Բարձր արդյունավետությունը ձեռք է բերվում eBPF և XDP ենթահամակարգերի կիրառմամբ: eBPF-ը բայթկոդի թարգմանիչ է, որը ներկառուցված է Linux միջուկում, որը թույլ է տալիս ստեղծել մուտքային/ելքային փաթեթների բարձր արդյունավետության մշակիչներ՝ դրանք փոխանցելու կամ չեղարկելու վերաբերյալ որոշումներով: Օգտագործելով JIT կոմպիլյատորը, eBPF բայթկոդը անմիջապես թարգմանվում է մեքենայի հրահանգների մեջ և կատարվում է բնիկ կոդի կատարմամբ: XDP (eXpress Data Path) ենթահամակարգը լրացնում է eBPF-ին՝ BPF ծրագրերը ցանցի դրայվերի մակարդակով գործարկելու ունակությամբ, DMA փաթեթների բուֆեր ուղղակի մուտքի աջակցությամբ և այն փուլում, մինչև skbuff բուֆերը հատկացվի ցանցի կույտով:
Ինչպես tcpdump-ը, xdpcap ծրագիրը նախ թարգմանում է բարձր մակարդակի երթևեկության զտման կանոնները դասական BPF ներկայացման (cBPF)՝ օգտագործելով ստանդարտ libpcap գրադարանը, այնուհետև դրանք փոխակերպում է eBPF ռեժիմների ձևի՝ օգտագործելով կոմպիլյատոր:
Source: opennet.ru