لایه پیوند داده یا Data Link Layer دومین سطح از مدل اتصال متقابل سامانه های باز یعنی Open Systems است. در این لایه در مورد الگوریتم های دستیابی به ارتباطات قابل اعتماد بین دو کامپیوتر بحث میشود. از مهم ترین وظایف لایه پیوند داده، انتقال داده ها از لایه شبکه ماشین مبدا به لایه شبکه ماشین مقصد است. پروتکل هائی که بر روی لایه دیتالینک هستند، می توانند فرمت بسته های اطلاعاتی که باید بین دو گره جابجا شوند و نیز روش های تعیین خطا، ارسال دوباره، کنترل جریان و دسترسی تصادفی را تعیین کنند. در این مقاله قصد بر آن است در رابطه با یکی از مهمترین پروتکل های این لایه یعنی STP کسب اطلاع نماییم.
STP مخفف Spanning Tree Protocol به معنی درخت پوشا، که یک پروتکل مهم در لایه 2 data link مدل مرجع OSI می باشد که از اتفاقی به اسم loop جلوگیری میکند، این پروتکل ورژن اصلی traditional است که توسط IEEE استاندارد شده، که نام آن استاندارد IEEE 802.1d میباشد. این پروتکل از طریق ارسال و دریافت پیام هایی بنام BPDU یا Bridge Protocol Data Unit با سوییچ های اترنت متصل به خود صحبت می کند. آنها اطلاعاتی درباره دستگاه سوییچ را برای یکدیگر به اشتراک می گذارند، در نتیجه می توانند با بررسی اطلاعات bpdu از ایجاد Loop در بستر شبکه اترنت جلوگیری کنند. پروتکل STP برای ارسال BPDU از پروتکل Ethernet کمک می گیرد، STP اترنت را فراخوانی و BPDU را تحویل آن می دهد. پروتکل اترنت در سوییچ مبدا نیز bpdu را تحویل اترنت در سوییچ بعدی می دهد. در سوییچ بعدی نیز bpdu از اترنت به stp تحویل می شود.
حلقه یا Loop که به چرخش هرز بسته ها درون شبکه که باعث ایجاد خطا و درگیر شدن ترافیک شبکه و اشغال پهنای باند می شود loop می گویند. هنگامی که در شبکه چندین سوییچ را به هم وصل کنید، ممکن است شبکه کند و سپس مختل شود. علت این اختلال به وجود آمدن حلقه در شبکه است. به صورت ساده تر هر سوییچ به سوییچ های متصل به خود، اطلاعات دریافتی خود را ارسال می کند و سوییچ های دیگر نیز اطلاعات دریافتی را برای همه سوییچ های متصل دیگر ارسال می کنند و این داستان تا بینهایت ادامه دارد. در حقیقت اطلاعات دریافتی سوییچ ها مانند طوفانی با سرعت زیاد بین یکدیگر مبادله می شود تا شبکه درنهایت مختل شده و از کار میافتد. پروتکل STP به منظور جلوگیری از ایجاد Loop های لایه 2 ای به دنیای شبکه معرفی شد، ای پروتکل از مکانیزم های هوشمندانه برای جلوگیری از ایجاد Loop از طریق مسدود کردن لینک های پشتیبان استفاده می کند.
وقتی در شبکه سوئیچ ها به یکدیگر متصل هستند و هر سوئیچ اطلاعات دریافتی خود مانند mac address که learn کرده را به switch های دیگری که به آن متصل هستند ارسال میکند و به دلیل این که همه سوئیچ ها اطلاعات را به switch های دیگری ارسال میکنند این اتفاق تا بی نهایت ادامه دارد و باعث میشود mac table مدام تغییر کند که همان mac address table instability به معنی ناپایداری است و این اطلاعات که مدام broadcast می شوند و پهنای باند اشغال میکنند و CPU بالا میبرند، این اتفاق broadcast Stom یا طوفان broadcast نام دارد. پروتکل STP از تشکیل Broadcast Storm در شبکه اترنت جلوگیری می کند. طوفان برادکستی زمانی رخ می دهد که سوییچ اترنت، ترافیک BUM را Flood می کند و این ترافیک بین سوییچ های اترنت می چرخد و دوباره به سوییچ اول می رسد. سوییچ اول نیز دوباره آن را به شبکه بصورت همه پخشی یا همان Broadcast برمی گرداند. وقتی Broadcast Storm در شبکه اترنت ساخته می شود، پهنای باند تمام لینک های بین سوییچ ها پر می شود و ارتباط بین کامپیوترها در شبکه قطع می شود. بنابراین در صورت عدم پشتیبانی سوییچ ها از پروتکل Spanning Tree یا غیر فعال بودن آن، اگر سوییچ ها را در شبکه اترنت به شکل حلقه بهم متصل کنیم، با ارسال اولین ترافیک Broadcast در شبکه Loop ایجاد می شود.
تولید کنندگان نظارت تصویری پروتکل RTSP را روی دوربین مدار بسته، دستگاه ضبط تصاویر و نرم افزارهای خود پیاده سازی می کنند تا سازگار با سایر دستگاه های موجود در بازار باشد. هنگام خرید دوربین مدار بسته IP و دستگاه ضبط کننده تحت شبکه می توانید از تولید کنندگان مختلف با استفاده از این پروتکل جهانی ارتباط برقرار کنید. برای پیکربندی تجهیزات لازم است بدانید که از دستور RTSP استفاده می شود و این اطلاعات را می توانید در کتابچه راهنمای محصول یا با مشورت تیم پشتیبانی فنی پیدا کنید. شرکت های تولیدکننده سیستم های نظارت تصویری دوربین مداربسته، دستگاه NVR و DVR را تولید و برای آنکه با سایر دستگاه ها و تجهیزات زیر ساختی و موجود در بازار سازگاری داشته باشند، نرم افزار RTSP را در محصولات خود قرار می دهند. از این پروتکل می توان برای انتقال تصویر دوربین های مداربسته استفاده کرد، در پروژه هایی که تجهیزات تهیه شده یا زیرساخت موجود از چندین برند مختلف است بسیار مناسب است.
برای اینکه پروتکل STP توانایی این را داشته باشد که از Loop های لایه 2 ای در شبکه جلوگیری کند، سوییچ های موجود باید در مورد کل توپولوژی شبکه ما اطلاعات لازمه را داشته باشند، سوییچ ها این کار را با کمک پیام هایی بنام BPDU انجام می دهند که یک پیام Multicast بوده و فقط دستگاه هایی در لایه 2 را تحت تاثیر قرار میدهد. در صورت ایجاد Loop در شبکه پروتکل های STP تمامی پورت های مربوط به دستگاه هایی که در Loop ایجاد کردن نقش دارند را بلاک میکند و با این کار از حلقه ایجاد شدن بین دستگاه ها جلوگیری می کند. بعد از هر تغییر در شبکه مثل فعال شدن یک پورت یا از دور خارج شدن یک پورت یا اتصال دستگاه جدیدی به شبکه و یا خروج یک دستگاه از شبکه، پروتکل STP برای جلوگیری از Loop بار دیگر الگوریتم خاص خود را اجرا میکند و تصمیم گیری های تازه را اتخاذ میکند. پیام های BPDU هر 2 ثانیه یک بار بوسیله Interface سوییچ ایجاد و فرستاده می شود و این کار باعث بالا رفتن میزان Convergence شبکه یا همگرایی شبکه خواهد شد.
STP از فرایندی که بعضاً Spanning-Tree Algorithm یا STA نامیده می شود، استفاده می کند تا پورت هایی که باید در وضعیت forwarding قرار بگیرند را انتخاب کند. سپس STP پورت هایی که برای forwarding انتخاب نشدند را در وضعیت blocking قرار می دهد. در واقع پروتکل STP پورت هایی که در ارسال کردن اطلاعات باید فعال باشند را انتخاب می کند و پورت های باقی مانده را در وضعیت blocking قرار می دهد. پروتکل STP برای قرار دادن پورت ها در حالت forwarding از سه مرحله استفاده می کند:
1. انتخاب Root Bridge یا Root Switch : پروتکل STP یک سوئیچ را به عنوان root انتخاب می کند و تمام پورت های فعال در آن سوئیچ را در وضعیت forwarding قرار می دهد. تنها یک سوییچ در Vlan میتوان به عنوان Root انتخاب شود. نقطه اصلی و ریشه ای که محاسبات STP بر اساس آن صورت میگیرد Root Bridge است. این مرحله دارای کوچکترین Bridge ID یا به اختصار BID در سطح شبکه است و هر گاه سوییچی با BID کمتری به شبکه متصل گردد، مبدل به Root Bridge شده و محاسبات از سر گرفته می شود. پس Root Bridge هر دو ثانیه خود را در شبکه Advertise میکند.
2. انتخاب Root Port ها : درهر کدام از سوئیچ های non-root همه ی سوئیچ ها به جز roo، پورتی که کمترین هزینه را برای رسیدن به سوئیچ root دارد یعنی root cost، به عنوان root port یا RP انتخاب می کند و آن ها را در وضعیت forwarding قرار می دهد.
3. انتخاب Designated Port ها : تعداد زیادی سوئیچ می توانند به یک بخش از Ethernet متصل شوند، اما در شبکه های مدرن، معمولاً دو سوئیچ به هر لینک متصل می شوند. در بین سوئیچ هایی که به یک لینک مشترک متصل هستند، پورت سوئیچی که root cost کمتری دارد در وضعیت forwarding قرار می گیرد. این سوئیچ ها را designated switch می نامند و پورت هایی که در وضعیت forwarding قرار گرفته را designated port یاDP می نامند.
4. باقی پورت ها: در وضعیت blocking قرار می گیرند.
منطق STP در هنگام Stable بودن شبکه این است که پروسه ارسال Hello را چک کند که در حالت Normal باشد و هنگامی که پروسه ارسال Hello تغییر کرد، نیاز است که STP عکس العمل نشان دهد و بر اساس توپولوژی جدید تصمیم گیری نماید . حال Root Bridge به صورت پریودیک براساس Hello Time دو ثانیه ای BPDU را ساخته و ارسال می کند. تمام سوییچ های Non Root Bridge به صورت منظم یک کپی برابر اصل D از BPDU سوییچ Root را از روی Root Port دریافت میکند. تمام سوییچ ها BPDU را UPDATE و از طریق Designated Port ارسال میکنند. سوییچ ها از طریق پورت BPDU ،Block را ارسال نمی کنند. پورتی از سوییچ که به حالت Blocking رفته است به صورت متناوب از پورت Designated Segment، یک کپی از BPDU را دریافت میکند. اگر اختلالی در هر یک از رویدادهای فوق رخ دهد، STP متوجه می شود که توپولوژی تغییر کرده و نیاز به Convergence دارد مثلاً سوییچ Root یا Root Bridge ممکن است خاموش شود که با این اتفاق بقیه سوییچ ها هیچ BPDU ای را دریافت نمیکنند و پس از آنکه MAX Timer منقضی شد دوباره سوییچ بر اساس منطقSTP، روت جدید را انتخاب می کنند.
به هنگام بروز هر گونه تغییر وضعیت در پورت و ایجاد اشکال یا اتصال یک Segment به Lan ،STP باید با خبر و دست به کار شود و محاسبات لازم را صورت دهد. یک سوییچ تغییر را از سمت Root Port به سمت Root Bridge ارسال و گزارش میکند و سوییچ های دریافت کننده پیام تغییر، به فرستنده تغییرات، پیام Ack را ارسال میکنند. هنگامی که یک تغییر در وضعیت یک پورت سوییچ به وقوع می پیوندد، سوییچ این تغییر را به صورت TCN از طریق Root Port به Root Bridge ارسال میکند. TCN حاوی جزییات تغییر نیست بلکه یک خبر درباره یک تغییر است که از طریق Root Port سوییچ به سمت Root Bridge ارسال می گردد.UPStream Switch به محض دریافت TCN به فرستنده پیام Ack را ارسال میکند و سوییچ فرستنده تا زمانی که Ack را دریافت نکند دست بردار نیست و همچنان به ارسال TCN مبادرت میکند. سوییچ دریافت کننده TCN در هنگام ارسال Configuration BPDU قسمت MSB یا Topology Change Acknowledge را علامت می زند و رسیدن TCN را اطلاع میدهد تا دیگر TCN فرستاده نشود. حالا نوبت سوییچ بالایی است که با ارسال TCN سوییچ های دیگر را از تغییر مطلع سازد و در این حالت یک گام به Root Bridge نزدیک تر شده و مراحل رسید و ارسال ACK مطابق بالا تکرار می گردد در نهایت پیام به Root Bridge می رسد.
Root Bridge به محض دریافت Topology Change ACK ،TCN را ارسال می کند و در هنگام ارسال Configuration BPDU بعدی Topology Change Flag را که مشخص کننده تغییر در شبکه است را علامت می زند. فایده ارسال این علامت این است که سوییچ ها به محض دریافت Topology Change Flag در Configuration BPDU زمان طول عمر Bridging Table را به میزان Forward Delay کاهش می دهند یعنی 300 ثانیه به 15 ثانیه کاهش پیدا میکند و در این مدت اگر فریمی از Mac Address خاصی دریافت نشود از جدول حذف می شود که این کار باعث بهبود و سرعت در زمان همگرایی شبکه یا Convergence Time می گردد. برای اعلان تغییر در توپولوژی شبکه از TCN BPDU استفاده می شود. هنگامی که پورتی به هر دلیل فعال یا غیر فعال می شود، سوییچ هر 2 ثانیه یک فریم TCN را از Root Port خودش به سمت سوییچ بالا دستی ارسال می کند تا زمانیکه یک پیام ACK از آن سوییچ بالا دستی دریافت کند مطمئن شود که پیام TCN به آن رسیده است ، این روند همینطور ادامه پیدا میکند تا به دست سوییچ Root برسد. سپس Root Bridge یک Configuration BPDU را که Flag آن 1 شده به همه پورت های خودش ارسال میکند .مابقی سوییچ ها با دریافت این BPDU و مشاهده flag یک شده، عمر تمام رکورد های جدول Mac خود را به Forward Delay یعنی 15 ثانیه تغییر می دهد .هنگامی که تغییری درتوپولوژی شبکه ایجاد می گردد احتمال تغییر در Cam Table بسیار زیاد است و این کار باعث می شود آدرس های Mac جدول زودتر Update شود و در این 15 ثانیه به سایر دستگاهها اجازه داده می شود تا Mac Address خود را Update کنند.