English · Ελληνικά
Δύο switches, δύο καλώδια ανάμεσά τους για redundancy — και τώρα έχτισες μια broadcast storm που ρίχνει το δίκτυο σε δευτερόλεπτα. Το Spanning Tree σταματά τον βρόχο· το bonding σε αφήνει να χρησιμοποιήσεις πραγματικά και τα δύο καλώδια ως ένα παχύ link. Αυτό είναι το post Cisco STP & EtherChannel σε RouterOS, όπου και τα δύο ζουν στο bridge.
Ένας βρόχος Layer-2 δεν έχει TTL να τον σώσει — ένα μόνο broadcast κυκλοφορεί για πάντα, πολλαπλασιαζόμενο μέχρι να λιώσει το segment. Το Spanning Tree (STP/RSTP/MSTP) το αποτρέπει εντοπίζοντας redundant paths και μπλοκάροντας όλα εκτός από ένα, μετά ξεμπλοκάροντας αυτόματα αν πεθάνει το ενεργό path. Το Bonding (LACP) λύνει το αντίθετο πρόβλημα: όταν θέλεις να χρησιμοποιήσεις δύο links ταυτόχρονα, τα συσσωρεύει σε ένα λογικό interface με περισσότερο bandwidth και built-in failover — κανένας βρόχος, γιατί τα switches συμφωνούν ότι τα links είναι ένα.
Στο RouterOS και τα δύο είναι έννοιες επιπέδου bridge. Το STP είναι ιδιότητα του bridge και των ports του· ένα bond είναι ένα interface που μετά προσθέτεις στο bridge ως ένα μόνο port. Οι έννοιες ταιριάζουν με το Cisco IOS: STP & EtherChannel ένα-προς-ένα — το RSTP είναι RSTP, και το LACP 802.3ad είναι το ίδιο στάνταρ που διαπραγματεύεται το EtherChannel.
01
Τα bridges του RouterOS κάνουν default σε RSTP, που είναι αυτό που θέλεις — γρήγορη σύγκλιση, backwards-compatible. Το λάθος είναι να αφήνεις την εκλογή root-bridge στην τύχη· εσύ πρέπει να αποφασίζεις ποιο switch είναι root, όχι να αφήνεις τις διευθύνσεις MAC να αποφασίζουν.
> /interface bridge set bridge protocol-mode=rstp # Η χαμηλότερη priority κερδίζει την εκλογή root. Βάλε το switch CORE χαμηλά # ώστε το δέντρο να είναι προβλέψιμο και η κίνηση να ρέει όπως το σχεδίασες. > /interface bridge set bridge priority=0x1000 # 4096· το default είναι 0x8000 # Επαλήθευσε ποιος όντως έγινε root και ποια ports είναι forwarding/blocking: > /interface bridge monitor bridge root-bridge: yes root-bridge-id: 0x1000.CC:2D:... > /interface bridge port print # role/state ανά port: root/designated/blocking
Ένα access port με ένα host πάνω του δεν πρέπει να συμμετέχει στο δέντρο — πρέπει να κάνει forward αμέσως. Το RouterOS το ανιχνεύει αυτόματα (edge=auto), αλλά αν ένα port φλαπάρει μέσα από listening/learning σε κάθε σύνδεση συσκευής, βάλε edge=yes στα host ports (το αντίστοιχο RSTP του Cisco PortFast). Αντίθετα, ποτέ μη βάζεις edge=yes σε port που πηγαίνει σε άλλο switch — έτσι κρύβεις έναν βρόχο από το STP.
02
Μόλις καθοριστεί το root, το path cost αποφασίζει ποιο redundant link κάνει forward και ποιο μπλοκάρει. Το χαμηλότερο cost κερδίζει. Ρύθμισέ το σκόπιμα ώστε το gigabit link σου να κουβαλά κίνηση και το backup link των 100M να μπλοκάρει — όχι το αντίστροφο.
> /interface bridge port set [find interface=ether10] path-cost=10 # primary > /interface bridge port set [find interface=ether11] path-cost=100 # backup, μπλοκάρει # Για δέντρα που ξέρουν VLAN όπου διαφορετικά VLAN πρέπει να παίρνουν διαφορετικά # paths, γύρνα το bridge σε protocol-mode=mstp και αντιστοίχισε VLAN σε MSTI.
03
Όταν θέλεις το bandwidth και των δύο καλωδίων αντί να μπλοκάρεις το ένα, κάν' τα bond. Το LACP (802.3ad) διαπραγματεύεται τη συσσώρευση με την απέναντι πλευρά ώστε να είναι χωρίς βρόχο εξ σχεδιασμού — τα switches αντιμετωπίζουν το ζευγάρι ως ένα μοναδικό link.
# Δημιούργησε το bond από δύο φυσικά ports. Το transmit-hash-policy απλώνει # flows στα μέλη κατά κεφαλίδες L2+L3 (ανά-flow, όχι ανά-πακέτο). > /interface bonding add name=bond1 slaves=ether5,ether6 \ mode=802.3ad transmit-hash-policy=layer-2-and-3 lacp-rate=1sec # Μετά το bond είναι απλώς ένα bridge port σαν κάθε άλλο: > /interface bridge port add bridge=bridge interface=bond1 > /interface bonding monitor bond1 # κατάσταση lacp, ενεργά slaves
Ένα bond LACP δύο links είναι 2× συνολική χωρητικότητα, αλλά οποιοδήποτε μεμονωμένο flow TCP ακόμα ταξιδεύει σε ένα μέλος — το hash καρφώνει μια συνομιλία σε ένα link ώστε τα πακέτα να μην αναδιατάσσονται. Δέκα clients παίρνουν ο καθένας ένα πλήρες gig σε ένα bond 2×1G· ένας client που αντιγράφει ένα αρχείο παίρνει ένα gig, όχι δύο. Αυτό είναι εγγενές στο link aggregation σε κάθε vendor, όχι ιδιοτροπία του MikroTik. Και τα δύο άκρα πρέπει να τρέχουν LACP (Cisco: channel-group mode active) αλλιώς το bond δεν θα σχηματιστεί.
Βασικα Συμπερασματα
Σχεδιάζω ανθεκτικά Layer-2 cores σε MikroTik και Cisco με ντετερμινιστική συμπεριφορά spanning-tree και bonds LACP που πραγματικά χρησιμοποιούν το bandwidth που πληρώνεις — και κάνουν failover καθαρά όταν πέφτει ένα link στο bundle.
Κλεισε μια Discovery Call →