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 را در این ۳ روتر برای نمونه شرح می دهیم :

Mpls3

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 زده شود .