آشنایی با مفهوم VRF

تکنولوژی Virtual Routing and Forwarding یا به عبارت دیگر VRF برای پشتیبانی از چندین جدول مسیریابی در یک روتر مورد استفاده قرار میگیرد. به این معنی که یک روتر میتواند چندین routing table داشته باشد که هر کدام از آنها کاملا از هم مستقل هستند.به دلیل همین استقلال، اجازه استفاده از آدرس های یکسان (overlap) را نیز دارید. روتر سودار به صورت پیشفرض از VRF پشتیبانی میکند. همان طوری که VLAN می تواند برودکست دامین های جدید بسازد و از هم تفکیک کند روتر هم با VRF میتواند جدوال مسیر یابی مجزا و تفکیک شده ای را تشکیل دهد .
فرض کنید شما یک روتر دارید که همزمان از روی این روتر به چند مشتری سرویس می دهید ، به صورت پیش فرض و بدون استفاده از VRF همه مسیر های مشتریان شما در جدول روتینگ این روتر ثبت می شوند و به همین دلیل این مشتری های شما می توانند با هم ارتباط داشته باشند ، یا اینکه نیاز دارید از یک رنج IP همزمان به چند اینترفیس روتر IP اختصاص دهید که طبیعتا روتر این اجازه را به شما نخواهد داد . این جاست که vrf به کار می آید .

سناریوی زیر را در نظر بگیرید که در آن دو vrf با نام های vrf-red , vrf-blue وجود دارند . برخی ip ها در هر دو vrf وجود دارند . همچنین از trunking در vrf استفاده شده است .

Vrf6

اضافه کردن VRF جدید

برای تنظیم vrf ابتدا باید vrf را با دستور زیر ایجاد کرد :

soodar1(config)# vrf vrf-red
soodar1(config)# vrf vrf-blue
soodar2(config)# vrf vrf-red
soodar2(config)# vrf vrf-blue

قرار دادن اینترفیس در VRF

به شکل زیر می توان اینترفیس ها را در vrf مورد نظر قرار داد :

soodar1(config)# interface ge1
soodar1(config-if)# ip vrf forwarding vrf-red
soodar1(config-if)# ip address 200.1.20.1/24 
soodar1(config-if)# exit

soodar1(config)# interface ge3
soodar1(config-if)# ip vrf forwarding vrf-red
soodar1(config-if)# ip address 192.168.1.1/24 
soodar1(config-if)# exit

-----

soodar1(config)# interface ge2
soodar1(config-if)# ip vrf forwarding vrf-blue
soodar1(config-if)# ip address 200.1.20.1/24 
soodar1(config-if)# exit

soodar1(config)# interface ge4
soodar1(config-if)# ip vrf forwarding vrf-blue
soodar1(config-if)# ip address 192.168.1.1/24 
soodar1(config-if)# exit

soodar2(config)# interface ge2
soodar2(config-if)# ip vrf forwarding vrf-blue
soodar2(config-if)# ip address 192.168.2.1/24 
soodar2(config-if)# exit

soodar2(config)# interface ge3
soodar2(config-if)# ip vrf forwarding vrf-red
soodar2(config-if)# ip address 192.168.2.1/24 
soodar2(config-if)# exit

نکته

دقت شود که با قرار دادن اینترفیس در vrf تمامی ip های آن حذف می شوند .

در زمان استفاده از پروتکل های مسیر یابی نیز به شیوه زیر می توانید از vrf استفاده کنید . در این مثال ما از ospf برای مسیریابی استفاده کرده ایم :

soodar1(config)# router ospf vrf vrf-red
soodar1(config-router)# network 200.1.20.0/24   area 0
soodar1(config-router)# redistribute connected
soodar1(config-if) # end

-----

soodar1(config)# router ospf vrf vrf-blue
soodar1(config-router)# network 200.1.20.0/24   area 0
soodar1(config-router)# redistribute connected
soodar1(config-if) # end
soodar1# write

soodar2(config)# router ospf vrf vrf-red
soodar2(config-router)# network 200.1.20.0/24   area 0
soodar2(config-router)# redistribute connected
soodar2(config-if) # end

-----

soodar2(config)# router ospf vrf vrf-blue
soodar2(config-router)# network 200.1.20.0/24   area 0
soodar2(config-router)# redistribute connected
soodar2(config-if) # end
soodar2# write

vrf trunking

روتر soodar2 نیز دارای vrf-blue , vrf-red می باشد و برای اینکه بتواند از طریق ospf با روتر soodar1 ارتباط بگیرد باید این دو روتر با ۲ اینترفیس جداگانه به هم وصل باشند که در سناریوی ما فقط یک اینترفیس (ge5 در soodar1 و ge1 در soodar2) بین دو روتر وجود دارد . برای رفع این مشکل باید از sub interface استفاده کنیم و هر sub interface را در vrf جداگانه ای قرار دهیم :

soodar1(config)# interface ge5.100
soodar1(config-if)# encapsulation dot1q 100
soodar1(config-if)# ip vrf forwarding vrf-red
soodar1(config-if)# ip address 200.1.2.2/24 
soodar1(config-if)# exit

soodar1(config)# interface ge5.200
soodar1(config-if)# encapsulation dot1q 200
soodar1(config-if)# ip vrf forwarding vrf-blue
soodar1(config-if)# ip address 200.1.2.2/24 
soodar1(config-if)# exit

soodar2(config)# interface ge1.100
soodar2(config)# encapsulation dot1q 100
soodar2(config-if)# ip vrf forwarding vrf-red
soodar2(config-if)# ip address 200.1.2.2/24 
soodar2(config-if)# exit
soodar2(config)# interface ge1.200
soodar2(config)# encapsulation dot1q 200
soodar2(config-if)# ip vrf forwarding vrf-blue
soodar2(config-if)# ip address 200.1.2.2/24 
soodar2(config-if)# exit

بدین ترتیب روتر soodar1 , soodar2 از طریق sub iface های ایجاد شده که هر کدام در vrf جداگانه قرار دارند با هم ارتباط می گیرند و جدول مسیریابی مخصوص به خود را تشکیل می دهند .

پس از اعمال شدن تنظیمات کمی صبر می کنیم تا روتر ها با استفاده از پروتکل ospf جدول Routing را تشکیل دهند . سپس با استفاده از دستور زیر جدول Routing که با استفاده از پروتکل ospf به ازای هر vrf تشکیل شده است را مشاهده می کنیم :

soodar1# sh ip ospf vrf vrf-red route

یا

soodar1# sh ip fib vrf vrf-red

بررسی عملکرد VRF

۱. پس تشکیل جدول مسیریابی توسط ospf باید ۳ جدول جداگانه وجود داشته باشد یکی برای vrf-blue و یکی برای vrf-red و یکی هم جدول مسیریابی default .

۲. ارتباط نود های داخل هر vrf ار بقیه vrf ها جدا باشد . برای مثال نود های n7 ,n8 به server2 وصل شوند و نتوانند به server1 وصل شوند .

حذف VRF

برای حذف تنظیمات vrf کافی است با استفاده از کلمه ‍‍‍‍‍no تنظیمات vrf را در هر بخش که اضافه شده اند را حذف کنید . در زیر چند نمونه آورده شده است :

soodar1(config)# no ip vrf vrf-red
-------
soodar1(config)# interface ge3
soodar1(config-if)# no ip vrf forwarding vrf-red 
-------
soodar1(config)# no router ospf vrf vrf-blue

فعال کردن log های VRF

با دستور زیر می توانید Log های مربوط به vrf را فعال کنید:

soodar1# debug vrf event