یکی از آزاردهندهترین مشکلاتی که مدیران شبکه با آن مواجه میشوند، ایجاد Loop در سوئیچ سیسکو (Cisco Switch Loop) است. این مشکل میتواند در عرض چند ثانیه باعث افزایش شدید ترافیک Broadcast، اشغال کامل CPU سوئیچ، کند شدن شبکه، قطع ارتباط کاربران و حتی از کار افتادن کل زیرساخت شود. در بسیاری از سازمانها خاموش کردن شبکه برای پیدا کردن لوپ امکانپذیر نیست؛ زیرا توقف سرویسها باعث خسارت مالی و اختلال در فعالیت کاربران میشود.
خبر خوب این است که در اغلب موارد میتوان بدون خاموش کردن شبکه، محل ایجاد Loop را شناسایی کرد. سوئیچهای سیسکو ابزارها و دستورات متعددی برای بررسی وضعیت پورتها، میزان Broadcast، آدرسهای MAC و پروتکل STP در اختیار مدیر شبکه قرار میدهند که با استفاده از آنها میتوان منبع Loop را پیدا کرد.
در این مقاله به صورت کاملاً عملی بررسی میکنیم که چگونه Loop را بدون قطع کردن شبکه شناسایی کنیم، چه دستوراتی در Cisco IOS بیشترین کاربرد را دارند و چگونه از وقوع مجدد این مشکل جلوگیری کنیم.
Loop زمانی ایجاد میشود که بین دو یا چند سوئیچ، بیش از یک مسیر فعال لایه دوم (Layer 2) وجود داشته باشد و مکانیزم جلوگیری از لوپ به درستی عمل نکند یا غیرفعال باشد. در چنین شرایطی فریمهای Ethernet به صورت بیپایان در شبکه گردش میکنند و باعث موارد زیر میشوند:
قبل از اینکه به سراغ پیدا کردن Loop بروید باید مطمئن شوید که واقعاً با لوپ مواجه هستید.
رایجترین علائم عبارتند از:

اولین قدم، بررسی وضعیت پردازنده سوئیچ است.
دستور:
show processes cpu sorted
اگر مصرف CPU به صورت مداوم بالای 70 یا 80 درصد باشد و فرآیندهای مربوط به Interrupt یا STP حجم زیادی از CPU را مصرف کنند، احتمال وجود Loop زیاد است.
بهترین دوست شما هنگام پیدا کردن Loop، پروتکل Spanning Tree است. دستور:
show spanning-tree
موارد زیر را بررسی کنید:
اگر تعداد Topology Change به سرعت افزایش پیدا کند، معمولاً Loop یا ناپایداری لینک وجود دارد. برای مشاهده جزئیات:
show spanning-tree detail
به این قسمت دقت کنید:
Number of topology changes
اگر این عدد هر چند ثانیه افزایش پیدا کند، باید به دنبال لوپ باشید.
دستور بسیار مهم:
show interfaces counters
یا
show interfaces counters errors
همچنین:
show interfaces
به این موارد دقت کنید:
اگر یک پورت حجم بسیار بیشتری از Broadcast نسبت به سایر پورتها داشته باشد، احتمالاً Loop از همان مسیر ایجاد شده است.
یکی از بهترین روشهای پیدا کردن لوپ بررسی تغییرات جدول MAC است. دستور:
show mac address-table
اگر مشاهده کنید یک MAC Address مدام بین دو پورت جابهجا میشود، احتمال وجود Loop بسیار زیاد است. برای بررسی MAC خاص:
show mac address-table address xxxx.xxxx.xxxx
اگر هر بار دستور را اجرا کنید و MAC روی پورت دیگری ظاهر شود، به اصطلاح MAC Flapping رخ داده است.
سوئیچ سیسکو معمولاً هنگام ایجاد Loop هشدارهایی ثبت میکند. دستور:
show logging
به دنبال پیامهایی مانند:
MACFLAP_NOTIF
SPANTREE
LOOP
Topology Change
STP
BPDU
وجود مکرر این پیامها معمولاً نشاندهنده وجود لوپ است.
گاهی Loop روی لینکهای بین سوئیچها ایجاد میشود. دستور:
show interfaces trunk
موارد زیر را بررسی کنید:
اشتباه در تنظیمات Trunk یکی از دلایل رایج ایجاد لوپ است.
اگر EtherChannel به درستی تشکیل نشده باشد، ممکن است Loop ایجاد شود. دستور:
show etherchannel summary
اگر مشاهده کردید یکی از لینکها مستقل (Individual) شده است، احتمال بروز Loop وجود دارد.
دستور:
show interfaces gigabitEthernet 1/0/10
به این قسمتها دقت کنید:
اگر نرخ دریافت بسته بسیار بیشتر از حد معمول باشد، آن پورت باید بررسی شود.
دستور:
show mac address-table dynamic
اگر صدها یا هزاران MAC در مدت کوتاهی وارد جدول شوند یا مدام جابهجا شوند، تقریباً مطمئن هستید که لوپ رخ داده است.
اگر بخواهید بدون قطع شبکه علت دقیق را پیدا کنید، بهترین راه استفاده از Port Mirroring است. نمونه تنظیم:
monitor session 1 source interface Gi1/0/10
monitor session 1 destination interface Gi1/0/24
سپس با نرمافزارهایی مانند Wireshark میتوانید مشاهده کنید:
این روش یکی از دقیقترین راهکارها برای تشخیص محل ایجاد Loop است.
اگر از قبل Storm Control فعال باشد، پیدا کردن Loop بسیار سادهتر خواهد بود. بررسی تنظیمات:
show storm-control
در صورت فعال بودن، سوئیچ میتواند هنگام افزایش غیرعادی Broadcast هشدار دهد یا حتی میزان ترافیک را محدود کند تا کل شبکه از کار نیفتد.
گاهی علت لوپ ، اتصال اشتباه بین دو سوئیچ یا اتصال یک کابل به همان سوئیچ است. بررسی همسایهها:
show cdp neighbors detail
یا
show lldp neighbors
اگر توپولوژی نمایشدادهشده با مستندات شبکه مطابقت نداشته باشد، ممکن است یک اتصال اشتباه عامل Loop باشد.
در عمل، بهترین روش این است که اطلاعات چند دستور را کنار هم قرار دهید:
تقاطع نتایج این بررسیها معمولاً شما را مستقیماً به پورتی میرساند که عامل Loop است، بدون اینکه نیاز باشد سوئیچ یا کل شبکه را خاموش کنید.
پس از شناسایی پورت مشکلدار:
بهترین راه، پیشگیری است. پیشنهاد میشود قابلیتهای زیر را روی سوئیچهای سیسکو فعال کنید:
RSTP سریعتر از STP کلاسیک مسیرهای حلقه را شناسایی و مسدود میکند و زمان بازیابی شبکه را نیز کاهش میدهد.
فعال کردن PortFast روی لینکهای بین سوئیچها میتواند خطر ایجاد Loop را افزایش دهد. این قابلیت فقط باید روی پورتهایی که به کلاینتها متصل هستند استفاده شود.
BPDU Guard در صورت دریافت BPDU روی پورتهای Access، آن پورت را به حالت Err-Disable میبرد و از ایجاد حلقه جلوگیری میکند.
Loop Guard از Forward شدن اشتباه پورتها در صورت از دست رفتن BPDU جلوگیری کرده و احتمال ایجاد Loop را کاهش میدهد.
در لینکهای فیبر نوری، UDLD میتواند لینکهای یکطرفه (Unidirectional) را شناسایی کرده و قبل از ایجاد Loop آنها را غیرفعال کند.
Storm Control با محدود کردن ترافیک Broadcast، Multicast و Unknown Unicast مانع از تبدیل یک Loop کوچک به قطعی گسترده شبکه میشود.
ثبت مسیر کابلها، لینکهای Trunk، EtherChannelها و تجهیزات متصل، احتمال ایجاد اتصال اشتباه و حلقههای ناخواسته را به شکل محسوسی کاهش میدهد.
Loop یکی از خطرناکترین مشکلات شبکههای لایه دوم است و در صورت عدم تشخیص بهموقع میتواند کل شبکه را از دسترس خارج کند. خوشبختانه در سوئیچهای سیسکو ابزارهای قدرتمندی برای شناسایی این مشکل وجود دارد و در اغلب موارد میتوان بدون خاموش کردن شبکه، منبع ایجاد Loop را پیدا کرد.
ترکیب بررسی Spanning Tree، جدول MAC Address، شمارندههای اینترفیس، لاگهای سیستم، وضعیت Trunk و EtherChannel به همراه مانیتورینگ ترافیک با SPAN، سریعترین و دقیقترین روش برای یافتن Loop است. همچنین فعالسازی قابلیتهایی مانند RSTP، BPDU Guard، Loop Guard، UDLD و Storm Control نقش مهمی در پیشگیری از بروز مجدد این مشکل دارد و پایداری شبکه را به شکل قابلتوجهی افزایش میدهد.