Yönlendirme

  Bu bölümde farklı coğrafi noktalarda yer alan TCP/IP ağlarının birbirleri ile olan iletişiminin sağlanması için en önemli anahtar olan, yol bulma yani yönlendirme konusu açıklanacaktır.

IP (Internet Protokol) katmanı datagram'larin (TCP/IP’de iletişim icin kullanılan bilgi birim miktari) varış noktasına ulaşmasını sağlamakla yükümlu olduğu protokoldür. Bir datagram'in varış noktasına ulaştırılmasına 'yönlendirme' (routing) adı verilmektedir. Yönlendirmenin nasıl yapıldığını kavrayabilmek için IP'nin dayandığı modeli anlamak gereklidir. IP katmanı daima, bir sistemin bir ağa bağlı olduğunu varsayar. Ethernet tabanlı bir ağ üzerinde sadece karşı istasyonun Ethernet adresini bilmek yeterli oldugu icin hersey cok kolaydir. Fakat datagram'lar farkli aglar uzerindeki noktalara gonderilmek istendiginde sorunlar baslar.

Bir ag uzerinden diger ag uzerine gececek bilgi trafigini kontrol etmek, onu yonlendirmek gorevi genel olarak 'gecis noktasi aygitlarina' (gateway) aittir. Internet uzerinde IP protokolu kullanan aglarda bu isleri yerine getiren aygitlara yonlendirici (router) adi verilir. Boyle bir gorev ustlenen makina uzerinde birden fazla bilgisayar agi baglantisi yer alip, farkli aglarin bilgi trafikleri bu yolla birbirlerine iletilir. IP aglarindaki yonlendirme tamamen varis noktasi adresi temeline oturmaktadir. Ornegin ODTU'nun uluslararasi Internet baglantisini yapan yonlendirici 144.122.1.2 adresinde bulunmaktadir. Dolayisiyla 144.122.1 agi uzerinde yer alan diger sistemler 144.122.1.2 adresini yurt disi adreslere ulasmak icin gecis noktasi olarak tanimak zorundadirlar. Benzer bir sekilde Bilgisayar Muhendisligi bolumunun kampus omurga agina gecis noktasi olarak kullandigi bilgisayarin adresi de 144.122.71.1'dir. 144.122.71 agi uzerinde bulunan bir bilgisayar, kampus icindeki baska bir bilgisayara ulasmak icin bu gecis noktasindan gecmek zorundadir. Bu ag uzerinde bulunan bir bilgisayar datagram yollamak istediginde oncelikle ulasmak istedigi adresin ayni ag uzerinde olup olmadigina bakar, eger varis noktasi ayni ag uzerinde ise bilgi dogrudan varis adresine yollanir. Eger degilse, sistem varis noktasina ulasmak icin gerekli bilgileri arastirmaya baslar.

Yonlendirme protokolleri

Yukarida da aciklandigi gibi yonlendirme, bir bilgisayar agi uzerinde yer alan bir bilgisayarin ayni ya da farkli bir ag uzerinde yer alan baska bir bilgisayara nasil ulasacagina karar verirken kullanilan yontemdir. Bu sayede herhangi iki farkli noktada yer alan kullanicilar birbirleri ile bilgisayar kullanarak haberlesebilmektedir. Dolayisiyla yonlendirmeyi bir nevi yapistirici gibi dusunebiliriz.

Iletisimin en onemli noktasi olmasindan dolayi yeni bilgisayar agi kuruluslarinda en onemli sorunlardan birisi yanlis yapilan yonlendirme olmaktadir. Bu noktada yonlendirme ve yonlendirme protokolu arasindaki farki aciklamak ileride olusabilecek yanlis anlamalari onlemek acisindan yararli olacaktir. Bir bilgisayar agina bagli her sistem bilgiyi bir noktadan bir digerine yonlendirebilir ama her sistem uzerinde yonlendirme protokolu calismaz. Yonlendirme, bir yonlendirme tablosundaki bilgiye gore bilgi paketlerinin gecirilmesidir. Yonlendirme protokolu ise bu tablolarin olusturulmasinda bilgi degisimini saglayan programlardir. Basit bir bilgisayar aginda bir yonlendirme protokolu calismadan, sabit tablolar kullanarak iletisim saglanabilir.

Temel olarak 3 yonlendirme yontemi vardir (Asagida verilecek olan komutlar UNIX isletim sistemlerinde bulunmakta olup diger sistemlerde farkli komutlar kullanilabilir):

- Minimum yonlendirme: Bir bilgisayar agi baska bir bilgisayar agina bagli olmaksizin tek basina calisiyorsa minimum yonlendirme ile ag uzerindeki iletisimi saglayabiliriz. (Bu yonlendirme genelde sadece ifconfig komutu ile yapilir)

- Sabit yonlendirme: Kurulu bir bilgisayar aginin dis dunyaya bir ya da birkac cikisi varsa sabit yonlendirmeyi kullanabilir. (Bu yonlendirme genelde route komutu ile yapilir). Gerekli komut kullanilarak agin dis dunyaya cikan trafigi cikis noktasina yonlendirilmis olur.

- Dinamik yonlendirme: Agin dis dunya ile olan iletisimi birden fazla noktadan yapiliyorsa, yonlendirme protokolu ile dinamik olarak bir yonlendirme tablosu tutulur ve yonlendirme protokolleri birbirleri ile gerekli bilgi alisverisini yaparak en uygun cikisi kullanirlar. Boylece ag yoneticisinin elle mudahalesi gerekmeksizin en uygun yolu bu protokoller bulurlar. Dolayisiyla bir cikis noktasinda meydana gelen bir sorunda tum trafik otomatik olarak digerine yonlendirilebilir.

Bu yonlendirme yontemlerini biraz daha detaylari ile ornekler vererek inceleyelim.

Minimum Yonlendirme Tablosu

# ifconfig le0 144.122.99.2 netmask 255.255.255.0 broadcast 144.122.99.255

komutu kullanilarak arayuzunun ag baglantisi yapilmis olan bir bilgisayarin yonlendirme tablosunun icerigine bakarsak:

% netstat -rn

Routing Tables

Destination Gateway Flags Refcnt Use Interface

127.0.0.1 127.0.0.1 UH 1 132 lo0

144.122.99.0 144.122.99.2 U 26 49041 le0

Ilk satirdaki 127.0.0.1 loopback adres olarak bilinen lokal bilgisayarin kendisini tanimlayan ve Internet protokolunu calistiran her bilgisayarda bulunan standart bir adrestir. Ikinci satirda ise 144.122.99.0 agina, ethernet le0 arayuzu uzerinden gidilecegini belirtiyor. 144.122.99.2 ise uzaktaki (remote) bir gecis noktasi (gateway) adresi degil le0 arayuzunun kendi adresidir. Flags alanlarina bakacak olursak her iki satirda da bulunan U (up), her ikisinin de kullanima hazir oldugunu gosterir. Her iki satirda da Flags alaninda G (Gateway) isareti yoktur zira her iki arayuze aradaki bir gecis kapisi (gateway) uzerinden ulasilmamaktadir. Loopback yonlendirme taniminin bulundugu satirdaki H (Host) isareti bu yonlendirme ile sadece bir bilgisayara (yani kendisine) ulasilabilecegini tanimlamaktadir. Bu satir bilindigi gibi her yonlendirme tablosunda bulunmaktadir. Bu yonlendirme tablosu goruldugu gibi sadece 144.122.99.0 agi ile ilgili yonlendirme bilgisine sahiptir. Dolayisiyla sadece bu ag uzerinde yer alan bilgisayarlar birbirleri ile iletisime gecebilmektedirler. Bu yonlendirme tablosu olustuktan sonra herhangi bir problem olup olmadiginin testi ping komutu ile kolayca yapilabilir. Once bu ag uzerinde yer alan bir bilgisayari ping komutu ile kontrol edelim:

% ping 144.122.99.3

PING 144.122.99.3: 56 data bytes

64 bytes from 144.122.99.3: icmp_seq=0, time=11, ms

64 bytes from 144.122.99.3: icmp_seq=1, time=11, ms

^C

----144.122.99.3 PING statistics----

2 packets transmitted, 2 packets received, 0% packet loss

round-trip (ms) min/avg/max =10/10/11

 

Goruldugu gibi 144.122.99.3 ile olan iletisimin basarili oldugu test edilmis oldu. Bunun yaninda ayni ag uzerinde bulunmayan bir adrese ulasmak istedigimizde nasil bir sonucla karsilasacagimizi test etmek istersek :

% ping 26.40.0.17

sendto: Network is unreachable

Gelen cevaptan da anlasilacagi gibi, ulasmak istedigimiz bilgisayara ait yonlendirme bilgisine sahip olmadigi icin, bilgisayarimiz datagram lari varis noktasina iletemedigini ve o noktaya ulasilamaz oldugu mesajini veriyor. Eger bilgisayar aginizin dis dunya ile irtibati yoksa ifconfig ile yaratilan tablo tum ihtiyaclarinizi karsilamaya yeterlidir. Ancak eger bir dis baglanti varsa o zaman yonlendirme tablosunun daha fazla bilgiye ihtiyaci vardir.

Sabit Yonlendirme Tablosu

Yukarida da gordugumuz gibi minimum yonlendirme tablosu ile ayni ag icindeki bilgisayarlara ulasmak mumkundur. Baska aglar uzerindeki bilgisayarlara ulasmak icin bunlarla ilgili bilgiler yonlendirme tablolarina girilmelidir. Yonlendirme tablosunu yaratmak icin kullanilan yollarin en populeri route komutudur. route komutu ile yonlendirme tablosuna elle yeni yonlendirme bilgileri eklenip cikartilabilir.

Ornek verecek olursak, yukaridaki sekilde gorulen 144.122.99.0 agindaki bir bilgisayardan 144.122.71.0 agina ulasmak icin soyle bir tanim yeterlidir:

# route add 144.122.71.0 144.122.99.1 1

add net 144.122.71.0: gateway 144.122.99.1

route komutundan sonraki 'add' argumani yonlendirme tablosuna bir ek yapilacagini soylemektedir. Tablodan bir bilgi silinecegi zaman 'add' yerine 'delete' kullanilarak bu silme islemi yapilir. Ayni satirdaki ucuncu bilgi bu yonlendirme bilgisi ile ulasilmak istenen adresi belirtmektedir. Ulasilacak adres 4 farkli sekilde tanimlanabilir:

a- bir IP adresi ,

b- /etc/networks dosyasindaki bir ag ismi,

c- /etc/hosts dosyasindaki bir bilgisayar ismi,

d- default. Eger ulasilmak istenen adres olarak default kullanilirsa ayni ag uzerinde yer almayan her adrese burada tanimlanan gecis yolu uzerinden ulasilmaya calisilir. Eger bir agin dis dunyaya cikisi tek bir noktadan ise default olarak bu cikis adresi tanimlanmalidir.

Komut satirindaki dorduncu bilgi gecis yolu adresidir. Bu adres agin dis dunya ile iletisimini saglayan gecis kapisidir. Son arguman ise yonlendirme metrik bilgisidir. Bu bilgi, sadece ROUTE bilgisinin eklenmesi durumunda kullanilir. Metrik bilgisi degerinin 0 olmasi durumunda yonlendirme bilgisinin lokal aga ait oldugu seklinde yorumlanir ve daha once netstat komutunda gordugumuz Flags alanindaki G (Gateway) isareti gozukmez. Ama eger Metrik 0 degerinden buyukse bu o zaman bu yonlendirme bilgisinin dis dunyaya acilan gecis yolunu tarif ettigi anlasilir ve Flags alanina G isareti konulur. Sabit yonlendirme 0 ve 1 disinda bir Metrik degeri kullanmaz.

Diger Yonlendirme Protokolleri

Butun yonlendirme protokolleri temelde en iyi yonu ve yolu bulma islevini yerine getirirler ve bu yonlendirme bilgisini ag uzerinde dagitirlar. Yonlendirme protokolleri iki temel gruba bolunebilirler: Interior (ic) ve Exterior (dis).

1-Interior (ic) protokoller: Bu protokoller bagimsiz bir bilgisayar agi icinde kullanilirlar. TCP/IP terminolojisinde boyle bilgisayar agi sistemlerine Otonom sistemler (AS) adi verilir. Otonom sistem icinde yonlendirme bilgisi, o agin yoneticisi tarafindan belirlenen bir ic yonlendirme protokolu ile dagitilir. Bu amacla kullanilabilecek degisik Interior (ic) protokoller mevcuttur.

HELLO en iyi yonu secerken gecikme faktorunu kullanan bir protokoldur. Gecikme olarak cikis noktasindan varis noktasina gonderilen bir paketin cikis noktasina ulasana kadar gecen zaman suresi kabul edilir. Bu protokol cok yaygin olarak kullanilmamaktadir. NSFNET omurgasi 56 Kbps hizinda iken kullanilmis ve zaman icinde baska protokoller ile degistirilmistir.

Son zamanlarda yayginlasmaya baslayan bir diger ic protokol de OSPF'dir (Open Shortest Path First). OSPF 'equal cost multipath routing' (esit maliyetli cok yollu yonlendirme) mantigi ile calismakta ve cok buyuk aglarda kullanilmaktadir. OSPF ayni varis noktasina birden fazla yonlendirme bilgisini tutmaktadir. Ancak OSPF'in bugun icin sadece ozel yonlendirme cihazlari uzerinde var olmasi ve henuz UNIX sistemlerin bir parcasi haline gelmemesinden dolayi yaygin kullanima gecilememektedir.

RIP (Routing Information Protocol) bu protokoller icinde en cok kullanilanidir. RIP'i populer yapan sebeplerin basinda bu protokolun UNIX sistemlerin bir parcasi olmasi gelmektedir. RIP protokolu yonunu en dusuk sicrama sayisi-hop count (metrik) ile secer. RIP 'hop count', bilginin varis noktasina ulasana kadar gececegi gecis yollari sayisini gosterir. Dolayisiyla RIP en az gecis yoluyla ulasilabilecek yolu en iyi yol olarak secer. Bu yaklasimla yol secme islemine 'distance- vector algoritmasi' adi verilir. RIP protokolunun kabul edebilecegi maksimum gecis yolu (gateway) sayisi 15 ile sinirlidir. Ulasilmak istenen yon ile ilgili metrik 15'den buyukse, RIP o noktaya ulasilamaz oldugunu varsayar ve ilgili yonlendirme bilgisini atar. Dolayisiyla RIP cok buyuk Otonom Sistemler icin uygun bir protokol degildir. Bunun yaninda en kisa yol en iyi yoldur yontemi de yavas ve yuklu hatlar kullanilmasi durumunda dogru olmamaktadir.

Cok kullanilan bir yonlendirme protokolu olmasindan dolayi RIP protokolunun biraz daha detaylarina girelim. Daha once de belirttigimiz gibi RIP pek cok UNIX sisteminin bir parcasi olarak gelmektedir. RIP bu isletim sisteminde bir yonlendirme deamon'u olarak calisir. UNIX'deki bu deamon routed'dir. routed calistirildiginda yonlendirme tablosunu guncellemek (update) icin hemen bir istek paketi yollar ve ardindan gelecek olan cevaplari dinlemeye baslar. RIP calistiran baska bir sistem bu istegi aldiginda kendi yonlendirme tablosu ile ilgili guncel bilgileri cevap olarak yollar. Bu paket adresler ve bu adreslerle ilgili metrik bilgilerini icerir. Bunun yaninda guncelleme paketleri sadece istek uzerine degil periodik olarak yollanmaya baslanir.

Routed bir guncelleme bilgisini aldiginda gelen paket icindeki bilgiyi alir ve kendi tablolarini gunceller. Gelen bilginin icinde yeni bir yonlendirme bilgisi varsa bunu da hemen tablolarina ekler. Gelen paket icindeki yonlendirme bilgileri arasinda lokal tabloda bulunan bir adres icin ikinci bir yol belirtiliyorsa bu durumda lokal tablodaki ve gelen guncelleme tablosundaki metrik bilgileri karsilastirilir. RIP protokolu Metrik bilgisi dusuk olan noktaya daha kolay ulasilacagi varsayimi ile calistigi icin tabloya bu degere sahip yone iliskin adres yerlestirilir.

RIP tablolari tabii ki belli bir yerden sonra cok fazla buyuyecegi icin bir sekilde kontrol altinda tutulmalidir. Bunun icin iki yol mevcuttur. Birincisi, bir noktaya ulasmak icin gereken metrik 15'in uzerindeyse bu nokta ulasilamaz kabul edilir ve tablodan cikarilir. Ikincisi, eger bir gecis noktasi belli bir sure guncelleme bilgisi yollamazsa RIP o noktanin olu oldugunu ve ulasilamadigini varsayar. Genel olarak guncelleme cevabi bekleme suresi 30 saniye civarindadir. Bir UNIX sisteminde RIP protokolunu calistirmak icin

# routed

komutunun girilmesi yeterlidir. Genellikle komut hic bir arguman verilmeden calistirilir. Fakat kullanilan sistem bir gecis noktasi degilse ve elindeki yonlendirme bilgisini surekli yayinlamasi gerekmiyorsa bu durumda komut -q opsiyonu ile calistirilabilir. Boylece sistem sadece yeni duyurulan yonlendirme bilgilerini dinleyip tablolarini guncelleyecek ancak kendisi bir duyuru yapmayacak dolayisiyla gereksiz trafik yaratilmayacaktir.

2-Exterior (dis) protokoller: Otonom Sistemler arasinda yonlendirme bilgisinin birbirleri arasinda degistirilmesi amaci ile kullanilir. Bu belli bir Otonom Sistem uzerinden hangi aglara ulasilabilecegi bilgisini icerir. Bu protokoller icinde en populer olanlari EGP (Exterior Gateway Protocol) ve BGP'dir (Border Gateway Protocol). Bu dokuman icinde EGP ve BGP protokollerin detaylarina girilmeyecektir.