Label Distribution در MPLS چگونه انجام می شود؟

اولین 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 (LFIB) استفاده می شود با استفاده از این جدول label برای بسته ها مشخص می گردد. در شکل زیر نحوی پخش label ها توسط LDP بین LSR ها برای شبکه 10.0.0.0/8 نمایش داده شده است.

به شکل زیر توجه کنید یک بسته 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 ادامه پیدا می کند.

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 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 و اینترفیس ورودی عمل ارسال انجام می گیرد.

احتمال دیگر این است که 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 ارسال می شوند.

در 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 استفاده می کند.

پیمایش به بالا