Aya, η πρώτη βιβλιοθήκη που δημιούργησε ελεγκτές eBPF στο Rust

Linus torvalds καθώς και πολλοί προγραμματιστές Πυρήνας και διαφορετικές διανομές έχουν εκφράσει τη συμπάθειά τους για το Rust και μάλιστα σε περισσότερες από μία περιπτώσεις έχει παρουσιαστεί το θέμα της υλοποίησης ελεγκτών σε αυτή τη γλώσσα προγραμματισμού στον πυρήνα του Linux.

Και επ' αυτού έχουν ήδη γίνει γνωστά διάφορα έργα, εκ των οποίων έχουμε ήδη αναφέρει εδώ στο blog και μπορούμε να αναφέρουμε για παράδειγμα πείραμα επιτυχής από την εναλλακτική σουίτα βοηθητικών προγραμμάτων, coreutils, που έχουν ξαναγραφτεί στο Rust (Αυτό περιλαμβάνει βοηθητικά προγράμματα όπως sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln και ls).

Δεδομένου αυτού, ο Linus torvalds δεν έχει εκφράσει πλήρως την άποψή του υπέρ αυτής της πρωτοβουλίας και έχει εκφράσει τα αρνητικά σημεία (μπορείτε να συμβουλευτείτε τις λεπτομέρειες Στον παρακάτω σύνδεσμο.)

Παρά τη σκληρή κριτική του Linus, τα έργα σχετικά με την υλοποίηση του Rust in the Kernel δεν έχουν σταματήσει να προχωρούν και πρόσφατα παρουσιάστηκε η πρώτη έκδοση της βιβλιοθήκης Aya, το οποίο σας επιτρέπει να δημιουργήσετε προγράμματα οδήγησης eBPF στο Rust που τρέχουν μέσα στον πυρήνα του Linux σε μια ειδική εικονική μηχανή JIT.

Σε αντίθεση με άλλα εργαλεία ανάπτυξης EBPF, Η Aya δεν χρησιμοποιεί το libbpf και τον μεταγλωττιστή BCCΑλλά προσφέρει τη δική του υλοποίηση γραμμένη σε Rust Χρησιμοποιεί το πακέτο libc crate για άμεση πρόσβαση στις κλήσεις συστήματος πυρήνα. Το Building Aya δεν απαιτεί εργαλεία γλώσσας C ή κεφαλίδες πυρήνα.

Για εκείνους που αγνοώντας το eBPF, θα πρέπει να γνωρίζουν ότι πρόκειται για διερμηνέα bytecode ενσωματωμένο στον πυρήνα Linux που σας επιτρέπει να δημιουργείτε ελεγκτές λειτουργιών δικτύου, να παρακολουθείτε τη λειτουργία του συστήματος, να παρακολουθείτε κλήσεις συστήματος, να ελέγχετε την πρόσβαση, να επεξεργάζεστε συμβάντα με χρονισμό, να υπολογίζετε τη συχνότητα και το χρονοδιάγραμμα των λειτουργιών και να παρακολουθείτε χρησιμοποιώντας kprobes/uprobes/tracepoints.

Χάρη στη μεταγλώττιση JIT, ο bytecode μεταφράζεται σε οδηγίες μηχανής εν κινήσει και εκτελείται με την απόδοση του εγγενούς κώδικα. Το XDP παρέχει ένα μέσο για την εκτέλεση προγραμμάτων BPF σε επίπεδο προγράμματος οδήγησης δικτύου, με άμεση πρόσβαση στην προσωρινή μνήμη πακέτων DMA, επιτρέποντάς σας να δημιουργήσετε προγράμματα οδήγησης υψηλής απόδοσης για συνθήκες υψηλού φόρτου δικτύου.

Σχετικά με την Aya

Από τα βασικά χαρακτηριστικά που αναφέρθηκαν του Aya μπορούμε να το βρούμε αυτό έχει υποστήριξη για BTF (BPF Type Format), το οποίο παρέχει πληροφορίες τύπου σε ψευδοκώδικα BPF για έλεγχο και σύγκριση τύπων που παρέχονται από τον τρέχοντα πυρήνα. Η χρήση του BTF καθιστά δυνατή τη δημιουργία καθολικών προγραμμάτων οδήγησης eBPF που μπορούν να χρησιμοποιηθούν χωρίς να χρειάζεται να τα μεταγλωττίσετε ξανά με διαφορετικές εκδόσεις του πυρήνα του Linux.

όπως και αυτός υποστήριξη για κλήσεις bpf-to-bpf, καθολικές μεταβλητές και αρχικοποιητές, που επιτρέπει τον σχεδιασμό προγραμμάτων για eBPF κατ' αναλογία με συμβατικά προγράμματα χρησιμοποιώντας το aya ως χρόνο εκτέλεσης, υπερισχύοντας συναρτήσεις λαμβάνοντας υπόψη την εργασία στο eBPF.

Από την άλλη, έχει επίσης υποστήριξη για εσωτερικούς τύπους πυρήνων, συμπεριλαμβανομένων κανονικών συστοιχιών, χαρτών κατακερματισμού, στοίβων, ουρών, ιχνών στοίβας και δομών για υποδοχές και παρακολούθηση απόδοσης.

Επίσης έχει τη δυνατότητα δημιουργίας διαφόρων τύπων προγραμμάτων eBTF, συμπεριλαμβανομένων προγραμμάτων για φιλτράρισμα και διαχείριση κυκλοφορίας, cgroup και διάφορα προγράμματα οδήγησης υποδοχών, προγράμματα XDP, καθώς και υποστήριξη πλατφόρμας για ασύγχρονη επεξεργασία αιτημάτων σε λειτουργία tokyo non-blocking και async-std .
Γρήγορη κατασκευή, μη συνδεδεμένη με την κατασκευή του πυρήνα ή τις κεφαλίδες του πυρήνα.

Είναι σημαντικό να το αναφέρω αυτό το έργο εξακολουθεί να θεωρείται πειραματικό, καθώς το API δεν έχει ακόμη σταθεροποιηθεί και συνεχίζει να εξελίσσεται. Επιπλέον, δεν έχουν ακόμη υλοποιηθεί όλες οι επινοημένες λειτουργίες.

Μέχρι το τέλος του έτους, οι προγραμματιστές ελπίζουν να φέρουν τη λειτουργικότητα του Aya στο ίδιο επίπεδο με το libbpf. και τον Ιανουάριο του 2022 σχηματίστε την πρώτη σταθερή έκδοση. Σχεδιάζεται επίσης ο συνδυασμός των τμημάτων του Aya που απαιτούνται για τη σύνταξη του κώδικα Rust για τον πυρήνα του Linux με τα στοιχεία του userpace που χρησιμοποιούνται για τη φόρτωση, την προσάρτηση και την αλληλεπίδραση με προγράμματα eBPF.

Τελικά αν ενδιαφέρεστε να μάθετε περισσότερα για αυτό, μπορείτε ελέγξτε τις λεπτομέρειες στον παρακάτω σύνδεσμο.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: AB Internet Networks 2008 SL
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.