جلوگیری از Loop های لایه 2 ای در سوئیچ
در این مقاله گام هایی عملی برای کاهش loop های لایه 2 ای در کاتالیست های 6500 بر میداریم. پیش از اینکه وارد بحث مشخص بر روی این سوئیچ ها شویم، نگاهی به مفهوم loop در لایه 2 می اندازیم. هنگامی که بیش از یک مسیر ارسال،ُ میان دو سوئیچ از شبکه وجود داشته باشد، loop در لایه 2 اتفاق خواهد افتاد. هنگامی که یک سوئیچ فریمِ broadcast را دریافت می کند، آن را بر روی همه پورت های trunk و access خود می فرستد. در حضور loop، هنگامی که سوئیچ های شبکه فریم های broadcast را بر روی همه پورت های خود ارسال می کنند، منجر به پدیده تکثیر نامحدود فریم های broadcast به دام افتاده در این loop می شود. این پدیده به نام broadcast storm شناخته می شود.
برای خواندن ادامه مقاله به ادامه مطلب مراجعه نمایید.
اشباع پهنای باند و استفاده بیش از حد از CPU از جمله اثرات حضور حجم بالای فریم های broadcast در شبکه است. Broadcast storm ، شبکه را به وضعیتی غیر قابل استفاده خواهد برد و در مواردی خاص، ممکن است که ادمین شبکه توانایی دسترسی به دستگاه ها را از طریق کنسول از دست بدهد.
پروتکل STP تضمین می کند که در توپولوژی های لایه 2 loop اتفاق نخواهد افتاد. با وجود استفاده از STP ، برخی از شرایط نظیر اشتباهات سیم بندی ، هاست های کانفیگ نشده، اشتباهات در کانفیگ سوئیچ و از دست رفتن بسته های BPDU کماکان می توانند loop لایه 2 ایی ایجاد کنند.
خطاهای انسانی از عواملی هستند که با وجود طراحی مناسب شبکه می توانند بر روی وضعیت شبکه شما تاثیرگذار باشند. ضروری است که نگاهی به آینده داشته باشید و از خود بپرسید که چه مسائلی ممکن است پیش در شبکه شما پیش آید. آیا شبکه من در صورت رخداد loop در لایه 2 قادر به تحمل شرایط پیش آمده، خواهد بود؟ در صورتی که پاسخ شما نه است یا از آن اطمینان ندارید بهتر است که به دنبال راهکاری باشید.
شبیه سازی loop در لایه 2
چهار سوئیچ در شبکه به گونه ای طراحی شده اند که loop لایه 2 در آن شبیه سازی شود. VLAN 10 برای شبیه سازی ارتباط میان کامپیوترهای user ایجاد شده است.
کانفیگ زیر بر روی همه سوئیچ ها اجرا شده است تا loop لایه 2 ایی ، به طور ویژه spanning tree loop بر روی VLAN 10 ایجاد شود.
Distribution-Sw1(config)#no spanning-tree vlan 10
در حدود یک دقیقه پس از ارسال فرمان بالا، CPU utilization در هر چهار سوئیچ به 99% می رسد. برای اینکه CPU utilization فعلی سوئیچ را مشاهده کنیم از دستورات زیر استفاده می کنیم.
Distribution-Sw1# show processes cpu sorted | exclude 0.00%__0.00%__0.00%
CPU utilization for five seconds: 99%/92%; one minute: 99%; five minutes: 99%
PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process
———————— Output omitted —————————————————-
هنگامی که بهره وری به 99% می رسد، برقراری ارتباط میان کاربران PC1 و PC2 در VLAN 10 ممکن نیست. نمودار زیر، درصد بهره وری CPU را در هر 30 ثانیه نمایش می دهد.
برای اینکه ببینیم چه ترافیکی موجب افزایش درصد بهره وری از CPU شده است، لازم است که ترافیک پردازش شده از طریق control plane را مانیتور کنیم.
چگونه ترافیک control plane را مانیتور کنیم
تنها به یک (Switched Port Analyzer (SPAN ، هاستی که نرم افزار تحلیلگر پروتکل شبکه را اجرا کند و یک کابل اترنت نیاز دارید تا ترافیکی که توسط لایه کنترل catalyst 6500 پردازش می شود را تحلیل کنید.
مانیتور کردن ترافیک control plane با استفاده از SPAN
کانفیگ زیر پورت Gigabit 5/24 را به عنوان پورتی برای عبور ترافیک CPU تعریف می کند. ترافیک پردازش شده توسط (Route Processor (RP و (Switch Processor (SP بر روی پورت Gigabit 5/24 نشان داده می شود.
Distribution-Sw1(config)#monitor session 2 type local
Distribution-Sw1(config-mon-local)#source cpu rp
Distribution-Sw1(config-mon-local)#source cpu sp
Distribution-Sw1(config-mon-local)#destination interface gigabit 5/24
تنظیمات زیر برای چک کردن وضعیت پورت SPAN ساخته شده، استفاده می شود.
Distribution-Sw1# show monitor session 2
Session 2
———
Type : Local Session
Status : Admin Disabled
Egress SPAN Replication State:
Operational mode : –
Configured mode : –
باید توجه داشته باشید که پورت CPU SPAN ایجاد شده، به صورت پیش فرض در وضعیت “Admin Disabled” قرار دارد. برای اینکه آن را فعال کنید نیاز به دستور no shut بر روی SPAN دارید.
Distribution-Sw1(config)#monitor session 2
Distribution-Sw1(config-mon-local)#no shut
پس از اینکه پورت را فعال کردید، SPAN در وضعیت Admin Enabled قرار می گیرد.
Distribution-Sw1# show monitor session 2
Session 2
———
Type : Local Session
Status : Admin Enabled
Source Ports :
Both : rp,sp
Destination Ports : Gi5/24
Egress SPAN Replication State:
Operational mode : Centralized
Configured mode : Centralized (default)
گام بعدی پس از شبیه سازی loop لایه 2 ای و مانیتور کردن ترافیکهای control plane، انتخاب ابزار یا ترکیبی از ابزارها است که برای کم کردن تاثیر loop های لایه 2 استفاده می شود. ابزارهای قابل استفاده عبارتند از:
- Control Plane Policing
- Strorm control
- Hardware rate limiting
ویژگی های (Control Plane Policing (CoPP
CoPP یکی از ویژگی های امنیتی موجود در Cisco IOS روتر و سوئیچ های سیسکو است. این ویژگی به ادمین اجازه کانفیگ کردن سیاست های QoS را برای محافظت از Control Plane در برابر جمع آوری اطلاعاتی از آسیب پذیری های شبکه، حملات DoS و سناریوهای دیگری می دهد که منجر به کاهش بهره وری از منابع CPU می شوند.
از CoPP استفاده می شود تا ترافیک های اثرگذار بر بهره وری CPU را محدود کند و از ترافیک های دیگر همچون ترافیک های مسیریابی در برابر کمبود منابع CPU محافظت نماید. CoPP از دستوراتی مشابه با class-map و policy-map استفاده می کند که به هنگام کانفیگ QoS از آن استفاده می شود. فرآیند ایجاد و اعمال CoPP شامل سه مرحله زیر می شود:
- استفاده از class-map برای دسته بندی کردن ترافیک پردازش شده توسط control plane
- استفاده از policy-map برای اعمال سیاستها بر روی ترافیک های دسته بندی شده
- اعمال policy-map برای control-plane
ترافیک های مورد هدف برای دسته بندی شامل : EIGRP، HSRP، SSH، SNMP، TACACS، DHCP، IGMP و PIM می شوند. در این پروژه class-map زیر ایجاد شد:
match access-group name EIGRP
match access-group name MGMT
match access-group name PIMclass-map match-all class-igmp
match access-group name IGMPclass-map match-all class-dhcp
match access-group name DHCPip access-list extended EIGRP
permit eigrp any host 224.0.0.10
ip access-list extended HSRP
permit udp any host 224.0.0.2 eq 1985
permit udp any host 224.0.0.102 eq 1985
ip access-list extended PIM
permit pim any 224.0.0.0 0.0.0.255
ip access-list extended IGMP
permit igmp any 224.0.0.0 31.255.255.255
ip access-list extended MGMT
permit tcp any any tacacs
permit tcp any any eq 22
permit udp any any eq snmp
permit icmp any any
ip access-list extended DHCP
permit udp any eq bootpc any eq bootps
permit udp any eq bootps any eq bootpc
permit udp any eq bootps any eq bootps
نام policy-map ایجاد شده را copp-policy گذاشتیم چرا که این policy بر روی ترافیک هایcontrol plane اعمال می شود. به طور مثال برای ترافیکهای dhcp سیاست زیر ایجاد شده است.
class class-dhcp
police 32000 conform-action transmit exceed-action drop
در سیاست بالا، سوئیچ حداکثر تا 32000 bits/sec از ترافیک های DHCP را پردازش می کند هر مقداری بیش از این حد توسط سوئیچ دور ریخته می شود.
مقادیر استفاده شده برای سیاست گذاری مبتنی بر اندازه گیری ترافیک واقعی در شبکه های عملیاتی (با استفاده از پورت SPAN) است. در زیر کل لیست های سیاست گذاری به کار بسته شده بر روی ترافیک های دسته بندی شده دیده می شود.
class class-eigrp
police 32000 conform-action transmit exceed-action transmit ! protection of EIGRP traffic class class-hsrp
police 32000 conform-action transmit exceed-action transmit ! protection of HSRP trafficclass class-mgmt
police 512000 conform-action transmit exceed-action dropclass class-pim
police 32000 conform-action transmit exceed-action dropclass class-igmp
police 100000 conform-action transmit exceed-action dropclass class-dhcp
police 32000 conform-action transmit exceed-action dropclass class-default
police 2000000 conform-action transmit exceed-action drop
پس از ایجاد policy map، آن را به صورت زیر بر روی control plane اعمال می کنیم.
control-plane
service-policy input copp-policy
پس از اعمال policy map به لایه کنترل از distribution switch، همانطور که در شکل زیر دیده می شود، بهره وری cpu از 99% به طور میانگین به 92% کاهش می یابد.
با اعمال CoPP اکنون ارتباط میان کاربران موجود در VLAN 10 ممکن است. با وجود کاهش بهره وری CPU، هنوز هم از دست رفتن گاه و بیگاه بسته ها مشاهده می شود.
برای کاستن از تاثیر loop لایه 2، گام بعدی استفاده از ابزاری دیگر است. Storm control انتخابی منطقی برای گام بعدی است.
ویژگی های STORM CONTROL
ویژگی Traffic storm control، یکی از ویژگی های سوئیچ سیسکو است که برای مانیتور کردن ترافیک های broadcast، multicast و unicast استفاده می شود که در مدت یک ثانیه وارد اینترفیس مشخصی می شوند.
پس از مشاهده حجمی از ترافیک multicast و broadcast در شبکه عملیاتی شده (با استفاده از پورت SPAN)، تخمین زده شده است که 5 درصد از کل پهنای باند برای تطبیق با همه ترافیک های broadcast و multicast کافی باشد. تنظیمات زیر بر روی همه پورت های trunk در سوئیچ کانفیگ شده است تا برای storm control آستانه ای برابر با 5% ئر نظر گرفته شود.
Distribution-Sw1(config)#int range f0/21 – 24
Distribution-Sw1(config-if)#storm-control multicast level 5
Distribution-Sw1(config-if)#storm-control broadcast level 5
همانطور که در نمودار زیر می بینید، ترکیب دو ویژگی CoPP و storm control منجر به بهبود چشمگیری در بهره وری CPU خواهد شد.
ارتباط میان کاربران در VLAN 10 به صورت نرمال در خواهد آمد و بسته ای از دست نمی رود. اگرچه در حال حاضر بهره وری CPU به طور میانگین کمتر از 40% است، در فاصله های زمانی کوتاه، جهش هایی به 95% نیز در آن دیده می شود. با مشاهده ترافیک control plane، حجم بالایی از ترافیک های BPDU، VTP، STP و ARP دیده می شود. برای کاهش حجم این ترافیک ها به عنوان گام بعدی برای بهبود، ابزار Hardware Rate-Limiting انتخاب می شود که بر روی Catalyst 6500 دردسترس است.
Hardware Rate Limiting
سوئیچ های Catalyst 6500 با سوپروایزهای 720 یا 32 در خود hardware rate limiter دارند که برای محدود کردن ترافیک لایه 2 و 3 پردازش شده توسط control plane استفاده می شود. استفاده از آن بر روی بهره وری از CPU تاثیری نمی گذارد.
کانفیگ زیر بر روی سوئیچ اعمال شده است. پارامترهای انتخاب شده، مبتنی بر اندازه گیری ترافیک واقعی در شبکه های عملیاتی (با استفاده از پورت SPAN) است.
Distribution-Sw1(config)#mls rate-limit layer2 pdu 620 10 Distribution-Sw1(config)#mls qos protocol ARP police 64000 2000
دستور “mls rate-limit layer2 pdu 620 10” نرخ بسته های PDU در لایه 2 (شامل بسته های BPDU، DTP، PAgP، CDP، STP و VTP) را به حداکثر 620 بسته در هر ثانیه با 10 بسته در هر توالی محدود می کند.
دستور “mls qos protocol ARP police 64000 2000” نرخ بسته های ARP را به حداکثر 64000 bps با توالی 2000 bps محدود می کند.
همانطور که در نمودار زیر می بینید، با ترکیب ویژگی های CoPP ، Storm Control و Hardware Rate-Limiting ، بهره وری CPU به طور میانگین به 5% با حداکثر جهش 28% کاهش می یابد.
با چنین کاهشی در بهره وری از CPU، هیچ تاثیر محسوسی بر کارایی سوئیچ ها و کاربران در VLAN 10 به جز حضور loop در لایه 2 مشاهده نمی شود.
نتایج تمامی سناریوهای اجرا شده
شکل زیر نتایج تمامی سناریوهای به کار رفته را نشان می دهد.
پیشنهادهای طراحی
در زیر برخی از پیشنهادهای اولیه آمده است که می تواند به کاهش احتمال خساراتی کمک کند که loop لایه 2 با خود به همراه دارد:
- محدود کردن تعداد VLAN ها تا جایی که ممکن است
- استفاده از پروتکل UDLD و قرار دادن آن بر روی مد عملیاتی aggressive برای جلوگیری از spanning tree loop که ناشی از لینک های unidirectional است
- استفاده از ویژگی های سوییچ نظیر BGPU guard، loop guard و root guard برای محافظت در برابر تغییرات ناخواسته در توپولوژی spanning tree
- غیر فعال کردن استفاده از DTP از طریق دستور “no negotiate” بر روی پورت های سوییچ برای جلوگیری از اینکه پورت ها به طور خودکار به صورت access یا trunk تنظیم شوند
- پورت های استفاده نشده را بر روی یک VLAN جدید تنظیم کنید و administrative mode را در حالت shutdown قرار دهید تا کاربران غیرمجاز نتوانند دستگاهی را به پورت های استفاده نشده متصل نمایند
نتیجه
همانطور که نشان دادیم با ترکیب CoPP، storm control و hardware rate limiter کاهش یکنواخت و چشمگیری در بهره وری از CPU رخ خواهد داد که در اثر حضور loop لایه 2 در شبکه افزایش یافته بود. پارامترهای استفاده شده به عنوان حدآستانه در این سه ویژگی، از طریق اندازه گیری 72 ساعته ی ترافیک های control plane در یک شبکه عملیاتی شده به دست آمده است. نتایج از طریق تستهای انجام شده در محیط آزمایشگاهی به دست آمده اند.
حتی در یک شبکه با طراحی مناسب نیز ممکن است با loop لایه 2 مواجه شوید که به دلیل اشتباهات در سیم بندی، اشتباهات در کانفیگ سوییچ و از دست دادن بسته های BPDU رخ داده است. از طریق پیاده سازی ابزارهایی که در این مقاله معرفی شده اند، شما می توانید از فشار بیش از حد بر catalyst 6500 در حضور loop لایه 2 جلوگیری کنید.
منابع
1. Protecting the Cisco Catalyst 6500 Series Switches Against Denial-Of-Service Attacks
- (Configuring Control Plane Policing (CoPP
http://www.cisco.com/en/US/prod/collateral/switches/ps5718/ps708/white_paper_c11_553261.html
- Protecting Cisco Catalyst 6500 Series Switches Using Control Plane Policing, Hardware Rate Limiting, and Access-Control Lists
http://www.cisco.com/en/US/prod/collateral/switches/ps5718/ps708/white_paper_c11_553261.html
- Configuring Traffic-Storm Control