DMVPN (1): mGRE ve NHRP

Merhaba

Bu zamana kadarki yazılarımda hep iki uçlu VPN topolojilerini ele aldım. Artık çok uçlu VPN topolojilerine geçiş yapıyoruz. Bu yazımda  DMVPN (Dynamic Multipoint VPN)’den bahsedeceğim. Adından da anlaşılacağı üzere DMVPN bir çok uçlu VPN modeli. Hemen belirteyim DMVPN geniş bir konu. O yüzden DMVPN için bir kaç yazı yazmayı düşünüyorum. Bu ilk yazıda DMVPN’in çalışma mantığını anlatıp çok basit bir topoloji örneği vereceğim.

Şu ana kadarki bilgilerimizle iki değil de örneğin üç uçlu bir VPN topolojisi oluşturmak istersek, yapabileceğimiz şey her iki router arasında tünel kurmak olacaktır. GRE kullandığımızı düşünürsek her router’da iki tünelden toplam altı tane tünel konfigürasyonu yapmamız gerekecektir. Altı küçük bir sayı gibi gözükebilir ancak bu sayı n.(n-1)/2 uyarınca hızla artacak ve örneğin 10 router için 45 tünel gerekecektir. Yüz veya bin mertebesinde router’ınız varsa bu iş içinden çıkılmaz bir hal alacaktır.

Bunu hesapladığımızda içimizden şöyle geçirmiş olabiliriz: “Keşke GRE tünel interface’lerimizi sanki sanal bir switch’e bağlıymış gibi tek bir network’e alabilseydik.” Tam olarak böyle olmasa da bu fikri DMVPN’in çıkış noktası olarak alabiliriz.

Bu fikri geliştirmeye çalışırsak şu sorunla karşılaşırız. Router’ın bir tünel interface’inden trafiği iletebilmesi için o tünel interface’inin destination adresini bilmesi gerekir. Ancak biz istiyoruz ki tünel interface’imizin birden fazla destination’ı olsun. Tüm bu destination’ları interface’in altına elle girmek mümkün değil, kaldı ki mümkün olsa bile bunu yapmak çok router’lı topolojiler için her iki router arasında bir tünel oluşturmak kadar verimsiz olacaktır.

Her zaman söylerim: Bir topolojide hangi cihazın neyi bildiğini çok iyi bilmek gerekir. Router’ımız tünel destination adreslerini bilmiyor ve elle öğretmek hiç ölçeklenebilir değil. O halde bu sistemin çalışabilmesi için router’ımızın bu adresleri dinamik bir şekilde öğrenebilmesi gereklidir. Böylece DMVPN tanımını da açıklamış oluyoruz.

DMVPN’i bu kadar geniş bir konu haline getiren aslında bu dinamik çalışma yapısının esnekliği. Fakat ben buna önümüzdeki yazılarda daha detaylı değineceğim. Şimdilik üç router’lık bir topolojiyi ele alalım. DMVPN kullanarak bu üç router’ı altı yerine üç tünelle birbirine bağlayabiliriz. Router sayısı da az olduğundan bunu dinamik değil bu örnek için statik bir şekilde gerçekleştireceğiz (Hem tünel destination’ları hem de routing statik olacak). Fakat unutmayalım ki gerçekte DMVPN’in esas gücü dinamik olmasından gelmektedir.

GRE over IPSEC’ten bahsederken tunnel interface konfigürasyonumuz aşağıdaki gibiydi:


Aşağıdaki topolojide DMVPN çalıştırdığımızı düşünelim:

DMVPN’de tunnel interface konfigürasyonu ise aşağıdaki gibi oluyor:

Aradaki farklılıkları incelersek: Öncelikle tunnel mode gre multipoint komutuyla tünelin artık mGRE (multipoint GRE) tüneli olduğunu belirtmemiz gerekiyor. Bu modda artık tunnel destination komutunu kullanmıyoruz. Bunun yerine ip nhrp map komutunu kullanıyoruz. Bu komutla diğer router’lardaki tünel IP’lerini o tünellerin source IP’leriyle eşleştirmiş oluyoruz ve bu örnekte bu komutu karşı taraftaki her router için yazıyoruz. Son olarak bir router’da birden fazla mGRE tüneli olması durumunda bu tünellerin NHRP domain’lerini ayırt edebilmek için ip nhrp network-id komutuyla her tünele bir ID vermek zorundayız (OSPF process id’ye benzetilebilir – locally significant).

Burdaki en önemli komut ip nhrp map. Peki bu komutu tam olarak nasıl çalışıyor? Tünel üzerinden bir IGP çalıştırdığımızı düşünelim. Bir router karşıdaki router’ların arkasındaki network’leri öğrenirken bu network’lere gitmek için next-hop adresi olarak karşı tarafın tünel IP’sini alacaktır. O network’e bir trafik göndereceği zaman tünel encapsulation’ı tetiklenecek ve yeni bir IP başlığı oluşturması gerekecektir. Bu IP başlığındaki destination address ise karşı tarafın tünel adresi değil tünel source adresi olmalıdır. Router bu durumda NHRP tablosuna bakar ve o next-hop adresine karşılık gelen tünel source IP’sini bulup yeni IP başlığında destination olarak bu IP’yi kullanır. (Unutulmamalıdır ki GRE encapsulation’da kullanılan yani aradaki router’ların gördüğü dış IP başlığındaki IP’ler tünel IP’leri değil, tünel source ve destination IP’leridir. Tünel IP’leri o tünel üzerinden routing yapabilmek için kullanılır). İşte ip nhrp map komutu bu NHRP tablosunu oluşturmak için kullanılan bir yöntemdir (ya da bu tablo dinamik olarak oluşturulur).

Peki NHRP’den başka bir isim bulamamışlar mı 🙂 Next Hop Resolution Protocol ilk olarak ATM network’lerinde kullanılmış. DMVPN’de de dinamik olarak next-hop çözümleme işini yapıyor. Bu örneğimizde biz bütün NHRP girdilerini statik olarak girdiğimizden router’lar arasında gidip gelen bir NHRP trafiği yok. Ama router hala bu çözümleme işini yapmak için bu NHRP tablosunu kullanıyor.

DMVPN’in çalışma ve adres çözümleme mantığı özetle böyle. Ama dediğim gibi gerçekte hemen hemen her zaman dinamik çözümleme ve dinamik routing kullanılır. Çünkü çok uçlu bir topolojinin hem basit hem de ölçeklenebilir olması ancak böyle mümkün olmaktadır. Bir sonraki yazımdan itibaren NHRP protokolünün dinamik olarak nasıl çalıştığını ve farklı kullanımlarını incelemeye başlayacağız.

Görüşmek üzere.

“DMVPN (1): mGRE ve NHRP” için bir cevap

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir