Önceki yazıda tek müşterili bir VPRN kurmuştum. Bu yazıda asıl soruyu soruyorum: iki müşteri birebir aynı IP’leri kullanıyorsa ne olur? Gerçek hayatta bu çok normal. İki farklı şirketin ikisi de 172.16.10.0/24 ya da 10.100.1.1 kullanabilir. Operatörün omurgası bunları karıştırmadan taşıyabilmeli.

Cevap: RD ve RT. İkisi de ilk bakışta aynı şeye benziyor, ama farklı iş yapıyorlar. Bu yazı o farkı görmek için.

Not: Topoloji önceki yazıdaki laboratuvarın üstüne ekleme. Nokia tarafındaki karşılığı Nokia VPRN yazısında var, en altta kısa bir eşleme tablosu koydum.

Roller: P, PE ve CE

Laboratuvardaki her router bu üç rolden birini oynuyor. Paketin yolunu anlamak için önce bunları oturtmak lazım.

RolRouter’larNe yapar
CE (Customer Edge)R5, R6 (müşteri A), R7, R8 (müşteri B)Müşterinin kendi router’ı. MPLS’ten, VRF’ten habersiz; düz IP konuşur.
PE (Provider Edge)R1, R4Operatörün kenarı. Müşteriyi VRF’e bağlar, rotaları MP-BGP (VPNv4) ile taşır, pakete etiket giydirir.
P (Provider)R2, R3Omurga. Müşteri rotası bilmez, VRF’i yoktur. Sadece dış etikete bakıp paketi iletir.

Bu yüzden yeni müşteri eklerken P router’lara dokunmuyoruz: onlar için trafik sadece “1.1.1.1’e giden etiketli paket”.

1. Mantık: iki daire, iki müşteri

Bunu bir apartman gibi düşün. İki aile (müşteri A ve B) iki ayrı dairede oturuyor, ikisinin de kapısında “No: 1” yazıyor. Kimse karışmıyor, çünkü bina kapısındaki zil panosu daireyi ayırıyor.

  • VRF (VPN instance): Dairenin kendisi. Müşteriye özel ayrı routing tablosu.
  • RD (Route Distinguisher): Rotanın başına eklenen “daire numarası”. 65000:100:10.200.2.1/32 ile 65000:200:10.200.2.1/32 BGP için iki ayrı rota. RD yalnızca benzersizlik sağlar, kimin neyi alacağına karışmaz.
  • RT (Route Target): “Bu rota hangi dairelere teslim edilsin?” etiketi. Export eden PE rotaya RT’yi yapıştırır, import eden PE sadece kendi VRF’inin RT’siyle eşleşenleri içeri alır.

Kısacası: RD çakışmayı önler, RT dağıtımı yönetir. İzolasyonun asıl bekçisi RT.

2. Topoloji ve IP planı

Önceki laboratuvar aynen duruyor (R1 = PE1, R2/R3 = P, R4 = PE2, R5/R6 = müşteri A). Üstüne iki CE ekliyorum: R7 ve R8, müşteri B.

RouterRolMüşteriLoopback1
R5CE1A10.100.1.1/32
R6CE2A10.200.2.1/32
R7CE3B10.100.1.1/32
R8CE4B10.200.2.1/32
LinkBlokMüşteri
R5–R1172.16.10.0/24A
R7–R1172.16.10.0/24B
R6–R4172.16.20.0/24A
R8–R4172.16.20.0/24B

Bilerek her şey aynı: loopback adresleri de, link blokları da. Tek farklı olan, hangi VRF’e ait olduğu.

PE’lerde artık üç arayüz kullanılıyor (omurga, müşteri A, müşteri B). AR1220’de iki GE port var, üçüncü için AR2220 kullan (GE0/0/2) ya da cihaza bir arayüz modülü ekle. Aşağıda GigabitEthernet0/0/2 yazdım, modül eklersen arayüz adını ona göre değiştir.

Müşteri AMüşteri B
VPN instanceVPRN_SERVICE (önceki yazıdan)VPRN_B
RD65000:10065000:200
RT (import/export)65000:10065000:200
PE’de arayüzGE0/0/0GE0/0/2

3. Kurulum

Omurga (OSPF, LDP) ve müşteri A hiç değişmiyor. Sadece yeni müşteriyi ekliyoruz.

Adım 1: PE’de ikinci VPN instance

R1 (PE1):

system-view
ip vpn-instance VPRN_B
 ipv4-family
  route-distinguisher 65000:200
  vpn-target 65000:200 both
  quit
 quit
interface GigabitEthernet0/0/2
 ip binding vpn-instance VPRN_B
 ip address 172.16.10.1 24
 quit
ip route-static vpn-instance VPRN_B 10.100.1.1 32 172.16.10.2
return

Dikkat: GigabitEthernet0/0/0 ve GigabitEthernet0/0/2 arayüzlerine aynı IP (172.16.10.1/24) verdik. Normalde bu “IP çakışması” demek, ama arayüzler farklı VRF’lerde olduğu için sorun yok. ip binding hâlâ IP’den önce yazılmalı, yoksa bağlama IP’yi siler.

R4 (PE2):

system-view
ip vpn-instance VPRN_B
 ipv4-family
  route-distinguisher 65000:200
  vpn-target 65000:200 both
  quit
 quit
interface GigabitEthernet0/0/2
 ip binding vpn-instance VPRN_B
 ip address 172.16.20.1 24
 quit
ip route-static vpn-instance VPRN_B 10.200.2.1 32 172.16.20.2
return

Adım 2: Yeni VRF’i BGP’ye anlatmak

İki PE’de de (R1 ve R4):

system-view
bgp 65000
 ipv4-family vpn-instance VPRN_B
  import-route static
  quit
 quit
return

VPNv4 komşuluğu zaten kurulu, yeni bir peer yazmıyoruz. Her yeni VRF için sadece bu blok gerekiyor.

Adım 3: CE’ler

R7 (CE3) ve R8 (CE4) düz router. R7:

system-view
sysname R7
interface GigabitEthernet0/0/0
 ip address 172.16.10.2 24
 quit
interface LoopBack1
 ip address 10.100.1.1 32
 quit
ip route-static 0.0.0.0 0 172.16.10.1
return

R8 aynı mantık: arayüz 172.16.20.2/24, loopback 10.200.2.1/32, varsayılan rota 172.16.20.1.

4. Doğrulama

Aynı prefix, iki ayrı rota

PE2’de BGP VPNv4 tablosuna bak:

<R4>display bgp vpnv4 all routing-table

Beklenen: 10.100.1.1/32 için iki ayrı blok görmelisin. Biri Route Distinguisher: 65000:100 altında, diğeri Route Distinguisher: 65000:200 altında. Prefix aynı, RD farklı, BGP bunları iki ayrı rota olarak taşıyor. RD’nin işi tam olarak bu.

Her VRF kendi tablosunu görüyor

<R4>display ip routing-table vpn-instance VPRN_SERVICE
<R4>display ip routing-table vpn-instance VPRN_B

İkisinde de 10.100.1.1/32 IBGP olarak, next-hop 1.1.1.1 ile görünmeli. Aynı prefix, aynı next-hop, iki ayrı tablo. İkisi birbirinden habersiz.

Uçtan uca ping

<R5>ping -a 10.100.1.1 10.200.2.1
<R7>ping -a 10.100.1.1 10.200.2.1

İkisi de cevap almalı. Ama ping’in doğru müşteriye gittiğini nasıl anlarız? Adresler birebir aynı, ping’e bakarak ayırt edemeyiz.

İzolasyon kanıtı: birini kapat

R8’in loopback’ini kapat:

<R8>system-view
[R8]interface LoopBack1
[R8-LoopBack1]shutdown

Sonra tekrar dene:

<R7>ping -a 10.100.1.1 10.200.2.1     (artık cevap gelmemeli)
<R5>ping -a 10.100.1.1 10.200.2.1     (hâlâ cevap vermeli)

Müşteri B’nin hedefi kapandı, müşteri A’nın hedefi hâlâ açık. R5’in ping’i B’nin kapanmasından etkilenmiyorsa, A’nın trafiği B’ye hiç sızmıyor demektir. Bu, aynı adresin iki ayrı yere gittiğinin en net kanıtı. Testi bitirince undo shutdown yapmayı unutma.

5. Kasıtlı hata denemeleri

İzolasyon RT’ye bağlı. RT’yi bozunca ne olduğunu görmek, mantığı oturtmak için iyi.

Deney 1: Import RT’si yanlış

R4’te VPRN_B’nin import RT’sini değiştir:

system-view
ip vpn-instance VPRN_B
 ipv4-family
  undo vpn-target 65000:200 import-extcommunity
  vpn-target 65000:300 import-extcommunity

Beklenen: PE2’nin VRF B’si PE1’den gelen 10.100.1.1/32 rotasını artık içeri almaz (RT eşleşmiyor). Sonuç: R7’den R8’e giden paket hedefe ulaşır ama dönüş yolu yok, çünkü R4’ün VRF B tablosunda 10.100.1.1 yok. Ping başarısız olur. Müşteri A etkilenmez.

Ders: rota BGP’de var ama VRF’e girmedi. Sorun giderirken “BGP’de gördüm ama VRF’te yok” cümlesi çoğunlukla RT uyumsuzluğu demek. Kontrol: display bgp vpnv4 all routing-table içinde rota var mı, display ip routing-table vpn-instance VPRN_B içinde yok mu?

Denemeyi bitirince RT’yi geri al: undo vpn-target 65000:300 import-extcommunity ve vpn-target 65000:200 import-extcommunity.

Deney 2: İki müşteriye aynı RT

Şimdi daha tehlikelisi. VPRN_B’nin RT’sini A’nınkiyle aynı yap (iki PE’de de vpn-target 65000:100 both, eskisini undo ile kaldırarak). RD farklı kalsın (65000:200).

Beklenen: RD farklı olduğu için BGP rotaları ayrı tutar, ama RT aynı olduğu için iki VRF birbirinin rotalarını içeri alır. Aynı prefix için bir VRF’te iki aday rota olur ve BGP bunlardan birini best-path ile seçer. Yani müşteri A’nın trafiği, müşteri B’nin CE’sine gidebilir.

Sonuç: izolasyon bozuldu, ve hiçbir hata mesajı yok. Ping bile çalışıyor olabilir, bu yüzden en sinsi hata bu. Bu deneyi sadece laboratuvarda yap, gerçek ağda aynı RT’yi iki müşteriye vermek ciddi bir veri sızıntısı olur.

Her iki deneyde de çıktıyı kendin gör, çünkü hangi rotanın seçildiği (best-path) tie-break’e kalıyor ve laboratuvarına göre değişebilir.

Not: Bu iki denemenin sonuçları mantıktan çıkarılmış beklentilerdir; Deney 2’de hangi rotanın seçileceği tie-break’e kalıyor. Kendi laboratuvarında çıktıyı mutlaka kontrol et.

6. Paketin yolculuğu: etiketler nerede değişiyor?

R5’ten (müşteri A) R6’ya giden bir paketin hikâyesi, soldan sağa:

  1. CE → PE (R5 → R1): Düz IP paketi. Etiket yok. R1 paketin geldiği arayüzün VRF’ine (VPRN_SERVICE) bakar.
  2. PE girişi (R1): VRF tablosunda hedefin next-hop’u 4.4.4.4 (R4) çıkar. R1 pakete iki etiket giydirir: içte servis (VPN) etiketi (R4’ün bu VRF için verdiği), dışta transport (LDP) etiketi (R4’e giden yol için).
  3. P router’lar (R2, R3): Sadece dış etikete bakar. R2 etiketi SWAP eder. Sondan bir önceki router (R3) dış etiketi POP eder (PHP, penultimate hop popping). İç servis etiketine hiç dokunmazlar.
  4. PE çıkışı (R4): Pakette sadece servis etiketi kalmıştır. R4 bu etikete bakıp “bu paket hangi VRF’in?” sorusunu cevaplar, etiketi atar ve paketi doğru müşteriye (VPRN_SERVICE ya da VPRN_B) iletir.
  5. PE → CE (R4 → R6): Yine düz IP.

Müşteri A ve B’nin adresleri aynı olduğu için paketleri birbirinden ayıran tek şey servis etiketi. Aynı hedef IP, ama iki farklı iç etiket, iki farklı VRF.

Bunu gözle görmek

Etiket değişimini sadece komut çıktısından okumak yerine tarayıcıda canlı izlemek için Simülasyon sayfasını yaptım. Yeni → Huawei → “MPLS L3VPN: 2 müşteri izolasyonu (VPRN)” labını açıyorsun (topoloji hazır, istersen konfigürasyonla birlikte de açılıyor). Sonra:

  • Bir CE’den diğerine ping at; paket kabloların üstünde hareket eder, PUSH / SWAP / POP etiketleri her atlamada görünür.
  • İleri moduyla animasyonu adım adım izle, her atlamada dur ve etiket yığınını oku.
  • Katman sekmelerinden hem VPRN hem MPLS katmanını aynı anda aç.
  • Bir arayüzü shutdown yapıp izolasyonu kendi gözünle gör.

Not: Simülasyondaki etiket numaraları gösterim amaçlıdır, gerçek cihazda LDP’nin dağıttığı sayılar farklı olur. Mantık (PUSH/SWAP/POP, iki katmanlı yığın) gerçeğiyle aynı.

7. Nokia ile karşılaştırma

Nokia’da ikinci müşteri, yeni bir customer ve yeni bir vprn demek:

Ne yapıyoruzNokia SR OSHuawei VRP
İkinci müşteriservice customer 20 createayrı bir müşteri kavramı yok
İkinci VRFservice vprn 400 customer 20 createip vpn-instance VPRN_B
RDroute-distinguisher 65200:400route-distinguisher 65000:200
RTvrf-target target:65200:400vpn-target 65000:200 both
ArayüzVPRN içinde interface + sapip binding vpn-instance VPRN_B
VRF tablosushow router 400 route-tabledisplay ip routing-table vpn-instance VPRN_B
VRF içinden pingping 10.200.2.1 router 400ping -vpn-instance VPRN_B 10.200.2.1

Nokia’da her müşteri kendi vprn bloğunda ve servis ID’siyle ayrılıyor, Huawei’de ayrım VPN instance adıyla yapılıyor. Mantık aynı: bir müşteri = bir VRF = bir RD = bir RT çifti.

8. Özet

  • Aynı IP’leri kullanan iki müşteri aynı omurgada rahat yaşayabiliyor, çünkü her biri kendi VRF‘inde.
  • RD rotayı BGP’de benzersiz yapar (aynı prefix, iki ayrı rota). RT rotanın hangi VRF’e gireceğini belirler.
  • Yeni müşteri eklemek: PE’de yeni VPN instance, arayüzü ip binding ile bağla (IP’den önce), BGP’de ipv4-family vpn-instance bloğu. P router’lara ve VPNv4 komşuluğuna dokunmuyorsun.
  • İzolasyonu test etmenin en net yolu: bir müşterinin hedefini kapat, diğerinin ping’inin etkilenmediğini gör.
  • Paket yolunda iki etiket vardır: dış (LDP, P router’lar swap/pop eder) ve iç (servis, PE’nin VRF’i seçmesini sağlar). Aynı IP’li iki müşteriyi ayıran şey iç etikettir.
  • En sinsi hata RT’nin yanlış yapılması: ya rota VRF’e hiç girmez (Deney 1), ya da iki müşteri birbirinin rotalarını görür (Deney 2).