MPLS
آشنایی با مفهوم MPLS
MPLS مخفف Multiprotocol Label Switching یک بستر ارتباط خصوصی است و به بیان ساده MPLS عمل سوئچینگ را با استفاده از مکانیزم Label گذاری در بستر روتینگ انجام می دهد . این پروتکل برای این به وجود آمد که مشکل کند شدن Router ها در شبکه های کلان و زیر فشار را با مکانیزمی ساده تر مثل Label زدن به ترافیک هر مشتری حل کند در حالیکه با پیشرفت روتر ها نیاز چندانی به MPLS برای حل این مشکل دیده نشد، از آن به خاطر توانایی های زیاد در Traffic Engineering – Quality of Services و هم چنین Virtual Private Networks و Any-Transport over MPLS AToM استفاده میشود. MPLS در یک لایه خاص از OSI قرار نمی گیرد و عملکرد آن بین لایه دوم (Data link) و لایه سوم (Network) قرار می گیرد به همین خاطر آنرا به عنوان یک پروتکل لایه 2.5 معرفی می کنند.
تنها دستگاهی که از سمت client با ام پی ال اس کار میکند روتر است، پس به عنوان مشترک کار چندانی به ساختار درونی MPLS نداریم و تنها به روتر سمت سرویس دهنده (Provider Edge – PE) متصل شده و به کمک BGP یا هر روش دیگر؛ از شبکه های دیگر خود متصل به MPLS با خبر شده و اطلاعات خود را از میان ابر MPLS عبور میدهیم.
در نسخه فعلی روتر سودار پروتکل mpls و همچنین تونل vpls را پشتیبانی می کند و شما می توانید از آن در شبکه های خود استفاده نمایید .
آموزش راه اندازی MPLS در سودار
برای تست mpls سناریوی زیر را در نظر بگیرید . فرض می کنیم پروتکل ospf از قبل در این سناریو تنظیم شده است .( نحوه تنظیم ospf ) . ما در این بخش فقط نحوه تنظیم پروتکل mpls را در این ۳ روتر برای نمونه شرح می دهیم :
ldp router-id (اختیاری)
پروتکل LDP از ldp router-id برای ارتباط با دیگر روتر های سودار استفاده می کند . اگر router id در پروتکل LDP توسط Admin تنظیم نشده باشد به طور پیش فرض بزرگترین ip اینترفیس های loopback به عنوان ldp router-id استفاده می شود . واگر هیچ ip در اینترفیس های loopback تنظیم نشده باشد بزرگترین ip اختصاص داده شده به اینترفیس های روتر برای ldp router-id استفاده می شود . ما در اینجا به اینترفیس loopback0 آدرس ip اختصاص می دهیم تا به عنوان router-id استفاده شود . البته همانطور که گفتیم این کار اختیاری است و اگر انجام نشود مقدار router-id به صورت خودکار تنظیم می شود.
فعال کردن mpls در اینترفیس ها
1. اختصاص ip به اینترفیس loopback در ابتدا حتما باید یک اینترفیس loopback داشته باشید و به آن ip اختصاص دهید . اینترفیس loopback0 که یک اینترفیس loopback است به صورت پیش فرض در سودار ایجاد شده است و فقط لازم است یک ip دلخواه به آن اختصاص دهید :
soodar(config)# int loopback0
soodar(config-if)# ip address 222.1.1.1/32
2. فعال کردن mpls در اینترفیس به شکل زیر mpls را در اینترفیس مورد نظر فعال می کنیم :
soodar(config)# int ge0
soodar(config-if)# mpls ip
تنظیمات ldp (اختیاری)
تنظیم router-id می توانید با دستورات ldp router-id دلخواه خود را تنظیم کنید
soodar(config)#
soodar(config)# mpls ldp
soodar(config-ldp)# router-id 222.1.1.1
تنظیمات دیسکاوری به طور پیش فرض از بزرگترین IP اینترفیس loopback و در صورت نبود اینترفیس Loopback از یزرگترین IP دیگر اینترفیس ها برای discovery transport-address استفاده می شود اما اگر مایل باشید می توانید ip دلخواه خود را برای آن تنظیم کنید (دقت کنید روتر های همسایه برای برقراری ارتباط LDP حتما باید به این آدرس route داشته باشند)
soodar(config-ldp)# address-family ipv4
soodar(config-ldp-af)# discovery transport-address 5.10.2.111
حال با توجه به توضیحات بالا mpls را در روتر ها اعمال می کنیم :
1. اختصاص ip به اینترفیس loopback0
soodar1(config)# interface loopback0
soodar1(config-if)# ip address 222.1.1.1/32
2. فعال کردن mpls در اینترفیس ها Mpls را در اینترفیس های ge0 , ge1 در فعال میکنیم :
soodar1(config)# int ge0
soodar1(config-if)# mpls ip
3. تنظیمات پروتکل LDP
تنظیم router-id :
soodar1(config)#
soodar1(config)# mpls ldp
soodar1(config-ldp)# router-id 222.1.1.1
تنظیمات دیسکاوری :
soodar1(config-ldp)# address-family ipv4
soodar1(config-ldp-af)#
soodar1(config-ldp-af)# discovery transport-address 222.1.1.1
soodar1(config-ldp-af)# interface ge0
soodar1(config-ldp-af-if)#
soodar1(config-ldp-af-if)# exit
soodar1(config-ldp-af)# interface ge1
soodar1(config-ldp-af) # end
soodar1# write
برای دو روتر دیگر نیز به همین شکل عمل می کنیم . تنظیمات soodar3 , soodar2 را نیز در ادامه آورده ایم اما توضیحات مربوط به هر بخش بدلیل تکراری بودن حذف شده است :
soodar2(config)# interface loopback0
soodar2(config-if)# ip address 222.2.2.2/32
soodar2(config)# int ge0
soodar2(config-if)# mpls ip
soodar2(config-if)# q
soodar2(config)# int ge1
soodar2(config-if)# mpls ip
soodar2(config)#
soodar2(config)# mpls ldp
soodar2(config-ldp)# router-id 222.2.2.2
soodar2(config-ldp)# address-family ipv4
soodar2(config-ldp-af)#
soodar2(config-ldp-af)# discovery transport-address 222.2.2.2
soodar2(config-ldp-af)# interface ge0
soodar2#(config-ldp-af-if)# exit
soodar2(config-ldp-af)# interface ge1
soodar2(config-ldp-af) # end
soodar2# write
soodar3(config)# interface loopback0
soodar3(config-if)# ip address 222.3.3.3/32
soodar3(config)# int ge0
soodar3(config-if)# mpls ip
soodar3(config)#
soodar3(config)# mpls ldp
soodar3(config-ldp)# router-id 222.3.3.3
soodar3(config-ldp)# address-family ipv4
soodar3(config-ldp-af)#
soodar3(config-ldp-af)# discovery transport-address 222.3.3.3
soodar3(config-ldp-af)# interface ge0
soodar3#(config-ldp-af-if)# exit
soodar3(config-ldp-af)# interface ge1
soodar3(config-ldp-af) # end
soodar3# write
مشاهده جدول MPLS
با استفاده از دستورات زیر جدول mpls و همسایه های mpls روتر ها را مشاهده میکنیم :
soodar1# sh mpls ldp neighbor
AF ID State Remote Address Uptime
ipv4 222.2.2.2 OPERATIONAL 222.2.2.2 00:03:26
soodar1# sh mpls ldp binding
AF Destination Nexthop Local Label Remote Label In Use
ipv4 1.1.1.0/24 222.2.2.2 imp-null 16 no
ipv4 2.1.1.0/24 222.2.2.2 16 imp-null yes
ipv4 3.1.1.0/24 222.2.2.2 19 19 yes
ipv4 111.1.1.0/24 222.2.2.2 imp-null imp-null no
ipv4 200.1.2.0/24 222.2.2.2 imp-null imp-null no
ipv4 200.1.3.0/24 222.2.2.2 imp-null 17 no
ipv4 200.2.3.0/24 222.2.2.2 17 imp-null yes
ipv4 222.1.1.1/32 222.2.2.2 imp-null 18 no
ipv4 222.2.2.2/32 222.2.2.2 18 imp-null yes
ipv4 222.3.3.3/32 222.2.2.2 20 20 yes
بررسی عملکرد MPLS
حال با ping کردن ارتباط بین شبکه های روتر ها را تست کنید . با چک کردن بسته ای در حال عبور بین روتر ها ( با استفاده از پورت span ) می توانید label بسته ها را مشاهده کنید و از اعمال شدن پروتکل mpls روی بسته ها اطمینان حاصل کنید .
غیر فعال کردن mpls
برای غیر فعال کردن mpls در روتر کافی است mpls را در اینترفیس هایی که فعال کرده اید غیر فعال کنید . همچنین می توانید پروتکل ldp را کلا در روتر غیر فعال کنید .
غیر فعال کردن mpls در اینترفیس
برای غیر فعال کردن mpls در اینترفیس باید دستور زیر را وارد کنید :
soodar3(config)# int ge0
soodar3(config-if)# no mpls ip
غیر فعال کردن ldp
پس از فعال کردن mpls در روتر به طور خودکار پروتکل ldp تنظیم می شود با غیر فعال کردن mpls در اینترفیس ها ldp دیگر روی آن اینترفیس با دیگر روتر ها صحبت نمی کند . اگر مایلید بعد از غیر فعال کردن mpls در همه اینترفیس ها ، تنظیمات ldp را نیز حذف کنید باید از دستور زیر استفاده کنید (دقت شود این دستور را زمانی استفاده کنید که mpls در همه اینترفیس ها غیر فعال شده باشد).
soodar3(config)# no mpls ldp
MPLS در IPv6
تنظیمات mpls در IPv6 همانند IPv4 می باشد با این تفاوت که به جای عبارت ip باید از ipv6 استفاده کنید برای مثال :
soodar3(config)# int ge0
soodar3(config-if)# mpls ipv6
--------
soodar3(config-ldp)# address-family ipv6
soodar3(config-ldp-af)#
soodar3(config-ldp-af)# discovery transport-address 222.3.3.3
-------
soodar3(config)# int ge0
soodar3(config-if)# no mpls ipv6
نکته
مسیر هایی که یک hop داشته باشند label نمی خورند و implicit-null هستند . بنابراین باید حداقل ۲ hop بین مبدا و مقصد وجود داشته باشد تا label زده شود .