مفاهیم VLAN و Trunking

از تصویر زیر برای توضیح این مبحث استفاده خواهد شد.

Image

 

VLAN چیست؟


یک راه برای اینکه یک شبکه لوکال را معرفی کنیم این است که تمام دستگاه در یک LAN دارای یک شبکه ای IP یکسان هستند و همه آنها در لایه دو و در یک broadcast domain قرار دارند. یک (virtual LAN (VLAN یک نام دیگر برای broadcast domain لایه دو است. VLAN ها توسط سوئیچ کنترل می شوند. سوئیچ کنترل می کند که هر پورت به کدام VLAN مرتبط است. در تصویر بالا ، اگر سوئیچ ها با تنظیمات پیش فرض باشند تمامی پورت ها به VLAN 1 اختصاص داده می شوند که به این معناست کلیه دستگاه ها که شامل دو کاربر و روتر می شوند در یک broadcast domain یا VLAN قرار دارند.
زمانی که شما صدها کاربر داشته باشید شاید بخواهید این کاربران را در گروه های مجزا قرار داده و آنها را به Subnet و VLAN خاص اختصاص دهید. برای اینکار ، شما پورت های سوئیچ را به VLAN مورد نظر اختصاص می دهید و از این به بعد هر دستگاهی که به این پورت متصل شود عضو آن VLAN خواهد شد. در نتیجه این دستگاه می تواند با سایر دستگاه هایی که در این VLAN قرار دارند ارتباط برقرار کند.
در تصویر بالا اگر بخواهیم دو کاربر را در VLAN جدید قرار دهیم باید روی سوئیچ ها VLAN جدید را ایجاد کنیم و سپس پورت را در حالت Access قرار داده سپس پورت را به VLAN مورد نظر اختصاص می دهیم. این کار در مثال زیر نمایش داده شده است.

Image

 

  • نکته : مشابه این تنظیمات را باید در سوئیچ SW2 با درنظر گرفتن شماره پورت متصل به کاربر انجام شود.

در هنگام داشتن دو کاربر در یک VLAN یکسان ، اما در سوئیچ های فیزیکی متفاوت باید ارتباط از نوع Trunk بین دو سوئیچ باشد. با تنظیم کردن دو پورت متصل به یکدیگر در دو سوئیچ در حالت ترانک امکان حمل اطلاعات اضافی محیا می شود این اطلاعات اضافه به عنوان tag شناخته می شود و شامل یک شماره شناسایی است که نشان می دهد فریم به کدام VLAN تعلق دارد. پروتکل 802.1Q یک پروتکل استاندارد برای این tag کردن است.
در تصویر بالا و با تنظیمات قبلی دو کاربر با اینکه در یک VLAN یکسان هستند نمی توانند با یکدیگر ارتباط برقرار کنند چون لینک ارتباطی بین دو سوئیچ به عنوان Trunk تنظیم نشده است. برای اینکار در ابتدا باید نوع کپسوله کردن را در حالت dot1q قرار دهیم سپس پورت را به عنوان Trunk فعال می کنیم.

Image

 

نحوی جریان فریم ها به صورت مرحله به مرحله


یک فریم Broadcast که از PC1 ارسال شده است و به دست سوئیچ SW1 می رسد باید با tag VLAN 10 روی پورت Trunk ارسال شود سوئیچ SW2 با دریافت فریم و دیدن tag VLAN 10 متوجه می شود که باید آنرا روی پورت های اختصاص یافته به VLAN 10 ارسال کند در نتیجه با حذف tag آنرا روی پورت ها مورد نظر ارسال می کند در نتیجه فریم به دست PC2 می رسد. این دو قسمت یعنی access و trunk ، دو قسمت اصلی برای ساخت بلاک های مجزا در سوئچینگ لایه دو است.

Native VLAN در Trunk


براساس خروجی در آخرین مثال ، ما اینترفیس trunk بین دو سوئیچ را بررسی کردیم. یک گزینه که در این خروجی نمایش داده شده است native VLAN است. به صورت پیش فرض VLAN 1 به عنوان native VLAN است. این به چه معناست و چی اهمیتی دارد؟ اگر یک یوزر به یک پورت access که عضو VLAN 1 در سوئیچ SW1 متصل باشد و یوزر یک فریم broadcast ارسال کند زمانی که فریم توسط سوئیچ SW1 بخواهد به سمت سوئیچ SW2 ارسال شود چون این فریم مربوط به VLAN 1 است و VLAN 1 به عنوان native vlan است فریم بدون tag ارسال خواهد شد. در سمت مقابل سوئیچ SW2 در صورت دریافت یک فریم بودن tag متوجه می شود که این فریم متعلق به native VLAN یعنی VLAN 1 است.
این ویژگی می تواند به عنوان یک معظل امنیتی باشد که به آن VLAN Hopping گفته می شود مهاجم می تواند از این ویژگی سواستفاده کند.

تعیین وضعیت پورت


یک پورت برای trunk شدن می تواند با سوئیچ مقابل یا دستگاهی که trunk را پشتبانی می کند به صورت خودکار مذاکره کند. این مذاکره تعیین می کند پورت در حالت access یا trunk باشد. این مذاکره به صورت خودکار می تواند یک ریسک باشد چون یک مهاجم می تواند با مذاکره پورت را در حالت trunk قرار دهد سپس می تواند به تمامی VLAN های موجود دسترسی پیدا کند.

MPLS چگونه کار می کند؟ – بخش دهم

با یک مقاله دیگه از سری مقالات MPLS در خدمت شما دوستان عزیز هستیم:

Explicit NULL Label :


استفاده از implicit NULL label باعث افزایش بهره وری در ارسال بسته ها می شود. در این حالت بسته توسط LSR یکی مانده به اخر در یک LSP با یک label کمتر ارسال می شود. در کنار این label ، اطلاعات فیلد EXP نیز نگه داری می شود. زمانی که label حذف شود. فیلد EXP نیز به همراه آن حذف می شود. فیلد EXP برای مباحث (quality of service (QoS مورد استفاده قرار می گیرد و با حذف label این ویژگی همراه آن حذف می شود. در بعضی مواقع ما می خواهیم اطلاعات مربوط به QoS را داشته باشیم و همراه این اطلاعات بسته را تحویل egress LSR دهیم. در این حالت نمی توان از implicit NULL label استفاده کرد.
راه حل برای این مشکل استفاده explicit NULL label می باشد. در این روش egress LSR به همسایه های خود explicit NULL label را که دارای مقدار 0 است را اعلام می کند. سپس egress LSR بسته هایی با label 0 دریافت خواهد کرد. LSR با نگاه کردن به مقدار 0 و مقایسه آن با LFIB نمی تواند آنرا ارسال کند چون این مقدار می تواند به چند FEC اختصاص داده شده باشد. درنتیجه اینجا LSR فقط explicit NULL label را حذف می کند. بعد از اینکه explicit NULL label توسط LSR حذف شد یک lookup دیگر انجام می دهد اما مزیت آن وجود اطلاعات QoS در بسته دریافتی برای روتر می باشد. از اطلاعات EXP می توان برای QoS استفاده کرد یا در صورت داشتن چند label اطلاعات EXP را به label جدید که در بالای label stack قرار گرفته اضافه کرد.
نکته : مقدار explicit NULL label برای IPv6 مقدار 2 است.

Router Alert Label :


Router Alert label دارای مقدار 1 است. این label می تواند در هر جایی از label stack ، غیر پایین آن قرار بگیرد. در صورتی که این عدد در بالای lable stack باشد به LSR هشدار می دهد که این بسته نیاز به نگاه دقیق تر دارد. بنابراین این بسته مانند سایر بسته ها ارسال نمی شود و روی آن پردازش هایی انجام می گیرد. زمانی که این بسته بخواهد ارسال شود label 1 آن حذف می شود. سپس label بعدی آن در lable stack با جدول LFIB مقایسه می شود تا نحوی ارسال مشخص گردد سپس عملیات مورد نظر مانند (pop , swap , push) روی آن انجام می گیرد و مجدد label 1 را در بالای label stack قرار می دهد.
در تصویر زیر خروجی دستور debug mpls packet نمایش داده شده است که بسته دارای Router Alert label است :

Image

در تصویر بالا دو فرمت خروجی وجود دارد که label ها در هر دو نمونه از سمت چپ به راست یا همان بالا به پایین مرتب شده اند. نمونه اول که label ها با علامت اسلش از یکدیگر جدا شده اند فرمت قدیمی می باشد و فرمت دوم فرمت جدید می باشد.

OAM Alert Label :


Label با مقدار 14 به عنوان Operation and Maintenance (OAM) Alert label شناخته می شود. OAM برای تشخیص خطا و کنترل عملکرد مورد استفاده قرار می گیرد. بسته های OAM با بسته های نرمال کاربران تفاوت دارد. IOS سیسکو عملیات MPLS OAM را انجام می دهد اما از label 14 استفاده نمی کند.

Unreserved Labels :


غیر از label های 0 الی 15 از تمام label برای ارسال بسته ها می توانید استفاده کنید. با توجه به 20 بیتی بودن فیلد شماره label مقداری که می توان به عنوان label برای ارسال بسته ها استفاده کرد از 16 تا 1,048,575 می باشد. به صورت پیش فرض در IOS سیسکو از 16 تا 100000 به عنوان label استفاده می شود و این مقدار نیاز شما را برای شبکه های IGP تامین خواهد کرد. اما برای شبکه های BGP این مقدار قابل توجهی نیست و می توانید با دستور mpls label range min max این مقدار را تغییر دهید.
در تصویر زیر این تغییرات توسط دستور mpls label range نمایش داده شده است:

Image

 

TTL در بسته های Label خورده :


در هدر IP فیلد 8 بیتی با نام (Time To Live (TTL وجود دارد و با استفاده از آن طول عمر مجاز بسته در شبکه مشخص می شود. زمانی که یک بسته ارسال می شود به طور معمول مقدار این فیلد 255 می باشد و به ازای عبور از هر hop در شبکه این یک واحد از این مقدار کم می شود و اگر مقدار به صفر برسد بسته drop می شود. در این صورت روتری که بسته با TTL 0 را drop کند یک پیام (Internet Control Message Protocol (ICMP با کد 0 و type 11 به مبدا بسته ارسال می کند. با معرفی MPLS ، به هدر بسته ها label اضافه شد. در اینجا مقدار TTL هدر IP در label stack کپی می شود تا مطمئن شویم که بسته برای همیشه در شبکه MPLS قرار نگیرد و طول عمر برای آن وجود داشته باشد.
نکته : در هنگامی که بسته بدون label می شود و یا از شبکه MPLS خارج می شود. مقدار TTL از label stack به هدر IP کپی می شود.

رفتار TTL در بسته های label خورده :


در MPLS ، استفاده از فیلد TTL مشابه فیلد TTL در هدر IP است. زمانی که یک بسته IP وارد شبکه MPLS می شود مانند ingress LSR که به عنوان ورودی به شبکه MPLS محسوب می شود مقدار TTLدر هدر IP بعد از کسر یک واحد به عنوان MPLS TTL برای آن بسته در نظر گرفته می شود. Label در egress LSR حذف می شود و هدر IP مجدد مورد استفاده قرار می گیرد در اینجا نیز مقدار MPLS TTL بسته بعد از کسر یک واحد در فیلد TTL در هدر IP کپی می شود. در IOS سیسکو ، برای حفاظت از routing loop احتمالی مقدار TTL هدر IP را با MPLS TTL مقایسه می کند و اگر مقدار MPLS TTL از TTL هدر IP بزرگتر بود آنرا کپی نمی کند.
در تصویر زیر نحوی تغییرات TTL در شبکه MPLS نمایش داده شده است :

Image

 

رفتار TTL در Label-to-Label :


اگر عمل swap برای یک بسته label خورده در LSR در نظر گرفته شود مقدار TTL یک واحد کم شده و مقدار آن در label جدید قرار می گیرد. اگر یک یا چند label به یک بسته push شود از مقدار TTL یک واحد کم شده و مقدار آن برای label که جایگزین شده و label های جدید در نظر گرفته می شود. اگر یک label را pop کنیم از TTL آن یک واحد کم شده و مقدار آن در label که بالای label stack قرار می گردید کپی می شود مگر اینکه مقدار TTL از TTL این label بزرگتر باشد که در این حالت کپی انجام نمی شود.
در تصویر زیر تغییر TTL را در عملیات های pop ، push و swap نشان داده شده است :

Image

نکته : intermediate LSR یا همان LSR های میانی تنها مقدار TTL را در label بالای label stack تغییر می دهند و نمی توانند TTL هدر IP یا TTL مربوط به label های پایین label stack را تغییر دهند.
نکته : رفتار و عملکرد TTL را که در اینجا توضیح داده شد در IOS سیسکو TTL operation نامیده می شود.

MPLS چگونه کار می کند؟ – بخش نهم

با یک مقاله دیگه از سری مقالات MPLS در خدمت شما دوستان عزیز هستیم:

Load Balancing Labeled Packets :


اگر برای یک شبکه IPv4 چند مسیر با هزینه یکسان وجود داشته باشد در IOS سیسکو این امکان وجود دارد که بسته های label خورده را بین این مسیرها تقسیم کنید یا به عبارتی Load Balancing را انجام دهید. در تصویر زیر خروجی LFIB یک روتر LSR را می بینید. همانطور که در تصویر می بینید برای بسته های ورودی با label 17 , 18 دو پورت خروجی وجود دارد. اگر بسته های label خورده load-balance شوند می توانند label خروجی یکسانی داشته باشند اما با یکدیگر متفاوت هستند. اگر دو لینک بین یک جفت روتر و هر دو لینک به یک platform label space تعلق داشته باشند Label خروجی یکسان خواهد بود. اگر چندین next-hop LSR داشته باشیم معمولا label خروجی برای هر مسیر متفاوت خواهد بود چون هر next-hop LSR به صورت مستقل برای هر شبکه label در نظر می گیرد.

Image

اگر یک شبکه از طریق مجموعه ای از مسیرهای با مکانیزم label زنی و مسیر های بدون مکانیزم label زنی (IP) قابل دسترسی باشد در IOS سیسکو برای load-balancing مسیرهای بدون مکانیزم label زنی را در نظر نمی گیرد. چون ترافیک از طریق مسیر بدون مکانیزم label زنی به مقصد نخواهد رسید.
در شبکه های IPv4-over-MPLS اگر بسته در مقطعی از شبکه بدون label ارسال شود بسته به مقصد می رسد. در زمانی که بسته در لینکی که MPLS روی آن فعال نیست بدون label شود با توجه به اینکه در این شبکه IPv4 فعال است باید بتواند به مقصد برسد. ولی در شبکه های MPLS VPN و AToM در صورتی که در شبکه MPLS ، بسته بدون label ارسال شود به مقصد نخواهد رسید.MPLS Payload در شبکه MPLS VPN یک بسته IPv4 است. اما P Router به صورت معمول روتینگ VPN را ندارند در نتیجه نمی توانند بسته را به مقصد برسانند.MPLS Payload در حالت AToM یک فریم لایه دو است. بنابراین اگر بسته ، label stack خود را در P Router از دست دهد ، P Router اطلاعات لازم برای ارسال این فریم لایه دو را ندارد.
این مواردی که عنوان شد دلایلی هستند که load-balancing در هر دو حالت label و بودن (label (IP استفاده نمی شود. به طور کلی نحوی ارسال و تصمیم گیری در روتر های Edge LSR یا همان PE Router انجام می گیرد درنتیجه در اکثر موارد P Router نمی توانند بسته های بدون label را ارسال کنند.
در تصویر زیر load balancing را توسط دو مسیر نمایش می دهد. سپس روی یکی از لینک های خروجی (Label Distribution Protocol (LDP غیرفعال می گردد و به عنوان next-hop از LFIB حذف می شود. از دستور no mpls ip برای غیرفعال کردن LDP در یک اینترفیس استفاده می شود.

Image

 

Unknown Label :


در حالت نرمال LSR باید بسته های label خورده دریافت کند و label بالای label stack را بشناسد و چون قبلا توسط خود LSR این label ها به همسایه های خود اعلام شده است. به هر حال این امکان وجود دارد که در شبکه MPLS مشکلی بوجود آید و LSR بسته هایی را دریافت کند که label بالای label stack آنرا در LIFB پیدا نکند. از نظر تئوری LSR در این مواقع می تواند دو کار انجام دهد: label بسته را حذف کرده و برای ارسال بسته تلاش کند یا اینکه بسته را drop کند. در سیسکو LSR ها بسته را drop می کنند این یک تصمیم درست است چون label بالای label stack توسط این LSR مشخص نشده است و این LSR نمی داند که پشت label چه نوع بسته ای قرار دارد. این بسته می تواند یک بسته IPv4 ، IPv6 ، فریم لایه دو یا سایر موارد باشد. LSR می تواند با بررسی MPLS Payload تلاش کند که بفهمد بسته از چه نوعی است اما امکان به وجود آمدن مشکلات دیگر که در بخش قبلی آنها را شرح دادیم به وجود آید : LSR اگر label بسته را حذف کند به احتمال زیاد قادر به ارسال بسته براساس مقصد آن نخواهد بود. حتی اگر LSR بسته را ارسال کند تضمینی وجود ندارد که این بسته توسط سایر روترها drop نشود. بهترین کار برای بسته های که دارای label ناشناخته هستند drop کردن آنهاست.

Reserved Labels :


Label شماره 0 الی 15 به عنوان label های رزور شده شناخته می شوند و LSR نمی تواند از این label ها برای عملیات معمول خود استفاده کند. LSR برای هر یک از این label ها یک عملکرد خاص در نظر گرفته است. label 0 به عنوان explicit NULL label می باشد. Label 1 به عنوان router alert label استفاده می شود. Label 3 به عنوان implicit NULL label می باشد. Label 14 به عنوان OAM alert label استفاده می شود. سایر label های بین 0 تا 15 هنوز وظیفه ای برای آنها مشخص نشده است.

Implicit NULL Label :


implicit NULL label با مقدار 3 مورد استفاده قرار می گیرد.یک egress LSR اگر نخواهد به یک FEC یک label اختصاص دهد از implicit NULL label برای آن FEC استفاده می کند در نتیجه از LSR های مجاور خود درخواست می کند که label بسته ها را pop کرده و به سمت او ارسال کنند. در شبکه IPv4-over-MPLS ، در حالتی که LDP وظیفه پخش label ها را برعهده دارد egress LSR که IOS سیسکو را اجرا می کند implicit NULL label را برای شبکه های connected و summarized در نظر می گیرد. اگر egress LSR برای این FEC ها یک label در نظر بگیرد باعث می شود که بسته هایی دریافت کند که دارای یک label می باشند و برای این بسته ها باید دو lookup انجام دهد. اولین lookup مربوط به label می شود که باید آنرا با LFIB مقایسه کند و متوجه شود که باید label حذف شود. دومین lookup مربوط به IP lookup می باشد. اگر دقت کنیم lookup اول لازم نیست انجام شود چون نتیجه حذف label است.
راه حل : egree LSR اخرین LSR یک LSP می باشد در اینجا egress LSR باید به LSR یکی مانده به آخر در LSP (همسایه egress LSR) اعلام کند که بسته ها را بدون label برای او ارسال کند. برای اینکار از implicit NULL label استفاده می کند تا LSR همسایه را متوجه این موضوع کند و این باعث می شود که egress LSR بسته های IP دریافت کرده و تنها نیاز به IP lookup برای ارسال بسته ها داشته باشد. این عمل باعث بهبود عملکرد در egress LSR می شود.
استفاده از implicit NULL label در انتهای یک LSP را (penultimate hop popping (PHP می نامند. عمل pop در LFIB در روتر PHP در نظر گرفته می شود. نمونه آنرا در تصویر زیر می بینید.

Image

نکته : در IOS سیسکو PHP به صورت پیش فرض فعال است و در شبکه IPv4-over-MPLS شبکه های Connected و summarized را با implicit NULL label به سایر همسایه ها اعلام می کند.
استفاده از implicit NULL label بسیار گسترده است و تنها محدود به مثال بالا نمی باشد. اینکار برای یک بسته که دارای چند label است نیز استفاده می شود به این صورت که label بالای label stack حذف شده و بسته به صورت label خورده و با یک label کمتر ارسال می شود در نتیجه egress LSR نیاز به انجام دوبار label lookup ندارد. استفاده از implicit NULL label به این معنی نیست که تمام label ها در label stack باید حذف شوند بلکه فقط یک label حذف می شود. در هر حالتی استفاده از implicit NULL label باعث می شود که egress LSR نیاز نداشته باشد که دوبار lookup انجام دهد. هر چند که مقدار 3 به عنوان label برای implicit NULL label مورد استفاده قرار می گیرد اما هرگز این مقدار به عنوان label در label stack مشاهده نمی شود و به این دلیل است که به آن implicit NULL label گفته می شود.

پیاده سازی تانل GRE در تجهیزات سیسکو

در قسمت قبل با مفاهیم تانل و کاربرد ها و ویژگی های آن آشنا شدیم و در این بخش می خواهیم به پیاده سازی تانل GRE بپردازیم با ما همراه باشید.

ایجاد تانل GRE :


ایجاد یک تانل GRE شامل چند مرحله می باشد که این مراحل به شرح زیر هستند :

  • مرحله 1 : در ابتدا یک اینترفیس تانل مجازی در Global Configuration با استفاده از دستور interface tunnel ID ایجاد کنید.
  • مرحله 2 : سپس در تنظیمات اینترفیس تانلی که ایجاد کرده اید یک آدرس IP با استفاده از دستور ip address ipaddress subnetmask اضافه کنید.
  • مرحله 3 : مبدا تانل را با استفاده از دستور tunnel source { interfaceid | ip address } براساس آدرس IP یا اینترفیس مشخص کنید.
  • مرحله 4 : مقصد تانل را با استفاده از دستور tunnel destination ip_address مشخص کنید.
  • مرحله 5 : مراحل ذکر شده را برای روتر مقابل تکرار کنید.

 

GRE Configuration Example :


برای اینکه با مراحل تنظیم تانل GRE بیشتر و بهتر آشنا شوید یک سناریو برای GRE را اجرا می کنیم.

Image

به تصویر بالا توجه کنید یک سازمان را در نظر بگیرید که دارای دو سایت است که از طریق Service Provider ارتباط بین این دو سایت را برقرار کرده است حال این سازمان می خواهد از یک پروتکل مسیریابی دینامیک مثل EIGRP برای شبکه خود استفاده کند. همانطور که در تصویر می بینید بین دو سایت چند روتر وجود دارد و ارتباط بین دو روتر سازمان به صورت مستقیم نیست و همانطور که می دانید یکی از شرایط برقراری رابطه همسایگی advertise یک شبکه تو هر دو روتر می باشد که در اینجا روتر R1 شبکه های 192.168.1.0 و 192.168.12.0 را دارد و روتر R4 شبکه های 192.168.4.0 و 192.168.34.0 را دارد و همانطور که می بینید این دو روتر شبکه مشترکی برای برقراری همسایگی خود ندارند. راه حل برطرف کردن این مشکل استفاده از تانل است که یک شبکه مجازی به صورت Point to Point بین دو روتر R1 و R4 ایجاد کند و باعث شود که هر دو روتر دارای یک شبکه مشترک شوند.
نکته : برای ایجاد تانل لازم است که دو روتر بتوانند با یکدیگر ارتباط داشته باشند برای اینکار می توان از Static route استفاده کرد که در این سناریو روی روتر R1 دستور زیر را برای ایجاد Static Route مورد نظر خود وارد می کنیم.

R1(config)#ip route 192.168.34.0 255.255.255.0 192.168.12.2

روی روتر R2 نیز برای Static Route دستور زیر را وارد می کنیم.

R4(config)#ip route 192.168.12.0 255.255.255.0 192.168.34.3

در ابتدا روتر R1 را تنظیم می کنیم که دستورات آن به صورت زیر است:

R1(config)#interface tunnel 1
R1(config-if)#ip address 192.168.14.4 255.255.255.0
R1(config-if)#tunnel source fastEthernet 1/0
R1(config-if)#tunnel destination 192.168.34.4

همانطور که می بینید در ابتدا یک اینترفیس تانل ایجاد شده است و به آن یک IP اختصاص داده شده است سپس مبدا این تانل را برابر اینترفیس fastethernet 1-0 قرار داده شده و مقصد تانل را برابر 192.168.12.1 قرار داده شده است این IP مربوط به اینترفیس fastethernet 1-0 روتر R4 است. نکته که اینجا حائز اهمیت است این است که این روتر بتواند با این IP ارتباط داشته باشد تا بتواند ارتباط تانل را برقرار کند.
سپس روتر R4 را با دستورات زیر تنظیم می کنیم :

R4(config)#interface tunnel 1
R4(config-if)#ip address 192.168.14.1 255.255.255.0
R4(config-if)#tunnel source fastEthernet 1/0
R4(config-if)#tunnel destination 192.168.12.1

دستورات استفاده شده برای روتر R4 مشابه روتر R1 است فقط تفاوت آن در IP مقصد تانل است که در اینجا IP اینترفیس fastethernet 1-0 روتر R1 استفاده می شود.
نکته : از دستور tunnel mode gre ip برای تعیین نوع GRE برای تانل استفاده می شود اما چون به صورت پیش فرض اینترفیس تانل که ایجاد می شود در این حالت قرار می گیرد نیاز به وارد کردن این دستور نیست.
حال تانل ایجاد شده است و همینطور که در تصویر زیر می بینیم در وضعیت UP قرار گرفته است.

Image

با استفاده از دستور show interface tunnel 1 می توانیم وضعیت تانل را با جزئیات بیشتری ببینیم.

Image

همانطور که در تصویر مشخص شده است وضعیت تانل در حالت UP قرار دارد. آدرس تانل 192.168.14.1 می باشد. پهنای باند آن 100 Kbps می باشد. نوع کپسوله تانل می باشد. مبدا و مقصد تانل مشخص شده است. پروتکل تانل GRE و پروتکل Transport را IP مشخص کرده است.
حال اگر پروتکل مسیریابی EIGRP را پیاده سازی کنیم دو روتر R1 و R4 می توانند از طریق تانل همسایه شوند. در تصویر زیر نشان داده شده است که روتر R1 از طریق Tunnel 1 با روتر R4 همسایه شده است.

Image

همچنین اگر از PC1 بخواهیم PC2 را trace بگیریم خروجی به شکل زیر خواهد بود.

Image

همانطور که در تصویر می بینید تنها روترهای R1 و R4 در مسیر ما نمایش داده شده است و روترهای R2 و R3 در اینجا دیده نمی شوند و دلیل آن استفاده از تانل می باشد.

آموزش راه اندازی GRE Tunnel در روترهای سیسکو

تانل این امکان را برای ما فراهم می کند که یک پروتکل را درون یک پروتکل دیگر کپسوله کنیم و آنرا منتقل کنیم این ویژگی باعث می شود حتی بتوانیم پروتکل هایی غیر IP را رو روی بستر IP منتقل کنیم. تانل به صورت یک اینترفیس مجازی اجرا می شود و به ما یک اینترفیس ساده برای تنظیم می دهد. اینترفیس تانل به پروتکل یا نحوی انتقال خاصی وابسته نیست و به عنوان یک معماری طراحی شده است که سرویس های لازم برای برقراری یک ارتباط point to point استاندارد را فراهم کند. تانل به عنوان یک لینک point to point باید هر دو نقطه انتهایی آن به تنظیم گردد.

Image

تانل زدن یک مکانیزم برای حمل یک بسته از یک پروتکل توسط یک پروتکل دیگر است. پروتکل های که حمل می شوند پروتکل های passenger (مسافر) نامیده می شود و پروتکل های که برای حمل این پروتکل های passenger ، استفاده می شوند را پروتکل های transport می نامند. GRE به عنوان یک مکانیزم قابل استفاده برای تانل است که از IP به عنوان پروتکل Transport استفاده می کند و می توان از آن برای حمل پروتکل های مختلف استفاده کرد تانل مانند یک لینک مجازی Point to Point عمل می کند که دارای دو نقطه انتهای است که توسط tunnel source و tunnel destination در هر دو سمت آن شناسایی می شود.
یک مثال برای تانل این است که ما یک سازمان با دفتر مرکزی و چند شعبه داریم برای این سازمان می خواهیم یک پروتکل مسیریابی مانند RIP ، OSPF یا EIGRP اجرا کنیم که بین شعبه ها و دفتر مرکزی عملی مسیریابی انجام شود. لینک ارتباطی بین دفتر مرکزی و شعبه ها از چند روتر Service Provider عبور می کند. در نتیجه با توجه به اینکه برای برقراری همسایگی پروتکل های مسیریابی ذکر شده به یک ارتباط مستقیم نیاز داریم همسایگی بین روترهای دفتر مرکزی و شعبه ها برقرار نمی شود. اما استفاده از تانل این مشکل را برطرف می کند. استفاده از تانل مانند این است که یک ارتباط Point to Point بین دو دستگاه ایجاد کنیم در نتیجه دو روتر می توانند رابطه همسایگی خود را برقرار کنند. GRE یک تکنیک تانل زنی ساده است که این کار را به راحتی برای ما انجام می دهد.
GRE یک پروتکل برای تانل زدن است که توسط سیسکو توسعه یافته است و می تواند پروتکل های مختلف لایه شبکه را در داخل یک لینک Point to Point روی بستر IP کپسوله کند. تانل (Generic Routing Encapsulation (GRE همانطور که از نامش پیداست می تواند تقریبا هر نوع دیتایی را encapsulate کرده و آنرا روی اینترفیس های فیزیکی روتر ارسال کند. در واقع GRE می تواند انواع پروتکل های لایه 3 را encapsulate کند که باعث می شود GRE بسیار انعطاف پذیر شود.

Image

نکته : با توجه به اضافه شدن هدر GRE بسته ما دو هدر لایه سه خواهد داشت که در تصویر زیر یک بسته با هدر GRE نمایش داده شده است:

Image

GRE به تنهایی مکانیزمی برای تامین امنیت دیتای که منتقل می کند ندارد اما بسته های GRE را می توان روی یک IPsec VPN ارسال کرد که باعث می شود بسته های GRE به صورت امن ارسال شوند. این نوع پیکربندی معمولا مورد استفاده قرار می گیرد اما IPsec تنها می تواند از بسته های unicast حفاظت کند. این محدودیت باعث مسائلی برای پروتکل های مسیریابی که از IP Multicast استفاده می کنند می شود. خوشبختانه تانل GRE می تواند بسته های IP Multicast را encapsulate کند. در نتیجه بسته های unicast و multicast توسط تانل GRE کپسوله می شوند و همچنین بسته های unicast توسط تانل IPsec محافظت می شوند.
به عنوان مثال تصویر 2-3 را در نظر بگیرید. روتر HQ و Branch نیاز دارند که یک ارتباط همسایگی برای OSPF از طریق شبکه Service Provider ایجاد کنند. علاوه بر این ترافیک ارسالی بین این دو روتر باید محافظت شود. IPsec می تواند از ترافیک IP unicast محافظت کند و OSPF به صورت IP Multicast ارتباط برقرار می کند. بنابراین تمام ترافیک بین HQ و Branch (شامل ترافیک OSPF به صورت Multicast) در تانل GRE کپسوله می شود. بسته های GRE که یک بسته IP unicast هستند به وسیله تانل IPsec ارسال و محافظت می شوند.

Image

 

مزایای GRE :


  • تانل GRE امکان انتقال ترافیک multicast را دارد.
  • تانل GRE اجازه برقراری VPN را روی شبکه های WAN را می دهد.
  • اتصال شبکه های جدا از هم
  • پیاده سازی ساده و آسان
  • به دلیل عدم استفاده از مکانیزم های رمزنگاری منابع کمتری مصرف می کند
  • عبور ترافیک با آدرس Private روی شبکه اینترنت
  • راه حلی برای شبکه هایی که از پروتکل هایی که محدودیت تعداد hop دارند مانند پروتکل RIP
  • امکان عبور پروتکل های مختلف مورد استفاده در شبکه local از طریق یک پروتکل در شبکه backbone
  • تانل GRE امکان انتقال ترافیک IPv6 را دارد.

MPLS چگونه کار می کند؟ – بخش هشتم

در ادامه سری مقالات MPLS در خدمت شما دوستان هستیم.

Forwarding Labeled Packets :


در بخش های قبلی به MPLS label پرداختیم و فهمیدیم label چیست و چگونه مورد استفاده قرار می گیرد و حالا در این بخش می خواهیم نحوی ارسال بسته های label خورده را مورد بررسی قرار دهیم. نحوی ارسال بسته های label خورده نسبت به ارسال بسته های IP کاملا متفاوت است و فقط به بررسی label در LIFB به جای جدول مسیریابی بر نمی گردد. در بحث ارسال بسته های label خورده ، عملیات هایی روی label stack مانند pop ، push و swap انجام می گیرد. که در این قسمت به این عملیات ها می پردازیم.

Label Operation :


امکان اجرای سه عمل pop ، swap و push روی بسته های label خورده وجود دارد. که در تصویر زیر این عمل ها نمایش داده شده است.

Image

LSR با نگاه کردن به label بالای label stack بسته دریافتی و مقایسه آن با مقادیر LFIB متوجه می شود که بسته را چگونه باید ارسال کند. در اینجا LSR مشخص می کند که چه عملیاتی (pop , push , swap) روی بسته باید انجام گیرد و next hop بعدی که بسته باید به آن ارسال شود چیست؟ اگر عمل swap تعیین شود به این معنی است که یک label جدید جایگزین label بالای label stack می شود. در عمل push یک label جدید جایگزین label بالای label stack می شود و یک یا چند label دیگر به بالای label stack اضافه می شود. عمل pop باعث حذف label بالای label stack می شود.
نکته : LSR هنگام دریافت یک بسته label خورده 20 بیت اول label بالای label stack را نگاه می کند و مقدار بدست آمده را با local labels موجود در LFIB مقایسه می کند.

IP Lookup در برابر Label Lookup :


زمانی که روتر یک بسته IP دریافت کند برای بسته IP lookup انجام می دهد. در IOS سیسکو به این معنی است که آدرس مقصد IP در جدول CEF جستجو می شود. زمانی که روتر یک بسته label خورده دریافت می کند جستجو در LFIB روتر انجام می گیرد. روتر با نگاه کردن به فیلد پروتکل در هدر لایه دو متوجه می شود که بسته ای که دریافت کرده یک بسته IP یا یک بسته label خورده است. اگر بسته با هر یک از دو روش ( Cisco Express Forwarding (CEF یا LFIB ارسال شده باشد می تواند بعد از دریافت توسط روتر با label یا بدون label از روتر خارج شود. در تصویر زیر تفاوت بین CEF و LFIB نمایش داده شده است.

Image

اگر ingress LSR یک بسته IP دریافت کند آنرا lable زده و ارسال می کند که به آن IP-to-label گفته می شود. اگر egress LSR یک بسته label خورده را دریافت کند label آنرا حذف کرده و به عنوان یک بسته IP آنرا ارسال می کند که به آن label-to-IP گفته می شود. حالت دیگر این است که LSR یک بسته label خورده را دریافت و به صورت label زده آنرا ارسال می کند که به آن label-to-label گفته می شود.
در تصویر زیر حالت IP-to-label نمایش داده شده است که ارسال براساس جدول CEF انجام می شود.

Image

بسته های IP به مقصد 10.200.254.4 که وارد LSR شوند با label 18 از پورت ethernet0 خارج می شوند. Next-hop برای این بسته ها 10.200.200.2 می باشد. در اینجا IP-to-label انجام می شود. در IOS سیسکو فقط از CEF Switching برای label بسته ها می توان استفاده کرد و از سایر روش های IP Switching مانند fast switching نمی توان استفاده کرد چون fast switching حافظه ای برای نگه داری اطلاعات مربوط به label ندارد و CEF switching تنها روش IP switching است که قابلیت پشتیبانی از MPLS را دارد به همین خاطر زمانی که از MPLS استفاده می کنیم باید CEF را در روترهای مورد نظر فعال کنیم.
تصویر زیر محتویات LFIB را با دستور show mpls forwarding-table نمایش داده است.

Image

Local label توسط LSR ایجاد و به سایر LSR ها ارسال می شود. به طور مثال این LSR انتظار دارد که بسته های دریافتی یکی از این label ها را در بالای label stack خود داشته باشند. اگر این LSR یک بسته با label 22 دریافت کند آنرا با label 17 جایگزین کرده (swap) و روی پورت Ethernet 0 ارسال می کند. که در این حالت label-to-label انجام می گیرد.
اگر LSR یک بسته با label 16 دریافت کند تمام label های آنرا حذف می کند (pop) چون untag (بودن label) به عنوان label خروجی برای این label در LFIB در نظر گرفته شده است. که label-to-IP انجام می گیرد. اگر LSR یک بسته با label 18 دریافت کند label بالای label stack را حذف می کند و آنرا ارسال می کند اگر این label تنها label موجود label stack باشد بسته به عنوان یک بسته IP ارسال می شود در غیر اینصورت به عنوان یک بسته label خورده ارسال می شود. در تصویر زیر یک عمل push نمایش داده شده است که یک در اینجا label 20 بسته جایگزین label 23 می شود و label 16 به بسته push می شود.

Image

برای مشاهده تمام تغییرات ایجاد شده در label بسته از دستور show mpls forwarding-table [network] detail می توانید استفاده کنید. در تصویر بالا تفاوت خروجی دستور در صورت استفاده از کلید detail را مشاهده می کنید. در صورت استفاده از کلید detail ، تمام تغییرات در label stack را می توانید مشاهده کنید. از سمت چپ به راست ، می توانید اولین label را ببینید label 20 جایگزین label 23 می شود و سپس label 16 به label stack اضافه می شود. اما بدون کلید detail تنها label 16 را می بینیم که به label stack اضافه می شود.
غیر از سه عملی که قبلا آنها را شرح دادیم یک عمل دیگر تحت عنوان aggregate وجود دارد. زمانی که شما یک تجمیع یا summarization در یک LSR انجام می دهید LSR برای این شبکه های تجمیع شده یک label خاص منتشر می کند اما aggregate در LFIB به عنوان label خروجی نمایش داده می شود چون LSR یک رنج از شبکه ها را تجمیع کرده است و بسته های label خورده دریافتی را نمی تواند با swap کردن label ارسال کند. Label خروجی Aggregate نمایش داده می شود که به این معنی است که LSR باید label بسته دریافتی را حذف کرده و IP lookup برای دقیق تر مشخص کردن شبکه انجام دهد تا بسته ارسال شود. در تصویر زیر محتوای LFIB را در یک روتر egress PE در شبکه MPLS VPN نمایش می دهد.
Egress LSR یک بسته با label 23 دریافت می کند و باید label آنرا حذف کرده و براساس ادرس مقصد IP بسته برای آن IP lookup انجام دهد.

Image

حالا شما متوجه شدید که چگونه یک next-hop خاص را برای یک بسته label خورده تعیین کنید. جدول CEF adjacency نحوی کپسوله کردن در لایه data link را مشخص می کند. این جدول اطلاعات لازم برای ارسال بسته ها در لایه دوم برای LSR بعدی را فراهم می کند.
در تصویر زیر این جدول در یک LSR نمایش داده می شود. این جدول اطلاعات لازم برای ارسال فریم ها را در خود نگه می دارد.

Image

خلاصه ای از عملیات هایی که روی label انجام می شود :

  • Pop : در اینجا label بالای label stack حذف می شود و بسته با label یا بدون آن به عنوان یک بسته IP ارسال می شود.
  • Swap : در اینجا label بالای label stack با یک label جدید جایگزین می شود.
  • Push : در اینجا label بالای label stack با یک label جدید جایگزین می شود و یک یا چند label به بالای label stack اضافه می شود.
  • Untagged/No Label : در اینجا label stack حذف شده و بسته بدون label ارسال می شود.
  • Aggregate : در اینجا label stack حذف شده و برای بسته IP lookup انجام می گیرد.

MPLS چگونه کار می کند؟ – بخش هفتم

در ادامه مباحث MPLS در خدمت شما دوستان هستیم.

MPLS Payload :


MPLS label فیلد Network Level Protocol identifier ندارند. این فیلد در فریم های لایه دو وجود دارد و مشخص می کند پروتکل مورد استفاده در لایه سوم چیست. چگونه LSR ها متوجه می شوند که چه پروتکلی پشت label Stack قرار گرفته است یا به عبارتی چگونه LSR ها متوجه می شوند MPLS payload چیست؟ اکثرا LSR ها نیاز به دانستن MPLS Payload ندارند چون آنها یک بسته label خورده را دریافت کرده label بالایی label stack را swap کرده و بسته را روی لینک خروجی خود ارسال می کنند که اینکار مربوط به intermediate LSR یا P Router ها است.
intermediate LSR یا همان LSR های میانی نیاز به دانستن MPLS payload ندارند چون کلیه اطلاعات مورد نیاز برای سوئیچ کردن بسته ها را با نگاه کردن به label بالایی label stack بدست می آورد. اگر label stack بیشتر از یک label داشته باشد ، label های زیر label بالای label stack شاید توسط LSR اختصاص داده نشده باشند و شاید intermediate LSR هیچ شناختی از آنها نداشته باشند و علاوه بر آن LSR شاید نداند که چه MPLS payload در حال انتقال است. چون intermediate LSR تنها به label بالای label stack نگاه می کنند و برای ارسال تصمیم گیری می کنند و این عملکرد هیچ مشکلی به وجود نمی آورد. این روش درست برای ارسال ، براساس label بالایlabel stack است و روترهای میانی باید label از نوع local و remote برای label بالایی بسته دریافتی داشته باشند.
اما egress LSR که تمام label های بسته را حذف می کند باید MPLS payload را بداند. چون باید بسته را براساس MPLS payload بعد از حذف label ها ارسال کند. Egress LSR باید بداند از چه مقدار برای فیلدNetwork Level Protocol identifier برای فریم های خروجی خود استفاده کند. Egress LSR است که local binding را انجام می دهد به این معنی اختصاص local label به یک FEC توسط این LSR انجام می شود و از این label به عنوان label ورودی بسته ها استفاده می کند. بنابراین egress LSR با نگاه کردن به label متوجه می شود که MPLS payload چیست چون این egress LSR است که label برای FEC در نظر می گیرد و متوجه می شود که FEC چیست.

MPLS Label Spaces :


در شکل زیر ، LSR A می تواند label L1 را برای FEC 1 به LSR B اعلام کند و label L1 را برای FEC 2 به LSR C اعلام کند. اما در چه صورتی LSR A می تواند تشخیص دهد که بسته با label L1 را از کدام LSR دریافت کرده است. در این مثال LSR B و LSR C به صورت مستقیم به LSR A توسط یک لینک Point to Point متصل هستند که باعث می شود به سادگی توسط MPLS تشخیص داده شود. با توجه به دریافت بسته روی اینترفیس خاص ، این label توسط اینترفیس منحصر به فرد می شود که به آن per-interface label space گفته می شود. اگر per-interface label space مورد استفاده قرار گیرد بسته فقط براساس label ارسال نمی شود و در واقع براساس label و اینترفیس ورودی عمل ارسال انجام می گیرد.

Image

احتمال دیگر این است که label توسط interface منحصربفرد نمی شود. این حالت per-platform label space نامیده می شود. به تصویر زیر توجه کنید در این مثال ، label L1 توسط LSR A برای FEC1 به LSR A,B اعلام می شود. LSR A برای FEC 2 باید Label غیر از label L1 در نظر بگیرد. در صورت استفاده از per-platform label space بسته ها بودن در نظر گرفتن اینترفیس وردوی تنها براساس label ارسال می شوند.

Image

در IOS سیسکو از per-interface label space برای cell mode و از per-platform label space برای farme mode استفاده می کند.

Different MPLS Modes :


عملیات مربوط به label ها در MPLS به بخش های مختلفی تقسیم می شود که عملکرد LSR ها را در این سه بخش مورد بحث قرار می دهیم :

  • Label distribution mode
  • Label retention mode
  • LSP control mode

هر روش ویژگی های خاص خودش را دارد که به آنها می پردازیم.

Label Distribution Modes :


معماری MPLS برای پخش label دو روش دارد:

  • Downstream-on-Demand (DoD) label distribution mode
  • Unsolicited Downstream (UD) label distribution mode

در روش DoD ، هر LSR در یک LSP از Next-hop LSR خود یک label برای FEC در خواست می کند. Next-hop LSR را Downstream LSR می نامند و همان Next-hop Router در جدول مسیریابی است.
در روش UD ، هر LSR به LSR های همسایه خود label ها را اعلام می کند بودن اینکه برای آنها درخواستی شده باشد. در این روش LSR از همسایه های خود remote label دریافت می کند.
در صورت استفاده از روش DoD در LIB تنها یک remote label می بینید در صورتی که در روش UD ، در LIB احتمالا بیش از یک remote label خواهید دید. روش پخش label به اینترفیس و نحوی عملکرد آن بستگی دارد.

Label Retention Modes :


این بخش به نحوی نگه داری label ها می پردازد و دو Label Retention Modes وجود دارد :

  • Liberal Label Retention (LLR) mode
  • Conservative Label Retention (CLR) mode

در روش LLR ، یک LSR همه remote label دریافتی را در LIB نگه داری می کند. این remote label ها در LFIB مورد استفاده قرار می گیرند اما فقط یک remote label مورد استفاده قرار می گیرد. در نتیجه تمام این remote label ها مورد استفاده قرار نمی گیرند. پس دلیل نگه داری از remote label هایی که مورد استفاده قرار نمی گیرند چیست؟ مسیریابی در شبکه بصورت پویا است و هر زمان احتمالا تغییر در توپولوژی مسیریابی شبکه وجود دارد. به طور مثال ، قطع شدن یک لینک ارتباطی یا خراب شدن یک روتر باعث تغییر در توپولوژی مسیریابی می شود که نتیجه آن احتمال تغییر next-hop برای یک FEC می شود. در این زمان remote label برای next-hop جدید در LIB وجود دارد و LFIB به سرعت بروز می شود و label جدید برای خروجی مشخص می شود.
در روش CLR ، یک LSR همه remote label را در LIB نگه داری نمی کند و تنها remote lable که به یک FEC اختصاص داده را نگه داری می کند.
به طور خلاصه ، روش LLR امکان تطبیق سریع با جدول مسیریابی را می دهد در حالیکه روش CLR تعداد کمتری label نگه داری می کند که نتیجه آن مصرف کمتر از حافظه روتر می باشد.

LSP Control Modes :


این قسمت به نحوی ساخت local label می پردازد که از دو طریق قابل انجام است :

  • Independent LSP Control mode
  • Ordered LSP Control mode

LSR می تواند local label را برای FEC به صورت مستقل از سایر LSR ها ایجاد کنند. که به آن Independent LSP Control mode گفته می شود. در این روش به محض اینکه هر LSR یک FEC را تشخیص دهد برای آن remote label ایجاد می کند. معمولا زمان اضافه شدن یک شبکه به جدول مسیریابی اینکار انجام می شود.
در Ordered LSP Control mode یک LSR فقط زمانی local label برای یک FEC درست می کند که تشخیص دهد برای آن FEC به عنوان egress LSR است یا LSR از next-hop این FEC یک remote label برای آن دریافت کند.
اشکال روش Independent LSP Control این است که LSR ها قبل از اینکه تنظیمات LSP کامل شده باشد شروع به label زدن و ارسال بسته ها می کنند در نتیجه بسته ها به طریقی که باید ارسال شوند ارسال نمی شوند. اگر تنظیمات LSP کامل نشده باشد امکان دارد بسته ها به روشی که ما مد نظرمان است ارسال نشوند و یا حتی اصلا به مقصد نرسیده و drop شوند.
یک مثال برای این دو روش ، به LDP به عنوان روش پخش label ها برای یک شبکه IGP توجه کنید. اگر LSR از روش Independent LSP Control mode استفاده کند باید به هر شبکه موجود در جدول مسیریابی خود یک local label اختصاص دهد. اگر LSR از روش Ordered LSP Control mode استفاده کند. LSR در صورتی به شبکه های IGP جدول مسیریابی خود local label اختصاص می دهد که آن شبکه به عنوان Connected خود در جدول مسیریابی مشخص شده باشد یا برای آن شبکه ، از روتر next-hop آن ، remote lablel دریافت کند. IOS سیسکو از Independent LSP Control mode استفاده می کند.

MPLS چگونه کار می کند؟ – بخش ششم : پیاده سازی یک سناریوی عملی

در بخش های قبلی با تکنولوژی MPLS و بخشی از ماکنیزم کاری آن آشنا شدیم. در این بخش می خواهیم جهت آشنایی و درک بهتر یک سناریو را به صورت عملی پیاده سازی کنیم تا با این مفاهیم بهتر آشنا شویم.

سناریو :


برای درک بهتر مباحث گفته شده یک سناریو را با هم حل می کنیم. به تصویر زیر دقت کنید روترهای R1 تا R5 به عنوان روترهای شبکه MPLS هستند روترهای R1 و R5 به عنوان روترهای Edge LSR نقش ایفا می کنند و سایر روترها به عنوان LSR های میانی هستند. در این شبکه می خواهیم از PC بسته ای را به سرور که در شبکه 10.0.0.0/8 است ارسال کنیم و نحوی ارسال و label زدن بسته را مورد بررسی قرار دهیم.

Image

جهت توزیع label ها از پروتکل LDP استفاده شده است و بین روترها از پروتکل مسیریابی EIGRP بهره گرفته ایم. با در نظر گرفتن شرایط یکسان لینک ها بین روتر ها ، مسیر پایین به عنوان بهترین مسیر برای ارسال بسته ها از R1 به R5 می باشد و به عنوان LSP انتخاب می شود.
در ابتدا local label توسط هر روتر برای شبکه ها موجود در جدول مسیریابی تعیین می گردد این کار توسط خود روتر انجام می شود در این مثال شماره label های انتخاب شده توسط هر روتر برای شبکه 10.0.0.0/8 به شرح زیر است :

Image

نکته : روترها می توانند برای یک شبکه label های یکسان داشته باشند.
در مرحله بعدی این local label ها توسط پروتکل LDP به همسایه ها اعلام می شود به طور مثال R1 به R2 و R3 اعلام می کند که label 19 را برای شبکه 10.0.0.0 انتخاب کرده است و R2 به R1 و R4 اعلام می کند که label 20 را برای شبکه 10.0.0.0 انتخاب کرده است. و اینکار توسط سایر روترها نیز انجام می گیرد. سپس هر روتر local label و remote label هایی را که از همسایه های خود دریافت کرده است را در جدولی تحت عنوان LIB ذخیره می کند. با هم جدول LIB روترها را ببینیم :

Image

نکته : روتر R5 به عنوان روتر egress LSR برای شبکه 10.0.0.0/8 می باشد در نتیجه اگر بسته ای برای این شبکه به آن برسد label آنرا pop کرده و بسته را بدون label ارسال می کند. با توجه به این ویژگی می توان بسته را در hop ما قبل آخر بدون زدن label ارسال کرد چون درصورتی که label هم داشته باشد روتر R5 آنرا pop می کند. در این مثال روترهای R3 و R4 می تواند بسته های شبکه 10.0.0.0 را برای R5 بدون label ارسال کنند. حالا R3 و R4 از کجا متوجه شوند که hop ما قبل آخر هستند؟ اخرین روتر که در اینجا R5 است به همسایه های خود یعنی R2 و R4 اعلام می کند که آخرین روتر است در نتیجه از این به بعد R2 و R4 بسته های مربوط به این شبکه را بدون label ارسال خواهند کرد. به این عمل (penultimate hop popping (PHP گفته می شود.
بعد از اینکه LIB تشکیل شد باید LFIB ایجاد شود. همانطور که قبلا اشاره شد برای ایجاد LFIB از LIB و جدول مسیریابی استفاده می کنیم. به این صورت که برای هر شبکه ما چند label در LIB داریم. برای انتخاب یک label از بین label های موجود ، جدول مسیریابی را بررسی می کنیم و hop بعدی برای رسیدن به این شبکه را پیدا می کنیم و از label که توسط آن برای ما ارسال شده است استفاده می کنیم. در این مثال R1 در جدول LIB خود 2 عدد remote label دارد که از روترهای R2 و R3 آنها را دریافت کرده است. برای انتخاب یکی از این دو به جدول مسیریابی خود مراجعه می کند و همانطور که قبلا گفتیم مسیر پایین که از روتر R3 می گذرد بهترین مسیر است. در نتیجه label 20 را که از R3 دریافت کرده است را برای LFIB در نظر می گیرد و اینکار توسط سایر روترها نیز انجام می شود.
جدول LFIB روترها به شرح زیر است :

Image

جدول LFIB ما تشکیل شده است و روترها می توانند براساس label بسته ها را به مقصد ارسال کنند. برای بررسی دقیق تر یک بسته از PC به Server ارسال می کنیم و عملکرد شبکه را در قبال آن بررسی می کنیم:
بسته ارسالی از PC به دست R1 می رسد. R1 بسته را تا لایه شبکه باز می کند و IP مقصد بسته را بررسی می کند. با دیدن آدرس 10.0.0.1 و مقایسه آن با جدول مسیریابی متوجه می شود که بسته را باید به روتر R3 ارسال کند. سپس با استفاده از جدول LFIB متوجه می شود که باید به بسته Label 20 زده و آنرا ارسال کند. در اینجا روتر R1 به عنوان ingress LSR شناخته می شود. در تصویر زیر خروجی R1 به R3 توسط نرم افزار وایرشارک capture شده است و همانطور که می بینید یک بسته ICMP از آدرس 192.168.1.2 به سمت 10.0.0.1 با label 20 در حال ارسال است.

Image

بسته ارسالی به دست روتر R3 می رسد بسته تا لایه دوم باز شده و با دیدن label 20 آنرا با جدول LFIB خود مقایسه می کند و متوجه می شود که بسته را باید به روتر R5 ارسال کند و چون روتر R5 خود را به عنوان اخرین hop معرفی کرده است label 20 را pop کرده و بسته را بدون label به سمت روتر R5 ارسال می کند.
حالا بسته به دست R5 بدون label می رسد و R5 آنرا تا لایه سوم باز می کند و با دیدن IP مقصد و مقایسه آن با جدول مسیریابی آنرا ارسال می کند.
یکبار دیگر این مراحل را بررسی کنیم اما اینبار مسیر بالا را به عنوان بهترین مسیر در نظر می گیریم.
با همان روش قبل جدول LFIB را پر می کنیم که به صورت زیر تغییر می کند :

Image

بسته ارسالی از PC به دست R1 می رسد. R1 بسته را تا لایه شبکه باز می کند و IP مقصد بسته را بررسی می کند. با دیدن آدرس 10.0.0.1 و مقایسه آن با جدول مسیریابی متوجه می شود که بسته را باید به روتر R2 ارسال کند. سپس با استفاده از جدول LFIB متوجه می شود که باید به بسته Label 20 زده و آنرا ارسال کند
بسته ارسالی به دست روتر R2 می رسد بسته تا لایه دوم باز شده و با دیدن label 20 آنرا با جدول LFIB خود مقایسه می کند و متوجه می شود که بسته را باید به روتر R4 ارسال کند. درنتیجه label بسته را با label 20 ، swap می کند و آنرا برای R4 ارسال می کند.
بسته ارسالی به دست روتر R4 می رسد بسته تا لایه دوم باز شده و با دیدن label 20 آنرا با جدول LFIB خود مقایسه می کند و متوجه می شود که بسته را باید به روتر R5 ارسال کند و چون روتر R5 خود را به عنوان اخرین hop معرفی کرده است label 20 را pop کرده و بسته را بدون label به سمت روتر R5 ارسال می کند.
حالا بسته به دست R5 بدون label می رسد و R5 آنرا تا لایه سوم باز می کند و با دیدن IP مقصد و مقایسه آن با جدول مسیریابی آنرا ارسال می کند.
در تصویر زیر جدول مسیریابی روتر R1 را مشاهده می کنید :

Image

در تصویر زیر LIB روتر R1 را مشاهده می کنید :

Image

در تصویر زیر جدول LFIB روتر R1 را مشاهده می کنید :

Image

در قسمت بعدی سایر مفاهیم را دنبال خواهیم کرد. موفق و پیروز باشید.

MPLS چگونه کار می کند؟ – بخش پنجم

در ادامه مباحث MPLS در خدمت شما هستیم.

Label Distrbution :


اولین label که توسط ingress LSR به بسته زده می شود به یک LSP تعلق دارد و همچنین مسیری که بسته از میان شبکه MPLS طی می کند مربوط به یک LSP است. Ingress LSR یک یا چند label به بسته می زند و LSR های میانی label بالایی بسته دریافتی را با یک label دیگر swap می کنند و سپس آنرا ارسال می کنند و در نهایت label های LSP توسط egress LSR حذف شده و بسته را ارسال می کند.
به طور مثال IPv4 over MPLS را به عنوان یک نمونه ساده از شبکه MPLS در نظر بگیرد. IPv4 over MPLS شبکه ای است که LSR های آن یک پروتکل مسیریابی IGP مانند EIGRP یا OSPF را اجرا کرده اند. Ingress LSR به آدرس IP مقصد بسته نگاه می کند و براساس مقصد به آن label زده و آنرا ارسال می کند. LSR بعدی و سایر LSR های میانی ، بسته label خورده را دریافت کرده label آنرا به یک label جدید swap می کنند و سپس آنرا ارسال می کنند و در انتها egress LSR بسته را دریافت می کند label آن را pop می کند و سپس روی لینک خروجی خود آنرا ارسال می کند. برای اینکه این شبکه کار کند باید LSR های مجاور قبول کنند که برای هر شبکه IGP از چه label استفاده کنند. بنابراین هر LSR میانی بتواند تشخیص دهد label هر بسته ورودی با چه label باید swap شود. این به این معنی است که باید ماکنیزمی داشته باشیم که به روترهای بگویم برای یک بسته از کدام label استفاده کند. Label ها به صورت محلی بین هر جفت روتر مجاور تعیین می شوند و چیزی به عنوان Golobal label در سرتاسر شبکه نداریم. برای این روترهای مجاور سر اینکه برای هر شبکه از چه label استفاده شود توافق کنند باید یک ارتباط بین آنها تشکیل شود. به عبارت دیگر روترها نمی دانند که برای ارسال هر بسته که دریافت کرده اند از چه label استفاده کنند و این باعث می شود به پروتکل های label distribution نیاز پیدا کنیم.
به دو روش امکان پخش کردن label ها وجود دارد :

  • سوار کردن label ها روی پروتکل مسیریابی موجود
  • داشتن پروتکل مستقل برای پخش label ها

 

سوار کردن label ها روی پروتکل مسیریابی موجود :


مزیت اول روش این است که شما نیاز به یک پروتکل جدید در LSR ها ندارید اما پروتکل مسیریابی موجود برای حمل label ها نیاز به گسترش دارند و همیشه این کار آسانی نیست. مزیت بزرگ حمل label ها توسط پروتکل مسیریابی این است که همیشه مسیریابی و label distribution با هم sync هستند و به این معنی است که که شما هیچ وقت labelی ندارید که شبکه آن از بین رفته یا برعکس همیشه برای همه شبکه ها ، label دارید. اجرای پروتکل های مسیریابیdistance vector ساده است. چون هر روتر برای هر شبکه ، به همسایه خود مسیر اعلام می کند و روتر برای هر شبکه یک label در نظر می گیرد.
پروتکل مسیریابی link state مانند OSPF به این صورت عمل نمی کنند. در پروتکل های link state به جای اعلام مسیر ، وضعیت لینک ها اعلام می شود و روترها براساس این اطلاعات به صورت مستقل برای انتخاب مسیر تصمیم گیری می کنند و این باعث می شود که برای عملکرد MPLS مشکل ایجاد شود. بنابراین پروتکل های link state نیاز دارند که برای هر شبکه یک label تولید کنند و برای اینکار نیاز به بهینه سازی دارد. از استفاده از یک پروتکل مستقل برای پخش label ها نسبت به این روش ارجحیت دارد.
BGP به عنوان یک پروتکل مسیریابی قادر است که پخش label ها را انجام دهد. از این پروتکل عمدتا جهت پخش label ها در MPLS VPN استفاده می شود.

داشتن پروتکل مستقل برای پخش label ها :


در روش دوم برای پخش label ها از یک پروتکل مستقل استفاده می شود و مزیت آن مستقل بودن از پروتکل های مسیریابی است. در این روش هر پروتکل مسیریابی می تواند استفاده شود چه بتواند label را پخش کند یا نتواند ، چون یک پروتکل مستقل وظیفه پخش label ها را برعهده دارد و پروتکل مسیریابی وظیفه پخش شبکه ها را برعهده دارد. تنها عیب این روش نیاز به اجرای یک پروتکل جدید در LSR ها می باشد.
پروتکلی که پخش label ها را برای ما انجام می دهد label distribution protocol یا به اختصار LDP نام دارد. البته این تنها پروتکل برای پخش label نیست. چند نمونه از پروتکل های label به شرح زیر هستند :

  • (Tag Distribution Protocol (TDP
  • (Label Distribution Protocol (LDP
  • (Resource Reservation Protocol (RSVP

TDP که از LDP قدیمی تر است و اولین پروتکل برای پخش label می باشد که توسط سیسکو بکار گرفته شد و اختصاصی این شرکت می باشد. بعدا LDP توسط IETF ارائه شد و به لحاظ عملکرد شبیه TDP است اما دارای قابلیت های بیشتری است. LDP به سرعت توسط سیسکو جایگزین TDP شد و باعث شد TDP منسوخ گردد به همین خاطر در این تنها به LDP اشاره خواهیم کرد.RSVP تنها در MPLS TE بکار می رود.

پخش Label ها با LDP :


برای هر شبکه IGP که در جدول مسیریابی وجود دارد هر LSR برای آن به صورت local یک label در نظر می گیرد. سپس LSR این label ها را برای همسایه های LDP خود ارسال می کند. سپس همسایه که این label ها را دریافت کرده است label های local و remote را در یک جدول مخصوص به نامlabel information base (LIB) نگه داری می کند. هر LSR برای هر شبکه تنها یک label به صورت local دارد یا برای هر شبکه و اینترفیس یک label به صورت Local دارد. اما LSR به طور معمولا بیشتر از یک همسایه دارد در نتیجه بیشتر از یک remote label خواهد داشت.
برای هر شبکه می توان چندین remote label داشت اما LSR باید از بین آنها یکی را برای ارسال انتخاب کند که جدول مسیریابی تعیین می کند hop بعدی برای این شبکه کدام است. از remote label ارسالی توسط LSR که در جدول مسیریابی به عنوان hop بعدی برای این شبکه مشخص شده است استفاده می شود. از این اطلاعات برای ساخت جدول label forwarding information base استفاده می شود با استفاده از این جدول label برای بسته ها مشخص می گردد. در شکل زیر نحوی پخش label ها توسط LDP بین LSR ها برای شبکه 10.0.0.0/8 نمایش داده شده است.

Image

به شکل زیر توجه کنید یک بسته IPv4 به مقصد شبکه 10.0.0.0/8 توسط ingress LSR وارد شبکه MPLS می شود و به آن label 129 می زند و به LSR بعدی ارسال می کند. LSR دوم label 129 بسته دریافتی را با label 17 عوض کرده و آنرا به سمت LSR سوم ارسال می کند. LSR سوم label 17 بسته دریافتی را با label 33 عوض کرده و آنرا به سمت LSR سوم ارسال می کند و اینکار تا خروج بسته از شبکه MPLS ادامه پیدا می کند.

Image

 

(Label Forwarding Instance Base (LFIB :


از جدول LFIB جهت label زدن بسته ها و ارسال آنها استفاده می شود. این جدول با label های ورودی و خروجی سروکار دارد. بسته ورودی دارای یک label از نوع local می باشد که توسط LSR همسایه مورد استفاده قرار گرفته است. بسته با یک remote label از بین remote label های موجود توسط LSR ارسال می شود. تمام remote label ها در LIB قرار دارند که از بین تمام label های موجود در LIB تنها یک label انتخاب و در LFIB قرار می گیرد و انتخاب label به بهترین مسیر موجود در جدول مسیریابی بستگی دارد.
در مثال IPv4 over MPLS برای هر شبکه IPv4 یک label در نظر گرفته شده است. همچنین LFIB می تواند با label هایی کار کند که توسط LDP مشخص نشده باشند به طور مثال در MPLS TE که توسط پروتکل RSVP اینکار انجام می شود یا MPLS VPN که پخش label ها توسط BGP انجام می شود. اما در کل LFIB همیشه برای label بسته ها مورد استفاده قرار می گیرد و مهم نیست به چه روشی این LFIB ایجاد شده است.
نکته : LFIB در هنگام فعال شدن MPLS ایجاد می گردد و از آن به بعد برای ارسال بسته از LFIB استفاده می شود.

MPLS چگونه کار می کند؟ – بخش چهارم

در مقالات قبلی با MPLS و ویژگی های آن آشنا شدیم و در این مقاله می خواهیم نحوی عملکرد آن را مورد بحث قرار دهیم.

Label Switch Router :


یک Label Switch Router یا LSR روتری است که از MPLS پشتیبانی می کند. این روترها قادر هستند که Label های MPLS را درک کنند و بسته های label زده را در لایه دو (دیتا لینک) ارسال یا دریافت کنند. در شبکه MPLS چند نوع LSR داریم که به شرح زیر هستند :

  • Ingress LSR : این نوع روترهای LSR ، بسته هایی که دارای Label نیستند را دریافت می کنند و به آنها label می زنند و آنها را در شبکه MPLS ارسال می کنند. این روترها در لبه شبکه MPLS قرار دارند.
  • Egress LSR : این نوع روترهای LSR ، بسته هایی که دارای label هستند را از شبکه MPLS دریافت می کنند و سپس آنها را ارسال می کنند. این روترها در لبه شبکه MPLS قرار دارند.
  • Intermediate LSR : این نوع LSR ، بسته های label زده شده را دریافت می کند عملیاتی را روی آن انجام می دهد سپس آنرا ارسال می کند. این نوع LSR ، روترهای میانی شبکه MPLS می باشند.

نکته : روترهای ingress LSR و egress LSR به عنوان Edge LSR شناخته می شوند.
نکته : در MPLS VPN روترهای egress LSR و ingress LSR به عنوان provider edge (PE) Router معرفی می شوند. روترهای میانی به عنوان Provider (P) Router معرفی می شوند. این نام ها خیلی معروف شده اند به همین خاطر حتی در شبکه های MPLS از این نام ها استفاده می شود.
نکته : یک بسته می تواند چند label داشته باشد و آنها را در label sack قرار می دهد. Label stack یک پشته است.

LSRها باید بتوانند سه عمل زیر را انجام دهند :

  • Pop : حذف label را pop گویند.
  • Push : اضافه کردن label را push گویند.
  • Swap : جایگزینی label جدید با label که در بالای label stack قرار دارد را swap گویند.

روترهای LSR باید بتوانند قبل از ارسال بسته ها ، label را pop کنند همچنین باید بتوانند به بسته های دریافتی یک label را push کنند. اگر بسته دریافتی دارای label باشد LSR ، label مورد نظر را به label stack اضافه می کند و بعد آنرا ارسال می کند. همچنین اگر بسته label نداشت LSR این label stack را ایجاد می کند و label مورد نظر را به آن push می کند. غیر از موارد فوق LSR باید بتواند swap را نیز انجام دهد. زمانی که یک بسته label زده به دست روتر LSR برسد label که در بالای label stack قرار دارد با label جدید جایگزین می شود.
LSR که به بسته ای که هنوز label نخورده label بزند imposing LSR گفته می شود چون اولین LSR است که label را به بسته می زند. اینکار توسط ingress LSR انجام می شود. LSR که label های یک بسته را خالی می کند و بسته بدون label می کند را disposing LSR گفته می شود. اینکار توسط egress LSR انجام می گیرد.

Label Switched Path :


Label Switched Path یا LSP رشته ای از LSR ها است که بسته label زده را از میان شبکه MPLS عبور می دهند. در واقع LSP مسیری است از میان شبکه MPLS که بسته ها آنرا طی می کنند. اولین LSR برای LSP همان ingress LSR می باشد و همچنین اخرین LSP برای LSP نیز egress LSR می باشد و تمام LSR های بین ingress LSR و egress LSR در LSP همان Intermediate LSR می باشند.
نکته : LSP یکطرفه می باشند به همین خاطر بین دو edge LSR دو LSP می توانند مسیرهای متفاوتی از یگدیگر داشته باشند.
در شکل زیر ، فلش بالای تصویر جهت LSP را از چپ به راست نشان می دهند.

Image

Ingress LSR در یک LSP همیشه به عنوان اولین روتر که به بسته label زده نمی تواند باشد و شاید قبلا توسط یک LSR دیگر label زده شده باشد. نمونه آن LSP تو در تو یا همان nested LSP می باشد که یک LSP در LSP دیگر قرار می گیرد. در شکل زیر نمونه آنرا در شبکه MPLS می بینید. نقطه شروع LSP دوم از سومین LSR می باشد و نقطه پایان آن LSR ماقبل آخر است در نتیجه زمانی که بسته به ingress LSR این LSP برسد از قبل label خورده است. ingress LSR در LSP دوم دومین label را به بسته push می کند و باعث می شود که label stack ما در اینجا دارای دو label باشد. Label بالایی متعلق به LSP دوم یا همان LSP تودرتو و label پایینی متعلق به LSP اول می باشد.

Image

 

Forwarding Equivalence Class :


Forwarding Equivalence Class یا به اختصار FEC گروهی یا جریانی از بسته ها هستند که به یک مسیر خاص متعلق دارند و دارای شرایط یکسانی هستند. همه بسته های که به یک FEC تعلق دارند دارای label یکسان هستند. اما داشتن label یکسان دلیل بر یکسان بودن FEC نمی باشد. چون مقادیر و عوامل دیگری برای تعیین FEC یکسان وجود دارد. شرایط و رفتار متفاوت در ارسال نیاز به داشتن FEC های متفاوت است. روتری که تصمیم می گیرد که هر بسته به کدام FEC تعلق دارد ingress LSR می باشد چون ingress LSR است که به بسته های ورودی label می زند و آنها را دسته بندی می کند.
برخی از نمونه های FEC به شرح زیر هستند :

  • بسته هایی که آدرس لایه سه مقصد آنها یعنی IP Address با یک شبکه خاص یکی است. مقصد همه آنها یک شبکه است.
  • بسته های Multicast که به یک گروه خاص تعلق دارند.
  • بسته های دارای DSCP یکسان
  • فریم های لایه دو که روی یک VC یا Subinterface در ingress LSR دریافت می شوند و در شبکه MPLS منتقل می گردند و از طریق یک VC یا Subinterface در egress LSR حمل می شوند.
  • بسته هایی که IP Address مقصد آنها با یک شبکه که متعلق به BGP است مطابقت پیدا می کنند و همه آنها دارای BGP next hop یکسانی هستند.

نمونه آخر که برای FEC نام برده شد در رابطه با BGP است و یک نمونه قابل توجه است به همین خاطر آنرا بررسی می کنیم. همانطور که گفتیم در ingress LSR تمام بسته هایی که IP Address مقصد آنها با یک مسیر در جدول مسیریابی مربوط به BGP مطابقت پیدا کند و BGP next hop یکسانی داشته باشد به یک FEC تعلق دارد. به این معنی که همه بسته های ورودی به شبکه MPLS براساس BGP next hop خود label می خورند. در شکل زیر یک شبکه MPLS را نشان می دهد که Edge LSR های آن iBGP را اجرا کرده اند.

Image

IP Address مقصد بسته ها هنگام ورود به ingress LSR بررسی می شود. آدرس مقصد همه این بسته ها به شبکه های که توسط BGP شناخته شده اند تعلق دارند. بسیاری از این شبکه ها دارای BGP next hop یکسانی هستند یا به عبارتی دارای egress LSR یکسانی هستند. همه بسته هایی که دارای BGP next hop یکسانی هستند در یک FEC قرار می گیرند و همینطور که قبلا گفته شد همه بسته هایی که به یک FEC تعلق دارند به آنها label یکسانی در ingress LSR تعلق می گیرد.

در قسمت بعدی سایر مباحث مربوط به عملکرد MPLS را تشزیح خواهیم کرد. موفق ، پیروز و itpro باشید.