Nəzəri əsaslar və memarlıq
VRF (Virtual Routing and Forwarding) bir fiziki router daxilində bir-birindən tam təcrid olunmuş virtual marşrutlaşdırma cədvəlləri yaratmağa imkan verir. Hər bir VRF müstəqil RIB və FIB cədvəlinə və ona bağlı xüsusi interfeyslərə malikdir. Bu, eyni daxili IP şəbəkələrindən (RFC 1918) istifadə edən müştərilərin (məsələn, həm Müştəri A, həm Müştəri B 192.168.1.0/24 işlədir) toqquşmadan bir fiziki PE routerində xidmət almasını təmin edir. Müştəri tərəfdən paket daxil olduqda router paketin hansı interfeysdən gəldiyinə baxaraq onu həmin müştərinin VRF cədvəlində axtarır (MPLS nüvəsindən gələn paketlər VPN etiketi ilə VRF-ə yönləndirilir). Müxtəlif VRF-lərin və qlobal cədvəlin marşrutları, açıq siyasət (RT, route leaking) icazə verməyənə qədər qarışmır; bu, marşrutlaşdırmanın məntiqi izolyasiyasıdır, firewall və ya şifrələmə deyil.
VRF əslində nədir
VRF ayrıca proses və ya virtual maşın deyil, bir marşrutlaşdırıcı daxilindəki dörd obyektdən ibarət çoxluqdur: öz marşrut cədvəli (RIB), öz yönləndirmə cədvəli (FIB/CEF), üzv interfeyslərin siyahısı və lazım gələrsə PE-CE protokollarının öz nüsxələri (BGP address-family, OSPF prosesi, statik marşrutlar). Yönləndirmə konteksti yalnız daxil olan interfeysə (və ya subinterfeys/VLAN-a) görə seçilir: Gi2 üzərinə gələn paket Gi2-yə məxsus VRF-in FIB-ində axtarılır və başqa heç yerdə axtarılmır. Nüvənin qlobal cədvəli (IGP + LDP) ayrıca kontekst olaraq qalır: VRF-ə salınmış interfeys qlobal cədvəlin üzvü olmaqdan çıxır, buna görə də VRF göstərilmədən ping 172.16.1.2 işləmir.
Üst-üstə düşən ünvanlar: onlar dəqiq harada "yaşayır"
A və B müştəriləri eyni 172.16.1.0/30 birləşmə şəbəkəsindən və eyni 192.168.10.0/24 LAN-dan istifadə edə bilər. PE-də bu təhlükəsizdir, çünki eyni prefiksli iki marşrut müxtəlif RIB-lərdə yerləşir. Problem yalnız nüvəyə çıxışda yaranır: MP-BGP marşrutları ümumi bir cədvəldə daşıyır, burada iki eyni IPv4 prefiksi eyni NLRI olardı və ən yaxşı yol ikincisini silərdi. Həll Route Distinguisher-dir: IPv4 prefiksinə 8 bayt RD əlavə olunur və 12 baytlıq VPN-IPv4 ünvanı (VPNv4 NLRI) alınır; prefiks uzunluğu 64 + IPv4 prefiksinin uzunluğu kimi hesablanır. RD 65000:1 + 192.168.10.0/24 və RD 65000:3 + 192.168.10.0/24 iki fərqli NLRI-dir, hər ikisi BGP RR-də qalır və ən yaxşı yolun seçimində rəqabət aparmır.
RD üç tipdə olur: tip 0 (2 baytlıq ASN : 4 baytlıq nömrə), tip 1 (IPv4 ünvanı : 2 baytlıq nömrə), tip 2 (4 baytlıq ASN : 2 baytlıq nömrə). RD idxal/ixrac siyasətini müəyyən etmir - bunu Route Target edir (növbəti dərs). Praktiki qayda: RD (VRF, PE) üzrə unikal olsun; onda RR bir müştərinin marşrutunu iki PE-dən iki fərqli NLRI kimi görür və multipath və sürətli konvergensiya üçün hər ikisini bütün PE-lərə göndərə bilər.
Etiketlər: VRF verilənlər müstəvisində nəyi gizlədir
Hər ixrac olunan marşrut üçün PE VPN etiketi (20 bit) ayırır və onu VPNv4 NLRI ilə birlikdə MP_REACH_NLRI-yə yerləşdirir. Ayırmanın üç rejimi var:
- per-prefix (per-route): hər prefiksə bir etiket. Çıxış PE etiketə görə next hop-u və interfeysi dərhal bilir, əlavə IP lookup lazım deyil. Mənfi cəhət - böyük cədvəllərdə etiket sərfidir (Cisco-da bu standart rejimdir, Huawei-də də standart per-route-dur).
- per-VRF: bütün VRF üçün bir etiket. Etiketlərə qənaət olunur, lakin etiketi çıxardıqdan sonra çıxış PE həmin VRF-in FIB-ində IP lookup etməlidir (Cisco:
mpls label mode vrf A protocol bgp-vpnv4 per-vrf, Huawei:apply-label per-instance, Junos:vrf-table-label). - per-next-hop (per-CE): (VRF, CE next hop) cütü üçün bir etiket; Junos
vrf-table-labelolmadan standart olaraq belə işləyir. Etiketlərin sayı ilə sürət arasında kompromisdir.
per-VRF-in yan təsiri: çıxış PE təyinat IP üzrə lookup edir, bu da VRF filtrlərini və uRPF-i tətbiq etməyə imkan verir, lakin köhnə platformalarda recirculation tələb edir (Junos: vt- tunel interfeysi və ya virtual loopback).
A1 -> A2 paketinin üst-üstə düşən iki VRF üzərindən yolu
- CE-A1-dən gələn paket
Gi2-yə çatır; interfeys VRF A-ya məxsusdur, ona görə lookup FIB A-da aparılır. - PE2-dən gələn BGP marşrutu tapılır (RD 65000:2, VPN etiketi 24 + next hop 10.255.0.2). 10.255.0.2-yə nəqliyyat etiketi qlobal LFIB-dən (LDP) götürülür.
- Giriş PE [LDP etiketi, VPN etiketi] steki əlavə edir, P1 xarici etiket üzrə swap/PHP edir və müştəri IP-sinə baxmır.
- Çıxış PE VPN etiketinə görə VRF A-nı (və ya konkret next hop-u) müəyyən edir və paketi CE-A2-yə verir. B üçün eyni IP paketi başqa VPN etiketi ilə gəlir və başqa VRF-ə düşür.
İzolyasiya sərhədləri və sızmaların tipik mənbələri
- İzolyasiya yalnız PE-nin verilənlər müstəvisində və BGP-də RD/RT vasitəsilə işləyir. İki müştərinin idxal RT-si təsadüfən eyni olarsa, marşrutlar aralarında axır (RT dəyişdirilmədən konfiqurasiya blokunun kopyalanması ən çox rast gəlinən səbəbdir).
- Junos-da
instance-type virtual-routerayrıca cədvəl yaradır, lakin MP-BGP VPN-də iştirak etmir və RD/RT-si yoxdur; L3VPN üçüninstance-type vrflazımdır. - Cisco-da
address-family ipv4olmadanvrf definition(multi-protocol) IPv4 üçün aktiv olmayan VRF yaradır - orada marşrutlar görünməyəcək. - İnterfeysdə
vrf forwardingIP ünvanını silir (IOS-XE "% Interface ... IPv4 disabled and address(es) removed" mesajını verir), Huawei-dəip binding vpn-instanceilə eyni şey baş verir; əmrlərin ardıcıllığı: əvvəlcə bağlama, sonra ünvan. - Miqyas: hər VRF bir RIB/FIB/BGP cədvəli əlavə edir; PE-də müştəri marşrutlarının sayı məhdudlaşdırılır (maximum-routes), əks halda tam cədvəli olan bir müştəri PE-nin TCAM-ını tükədir.