صادق شعبانی
کارشناس ارشد سیسکو

پروتکل STP (Spanning Tree) چیست و چگونه کار میکند؟

تمام مباحث و سرفصل های سیکو یک طرف ، پروتکل STP هم یک طرف ، از روزی که وارد فیلد CCNA می شویم تا آخرین روزی که انشالله مدرک CCIE می گیریم ، این پروتکل محبوب در کنار ماست!محبوبیت این پروتکل از آنجا ناشی می شود که برعکس سایر سرفصل ها ،پروتکل STP پنج (5) صفحه توضیح دارد و یک خط کامند!

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

در حالی که در سایر مباحث حداقل اگر یک صفحه خواندیم 2 تا خط کامند می زنیم!  ( به عبارت دیگر اگر کامندهای کانفیگ کل مباحث STP را یکجا بنویسم به زور به 10 خط میرسد حال آنکه برای هر خط چندین صفحه توضیح وجود دارد!) اما آخرش بعد از خواندن STP می فهمیم مهمترین کارش پیش گیری از LOOP است.

اگر این مطلب را دنبال نمی کنید همین قدر که بدانید جناب سردار STP چه لطفی به جامعه شبکه ، که همان پیشگری از LOOP است میکند کفایت می کند. STP را ساده می گیریم ، چون دوست ماست پس دنبال بهانه ای برای شروع این دوستی خواهیم رفت.اینتفریس های سوئیچ های سیسکو ، رفتاری مثل خرداد ماهی ها دارند ، درست مثل من که خرداد ماهی ام!نشان به آن نشان که عدد روز و ماهش هم یکیست!

افزونگی چیست؟

خرداد ماهی ها به یک چیز معروفند و آن این است که از همه چیز 2 تا دارند ، خودکار و قلم و جزوات و دفترهای مثل هم ، اما اگر دقیق شویم میبینیم که این رفتار خرداد ماهی ها را، خیلی آدم ها دارند و اصلا" این که برای یک چیز ،چند چیز جایگزین وجود داشته باشد قانون نانوشته ی جوامع انسانی است! بیائید کمی دقیق تر به اطراف خود نگاه کنیم. ساختمان های سربه فلک کشیده ای که در کنار راه پله خود ، آسانسور و بعضی راه پله اضطرای هم دارند که باعث میشود شخص از سریعترین روش به منزل خود برسد در حالی که شاید تنها یک روش ( راه پله ) کفایت میکرد.

3


4


می بینید؟ قانون افزونگی و اینکه حداقل 2 مسیر برای دسترسی ( به یک نقطه ) وجود داشته باشه تا اگر به هر دلیل مسیر اول از دست رفت ، مسیر دوم همچنان قابل استفاده باشد ، مطلبی ملموس برای همه ماست که خیلی از ما با آن برخورد داشته ایم.مثال دیگر اینکه مثلا" سر جلسه امتحان 2 خودکار می بردیم مخصوصا" سر جلسه ریاضی که باید برای اثبات یک فرمول چندین صفحه پشت و رو می نوشتیم!همه اینها مثالهایی از کاربرد های عملی افزونگی در زندگی ما بود اما این قانون در مورد سوئیچ ها هم صدق می کند.

به عبارت ساده تر ، افزونگی یعنی داشتن مسیر یا راه حل جایگزین که با توجه به نوع روش ، متفاوت است مثلا" ما در بین سوئیچ ها برای ارتباط بین 2 کلاینت ، نوع افزونگی ما از نوع ( لینک ) مسیر است پس من بعد هر جا در سوئیچینگ صحبت از افزونگی کردم بدانید که منظور من از افزونگی ، داشتن مسیر دوم و جایگزین است.

افزونگی در سوئیچ های سیسکو

در شبکه برای حفظ زمان جوابگوی و UPTIME بالا ار چند نوع افزونگی استفاده می شود.

  • LINK REDUNDANCY
  • GATEWAY REDUNDANCY
  • PATH REDUNDANCY

افزونگی نوع اول ( LINK REDUNDANCY ) چیست؟

در این روش برای ارتباط بین 2 سوئیچ از 2 لینک ( و یا بیشتر ) استفاده می شود.

link


افزونگی نوع دوم ( GATEWAY REDUNDANCY ) چیست؟

در این حالت ، شبکه من نسبت به شبکه قبلی مهم تر بوده و بین مبدا و مقصد بیش از 2 سوئیچ می گذارم و همانطور هم که در تصویر زیر پیداست اگر لینک مسیر 1 به هر دلیل DOWN شد همچنان از لینک مسیر دوم ، کلاینت ها به سرور دسترسی خواهند داشت.هر چند این مسیر طولانی تر است اما ارتباط همچنان برقرار است.

gateway


تذکر : در شبکه ها ، برای سوئیچ هایی که به سرور ها متصل هستند علاوه بر سوئیچ اول ، یک سوئیچ هم به عنوان سوئیچ REDUNDANT قرار می دهند تا باهم در شبکه کار کنند.

افزونگی نوع سوم ( PATH REDUNDANCY ) چیست؟

در این حالت بین 2 کلاینت ، بیش از یک مسیر داریم که اگر مسیر اول DOWN شد یک مسیر BACKUP داشته باشیم.

path

افزونگی چه مشکلاتی ایجاد می کند؟

پس تا به اینجابا انواع افزونگی اشنا شدیم :
1. LINK REDUNDANCY
2.GATEWAY REDUNDANCY
3.PATH REDUNDANCY
اما این افزونگی علی رغم تمام نقاط قوت و ایجاد مسیر دوم در سوئیچ ها باعث یکسری مشکلات می شوند.در کل ما 3 نوع مشکل در افزونگی سوئیچ ها داریم :

BROADCAST STORM چیست؟

کامپیوتر PC0 یک داده برادکست با DESTINATION MAC FFF.FFF.FFF به سمت سوئیچ ارسال میکند.سوئیچ با دریافت این بسته و تشخیص این که این بسته ، از نوع برادکست است ، آنرا روی همه لینک هایش ارسال می کند.

8


بیائید بسته ی ارسالی را روی یکی از لینک ها بررسی کنیم! بسته ی برادکست B1 به سمت سوئیچ مقابل می رود و سوئیچ مقابل با دریافت این بسته ، چون بسته را از نوع برادکست می بیند آنرا روی تمام لینک هایش ارسال میکند.بسته ی ارسالی از جانب سوئیچ دوم وارد سوئیچ اول می شود و چون برادکست است مجدد روی لینک هایش FORWARD می شود و این پروسه به همین شکل ادامه پیدا کرده و تا همیشه در شبکه می چرخد.

9


به حالتی که داده برادکست بصورت همیشگی و سرگردان در شبکه وجود خواهد داشت و از بین نمی رود اصطلاحا" توفان برادکست (BROADCAST STORM ) می گویند که ناشی از وجود LOOP در شبکه است. پیشنهاد می شود جهت درک این مشکل ویدیوی کوتاه زیر را ببینید

MACTABLE INSTABILITY چیست؟

کامپیوتر PC-2 ، دیتائی را به سمت سوئیچ SW1 ارسال میکند.سپس SW1 روی پورت FA 0.3 آن دیتا را به سمت PC-3 ارسال می کند و SW2 در جدول مک خودش روی پورت FA0.3 ، مک آدرس کامپیوتر PC-2 را یاد می گیرد :

10


11


در نوبت بعد ؛ کامپیوتر PC-2 ، دیتائی را به سمت سوئیچ SW1 ارسال میکند.اینبار SW1 روی پورت FA 0.4 آن دیتا را به سمت PC-3 ارسال می کند . SW2 در دفعه دوم که بسته ی ارسالی از سمت PC-2 را روی پورت FA 0.4 دریافت کرد ، پورت FA 0.3 را از جدول مک خود حذف و پورت جدید را جایگزین آن می کند.

12


در واقع sw2 ، در هر بار نوبتی که بسته ارسالی از سمت pc 2 را روی یک پورت دریافت کند ، درجدول مک خود ، مک پورت قبلی را حذف و مک پورت جدید را ثبت می کند. این حالت به ناپایداری جدول مک مشهور است.

multiple frame transmission چیست؟

کامپیوتر pc-3 قصد دارد یک دیتای unicast به سمت pc-2 ارسال کند. سوئیچ SW2 در جدول مک خودش ، برای ارسال دیتا به سمت PC-2 ، دو (2)مسیر دارد را بلد است که این در نهایت به این منجر می شود که دیتا 2 بار به دست PC2 برسد.

multiple



راه حلی برای مشکلات پیش رو :

تا به اینجا برای افزونگی ، از هر نوعی که باشد 3 تا مشکل برای ما ایجاد شد :
1.BROADCAST STORM
2.MACTABLE INSTABILITY
3. multiple frame transmission
اگر نگاه ما به این مسئله ریشه ای باشد می بینیم که تمام این اتفاقات ناشی از وجود loop و ایجاد یک دور نامتنهاهی در مسیرهای بین سوئیچ هاست. اگر ما بتوانیم گراف سوئیچ ها را تبدیل به درخت پوشا کنیم در واقع loop را ازبین برده ایم!
درخت پوشا مفهومی است برای حل مشکلات افزونگی که از درخت بودن آن متوجه گرافی می شویم که در آن دور وجود ندارد و از پوشا بودن آن به این درک می رسیم که بین 2 سوئیچ حتما" و فقط یک مسیر وجود داشته باشد.

ایده درخت پوشا سبب ایجاد پروتکلی با همین نام تحت عنوان SPANNING TREE PROTOCOL شد.این پروتکل در لایه 2 کار کرده و از ایجاد LOOP جلوگیری ( پیش گیری ) میکند.اما به یاد داشته باشید اگر LOOP ایجاد شود کاری از آن ساخته نیست و باید یک لینک را بصورت فیزیکی قطع کنید.

ایده افزونگی ( لینک های موازی ) در کنار پروتکل STP باعث می شود که در شبکه ما LOOP وجود نداشته باشد چرا که از ایجاد آن جلوگیری میکند.اما با این حال از STP انتظار نداشته باشید که به شما در شبکه بهترین PERFORMANCE را بدهد و این ما هستیم که باید با OPTIMIZE کردن این پروتکل سبب افزایش PERFORANCE در شبکه شویم که در جای خود به آن اشاره می شود.

پروتکل STP ( درخت پوشا ) چگونه کار می کند؟

به یاد داشته باشید که سوئیچ ها مثل ما (انسانها) که با هم از طریق شبکه اجتماعی( توسینسو ) در ارتباط هستیم و یا به زبان مادری خود با هم صحبت می کنیم ؛ آنها نیز با یکدیگر نامه نگاری می کنند و در آن ، پی نوشت ها و رو نوشت هایی را به آن نامه ها اضافه کرده و به سمت یکدیگر ارسال می کنند.

سوئیچ ها بین خود بسته هایی رد و بدل می کنند تحت عنوان BPDU که از طریق آن از حال یکدیگر با خبر می شوند . برای اینکه جلوی ایجاد حلقه در شبکه را بگیرند بعد از یک انتخابات کاملا" رقابتی ، یکی از آنها لیدر شده و مابقی گوش به فرمان او هستند . در این بین هر کدام از سوئیچ ها و پورت هایشان پس از یک زمان مشخص دارای القاب و عناوینی می شوند و هر کدام مسئولیتی را جهت جلوگیری از ایجاد حلقه بر عهده می گیرند.

STP چگونه کار می کند؟ ( بصورت خلاصه )

  1. یکی از سوئیچ ها بعنوان سوئیچ ریشه انتخاب می شود و پورت های آن دارای نقشی می شود که به سایر سوئیچ ها BPDU ارسال میکند.
  2. براساس الگوریتمی در سوئیچ های باقی مانده ، یک پورت و نزدیک ترین پورت به سوئیچ اصلی به عنوان پورت اصلی در نظر گرفته می شود. این پورت وظیفه دریافت BPDU از سمت سوئیچ روت را بر عهده دارد.
  3. در بین SEGMENT های باقی مانده یک پورت باید نقش نرمال و وضعیت FORWARD و پورت دیگر در نقش غیر فعال و BLOCK قرار گیرد.

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

یک سوئیچ ، سوئیچ روت ( همان لیدر ) می شود و می گوید من بهترین شرایط برای لیدر شدم را دارم.2 سوئیچ دیگر مستقیما" از وی حرف شنوی دارند. از بین 2 سوئیچ باقی مانده ، یک معاون هم انتخاب شده و سوئیچ دیگر را در جریان تصمیمات سوئیچ روت قرار می دهد. سوئیچ دومی که من از آن به عنوان معاون یاد کردم ، تحت عنوان DESIGNATED SWITCH (سوئیچ منتخب )شناخته می شود.این که سوئیچ سوم ، هم بصورت مستقیم از سوئیچ روت و هم از طریق معاون با روت در ارتباط است به این خاطر است که اگر یک روز( سوئیچ سوم ) ارتباطش با سوئیچ روت را از دست داد ، از طریق مسیر جایگزین ( سوئیچ DESIGNATED SWITCH )با آن ( سوئیچ روت ) در ارتباط باشد. (توضیح اینکه منظور من از معاون ، بحث ترجمه لغت نبوده و صرفا" جهت درک این کلمه را به کار بردم )

مراحل کار پروتکل STP بصورت فنی

  1. سوئیچ با کمترین BID به عنوان سوئیچ اصلی یا همان ROOT BRIDGE مشخص می شود.تمام پورتهای این سوئیچ در نقش DESIGNATED PORT و وضعیت FORWARD قرار می گیرد.
  2. در بین تمام سوئیچ های باقی مانده فقط یک پورت و نزدیکترین پورت به سوئیچ روت ، به عنوان پورت اصلی انتخاب می شود.( معیار نزدکی براساس COST است . )
  3. در بین SEGMENT های باقی مانده باید یک پورت DESIGNATED PORT و پورت مقابل آن BLOCK شود.
14



SPANNING TREE PROTOCOL

پروتکل STP در سطح یک شبکه ، همانطور که گفته شد با بلاک کردن یکسری لینک ها سبب جلوگیری از LOOP می شود و مطابق آنچه که گفته شد شکل زیر را برای ما تداعی می کند.

stp tree

مروری بر پروتکل STP

این پروتکل به 802.1D یا IEEE 802.1D و (CST ( COMMON SPANNING TREEنیز مشهور است که یک پروتکل استاندارد است که از طرف IEEE ارائه شد و همانطور که گفته شد هدف آن ، جلوگیری از ایجاد LOOP در شبکه می باشد.

CHESS



تعاریف

تعریف 1 - به هر سوئیچ یک BRIDGE گفته می شود.
تعریف 2 – به هر سوئیچ یک مشخصه تحت عنوان BID که به فرمت زیر است ، اختصاص داده میشود.

BID = 32768 . BASE MAC


برای دیدن مک هر سوئیچ کافیست که از کامند زیر استفاده کنیم :

Switch#SHOW VErsion 
Base ethernet MAC Address: 0001.6397.8369

در واقع می توان گفت که BID این سوئیچ برابر با مقدار زیر است :

BID =32768 . (0001.6397.8369)


تذکر : عدد 32768 ، مقدار priority سوئیچ می باشد.

یادآوری مراحل 3 گانه

1.سوئیچ با کمترین BID به عنوان سوئیچ اصلی یا همان ROOT BRIDGE مشخص می شود.تمام پورتهای این سوئیچ در نقش DESIGNATED PORT و وضعیت FORWARD قرار می گیرد.

2.در بین تمام سوئیچ های باقی مانده فقط یک پورت و نزدیکترین پورت به سوئیچ روت ، به عنوان پورت اصلی انتخاب می شود.( معیار نزدکی براساس COST است . )

3.در بین SEGMENT های باقی مانده باید یک پورت DESIGNATED PORT و پورت مقابل آن BLOCK شود.
حال بیائید ، تک تک مراحل را قدم به قدم جلو رفته و با نحوه انتخابات آشنا شویم.

مرحله اول : انتخاب سوئیچ روت

سوئیچ با کمترین BID به عنوان سوئیچ اصلی یا همان ROOT BRIDGE مشخص می شود.تمام پورتهای این سوئیچ در نقش DESIGNATED PORT و وضعیت FORWARD قرار می گیرد.

به یاد داشته باشید در ابتدا زمانی که سوئیچ ها را به هم متصل می کنید هرکدام ادعا می کنند که روت هستند و روی پورت هایشان BPDU ارسال می کنند.محتوای BPDU را در تصویر زیر می بینید.

1


2


در زمان ادعای سوئیچ ها مبنی بر اینکه root هستند مقادر root bridge id & senders bridge id یکسان و مقدار cost نیز برابر با 0 است.

3


در قسمت قبل در مورد اینکه سوئیچ ها با هم نامه نگاری کرده ( و از طریق BPDU با هم در ارتباط هستند ) و اینکه گاهی روی نامه به هم رو نوشت می زنند صحبت شد.تصور کنید محتوای BPDU از طرف سوئیچی که می تواند روت باشد به صورت زیر است :

1


حال اگر سوئیچی ، بسته ی BPDU ای دریافت کند ( نامه ای دریافت کند ) که در آن قید شده مقدار BID سوئیچ ارسال کننده کمتر از مقدار خود سوئیچ دریافت کننده است ، اعای روت بودن خود را کنار گذاشته و BPDU سوئیچ روت را روی پورتهایش FORWARD می کند.

2


( البته در نامه فوق فقط از تمام مواردی که در BPDU وجود دارد فقط 3 مورد را ذکر کرده ام که برای درک انتخاب سوئیچ روت کافی می باشد.)

4


در این مرحله و قبل از اینکه سوئیچ روت مشخص شود ، هر سوئیچ در این علاوه بر اینکه BPDU ارسال میکند ، BPDU های دریافتی را نیز پردازش می کند که نهایتا" دراین انتخابات رقابتی سوئیچ روت مشخص می شود.

اما بیائید کمی دقیق تر به این موضوع نگاه کنیم ، شکل زیر را در نظر بگیرید :

1


در مرحله اول برای اینکه سوئیچ روت انتخاب شود گفته شد که :
سوئیچ با کمترین BID به عنوان سوئیچ اصلی یا همان ROOT BRIDGE مشخص می شود.تمام پورتهای این سوئیچ در نقش DESIGNATED PORT و وضعیت FORWARD قرار می گیرد.

مقادیر BID به شرح زیر می باشد :

BID SW1 : 32768 .( 0001.43EC.9121)
BID SW2 : 32768 .( 0090.212A.C851)
BID SW3 : 32768 .( 0050.0F3D.30B3)

همانطور که مشخص است هر 3 سوئیچ در مقدار PRIORITY یکسان هستند که عدد آن 32768 است.در ادامه قیاس BID کوچکتر ، مقادیر مک با هم مقایسه می شوند ، توجه شود که این مقدار در مبنای 16 می باشد . برای اینکه این مقدار رو بصورت دهدهی دیده تا کارمان در قیاس راحت شود ( می توانیم آنرا از طریق ماشین حساب به دهدهی تبدیل کنیم ).

(0001)16=(1 )10
(0090)16=(144)10
(0050)16=(120)10

1


2


در این انتخابات ، همانطور که دیدیم سوئیچ با کمترین BID بعنوان سوئیچ روت انتخاب می شود. ( برای درک BID در مراحل بعد از سناریو با BID متفاوت استفاده خواهد شد).


مرحله دوم پروتکل STP

در بین تمام سوئیچ های باقی مانده فقط یک پورت و نزدیکترین پورت به سوئیچ روت ، به عنوان پورت اصلی ( ROOT PORT ) انتخاب می شود.( معیار نزدکی براساس COST است . ) در این مرحله سوئیچ روت انتخاب شده و پورتهای سوئیچ روت همگی DESIGANATED PORT هستند که به سمت سایر سوئیچ ها ،BPDU های ارسالی سوئیچ روت را با تغییر در مقدار COST و SENDER BRIDGE ID ، را FORWARD می کنند. مکانیزم پروتکل STP اینطور ایجاد میکند که با FORWARD کردن BPDU ها نقش پورت ها و در این قسمت ، ROOT PORT مشخص شود .

1


همانطور که در تصویر فوق پیداست پورتهای DP همگی ارسال کننده BPDU و پورتهای RP یا BLOCK همگی دریافت کننده BPDU هستند.

8


در این مرحله مفهومی تحت COST مطرح می شود که به سرعت اینترفیس سوئیچ گره خورده است.اما این دقیقا" به چه معناست ؟

11


همانطور که در تصویر فوق مشخص است سوئیچ روت ، BPDU هایی با COST = 0 تولید و روی پورت های خودش ارسال می کند.سوئیچ SW2 & SW3 برای محاسبه هزینه تا سوئیچ روت ، مقدار COST در BPDU دریافتی را با COST آن اینترفیسی (پورتی ) که با آن BPDU را دریافت کرده است جمع کرده و مقدار COST جدید سوئیچ تا سوئیچ را بدست آورده و آنرا برای مابقی سوئیچ ها ارسال می کند. پس حواستان باشد که COST مفهومی گره خورده به خود اینترفیس پورت سوئیچ است که COST آن طبق سرعت محاسبه می شود. قبلا" یک تصویر هم در یکی از ویدیوها و لابه لای جزوات گذاشته بودم که این مطلب را بیان می کند.

1


در جدول زیر مقدار COST که براساس سرعت اینترفیس است را مشاهده می کنید:

1


در مرحله دوم قرار ما براین بود که در بین تمام سوئیچ های باقی مانده فقط یک پورت و نزدیکترین پورت به سوئیچ روت ( با COST کمتر )، به عنوان پورت اصلی ( ROOT PORT ) انتخاب می شود.

12


لینک هایی که از سمت SW3 و SW2 ( پورتهای FA0.1 از دو سوئیچ ) که به سوئیچ SW1 متصل هستند دارای سرعت 100MBPS و COST19 هستند که می توانند در نقش ROOT PORT تعریف شوند.ولی برای درک بهتر موضوع به تصویر زیر نگاه کنید

1



سوئیچ SW4 دارای پورت ETHERNET با سرعت 10MBPS است که طبق جدول COST آن برابر با 100 است و این یعنی COST این پورت تا سوئیچ روت ( از لینک مستقیم به سوئیچ روت ) برابر با 100 می باشد. واین در حالی است که همان سوئیچ از مسیر دیگر به سمت سوئیچ روت دارای COST 57 یعنی (19*3=57 ( می باشد که نسبت به مقدار COST 100 کمتر بوده و آن پورت ها می توانند ROOT PORT باشند.

تذکر 1 :
برای انتخاب ROOT PORT و DESIGNATED PORT ، سه ملاک وجود دارد که به ترتیب زیر می باشد :

  1. 1.COST کمتر  :  پورت سوئیچ با کمترین هزینه ( کمترین COST ) تا R.B
  2. SENDER BRIDGE ID کمتر  : سوئیچ ارسال کننده BPDU که دارای BID کمتر نسبت به سوئیچ دیگر است.
  3. SENDER PORT ID کمتر  : لینک متصل به آن پورت سوئیچی که BPDU ارسال می کند و پورت ارسال کننده اش ، شماره اش کمتر است.

در CISCO LAB مربوطه در مورد این موضوع و ملاک ها در توپولوژی های مختلف مفصل صحبت خواهیم کرد ولی اینجا و در بحث آموزش ، تنها به یک مثال اکتفا شده است.

تذکر 2 :
هر کدام از لینک هایی که 2 سوئیچ را به یکدیگر متصل می کنند سرعت خاص خود را دارند ( مثلا" 2 طرف FAST ETERNET و یا 2 طرف GIG هستند .) و در 2 سر لینک هر کدام می توانند با یکدیگر مذاکره کنند.( از مباحث مقدماتی به یاد داریم که می توانستیم سرعت هر اینترفیس را بصورت AUTO تنظیم کنیم ) حال اگر یک سر لینک GIG و سمت دیگر FAST باشد این لینک بصورت FAST ETHERNET کار می کند.

پیشنهاد می شود که اینترفیس 2 طرف یک لینک از یک مقدار COST استفاده کنند ( دارای یک سرعت که نهایتا" باعث ایجاد COST یکسان می شود ) ولی همانطور که گفته شد COST مفهومی گره خورده به خود اینترفیس پورت سوئیچ است که COST آن طبق سرعت محاسبه می شود ولی این مقدار قابل تغییر می باشد.


مرحله سوم پروتکل STP

در بین SEGMENT های باقی مانده یک پورت باید DP و پورت دیگر BLOCK شود.
همانطور که گفته شد برای انتخاب DP و RP سه ملاک وجود دارد که باید مد نظر قرار گیرندکه به ترتیب :
1.COST کمتر
#پورت سوئیچ با کمترین هزینه ( کمترین COST ) تا R.B

SENDER BRIDGE ID.2 کمتر
#سوئیچ ارسال کننده BPDU که دارای BID کمتر نسبت به سوئیچ دیگر است.

3.SENDER PORT ID کمتر
#لینک متصل به آن پورت سوئیچی که BPDU ارسال می کند و پورت ارسال کننده اش ، شماره اش کمتر است.

بیائید در خصوص این معیارها کمی به بحث و گفتگو بنشینیم!با فرض اینکه سناریو ما بصورت زیر باشد :

14


در تصویر فوق همانطور که پیداست سوئیچ روت و ROOT PORT ها مشخص شده است و حالا نوبت آن رسیده که نقش پورت های FA0.3 در سوئیچ های SW2 و SW3 نیز مشخص شود که یکی باید DP و دیگری جهت جلوگیری از LOOP باید بلاک ( BLOCK ) باشد.

حال بیائید ملاک ها را تک تک بررسی کنیم!

1.COST کمتر
#پورت سوئیچ با کمترین هزینه ( کمترین COST ) تا R.B
در این قسمت ، مقدار COST هر 2 سوئیچ ، تا سوئیچ روت یکسان و برابر با 19 است .
این ملاک نمی تواند مشخص کننده DP باشد ، سراغ ملاک دوم می رویم.

SENDER BRIDGE ID.2 کمتر
#سوئیچ ارسال کننده BPDU که دارای BID کمتر نسبت به سوئیچ دیگر است.

برای اینکه بدانیم BID کدام سوئیچ کمتر است باید از کامند SHOW VERSION کمک بگیریم که در خروجی آن دستور باید دنبال خط Base ethernet MAC Address باشیم.قبلا" گفته شد که BID سوئیچ ترکیبی از مقدار PRIORITY و مک بصورت زیر است :

BID = 32768 . ( BASE MAC )

با این توصیفات و مد نظر قرار دادن BID :

BID


BID SW2 : 32768.(000D.BDE5.2B1A)

BID SW3 : 32768.( 00D0.D3E6.7B1A)

همانطور که می بینیم هر 2 سوئیچ در مقدار PRIORITY مشترک است و حالا باید سراغ مقایسه بین مک آدرس ها برویم:

(000D)16= (13 )10
00D0)16=(208 )10

پس BID سوئیچ SW2 کوچکتر است که می تواند پورت FA0.3 درنقش DESIGNATED PORT و پورت مقابل آن BLOCK باشد.

1


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

خلاصه مراحل 3 گانه


3L




برای دیدن عکس در ابعاد بزرگتر روی تصویر راست کلیک کرده و طبق راهنمائی زیر عمل نمائید :

48

آشنایی با برخی مفاهیم

در این قسمت می خواهیم در خصوص بعضی آیتم ها که در 2 قسمت قبل بصورت خیلی کلی با آنها آشنا شدیم ، بیشتر آشنا شویم.

پروتکل STP

یک پروتکل لایه 2 ای است که از ایجاد LOOP درشبکه جلوگیری میکند.در پروتکل STP ، انتخاب سوئیچ روت کاملا" رقابتی است. به تصویر زیر با دقت نگاه کنید و آنرا در ذهن خود بسپارید :

STP



ROOT BRIDGE یا همان سوئیچ روت ، سوئیچی است که بهترین شرایط را برای ROOT BRIDGE شدن دارد و هر زمان و هر موقع که به هر دلیل از دست برود ، سوئیچ های بعدی که حائز شرایط هستند بلافاصله جایگزین آن خواهند شد اما اگر در هر لحظه ، سوئیچی وارد شبکه شود و بهترین شرایط را برای روت شدن داشته باشد بلافاصله ، ROOT BRIDGE خواهند شد.

تمام سوئیچ ها در این پروتکل ، بلافاصله پس از قطع اتصال خود به سوئیچ روت ، ادعا خواهند کرد که می توانند سوئیچ روت باشند و BID خود را( در قالب BPDU ) به سمت سایر سوئیچ ها ارسال خواهند کرد.در شرایطی که همچنان سوئیچ روت در شبکه موجود باشد ، سایر سوئیچ ها BPDU سوئیچ روت را به سمت سوئیچی که ادعای روت بودن دارد را ارسال میکنند

که پس از آن ، سوئیچ مزبور با دریافت BPDU ای که BID آن از BID خودش کمتر است دیگر ادعایی مبنی بر روت بودن نخواهد داشت. پروتکل STP به ما تضمین یک شبکه بدون LOOP را می دهد که این به مفهوم آن است که شبکه ممکن است در حالت عادی ( و شرایط شبکه بدون LOOP ) بهترین PERFORMANCE را نداشته باشد. به خاطر داشته باشید که هر تعداد سوئچ در شبکه ما وجود داشته باشد فقط و فقط یک سوئیچ در شبکه بعنوان ROOT BRIDGE انتخاب خواهد شد.


BPDU

مخفف BRIDGE PROTOCOL DATE UNIT است که سوئیچ ها از طریق آن با یکدیگر ارتباط دارند.مهم ترین دلیل ارسال BPDU انتخاب سوئیچ روت می باشد.ما 2 نوع BPDU داریم :

1.	HELLO BPDU ( CONFIGURATION BPDU )
2.	TCN BPDT

تمام صحبت هایی که تا به این قسمت در خصوص BPDU کردیم تماما" در خصوص HELLO BPDU بود که محتوای این پکت به صورت زیر بود :

BPDU


پکت HELLO BPDU شامل فیلد های مختلفی می باشد که برای ما مهترین آنها قسمت ورژن ، قسمتهای ID و تایمرهای آن می باشد که هر کدام در جای خود بصورت مفصل صحبت خواهد شد. ولی در مورد TCN BPDU ، تنها لازم است بدانید در پروتکل STP اگر سوئیچ یک تغییر را حس کرد این BPDU TCN را تولید و به سمت سوئیچ روت ارسال می کند.البته بحث TCN BPDU خود شامل یک مقاله کامل آموزشی می باشد.

مکانیزم همگرایی در پروتکل STP

همانطور که گفته شد سوئیچ ها از طریق BPDU با یکدیگر در ارتباط هستند و توسط BPDU سوئیچ روت انتخاب می شود پس از آن ، بخاطر مکانیزم خاص نحوه همگرایی STP ، سایر سوئیچ ها با FORWARD کردن BPDU سوئیچ روت ، نقش پورتها را مشخص میکنند.در صورتی که شبکه همگرا شود و نقش ووضعیت تمام پورت ها مشخص شود تنها سوئیچی که BPDU ارسال میکند سوئیچ روت است و سایر سوئیچ ها همگی دریافت کننده BPDU که توسط سایر سوئیچ ها به سمت آنها FORWARD شده است.

CONNECT TO ROOT



( پس از انتخاب سوئیچ روت ، هیچ سوئچی BPDU تولید نخواهد کرد و همگی FORWARD کننده BPDU سوئیچ روت هستند.) سوئیچ روت هر 2 ثانیه یکبار HELLO BPDU با COST = 0 ارسال میکند که این BPDU پس از دریافت در سایر سوئیچ ها با تغییر مقدار COST و SENDER BID ، آن BPDU را به سمت سایر سوئیچ ها FORAWRD می کنند. تنظیم تایمر ها ( مانند تنظیم زمان HELLO TIME ) تنها در سوئیچ روت انجام می شود

و سایر سوئیچ ها از تنظیماتی که در سوئیچ روت انجام شده و از طریق BPDU دریافت میکنند ، تبعیت خواهند کرد.حتی اگر زمان HELLO TIME در هر سوئیچ کانفیگ شدئه باشد. سوئیچ ها زمانی به تغییر در شبکه واکنش نشان می دهندکه به مدت 10 HELLO TIME یعنی 10 تا 2 ثانیه که برابر با 20 ثانیه است ، هیچ BPDU ای دریافت نکند که در اینصورت پورت از وضعیت فعلی خود ، به وضعیت LISTENING و سپس اگر صلاح دانست به وضعیت LEARNING خواهد رفت ، پس از آن پورت به وضعیت FORWARD خواهد رفت.

انتخاب نقش پورت ها که در وضعیت LISTENING انجام می شود ، براساس 3 معیار است که شامل موارد زیر بود :

1.COST کمتر
SENDER BRIDGE ID.2 کمتر
3.SENDER PORT ID کمتر

به یاد داریم که cost ، مفهومی گره خورده با سرعت خود پورت سوئیچ است که در قسمت قبل در خصوص این موضوع صحبت کردیم اما این مقدار لزوما" بهینه نیست.به تصویر زیر نگاه کنید :

5


طبق جدول COST ( تصویر زیر )

COST


سرعت های 1 GIG و 10GIG همانطور که در تصویر هم پیداست دارای COST های 4 و 2 هستند.در واقع COST بین سوئیچ های روت و SW2 & SW4 دارای مقدار 4 است در حالی که لینک 10GIG ، دارای سرعتی 10 برابر با 1GIG است اما ازدید پروتکل STP ، فاصله نزدیکی برای انتخاب ROOT PORT ، این مقدار را برای ما براساس خود سرعت بهینه نمی کند بنابراین باید خودمان در زمان کانفیگ مقدار COST را در پورتی لینکی که سرعت بالاتری دارد را کاهش دهیم تا مقادیر بهینه شوند.


نقش و وضعیت پورت در پروتکل STP

STP STATE MNODE


مراحل 3 گانه پروتکل STP که در قسمت های اول و دوم بصورت فنی توضیح داده شد را مرور میکنیم :
1.سوئیچ با کمترین BID به عنوان سوئیچ اصلی یا همان ROOT BRIDGE مشخص می شود.تمام پورتهای این سوئیچ در نقش DESIGNATED PORT و وضعیت FORWARD قرار می گیرد.

2.در بین تمام سوئیچ های باقی مانده فقط یک پورت و نزدیکترین پورت به سوئیچ روت ، به عنوان پورت اصلی انتخاب می شود.( معیار نزدکی براساس COST است . )

3.در بین SEGMENT های باقی مانده باید یک پورت DESIGNATED PORT و پورت مقابل آن BLOCK شود.

همانطور که دیدم پورتهای سوئیچ دراین مراحل دارای نقش ها و وضعیت هایی خواهند شد ولی در نقش ها

DESIGNATED PORT “ پورتی بود که در هر پورت که BPDU با کمترین COST ارسال میکرد.

ROOT PORT” پورتی بود که در هر لینک سوئیچ ، BPDU با کمترین COST دریافت می کرد.

ماهیت DESIGANATED PORT ها ارسال کننده و ماهیت ROOT PORT & BLOCK PORT ها دریافت کننده BPDU بود.

DP-RP


اما تاکنون صحبتی از وضعیت پورت نکردیم ؛ بیائید این موضوع را بررسی کنیم!

وضعیت پورتها در پروتکل STP

اگر دقت کرده باشید حتما" متوجه شده اید در زمانی که سوئیچ ها را به یکدیگر وصل می کنید پورت ها در ابتدا قرمز ، سپس نارنجی و در نهایت سبز رنگ خواهد شد اما این پروسه مدت زمانی بین 30 تا 50 ثانیه زمان بر خواهد بود.

10



در این فاصله ی زمانی که پورتهای سوئیچ رنگهایشان از قرمز ، زرد و نهایتا" به سبز تغییرپیدا میکند هرپورت سوئیچ چند وضعیت میانی را می گذراند.

B-L-L-F


STAP-TABLE



DISABLED

DIS-TABLE


DISSS-SUMMARY


پورتی که در این وضعیت قرار دارد ، توسط مدیر شبکه SHUTDOWN شده است که البته این یکی از حالت و وضعیت های پورت است که به پروتکل STP ارتباطی ندارد.از دیگر دلایلی که ممکن است یک پورت در این وضعیت باشد ، عدم اتصال کابل به آن و یا عدم وجود عدم وجود STP روی آن باشد.

T1-DIS




BLOCKING


30


ARR-BLK


زمانی که سوئیچ ها را به یکدیگر متصل می کنید وارد این وضعیت می شوند که این بدین معنی است که سوئیچ در این حالت چون هنوز R.B مشخص نشده ادعا میکند که R.B است و خودش BPDU ارسال میکند ضمن اینکه با دریافت BPDU از سایر سوئیچ ها ، آن را پردازش نیز میکند اما زمانی که R.B مشخص شد دیگر فقط BPDU ی سوئیچ R.B را FORWARD می کند.

SEND BPDU = SEND BPDU FORWARD R.B

همچنین ممکن است پورت توسط خود پروتکل STP جهت جلوگیری از ایجاد LOOP به این وضعیت وارد شده باشد.

نکته ای که در خصوص بلاکینگ و انتخاب سوئیچ روت باید به آن توجه کرد این است که در هیچ منبع رسمی سیسکوئی به این موضوع که انتخاب سوئیچ روت دقیقا" و صریحا" در مرحله بلاکینگ انجام می پذیرد یا خیر ( تو منبعCCNP و CCIE صریحا" مطلبی که به این موضوع اشاره کند ندیده ام) است که البته چندان دور از ذهن هم نیست چرا که انتخاب سوئیچ روت کاملا" رقابتی می باشد پس اینکه دقیقا" پورت باید حتما" در چه وضعیتی باشد ( بلاکینگ یا FORWARDING )تا سوئیچ روت انتخاب شود چندان مهم نیست ، مهم این است که نخست سوئیچ روت مشخص شود سپس سوئیچ ها با وارد شدن به وضعیت LISTENING و FORWARD کردن BPDU سوئیچ روت ، نقش پورتها را مشخص کنند.

اما در زمینه انتخاب سوئیچ روت ، توجه به نکته ای است که در وضعیت LISTENING به آن اشاره شده است :

LISTEN-CCNP


همانطور که می بینیم در وضعیت LISTENING تنها به این موضوع اشاره شده است که اگر سوئیچ فکر کند که یک پورت می تواند DP یا RP باشد از وضعیت بلاکینگ خارج و به وضعیت LISTENING وارد می شود.اینکه سوئیچ به این نتیجه برسد یعنی سوئیچ روت انتخاب شده و حالا با FORWARD کردن BPDU قصد دارد نقش پورتها را مشخص کند ، ضمن اینکه باید توجه داشت در وضعیت بلاکینگ که تمام سوئیچ ها مدعی روت بودن هستند و ضمن ارسال BPDU های خودشان ، BPDU های دریافتی را پردازش نیز می کنند.

T2-BLK




LISTENING


LIS-TAB


401-LISTENING


همانطور که در قسمت قبل هم گفته شد اگر سوئیچ به این نتیجه برسد که پورتهایش می توانند DP و یا RP باشند وارد این وضعیت می شوند.در مرحله قبل سوئیچ روت انتخاب شده (پایان زمان بلاکینگ ) و حالا سایر سوئیچ ها با FORWARD کردن BPDU روی پورت هایشان نقش پورت ها و اینکه DP OR RP OR BLOCK باشند را تعیین می کنند.

در واقع سوئیچ ها بعد از مشخص شدن R.B با ارسال BPDU روی پورت ، بصورت ACTIVE در تعیین و انتخاب PORT ROLE جدید نقش بازی می کردند.

در این قسمت باز هم روی این مطلب تاکید میکنم که پس از انتخاب سوئیچ روت هیچ سوئیچی خودش BPDU تولید و ارسال نمی کنند مگر اینکه ارتباطش با سوئیچ روت را از دست داده باشد که بخواهد ادعای روت بودن نماید.در غیر اینصورت و ارتباط با سوئیچ روت ، BPDU های سوئیچ روت را با تغییر COST و SENDER BID برای تعیین نقش پورت ها ( مکانیزم این پروتکل اینطور ایجاب می کند ) ، BPDU های سوئیچ

41-L



LEARNING


LRN-TAB


42.LEARNING


در این مرحله سوئیچ علاوه بر دریافت BPDU و FORWARD کردن BPDU های سوئیچ روت روی پورتهاش ، جدول مک خود را نیز ، به روز می کند.

43.LEARWN



FORWARDING


44.FORWARDING-TABLE


45


در این مرحله علاوه بر یادگیری مک ، قادر به ارسال و دریافت اطلاعات نیز است و تا زمانی در این وضعیت می ماند که LOOP اتفاق نیفتد.

46




زمان همگرایی پروتکل STP


تابه این قسمت یاد گرفتیم که از زمان اتصال سوئیچ ها به یکدیگر که در وضعیت بلاکینگ قرار گرفته تا زمانی که همه پورتها نهایتا" FORWARD شده و برای جلوگیری از LOOP یکسری پورت ها هم در وضعیت بلاک قرار گیرند چه وضعیت هایی را طی می کنند. اما در هر کدام از این وضعیت ها ، پورت مدت زمانی را طی عناوینی تحث عنوان MAX AGE و یا FORWARD DELAY صبر می کند.

1


29



همانطور که می بینیم ، از زمان بلاکینگ تا FORWARDING یک پورت سوئیچ زمانی برابر با 50 ثانیه را سپری می کند که به شرح زیر می باشد ولی هر یک به گونه ای ضریبی از HELLO TIME هستند.

HELLO TIME
سوئیچ ROOT BRIDGE هر 2 ثانیه یکبار ( HELLO TIME ) بسته BPDU را روی همه پورت هایش ارسال می کند.هدف از ارسال دوره ای BPDU تشخیص تغییرات توپولوژی شبکه است.هر گونه تغییر در دریافت BPDUبه منزله تغییر در توپولوژی شبکه است.


MAX AGE
اگر سوئیچی روی یکی از پورتهایش( مثلا" روی ROOT PORT خودش ) BPDU بدتر ( INFERIOR BPDU ) دریافت نماید ( BPDU ای که فیلد ROOT BRIDGE ID عدد بالاتری نسبت به BPDU قبلی داشته باشد) ، BPDU قبلی خود را روی آن پورت ذخیره کرده و پس از زمان 20 ثانیه BPDU قبلی را منقضی می کند یعنی در مدت زمان MAX AGE صبر می کند تا از تغییرات توپولوژی شبکه مطمئن شود. می دانیم که تشخیص تغییرات توپولوژی شبکه ، مقدمه پروسه همگرایی سات فلذا زمان MAX AGE در زمان همگرایی محاسبه می شود. MAX AGE معادل 20 ثانیه و یا 10 HELLO TIME است .

وقتی پورتی از حالت BLOCK به حالت FORWARD تغیرر می کند باید 2 حالت میانی LISTENING & LEARNING را سپری کند که در هر کدام از حالت های میانی ، پورت به اندازه FORWARD DELAY که معادل 15 ثانیه و نهایتا" 30 ثانیه است در این وضعیت می ماند و در نهایت پورت به وضعت FORWARD خواهد رفت. اگر دقت شود می بینیم که زمان های MAX AGE و FORWARD DELAY هر کدام به گونه ای ضریبی از HELLO TIME هستند

و این 3 مورد یعنی HELLO TIME & FORWARD DELAY & MAX AGE از تایمرهایی هستند که می توانیم آنرا در سوئیچ روت تنظیم کنیم تا عملکرد سایر سوئیچ ها در شبکه براساس همین تایمرها باشد.باید توجه داشت که این زمان ها براساس عمق شبکه است که در یک مقاله جداگانه درخصوص اینموضوع صحبت خواهیم کرد. همچنین اگر از کامندی مثل آنچه که در زیر می اید استفاده کنیم مقادیر تایمر را می توانیم مشاهده نمائیم :

Switch#SHOW SPANning-tree 
VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    32769
             Address     0003.E4A0.E208
             This bridge is the root
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1)
             Address     0003.E4A0.E208
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  20



انواع تغییرات در توپولوژی شبکه


از دید هر سوئیچ تغییر رخ داده در توپولوژی شبکه را می توان به یکی از 3 حالت زیر تقسیم کرد :

DIRECT
IN-DIRECT
INSIGNIFICANT


DIRECT TOPOLOGU CHANGE


تشخیص بلافاصله تغییرات توپولوژی شبکه
اگر سوئیچی به واسطه UP و DOWN شدن یکی از پورتهایش تغییر توپولوژی را تشخیص دهد نوع تغییر را DIRECT TOPOLOGY CHANGE می نامیم.ویژگی این تغییرات این است که سوئیچ بلافاصه تغییر راتشخیص می دهد.وقتی لینک جدیدی بین دو سوئیچ اضافه می شود و یا آنکه لینک بین دو سوئیچ قطع می شود ، دو سوئیچ متصل به لینک تغییرات را بلافاصله تشخیص می دهند و بلافاصله وارد پروسه همگرایی STP می شوند. تذکر : در تغییرات DIRECT زمان همگرایی 30 ثانیه است.

IN-DIRECT TOPOLOGU CHANGE


تشخیص غیر مستقیم تغییرات توپولوژی شبکه
اگر سوئیچی به واسطه تغییر در دریافت BPDU روی هر یک از پورتهایش به تغییر توپولوژی شبکه پی ببرد ، نوع تغییر را IN-DIRECT TOPOLOGU CHANGE می نامیم. در چنین شرایطی سوئیچ روی پورت ROOT PORT و یا BLOCKED ، یک BPDU متفاوت و بدتری دریافت میکند.( BPDU ای که BID آن نسبت به BID سوئیچ روت که قبلا" از طریق BPDU دریافت می کرد بزرگتر است بدتر محسوب می شود.) در چنین شرایطی سوئیچ 10 برابر زمان HELLO TIME یعنی به مدت زمان MAX AGE که 20 ثانیه است منتظر می ماند تا بادریافت BPDU متوالی از وجود تغییر اطمینان حاصل کند.بنابراین در تغییراتی از این نوع ، سوئیچ پس از سپری کردن زمان MAX AGE وارد پروسه همگرایی می شود.



برای درک این تغییر به تصویر زیر نگاه کنید :

25


سوئیچ SW3 از طریق RP خودش با سوئیچ روت در ارتباط است و از طریق این پورت BPDU سوئیچ روت را دریافت می کند.همچنین در مرحله LISTENING با سوئیچ SW2 به این نتیجه رسیده است که جهت جلوگیری از LOOP پورت FA0.1 سوئیچ SW3 هم باید BLOCK باشد.

26


حال تصور کنید ارتباط سوئیچ SW2 با سوئیچ روت که از طریق پورت FA 0.2 بود ، به علت SHUTDOWN شدن پورت FA 0.2 سوئیچ روت ، قطع شده است.پس از قطع ارتباط SW2 با SW1که سوئیچ روت بود ، سوئیچ SW2 ادعا می کند که روت است و به سمت SW3 ، شروع به ارسال BPDU می کند. توجه داشتید که SHUTDOWN شدن پورت FA 0.2 سوئیچ روت سبب تغییر توپولوژی و در نهایت این اتفاق شد که سوئیچ SW2 ادعای روت بودن نماید و چون یکسری سلسله اتفاقات باعث می شود که پورت FA 0.1 از SW3 ، بسته BPDU بدتر دریافت نماید ، این تغییر برای این سوئیچ از نوع IN-DIRECT می باشد.

SW3 قبلا" روی پورت FA 0.1 بسته BPDU بهتر می گرفت و حالا که BPDU بدتر گرفته ، بسته ی قبلی BPDU بهتر را روی پورت خودش به اندازه زمان MAX AGE نگه می دارد و بلافاصله قبول نمی کند که سوئیچ SW2 روت بودن و پورت FA 0.1 خودش را RP کند. این یک مثال جهت تغییرات IN-DIRECT بود که در آن پورت به اندازه زمان MAX AGE صبر می کرد و سپس وارد پروسه همگرایی LISTENING & LEARNING می شود.

توجه داشته باشید در تغییرات DIRECT ، پورت سوئیچ مستقیم وارد فاز LISTENING & LEARNING خواهد شد و نیازی به MAX AGE نیست. وجود زمان MAX AGE برای این است که سوئیچ مطمئن شود که BPDU بدتری که دریافت می کند اتفاقی نبوده و تغییر در توپولوژی شبکه پایدار است و حالا باید با توجه به این تغییر وارد پروسه همگرایی شود. تذکر : در تغییرات IN-DIRECT زمان همگرایی 50 ثانیه است.

INSIGNIFICANT TOPOLOGY CHANGE


تشخیص تغییرات بی اهمیت در توپولوژی شبکه
هر کامپیوتری که در شبکه روشن و یا خاموش می شود و یا هر لینکی که از هر کامپیوتر قطع و یا وصل می شود منجر به UP و DOWN شدن یکی از پورتهای سوئیچ می شود.سوئیچ تغییر مورد نظر را از نوع DIRECT تشخیص می دهد و وارد پروسه همگرایی STP می شود. این در حالی است که کامپوترهای انتهایی در ایجاد LOOP نقشی ندارند زیرا لینک های REDUNDANT بین سوئیچ ها وجود دارند

و همانها سبب ایجاد LOOP خواهند شد که باید در پروتکل STP لحاظ شوند. پروتکل STP تغییرات پورتهای ACCESS ( متصل به کامپیوترهای انتهایی ) را نادیده می گیرد و وارد پروسه همگرایی نمی شود البته باید توجه کرد که با فعال کردن ویژگی PORTFAST روی پورت های ACCESS ، پروتکل STP ، تغییرات ایجاد شده روی پورتهای PORTFAST را از دسته بندی بی اهمیت خارج می کند و آنجا تغییرات این پورت بسیار مهم می شود چرا که اگر BPDU ای روی آن پورتها دریافت شود باعث ایجاد LOOP خواهد شد.

ACCESS-DIS



STP VS R - S


شاید یک سوال از ابتدای بحث STP همراه شما بوده باشد و آن اینکه چرا پروتکل STP خاص SWITCHING است و چرا از بین 3 لینک سوئیچ ، یکی از پورت ها در یکی از لینک ها باید بلاک شود در حالی که در روتینگ ما مشکل LOOP را نداریم و می توانیم بین روتر هایمان مسیرهای متفاوتی داشته باشیم ، به عبارت دیگر

R-S


پاسخ واضح است ، روتر ها مانع از عبور بسته های برادکست می شوند در حالی که سوئیچ ها ماهیت شان متفاوت از روتر است و اصلا" آنها از طریق همین بسته های برادکست مانند ARP جدول مک خود را کامل می کنند.

TC در پروتکل های STP و RSTP

در این قسمت قصد داریم تغییر در توپولوژی را که سوئیچ ها از طریق بسته های BPDU به یکدیگر اطلاع رسانی می کنند را بررسی کنیم .

  • در ابتدا ذکر این توضیح ضروری به نظر می رسد که بحث TC در پروتکل RSTP نیازمند آشنایی با پروتکل RSTP بوده که در قسمت های آتی به آن پرداخته می شود و بحث تغییر توپولوژی هر 2 پروتکل بصورت یکجا دراین قسمت آورده شده است.


تا کنون با 2 نوع BPDU آشنا شدیم :

1.HELLO   BPDU ( CONFIGURATION BPDU )
2.TCN  BPDU


HELLO BPDU


TCN BPDU



تغییرات توپولوژی در پروتکل STP


(TOPOLOGY CHANGE NOTIFICATION (TCN
وقتی تغییری در توپولوژی شبکه رخ می دهد و مسیر فعال شبکه تغییر میکند ، mac table سوئیچ ها که مسیر فعال شبکه را نشان می دهند باید به روز شوند.هر سوئیچی که تغییرات توپولوژی شبکه را تشخیص می دهد در صورتی که در فاز learning قرار بگیرد با گوش دادن به src mac فریم های دریافتی ، مسیر های جدید را به روز می کند اما این تغییرات باید در همه سوئیچ های شبکه ایجاد شود و هر سوئیچ به شکل مستقل ، مسیرهای غلط را از mac table حذف نماید. جهت محقق نمودن این هدف ، هر سوئیچ به محض اینکه در شبکه ، تغییری از نوع DIRECT حس کرد ، خودش را موظف میکند ،یک بسته ای از نوع TCN BPDU ایجاد و روی ROOT PORT خودش به سمت ROOT BRIDGE ارسال کند.این بسته تغییر توپولوژی شبکه را به ROOT BRIDGE اعلام می کند.

TCN22222


هر سوئیچی که بسته TCN را روی DP خودش دریافت کند موظف است آنرا روی RP خودش FORWARD کند ، تا در نهایت بسته TCN BPDU به سوئیچ R.B می رسد. سوئیچ R.B هر 2 ثانیه یکبار HELLO BPDU ارسال می کرد و پس از دریافت TCN BPDU و در 2 ثانیه بعدی ، سوئیچ ROOT BRIDGE با فعال کردن FLAG به نام TCN در بسته HELLO BPDU ( نه بسته مستقل TCN BPDU ) همه ی سوئیچ های شبکه را از وجود تغییر توپولوژی آگاه می سازد.

HELLO BPDU


هر سوئیچ با دریافت این بسته ، زمان اعتبار MAC TABLE خودش را از 5 دقیقه به 15 ثانیه کاهش می دهد.بدین ترتیب اطلاعات مسیرهای غلط در جدول MAC TABLE حداکثر در مدت زمان 15 ثانیه ( پایان زمان LISTENING ) از سوئیچ حذف خواهد شد. از زمان تشخیص تغییر توپولوژی ، حداکثر در مدت زمان 15 ثانیه ( پایان زمان LEASTENING و یا ابتدای زمان LEARNING ) ، مسیرهای غلط ازجدول MAC TABLE همه سوئیچ ها حذف می شود.


جمع بندی
با ایجاد تغییر DIRECT در سوئیچ ، سوئیچ TCN BPDU ایجاد و ارسال میکند و تنها کاری که TCN BPDU انجام می دهد این است که سوئیچ روت با دریافت TCN BPDU متوجه تغییر شده و با ارسال HELLO BPDU با TCN فلگ SET شده همه ی سوئیچ ها را متوجه این تغییر کرده و به آنها می گوید AGING MAC TABLE را از 300 ثانیه به 15 ثانیه کاهش می دهد.با این اوصاف ، هر سوئیچ پس از اینکه تغییری را حس کرد ابتدا وارد فاز LISTENING می شود و در پایان زمان LISTENING اطلاعات مسیرهای غلط از جدول مک پاک شده و در زمان LEARNING ، جدول مک سوئیچ به روز می شود.

تذکر : منظور از تغییر DIRECT همان UP و یا DOWN شدن یک پورت سوئیچ است.

تغییرات توپولوژی در پروتکل RSTP

در پروتکل RSTP یا همان STP سریع ، UP شدن یک پورت P2P ( رفتن به وضعیت FORWARD ) به معنای تغییر توپولوژی می باشد که باعث می شود سوئیچ همه ی مک آدرس هایی که تاکنون آموخته را پاک کرده و اگر میزبان ها از لینک جدیدی قابل دسترسی هستند ، یادگیری آدرس آنها مجدد صورت گیرد و روی تمام پورتهای P2P خودش ، BPDU با TCNفلگ SET شده ( بیت TC آنها برابر با 1 قرار داده شده )ارسال شوند.

TCN BPDU


RSTP-FLAG


RSFTP-F-35


  • با تشخیص یک تغییر توپولوژی ، سوئیچ باید این مساله را به همه دستگاه ها در شبکه اعلام کند تا آنها بتوانند تغییرات لازم در جدوال خود انجام دهند.این فرآیند شبیه به همان مکانیسم PROPOSAPL و AGREEMENT است.پیام تغییر توپولوژی مثل یک موج در کل شبکه پخش می شود.


زمان انقضای ارسال این BPDU ها روی پورت برابر با 2 برابر زمان HELLO TIME است.

فریم ها به سوئیچ های همسایه رسیده و آنها از تغییر توپولوژی و لینک های جدید آگاه می شوند.همه سوئیچ های همسایه که پیام های TC را دریافت می کنند باید آدرس MAC آموخته شده روی همه پورت ها به غیر از پورتی که پیام TC را روی آن دریافت کرده اند حذف نمایند. این استثنا به این دلیل است که این پورت ها به سوی تغییر توپولوژی اشاره دارند که جائیست که ممکن است مجموعه ای از آدرس های MAC از طریق مسیر جدید یا بهبود یافته در دسترس باشند.


سوئیچ هایی که پیام TC را دریافت کرده اند ، هم باید پیام های TC را از پورت های P2P به بیرون بفرستند و این روند به همین صورت ادامه پیدا خواهد کرد.

  • پورت های EDGE هرگز سبب رویداد تغییر توپولوژی نمی شوند و آدرس MAC آموخته شده بر آنها در حین رسیدگی به رویداد تغییر توپولوژی پاک نمی شود.

بررسی یک مسئله

بیائید این قسمت را با طرح یک مسئله آغاز کنیم :

مسئله 1


1


در تصویر فوق ، سوئیچ ها را به یکدیگر متصل کرده ایم و تمام پورتهای سوئیچ بصورت پیش فرض در VLAN 1 قرار دارند.همانطور که در قسمت های قبلی خواندیم جهت جلوگیری از ایجاد LOOP باید یکی از سوئیچ ها روت و پورتهایش در نقش DP و پورتهای سوئیچ دیگر یکی در نقش RP و دیگری بلاک شود.

2


حالا سراغ یک مسئله دیگر می رویم :

مسئله 2


3


در تصویر فوق سوئیچ ها به یکدیگر متصل و پورتهای 2 سر لینک سوئیچ در VLAN های 2 و 3 قرار دارند.حال سوال اینجاست اگر یک دیتای برادکست از سمت SW1 و پورتی که عضو VLAN 2 است به سمت SW2 ارسال شود ، BROADCAST STORM در چه شرایطی رخ می دهد و کدام پورت سوئیچ باید بلاک شود ؟

جواب :
اگر دیتای برادکست از سمت SW1 به پورتی که عضو VLAN 2 است وارد شود ، از طریق لینک مربوطه به سوئیچ مقابل رسیده و سوئیچ هم فقط آنرا در همان VLAN 2 منتقل می کند و این دیتا وارد VLAN 3 نمی شود و عملا" برادکست رخ نمی دهد و البته منطقی هم نیست که در این شرایط یک از پورتها بلاک شود.

نسخه های پروتکل STP


پروتکل STP چندین نسخه داشت که اولین آنها CST بود :

IEEE 802.1D یا (CST( COMMON SPANNING TREE


در CST به ازای هر VLAN ، INSTANCE جدا ایجاد نمی کرد و در نتیجه نمی توانستیم یک توپولوژی فعال در کل ساختار داشته باشیم. ( عدم استفاده همزمان از همه ی لینک ها ) تاخیر 30 تا 50 ثانیه در زمان همگرایی امروزه به دلیل انتقال اطلاعاتی مثل صوت و تصویر باعث به وجود آمدن مشکلات زیادی خواهد شد. ( زمان همگرایی بالا ) سیسکو برای فائق آمدن بر زمان همگرایی ، فیچرهایی مثل PORTFAST , UPLINKFAST , BACKBONEFAST را ابداع نمود که فقط در دستگاه های سیسکو پشتیبانی می شوند.

(CISCO PVST(PER VLAN STP


  1. مشکل استفاده همزمان از لینک ها حل شد .
  2. همچنان بحث زمان همگرایی وجود داشت و زمان 30-50 ثانیه زمان کمی نبود.
  3. pvst با cst سازگار نبود و اگر یک طرف cst و طرف دیگر pvst بود ، با هم کار نمی کردند.
  4. پروتکل PVST فقط با لینک ترانک ISL کار می کرد و با 802.1Q سازگار نبود.


+CISCO PVST


  1. Default سوئیچ های سیسکو
  2. امکان استفاده ی همزمان از همه لینک ها
  3. زمان همگرایی بالا ( 30-50 ثانیه )
  4. پروتکل PVST+ به ازای هر VLAN یک توپولوژی و درخت STP ایجاد میکند که در صورت کم بودن VLAN بهترین راه حل است اما وقتی با تعداد VLAN زیاد مواجه هستیم دیگر بهترین راه حل نخواهد بود.



(IEEE 802.1W یا RSTP ( RAPID STP


  1. استاندارد IEEE 802.1W یا RSTP در واقع استاندارد 802.1D را به منظور بهبود در سرعت همگرایی STP بهینه کرده است.
  2. به روز رسانی های اعمال شده بر کل عملکرد پروتکل سبب افزایش چشمگیر سرعت همگرایی می شوند و همگرایی در شبکه هایی که به شکل مناسبی طراحی شده اند کمتر از یک ثانیه می شود.
  3. برای این منظور RSTP تغییرات جدیدی را در BPDU اعمال کرده و با تغییر ROLE PORT های هر اینترفیس در STP و نحوه ی کاری که انجام می داد ، زمان همگرایی را تا حد قابل قبولی پایین آورد.
  4. پروتکل RSTP با استاندارد 802.1D سازگار است.
  5. در این پروتکل مشکلات مربوط به زمان همگرایی حل شد.



(CISCO RPVST+ (PER VLAN RAPID STP


  1. پروتکل RPVST+ ترکیبی از 2 پروتکل PVST+ و پروتکل RSTP است .ترکیب این باعث می شود که به جای اجرای یک نمونه RSTP برای تمام VLAN ها ، چندین اجرای RSTP به ازای هر VLAN در سوئیچ داشته باشیم.
  2. RPVST+ با MSTP و PVST+ سازگار است.


IEEE 802.1S یا MST (Multiple Spanning) Tre یا (MiST (Multiple Instance Spanning Tree


#. پروتکل MST براساس پروتکل ( IEEE 802.1w (RSTP است و زمان همگرایی پایین دارد .

  1. در PVST+ به ازای هر VLAN یک INSTANCE اجرا میکند یعنی اگر من 400 تا VLAN داشته باشم ، 400 تا INSTACE مختلف اجرا می شود که باعث کاهش PERFORMANCE می شود.
  2. در پروتکل MST تعداد INSTANCE های پروتکل STP وابسته به تعداد VLAN ها نیست. بلکه وابسته به تعداد توپولوژی فعال است که باعث افزایش PERFORMANCE می شود.
  3. در واقع در پروتکل MST می توان گروهی از VLAN ها را مجبور به استفاده از یک پروسه و یا INSTANCE واحد STP کرد.به عبارت دیگر ، تعدادی از VLAN ها را بصورت دستی به یک INSTANCE ، MAP میکنیم و نمی گذاریم که تعداد INSTANCE های RUN شده به نسب VLAN ها باشد.
  4. به عبارت ساده تر ، MST ، اجرای یک نمونه STP به ازای گروهی از VLAN هاست.
  5. هدف از MST ، تقسیم ترافیک VLAN ها به توپولوژی های ذکر شده و در عین حال REDUNDANCY بین آنهاست.
  6. پروتکل MST یک پروتکل استاندارد است که می توانیم بین دیوایس های غیر سیسکوئی هم آنرا استفاده کنم.
  7. پروتکل MST با ورژن های قبلی مثل CST هم سازگاری دارد.


در این قسمت می خواهیم در خصوص پروتکل PVST+ که دیفالت سوئیچ های سیسکو است صحبت کنیم و تمام مباحث مرتبط با STP را بر اساس همین پروتکل PVST+ که STP را بصورت PER VLAN اجرا می کند در این مقاله و مقالات آنی بررسی کنیم.

تغییرات انجام شده در PVST+نسبت به CST


1.تغییر در BID
به یاد داریم که در پروتکل STP ، مشخصه BID بصورت ترکیبی از PRIORITY و مک آدرس بصورت زیر بود :

BID-STP


BID = 32768.BASE MAC

اما در پروتکل PVST+ این مقدار بصورت زیر تغییر کرد :

BID-PVST


BID = (PRIORITY + VLAN ID ).BASE MAC

یعنی

BID VLAN 10 = (32768+10).BASE MAC
BID VLAN 20 = ( 32768+20).BASE MAC


Switch#SHOW SPANning-tree 
VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    32769
             Address     0001.C945.3B97
             This bridge is the root
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1)
             Address     0001.C945.3B97
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  20


به مقدار PRIORITY و sys-id-ext 1 توجه کنید.حالا مثلا" برای همان مثال خودمان که VLAN 10 و VLAN 20 بود :

Switch#SHOW SPANning-tree 
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 32769
Address 0001.C945.3B97
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 0001.C945.3B97
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20

Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1 Desg LRN 19 128.1 P2p
Fa0/2 Desg LRN 19 128.2 P2p

VLAN0010
Spanning tree enabled protocol ieee
Root ID Priority 32778
Address 0001.C945.3B97
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 32778 (priority 32768 sys-id-ext 10)
Address 0001.C945.3B97
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20

Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1 Desg LRN 19 128.1 P2p
Fa0/2 Desg LRN 19 128.2 P2p

VLAN0020
Spanning tree enabled protocol ieee
Root ID Priority 32788
Address 0001.C945.3B97
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 32788 (priority 32768 sys-id-ext 20)
Address 0001.C945.3B97
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20

Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1 Desg LRN 19 128.1 P2p
Fa0/2 Desg LRN 19 128.2 P2p


به عبارت دقیق تر

VLAN 10 -> Bridge ID Priority 32778 (priority 32768 sys-id-ext 10)
VLAN 20 -> Bridge ID Priority 32788 (priority 32768 sys-id-ext 20)

قبل از اینکه سراغ کانفیگ و کامندهای مربوطه برویم ، بیائید ابتدا این موضوع که در PVST+ ، پروتکل STP بصورت PERVLAN اجرا می شود را درک کنیم.به تصویر زیر نگاه کنید :

10


در این جا یک اجرا ( INSTANCE ) از پروتکل STP را می بینیم که پس از طی زمان همگرایی ، دارای توپولوژی فعال خود است که یک پورت جهت جلوگیری از LOOP به وضعیت بلاک رفته است. حال تصور کنید که ما روی سوئیچ هایمان 3 تا VLAN ساخته ایم و هر سوئیچ برای VLAN خاص خودش سوئیچ روت است و پورتی که برای یک ممکن است بلاک باشد ، همان پورت برای VLAN دیگر در وضعیت FORWARD قرار داشته باشد.

11


در شکل فوق ما 3 سوئیچ را به یکدیگر متصل کرده ایم ، لینک بین سوئیچ ها ترانک است و VLAN 2-4 را هم در هر سوئیچ داریم و سطبق تصویر هر سوئیچ در VLAN خاص خودش سوئیچ روت است و ترافیک در هر VLAN مجزااز VLAN های دیگر قرار دارد و یک پورت در هر VLAN می تواند نقش های متفاوتی داشته باشد ، یعنی یک پورت در آن واحد که می تواند DP یک سوئیچ روت باشد ، همچنین می تواند RP و یا یک پورت بلاک شده برای VLAN دیگری باشد. برای درک بهتر به تصویر زیر دقت کنید :

12


همچنین به خروجی کامند زیر و نقش های متفاوتی که یک پورت می تواند در چند VLAN داشته باشد دقت کنید :

خروجی کامند VERIFY SW1


 SW1#SHOW SPANning-tree 
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 32769
Address 000B.BE4E.3A93
Cost 19
Port 2(FastEthernet0/2)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 000C.85D5.E8BE
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20

Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/2 Root FWD 19 128.2 P2p
Fa0/1 Desg FWD 19 128.1 P2p

VLAN0002
Spanning tree enabled protocol ieee
Root ID Priority 24578
Address 000C.85D5.E8BE
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 24578 (priority 24576 sys-id-ext 2)
Address 000C.85D5.E8BE
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20

Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/2 Desg FWD 19 128.2 P2p
Fa0/1 Desg FWD 19 128.1 P2p

VLAN0003
Spanning tree enabled protocol ieee
Root ID Priority 24579
Address 00D0.D3B3.1E56
Cost 19
Port 1(FastEthernet0/1)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 32771 (priority 32768 sys-id-ext 3)
Address 000C.85D5.E8BE
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20

Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/2 Altn BLK 19 128.2 P2p
Fa0/1 Root FWD 19 128.1 P2p

VLAN0004
Spanning tree enabled protocol ieee
Root ID Priority 24580
Address 000B.BE4E.3A93
Cost 19
Port 2(FastEthernet0/2)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 32772 (priority 32768 sys-id-ext 4)
Address 000C.85D5.E8BE
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20

Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/2 Root FWD 19 128.2 P2p
Fa0/1 Desg FWD 19 128.1 P2p

SW1#


خروجی کامند VERIFY SW2


SW2#SHOW SPANning-tree 
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 32769
Address 000B.BE4E.3A93
Cost 19
Port 2(FastEthernet0/2)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 00D0.D3B3.1E56
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20

Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1 Altn BLK 19 128.1 P2p
Fa0/2 Root FWD 19 128.2 P2p

VLAN0002
Spanning tree enabled protocol ieee
Root ID Priority 24578
Address 000C.85D5.E8BE
Cost 19
Port 1(FastEthernet0/1)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 32770 (priority 32768 sys-id-ext 2)
Address 00D0.D3B3.1E56
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20

Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1 Root FWD 19 128.1 P2p
Fa0/2 Altn BLK 19 128.2 P2p

VLAN0003
Spanning tree enabled protocol ieee
Root ID Priority 24579
Address 00D0.D3B3.1E56
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 24579 (priority 24576 sys-id-ext 3)
Address 00D0.D3B3.1E56
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20

Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1 Desg FWD 19 128.1 P2p
Fa0/2 Desg FWD 19 128.2 P2p

VLAN0004
Spanning tree enabled protocol ieee
Root ID Priority 24580
Address 000B.BE4E.3A93
Cost 19
Port 2(FastEthernet0/2)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 32772 (priority 32768 sys-id-ext 4)
Address 00D0.D3B3.1E56
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20

Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1 Altn BLK 19 128.1 P2p
Fa0/2 Root FWD 19 128.2 P2p



خروجی کامند VERIFY SW3


SW3#SHOW SPANning-tree 
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 32769
Address 000B.BE4E.3A93
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 000B.BE4E.3A93
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20

Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1 Desg FWD 19 128.1 P2p
Fa0/2 Desg FWD 19 128.2 P2p

VLAN0002
Spanning tree enabled protocol ieee
Root ID Priority 24578
Address 000C.85D5.E8BE
Cost 19
Port 2(FastEthernet0/2)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 32770 (priority 32768 sys-id-ext 2)
Address 000B.BE4E.3A93
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20

Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1 Desg FWD 19 128.1 P2p
Fa0/2 Root FWD 19 128.2 P2p

VLAN0003
Spanning tree enabled protocol ieee
Root ID Priority 24579
Address 00D0.D3B3.1E56
Cost 19
Port 1(FastEthernet0/1)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 32771 (priority 32768 sys-id-ext 3)
Address 000B.BE4E.3A93
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20

Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1 Root FWD 19 128.1 P2p
Fa0/2 Desg FWD 19 128.2 P2p

VLAN0004
Spanning tree enabled protocol ieee
Root ID Priority 24580
Address 000B.BE4E.3A93
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 24580 (priority 24576 sys-id-ext 4)
Address 000B.BE4E.3A93
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20

Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1 Desg FWD 19 128.1 P2p
Fa0/2 Desg FWD 19 128.2 P2p

خب برای اینکه خیلی گیج نشویم پورتهای سوئیچ 1 را در 3 تا VLAN با یکدیگر مقایسه می کنیم :

SW1#SHOW SPANning-tree 
VLAN0001
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/2 Root FWD 19 128.2 P2p
Fa0/1 Desg FWD 19 128.1 P2p

VLAN0002
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/2 Desg FWD 19 128.2 P2p
Fa0/1 Desg FWD 19 128.1 P2p

VLAN0003
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/2 Altn BLK 19 128.2 P2p
Fa0/1 Root FWD 19 128.1 P2p

VLAN0004
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/2 Root FWD 19 128.2 P2p
Fa0/1 Desg FWD 19 128.1 P2p

همانطور که می بینید پورت FA 0/2 برای VLAN 2 داری نقش DP ، برای VLAN 3 دارای نقش BLOCK و در VLAN 4 دارای نقش RP است.پس تا کنون یاد گرفتیم که منظور از اجرای STP بصورت PERVLAN چیست. حال بیائید کمی در خصوص کانفیگ های این پروتکل با هم صحبت کنیم.توجه داشته باشید که پروتکل های خانواده STP عموما" دارای کانفیگ مشابهی هستند و برای تمام آنها این کانفیگ ها قابل استفاده هستند مگر پروتکل MSTP که کمی تفاوت دارد که در جای خود صحبت خواهیم کرد اما غیر از آن ما ، سوئیچ ها PVST+ هستند که نهایتا" ما آنها را RPVST+ کانفیگ می کنیم ، پس کانفیگ ها مشابه و قابل استفاده در همه آنها هستند.

کامند ها



انتخاب سوئیچ روت


سیسکو پیشنهاد داده است برای اینکه یک سوئیچ رو بصورت PERVLAN بعنوان سوئیچ روت یا BACKUP آن انتخاب کنیم از کامند زیر استفاده کنیم :

SW(config)#SPANning-tree VLAN  ROOT < primary | secondary <


مثلا" می خواهیم در سناریویی مانند سناریو زیر

20


در VLAN 2 ، سوئیچ DIS1 بعنوان R.B و سوئیچ DIS2 بعنوان سوئیچ بک آپ روت باشد :

DIS1(config)#SPANning-tree VLAN 2 ROOT Primary
DIS2(config)#SPANning-tree VLAN 2 ROOT Secondary


روش دیگر در انتخاب سوئیچ روت کاهش مقدار PRIORITY سوئیچ است. از مباحث قبلی به یاد داریم که در STP و مشخصه سوئیچ که همان BID و به شکل زیر بود نخست مقدار PRIORITY مقایسه می شد و اگر مقدارش مساوی بود سپس سراغ مقایسه مک آدرس ها می رفت. اما ما می توانیم همین ابتدا مقدار PR سوئیچ ها را برای روت شدن کاهش دهیم.مثلا" برای همان سوئیچ DIS مقدار PR را از مقدار پیش فرضش که 32768 است به مقادیر کمتر کاهش دهیم :

DIS1(config)#SPANning-tree VLAN 2 PRiority ?
<0-61440> bridge priority in increments of 4096


همانطور که می بینیم برای مقدار PR از ما می خواهد که مقدار PR باید از مضارب 4096 باشد ولی ما که ضرایب آن را نمی دانیم و کافیست یک مقدار را بصورت اشتباه وارد کنیم یعنی

DIS1(config)#SPANning-tree VLAN 2 PRiority 45
% Bridge Priority must be in increments of 4096.
% Allowed values are:
0 4096 8192 12288 16384 20480 24576 28672
32768 36864 40960 45056 49152 53248 57344 61440


همانطور که می بینید من عدد 45 را به اشتباه وارد کردم وخودش ضرایب را به من نشان داد.حالا توجه شما را به نکته ی دیگری جلب میکنم.وقتی یک سوئیچ را روت می کنید یا آن سوئیچ توسط خود پروتکل STP بعنوان روت انتخاب شده ، اگر از کامند زیر استفاده کنید در خروجی دستور در قسمت ROOT ID عبارت This bridge is the root را نوشته است که یعنی آن سوئیچ ، سوئیج روت است.

DIS1#SHOW SPANning-tree 

VLAN0002
  Spanning tree enabled protocol ieee
  Root ID    Priority    20482
             Address     00D0.D3B3.1E56
             This bridge is the root
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    20482  (priority 20480 sys-id-ext 2)
             Address     00D0.D3B3.1E56
             Hello Time  2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  20


به مقدار PR توجه کنید ، در قسمت ROOT ID تمام اطلاعات سوئیچ روت و در قسمت BRIDGE ID تمام اطلاعات خود سوئیچ را نوشته است که در خروجی کامند فوق می بینیم که مقدار مک در هر 2 قسمت یکسان است که این یعنی این سوئیچ روت است. کمی سخت شد نه ؟ خب به تصویر زیر نگاه کنید :

30



ما 3 سوئیچ با 3 مقدار متفاوت از PR داریم.حال سوال این است که PR کدامیک کوچکتر است ؟مشخص است که سوئیچ DIS1 با کمترین مقدار PR می تواند سوئیچ روت باشد .پس من می توانم مستقیم از طریق کاهش مقدار PR برای یک سوئیچ ، آنرا روت کنم که البته پیشنهاد سیسکو همانطور که گفتم استفاده از کامند ROOT PRIMARY می باشد. در خصوص مقدار PR و ضرایب آن چند نکته دیگر هم وجود دارد که با هم بررسی می کنیم : نخست نگاهی به پکت HELLO BPDU می اندازیم

40


همانطور که می بینیم مقدار BRIDGE ID برابر با 8 بایت است که از این 8 بایت ، 2 بایت مقدار PRIORITY و 6 بایت هم مقدار مک آدرس است :

50


51


ولی در پروتکل PVST+

60


هر چند مقدار دیفالت PRIORITY برابر با 32768 است ولی این مقدار می تواند بین 0 تا 65535 باشد که البته چون این مقدار PR از ضرایب 4096 است ، آخرین ضریب قابل استفاده مقدار 61440 است.

Switch(config)#SPAN VLAN 1 PR 45
% Bridge Priority must be in increments of 4096.
% Allowed values are:
0 4096 8192 12288 16384 20480 24576 28672
32768 36864 40960 45056 49152 53248 57344 61440
Switch(config)#

درک این مفهوم که مقدار ضریب 4096 از کجا آمده است هم واضح است ، کافیست کل مقدار BID را بر خود تعداد بیتهای PR در پروتکل PVST+ تقسیم کنیم.

4 BIT PR -> (2^16/2^4 )= 65536/16=4096
61440+4096=65535


اما از بحث اصلی دور نشویم ، ما تاکنون در خصوص تعیین سوئیچ روت که براساس کامند ROOT PRIMARY و یا از طریق مقدار PRIORITY بود و اینکه چرا این مقدار PRIORITY در پروتکل PVST+ برابر با 4096 است صحبت کردیم.یک نکته دیگر در این خصوص وجود دارد. اگر دقت کنید شما وقتی از کامند ROOT PRIMARY استفاده کنید مقدار PR سوئیچ براساس PR سایر سوئیچ ها شبکه به ترتیب زیر کاهش پیدا می کند :
1-اگر شما از کامند ROOT PRIMARY استفاده کردید و PR سایر سوئیچ ها همان مقدار دیفالت خودشان یعنی 32768 بود در اینصورت مقدار PR سوئیچی که کامند مربوطه در آن زده شد به 24XXXتغییر پیدا می کند.


Switch(config)#SPANning-tree VLAN 1 ROOT Primary


Switch#SHOW SPANning-tree 
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 24577
Address 000C.CF79.9AE7
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 24577 (priority 24576 sys-id-ext 1)
Address 000C.CF79.9AE7
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20


2-اگر قبلا" کامند فوق را استفاده کرده اید و PR یک سوئیچ برابر با 24XXX است ، حال اگر این کامند را روی سوئیچ غیر از سوئیچ قبلی استفاده کند مقدار PR آن سوئیچ به اندازه 4096 تا کوچکتر از 24XXX خواهد بود.

Switch(config)#SPAN VLAN 1 ROOT PR
Switch(config)#
Switch#
%SYS-5-CONFIG_I: Configured from console by console

Switch#SHOW SPAN
Switch#SHOW SPANning-tree 
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 20481
Address 00E0.8F50.5CBC
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 20481 (priority 20480 sys-id-ext 1)
Address 00E0.8F50.5CBC
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20



3-همچنین در صورت استفاده از کامند root secondary مقدار pr به 28XXX تغییر پیدا میکند.

Switch(config)#SPAN VLAN 1 ROOT SECondary 
Switch(config)#
Switch#
%SYS-5-CONFIG_I: Configured from console by console

Switch#
Switch#SHOW SPAN
Switch#SHOW SPANning-tree 
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 20481
Address 00E0.8F50.5CBC
Cost 19
Port 2(FastEthernet0/2)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 28673 (priority 28672 sys-id-ext 1)
Address 0007.EC7C.9D3E
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20


به مقدار PR در قسمت BRIDGE توجه کنید.

در مورد مبحث COST

یاد گرفتیم


    1. تا کنون یادگرفتیم که مفهوم per vlan اجرا شدن در پروتکل pvst+ به چه معناست.
    2. یاد گرفتیم برای تعیین سوئیچ روت و یا بک آپ آن برای هر vlan ، از کامند مربوطه چطور و به چه نحو استفاده کنیم
SW(config)#SPANning-tree VLAN  ROOT < primary | secondary >
    1. همچنین باد گرفتیم که اگر priority یک سوئیچ را آنقدر کاهش دهیم تا pr یک سوئیچ نسبت به سایر سوئیچ های شبکه کمتر و یا اصلا" یک pr برابر با 0 باشد ، آن سوئیچ روت خواهد شد.
SW(config)#SPANning-tree VLAN   PRiority < increments of 4096 >
  1. یاد گرفتیم که اگر در 2 سوئیچ و مقدار BID ، اگر مقدار PR برابر بود مقایسه برای انتخاب سوئیچ روت براساس مک آدرس خواهد بود.
  2. یاد گرفتیم که استفاده از کامند ROOT PRIMARY باعث می شود در نخستین باری که از آن استفاده می شود مقدار PR سوئیچ به 24XXX و در نوبت دوم مقدار PR سوئیچی که این کامند در آن زده می شود به انداز 4096 تا از PR قبلی که 24XXX کمتر شود یعنی PR به حدود 20XXX برسد.
  3. یاد گرفتیم استفاده از کامند ROOT SECONDARY که باعث انتخاب سوئیچ بک آپ روت می شود مقدار PR آن به 28XXX کاهش پیدا می کند.


پس تاکنون عمده بحث ما تا به اینجا در خصوص انتخاب سوئیچ روت بود که کلیه آنها بصورت مستقیم و یا غیر مستقیم به مقدار PR مرتبط می شد. حالا بیائید کمی در خصوص COST صحبت کنیم و در کنار یک مسئله با این مفهوم آشنا شویم.به تصویر زیر با دقت نگاه کنید :

0


به یاد داریم که در مباحث قبلی گفته شد ممکن است مقادیر COST بهینه نباشد و همانطور که در تصویر فوق پیداست ، مقدار COST بین سوئیچ SW2 تا سوئیچ روت و از سوئیچ SW4 و با عبور از SW3 تا نهایتا" سوئیچ روت هم مقدار COST برابر با 4 است که در مقایسه با سرعت های لینک مقادیر به هیچ عنوان بهینه نیستند.بیائید در همین خصوص یک مثال حل کنیم :

1



همانطور که مشخص است ما در این سناریو ( تصویر فوق ) 4 تا لینک داریم ، 3 تای آنها سرعت 10GIG و لینک دیگر سرعت 1GIG دارد.همانطور که گفته شد STP به ما یک شبکه بدون LOOP را می دهد اما این پروتکل تنها جلوی LOOP را میگیرد و COST آن هم با توجه به سناریو فوق می توان گفت چندان بهینه نیست. می توان با افزایش COST در پورت GI0.1 از سوئیچ 2 ترتیبی داد که ترافیک از لینک با سرعت 10GIG عبور کنند و COST پورت GI0.1 برای سوئیچ SW2 به جای 4 ، مثلا" 8 باشد یعنی

5



برای بهینه سازی STP ، من مقدار COST پورت GI0.1 را به مقدار 8 افزایش می دهم تا مقدار 8 نسبت به پورت دیگر سوئیچ SW2 تا سوئیچ روت که دارای مقدار COST 6 است ، COST بالاتر و آن پورت بلاک شود. برای این که این موضوع ملموس باشد سناریویی مثل سناریو زیر در GNS3 اجرا کرده و مقدار COST همه ی ROOT PORT ها را مطابق تصویر فوق و براساس CSOT تغییر دهید :

6




کانفیگ های مربوطه

IOU1(config)#SPANning-tree VLAN 1 ROOT PRimary 


IOU2(config)#INTerface ETHernet 0/1
IOU2(config-if)#SPANning-tree VLAN 1 COST 8

IOU2(config)#INT ETHernet 1/0
IOU2(config-if)#SPANning-tree VLAN 1 COST 2

IOU3(config)#INTerface ETHernet 0/2
IOU3(config-if)#SPAnning-tree VLAN 1 COST 2

IOU4(config)#INT ETHernet 0/3
IOU4(config-if)#SPANning-tree VLAN 1 COST 2


نتیجه خروجی

IOU2#SHOW SPANning-tree 
VLAN0001

Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Et0/1               Altn BLK 8         128.2    Shr 
Et1/0               Root FWD 2         128.33   Shr



همانطور که انتظار می رفت پورت ETH1.0 در نقش RP و پورت ETH0.1 درنقش BLOCK است و ما سوئیچ ها را براساس سرعت لینک ها بهینه کرده ایم .

33333




بررسی کامند SHOW SPANning-tree

خروجی کامل این دستور به صورت زیر می باشد :

IOU2#SHOW SPANning-tree 

VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    24577
             Address     aabb.cc00.0100
             Cost        6
             Port        33 (Ethernet1/0)
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1)
             Address     aabb.cc00.0200
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time 300

Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Et0/0               Desg FWD 100       128.1    Shr 
Et0/1               Altn BLK 8         128.2    Shr 
Et0/2               Desg FWD 100       128.3    Shr


7


1 : کلیه اطلاعات نمایش داده شده برای VLAN 1 می باشد.
2: پروتکلی که سوئیچ استفاده میکند که البته پروتکل دیفالت هم اکنون PVST+ است.
3 : اطلاعات مربوطه در آن کادر مختص به سوئیچ روت است.
4 : اطلاعات مربوطه در آن کادر مختص به همان سوئیچی است که در آن کامند مربوطه زده شده است.
یادآوری : اگر یادتان باشد در مقالات نخست به این موضوع اشاره کردم که سوئیچ ها بسته ها ( BPDU ) را به هم می فرستند و از طریق ان با هم در ارتباط هستند ، اگر بسته های ارسالی را نامه نگاری بین سوئیچی بدانیم ، شاید آنها نامه ای مثل نامه زیر را به یکدیگر ارسال می کنند!

19


9


همانطور که می بینید نامه نگاری بین سوئیچی چیزی کمتر از نامه نگاری جوامع انسانی ندارد!

10111



5.X اطلاعات مربوط به سوئیچ روت
5.1 اطلاعات مقدار به PR سوئیچ روت
5.2 اطلاعات مربوط به مک آدرس سوئیچ روت
5.3 تایمرها در سوئیچ روت

6.X اطلاعات مربوط به سوئیچ BRIDGE
6.1 اطلاعات مقدار به PR سوئیچ BRIDGE
6.2 اطلاعات مربوط به مک آدرس سوئیچ BRIDGE
6.3 تایمرها در سوئیچ BRIDGE

7


7 سوئیچ IOU2 اذعان دارد که از طریق پورت ETH1/0 و با COST 6 به سوئیچ روت دسترسی دارد.

445454


همچنین اگر در سوئیچ روت خروجی کامند فوق را بگیریم :

856


8 همانطور که می بینیم ، در سوئیچ روت ) IOU1 ) ، اگر با تصویر قبلی مقایسه شود می بینیم که به جای مقدار COST و PORT عبارت This bridge is the root را نوشته است که یعنی آن سوئیچ ، همان سوئیچ روت است که البته در تصویر زیر مشخص است :

18


20



9 شماره اینترفیس های سوئیچ
10 نقش هر پورت سوئیچ
11 وضعیت هر پورت سوئیج
12 مقدار COST هر پورت سوئیچ
تذکر : در برنامه GNS3 تمام پورتها از نوع اترنت و مقدار COST 100 می باشند.



Prio.Nbr


پیش از این با COST آشنا شدیم و یاد گرفتیم چگونه مقدار COST را براساس شبکه خود افزایش یا کاهش دهیم.حال بهتر است قبل از ادامه مباحث ، به مراحل 3 گانه STP مروری داشته باشیم تا در خلال آن چند مطلب روشن شود :

مراحل 3 گانه پروتکل STP
1.سوئیچ با کمترین BID به عنوان سوئیچ اصلی یا همان ROOT BRIDGE مشخص می شود.تمام پورتهای این سوئیچ در نقش DESIGNATED PORT و وضعیت FORWARD قرار می گیرد. 2.در بین تمام سوئیچ های باقی مانده فقط یک پورت و نزدیکترین پورت به سوئیچ روت ، به عنوان پورت اصلی انتخاب می شود.( معیار نزدکی براساس COST است . ) 3.در بین SEGMENT های باقی مانده باید یک پورت DESIGNATED PORT و پورت مقابل آن BLOCK شود. در مرحله نخست ، دانستیم انتخاب سوئیچ روت بر پایه PRIORITY کمتر و در صورت مساوی بودن PRIORITY در BID ، مقایسه براساس مک کوچکتر در شبکه است که پس از انتخاب رقابتی سوئیچ روت ، پورتهای سوئیچ روت در نقش DESIGNATED PORT و وضعیت FORWARD قرار می گیرد.

BID = PRIORITY . ( BASE MAC )

سپس در مرحله دوم و سوم قرار شد که پورتهای ROOT PORT و یا DESIGNATED PORT انتخاب شود که براساس 3 معیار زیر بود :

1.COST  کمتر
SENDER BRIDGE ID.2 کمتر
3.SENDER PORT ID کمتر



با 2 مورد ابتدایی بصورت کامل آشنا شدیم ولی ملاک سوم برای اینکه یک پورت RP و یا DP شود ، SENDER PORT ID کمتر است.توجه کنید در زمینه PRIORITY ما یک PRIORITY سوئیچ (BRIDGE PRIORITY) داریم که دیفالت برابر با 32768 است و یک PORT PRIORITY که بصورت دیفالت برابر با 128 است.

21


همانطور که می بینید این قسمت شامل PRIORITY و یک شماره است. حال برگردیم به مراحل 3 گانه stp ، قرار شده بود در مرحله نخست یک سوئیچ روت شود که شد و پورتهاش DP شدند.یعنی طبق تصویر زیر

24

حال بیائید در SW2 ببینیم طبق ملاک ها که قبلا" صحبتش رفت کدامیک پورت RP و کدامیک بلاک هستند :

1.LOWER COST  
2.LOWER SENDER BRIDGE ID
3.LOWER SENDER PORT ID 


خب در قسمت اول ملاک کمترین COST تا سوئیچ روت است که دراین قسمت که 2 لینک داریم ، هر جفت پورتها دارای COST مساوی تا سوئیچ روت هستند ، پس سراغ ملاک دوم می رویم در ملاک دوم که SENDER BRIDGE ID است ، سوئیچ ارسال کننده BPDU یکی است پس این ملاک هم منطقی نیست ولی در ملاک سوم گفته شده SENDER PORT ID کمتر بیائید کمی روی این موضوع ZOOM کنیم : در مراحل 3 گانه در خصوص این ملاک اینگونه توضیح داده ام که :


3.LOWER SENDER PORT ID

لینک متصل به آن پورت سوئیچی که BPDU ارسال می کند و پورت ارسال کننده اش ، شماره اش کمتر است.
با دقت به تصویر زیر نگاه کنید ، از دید SW2

SW2


پورت FA 0.1 سوئیچ 1 در قسمت PRIO.NBR دارای شماره 128.1 و پورت FA 0.2 سوئیچ 2 دارای PRIO.NBR به شماره 128.2 است . از دید SW2 ، پورت FA 0.1 از سوئیچ SW1 در مجموع PRIO.NBR کوچکتر از پورت دیگر خود است. به زبان ساده ، ابتدا مقایسه در خود PRIO است و سپس در شماره کمتر مقایسه صورت می گیرد.یعنی از دید SW2 پورت FA0.1 از سوئیچ SW1 دارای مقدار 128.1 و کمتری نسبت به پورت دیگر همان سوئیچ است حالا و با این توصیفات ، پورت مقابل FA0.1 از سوئیچ SW1 می تواند RP باشد و پورت دیگرش هم بلاک باشد .

24


25



حال برای اینکه بهتر متوجه موضوع شوید من PRIORITY پورت FA 0.2 از سوئیچ SW1 ( دقیقا" پورت مقابل بلاک پورت SW2 ) را از مقدار دیفالت به مقدار کمتری کاهش می دهم :

SW1(config)#INTerface FA 0/2
SW1(config-if)#SPAnning-tree VLAN 1 PORT-priority 64

در واقع پورتهای SW2 به پورتهای مقابلشان نگاه می کنند هر پورتی در طرف مقابل مقدار PRIORITY آن کمتر بود ، پورت همان سوئیچ ROOT PORT هستند.

247


26


SW2#SHOW SPANning-tree 
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 32769
Address 0010.1195.5388
Cost 19
Port 2(FastEthernet0/2)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 00E0.F758.DAA6
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20

Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1 Altn BLK 19 128.1 P2p
Fa0/2 Root FWD 19 128.2 P2p


249


250

تایمرها

در مقالات قبل ، نیم نگاهی به تایمرها انداختیم ولی در این قسمت می خواهیم بیشتر در مورد آنها صحبت کنیم.

HELLO   TIME
MAX    AGE
FORWARD   DELAY


HELLO TIME
زمانی است که سوئیچ روت براساس آن BPDU ارسال میکند که بصورت پیش فرض این زمان 2 ثانیه می باشد .

FORWARD DELAY
حالت های میانی LISTENING & LEARNING است که در هر کدام زمانی برابر با 15 ثانیه است

MAX AGE
در شرایط عادی که سوئیچ از طریق ROOT PORT خود با سوئیچ روت در ارتباط است BPDU خوب دریافت میکند ، حال اگر به هر دلیل BPDU بد دریافت کند ، آخرین BPDU خوبی که روی ROOT PORT خودش دریافت کرده بود را به مدت 20 ثانیه روی همان پورت ROOT PORT ذخیره کرده و تا زمان 20 ثانبه BPDU جدید را قبول نمی کند ، پس از آن و منقضی شدن BPDU خوب ، BPDU جدید را قبول می کند. پس تاکنون دانستیم که مقادیر پیش فرض بصورت زیر است :

HELLO  TIME          = 2 SEC
MAX AGE                = 20 SEC
FORWARD DELAY = 15 SEC


توجه داشته باشید که هر چند مقادیر تایمر در هر سوئیچ قابل کانفیگ است ولی همه سوئیچ ها از مقادیر تایمر سوئیچ روت تبعیت می کنند :

IOU1#SHOW SPANning-tree 

VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    24577
             Address     aabb.cc00.0100
             This bridge is the root
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    24577  (priority 24576 sys-id-ext 1)
             Address     aabb.cc00.0100
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time 15


هر کدام از تایمرها ضریبی از HELLO TIME هستند که بسته به نوع تغییر ( DIRECT OR INDIRECT ) در زمان همگرایی تاثیر گذار هستند :

FORWARD  DELAY = 7 HELLO TIME
MAX  AGE = 10 HELLO TIME


همانطور که گفته شد مقادیر FORWARD DELAY و MAX AGE ضریبی از HELLO TIME و براساس عمق شبکه ) هستند ، یعنی

1


از زمان تولید BPDU تا زمانی که این BPDU به آخرین سوئیچ می رسد 7 سوئیچ وجود دارد و عمق شبکه من 7 است. حال اگر عمق شبکه من کمتر باشد این مقادیر را می توان کمتر کرد یعنی

2


در تصویر فوق و براساس نوع طراحی ، شبکه من 3 لایه و بین کلاینت مبدا و مقصد 5 سوئیچ است و عمق شبکه من 5 است و همینطور در تصویر زیر

3


نوع طراحی شبکه من به گونه ای است که عمق شبکه 3 و 3 سوئیچ بین مبدا و مقصد قرار دارد .حالا که با مفهوم عمق شبکه آشنا شدیم به مقدار زمان های پیشفرض تایمرها که گفته شد ضریبی از HELLO TIME هستند بر میگردیم.

FORWARD  DELAY = 7 HELLO TIME
MAX  AGE = 10 HELLO TIME

وقتی عمق شبکه کاهش یافت می توان مقادیر فوق را کاهش داد که به دو صورت قابل انجام است :
1.تغییر دستی تایمرها
2.تغییر تایمر براساس عمق شبکه




1.تغییر دستی تایمرها


می توانیم طبق کانفیگ های زیر ، مقادیر را آنگونه که میخواهیم عوض کنیم :

IOU1(config)#SPANning-tree  HELLo-time  <1-10>
 IOU1(config)#SPANning-tree VLAn  MAX-age   <6-40>
IOU1(config)#SPANning-tree  FORward-time  <4-30>

بعنوان مثال می خواهیم تایمرها بصورت زیر باشد

HELLO  TIME          = 1 SEC
MAX AGE                = 7 SEC
FORWARD DELAY = 4 SEC

IOU1(config)#SPANning-tree VLAN 1 HELlo-time 1
IOU1(config)#SPANning-tree VLAN 1 MAX-age 7
IOU1(config)#SPANning-tree VLAN 1 FOrward-time 4

IOU1#SHOW SPANning-tree 

VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    24577
             Address     aabb.cc00.0100
             This bridge is the root
             Hello Time   1 sec  Max Age  7 sec  Forward Delay  4 sec

  Bridge ID  Priority    24577  (priority 24576 sys-id-ext 1)
             Address     aabb.cc00.0100
             Hello Time   1 sec  Max Age  7 sec  Forward Delay  4 sec
             Aging Time 300


اما همانطور که گفته شد بین تایمرها که براساس عمق شبکه اند و زمان HELLO TIME یک ارتباط منطقی وجود دارد و پیشنهاد می شود که اگر قصد داریم تایمرها را کاهش دهیم تا نهایتا" سبب کاهش زمان همگرایی شویم از روش دوم که براساس عمق شبکه و HELLO TIME است استفاده کنیم.


2.تغییر تایمر براساس عمق شبکه


سناریو زیر را در نظر بگیرید

3



کانفیگ عمومی

IOU1(config)#spanning-tree vlan  root <primary|secondary> diameter <2-7> hello-time <1-10>
</primary|secondary>


کانفیگ براساس عمق شبکه 3 و زمان hello time = 1

IOU1(config)#spanning-tree vlan 1 root primary diameter 3 hello-time 1

IOU1#show spanning-tree 

VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    24577
             Address     aabb.cc00.0100
             This bridge is the root
             Hello Time   1 sec  Max Age  7 sec  Forward Delay  5 sec

  Bridge ID  Priority    24577  (priority 24576 sys-id-ext 1)
             Address     aabb.cc00.0100
             Hello Time   1 sec  Max Age  7 sec  Forward Delay  5 sec


خب حالا براساس عمق شبکه 3

direct = 2 fwd-time = 10 sec
in direct = max age + 2 fwd-time = 7 + 10 = 17 sec

همانطور که می بینیم زمان همگرایی که براساس تغییرات DIRECT و یا INDIRECT بصورت دیفالت 30-50 ثانیه بود براساس عمق شبکه 3 و زمان hello time = 1 sec به زمانی برابر با 10 تا 17 ثانیه کاهش یافت .

تسریع در پروسه همگرایی

پیش از این دیدیم که زمان همگرایی بین سوئیچ ها ، بسته به تغییرات DIRECT و یا IN-DIRECT ، زمانی بین 30 تا 50 ثانیه طول می کشید که زمان زیادی بود ، در بحث همگرایی شاید یک سوال وجو داشته باشد ، درست است که در پروسه همگرایی از ایجاد LOOP جلوگیری می شود اما قطع و وصل شدن کلاینت ها به اینترفیس های سوئیچ که باعث ایجاد LOOP نمی شود ، چرا برای کلاینت ها زمان همگرایی اینقدر بالاست ؟

حق با شماست ، جهت تسریع پروسه همگرایی فیچرهایی ارائه شد که زمان همگرایی را کاهش و سرعت همگرایی را افزایش دهد.درست مانند این است که بخواهند سرعت یک خودرو رو اضافه کنند ، بدون تغییر در ساختار خودرو ، مثلا" نیتروژن به آن اضافه کرده و یا موتورش را دستکاری می کردند که سرعتش زیاد شود.

اما بعدا" در پروتکل RSTP ساختار همگرایی به گونه ای شد که ذات این پروتکل سریع باشد و در همان مثال ماشین ، در عرض 3 ثانیه سرعتش به 200KM برسد!البته تمام فیچرهایی که در این مقاله می خوانیم ، دیفالت پروتکل RSTP است.

1


همانطور که گفته شد در این قسمت قصد داریم با فیچرهایی اشنا شویم که زمان همگرایی ما را بسته به تغییر ، کاهش دهد ، به عبارت دیگر هر کدام از این فیچر ها ، سبب حذف ( و به عبارت بهتر bypass ) زمان تایمرها ( MAX AGE یا FORWARD DELAY ) خواهد شد.بعنوان مثال


1.برای حذف زمان همگرایی برای کلاینت ها چون نوع تغییرات بصورت INSIGNINFICANT است از فیچر PORTFAST استفاده می کنیم.
2.برای حذف زمان MAX AGE در تغییرات IN-DIRECT از فیچر BACKBONE FAST استفاده می شود.
3.برای حذف FORWARD DELAY ها در STATE های LISTENING & LEARNING که قرار ما در وضعیت LISTENIG این بود که نقش پورتها مشخص شود و در وضعیت LEARNING جدول مک به روز شود ، از فیچر UPLINKFAST استفاده می کنیم.


PORTFAST


تاکنون دانستیم که تغییرات سوئیچ های شبکه به 3 دسته ، تقسیم بندی می شود :

DIRECT
IN-DIRECT
INSIGNIFICANT

گفته شد که در تغییرات INSIGNIFICANT ، که جزئ تغییرات بی اهمیت محسوب می شود ، خاموش و روشن شدن کلاینت ها که نهایتا" باعث UP و DOWN شدن پورت سوئیچ می شود که از نوع DIRECT است چون نهایتا" باعث LOOP نمی شود چندان برای سوئیچ اهمیت ندارد.

در تغییرات DIRECT زمان همگرایی ما 30 ثانیه بود ،یعنی از زمان روشن شدن یک کامپوتر ، 30 ثانیه زمان لازم بود که پورت مربوطه به آن کلاینت FORWARD شود.

در تغییرات DIRECT ، 2 اتفاق کلی می افتاد :
1.وارد شدن پورت مربوطه به فاز همگرایی
2.ارسال TCN

1.وارد شدن پورت مربوطه به فاز همگرایی
با تغییر وضعیت یک پورت از BLOCK به FORWARD ( فعال شدن یک پورت سوئیچ به واسطه روش شدن کامپیوتر )، آن پورت سوئیچ وارد پروسه همگرایی می شد تا از ایجاد LOOP جلوگیری کندو چون این تغییر از نوع DIRECT بود زمانی برابر با (FORWARD DELAY 2 )که معادل 30 ثانیه بود را سپری می کرد.

2.ارسال TCN
سوئیچ وقتی روی یک پورت خودش ، یک تغییر DIRECT حس می کرد با ارسال TCN ، قصد داشت که سوئیچ روت را در جریان تغییر توپولوژی خود قرار دهد تا در نهایت سوئیچ روت با ارسال BPDU با TCN فلگ شده سایر سوئیچ ها را در جریان تغییر قرار داده و سبب می شد تا AGING TIME جدول مک از 300 ثانیه به 15 ثانیه کاهش پیدا کرده تا مک آدرس های غلط از جدول مک سوئیچ ها پاک شوند. اما ما می دانیم که کلاینت های متصل به سوئیچ ACCESS هیچ وقت باعث ایجاد LOOP در شبکه نمی شود چرا که اصلا" از جانب آنها هیچ BPDU ای ارسال نمی شود!

2


بخاطر همین من این فیچر را روی ACCESS LAYER NODE ها که به کلاینت ها متصل هستند فعال می کنم چرا که می دانم کلاینت ها باعث ایجاد LOOP نخواهند شد.با فعال کردن این فیچر ، پورت بدون طی کردن مراحل میانی LISTENING & LEARNING مستقیم به وضعیت FORWARD خواهد رفت.

3


توجه شود در زمان نخستین اتصال سوئیچ ها ، همگی بلاک هستند ولی بلافاصله به وضعیت بعدی یعنی LISTENING می روند. خود وضعیت بلاکینگ و MAX AGE خاص تغییرات INDIRECT است اما در تغییرات DIRECT ، تنها وضعیت های LISTEN & LEARN که زمانی معادل 30 ثانیه است داریم. حال زمانی که یک کلاینت روشن شود ، پورت مربوطه سوئیچ بلافاصله و بدون عبور از LISTEN & LEARN ( و البته باعلم یه این موضوع که اگر این پورت حتی اگر ازاین وضعیت ها LISTEN & LEARN عبور هم نکند نهایتا" LOOP ایجاد نشده )به وضعیت FORWARD تغییر پیدا می کند. وقتی فیچر PORTFAST را فعال می کنید 2 اتفاق دیگر هم در پشت صحنه می افتد :

1.سوئیچ TCN ارسال نمی کند و باعث تغییرات در سطح شبکه و نهایتا" کاهش زمان AGE MAC TABLE سوئیچ ها نمی شود.
2.پورت سریع و بدون طی زمان 30 ثانیه UP می شود.

هشدار!


زمانی که شما این فیچر را فعال می کند به شما هشداری نمایش می دهد که اگر این فیچر ارا روی یک پورت فعال کردید ، آن پورت سوئیچ را به یه سوئیچ دیگر متصل نکنید چرا که پورت سوئیچ مبدا" چون وضعیت های LISTEN & LEARN را سپری نمی کند امکان ایجاد LOOP وجود دارد.

%Warning: portfast should only be enabled on ports connected to a single
host. Connecting hubs, concentrators, switches, bridges, etc... to this
interface when portfast is enabled, can cause temporary bridging loops.
Use with CAUTION

%Portfast has been configured on FastEthernet0/1 but will only
have effect when the interface is in a non-trunking mode.


6


همانطور که گفته شد این فیچر را فقط باید روی پورت های متصل به کلاینت ها که از جانب آنها هیچ BPDU ای دریافت نمی شود باید فعال کرد و نباید این فیچر روی پورت های UPLINK که به سوئیچ های بالادستی متصل هستند فعال شود چرا که می خواهیم STP را روی آن پورتها چک کند تا از ایجاد LOOP جلوگیری شود.

کانفیگ PORTFAST


روش اول

Switch(config)#SPAnning-tree PORTfast DEfault 

با کامند نخست ، PORTFAST را روی تمامی پورت های سوئیچ فعال کرده ایم که البته همانطور که گفته شد این فیچر روی پورت های UPLINK نیز فعال شده است.

Switch(config)#INTerface RANGE FA 0/1-2
Switch(config-if-range)#NO SPAnning-tree PORTfast

چون پورت ها FA0.1-2 پورت های UPLINK محسوب می شود ، این فیچر را روی آنها غیر فعال کرده ایم. همانطور که دیدیم این روش چندان جالب نیست و بهتر از روش دوم استفاده کنیم :

روش دوم


این فیچر را فقط روی همان پورت هایی که می خواهیم فعال کنیم :

Switch(config)#INT RANGE FA 0/3-4
Switch(config-if-range)#SPAnning-tree PORTfast 

%Warning: portfast should only be enabled on ports connected to a single
 host. Connecting hubs, concentrators, switches, bridges, etc... to this
 interface  when portfast is enabled, can cause temporary bridging loops.
 Use with CAUTION

%Portfast will be configured in 2 interfaces due to the range command
 but will only have effect when the interfaces are in a non-trunking mode.

همچنین پیشنهاد می کنم چون روی پورتهای ACCESS ما چندین قابلیت بصورت همزمان فعال می کنیم کامند فوق را بصورت زیر استفاده کنیم و پورتهای مربوطه را در مد ACCESS قرار دهیم

Switch(config)#INT RANGE FA 0/3-4
Switch(config-if-range)#SWItchport MODE ACCess 
Switch(config-if-range)#SPAnning-tree PORTfast



مشاهده وضعیت فعلی PORTFAST


Switch#SHOW SPANning-tree INT FA 0/3 PO
Switch#SHOW SPANning-tree INT FA 0/3 POrtfast 
VLAN0001 enabled

با کامند فوق می توانیم ببینیم که فیچر فوق روی اینترفیس مزبور که در VLAN خاص خود است فعال شده است.



کامند ماکرو


سناریو زیر را در نظر بگیرید :

40



3 کلاینت به سوئیچ ما متصل هستند اگر از کامند زیر استفاده کنیم :

IOU1(config)#INTerface range ethernet 0/1-3
IOU1(config-if-range)#switchport host

switchport mode will be set to access
spanning-tree portfast will be enabled
channel group will be disabled



همانطور که می بینیم این کامند 3 کار انجام می دهد :
1.پورت را access می کند.

switchport mode will be set to access


2.روی آن پورت ، قابلیت portfast را enable می کند.

spanning-tree portfast will be enabled


3.etherchannel را روی آن disable می کند.

channel group will be disabled


UPLINKFAST


همانطور که گفته شد ما با این فیچر قادر خواهیم بود تا زمان FORWARD DELAY ها در STATE LISTEN & LEARN را حذف (bypass) کنیم.
بیائید کمی به عقب برگردیم و در خصوص پروتکل STP و خود وضعیت STATE LISTENINGیک یادآوری کوتاه داشته باشیم :

9


قبلا" بررسی کردیم که در پروتکل STP ، نقش پورت های ما از 3 مورد بیشتر نبود ، DP & RP & BLOCK

9.3



همانطور که می بینیم ما برای دسترسی به سوئیچ روت 2 مسیر پیش رو داریم ، مسیر نخست از طریق خود ROOT PORT که یک مسیر مستقیم است و مسیر دوم از طریق پورت بلاک که با دریافت BPDU های FORWARD از سمت SW2 با سوئیچ روت در ارتباط است. می دانیم که ROOT PORT & BLOCK PORT هر دو به نحوی دریافت کننده BPDU از سمت سوئیچ روت هستند.حال سوال اینجاست که اگر به هر دلیل ارتباط RP از SW3 با سوئیچ روت قطع شود چه اتفاقی پس از آن می افتد؟پاسخ واضح است.در صورت بروز این اتفاق پورت FA 0.1 از SW3 با تغییر نقش خود از بلاک ، ROOT PORT خواهد شد.

41



همانطور که می بینیم با خاموش شدن پورتی که قبلا" ROOT PORT بوده ، تنها مسیر دسترسی به سوئیچ روت ، پورت FA0.1 سوئیچ SW3 است که در توپولوژی قبل BLOCK و حالا پس از تغییر شرایط در نقش ROOT PORT ظاهر شده است. در واقع می خواهم بگویم اگر قرار است که یک پورت بلاک بعد از 30 ثانیه ROOT PORT شود خب چرا از همان ابتدا و در حالی که ROOT PORT اصلی را داریم ، یک ROOT PORT دوم ( ALTERNATE ROOT PORT ) نداشته باشیم ؟

11


این ایده اصلی UPLINKFAST است.

همچنین همانطور که در تصاویر زیر می بینیم

7


8


در وضعیت LISTENING است که نقش پورت ها براساس مکانیزم FORWARD کردن BPDU های سوئیچ روت مشخص می شود که پس از مشخص شدن نقش پورتها ، هدف نهایتا" این است که یک پورت بلاک شودتا جلوی LOOP گرفته شود ، خب ما میگوئیم همان شرایط، یعنی پورتها مشخص شود ولی به جای نقش BLOCK PORT ، ما ALTERNATE PORT که ROOT PORT دوم است داشته باشیم . این ایده ، ایده ی جالبی است که آن را می توانیم روی سوئیچ های Access داشته باشیم. اما این کار 2 شرط اصلی دارد :
1.به پایین سوئیچ های access هیچ سوئیچی وصل نباشد.
2.این سوئیچ های access دارای REDUNDANT UPLINK باشند.

12.22


همانطور که دیدیم سوئیچ های ACCESS دارای افزونگی و 2 تا لینک UPLINK هستند که یکی ROOT PORT و دیگری میتواند ALTERNATE آن باشد و اگر به هر دلیل روت پورت ارتباطش با سوئیچ روت قطع شد ، پورت جایگزین آن یعنی ALTERNATE ROOT PORT می تواند جایگزین آن شود و این بین هیچ قطع ارتباطی حس نمی شود و نکته اینجاست که شما باید این فیچ را روی سوئیچ های انتهایی فعال کنید چرا که پس از اینکه شما این فیچر را فعال کردید 2 اتفاق در پشت صحنه می افتد :

1. Yمقدار PRIORIT سوئیچ از 32768 به 49152 افزایش پیدا می کند چرا که میخواهد اطمینان حاصل کند که این سوئیچ بعنوان سوئیچ روت انتخاب نمی شود.
2.مقدار COST اینترفیس ها را به اندازه 3000 تا افزایش می دهد که بداند این اینترفیس ها بعنوان DP میانی هم انتخاب نمی شود.
پس ما این فیچر را روی سوئیچ های انتهایی که همان LEAF-NODE سوئیچ های ما هستند فعال خواهیم کرد.اگر یک درخت را در نظر بگیرید می توان گفت که سوئیچ های انتهایی ، مشابه برگهای آن درخت هستند.

13.33.33




مثال


15


می خواهیم در سناریو فوق فیچر UPLINKFAST را روی سوئیچ IOU3 فعال کنیم اما قبل از اینکار توجه داشته باشید که PRIORITY سوئیچ در حالت عادی 32768 و مقدار COST اینترفیس ها براساس جدول COST است که در GNS3 چون اینترفیس ها از نوع اترنت هستند دارای COST 100 می باشند.

16


IOU3#SHOW SPANning-tree 

VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    32769
             Address     aabb.cc00.0100
             Cost        100
             Port        2 (Ethernet0/1)
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1)
             Address     aabb.cc00.0300
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time 300

Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Et0/0               Desg FWD 100       128.1    Shr 
Et0/1               Root FWD 100       128.2    Shr 
Et0/2               Altn BLK 100       128.3    Shr 
Et0/3               Desg FWD 100       128.4    Shr


کانفیگ uplinkfast روی IOU
به اطلاعاتی که در قسمت BRIDGE نمایش داده شده دقت کنید ، می بینید که مقدار PR سوئیچ به 49152 افزایش یافته است.همچنین به مقدار COST اینترفیس ها توجه کنید ، می بینید که 3000 تا به مقدار COST اضافه شده است.

IOU3(config)#SPANning-tree UPLinkfast 
IOU3(config)#EXIT
IOU3#SHOW SPANning-tree 

VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    32769
             Address     aabb.cc00.0100
             Cost        3100
             Port        2 (Ethernet0/1)
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    49153  (priority 49152 sys-id-ext 1)
             Address     aabb.cc00.0300
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time 300
  Uplinkfast enabled

Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Et0/0               Desg FWD 3100      128.1    Shr 
Et0/1               Root FWD 3100      128.2    Shr 
Et0/2               Altn BLK 3100      128.3    Shr 
Et0/3               Desg FWD 3100      128.4    Shr


مشاهده وضعیت UPLINKFAST روی سوئیچ

IOU4#SHOW SPANning-tree UPLinkfast 
UplinkFast is enabled

Station update rate set to 150 packets/sec.

UplinkFast statistics
-----------------------
Number of transitions via uplinkFast (all VLANs)            : 0
Number of proxy multicast addresses transmitted (all VLANs) : 0

Name                 Interface List
-------------------- ------------------------------------


تذکر


بسیاری از سوئیچ های سیسکو دارای 2 پورت سریعتر به منظور ارتباط با سایر دستگاه ها هستند که معمولا" آنها را با نام لینک های بالایی یا UPLINKS می شناسیم.برای مثال برخی سوئیچ های دارای 24 پورت FAST ETHERNET و دو پورت GIGABIT ETHERNET هستند.پورت های FE به رایانه ها متصل شده و پورت های گیگابیت که پهنای باند بیشتری دارند به سوئیچ های بخش های دیگر شبکه متصل می گردند.

MAX-UPDATE-RATE


در ادامه کامند UPLinkfast

IOU4(config)#SPANning-tree UPLinkfast MAX-update-rate  <0-65535>

همانطور که می بینیم عبارتی با عنوان MAX-update-rate داریم که نیازمند توضیح است. هنگامی که یک لینک بالایی روی سویئچ دچار اشکال میگردد ، قابلیت UPLINKFAST سریعا" لینک دیگری را فعال می سازد امانکته مهمی که در این بین وجود دارد و آن این است که جدول آدرس های سوئیچ هم باید به سرعت به روز گردند تا دستگاه ها بدانند از طریق این لینک جدید باید به قسمت های مختلفی از شبکه دسترسی پیدا کنند.این کار روی سوئیچ محلی انجام می شود اما قابلیت جالب UPLINKFAST این است که به سوئیچ های بالادستی هم کمک می کند جداول آدرس های خود را اصلاح و به روز کنند.

دستگاه های مختلفی رو ی سوئیچ محلی ما وجود دارند که سوئیچ های بالادستی مسیر دستیابی به آنها را از طریق لینک قدیمی می دانند که اکنون غیر فعال شده است پس باید سوئیچ های بالادستی را متوجه این مطلب کنند که دستگاه های متصل به سوئیچ محلی از طریق یک لینک جدید قابل دسترسی هستند و این مسئله را باید در جدول آدرس دهی آنها لحاظ گردد.

برای انجام این کار سوئیچ اقدام به تولید و ارسال فریم های MULTICAST با آدرس 0100.0CCD.CDCD می نماید و این کار را از طریق دستگاه های متصل به خودش انجام می دهد ، در واقع سوئیچ آدرس مبدا این بسته ها را برابر با آدرس دستگاه های متصل به خود قرار داده و آنهارا روی لینک جدید ارسال می کند. سوئیچ ها این بسته ها را دریافت کرده و متوجه می شوند که دستگاه های متصل به سوئیچ پایینی روی لینک دیگری قابل دسترسی هستند بنابراین به سرعت جدول خود را اصلاح می نمایند. MAX-update-rate نرخ ارسال فریم های MULTICAST ذکر شده را تعیین میکند که بدین وسیله می توانیم پهنای باند مورد استفاده این فریم ها را محدود کنیم.مقدار پیش فرض آن 150 بسته در ثانیه است که می تواند از 0 تا 65535 تغییر کند.
( اگر 0 باشد هیچ بسته ای ارسال نمی شود ).
فیچر BACKBONE FAST


قبل از هرچیز بیائید ایده این فیچر که باعث حذف MAX AGE می شود را با هم بررسی کنیم!

42



در شکل فوق پورت FA0.2 از سوئیچ SW4 بلاک است و BPDU های FORWARD شده از سمت سوئیچ روت را روی پورت های ROOT PORT & BLOCK PORT دریافت می کند. حال یک تغییر IN-DIRECT در توپولوژی رخ می دهد.مثلا" پورت FA0.1 از SW1 را SHUTDOWN می کنیم.

22


یک تغییر INDIRECT ایجاد شده و پورت FA0.1 از سوئیچ روت خاموش شده است و چون SW2 به سمت روت از طریق ROOT PORT خودش دسترسی ندارد ادعا می کند که خودش روت است و به روی پورت های خودش BPDU ارسال می کند. SW4 قبلا" روی پورت FA0.2 که بلاک بود BPDU بهتر دریافت می کردولی حالا این پورت BPDU بدتر از SW2 دریافت میکند.پورت FA0.2 از SW4 زمانی که دریافت BPDU بهتر متوقف و به جای آن ،BPDU بدتر دریافت کرد ، آخرین BPDU خوب از سمت سوئیچ روت را به مدت 20 ثانیه روی پورت بلاک را در حافظه خودش ذخیره کرده و پس از 20 ثانیه که مطمئن شد تغییر STABLE است وارد پروسه LISTENING می شود.

اتفاقی که در پروسه LISTENING می افتد این است که SW4 از سمت SW2 ، BPDU بدتر می گیرد اما بااین حال ، SW4 از طریق ROOT PORT خودش با سوئیچ روت درارتباط بوده و روی پورت FA0.1 خودش BPDU بهتر دریافت می کند و حالا با FORWARD کردن BPDU سوئیچ روت که از طریق RP آنها رادریافت کرده است ، SW2 را در جریان وجود یک سوئیچ روت در شبکه با BID بهتر قرار می دهد و پورت FA 0.2 از SW4 نهایتا" DP خواهد شد .

26


اما نکته در خود زمان MAX AGE است. در زمان MAX AGE سوئیچ SW4 زمانی برابر با 20 ثانیه صبر میکند تا از وجود تغییر مطمئن شود و سپس وارد پروسه همگرایی ( و LISTENING ) میشود ، اما میتوان به جای اینکه سوئیچ صبر کند و BPDU از جانب سوئیچی دریافت کند که مدعی سوئیچ روت است در حالی که یک سوئیچ روت در شبکه وجود دارد ، ایا بهتر نیست از سوئیچ هایی که از طریق لینک هایش به آن متصل است یک سوال بپرسد که آیا به سوئیچ روت دسترسی دارند یا خیر؟ تا الکی 20 ثانیه صبر نکنند ؟

43



هدف از صبر کردن ( زمان MAX AGE )این است که ببییند تغییر از نوع STABLE است یا خیر ، خب حالا به جای صبر 20 ثانیه ای ، یک سوال از سوئیچ های 2 طرف می پرسد، اگر واقعا" نقش های پورت سوئیچ نباید تغییر کنند که خب چه با MAX AGE و چه بدون آن تغییر نمی کنند ولی اگر باید تغییر کنند با یک سوال هم می توان به نتیجه تغییر در نقش پورت ها رسید. 20 ثانیه زمان کمی نیست.در صدم ثانیه قهرمان دو جهان مشخص می شود آنوقت ما سر 20 ثانیه چک و چانه می زنیم.

پس از دریافت BPDU بدتر ( در صورت کانفیگ این فیچر روی سوئیچ ) ، سوئیچ مربوطه از طریق UPLINK هایش از سوئیچ های بالا دستی در خصوص دسترسی به سوئیچ روت ، یک سوال می پرسد ، پاسخ هر چه باشد بدون اینکه 20 ثانیه صبر کند به مرحله ی بعد می رود. به عبارت فنی ، سوئیچ پس از دریافت BPDU بدتر ، روی پورت هایش QUERY ارسال می کند ، اگر جواب QUERY ( یعنی REPLY ) را روی ROOT PORT خودش دریافت کرد یعنی اینکه این پورت ، همچنان بهترین مسیر به ROOT BRIDGE است ، حال اگر REPLAY را روی پورتی غیر از ROOT PORT دریافت کند ، یعنی اینکه نقش پورت ها باید عوض شود. از قبل می دانیم که ROOT PORT پورتی بود که STATE آن ، FORWARD و BPDU های سوئیچ روت را دریافت می کرد.

QUERY AND REPLAY


در فیچیر Backbone fast ، برای حذف زمان MAX AGE به جای اینکه 20 ثانیه صبر کند ، مستقیم از سوئیچ های بالادستی سوال میپرسد ( QUERY ارسال می کند ) ، اگر REPLAY را روی ROOT PORT خودش دریافت کرد ، یعنی یهترین مسیر به سمت ROOT BRIDGE حفظ شده و RP باید RP بماند اما اگر REPLAY را روی پورت دیگری غیر از RP دریافت کرد یعنی نقش پورت باید عوض شود. با پروسه QUERY & REPLAY زمان MAX AGE و 20 ثانیه صبر کردن حذف شده و وارد مرحله بعدی که LISTENING باشد می شود. همانطور که مشخص است این پروسه نیازمند این است که کانفیگ های مربوطه روی همه سوئیچ ها انجام شود تا از این مکانیزم اطلاع داشته باشند.

تذکر
استفاده از فیچرهای (PORTFAST + UPLINKFAST + BACKBONE FAST ) در کنار تنظیم تایمرها براساس عمق شبکه باعث می شود زمان همگرایی به مراتب کمتر از قبل و در حد ثانیه باشد .

مثال


می خواهیم در سناریو زیر BACKBONEFAST را کانفیگ کنیم :

27


IOU1(config)#SPANning-tree VLAN 1 ROOT PRimary 
IOU1(config)# SPANning-tree BACkbonefast
IOU2(config)# SPANning-tree BACkbonefast
IOU3(config)# SPANning-tree BACkbonefast
IOU4(config)# SPANning-tree BACkbonefast



مشاهده وضعیت BACKBONEFAST روی سوئیچ



IOU2#SHOW SPANning-tree BACkbonefast 
BackboneFast is enabled

BackboneFast statistics
-----------------------
Number of transition via backboneFast (all VLANs)           : 0
Number of inferior BPDUs received (all VLANs)               : 0
Number of RLQ request PDUs received (all VLANs)             : 0
Number of RLQ response PDUs received (all VLANs)            : 0
Number of RLQ request PDUs sent (all VLANs)                 : 0
Number of RLQ response PDUs sent (all VLANs)                : 0
IOU2#


محافظت در برابر BPDU

محافظت در برابر BPDU ناخواسته
1.BPDU GURAD
2.ROOT GUARD

محافظت در برابر قطع جریان دریافت BPDU
1.LOOP GUARD
2.UDLD

غیر فعال کردن پروتکل STP روی یک پورت
BPDU FILTER



محافظت در برابر BPDU ناخواسته


در این قسمت ، ما انتظار دریافت BPDU و یا BPDU بهتر را نداریم اما BPDU ( بهتر یا بدتر ) روی یک پورت دریافت می کنیم ، دریافت BPDU ناخواسته برای ما مشکلاتی را ایجاد می کند که با هم بررسی میکنیم.

1.BPDU GURAD


قبلا" با فیچر PORTFAST و نحوه کانفیگ آن آشنا شدیم ، یاد گرفتیم که چون از جانب کلاینت ها هیچ BPDU ای به سمت سوئیچ ارسال نمی شود و نهایتا" LOOP بوجود نمی آید می توان از STATE های میانی ای مثل LISTEN AND LEARN فاکتور گرفت و کامپیوتر کلاینت پس از اینکه روشن شد مستقیم و بدون اینکه 30 ثانیه صبر کند ، پورتش FORWARD شود. حرکت بسیار جوانمردانه است چرا که کاربر و اتصالات دچار وقفه نمی شود اما مشکل اینجاست که اگر آن پورت که برای کلاینت در نظر گرفته شده اشتباها" به یک سوئیچ متصل شود چه اتفاقی می افتد؟

1


در سوئیچ سمت چپ ، پورتهای FA 0.3-5 برای کلاینت ها در نظر گرفته شد و فیچر PORTFAST روی آنها فعال شد اما با این حال اشتباها" به پورت FA 0.4 یک سوئیچ وصل شد ، ماهیت سوئیچ این است که روی پورتهایش BPDU ارسال کند و این سبب ایجاد LOOP خواهد شد. چه باید کرد ؟

راه حل ساده است ، می توانیم فیچر BPDUGURAD را روی پورت هایی که PORTFAST فعال شده را فعال کنیم تا اگر روی این پورتها ، BPDU دریافت شد جهت جلوگیری از LOOP آن پورت به وضعیت ERROR-DISABLE برود.

Switch(config)#interface range fa 0/3-5
Switch(config-if-range)#spanning-tree portfast 
Switch(config-if-range)#spanning-tree bpduguard enable


2


همانطور که در تصویر می بینید پورتهای سوئیچ و پورت fa 0.4 به رنگ قرمز رنگ در آمده و به وضعیت error-disable رفته است. به خروجی دستور verify سوئیچ مربوطه دقت کنید :

Switch#show spanning-tree 

Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1            Root FWD 19        128.1    P2p
Fa0/5            Desg FWD 19        128.5    P2p
Fa0/2            Altn BLK 19        128.2    P2p
Fa0/3            Desg FWD 19        128.3    P2p


می بیند که اسم fa0.4 در این لیست نیست

Switch#show ip int brief 
Interface IP-Address OK? Method Status Protocol
FastEthernet0/1 unassigned YES manual up up
FastEthernet0/2 unassigned YES manual up up
FastEthernet0/3 unassigned YES manual up up
FastEthernet0/4 unassigned YES manual down down
FastEthernet0/5 unassigned YES manual up up


در خروجی دستور بالا می بینید که وضعیت اینترفیس fa0.4 را down نوشته است اما اشاره ای به اینکه در چه وضعیتی است نکرده است و حالا در دستور زیر

Switch#show int fa 0/4
FastEthernet0/4 is down, line protocol is down (err-disabled)

می بینیم که این پورت به وضعیت error-disable رفته است. همچنین با کامند زیر می توانیم اطلاعات بیشتری دراین مورد داشته باشیم:

IOU1#show interfaces status err-disabled 

Port      Name               Status       Reason
Et0/0                            err-disabled bpduguard

همانطور که می بینیم پورت مربوطه به خاطر bpduguard به وضعیت error-disable رفته است. برای اینکه یک پورت از این وضعیت خارج شود کافیست یکبار آنرا shutdown و سپس no shut کنیم.

2.ROOT GUARD


تصویر زیر را نگاه کنید

3


همانطور که می بینید ترافیک یک مسیر مشخص را از PC A تا PC B طی می کند و همچنین می دانیم که سوئیچ ها بصورت UNICAST عمل کرده و یک مسیر مشخص برای ترافیک ها ایجاد می شود.یعنی اگر بر فرض یک ATTACKER وارد بازی شود و کابل LAPTOP خودش را به پورت سوئیچ سمت راست بزند قادر به CAPTURE ترافیک ارسالی PC A نخواهد بود. حال اگر ATTACKER سوئیچی را وارد شبکه کند که روت شود و ترافیک شبکه از مسیری عبور کند که در آن بتواند روی پورت های سوئیچ ترافیک را CAPTURE کند چطور ؟در حالی می دانیم که 80 درصد ترافیک شبکه از سوئیچ روت عبور میکند!

4


در واقع صحبت سر سوئیچ روت است ، سوئیچی که ترافیک های شبکه از آن عبور می کنند ، این سوئیچ روی پورت هایی که انتظارش رانداریم نباید دیده شود.

5


همانطور که در تصویر می بینیم ما انتظار داریم سوئیچ روت را روی پورت های ROOT PORT و یا ALTERNATE PORT ببنیم و نه روی یک پورت دیگر سوئیچ.اگر سوئیچ روت و یا سوئیچ مدعی روت روی پورت دیگری غیر از RP و یا ALT P دیده شود ، امنیت شبکه به خطر می افتد. وقتی صحبت از سوئیچ روت و یا سوئیچ مدعی روت می شود ، به یاد می آوریم که انتخابات برای سوئیچ روت کاملا" رقابتی است و هر لحظه اگر یک سوئیچ با شرایط عالی و تاپ وارد شبکه شود ، ماهیت روت بودن سوئیچی که انتخاب ماست در خطر می افتد و به تبعیت آن ممکن است که نقش پورت ها هم عوض شود و شبکه از آنچه که مورد تایید و نظر ماست خارج شود. در همین مثال فوق من با کامند زیر سوئیچ روت را انتخاب کرده ام

Switch(config)#SPANning-tree VLAN 1 ROOT PR


کامند فوق سبب می شود که PR سوئیچ روت 24XXX شود ولی سوئیچ ATTACKER دارای PR به مقدار کمتر ( مثلا" 0 ) می باشد ، حال تصور کنید انتخابات میان سوئیچ با PR 24XXX و PR 0 است ، مشخص است که کدامیک روت خواهند شد ، سوئیچ با PR 0

حال که موضوع برای ما روشن شد ، بیائید جلوی آنرا بگیریم.میدانیم که سوئیچ ها از طریق BPDU با یکدیگر ارتباط براقرار کرده و یکدیگر ار در جریان خود قرار می دهند که البته سوئیچ روت هم از این قائده مستثنی نیست.

پس از اینکه سوئیچ روت مطابق آنچه که ما خواستیم تعیین شد ، فقط سوئیچ با ارسال BPDU بهتر خواهد توانست سوئیچ روت را عوض کند و ما باید جلوی BPDU بهتر را روی پورت هایی که انتظارش را نداریم ببینیم. دقت کنید !در این قسمت صحبت سر خود BPDU نیست بلکه صحبت سر BPDU خوب است که بخواهد برای یک سوئیچ ادعای روت بودن نماید.

ما با کانفیگ این فیچر عملا" جلوی این کار را می گیریم و نمی گذاریم یک سوئیچ نامشخص روی پورتی که انتظارش را نداریم ادعای روت بودن کند و BPDU بهتر ارسال کند. پس از کانفیگ فیچر فوق ، اگر روی یک پورت BPDU بهتر دریافت شود ، آن پورت به وضعیت ROOT-INCONSISTENT می رود و تا زمانی که BPDU خوب دریافت کند در این وضعیت می ماند.اگر ارتباط عامل این موضوع از سوئیچ قطع شد پورت به وضعیت عادی خود بر میگردد ودر غیراینصورت پورت در وضعیت ROOT-INCONSISTENT خواهد ماند.


کانفیگ

IOU1(config)#INTerface ETHernet <0-15  Ethernet interface number >
IOU1(config-if)#SPanning-tree GUard ROOT


مشاهده وضعیت ROOT-INCONSISTENT

IOU1#SHOW SPANning-tree INConsistentports 

Name                 Interface              Inconsistency
-------------------- ---------------------- ------------------

Number of inconsistent ports (segments) in the system : 0


مثال
در سناریو زیر IOU

6


همانطور که می بینیم IOU1 سوئیچ روت است و IOU6 هم یک سوئیچ ACCESS که این دو سوئیچ از طریق پورت ETH0.0 با یکدیگر در ارتباط هستند و سوئیچ IOU6 روی پورت ETH0.0 سوئیچ روت را می بیند. ما انتظار نداریم روی پورتی غیر از ETH0.0 سوئیچ بتواند ROOT BRIDGE را ببیند در حالی که سوئیچ IOU4 که به پورت ETH1.1 متصل شده ، با ارسال BPDU بهتر مدعی روت بودن است. فرض کنید مقدار PR SW IOU 4 برابر با 0 باشد و PR IOU 1 برابر با 24XXX باشد. مشخص است که در شرایط معمول IOU4 می تواند روت باشد که این امنیت شبکه را به خطر می اندازد.پس ما فیچر ROOT GUARD را روی پورت هایی که انتظار دریافت BPDU بهتر را نداریم فعال میکنیم.

IOU6(config)#INterface RANge EThernet 1/0-2
IOU6(config-if-range)#SPAnning-tree GUard ROOT
IOU6#SHOW SPANning-tree INCONSistentports 

Name                 Interface              Inconsistency
-------------------- ---------------------- ------------------
VLAN0001             Ethernet1/1            Root Inconsistent

Number of inconsistent ports (segments) in the system : 1

IOU6#


همانطور که می بینیم پورت مزبور به وضعیت ROOT-INCONSISTENT رفته است.


محافظت در برابر قطع جریان دریافت BPDU


1.LOOP GUARD
در این قسمت ما انتظار دریافت BPDU را روی یک پورت سوئیچ داریم اما BPDU دریافت نمی شود.

7


همانطور که می بینیم در این توپولوژی یک سوئیچ روت و مابقی براساس BPDU های سوئیچ روت و BPDU های FORWARD از سمت روت نقش خود را پیدا کرده و نهایتا" یک پورت بلاک شده است. پورت بلاک شده جهت جلوگیری از LOOP بلاک شده و با این حال از سمت SW3 ، دریافت کننده BPDU است تا اگر توپولوژی شبکه عوض شد وضعیت پورت خود را از بلاک تغییر دهد اما با این حال در تمام مدتی که بلاک است دریافت کننده BPDU است.

حال تصور کنید شرایطی پیش اید که SW2 از سمت سوئیچ مقابل روی پورت بلاک خودش BPDU دریافت نکند ، در اینصورت حس می کند سمت مقابل دستگاهی وجود ندارد که BPDU ارسال کند ( مثلا" طرف مقابل یک کلاینت است ) و حالا تصمیم می گیرد که پورت بلاک خود را به FORWARD تغییر وضعیت دهد.

9


همانطور که می بینیم در این حالت تمام پورت ها در وضعیت forward قرار گرفته اند و این همان حالتی بود که ممکن است با وارد شدن یک دیتای برادکست ، loop بوجود بیاید.

اینکه ما انتظار دریافت BPDU را داریم اما آنرا دریافت نمی کنیم به 2 دلیل است :

40



1.قطع جریان BPDU ، قطع لینک نیست بلکه بخاطر وجود فایروال است.
2.قطع جریان دریافت BPDU ، می توند یک طرفه شدن لینک باشد که درلینک های FIBER OPTIC به آن برخورد می کنیم.

پس از فعال کردن این فیچر روی سوئیچ و یا پورتهایش ، ضمن اینکه عملکردی هوشمندانه دارد و PER VLAN عمل می کند ،جریان دریافت BPDU را روی پورتهای NON DP و یا همان پورتهای بلاک مانیتور می کند ، اگر جریان دریافت BPDU قطع شد به نتیجه FORWARD کردن پورت نرسد و آن پورت را در وضعیت LOOP-INCONSISTENT قرار می دهد . اگر قرار باشد وضعیت یک پورت بلاک عوض شد باید با هماهنگی پورت مقابل خود و پس ازدریافت BPDU باشد.اصلا" یک پورت بخاطر جریان BPDU های FORWARD شده از سمت سوئیچ روت و جهت جلوگیری از LOOP به وضعیت بلاک تغییر کرد و حالا نباید با قطع جریان BPDU به نتیجه FORWARD کردن ان پورت برسد.

کانفیگ LOOP GURAD

IOU4(config)#SPAnning-tree LOOpguard DEfault 


فعال کردن این فیچر روی کل سوئیچ

IOU4(config)#INTerface ETHernet 0/1
IOU4(config-if)#[NO]  SPANning-tree GUard LOOP


فعال یا غیر فعال کردن این فیچر روی اینترفیس هایی که نمی خواهیم


مشاهده پورت هایی که در وضعیت LOOP GUARD قرار می گیرند

IOU4#SHOW SPANning-tree INConsistentports 

Name                 Interface                Inconsistency
-------------------- ------------------------ ------------------

Number of inconsistent ports (segments) in the system : 0

IOU4#


مثال
سناریو زیر را در نظر بگیرید

11


همانطور که می بینید پورت ETH02 از IOU2 به وضعیت بلاک رفته است و این در حالی است که از سمت ETH02 از IOU3 دریافت کننده BPDU می باشد. تصور کنید که در لینکی که یک سرش BLOCK و سر دیگرش DP است یک فایروال قرار میگیرد و یا لینک از نوع FIBER OPTIC است و یک طرفه می شود ، بهر صورت ما جهت محافظت از پروتکل STP فیچر LOOP GUARD را روی پورت بلاک شده فعال می کنیم.

IOU2(config)#INTerface ETHernet 0/2
IOU2(config-if)#SPAnning-tree GUard LOOP

حال به هر دلیل جریان دریافت BPDU در پورت بلاک قطع می شود و این پورت به وضعیت ذکر شده می رود.

IOU2#show spanning-tree inconsistentports 

Name                 Interface                Inconsistency
-------------------- ------------------------ ------------------
VLAN0001             Ethernet0/2              Loop Inconsistent

Number of inconsistent ports (segments) in the system : 1

IOU2#


2.UDLD


این فیچر سیسکوئی میتواند از یک طرفه شدن لینک خبر دار بشود و قبل از آنکه STP بخواهد وضعیت پورت را تغییر بدهد ، آنرا یک طرفه اعلام می کند و بسته به نحوه کانفیگ وارد وضعیت ERROR-DIS یا UNDERMINE می شود.

by directional   ( Bidirectional )  یعنی یک ارتباط 2 طرفه

uni directional  ( unidirectional ) یعنی ارتباط یک طرفه

Unidirectional Link Detection از یک طرفه شدن لینک خبر می دهد. ( این بحث udld را در fiber optic زیاد می شنویم ) یک طرفه شدن لینک فقط برای پورت های فیبر نوری صدق میکند و ) پس از کانفیگ ) خود سوئیچ آنها را تشخیص داده و قابلیت مذکور را تنها روی آنها فعال میکند.

14



>لینک ها در یک شبکه سوئیچینگ 2 طرفه هستند یعنی ترافیک می تواند روی هر پورت ارسال و یا دریافت گردد. مشخص است که اگر اشکالی در لایه فیزیکی رخ دهد در دو سوئیچ آن را تشخیص داده و لینک در حالت غیر متصل و قطع شده نمایش داده می شود. در لینک های fiber optic که مااز یک ماژول SFP و یا GBIC استفاده میکنیم و یک طرفه شدن لینک بیشتر در fiber optic می شنویم به این دلیل است که مثلا" ممکن است از فقط قسمت ارسال کننده آن دچار اشکال شده باشد . در لینک های fiber optic بصورت 2 رشته است :
1 رشته ارسال
1 رشته هم دریافت

18


رسانه های مسی مثل UTP و STP یا کامل قطع می شوند و یا وصل خواهند بود و یک طرفه شدن لینک روی آنها مشاهده نخواهد شد.


پیاده سازی و نحوه عملکرد


برای پیاده سازی UDLD ( روی لینک های FIBER OPTIC ) لازم است آنرا روی پورت های 2 طرف لینک فعال کنیم ، هر دو پورت در بازه های مشخص( دیفالت هر 15 ثانیه ) ، فریم های UDLD را ارسال کرده و انعکاس آنها رااز سمت دیگر دریافت کنند ، تا زمانی که به ازای هر فریم ارسالی در 15 ثانیه یک فریم پاسخ دریافت می کند ، لینک 2 طرفه است . اما اگر فریمی به سمت مقابل روی رشته ارسال ، فرستاده شود و پس از ارسال 3 فریم ، پاسخی دریافت نشود ، یک طرفه شدن لینک تشخیص داده می شود.

12

مدهای udld


پس از تشخیص یک طرفه شدن پورت

MODE NORMAL
در این مد ، اجازه می دهد که پورت کارش را انجام دهد اما به عنوان یک پورت مشکل دار در نظر گرفته شده و یک syslog message ایجاد و ارسال می کند. در normal mode پورت به وضعیت undetermined می رود.


AGGRESSIVE MODE
پس از تشخیص یک طرفه شدن لینک ، سوئیچ سعی میکند مشکل پدید آمده را رفع نماید. پس از آن 8 تا پیام UDLD با فواصل یک ثانیه فرستاده می شوند و اگر هیچکدام از آنها برنگشت ، پورت در حالت errordisable قرار میگیرد.

15

کانفیگ UDLD


در صورت فعال سازی بصورت global فقط روی لینک های فیبر فعال می شود.

Switch(config)#
udld {aggressive |enable | message time < message-timer-interval > }
aggressive حالت

enable حالت نرمال مد

17



می توانیم آنرا بصورت per port ( حتی پورتهای twisted pair ) هم فعال کنیم.

Switch(config)#interface gigabitEthernet 0/1
Switch(config-if)#udld {enable | aggressive | disable }

استفاده از کلمه disable باعث غیر فعال شدن udld روی یک پورت فیبر نوری می شود.

فعال کردن مجدد پورت های ERROR-DIS

Switch#udld reset

با کامند فوق می توانیم پورت هایی که در حالت aggressive mode کانفیگ شده و پس از یک طرفه شدن ، UDLD آنها را به وضعیت errordisable برده است را مجددا" فعال کرد.
نمایش وضعیت udld


Switch#show udld < type mod | num >



سوال


اگر UDLD را در یک سمت کانفیگ کنیم و به سمت دیگر دسترسی نداشته و یا به هر دلیلی چند ساعت و یا دقیقه طول می کشد تا به سمت دیگر برویم و روی آن UDLD را فعال سازیم آیا در طی این مدت ، لینک غیر فعال شده و شبکه قطع می گردد ؟

پاسخ :

مکانیسم UDLD یک مکانیسم هوشمند است که لازمه ی آن ، کانفیگ در 2 سمت برای درک فریم های UDLD است.پس از کانفیگ UDLD در سمت مقابل ، این موضوع توسط 2 سوئیچ درک شده و پس از آن وارد مکانیسم UDLD شده و طبق شرایط و زمان های تعیین شده یک طرفه شدن لینک را تشخصی خواهد داد.

مثال
در سناریو زیر می خواهیم در 2 طرف و روی لینک ها UDLD را در مد aggressive کانفیگ کنیم.

19



تذکر 1: بسته به نوع IOU ممکن است در ساختار کامند کمی تفاوت وجود داشته باشد و یا IOU شما تمام یا بخشی از آنرا ساپورت نکند.بهر صورت می توان با نوشتن بخشی ازکامند و استفاده از علامت ؟ راهنمایی لازم را گرفت. تذکر 2:همانطور که گفته شدبرخی IOU ها از برخی فیچرها ساپورت نمی کنند ، در فیلم آموزشی مربوطه هم از IOU ای استفاده شد که فیچر فوق را ساپورت نمی کرد اما مدتی قبل پس از بررسی چند IOU و تحقیق بیشتر ، متوجه شدم برخی IOU ها هستند که نه تنها UDLD را ساپورت می کنند بلکه محدودیت های سوئیچینگ را برداشته اند!سعی می شود بزودی یک ویدیو در خصوص IOU WEB و در همین خصوص تقدیم علاقه مندان شود.


کانفیگ سناریو

IOU1(config)#INTerface ETHernet 0/0
IOU1(config-if)#UDLD PORT Aggressive

IOU2(config)#INTerface ETHernet 0/0
IOU2(config-if)#UDLD PORT AGGressive


IOU2#SHOW UDLD 

Interface Et0/0
---
Port enable administrative configuration setting: Enabled / in aggressive mode
Port enable operational state: Enabled / in aggressive mode
Current bidirectional state: Bidirectional
Current operational state: Advertisement - Single neighbor detected
Message interval: 15000 ms
Time out interval: 5000 ms

Port fast-hello configuration setting: Disabled
Port fast-hello interval: 0 ms
Port fast-hello operational state: Disabled
Neighbor fast-hello configuration setting: Disabled
Neighbor fast-hello interval: Unknown


    Entry 1
    ---
    Expiration time: 38200 ms
    Cache Device index: 1
    Current neighbor state: Bidirectional
    Device ID: 2048001  
    Port ID: Et0/0  
    Neighbor echo 1 device: 2048002
    Neighbor echo 1 port: Et0/0
          
    TLV Message interval: 15 sec
    No TLV fast-hello interval
    TLV Time out interval: 5
    TLV CDP Device name: IOU1


تذکر 3: می توان چند لینک را با یکدیگر ETHERCHANNEL کرد و اگر UDLD تشخیص دهد یکی از لینک های کانال یک طرفه شده فقط همان را که در حالت AGGRESSIVE کانفیگ شده غیر فعال می کند و به بقیه لینک ها کاری ندارد.

غیر فعال کردن پروتکل STP روی یک پورت


BPDU FILTER
بصورت عادی ، پروتکل stp روی همه ی پورتهای سوئچی کار میکند تا از بروز حلقه ها در هر نقطه ای از شبکه جلوگیری نماید.فریم های bpdu روی همه پورتهای ( حتی آنهایی که portfast روی آنها فعال شده است ) ارسال می گردند. ما با فیچرهای root guard و bpdu guard ر روی پورت های خودمان مواظب این هستیم که از سمت کلاینت ها bpdu و یا و یا bpdu بهتر نگیریم و اگر گرفتیم آن لینک مشترک را قطع کنیم.اما با bpdu filter می توانیم کاری کنیم که اصلا" روی آن پورت bpdu ارسال نشود.

20


اجرای همیشگی stp جهت جلوگیری از حلقه ها ضروری می باشد.ممکن است با شرایطی برخورد کنید که لازم باشد ارسال و پردازش bpdu روی برخی پورت ها را غیر فعال سازید که در این حالت می توانید از فیلتر کردن bpdu برای غیر فعال کردن پروتکل stp روی پورت های مد نظر خود استفاده کنید. فیلتر کردن bpdu و غیر فعال کردن stp فقط باید روی پورت هایی انجام شود که به end device ها متصل هستند و مطمئن هستید که به هیچ وجه اشتباهات غیر عمد یا خرابکاری باعث بروز loop به واسطه آن پورت نخواهند شد همچنین bpdu filter باید روی پورت های متصل به دستگاه هایی انجام شود که نمی توانند bpdu ارسال و یا دریافت کنند.


کانفیگ BPDU FILTER


کلمه DEFAULT در کامند زیر باعث می شود که روی تمام پورت هایی که فیچر portfast روی آنها فعال است ، ارسال bpdu روی آنها فیلتر شود.

IOU1(config)#spanning-tree portfast bpdufilter default

یادآوری : به خاطرداشته باشید فریم های bpdu روی همه پورتهای سوئیچ و همچنین روی آن دسته از پورتهای سوئیچی که روی آن پورتها ، فیچر portfast فعال شده است نیز ارسال میگردند.

تذکر : دقت شود ، اگر portfast روی یک پورت غیر فعال باشد ،براساس کامند فوق ، bpdu هم در آن فیلتر نخواهد شد.


فعال کردن BPDU FILTER روی یک پورت

IOU1(config)#interface ethernet 0/1
IOU1(config-if)#spanning-tree bpdufilter 


21

(IEEE 802.1D OR CST (COMMON SPANNING TREE

  • به ازای هر VLAN ، INSTANCE جدا ایجاد نمی کرد و در نتیجه نمی توانستیم یک توپولوژی فعال در کل ساختار داشته باشیم. ( عدم استفاده همزمان از همه ی لینک ها )
  • تاخیر 30 تا 50 ثانیه در زمان همگرایی امروزه به دلیل انتقال اطلاعاتی مثل صوت و تصویر باعث به وجود آمدن مشکلات زیادی خواهد شد. ( زمان همگرایی بالا )
  • سیسکو برای فائق آمدن بر زمان همگرایی ، فیچرهایی مثل PORTFAST ,UPLINKFAST,BACKBONEFAST را ابداع نمود که فقط در دستگاه های سیسکو پشتیبانی می شوند.


(CISCO PVST (PER VLAN STP

  • مشکل استفاده همزمان از لینک ها حل شد .
  • همچنان بحث زمان همگرایی وجود داشت و زمان 30-50 ثانیه زمان کمی نبود.
  • pvst با cst سازگار نبود و اگر یک طرف cst و طرف دیگر pvst بود ، با هم کار نمی کردند.
  • پروتکل PVST فقط با لینک ترانک ISL کار می کرد و با 802.1Q سازگار نبود.


CISCO PVST+

  • Default سوئیچ های سیسکو
  • امکان استفاده ی همزمان از همه لینک ها
  • زمان همگرایی بالا ( 30-50 ثانیه )
  • پروتکل PVST+ به ازای هر VLAN یک توپولوژی و درخت STP ایجاد میکند که در صورت کم بودن VLAN بهترین راه حل است اما وقتی با تعداد VLAN زیاد مواجه هستیم دیگر بهترین راه حل نخواهد بود.



همانطور که دیدیم در پروتکل هایی که ارائه شد ما 2 مشکل اساسی داشتیم :
1.استفاده همزمان از همه لینک ها
2.بحث زمان همگرایی

مشکل استفاده همزمان از همه ی لینک ها در پروتکل هایی مانند PVST و PVST+ حل شد و برای مشکل بحث زمان همگرایی فیچرهایی مانند PORTFAST ,UPLINKFAST,BACKBONE FAST اضافه شد که هر کدام بخشی از زمان همگرایی را حذف می کردند.

به یک موضوع دقت کنید ، اینکه یک پروتکل ارائه شود و بعدا" بر روی آن اصلاحات اساسی صورت گیرد چندان جالب نیست ،چرا که نیاز است فیچرهای تسریع همگرایی بعدا" بصورت مجرا روی آن کانفیگ شود .مثالی که قبلا" زده بودم مثال ماشین بود ، یک ماشین ساختند با سرعت 80KM و بعدا" آمدند موتور را تقویت کردند که سرعت به 200KM برسد اما این خود نیازمند صرف زمان دیگری است.

پس از آن امدند به جای اینکه موتور را تقویت کنند ، کل طراحی ماشین و موتور و موارد دیگری را با در نظر گرفتن موارد قبلی که باعث افزایش سرعت میشد طراحی کرده و ساختند. یعنی نیاز نبود شما ماشین را که ازدم کارخانه تحویل گرفتید به اولین نمایندگی مجاز ببرید تا موتور را جهت افزایش سرعت تقویت کند!

از همان ابتدا شما گازش را گرفته و تخته گاز ( البته با رعایت ) قوانین به سمت مقصد حرکت می کنید.داستان پروتکل STP و RSTP هم ماجرای همین ماشین است ، شما تمام فیچرهایی که در STP باید بصورت مجزا انجام میدادید را خود این پروتکل RSTP بصورت دیفالت در خود دارد!فقط RSTP کانفیگ کنید و حالش را ببرید!

راستی شما وقتی یک ماشین عالی ( فارغ از برند و اسم ) می گیرید آیا نمی توانید همپای سرعت سایر ماشین های عادی که مثلا" 80KM راه می روند حرکت کنید؟قطعا" می توانید!RSTP هم همین است با سایر پروتکل ها سازگار است و با آنها مثل خودشان رفتار می کند!

RSTP با ساختار و مکانیزم متفاوت در همگرایی ، PORT TYPE متفاوت و به تبع آن PORT ROLE های جدید باعث شد که مشکل زمان همگرایی از زمان 30-50 ثانیه به ثانیه و کمتر از آن کاهش پیدا کند که در ادامه به این مضوع پرداخته می شود.

RSTP توسط IEEE ارائه شد که نام دیگرش IEEE 802.1W و STP سریع است ، پس از اینکه IEEE این پروتکل را ارائه داد ، سیسکو پروتکل دیگری تحت عنوان CISCO RPVST+ را داد که بصورت PER VLAN از پروتکل RSTP استفاده می کرد و براساس همان CONCEPT ها بود. همچنین پروتکل MST هم براساس پروتکل ( IEEE 802.1w (RSTP است و زمان همگرایی پایین دارد .

در این مقاله قصد داریم در خصوص پروتکل RSTP IEEE 802.1W صحبت کنیم.

(RSTP (RAPID STP


1


در اولین نگاه به جدول فوق متوجه ستون جدیدی تحت عنوان PORT TYPE در خصوص تفاوت پروتکل STP و RSTP می شویم. بیائید نخست در خصوص همین PORT TYPE صحبت کنیم.

بیائید زیاد جای دوری نرویم ، همینجا خودمان را مثال بزنیم ، می توانیم بگویم در زندگی خود با آدمهای متفاوتی سرو کله می زنیم ، بعضی از آنها برای ما مهم اند ، برخی دیگر یک آدم معمولی و برخی نیز بسیار در زندگی مباحث شغلی بسیار تاثیر گذارند.مسلما" ما با همه آنها یک جور رفتار نخواهیم کرد ، پروتکل RSTP هم همین است ، برای خودش 3 دسته مشخص کرده که اگر یک پورت خودش به یک کامپیوتر ، هاب و یا سوئیچ دیگر وصل شود با هر کدام چه رفتاری داشته باشد!

EDGE PORT

  • پورتی که به یک کلاینت انتهایی متصل می شود.


SHARED PORT

  • پورتی که یک سوئیچ را به یک هاب وصل کرده باشد.


POINT TO POINT PORT

  • پورتی که به یک پورت سوئیچ دیگر متصل می شود.





همانطور که دیدید پروتکل RSTP با هر کدام رفتار متفاوتی دارد اما برای اینکه دقیقا" ببینیم در هر نوع پورت دقیقا" چگونه عمل می کند باید با STATE های این پروتکل آشنا بشویم.


PORT STATE RSTP


21



DISCARDING

8


9



در RSTP ما دیگر وضعیت LISTENING و BLOCKING نداریم.همینجا یادآور می شوم که انتخاب سوئیچ روت و معیارهایش مانند قبل است اما بر عکس وضعیت LISTENING در STP که با FORWARD کردن BPDU نقش پورت ها مشخص می شد اینجا و در پروتکل RSTP بخاطر متفاوت بودن مکانیزم همگرایی اصلا" نیازی به FORWARD کردن BPDU های سوئیچ روت نیست بلکه هر سوئیچ خودش بصورت ACTIVE شروع به تولید و ارسال BPDU می کند. اما توجه داشته باشید که BPDU هایی که هر سوئیچ در RSTP تولید وارسال میکند همانند BPDU در پورتکل STP ، اطلاعات سوئیچ روت را در خود دارد.

می توان گفت که حالت DISCARDING می تواند متناظر با وضعیت های زیر باشد :
BLOCKED LISTENING ,DISABLED,

در این وضعیت ( DISCARDING ) سوئیچ ها BPDU دریافت کرده و آنرا پردازش می کنند ضمن اینکه هر سوئیچ بصورت ACTIVE شروع به ارسال BPDU می کنند.توجه کنید در اینجا بر عکس پروتکل STP که فقط BPDU سوئیچ روت FORWARD می شد اینجا اینطور نیست و نوع مکانیزم RSTP اینطور ایجاب می کند که هر سوئیچ خودش مستقلا" شروع به ارسال BPDU نماید.

LEARNING AND FORWARDING


این قسمت مشابه STP است ، در وضعیت LEARNING جدول مک سوئیچ به روز و در وضعیت FORWARDING هم دیتا ارسال و دریافت می شود.



PORT ROLE


اینجا هم ROOT PORT و DESIGANETD PORT را با همان مفاهیمی که در STP داشتیم اینجا هم داریم:

ROOT PORT

  • پورتی است در هر سوئیچ که BPDU با کمترین COST دریافت می کند.


DESIGNATED PORT

  • DP پورتی است که در هر لینک که BPDU با کمترین COST ارسال میکند.



ALTERNATE PORT

  • قبلا" در فیچر های تسریع همگرایی و در بحث UPLINKFAST همین مفهوم را داشتیم و ما غیر از ROOT PORT یک پورت را هم به عنوان ROOT PORT دوم که همان ALTERNATE PORT است داریم تا در صورت از دست رفتن ROOT PORT ، سریعا" جایگزین ROOT PORT شود.


BACK-UP PORT

  • اگر پورت یک سوئیچ به یک HUB متصل شود ، روی پورتهایش به سمت آن BPDU ارسال می کند ، HUB نیز آنرا روی پورتهایش ارسال می کند و نهایتا" BPDU ارسالی در یک پورت را در پورت دیگرش دریافت می کند.اگر چند پورت به یک هاب متصل شود یکی از آنها DESIGNATED PORT و مابقی آنها BACKUP-PORT هستند.

این پورت بک آپ DESIGNATED PORT است تا در صورت از دست رفتن DP سریعا" جایگزین آن شود.
( پورت B.P آماده است تا جایگزین پورت D.P شود که FAIL شده است.)

تصویر زیر به ما دید خوبی در خصوص نقش پورت ها می دهد :

2



همانطور که دیدیم ما اینجا پورت بلاک نداریم ، یک پورت یا DP است یا ALT PORT و یا RP اما این توضیح ضروری به نظر می رسد که شکل ظاهری ALT PORT مطابق BLOCK PORT است ولی اگر RP قطع شود سریع جایگزنش می شود.


ساختار BPDU


همانطور که گفته شد RSTP با سایرپروتکل ها COMPATIBLE است و با هر پروتکلی مانند خودش رفتار می کند.از آنجا که دیفالت سوئیچ های سیسکو PVST+ است ، اگریک سوئیچ RSTP را به یک سوئیچ PVST+ متصل کنیم هر دو اینها براساس مکانیزم LISTEN AND LEARN شروع به همگرایی می کنند و زمان همگرایی بالاست و اگر ما زمان همگرایی کم و سرعت همگرایی بالا را بخواهیم باید تمام سوئیچ ها را بصورت RSTP کانفیگ کنیم.

اینکه سوئیچ مقابل براساس چه پروتکلی کانفیگ شده را می توانیم براساس فیلد ورژن در پکت BPDU متوجه شویم :

20



تذکر : در خصوص فیلد ورژن BPDU یک توضیح ضروری به نظر می رسد.در کتاب CCIE V5 مهندس گرگین نیا ، پایین صفحه 147،ذکر شده است که فیلد ورژن BPDU در پروتکل STP سنتی برابر با 0 در نظر گرفته شده است و در برخی منابع ( از مهندس اسدپور و یا مهندس شریعتی ) و برخی مقالات دیگر نیز فیلد ورژن STP معمولی برابر با 1 ذکر شده است( این بدان معنا می تواند باشه که قبل از اینکه بحث VLAN در STP مطرح شود و ما فقط یک STP داشتیم فیلد ورژن 0 بود ولی حالا که ما بحث VLAN را در STP داریم این مقدار 1 است مشابه این موضوع را در بحث COST هم داریم که قبل از اینکه سرعت GIG داشته باشیم مقادیر متفاوت ولی حالا که سرعت 10G را داریم ؛ مقادیر همان COST است که در مقالات قبل بررسی شد).

22


با این حال
این موضوع BPDU ، نیازمند نگارش یک مقاله فوق تخصصی در خصوص انواع و فلگ ها و موارد دیگر است که البته نیاز به دانش بالا در سیسکو دارد که امروز انجمن ITPRO آنرا می طلبد . اما بهر حال در مقالات پیش رو وفیلم های آموزشی من از همین جدول استفاده کرده ام و با توجه به اینکه امروزه بحث STP گره خورده با VLAN است و سوئیچ های سیسکو پروتکل دیفالت آنها همین PVST+ است مقدار فیلد ورژن آنها را 1 ( برابر آنچه که توضیح داده ام ) در نظر گرفته ام. حال که به این موضوع اشاره کرده ام ، جا دارد به این موضوع هم اشاره کردم که در پروتکل MSTP و اینکه چطور IST متوجه می شود که سوئیچ مقابل متصل به آن از چه پروتکلی استفاده می کند به شرح زیر است :

اگر فیلد ورژن 1 بود و تنها یک VLAN شنیده شد ، پروتکل مربوطه CST است.
اگر فیلد ورژن 1 بود و بیش از یک VLAN شنیده شد ، پروتکل مربوطه PVST+ است.
اگر فیلد ورژن 2 بود و تنها یک VLAN شنیده شد ، پروتکل مربوطه RSTP 802.1W است.
اگر فیلد ورژن 2 بود و بیش از یک VLAN شنیده شد پروتکل مربوطه RPVST است.

پس من بعد من از STP معمولی صحبت خواهم کرد که ورژن BPDU آن برابر با 1 است .
( STP سنتی همان پروتکلی که در زمانش صحبتی از VLAN نبود ، STP معمولی همان پروتکل STP که دارای انواع متفاوتی بوده و در برخی پروتکل ها بصورت PER VLAN استفاده می شود )

در نهایت نکته ای که مد نظرم بود این است که اگر در پروتکل RSTP ، سوئیچ ، BPDU ای دریافت کند که ورژن آن 2 است متوجه می شود که آن سوئیچ هم از پروتکل RSTP استفاده میکند و طبق مکانیزم RSTP شروع به همگرایی می کنند ، در غیر اینصورت و BPDU با فیلد ورژن متفاوت براساس STP معمولی شروع به همگرایی می کنند.

در RSTP برعکس STP هر سوئیچ بصورت ACTIVE شروع به ارسال BPDU می کند که این بخاطر مکانیزم خاص همگرایی آن است و همه ی سوئیچ ها درزمان HELLO TIME که 2 ثانیه است BPDU ارسال می کنند و اگر 3 تا BPDU از سوئیچ همسایه دریافت نکنند ( 3 تا HELLO BPDU که برابر با 6 ثانیه است ) آن سوئیچ را DOWN فرض میکنند که این یعنی زمان MAX AGE در پروتکل RSTP برابر با 6 ثانیه است.

PORT TYPE RSTP


همانطور که پیشتر اشاره شد آن چیزی که پروتکل RSTP را از STP مجزا می کند همین بحث PORT TYPE است که شامل 3 نوع است :

EDGE PORT
POINT TO POINT PORT
SHARED PORT



EDGE PORT

  • اگر اینترفیس های سوئیچ به کلاینت های انتهایی متصل شود این اینتر فیس ها از نوع EDGE PORT هستند.

نحوه تشخیص آن هم به این صورت است که اگر روی پورتی ، BPDU دریافت نکند آنرا از نوع EDGE PORT در نظر گرفته و سریعا" روی آن PORT FAST را فعال میکند.

POINT TO POINT PORT

  • اگر اینترفیس یک سوئیچ به یک سوئیچ دیگر وصل شود ، این پورت از نوع POINT TO POINT PORT است.


توجه شود که همانطور که می بینیم برخورد سوئیچ با کلاینت و پورت سوئیچ متصل به خودش متفاوت است.در اینجا ما دیگر نگرانی هایی مثل BPDU GUARD را نداریم چرا که اگر روی پورت سوئیچی که به کلاینت متصل است BPDU دریافت شود ، این پروتکل نقش EDGE پورت را از آن گرفته و به آن نقش POINT TO POINT می دهد.

  • تذکر : همانطور که گفته شد فیچر PORTFAST و EDGE PORT جزئ دیفالت پروتکل RSTP است و اگر روی EDGE PORT سوئیچ BPDU دریافت کند پروتکل RSTP دیگر آن پورت را از نوع EDGE PORT نمی شناسد بلکه از نوع P2P است ولی دقت داشته باشید که اگر شما روی سوئیچتان بعد از کانفیگ RSTP ، دستی فیچر PORTFAST را فعال کنید یعنی خودتان آن پورت را از نوع EDGE PORT کرده اید ، حال خودتان باید فیچر BPDU GUARD را هم روی آن پورت فعال کنید چرا که شما نوع رفتار پروتکل RSTP را براساس BPDU ، عوض کرده اید و حالا باید فیچری مثل BPDU GUARD را هم در کنار فیچر PORTFAST در پروتکل RSTP استفاده کنید.اگر تنظیمات دیفالت را عوض نکنید خود RSTP براساس BPDU و PORT TYPE هایش عمل می کند ولی اگر شما دستی یک نوع یک پورت را عوض می کنید باید فیچرهای امنیتی را هم در کنار آن استفاده کنید.





  1. نحوه تشخیص لینک ها P2Pدر سوئیچ :

1.خودمان آنرا کانفیگ کنیم :

IOU1(config)#int ethernet 0/0
IOU1(config-if)#spanning-tree link-type ?
  point-to-point  Consider the interface as point-to-point
  shared          Consider the interface as shared


2.سوئیچ فرض می کند که

LINK  FULL  DUPLEX         ---->  P2P
HALF  DUPLEX                ---->  SHARED LINK



SHARED PORT

  • لینکی که یک سوئیچ را به یک هاب وصل کرده باشد.
  • در طراحی شبکه ای که از پروتکل RSTP استفاده می کند ، اگر در آن HUB بکار نرفته باشد همه لینک ها P2P و یا EDGE می باشند.


نحوه تشخیص

  • اگر روی پورت DP ، BPDU ارسال کند و آن BPDU را روی پورت دیگرش دریافت کند ، سوئیچ متوجه می شود که به یک شبکه SHARED متصل شده و پورت دوم را بعنوان DP BACKUP در نظر میگیرد.
10




حال که با PORT TYPE در پروتکل RSTP اشنا شدیم باید بدانیم که PORT ROLE هایی مثل DP ,RP,ALT P,BACKUP PORT را در پورتهایی که از نوع POINT TO POINT PORT یا SHARED هستند را داریم.


نحوه همگرایی در پروتکل RSTP


3


در پروتکل RSTP ، انتخاب سوئیچ روت را بر همان مبنایی که تا کنون آموختیم را داریم.پس از مشخص شدن سوئیچ روت با این فرض که SW1 همان سوئیچ روت باشد ، روی پورت DP خودش BPDU ارسال می کند که در آن فلگ PROPOSAL را SET می کند. جهت درک بهتر من می گویم روی DP خودش PROPOSAL ارسال میکند یعنی پیشنهاد میکند که نقش پورت سمت خودش DP و نقش پورت سمت دیگر ROOT PORT باشد.

زمانی که SW2 این PROPOSAL را دریافت کرد ، برای اینکه تا زمان انتخاب نقش پورت ها LOOP ایجاد نشود ، وارد فاز Synchronization شده و تمام P2P هایش را بلاک می کند.این خیلی خوب است چرا که پورت های EDGE که به کلاینت متصل هستند بلاک نمی شوند و ارتباطش قطع نمی شود.

سپس با بررسی PROPOSAL و آیا اینکه طبق معیارهایی که قبلا" صحبت شد مثل COST ، ایا این پورت SW2 می تواند ROOT PORT شود یا خیر؟اگر به این نتیجه برسد که این پورت می تواند ROOT PORT شود ، در جواب PROPOSAL ، شروع به ارسال AGGREEMENT می کند.

در صورتی که AGREEMENT ارسال شود ، پورت سریعا" FORWARD می شود ، درست بر عکس پروتکل STP که ما یک زمان 15 ثانیه تحت عنوان LISTENING داشتیم تا نقش پورت مشخص شود ما این زمان را اینجا ندارم و اگر قرار باشد پورتی سریع FORWARD و نقشش مشخص شود این اتفاق می افتد و همانطور که پیشتر گفته شد این مکانیزم نیازمند این است که هر سوئیچ بصورت ACTIVE خودش BPDU ارسال کند.

در قاز دوم ( SYNC T=2 ) این بار خود SW2 که در فاز قبلی پورت های P2P بلاک شده بود ، خودش به سمت SW3 شروع به ارسال PROPOSAL می کند و این بار SW3 وارد فاز Synchronization می شود و با بلاک کردن P2P خودش ، خودش را از شبکه ایزوله می کند و اگر قرار باشد که آن پورتش FORWARD شود سریعا" AGREEMENT ارسال می کند. این پروسه AGREEMENT و PROPOSAL مثل یک موج لایه به لایه در سطح NETWORK جلو می رود و در هر لایه نقش پورتها مشخص می شود و با این مکانیزم ، زمان همگرایی مناسبی را به ما می دهد.

4


طرح سوال


در چه شرایطی ممکن است که PROPOSAL گرفته شود اما AGREEMENT ارسال نشود؟

1.پروتکل متفاوت
یعنی یک سوئیچ بصورت RSTP کانفیگ شده و سوئیچ دیگر بصورت STP ، در این شرایط سوئیچی که بصورت STP کانفیگ شده وقتی PROPOSAL دریافت می کند ، متوجه آن نمی شود ، نهایتا" این سوئیچ و سوئیچ مقابل براساس مکانیزم LISTEN AND LEARN شروع به همگرایی خواهند کرد.

5



همانطور که می بینید SW1 بصورت RSTP کانفیگ شده و به سمت SW2 شروع به ارسال PROPOSAL می کند ولی SW2 متوجه این مکانیزم نمی شود.

دلیل دوم : سوئیچ روی 2 تااینترفیس خودش PROPOSAL دریافت می کند که نهایتا" به یکی از آنها AGREEMENT می دهد.

دلیل سوم : روی پورت AGREEMENT نمی دهد چرا که آن پورت باید بلاک باشد. همانطور که مشخص است همچنان وابستگی به STP نگه داشته شده است اما باید توجه داشت در این مکانیزم اگر قرار باشد پورتی FORWARD شود سریعا" این اتفاق می افتد .

کانفیگ RSTP


مثال 1
کانفیگ بسیار ساده ای دارد

6


SW1(config)#SPANning-tree MODE RApid-pvst
SW2(config)#SPANning-tree MODE RApid-pvst
SW3(config)#SPANning-tree MODE RApid-pvst

SW3#SHOW SPANning-tree 
VLAN0001
Spanning tree enabled protocol rstp
Root ID Priority 32769
Address 0002.178B.798B
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec

Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 0002.178B.798B
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20

Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1 Desg FWD 19 128.1 P2p
Fa0/2 Desg FWD 19 128.2 P2p


مثال 2
یک سناریو در GNS3 مطابق تصویر ایجاد نمائید:

7


همانطور که می بینید تنها 2 سوئیچ بصورت RSTP کانفیگ شده اند ولی قبل از هر چیز باید توجه داشت که در GNS3 سرعت لینک ها همگی اترنت و half duplex هستند که در ساختار RSTP پروتکل بصورت SHARED هستند ،

گام اول : TYPE لینک ها را از نوع P2P قرار دهید :

IOU1(config)#INTerface ETHernet 0/0
IOU1(config-if)#SPANning-tree LINk-type Point-to-point 
IOU1(config-if)#EXIT
IOU1(config)#INTerface EThernet 0/1
IOU1(config-if)#SPANning-tree LINk-type POint-to-point

IOU2(config)#INTerface ETHernet 0/0
IOU2(config-if)#SPANning-tree LINk-type Point-to-point 
IOU2(config-if)#INTerface ETHernet 0/1                 
IOU2(config-if)#SPANning-tree LINk-type Point-to-point 

IOU3(config)#INTerface ETHernet 0/0
IOU3(config-if)#SPANning-tree LINk-type Point-to-point 
IOU3(config-if)#INTerface ETHernet 0/1                 
IOU3(config-if)#SPANning-tree LINk-type Point-to-point 


گام دوم : سوئیچ های IOU 1 و IOU 2 را بصورت RSTP کانفیگ نمائید :

IOU1(config)#SPANning-tree MODE RApid-pvst

IOU2(config)#SPANning-tree MODE RApid-pvst



گام سوم : خروجی دستور زیر را در IOU2ببینید :

IOU2#SHOW SPANning-tree 

VLAN0001
  Spanning tree enabled protocol rstp
  Root ID    Priority    24577
             Address     aabb.cc00.0100
             Cost        100
             Port        1 (Ethernet0/0)
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1)
             Address     aabb.cc00.0200
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  300 sec

Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Et0/0               Root FWD 100       128.1    P2p 
Et0/1               Desg FWD 100       128.2    P2p Peer(STP)


همانطور که می بینید نوشته شده است (P2p Peer(STP که یعنی این پورت به سوئیچی متصل است که بصورت STP کار می کند و با آن سوئیچ براساس همان مکانیزم عمل خواهد کرد.

نیاز به MST

از زمانی که CST آمد ما با 2 مشکل اساسی روبرو بودیم :

1.زمان همگرایی بالا
2.عدم استفاده همزمان از همه ی لینک ها

مشکل زمان همگرایی بالا با فیچرهایی مانند UPLINKFAST ,BACKBONEFAST,PORTFAST که از طرف سیسکو ارائه شد حل شد و بعدا" زمانی که پروتکل RSTP 802.1W ارائه شد این فیچرها را بصورت EMBED در خود دارد. همچنین مشکل عدم استفاده همزمان از همه ی لینک ها هم در پروتکلی مثل PVST+ و یا RPVST+ حل شد ضمن اینکه در پروتکل RPVST+ هم زمان همگرایی کم و سرعتش بالا و امکان همزمان از همه ی لینک ها وجود دارد.

به نظر می رسد که همه چیز تمام شده و نیاز به پروتکل جدیدی نیست و در همین حال بود که IEEE پروتکل MSTP یا MISTP را منتشر کرد.برای اینکه درک کنیم که چرا نیاز به یک پروتکل جدید داریم در حالی که RPVST+ همه ی مشکلاتی که تاکنون با آن درگیر بوده ایم را حل کرده است باید نگاهی دقیق تر به پروتکلی مثل PVST+ بیندازیم.پروتکلی که مشکل عدم استفاده همزمان از همه ی لینک ها را حل کرد! من در این مقاله از کلمه ای تحت عنوان INSTANCE بسیار استفاده میکنم ،اول دراین خصوص یک توضیح بدهم که INSTANCE چیست تا در ادامه این مقاله مشکلی در این خصوص نداشته باشیم.


1


تصور کنید ما از CST استفاده کرده ایم که نهایتا" یک پورت بلاک می شود ، بسته به اینکه کدام پورت بلاک می شود ما دارای توپولوژی فعال مختص به خود خواهیم بود

2


در تصویر فوق ، ما 2 تا INSTANCE (یعنی 2 اجرا از پروتکل STP ) داریم که هر INSTANCE دارای توپولوژی فعال خاص خود است.پس منظور من از INSTANCE اجرایی از STP است که براساس اینکه کدام پورت در توپولوژی بلاک شود ، دارای توپولوژی خاص و فعال خود می شود. در تصویر فوق ما 2 تا INSTANCE ( یعنی 2 اجرا از STP ) داریم.
خب حالا سراغ پروتکل PVST+ می رویم که مشکل همزمانی استفاده از لینک ها در آن حل شد

3


در توپولوژی فوق ما 2 تا VLAN داریم و هر سوئیچ در VLAN خاص خودش سوئیچ روت است.( با فاکتور گیری از بک آپ سوئیچ روت )

4


جهت درک ساده تر ، اگر فرض بر سر انتخاب سوئیچ روت باشد
در VLAN 1 بسته به اینکه کدام سوئیچ روت بریج باشد)فاکتور گیری از سوئیچ ACCESS ) برای ما2 INSTANCE وجود دارد.

5


با همان فرض انتخاب سوئیچ روت و اینکه کدامیک روت باشند، در VLAN 2 هم ما 2 تا INSTANCE داریم.از آنجا که در هر VLAN تنها یک سوئیچ می تواند روت باشد نهایتا" در 2 تا VLAN ، ما 2 تا INSTANCE داریم که هر INSTANCE توپولوژی فعال خاص خود را دارند.یعنی هر VLAN یک INSTANCE

حال ما تعداد VLAN هایمان را به 4 تا VLAN افزایش می دهیم

6


7


همانطور که می بینید در PVST+ که می توانیم بصورت همزمان از همه ی لینک ها استفاده کنیم و ما به ازای هر VLAN یک INSTANCE داریم و حالا اگر 500 تا VLAN هم داشته باشیم 500 تا INSTANCE خواهیم داشت که نتیجه ی آن چیزی جز کاهش PERFORMANCE نیست.

در واقع در PVST+ ، افزایش تعداد VLAN ها سبب افزایش INSTANCE که باعث کاهش PERFORMANCE می شود.
توجه به تصویر فوق ما را متوجه یک موضوع می کند و آن اینکه برخی INSTANCE برای بعضی VLAN ها مشترک است ، به این مفهوم که ما می توانیم برای 4 تا VLAN فقط 2 تا INSTANCE داشته باشیم که دارای یک توپولوژی فعال است.این تعداد INSTANCE با توپولوژی فعال خاص خود ، برای 100 و یا 500 تا VLAN هم قابل استفاده می باشد.

9



در واقع با برداشتن وابستگی بین VLAN و INSTANCE ها و MAP کردن ( متناظر کردن ) VLAN ها به INSTANCE سبب شده ام که با افزایش VLAN ، تعداد INSTANCE ها کاهش و PERFORMANCE افزایش یابد.این همان نکته کلیدی در MSTP است.

جمع بندی

Pvst+ به ازای هر vlan یک توپولوژی و درخت stp ایجاد می کند که در صورت کم بودن تعداد vlan بهترین راه حل است اما وقتی با تعداد vlan روبرو می شویم دیگر بهترین راه حل نخواهد بود.از آنجا که به ازای هر vlan ، stp مستقلی ایجاد می کند منجر به صرف بیشتری از منابع شبکه می شود.در شبکه های بزرگ و پر vlan این یعنی اشغال cpu ، حافظه و همچنین پهنای باند. اگر 100 تا vlan داشته باشیم ، 100 اجرای ( stp ( instance با گراف مختص به خود و root bridge جداگانه تشکیل می گردند در حالیکه بعید نیست تعداد توپولوژی های ممکن و بهینه در شبکه تنها 2 حالت باشد. درحالیکه تعداد vlan ها بسیاربیشترند. هدف از MST تقسیم بار VLAN ها به توپولوزی های ذکر شده و در عین حال REDUNDANCY بین آنهاست.با MST چند STP INSTANCE ( گراف ) ایجاد می شود و VLAN ها به INSTANCE ها MAP می شوند.

پروتکل MST


MST که گاهی ( MISTP (Multiple INSTANCE STP و یا ( MSTP (Multiple STP خوانده میشود روشی برای اجرای یک نمونه STP به ازای گروهی از VLAN هاست.استاندارد IEEE 802.1S به MSTP یا MISTP اشاره می کند.در پروتکل MST با افزایش تعداد VLAN ها ، چون تعداد INSTANCE کم است ، PERFORMANCE بالاتر می رود و چون این پروتکل از RSTP 802.1W استفاده می کند دارای زمان همگرایی کم و سرعت همگرایی زیاد است.

10


11


12


برعکس سایر پروتکل های STP ، ما باید در MSTP درگیر CONFIG هایش بشویم و این در حالی بود که در PVST+ بدون هیچ گونه کانفیگی ما یک شبکه بدون LOOP داشتیم و در RSTP نهایتا" برای هر سوئیچ یک خط کامند می نوشتیم.


MST REGION


13

MST REGION مرز MST را تعیین می کند و هر تعداد سوئیچ که داشته باشم معمولا" همه آنها را داخل یک REGION قرار می دهم و همه کارها را با همان یک REGION انجام می دهم ولی ممکن است بخواهم به دلایلی چند REGION داشته باشم اما در بیشتر سناریوها یک REGION کفایت می کند.

اگر 3 پارامتر زیر بین سوئیچ ها یکسان باشد ، می توان گفت که عضو یک REGION هستند ، در غیر اینصورت متعلق به دو MST REGION متفاوت خواهند بود.

MST   CONFIGURATION    NAME ( 32 CHARACTERS)
MST   CONFIGURATION    REVISION   NUMBER ( 0-65535 )
MST   INSTANCE-TO-VLAN   MAPING TABLE ( 4096 ENTRIES)



از کل این CONFIGURATION ها یک HASH ایجاد و ارسال می شود و این HASH در سوئیچ ها با یکدیگر مقایسه می شود و اگر تغییری در این 3 مورد بوجود بیاید HASH به کل متفاوت می شود.
( در واقع هر INSTANCE-TO-VLAN باید در همه سوئیچ ها بصورت دستی تنظیم گردد و از آنجا که این پروسه MANUAL است این جدول توسط BPDU ها منتقل نمی گردد ، در عوض این HASH بین سوئیچ ها رد و بدل می شود تا از یکسان بودن جدول و MAPPING مطمئن شوند.)

هر MST REGION شامل

IST INSTANCE
MST INSTANCE 

می باشد که همگی آنها INSTANCE های MST است.



IST INSTANCE


(IST INSTANCE ( MSTI0

  • آن کسی که مسئول جدا سازی REGION MST از سایر سوئچ هایی است که آنرا ساپورت نمی کنند MST INSTANCE 0 است و در کل IST وظیفه مدیریت MST را بر عهده دارد.


2 وظیفه کلی IST

  • 1.IST کاری میکند که MST با سایر پروتکل های STP سازگار بوده و ارتباط REGION MST با سایر پروتکل های STP را مدیریت می کند.


  • 2.فقط IST است که جریان دریافت و ارسال BPDU را مدیریت می کند ، یعنی اگر INSTANCE های مختلف ایجاد کنیم تنها INSTANCE که اجازه ارسال و دریافت BPDU را دارد IST است.


سازگاری MST با سایر پروتکل ها توسط IST
همانطور که گفته شد IST کاری میکند که MST با سایر پروتکل های STP بتواند سازگار باشد و کار کند و خود این INSTANCE IST در داخل REGION MST سبب می شود که از دید بیرون از MST ، کل سوئیچ های داخل به شکل یک سوئیچ بزرگ به نظر برسد.

14

مثلا" اگر یک سوئیچ که بصورت CST کار می کند به سوئیچ های داخل ناحیه که MST کانفیگ شده اند ، متصل شود درست مثل این است که 2 سوئیچ به یکدیگر متصل شده اند و حالا باید یک لینک بلاک شود . IST با هر پروتکلی مثل خودش رفتار میکند که البته CST یک مثال بود ، حال سوال این است که IST چطور متوجه می شود سوئیچی که به MST REGION متصل می شود از چه پروتکلی استفاده میکند؟

پاسخ واضح است ،می دانیم که فقط IST است که جریان دریافت و ارسال BPDU را مدیریت می کند و حالا اگر از طرف سوئیچی که به MST REGION متصل شد :

  • BPDU ای دریافت کرد که فیلد ورژن 1 بود و تنها یک VLAN شنیده شد پس پروتکل سوئیچ مقابل CST است.
  • BPDU ای دریافت کرد که فیلد ورژن 1 بود و بیش از یک VLAN شنیده شد پس پروتکل سوئیچ مقابل PVST+ است.
  • BPDU ای دریافت کرد که فیلد ورژن 2 بود و یک VLAN شنیده شد ، پس پروتکل سوئیچ مقابل RSTP است.
  • BPDU ای دریافت کرد که فیلد ورژن 2 بود و بیش از یک VLAN شنیده شد ، پروتکل سوئیچ مقابل RPVST است.

MST INSTANCE


تا 16 تا MST INSTANCE می تواند داخل یک REGION باشد که با در نظر گرفتن MST0 که همان IST است ، 15 تا MST INSTANCE دیگر برای ما باقی می ماند که می توانیم از آن استفاده کنیم.

15


همانطور که در تصویر فوق می بینیم در MST REGION ، سه تا MST INSTANCE داریم

MSTI0 = IST
MSTI1
MSTI2


با فاکتور گیری از IST که وظیفه مدیریت MST را بر عهده دارد و بصورت دیفالت تمام VLAN ها به آن MAP شده اند ، ما به سایر INSTANCE ها یکسری VLAN را MAP می کنیم ( تا همانطور که پیشتر گفته شد باافزایش VLAN ، INSTANCE ها کم و نهایتا" PERFORMANCE افزایش پیدا کند.)

19


کانفیگ های MST روی سوئیچ ها


کامند های زیر را باید در تمام سوئیچ هایی که می خواهیم داخل یک REGION باشند بزنیم.


فعال سازی MST روی سوئیچ

IOU1(config)#
SPANning-tree MODE MST

ورود به حالت پیکره بندی پروتکل MST

IOU1(config)#
SPANning-tree MST CONfiguration

تعیین یک اسم برای ناحیه (حداکثر 32 کاراکتر)

IOU1(config-mst)#
name 
name itpro



تعیین یک شماره بازبینی

IOU1(config-mst)#
revision 
revision 1


  1. این شماره برای ردیابی تغییرات در پیکره بندی های یک ناحیه استفاده می شود.
  2. هر بار تغییری که در پیکره بندی داده شود باید این عدد را یکی اضافه کنید.
  • تذکر : پارامترهای مختلف یک ناحیه از جمله شماره بازبینی ، باید روی همه ی سوئیچ ها یکسان باشند بنابراین پس از انجام تغییرات باید این پارامتر یعنی شماره بازبینی را روی سوئیچ های دیگر هم تغییر دهید.


متناظر (MAP) کردن VLAN ها به اجراهای MST (شماره 0 تا 15 )

IOU1(config-mst)#
instance  vlan 
instance 1 vlan 1-5
instance 2 vlan 6-10


  1. بصورت دیفالت همه ی VLAN ها به INSTANCE 0 که همان IST است MAP هستند پس باید از 1 شروع کرد.


شرط قرار گیری در یک ناحیه
اگر پارامترهای زیر برای 2 سوئیچ یکسان باشد به یک ناحیه MST تعلق دارند و در غیر این صورت در نواحی جداگانه فرض خواهند شد.

  • 1. نام پیکربندی MST ( شامل 32 کاراکتر )
  • 2.شماره بازبینی پیکربندی MST ( شماره revesion ) { صفر تا 65535 }
  • 3.جدول نگاشت vlan با پروسه MST


توجه شود که
از کل این CONFIGURATION ها یک HASH تولید و ارسال می شود و این HASH ها با یکیدیگر مقایسه می شوند.هر گونه تغیر باعث تغییر در HASH خواهد شد.


کانفیگ های معمول MST


SET ROOT BRIDGE

IOU1(confi) #
SPANning-tree MST  ROOT <primary|secondary> DIAMETER 
</primary|secondary>



SET BRIDGE PRIORITY

IOU1(config)#
SPANning-tree MST   Priority 




SET port cost

IOU1(config-if)#
spanning-tree mst   cost 

SET port priority

IOU1(config-if)#
spanning-tree mst  port-priority 



SET stp timers

IOU1(config)#
spanning-tree mst hello-time     
spanning-tree mst forward-time 
spanning-tree mst max-age 


COMMAND VERIFICATION MST


IOU3(config)#SPANning-tree MST CONfiguration
  1. از طریق کامند فوق وارد SUBMODE MST می شویم.


IOU3(config-mst)#SHOW PENDING 



  1. با کامند SHOW PENDING می توانیم تغییراتی که داده شده اما هنوز در MST اعمال نشده را می توانیم ببینیم.

تذکر : کانفیگ هایی که برای MST در هر سوئیچ انجام شد ، تا زمانی که ،پس از اعمال تنظیمات از آن SUBMODE خارج نشویم SAVE نمی شود.

برای SAVE شدن تنها کافیست یکبار از این SUBMODE خارج شده و مجدا" وارد آن شویم.

IOU3(config-mst)#SHOW CURRENT


با کامند SHOW CURRENT ، کانفیگ های فعلی که بر همان اساس کار می کند را می توانیم ببینیم.

تذکر 1 : پس از انجام کانفیگ های لازم و خروج از SUBMODE مربوطه ، با گرفتن SHOW CURRENT می بینیم که خروجی این دستور با SHOW PENDING یک مقدار را نمایش می دهد.

تذکر 2 : بصورت پیش فرض تمام VLAN ها عضو IST0 هستند.




IOU3#SHOW SPAnning-tree 
  Spanning tree enabled protocol mstp
  1. با کامند SHOW SPAnning-tree می توانیم متوجه این موضوع شویم که اولا" چه پروتکلی در حال اجراست ، همچنین اینکه در هر INSTANCE هر پورت چه وضعیتی را دارد.



IOU3#SHOW SPANning-tree MST 


  1. نمایش اطلاعات آن INSTANCE و مشخصات خود سوئیچ و سوئیچ روت در INSATNCE مر بوطه




IOU3#SHOW SPANning-tree MST COnfiguration 
    1. اطلاعات خروجی بر اساس کامند SHOW PENDING


جداول کانفیگ MSTP در یک نگاه

31


32


33

سناریو پروتکل MSTP

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

سناریو

سناریو زیر رادر نظر بگیرید ( جهت درک بهتر 6 تا VLAN در نظر گرفته و تمام کانفیگ ها عینا" و قدم به قدم در GNS3 و با کمک IOU اجرا شده است .)

1


2

گام اول : تغییر نام سوئیچ ها


IOU1(config)#HOSTNAME DIS1
DIS1(config)#

IOU2(config)#HOSTname DIS2
DIS2(config)#

IOU3(config)#HOSTname SW1
SW1(config)#

IOU4(config)#HOSTName SW2
SW2(config)#


گام دوم : ترانک کردن لینک ها


DIS1(config)#INTerface RANGe ETHernet 0/0-2
DIS1(config-if-range)#SWItchport TRUnk ENCapsulation DOT1q 
DIS1(config-if-range)#SWItchport MODE TRUNK

DIS2(config)#INTerface RANge ETHernet  0/0-1  
DIS2(config-if-range)#SWItchport TRunk ENcapsulation DOT1q 
DIS2(config-if-range)#SWitchport MODE TRUNK


DIS1#SHOW INTerfaces  TRunk 

Port        Mode             Encapsulation  Status        Native vlan
Et0/0       on               802.1q         trunking      1
Et0/1       on               802.1q         trunking      1
Et0/2       on               802.1q         trunking      1

DIS2#SHOW INT TRUnk 

Port        Mode             Encapsulation  Status        Native vlan
Et0/0       on               802.1q         trunking      1
Et0/1       on               802.1q         trunking      1
Et0/2       auto             n-802.1q       trunking      1

SW1#SHOW INT TRUnk 

Port        Mode             Encapsulation  Status        Native vlan
Et0/0       auto             n-802.1q       trunking      1
Et0/1       auto             n-802.1q       trunking      1

SW2#show interfaces trunk 

Port        Mode             Encapsulation  Status        Native vlan
Et0/0       auto             n-802.1q       trunking      1
Et0/1       auto             n-802.1q       trunking      1

گام سوم : ساختن vlan ها و استفاده از VTP


DIS1(config)#VTP DOMain ITPRO
Changing VTP domain name from NULL to ITPRO
DIS1(config)#VLAN 2
DIS1(config-vlan)#VLAN 3
DIS1(config-vlan)#VLAN 4
DIS1(config-vlan)#VLAN 5
DIS1(config-vlan)#VLAN 6
DIS1(config-vlan)#VLAN 7


DIS1#SHOW VLAN BRief 

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/3, Et1/0, Et1/1, Et1/2
                                                Et1/3, Et2/0, Et2/1, Et2/2
                                                Et2/3, Et3/0, Et3/1, Et3/2
                                                Et3/3
2    VLAN0002                         active    
3    VLAN0003                         active    
4    VLAN0004                         active    
5    VLAN0005                         active    
6    VLAN0006                         active    
7    VLAN0007                         active    

DIS2#SHOW VLAN BRief 

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/3, Et1/0, Et1/1, Et1/2
                                                Et1/3, Et2/0, Et2/1, Et2/2
                                                Et2/3, Et3/0, Et3/1, Et3/2
                                                Et3/3
2    VLAN0002                         active    
3    VLAN0003                         active    
4    VLAN0004                         active    
5    VLAN0005                         active    
6    VLAN0006                         active    
7    VLAN0007                         active    


SW1#SHOW VLAN BRief 

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/2, Et0/3, Et1/0, Et1/1
                                                Et1/2, Et1/3, Et2/0, Et2/1
                                                Et2/2, Et2/3, Et3/0, Et3/1
                                                Et3/2, Et3/3
2    VLAN0002                         active    
3    VLAN0003                         active    
4    VLAN0004                         active    
5    VLAN0005                         active    
6    VLAN0006                         active    
7    VLAN0007                         active    





SW2#SHOW VLAN BRief 

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/2, Et0/3, Et1/0, Et1/1
                                                Et1/2, Et1/3, Et2/0, Et2/1
                                                Et2/2, Et2/3, Et3/0, Et3/1
                                                Et3/2, Et3/3
2    VLAN0002                         active    
3    VLAN0003                         active    
4    VLAN0004                         active    
5    VLAN0005                         active    
6    VLAN0006                         active    
7    VLAN0007                         active    



گام چهارم : اختصاص پورتها به VLAN ها


SW1(config)#INTerface ETHernet  1/0
SW1(config-if-range)#SWitchport MODE ACCess 
SW1(config-if-range)#SWitchport ACcess VLAN 2
SW1(config-if-range)#EXIT  

SW1(config)#INTerface ETHernet 1/1
SW1(config-if)#SWItchport MODE ACcess 
SW1(config-if)#SWItchport ACcess VLAN 3
SW1(config-if)#EXIT

SW1(config)#INTerface ETHernet 1/2
SW1(config-if)#SWItchport MODE ACcess 
SW1(config-if)#SWitchport ACcess VLAN 4

SW2(config)#INTerface ETHernet 1/0
SW2(config-if)#SWItchport MODE ACCess 
SW2(config-if)#SWItchport ACCess VLAN 5
SW2(config-if)#EXIT

SW2(config)#INTerface ETHernet 1/1
SW2(config-if)#SWItchport Mode ACcess 
SW2(config-if)#SWItchport ACcess VLAN 6
SW2(config-if)#EXIT

SW2(config)#INTerface ETHernet 1/2
SW2(config-if)#SWItchport MODE ACcess 
SW2(config-if)#SWItchport ACcess VLAN 7


SW1#SHOW VLAN BRief 

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/2, Et0/3, Et1/3, Et2/0
                                                Et2/1, Et2/2, Et2/3, Et3/0
                                                Et3/1, Et3/2, Et3/3
2    VLAN0002                         active    Et1/0
3    VLAN0003                         active    Et1/1
4    VLAN0004                         active    Et1/2
5    VLAN0005                         active    
6    VLAN0006                         active    
7    VLAN0007                         active  



SW2#SHOW VLAN BRief 

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/2, Et0/3, Et1/3, Et2/0
                                                Et2/1, Et2/2, Et2/3, Et3/0
                                                Et3/1, Et3/2, Et3/3
2    VLAN0002                         active    
3    VLAN0003                         active    
4    VLAN0004                         active    
5    VLAN0005                         active    Et1/0
6    VLAN0006                         active    Et1/1
7    VLAN0007                         active    Et1/2



گام پنجم : در سناریو می خواهیم که سوئیچ DIS1 برای MST1


DIS1 FOR MST1  -> ROOT BRIDGE ( ROOT PRIMARY)
DIS1 FOR MST2  -> BACKUP ROOT BRIDGE ( ROOT SECONDARY)

DIS2 FOR MST1  -> BACKUP ROOT BRIDGE ( ROOT SECONDARY)
DIS2 FOR MST2  -> ROOT BRIDGE ( ROOT PRIMARY)


5


6



DIS1(config)#spanning-tree mst 1 root primary 
DIS1(config)#spanning-tree mst 2 root secondary 


DIS2(config)#spanning-tree mst 2 root primary 
DIS2(config)#spanning-tree mst 1 root secondary


گام ششم : کانفیگ MSTP روی هر سوئیچ


DIS1(config)#SPANning-tree MODE MST
DIS1(config)#SPANning-tree MST CONfiguration 
DIS1(config-mst)#NAME  ITPRO
DIS1(config-mst)#REVision 1
DIS1(config-mst)#INStance 1 VLAN 2-4
DIS1(config-mst)#INStance 2 vlan 5-7


DIS2(config)#SPANning-tree MODE MST
DIS2(config)#SPANning-tree MST CONfiguration 
DIS2(config-mst)#NAME  ITPRO
DIS2(config-mst)#REVision 1
DIS2(config-mst)#INStance 1 VLAN 2-4
DIS2(config-mst)#INStance 2 vlan 5-7
DIS2(config-mst)#


SW1(config)#SPANning-tree MODE MST
SW1(config)#SPANning-tree MST CONfiguration 
SW1(config-mst)#NAME  ITPRO
SW1(config-mst)#REVision 1
SW1(config-mst)#INStance 1 VLAN 2-4
SW1(config-mst)#INStance 2 vlan 5-7


SW2(config)#SPANning-tree MODE MST
SW2(config)#SPANning-tree MST CONfiguration 
SW2(config-mst)#NAME  ITPRO
SW2(config-mst)#REVision 1
SW2(config-mst)#INStance 1 VLAN 2-4
SW2(config-mst)#INStance 2 vlan 5-7

گام هفتم : خروجی کامند های زیر


DIS1(config-mst)#SHOW PEnding 
Pending MST configuration
Name      [ITPRO]
Revision  1     Instances configured 3

Instance  Vlans mapped
--------  ---------------------------------------------------------------------
0         1,8-4094
1         2-4
2         5-7
-------------------------------------------------------------------------------
DIS1(config-mst)#


یادآوری
همان طور که گفته شد با کامند SHOW CUrrent ،کانفیگ های دیفالت پروتکل MSTP که بر همان کار می کند را می توانیم ببینیم. تا زمانی که هنوز در SUBMODE مربوطه هستیم و از آن خارج نشده ایم خروجی این دستور به صورت زیر است :

DIS1(config-mst)#SHOW CUrrent 
Current MST configuration
Name      []
Revision  0     Instances configured 1

Instance  Vlans mapped
--------  ---------------------------------------------------------------------
0         1-4094
-------------------------------------------------------------------------------

همانطور که می بینیم تمام VLAN ها عضو IST هستند ، اگر یکبار از این SUBMODE خارج و مجدد به آن وارد شویم

DIS1(config-mst)#EXIT
DIS1(config)#SPanning-tree MST CONfiguration 

DIS1(config-mst)#SHOW CUrrent 
Current MST configuration
Name      [ITPRO]
Revision  1     Instances configured 3

Instance  Vlans mapped
--------  ---------------------------------------------------------------------
0         1,8-4094
1         2-4
2         5-7
-------------------------------------------------------------------------------
DIS1(config-mst)#


DIS1#SHOW SPAnning-tree 

MST0
  Spanning tree enabled protocol mstp
  Root ID    Priority    32768
             Address     aabb.cc00.0100
             This bridge is the root
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    32768  (priority 32768 sys-id-ext 0)
             Address     aabb.cc00.0100
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Et0/0               Desg FWD 2000000   128.1    Shr 
Et0/1               Desg FWD 2000000   128.2    Shr 
Et0/2               Desg FWD 2000000   128.3    Shr 
Et0/3               Desg FWD 2000000   128.4    Shr 
Et1/0               Desg FWD 2000000   128.5    Shr 
Et1/1               Desg FWD 2000000   128.6    Shr 
Et1/2               Desg FWD 2000000   128.7    Shr 
Et1/3               Desg FWD 2000000   128.8    Shr


DIS1#SHOW SPAnning-tree MST 1

##### MST1    vlans mapped:   2-4
Bridge        address aabb.cc00.0100  priority      24577 (24576 sysid 1)
Root          this switch for MST1

Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Et0/0            Desg FWD 2000000   128.1    Shr 
Et0/1            Desg FWD 2000000   128.2    Shr 
Et0/2            Desg FWD 2000000   128.3    Shr 

DIS1#


SW1#SHOW SPanning-tree MST 2

##### MST2    vlans mapped:   5-7
Bridge        address aabb.cc00.0200  priority      32770 (32768 sysid 2)
Root          address aabb.cc00.0300  priority      24578 (24576 sysid 2)
              port    Et0/1           cost          2000000   rem hops 19

Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Et0/0            Altn BLK 2000000   128.1    Shr 
Et0/1            Root FWD 2000000   128.2    Shr 

SW1#




کامند زیر

SW1#SHOW SPANning-tree MST CONfiguration 

معادل کامند SHOW PENDING در SUBMODE پروتکل MSTP است.

SW1#SHOW SPANning-tree MST CONfiguration 
Name      [ITPRO]
Revision  1     Instances configured 3

Instance  Vlans mapped
--------  ---------------------------------------------------------------------
0         1,8-4094
1         2-4
2         5-7
-------------------------------------------------------------------------------
SW1#

جمع بندی

راستش مباحث و مطالبی که میخواستم رو در قالب ویدیو و مقالات مرتبط در انجمن گفتم . STP یک کار ساده انجام میده ، حذف LOOP اما چالش برانگیزترین مباحث در CCNA - CCNP R &S هست که سعی کردم در حد و اندازه ی دانش کمی که در این مورد پیدا کردم ، دانشم رو به اشتراک بگذارم.

سعی کردم خلاقیت داشته باشم و کوچکترین جزئیاتش را در سلسله تصاویر مربوط به این پروتکل ، خودم بکشم و ترسیمش کنم ، از جداول و برخی ریزه کاری ها و حتی تصویر STP که عکس خود مقاله هست ، همه و همه به عشق انجمنی هست که متفاوته . من این تفاوت رو دوست دارم .عاشقتم ITPRO

اما یک نکته ای رو من اصلاح کنم ، شاید تو ویدیو یا مقالات جائی از دستم در رفته باشد بهر حال و اون اصلاح بلاکینگ هست. تو STP ما بلاکینگ و تو RSTP ما وضعیت DICARDING رو داریم .ظاهر وضعیت بلاکینگ و DISCARDING مشابه هم هست و تو RSTP من گفتم که فلان پورت بلاک هست و اشاره من ، برای درک بهتر و اون وضعیت نارنجی رنگی بود که در شبیه ساز پکت تریسر دیدم هر چند که تو در دستور خروجی هم همون چیزی رو نوشته که من گفتم.

اما علی رغم تمام این مباحث STP خیلی حرف دارد ، مراقب باشید با STP شوخی نکنید.تمام مباحث سیسکو یک طرف و STP یک طرف.از من این هشدار را بشنوید که با دقت و کمال احترام با این پروتکل زنده که نامش درخت پوشاست رفتار کنید ، در غیر اینصورت اگر حین خواندن مباحث دود از سرتان بلند شد بدانید که STP شوخی نمی کند!فقط جلوی لوپ را میگیرد!زیادی هم سر به سرش بگذارید ممکن است بلاکتان کند و کار به جایی بکشد که پکت دریافت کنید اما توان پردازش هم نداشته باشید!



خلاصه کامند


نمایش مک هر سوئیچ

Switch#SHOW VErsion 




نمایش اطلاعات مربوط به پروتکل STP

Switch#SHOW SPANning-tree



نمایش اطلاعات مربوط به سوئیچ روت در VLAN

Switch#SHOW SPANning-tree VLAN 




انتخاب سوئیچ روت STP

SW(config)#SPANning-tree VLAN  ROOT < primary | secondary >




تعیین PRIORITY سوئیچ

SW(config)#SPANning-tree VLAN  PRiority <0-61440, increments of 4096 >




تغییر COST پورت

IOU2(config)#INTerface ETHernet 0/1
IOU2(config-if)#SPANning-tree VLAN 1 COST 8




تغییر PORT-PRIORITY

SW1(config)#INTerface FA 0/2
SW1(config-if)#SPAnning-tree VLAN 1 PORT-priority 64



تغییر دستی تایمرها

IOU1(config)#SPANning-tree  HELLo-time  <1-10>
 IOU1(config)#SPANning-tree VLAn  MAX-age   <6-40>
IOU1(config)#SPANning-tree  FORward-time  <4-30>



تغییر تایمر براساس عمق شبکه

IOU1(config)#spanning-tree vlan  root <primary|secondary> diameter <2-7> hello-time <1-10>
</primary|secondary>




فیچرهای تسریع همگرایی


PORTFAST

Switch(config)#SPAnning-tree PORTfast DEfault
Switch(config)#INTerface RANGE FA 0/1-2
Switch(config-if-range)#NO SPAnning-tree PORTfast




مشاهده وضعیت فعلی PORTFAST

Switch#SHOW SPANning-tree INT  POrtfast 



کامند ماکرو

IOU1(config)#INTerface range ethernet 0/1-3
IOU1(config-if-range)#switchport host

switchport mode will be set to access
spanning-tree portfast will be enabled
channel group will be disabled


کانفیگ uplinkfast روی IOU

IOU3(config)#SPANning-tree UPLinkfast 



مشاهده وضعیت UPLINKFAST روی سوئیچ

IOU4#SHOW SPANning-tree UPLinkfast 


IOU4(config)#SPANning-tree UPLinkfast MAX-update-rate  <0-65535>



BACKBONE FAST

IOU1(config)# SPANning-tree BACkbonefast




STP SECURITY


محافظت در برابر BPDU ناخواسته


1.BPDU GURAD

Switch(config)#interface range fa 
Switch(config-if-range)#spanning-tree portfast 
Switch(config-if-range)#spanning-tree bpduguard enable



نمایش وضعیت ERROR-DIS

Switch#show int fa 
FastEthernet0/4 is down, line protocol is down (err-disabled)


IOU1#show interfaces status err-disabled



2.ROOT GUARD

IOU1(config)#INTerface ETHernet <0-15  Ethernet interface number >
IOU1(config-if)#SPanning-tree GUard ROOT


IOU1#SHOW SPANning-tree INConsistentports 


محافظت در برابر قطع جریان دریافت BPDU


1.LOOP GUARD

IOU4(config)#SPAnning-tree LOOpguard DEfault 


IOU4(config)#INTerface ETHernet 0/1
IOU4(config-if)#[NO]  SPANning-tree GUard LOOP


IOU4#SHOW SPANning-tree INConsistentports




2.UDLD


Switch(config)#
udld {aggressive |enable | message time < message-timer-interval > }


IOU1(config)#INTerface ETHernet 0/0
IOU1(config-if)#UDLD PORT Aggressive


فعال کردن مجدد پورت های ERROR-DIS

Switch#udld reset


نمایش وضعیت udld

Switch#show udld < type mod | num >




غیر فعال کردن پروتکل STP روی یک پورت


BPDU FILTER

IOU1(config)#spanning-tree portfast bpdufilter default


IOU1(config)#interface ethernet 0/1
IOU1(config-if)#spanning-tree bpdufilter 



کانفیگ RSTP

SW1(config)#SPANning-tree MODE RApid-pvst



کانفیگ MSTP روی هر سوئیچ

SW1 (config)#SPANning-tree MODE MST
SW1 (config)#SPANning-tree MST CONfiguration 
SW1 (config-mst)#NAME  
SW1 (config-mst)#REVision 
SW1 (config-mst)#instance  vlan 


IOU1(confi) #
 SPANning-tree MST  ROOT <primary|secondary> DIAMETER 

IOU1(config)#
SPANning-tree MST   Priority 

IOU1(config-if)#
spanning-tree mst   cost 

IOU1(config-if)#
spanning-tree mst  port-priority 

IOU1(config)#
spanning-tree mst hello-time     
spanning-tree mst forward-time 
spanning-tree mst max-age 

</primary|secondary>


SW1 (config-mst)#SHOW PEnding 

SW1 (config-mst)#SHOW CUrrent

SW1#SHOW SPAnning-tree 
SW1#SHOW SPAnning-tree MST 1
SW1#SHOW SPANning-tree MST CONfiguration 



صادق شعبانی
صادق شعبانی

کارشناس ارشد سیسکو

صادق شعبانی ( هکر قانونمند ، مهندس مایکروسافت ، کارشناس ارشد سیسکو ) : انسانی که کنار میکشه هیچوقت پیروز نمیشه و انسانی که پیروز میشه هیچوقت کنار نمی کشه.

نظرات