PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : بررسی ساختار پروتکل Spanning Tree در سویچ های سیسکو



alikamanak
June 18th, 2014, 14:56
با سلام به دوستان ،همانگونه که بسیاری از دوستان عزیز میدانند برای داشتن پهنای باند بیشتر در شبکه میتوان سویچها و روترها را با چند لینک بهم متصل نمود که با این کار نوعیRedundancy نیز در شبکه ایجاد کرده ایم یعنی مثلا بین دو سویچ دو تا لینک فیزیکی برای ارتباط قرار داد یا از یک PC در یک Segment از دو مسیر با PC دیگر درSegment دیگر ارتباط داشت اما این موجب بوجود آمدن Loop میشود همانطور که در شکل ذیل نشان داده شده است :

http://itpro.ir/resources/images/91647bb4db83411ca48e076882815f40

بنابراین اگر PC A یک ARP که Broadcast است ارسال کند مثلا برای پیدا کردن PC B در شبکه (که قصد ارسال بسته ای را به آن دارد )در اینجا سه مشکل بوجود می آید


Multiple Frame Copy
Broadcast Storm
Mislearning MAC address

همانگونه که میدانید سویچ 3 چون آدرس PC B را نمیداند فریم ارسالی را به هردوی سویچهای 1 و 2 ارسال میکند سویچ 1 نیز این فریم ورودی را مجددا روی تمام پورتهایش(غیر از پورت ورودی) منتشر میکند این عمل در سویچ 2 نیز اتفاق می افتد و فریم ورودی در لینک 23 خودش را روی لینک 12 و لینک متصل به PC B منتشر میکند و بنابراین لینک 12 مجددا این فریم را از سویچ 2 به سویچ 1 ارسال میکند و به همین نحو سویچ 1 مجددا فریم را روی لینک 13 به سویچ 3 ارسال میکند و میبینیم که اصطلاحا Broadcast storm یا طوفان Broadcast راه می افتد و چندین کپی از فریم روی پورتهای سویچها ایجاد میشود .

اما فرض کنید PC A بسته ای را به مقصد PC B ارسال کند(اما آدرس آن را در شبکه نمیداند بنابراین Broadcast میشود و وقتی به پورتهای سویچهای 2 و 3 میرسد ، سویچها بسته را اصطلاحاFlood یا منتشر میکنند در این حین MAC address کامپیوتر A در جدول کدام پورتها ثبت میشود ؟ همانگونه که میدانید پورتهای سویچ هر بار که فریمی دریافت میکنند طی فرآیندی بنام Learning ، آدرسهای MAC جدول پورتهای خودشون رو Update میکنند یعنی مثلا آدرس MAC کامپیوتر A که روی پورتهای متصل به لینکهای 23 و 13 به سویچ 1 و 2 میرسد در این پورتها که فریم به آنها رسیده ثبت میشود اما وقتی Flood اتفاق می افتد یعنی از سویچ 2 به سمت سویچ 1 و از سمت سویچ 1 به سمت سویچ 2 فریم با آدرسMAC کامپیوتر A ارسال میشود سویچ 2 با فرض اینکهPC A متصل به سویچ 1 است جدول پورتهای خودش را Update میکند و انگار که PC A واقعاً به یکی از پورتهای سویچ1 متصل شده و همین موضوع نیز در سویچ 1 اتفاق می افتد انگار که PC A به یکی از پورتهای سویچ 2 متصل شده باشد سویچ 1 این را در جدول پورتهایش Update میکند.بنابراین دیدیم که چگونه Redundancy که به منظور افزایش پهنای باند و کم کردن امکان قطعی بین سویچها ایجاد کرده بودیم (احتمال اینکه لینکهای 23 و 13 همزمان قطع شوند کم است) چگونه با ایجاد لوپ مشکلات گفته شده را ایجاد نمود.

شرکت سیسکو برای از بین بردن لوپ در Device های لایه 2 ای شبکه پرو توکلی بنام STP یا Spanning Tree Protocol ارائه کرد که طی فرآیند سه مرحله ای با انتخاب Root Switch در توپو لوژی شبکه و نیز انتخاب Root Port و Designated Port برای هر سویچ موجود در شبکه ، که با توجه به ID سویچها در شبکه و نیز Accumulated path cost و نیز عدد فیزیکی شماره پورتها ی سویچها و Priority آنها این انتخابها صورت میگیرند و باعث می شود سویچ با کمترین ID به عنوان Root Switch در نظر گرفته شود (البته ID هر سویچ از دو قسمت تشکیل شده که از چپ به راست شامل یک مقدار Priority است که میتوان آنرا در Config سویچ تغییر داد و پیش فرض آن برای سویچهای سیسکو 32768 است و قسمت بعدی ID همان MAC Address سویچ است ) در هر سویچ نیز آن پورتی که کمترین هزینه اصطلاحا انباشته شده را برای رسیدن یک بسته از Root switch به آن پورت را دارد ، بعنوان Root port در نظر گرفته میشود که البته این پارامتر بصورت دستی در Config سویچ برای هر پورت تعریف میشود و چنانچه این هزینه برای همه پورتهای سویچ یکسان باشد از آنجا که برای هر پورت سویچ نیز یک مقدار Priority وجود دارد که یش فرض آن در سویچهای سیسکو 32 است پورتی که کمترین مقدار priority را دارد انتخاب میشود و اگر Priority پورتها نیز یکی باشد پورت با کمترین شماره فیزیکی انتخاب میشود یعنی مثلا پورت 01 بجای 02 یا 0/3 بعنوان Root Port انتخاب میشود .

روشن است که patch cost همه پورتهای Root switch صفر است , ودر محاسبه هزینه Patch همواره هزینه ورود بسته جمع بسته میشود و هنگامیکه از سویچ از یک پورت خارج میشویم نباید هزینه آن پورت اضافه شود.گام سوم STP انتخاب designated Port است که در واقع پورتی است که هدف از انتخاب آن اطمینان حاصل کردن از این است که Segment متصل به سویچ مسیری به Root port داشته باشد (چرا که همچنانکه خواهم گفت پورتهای غیر Root یا Designate همگی در یک سویچ درون حلقه به حالتی بنام Blocking میروند تا تنها یک مسیر بین Root و سویچ وجود داشته باشد و حلقه از بین برود ) .انتخاب این پورت هم بر اساس کمترین هزینه رسیدن از Root port به Segment متصل به سویچ صورت میگیرد و همان مقایسه های گفته شده در بالا در این انتخاب نیز صورت میگیرد .در این مورد سویچی را در نظر بگیرید که دو تا لینک با سویچ کناری خود دارد و فرض کنید priority و patch Cost دو لینک نیز یکی باشد بنابراین پورت با کمترین شماره فیزیکی انتخاب میشود همانطور که در شکل زیر دیده میشود Sw5 که دو لینک ارتباطی با sw4 دارد و همه مشخصات دو لینک آن یکسانند بنابراین Fa 023 را در مقایسه با Fa 024 انتخاب میکند


http://itpro.ir/resources/images/a6244fa8835245daaa695f4fe24f3f60


اما STP این اطلاعات را از کجا می آورد و در نظر بگیرید که تغییری در توپولوژی شبکه اتفاق بیفتد مثلا یک سویچ به ان اضافه یا از آن کم کنیم و یا Config های یک سویچ درون حلقه مثلاPriority آن را عوض کنیم و یا یک لینک ارتباطی قطع شود ، اطلاعاتی مثل Switch ID و اینکه Root switch و Root port ها و Designated port ها و پورتهای Block شده هرسویچ کدامند درفریمهای Multicast به نام BPDU’s بین سویچها هر دو ثانیه یکبار رد و بدل میشوند .لازم به ذکر است که IEEE پروتکلSTP را بنام 802.1d استاندارد سازی نموده تا همه Device های غیر سیسکو نیز بتوانند از آن استفاده کنند.نحوه جلوگیری از تشکیل حلقه توسطSTP را در مقالات بعدی شرح خواهم داد .

نویسنده : علی نخعی
منبع : انجمن تخصصی فناوری اطلاعات ایران
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد

- - - Updated - - -

اگر به شکل زیر نگاهی بیندازیم متوجه میشویم که Root port ها و Designated poret ها انتخاب شده اند


http://itpro.ir/resources/images/1616152405714e0889256e1a873ffecf


پورتی که نه Root port است ونه Designated port اصطلاحا به حالت Block میرود که در شکل بالا با NDP در سویچ 4 مشخص شده است و مشخص است که با این فرآیند Loop از بین رفته است .باید در نظر داشت که هر پورت Root switch یک Designated port است چراکه هزینه رسیدن از آنها به هر Segment ای که به آن پورت وصل باشد صفر است اما RP یا Root port نیست چراکه بی معنی است با توجه به تعریف Root port از خودش به خودش برسیم.هر پورتی که در STP شرکت میکند 5 وضعیت میتواند داشته باشد :


Blocking
Listening
Learning
Forwarding
Disabled

که از اینها وقتی STP اجرا میشود فقط چهار تای اولی مورد استفاده قرار مگیرند.

وضعیت Blocking در Spanning Tree وضعیتی است که در یکی از حالتهای زیر برای پورت اتفاق می افتد :


در طول مدت انتخابRoot Switch
وقتیکه یک سویچ BPDU ای روی یک پورت دریافت میکند که نشان میدهد مسیر بهتری به Roor switch از پورتی که در حال حاضر استفاده میشود وجود دارد
اگر یک پورت نه Root port باشد ونه Designated port

یک پورت برای 20 ثانیه(پیشفرض) در وضعیت Blocking باقی می ماند ودر این مدت فقط به BPDU ها گوش میکند و آنها را پردازش میکند و بقیه فریمها را دور می اندازد .در این وضعیت در واقع سویچ سعی میکند که بفهمد کدام پورت RP و کدام پورتDP و کدام سویچ Root switch خواهد شد(اگر تغییری در توپولوژی شبکه رخ نداده باشد که همان قبلی ها خواهند بود و وگرنه میفهمد که تغییر رخ داده که ازطریق BPDU ها این موارد را متوجه میشود)

وضعیت Listening در Spanning Tree پس از اتمام 20 ثانیه یک RP یا DP به وضعیت Listening میرود و بقیه پورتها در حالت Block باقی میمانند، در این وضعیت نیز پورتها به BPDU ها گوش میکند وآنها را پردازش میکند و بقیه فریمها دور انداخته میشوند طول مدت زمانیکه پورت در این حالت باقی میماند بستگی به مقدار تنظیمی یک تایمر به نام Forward delay timer دارد که پیشفرض آن 15 ثانیه است

وضعیت Learning در Spanning Tree پورتهای RP یا DP از وضعیت listening به وضعیت Learning میروند که در این وضع نیز به BPDU ها گوش و آنها را پردازش میکنند اما بر خلاف مدتی که در وضعیت Listening هستند شروع به پردازش فریمها میکنند وSource Address و Destination Address جدول Port Address یا MAC خود را Update میکنند اما سویچ هنوز فریمها را forward نمیکند مدت زمانیکه پورتها در این وضع میمانند بستگی به مقدار Forward delay time است که این مقدار نیز بصورت پیشفرض 15 ثانیه است.

وضعیت Forwarding در Spanning Tree سرانجام پس از اتمام مدت زمان گفته شده پورتی که در وضعیت Learning بود به وضعیت Forward میرود در این وضعیت پورت BPDU ها را پردازش ، جدول MAC خودش را Update و فریمها را Forward میکند

وضعیت Disabled این وضعیت یک وضعیت خاص است و پورتی که در این وضعیت است در فرایند STP شرکت نمیکند.و این حالت زمانی است که یک پورت توسط Admin شبکه Shutdown شده یا بصورت دستی از فرایند STP حذف شده و یا بدلایل امنیتیdisable شده ویا بدلیل فقدان سیگنال لایه فیزیکی از کار افتاده است (مثلا کابل آن جدا شده است) همانطور که دیدید STP حلقه را از توپولوژی شبکه حذف کرد اما مدت زمانی برای همگرایی بین سویچها در این فرایند تلف میشود که از 30 تا 50 ثانیه است که برای کاهش این زمان سیسکو قابلیت PortFast را برای پورتهای غیر Trunk یعنی پورتهای Access ایجاد کرده که پورت مستقیم به مد Forwarding میرود و Config آن بصورت زیر است:


1

Switch(Config)# spanning-tree portfast default






که این فرمان PoreFast را برای همه پورتهای غیر Trunk فعال میکند برای فعال کردن آن روی یک پورت دلخواه :


1
2

Switch(Config)# interface type [slot#/]port#
Switch(Config-if)# spanning-tree portfast [trunk]






پارامترTrunk در خط آخر انتخابی است و با آن در واقع portfast را روی لینکهایTrunk ای که سر دیگر آنها سویچ نیست فعال میشود.

نویسنده : علی نخعی
منبع : انجمن تخصصی فناوری اطلاعات ایران
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد