LISP
Cisco Location/ID Separation Protocol (LISP)
MPLS'in ilk çıkış nedeni routing sürecini kolaylaştırmak özellikle herkesin konsantre olduğu tüm istemcilerin üzerinden geçtiği routerlardaki routing tablolarına bakılmaması onun yerine daha basit tag'lere bakıp ordan karar verilmesi şeklinde yapıdır. Aynı işi yapan bir mekanizma Günün sonunda derdimiz routing tablolarını küçültmek. Control plane'i farklı bir mantık ile çözmek. Control plane'de normalde her router kendi routing tablosunu oluştururdu ve bu routing tablosunu oluşturan kısma biz routerlarda control plane adı veriyorduk yani beyin kısmı. Her router kendisi bu şekilde bir beyne sahip olmayacak. Bir beyin routerı ilan edeceksiniz herkes gidip ona soracak. İhtiyacın yoksa hiçbir zaman tabloyu öğrenmiyorsun. Ne zaman 10 networküne gitme ihtiyacın oluyor o zaman gidip soruyorsun öğreniyorsun belirli bir süre cache'de duruyor. Cache süresi dolduğu anda o bilgiyi siliyorsun.
Normal şartlarda klasik bir networkte şu şekilde bir dizaynınız varsa. Tüm routerlar herhangi bir dinamik yönlendirme protokolü kullanarak tüm networkleri öğrenir. Günün sonunda her routerda bir sürü routing satırı olur. Hatta Global internette şuan 900 bin kusur routing tablosu var. Her router uzunca bir routing satırı oluşturuyor. LISP'in misyonu bu oluşan büyük routing tablosunu kısaltmak,küçültmek. Routing tabloları herhangi bir teknik kullanmadan birkaç şekilde küçültülebilir. Bunlar summarization veya dersek ki katı kural kurarak örnek olarak /24 ten küçük bir subnet oluşturamazsın.
Buna çözüm olarak LISP geliştirilmiş. Çok az routing tablosu satırı ile bu case'yi nasıl çözeriz üzerine çalışmışlar. Süreç şu şekilde burada bir istemci var örnek olarak A istemcisi olsun. Bu A istemcisi 10 networküne gitmek istiyor. Buradaki hedefimiz 10 networkü aslında. Şöyle bir şey olsa router paketi 10 networküne değilde R5 routerın ip adresine 5.0.0.1e ulaştırsa ve R5 routerı paketin içinde nihai hedefinin 10 networkü olduğunu görse. 10 buna directly connected network olduğu için direct olarak buraya ulaştırır. Yani aslında R1 10 networkünün R5 routerda olduğunu bir şekilde öğrenirse
Biz bu paketi tekrar encapsule edip tünelleyip önüne bir başlık koyup başlıkta hedef ip olarak router gösterebilirseniz yani 5.0.0.1 ipsini gösterirseniz. Sonucunda Paket R5 e ulaşır R5 bu önündeki başlığı söker atar ve içinde gerçekte ulaşılması gereken ip'yi öğrenir ve paketi ulaştırabilir. Mekanizma bu şekilde çalışıyor.
Routerlar tüm networkleri öğrenmiyor. Sadece ihtiyaç duydukları networkleri bir şekilde öğreniyorlar. İhtiyaç duydukları networkleri hangi ip'li routerda olduğunu öğreniyor. Ona göre paketi encapsule edip yani tünelleyip önüne başlık koyup routerın ipsini hedef olacak şekilde paketi yola çıkarıyor ve hedefe ulaşıyor. Tabiki öncelikle şu lazım R5 routerının nerde olduğunu bilmek zorundayız. Yani 5 networkü nerede bileceksin bu şu demek tüm bu routerlar kendileri arasında bir dinamik routing protokolü çalıştırıp birbirlerini öğreniyorlar. Yani R1 routerı 5 networkünü öğreniyor içerde bir IGP mekanizması yada BGP ile öğreniyor.
Öğrenmediklerini bu networkleri, routerlar üzerinde hizmet alacak networkleri bilmiyor. Bu şekilde son kullanıcıya hizmet verecek routerlara RLOC deniliyor. (Route Locator)
RLOC == Bunun üzerinde (R5) bir network var onun lokasyonu R5 R2 üzerinde de örnek olarak 20.0.0.0 networkü olsa burası da RLOC olurdu. Kısaca burada Route Locator var bir tane R5 üzerinde de 10 networkü var. Nihayetinde ulaşılmak istenen hedef networke tanım olarak Endpoint Identifier adı vermişler. 10 networkü son noktayı tarif eden adrestir aslında. Ulaşılması istenen adres. Buna da Endpoint Identifier adı veriliyor. Yani bu RLOC üzerinde EID barındıyor.
Bizim misyonumuz da R1 den Endpoint Identifier'a paketi ulaştırmak. Yani klasik bir sistemde olsaydı. Destination IP adresi 10.0.0.1 olurdu LISPde ise böyle olmuyor. Nihai çıkan paketin ip adresi routerın ip adresi oluyor.
xTR( x tunnel Router) adı veriliyor. X dediği değişken olabiliyor. X değerleri ITR ve ETR olabiliyor. ETR( egress). Egress demek dışarı çıkan ITR(ıngress) Igress içeri giren. Günün sonunda bizim paketimiz nereye gidecek çıkacak R5 routerına . R5 router aynı zamanda bizim bir ETR'ımız oluyor.
Paketin çıkacağı yer. Bizim ITR'ımız ise R1 routerı. İnterfaceden çıkan pakete egress. İnterfaceye giren pakete ise ingress denir.
Bir paket routera giriş yaptı hedef ip'si 10.0.0.1 ile bizim routerımız bu 10.0.0.1'e nasıl gideceğini öğrenmek zorunda nasıl gideceği şu demek günün sonunda routerın ip adresi ne onu öğrenmek zorunda bunun için LISP topolojilerinde routerlardan bir tanesi map server oluyor. (MS) yani harita sunucusu gibi düşünebilirsiniz. Hangi network hangi routerın üstünde şeklinde. Ne yapıyor bizim ITR'ımız. Gidiyor Map servera soruyor. Ben 10.0.0.0 networküne gitmek istiyorum. Bu pakete map request deniliyor. 10.0.0.0 networküne nasıl ulaşırım. MS üzerinde bununla ilgili bir kayıt varsa geri dönüyor buna ise map reply adı veriliyor. Map reply ise diyorki oraya gitmek istiyorsan ulaşmak istediğin ITR routerın ip adresi 5.0.0.1 'dir diye paketi hedef routerın adresi öğreniyor.
Bu aşamadan sonra standart ip başlığın üzerine bir daha başlık koyup hedef ip adresini 5.0.0.1 diye yerleştirip paketi göndermek.
Hiçbir router hiçbir EID bilmiyor yani şöyle düşünün bu bir ISP olsun ve onbinlerce yüzbinlerce müşterisi olsun. Onların da 3er 5er networkü olsun. Routing tablosu olmuş 500 bin satır. Yani LISP routerların routing tablolarını küçültüyor. Buradaki R3 routerı hiçbir Endpoint Identifier bilmek zorunda değil. çünkü bu zaten taşıyıcı. Sadece ITR'lar günün sonunda sorgu yapıp nereye gideceğini öğrenmek zorunda. Yani R5 gibi üzerinde network olan routerlar. Ama R3 hiçbir routing öğrenmiyor R3in bilmesi gereken tek şey ara networkler yani ISP'nin iç networkler. Öğrendiği sadece aradaki hatlar. R3 de burada routing tablosunda 8 satır olması yeterli. Ben örnek olarak R5 ve R2 in üzerine 1000 tane network takayım. R3ün üzerinde yine 8 tane satır oluyor.
Her router kendi üzerindeki directly connected olan mesala 1000 networkü öğrenecek. Ama onun dışında hiçbir şey bilmeyecek. Gitmek istediği anda Map Servera soracak. Map server buna öğretecek. Bunu cache'liyecek tampon belleğe yazacak onda sonra paketi oraya yollayacak. Bir süre trafik yaratılmazsa cache 'inden silecek. Routing tablosunu küçücük hale getiriyoruz. Map servera ise networkleri elle öğretebiliriz ya da dinamik olarak kendi üzerlerindeki networkleri map servera öğretebilir. Sadece yapacağımız şey R5 routerına map serverın ip adresini öğretmek.
Buradaki bulut tamam ama bulutun dışında da olabilir. Bulutun dışındaki networklere nasıl ulaşacaklar. Ona ulaşma süreci şu şekilde gerçekleşiyor. Non-LISP bir routerımız olsun burası BGP ile tüm dünya rotalarını öğreniyor olsun. Bizim buradaki routerlarımız LISP dışında bir yere gidemeyecek mi ? Gidebilir. LISP dışında bir yere gitmek istiyorsa default rotayı belirleyecek yani dışarı çıkışı sağlayacak routerın hangisi olduğunu bilmesi yeterlidir. Bizim dizayna dışarı çıkmayı sağlayan router R5 ve map serverda default rota kayıtı R5 olarak Map Server içerisinde tutulursa ya da herhangibir router içinde de olabilir örnek olarak R1'e defaul rotan R5 de diyebiliriz.
Bu şekilde Non-LISP olan yerler ile bağlantıyı sağlayan routerlara PxTR , proxy x (egress or ingress) tunnel route ismi veriliyor. PETR (egrees) çıkışı sağlayan routera verilen isim. R5 burada çıkışı sağlıyor yani PETR. Default rota olarak PETR routerın ip adresini vereceksiniz. Aynı router dışardan rotaları alıyorsa ona aynı zamanda PITR adı veriliyor.
İsterseniz yükü azaltmak adına bir router dışarıya verirken diğeri dışarıdan alabilir.
Bu sürece LISP mimarisinin control plane'i deniliyor. Control plane, routing tablosunun oluşma sürecini yapar.
Öğrendikten sonra data plane'ine tünelleme işlemi yapıyor.
Bir IP başlığı var onun önüne bir LISP başlığı yerleştiriyor. Önüne baştan bir UDP başlığı bindiriyor. Hedef port numarası 4341 önüne tekrar bir bu sefer LISP' ait bir ip başlığı yani 5.0.0.1 in barınacağı bir başlık bindiriyor. Onun da önüne standart ethernet başlığı bindiriyor. (Source ve Destination RLOC IP).
Paketin içindeki İnstance ID ise izolasyonu sağlayabilecek bir kısım. Bu dizaynda bir izalasyon yok. yani LISP'i internet haberleşmesi gibi değil de MPLS gibi kullanmak istersen. 10 networkü varsa başka bir müşteri de yine 10 networkü varsa private network zaten. İki tarafta da 10 networkü var İkisi de farklı şirket R1 ise 10 networküne gitmek istiyor hangi şirkete gidecek. R1 hangi şirkete bağlıysa ona gidecek. MPLS de bunu şöyle sağlıyordu mpls etiketleriyle izalasyon sağlıyordu. LISP de ise burada instance Id kısmını kullanarak bu türden izalasyon yapılabilecek bir boşluk bırakmışlar. Burada intance id verip izalasyon sağlıyabiliyoruz.
LISP daha çok ISP'lerin işine yarayacak bir şey. Kurumsalda çok network yok zaten. VXLAN ise daha çok datacenter şirketlerinde kullanılıyor. Datacenter şirketlerinde binlerce şirketin Collacation ettikleri sunucular barınıyor. Yani farklı farklı şirketlerin farklı farklı sunucuları aynı datacenter içerisinde barınıyor. Ama biz istiyoruz ki A şirketin sunucusu B şirketin sunucusuna erişmesin. Bunu VLAN ile sağlarsın. Ama Vlan'ında bazı handicapları var. örnek olarak 4000 tane vlan oluşturabiliyorsun.
VXLAN'a geçiş yapan cihazlar VTEP olarak adlandırılıyor. VXLAN aslında tunnelling protokolü Vlan diyince aklımıza etiket koyacak ve tunellemeyecek. Ama Vxlan tünelleme yapıyor. Önüne tekrar bir 3. katman başlığı 4. katman başlığı bunları yerleştiriyorsunuz.
Layer 3 cihazlar tünnelleme yaparlar L2ler yapmazlar. Firewall,router L3 switch tünnelleme yapar.
Vxlan içerisinde orjinal ethernet frame'i de saklıyabiliyorsunuz. İki vlan konuşmasını istiyoruz ama araya 3.katman cihazları girmiş bu durumuda 3. katmana çıktığı anda 2.katman başlığını çöpe attılar yani vlan etiketi çöpe atılır. Vxlan buna çözüm getiriyor. Çünkü Vxlan da bir tünelleme mekanizması ama bu tünelleme operasyonunu 2.katmanın üzerine yerleştiriyor. Önüne bir Vxlan başlığı yerleştiriyor. UDP başlığı yerleştiriyor. Bir sonraki Vxlanı sonlandıracak Vtep cihazın hedef ip adresi yazılıyor. Kaynak VTEP bu sefer bulunduğu ortama göre hedef mac adresi yazan gerçek 2. katman başlığı da eklenip süreç tamamlanıyor.
Günün sonunda yapılan şey bir layer 3 ortamdan Vlan'ı extend ediyoruz. Layer 2'ye uzatıyoruz.
Last updated