Πίσω στο blog

English  ·  Ελληνικά

MikroTik / Layer 2  ·  Οδηγος  ·  Ιουλιος 2026

MikroTik
STP & Bonding

Δύο switches, δύο καλώδια ανάμεσά τους για redundancy — και τώρα έχτισες μια broadcast storm που ρίχνει το δίκτυο σε δευτερόλεπτα. Το Spanning Tree σταματά τον βρόχο· το bonding σε αφήνει να χρησιμοποιήσεις πραγματικά και τα δύο καλώδια ως ένα παχύ link. Αυτό είναι το post Cisco STP & EtherChannel σε RouterOS, όπου και τα δύο ζουν στο bridge.

MikroTik RouterOS RSTP Bonding LACP

Ένας βρόχος 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

Spanning Tree — Διαλεξε RSTP, Μετα Ριξε το Root

Τα bridges του RouterOS κάνουν default σε RSTP, που είναι αυτό που θέλεις — γρήγορη σύγκλιση, backwards-compatible. Το λάθος είναι να αφήνεις την εκλογή root-bridge στην τύχη· εσύ πρέπει να αποφασίζεις ποιο switch είναι root, όχι να αφήνεις τις διευθύνσεις MAC να αποφασίζουν.

Terminal — επιβεβαιωσε RSTP, καν' το core το root bridge
> /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
⚠ Παγιδα — Edge Ports & το Ερωτημα «Γιατι το Link μου Πηρε 30s»

Ένα access port με ένα host πάνω του δεν πρέπει να συμμετέχει στο δέντρο — πρέπει να κάνει forward αμέσως. Το RouterOS το ανιχνεύει αυτόματα (edge=auto), αλλά αν ένα port φλαπάρει μέσα από listening/learning σε κάθε σύνδεση συσκευής, βάλε edge=yes στα host ports (το αντίστοιχο RSTP του Cisco PortFast). Αντίθετα, ποτέ μη βάζεις edge=yes σε port που πηγαίνει σε άλλο switch — έτσι κρύβεις έναν βρόχο από το STP.

02

Κατευθυνε το Δεντρο — Cost & Priority

Μόλις καθοριστεί το root, το path cost αποφασίζει ποιο redundant link κάνει forward και ποιο μπλοκάρει. Το χαμηλότερο cost κερδίζει. Ρύθμισέ το σκόπιμα ώστε το gigabit link σου να κουβαλά κίνηση και το backup link των 100M να μπλοκάρει — όχι το αντίστροφο.

Terminal — προτιμησε το γρηγορο link, μπλοκαρε το αργο
> /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

Bonding — Δυο Links, Ενα Interface

Όταν θέλεις το bandwidth και των δύο καλωδίων αντί να μπλοκάρεις το ένα, κάν' τα bond. Το LACP (802.3ad) διαπραγματεύεται τη συσσώρευση με την απέναντι πλευρά ώστε να είναι χωρίς βρόχο εξ σχεδιασμού — τα switches αντιμετωπίζουν το ζευγάρι ως ένα μοναδικό link.

Terminal — ενα bond LACP 802.3ad, προστιθεται στο bridge ως ενα port
# Δημιούργησε το 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
💡 Pro Tip — Το Bonding Προσθετει Bandwidth για Πολλα Flows, Οχι Ενα

Ένα 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 δεν θα σχηματιστεί.

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

  1. Ένας βρόχος Layer-2 δεν έχει TTL — είναι μια αυτο-ενισχυόμενη καταιγίδα. Το STP δεν είναι προαιρετικό τη στιγμή που έχεις redundant links.
  2. Κάν' το default σε RSTP και ρίξε το root bridge σκόπιμα με χαμηλή priority στο core σου· μην αφήνεις τις διευθύνσεις MAC να το εκλέγουν.
  3. Σημανε τα host ports ως edge (αντίστοιχο PortFast) για ακαριαίο forwarding — αλλά ποτέ σε links ανάμεσα σε switches.
  4. Το path cost κατευθύνει ποιο redundant link κάνει forward. Ρύθμισέ το ώστε το γρήγορο link σου να κουβαλά και το αργό να μπλοκάρει.
  5. Καν' το bond με LACP 802.3ad όταν θέλεις και τα δύο links ζωντανά· είναι χωρίς βρόχο εξ σχεδιασμού και προστίθεται στο bridge ως ένα port.
  6. Το bonding κλιμακώνει flows, όχι ένα μοναδικό stream — ένα 2×1G βοηθά δέκα clients, όχι ένα μεγάλο αντίγραφο. Και τα δύο άκρα πρέπει να μιλάνε LACP.

Redundant links switch που η κανουν βροχο η καθονται αδρανα;

Σχεδιάζω ανθεκτικά Layer-2 cores σε MikroTik και Cisco με ντετερμινιστική συμπεριφορά spanning-tree και bonds LACP που πραγματικά χρησιμοποιούν το bandwidth που πληρώνεις — και κάνουν failover καθαρά όταν πέφτει ένα link στο bundle.

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