Cloudflare-ը հրապարակել է xdpcap՝ երթևեկության անալիզատոր, որը հիմնված է XDP ենթահամակարգի վրա

Cloudflare ընկերություն ներկայացրել բաց նախագիծ xdpcap, որի շրջանակներում մշակվում է tcpdump-ի նման ցանցային փաթեթների անալիզատոր՝ կառուցված ենթահամակարգի հիման վրա XDP (eXpress տվյալների ուղի): Ծրագրի կոդը գրված է Go and տարածվում է BSD լիցենզիայի ներքո: Նախագիծը նույնպես պատրաստված գրադարան՝ Go հավելվածներից eBPF երթևեկության մշակողներին կապելու համար:

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 ռեժիմների ձևի՝ օգտագործելով կոմպիլյատոր: cbpfc, օգտագործելով LLVM/Clang զարգացումները: Ելքում երթևեկության տեղեկատվությունը պահպանվում է ստանդարտ pcap ձևաչափով, որը թույլ է տալիս օգտագործել xdpcap-ում պատրաստված երթևեկության աղբավայրը tcpdump-ում և այլ գոյություն ունեցող երթևեկության անալիզատորներում հետագա ուսումնասիրության համար: Օրինակ, DNS-ի երթևեկի մասին տեղեկատվությունը գրավելու համար «tcpdump ip և udp port 53» հրամանը օգտագործելու փոխարեն կարող եք գործարկել «xdpcap /path/to/hook capture.pcap 'ip and udp port 53'» և այնուհետև օգտագործել capture: .pcap ֆայլ, օրինակ՝ «tcpdump -r» հրամանով կամ Wireshark-ում:

Source: opennet.ru

Добавить комментарий