در قسمت یک و دو این مقاله نحوه کار پروتکل STP  در شبکه های Ethernet  و همچنین چگونگی انتخاب سوییچ ریشه یا Root Bridge  آشنا شدیم و البته فهمیدیم که  سوییچ چگونه نقش یا Role  های اینترفیس های خود را مشخص می کند.

و اما در این مقاله موردی را می خواهیم بررسی کنیم که از اهمیت بالای در STP 802.1d  دارد که آن مدت زمان  Convergence  شدن STP  است.

انواع وضعیت یا State  ها در

Block

پورتی که سوییچ بعد از دریافت BPDU  از همسایه های خود تصمیم به بلاک کردن آن کرده است و هیچ Frame  ای از این پورت ارسال  و یا دریافت نمی شود و البته باید ذکر کرد که سوییچ روی این اینترفیس از همسایگان خود  BPDU  دریافت می کند ، ولی ارسال BPDU  روی این اینترفیس ندارد.

Disable

پورتی که به صورت دستی در حالت Shutdown  می باشد و هیج تاثیری روی STP  ندارد.

Listening

زمانی که پورت در وضعیت Listening قرار می گیرد بوسیله BPDU وضعیت سوییچ Root Bridge  وهمچنین نقش خود را تعیین میکند. روی این اینترفیس هیچ گونه MAC-Address  ای Learn  نمیشود و به صورت موقت اینترفیس در این حالت می باشد تا نقش خود را در STP  مشخص کند و تنها Frame  های از جنس BPDU  را ارسال میکند و به صورت پیش فرض مدت زمان آن ۱۵ ثانیه است.

Learning

این وضعیت نیز موقت و گذرا است و زمان آن به صورت پیش فرض ۱۵ ثانیه است در این وضعیت سوییچ روی آن اینترفیس شروع به یاد گرفتن یا Learn  کردن MAC-Address  میکند و Frame  های از جنس BPDU  را میتواند ارسال کند ولی همچنان فریم های هاست ها را ارسال نمیکند.

Forwarding

در این وضعیت سوییچ بعد از مشخص کردن نقش اینترفیس های خود تصمیم به Forward  کردن اینترفیس کرده است و فقط در این حالت Frame  های یوزر ها را Forward  میکند.

خب همان طور که میبینید یک اینترفیس حداقل باید ۳۰ ثانیه زمان بگذرد تا وضعیت خود را به حالت فوروارد تغییر دهد و بتواند Frame  ها را ارسال و دریافت کند.

این مدت زمانی بسیار زیادی است در شبکه که اصلا مناسب نیست.

به اون مدت زمان ۳۰ ثانیه یعنی ۱۵ ثانیه Listening  و ۱۵  ثانیه Learning  به اصطلاح Forwarding Delay  می گویند.

سوییچ هیچ وقت نمی تواند از اون ۳۰ ثانیه صرف نظر کند زیرا تصمیمات STP  خود را در اون مدت زمان میگیرد و اگر قرار باشد پورتی را بلاک کند در اون ۳۰ ثانیه با توجه به BPDU  های دریافتی آن پورت را بلاک میکند تا Loop  شکسته شود.

ما برای بهبودی این وضع می توانیم کاری کنیم.

یک سوال آیا مراحل Learning   و Listening  برای جلوگیری از Loop  می باشد؟!!

بله

آیا روتر یا حتی کامپیوتر ها در حالت عادی میتوانند شبکه را در حالت Loop  قرار دهند؟!!

خیر ، مگر اینکه روتر یا کامپیوتر دو اینترفیس داشته باشند و این دو را در حالت Bridge  قرار دهد و هر دو را به سوییچ متصل کند که البته خیلی به ندرت از این قبیل کار ها انجام میدهند.

پس نیازی نیست روی اینترفیس هایی که به سمت کامپیوتر یا روتر می باشد این ۳۰ ثانیه معطلی برای Forward  شدن را داشته باشیم یعنی می توانیم از این ۳۰ ثانیه فقط در این اینترفیس ها صرف نظر کرد.یعنی پورت از حالت Disable  مستقیم به وضعیت Forward  برود.

این کار را با Portfast  انجام میدهند.

روی اینترفیسی که به روتر یا کامپیوتر متصل است دستور زیر را بزنید.(توجه داشته باشید هیچ گاه این دستور را در اینترفیس های متصل به سوییچ یا هاب و یا حتی فایروال نزنید زیرا ممکن است اینترفیس فایروال به صورت لایه دویی باشد.)

Switch(config)#interface fastethernet 0/1

Switch(config-if)#spanning-tree portfast

خب با این کار تا حدی به وضعیت STP  بهبود دادیم.

بریم سر یک موضوع بسیار مهم و حیاتی در STP  یعنی Topology Change

یک سوال

اگر سوییچ Root Bridge  دچار اختلال شود ویا لینک بین یک سوییچ تا Root Bridge  قطع شود و اصلا یک لینک direct  و یا indirect  قطع شود در STP  چه اتفاقی می افتد؟؟!!!

به صورت عادی هر سوییچ هر دو ثانیه باید حداقل روی یک اینترفیس خود BPDU  دریافت کند حالا می تواند مستقیم از Root Bridge  باشد و یا سوییچ های دیگر وضعیت Root Bridge  را در BPDU  خود اعلام کنند.

اول بریم سر موضوع Topology Change Notification

هر سوییچ در بازی STP  اگر هر تغییری روی اینترفیس خود احساس کند یعنی اینترفیس خاموش شود یا اینترفیس جدیدی UP  شود STP  را ازحالت پایداری به حالت نا پایداری تغییر می دهد.

حالت پایداری یعنی تمامی سوییح ها Root Bridge  خود را می شناسند و حداقل یک BPDU  دریافت می کنند و تمامی Role  ها و وضعیت اینترفیس های خود را می دانند.

این حالت  می تواند با قطع شدن یک لینک یا از دست دادن Root Bridge  ، به وضعیت نا پایداری تغییر کند.

وقتی هر یک از اتفاقات بالا رخ دهد ابتدا سوییچ یک بسته BPDU  که معروف به BPDU TCN  است فقط روی Root Port  خود به همسایه اعلام میکند که این بسته در هدر Spanning-tree  خود فقط مقدار BPDU Type  را Topology change notification  قرار می دهد یعنی این BPDU  از نوع BPDU Configuration  نمی باشد.

سپس همسایه به سوییچی که این بسته را ارسال کرده BPDU TCA  می دهد که همان Acknowledgment  است و در هدر STP  در فیلد BPDU Flags  قسمت Topology Change Acknowledgment  را Set  میکند و بهش اعلام میکند که TCN  تو را دریافت کردم سپس همین سوییچ دوباره BPDU TCN  از روی Root Port  خود ارسال می کند و این کار تا انجا ادامه دارد که این بسته به Root Bridge  برسد.

سوییچ ریشه یا Root  با دیدن BPDU TCN  متوجه تغییر در Topology  می شود و بسته BPDU TC  که در هدر STP  در قسمت BPDU Flags  مقدار Topology Change  را Set  میکند و از تمام اینترفیس های خود که در وضعیت DP  هستند ارسال می کند تا تمامی سوییچ ها این BPDU  را دریافت کنند و دیگر سوییچ ها با گرفتن این BPDU  مدت زمان Aging-Time  خود یا همان زمان آپدیت Mac-Table  خود را از ۳۰۰ ثانیه به ۱۵ ثانیه (نصف Forwarding Delay  ) کاهش می دهند.

نکته : سوییچ ریشه یا Root  بسته BPDU TC  را به مدت ۱۵+۲۰  یعنی ۳۵ ثانیه ارسال می کند.(اون ۲۰ ثانیه Max-Age  و ۱۵ ثانیه نصف Forwarding Delay  است).

خب حالا متوجه شدیم که با هر تغییری روی اینترفیس ها روند بالا اتفاق می افتد و در نهایت Aging-Time  به ۱۵  ثانیه کاهش می یابد و بعد از ۳۵ ثانیه دوباره به ۳۰۰ تغییر می کند.

این اتفاق بالا خیلی خوبه ولی با هر قعطی باید این اتفاق بیفتد؟؟!!

مثلا کامپیوتری به سوییچ متصل است که مشکل کانکتوری دارد و پشت سر هم قطع و وصل  می شود و اگر سوییچ بخواهد به ازای هر بار این اتفاق BPDU TCN  ارسال کند باید برای همیشه تمامی سوییچ ها Aging-time  ۱۵ ثانیه داشته باشند که اصلا مناسب نیست برای همین دلیل سوییچ روی اینترفیس های که Portfast  می باشند و یا Type  آنها Shared  است با تغییر روی این اینترفیس ها BPDU TCN  ارسال نمی کند.

پس حالا برای استفاده از Portfast  دو دلیل داریم که مطرح شد.

انواع Type  های اینترفیس ها در STP

P2P  و Shared

سوییچ با Negotiate  کردن روی Duplex  اینترفیس متوجه این موضوع میشود.

یعنی اگر  اینترفیس سوییچ به یک دستگاهی متصل باشد که Full Duplex  است آن اینترفیس را P2P  می داند مانند سوییچ به کامپیوتر یا سوییچ به سوییچ یا حتی سوییچ به روتر.

ولی وقتی اینترفیس سوییچ به یک دستگاه Half Duplex  متصل باشد Type  اینترفیس را Shared  در نظر میگیرد.

برای مشاهده Type  های اینترفیس ها در STP  از دستور زیر استفاده کنید.

برای تغییر دستی Type  اینترفیس از دستور زیر استفاده کنید.

Switch(config)#interface fastethernet 0/1

Switch(config-if)#spanning-tree link-type [Shared/Point-to-Point]

 

قبول دارید الان STP  داریم که اوضاع بهتری دارد زیرا با تغییرات روی اینترفیس های Portfast  وضیعت را به عنوان نا پایدار نمی داند که بخواهد BPDU TCN  ارسال کند.

ولی هنوز مشکل داریم در STP

به مثال زیر دقت کنید.

تمامی اینترفیس ها در Vlan 1  می باشد یعنی فقط STP را برای یک Vlan داریم.

در مثال بالا SW-1  به دلیل Priority  بهتر Root Bridge  شده است  و همچنین اینترفیس Fa0/2  از SW-3  به علت اینکه Priority  بدتری نسبت به SW-2  دارد، SW-3  اینترفیس Fa0/2  خود را بلاک و Fa0/2  از SW-2  نقش DP  و وضعیت Forward  را دارد.

همچنین در سوییج های ۲ و۳ روی اینترفیس های Fa0/3  خود Portfast  را فعال کرده ایم به دلایلی که بالا مطرح کردیم.

در این هنگام STP  در حالت پایدار است و PC-1  و PC-2  می توانند با یکدیگر ارتباط داشته باشند زیرا آدرس های مک هر دو PC  در سوییچ ها Learn  شده و ترافیک بین این دو PC  با توجه به شبکه ما از SW-1  عبور میکند.

حالا فرض کنید که اینترفیس Fa0/1  از SW-3  یا اینترفیس Fa0/1  از SW-1  دچار ایراد شود.

در این هنگام هر دو PC  نمی توانند با یکدیگر ارتباط داشته باشند زیرا ترافیک های این دو PC  از SW-1  عبور میکرد و اینترفیس Fa 0/2  از SW-3  در وضعیت بلاک قرار داشته است.

SW-3  با از دست دادن روت پورت خود (Fa0/1)  سریعا Fa0/2  خود را که نقش یا Role  آن بلاک یا (Alternate) بود راRoot Port  میکند(سوییچ باید Root Port  داشته باشد حتی اگر یک اینترفیس داشته باشد.) (اگر چندین اینترفیس داشته باشد آن اینترفیسی که هزینه کمتری دارد برای رسیدن به Root Bridge را روت پورت میکند) وبعد از Root Port  کردن Fa0/2 ، فریم BPDU TCN  را از روی همان اینترفیس ارسال میکند تا تغییرات Topology  را به دیگر سوییچ ها مخصوصا Root Bridge  اعلام کند که در نهایت باعث می شود Root Bridge  بسته BPDU TC  ارسال کند که Aging-Time همه سوییچ ها ۱۵ ثانیه شود. .بعد از این که Fa0/2  نقش Root Port  را می گیرد وضعیت آن به Listening  و سپس Learning  تغییر می کند مراحل Listening  و Learning  جمعا ۳۰ ثانیه طول میکشد و بعد از ۳۰ ثانیه اینترفیس در وضعیت Forward قرار میگیرد. یعنی ۳۰ ثانیه دو PC  نمی توانند ترافیک برای هم ارسال کنند و حتی اگر SW-1  به روتری متصل باشد و آن روتر به اینترنت وصل باشد ، PC-2  تا ۳۰ ثانیه نمی تواند به اینترنت وصل بشه تا زمانی که اینترفیس Fa0/2  فوروارد شود.

نکته : دقت داشته باشید که در این هنگام SW-1  یا ریشه با دیدن BPDU TCN  فریم BPDU TC  را ارسال کرده و سوییچ ها Aging-Time  خود را به ۱۵ ثانیه کاهش داده اند.

به هدف کاهش دادن آن ۳۰ ثانیه درSW-3  برای فوروارد کردن Fa0/2  خود بعد از، از دست دادن Root Port  خود  سیسکو از Uplink Fast  استفاده میکنند. یعنی در سوییچ های لایه  Access  و با فعال سازی آن SW-3  با از دست دادن Root Port  خود اینترفیس  Fa0/2  خود را بلافاصله Root Port  و فوروارد می کند(یک جور بکاپ برای Root Port) ومراحل Listening  و Learning  را سپری نمیکنند.

دستور فعال سازی Uplinkfast در سیسکو :

Switch(config)#spanning-tree uplinkfast

دستور بالا را فقط در سوییچ های Access بزنید.

حتی سوییچ های سیسکو این قابلیت را دارند که Frame  های تولید کنند که آدرس Source  آنها آدرس هایی باشد که قبلا Learn  کرده اند در Mac-Table  خود. مثلا در مثال بالا خود SW-3  یک فریم با Source Mac-address  کامپیوتر ۲ که BBBB.BBBB.BBBB  است و با آدرس مک مقصد مالتی کست تولید می کند و به SW-2  می فرستد تا SW-2  که تا قبل از قعطی آدرس مک PC-2  را از اینترفیس Fa0/1  خود Learn  کرده بود را در Mac-Table  خود آپدیت کرده و از اینترفیس Fa0/2  یاد بگیرد و همچنین SW-1  آدرس مک PC-2  را از Fa0/2  یاد بگیرد.

نکته :

Uplink Fast  را روی سوییچ های Access  فعال کنید زیرا بعد از اجرا آن روی سوییچ به صورت اتوماتیک Priority  سوییچ به ۴۹۱۵۲   تغییر کرده و به مقدار Cost  اینترفیس ها ۳۰۰۰ واحد  اضافه میکند.

نکته :

دقت داشته باشید با قعطی اینترفیس Fa0/1  از SW-3  باز این سوییچ BPDU  روی Fa0/2  خود دریافت می کرد و ادعای Root Bridge  شدن نکرد.

حال به به مثال زیر دقت کنید که شرایطی مانند مثال بالا را دارد.

تمامی اینترفیس ها در Vlan 1  می باشد یعنی فقط STP را برای یک Vlan داریم.

حالا فرض کنید اینترفیس Fa0/2  از SW-1  یا اینترفیس Fa0/1  از SW-2  دچار ایراد شود.

این بار قضیه فرق دارد زیرا تا قبل از قعطی SW-3  از اینترفیس Fa0/2  خود هیچ BPDU  ای به SW-2  ارسال نمی کرد چون پورت بلاک BPDU  ارسال نمی کند.

این بار هم PC-1  و PC-2  نمی توانند با یکدیگر ارتباط داشته باشند و PC-1  دسترسی به اینترنت را از دست داده زیرا هر دو این ترافیک ها از اینترفیس Fa0/2  از SW-2  به SW-1  ارسال میشد که الان قطع می باشد.

این قطعی ۵۰  ثانیه طول میکشد!!

چرا؟؟؟

چه فرقی دارد با قعطی قبلی؟؟!!

در این مدل قعطی ها SW-2  هیچ BPDU  ای دریافت نمی کند و بلافاصله ادعای Root Bridge  شدن میکند به SW-3  حالا SW-3  بعد از ۲۰  ثانیه (Max-Age)  یا بهتر بگیم بعد دریافت ۱۰ پیغام ادعای روت شدن SW-3  پیغام RLQ  یا Root Link Query  ارسال میکند تا از وضعیت Root Bridge  اصلی یعنی SW-1  با خبر می شود.

SW-3  که همچنان دارد BPDU  بهتری از SW-1  دریافت می کند و متوجه ادعای کذب SW-2  میشود اینترفیس Fa0/2  خود را از وضعیت بلاک به وضعیت Listening  و Learning  و سپس Forward  قرار میدهد  تا SW-2  بتواند BPDU  های SW-1  را دریافت کند و بعد از گذشت ۳۰ ثانیه SW-2  اینترفیس Fa0/2  خود را Root Port  میکند.

جمع این قعطی ۵۰ ثانیه است یعنی SW-2  ادعای Root Bridge  میکند و وقتی SW-3  ادعای آن را دریافت میکند بعد از ۲۰ ثانیه به حرف آن گوش می دهد و  با RLQ  وضعیت Root Bridge  را چک میکند و بعد از اطمینان از زنده بودن Root Bridge  پورت خود را از حالت Block  به وضعیت Listening  و Learning  می برد.

در سیسکو این زمان را تا ۳۰ ثانیه میتوان کاهش داد با فعال سازی Backbone Fast  روی تمام سوییچ ها. با فعال سازی آن مرحله Max-Age  را در SW-3 نظر نمیگیرد یعنی با اولین ادعای SW-2  برای Root Bridge  شدن SW-3  بلا فاصله اینترفیس Fa0/2 خود را از بلاک در می آورد و به وضعیت Listening  و Learning  قرار می دهد  تا SW-2  از وجود Root Bridge  واقعی با خبر شود و سپس اینترفیس Fa0/2  از SW-2  فوروارد میشود و ترافیک های PC-1  توسط SW-3  به SW-1  میرسد.

دستور فعال سازی Backbonefast در تمام سوییچ ها :

Switch(config)#spanning-tree backbonefast

دستور بالا را در تمامی سوییچ ها  بزنید.

Backbone Fast  مدت زمان  Convergence  شدن شبکه را تا ۳۰ ثانیه کاهش می دهد با حذف Max-Age.

نکته : در اینجا نیز سوییچ ها BPDU TCN  ارسال می کنند از روی Root Port  خود و سوییچ ریشه با دیدن BPDU TCN  فریم BPDU TC  می فرستد تا Aging-Time  را به ۱۵  ثانیه برساند.به طور کلی با هر تغییر این پیغام BPDU TC  باید در شبکه پخش شود که این کار را Root Bridge  با گرفتن BPDU TCN  از دیگر سوییچ ها انجام میدهد.

به طور کلی می توان بزرگترین ضعف پروتکل STP 802.1d  را وابستگی به زمان دانست که البته با استفاده از ابزار هایی مانند Portfast , Uplinkfast  و BackboneFast  در سیسکو می توان این وابستگی را کم کرد.

دلیل این که امروزه از پروتکل Rapid STP  استفاده می کنند به دلیل اینکه این پروتکل وابستگی به زمان ندارد.

 

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

عجله نکنید این داستان ادامه دارد.

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

Leave a Comment