با عرض سلام و احترام خدمت دوستان عزیز وب سایت Theways
در خدمتتون هستم با ادامه ی بحث Spanning Tree…
در مقاله قبل مفاهیم و توضیحات اولیه و پایه پروتکل STP صحبت کردیم و فاز اول که انتخاب سوییچ ریشه بود را بررسی کردیم.
حالا میریم سراغ فاز های بعدی:
Phase 2: Electing Root Port
در مرحله بعد باید پورت ریشه یا Root Port انتخاب شود که پورتی است که در نهایت ما را به Root Bridge میرساند و وضعیت آن همیشه Forward است.
برای توضیح ملاک های اصلی برای انتخاب Root Port اول میریم سراغ متن کتاب:
A)Root Path Cost
به عنوان اولین ملاک سوییچ ریشه ترجیه میدهد مسیری را برای انتقال دیتا انتخاب کند که Cost کمتری داشته باشد
شرکت IEEE برای هر اینترفیس یک عدد Cost یا ارزش انتخاب کرده است یعنی اینترفیس با سرعت کمتر Cost بیشتری خواهد داشت:
سوییچ مقابل یک جدول متشکل از شماره و نوع اینترفیس و Cost که میشود جمع عدد فرستاده شده از سوییچ پشتی و ارزش اینترفیسش و هر پورتی عددش کمتر بود میشود Root Port که Root Bridge ترجیح میدهد از آن پورت بسته ها را بفرستد.
در مثال زیر راه رسیدن سوییچ ریشه به S2 از طریق F0/1 است،پس BPDU را به سمت S2 میرستد.حالا باید بین این دو پورت از S2 یکی را به عنوان Root Port انتخاب کند که همانطور که مشخص است چون فاصله f0/1 در سوییچ ریشه تا f0/3 از S2 کمتر است پس به عنوان Root Port در این سوییچ انتخاب میشود و S3 هم به همین صورت.
همانطور که در تصویر مشخص است ریشه BPDU را هم از بالا میفرستد هم از پایین تا LOOP مشخص شود.
اگر بنا به هر دلیلی خواستیم رو انتخاب مسیر سوییچ برای پیدا کردن کمترین مسیر تاثیر بگذاریم میتوانیم با کامند زیر Cost را کم یا زیاد کنیم:
دلیل اصلی عوض کردن این Cost ها میتواند شخصی و بسته به سازمان و به اصطلاح Per Case و Per Project متفاوت باشد در سازمان به طور مثال ما اشتباها یا از روی نداشتن امکانات کابلی را Cat5 کشیدیم و طبق استاندارد سوییچ همین مسیر با توجه به Cost انتخاب میشود در صورتی که ما مسیر بهتری هم داریم با توجه به این شرایط خاص میتوانیم Cost را عوض کنیم تا مسیر بهتر انتخاب شود.
Sender Bridge ID:
به عنوان دومین ملاک اگر با قبلی به نتیجه برای انتخاب پورت ریشه نرسید به سراغ BID فرستنده میرود.
به مثال زیر توجه کنید:
در این مثال سوییچ پایین با ملاک اول Root Port ش قابل تعیین نیست پس باید BID فرستنده توجه شود که هر کدام BID کمتر و یا بهتری فرستاد اون پورت به عنوان ریشه انتخاب میشود
خب مشخص است که یکی از پورت های غیر روت باید StandBy شوند تا درخت تشکیل شود و Loop از بین برود که به هم یک BPDU میفرستند و بین این دو هر کدام BID بیشتر یا بدتری داشته باشد استند بای میشود و اون یکی فوروارد.که راجع به این مفصل تر توضیح خواهم داد.
حالا اگر یکی از لینک های سالم قطع شود سوییچ از کجا باید بفهمد که پورتی که قبلا Loop کرده و استند بای بوده را آپ کند؟وقتی سوییچ میبیند BPDU روی یک دست آن نمی آید دلیلی برای استندبای نگه داشتن اون یکی نمیبیند چون دیگر Loop وجود ندارد.
-
قطع شدن BPDU یعنی قطع شدن ارتباط از اون دست تا ریشه و یعنی نبود Loop.
- B) Sender Port ID—->Priority.Number
در مرحله قبل چون BID یونیک هست باید به نتیجه برسد اما در یک صورت به نتیجه نمیرسد و آن وقتی است که اون سوییچی که BPDU میفرستد یک سوییچ باشد مانند مثال زیر:
C) Sender Port ID—->Priority.Number:
ID یک پورت شامل این دو است که عدد اولویت یک عدد یک بایتی مضرب ۱۶ است که دیفالتش ۱۲۸ است که قابل تغییر است و Number هم که شماره اون اینترفیس است و پورت فرستنده ای که ID بهتری دارد پورت گیرنده را به عنوان Root انتخاب میکند.و قطعا با این مورد در نهایت به نتیجه خواهد رسید.
-
Root Port یک Role یا نقش است که State آن همیشه Forward است.
-
Root Port، Root Bridge ندارد و تمام پورت های آن Designated است.
عدد اولویت در پورت ها را Per Vlan میتوان با کامند زیر به صورت مضرب ۱۶ تغییر داد:
نکته: تغییر عدد اولویت تاثیرش فقط روی خود سوییچ است اما عدد COST چون در کل جمع میشود روی کل سوییچ های مسیر تغییر ایجاد میکند.
با کامند زیر میتوان عدد اولویت پورت را مشاهده کرد:
مثال کتاب برای انتخاب درست Root Port :
Phase 3: Electing Designated And Non Designated Port:
دو نوع پورت دیگر هم داریم که نام دو پورتی است که Non Designated استندبای است و اماده به کار و دیگری برای Loop Free بلاک شده و در فاز سوم این دو پورت انتخاب میشوند:
برای انتخاب این دو باید به BPDU ها توجه کرد،بین دو سوییچ که باید یکی از اینترفیس ها به عنوان Designated و اون یکی به عنوان Non Designated انتخاب شود را یک Segment مینامیم حالا در دو طرف این Segment دو سوییچ وجود دارد که BPDU تزریق میکنند حالا هر کدام ID بهتری داشته باشد اون دست به عنوان Designat انتخاب و Forward میشود و دست مقابل به عنوان Non Designate انتخاب و Block میشود.
- STP سنتی و یا رایج و یا ۸۰۲٫۱D و یا Traditional STP یک پروتکل Timer Base است و سه نوع تایمر در آن وجود دارد:
Hello Time: ۲ Sec
دیفالت این تایمر ۲ ثانیه است که Root Bridge هر دو ثانیه یک بار به سوییچ های پایین(در دیزاین درست)تا پورت آخر که بلاک شده BPDU میفرستد.و میفهمد که سوییچ مقابل به ریشه وصل است.
Max Age: ۲۰ Sec
اگر یک پورتی در مدت زمان مشخصی که اون سوییچ انتظار دارد BPDU بیاید که همه چیز درست است اگر نیاید این تایمر شروع به کار میکند و دیفالت این تایمر تا ۲۰ ثانیه است و اگر جواب نگیرد تا ۲۰ ثانیه ادامه پیدا میکند و اگر نگیرد وضعیت حال را به وضعیت جدید عوض میکند و میگوید این دست من که تا ۲۰ ثانیه دیگه BPDU نگرفته به ریشه وصل نیست و براش مهم نیست از کجا قطع شده و پیش خودش میگه دستی که به ریشه وصل نیست درش احتمال Loop نیست پس این دست باید از حالت Block به Forward تبدیل شود.
Forward Time: ۱۵+۱۵ Sec
پروسه ای که در مرحله قبل بیان شد در آن واحد نمیتواند اتفاق بیفتد و از بلاک خارج شود و باید محاسبه انجام دهد چون از نظر STP تپولوژی تغییر کرده و محاسبات قبلی که کرده بود و این پورت رو Block کرده بود دیگر اعتبار ندارد و دوباره یک محاسبه جدید انجام میدهد تا نقش جدید Port را مشخص کند که ۱۵ ثانیه طول میکشد و اصطلاحا میگن پورت در وضعیت Listen قرار دارد. حالا در این ۱۵ ثانیه مشخص میشود نقش جدید Port چیست که ممکن است مانند قبل BLK بماند یا Root شود یا Designated !!! حالا اگر تصمیم بگیرد که از بلاک خارجش کند یا Forward ش کند ۱۵ ثانیه دیگر طول میکشد تا مک های شبکه را یاد بگیرد که اصطلاحا میگوییم وضعیتش LRN است چون که در زمانی که BLK بوده فقط BPDU میگرفته و هیچ بسته دیگری دریافت نمیکرده.حالا بعد از ۱۵ ثانیه دوم که کامل Mac ها را LRN کرد پورت را فوروارد میکند و روی آن ترافیک می اندازد.
اگر توجه کرده باشید اگر STP معمولی ران باشد در شبکه هر پورت حدود ۵۰ ثانیه طول میکشد تا UP شود که دلیلش همین تایمر ها است که بررسی میکند شبکه Loop Free باشد که البته تا حدی قابل Tune کردن است که در مقالات بعدی راجع بهش صحبت خواهیم کرد.
ما در شبکه اصطلاحی به اسم قطر(Diameter = D ) داریم.که فاصله دورترین سوییچ ها از هم این عدد را نشان میدهد.میدانیم که این تایمر ها در شبکه های کوچک با خیلی بزرگ ممکن است متفاوت باشند مثلا در شبکه های خیلی بزرگ این که BPDU ارسال شود تا سوییچ آخر و هر کدام محاسبه کنند ممکن است بیشتر از شبکه کوچک طول بکشد حالا ما یا باید دستی این تایمر ها را تغییر دهیم که خب خب محاسبه سختی است و با اشتباه ما ممکن است Loop ایجاد شود یا قطر یک شبکه بزرگ را ست کنیم که خب اون دیگر بدترین شرایط را پوشش میدهد و یا راه بهتر اینکه قطر شبکه خودمان را محاسبه کنیم و ست کنیم تا تایمر ها با توجه به Scale ما تنظیم شود.
حالا این تایمر هایی که راجع بهش صحبت شد برای قطر شبکه هفت در نظر گرفته شده که خب شبکه بسیار بزرگی است و کوچکتر ها را هم شامل میشود یعنی بدترین حالت ممکن دیده شده و وقتی با شبکه با قطر هفت Loop نیفتد مطمئنا با قطر پایینتر هم زمان هست و loop نمی افتد.
بهتر است ما با توجه به قطر شبکه مان این تایمر ها را تغییر دهیم تا شبکه ما سریعتر شود و اصطلاحا Convergence Time ما کمتر شود.و شبکه ما با تغییرات سریعتر بتواند به حالت Stable برسد و اگر این تایم بالا باشد با هر تغییر اعم از قطعی و وصلی لینک و … شبکه ما کند تر بالا می آید.
پس با این توضیحات بهتر است با توجه به Scale یا قطر شبکه مان تایمر ها را در هر Vlan بهینه کنیم برای این کار هم دو روش دستی (که راجع بهش صحبت شد و دستی ثانیه میدادیم) و اتوماتیک که با تغییر قطر است انجام میپذیرد.
خب دوستان عزیز این قسمت از مقاله هم به پایان رسید انشالله در قسمت بعدی راجع به بهینه تر کردن STP سنتی صحبت میکنم.
امیدوارم که مفید واقع شده باشه.
نویسنده : محمدمهدی دهقان
بسیار بسیار عالی مهندس دهقان عزیز ، یعنی باید خط به خط خوند و استفاده کرد . حتما با دقت میخونم و سوالاتم میپرسم
ممنون از وقتی که گذاشتی
خواهش میکنم مهندس اسحاقی عزیز…
باعث افتخارمه در خدمتتون هستم
ممنون از توجهتون…/