پروتکل STP چیست؟ کاربرد Spanning Tree در سویچ ها چیست؟ در طراحی شبکه داشتن لینک جایگزین (Redundant) یک ویزگی محسوب می شود که در صورت از کار افتادن لینک اصلی از لینک جایگزین جهت جلوگیری از وقفه در جریان ترافیک استفاده می شود اما Ethernet قابلیت تشخیص لینک جایگزین و غیر فعال کردن ان تا زمان مورد نیاز را ندارد در نتیجه باعث ایجاد یک چرخه می شود و ترافیک Broadcast دائم در این مسیر در حال چرخش است و به مقدار آن اضافه می شود و به اصطلاح باعث ایجاد Loop در شبکه می شود و در نهایت با پر شدن پهنای باند و درگیر شدن تجهیزات ، شبکه از کار می افتد که به آن Broadcast Storm گفته می شود.
Spanning Tree پروتکلی است که با تشخیص مسیر جایگزین یا مسیر دوم آنرا تا زمانی که مورد نیاز نیست مسدود می کند. بنابراین طراح شبکه می تواند دو یا چند مسیر را بین سوئیچ های خود در نظر بگیرد ، یک مسیر را به عنوان مسیری اصلی و باقی مسیرها به عنوان رزرو در نظر گرفته می شود و در صورت قطع شدن مسیر اصلی مسیر رزور به سرعت جایگزین مسیر اصلی شده و ترافیک را منتقل می کند. و به این شکل یک شبکه با قابلیت اطمینان بیشتر خواهیم داشت.
نکته : مدت زمان نگه داری اطلاعات CAM Table برابر 300 ثانیه (5 دقیقه) می باشد.
نکته: در STP از کلمه Bridge زیاد استفاده می کند که همان سوئیچ می باشد.
STP یک سوئیچ را به عنوان Root Bridge انتخاب می کند ، سپس از باقی سوئیچ ها به سمت سوئیچ ریشه یا همان Root Bridge یک مسیر به عنوان loop-free (یک مسیر بودن ایجاد loop) انتخاب می شود. در نهایت شبکه ما به صورت یک درخت در می اید که Root Bridge به عنوان ریشه این درخت است.
اگر در یادگیری سیسکو مشکل دارید ، به شما پیشنهاد می کنیم از طریق دوره های آموزش سیسکو حرفه ای سایت توسینسو و با دوره آموزش CCNA روتینگ و سویچینگ شروع کنید ، فراموش نکنید که پیشنیاز همه این دوره های آموزش شبکه ، دوره آموزش نتورک پلاس است ، فراموش نکنید توسینسو اولین و بهترین انتخاب شما در حوزه آموزش فناوری اطلاعات فارسی است.
برای انتخاب مواردی که در بخش قبل عنوان شد از ایتم های زیر استفاده می کنیم:
نکته : Priority یک متغییر 2 بایتی است که بین 0 تا 65535 می تواند مقدار دهی شود و مقدار پیش فرض ان 32768 می باشد.
نکته : Bridge MAC Address همان MAC ادرس سوئیچ است.
نکته: Port Priority متغییر 8 بیتی است که بین 0 تا 255 مقدار دهی می شود و مقدار پیش فرض ان 128 است.
نکته : Port Number همان شماره پورت است.
این انتخابات را براساس شکل زیر انجام می دهیم که بهتر بتوانیم مفهوم را توضیح دهیم.
همینطور که قبلا گفته شد اولین مرحله از انتخابات در STP انتخاب Root Bridge است. سوئیچی که دارای کمترین Bridge ID باشد به عنوان Root Bridge انتخاب می شود. که در شکل بالا با فرض اینکه مقدار Priority همه سوئیچ ها مقدار پیش فرض 32768 است ، سوئیچ A دارای کمترین مقدار Bridge ID است در نتیجه به عنوان Root Bridge انتخاب می شود.نکته : قبل از اضافه کردن سوئیچ جدید به شبکه مقدار Bridge ID ان را چک کنید.
Root Port پورتی است که از طریق آن با کمترین Cost به Root Bridge می رسیم.با توجه به شکل قبل که سوئیچ A به عنوان Root Bridge انتخاب شد ، باقی سوئیچ ها باید مسیری که دارای کمترین Cost برای رسیدن به Root Bridge را پیدا کنند و پورت مورد نظر را به عنوان Root Port انتخاب کنند. نحوی محاسبه Cost یا هزینه براساس جدول زیر بدست می آید.
با توجه به شکل قبل :
Designated Port پورتی است که می تواند یک سوئیچ دیگر را با کمترین هزینه به Root Bridge برساند.
نکته: تمام پورت های Root Bridge در حالت Designated قرار دارند.
نکته : همیشه پورت مقابل Root Port در حالت Designated قرار دارد.
نکته : باقی پورت در حالت Block قرار می گیرند.
بعد از این انتخابات درخت تشکیل شده و سوئیچ A به عنوان ریشه آن است و دیگر مشکلی بابت loop در این شبکه نخواهیم داشت و شبکه ما به شکل زیر تبدیل خواهد شد.
پروتکل STP برای عملکرد خود و اگاهی از وضعیت شبکه بسته هایی با نام BPDU بین سوئیچ ها رد و بدل می کند.دو نوع BPDU داریم:
1. Configuration : هر دو ثانیه یکبار از سمت Root Bridge به سمت پایین ارسال می شود و برای موارد ذیل مورد استفاده قرار می گیرد:
2. TCN - Topology Change Notification: توسط سوئیچ های پایین دست تولید و به سمت Root Bridge ارسال می شوند و برای موارد ذیل مورد استفاده قرار می گیرند:
نکته : در صورت استفاده از دستور Portfast ، آن پورت دیگر فریم TCN تولید نخواهد کرد.
نکته : اگر سوئیج یک TCN از همسایه خود دریافت کند در پیام Acnowledgment به عنوان تائید دریافت TCN به همسایه خود ارسال می کند و سپس یک TCN به سمت Root Bridge ارسال می کند و اینکار تا زمانی که TCN به دست Root Bridge برسد ادامه خواهد یافت.
نکته : TCN فقط اعلام می کند که در شبکه تغییر رخ داده و از چزئیات آن چیزی اعلام نمی کند
محتویات یک فریم Configuration BPDU به صورت زیر است:
نکته : محتویات فریم TCN BPDU سه مورد اول Configuration BPDU است.
زمانی که یک پورت فعال می شود مراحل زیر را طی می کند:
مراحل ذکر شده در جدول زیر نمایش داده شده است:
انشاالله اگر عمری باقی بود توی آموزش های بعدی انواع مختلف این پروتکل و نحوی استفاده از اونو براتون شرح می دم.
در آموزش قبلی با پروتکل Spanning Tree آشنا شدیم و دیدیم که در سوئیچ های سیسکو به چه صورت انتخاب Root Bridge و Root Port و Designated Port انجام می شود و چگونه این پروتکل لینک های Redundant را شناسایی و انها را مسدود می کند. در اینجا می خواهیم انواع مختلف این پروتکل را بررسی کنیم.
Commen Spanning Tree یا CST : استاندارد عمومی (IEEE 802.1D) می باشد و تمام CST BPDU ها را روی لینک Trunk و با استفاده از Native VLAN (ارسال بودن تگ( ارسال می کند.
سیسکو یک نسخه اختصاصی را پیشنهاد می دهد که دارای انعطاف پذیری بیشتری نسبت به CTS است. در CST برای کل شبکه یک درخت داریم و برای کل شبکه بدون در نظر گرفتن VLANها انتخاب انجام می شود. اما در PVST ما برای هر VLAN یک STP اجرا می شود و برای هر VLAN یک درخت ایجاد می شود و انتخابات را برای هر VLAN به صورت جداگانه انجام می گیرد و به این شکل جریان ترافیک بهبود می یابد. یعنی یک سوئیچ در یک VLAN به عنوان Root Bridge نقش ایفا می کند و همان سوئیچ می تواند نقش یک سوئیچ معمولی را برای یک VLAN دیگر ایفا کند.
دومین نسخه اختصاصی سیسکو می باشد که عملکرد ان دقیقا مشابه PVST است با این تفاوت که می تواند روی هر دو نوع لینک ترانک (ISL و 802.1Q) عمل کند و در نتیجه امکان اجرای CST و PVST در کنار یکدیگر فراهم می شود. و می توان گفت که PVST+ بین گروهی از سوئیچ ها که CST را اجرا کرده اند و گروهی از سوئیچ ها که PVST را اجرا کرده اند به عنوان مترجم نقش ایفا می کند.
جهت تغییر مقدار Priority از دستور زیر استفاده می کنیم:
Switch(config)#spanning-tree vlan 1 priority 4096
برای تعیین یک سوئیچ به عنوان Root Bridge بدون تغییر مقدار Priority از دستور زیر استفاده می کنیم:
Switch(config)#spanning-tree vlan 1 Root { primary | secondary}
برای تغییر Cost یک پورت از دستور زیر استفاده می کنیم:
Switch(config-if)#spanning-tree cost 4
برای تغییر Cost یک پورت برای یک VLAN از دستور زیر استفاده می کنیم:
Switch(config)#spanning-tree vlan 1 cost 4
برای دیدن اطلاعات STP از دستور زیر استفاده می کنیم:
Switch#show Spanning-tree
برای دیدن اطلاعات STP مربوط به یک VLAN از دستور زیر استفاده می کنیم:
Switch#show Spanning-tree vlan 1
برای دیدن اطلاعات STP مربوط به یک Interface از دستور زیر استفاده می کنیم:
Switch#show Spanning-tree interface fastethernet 0/1
برای دیدن اطلاعات STP مربوط Timer از دستور زیر استفاده می کنیم:
Switch#show Spanning-tree bridge brief
در بخش های قبلی پروتکل STP و نحوی عملکرد ان و برخی از انواع این پروتکل را توضیح دادیم در این بخش می خواهیم انواع دیگر این پروتکل را توضیح دهیم پس با ما همراه باشید.
ویژگی اختصاصی سیسکو برای بهبود سرعت تبادل اطلاعات در STP می باشد که باعث می شود پورت بودن گذشتن از وضعیت های مختلف به طور مستقیم در حالت Forwarding قرار گیرد و برای پورت هایی که مستقیم به End Device ها متصل هستند استفاده می شود.برای فعال کردن این ویژگی از دستور زیر استفاده می کنیم:
Switch(Config-if)#spanning-tree portfast
ویژگی که سرعت تبادل اطلاعات STP را در زمانی که ارتباط مستقیم یک سوئیچ با سوئیچ بالادست قطع می شود را افزایش می دهد. در این حالت سوئیچ پورت Backup را برای Root Port تشخیص می دهد و زمانی که Root Port قطع شود پورت Backup بدون قرار گرفتن در وضعیت Learning و Listening جایگزین Root Port می شود.برای فعال کردن این ویژگی از دستور زیر استفاده می کنیم:
Switch(config)#spanning-tree uplinkfast
ویژگی که سرعت تبادل اطلاعات STP را در زمانی که ارتباط سوئیچ به سمت Root Bridge در جایی که مستقیم به سوئیچ وصل نیست قطع شود را افزایش می دهد.برای فعال کردن این ویژگی از دستور زیر استفاده می کنیم:
Switch(config)#spanning-tree backbonefast
مدت زمان تعیین وضعیت پورت در CST بین 30 تا 50 ثانیه بود و در صورت تغییر در شبکه این مدت زمان مجدد صرف تشکیل درخت بدون Loop صرف می شود که این مدت زمان زیادی است و هیچ ترافیکی در این بازه انتقال داده نمی شود در نتیجه برای اینکه این مدت زمان کاهش یابد و عملکرد STP بهبود بخشیده شود پروتکل عمومی (Rapid STP (802.1W ارائه شد.
مهمترین تفاوت RSTP با CST در وضعیت پورت ها می باشد.
در جدول زیر وضعیت RSTP با CST مقایسه شده است:
در CST تنها Root Bridge اقدام به ارسال BRDU می کرد ولی در RSTP تمام سوئیچ BPDU ارسال می کنند.
با استفاده از دستور زیر می توان Rapid STP را روی سوئیچ فعال کرد:
Switch(config)# spanning-tree mode rapid-pvst
برای بررسی Rapid STP از دستور زیر استفاده می کنیم:
Switch# show spanning-tree
در Per-VLAN RSTP برای هر VLAN یک RSTP اجرا می شود و برای هر VLAN یک درخت ایجاد می شود و انتخابات را برای هر VLAN به صورت جداگانه انجام می گیرد و به این شکل جریان ترافیک بهبود می یابد.
زمانی تعداد VLAN خیلی زیاد باشند و ما از PVST یا Per-VLAN RSTP استفاده کرده باشیم برای هر VLAN نیاز به محاسبه جداگانه دارد که باعث مصرف زیاد CPU و RAM می شود.برای برطرف کردن این مشکل ما از MST استفاده می کنیم به این صورت که VLAN های که قرار است Root Bridge یکسانی داشته باشند را در یک instance قرار می دهیمبه طور مثال vlanهای 11 تا 20 را در instance 1 و 21 تا 30 را در instance 2 قرار می دهیم:
Switch(config)#spanning-tree mst configuration Switch(config-mst)#name itpro Switch(config-mst)#revision 1 Switch(config-mst)#instance 2 vlan 11-20 Switch(config-mst)#instance 3 vlan 21-30
Switch#show spanning-tree mst configuration
BPDU Guard چیست؟ در قسمت قبلی ا در سایت قرار داده ایم با پروتکل Spanning Tree آشنا شدیم و دیدم که چگونه این پروتکل از به وجود آمدن loop در شبکه جلوگیری می کند. این پروتکل برای عملکرد خود از بسته های تحت عنوان BPDU استفاده می کند تا بتواند یک شبکه بدون loop ایجاد کند و یک ساختار درختی برای شبکه ما ایجاد می کند. برای محافظت از این ساختار و درختی که بوجود آمده است باید مکانیزم های امنیتی را برای آن در نظر بگیریم که یکی از آنها BPDU Guard است.
زمانی که BPDU Guard را فعال می کنیم اگر روی پورت سوئیچ BPDU دریافت شود ارسال روی این پورت متوقف می شود و پورت غیرفعال می شود. کاربرهای نهایی که به پورت های سوئیچ متصل هستند نباید روی این پورت BPDU ارسال کنند. این تنظیمات باید روی پورت های access که به دستگاه های نهایی متصل هستند اعمال شود و از اتصال سوئیچ غیر مجاز به شبکه جلوگیری می کند. با اینکار می توان جلوی تغییر در توپولوژی STP را گرفت. مثال زیر نحوی اعمال BPDU Guard را نمایش می دهد.
SW(config)#interface fastethernet 0/2 SW(config-if)#spanning-tree bpduguard enable
برای اینکه یک پورت که به این خاطر ، در حالت err-disabled قرار گرفته است مجدد up می شود دستور shutdown را در اینترفیس مربوطه وارد کنید سپس دستور no shutdown را بزنید.همچنین شما می توانید با تنظیم سوئیچ به صورت خودکار اینترفیس را از حالت err-disabled خارج کنید به این صورت که بعد از گذشت یه زمان مشخص در صورتی که دیگر BPDU دریافت نشود اینترفیس به صورت خودکار up خواهد شد. در مثال زیر نحوی فعال سازی این ویژگی نمایش داده شده است.
SW(config)#errdisable recovery cause bpduguard SW(config)#errdisable recovery interval 30
از دستورات زیر برای بررسی وضعیت های موجود می توانید استفاده کنید :
SW#show interface fastethernet 0/2 status SW#show errdisable recovery
Root Gurad چیست؟ مکانیزم دیگری که برای حفاظت از پروتکل Spanning tree وجود دارد Root Guard است که در آن از تغییر Root switch جلوگیری می شود.ممکن است که سوئیچ شما به سوئیچ های دیگری متصل باشد و شما آنها را تنظیم نکرده باشید. اگر بخواهید این سوئیچ از طریق این پورت ها root switch جدیدی را شناسایی نکند می توانید از Root Guard برای این پورت ها استفاده کنید. در مثال زیر نحوی فعال سازی Root Guard برای جلوگیری از تغییر توپولوژی STP نمایش داده شده است.
SW(config)#interfast fastethernet 0/24 SW(config)#spanning-tree guard root
نحوی عملکرد Root Guard به این صورت است که اگر روی پورت superior BPDU دریافت کند پورت بلاک شده و در وضعیت root-inconsistent در می آید و تا زمانی که superior BPDU دریافت کند در این وضعیت خواهد ماند.نکته : superior BPDU بسته هایی با priority پایین می باشند.
مهندس و مدرس زیرساخت و امنیت و مدیر ارشد وب سایت توسینسو
جعفر قنبری شوهانی ، مهندس و مدرس شبکه ، آشنایی من با شبکه برمی گرده به سال 1382 که دوره NT و Novel رو گذروندم و الان حدود 15 ساله سابقه اجرایی در سطح Enterprise (بانک ها ، موسسه مالی ، ادارات دولتی ، سرویس پروایدر) را دارم و در حال حاضر به عنوان مهندس شبکه در شرکت توزیع برق مشهد و به عنوان مدیر ارشد و مدرس شبکه در سایت ToSinSo مشغول به کار هستم. در اکثرا حوزه های شبکه کار کردم و تجربه دارم اما تخصص اصلیم رو در حوزه زیرساخت و امنیت اون میدونم
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود