Ether Channel kullanım alanları ve XOR hesaplaması:
Bildiğimiz gibi switchler; Ethernet, Fast Ethernet, Gigabit Ethernet ve 10-Gigabit Ethernet port kullanırlar. Ihtiyacimiza göre bu hizlardan birini kullanmamiz mümkün fakat Cisco, bandwidthi artirmak için EtherChannel teknolojisini öneriyor. Bu teknolojiyi kullanarak birden fazla portu tek bir port gibi gösterebiliyoruz. Maximum sekiz portu birlestirmek mümkün. Bu birlestirme ile birden fazla port olmasina ragmen mantiksal olarak tek bir port gibi görünecektir. Mesela full-duplex çalisan sekiz fastethernet portu birlestirirsek o hat üzerinde bandwidth 1600 Mbps olacaktir.
Normalde iki switch arasinda birden fazla port kullanirsak switching looplar olusur ve bu looplar sonucunda istenmeyen durumlar ortaya çikar. Tabii ki STP çalisan switchlerde looplar engellenecektir fakat o bunun engellenmesi içinde portlardan bazilari blocking duruma geçecektir. Etherchannel ile bunu önleyebiliyoruz. çünkü mantiksal olarak tek bir port gibi göründügünden, looplari önlemek için çalisan Spanning Tree Protokolu hiçbir portu bloke etmeyecektir. Fakat tek bir link gibi görünmesine ragmen gerçekte fiziksel linklerin toplam bandwidth i kadar bir hizda çalismaz. örnegin iki full-dublex fastethernet portu ile etherchannel olusturdugumuzu varsayalim. Böylece 400Mbps hizimiz olacaktir, eger tüm linklerden bir iletim söz konusu ise 400 Mbps olarak çalismasi söz konusu fakat tek bir linkden iletim yaparken bu hizda çalismaz. Bu yüzden gelen framelerin linklere esit olarak dagitilmasi gerekir. Bunun nasil yapilacagini anlatacagiz.
Etherchannel ayrica redundancy saglar. Etherchannel içindeki linklerden biri fail olursa iletim diger linklerden yapilmaya devam edecektir. Link tekrar aktif oldugunda yük tekrar dagitilacaktir.
Etherchannel olustururken dikkat edilmesi gereken noktalardan birisi, portlarin ayni hiza sahip olmasi gerekir. Ayrica birlestirilen portlar ayni vlan de olmalilar. Eger bu portlar trunk olarak kullaniliyorsa ayni native vlan’e sahip olmalilar.
Yukarida etherchannel portlari arasinda yüklerin esit dagitilmasi gerektiginden bahsetmistik. Peki bu islem nasil yapilacak birazda ondan bahsedelim. Frameler kullanilan hashing algoritmasi sonucunda belirli bir porttan forward edilirler. Algoritma source mac address, destination mac address yada ikisini, source ip address, destination ip address yada ikisini veya tcp/udp port numaralarini kullanabilir.
Frameler, bu adreslerin ya en düsük bitlerine göre yada EXOR sonucundaki bitlere göre belirlenen linklerden gönderilirler. örnegin etherchannel da iki link var, biz sadece destination mac address kullaniyoruz algoritmada. Eger mac adresin son biti 1 ise frame 1. linkden, 0 ise 0. linkden gönderilecektir. Iki linki 1 bitle, 4 linki 2 bitle ve 8 linki de 3 bitle ifade edebiliriz. Eger 2 adres bilgisi kullaniyorsak algoritmada, bir EXOR islemi yapilir ve bunun sonucundaki bitlere göre link seçilir. Iki link için örnek asagidaki tabloda verilmistir. Ilk olarak source ve destination adres EXOR’laniyor. Exor isleminin sonucundaki bitlere göre de link seçiliyor. Ilk isleme bakarsak; adreslerde son bitler 0 oldugu için exor isleminin sonucunda da son bit 0 çikmistir ve link 0 seçilmistir.
Baska bir örnek üzerinden algoritmanin çalismasini anlatalim. Bu sefer etherchannel da 8 link oldugunu kabul edelim ve source - destination ip adres bilgisinin birlikte kullanildigini varsayalim. 8 link oldugu için bunu 3 bit ile ifade edebiliriz. Frame 192.168.5.1 den 10.1.1.5 e gönderilsin. Simdi source ip’nin son 3 biti “001”, destination ip adresin son 3 biti “101”. Bu iki adres Exor isleminden geçirildiginde son 3 bit “100” çikacaktir. Bu sayinin decimal karsiligi 4 oldugu için frame, 4.linkden gönderilecek. Oldukça basit degil miJ
Peki bir cihaz hep ayni cihaz ile konusursa nolur? Frameler hep ayni linkden gönderilir sadece baska bir cihazla konusursa o zaman farkli bir linkden gönderilebilir. Hangi linkden gönderilecegi ise yine yapilan hesaplamanin sonucuna bagli. Bu sekilde yük dagilimi için çok iyi diyemeyiz. çünkü adresler sabit oldugu için sürekli ayni 2 cihazin iletisim kurmasi durumunda sürekli ayni link kullaniliyor olacak. Bu yüzden port numaralarini kullanmak bize çok daha iyi bir sonuç verecektir.
Load balance konfigürasyonu asagidaki gibidir.
Switch(config)#port-channel load-balance method
Default configuration “src-dst-ip” dir. Eger layer 2 switching kullaniliyorsa default olarak “src-mac” kullanilir. Load-balancing metodu seçerken dikkat etmek gerekir. Mesela, ortamda bir server oldugunu düsünelim, ip’si sabittir, degismez. Eger burada load-balancing olarak des-ip kullanirsak sürekli ayni link kullanilacak ve diger linkler kullanilmayacaktir. Bu da verimli bir çalisma degildir. Böyle bir durumda src-dst-ip kullanmak daha iyi bir çözüm olacaktir. Burada dikkat edilmesi gereken bir nokta var. Eger paketler ip paketi degilse, ipx gibi bir protokol kullaniliyorsa o zaman ne olacak? Tabiki böyle bir durumda source- destination ip bilgisine bakamaz. O halde diger load balance metodu yani lowest-method kullanilacaktir.
EtherChannelda, switchler link konfigürasyonlarinin dinamik yapilmasini saglayabilirler. Bunun için iki protokol kullanilir: Biri The Port Aggregation Protocol (PAgP),ciscoya özeldir, digeri Link Aggregation Control Protocol (LACP) standart tabanlidir. Yani ortamda cisco olmayan switchler varsa sadece LACP kullanabiliriz.
PAgP paketleri switchler üzerinde etherchannel portlarindan gider. Bu paketler ile komsular tanimlanir, port grouplari ögrenilir ve switch kendi bilgileri ile karsilastirma yapar. Bu protokol ayni zamanda etherchannel’i düzenler, yani bir portun vlan bilgisi, hizi ya da dublex modu degistiyse diger portlar için bunlari tekrar konfigüre eder.
PAgP active mode (desirable) olarak konfigüre edilebilir. Böylece uzaktaki switch ile negotiate islemini bu switch baslatacaktir ya da passive mode (auto, default) olarak konfigüre edilebilir. Böylece uzaktaki switchin negotiate baslatmasini bekleyecektir.
LACP ise PAgP’ye alternatif olarak standart tabanli bir protokoldür. LACP paketleri Etherchannel portlari üzerinden gönderilir. PAgP gibi komsular tanimlanir, port grouplari ögrenilir ve kendi bilgileri ile karsilastirma yapar. Ayrica LACP endpointlerin rollerini de belirler.
En düsük system priority’e (2 byte priorty+ 6 byte mac adres) sahip olan switch, hangi portun aktif olarak etherchannel’a katilacagina karar veren switchdir.
Portlar seçilir ve port priority (2 byte priority+ 2 byte port number) degerlerine göre aktif olurlar. En düsük deger en yüksek priority’dir ve en düsük priority’e sahip olan portlar seçilir. Her etherchannel için 16 linke kadar tanimlama yapilabilir fakat bunlarin 8 tanesi port prioritylerine göre seçilir ve aktif olur. Digerleri standby durumunda kalir, aktif linklerde sorun olursa o zaman enable olurlar.
LACP de PAgP gibi aktif mod (active) yada pasif mod (passive) olarak ayarlanabilir. Aktif modda negotiate islemini kendisi baslatir, pasif modda ise negotiate islemini karsi tarafin baslatmasini bekler.
EtherChannel konfigürasyonu yaparken etherchannel yapilacak switchde bir negotiation protokol belirlemek ve kendi portuna atamak gerekir.
Switch(config)# interface type mod/num
Switch(config-if)# channel-protocol pagp
Switch(config-if)# channel-group number mode {on | {auto | desirable} [non--silent]}
Switchlerde PAgP yada LACP protokolünden birini seçebiliriz fakat eski switchlerde LACP kullanamadigimizdan dolayi channel-protocol komutu bulunmaz. Tek bir etherchannel içerisinde portlarin group numarasi ayni olmalidir. Buna dikkat etmemiz gerekir. Channel negotiation on (PAgP negotiation yok) , auto (dinler ve cevap verir) ya da desirable (aktif olarak sorar) olarak ayarlanmalidir. Switchlerin PAgP paketlerini gönderip alabilmesi için de auto ve desirable ile birlikte non-silent ayarlanmalidir.
Switch(config)# port-channel load-balance src-dst-port
Switch(config)# interface range gig 3/1- 3/4
Switch(config-if)# channel-protocol pagp
Switch(config-if)# channel-group 1 mode desirable non-silent
LACP konfgürasyonu biraz daha farkli olacaktir. çünkü daha öncede belirttigimiz gibi system ve port priority degerleri kullaniliyor.
Switch(config)# lacp system-priority priority
Switch(config)# interface type mod / num
Switch(config-if)# channel-protocol lacp
Switch(config-if)# channel-group number mode {on | passive | active}
Switch(config-if)# lacp port-priority priority
System priority degeri 1 ile 65,535 arasinda olabilir, default olarak 32,768’dir. Eger switchlerde bu deger ayarlanmazsa mac adreslerine bakilarak hangisinin rolleri belirleme isini yapacagi belirlenir. En düsük mac degerine sahip olan seçilecektir.
Sekizden fazla portu etherchannel a atayabiliriz. Seçim yaparken yine en düsük port priority degerlerine bakacaktir, fazla olanlar standby durumda kalacaktir. Diger portlarda bir sorun olmasi durumunda aktif olacaktir. Port priority degerleri de 1 ile 65535 arasinda bir deger alabilir default olarak 32768 dir. Bu degerlerin esit olmasi durumunda en düsük port numarasina bakilarak seçim yapilir.
Switch(config)# lacp system-priority 100
Switch(config)# interface range gig 2/1 – 4 , gig 3/1 – 4
Switch(config-if)# channel-protocol lacp
Switch(config-if)# channel-group 1 mode active
Switch(config-if)# lacp port-priority 100
Switch(config-if)# exit
Switch(config)# interface range gig 2/15– 8 , gig 3/5– 8
Switch(config-if)# channel-protocol lacp
Switch(config-if)# channel-group 1 mode active
Yukaridaki konfigürasyonda dikkat etmemiz gereken nokta gig 2/15– 8 ve gig 3/5– 8 araligindaki portlara priority atanmamis o halde default degerleri kullanilacak. Default degeri 32768 oldugu ve 100den büyük oldugu için bu portlar standby durumunda kalacaktir.
Troubleshooting ve verify için show komutlari kullanilabilir. Asagidaki “show etherchannel summary” komutunun çiktisina bakacak olursak; group 1 için atanan portlari görmemiz mümkün.
Show etherchannel port komutu ile de portlarin hangi modda oldugunu, kullanilan protokolu ve flaglardan portlarin durumunu ögrenmek mümkün.
Bu komutlar ile portun hizini, dublex modunu, hangi vlan de oldugunu native vlan i ögrenmemiz mümkün degil. Onlar için show running-config interface type mod/
num
komutunu kullanabiliriz. Ya da show
interface type mod/num etherchannel komutu ile tek
bir porttaki parametreleri görebiliriz.
Tüm anlattiklarimizi 3 cümle
ile özetleyelim