Κυκλοφόρησε η πρώτη έκδοση της βιβλιοθήκης Aya, η οποία σας επιτρέπει να γράφετε χειριστές eBPF που βασίζονται σε πυρήνα στο Rust. Linux σε μια αποκλειστική εικονική μηχανή με JIT. Σε αντίθεση με άλλα εργαλεία ανάπτυξης eBPF, το Aya δεν χρησιμοποιεί libbpf ή τον μεταγλωττιστή bcc, αλλά προσφέρει τη δική του υλοποίηση γραμμένη σε Rust που χρησιμοποιεί το πακέτο libc crate για άμεση πρόσβαση σε κλήσεις συστήματος πυρήνα. Η δημιουργία του Aya δεν απαιτεί αλυσίδες εργαλείων C ή αρχεία κεφαλίδας πυρήνα. Ο κώδικας της βιβλιοθήκης διανέμεται με τις άδειες MIT και Apache 2.0.
Βασικά χαρακτηριστικά:
- Υποστήριξη για το BTF (BPF Type Format), το οποίο παρέχει πληροφορίες τύπου σε ψευδοκώδικα BPF για έλεγχο τύπων και αντιστοίχιση με τύπους που παρέχονται από τον τρέχοντα πυρήνα. Η χρήση του BTF επιτρέπει τη δημιουργία καθολικών χειριστών eBPF που μπορούν να χρησιμοποιηθούν χωρίς επαναμεταγλώττιση σε διαφορετικές εκδόσεις πυρήνα. Linux.
- Υποστήριξη για κλήσεις bpf-σε-bpf, καθολικές μεταβλητές και αρχικοποιητές, επιτρέποντας στα προγράμματα eBPF να γράφονται με παρόμοιο τρόπο με τα κανονικά προγράμματα που χρησιμοποιούν το aya ως χρόνο εκτέλεσης, επαναπροσδιορίζοντας τις συναρτήσεις ώστε να λειτουργούν στο eBPF.
- Υποστήριξη για διάφορους τύπους πυρήνα, συμπεριλαμβανομένων κανονικών πινάκων, hashes (χάρτες κατακερματισμού), στοίβων, ουρών, ιχνηλατήσεων στοίβας, καθώς και δομών για sockets και παρακολούθηση απόδοσης.
- Δυνατότητα δημιουργίας διαφόρων τύπων προγραμμάτων eBTF, συμπεριλαμβανομένων προγραμμάτων για φιλτράρισμα και διαχείριση κίνησης, χειριστών cgroup και διαφόρων λειτουργιών socket, προγραμμάτων XDP.
- Υποστήριξη για πλατφόρμες για ασύγχρονη επεξεργασία αιτημάτων σε λειτουργία χωρίς αποκλεισμό tokio και async-std.
- Γρήγορη κατασκευή, χωρίς καμία εξάρτηση από την κατασκευή του πυρήνα και τα αρχεία κεφαλίδας πυρήνα.
Το έργο θεωρείται προς το παρόν πειραματικό—το API δεν έχει ακόμη σταθεροποιηθεί και εξακολουθεί να εξελίσσεται. Επιπλέον, δεν έχουν υλοποιηθεί ακόμη όλα τα προγραμματισμένα χαρακτηριστικά. Μέχρι το τέλος του έτους, οι προγραμματιστές ελπίζουν να φέρουν τη λειτουργικότητα του Aya σε ισοτιμία με το libbpf και να κυκλοφορήσουν την πρώτη σταθερή έκδοση τον Ιανουάριο του 2022. Σχεδιάζουν επίσης να ενσωματώσουν τα μέρη του Aya που απαιτούνται για τη σύνταξη κώδικα Rust για τον πυρήνα. Linux με στοιχεία που εκτελούνται στον χώρο χρήστη και χρησιμοποιούνται για τη φόρτωση, τη σύνδεση και την αλληλεπίδραση με προγράμματα eBPF.
Υπενθυμίζεται ότι το eBPF είναι ένα ολοκληρωμένο πρόγραμμα πυρήνα. Linux Ένας διερμηνέας bytecode που σας επιτρέπει να δημιουργείτε χειριστές λειτουργιών δικτύου, να παρακολουθείτε τη δραστηριότητα του συστήματος, να αναχαιτίζετε κλήσεις συστήματος, να ελέγχετε την πρόσβαση, να επεξεργάζεστε συμβάντα με χρονομέτρηση, να υπολογίζετε τη συχνότητα και τη διάρκεια των λειτουργιών και να εκτελείτε ιχνηλάτηση χρησιμοποιώντας kprobes/uprobes/tracepoints. Χάρη στη μεταγλώττιση just-in-time (JIT), ο bytecode μεταφράζεται σε οδηγίες μηχανής εν κινήσει και εκτελείται με εγγενή απόδοση κώδικα. Το XDP παρέχει τα μέσα για την εκτέλεση προγραμμάτων BPF σε επίπεδο προγράμματος οδήγησης δικτύου, με άμεση πρόσβαση στο buffer πακέτων DMA, επιτρέποντας τη δημιουργία χειριστών υψηλής απόδοσης για βαριά φορτία δικτύου.
Πηγή: opennet.ru
