اینترنت اشیاء «IoT» » پروتکل STP

پروتکل STP

نوشته شده توسط بهادر اکرمی در ۷ دی ۱۳۹۲

پروتکل stp  :

1

شکل ۱- یک نمونه Loop ایجاد شده مابین سوئیچ ها

یک پروتکل جهت جلوگیری از ایجاد loop یا حلقه تکرار در شبکه است. این پروتکل در سویچ ها استفاده می شود در واقع  کار آن جلوگیری از اینجاد loop در سویچ های لایه ۲ است. که این پروتکل این کار را با استفاده از الگوریتم stp انجام می دهد که ارتباطات اضافی را به حالت block تبدیل می کند  تا با نبود ارتباط اضافی از ایجاد loop جلوگیری کرده باشد و حسن این پروتکل در این است که به محض قطع شدن ارتباطات دیگر، ارتباطی را که جهت جلوگیری کردن از loop قطع کرده بود را دوباره وصل می کند تا ارتباطات دچار مشکل نشود. در واقع هدف ما این است که کاری کنیم تا بین سویچ ها ارتباطات طوری برقرار باشد تا در صورت بوجود آمدن مشکل در ارتباط راه های ارتباطی دیگری نیز وجود داشته باشد. اما از آنجا که وجود ارتباطات اضافی هم مشکل loop را بوجود می آورد پروتکل stp معرفی شد تا این مشکل را حل کند. و stp  با استفاده از الگوریتم خود یکی از پورت ها را غیر فعال می کند تا یک مسیر منطقی بین سویچ ها برقرار باشد و در و در صورت بوجود آمدن مشکل و قطع شدن یکی از ارتباطات ،پورتی را که block کرده بود را فعال میکند تا ارتباطات از مسیر جدید ادامه پیدا کند.

نکته: پروتکل STP  همیشه به صورت پیش فرض بر روی همه سوئیچ ها فعال است و نیازی به فعال کردن آن نیست.

نحوه کار STP

2

شکل ۲ – نمایی از بلاک شدن یک ارتباط

در شکل بالا سوئیچ A و B و C یک loop ایجاد کرده اند. مثلا وقتی یک بسته از سوئچ D به سمت سوئیچ B یا C ارسال شود، این بسته در یک loop(حلقه) می افتد و هیچ وقت این بسته از این حلقه خارج نخواهد شد. این عمل باعث بروز مشکل در عملکرد شبکه و سوئیچ ها خواهد شد. به همین خاطر پروتکل STP بر اساس یکسری قواعد و قوانین یکی از لینک های بین سوئیچ ها را (همانطور که مشاهده می کنید لینک بین سوئیچ A و B بلاک (block) می کند تا از بروز loop در شبکه جلوگیری نماید.

این پروتکل دارای الگوریتمی است که طی آن عملیات تصمیم گیری صورت می گیرد تا مشخص شود کدامیک از لینکهای شبکه در حالت Forwarding و کدامیک در حالت Blocking قرار گیرد. این تصمیم گیری براساس چند عامل صورت می پذیرد که مهمترین آنها عبارتند از :

  • اگر یک Switch بعنوان سوئیچ اصلی شناسایی شود تمام لینکهای متصل به آن در حالت Forwarding قرار خواهند گرفت.
  • اگر چندین سوئیچ به سوئیچ x متصل باشند ، سوئیچ x تنها لینکی را در حالت هدایت قرار می دهد که کمترین و کوتاهترین هزینه را تا سوئیچ اصلی دارا باشد.
  • لینکی از یک Switch که کمترین هزینه را با سوئیچ اصلی دارا است در حالت هدایت قرار خواهد گرفت.

در صورتی که وضعیت لینک در حالتی غیر از موارد فوق باشد ، STP  آن لینک را بلوک خواهد کرد.

فرآیند تصمیم گیری در STP

اما STP چگونه عملیات تصمیم گیری را انجام می دهد و از کجا می داند که کدام سوئیچ را در اولویت قرار دهد. پروتکل STP با گوش دادن به پیامهای رد و بدل شده میان Switch ها و آنالیز آنها متوجه درجه اهمیت دستگاههای متصل به سوئیچ می شود. در ابتدا همه سوئیچ ها ادعای Root (سوئیچ اصلی) بودن می کنند به منظور شناسایی سوئیچ Root  پیغام BDPU( Protocol Data Units) را بین خودBroadcast  می کنند ” این پیغام دارای هشت بایت طول می باشد که دو بایت اول آنPriority  (اولویت) سوئیچ که عددی بین ۰ تا ۶۵۵۳۵ است و شش بایت دیگر MAC آدرس سوئیچ می باشد” و هر سوئیچی که دارای Priority کمتری باشد بعنوان سوئیچ Root در نظر گرفته می شود در صورتی که دارایPriority  مشابهی باشند کوچکترین شماره MAC  آدرس بعنوان سوئیچ Root انتخاب می گردد. جالب اینجاست که اگر یکی از سوئیچها بفهمد که مثلاً Switch شماره ۳ از بقیه سوئیچ هائی که می شناسد بهتر و کم هزینه تر است از آن به بعد تبلیغ Switch شماره ۳ را می کند و به سوئیچهای همسایه خود می گوید شماره ۳ اصلی است این روند تا آنجا ادامه پیدا می کند که تمامی سوئیچهای شبکه در اصلی بودن یکی از سوئیچها به توافق برسند. در این زمان طبق شرایط ذکر شده تمامی لینکهای آن را در حالت هدایت قرار می دهند و سوئیچهای متصل به آن ، لینک واسط خود با آن را فعال نگه می دارند. حالا بحث بین لینکهای دیگر قرار می گیرد.

نکته: به صورت پیش فرض Priority همه سوئیچ ها ۳۲۷۶۸ می باشد. (یعنی Priority همه سوئیچ ها به صورت پیش فرض یکسان است مگر اینکه خودمان مقدار آن را تغییر دهیم.) به کمک دستور زیر می توان مقدار Priority رو در یک سوئیچ تغییر داد:

cfcl(config)# interface fastethernet 1/1

cfcl(config-int)# spanning-tree port-priority 50

با دستور فوق Priority سوئیچ را به ۵۰ تغییر دادیم. در صورتی که سوئیچ های دیگر شبکه دارای Priority پیش فرض باشند (۳۲۷۶۸) مسلما دستور بالا باعث می شود که سوئیچ فوق به عنوان Root انتخاب شود.

بعد از اینکه Root انتخاب شد حالا باید روی هر سوئیچ یکی از پورت های آن به عنوان Root Port انتخاب شود. پورتی به عنوان Root Port  انتخاب می شود که Root Path Cost  آن از همه پورتهای دیگر کمتر باشد.

Root Path Cost  : هزینه یک مسیر از این سوئیچ تا سوئیچ Root  را Root Path Cost می گویند.

پس یک سوئیچ از بین مسیرهایی که به سمت Root  وجود دارد بررسی می کند که کدام کمترین مسیر و کمترین هزینه را داردٰ بنابراین آن مسیر Root Port می شود.

Path Cost : هزینه مسیر بین دو پورت با توجه به اینکه سرعت بینشان چه قدر باشد را Path Cost می گویند.

مثلا اگر دو تا سوئیچ A,B از طریق پورت شماره FastEthernet 1/1 به هم وصل شده باشند و کابل مورد استفاده هم دارای سرعت ۱۰۰ MB باشه (یا بعبارتی کابل Cat 5 یا Cat 5e باشه) هزینه این مسیر (مسیر بین دو پورت) FastEthernet 1/1  می شود ۱۹٫ حالا اگر همین دو سوئیچ A,B از طریق پورتهای Gigabit Ethernet 1/1 و کابل Cat 6 به هم وصل شده باشند هزینه این مسیر می شود ۴٫

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

نوع لینک

هزینه

۴         Mbps

۲۵۰

۱۰       Mbps

۱۰۰

۱۶       Mbps

۶۲

۴۵       Mbps

۳۹

۱۰۰     Mbps

۱۹

۱۵۵     Mbps

۱۴

۶۲۲     Mbps

۶

۱         Gbps

۴

۱۰        Gbps

۲

 طبق جدول فوق می شود طبق لینک بین دو تا پورت هزینه آن رو محاسبه کرد. مثلا اگر سرعت لینک بین دو پورت ۱۰ Mbps باشه هزینه آن مسیر می شود ۱۰۰٫

محاسبه Root Path Cost هر پورت :

  • پورتهای سوئیچ Root  مقدار Root Path Cost شان همیشه ۰ است. بنابراین بسته BPDU ای که از آن خارج میشود مقدار Root Path Cost آن می شود.
  • سوئیچی که یک بسته BPDU از Root  دریافت می کند Path Cost (هزینه مسیر) خودش رو با مقدار Root Path Cost ای که در بسته BPDU دریافتی گرفته جمع می کند. سپس سوئیچ بسته BPDU  را به سمت سوئیچ بعدی Forward یا ارسال می کند.
  • سوئیچی که بسته BPDU را از سوئیچ همسایه گرفته است، Path Cost  (هزینه مسیر) خود را با مقدار Root Path Cost ای که در بسته BPDU دریافتی گرفته است جمع می کند. بعد بسته BPDU را دوباره به سوئیچ بعدی می فرستد. این روال به همین شکل ادامه پیدا می کند …

Designated Port :

فعلاRoot   و Root Port انتخاب شده اند. اما هنوز لوپ در شبکه وجود دارد و هنوز مشکل توسط پروتکل STP حل نگردیده است، در این مرحله نوبت به انتخاب Designated Port  می رسد. بین هر سگمت در شبکه یک پورت به عنوان Designated  Port انتخاب می شود. فرمول انتخاب Designated Port هم طبق فرمولی است که Root Port رو انتخاب گردید.  یعنی در هر سگمنت، پورتی که کمترین هزینه به سمت Root  را داشته باشه به عنوان Designated Port در یک سگمنت انتخاب می شود.

Block Port :

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

مثال: برای توضیح بهتر و کاملتر مطالب فوق به شکل زیر نگاه کنید:

3شکل ۳-  تعیین Root

همانطور که می بینید در شکل فوق سه سوئیچ به نام های sw1، sw2  و sw3 قرار دارد. برای تعیینRoot ،  Root Port و Designated Port  به شکل زیر عمل می کنیم:

Root = R

Root Port = RP

Designated Port = DP

قدم اول: انتخاب R:

 یکی از سوئیچ ها باید به عنوان R انتخاب شود. اگر فرض کنیم که  Priority همه سوئیچ ها به صورت پیش فرض است (۳۲۷۶۸) بنابراین آدرس MAC سوئیچ های فوق به عنوان ملاک انتخاب آنها به عنوان R خواهد بود.

فرض کنیم آدرس Mac مربوط به sw1 از همه کوچکتر است. بنابراین این سوئیچ به عنوان R انتخاب خواهد شد.

 فرض کنیم آدرس MAC سوئیچ های فوق به صورت زیر است:

سوئیچ۱=    aaaa.aaaa.aaaa

سوئیچ۲=  bbbb.bbbb.bbbb

سوئیچ۳=   cccc.cccc.cccc

در اینصورت آدرس مک سوئیچ ۱ از همه کوچکتر است و سوئیچ شماره ۱ می شود  R

قدم دوم: انتخاب Root Port در هر سوئیچ

نکته۲: همه پورت های سوئیچ R به عنوان DP انتخاب خواهند شدزیرا کمترین RPC (Root Path Cost) را دارند. بنابراین پورت Fast Ethernet 0/1 و Fast Ethernet 0/2 در سوئیچ ۱ به عنوان DP انتخاب می شوند.

با توجه به اینکه لینک بین هر سه سوئیچ ۱۰۰ مگا بیت بر ثانیه (۱۰۰ MBPS ) است بنابراین هزینه لینک بین هر دو سوئیچ ۱۹ خواهد بود و RPC در هر پورت سه سوئیچ به شکل زیر خواهد بود:

پورت Fast Ethernet 0/1 در sw1: مقدار ۰

پورت Fast Ethernet 0/2 در sw1: مقدار ۰

پورت Fast Ethernet 0/1 در sw2: مقدار ۰+۱۹=۱۹

پورت Fast Ethernet 0/2 در sw2: مقدار ۱۹+۱۹=۳۸

پورت Fast Ethernet 0/1 در sw3: مقدار ۰+۱۹=۱۹

پورت Fast Ethernet 0/2 در sw3: مقدار ۱۹+۱۹=۳۸

 طبق محاسبات فوق در سوئیچ ۲ پورت Fast Ethernet 0/1 به عنوان RP انتخاب می شود. در سوئیچ ۳ هم پورت Fast  Ethernet 0/1  به عنوان RP انتخاب می شود.

 قدم سوم: انتخاب DP در هر سگمنت:

نکته: به ارتباط یا لینک بین هر دو تا پورت یک سگمنت می گویند.

سگمنت های توپولوژی فوق به صورت زیر است:

 – در سگمنت sw1-2 پورت Fast Ethernet 0/1 مربوط به سوئیچ ۱ به عنوان DP انتخاب می شود.

 – در سگمنت sw1-3 پورت Fast Ethernet 0/2 مربوط به سوئیچ ۱ به عنوان DP انتخاب می شود.

سگمنت بین دو  sw2 و sw3

همانطور که گفته شد در هر سگمنت پورتی که دارای RPC کمتری باشد به عنوان DP انتخاب می شود. اما داستان این است که در سگمنت sw2-3 هزینه RPC هر دو پورت Fast Ethernet 0/2 سوئیچ ۲ و پورت Fast Ethernet 0/2 سوئیچ ۳ یکیست (مقدار هر دو ۳۸ محاسبه شد). در این شرایط پروتکل STP ، ID را در نظر می گیرد که ترکیب  Priority و Mac Address است. با توجه به اینکه  Priority هر دو سوئیچ یکسان است (مقدار هر دو بصورت پیش فرض ۳۲۷۶۸ می باشد) بنابراین آدرس MAC پورتها را در نظر می گیریم. بدلیل اینکه آدرس MAC مربوط به sw2 کوچکتر از sw3 است بنابراین پورت Fast Ethernet 0/2  مربوط به سوئیچ ۲ به عنوان پورت DP انتخاب می شود.

پورتی که نه به عنوان RP و نه به عنوان DP انتخاب شود را پورت بلاک (Block) می گویند. بنابراین پورت Fast Ethernet 0/2  سوئیچ ۳ به عنوان پورت بلاک انتخاب می شود. با این توضیحات لوپ (Loop) موجو در شبکه از بین می رود.

سیاست های زمانبندی:

۱-  پیغام Hello Time هر ۲ ثانیه یکبار

۲- پیغام Max Age در صورت عدم انتشار Hello Time بعد از مدت زمان ۲۰ ثانیه انتشار داده می شود

۳- پیغام Forward Delay بمدت۳۰ ثانیه از زمان انتشار Max Age انتشار می یابد که ۱۵ ثانیه اول Listening و ۱۵ ثانیه بعد Learning می باشد.

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

در حالت پیشفرض در هر ۲ ثانیه سوئیچ اصلی با ارسال پیغام Hello Time به تمام لینک های خود وضعیت مسیرها و سوئیچها را جویا می شود و به این روش, کل شبکه هزینه های دسترسی خود به Switch اصلی را بروزرسانی می کنند. اگر بعد از گذشت زمان مشخصی ( بصورت پیش فرض ۲۰ ثانیه) پیغامی از لینکی که متصل به سوئیچی می باشد شنیده نشود ، STP با بررسی دوباره تصمیم می گیرد مسیرها را در حالتی قرار دهد که سوئیچ مورد نظر را دور بزند تا دسترسی به همه جای شبکه همچنان برقرار باشد ولی اگر قبل از ۲۰ ثانیه پیامی از لینک شنیده شود هیچ تغییری در STP صورت نخواهد پذیرفت.

EtherChannel

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

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

یکی از راهکارهائی که مورد استفاده قرار می گیرد استفاده از EtherChannel می باشد این تکنولوژِی امکان استفاده همزمان ۲ تا ۸ خط ترانک بین ۲ سوئیچ را فراهم می آورد در حقیقت در این روش همه لینکهای ترانک به عنوان یک لینک واحد معرفی می شوند و در صورتی این ارتباط قطع می شود که تمامی این لینکهای ترانک با هم و هم زمان قطع شوند. با این روش تقریباً نیاز به همگرائی STP منتفی می باشد چرا که قطع کامل ارتباط بین ۲ سوئیچ با وجود چنین ارتباطی تقریباً غیر ممکن خواهد بود. البته راهکارهای دیگری نیز برای بهبود عملکردSTP وجود دارد که در اینجا نیازی به مطرح کردن آنها نیست و فقط توصیه می کنم همیشه سوئیچهای حساس و حیاتی سازمان خود را با مکانیزم Ether Channel به یکدیگر متصل کنید تا همواره از UP بودن آنها مطمئن باشید.

دیدگاه‌تان را ارسال کنید ...



طراحی قالب توسط: بهادر اکرمی