بیشتر افرادی که با تجهیزات شبکه سر و کار دارند، می دانند که برای داشتن پهنای باند بیشتر در شبکه میتوان سوئیچ ها و روترها را با چند لینک بهم متصل نمود که با این کار نوعی Redundancy نیز در شبکه ایجاد و سبب بوجود آمدن Loop میشود. این پروتکل که به صورت پیش فرض فعال است و به خوبی وظایف خود را انجام داده و اجازه ایجاد LOOP را نمیدهد. البته برای کسب بالاترین میزان بازدهی و رسیدن به کمترین قطعی نیاز به بهینه سازی این پروتکل است. ما در این مقاله قصد داریم در رابطه با پروتکل STP و عملکرد آن در شبکه صحبت کنیم، پس تا انتهای مقاله همراه ما باشید.
Loop چیست؟
فهرست محتوا
Loop به معنی حلقه میباشد و در شبکههای کامپیوتری به ایجاد حلقه در شبکه گفته میشود. در یک شبکه با تعدادی دستگاه، اگر دو یا بیشتر از آنها با هم به صورت چندگانه متصل شوند، ممکن است یک حلقه در شبکه ایجاد شود. این حلقه ممکن است باعث ایجاد تداخل در شبکه و کاهش عملکرد و عدم قابلیت اطمینان شبکه شود.
به عنوان مثال، در یک حلقه شبکه، اگر یک بسته از یک دستگاه به دستگاه دیگر ارسال شود، این بسته به صورت پیوسته در حلقه گردش میکند و تداخل در شبکه ایجاد میشود. برای جلوگیری از ایجاد حلقه در شبکه، از پروتکلهایی مانند: Spanning Tree Protocol (STP) استفاده میشود که در ادامه بیشتر با آن آشنا خواهیم شد.
پروتکل STP چیست؟
درلایه 3، پروتکل های مسیریابی به ازای مسیرهای Down شده، مسیری جدید برای رسیدن به مقصد انتخاب می کنند و می توانند برای رسیدن به یک مقصد، از چندین مسیر مختلف استفاده کنند. اما در طراحی لایه 2 شبکه تنها یک مسیر قابل قبول است. در شبکه علاوه بر سرعت انتقال و کارایی، مسائلی نظیر رفع خطا و حل مشکلات به صورت داینامیک و پویا حائز اهیمت است.
در لایه 2، برای حل مشکلات احتمالی لینک ها و استفاده از مسیرهای Redundant می توان از پروتکل STP که در IEEE 802.1d تعریف شده، استفاده کنیم. کار STP به این صورت خلاصه می شود که در لایه 2 نباید Loop وجود داشته باشد، یعنی برای رسیدن یک فریم به مقصد تنها یک لایه دو وجود داشته باشد و در صورت قطع شدن آن مسیر، مسیر دیگری برای آن انتخاب شود، تا ارتباط شبکه همچنان برقرار بماند.
STP یا Spanning Tree Protocol یک پروتکل شبکه است که برای جلوگیری از ایجاد حلقه در شبکههای LAN با استفاده از تکنیک Spanning Tree استفاده میشود. تکنیک Spanning Tree در واقع یک الگوریتم است که به کمک آن، یک درخت را برای شبکه LAN ایجاد میکند تا حلقهها را از بین ببرد.
این پروتکل در شبکههای LAN با توپولوژی درختی استفاده میشود و با انتخاب یک ریشه برای درخت، از ایجاد حلقه در شبکه جلوگیری میکند. بنابراین، در صورت بروز خرابی در یکی از پیوندهای شبکه، پروتکل STP به صورت خودکار پیوندهای دیگر را بررسی میکند و مسیری جایگزین را برای ارتباط بین دستگاهها انتخاب میکند.
![پروتکل Spanning Tree](https://mrshabake.com/wp-content/uploads/2023/07/lan-with-spanning-tree-example-mrshabake.jpg)
تصویر 1: Redundant LAN به همراه Spanning Tree
در یک شبکه با توپولوژی درختی، اتصال دستگاهها به یک سوئیچ شبکه (switch) ممکن است به طور غیرمستقیم انجام شود، به عبارت دیگر، دستگاهها ممکن است به سوئیچهای متعددی وصل شوند و ارتباطات بین آنها از طریق این سوئیچها برقرار شود. در این حالت، ممکن است حلقههایی در شبکه ایجاد شود که باعث به وجود آمدن مشکلاتی مانند: Broadcast Storm و تداخل در شبکه شود.
برای جلوگیری از ایجاد حلقه در شبکه، پروتکل STP به کمک تکنیک Spanning Tree، یک درخت را برای شبکه LAN ایجاد میکند. در این درخت، یکی از سوئیچها به عنوان ریشه (root) تعیین میشود و تمامی پیوندهای شبکه به سمت ریشه جریان مییابند. به این ترتیب، درختی بدون حلقه برای شبکه ایجاد میشود و مشکلاتی مانند: broadcast storm و تداخل در شبکه جلوگیری میشود.
اگر پروتکل STP وجود نداشت، طوفان Broadcast رخ خواه داد، مانند تصویر زیر:
نکته: البته لازم به ذکر است که وجود Broadcast و Multicast در شبکه ضروری است و بدون وجود آنها عملکرد شبکه با اشکال مواجه خواهد شد. برخی اینگونه تصور می کنند که وجود Braodcast در شبکه زائد و باید به نوعی جلوی آن گرفته شود. در حالیکه عملکرد DHCP، ARP و بسیاری از اپکلیکیشن ها و پروتکل های شبکه به این نوع ارسال وابسته است. در واقع آنچه که شبکه را آزار می دهد Broadcast Storm یا طوفان Broadcast است، به طوری که از حد نرمال و طبیعی خود خارج شده و منابع شرکت را درگیر سازد.
مفاهیم اصلی در پروتکل STP:
پروتکل STP برای اینکه شبکه را به صورت یک گراف یا یک درخت بدون Loop شکل دهد، نیاز به انتخاب یک Root یا سوئیچ اصلی که ریشه این شاخ و برگ هاست، دارد. محاسبات STP بر اساس Bridge ID و Path Cost صورت می گیرد. برای اینکه Root Switch یا Root Bridge را بیشتر انتخاب کنیم، از Bridge ID استفاده می کنیم. این مقدار هر چه کمتر باشد، احتمال Root شدن سوئیچ بیشتر می شود. Bridge ID یا Switch ID، هشت بایت است و از ترکیب 2 بایت به عنوان اولویت و 6 بایت MAC تشکیل می شود.
آیا پروتکل STP در تمامی شبکهها استفاده میشود:
بله، پروتکل STP (Spanning Tree Protocol) یک پروتکل استاندارد در لایه دوم مدل OSI (Data Link Layer) است که برای جلوگیری از ایجاد حلقه در شبکه و برقراری یک درخت ارتباطی در شبکه استفاده میشود. این پروتکل توسط IEEE (Institute of Electrical and Electronics Engineers) تعریف شده است و در تمامی شبکههایی که از پروتکل Ethernet استفاده میکنند، اجرا میشود.
بنابراین، STP در تمامی شبکههایی که از پروتکل Ethernet استفاده میکنند، اجرا میشود و از آن برای جلوگیری از ایجاد حلقه در شبکه و بهبود عملکرد و قابلیت اطمینان شبکه استفاده میشود. با این حال، برخی شبکهها ممکن است از پروتکلهای دیگری برای جلوگیری از ایجاد حلقه در شبکه استفاده کنند، اما STP به عنوان پروتکل استاندارد به طور گسترده در شبکههای کامپیوتری استفاده میشود.
بیشتر بخوانید:مدل OSI چیست؟ تفاوت مدل OSI و TCP/IPو بررسی کامل
مراحل Spanning Tree:
برای اجرای پروتکل STP و جهت ایجاد شبکه ی Loop Free و در خلال هر Convergence یعنی زمانیکه شبکه صرف می کند تا به حالت نرمال برگردد، مراحل زیر طی می شوند:
- انتخاب یک Root Bridge یا Root Switch:
نقطه اصلی و ریشه ای که محاسبات STP در آن صورت می گیرد، Root Bridge است که تنها یک سوئیچ در VLAN می تواند Root شود. Root Bridge دارای کوچکترین Bridge ID یا به اختصار BID در سطح شبکه است و هرگاه سوئیچی با BID کوچکتر به شبکه متصل گردد، به Root Bridge تبدیل شده و محاسبات از سر گرفته می شود. در نتیجه لینک های Loop شده که به نسبت دورتر از Root Bridge هستند، بلوکه خواهند شد و دیدگاه شبکه از ریشه جدید یا Root شکل گرفته و فواصل و Cost ها به نسبت آن نقطه محاسبه می گردند. Root Bridge هر دو ثانیه خود را در شبکه تبلیغ می کند. Configuration BPDU حاوی اطلاعات Spanning Tree است که تنها از سوی Root Bridge در شبکه هر دو ثانیه توزیع می گردد.
در ابتدا کلیه سوئیچ های موجود در شبکه خود را Root Bridge دیده و شروع به تبلیغ خود می کند تازمانیکه Configuration BPDU از یک BID بهتر ( اولویت بهتر یعنی کمتر و یا در حالت مساوی بودن اولویت، Macc Address کوچکتر) دریافت شود ادامه خوهد داشت.
برای انتخاب Root Bridge هر سوئیچ در ابتدا یک بسته BPDU که شامل Bridge ID خودش است را می سازند و به همه ارسال می کند. اگر سوئیچ یک Superior Hello را دریافت کند دست از ادعای خود برداشته و شروع به ارسال آن Superior Hello می کند. سرانجام تمام سوئیچ ها به جزء سوئیچی که Bridge ID کوچکتری دارد، دست از تولید برداشته و آن سوئیچ به عنوان Root Switch انتخاب می شود و BPDU را تولید و ارسال می کند و بقیه سوئیچ ها فقط آن را دریافت و ارسال می کنند.
Bridge ID در استاندارد 802.ID شامل دو فیلد Priority و MAC Address بود، اما این فرمت تغییر کرد و فیلد Priority به دو فیلد Priority و Extention System ID که همان VLAN ID است تقسیم شده است.
![مراحل Spanning Tree](https://mrshabake.com/wp-content/uploads/2023/07/Root-Bridge-mrshabake01.jpg)
تصویر5: نمایش فرمت اصلی و فرمت جدید 802.ID
- انتخاب Root Port ها:
هنگامی که Root Bridge انتخاب شد، بقیه سوئیچ ها نیاز دارند یک پورت را به عنوان Root Port مشخص کنید یا به عبارت دیگر بقیه سوئیچ ها آن را از طریق یکی از پورت های خود می بینند. برای اینکه از مراحل زیر صورت می گیرد:
- سوئیچ Root هر 2 ثانیه Hello Timer Default با Cost=0 را ساخته و ارسال می کند.
- هر سوئیچ پس از دریافت BPDU و اعمال تغییرات در فیلدهای زیر، آن را ارسال می کند: ـ Cost ـ Forwarding Switch’s Bridge ID ـ Forwarder’s Port Priority ـ Forwarder’s Port Number
- سوئیچ ها بر روی پورتی که به حالت Blocking رفته اند، BPDU را ارسال نمی کنند.
- از بین تمام پورت های یک سوئیچ، پورتی که BPDU با Cost کمتر را دریافت کند، به عنوان RP انتخاب می شود.
سوئیچ ها برای محاسبه هزینه تا رسیدن سوئیچ Root، مقدار Cost در BPDU دریافتی را با Cost پورتی که با آن BPDU را دریافت کرده جمع می کند و مقدار Cost جدید سوئیچ تا Root Bridge را بدست می آورد و آن را برای بقیه سوئیچ ها ارسال می کند.
![مراحل Spanning Tree](https://mrshabake.com/wp-content/uploads/2023/07/Spanning-tree-mrshabake03.jpg)
تصویر 6: محاسبه Cost جهت تعیین RPها
در تصویر بالا سوئیچ اول Root شده است و BPDU هایی با Cost=0 تولید و ارسال می کند. SW3 دو BPDU دریافت می کند، یکی با Cost=0 و دیگری با Cost=38.سپس سوئیچ سوم باید Cost خود تا Root را حساب کند. برای این کار Cost دریافتی را با Cost پورت دریافت کنند که Fa0/4 و Fa0/1: ost=0+100=100 پس در اینجا با وجود یک لینک مستقیم به Root توسط Fa0/1، چون Cost محاسبه شده توسط Fa0/4 کمتر است، پس این پورت به عنوان RP انتخاب می شود.
اگر در شبکه چند مسیر موازی وجود داشته باشد، یعنی حداقل یک سوئیچ، Root را از دو مسیر متفاوت دیده و باید یکی از مسیرها بلوکه شود. پورتی که هر سوئیچ از آن پورت Root Bridge را می بیند، Root Port نام دارد. به محض اینکه BPDU از یک پورت دریافت شود، Cost آن محاسبه می گردد. این عمل به سادگی از مجموع عدد Cost روی فریم BPDU به علاوه Interface Cost حاصل می شود. در واقع Path Cost عددی است که به interface تعلق دارد و Root Path Cost از اضافه شدن Path Cost به Cost مندرج در Configuration BPDU بدست می آید.
- انتخاب Designated Port:
در صورتیکه به یک Segment در LAN، دو یا چنند سوئیچ متصل باشند، تنها یک سوئیچ باید فریم های Segment را دریافت و ارسال کند. این کار برای جلوگیری از ایجاد Loop صورت می گیرد. پورتی که وظیفه اتصال سگمنت به LAN را دارد، Designated Port نامیده می شود. این سوئیچ دارای بهترین Root Path Cost است و اگر شرایطی مساوی برقرار شود، انتخاب بر اساس چهار معیار اصلی که قبلاً عنوان شد صورت می گیرد.
تصویر زیر انتخاب Designated Port را نشان می دهد. در صورت برابری Cost از چهار معیاری که عنوان شد، استفاده می شود که در این مثال کمترین BID خود را Designated Port برای آن Segment خواهد کرد و پورت آن Designated Port خواهد شد.
عملکرد پروتکل STP چگونه است:
عملکرد پروتکل STP بر اساس تکنیک Spanning Tree است که با ایجاد یک درخت برای شبکه، از ایجاد حلقه در شبکه جلوگیری میکند. برای اجرای پروتکل STP، ابتدا یکی از سوئیچهای شبکه به عنوان ریشه درخت تعیین میشود. سپس، هر سوئیچ در شبکه با استفاده از پیامهای BPDU (Bridge Protocol Data Unit)، وضعیت خود را به سایر سوئیچها اعلام میکند. BPDUها شامل اطلاعاتی مانند: شناسه ریشه، فاصله تا ریشه و شناسه پارامترهای دیگر میشوند.
با دریافت BPDUها، هر سوئیچ با استفاده از الگوریتم Spanning Tree، به دنبال مسیری به سمت ریشه درخت میگردد. در این راستا، سوئیچهایی که به مسیری با فاصله کمتر تا ریشه دسترسی دارند، به عنوان سوئیچهای برتر (root switch) در نظر گرفته میشوند و سایر سوئیچها به صورت اتوماتیک بهترین مسیر را به سمت ریشه انتخاب میکنند. به این ترتیب، یک درخت برای شبکه ایجاد میشود که حاوی بیش از یک مسیر بین هر دو دستگاه نیست.
در صورتی که یکی از پیوندهای شبکه قطع شود، پروتکل STP به صورت خودکار مسیر جایگزین را انتخاب کرده و از قطعی در شبکه جلوگیری میکند. به عبارت دیگر، در صورتی که یک پیوند در شبکه قطع شود، STP از پیوندهای دیگر استفاده میکند تا ارتباط بین دستگاهها را برقرار کند و به این ترتیب، شبکه در حالت کاری خود باقی میماند. در پروتکل STP، از معیارهایی مانند: کمترین فاصله (distance) تا ریشه استفاده میشود تا بهترین مسیر را برای ارتباط بین دستگاهها انتخاب کند. همچنین، STP از الگوریتمهایی مانند: RSTP (Rapid Spanning Tree Protocol) و MSTP (Multiple Spanning Tree Protocol) برای سرعت بخشیدن به فرایند انتخاب مسیر استفاده میکند.
انواع پروتکل Spanning Tree Protocol چیست:
موجودیتهای پروتکل STP شامل چندین نوع پروتکل مختلف هستند که هر کدام با هدفها و ویژگیهای خاص خودشان طراحی شدهاند. برخی از انواع STP عبارتند از:
- STP استاندارد: این نوع از STP، پایهای ترین نسخه از پروتکل STP است و برای جلوگیری از ایجاد حلقه در شبکه به کار میرود. در این نوع از STP، به شکل پیش فرض، همه سوئیچها به عنوان سوئیچ کاری (non-root bridge) در نظر گرفته میشوند و پویش درخت را با استفاده از پیغامهای BPDU انجام میدهند.
- RSTP: این نوع از STP، به صورت سریعتر و با زمان پاسخ دهی کمتری نسبت به STP استاندارد عمل میکند. در RSTP، هر سوئیچ به عنوان سوئیچ فعال (active bridge) و یا سوئیچ غیرفعال (backup bridge) تعیین میشود. سوئیچهای فعال در پویش درخت شرکت میکنند و در صورت بروز خطا یا نقص در پویش درخت، سوئیچهای غیرفعال به عنوان سوئیچ فعال جایگزین میشوند.
- MSTP: این نوع از STP، برای جلوگیری از ایجاد حلقه در شبکههایی با چندین VLAN (Virtual Local Area Network) به کار میرود. در MSTP، شبکه به چندین منطقه تقسیم میشود و در هر منطقه، یک درخت اختصاصی برای VLANهای مرتبط با آن منطقه ایجاد میشود. این نوع از STP، با استفاده از الگوریتمهای پویش درخت، فاصله مسیری کمترین بین دستگاهها را به دست میآورد و بهترین مسیر را برای ارتباط بین دستگاهها انتخاب میکند. در کل، استفاده از هر نوع STP بسته به نیاز و ویژگیهای شبکهی مورد نظر تعیین میشود.
وضعیت های مختلف پورت STP:
- Disable: در پروتکل STP این حالت پورت خاموش است.
- 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: در این حالت پروتکل STP قادر به ارسال و دریافت فریم است و CAM Table خود را با MAC Address ها بروز می کند و قادر به ارسال و دریافت BPDU است.
ویژگی های پروتکل STP چیست:
- جلوگیری از ایجاد حلقه در شبکه: پروتکل STP با ایجاد یک درخت ارتباطی در شبکه، از ایجاد حلقه در شبکه جلوگیری میکند. با این روش، تمامی دستگاههای در شبکه به صورت یکپارچه با هم ارتباط برقرار میکنند و از بهرهوری بالاتری برخوردار میشوند.
- پویش درخت: STP با استفاده از الگوریتمهای پویش درخت، بهترین مسیر بین دستگاهها را برای ارتباط بین آنها انتخاب میکند. این الگوریتمها با توجه به فاصله مسیری کمترین به ریشه درخت، مسیر ارتباطی بهینه بین دستگاهها را انتخاب میکنند.
- جایگزینی مسیر: در صورتی که یک پیوند در شبکه قطع شود، STP با استفاده از پیوندهای دیگر، مسیر جایگزین را به صورت خودکار انتخاب میکند و از قطعی در شبکه جلوگیری میکند.
- انتخاب سوئیچ ریشه: STP با انتخاب یکی از سوئیچها به عنوان سوئیچ ریشه، درخت ارتباطی را تشکیل میدهد. سایر سوئیچها به صورت اتوماتیک بهترین مسیر را به سمت ریشه انتخاب میکنند.
- قابلیت پیکربندی: STP قابلیت پیکربندی دارد و میتواند به صورت پویا و بر اساس نیاز شبکه، تنظیم شود. به عنوان مثال، میتوان تعداد پویش درخت را تغییر داد و یا زمان تاخیر بین پویش درختها را تنظیم کرد. در کل، STP با جلوگیری از ایجاد حلقه در شبکه، جلوهای از استاندارد بودن شبکه را ایجاد میکند و با بهینهسازی مسیر ارتباطی بین دستگاهها، به بهرهوری بیشتر شبکه کمک میکند.
چگونه STP را پیکربندی کنیم:
برای پیکربندی STP، میتوانید از روشهای مختلفی استفاده کنید که در ادامه به برخی از آنها اشاره میکنم:
- CLI (Command-Line Interface)
این روش برای پیکربندی STP بسیار رایج است و بسیاری از سوئیچها این قابلیت را دارند. با استفاده از CLI، میتوانید تنظیمات STP را به صورت دستی و با استفاده از دستورات مربوطه تنظیم کنید. به عنوان مثال، برای تنظیم مبدا STP، میتوانید از دستور set spantree root primary استفاده کنید.
- GUI (Graphical User Interface)
بسیاری از سوئیچها دارای واسط کاربری گرافیکی هستند که از طریق آن میتوانید تنظیمات STP را انجام دهید. در این روش، کاربر با استفاده از موس و کلیدهای کیبورد، تنظیمات مورد نظر خود را انجام میدهد.
- پروتکلهای مدیریت شبکه:
بسیاری از پروتکلهای مدیریت شبکه، از جمله SNMP (Simple Network Management Protocol)، Telnet و SSH، قابلیت پیکربندی STP را دارند. با استفاده از این پروتکلها، میتوانید تنظیمات STP را از راه دور و از هر کجا که مایل هستید، تغییر دهید.
بسته به نوع سوئیچ و نرمافزار مورد استفاده، روشهای دیگری نیز برای پیکربندی STP وجود دارند. همچنین، برای پیکربندی STP، باید با مفاهیمی مانند سوئیچ ریشه، پورتهای ریشه، پورتهای بلاک شده و غیره آشنا باشید. بنابراین، قبل از پیکربندی STP، بهتر است با مفاهیم اصلی آن آشنا شوید و سپس به پیکربندی آن بپردازید.
خرید انواع تجهیزات شبکه از مسترشبکه بزرگترین فروشگاه اینترنتی تجهیزات شبکه با گارانتی معتبر |