Route-map (Yönlendirme Haritası), ACL (Access Control List - Erişim Kontrol Listeleri) ile benzer bir mekanizmadır. Routing (Yönlendirme) işlemine yeni bir boyut kazandırır. Gelişmiş bir routing tekniğidir. Özellikle routing işlemiyle öğretilecek ve öğrenilecek rotaları belirleme, bir rota bilgisini bir kaynaktan başka bir routing protokolüne aktarırken ve rota seçimi geleneksel Destination-Based (Hedef Bazlı) routing’den başka daha karmaşık yöntemlerle yapılmak istendiğinde sıklıkla route-map’lerden yararlanılır. Route-map, içerisinde çeşitli komutlar barındırır ve tıpkı ACL'lerde olduğu gibi bunlar satır satır incelenir. Eşleşme bir satırda gerçekleştiğinde bir sonraki satıra bakmaz. Eğer hiçbir eşleşme yoksa izin verilmez.
Router(config)#route-map Deneme permit 10
Router(config-route-map)#
Yukarıdaki komut dizisi, Deneme ismiyle bir route-map oluşturur ve route-map konfigürasyon moduna girer. "permit" ifadesi bu route-map'e izin verilmesini sağlayan bir parametredir. 10 ise bu route-map'in satır numarasını belirler. Burada yapılan bütün konfigürasyonlar Deneme isimli route-map'in 10 numaralı satırı için geçerli olacaktır. Bu route-map'in üzerine 20 satır numaralı Deneme isimli route-map yazılırsa kendine özgü konfigürasyonları olacaktır ve tıpkı ACL'lerde olduğu gibi ikinci satır olarak kullanılacaktır. Öncelikli olarak 10 satır numaralı route-map kontrol edilecektir ve eşleşme olmadığında 20 satır numaralı route-map'e geçecektir.
Router#sh route-map
Yukarıdaki komut, yazılan route-map'in konfigürasyonlarının kontrol edilebilmesini sağlar.
Route-map altında en çok kullanılan komutlar "match" ve "set" komutlarıdır. "match" komutuyla daha önceden belirlenen bir ACL, bir route-map satırıyla eşleştirilip ağlara izin verilebilir ya da engellenebilir. "set" komutu da bu eşleşmelerin ardından hangi işlemlerin yapılacağının belirtir.
Route-map çeşitli amaçlarla kullanılabilir. Öğretilecek ve öğrenilecek rotaları belirleme olarak tanımlanan Route-filtering (Rota Filtreleme) işleminde kullanımı bunlardan ilkidir.
Geleneksel destination-based routing'de ağ üzerindeki her rota diğer router'lara (yönlendirici) öğretilir. Ancak tercihe göre bazı rotaların diğer router'lar tarafından öğrenilmemesi sağlanabilir. Route filtering burada devreye girer.
Router(config)#access-list 50 permit 10.0.0.0 0.0.0.255
Router(config)#route-map deneme deny 10
Router(config-route-map)#match ip address 50
Router(config-router)#exit
Router(config)#router ospf 1
Router(config-router)#distribute-list route-map deneme out
komutlarıyla, route-map aracılığıyla 10.0.0.0/24 rotasının OSPF (Open Shortest Path First – En Kısa Yol Öncelikli) protokolü vasıtasıyla diğer router'lara öğretilmemesi sağlanmıştır. ACL'de "deny" olarak verilen komut bu konfigürasyonda route-map’te "deny" olarak verilmiştir. ACL'de verilen "permit" komutu ile ise eşleşme kriteri belirlenmiştir. Bu sayede filtreleme sağlanmış olur. Ancak ACL'lere yazılan “permit any” parametresi gibi route-map’lere de Router(config)#route-map deneme permit 20 şeklinde bir satır daha eklenmelidir. Aksi takdirde router hiç bir rotayı öğretmeyecektir.
Route-map’in kullanıldığı bir diğer yöntem de routing bilgisinin bir protokolden diğer bir protokole aktarılmasını sağlayan route-redistribution (yol yeniden öğretimi) yöntemidir. Örnek olarak bir tarafın EIGRP (Enhanced Interior Gateway Routing Protocol – Gelişmiş İç Ağ Geçidi Yönlendirme Protokolü) bir tarafın OSPF kullandığı bir topoloji düşünüldüğünde, router’ların birbirlerinin rotalarını öğrenebilmesi için redistribution yöntemine ihtiyaç vardır. EIGRP protokolünden OSPF protokolüne redistribution yapılması için gereken komutlar şu şekildedir:
Router(config)#access-list 20 permit 10.0.0.0 0.0.0.255
Router(config)#route-map redistribution permit 10
Router(config-route-map)#match ip address 20
Router(config-route-map)#set metric 40
Router(config)#router ospf 1
Router(config-router)#redistribute eigrp 1 route-map redistribution subnets
Yazılan komutlarla EIGRP protokolündeki 10.0.0.0/24 rotası OSPF aracılığıyla öğretilmiş olur. Ancak her protokolün kendine özgü metrik hesabı vardır ve EIGRP’de hesaplanan metrik ile OSPF'te hesaplanan metrik farklı olduğundan, routing yapılırken "set" komutuyla metrik sabitlenmiş olur. Subnets komutu da routing tablosunda bulunan alt ağların da öğretilmesini sağlar.
Kalan rotaların öğretilebilmesi için de Router(config)#route-map redistribution permit 20 komutu yazılmalıdır. Çünkü eğer bu komut yazılmazsa o rota dışında gelen bütün rota bilgisini reddedeceğinden router başka rota öğrenemez.
"Redistribution" yaparken metrik tipi de belirlenebilir. OSPF dışarıdan öğrendiği rotaları iki tip olarak verir. Metrik tiplerini ayarlamak için Router(config-route-map)#set metric-type <type-1 | type-2> komutu kullanılabilir. 1.tipte rotanın metriği OSPF bölgesi boyunca toplanarak giderken 2. tipte sabit kalır. Varsayılan tip 2. tiptir.
Redistribution yaparken etiketleme işlemi de yapılabilir. Örnek olarak; 20.0.0.0/16 rotası etiketlenir ve başka bir redistribution noktasından etiketli rotanın geri öğretilmemesi sağlanabilir.
Router(config)#access-list 20 permit 20.0.0.0 0.0.255.255
Router1(config)#route-map etiket permit 10
Router1(config-route-map)#match ip address 20
Router1(config-route-map)#set tag 100
Router1(config-route-map)#exit
Router1(config)#router ospf 1
Router1(config-router)#redistribute eigrp 1 route-map etiket subnets
Yukarıdaki komutlar sayesinde EIGRP ile öğrenilen 20.0.0.0/16 ağı etiketlenerek diğer router tarafından öğrenilir. Bu noktada öğrenilen ağın tekrar OSPF'e öğretilmesi gibi bir problem oluşabilir. Bunu engellemek için;
Router2(config)# route-map etiket deny 10
Router2(config-route-map)# match tag 100
Router2(config)#router eigrp 1
Router2(config-router)#redistribute ospf 1 route-map etiket subnets
komutları girilir. Bu sayede 100 ile etiketlenmiş rotalar route-map’teki "deny" komutu sebebiyle tekrar öğretilmez.
Özet olarak, Route-map satırında "permit" varsa ACL'de belirtilen rota öğretilir, "deny" varsa öğretilmez. Eğer ACL'de "deny" parametresi varsa bir sonraki route-map satırına geçer.
Bir diğer yöntem Policy Based Routing (İlke Bazlı Yönlendirme) yani routing işleminin hangi kararlarla neye dayanarak yapılacağının düzenlenebildiği yöntemdir. Bu yöntem sayesinde kaynak IP, hedef IP, kaynak port, hedef port gibi ek olarak verilen bilgilerle routing yaptırılır. Bu yöntem için yine ACL'ler kullanılır. ACL'de kaynak IP, hedef IP ve/veya portlar belirtilir. Route-map satırında "match" komutu ile eşleştirilir.
Router(config)# access-list 200 permit tcp 10.0.0.0 0.0.0.255 20.0.0.0 0.0.0.255 eq www
Router(config)#route-map deneme1 permit 10
Router(config-route-map)#match ip address 200
Router(config-route-map)#set ip next-hop 10.0.0.2
Router(config-route-map)#exit
Router(config)# interface fastethernet 0/0
Router(config-if)#ip policy route-map deneme1
Kullanılan komutlarla 10.0.0.0/24 ağından çıkıp 20.0.0.0/24 ağına giden Web trafiğinin router'ın 10.0.0.2 IP'sinin bulunduğu arayüzü üzerinden gitmesi sağlanmıştır. Öncelikle ACL'de hedef ve kaynak IP'ler ve kullanılan port yazılmış, "match" komutuyla route-map üzerinde eşleştirilmiştir. Daha sonra "next-hop" yani bir sonraki IP adresi bildirilerek izleyeceği yol öğretilmiştir. Burada önemli nokta route-map’in uygulanacağı arayüzdür. ACL'e uyan trafiğin router’a girdiği arayüz route-map’in uygulanacağı arayüzdür. Dolayısıyla burada trafiğin girdiği arayüz FastEthernet 0/0 arayüzüdür. Bu şekilde gelen trafik istenilen şekilde yönlendirmeye tabi tutulabilir.
Bu yöntemde route-map’te "permit" yerine "deny" yazılırsa, routing işlemi route-map’e göre değil router’ın üzerinde bulunan Routing Table (Yönlendirme Tablosu)'a göre yapılacaktır. Dolayısıyla belirtilmeyen rotalara giden paketlerin çöpe gitmesi gibi bir durum söz konusu olmayacaktır. Ancak Routing Table'da da yok ise o zaman paketler çöpe gönderilecektir.
Route-map sayesinde amaca yönelik çeşitli şekillerde düzenlemeler yapılarak routing işlemi farklı boyutlar kazanabilmektedir.