آموزش جامع STP و انواع آن
Spanning Tree Protocol — نسخهٔ کامل آموزشی

مبانی، BPDU، انتخاب ریشه، حالات و نقش‌ها، تایمرها، انواع STP (IEEE 802.1D, RSTP, MSTP, PVST) و پیکربندی و عیب‌یابی در محیط‌های Cisco و Enterprise

تاریخ انتشار: ۱ آذر ۱۴۰۴ (۲۱ نوامبر ۲۰۲۵)

۱. مقدمه و ضرورت STP

در شبکه‌های اترنتِ دارای چندین مسیر (redundant links)، برای جلوگیری از loop لایهٔ ۲ و طوفان فریم‌ها، از پروتکل Spanning Tree استفاده می‌شود.

هدف STP حذف مسیرهای حلقه‌ای (Layer 2 loops) و ایجاد یک درخت بدون حلقه (loop-free) در دامنهٔ بریج‌ها/سوئیچ‌ها است. هنگام طراحی شبکه باید همیشه redundancy و قابلیت بازیابی را با محافظت در برابر loop توازن داد.

منابع مفهومی: IEEE 802.1D (STP)، RFCها و مستندات فروشندگان.

۲. BPDU و انتخاب Root Bridge

BPDU (Bridge Protocol Data Unit) پیامی است که سوئیچ‌ها برای تبادل اطلاعات STP ارسال می‌کنند. دو نوع BPDU رایج در استانداردها وجود دارد: Configuration BPDU (BPDU کانفیگ) و TCN BPDU (Topology Change Notification).

محتوا/فیلدهای کلیدی در BPDU

انتخاب Root Bridge

الگوریتم انتخاب Root: بریجی که کمترین Bridge ID را دارد به‌عنوان Root انتخاب می‌شود. Bridge ID ترکیبی از Priority و MAC است. بنابراین برای تعیین Root معمولاً Priority را کاهش می‌دهیم.

# مثال: تعیین سوئیچ به‌عنوان Root برای VLAN 1 (Cisco)
configure terminal
spanning-tree vlan 1 root primary
end

توجه: در شبکه‌های چند VLAN از PVST یا MSTP استفاده می‌شود تا هر VLAN یا گروه VLAN مستقل مدیریت شود.

۳. نقش‌ها و حالات پورت در STP

نقش‌های پورت (Port Roles)

نقشتوضیح
Root Port (RP)پورت با بهترین مسیر به Root (فقط یک RP در هر سوئیچ غیر-root)
Designated Port (DP)پورت منتخب برای فرستادن فریم‌ها روی یک LAN segment
Alternate / Backupپورت‌های پشتیبان که در حالت بلاک هستند و در صورت تغییر مسیر فعال می‌شوند

حالات پورت (Port States) — کلاسیک STP

حالتتوضیح
Blockingپورت دریافت می‌کند اما فریم را فوروارد نمی‌کند؛ BPDU می‌فرستد/دریافت می‌کند
Listeningبرای به‌روزرسانی topology و جلوگیری از loop قبل از یادگیری MAC
Learningآدرس‌های MAC را یاد می‌گیرد اما هنوز فوروارد نمی‌کند
Forwardingپورت فریم‌ها را فوروارد می‌کند و در جدول MAC نوشته می‌شود
Disabledپورت خاموش یا administratively down

RSTP (802.1w) حالات را ساده می‌کند و سریع‌تر به وضعیت انتقال می‌رسد؛ بسیاری از حالات کلاسیک کنار گذاشته می‌شوند یا سریع‌تر طی می‌شوند.

۴. تایمرها و محاسبات

سه تایمر کلیدی در STP کلاسیک وجود دارد:

تایمرپیش‌فرضهدف
Hello Time۲ ثانیهفاصله ارسال BPDU توسط Root
Max Age۲۰ ثانیهمدت زمان نگهداری اطلاعات قدیمی از BPDU
Forward Delay۱۵ ثانیهمدت زمان در حالات Listening و Learning

محاسبه مدت زمان converge در STP کلاسیک

مدت زمان تقریبی convergence در worst-case:

Convergence ≈ MaxAge + 2 × ForwardDelay
مثلاً: 20 + 2×15 = 50 ثانیه

RSTP convergence بسیار سریع‌تر است (معمولاً چند ثانیه) زیرا از مکانیزم‌های handshake سریع بین پورت‌ها استفاده می‌کند.

۵. انواع STP

IEEE 802.1D — STP کلاسیک

استاندارد اولیه؛ convergence کندتر و مناسب شبکه‌های کوچک تا متوسط.

IEEE 802.1w — RSTP (Rapid Spanning Tree)

نسخهٔ سریع‌تر STP با converge سریع‌تر و پشتیبانی از port roles جدید (Alternate/Backup) و Link-type detection.

IEEE 802.1s — MSTP (Multiple Spanning Tree)

MSTP اجازه می‌دهد چندین instance از STP را تعریف کنید و گروهی از VLANها را به هر instance نگاشت کنید؛ مناسب دیتاسنتر و شبکه‌های بزرگ برای load-balancing بین مسیرها.

PVST / PVST+ (Cisco)

Per-VLAN Spanning Tree — برای هر VLAN یک instance جداگانه (در سویچ‌های Cisco Catalyst). این امکان کنترل و root selection مستقل برای هر VLAN را فراهم می‌کند.

Rapid PVST+

نسخهٔ سریع PVST با مزایای RSTP به‌ازای هر VLAN.

نوعاستانداردمزایامعایب
STP802.1Dساده و استانداردکند، converge طولانی
RSTP802.1wسریع، سازگار با STPنیاز به پشتیبانی دستگاه
MSTP802.1sمقیاس‌پذیر، load-sharing بین VLANهاپیکربندی پیچیده‌تر
PVST/RPVST+Ciscoکنترل هر-VLAN، انعطاف‌پذیرمصرف منابع (یک instance برای هر VLAN)

۶. نمونه‌های پیکربندی (Cisco IOS)

تنظیم RSTP به‌صورت global

configure terminal
spanning-tree mode rapid-pvst
end
write memory

قرار دادن سوئیچ به عنوان Root Primary برای VLANهای خاص

configure terminal
spanning-tree vlan 10 root primary
spanning-tree vlan 20 root primary
end

پیکربندی MST (نمونه)

configure terminal
spanning-tree mode mst
spanning-tree mst configuration
name MST-region-1
revision 1
instance 1 vlan 10,20
instance 2 vlan 30,40
exit
end
write memory

تنظیم priority دستی برای انتخاب Root

configure terminal
spanning-tree vlan 1 priority 4096
end

توصیه: پس از تغییر تنظیمات STP، خروجی‌های `show spanning-tree` و `show spanning-tree summary` را بررسی کنید.

۷. عیب‌یابی و بهترین شیوه‌ها

دستورهای مهم برای عیب‌یابی

show spanning-tree
show spanning-tree vlan 1
show spanning-tree detail
show spanning-tree mst configuration
show spanning-tree root
show interfaces status
show logging
debug spanning-tree events
debug spanning-tree bpdu

مسائل رایج و راه حل

بهترین شیوه‌ها: تعیین Root مشخص برای هر instance/VLAN، فعال‌سازی BPDU Guard روی پورت‌های access، استفاده از PortFast برای پورت‌های میزبان و بهره‌گیری از features مثل Loop Guard و Root Guard در لایهٔ Distribution/Core.

۸. مثال عملی و سناریوها

سناریو ۱ — اضافه شدن لینک جدید باعث ایجاد loop می‌شود

علائم: Flooding، CPU بالا در سوئیچ، تاخیر در شبکه.

گام‌های پیشنهادی:

سناریو ۲ — VLANهای مختلف نیاز به load-balancing دارند

راهکار: استفاده از MSTP و map کردن VLANها به instanceهای مختلف تا هر instance مسیر متفاوتی را فعال نگه دارد.

۹. جمع‌بندی

نکات کلیدی:
• STP برای جلوگیری از loop ضروری است — همیشه در طراحی شبکه redundancy را با کنترل loop همراه کن.
• RSTP و Rapid PVST برای convergence سریع‌تر توصیه می‌شوند.
• MSTP برای شبکه‌های بزرگ و نیاز به load-balancing بین VLANها مناسب است.
• تنظیم Root به‌صورت intentional و فعال‌سازی ویژگی‌های محافظتی (BPDU Guard, Root Guard, Loop Guard) از پایه‌های طراحی مقاوم است.

این صفحه یک مرجع آموزشی جامع برای STP و انواع آن است — مناسب مهندسان شبکه، دانشجویان و متخصصان امنیت.

منابع: IEEE 802.1D/802.1w/802.1s، مستندات Cisco — مثال‌ها و دستورها برای اهداف آموزشی ارائه شده‌اند.