(STP (Spanning Tree Protocol یک پروتکل لایه دو است که بر روی سوئیچ های شبکه اجرا میشود. این پروتکل توسط موسسه IEEE استاندارد شده و با نام IEEE 802.1d نامگذاری گردیده است. این پروتکل مسیرهای اضافی را که معمولا جهت ایجاد تحمل خطا در بین سوئیچ های شبکه وجود دارد را شناسایی و برای جلوگیری از Loop این مسیرها را مسدود میکند.
لزوم استفاده از STP
بیاید وضعیتی را در نظر بگیریم که در شبکه برای جلوگیری از Loop مکانیزیمی نداشته باشیم. دو سوئیچ را در نظر بگیرید که به صورت redundant به هم متصل هستند. یک سوئیچ به PC A متصل است و سوئیچ دیگر به PC B متصل است. حال اگر PC A بخواهد به PC B پیامی بفرستد باید یک بسته ARP به صورت Broadcast برای یافتن مکان PC B ارسال کند. زمانی که سوئیچ A فریم Broadcast را دریافت کرد، آن را به تمام پورتهای خود به غیر از پورتی که فریم را دریافت کرده ارسال میکند.
فرض کنید SW B فریم Broadcast را از fa0/0 دریافت کند آنرا به fa0/5 و fa0/1 ارسال خواهد کرد.
فریم Broadcast دیگری نیز از سمت SW A از طریق fa0/1 میآید، در نتیجه SW B آنرا از fa0/0 و fa0/5 به بیرون ارسال میکند.
همان طور که ملاحظه میکنید SW A از طریق fa0/0 و fa0/1 فریم Broadcast خود را به سمت SW B ارسال میکند. SW B هم هر دو فریم را دریافت میکند و به ازای هر کدام دو کپی ایجاد میکند و آنها را به SW A باز میگرداند. زمانی که SW A فریمهای Broadcast را دریافت میکند دوباره آنها را از پورتهای خود ارسال میکند و این عملیات تا زمانی که شما شبکه را خاموش نکنید ادامه خواهد داشت. این پدیده را Broadcast Storm مینامند. Broadcast Storm تمام پهنای باند شبکه را مصرف میکند و عبور ترافیک نرمال شبکه را مسدود میکند. Broadcast Storm یک مشکل جدی در شبکه است و میتواند در چند ثانیه کل شبکه را مختل کند.
علاوه بر Broadcast Storm مشکلات دیگری هم میتواند به وجود آید مانند Multiple frame transmission یا MAC Database Instability. حال شما با مشکلاتی که ممکن است در شبکه به خاطر نبود مکانیزم های جلوگیری از Loop به وجود آید آشنا شدید. تمام این مشکلات میتواند توسط STP حل شود. STP برای جلوگیری از Loop، یکی از پورتهای سوئیچ را بلوکه میکند. برای مثال fa0/0 در SW A بلوکه شده و ترافیکی از آن در شبکه ارسال نمیشود. بنابراین Loop در شبکه ایجاد نمیشود.
اما این که STP چگونه تصمیم میگیرد که کدام پورتها را بلوکه کند، بسیار پیچیدهتر از مثالی است که در بالا نشان داده شد.
STP از Loopهای لایه دو در شبکه جلوگیری میکند. به این منظور STP باید شناخت صحیحی از کل توپولوژی و اتصالات لایه دو داشته باشد. این اطلاعات توسط پیامهایی به نام BPDU (Bridge Protocol Data Unit) توسط سوئیچها ارسال و دریافت میشود.
پروتکل STP در صورت ایجاد Loop پورتهای که در ایجاد Loop دخالت دارند را بلوکه میکند و فقط بهترین مسیر لایه دو را بین دستگاههای باز میگذارد و تضمین میکند که در لایه دو هیچ Loopای ایجاد نخواهد شد. در صورتی که در شبکه تغییری داشته باشیم مانند فعال شدن یا غیر فعال شدن یک پورت یا از کار افتادن یک لینک پروتکل STP دوباره بر اساس شرایط جدید تصمیم گیری خواهد کرد و وضعیت پورتهای دستگاهها را مشخص خواهد نمود.
در این آموزش ما ابتدا برای آشنایی با STP نحوهی عملکرد STP را با جزئیات کامل بررسی خواهیم کرد سپس با یک مثال ساده عملکرد آن را نمایش خواهیم داد و سرانجام تنظیمات کلی STP را در سوئیچهای سیسکو Small Business نشان خواهیم داد.
آشنایی با نحوهی عملکرد STP
به صورت خلاصه میتوان گفت کهSTP یک سوئیچ را به عنوان Root Bridge انتخاب میکند، سپس از باقی سوئیچها به سمت سوئیچ ریشه یا همان Root Bridge یک مسیر به عنوان loop-free (یک مسیر بودن ایجاد loop ) انتخاب میشود. در نهایت شبکه ما به صورت یک درخت درمیآید که Root Bridge به عنوان ریشه این درخت است.
در STP باید موارد زیر انتخاب شوند:
۱. سوئیچ ریشه یا Root Bridge
۲. یک Root Port برای هر یک از سوئیچهای داخل شبکه به غیر از سوئیچ ریشه
۳. انتخاب پورتهای Designated
۱ـ انتخاب Root Bridge
اولین مرحله از انتخابات در STP انتخاب Root Bridge است. سوئیچی که دارای کمترین Bridge ID باشد به عنوان Root Bridge انتخاب میشود.
Bridge ID: متشکل از Priority + Bridge MAC Address است. Priority یک متغیر ۲ بایتی است که بین ۰ تا ۶۵۵۳۵ می تواند مقداردهی شود و مقدار پیش فرض آن ۳۲۷۶۸ است. Bridge MAC Address هم همان آدرس MAC سوئیچ است.
۲ـ انتخاب Root Port
Root Port پورتی است که از طریق آن با کمترین Cost به Root Bridge میرسیم. مقدار Cost بر اساس جداول زیر بدست میآید.
۳ـ انتخاب Designated Port
Designated Port پورتی است که میتواند یک سوئیچ دیگر را با کمترین هزینه به Root Bridge برساند. تمام پورت های Root Bridge در حالت Designated قرار دارند. همچنین همیشه پورت مقابل Root Port در حالت Designated قرار دارد.
مثالی از نحوهی عملکرد STP
۱ـ انتخاب یک سوئیچ به عنوان Root Bridge
زمانی که سوئیچها روشن میشوند، هر سوئیچ خود را Root Bridge مینامد و شروع به ارسال فریمهای (Multicast (BPDUs میکند.
بسته BPDU دارای فیلدهای اطلاعاتی زیادی است اما ۴ فیلد از اهمیت خاصی برخوردار هستند که باعث میشوند STP به درستی کار کند. Bridge ID یکی از این فیلدها است. کمترین Bridge ID به عنوان Root Bridge انتخاب میشود. همانطور که قبلا گفتیم Bridge ID متشکل از Priority + Bridge MAC Address است. برای مقایسه Bridge ID ابتدا مقدار Priority بررسی میشود. اگر این مقدار یکسان بود سپس MAC آدرس برای مقایسه در نظر گرفته میشود.
در مثال بالا مقدار Priority برای هر دو سوئیچ یکسان (۳۲۷۶۸) است پس MAC آدرسها بررسی میشوند و چون MAC آدرس SW B کوچکتر است به عنوان Root Bridge انتخاب میشود.
مدیر شبکه میتواند با تغییر مقدار Priorityسوئیچ Root Bridge تغییر دهد. برای مثال با تغییر دادن مقدار Priority در سوئیچ SW A به مقدار ۲۸۷۶۲ که مقدار کمتری از ۳۲۷۶۸ است، سوئیچ A به عنوان Root Bridge انتخاب میشود.
۲ـ انتخاب Root Port
Root Port پورتی است که از طریق آن با کمترین Cost به Root Bridge میرسیم. فرض کنید در مثال بالا لینک بالایی ۱۰Mbps است و لینک پایین ۱۰۰Mbps است. با توجه به جدول Costها در سوئیچA پورت fa0/1 به عنوانRoot Port انتخاب میشود؛ چونCost آن ۱۹ است اما مقدار Cost در پورت fa0/0 مقدار ۱۰۰ است. بنابراین پورتی که کمترین Cost را دارد انتخاب میشود.
۳ـ انتخاب یک پورت designated در هر segment از شبکه
STP در هر segment یک پورت designated برای ارسال ترافیک استفاده میکند. باقی پورتهای سوئیچ در سگمنت nondesignated شده و در نتیجه بلوکه میشوند. در سوئیچ A پورت fa0/0 به عنوان nondesignated پورت انتخاب میشود و وضعیت آن به Blocking تغییر مییابد. در وضعیت Blocking اگرچه سوئیچ نمیتواند ترافیک شبکه ارسال کند اما هنوز بستههای BPDU را دریافت میکند.
حالا شبکه به وضعیت همگرایی (convergence) رسیده است. در این وضعیت تمام پورتها در سوئیچها به حالت Forwarding یا Blocking رسیدهاند. شبکه تا زمانی که به وضعیت همگرایی نرسیده است ترافیکی را از خود عبور نمیدهد. بنابراین مدت زمان رسیدن به همگرایی وقتی که توپولوژی شبکه تغییر میکند بسیار مهم است.
وضعیت پورتهای سوئیچ در STP
زمانی که STP فعال میشود. هر پورت در یکی از وضعیتهایی که در جدول زیر آمده است قرار میگیرد:
وضعیت پورت | کاری که پورت میتواند انجام دهد | کاری که پورت نمیتواند انجام دهد | مدت زمانی که پورت در این وضعیت است |
Disabled | هیچ کاری انجام نمیدهد | ارسال و دریافت اطلاعات | بینهایت |
Blocking | دریافت بستههای BPDUs | ارسال و دریافت داده یا یادگیری آدرسهای MAC | تا بینهایت طول میکشد اگر Loop تشخیص داده شود |
Listening | ارسال و دریافت بستههای BPDUs | ارسال و دریافت داده یا یادگیری آدرسهای MAC | ۱۵ ثانیه |
Learning | ارسال و دریافت بستههای BPDUs و یادگیری آدرسهای MAC | ارسال و دریافت داده | ۱۵ ثانیه |
Forwarding | ارسال و دریافت بستههای BPDUs و یادگیری آدرسهای MAC و ارسال و دریافت داده | تا بینهایت طول خواهد کشید تا زمانی که پورت روشن است و Loopای تشخیص داده نشده است |
نسخههای پروتکل STP
- Classic STP: یک مسیر یکتا را بین هر دو سوئیچ فراهم میکند و از ایجاد Loop جلوگیری میکند
- Rapid STP(RSTP): در RSTP درخت پوشا (Spanning Tree) سریعتر همگرا میشود. RSTP زمانی که توپولوژی شبکه ذاتا دارای ساختار درختی است بسیار موثر است. بنابراین همگرایی سریعتری را ممکن میسازد.
- Multiple STP (MSTP): MSTP بر اساس RSTP است و از حلقههای لایه دو جلوگیری میکند. وضعیتی را را در نظر بگیرید که یک Loop در VLAN A وجود دارد و اما در VLAN B حلقهای وجود ندارد. اگر هر دو VLAN بر روی Port X باشند و STP قصد دارد از Loop جلوگیری کند بنابراین ترافیک تمام پورت را متوقف میکند در نتیجه ترافیک VLAN B هم قطع میشود. MSTP این مشکل را با ایجاد چند Instance از STP حل میکند (به ازای هر VLAN یک Instance داریم). در نتیجه در هر Instance حلقهها به صورت جداگانه تشخیص داده میشوند. بنابراین ترافیک VLAN A قطع میشود اما ترافیک VLAN B فعال خواهد ماند.
تنظیمات کلی STP در سوئیچهای سیسکو Small Business
برای انجام تنظیمات کلی STP پس از وارد شدن به رابط کاربری وب دستگاه بر روی Spanning Tree > STP Status & Global Settings کلیک میکنیم.
در قسمت Global Settings میتوانیم پارامترهای زیر را تنظیم کنیم:
- Spanning Tree State: فعال یا غیرفعال کردن STP بر روی دستگاه
- STP Operation Mode: انتخاب یکی از نسخههای STP (RSTP در سوئیچهای Small Business به صورت پیشفرض فعال است)
- BPDU Handling: چگونگی مدیریت بستههای BPDU زمانی که STP در دستگاه غیرفعال شده است
- Path Cost Default Values: نحوهی اختصاص Cost به پورتها
در قسمت Bridge Settings پارامترهای زیر را میتوانیم تنظیم کنیم:
- Priority: تنظیم مقدار اولویت در دستگاه (مقدار پیشفرض ۳۲۷۶۸ است)
- Hello Time: بازه زمانی (بر اساس ثانیه) که Root Bridge بین پیامهای تنظیمات منتظر میماند.
- Max Age: بازه زمانی (بر اساس ثانیه) که دستگاه میتواند بدون دریافت پیام تنظیمات منتظر بماند قبل از اینکه تنظیمات خود را دوباره تعیین کند. مقدار پیشفرض آن ۲۰ ثانیه است.
- Forward Delay: بازه زمانی بر اساس ثانیه که سوئیچ در وضعیت Learning میماند.
در قسمت Designated Root اطلاعات زیر را داریم:
- Bridge ID: مقدار Bridge ID دستگاه
- Root Bridge ID: مقدار Bridge ID سوئیچ ریشه (Root Bridge)
- Root Port: پورتی که کمترین Cost را پیشنهاد میدهد تا به Root Bridge برسیم
- Root Path Cost: مقدار Cost مسیر سوئیچ تا ریشه را نشان میدهد
- Topology Changes Counts: تعداد کل تغییراتی که در توپولوژی STP رخ داده است را نشان میدهد
- Last Topology Change: زمان آخرین تغییر در STP را نشان میدهد
همانطور که در شکل ملاحظه میکنید مقدار Bridge ID و Root Bridge ID در این سوئیچ برابر است، یعنی این دستگاه Root Bridge است؛ در نتیجه مقدارهای Root Port و Root Path Cost صفر هستند.
در آموزشهای بعدی انواع مختلف این پروتکل و تنظیمات پیشرفتهتر را بررسی خواهیم کرد.