Nəzəri əsaslar və memarlıq
BGP/MPLS L3VPN (RFC 4364) iki əsas mexanizmə əsaslanır: Route Distinguisher (RD) və Route Target (RT). 1. Route Distinguisher (RD) 64-bitlik prefiksdir; giriş PE-də müştərinin 32-bitlik IPv4 ünvanına əlavə edilərək qlobal unikal 96-bitlik VPNv4 ünvanı yaradır (məsələn, 65000:1:192.168.1.0/24). RD-nin yeganə məqsədi eyni IP-lərin BGP daxilində toqquşmasının qarşısını almaqdır. 2. Route Target (RT) genişləndirilmiş BGP komyunitisidir (Extended Community) və marşrutların hansı VRF-ə daxil olacağını müəyyən edir. Export RT marşrut MP-BGP-yə göndəriləndə vurulur, qəbul edən çıxış PE isə Import RT uyğun gəldikdə marşrutu müştərinin VRF cədvəlinə daxil edir. IPv6 üçün eyni qaydada 192-bitlik VPNv6 (RFC 4659) prefiksləri yaradılır.
RD və RT müxtəlif məsələləri həll edir
Route Distinguisher (RD) prefiksi ümumi MP-BGP cədvəlində unikal edir: 8 bayt RD + IPv4 prefiksi = VPNv4 NLRI (AFI 1, SAFI 128), 8 bayt RD + IPv6 prefiksi = VPNv6 NLRI (AFI 2, SAFI 128). RD marşrutu kimlərə göstərmək olar sualı barədə heç nə demir. Route Target (RT) isə siyasətdir: ixrac edən VRF-in marşruta əlavə etdiyi və idxal edən VRF-in filtr kimi istifadə etdiyi genişləndirilmiş BGP community-dir (8 bayt: tip/alt tip + qlobal administrator + lokal qiymət). Bir marşrut bir neçə RT daşıya bilər, bir VRF isə bir neçə RT-ni idxal və ixrac edə bilər. Full mesh, hub-and-spoke və extranet topologiyalarını məhz RT kombinasiyaları yaradır.
Formatlar və rəqəmlər
- RD/RT tip 0: 2 baytlıq ASN + 4 baytlıq ədəd (65000:100); tip 1: IPv4 ünvanı + 2 bayt (10.255.0.1:100); tip 2: 4 baytlıq ASN + 2 bayt (4 baytlıq AS üçün).
- VPN etiketi 20 bitdir və NLRI daxilində (MP_REACH_NLRI) ötürülür; next hop PE loopback-dir (10.255.0.2), nəqliyyat LSP olmadan əlçatmazdır.
- VPNv6 üçün (6VPE, RFC 4659) next hop IPv4-mapped IPv6 ünvanıdır (::ffff:10.255.0.2), nəqliyyat IPv4 LDP olaraq qalır: nüvə IPv6-nı dəstəkləməyə borclu deyil.
- RT Extended Communities atributunda ötürülür, ona görə BGP sessiyası onu göndərməlidir: Cisco-da vpnv4/vpnv6 daxilində açıq
send-community extendedlazımdır, Junos-da genişləndirilmiş community-lər standart olaraq göndərilir.
Marşrutun CE-dən CE-yə qədər başına gələnlər
- CE-A2 192.168.20.0/24-ü PE2-yə elan edir (static/eBGP/OSPF).
- PE2 marşrutu VRF A-ya yerləşdirir, RD 65000:2 təyin edir, VPN etiketi ayırır, ixrac RT 65000:100 əlavə edir və VPNv4 NLRI-ni RR istiqamətində elan edir (next hop 10.255.0.2).
- RR marşrutu RT-ni yoxlamadan bütün klientlərə əks etdirir: bunun üçün Cisco-da RR-də
bgp default route-target filtersöndürülür, Junos-da bütün marşrutlar saxlanılır (keep allvə ya lokal VRF-in olmaması). - PE1 VPNv4 NLRI-ni qəbul edir və RT-ni yoxlayır: heç bir lokal VRF 65000:100-ü idxal etmirsə, yol atılır (Cisco: RT filtri standart olaraq aktivdir, Junos:
keep allolmadan bgp.l3vpn.0). Bu PE yaddaşını qoruyur, lakin yeni müştəri əlavə edərkən tələ yaradır. - RT uyğun gələrsə, marşrut VRF A.inet.0-a next hop 10.255.0.2, VPN etiketi və LDP nəqliyyat etiketi olan BGP marşrutu kimi düşür.
RD: PE üzrə unikal, yoxsa müştəri üzrə ümumi
- VPN üçün ümumi RD (bütün PE-lərdə 65000:1): RR iki PE-dən bir NLRI görür və yalnız bir ən yaxşı yolu əks etdirir, ona görə balanslaşdırma və ani ehtiyat yol mümkün deyil (add-path lazımdır).
- (VRF, PE) üzrə unikal RD (PE1-də 65000:1, PE2-də 65000:2): iki NLRI paralel yaşayır, RR hər ikisini verir, PE ECMP/ehtiyat yol alır. Bu multihoming üçün tövsiyə olunan təcrübədir.
- RD müxtəlif müştərilərdə eyni olmamalıdır: əks halda üst-üstə düşən prefikslər bir-birini silər (əvvəlki dərsə bax).
RT təyinetmə sxemi
Tipik standart: ASN:100 - müştəri A, ASN:200 - müştəri B, ASN:1xx - hub-and-spoke, ASN:9xx - ümumi xidmətlər. RT və RD reyestri yaradın və onu məlumat kimi aparın (mühəndisin yadında yox): bir rəqəmlik səhv müştərilər arasında sızma yaradır. Bir VRF-də bir neçə RT icazəlidir (extranet), lakin hər əlavə qiymət görünmə zonasını genişləndirir.
VPNv6
VRF-də IPv6 ayrıca address-family ipv6 ilə konfiqurasiya olunur (Cisco: vrf definition daxilində, Huawei: ip vpn-instance daxilində ipv6-family, Junos: eyni instans, A.inet6.0 cədvəli). RD/RT v4 və v6 üçün eyni təyin edilə bilər (daha sadədir), lakin fərqli olanlar da icazəlidir. RR ilə sessiya vpnv6-nı vpnv4-dən ayrıca aktivləşdirməlidir: çatışmayan aktivləşdirmə "IPv4 işləyir, IPv6 işləmir" probleminin tez-tez rast gəlinən səbəbidir. VPNv6 etiketi VPNv4 ilə eyni per-prefix/per-VRF rejimləri üzrə ayrılır.
Qatlar üzrə diaqnostika
- RR ilə
Establishedsessiya varmı və AFI/SAFI razılaşdırılıbmı (show bgp vpnv4 unicast all summary). - Marşrut VPNv4 cədvəlindədirmi və üzərində hansı RT-lər var.
- RT VRF-in idxalı ilə üst-üstə düşürmü.
- Next hop LSP üzrə əlçatandırmı (nəqliyyat etiketi).
- VPN etiketi CEF/forwarding çıxışında görünürmü.
2-ci addımda marşrut yoxdursa - problem ixracda/sessiyadadır; 3-cü addımda - RT-dədir; 4-cü addımda - IGP/LDP-dədir.
Memarlıq sxemi və topologiya
+---------------------+ MP-BGP VPNv4 / VPNv6 Update (PE-1 -> PE-2) +---------------------+
| PE-1 | ==================================================> | PE-2 |
| RD: 65000:1 (Unique)| [96-bit VPNv4 Prefix: 65000:1:10.0.0.0/24] | Match Import RT |
| RT: 65000:100(Export)| [Extended Community: Target: 65000:100] | Imports into VRF |
+---------------------+ [Service Label: 24001] [Next-Hop: 10.255.0.1] +---------------------+