Η Cloudflare δημοσίευσε το xdpcap, έναν αναλυτή κίνησης που βασίζεται στο υποσύστημα XDP

Εταιρεία Cloudflare παρουσιάζονται ανοιχτό έργο xdpcap, εντός του οποίου αναπτύσσεται ένας αναλυτής πακέτων δικτύου παρόμοιος με το tcpdump, κατασκευασμένος με βάση το υποσύστημα XDP (Διαδρομή δεδομένων eXpress). Ο κώδικας του έργου είναι γραμμένος στο Go και διανέμονται από με άδεια BSD. Το έργο επίσης έτοιμος βιβλιοθήκη για δέσμευση χειριστών κίνησης eBPF από εφαρμογές Go.

Το βοηθητικό πρόγραμμα xdpcap είναι συμβατό με εκφράσεις φιλτραρίσματος tcpdump/libpcap και σας επιτρέπει να επεξεργάζεστε σημαντικά μεγαλύτερους όγκους κίνησης στο ίδιο υλικό. Το Xdpcap μπορεί επίσης να χρησιμοποιηθεί για εντοπισμό σφαλμάτων σε περιβάλλοντα όπου το κανονικό tcpdump δεν εφαρμόζεται, όπως συστήματα φιλτραρίσματος, προστασίας DoS και εξισορρόπησης φορτίου που χρησιμοποιούν το υποσύστημα XDP του πυρήνα Linux, το οποίο επεξεργάζεται πακέτα πριν από την επεξεργασία τους από τη στοίβα δικτύωσης πυρήνα Linux (tcpdump δεν βλέπει πακέτα που απορρίπτονται από τον χειριστή XDP).

Η υψηλή απόδοση επιτυγχάνεται με τη χρήση των υποσυστημάτων eBPF και XDP. Το eBPF είναι ένας διερμηνέας bytecode ενσωματωμένος στον πυρήνα του Linux που σας επιτρέπει να δημιουργείτε χειριστές υψηλής απόδοσης εισερχόμενων/εξερχόμενων πακέτων με αποφάσεις σχετικά με την προώθηση ή την απόρριψή τους. Χρησιμοποιώντας έναν μεταγλωττιστή JIT, ο bytecode eBPF μεταφράζεται αμέσως σε οδηγίες μηχανής και εκτελείται με την απόδοση του εγγενούς κώδικα. Το υποσύστημα XDP (eXpress Data Path) συμπληρώνει το eBPF με τη δυνατότητα εκτέλεσης προγραμμάτων BPF σε επίπεδο προγράμματος οδήγησης δικτύου, με υποστήριξη για άμεση πρόσβαση στο buffer πακέτων DMA και εργασία στο στάδιο πριν από την εκχώρηση του buffer skbuff από τη στοίβα δικτύου.

Όπως το tcpdump, το βοηθητικό πρόγραμμα xdpcap μεταφράζει πρώτα τους κανόνες φιλτραρίσματος κυκλοφορίας υψηλού επιπέδου στην κλασική αναπαράσταση BPF (cBPF) χρησιμοποιώντας την τυπική βιβλιοθήκη libpcap και στη συνέχεια τους μετατρέπει σε ρουτίνες eBPF χρησιμοποιώντας έναν μεταγλωττιστή cbpfc, χρησιμοποιώντας τις εξελίξεις LLVM/Clang. Στην έξοδο, οι πληροφορίες κυκλοφορίας αποθηκεύονται στην τυπική μορφή pcap, η οποία σας επιτρέπει να χρησιμοποιήσετε μια ένδειξη κυκλοφορίας που έχει προετοιμαστεί σε xdpcap για μετέπειτα μελέτη στο tcpdump και σε άλλους υπάρχοντες αναλυτές κυκλοφορίας. Για παράδειγμα, για να καταγράψετε πληροφορίες κυκλοφορίας DNS, αντί να χρησιμοποιήσετε την εντολή "tcpdump ip and udp port 53", μπορείτε να εκτελέσετε "xdpcap /path/to/hook capture.pcap 'ip and udp port 53'" και στη συνέχεια να χρησιμοποιήσετε μια λήψη .pcap, π.χ. με την εντολή "tcpdump -r" ή στο Wireshark.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο