پروتکل Spanning Tree: جلوگیری از حلقه در شبکه‌های سوئیچ‌شده

لینک‌های فیزیکی افزونه بین سوئیچ‌ها تحمل‌پذیری خطا فراهم می‌کنند اما حلقه‌های لایه ۲ ایجاد می‌کنند که می‌توانند کل شبکه را در چند ثانیه از کار بیندازند. این مقاله توضیح می‌دهد چرا حلقه‌ها در شبکه‌های سوئیچ‌شده فاجعه‌بارند، پروتکل Spanning Tree چگونه یک root bridge انتخاب می‌کند و مسیرهای افزونه را برای جلوگیری از آن‌ها مسدود می‌کند، و دستورات ضروری برای تأیید عملیات STP روی یک سوئیچ سیسکو را پوشش می‌دهد.

پروتکل Spanning Treeانتخاب Root Bridgeحالت‌های پورت STP

~6 دقیقه مطالعه · آخرین به‌روزرسانی ۱۸ شهریور ۱۴۰۵

چرا لینک‌های افزونه هم ضروری و هم خطرناک هستند

اتصال سوئیچ‌ها، که پیش‌تر در این مجموعه بحث شد، با فقط یک لینک واحد بین آن‌ها یک نقطه شکست واحد ایجاد می‌کند — اگر آن لینک قطع شود، اتصال بین سوئیچ‌ها کاملاً از دست می‌رود. افزودن یک لینک دوم و افزونه این مسئله قابلیت‌اطمینان را حل می‌کند، اما یک مسئله جدی جدید معرفی می‌کند: یک 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 به‌طور غیرمنتظره رفتار می‌کند رخ می‌دهند، مانند پس از اینکه یک سوئیچ نادرست‌پیکربندی‌شده یا معیوب به یک توپولوژی در غیر این صورت پایدار معرفی می‌شود.

نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

عیب‌یابی سیستماتیک شبکه: یک روش‌شناسی که همه‌چیز را به هم پیوند می‌دهد

هر پروتکل و فناوری‌ای که در سراسر این مجموعه پوشش داده شد فقط زمانی مفید است که یک مسئله شامل آن واقعاً بتواند تحت فشار دنیای واقعی به‌طور کارآمد تشخیص و رفع شود. این مقاله یک روش‌شناسی عیب‌یابی سیستماتیک ساخته‌شده حول لایه‌های OSI ارائه می‌دهد، اعمالش روی یک مسئله اتصال واقع‌بینانه را مرور می‌کند، و نشان می‌دهد دستورات تأیید خاصی که در سراسر این کل مجموعه پوشش داده شدند چگونه در یک فرآیند تشخیصی ساختاریافته جا می‌گیرند.

ادامه

NETCONF، YANG، و پایتون: پیکربندی برنامه‌ای شبکه در مقیاس

REST API ها و فرمت‌های JSON/YAML که پیش‌تر در این مجموعه پوشش داده شدند یک رویکرد به اتوماسیون شبکه را نشان می‌دهند، اما NETCONF و YANG یک جایگزین ساختاریافته‌تر و مبتنی‌بر-استاندارد فراهم می‌کنند که به‌طور خاص برای پیکربندی دستگاه شبکه ساخته شده. این مقاله توضیح می‌دهد چه چیزی NETCONF را از یک REST API ساده متمایز می‌کند، اینکه مدل‌های YANG چگونه دقیقاً تعریف می‌کنند داده پیکربندی چگونه به‌نظر می‌رسد را پوشش می‌دهد، و استفاده از پایتون برای تعامل برنامه‌ای با دستگاه‌های شبکه را مرور می‌کند.

ادامه

اصول IPsec VPN: امن‌سازی ترافیک در سراسر شبکه‌های نامورد‌اعتماد

اتصال دو سایت در سراسر اینترنت عمومی ترافیک را در معرض رهگیری قرار می‌دهد مگر اینکه به‌درستی رمزگذاری شود، و IPsec چارچوب استانداردی برای ساخت تونل‌های امن و احراز‌هویت‌شده بین سایت‌ها فراهم می‌کند. این مقاله فرآیند مذاکره دومرحله‌ای IKE را توضیح می‌دهد، تمایز بین پروتکل‌های AH و ESP را پوشش می‌دهد، پیکربندی یک VPN سایت-به-سایت پایه IPsec را مرور می‌کند، و دستورات تأیید ضروری را پوشش می‌دهد.

ادامه

اصول MPLS: توضیح سوئیچینگ برچسب

مسیریابی IP سنتی نیازمند این است که هر روتر در طول یک مسیر یک جستجوی کامل جدول مسیریابی روی هر بسته انجام دهد، اما MPLS رویکردی اساساً متفاوت را با گرفتن آن تصمیم فوروارد‌کردن یک‌بار و متصل‌کردن یک برچسب ساده که هر روتر بعدی می‌تواند به‌جای آن استفاده کند اتخاذ می‌کند. این مقاله مفهوم اصلی سوئیچینگ-برچسب را توضیح می‌دهد، اینکه پروتکل توزیع برچسب چگونه جداول فوروارد‌کردن برچسبی که این را ممکن می‌کنند می‌سازد را مرور می‌کند، و بهره‌های عملی‌ای که MPLS در شبکه‌های ارائه‌دهنده واقعی فراهم می‌کند را پوشش می‌دهد.

ادامه

Route Reflector و Confederation های BGP: مقیاس‌دهی iBGP فراتر از Full Mesh

نیازمندی full-mesh iBGP، که به‌طور مختصر پیش‌تر در این مجموعه ذکر شد، با رشد یک سیستم خودمختار به یک مسئله جدی مقیاس‌دهی تبدیل می‌شود، که نیازمند تعدادی جلسه است که به‌طور درجه‌دوم با تعداد روتر افزایش می‌یابد. این مقاله دقیقاً توضیح می‌دهد چرا full mesh مقیاس‌پذیر نیست، اینکه route reflector ها چگونه این را با شل‌کردن قوانین معمول انتشار-مسیر BGP حل می‌کنند مرور می‌کند، و confederation ها را به‌عنوان یک رویکرد جایگزین که یک AS واحد را به سیستم‌های خودمختار زیرمجموعه کوچک‌تر تقسیم می‌کند پوشش می‌دهد.

ادامه

بررسی عمیق انواع ناحیه OSPF: Stub، Totally Stubby، و NSSA

طراحی OSPF چندناحیه‌ای پایه، که پیش‌تر در این مجموعه پوشش داده شد، از قبل اندازه پایگاه‌داده را با نگه‌داشتن LSA های جزئی نوع ۱ و ۲ محلی به ناحیه خودشان کاهش می‌دهد، اما انواع ناحیه تخصصی OSPF فراتر می‌روند، و به‌طور خاص LSA های خارجی نوع ۵ را هدف قرار می‌دهند. این مقاله انواع LSA که باید برای ساخت هر نوع ناحیه تخصصی سرکوب شوند را توضیح می‌دهد، پیکربندی نواحی stub، totally stubby، و not-so-stubby را مرور می‌کند، و مبادلات خاصی که هر انتخاب طراحی شامل می‌شود را پوشش می‌دهد.

ادامه