Εναλλαγή ACL λεπτομερώς

Τα ACL (Λίστα Ελέγχου Πρόσβασης) σε συσκευές δικτύου μπορούν να εφαρμοστούν τόσο σε υλικό όσο και σε λογισμικό, ή πιο κοινά σε ACL που βασίζονται σε υλικό και λογισμικό. Και αν όλα είναι ξεκάθαρα με τα ACL που βασίζονται σε λογισμικό - αυτοί είναι κανόνες που αποθηκεύονται και επεξεργάζονται στη μνήμη RAM (δηλαδή στο επίπεδο ελέγχου), με όλους τους περιορισμούς που ακολουθούν, τότε θα καταλάβουμε πώς εφαρμόζονται τα ACL που βασίζονται σε υλικό και θα λειτουργήσουμε άρθρο. Για παράδειγμα, θα χρησιμοποιήσουμε διακόπτες από τη σειρά ExtremeSwitching από την Extreme Networks.

Εναλλαγή ACL λεπτομερώς

Δεδομένου ότι μας ενδιαφέρουν τα ACL που βασίζονται σε υλικό, η εσωτερική υλοποίηση του Data Plane ή των πραγματικών chipsets (ASIC) που χρησιμοποιούνται, είναι ύψιστης σημασίας για εμάς. Όλες οι γραμμές μεταγωγής Extreme Networks είναι χτισμένες σε Broadcom ASIC και επομένως οι περισσότερες από τις παρακάτω πληροφορίες θα ισχύουν και για άλλους μεταγωγείς στην αγορά που υλοποιούνται στα ίδια ASIC.

Όπως φαίνεται από το παραπάνω σχήμα, η "ContentAware Engine" είναι άμεσα υπεύθυνη για τη λειτουργία των ACL στο chipset, ξεχωριστά για την "είσοδο" και την "έξοδο". Αρχιτεκτονικά, είναι τα ίδια, μόνο η «έξοδος» είναι λιγότερο επεκτάσιμη και λιγότερο λειτουργική. Φυσικά, και οι δύο "ContentAware Engines" είναι μνήμη TCAM συν συνοδευτική λογική, και κάθε κανόνας ACL χρήστη ή συστήματος είναι μια απλή μάσκα bit γραμμένη σε αυτήν τη μνήμη. Αυτός είναι ο λόγος για τον οποίο το chipset επεξεργάζεται την κυκλοφορία πακέτο προς πακέτο και χωρίς υποβάθμιση της απόδοσης.

Φυσικά, το ίδιο TCAM Εισόδου/Εξόδου, με τη σειρά του, χωρίζεται λογικά σε πολλά τμήματα (ανάλογα με την ποσότητα της ίδιας της μνήμης και της πλατφόρμας), τα λεγόμενα «Φέτες ACL». Για παράδειγμα, το ίδιο συμβαίνει με φυσικά τον ίδιο σκληρό δίσκο στον φορητό υπολογιστή σας όταν δημιουργείτε πολλές λογικές μονάδες δίσκου σε αυτόν - C:>, D:>. Κάθε κομμάτι ACL, με τη σειρά του, αποτελείται από κελιά μνήμης με τη μορφή "συμβολοσειρών" όπου γράφονται "κανόνες" (κανόνες/μάσκες bit).

Εναλλαγή ACL λεπτομερώς
Η διαίρεση του TCAM σε ACL-slices έχει μια συγκεκριμένη λογική πίσω από αυτό. Σε κάθε ένα από τα μεμονωμένα τμήματα ACL, μπορούν να γραφτούν μόνο «κανόνες» που είναι συμβατοί μεταξύ τους. Εάν κάποιος από τους «κανόνες» δεν είναι συμβατός με τον προηγούμενο, τότε θα γραφτεί στο επόμενο τμήμα ACL, ανεξάρτητα από το πόσες ελεύθερες γραμμές για «κανόνες» έχουν απομείνει στο προηγούμενο.

Τότε από πού προέρχεται αυτή η συμβατότητα ή ασυμβατότητα των κανόνων ACL; Το γεγονός είναι ότι μια "γραμμή" TCAM, όπου γράφονται οι "κανόνες", έχει μήκος 232 bit και χωρίζεται σε πολλά πεδία - Fixed, Field1, Field2, Field3. Η μνήμη TCAM 232 bit ή 29 byte είναι αρκετά για την εγγραφή της μάσκας bit μιας συγκεκριμένης διεύθυνσης MAC ή IP, αλλά πολύ λιγότερη από την πλήρη κεφαλίδα του πακέτου Ethernet. Σε κάθε μεμονωμένο τμήμα ACL, το ASIC εκτελεί μια ανεξάρτητη αναζήτηση σύμφωνα με τη μάσκα bit που έχει οριστεί στο F1-F3. Γενικά, αυτή η αναζήτηση μπορεί να πραγματοποιηθεί χρησιμοποιώντας τα πρώτα 128 byte της κεφαλίδας Ethernet. Στην πραγματικότητα, ακριβώς επειδή η αναζήτηση μπορεί να πραγματοποιηθεί πάνω από 128 byte, αλλά μόνο 29 byte μπορούν να γραφτούν, για μια σωστή αναζήτηση πρέπει να οριστεί μια μετατόπιση σε σχέση με την αρχή του πακέτου. Η μετατόπιση για κάθε τμήμα ACL ορίζεται όταν γράφεται σε αυτό ο πρώτος κανόνας και εάν, κατά τη σύνταξη ενός επόμενου κανόνα, ανακαλυφθεί η ανάγκη για άλλη μετατόπιση, τότε ένας τέτοιος κανόνας θεωρείται ασύμβατος με τον πρώτο και εγγράφεται στο επόμενο ACL-slice.

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

Εναλλαγή ACL λεπτομερώς
Κάθε μεμονωμένο πακέτο που επεξεργάζεται το ASIC εκτελεί μια παράλληλη αναζήτηση σε κάθε τμήμα ACL. Ο έλεγχος εκτελείται μέχρι την πρώτη αντιστοίχιση στο τμήμα ACL, αλλά επιτρέπονται πολλαπλές αντιστοιχίσεις για το ίδιο πακέτο σε διαφορετικές φέτες ACL. Κάθε μεμονωμένος «κανόνας» έχει μια αντίστοιχη ενέργεια που πρέπει να εκτελεστεί εάν η συνθήκη (μάσκα bit) ταιριάζει. Εάν ένα ταίριασμα προκύψει σε πολλά τμήματα ACL ταυτόχρονα, τότε στο μπλοκ "Επίλυση σύγκρουσης ενεργειών", με βάση την προτεραιότητα του τμήματος ACL, λαμβάνεται μια απόφαση ποια ενέργεια θα πραγματοποιηθεί. Εάν το ACL περιέχει και «δράση» (άδεια/άρνηση) και «δράση-τροποποιητής» (count/QoS/log/…), τότε σε περίπτωση πολλαπλών αντιστοιχιών θα εκτελεστεί μόνο η «ενέργεια» υψηλότερης προτεραιότητας, ενώ η «ενέργεια -modifier» θα ολοκληρωθούν όλα. Το παρακάτω παράδειγμα δείχνει ότι και οι δύο μετρητές θα αυξηθούν και θα εκτελεστεί η υψηλότερη προτεραιότητα "άρνηση".

Εναλλαγή ACL λεπτομερώς
"Οδηγός λύσεων ACL" με πιο αναλυτικές πληροφορίες σχετικά με τη λειτουργία του ACL στο δημόσιο τομέα στον ιστότοπο extremenetworks.com. Οποιεσδήποτε ερωτήσεις προκύψουν ή παραμένουν μπορούν πάντα να γίνουν στο προσωπικό του γραφείου μας - [προστασία μέσω email].

Πηγή: www.habr.com

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