STP مخفف Spanning Tree Protocol یک پروتکل شبکه است که یک توپولوژی منطقی بدون Loop برای شبکه های اترنت ایجاد می کند. به زبان ساده STP یک پروتکل است که از بوجود آمدن Loop در سوئیچ جلوگیری می کند.

منظور از Loop هم این است که یک بسته از نقطه وارد شبکه شود و در یک حلقه بیفتد و مدام بین سوئیچ های شبکه بچرخد.

اگر یک frame درloop قرار بگیرد Broadcast storm به وجود می آید. Broadcast storm زمانی به وجود می آید که هر نوعی از frameهای Ethernet مانند multicast frame،broadcast frame و unicast frameهایی که مقصدشان مشخص نیست در loop بی نهایت داخل LAN قرار بگیرند. Broadcast stormها می توانند لینک های شبکه را با کپی های به وجود آمده از یک frame اشباع کنند و باعث از بین رفتن بعضی از frameها شوند، از طرفی با توجه به بار پردازشی مورد نیاز برای پردازش broadcast frameها، تاثیر قابل ملاحظه ای روی عملکرد deviceهای کاربران دارند

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

همچنین Spanning Tree پروتکلی است که با تشخیص مسیر جایگزین یا مسیر دوم آنرا تا زمانی که مورد نیاز نیست مسدود می کند.

بنابراین طراح شبکه می تواند دو یا چند مسیر را بین سوئیچ های خود در نظر بگیرد ، یک مسیر را به عنوان مسیری اصلی و باقی مسیرها به عنوان رزرو در نظر گرفته می شود و در صورت قطع شدن مسیر اصلی مسیر رزور به سرعت جایگزین مسیر اصلی شده و ترافیک را منتقل می کند.

پروتکلSTP (استاندارد 802.1D)دقیقا چه کار می کند؟

پروتکلSTP با قرار دادن هر یک از پورت های سوئیچ در وضعیت های forwarding و blocking از به وجود آمدن loop جلوگیری می‌کند. پورت هایی که در وضعیت forwarding هستند به صورت عادی فعالیت می‌کنند، frameها را ارسال و دریافت می‌کنند. اما پورت هایی که در وضعیت blocking قرار دارند به جز پیام های مربوط به پروتکل STP و برخی دیگر از پیام هایی که برای پروتکل ها استفاده می‌شوند، هیچ frame دیگری را پردازش نمی‌کنند. در واقع این پورت ها frameهای کاربران را ارسال نمی‌کنند، مک آدرس frameهای ورودی را ذخیره نمی‌کنند و frameهای دریافتی از کاربران را نیز پردازش نمی‌کنند.

پروتکل STP برای قرار دادن پورت ها در حالت forwarding از سه مرحله استفاده می‌کند:

• پروتکل STP یک سوئیچ را به عنوان root انتخاب می‌کند و تمام پورت های فعال در آن سوئیچ را در وضعیت forwarding قرار می‌دهد.

• در هر کدام از سوئیچ های non-root همه ی سوئیچ ها به جز root  ، پورتی که کمترین هزینه را برای رسیدن به سوئیچ root دارد (root cost)، به عنوان RP (ROOT PORT) انتخاب می‌کند و آن ها را در وضعیت forwarding قرار می‌دهد.

• تعداد زیادی سوئیچ می‌توانند به یک بخش از Ethernet متصل شوند، اما در شبکه های مدرن، معمولا دو سوئیچ به هر لینک (بخش) متصل می‌شوند. در بین سوئیچ هایی که به یک لینک مشترک متصل هستند، پورت سوئیچی که root cost کمتری دارد در وضعیت forwarding قرار می‌گیرد. این سوئیچ ها را designated switch می‌نامند و پورت هایی که در وضعیت forwarding قرار گرفته را designated port (DP)می‌نامند.

باقی پورت ها در وضعیت blocking قرار می‌گیرند.

انتخاب سوئیچ root

STP Bridge ID (BID)یک مقدار 8 بایتی برای شناسایی هر سوئیچ می‌باشد. Bridge ID به دو بخش 2 بایتی که مشخص کننده اولویت و حق تقدم است و 6 بایتی که system ID نامیده می‌شود و همان مک آدرس هر سوئیچ است، تقسیم می‌شود. استفاده از مک آدرس این اطمینان را می‌دهد که bridge ID هر سوئیچ یکتا خواهد بود.

پیام هایی که برای تبادل اطلاعات مربوط به پروتکل STP بین سوئیچ ها استفاده می شود، BPDU یا Bridge Protocol Data Units نام دارد. رایج ترین BPDU ، که Hello BPDU نام دارد، تعدادی از اطلاعات که شامل BID سوئیچ ها نیز می‌شود را لیست و ارسال می‌کند. با استفاده از BID درج شده روی هر پیام، سوئیچ ها می‌توانند تشخیص دهند که هر پیام Hello BPDU از طرف کدام سوئیچ است.

سوئیچ ها با استفاده از BIDهای موجود در پیام های BPDU، سوئیچ root را انتخاب می‌کنند. سوئیچی که عدد BID آن مقدار کمتری را داشته باشد به عنوان سوئیچ root انتخاب می‌شود. با توجه به اینکه بخش اول عدد BID مقدار اولویت می‌باشد، سوئیچی که مقدار اولویت پایین تری داشته باشد به عنوان سوئیچ root انتخاب می‌شود.

انتخاب Root Port برای هر سوئیچ

پس از انتخاب سوئیچ root، در مرحله ی بعدی، پروتکل STP برای سوئیچ های nonroot یک (root port (RP انتخاب می‌کند. RP هر سوئیچ، پورتی است که کمترین هزینه را برای رسیدن به سوئیچ root دارد.


انتخاب Designated Port در هر LAN segment

پس از انتخاب سوئیچ root، در سوئیچ های nonroot، تمام root portها مشخص شدند و در وضعیت forwarding قرار گرفتند. مرحله نهایی پروتکل STP برای تکمیل توپولوژی STP، انتخاب designated port در هر LAN segment است. در هر بخش (segment )از LAN، پورت سوئیچی که کمترین root cost را دارد و به آن بخش از LAN متصل است Designated port (DP) نامیده می شود. زمانی که یک سوئیچ nonroot می خواهد که یک Hello را ارسال کند، هزینه رسیدن به سوئیچ root را در root cost آن پیام قرار می دهد و ارسال می کند. دراینصورت پورت سوئیچی که کمترین هزینه را برای رسیدن به root دارد، در میان تمام سوئیچ هایی که به آن بخش متصل هستند، به عنوان DP در آن بخش شناخته می شود. در این مرحله اگر هزینه سوئیچ ها برای رسیدن به سوئیچ root برابر بود، پورت سوئیچی که BID کمتری دارد را به عنوان DP انتخاب می کنیم.