VLAN Trunking Protocol یا VTP
نوشته شده توسط بهادر اکرمی در 11 نوامبر 2013VLAN Trunking Protocol یا VTP
همان طور که از نام آن مشخص است، VTP پروتکل VLAN Trunking است. یعنی مخصوص VLAN ها و فقط برای حالت Trunking میباشد. و تنها از ترانک برای انتشار میتواند استفاده کند. یعنی تنها مخصوص انتقال فریم ها بین “سوئیچها” می باشد.
با استفاده از پروتکل VTP می توانیم اطلاعات VLAN را روی یک سوئیچ Set کنیم بعد با استفاده از VTP سایر سوئیچها را از وجود این VLAN و پیکربندی آن آگاه سازیم. نتیجه به این شکل خواهد بود که بقیه سوئیچها نیز این VLAN را خواهند شناخت.
آیا پیکربندی اولیه را می توانیم روی هر سوئیچی که خواستیم اعمال کنیم و بعد از VTP استفاده کنیم؟
خیر! به طور کلی پروتکل VTP سوئیچها را در سه حالت دسته بندی میکند و هر سوئیچ تنها در یکی از این سه حالت قرار میگیره که باز تنظیم این حالت به عهده مدیر شبکه است. حالتهای Server ، Client و Transparent
هر مدیر یک یا چند عدد از سوئیچها را در حالت VTP Server و بقیه را در حالت VTP Client تنظیم میکند. به این ترتیب تنـها روی سوئیچهای VTP Server می توانیم پیکربندیهای دلخواه را تنظیم یا تغییردهیم و سپس از طریق پروتکل VTP این تنظیمات را به دیگر سوئیچهای VTP Server و VTP Client مخابره کنیم. هر کدام از سوئیچهای VTP Server و Client که این پیام را دریافت کردند آنها نیز متقابلاً آن پیام را برای ترانکهای خارجی خود میفرستند. پس با ایجاد تغییر در پیکربندی سوئیچهای VTP Server است که منجر به مخابره شدن پیامهای VTP به کل شبکه می گردد.
به عبارت دیگر تنها روی یک سوئیچ VTP Server میتوانیم یک VLAN جدید اضافه کنیم و یا حذف کنیم و یا تنظیمات مربوط به آن را تغییر دهیم و این کار از طریق سوئیچهای VTP Client امکان پذیر نیست.
بعبارتی هنگامی که تنظیمات پیکربندی یک سوئیچ سرور تغییر کند، پیامهای VTP Server فرستاده میشوند. به علاوه این پیامها هر ۵ دقیقه یکبار نیز توسط VTP سرورها در کل شبکه مخابره میشوند و به غیر از این موارد هنگامی که یک سوئیچ جدید ایجاد شود که شامل VLAN هایی است، سوئیچها میتوانند با یک پیام VTP از سوئیچ تازه تاسیس بخواهند که اطلاعات VLAN های خود را برای آنها ارسال کند.
پس سه نوع پیام مختلف برای VTP داریم!
۱- پیامهایی که به هنگام تغییر تنظیمات پیکربندی یک سوئیچ VTP Server ارسال میشوند.
۲- پیامهایی که به طور اتوماتیک هر ۵ دقیقه یکبار مخابره میشوند.
۳- پیامهایی که به هنگام ایجاد سوئیچ جدیدی به جهت آشنایی ارسال میشوند.
پروتکل VTP به چه شکل کار میکند؟
شکل زیر را در نظر بگیرید.
در این شکل یک سوئیچ از نوع VTP Server و دو سوئیچ از نوع VTP Client انتخاب شدهاند.
داستان از اینجا شروع میشود که تصمیم میگیریم که یک VLAN جدید را روی سوئیچ VTP Server ایجاد کنیم. در هر VTP شماره ای وجود دارد که Revision Number نام دارد و مقدار این شماره برابر آخرین باری است که VTP حاوی اطلاعات جدیدی بوده مثل تغییر در پیکربندی یک VTP Server ، و البته این شماره برای کل سوئیچهای شبکه مقدار یکسانی دارد چرا که این پیامها به صورت سراسری برای تمام سوئیچها ارسال می گردد، هنگامی که VTP مجدداً حاوی پیام جدیدی گردد به این شماره یک واحد اضافه میشود و پیام VTP جدید به همراه این شماره جدید به کل شبکه ارسال میشود.
دوباره به شکل ۷ نگاه کنید. در این شکل Revision Number فعلی ۲ است. تصمیم میگیریم که VLAN جدیدی را به سوئیچ VTP Server اضافه کنیم، این کار باعث میشود که که پیکربندی سوئیچ تغییر کند که در نتیجه ی این تغییرات، شماره پیام VTP ، یک واحد اضافه میشود و از دو به سه تغییر میکند و سپس اطلاعات این پیکربندی به همراه این شماره جدید برای سایر سوئیچها ارسال میشود. سایر سوئیچها این شماره را با شماره VTP خود چک میکنند اگر از Revision Number فعلی خود بیشتر بود این پیام را دریافت میکنند، به شماره VTP خود یک واحد اضافه میکنند و این پیام را برای پورتهای ترانک خود ارسال میکنند و در غیر این صورت پیام VTP رسیده را رد میکنند.
در حقیقت باید بگوییم که پروتکل VTP تا حد زیادی شبیه پروتکلهای مسیریابی عمل میکند.
همان طور که گفته شد پیامهای VTP برای کل سوئیچهای شبکه ارسال میشود. حالا شرکتی را فرض کنید که بخش امور مالی در یکVLAN و بخش حسابداری در VLAN دیگری و بر روی سوئیچهای مختلفی قرار دارند و تنها هم نیاز است که اطلاعات تغییر در پیکربندی این سوئیچها برای هم ارسال شود و به طور مثال بخش انبار نیازی به دریافت این پیامهایVTP ندارد !!
چطور می توان از سرازیر شدن پیامهای VTP به کل شبکه جلوگیری کرد؟
VTP Domain
VTP Domain این امکان را به مدیر میدهد که برای مجـموعهای از سوئیچها نام دامنه یکسان انتخاب کند که باعث میشود سوئیچها در دامنههای مختلف پیامهای VTP یکدیگر را نادیده بگیرند.
مثلا در مورد مثال بالا میتوانیم برای سوئیچهای مربوط به VLAN های بخش مالی و حسابداری ، VTP Domain یکسانی انتخاب کنیم و در نتیجه پیامهای VTP در این سوئیچها تا جایی پیش میرود که دامنه اجازه میدهد!
برای اینکه یک سوئیچ نام دامنهای نگیرد بایستی که VTP را غیرفعال کنیم. اما دو تا مشکل وجود دارد، یکی اینکه بعضی از سوئیچهای سیسکو نمیتوانند VTP را غیر فعال کنند و مشکل دوم اینکه حتی اگر بتوانیم VTP را برای سوئیچی غیر فعال کنیم، این راه حل مناسبی نخواهد بود. چرا که ممکن است این سوئیچ واسطهای برای سایر سوئیچها باشد که نیاز به دریافت این پیامهای VTP دارند. با غیر فعال کردن این سوئیچ ، عملاً سایر سوئیچهای وابسته نیز این پیام را دریافت نخواهند کرد، راه حل بهتر استفاده از VTP Transparent است.
VTP Transparent
بهترین تشبیهی که از Transparent VTP میتوانیم دادشته باشیم خاصیت شیشه گونه آن است. شیشه میتواند نور را از خود عبور دهد و نیز آن را منعکس کند بدون اینکه خود تغییری کند، Transparent VTP نیز همین کار را با سوئیچ میکند، یعنی باعث میشود که سوئیـــچ پیامهای VTP را دریافت کند آن را از خود عبور داده و برای سایر سوئیچهای هـــــمسایه دوباره ارسال (Forward) کند اما با دریافت این پیامهایVTP خودش تغییری نمیکند.
Transparent در واقع حالت سوم پروتکل VTP است. قبلا گفتیم که VTP برای سوئیچها سه حالت دارد که دو مورد آنها VTP Server و VTP Client بود و VTP Transparent همان حالت سوم است.
سوئیچهایی که روی حالت VTP Transparent تنظیم میشوند نیز به مانند VTP Server ها میتوانند VLAN ها را پیکربندی کنند و صاحب VLAN های جدید شوند اما بر خلاف VTP Server ها هرگز این اطلاعات پیکربندی را برای دیگران ارسال نمیکنند. در حقیقت سوئیچهای VTP Transparent به نوعی نسبت به سایر سوئیچها ایزوله هستند.
در سری جدید سوئیچهای سیسکو حالت چهارمی به نام noon وجود دارد که باعث غیر فعال کردن VTP روی یک سوئیچ میشود که بهتر است از آن برای سوئیچهای ترمینال شبکه استفاده کنیم.
VTP Pruning
قبلاً گفتیم که اگر پیام Broadcast ای از یکی از VLANهای سویچ ارسال شود سوئیچ باید این پیام را بر روی پورتهای ترانک خود (به جز حالتی خاص) نیز ارسال کند؟ حالا میخواهیم آن را توضیح دهیم: غیر از پیامهای VTP که که بهتر است کنترل شود تا بیهدف در کل شبکه پخش نشود، پیامهای Broadcast که از ترانکهای سوئیچها خارج میشوند نیز باید کنترل شوند. چرا؟ شکل زیر را در نظر بگیرید.
شکل ۸ – کنترل ترانکها
در این شکل هر کدام از کامپیوترها نماد یک VLAN هستند. هاستای که با رنگ سبز مشخص شده است، قصد دارد که پیامی را به صورتBroadcast ارسال کند. سوئیچ۱ این پیام را برای سایر کامپیوترهای VLAN23 بر روی خود میفرستد، همچنین باید این پیام را بر روی تمام پورتهای ترانک خود نیز ارسال کند تا این پیام به سایر اعضای VLAN23در سوئیچهای دیگر نیز برسد. پیام به سوئیچهای دو و سه میرسد.
سوئیچ دو : VLAN ID بسته را کنترل میکند و متوجه میشود که این پیام به VLANای از مجموعهVLAN های خودش مربوط نیست بنابراین تنها آن را بر روی ترانکهای خود (به غیر از آن که پیام از آن رسیده است) Forward میکند، پیام Forward شده از سوئیچ دو به دست سوئیچ چهار میرسد، سوئیچ چهار Header بسته را کنترل میکند و متوجه میشود که این بسته به VLAN23 او مربوط است، بنابراین Header بسته را حذف میکند و پیام اصلی را برای VLAN23 خود Forward میکند.
سوئیچ سه: Header پیام رسیده را چک میکند و متوجه میشود که VLAN ID این پیام ربطی به VLAN ID های خودش ندارد، بنابراین پیام را برای بر روی ترانکهای خود (به غیر از آن که پیام از آن رسیده است) ارسال میکند که در این شکل سوئیچ سه دیگر ترانکی ندارد تا پیام را برای آن Forward کند!
سوال اینجاست که آیا واقعاً لازم است که این پیامها برای همه سوئیچها و بر روی همه ترانکهای خارجی ارسال شود؟ مثلا در شکل بالا چه نیازی وجود دارد که این پیام به سوئیچ سه برسد؟!
همان طور که مشخص است نه تنها نیازی به ارسال بیهوده این پیامها نیست بلکه نباید هم اینگونه باشد، چرا که این عمل پهنای باند شبکه را به هدر میدهد و همچنین سبب پردازش و یک سری اعمال بی مورد روی سوئیچها میشود.
برای اجتناب از این عمل سوئیچها از دو روش پشتیبانی میکنند که به وسیله آن مدیر میتواند جریان ترافیک روی هر TRUNK را کنترل و محدود کند. یکی پیکربندی دستی است که به موجب آن مدیر باید روی هر ترانک لیست VLAN های مجاز را تعریف کند و روش دیگر VTP Pruning یا هرس کردن VTP نام دارد.
VTP میتواند به صورت پویا تشخیص دهد که کدام سوئیچها به فریمهایی از VLAN مشخصی نیاز ندارد و سپس VTP آن فریمهای ارسالی از آن VLAN ها را از طریق ترانکهای مناسبی هرس میکند.
شکل زیر این مفهوم را بهتر نشان میدهد.
شکل ۹ – VTP Pruning
VTP مسئول پیامرسانی بین سوئیچها است و نیز اطلاعاتی از VLAN ها شامل نام و ID آنها و اینکه چه VLAN هایی به چه سوئیچی وصل است را همراه خود دارد که این اطلاعات دائماً به صورت Dynamic در فایلی به نام VLAN.dat که dat مخفف database است در حافظه ذخیره و نگهداری میشود. به این ترتیب هرس کردن VLAN ها برای VTP کار سختی نخواهد بود!
DTP
در حالت کلی یک پورت سوئیچ یا به VLAN خاصی نسبت داده شده یا یک پورت ترانک است. (البته اگر کلاً بلااستفاده نباشد!!) اگر این پورت ترانک باشد به راحتی میتواند اطلاعات سایر سوئیچها و VLAN ها را از خود عبور بدهد.
پروتکل DTP (که فقط مخصوص سوئیچهای سیسکو است) کمک میکند که در موارد لزوم یک پورت به صورت Dynamic به پورت ترانک تبدیل شود و بتواند با سوئیچ همسایه خود ارتباط برقرار کند و نتیجتاً اطلاعات ترانک را از خود عبور دهد. اکثر سوئیچها به صورت پیش فرض در حالت DTP قرار دارند، به این عمل ترانکینگ پویا گفته میشود.
Static VLAN و Dynamic VLAN
این کار به دو صورت Static (دستی) و Dynamic (غیر دستی!) پیادهسازی میشود. در روش دستی ، مدیر شبکه خودش مشخص میکند که کدام پورت از کدام سوئیچ به کدام VLAN متعلق است که البته این برای شبکههای بزرگ کار بسیار مشکل و تقریبا ناممکنی است! و البته یک ایراد اساسی نیز دارد! و آن این است که در این روش مثلاً مدیر مشخص میکند که شماره پورتهای ۱۳ ، ۱۴ و ۱۸ از سوئیچ ۳ متعلق بهVLAN بخش مالی یک شرکت است، حالا اگر شخصی لپ تاپ خود را بیاورد و به یکی از این پورتها وصل شود عضو VLAN مالی محسوب میشود و این یعنی بد!!
در روش پویا تمام سوئیچها را به یک سرور وصل میکنیم، مدیر یک فایل متنی که لیست دسترسی (Access List) نام دارد را تعریف میکند به طور کلی مشخص میکند که مجموعه از پورتهای سوئیچ به چه “نوع” کاربری یا “گروه کاربری” ای متعلق است، مثلا میتواند این سیاست را باMac Address اعمال کند یا به روشهای مختلف دیگر؛ در این صورت تکلیف هر سوئیچ روشن میشود. در این صورت اگر کاربر نامربوطی بخواهد از پورتی که به او مربوط نیست استفاده کند، سوئیچ به طور خود به خود او را از دسترسی به VLAN ای که به او مربوط است منـــع میکند!
VLAN ها و Sub netting
در حالت عادی، تمام کامپیوترهایی که در یک LAN عضو هستند،Subnet مشترکی دارند، درست است؟ VLAN ها هم درست عین LAN هستند، به این معنی که اینجا نیز کامپیوترهایی که عضور یک VLAN هستند بایدSubnet های یکسانی داشته باشند.
پیشتر گفتیم که مقصد پیامها در بین سوئیچهای مختلف از طریق VLAN ID ای که به هنگام خروج از پورت ترانک به فریم اضافه میشود به راحتی قابل تشخیصاند، اما در مورد پیامهایی که از یک VLAN در یک سوئیچ به یک VLAN دیگر در همان سوئیچ فرستاده می شود چطور می توان مقصد پیام را تشخیص داد که مربوط به کدام VLAN است؟
شکل زیر را در نظر بگیرید.
در این شکل یک سوئیچ لایه دو را میبینیم که شامل سه VLAN است. در مورد این سوئیچ بعد از تشریح شکل، توضیحاتی نوشته شده است.
قدم۱: کامپیوتر موجود در VLAN2 با ساب.نت ۱۰٫۱٫۱٫۰ و آدرس ۱۰٫۱٫۱٫۲ تصمیم دارد که پیامی را به کامپیوتر ۱۰٫۲٫۲٫۳ با ساب.نت ۱۰٫۲٫۲٫۰ بفرستد. پیام صادر شده از کامپیوتر ۱۰٫۱٫۱٫۲ به سوئیچ میرسد، سوئیچ پیام را گرفته، subnet پیام را چک میکند و چون subnet مقصد پیام با subnet مبدا فرق میکند متوجه میشود که پیام برای VLAN دیگری ارسال شده است اما نمیداند که آدرس Subnet مقصد به کدام یکی از VLAN هایش متعلق است (در حقیقت چیزی از مسیریابی نمیداند).
قدم ۲: سوئیچ بسته را برای مسیریابی به روتر میفرستد.
قدم۳: روتر عملیات مسیریابی را انجام داده و با توجه به subnet متوجه میشود که بسته به VLAN3 متعلق است، سپس VLAN ID مقصد را به همراه فریم برای سوئیچ ارسال میکند.
قدم۴: سوئیچ بسته را دریافت کرده و آن به سوی کامپیوتر ۱۰٫۲٫۲٫۳ روانه میکند.
این مثال غیر از بیان مفهوم subnetting در سوئیچها به ما این مطلب را نشان داد که میتوانیم از سوئیچهای معمولی لایه دو (که البته قابلیت VLANing داشته باشند) به همراه روتر برای VLANing استفاده کنیم.
سوئیچهای معمولی که قابلیت VLAN داشته باشند، سوئیچهای لایه دو هستند، سوئیچهاییاند که با پورتها سر و کار دارند. ولی سوئیچهای لایه سه که جدیدتر هستند سوئیچهایی هستند که هم میتوانند کار سوئیچهای لایه دو را انجام بدهند و هم مسیریابی که کار روترهاست! به عبارتی هم زبان پورتها را میفهمند و هم زبان IP ها را. و البته مسلم است که استفاده از این سوئیچها اگرچه گرانتر از سوئیچهای لایه دو و روترها می باشد ولی در کل باعث ساده شدن شبکه و بالاتربردن قابلیت آن میشوند.