پروتکل STP چیست؟ کاربرد Spanning Tree در سویچ ها چیست؟ در طراحی شبکه داشتن لینک جایگزین (Redundant) یک ویزگی محسوب می شود که در صورت از کار افتادن لینک اصلی از لینک جایگزین جهت جلوگیری از وقفه در جریان ترافیک استفاده می شود اما Ethernet قابلیت تشخیص لینک جایگزین و غیر فعال کردن ان تا زمان مورد نیاز را ندارد در نتیجه باعث ایجاد یک چرخه می شود و ترافیک Broadcast دائم در این مسیر در حال چرخش است و به مقدار آن اضافه می شود و به اصطلاح باعث ایجاد Loop در شبکه می شود و در نهایت با پر شدن پهنای باند و درگیر شدن تجهیزات ، شبکه از کار می افتد که به آن Broadcast Storm گفته می شود.

مکانیزم کاری STP
Spanning Tree پروتکلی است که با تشخیص مسیر جایگزین یا مسیر دوم آنرا تا زمانی که مورد نیاز نیست مسدود می کند. بنابراین طراح شبکه می تواند دو یا چند مسیر را بین سوئیچ های خود در نظر بگیرد ، یک مسیر را به عنوان مسیری اصلی و باقی مسیرها به عنوان رزرو در نظر گرفته می شود و در صورت قطع شدن مسیر اصلی مسیر رزور به سرعت جایگزین مسیر اصلی شده و ترافیک را منتقل می کند. و به این شکل یک شبکه با قابلیت اطمینان بیشتر خواهیم داشت.
نحوی عملکرد یک سوئیچ در لایه دوم به صورت زیر است
- در هنگام دریافت یک فریم MAC Address فرستنده فریم و شماره پورتی که فریم را روی آن دریافت کرده را در جدول تحت عنوان CAM Table ذخیره می کند.
- فریم های Broadcast و Multicast را روی تمام پورت های خود غیر از پورتی که این فریم را روی آن دریافت کرده ارسال می کند.
- آدرس MAC گیرنده فریم های unicast را در جدول CAM Table چک می کند در صورتی که مورد مشابه پیدا کند فریم را به پورت متناظر ارسال آن ارسال می کند.
- در صورتی که آدرس MAC گیرنده فریم unicast را در جدول CAM Table خود نداشته باشد این فریم را روی تمام پورت های خود غیر از پورتی که فریم را روی ان دریافت کرده ارسال می کند.
- در فریم دریافتی تغییر ایجاد نمی کند.
نکته : مدت زمان نگه داری اطلاعات CAM Table برابر 300 ثانیه (5 دقیقه) می باشد.
نکته: در STP از کلمه Bridge زیاد استفاده می کند که همان سوئیچ می باشد.
نحوی عملکرد STP در سویچ چگونه است؟
STP یک سوئیچ را به عنوان Root Bridge انتخاب می کند ، سپس از باقی سوئیچ ها به سمت سوئیچ ریشه یا همان Root Bridge یک مسیر به عنوان loop-free (یک مسیر بودن ایجاد loop) انتخاب می شود. در نهایت شبکه ما به صورت یک درخت در می اید که Root Bridge به عنوان ریشه این درخت است.
مواردی که باید در STP انتخاب شود
- یک Root Bridge
- یک Root Port برای هر یک از سوئیچ ها غیر از سوئیچ Root Bridge
- انتخاب پورت Designated در هر بخش از شبکه
معیار های انتخاب در Spanning Tree Election Criteria
برای انتخاب مواردی که در بخش قبل عنوان شد از ایتم های زیر استفاده می کنیم:
- Lowest Root Bridge ID (BID) : Bridge ID متشکل از Priority+Bridge MAC Address
نکته : Priority یک متغییر 2 بایتی است که بین 0 تا 65535 می تواند مقدار دهی شود و مقدار پیش فرض ان 32768 می باشد.
نکته : Bridge MAC Address همان MAC ادرس سوئیچ است.
- Lowest Path Cost : مجموع هزینه های مسیر تا Root Bridge
- Lowest Sender Bridge ID : Bridge ID سوئیچ همسایه ما ، که از طریق ان به Root Bridge می رسیم
- Lowest Sender Port ID : متشکل از Port priority + Port Number
نکته: Port Priority متغییر 8 بیتی است که بین 0 تا 255 مقدار دهی می شود و مقدار پیش فرض ان 128 است.
نکته : Port Number همان شماره پورت است.
انتخابات STP Election
این انتخابات را براساس شکل زیر انجام می دهیم که بهتر بتوانیم مفهوم را توضیح دهیم.

انتخاب Root Bridge
همینطور که قبلا گفته شد اولین مرحله از انتخابات در STP انتخاب Root Bridge است. سوئیچی که دارای کمترین Bridge ID باشد به عنوان Root Bridge انتخاب می شود. که در شکل بالا با فرض اینکه مقدار Priority همه سوئیچ ها مقدار پیش فرض 32768 است ، سوئیچ A دارای کمترین مقدار Bridge ID است در نتیجه به عنوان Root Bridge انتخاب می شود.نکته : قبل از اضافه کردن سوئیچ جدید به شبکه مقدار Bridge ID ان را چک کنید.
انتخاب Root Port
Root Port پورتی است که از طریق آن با کمترین Cost به Root Bridge می رسیم.با توجه به شکل قبل که سوئیچ A به عنوان Root Bridge انتخاب شد ، باقی سوئیچ ها باید مسیری که دارای کمترین Cost برای رسیدن به Root Bridge را پیدا کنند و پورت مورد نظر را به عنوان Root Port انتخاب کنند. نحوی محاسبه Cost یا هزینه براساس جدول زیر بدست می آید.

با توجه به شکل قبل :
- سوئیچ B : پورت متصل به سوئیچ A با هزینه 19 به عنوان Root Port انتخاب می شود(سرعت لینک 100 Mbps)
- سوئیچ C : پورت متصل به سوئیچ A از نوع Ethernet با هزینه 100 می باشد و از طریق سوئیچ B با هزینه 23 به Root Bridge می رسد در نتیجه پورت متصل به سوئیچ B به عنوان Root Port انتخاب می شود.
- سوئیچ D : از طریق سوئیچ B با هزینه 119 و از طریق سوئیچ C با هزینه 119 و از طریق سوئیچ C به B به A با هزینه 42 به Root Bridge می رسد در نتیجه مسیر C به B به A انتخاب می شود.
- سوئیچ E : هزینه هر دو لینک یکسان است (D به C به B به A با هزینه 61) برای انتخاب پورت ایتم بعدی چک می شود که Sender BID است که باز هم هر دو لینک به سوئیچ D متصل است در نتیجه مقدار Sender BID یکسان دارد ، سپس Sender Port ID چک می شود با فرض این مقدار Port Priority تغییر نکرده و همان مقدار پیش فرض است ، در اینجا مقدار Port ID یکی 01 و دیگری 02 است که مقدار 0/1 کمتر است و به عنوان Root Port انتخاب می شود.
انتخاب Designated Port
Designated Port پورتی است که می تواند یک سوئیچ دیگر را با کمترین هزینه به Root Bridge برساند.
نکته: تمام پورت های Root Bridge در حالت Designated قرار دارند.
نکته : همیشه پورت مقابل Root Port در حالت Designated قرار دارد.
- لینک متصل بین B و D : سوئیچ B دارای Cost کمتری تا Root Bridge نسبت به D (هزینه 19 در برابر 119) است در نتیجه پورت سوئیچ B به عنوان Designated انتخاب می شود.
- لینک متصل بین C و D : سوئیچ C دارای Cost کمتری تا Root Bridge نسبت به D (هزینه 100 در برابر 119) است در نتیجه پورت سوئیچ C به عنوان Designated انتخاب می شود.
- لینک متصل بین B و C : سوئیچ B دارای Cost کمتری تا Root Bridge نسبت به C (هزینه 19 در برابر 100) است در نتیجه پورت سوئیچ B به عنوان Designated انتخاب می شود.
- لینکهای متصل بین D و E : سوئیچ D دارای Cost کمتری تا Root Bridge نسبت به E (هزینه 42 در برابر 61) برای هر دو لینک است در نتیجه پورت های سوئیچ D به عنوان Designated انتخاب می شود.
نکته : باقی پورت در حالت Block قرار می گیرند.
بعد از این انتخابات درخت تشکیل شده و سوئیچ A به عنوان ریشه آن است و دیگر مشکلی بابت loop در این شبکه نخواهیم داشت و شبکه ما به شکل زیر تبدیل خواهد شد.

Bridge Protocol Data Units | BPDU چیست؟
پروتکل STP برای عملکرد خود و اگاهی از وضعیت شبکه بسته هایی با نام BPDU بین سوئیچ ها رد و بدل می کند.دو نوع BPDU داریم:
1. Configuration : هر دو ثانیه یکبار از سمت Root Bridge به سمت پایین ارسال می شود و برای موارد ذیل مورد استفاده قرار می گیرد:
- در زمان انتخابات
- حفظ و نگه داری ارتباطات بین سوئیچ ها
- نکته : BPDU Configuration در زمان ارسال با Cost صفر ایجاد می شود و پس از عبور از سوئیچ به مقدار سرعت پورت به آن اضافه خواهد شد.
- نکته : در صورتی که به مدت 20 ثانیه سوئیچ ها BPDU دریافت نکنند به منزله قطع شدن Root Bridge خواهد بود و مراحل انتخابات مجدد انجام خواهد شد.
2. TCN – Topology Change Notification: توسط سوئیچ های پایین دست تولید و به سمت Root Bridge ارسال می شوند و برای موارد ذیل مورد استفاده قرار می گیرند:
- زمان که در توپولوژی شبکه تغییر ایجاد شود مثلا یک پورت خاموش یا روشن شود.
- زمانی که یک فریم TCN از همسایه خود دریافت کند.
نکته : در صورت استفاده از دستور Portfast ، آن پورت دیگر فریم TCN تولید نخواهد کرد.
نکته : اگر سوئیج یک TCN از همسایه خود دریافت کند در پیام Acnowledgment به عنوان تائید دریافت TCN به همسایه خود ارسال می کند و سپس یک TCN به سمت Root Bridge ارسال می کند و اینکار تا زمانی که TCN به دست Root Bridge برسد ادامه خواهد یافت.
نکته : TCN فقط اعلام می کند که در شبکه تغییر رخ داده و از چزئیات آن چیزی اعلام نمی کند
محتویات یک فریم Configuration BPDU به صورت زیر است:

نکته : محتویات فریم TCN BPDU سه مورد اول Configuration BPDU است.
وضعیت های مختلف پورت در STP
زمانی که یک پورت فعال می شود مراحل زیر را طی می کند:
- Disable : در این حالت پورت خاموش است.
- Blocking : اولین حالت پس از فعال شدن پورت است و هیچ فریم را ارسال یا دریافت نمی کند و همچنین هیچ MAC Address را به CAM Table خود اضافه نمی کند و تنها قادر به دریافت BPDU است.
- Listening : در این حالت هم هیچ فریم را ارسال یا دریافت نمی کند و همچنین هیچ MAC Address را به CAM Table خود اضافه نمی کند ولی قادر به ارسال و دریافت BPDU خواهد بود و در این مرحله می تواند خود را به عنوان Root Port یا Designated Port معرفی کند ، اگر نتواند Root Port یا Designated Port شود به حالت قبل یعنی Blocking باز خواهد گشت.
- Learning : باز هم در این حالت هم هیچ فریم را ارسال یا دریافت نمی کند ولی MAC Addressها را به CAM Table خود اضافه می کند و قادر به ارسال و دریافت BPDU است.
- Forwarding : در این حالت قادر به ارسال و دریافت فریم است و CAM Table خود را با MAC Address ها بروز می کند و قادر به ارسال و دریافت BPDU است.
مراحل ذکر شده در جدول زیر نمایش داده شده است:
