Hot Standby Router Protocol nedir ne iş yapar?

Günümüzde network ile uğraşan hemen herkes, Layer 3 çalışan ve networkun merkezinde yer alan bir cihazın herhangi bir sebepten dolayı çok az bir süreliğine de olsa down olmasının tahammül edilebilir bir durum olmadığını bilir diye düşünüyorum. Bu sebepten de,  Internet uygulamalarının ya da VoIP kullanımının giderek yaygınlaşmasıyla birlikte yedekliliğin (redundancy) önemi çok daha artmıştır. Yani bu, merkez cihazımız down olsa bile buna alternatif olarak çalışabilecek bir cihazımızın daha olması anlamına geliyor.

HSRP, Layer 3 switchlerin (router) yedeklilikten faydalanarak downtime sürelerinin mümkün olduğunca azaltılmasını, hatta neredeyse 0’a kadar indirilmesini sağlayan birkaç protokolden sadece birisidir. Bu sayede cihazların down olmasından kaynaklı problemlerin çözümünde büyük ölçüde ilerleme kaydedilmiştir. HSRP protokolünün nasıl çalıştığını birazdan açıklayacağım, ancak söylediğim gibi Layer 3 switchlerde bu yedekliliği sağlamak için sadece HSRP kullanılmaz. Diğer protokoller VRRP (Virtual Router Redundancy Protocol) ve GLBP (Gateway Load Balancing Protocol)’dir. HSRP cisco’ya ait bir protokoldür.

HSRP’de iki routerdan birisi ‘Active’ diğeri ise ‘Standby’ olarak çalışır. Yani bir tanesi aktif işlemleri yerine getirip paketleri hedeflerine ulaştırırken, diğeri bu router’ı takip ederek herhangi bir aksaklık durumunda aktif olanın yerine geçmek için yedekte beklemektedir. Peki, bu geçiş işlemi nasıl yapılıyor?   Daha da önemlisi üzerinde bu kadar yük olan cihazların kendine gelmesinin, konfigürasyonların tekrar çalışır hale gelmesinin network için kabul edilmez uzunlukta sürelerde gerçekleştiğini biliyoruz. O zaman nasıl 1 sn.’nin daha altında sürelerde bu geçiş işlemi yapılabiliyor? Peki, kullanıcılar bu durumdan nasıl haberdar olacaklar? Sonuçta arp-cache’lerinde ilk router’ın mac adresi var ve hala o cihazı merkez cihaz olarak görüyorlar. Arp-cache’nin silinip Standby Router’ın mac adresini öğrenmeleri çok zaman alacağı için yedeklilik olsa da kullanıcılar bağlantıda problem yaşayacaklardır.

Bu iki Layer 3 switch her 3 sn’de bir birbirlerine hello paketi göndermektedirler, her paket gönderildikten sonra hello timer çalıştırılır ve 3 sn. sonunda yeni bir hello paketi gönderilir. ‘Standby’ durumunda olan cihaz ‘Active’ cihazın 10 sn. boyunca hiç hello paketi göndermemesi durumunda yönetimi devralıp kendini ‘Active Router’ olarak ilan eder ve aktif işlemleri kendisi yürütmeye başlar. Bununla birlikte, başlangıçta aktif olan cihaz ‘Standby’ durumuna geçer. Her ne kadar hello timer 3, hold timer 10 sn. default olarak belirtilen değerler olsa da, bu değerleri değiştirmek mümkün, hem de msec cinsinden  Geçiş süreci bu şekilde, peki kullanıcılar nasıl bu sürece uyum sağlayacaklar.

Öncelikle iki cihaz için de geçerli olacak bir grup numarası belirlenir ve her iki cihaz da bu grup numarasıyla konfigüre edilir. Grup numarası girildiği anda virtual mac adresi cihaz tarafından oluşturulur. Aşağıda bir virtual mac adresi örneğini görebilirsiniz. Kullanıcıların gateway olarak göreceği bir virtual (sanal) ip adresi belirlenir, böylece son kullanıcı hiçbir zaman gerçek Layer 3 switchlerin IP adresini bilmemiş olur, onlar her zaman virtual IP ve virtual mac ile iletişim halindedir. Active–> Standby geçişlerinde virtual IP aynı kaldığı için bağlantıda süreklilik sağlanmış olur.

Örneğin, grup numaraları 5 olarak atanmış olan iki Layer 3 switch oluşturulan virtual mac adresi aşağıdaki gibi olacaktır.

HSRP konfigürasyonunun ilk adımı Layer 3 switchleri belirli bir grup numarasına göre konfigüre etmektir. Bu sayede o grup numarasıyla birlikte atanan bir IP adresinin yanında otomatik olarak bir virtual mac adresi belirlenecektir. Önceki yazıda kullandığımız mac adresinden yola çıkarak; iki switch’e de aynı olmak üzere aşağıdaki şekilde grup numarası atayabiliriz. Unutmamamız gereken çok önemli bir nokta ise bu konfigürasyonun aynı VLAN’lerde yapılacak olmasıdır.


 

SwitchA#configure terminal
SwitchA(config)#interface vlan <vlan numarası>
SwitchA(config - if)#standby <grup numarası> ip <sanal gateway ip adresi>
 

İki Layer 3 switch’e de aynı grup numarası ve ip adresi değerleri girilmelidir, çünkü amacımız bilindiği gibi yeri geldiğinde ikisi için de cevap verebilecek tek bir sanal gateway yaratmak.
İki switch’ten hangisinin ‘Active’ hangisinin ‘Standby’ olacağını ise “priority” olarak bilinen değer belirler. Defaultta priority değeri 100’dür, aktif olması istenen cihaza 100’den büyük bir priority değeri girmek yeterli olacaktır (0-255 arasında herhangi bir değer atanabilir). Priority değeri büyük olan switch aktif olacaktır, ancak priority değeri iki switch’te de aynıysa o zaman ip adresi büyük olan switch aktif olarak görev yapacaktır. Priority konfigürasyonu yine aynı şekilde belirli bir vlan ve grup numarası altında yapılmalıdır, aşağıdaki şekildedir:

SwitchA(config - if)#standby <grup numarası> priority <priority değeri (0-255 arasında bir değer)>

Örneğin elimizde priority değeri 150 olan SwitchA, priority değeri 100 olan SwitchB şeklinde iki switch var. Bu durumda SwitchA’nın aktif switch olacağını yukarıda anlattık. Peki SwitchA bir sebepten dolayı down olursa ne olacak? Bu durumda 3 hello time kadar sürenin (10 sn) geçmesini bekledikten sonra SwitchB yönetimi devralacaktır ve aktif switch olacaktır. SwitchB aktif switch oldu, peki SwitchA’nın bağlantısı bir şekilde sağlandı ve network’e yeniden dahil oldu, bu durumda priority değeri daha küçük olmasına rağmen SwitchB hala aktif switch olarak görev yapacaktır. Başta söylediğimiz, priority değeri büyük olan switch her zaman aktif olur ifadesiyle çelişki yaşamış oluruz. Böyle durumlar için HSRP’nin bir “preempt“ adında bir özelliği vardır ancak defaultta disabled durumdadır. Preempt enable yapıldığı zaman priority değeri büyük olan switch bir süre down olup tekrar network dahil olsa bile networke katıldığı andan itibaren aktif switch olarak çalışacaktır. Preemption konfigürasyonu aşağıdaki şekildedir.

SwitchA#configure terminal
SwitchA(config)#interface vlan <vlan numarası>
SwitchA(config - if)#standby <grup numarası> preempt

 

Aktif olarak çalışan switch’in tamamen down olması durumunda değil de belirli bir portunun down olması durumunda bunun takip edilip beklemede olan switch’in aktif olarak devreye girmesi de mümkün. Buna tracking deniliyor.  İstenilen port track edilmeye başlandığı anda, o portun down olması durumunda Aktif switchin priority değeri konfigürasyonda belirtilen değer kadar düşürülür, beklemede olan cihazın aktif olması sağlanır.

SwitchA#configure terminal
SwitchA(config)#interface vlan <vlan numarası>
SwitchA(config - if)#standby <grup numarası> track <port numarası> <priority değerinden çıkarılacak değer (1-255 arasında bir değer alır)>

 

Son olarak hello timer konfigürasyonundan bahsedeceğim. Bildiğimiz gibi HSRP’de hello timer süreleri defaultta 3 sn. ve 10 sn. ‘dir. Yani her 3 sn.’de bir hello paketi gönderilir, 10 sn. boyunca hello paketi gelmezse de beklemede olan switch kendisini aktif olarak ilan eder. Bu süreleri değiştirmek mümkün, bunu aşağıdaki komutlarla yapıyoruz.

SwitchA#configure terminal
SwitchA(config)# interface vlan <vlan numarası>
SwitchA(config - if)#standby <grup numarası> timers <hello paketi gönderme süresi> <beklemede olan cihazın devreye girme süresi>

Not: En son satır ise süreler sn. cinsinden konfigürasyonu göstermektedir, ancak msec (milisaniye) seçeneği de kullanılabilir.

SwitchA(config - if)#standby <grup numarası>  timers msec <hello paketi gönderme süresi> msec<beklemede olan cihazın devreye girme süresi>

Kaynak