English · Ελληνικά
Τα πραγματικά δίκτυα τρέχουν περισσότερα από ένα πρωτόκολλο δρομολόγησης — OSPF εσωτερικά, BGP προς τον ISP, μερικά static routes, μια legacy γωνιά EIGRP. Το redistribution είναι η κόλλα που τους αφήνει να μοιράζονται routes, και είναι το κλασικό footgun που προκαλεί βρόχους δρομολόγησης. Συνδύασέ το με BFD — ανίχνευση αστοχίας σε χιλιοστά του δευτερολέπτου αντί για δευτερόλεπτα — και έχεις έναν γρήγορο, σταθερό multi-protocol πυρήνα.
Δύο θέματα που ανήκουν μαζί σε κάθε ώριμο σχεδιασμό δρομολόγησης. Το Redistribution εισάγει routes από ένα πρωτόκολλο σε ένα άλλο — OSPF σε BGP, static σε OSPF, EIGRP σε OSPF σε ένα όριο μετάβασης. Είναι απαραίτητο και επικίνδυνο: αν γίνει απρόσεκτα, ένα route που ανακατευθύνεται έξω και ξαναμπαίνει δημιουργεί βρόχο δρομολόγησης ή μαύρη τρύπα, επειδή το πρωτόκολλο που το δέχεται χάνει το πλαίσιο αποτροπής βρόχων του πρωτότυπου. Η διόρθωση είναι πειθαρχημένο tagging και filtering.
Το BFD (Bidirectional Forwarding Detection) είναι το άλλο μισό: ένα ελαφρύ πρωτόκολλο hello που ανιχνεύει έναν νεκρό γείτονα σε χιλιοστά του δευτερολέπτου, ανεξάρτητα από τους δικούς (αργούς) timers κάθε πρωτοκόλλου δρομολόγησης. Το βιδώνεις πάνω σε OSPF/BGP/EIGRP/static ώστε το failover να συμβαίνει σε ένα ανοιγόκλεισμα ματιού αντί για τα default δευτερόλεπτα του dead-timer. Μαζί κάνουν ένα multi-protocol δίκτυο σωστό και γρήγορο ταυτόχρονα — και οι έννοιες αντιστοιχίζονται καθαρά στο RouterOS.
01
Η εισαγωγή routes χρειάζεται μια αρχική μετρική που καταλαβαίνει το πρωτόκολλο-προορισμός, και έλεγχο του τύπου route. Ποτέ μην κάνεις redistribute τυφλά — πάντα μέσα από ένα route-map.
# Static routes σε OSPF ως external type-1 (η μετρική αυξάνει κατά μήκος της διαδρομής): R1(config)# router ospf 1 R1(config-router)# redistribute static subnets metric 50 metric-type 1 route-map STATIC-IN # OSPF σε BGP (διαφήμισε εσωτερικά δίκτυα στο edge του ISP): R1(config)# router bgp 65001 R1(config-router-af)# redistribute ospf 1 route-map OSPF-TO-BGP
subnets, και τα Metrics E2 Δεν Προστιθενται
Δύο παγίδες. Το redistribute σε OSPF χωρίς τη λέξη-κλειδί subnets εισάγει σιωπηλά μόνο classful δίκτυα — τα /24 και /30 σου απλώς δεν εμφανίζονται, και θα ορκίζεσαι ότι η εντολή δεν δούλεψε. Πρόσθεσε πάντα subnets. Δεύτερο: τα external routes του OSPF είναι by default type-2 (E2), του οποίου η μετρική είναι μόνο το seed cost και δεν αυξάνει καθώς ταξιδεύει το route — οπότε δύο σημεία εξόδου μπορεί να φαίνονται ίσα και παίρνεις μη βέλτιστη δρομολόγηση ή flapping. Χρησιμοποίησε type-1 (E1) όταν θέλεις το εσωτερικό κόστος να προστίθεται στην πορεία, που συνήθως είναι αυτό που πραγματικά εννοείς.
02
Με redistribution σε δύο ή περισσότερα σημεία ανάμεσα στο ίδιο ζευγάρι πρωτοκόλλων, ένα route μπορεί να διαρρεύσει από το ένα και να ξαναμπεί από το άλλο, κάνοντας βρόχο. Σήμανε με tag στην έξοδο, απόρριψε το tag στην επιστροφή.
# Στο redistribution OSPF->BGP, σφράγισε ένα tag που αναγνωρίζει «αυτό ήρθε από OSPF». R1(config)# route-map OSPF-TO-BGP permit 10 R1(config-route-map)# set tag 111 # Στο ΑΛΛΟ σημείο redistribution (BGP->OSPF), ΑΡΝΗΣΟΥ οτιδήποτε με tag 111 # ώστε ένα route OSPF να μην μπορεί να κάνει βρόχο πίσω στο OSPF μέσω BGP. R1(config)# route-map BGP-TO-OSPF deny 10 R1(config-route-map)# match tag 111 R1(config)# route-map BGP-TO-OSPF permit 20 # όλα τα υπόλοιπα επιτρέπονται
Όταν το ίδιο prefix μαθαίνεται από δύο πρωτόκολλα, ο router εγκαθιστά αυτό με το χαμηλότερο administrative distance (eBGP 20, EIGRP 90, OSPF 110, RIP 120…) ανεξάρτητα από την πραγματική μετρική — που κατά το redistribution μπορεί να τον κάνει να προτιμήσει ένα redistributed αντίγραφο έναντι του native route και να δημιουργήσει έναν ύπουλο βρόχο ή μη βέλτιστη διαδρομή. Σε αμοιβαίο redistribution, έλεγξε λογική με show ip route <prefix> σε κάθε όριο και, όπου χρειάζεται, ρύθμισε το AD (distance) ώστε το native route να κερδίζει πάντα. Το tagging συν έλεγχος AD είναι η διπλή ασφάλεια που κρατάει το redistribution ασφαλές.
03
Τα πρωτόκολλα δρομολόγησης ανιχνεύουν έναν νεκρό γείτονα με τους δικούς τους timers — το default dead interval του OSPF είναι 40 δευτερόλεπτα. Το BFD το κάνει σε κλάσμα δευτερολέπτου, μετά λέει στο πρωτόκολλο να συγκλίνει ξανά αμέσως.
# Timers κάτω από ένα δευτερόλεπτο στο link (300ms x3 = ~900ms ανίχνευση). R1(config)# interface GigabitEthernet0/0 R1(config-if)# bfd interval 300 min_rx 300 multiplier 3 # Πες στο OSPF να χρησιμοποιεί BFD για liveness γειτόνων σε όλα τα interfaces: R1(config)# router ospf 1 R1(config-router)# bfd all-interfaces # Και στο BGP να ρίχνει το session τη στιγμή που το BFD αναφέρει τον peer down: R1(config)# router bgp 65001 R1(config-router)# neighbor 198.51.100.1 fall-over bfd
Επιθετικοί timers BFD ανιχνεύουν πραγματικές αστοχίες γρήγορα — και ανιχνεύουν επίσης microbursts, σύντομες αιχμές CPU, και ασύρματα links με απώλειες ως «αστοχίες», κάνοντας flap τη δρομολόγησή σου. Σε καθαρό link ίνας, το 300ms×3 είναι εντάξει· σε συμφορημένη ή ασύρματη διαδρομή, χαλάρωσε τους timers (ή μην τρέχεις BFD εκεί) αλλιώς ανταλλάσσεις αργό-αλλά-σταθερό με γρήγορο-αλλά-flapping. Ταίριαξε τους timers με την ποιότητα του link, και θυμήσου ότι η επανασύγκλιση BFD είναι τόσο χρήσιμη όσο η εφεδρική διαδρομή σου — γρήγορη ανίχνευση χωρίς εναλλακτικό route απλώς αποτυγχάνει γρήγορα.
04
Επιβεβαίωσε τι πραγματικά έγινε redistribute (και με ποιο tag/τύπο), και ότι τα sessions BFD είναι up με τους timers που ήθελες.
R1# show ip route ospf | inc E1|E2 # external routes + τύπος τους R1# show ip ospf database external # τι εισάγαμε, με tags R1# show ip bgp | inc <prefix> # redistributed routes έφτασαν στο BGP R1# show bfd neighbors detail # session UP, διαπραγματευμένοι timers
Συμπερασματα
subnets σε OSPF αλλιώς εξαφανίζονται τα non-classful routes σου.Το redistribution ανάμεσα σε πρωτόκολλα δρομολόγησης είναι εκεί που τα περισσότερα multi-vendor δίκτυα αναπτύσσουν σιωπηλά βρόχους δρομολόγησης. Το σχεδιάζω με ενσωματωμένη αποτροπή βρόχων, administrative distance που πραγματικά βγάζει νόημα, και BFD συντονισμένο για failover σε κάτω από ένα δευτερόλεπτο, όχι το default μισό λεπτό.
Κλεισε μια Discovery Call →