CCNPآموزش شبکه

معرفی spanning tree protocol یا به اختصار STP – سیسکو CCNP Switch

آموزش سیسکو CCNP

STP یا Spanning tree protocol | امکان ایجاد مسیر redundant در شبکه های لایه 3 با استفاده از routing protocol ها امکان پذیر است و این قضیه به صورت اولویت هایی که تعیین میگردد قابل تعریف می باشد.

توجه داشته باشید forwarding در سوئیچ های لایه 3 از طریق لایه 2 انجام میشود ولی انتخاب مسیر با استفاده از لایه 3 صورت میگیرد.

در شبکه های لایه 2 که مسیر پشتیبان از یک مبدا به مقصد مشخص توسط routing امکان پذیر نمیباشد، پروتکل stp کار را برای ما آسان کرده و امکان ارائه مسیر جایگزین مسیر اصلی در یک ارتباط بین مبدا و مقصد را فراهم میسازد.

برای شفافیت بیشتر به مثال زیر توجه کنید:

STP یا Spanning tree protocol
STP یا Spanning tree protocol

در شکل بالا تصور کنید بسته دیتا مورد نظر شما از سوئیچ D به سوئیچ B برسد ، جهت برقراری این ارتباط مسیر شماره 1 و شماره 2 برای این ارتباط امکان پذیر است ولی از این جهت که loop در شبکه اتفاق میافتد پروتکل  stp ارتباط بین سوئیچ A  و B را به حالت  غیر فعال تبدیل میکند تا بسته شما از طریق ارتباط شماره 1 به مقصد برسد.

زمانی که ارتباط بین سوئیچ C و B به هر دلیلی قطع شد بسته شما از مسیر شماره 2 و از طریق سوئیچ  A به مقصد میرسد.

قطعا کار با سوئیچ های لایه 3 بسیار بهتر از لایه 2 می باشد ولی هزینه بالاتری نیز خواهد داشت. ایجاد این بستر پشتیبان از طریق پروتکل stp در یک شبکه لایه 2 فراهم گردیده که در ادامه به بررسی بیشتر این پروتکل میپردازیم.

نحوه عملکرد پروتکل spanning tree

همانطور که در مثال بالا ملاحظه فرمودین، پروتکل stp جهت جلوگیری از بروز loop در شبکه به صورت اتوماتیک یکی از پورتهای موجود را با استفاده فرمول هزینه انتخاب بهترین مسیر، به حالت Blocking یا standby در میاورد.

پروتکل stp با استفاده از ارسال بسته های BPDU هر 2 ثانیه یک بار، مسیر هایی که باعث loop در شبکه میشوند را تشخیص داده و پورت مورد را غیرفعال مینماید همچنین ممکن است تغییرات فیزیکی صورت گرفته در شبکه باعث فعال شدن پورت غیر فعال گردد.

انواع پکت های BPDU

بسته های BPDU در spanning tree دو مدل هستند ۱- Configuration BPDU  و ۲- Topology Change Notification (TCN) BPDU

  1. Configuration BPDU برای انجام محاسبات در پروتکل spanning tree انجام میشود.
  2. Topology Change Notification (TCN) BPDU این نوع پکت برای اعلام تغییرات ایجاد شده در توپولوژی شبکه به کار می رود.

محتوای پیام های BPDU را در زیر مشاهده میکنید:

محتوای پیام های BPDU
محتوای پیام های BPDU

Root Bridge چیست؟

به صورت کلی همه سوئیچ های موجود در شبکه جهت بهره مندی از توپولوژی loop-free بایستی یک سوئیچ را به عنوان root bridge راهنما انتخاب کنند. تمامی سوئیچ ها در شبکه دارای یک bridge ID میباشند که آن را برای یکدیگر ارسال میکنند و با توجه به فرمول Cost اولویت آنها در شبکه تشخیص داده شده و در نهایت یک سوئیچ را به عنوان root Bridge انتخاب میکنند.

یک سوئیچ سیسکو به محض روشن شدن و اتصال به شبکه خود را root bridge در نظر گرفته و پکت BPDU را برای همه سوئیچ ها ارسال میکند. اولویت  پکت BPDU دریافتی از سوئیچهای دیگر ر ا با  خود مقایسه میکند و اگر اولویت خودش پایین تر بود سوئیچ مقابل را به صورت root bridge انتخاب میکند.

محتوی Bridge ID

در واقع bridge ID حاوی 8 بایت دیتا میباشد که 2 بایت آن را  Bridge Priority و 6 بایت آن را  MAC Address تشکیل میدهد.

توجه داشته باشید Bridge ID عددی بین 0 تا 65535 که به صورت پیش فرض 32768 در تمامی سوئیچ های سیسکو تعریف گردیده است.

در اینجا هر زمان نام Bridge آورده شد منظور همان Switch میباشد.

Root Port چیست؟

پورتی از یک سوئیچ سیسکو  که حهت برقراری ارتباط با root bridge مورد استفاده قرار میگیرد را root port می نامند. درواقع برای برقراری ارتباط با root bridge تنها از یک مسیر استفاده میشود و انتخاب root port مناسب به cost مسیرهای موجود برای دستیابی به root bridge بستگی دارد.

به شکل زیر توجه کنید:

Root Port
Root Port

برای برقراری ارتباط از سوئیچ B و C با سوئیچ root bridge که سوئیچ A میباشد دو مسیر وجود دارد، مسیر اول دارای cost 4 میباشد ولی مسیر دوم cost 8 را به خود اختصاص داده است. پس مسیرهایی که cost کمتری دارند به عنوان root port بر روی هر سوئیچ سیسکو مشخص میگردد.

نحوه محاسبه cost براساس Bandwith لینک های ارتباطی بین سوئیچ ها میباشد و مطابق جدول زیر تعیین میگردد، طبیعی است cost کمتر به عنوان انتخاب بهتر در نظر گرفته میشود.

spanning tree protocol cost table 1مقدار cost در بسته های BPDU نوشته میشود  و در حافظه سوئیچ ذخیره میشود و برای سوئیچ های دیگر ارسال میشود.

stp capture
stp capture

 Designated Ports چیست؟

همانطور که مثال بالا دیدین ، انتخاب root port ها انجام شد و اکنون نوبت انتخاب  Designated Ports  ها است. تصور کنید بین سوئیچ B و C  یک سگمت از شبکه موجود باشد که حاوی چندین دستگاه کامپیوتر متصل به شبکه است. این کامپیوترها برای ارتباط با root bridge از کدام مسیر استفاده میکنند؟ از سوئیچ B  به سوئیچ  A میرسند  یا از طریق سوئیچ C ؟  انتخاب Designated Ports برای همین هدف تعریف گردیده است. در واقع کامپیوتری که مابین سوئیچ B و C قرار گرفته از طریق Designated Ports پکت های خود را به سوئیچ A ارسال میکند.

نحوه انتخاب Designated Ports

کامپیوتری که مابین سوئیچ B و C قرار گرفته، این بار هم از طریق محاسبه هزینه لینک های ارتباطی محاسبات cost مسیر را انجام داده و آن پورتی که کمترین هزینه را در مسیر دارد به عنوان Designated Ports انتخاب میشود.

سه مورد در انتخاب Designated Ports که به اولویت بیان میگردد، هرکدام زودتر اولویت را مشخص کردند دیگر موارد بعدی بررسی نمیشود ،این 3 مورد عبارتند از :

  1. انتخاب بر اساس Cost
  2. انتخاب بر اساس Birdge ID
  3. انتخاب براساس Port ID
Designated Ports
Designated Ports

انواع وضعیت های پروتکل spanning tree

تا الان نحوه عملکرد پروتکل stp و انواع وضعیت پورت ها در این پروتکل صحبت کردیم، اینکه ببنیم در حال حاضر پروتکل spanning tree در چه وضعیتی میباشد و نحوه عملکرد آن را بررسی نماییم نیاز است تا به معرفی وضعیت های مخلتف در stp بپردازیم:

disabled : در این حالت پورت مورد نظر به صورت خاموش درآمده و غیر فعال میباشد که یک وضعیت کلی است و میتواند جزء وضعیت های STP نباشد.

Blocking : لحظه اول که پورت فعال میشود این وضعیت را دارد و  هیچ گونه دیتایی به سوئیچ وارد و نه خارج میشود و حتی mac address ها را هم در خود ذخیره نمیکند. توجه داشته باشید که در این وضعیت  پکت های BPDU به سوئیچ میرسد ولی ارسال نمیشوند تا در صورت تغییر وضعیت در شبکه وضعیت این پورت نیز تغیرر کند.

Listening : در این وضعیت سوئیچ آماده انتخاب پورت خود به صورت root port و یا Designated Ports میباشد، در این وضعیت BPDU ها هم ارسال و هم دریافت میشود و لی  باز هم دیتا  رد و بدل نمیشود، حدود 15 ثانیه زمان انتظار در این وضعیت میباشد.

Learning : بعد از وضعیت Listening به مدت 15 ثانیه پورت در وضعیت leraning قرار  میگیرد که به این مدت زمان forward delay گفته میشود. در این وضعیت علی رغم ارسال و دریافت BPDU ها ، mac address ها هم در cam table ذخیره میشوند ولی باز هم دیتایی ارسال و یا دریافت نمیشود.

Forwarding : در این وضعیت پورت مورد نظر به طور کامل تاییت وضعیت نموده و آماده ارسال و دریافت دیتا در شبکه است، توجه داشته باشید که تا رسیدن به وضعیت Forwarding حدودا 30 ثانیه زمان لازم است.

دستور نمایش وضعیت پروتکل spaning tree

مطابق شکل زیر بررسی وضعیت stp را با دستور  بررسی میکنیم :

Switch# show spanning-tree interface type member/module/number

spanning tree protocol statusمعرفی انواع پروتکل Spanning Tree :

CST یا Common Spanning Tree: دراین مدل یک نمونه (instance) از stp تمامی vlan ها را پشتیبانی میکند که البته دو خاصیت بسیار خوب دارد:

  • اول اینکه stp در این حالت بسیار ساده است
  • دوم اینکه از نظر پردازشی بر روی cpu سوئیچ بار کاری اضافه ای وارد نمیکند.

توجه داشته باشید که BPDU ها در حالت cst از طریق Native VLAN به صورت untagged بر روی شبکه ارسال میشوند.

PVST یا Per-Vlan Spanning Tree : در این حالت همانطور که از نام آن مشخص است ، STP به ازای هر vlan به صورت جداگانه فعال میشود که کاربرد های بسیاری دارد. به طور مثال بر روی یکی از پورت های سوئیج ممکن است stp برا یک vlan در حالت forwarding باشد ولی برای یک vlan دیگر در حالت blocking قرار گیرد. این مدل موجب میگردد که بتوانیم load balancing را در شبکه برای لینکهای ارتباطی داشته باشیم که این مورد در cst مشاهده نمیشود.

اشکال این مدل از stp تنها این است که فقط میتواند trunking مدل ISL را که مخصوص سوئیچ های سیسکو هست، ساپورت نماید و با پروتکل dot.1q سازگار نیست. طبیعتا PVST با CST هم سازگار نیست!

+PVST یا  Per-Vlan Spanning Tree Plus : جهت برطرف کردن مشکلاتی که در PVST مطرح شد +PVST طراحی گردید و به عنوان یک مترجم بین گروهی از سوئیچ های CST و PVST عمل میکند. زمانیکه با CST ها کار میکند به صورت Untagged ارتباط یرقرار میکند و همچنین BPDU ها به صورت Multicast ارسال میشوند تا پکت ها بتوانند از سوئیچ های CST عبور کرده و به سایر سوئیچ های شبکه برسند.

خلاصه ای از 3 مدل stp اشاره شده را در جدول زیر مشاهده میکنید:

stp types in cisco switches
stp types in cisco switches

انتخاب سوئیچ Root به صورت دستی :

همانطور که میدانید stp به صورت خودکار شروع به فعالیت در شبکه میکند و شما میتوانید تمامی انتخاب ها و تنظیمات را به عهده تنظیمات پیش فرض بگذارید.

این امر در برخی موارد مشکل ساز میشود به طور مثال در شبکه ای که شما یک سوئیچ نسبتا قوی را تهیه نموده اید و آن را از نظر فیزیکی در بخشی از شبکه قرار داده اید که میخواهید بار کاری root سوئیچ شما روی این سوئیچ مشخص قرار بگیرد پس ناچارید تا انتخاب root سوئیچ را به صورت دستی انجام دهید.

انتخاب سوئیچ Root به صورت دستی
انتخاب سوئیچ Root به صورت دستی

به مثال بالا توجه کنید، تمامی پارامترهایی که برای تعیین اولویت (priority) در انتخاب سوئیچ شبکه به عنوان root bridge موثر هستند با یکدیگر برابرند به جز پارامتر mac address .

تمامی لینک ها 1GB هستند ، تمامی Bridge ID ها یکی 32768 هستند و اینجا کوچکترین آدرس فیزیکی پورت (Mac Address) تعیین کننده انتخاب root bridge در شبکه میباشد که مشاهده میکنید Switch A1 به عنوان root انتخاب میگردد.

با این انتخاب، کامپیوتری که به سوئیچ A2 متصل است اگر قرار باشد پکت خود را به سوئیچ C1 برساند مسیر بسیار طولانی را باید پیمایش کند و البته انتخاب یک سوئیچی که در لایه Access شبکه قرار دارد یه عنوان root اصلا مناسب نیست.

مسیر بازی که شرح داده شد به صورت زیر میباشد:

stp root bridge placement cisco

روشهای تغییر Priority برای انتخاب Root Bridge

جهت انتخاب root bidge نکات زیر حائز اهمیت هستند: بهترین مکان برای قرار دادن فیزیکی سوئیچ bridge نزدیک server farm میباشد و میباست یک سوئیج دومی را جهت Backup یا Secondary برای مواقع اضطراری در نظر بگیرید.

تغییر دادن دستی Priority جهت انتخاب سوئیچ root

دستور زیر جهت تغییر priority در سوئیچ تعریف میگردد که مقدار به طور انتخابی برای vlan های مورد نظر شما در شبکه میتواند معرفی گردد، بدین صورت که سوئیچ شما برای تعدادی از vlan ها میتواند root bridge باشد و برای بقیه vlan ها نباشد.

مقدار priority هم برای تعریف stp در روش سنتی بین اعدا 0 تا 65536 میتواند باشد و در روش Extended ID بین اعداد 0 تا 61440 میتواند تعیین گردد که این بسته به سیستم عامل سوئیچ شما دارد.

Switch(config)#spanning-tree vlan vlan-list priority bridge-priority

به مثال زیر توجه کنید:

Switch(config)#spanning-tree vlan 5,100-200 priority 4096

مقدار priority در این حالت 4096 و برای vlan شماره 5 و vlan شماره 100 تا 200 مشخص شده است.

تعریف مشخص یک سوئیچ به عنوان Root و یا  Secondary

Switch(config)#spanning-tree vlan vlan-id root primary secondary } [ diameter ] diameter

پارامتر diameter که در واقع به آن قطر شبکه میگویند جهت تعریف تعداد سوئیچ های ارتباط داده شده به سوئیچ bridge و رسیدن hello پکت های BPDU ها در شبکه به کار میرود که به انتخابی در این دستور آن را مشاهده میکنید. این دستور مقدار priority سوئیچ ما را به عدد 24576 تغییر میدهد که البته از Bridge ID پیش فرض کمتر میباشد. البته این دستور به ID که روی root bridge فعلی شبکه نگاه میکند ID خودش را مقدار 4096 از آن کم میکند تا خودش تبدیل به root bridge گردد.

دستور نمایش Root Bridge ID فعلی در شبکه

برای اینکه بفهمیم Birdge ID برای Root Bridge فعلی در شبکه چه مقداری است از دستور زیر استفاده میکنیم:

Switch# show spanning-tree vlan vlan-id

دستور نمایش Root Bridge ID فعلی در شبکه
دستور نمایش Root Bridge ID فعلی در شبکه

توجه داشته باشید که بعد از انتخاب سوئیچ root در شبکه حتما root  شدن آن را با دستور show بررسی نمایید، چرا که ممکن سوئیچ قبلی که نقش root را در شبکه داشته priority پایین تری داشته و همچنان به صورت سوئیچ root در شبکه فعال مانده باشد. شکل زیر همین خطا را نشان میدهد که دلیلش اولویت بالاتر سوئیچ root فعلی میباشد.

spanning tree root bridge failجهت جلوگیری از این خطا از دستور زیر استفاده نمایید:

Switch(config)# spanning-tree vlan 100 priority 0

با این کار شما proirity را در بالاترین حالت ممکن قرار داده اید، اکنون وضعیت سوئیچ را با دستور زیر چک کنید:

show spanning-tree
show spanning-tree

اکنون مشاهده میکنید که سوئیچ شما به سوئیچ root در شبکه تبدیل شده است ولی چرا priority 100 انتخاب شده است؟! مگر ما priority را صفر در نظر نگرفتیم؟

قبلا گفتیم که هم اکنون برخی از سوئیچ های سیسکو از نوع Extended ID برای انتخاب priority استفاده میکنند یعنی مقدار priority را با مقدار شماره vlan (در مثال بالا vlan 100) جمع میزنند و مقدار priority اصلی را بدست میاورند.

Spanning-Tree Customization یا سفارشی سازی پروتکل spanning tree

همانطور که به یاد دارید اولویت ها در انتخاب مسیر در پروتکل spanning tree به ترتیب زیر میباشد:

  1. پایین ترین Bridge ID
  2. پایین ترین هزینه مربوط به مسیر رسیدن به سوئیچ root
  3. پایین ترین ارسال کننده Bridge ID
  4. پایین ترین ارسال کننده Port ID

در خصوص Bridge ID پیش از این صحبت کردیم و اینکه چطور Bridge ID پایین به ما در انتخاب سوئیچ root کمک میکند.

اکنون موارد 2 تا 4 را که در انتخاب سوئیچ root مهم هستند را بررسی مینماییم.

Tuning the Root Path Cost یا تنظیم دستی هزینه ارتباط با سوئیچ روت

همانطور که قبلا گفتیم هزینه مربوط به هر ارتباط وابسته به پهنای باند آن بوده و مطابق جدول زیر است:

spanning tree protocol cost table 1

برای تغییر دادن دستی این مقادیر میتوانید از دستور زیر استفاده نمایید :

Switch (config-if)# spanning-tree [ vlan vlan-id ] cost cost

شما میتوانید برای یک یا چند شماره vlan خاص بر روی یک پورت خاص ، cost مورد نظرتان را اعمال نمایید.

مثالی برای تغییر دادن cost در spanning tree :

Switch(config-if)# spanning-tree vlan 10 cost 2

مشاهده cost یک پورت در spanning tree با استفاده از دستور زیر :

Switch# show spanning-tree interface type member/module/number  [ cost ]

مثالی از این دستور را در زیر مشاهده میکنید:

show cost in stpTuning the Port ID

Port ID در واقع یک مقدار 16 بیتی است که 8 بیت آن را port priority و 8 بیت دیگر آن را port number مشخص میکند. مقدار port number و port priority یک مقداری است بین عدد 0 تا 255 که برای خود سوئیچ تعریف گردیده است. در مثال بالا عبارت Prio.Nbr را در یکی از ستون ها مشاهده میکنید که برای تمامی پورت ها 128.1 نمایش داده شده است. مقدار 128 به عنوان port priority و مقدار 1 به عنوان port number تعریف میگردد.

در نظر داشته باشید port number با آن شماره ای که شما در هنگام انتخاب دستور از آن استفاده میکنید متفاوت است، به عنوان مثال در شکل بالا port number برای gigabitEthernet1/0/1 شماره 1 میباشد.

دستور تعیین Port Priority

Switch(config-if)#   spanning-tree   [  vlan     vlan-list  ]   port-priority     port-priority

مثال:

Switch(config)# interface gigabitethernet 2/0/44
Switch(config-if)# spanning-tree vlan 10,100 port-priority 64

به صورت پیش فرض port priority مقدار 128 میباشد.

stp port priority
stp port priority

ایجاد تغییرات در STP Timer ها

همانطور که میدانید spanning tree از 3 مدل timer برای ارسال BPDU در شبکه استفاده میکند و بدین وسیله میتواند وضعیت پورت ها را بررسی نماید.

این سه timer مختلف عبارتند از :

  1. Hello time : به صورت پیش فرض 2 ثانیه میباشد و میتواند بین 1 تا 10 ثانیه باشد.
  2. forward time : به صورت پیش فرض 15 ثانیه هستند که یکی برای listening و یکی برای learning استفاده میشود. شما میتوانید مقدار بین 4 تا 30 ثانیه را برای این تایمر انتخای نمایید.
  3. max-age time : حداکثر زمانی که عمر پکت BPDU را تعیین میکند که به صورت پیش فرض 20 ثانیه میباشد. زمان انتخابی بین 6 تا 40 ثانیه میتواند باشد.

دستورات برای تغییر دادن timer  ها در spanning tree :

Switch(config)# spanning-tree [ vlan vlan-id ] hello-time seconds
Switch(config)# spanning-tree [ vlan vlan-id ] forward-time seconds
Switch(config)# spanning-tree [vlan vlan-id ] max-age seconds

انتخاب vlan ها در دستورات بالا به صورت انتخابی بوده و در صورتی که انتخاب نشوند، تنظیمات بر روی تمامی vlan ها و سوئیچ اعمال میشود.

تنظیم اتوماتیک Timer ها در Spanning tree

همانطور که به یاد دارید در هنگام تعریف سوئیچ به عنوان root میتوانستیم پارمتری به نام قطر شبکه (diameter) را نیز تعیین کنیم که این پارمتر باعث تنظیم شدن اتوماتیک timer ها میباشد. طبیعی است کم یا زیاد کردن قطر شبکه بایستی در رسیدن پکت BPDU به سوئیچ ها تاثیر گذار باشد و بدین جهت تمامی timer ها به جهت بالا رفتن میزان همگرایی در شبکه بایستی تغییر کنند.

دستور تعریف diameter :

Switch(config)# spanning-tree vlan vlan-list root { primary | secondary } [ diameter diameter [ hello-time hello-time ]]

مقدار diameter بین عدد 1 تا 7 سوئیچ میتواند باشد و به صورت پیش فرض 7 هاب میباشد.

دستور نمایش timer ها در spanning tree :

برای دیدن تایمر ها از دستور زیر استفاده میکنیم، به مثال زیر توجه کنید:

دستور نمایش timer ها در spanning tree
دستور نمایش timer ها در spanning tree

Redundant Link Convergence

همانطور که میدانید همیشه یک مسیر به سمت سوئیچ root در شبکه وجود دارد و بقیه لینک ها به صورت alternative منتظر قطع شدن ارتباط اصلی هستند تا در صورت fail شدن لینک اصلی جایگزین گردند.

سه روش جهت انتخاب redundant link ها وجود دارد:

1- PortFast : این حالت فقط روی سوئیچ های لایه access شبکه کاربرد دارد که به PC ها و Workstation ها متصل هستند. انتخاب این دستور جهت بالا بردن Convergence شبکه بسیار حائز اهمیت میباشد زیرا دیگر با وصل شدن یک pc به سوئیچ کل توپولوژی شبکه دستخوش تغییر نمیشود.

به صورت پیش فرض PortFast روی تمامی پورتها غیر فعال میباشد. برای تبدیل کردن تمامی پورت ها به حالت portfast از دستور زیر استفاده میکنیم:

Switch(config)# spanning-tree portfast default

برای غیر فعال کردن portfast برای یک پورت خاص از دستور زیر استفاده میکنیم:

Switch(config-if)# [ no ] spanning-tree portfast

اگر پورت متصل به PC بر روی سوئیچ portfast نباشد زمان 50 ثانیه طول میکشد تا pc به شبکه متصل شود (30 ثانیه برای listening و learning ، همچنین 20 ثانیه برای etherchannel) ، حتما دقت کنید که portfast روی پورت هایی که به سوئیچ و یا هاب متصل هستند غیر فعال گردد.

نمایش وضعیت روی پورت portfast

Switch# show spanning-tree interface type member/module/number portfast

2- UplinkFast : روی سوئیچ های access ی فعال میشود که بیشتر از یک لینک ارتباطی با سوئیچ های لایه distribution دارند. همانطور که میدانید جهت بالابردن سطح اصمینان در شبکه شما میتوانید چندین ارتباط بین سوئیچ لایه access و distribution در شبکه برقرار کنید و زمانی که یکی از لینک ها fail میشود لینک های بعدی جایگزین گردد. بسیاری از سوئیچ های catalyst سیسکو به صورت پیش فرض دو پورت uplink دارند.

Switch(config)# spanning-tree uplinkfast [max-update-rate  pkts-per-second]

زمانی که لینک اصلی قطع میشود uplinkfast به این موضوع توجه میکند که سوئیچ به وضعیت root تبدیل نشود و باعث اختلال ذر شبکه نشود و برای این کار 49152 واحد به priority و 3000 واحد به cost اضافه میکند.

همچنین کل جدول mac address هایی که در جدول cam خود نگه داری میکرده را برای سوئیچ های مجاور میفرستد تا به آنها برای شناسایی mac address ها کمک کند. نرخ ارسال CAM Table برای سوئیچ های مجاور با پارامتر max-update-rate مشخص میگردد که به صورت پیش فرض 150 پکت در هر ثانیه میباشد و میتواند عددی بین 0 تا 65535 باشد.

دستور مشاهده وضعیت uplinkfast:

uplinkfast
uplinkfast

3- BackboneFast : این حالت روی سوئیچ ها لایه core شبکه قابل اجرا میباشند. برخلاف uplinkfast این بار میخواهیم که سوئیچ را به وضعیت root ببریم و یا سوئیچ دیگری را به عنوان سوئیچ root در شبکه انتحاب نماییم. زمانی که پکت BPDU از طرف یک designated port دریافت میشود در واقع خبر از قطع یک لینک را میدهد که به صورت مستقیم به سوئیچ ما وصل نیست و اصطلاحا Indirected link ی را که قطع میشود به اطلاع سوئیچ ما میرساند.

اگر BPDU از پورتی دریافت شود که در وضعیت Block بوده اند، سوئیچ ما در ابتدا root port خود را بررسی میکند که آیا به root bridge دسترسی دارد یا خیر،  یا سایر Block پورتها را بررسی میکند که آیا به سوئیچ root دسترسی دارند.

اگر BPDU از طریق root port به سوئیچ رسیده باشد و پورت های دیگر در وضعیت Block باشند، در نظر میگیرد که هیچ اتفاقی نیافتاده است.

اگر BPDU از طریق root port به سوئیچ رسیده باشد و پورت های دیگر در وضعیت Block نباشند، این وضعیت نشان دهنده این است که مشکلی برای سوئیچ root در شبکه اتفاق افتاده است.

به صورت پیش فرض backbonefast روی تمامی سوئیچ ها غیر فعال است و برای فعال سازی و نمایش وضعیت backbonefast از دستور زیر استفاده میکنیم:

Switch(config)# spanning-tree backbonefast

spanning-tree backbonefast
spanning-tree backbonefast

مانیتورینگ پروتکل spanning tree

کلیه دستوراتی که جهت بررسی عملکرد پروتکل spanning tree به کار میرود به شرح زیر برایتان معرفی میگردد :

show spanning tree برای اینکه پارمترهای یک stp را بر روی vlan ها ببینید از این دستور استفاده کنید.

show spanning-tree detail برای اینکه پارمترهای یک stp را بر روی vlan ها با جزئیات کامل ببینید از این دستور استفاده کنید.

show spanning-tree [ vlan vlan-id ] summary اگر بخواهید تمامی پورتهایی که بر روی آنها spanning tree در حال فعالیت میباشد را ببینید از این دستور استفاده میکنید.

show spanning-tree [ vlan vlan-id ] root برای پیدا کردن root port ، root Bridge ID و root path cost از دستور فوق استفاده نمایید.

show spanning-tree  [ vlan vlan-id ]  bridge  بر روی همان سوئیچی که در حال کار میباشید میتوانید با دستور فوق root bridge id و stp timer را مشاهده کنید.

show spanning-tree interface type port اگر شما میخواهید فعالیت spanning tree را روی یک پورت خاص مشاهده کنید از دستور بالا استفاده کنید.

show spanning-tree uplinkfast دستور فوق مشاهده پورتهایی که uplinkfast روی آنها فعال هستند را نمایش میدهد.

show spanning-tree backbonefast دستور فوق مشاهده پورتهایی که backbonefast روی آنها فعال هستند را نمایش میدهد.

محافظت از spanning tree در برابر BPDU های مزاحم

همانطور که میدانید BPDU ها عامل اصلی تغییرات در توپولوژی spanning tree میباشند و تمامی تغییرات درشبکه را به سوئیچ ها اطلاع میدهند تا باعث تغییرات لازم در ساختار شبکه شوند. اما ممکن است به طور مثال شما بخواهید سوئیچ مورد نظر شما که از نظر فیریکی در مکان مناسبی قرار دارد و از لحاظ سخت افزاری وضعیت بهتری نسبت به سایر سوئیچ ها دارد ، حتی اگر تغییراتی در شبکه رخ دهد یا ممکن است شخصی در شبکه شما سوئیچ ناشناسی را متصل کند و باعث تغییرات در root port ها و root bridge شبکه گردد.

جهت جلوگیری از این اتفاقات ناخواسته دو قابلیت را جهت محافظت در سوئیچ برایتان توضیح داد که عبارتند از:

1- Root Guard

اگر شما بخواهید پورتی از سوئیچ شما پکتهای BPDU را دریافت نکند و فقط کار ارسال BPDU را انجام دهد از root guard استفاده کنید. طبیعی است در صورت عدم دریافت BPDU پروتکل spanning tree بدون هیچ تغییری به فعالیت خود ادامه میدهد.

نکته قابل توجه این است که root guard بر روی هر پورت سوئیچ به صورت جداگانه قابل اجرا است و به صورت پیش فرض بر روی تمامی پورت ها غیر فعال میباشد. با اجرای دستور root guard بر روی یک پورت خاص ، خاصیت root guard برای تمامی vlan ها بر روی همان پورت اجرا میگردد.

دستور فعال سازی root guard روی پورت سوئیچ:

Switch(config-if)#spanning-tree guard root

دستور نمایش وضعیت پورتهایی که در حالت root guard هستند :

Switch# show spanning-tree inconsistentports

توجه داشته باشید در جایی از شبکه خود که انتظار ندارید سوئیچ شما به root bridge تبدیل شود از root guard استفاده نمایید.

2- BPDU Guard

همانطور که به یاد دارید دستور portfast برای پورتهایی که از سوئیچ که به end user متصل بودند بسیار کارآمد بود و برای جلوگیری از loop در  شبکه بسیار مفید بود. زمانی که پورتی از سوئیچ سیسکو که به صورت portfast در شبکه در حال فعالیت است ،  BPDU Guard باعث میشود تا هیچ پکت BPDU ی از طریق آنها ارسال نشود.

با استفاده از این قابلیت وضعیت پورتهایی که در حالت portfast هستند هیچ وقت تغییر نمیکنند و وضعیت شبکه هم ثابت در این بخش شبکه همیشه ثابت می ماند.

BPDU Guard به صورت پیش فرض روی تمامی پورت ها غیرفعال است.

فعال کردن BPDU Guard روی سوئیچ سیسکو

با تعریف دستور زیر BPDU Guard بر روی تمامی پورتهایی از سوئیچ که به صورت portfast تعریف شده اند اعمال می گردد:

Switch(config)# spanning-tree portfast bpduguard default

برای فعال یا غیر فعال کردن BPDU Guard روی پورت مشخصی از سوئیچ  از دستور زیر استفاده کنید:

Switch(config-if)# [no] spanning-tree bpduguard enable

هیچ وقت BPDU Guard را روی پورت Uplink سوئیچ شبکه فعال نکنید

در ادامه بحث محافظت از spanning tree زمانی که انتظار داریم پکت های BPDU را بر روی سوئیچ خود دریافت کنیم ولی دریافت نمیکنیم. همانطور که میدانید اساس کار stp ارسال و دریافت BPDU ها است و اگر این عملیات دچار اختلال گردد دیگر نمیتوانیم شبکه loop free را تضمین کنیم.

برای جلوگیری از رخ دادن این وضعیت و به جهت اطمینان در ارسال و دریافت BPDU ها ، سیسکو دو راه حل را ارائه میدهد که عبارتند از :

1- Loop Guard

این قابلیت در سوئیچ های سیسکو بدین شکل عمل میکند که وقتی پورتی از سوئیچ که در حالت Root Port در حال فعالیت است ، دیگر پکت های BPDU را دریافت نمیکند ، این پورت را به حالت Block برده و هیچ پورت دیگری از سوئیچ را به حالت Root Port نمیبرد و تنها صبر میکند تا مجددا پورت Root اصلی شروع به فعالیت کند.

loop guard به صورت پیش فرض روی تمامی سوئیچ ها غیر فعال هستند.

دستور فعال کردن Loop Guard به صورت کلی برای سوئیچ های سیسکو:

Switch(config)# spanning-tree loopguard default

فعال و یا غیر فعال کردن Loop Guard بر روی یک پورت مشخص:

Switch(config-if)# [ no ] spanning-tree guard loop

توجه: برخلاف BPDU Guard که بر روی یک پورت سوئیچ به صورت کلی فعال میشود ، Loop Guard برای هر vlan به صورت جداگانه  بر روی آن پورت مشخص فعال میگردد.

2- Unidirectional Link Detection یا  (UDLD) :

این قابلیت بیشتر برای شبکه هایی که ارتباط بین آنها از طریق کابلهای فیبر نوری میباشد کاربرد دارد. زمانی که از یک لینک BPDU ارسال میشود ولی از طریق همان لینک BPDU ی دریافت نمیگردد ، در واقع لینک یک طرفه میشود ، سوئیچ ارسال کننده ممکن است لینک مورد نظر را قطع در نظر بگیرد درصورتی که اینظور نبست و فقط در جریال ارسال و دریافت BPDU اختلالی صورت گرفته است.

در این زمان frame های UDLD برای از سوئیچی که BPDU را ارسال کرده ، برای سوئیچی که BPDU ارسال نکرده فرستاده مییشود.

در جواب سوئیچ اطلاعات خودش را از طریق همین frame UDLD به سوئیچ مقابل ارسال میکند تا زنده بودن خودش را نشان دهد. با انجام این روند سوئیچ اول متوجه میشود لینک قظع نبوده و فقط اختلال موقتی در ارسال و دریافت BPDU صورت گرفته است. پکت های UDLD در لایه 2 ارسال و دریافت میشوند و این قابلیت بایستی بر روی تمامی سوئیچ هایی که میخواهند از این روند استفاده نمایند فعال شود.

زمان ارسال UDLD ها میتواند با سوئیچ های دیگر متفاوت باشد ولی بایستی جواب UDLD های دریافت شده را بدهند.

توجه: به یاد دارید که زمان Convergence در stp مدت 50 ثانیه بود پس میبایست زمان UDLD را کمتر از 50 ثانیه قرار دهید تا قبل از عوض شدن توپولوژی سوئیچ ، ارتباط با سایر سوئیچ ها چک شود.

حالت های فعالیت UDLD

1- Normal mode :

در این حالت پورت همچنان به فعالیت خود در شبکه ادامه میدهد با توجه به اینکه مطمئن نیستیم ارتباط سالم هست یا نه اما پیامی را در Syslog سوئیچ ایجاد میکند تا ما با مراجعه به آن متوجه این مشکل بشویم.

2- Aggressive mode:

در این حالت UDLD ها هر 8 ثانیه ارسال میشود تا ارتباط پورت مورد نظر را بازسازی کند در این وضعیت اگر مشکل پورت برطرف نشود پورت به حالت Errordisable میرود.

برای فعال کردن پورتی که توسط UDLD به عالت errordisable رفته از دستور زیر استفاده نمایید :

Switch# udld reset

نحوه فعال سازی UDLD

به صورت پیش فرض UDLD غیر فعال است و شما میتوانید UDLD را برای کل سوئیچ سیسکو و یا برای هر پورت به صورت جداگانه تعریف کنید:

Switch(config)# udld {enable | aggressive | message time seconds}

مدت زمان ارسال UDLD ها بین 7 تا 90 ثانیه میتواند باشد.

روی سوئیچ 3550 سیسکو زمان ارسال UDLD ها 7 ثانیه و روی سوئیچ های 4500 و 6500 سیسکو 15 ثانیه به صورت پیش فرض set شده است.

به صورت پیش فرض UDLD در حالت Normal فعال میشود مگر اینکه شما aggresive را انتخاب نمایید.

فعال و یا غیر فعال کردن UDLD برای هر پورت:

Switch(config-if)# udld {enable | aggressive | disable}

BPDU Filtering

اگر بخواهیم Spanning tree را روی پورتی غیرفعال کنیم از BPDU Filtering استفاده میکنیم، در این حالت پکت ها از پورت های مشخص شده ارسال و دریافت نمیشوند.

توجه داشته باشید اگر به صورت global این دستور را اجرا نمایید فقط بر روی پورت هایی که Portfast هستند این دستور اعمال میشود.

توجه داشته باشید که عملا با این کار Spanning tree غیرفعال می شود.

دستور فعال کردن BPDU Filtering:

Switch(config)# spanning-tree portfast bpdufilter default

فعال و یا غیر فعال کردن BPDU Filtering روی یک پورت مشخص:

Switch(config-if)# spanning-tree bpdufilter {enable | disable}

عیب یابی در روش های محافظت در spanning tree

عیب یابی در روش های محافظت در spanning tree
عیب یابی در روش های محافظت در spanning tree

دستور  show spanning-tree inconsistentports برای نمایش پورتهایی که در حالت inconsistent رفته اند را نمایش میدهد.

دستور  show spanning-tree interface type mod/num برای نمایش دلایل اینکه چرا پورتها به وضعیت inconsistent رفته اند را نمایش میدهد.

دستور  show spanning-tree summary  نمایش وضعیت  BPDU Guard و BPDU filter و Loop Guard

دستور [show udld [type mod/num نمایش وضعیت UDLD برای کل سوئیچ یا برای یک پورت مشخص نمایش می دهد.

Shares:

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *