چرا لینکهای افزونه هم ضروری و هم خطرناک هستند
اتصال سوئیچها، که پیشتر در این مجموعه بحث شد، با فقط یک لینک واحد بین آنها یک نقطه شکست واحد ایجاد میکند — اگر آن لینک قطع شود، اتصال بین سوئیچها کاملاً از دست میرود. افزودن یک لینک دوم و افزونه این مسئله قابلیتاطمینان را حل میکند، اما یک مسئله جدی جدید معرفی میکند: یک Layer 2 Loop (حلقه لایه ۲).
چرا حلقهها در لایه ۲ فاجعهبارند
برخلاف یک بسته IP، که شامل یک فیلد Time to Live (TTL) است که در نهایت منقضی میشود و یک بسته در حلقه را دور میریزد، یک فریم اترنت چنین مکانیزمی ندارد. بدون پروتکل Spanning Tree، یک فریم پخش که وارد یک توپولوژی حلقهای میشود بهطور نامحدود میچرخد، و بهطور مکرر از هر پورت سوئیچ تکثیر و دوباره سیلاب میشود.
پیشرفت طوفان پخش بدون STP:
۱. یک فریم پخش وارد حلقه میشود
۲. سوئیچ A آن را از همه پورتها سیلاب میکند،
شامل لینک افزونه به سوئیچ B
۳. سوئیچ B آن را دوباره از همه پورتها سیلاب میکند،
شامل بازگشت بهسمت سوئیچ A
۴. این بهطور نمایی تکرار میشود، و تمام
پهنای باند موجود را در چند ثانیه مصرف میکند
پیامد اضافی: بیثباتی جدول آدرس MAC،
چون همان آدرس MAC منبع بهنظر میرسد از چند
پورت مختلف تقریباً همزمان میرسداین شرایط، به نام Broadcast Storm (طوفان پخش)، میتواند کل یک شبکه سوئیچشده را در چند ثانیه پس از تشکیل یک حلقه کاملاً غیرقابلاستفاده کند — که جلوگیری از حلقه را به یکی از حیاتیترین عملکردهایی که هر شبکه لایه ۲ باید پیادهسازی کند تبدیل میکند.
پروتکل Spanning Tree چگونه این را حل میکند
Spanning Tree Protocol (STP) مسئله حلقه را با مسدودکردن منطقی مسیرهای افزونه در حالی که فیزیکاً متصل نگهشان میدارد، آماده برای فعالشدن خودکار اگر مسیر اصلی شکست بخورد، حل میکند. STP این را با ساخت یک توپولوژی درختی منطقی بدونحلقه روی مش فیزیکی اتصالات به دست میآورد.
گام اول: انتخاب یک Root Bridge
هر توپولوژی STP با انتخاب یک Root Bridge (بریج ریشه) واحد شروع میشود — نقطه مرجعی که هر سوئیچ دیگر بهترین مسیرش بهسمت آن را محاسبه میکند.
انتخاب root bridge بر اساس Bridge ID است:
Bridge ID = اولویت (پیشفرض 32768) + آدرس MAC
سوئیچ با کمترین Bridge ID به
root bridge تبدیل میشود — اولویت کمتر
اول برنده میشود، و آدرس MAC هر تساوی اولویت را میشکند-- تأثیرگذاری روی انتخاب root bridge با کاهش اولویت
Switch(config)# spanning-tree vlan 10 priority 4096
-- یک میانبر رایج که اولویت را بهطور خودکار
-- کمتر از root فعلی تنظیم میکند
Switch(config)# spanning-tree vlan 10 root primaryتنظیم عمدی اولویت روی یک سوئیچ خاص و بهخوبیموقعیتیافته، عمل استاندارد در شبکههای تولیدی است، چون رهاکردن کامل انتخاب root bridge به شانس (فقط بر اساس آدرس MAC) میتواند منجر به یک سوئیچ ضعیفموقعیت یا کمقدرت شود که root میشود، و مسیرهای ترافیک غیربهینه در سراسر شبکه ایجاد میکند.
گام دوم: تعیین نقشهای پورت
وقتی root bridge برقرار شد، هر سوئیچ دیگر Root Port (پورت ریشه) خودش (بهترین مسیر واحد بهسمت root، بر اساس هزینه مسیر تجمعی) و برای هر سگمنت شبکه، یک Designated Port (پورت تعیینشده) (بهترین مسیر روبهجلو از root برای آن سگمنت) را تعیین میکند. هر پورتی که نه root port است و نه designated port، یک Blocking Port (پورت مسدود) میشود — فیزیکاً متصل باقی میماند اما ترافیک معمولی را فوروارد نمیکند، و حلقه را حذف میکند.
هزینه مسیر بر اساس سرعت لینک است:
10 Mbps: هزینه 100
100 Mbps: هزینه 19
1 Gbps: هزینه 4
10 Gbps: هزینه 2
یک سوئیچ root port خودش را با یافتن
مسیر به root bridge با کمترین هزینه
تجمعی کل در سراسر همه هاپها انتخاب میکندحالتهای پورت STP
یک پورت بلافاصله به فورواردکردن ترافیک نمیپرد؛ از میان یک توالی حالت پیش میرود که برای جلوگیری از حلقههای موقت در طول همگرایی اولیه توپولوژی یا پس از یک تغییر طراحی شدهاند.
Blocking: فقط BPDU ها را دریافت میکند، ترافیک را فوروارد
نمیکند یا آدرسهای MAC را یاد نمیگیرد (تایمر حداکثر سن 20 ثانیه)
Listening: شروع به مشارکت در محاسبات STP میکند،
همچنان فوروارد یا یادگیری نمیکند (15 ثانیه)
Learning: شروع به یادگیری آدرسهای MAC میکند، همچنان
ترافیک را فوروارد نمیکند (15 ثانیه)
Forwarding: کاملاً عملیاتی، ترافیک را بهطور معمول فوروارد میکند
زمان همگرایی کل در STP کلاسیک 802.1D:
تا 50 ثانیه — یک تأخیر قابلتوجه دنیای واقعیاین زمان همگرایی کند یک محدودیت عملی بزرگ STP اصلی بود، که مستقیماً Rapid Spanning Tree Protocol (RSTP, 802.1w) سریعتر را که تقریباً بهطور جهانی در شبکههای مدرن استفاده میشود انگیزه داد، که همگرایی را در چند ثانیه بهجای دهها ثانیه از طریق یک ماشینحالت اساساً بازبینیشده و مذاکره پیشگیرانه بین سوئیچها به دست میآورد.
تأیید عملیات Spanning Tree
Switch# show spanning-tree vlan 10
VLAN0010
Spanning tree enabled protocol rstp
Root ID Priority 4096
Address 0050.56aa.1111
This bridge is the root
Bridge ID Priority 4096
Address 0050.56aa.1111
Interface Role Sts Cost Prio.Nbr Type
Gi1/0/1 Desg FWD 4 128.1 P2p
Gi1/0/2 Root FWD 4 128.2 P2p
Gi1/0/3 Altn BLK 4 128.3 P2pاین خروجی مستقیماً مفاهیم پوششدادهشده در بالا را تأیید میکند: root bridge را شناسایی میکند، اولویت خود این سوئیچ را نشان میدهد، و نقش هر پورت (Root، Desg برای تعیینشده، یا Altn برای جایگزین/مسدود) و حالت فعلیاش را فهرست میکند — مهمترین دستور واحد برای تشخیص هر حلقه لایه ۲ مشکوک یا رفتار توپولوژی غیرمنتظره.
چرا درک STP ضروری است، نه اختیاری
Spanning Tree بهطور پیشفرض بهطور خودکار روی سوئیچهای سیسکو اجرا میشود، و بسیاری مدیران هرگز صراحتاً آن را پیکربندی نمیکنند — اما درک دقیق اینکه انتخاب root bridge، نقشهای پورت، و حالتهای پورت چگونه کار میکنند برای دو دلیل حیاتی ضروری است: طراحی درست توپولوژیهای افزونه که بهطور قابلپیشبینی failover میکنند، و تشخیص سریع مسائل اتصال متناوب و سخت-برای-بازتولید که وقتی STP بهطور غیرمنتظره رفتار میکند رخ میدهند، مانند پس از اینکه یک سوئیچ نادرستپیکربندیشده یا معیوب به یک توپولوژی در غیر این صورت پایدار معرفی میشود.