معرفی و آموزش کامل پروتکل STP در شبکه‌های سوئیچینگ

پروتکل STP

پروتکل STP مخفف عبارت Spanning Tree Protocol و یک پروتکل لایه ۲ است که برای جلوگیری از ایجاد حلقه‌های (loops) ناخواسته در شبکه‌های سوئیچینگ طراحی شده است. حلقه‌های سوئیچینگ می‌توانند باعث ایجاد مشکلات جدی مانند افزایش ترافیک شبکه، خرابی شبکه و بسته‌های داده‌ای تکراری شوند.

پروتکل STP با شناسایی و مسدود کردن لینک‌های اضافی، شبکه را به صورت یک ساختار درختی بدون حلقه (loop-free tree) تنظیم می‌کند. وقتی چندین سوئیچ به هم متصل می‌شوند و مسیرهای متعددی بین آنها وجود دارد، حلقه‌هایی در شبکه ایجاد می‌شود که می‌تواند باعث مشکلات زیر شود:

Broadcast Storm: وقتی یک بسته broadcast وارد یک حلقه می‌شود، بدون توقف در شبکه چرخش می‌کند، که باعث ایجاد ترافیک شدید و در نهایت از کار افتادن شبکه می‌شود.

Duplication of Frames: یک فریم ممکن است به دلیل حلقه در شبکه تکرار شود، که می‌تواند باعث مشکلات ارتباطی شود.

MAC Table Instability: سوئیچ‌ها آدرس‌های MAC را با توجه به پورت‌هایی که بسته‌ها را دریافت می‌کنند، در جداول خود ذخیره می‌کنند. حلقه‌ها می‌توانند باعث تغییرات مکرر در این جداول شوند و سوئیچ‌ها را گیج کنند.

چگونگی کار پروتکل STP

پروتکل STP با استفاده از الگوریتم درخت پوشا (Spanning Tree Algorithm یا STA) شبکه را به گونه‌ای پیکربندی می‌کند که حلقه‌ای در آن وجود نداشته باشد. این الگوریتم به سوئیچ‌ها اجازه می‌دهد که مسیرهای اضافی را شناسایی و آنها را مسدود کنند. مراحل این الگوریتم به شرح زیر است:

  1. انتخاب سوئیچ ریشه (Root Bridge):
    اولین مرحله در فرآیند STP، انتخاب یک سوئیچ به عنوان Root Bridge است. سوئیچی که پایین‌ترین Bridge ID را داشته باشد، به عنوان Root Bridge انتخاب می‌شود. Bridge ID ترکیبی از Priority (که به صورت پیش‌فرض 32768 است) و MAC Address سوئیچ است.
  2. انتخاب مسیرهای کم‌هزینه:
    هر سوئیچ مسیر خود به Root Bridge را محاسبه می‌کند و Port Cost (هزینه پورت) را برای هر لینک محاسبه می‌کند. پورت‌هایی که به Root Bridge متصل می‌شوند، Root Port نامیده می‌شوند و فعال باقی می‌مانند.
  3. مسدود کردن پورت‌های اضافی:
    پورت‌هایی که به عنوان Root Port یا Designated Port انتخاب نمی‌شوند، به حالت مسدود (Blocking) می‌روند تا از ایجاد حلقه جلوگیری شود. Designated Port پورتی است که مسئولیت ارسال داده‌ها به سمت یک سگمنت شبکه را بر عهده دارد.

مفاهیم کلیدی پروتکل STP

Root Bridge: سوئیچی است که به عنوان نقطه مرکزی شبکه انتخاب می‌شود. این سوئیچ به عنوان مبنای محاسبات مسیریابی در STP استفاده می‌شود.

Root Port: پورتی روی هر سوئیچ (به جز Root Bridge) که کوتاه‌ترین مسیر به Root Bridge را دارد.

Designated Port: پورتی که برای هر سگمنت شبکه به عنوان پورت اصلی برای ارسال ترافیک انتخاب می‌شود.

Blocking Port: پورتی که برای جلوگیری از حلقه، مسدود می‌شود و در حالت غیر فعال قرار می‌گیرد.

Bridge Protocol Data Units (BPDU): بسته‌های خاصی که توسط سوئیچ‌ها برای تبادل اطلاعات STP ارسال می‌شوند. این بسته‌ها شامل Bridge ID و اطلاعات هزینه مسیر هستند.

مراحل کار پروتکل STP

BPDU Advertisement: همه سوئیچ‌ها BPDUهای خود را به همسایه‌ها ارسال می‌کنند. این BPDUها شامل Bridge ID و هزینه مسیر به Root Bridge است.

Root Bridge Election: سوئیچی که پایین‌ترین Bridge ID را دارد به عنوان Root Bridge انتخاب می‌شود.

Path Cost Calculation: هر سوئیچ هزینه مسیر خود به Root Bridge را محاسبه می‌کند. پورت با کمترین هزینه به عنوان Root Port انتخاب می‌شود.

Designated Port Selection: برای هر سگمنت شبکه، پورت با کمترین هزینه به Root Bridge به عنوان Designated Port انتخاب می‌شود.

Blocking Unused Ports: پورت‌هایی که به عنوان Root Port یا Designated Port انتخاب نمی‌شوند، مسدود می‌شوند تا از ایجاد حلقه جلوگیری شود.

مثال عملی کار با پروتکل STP

فرض کنید یک شبکه ساده با سه سوئیچ داریم: Switch A، Switch B و Switch C. این سوئیچ‌ها به صورت زیر به هم متصل هستند:

Switch A به Switch B متصل است.
Switch B به Switch C متصل است.
Switch C به Switch A متصل است.
اگر پروتکل STP فعال نباشد، این توپولوژی باعث ایجاد حلقه خواهد شد. STP با شناسایی این توپولوژی و مسدود کردن یک لینک، از حلقه جلوگیری می‌کند.

مراحل کار پروتکل STP با دستورات مربوطه:
مرحله ۱: فعال‌سازی STP
به طور پیش‌فرض، پروتکل STP روی همه سوئیچ‌های سیسکو فعال است. اگر به هر دلیلی STP غیرفعال باشد، می‌توانید آن را با دستور زیر فعال کنید:

Switch(config)# spanning-tree vlan 1

این دستور پروتکل STP را برای VLAN 1 (که VLAN پیش‌فرض است) فعال می‌کند. شما می‌توانید برای VLAN‌های مختلف STP را فعال کنید.

مرحله ۲: انتخاب Root Bridge
سوئیچ با پایین‌ترین Bridge ID به عنوان Root Bridge انتخاب می‌شود. Bridge ID شامل Bridge Priority (اولویت سوئیچ) و MAC Address است. به طور پیش‌فرض، Bridge Priority برابر 32768 است.

برای مثال، اگر بخواهید Switch A را به عنوان Root Bridge انتخاب کنید، می‌توانید Priority آن را کاهش دهید:

SwitchA(config)# spanning-tree vlan 1 priority 4096

اگر بخواهید از دستور spanning-tree vlan 1 root primary استفاده کنید، سوئیچ به طور خودکار کمترین Priority ممکن را برای Root Bridge شدن انتخاب می‌کند:

SwitchA(config)# spanning-tree vlan 1 root primary

مرحله ۳: انتخاب Root Port و Designated Port
هر سوئیچ در شبکه، پورت‌هایی که کمترین هزینه (Cost) را به سمت Root Bridge دارند، به عنوان Root Port انتخاب می‌کند. پورت‌های باقی‌مانده که به سگمنت‌های مختلف متصل هستند، به عنوان Designated Port انتخاب می‌شوند.

در یک سناریو عملی، این فرآیند به طور خودکار توسط پروتکل STP انجام می‌شود و نیازی به پیکربندی دستی ندارد. اما برای مشاهده نتایج و تعیین اینکه کدام پورت‌ها به عنوان Root Port و Designated Port انتخاب شده‌اند، می‌توانید از دستور زیر استفاده کنید:

Switch# show spanning-tree vlan 1

خروجی این دستور نشان می‌دهد که کدام پورت‌ها به عنوان Root Port و Designated Port انتخاب شده‌اند و کدام پورت‌ها در حالت مسدود (Blocking) قرار دارند.

مرحله ۴: مسدود کردن پورت‌های اضافی
پورت‌هایی که نه Root Port هستند و نه Designated Port، به حالت Blocking می‌روند تا از ایجاد حلقه جلوگیری شود. این فرآیند نیز به صورت خودکار توسط STP انجام می‌شود.

نمایش خروجی پروتکل STP روی یک سوئیچ:
فرض کنید دستور show spanning-tree vlan 1 را روی Switch B اجرا می‌کنید:

SwitchB# show spanning-tree vlan 1

VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 4096
Address 0010.0a12.bcfe
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 32768 (priority 32768 sys-id-ext 0)
Address 0011.2233.4455
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300

Interface Role Sts Cost Prio.Nbr Type
——————- —- — ——— ——– ——————————–
Fa0/1 Root FWD 19 128.1 P2p
Fa0/2 Desg FWD 19 128.2 P2p
Fa0/3 Altn BLK 19 128.3 P2p

در این خروجی:

Fa0/1 به عنوان Root Port انتخاب شده است و در حالت Forwarding (FWD) قرار دارد.
Fa0/2 به عنوان Designated Port انتخاب شده است و در حالت Forwarding (FWD) قرار دارد.
Fa0/3 به عنوان پورت اضافی شناسایی شده و در حالت Blocking (BLK) قرار دارد.
مثال کامل از پیکربندی STP:
فرض کنید یک شبکه با سه سوئیچ Switch A، Switch B، و Switch C داریم. هدف این است که Switch A به عنوان Root Bridge انتخاب شود و از ایجاد حلقه بین سوئیچ‌ها جلوگیری شود.

پیکربندی Switch A به عنوان Root Bridge:

SwitchA(config)# spanning-tree vlan 1 priority 4096

مشاهده وضعیت STP روی Switch B:

SwitchB# show spanning-tree vlan 1

خروجی این دستور به شما نشان می‌دهد که Switch A به عنوان Root Bridge انتخاب شده و کدام پورت‌ها به عنوان Root Port و Designated Port تعیین شده‌اند.

مشاهده وضعیت پروتکل STP روی Switch C:

SwitchC# show spanning-tree vlan 1

این دستور وضعیت مشابهی را برای Switch C نمایش می‌دهد.

انتخاب Root Bridge: فرض کنید Switch A پایین‌ترین Bridge ID را دارد. بنابراین، Switch A به عنوان Root Bridge انتخاب می‌شود.

انتخاب Root Port: هر کدام از Switch B و Switch C مسیری با کمترین هزینه به Root Bridge (Switch A) را محاسبه می‌کنند. برای مثال، پورت اتصال Switch B به Switch A به عنوان Root Port در Switch B انتخاب می‌شود.

مسدود کردن پورت‌ها: پورت اتصال بین Switch B و Switch C که هیچ مسیر کوتاهی به Root Bridge ندارد، مسدود می‌شود تا از ایجاد حلقه جلوگیری شود.

در این حالت، حلقه‌ای در شبکه وجود ندارد و ارتباطات به صورت بهینه بین سوئیچ‌ها جریان دارد.

انواع حالت‌های پورت در پروتکل STP

هر پورت در پروتکل STP می‌تواند در یکی از حالت‌های زیر قرار گیرد:

Blocking: در این حالت پورت فعال نیست و هیچ داده‌ای ارسال یا دریافت نمی‌شود.
Listening: پورت در حال گوش دادن به BPDUها است تا مطمئن شود که هیچ حلقه‌ای در شبکه وجود ندارد.
Learning: پورت شروع به یادگیری آدرس‌های MAC می‌کند اما هنوز داده‌های کاربر را ارسال یا دریافت نمی‌کند.
Forwarding: پورت به صورت کامل فعال است و داده‌های کاربر را ارسال و دریافت می‌کند.
Disabled: پورت غیرفعال است و در هیچ‌یک از مراحل STP شرکت نمی‌کند.

نسخه‌های پیشرفته‌تر پروتکل STP

Rapid Spanning Tree Protocol (RSTP):**
RSTP نسخه سریع‌تری از STP است که زمان همگرایی (convergence time) را کاهش می‌دهد. RSTP به جای آنکه تا 50 ثانیه برای تغییرات در توپولوژی صبر کند، معمولاً در چند ثانیه به تغییرات پاسخ می‌دهد.

Multiple Spanning Tree Protocol (MSTP):**
MSTP به شما اجازه می‌دهد که چندین Spanning Tree را برای گروه‌های مختلف VLAN به طور همزمان ایجاد کنید. این بهینه‌سازی بیشتر در استفاده از منابع شبکه و بهبود کارایی کلی شبکه می‌انجامد.

نتیجه‌گیری
Spanning Tree Protocol (STP) یک پروتکل حیاتی برای جلوگیری از حلقه‌های سوئیچینگ در شبکه‌های اترنت است. با استفاده از STP، شبکه‌های سوئیچینگ می‌توانند به صورت پایدار و بدون حلقه کار کنند. با استفاده از STP، اطمینان حاصل می‌شود که شبکه به درستی کار می‌کند و مشکلاتی مانند تکرار داده‌ها و ترافیک بیش از حد ایجاد نمی‌شود. نسخه‌های پیشرفته‌تر STP مانند RSTP و MSTP نیز برای بهبود کارایی و سرعت عملکرد شبکه توسعه داده شده‌اند.