Spanning Tree Protocol به معنای پروتکل Spanning Tree که به صورت STP هم نمایش داده میشود، از ایجاد loop در شبکهها جلوگیری میکند و شبکه مجازی محلی (VLAN) برای ایجاد بسیاری از شبکههای محلی مجازی استفاده میشود. شرایط خاصی وجود دارد که در آن به redundant links نیاز دارید اما به loopها نیاز ندارید. redundant links در شبکهها به عنوان پشتیبان در موارد failover مفید هستند. هنگامی که لینک اولیه از کار میافتد، لینک پشتیبان (redundant) فعال میشود. STP را میتوان در VLANها پیاده سازی کرد. STP مسیرهای خاصی را در حالت مسدود شده (پیوندهای پشتیبان) و primary link را در حالت ارسال قرار میدهد.
STP در سوئیچهای سیسکو
سوئیچهای LAN مبتنی بر IOS سیسکو، STP را بهطور پیشفرض در تمام رابطهای هر VLAN فعال میکنند. با این حال، مهندسان شبکه که با شبکههای محلی اترنت با اندازه متوسط تا بزرگ کار میکنند، ترجیح میدهند برخی از تنظیمات STP را پیکربندی کنند. گزینههایی مانند اینکه کدام سوئیچ تبدیل به روت شود، با قابلیت پیشبینی در مورد اینکه کدام پورت سوئیچ در زمانی که همه پورتها به طور فیزیکی کار میکنند مسدود یا حذف میشوند. همچنین میتوان پیکربندی را طوری تنظیم کرد که وقتی پیوندها یا سوئیچها خراب میشوند، مهندس بتواند توپولوژی STP را در آن موارد نیز پیشبینی کند.
پیادهسازی STP
سوئیچهای Cisco IOS معمولا از STP (IEEE 802.1D) استفاده میکنند. میتوانید چند سوئیچ سیسکو بخرید و آنها را با کابلهای اترنت در یک توپولوژی افزوده وصل کنید و STP اطمینان حاصل میکند که فریمها loop نمیشوند و شما هرگز مجبور نیستید به تغییر تنظیمات فکر کنید.
اگرچه STP بدون هیچ گونه پیکربندی هم کار میکند، اما اکثر شبکههای محلی campus با اندازه متوسط تا بزرگ از برخی تنظیمات STP منتفع خواهند شد. با همه پیشفرضها، سوئیچها روت را بر اساس کمترین آدرس MAC حک شده روی سوئیچها انتخاب میکنند، زیرا همه آنها بهطور پیشفرض از اولویت STP یکسانی استفاده میکنند.
مفاهیم STP و ارتباطشان به گزینههای پیکربندی STP
STP برای اکثر تصمیمات خود از دو نوع عدد استفاده میکند: BID و هزینه پورت STP. با تمرکز بر این دو نوع عدد، این خلاصه از آنچه STP در پشت صحنه انجام میدهد را در نظر بگیرید:
- از BID برای انتخاب سوئیچ root استفاده میکند و سوئیچ را با کمترین BID عددی انتخاب میکند.
- زمانی که هر سوئیچ غیر روت پورت روت (RP) خود را انتخاب میکند، از کل هزینه STP در هر مسیر به روت استفاده میکند.
- هنگامی که سوئیچها تصمیم میگیرند که کدام پورت سوئیچ به پورت تعیین شده (DP) در هر بخش LAN تبدیل شود، از هزینه روت هر سوئیچ استفاده میکند که به نوبه خود بر اساس هزینههای پورت STP است.
سوئیچهای سیسکو به شما امکان میدهند بخشی از BID سوئیچ و هزینه پورت STP را پیکربندی کنید که به نوبه خود بر انتخابهایی که هر سوئیچ با STP انجام میدهد تأثیر میگذارد.
تنظیمات پیکربندی Per-VLAN
سوئیچهای سیسکو علاوه بر پشتیبانی از پیکربندی BID و هزینههای پورت STP، از پیکربندی هر دو تنظیمات در هر VLAN پشتیبانی میکنند. به طور پیش فرض، سوئیچهای سیسکو از IEEE 802.1D استفاده میکنند، با یک ویژگی اختصاصی سیسکو به نامPer-VLAN Spanning Tree Plus . این ویژگی که امروزه اغلب به اختصار PVST نامیده میشود یک نمونه متفاوت از STP برای هر VLAN ایجاد میکند. بنابراین، قبل از بررسی پارامترهای STP قابل تنظیم، باید درک اولیهای از PVST+ داشته باشید، زیرا تنظیمات پیکربندی میتواند برای هر نمونه از STP متفاوت باشد.
PVST+ به مهندسان یک ابزار متعادل کننده بار با STP میدهد. با تغییر برخی پارامترهای پیکربندی STP برای VLANهای مختلف، مهندس میتواند سوئیچها را وادار کند تا RPها و DPهای مختلف را در VLANهای مختلف انتخاب کنند. در نتیجه، مقداری ترافیک در برخی از VLANها میتواند از طریق یک ترانک و ترافیک سایر VLANها از طریق یک ترانک دیگر ارسال شود.
Bridge ID و پسوند System ID
در ابتدا، BID یک سوئیچ با ترکیب اولویت ۲ بایتی سوئیچ و آدرس ۶ بایتی MAC آن شکل گرفت. بعدا، IEEE قوانین را تغییر داد و فیلد اولویت اصلی را به دو فیلد جداگانه تقسیم کرد. یک فیلد اولویت ۴ بیتی و یک زیرفیلد ۱۲ بیتی به نام پسوند ID سیستم (که نشان دهنده شناسه VLAN است).
سوئیچهای سیسکو به شما امکان میدهند قسمت اولویت BID را پیکربندی کنید. سوئیچ آدرس MAC جهانی حک شده خود را به عنوان شناسه سیستم پر میکند. همچنین شناسه VLAN یک VLAN را در قسمت پسوند ID سیستم ۱۲ بیتی وارد میکند. تنها بخش قابل تنظیم توسط مهندس شبکه، فیلد اولویت ۴ بیتی است.
با این حال، پیکربندی عدد برای قرار دادن در قسمت اولویت، یکی از عجیبترین چیزهایی است که میتوان روی روتر یا سوئیچ سیسکو پیکربندی کرد. همانطور که در شکل نشان داده شده است، فیلد اولویت در اصل یک عدد ۱۶ بیتی بود که یک عدد اعشاری از ۰ تا ۶۵۵۳۵ را نشان میداد. به دلیل آن سابقه، دستور پیکربندی فعلی (spanning-tree vlan vlan-id priority x) به عدد اعشاری بین ۰ تا ۶۵۵۳۵ نیاز دارد. اما فقط اعداد مضرب ۴۰۹۶ قابل قبول هستند.
سوئیچ همچنان ۴ بیت اول BID را بر اساس مقدار پیکربندی شده تنظیم میکند. همانطور که مشخص است، از ۱۶ مضرب مجاز ۴۰۹۶، از ۰ تا ۶۱۴۴۰، هر کدام یک مقدار باینری متفاوت در ۴ بیت اول خود دارند: ۰۰۰۰، ۰۰۰۱، ۰۰۱۰، و به همین ترتیب، تا ۱۱۱۱. سوئیچ ۴ واقعی را تنظیم میکند. اولویت بیت بر اساس ۴ بیت اول مقدار پیکربندی شده.
اگرچه تاریخچه و پیکربندی ممکن است ایده اولویت BID را کمی پیچیده جلوه دهد، داشتن یک فیلد ۱۲ بیتی اضافی در BID در عمل به خوبی کار میکند زیرا میتوان از آن برای شناسایی VLAN ID استفاده کرد. شناسههای VLAN از ۱ تا ۴۰۹۴ متغیر هستند که به ۱۲ بیت نیاز دارند. سوئیچهای سیسکو شناسه VLAN را در قسمت پسوند ID سیستم قرار میدهند، بنابراین هر سوئیچ یک BID منحصر به فرد در هر VLAN دارد.
هزینههای پورت Per-VLAN
رابط هر سوئیچ هزینه STP هر VLAN خود را بر اساس توصیههای IEEE به طور پیش فرض تعیین میکند. در رابطهایی که از سرعتهای متعدد پشتیبانی میکنند، سوئیچهای Cisco هزینه را بر اساس سرعت واقعی فعلی قرار میدهند. بنابراین، اگر یک رابط برای استفاده از سرعت کمتر مذاکره کند، هزینه STP پیشفرض آن سرعت پایینتر را منعکس میکند. اگر رابط برای استفاده از سرعت متفاوت مذاکره کند، سوئیچ به صورت پویا هزینه پورت STP را نیز تغییر میدهد.
از طرف دیگر، میتوانید هزینه پورت STP سوییچ را با دستور فرعی spanning-tree [vlan vlan-id] cost پیکربندی کنید. این دستور را اغلب در ترانکها مشاهده میکنید زیرا تنظیم هزینه در ترانکها روی هزینه روت سوئیچ تأثیر دارد، در حالی که تنظیم هزینههای STP در پورتهای دسترسی تأثیری ندارد.
دستور میتواند شامل شناسه VLAN باشد یا نه. دستور فقط به یک پارامتر vlan در پورتهای ترانک نیاز دارد تا هزینه هر VLAN را تعیین کند. در یک ترانک، اگر دستور پارامتر VLAN را حذف کند، هزینه STP را برای تمام VLANهایی که هزینه آنها توسط دستور spanning-tree vlan x cost برای آن VLAN تنظیم نشده است، تعیین میشود.
خلاصه گزینههای پیکربندی STP
جدول زیر تنظیمات پیش فرض را برای BID و هزینههای پورت خلاصه میکند و دستورات پیکربندی را فهرست میکند. در مرحله بعد، بخش پیکربندی نحوه بررسی عملکرد STP در یک شبکه ساده به همراه نحوه تغییر این تنظیمات اختیاری را نشان میدهد.
پیکربندی هزینههای پورت STP
تغییر هزینههای پورت STP به یک دستور فرعی رابط ساده نیاز دارد: spanning-tree [vlan x] cost x. برای نشان دادن نحوه کارکرد آن، مثال زیر را در نظر بگیرید، که آنچه در شبکه نشان داده شده در شکل زیر اتفاق میافتد را تغییر میدهد.
در شکل، با تنظیمات پیش فرض، SW1 تبدیل به روت شد و SW3 در رابط G0/2 خود مسدود شد. اسکن مختصری از شکل، بر اساس هزینه STP پیش فرض ۴ برای رابطهای گیگابیتی، نشان میدهد که SW3 باید مسیر هزینه ۴ و مسیر هزینه ۸ را برای رسیدن به روت پیدا میکرد.
برای نشان دادن اثرات تغییر هزینه پورت، مثال بعدی تغییری را در پیکربندی SW3 نشان میدهد و هزینه پورت G0/1 آن را بالاتر میگذارد تا مسیر بهتری به روت از پورت G0/2 SW3 خارج شود. مثال زیر چندین تاثیر جالب دیگر را نیز نشان میدهد.
این مثال با دستور debug spanning-tree events در SW3 شروع میشود. این دستور به سوییچ میگوید که هر زمان که STP تغییراتی در نقش یا وضعیت یک رابط انجام میدهد، پیامهای گزارش اشکال زدایی را صادر کند. این پیامها در نتیجه پیکربندی در مثال نشان داده میشوند.
سپس، این مثال پیکربندی را برای تغییر هزینه پورت SW3، در VLAN 10، به ۳۰، با دستور فرعی واسط spanning-tree vlan 10 cost 30 نشان میدهد. بر اساس شکل، هزینه روت از طریق G0/1 SW3 به جای ۴، اکنون ۳۰ خواهد بود. در نتیجه، بهترین هزینه SW3 برای رسیدن به روت، هزینه ۸ است، با G0/2 SW3 به عنوان پورت اصلی آن.
پیامهای اشکالزدایی، با مهر زمانی، به ما میگویند که STP در SW3 در پشت صحنه به چه چیزی فکر میکند. توجه داشته باشید که پنج پیام اشکالزدایی اول که بلافاصله پس از خروج کاربر از حالت پیکربندی در این مورد نمایش داده میشوند، همه در یک زمان (تا یک میلیثانیه) اتفاق میافتند. قابل ذکر است که G0/1 که در حال فوروارد بود، بلافاصله به حالت مسدود کننده میرود. رابط G0/2 که مسدود شده بود، به حالت فوروارد نمی رود، در عوض به حالت گوش دادن میرود (حداقل طبق این پیام).
اکنون به دنبال پیام اشکال زدایی بگردید که G0/2 را در حال انتقال به حالت یادگیری لیست میکند و سپس پیام بعدی را که در نهایت به حالت ارسال نشان میدهد، نشان میدهد. فاصله بین پیامها چقدر است؟ در هر مورد، مهرهای زمانی پیام نشان میدهد که ۱۵ ثانیه گذشته است. در این آزمایش، سوئیچها از تنظیم پیش فرض تاخیر رو به جلو (۱۵ ثانیه) استفاده کردند. بنابراین، این پیامهای اشکالزدایی مراحلی را که STP برای انتقال یک رابط از حالت مسدود کردن به حالت ارسال انجام میدهد، تأیید میکند.
اگر هنگام پیکربندی هزینه، اشکالزدایی را فعال نکردید، با استفاده از دستورات نمایش بعدا میتوانید همان انتخاب را توسط SW3 تأیید کنید تا اکنون از پورت G0/2 آن به عنوان RP استفاده کنید. مثال بعدی تنظیمات جدید هزینه پورت STP را در SW3 به همراه پورت روت و هزینه روت جدید با استفاده از دستور show spanning-tree vlan 10 نشان میدهد. توجه داشته باشید که G0/2 اکنون به عنوان پورت اصلی فهرست شده است. بالای خروجی هزینه اصلی SW3 را ۸ نشان میدهد که با تجزیه و تحلیل نشان داده شده در شکل بالا مطابقت دارد.
پیکربندی اولویت برای تأثیرگذاری در انتخاب روت
یکی دیگر از گزینههای بزرگ پیکربندی STP این است که میتوان با تغییر اولویت یک سوئیچ روی انتخاب روت تأثیر گذاشت. اولویت را میتوان به صراحت با دستور پیکربندی جهانی مقدار اولویت spanning-tree vlan vlan-id تنظیم کرد که اولویت پایه سوئیچ را تعیین میکند. (این دستوری است که به پارامتری از مضرب ۴۰۹۶ نیاز دارد.)
با این حال، سیسکو گزینه پیکربندی بهتری نسبت به پیکربندی یک مقدار اولویت خاص به ما میدهد. در اکثر طرحها، مهندسان شبکه دو سوئیچ را به عنوان روت انتخاب میکنند: یکی برای روت بودن در حالتی همه سوئیچها در حال کار هستند و دیگری برای زمان خرابی سوئیچ اول. Switch IOS این ایده را با دستورات spanning-tree vlan vlan-id root اولیه و spanning-tree vlan vlan-id root ثانویه پشتیبانی میکند.
دستور spanning-tree vlan vlan-id root اولیه به سوئیچ میگوید که اولویت خود را به اندازهای پایین تنظیم کند که در حال حاضر روت شود. سوئیچ به روت فعلی در آن VLAN و اولویت روت نگاه میکند. سپس سوئیچ محلی یک مقدار اولویت را انتخاب میکند که باعث میشود سوئیچ محلی به عنوان روت انتخاب شود.
با توجه به اینکه سوئیچهای سیسکو از اولویت پایه پیش فرض ۳۲۷۶۸ استفاده میکنند، این دستور اولویت پایه را به صورت زیر انتخاب میکند:
- اگر روت فعلی دارای اولویت پایه بالاتر از ۲۴۵۶۷ باشد، سوئیچ محلی از اولویت پایه ۲۴۵۶۷ استفاده میکند.
- اگر اولویت پایه روت فعلی ۲۴۵۶۷ یا کمتر باشد، سوئیچ محلی اولویت پایه خود را روی بالاترین مضرب ۴۰۹۶ تنظیم میکند که همچنان منجر به تبدیل شدن سوئیچ محلی به روت میشود.
برای سوئیچ که در صورت خرابی سوئیچ اول به عنوان روت در نظر گرفته شده است، از دستور ثانویه spanning-tree vlan vlan-id root استفاده کنید. این دستور بسیار شبیه دستور spanning-tree vlan vlan-id root اولیه است، اما با مقدار اولویت بدتر از سوئیچ اصلی اما بهتر از همه سوئیچهای دیگر. این دستور اولویت پایه سوئیچ را بدون توجه به مقدار اولویت فعلی روت فعلی روی ۲۸۶۷۲ تنظیم میکند.
مقاله پیشنهادی“با NetBackup بر هجوم اجتنابناپذیر باجافزار غلبه کنید”
به عنوان مثال، در شکلهای قبلی، SW1 سوئیچ روت بود و همانطور که در دستورات مختلف نشان داده شده است، هر سه سوئیچ به طور پیش فرض از اولویت پایه ۳۲۷۶۸ استفاده میکنند. مثال زیر پیکربندی را نشان میدهد که SW2 را روت اصلی و SW1 را ثانویه میکند، فقط برای نشان دادن حرکت نقش از یکی به دیگری. این دستورات باعث میشود که SW2 دارای اولویت پایه ۲۴۵۷۶ و SW1 دارای اولویت پایه ۲۸۶۷۲ باشد.
خروجی دو فرمان نمایش به وضوح به مقادیر اولویت حاصل در هر سوئیچ اشاره میکند. ابتدا، فرمان show spanning-tree bridge اطلاعات BID سوئیچ محلی را فهرست میکند، در حالی که فرمان show spanning-tree root BID روت، به علاوه هزینه روت و پورت روت سوئیچ محلی را فهرست میکند (با فرض اینکه سوئیچ روت نیست). بنابراین، SW1 BID خود را با اولویت ۲۸۶۸۲ با دستور show spanning-tree bridge فهرست میکند. هنوز در SW1، خروجی اولویت روت را به عنوان ۲۴۵۶۸ در VLAN 10 فهرست میکند که به عنوان پایه ۲۴۵۶۷ به علاوه ۱۰ برای VLAN 10، با دستور show spanning-tree root فهرست میشود.
توجه داشته باشید که میتوانید تنظیمات اولویت را به طور خاص پیکربندی کنید. SW1 میتوانست از دستور spanning-tree vlan 10 priority 28672 و SW2 از دستور spanning-tree vlan 10 priority 24576 استفاده کند. در این مورد خاص، هر دو گزینه منجر به یک عملیات STP میشوند.