پروتکل STP چیست و چه نقشی در شبکههای سوئیچشده دارد؟

بیشتر متخصصانی که با تجهیزات شبکه کار میکنند بهخوبی میدانند که برای افزایش پهنای باند و بهبود پایداری، معمولاً چند لینک موازی میان سوئیچها یا روترها ایجاد میشود. این کار علاوه بر افزایش ظرفیت، نوعی Redundancy در شبکه ایجاد میکند تا در صورت قطع شدن یک لینک، مسیر جایگزین بتواند ترافیک را منتقل کند.
اما نکته مهم اینجاست که شبکه اترنت بهصورت پیشفرض نمیتواند میان مسیرهای موازی تمایز ایجاد کند. در نتیجه، این ساختار میتواند باعث ایجاد Loop شود؛ حلقهای که در آن فریمها دائماً بین لینکها گردش میکنند و در نهایت به پدیدهای مخرب به نام Broadcast Storm منجر میشود. پروتکل STP که بهطور پیشفرض روی سوئیچها فعال است، دقیقاً برای جلوگیری از همین مشکل طراحی شده و با مسدودسازی هوشمند مسیرهای اضافی، از ایجاد Loop جلوگیری میکند.
البته برای رسیدن به بهترین عملکرد و حداقل قطعی، این پروتکل باید بهصورت اصولی بهینهسازی و تنظیم شود.
برای درک بهتر اهمیت STP، باید مفهوم Loop را بهصورت ساده توضیح دهیم. Loop در شبکه زمانی رخ میدهد که دو یا چند مسیر موازی بین تجهیزات لایه دوم وجود داشته باشد. اگر فریمها از این مسیرها عبور کنند، ممکن است بدون توقف در شبکه بچرخند و هیچوقت به مقصد نرسند. این وضعیت باعث افزایش شدید ترافیک، کاهش کارایی، اختلال در Forwarding و در نهایت ازکارافتادن کامل شبکه میشود. به همین دلیل، وجود یک مکانیزم کنترلی ضروری است.
پروتکل STP یا Spanning Tree Protocol قراردادی است که در استاندارد IEEE 802.1D تعریف شده و بهعنوان راهحل اصلی جلوگیری از Loop در شبکههای LAN عمل میکند. در حالی که پروتکلهای مسیریابی لایه سوم توانایی انتخاب مسیرهای متعدد و جایگزین را دارند، شبکههای لایه دوم تنها باید یک مسیر فعال داشته باشند. STP با اجرای الگوریتمی مشخص، یک توپولوژی درختی بدون حلقه (Loop-Free) ایجاد میکند و مسیرهای اضافی را بهصورت خودکار مسدود میسازد. به این ترتیب، تنها یک مسیر اصلی برای عبور فریمها فعال باقی میماند و سایر مسیرهای Redundant تا زمان نیاز در حالت Blocking قرار میگیرند.
مکانیزم STP به این شکل است که ابتدا یک سوئیچ را بهعنوان Root Bridge انتخاب میکند؛ یعنی مرکزیترین نقطه درخت. سپس تمامی مسیرها باید طوری تنظیم شوند که تنها یک مسیر معتبر به Root وجود داشته باشد. در صورت بروز قطع، خرابی یا Down شدن مسیر اصلی، STP مسیرهای مسدود را مجدداً ارزیابی کرده و بهسرعت مسیر جدیدی را فعال میکند تا ارتباط قطع نشود. این رفتار پویا باعث افزایش چشمگیر پایداری شبکه و جلوگیری از اختلالات رایج لایه دوم میشود.
در طراحی شبکههای بزرگ که چندین سوئیچ بهصورت مستقیم و غیرمستقیم به یکدیگر متصل هستند، احتمال ایجاد حلقه بسیار بالا است. بدون STP، فریمهای Broadcast و حتی برخی فریمهای Unicast ناشناخته میتوانند در شبکه بیوقفه گردش کنند و موجب Broadcast Storm، افت شدید سرعت و اشغال کامل پهنای باند شوند. اما با اجرای STP، یک ساختار درختی ایجاد شده و تنها مسیر کنترلشده و ایمن اجازه عبور ترافیک را دارد.
اهمیت Broadcast و Multicast در شبکه
باید توجه داشت که وجود Broadcast و Multicast در شبکه ضروری است و بدون آنها بسیاری از عملکردهای شبکه با اختلال مواجه خواهند شد. برخی افراد تصور میکنند که وجود Broadcast در شبکه زائد است و باید محدود شود، در حالی که پروتکلها و سرویسهایی مانند DHCP، ARP و بسیاری از اپلیکیشنها وابسته به این نوع ارسال هستند. مشکل اصلی زمانی رخ میدهد که Broadcast از حد نرمال خارج شده و شبکه را درگیر کند؛ به این پدیده Broadcast Storm یا طوفان Broadcast گفته میشود که منابع شبکه و تجهیزات را تحت فشار قرار میدهد.
مفاهیم اصلی پروتکل STP
پروتکل STP برای شکل دادن شبکه به صورت یک درخت یا گراف بدون Loop نیازمند انتخاب یک Root یا سوئیچ اصلی است که ریشه تمامی شاخهها محسوب میشود. محاسبات STP بر اساس Bridge ID و Path Cost انجام میشود. هر سوئیچ دارای یک Bridge ID هشت بایتی است که ترکیبی از 2 بایت اولویت و 6 بایت آدرس MAC میباشد. هرچه مقدار Bridge ID کمتر باشد، احتمال انتخاب سوئیچ به عنوان Root Bridge بیشتر است.
اجرای STP در تمامی شبکهها
پروتکل STP یک استاندارد لایه دوم (Data Link Layer) در مدل OSI است که برای جلوگیری از ایجاد حلقه در شبکه و برقراری یک ساختار درختی استفاده میشود. این پروتکل توسط IEEE تعریف شده و در تمامی شبکههایی که از پروتکل Ethernet استفاده میکنند، اجرا میشود. البته برخی شبکهها ممکن است از پروتکلهای دیگر برای جلوگیری از Loop استفاده کنند، اما STP به دلیل استاندارد بودن و قابلیت اطمینان بالا، بهطور گسترده در شبکههای کامپیوتری استفاده میشود.
زیرساخت خود را با سرورهای HP تقویت کنید و از عملکرد پایدار، امنیت و مدیریت آسان اطمینان حاصل کنید. برای مشاوره تخصصی، استعلام قیمت و خرید سرور HP با گارانتی معتبر، همین حالا با یرورتیک تماس بگیرید.
مراحل اجرای Spanning Tree
1. انتخاب Root Bridge
اولین مرحله اجرای STP، انتخاب یک Root Bridge یا Root Switch است که ریشه درخت شبکه محسوب میشود. در هر VLAN تنها یک سوئیچ میتواند Root باشد. این سوئیچ دارای کوچکترین Bridge ID در شبکه است و اگر سوئیچ جدیدی با Bridge ID کمتر به شبکه اضافه شود، Root Bridge تغییر میکند و محاسبات STP مجدداً انجام میشوند. Root Bridge هر دو ثانیه بستههای Configuration BPDU حاوی اطلاعات Spanning Tree را در شبکه تبلیغ میکند.
در ابتدا، همه سوئیچها خود را Root Bridge فرض میکنند و بستههای BPDU را ارسال میکنند. هرگاه یک BPDU با Bridge ID بهتر دریافت شود، سوئیچ ارسال بستههای خود را متوقف کرده و شروع به ارسال BPDU جدید بر اساس سوئیچ برتر میکند. پس از این فرآیند، تنها سوئیچی که کمترین Bridge ID را دارد، به عنوان Root Bridge انتخاب میشود و سایر سوئیچها فقط BPDU های آن را دریافت و ارسال میکنند.
فرمت Bridge ID در استاندارد IEEE 802.1D شامل دو بخش Priority و MAC Address بود. در نسخههای جدید، فیلد Priority به دو قسمت Priority و Extension System ID (که همان VLAN ID است) تقسیم شده است.
2. انتخاب Root Port ها
پس از انتخاب Root Bridge، هر سوئیچ دیگر باید یک پورت خود را به عنوان Root Port مشخص کند؛ یعنی پورتی که از طریق آن کوتاهترین مسیر به Root Bridge وجود دارد. مراحل تعیین Root Port به این صورت است:
- Root Bridge هر دو ثانیه بسته Hello با Cost=0 ارسال میکند.
- سایر سوئیچها پس از دریافت BPDU، مقدار Cost، Bridge ID سوئیچ Forwarder، اولویت پورت و شماره پورت خود را در BPDU اعمال میکنند و آن را ارسال میکنند.
- سوئیچها روی پورتهایی که در حالت Blocking قرار دارند، BPDU ارسال نمیکنند.
- پورت با کمترین Cost تا Root Bridge به عنوان Root Port انتخاب میشود.
محاسبه Cost: هر سوئیچ مقدار Cost دریافت شده از BPDU را با Cost پورت محاسبه کرده و هزینه نهایی مسیر تا Root Bridge را مشخص میکند. این فرآیند بهطور خودکار تضمین میکند که مسیرهای با هزینه کمتر فعال باشند و مسیرهای اضافی در حالت Blocking قرار گیرند.
به عنوان مثال، اگر سوئیچی دو BPDU دریافت کند، یکی با Cost=0 و دیگری با Cost=38، سوئیچ مجموع Cost هر مسیر را محاسبه میکند و پورت با Cost کمتر به عنوان Root Port انتخاب میشود. این مکانیزم باعث میشود که در شبکههای دارای مسیرهای موازی، تنها مسیر بهینه و Loop-Free فعال باشد.
انتخاب Root Port
بهترین عددی که هر سوئیچ برای مسیر خود تا Root Bridge محاسبه میکند، تعیینکننده Root Port آن سوئیچ است. این پورت مسیر دسترسی سوئیچ به Root شبکه را مشخص میکند و انتخاب آن برای همه سوئیچها به جز Root Bridge الزامی است. Root Port نشان میدهد که سوئیچ مسیر کوتاهترین فاصله تا Root Bridge را از طریق کدام پورت دارد.
انتخاب Designated Port
در صورتی که یک Segment در شبکه LAN به دو یا چند سوئیچ متصل باشد، تنها یک سوئیچ مسئول ارسال و دریافت فریمها در آن Segment خواهد بود. این پورت به عنوان Designated Port شناخته میشود. انتخاب Designated Port بر اساس بهترین Root Path Cost انجام میشود و در صورت برابری Cost، چهار معیار دیگر مانند Bridge ID و Port ID برای تصمیمگیری استفاده میشوند.
به طور خلاصه:
- هر Segment یک Designated Port دارد.
- هر سوئیچ یک Root Port دارد.
- تمام پورتهای Root Bridge به عنوان Designated Port در نظر گرفته میشوند.
این مکانیزم باعث میشود تنها یک مسیر فعال برای هر Segment وجود داشته باشد و از ایجاد حلقه جلوگیری شود.
عملکرد پروتکل STP
پروتکل STP بر اساس تکنیک Spanning Tree عمل میکند و با ایجاد یک ساختار درختی برای شبکه، Loop-Free بودن آن را تضمین میکند. روند عملکرد STP به صورت زیر است:
- تعیین Root Bridge: ابتدا یکی از سوئیچها به عنوان ریشه درخت انتخاب میشود. این سوئیچ دارای کمترین Bridge ID در شبکه است.
- ارسال BPDU: هر سوئیچ با ارسال پیامهای BPDU (Bridge Protocol Data Unit) وضعیت خود را به سایر سوئیچها اطلاع میدهد. این پیامها شامل اطلاعاتی مانند شناسه ریشه، فاصله تا ریشه و دیگر پارامترهای مربوط به STP هستند.
- انتخاب مسیر به ریشه: با دریافت BPDUها، هر سوئیچ با الگوریتم Spanning Tree کوتاهترین مسیر خود تا Root Bridge را محاسبه میکند. سوئیچهایی که مسیر کوتاهتری به ریشه دارند به عنوان مسیر اصلی در نظر گرفته میشوند و سایر مسیرها در حالت Blocking قرار میگیرند.
- ایجاد درخت شبکه: پس از اعمال محاسبات، یک ساختار درختی در شبکه شکل میگیرد که تنها یک مسیر بین هر دو دستگاه فعال است و از ایجاد Loop جلوگیری میشود.
- مدیریت خطا و مسیر جایگزین: در صورت قطع شدن یکی از پیوندهای شبکه، STP به صورت خودکار مسیر جایگزین را فعال کرده و از قطعی ارتباط جلوگیری میکند. الگوریتم با در نظر گرفتن کمترین فاصله تا ریشه، بهترین مسیر ممکن را انتخاب میکند.
الگوریتمهای پیشرفته STP
برای افزایش سرعت همگرایی و بهبود عملکرد شبکه، نسخههای پیشرفتهای از STP نیز وجود دارند:
- RSTP (Rapid Spanning Tree Protocol): نسخه سریعتر STP برای کاهش زمان Convergence.
- MSTP (Multiple Spanning Tree Protocol): برای پشتیبانی از VLANهای متعدد و بهینهسازی مسیرها در شبکههای بزرگ.
استفاده از این الگوریتمها باعث میشود شبکه با حداقل زمان قطعی و بالاترین بهرهوری به مسیرهای جایگزین دسترسی داشته باشد.
انواع پروتکل Spanning Tree Protocol (STP)
پروتکل STP شامل چندین نسخه و نوع مختلف است که هر کدام با هدفها و ویژگیهای خاص خود طراحی شدهاند. مهمترین انواع آن عبارتند از:
- STP استاندارد (IEEE 802.1D):
این نسخه پایهایترین نوع STP است و برای جلوگیری از ایجاد حلقه در شبکههای LAN استفاده میشود. در این نسخه، تمامی سوئیچها به عنوان سوئیچهای غیر ریشه (Non-Root Bridge) عمل میکنند و با تبادل پیامهای BPDU، ساختار درختی شبکه را ایجاد و حفظ میکنند. - RSTP (Rapid Spanning Tree Protocol – IEEE 802.1w):
این نسخه بهبود یافته STP است و با کاهش زمان پاسخدهی و افزایش سرعت Convergence، شبکه را سریعتر به حالت پایدار باز میگرداند. در RSTP، سوئیچها به عنوان فعال (Active Bridge) یا غیرفعال (Backup Bridge) شناخته میشوند. سوئیچهای فعال مسیر درختی را تشکیل میدهند و در صورت خطا، سوئیچهای غیرفعال جایگزین میشوند. - MSTP (Multiple Spanning Tree Protocol – IEEE 802.1s):
این نسخه برای شبکههایی با چند VLAN طراحی شده است. در MSTP، شبکه به مناطق مختلف (Regions) تقسیم میشود و هر منطقه یک درخت اختصاصی برای VLANهای مرتبط دارد. این نوع STP بهینهسازی مسیر بین دستگاهها را به صورت VLAN-محور انجام میدهد و بهترین مسیر برای ارتباط میان سوئیچها را انتخاب میکند.
استفاده از هر یک از این نسخهها بسته به اندازه، توپولوژی و نیازهای شبکه تعیین میشود. شبکههای کوچک معمولاً از STP استاندارد استفاده میکنند، در حالی که شبکههای بزرگ و چند VLANی به MSTP یا RSTP نیاز دارند.
وضعیتهای مختلف پورت در STP
هر پورت در سوئیچهای فعال شده توسط STP میتواند در یکی از پنج حالت زیر قرار گیرد:
- Disable: پورت خاموش است و هیچ فعالیتی ندارد.
- Blocking: اولین حالت پس از فعال شدن پورت؛ در این حالت پورت فریم ارسال یا دریافت نمیکند و MAC Addressها را به CAM Table اضافه نمیکند، اما قادر به دریافت BPDU است.
- Listening: پورت هنوز فریم ارسال یا دریافت نمیکند و CAM Table را بهروزرسانی نمیکند، اما میتواند BPDU ارسال و دریافت کرده و خود را به عنوان Root Port یا Designated Port معرفی کند. اگر نتواند، به حالت Blocking بازمیگردد.
- Learning: در این حالت پورت هنوز فریم ارسال یا دریافت نمیکند، اما MAC Addressها را به CAM Table اضافه میکند و BPDU را دریافت و ارسال میکند.
- Forwarding: پورت فعال است، فریمها را ارسال و دریافت میکند، CAM Table را بهروزرسانی میکند و همچنان BPDU را مدیریت میکند.
ویژگیهای اصلی پروتکل STP
- جلوگیری از ایجاد حلقه در شبکه: STP با ایجاد یک درخت ارتباطی، از Loop شدن شبکه جلوگیری میکند.
- پویش درخت: الگوریتمهای STP بهترین مسیر بین دستگاهها را بر اساس کمترین فاصله تا ریشه انتخاب میکنند.
- جایگزینی مسیر: در صورت قطع شدن یک لینک، STP به صورت خودکار مسیر جایگزین را فعال میکند.
- انتخاب سوئیچ ریشه: STP یکی از سوئیچها را به عنوان ریشه شبکه انتخاب میکند و مسیرها به سمت این سوئیچ بهینه میشوند.
- قابلیت پیکربندی: STP قابل تنظیم است و میتوان زمان Convergence، اولویت سوئیچها و دیگر پارامترها را متناسب با نیاز شبکه تغییر داد.
روشهای پیکربندی STP
برای پیکربندی STP میتوان از روشهای مختلف استفاده کرد:
- CLI (Command-Line Interface):
بسیاری از سوئیچها قابلیت پیکربندی STP از طریق CLI را دارند. به عنوان مثال، دستور set spantree root primary برای تعیین سوئیچ ریشه استفاده میشود. - GUI (Graphical User Interface):
برخی سوئیچها دارای رابط گرافیکی هستند که امکان تنظیم STP با استفاده از موس و کیبورد را فراهم میکند. - پروتکلهای مدیریت شبکه:
با استفاده از پروتکلهایی مانند SNMP، Telnet یا SSH میتوان STP را از راه دور و به صورت متمرکز مدیریت و پیکربندی کرد.
قبل از پیکربندی STP، آشنایی با مفاهیمی مانند Root Bridge، Root Port، Designated Port و پورتهای بلاک شده ضروری است تا پیکربندی بهینه و صحیح انجام شود.

