Πίσω στο blog

English  ·  Ελληνικά

MikroTik / RouterOS  ·  Routing  ·  Ιουλιος 2026

MikroTik
Route Redistribution & BFD

Το routing stack του RouterOS 7 κάνει επίσης redistribution και BFD — αλλά μέσω του μοντέλου filter-chain του, που ρίχνει όποιον έρχεται από IOS. Να πώς κάνεις leak routes με ασφάλεια ανάμεσα σε OSPF, BGP, και static σε RouterOS χωρίς να χτίσεις βρόχο, και πώς να βιδώσεις BFD για failover σε χιλιοστά δευτερολέπτου. Το δίδυμο του post redistribution & BFD της Cisco.

MikroTik RouterOS Redistribution BFD Routing Filters

Οι έννοιες είναι πανομοιότυπες με τη 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

Redistribute — Toggle Συν μια Filter Chain

Άναψε το redistribution ανά πρωτόκολλο, μετά άφησε μια output filter chain να αποφασίσει ακριβώς ποια routes περνάνε, με τι tag και metric. Ποτέ μην κάνεις redistribute ορθάνοιχτα.

RouterOS 7 — static/connected μεσα σε OSPF, φιλτραρισμενα
# Η 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
⚠ Παγιδα — Καμια Filter Chain = Redistribute τα Παντα

Αν βάλεις 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

Tag για Αποτροπη Βροχων

Με redistribution και στις δύο κατευθύνσεις, σήμανε routes που φεύγουν από το ένα πρωτόκολλο και απόρριψε εκείνο το tag όταν θα ξαναμπαίνανε — ακριβώς το pattern tag-and-deny του IOS, γραμμένο ως κανόνες filter.

RouterOS 7 — απορριψε το tag στο δρομο επιστροφης
# Το 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)
💡 Το Administrative Distance Υπαρχει και Εδω

Το 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

BFD — Ανιχνευση Αστοχιας σε Χιλιοστα

Κάνε config BFD και αναφέρσου σε αυτό από τα routing protocols ώστε ένας νεκρός γείτονας να πιαστεί σε κλάσμα δευτερολέπτου, όχι στα αργά χρονόμετρα του OSPF ή του BGP. (Το μενού εξαρτάται από την έκδοση — επαλήθευσε στο build σου.)

RouterOS 7 — config BFD + ενεργοποιηση ανα πρωτοκολλο
# Όρισε 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, διαπραγματευμένα χρονόμετρα
⚠ Παγιδα — Και τα Δυο Ακρα, Ιδια Ιστορια, και Προσεξε το Wireless

Το 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 με τα προοριζόμενα χρονόμετρα.

RouterOS 7 — οι ελεγχοι
/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, χρονόμετρα διαπραγματευμένα

Βασικα Συμπερασματα

  1. Ίδιες έννοιες με τη Cisco — το redistribution κολλά πρωτόκολλα και ρισκάρει βρόχους· το BFD δίνει failover σε χιλιοστά. Μόνο το syntax filter-chain διαφέρει.
  2. Το redistribution είναι ένα toggle ανά πρωτόκολλο συν μία output filter chain — βάλε και τα δύο· η αλυσίδα (που καταλήγει σε reject) είναι υποχρεωτική, αλλιώς κάνεις leak τα πάντα.
  3. Tag στην έξοδο, reject το tag στην επιστροφή — το pattern αποτροπής βρόχων του IOS ως κανόνες /routing filter.
  4. Το administrative distance ισχυει — έλεγξε σε κάθε σύνορο και βάλε distance= ώστε να νικά το native route.
  5. Το BFD χρειάζεται και τα δύο άκρα και ανήκει σε καθαρά ενσύρματα links — χρονόμετρα κάτω από ένα δευτερόλεπτο κάνουν flap σε wireless/συμφορημένα paths.
  6. Το μενού BFD άλλαξε στα 7.x — επαλήθευσε το ακριβές path στη δική σου τρέχουσα έκδοση, μην κάνεις paste τυφλά.

Ενας μεικτος πυρηνας routing RouterOS που δεν εισαι σιγουρος οτι ειναι χωρις βροχους;

Σχεδιάζω multi-protocol routing σε MikroTik και Cisco με redistribution που έχει αποτροπή βρόχων ενσωματωμένη από την αρχή, και BFD ρυθμισμένο σωστά για την έκδοση RouterOS που παίζει — γρήγορο failover που είναι πραγματικά σταθερό, όχι flapping.

Κλεισε μια Discovery Call →