English · Ελληνικά
Το routing stack του RouterOS 7 κάνει επίσης redistribution και BFD — αλλά μέσω του μοντέλου filter-chain του, που ρίχνει όποιον έρχεται από IOS. Να πώς κάνεις leak routes με ασφάλεια ανάμεσα σε OSPF, BGP, και static σε RouterOS χωρίς να χτίσεις βρόχο, και πώς να βιδώσεις BFD για failover σε χιλιοστά δευτερολέπτου. Το δίδυμο του post redistribution & BFD της Cisco.
Οι έννοιες είναι πανομοιότυπες με τη Cisco: το redistribution μοιράζει routes ανάμεσα σε πρωτόκολλα (και είναι ο κλασικός δημιουργός βρόχων), το BFD ανιχνεύει έναν νεκρό γείτονα σε χιλιοστά δευτερολέπτου ανεξάρτητα από τα δικά τιμωρητικά χρονόμετρα του πρωτοκόλλου. Το ειδικό για RouterOS είναι πού ζει ο έλεγχος. Στο v7, κάθε πρωτόκολλο έχει ένα toggle redistribute συν μια output filter chain, και όλη η λογική «ποια routes, με τι tag/metric» εκφράζεται ως αλυσίδες /routing filter rule — η ίδια μικρή γλώσσα scripting που χρησιμοποιεί η policy BGP. Αν το έμαθες σε route-maps του IOS, το μοντέλο αντιστοιχεί ένα-προς-ένα· το syntax όχι.
Η άλλη πραγματικότητα του RouterOS: το BFD μετακινήθηκε ανάμεσα σε εκδόσεις 7.x — το ακριβές μενού (/routing bfd) και το πώς τα πρωτόκολλα το αναφέρουν άλλαξε ανάμεσα σε εκδόσεις. Η προσέγγιση παρακάτω είναι το τρέχον σχήμα του v7· έλεγχε πάντα το μενού της δικής σου έκδοσης. Κάν' τα και τα δύο σωστά και έχεις έναν γρήγορο, χωρίς βρόχους multi-protocol πυρήνα σε MikroTik.
01
Άναψε το redistribution ανά πρωτόκολλο, μετά άφησε μια output filter chain να αποφασίσει ακριβώς ποια routes περνάνε, με τι tag και metric. Ποτέ μην κάνεις redistribute ορθάνοιχτα.
# Η filter chain: ποια redistributed routes επιτρέπονται, tagged για # αποτροπή βρόχων, με ένα seed metric (OSPF external). /routing filter rule add chain=ospf-redist rule="if (dst-len<=24) { set ospf-type type-1; \ set bgp-metric 50; set route-tag 111; accept }" add chain=ospf-redist rule="reject" # Ενεργοποίησε redistribution στο instance OSPF, δείχνοντας σε εκείνη την αλυσίδα. /routing ospf instance set v7 redistribute=static,connected out-filter-chain=ospf-redist
Αν βάλεις redistribute= αλλά ξεχάσεις το out-filter-chain, το RouterOS κάνει inject κάθε route που ταιριάζει με default attributes — το αντίστοιχο στο RouterOS ενός IOS redistribute χωρίς route-map. Σε έναν router που μαθαίνει επίσης routes από το άλλο πρωτόκολλο, έτσι κάνεις leak έναν πλήρη πίνακα μέσα στο OSPF ή δημιουργείς βρόχο. Αντιμετώπισε τη filter chain ως υποχρεωτική, και κλείσ' την με ρητό reject ώστε να περάσει μόνο ό,τι σκόπευες. Ίδια πειθαρχία, διαφορετικό syntax, με το route-map της Cisco.
02
Με redistribution και στις δύο κατευθύνσεις, σήμανε routes που φεύγουν από το ένα πρωτόκολλο και απόρριψε εκείνο το tag όταν θα ξαναμπαίνανε — ακριβώς το pattern tag-and-deny του IOS, γραμμένο ως κανόνες filter.
# Το redistribution OSPF->BGP σφράγισε route-tag 111 (section 01). Στην # κατεύθυνση BGP->OSPF, αρνήσου οτιδήποτε είναι ήδη tagged 111 ώστε να μην κάνει βρόχο. /routing filter rule add chain=bgp-to-ospf rule="if (route-tag==111) { reject }" add chain=bgp-to-ospf rule="accept" /routing bgp connection set ISP-A output.redistribute=ospf output.filter-chain=bgp-out # (και το αντίστροφο import φιλτραρισμένο από bgp-to-ospf στο instance OSPF)
Το RouterOS εγκαθιστά το route με το χαμηλότερο distance όταν το ίδιο prefix μαθεύεται δύο φορές (connected 0, static 1, eBGP 20, OSPF 110, iBGP 200 — καθρεφτίζοντας το IOS). Κατά τη διάρκεια αμοιβαίου redistribution το redistributed αντίγραφο μπορεί να νικήσει το native και να προκαλέσει μη βέλτιστα paths ή βρόχους. Έλεγξε με /ip route print detail where dst-address=… σε κάθε σύνορο, και βάλε distance= σε ένα route ή πρωτόκολλο όπου χρειάζεσαι να νικήσει το native path. Tag-and-reject συν ένας έλεγχος λογικής distance είναι η ασφαλής συνταγή και στις δύο πλατφόρμες.
03
Κάνε config BFD και αναφέρσου σε αυτό από τα routing protocols ώστε ένας νεκρός γείτονας να πιαστεί σε κλάσμα δευτερολέπτου, όχι στα αργά χρονόμετρα του OSPF ή του BGP. (Το μενού εξαρτάται από την έκδοση — επαλήθευσε στο build σου.)
# Όρισε timing BFD (τρέχον μενού v7). Ανίχνευση ~ min-interval x multiplier. /routing bfd configuration add interfaces=ether1 min-rx=300ms min-tx=300ms multiplier=3 # Βάλε το OSPF να χρησιμοποιεί BFD για ζωντάνια γείτονα (flag interface-template): /routing ospf interface-template set [find interfaces=ether1] use-bfd=yes # Και το BGP να ρίχνει το session τη στιγμή που το BFD αναφέρει τον peer down: /routing bgp connection set ISP-A use-bfd=yes /routing bfd session print # sessions up, διαπραγματευμένα χρονόμετρα
Το BFD δουλεύει μόνο αν και οι δύο peers το τρέχουν — η μία πλευρά που ενεργοποιεί use-bfd δεν κάνει τίποτα μέχρι να το κάνει και η άλλη, και αποτυγχάνει σιωπηλά ως «το session δεν ανεβαίνει ποτέ». Και ακριβώς όπως στη Cisco: επιθετικά χρονόμετρα κάτω από ένα δευτερόλεπτο σε ένα wireless ή συμφορημένο link μετατρέπουν microbursts σε ψευδώς-θετικές αστοχίες και κάνουν flap το routing σου. Κράτα σφιχτό BFD για καθαρά ενσύρματα links· χαλάρωσε τα χρονόμετρα (ή παράλειψε το BFD) σε paths με απώλειες. Τέλος, μην υποθέτεις το μενού — το path config του BFD πραγματικά άλλαξε ανάμεσα σε εκδόσεις 7.x, οπότε επιβεβαίωσε στη δική σου τρέχουσα έκδοση αντί να κάνεις paste τυφλά.
04
Επιβεβαίωσε τι έγινε redistributed (και το tag/type του), και ότι τα sessions BFD είναι established με τα προοριζόμενα χρονόμετρα.
/ip route print where ospf # external routes παρόντα /ip route print detail where dst-address=10.5.0.0/24 # tag, distance, source /routing ospf lsa print where type=external # τι κάναμε inject /routing bfd session print # state=up, χρονόμετρα διαπραγματευμένα
Βασικα Συμπερασματα
reject) είναι υποχρεωτική, αλλιώς κάνεις leak τα πάντα./routing filter.distance= ώστε να νικά το native route.Σχεδιάζω multi-protocol routing σε MikroTik και Cisco με redistribution που έχει αποτροπή βρόχων ενσωματωμένη από την αρχή, και BFD ρυθμισμένο σωστά για την έκδοση RouterOS που παίζει — γρήγορο failover που είναι πραγματικά σταθερό, όχι flapping.
Κλεισε μια Discovery Call →