خب قصد داریم تو این مقاله و مقاله های بعدی در مورد یکی از مهم ترین پروتکل های لایه دو یعنی STP  صحبت کنیم، پروتکلی که وظیفه شکستن Loop  لایه دو یا LAN را در تکنولوژی های مبتنی بر  Ethernet را دارد و  به صورت پیشفرض فعال است و به خوبی وظایف خود را انجام میدهد و اجازه ایجاد لوپ را نمی دهد ،که البته نیاز به بهینه سازی این پروتکل است تا بالاترین بازدهی و با کمترین میزان قعطی را داشته باشد.

اول از همه بریم سر این مطلب که اصلا Loop  لایه دو  یعنی چی و چه زمانی این اتفاق می افتد؟!

همان طور که می دانید در هدر IP  فیلدی قرار دادند به نام TTL  یا Time To Live  که در مبدا یا ارسال کننده بر اساس نوع سیستم عامل مقدار دهی میشود مثلا در مایکروسافت ۱۲۸ و در لینوکس ۶۴ و حتی در سیسکو ۲۵۵  و به ازای هر بار Route  شدن بسته ، روترها اجازه کم کردن یک واحد از آن مقدار را دارند تا Packet ها برای همیشه در دنیای WAN سرگردان نباشند. مثلا اگر شما سیستم عامل لینوکس دارید و به مقصدی نا معلوم ولی Routable  بسته ارسال کنید بعد از عبور ۶۴  روتر یا بهتر بگیم بعد از ۶۴  بار روت شدن Packet  و به علت صفر شدن TTL  یا تمام شدن عمر Packet  ، بسته Drop  میشود.

حالا این داستان را بیاریم در LAN

آیا در هدر Ethernet  ما TTL  داریم؟!

نه.

پس همیشه تمامی بسته های ما در LAN  زنده هستند و Loop  میشوند؟!

باز هم نه!!

سوییچ بسته های Broadcast ، Multicast و Unknown Unicast  را Flood  میکند روی تمامی اینترفیس های با شماره Vlan  ارسال کننده و البته به غیر از اینترفیس ارسال کننده ، اینجاست که خطرناک است.

به شکل زیر دقت کنید.

نکته :

هیچ کانفیگی روی سوییچ ها زده نشده وتمامی اینترفیس ها در Vlan 1  قرار دارند.

مرحله اول

فرض کنید که PC یک بسته DHCP Discover  یا ARP Request  که هر دو از نوع Broadcast  است را  به SW-1  ارسال کند،  این سوییچ ابتدا عمل Learning را که با خواندن مقدار Source Mac  فریم است را  انجام میدهد که در این سناریو آدرس مک PC  را روی اینترفیس Fa0/3  خود Learn میکند و  آن در Mac Address  Table خود قرار می دهد حالا سوییچ باید عمل  Forwarding را انجام دهد که این کار را با نگاه کردن فیلد Destination Mac  فریم انجام میدهد و چون از نوع Broadcast یا FFFF.FFFF.FFFF است آن را روی اینترفیس های Fa0/1  و Fa0/2  فوروارد میکند یا بهتر بگیم Flood میکند.

مرحله دوم

حالا فریم روی اینترفیس Fa0/1  از SW-2 و اینترفیس Fa0/2  از SW-3  میرسد.

اول بریم سراغ SW-2

این سوییچ بعد از Learn  کردن Mac  آدرس PC  روی اینترفیس Fa0/1  به DST Mac  بسته در هدر Ethernet  نگاه میکند و چون Broadcast  است فریم را روی اینترفیس Fa0/2 فوروارد میکند.

سوییچ SW-3  یک فریم از SW-1  روی اینترفیس Fa0/2  خود قبلا گرفته بود و باز بعد از Learn کردن Mac  آدرس PC  روی اینترفیس Fa0/2  خود و خواندن DST Mac  فریم ، بسته را روی Fa0/1   فوروارد میکند.

مرحله سوم

حالا یک فریم از SW-2  به اینترفیس Fa0/1  از SW-3  رسیده و یک فریم از SW-3  به اینترفیس Fa0/2 از SW-2  رسیده است.

اول بریم سراغ SW-3

وقتی فریم وارد اینترفیس Fa0/1  از SW-3  می شود اول عمل Learning  صورت میگیرد و SRC Mac  از هدر Ethernet  را می خواند ولی قبلا این آدرس مک که برای PC  است را روی اینترفیس Fa0/2  خود Learn  کرده و سوییچ مجبور به Flush  کردن تمامی آدرس های Mac  ای که روی این دو اینترفیس یاد گرفته است را در Mac address table  خود است زیرا سوییچ هیج وقت آدرس مک یکسان را روی دو اینترفیس خود Learn  نمی کند.

خب بعد از Learning  سوییچ بسته را روی اینترفیس Fa0/2  خود فوروارد میکند چون نوع بسته Broadcast  بود.

دقیقا همین اتفاق در SW-2  می افتد و این سوییچ مجبور به Flush  کردن Mac address Table  خود و فوروارد کردن بسته روی Fa0/1  است.

 

مرحله چهارم

 

SW-1  فریم یکسان را روی اینترفیس های Fa0/1  و Fa0/2  دریافت میکند و دقیقا همان فریمی که چند لحظه پیش خودش روی Fa0/1  و Fa0/2  فوروارد کرده بود.

SW-1  فریمی که روی اینترفیس Fa0/1  خود دریافت میکند را روی اینترفیس های Fa0/2  و Fa0/3  فوروارد و فریمی که روی اینترفیس Fa0/2  خود از SW-2  دریافت کرده را روی اینترفیس های Fa0/1  و Fa0/3  ارسال میکند.

دقیقا مشکل اینجاست

دقت کنید برگشتیم به مرحله یک و دوبار بسته ها به SW-2  و SW-3  رسیدند و دوباره فوروارد کردن فریم ها و……

این داستان تا ابد ادامه دارد و حالا فرض کنید از این فریم ها میلیون ها تا داشته باشیم!!

چه اتفاقی سر شبکه ما می آید و چه Process  ای باید سوییچ ها برای فوروارد کردن فریم های Broadcast  یا Multicast  کنند!!! و حتی باید پی در پی Mac Address Table  خود را Flush کنند.

با این اتفاق حتی کامپیوتر های ما هم این بسته ها را دریافت میکنند و می دانیم که تمامی دستگاه های شبکه ملزم به باز کردن بسته های Broadcast  و تحلیل آن در لایه های بالاتر هستند و  باید Process خرج تحلیل بسته های Broadcast  کنند و نه تنها کامپیوتر ها بلکه سوییچ ها هم باید بسته های Broadcast  را در لایه های بالاتر تحلیل کنند.(ممکن است سوییچ ARP Reply  را در جواب ARP Request  یک کامپیوتر دهد یعنی PC  آدرس مک سوییچ را ARP  بزند و سوییچ برای اینکه بداند PC  به دنبال آدرس مک مثلا اینترفیس مجازی Vlan 1  آن است یا نه بعد از باز کردن بسته در لایه دو و دیدن بسته به عنوان Broadcast  مجبور به باز کردن بسته در لایه بالایی که هدر ARP  است. )

 

خب حالا درک نیاز به یک پروتکل برای شکستن Loop  را داریم.

STP  و پروتکل هایی از این خانواده برای ما این کار را به صورت پیش فرض انجام می دهند.

مثلا در شکل بالا اگر یکی از اینترفیس های بین سوییچ ها در حالت Forward  قرار نمی گرفت و مثلا Block  بود ، Loop  شکسته شده بود!

سوال

همیشه طراحی های شبکه مانند مثال های زیر Loop است؟!

 

جواب خیر است.

باید دقت کنید که اینترفیس های سوییچ ها نمی توانند تمامی ترافیک ها را از خود عبور دهند و فقط مجوز به عبور ترافیک های یک Vlan را دارند.(به غیر از Trunk)

به شکل زیر نگاه کنید.

در مثال های بالا هیچ گونه Loop  ای وجود ندارد.

یا مثلا ممکن است فقط برای یک سری Vlan   لوپ داشته باشیم مانند مثال های زیر که فقط برای Vlan 1   Loop  داریم.

قبل و بعد از شروع کار پروتکل STP

در مقاله های بعدی قصد باز کردن پروتکل Spanning-Tree  را داریم.

با ITNovin  همراه باشید.

Leave a Comment