STP(Spanning Tree Protocol)

Networkün sürdürülebilirliğini sağlayan , yedek yol oluşturarak haberleşmenin kesilmemesini amaçlayan yapılar kullanılmaktadır. Bu yapılar aynı zamanda trafiğin yükünü paylaşabilir ve kapasiteyi artırabilir.Bu olumlu yönlerinin yanı sıra broadcast storm, dublicate unicast frames gibi problemlere de yol açabiliyor.

Bu problemleri inceleyecek olursak ilki Broadcast Storm (Yayın fırtınası) bütün bant genişliğini saniyeler içinde tüketebilir. Çünkü aynı network içinde aynı subneti paylaşan cihazlar düzenli olarak birbirlerine broadcast paketleri gönderiyorlar. Broadcast Storm’a Network yönetimin zayıf olması, ucuz cihazlar kullanılması,konfigurasyonların yanlış yapılması gibi etkenler yol açabilmektedir.

A switchine bağlı B düğümü, B switchien bağlı A düğümü ile iletişim kurmak istiyor SwitchA bu sırada A düğümünü bilmiyor ve doğal olarak diğer switchlere paket gönderiyor. Bu sayede SwitchB ve SwitchC B düğümünü Mac adres adres tablolarına CAM table’a ekliyorlar. Ama hala A düğümünün adreslerini bilmedikleri için paketi tüm portlarından gönderiyorlar.

Her switch diğer switchlerden gelen paketleri alıyorlar ve tekrar tüm portlarından bu paketler gönderiliyor. Hala A düğümünün adresi bilinmiyor, SwitchA aldığı paketi tekrar gönderiyor.

Switching döngülerine gelecek olursak 2-3 nokta arasında birden fazla 2.katman yolunun bulunması olarak özetleyebiliriz.

Katman 2 paketleri TTL yani Time to live değerini desteklemediği için paketler döngüye girmiş bir topolojiye gönderildiğinde sonsuza kadar dönebilir.

STP sayesinde bu problemler çözüme kavuşturulmuştur.

STP, 2.katmanda gerçekleşen Switching döngülerinin sebep olduğu broadcast fırtınalarını önlemek amacıyla 1985 yılında IEEE 802.1d ile standartıze edilen STP döngü oluşturabilecek portları belirleyip bu portları blokluyor. Ve diğer bir portun kullanılamaz hale gelmesi durumunda bloklanan portu tekrar açıyor.

Yani döngüye neden olabilecek portları kasten engelleyerek ağdaki tüm hedefler arasında tek bir mantıksal yol olmasını sağlıyor.

Stp ye katılan switchler bir harita ya da topoloji oluşturuyor. STP switchleri topoloji veritabanını oluşturmak amacıyla BPDU gönderiyorlar. (Bridge Protocol Data Unit)

Varsayılan her 2 snde tüm portlardan gönderilen BPDU’lar bir çoklu gönderim adresi olan ve sırf bu işlem için ayrılan şekildeki adrese gönderilmektedir.

Bir STP topolojisi oluşturmak için şekildeki adımlar işletilmektedir.

Ve bu işlem her vlan yani subnet için ayrı ayrı yapılmaktadır.

1)Kök Köprü(Root Bridge) seçilir.

2)Kök portlar(Root Port) belirlenir 3)Designated portlar belirlenir.

4)Döngüleri önlemek amacıyla bloklu olması gereken portlar belirlenir.

Köprü kimliği (Bridge ID)

Root Bridge topolojinin mantıksal merkezidir ve topoloji üzerindeki her Bridge 2 snde bir PDU mesajı göndererek kendisinin Root Bridge olduğunu ilan eder.

Root Bridge belirlenmesinden sonra diğer switchler sadece dinleyici olurlar. Root Bridge belirlemede Bridge Id önemlidir.

Bridge Id en düşük olan switch en iyi kabul edilir ve Root Bridge olur. Bridge Id şekildeki gibi hesaplanmaktadır.

BPDU nedir ?

STP topolojisini kullanan genişletilmiş bir yerel ağ içerisinde switchler arasında takas edilen veri iletileridir.

BPDU paketleri , bağlantı noktaları ,adresler, priority maaliyet (path cost ) hakkında bilgi içerir.

BPDU iletileri bir ağ topolojisinde döngüleri algılamak için köprüler arasında gönderilirler.

Inferior BPDU

İnferior BPDU Az daha değersiz topoloji kurulurken ya da ortaman yeni bir switch eklendiğinde topolojinin tekrar converge (yakınsama) ‘sı için BPDU alışverişi yapılırken bu BPDU’lar taşıdıkları öncelikli değerlerine göre kıyaslanır. Daha yüksek öncelik değerine sahip BPDU’lar interior olarak değerlendirilir. Yani STP’de daha düşük değerler daha iyidir.. Bu sayede Switchler kendi arasında BPDU kıyaslamasına göre atamalarını düzenler ve paketler için en iyi yolu hesaplar .

Superior BPDU Üst bpdu, daha düşük köprü kimliği yani bridge idsine sahiptir bu tek bir bpdu bazında değerlendirilemez. Sadece karşılaştırmada biri daha yüksek veya daha düşük olarak kabul edilebilir.

Bir switch ast bir bpdu alırsa hiçbir şey değişmez,fakat üst bpdu olmak stp topolojisini yeniden oluşturmasına sebep olacaktır.

Priority değeri düşük olan Root Bridge olur ve eğer öncelik değeri eşitse mac adresi düşük olan Root Bridge olur

Varsayılan priority 32.768

Root Portlarının Belirlenmesi

Bir switchin Root Bridge en yakın olan portu Root port olarak belirlenir. Yakınlığın ölçütü olarak Path Cost yani rota maliyeti değerine bakılmaktadır.

Her switchin sadece bir tane Root Portu olabilir. Root Bridge’nin Root Portu olamıyor zaten amaç Root Bridge’e en yakın portu belirlemektir.

Rota Maliyeti bağlantı hızına dayanılarak hesaplanır ve düşük olan rota maliyeti tercih edilir.

Designated Portların Belirlenmesi

Bir ağ segmentinde mutlaka ve sadece bir tane (designated) atanmış port olmalıdır. İki tane olursa döngüye sebep olabilir. Atanmış portlar rota maliyetine göre belirlenir ve bu portlar hiçbir şekilde blok durumda olmaz. Bir port hem Root hem de Designated olamaz.

Port ID :> Rota maliyeti ve Bridge ID eşit olduğu durumlarda 4 bitlik port önceliği(priority) ve 12 bitlik port numarasından oluşan port id değerine bakılır.

Port önceliği varsayılan olarak 128dir.

Stp port rollerin birincisi Path Cost (Rota Maliyeti), ikincisi Bridge Id(köprü kimliği) ve son olarak port id sırasıyla belirler.

Blocking durumunda paketler yönlendirmez ve mac adreslerini öğrenmez ama switching topolojisindeki değişiklikleri öğrenmek adına BPDU’ları dinlemeye devam eder. Blocking durumundan sonra Listening (dinleme) durumuna geçer.

Dinleme durumundaki portlar paketleri iletmiyor ve mac adresi öğrenmiyor ama BPDU’ları gönderiyor ve dinliyor.Dinleme durumundaki port Root veya Designated olarak seçilirse Learning durumuna geçmektedir

Listening’den Learninge geçmeden önce Forward Delay geçmesi bekleniyor. BPDU’ları dinlemeye ve göndermeye devam ediyor.

CAM tablosuna Mac adresleri eklemeye başlıyor; paketleri yönlendiremiyor Learning durumundaki bir port Forward durumuna geçmeden önce, forward delay vakti kadar bekliyor. Forward durumundaki port BPDU alıp gönderiyor ve paketleri yönlendirebiliyor. Disabled durumu ise yönetici tarafından kapatılma (shutdown) halinde ortaya çıkıyor. Paketleri yönlendiremiyor ve STP sürecine katılamıyor.

STP nin blocking durumunda başlaması; olası loopları önlemek için herhangi bir trafik oluşmadan ve paketler yönlendirilmeden önlem almak amaçlıdır.

Stp zamanlayıcılarından bahsetmek olursak Hello Time Switchin ne sıklıkla BPDU gönderdiğini belirtir. Varsayılan 2 snde bir gönderilir ve değiştirilir. Forward Delay zamanlayıcısı Listening ve Learning durumlarının ne kadar zaman harcanacağını belirtir.

Max Age zamanlayıcısı Switchin komşu swithcten gelen BPDU düşürmeden önce ne kadar tutacağına dair bilgi verir. Max Age periyodunda BPDU alamazsa topolojide bir değişiklik olduğunu kabul ediyor ve o komşu switchin BPDU bilgisini siliyor. Varsayılanda Max Age zamanlayıcısı 20 sndir .

Bu zamanlayıcı değerleri değitirilebiliyor fakat bu az ihtiyaç duyulan bir şey ve STPnin performansını kötü etkiliyor.

Zamanlayıcılar değiştirilecekse de Root Bridge üzerinde değiştirilmeli ve Root Bridge daha sonra bu değişikliği BPDU’lar kullanarak diğer switchlere aktarmalıdır. Root olmayan swithcler yerel değişiklikleri tanımıyor

Stp topoloji değişikliklerinden bahsedecek olursak Topoloji oluştururken veya ayağa kaldırırken switchler 2 türlü BPDU gönderirler. Bir konfiguration ikincisi ise topoloji değişiklik bildirimleri

30 snlik converge time (yakınsama süresi) bazı topolojilerde çok bulunuyor. Bu sebeple belli başlı teknoljiler geliştiriliyor.

PortFast, UplinkFast, BackboneFast bunlara örnek verilebilir.

STP güvenliği ; BPDU guard, Root Guard, BPDU Filter gibi teknolojiler geliştirilerek STPnin olası tehlikelerden korunması amaçlanmıştır.

Bu korumalar port bazında yapılandırılır ve varsayılan olarak kapalı gelmektedir.

Root Guard :>Bir switchin kendisini Root Bridge ilan etmesini önlüyor.

BPDU Guard :>PortFast son kullanıcıya bağlı portlarda etkinleştirildiğiinden bu port BPDU almamalıdır. Bu durumda BPDU guard ve portfast birlikte çalışmalı diyebiliriz.

BPDU Filtering :>PortFast ile işbirliği içinde çalışabilecek bir diğer araçtır ve BPDU’ları çift yönlü olarak engeller. Hangi modda konfigure edildiğine göre tepkisi değişmektedir.

STP türleri

RSTP De 4 port Rolü

Root port :>Root Bridge giden en iyi rota maliyetine sahip porttur.

Alternate (alternatif) port :> Yedek Root Port Daha yüksek rota maliyeti

Designated (atanmış) Port :>Her network segmentindeki en iyi rota maliyetine sahip Root olmayan port

BackUp (Yedek) Port :> Atanmış portun yedeği

RSTP'deki 3 Port Durumu Başlangıçta port discarding durumda, yani paketler yönlendirmiyor ve Mac adreslerini öğrenmiyor, BPDU'ları dinliyor. Alternate ve Backup portlar discarding durumda kalmaya devam ederler.

RSTP dinleme durumuna ihtiyaç duymaz. Bir port kök veya atanmış olarak belirlenirse direkt öğrenme durumuna geçiyor. Mac adreslerini CAM Table'a eklemeye başlıyor ama paketleri henüz yönlendiremiyor.

Öğrenme durumundaki port iletime geçince BPDU'ları alabiliyor ve iletebiliyor, MAC adreslerini öğrenebilir, paketleri yönlendirebiliyor.

Multiple Spanning Tree Protocol (MSTP)

1)Tek bir fiziksel ağdaki her Vlan için birden çok kapsayan ağaç oluşturur.

2)Her VLAN'ın yapılandırılmış bir kök köprüsüne ve yönlendirme topolojisine sahip olmasını sağlar.

3) BPDU sayısını ve ağ cihazlarının CPU üzerindeki baskılarını azaltır

4) MSTP, RSTP'nin bir uzantısıdır.

5) MSTP, her Vlan grubu için ayrı bir kapsayan ağaç yapılandırır ve her bir kapsayan ağaçtaki olası alternatif yollardan biri hariç tümünü engeller.

6) MSTP, birden çok MST örneğini (MSTI) çalıştırabilen Çoklu Genişleyen Ağaç (MST) bölgelerininin oluşturulmasına izin verir.

Designated Root Bridge ID

Belirtilen örnek için kök köprüsünün köprü önceliği ve MAC adresi

Root Port

Belirtilen örneğin kök bağlantı noktası. Kök bağlantı noktası, anahtarın kök köprüye ulaşmak için kullandığı tek bağlantı noktasıdır. Buna, temel köprüye en düşük yol maliyetine sahip bağlantı noktasına göre karar verilir. Bu değer sıfırsa, anahtar kök köprüdür.

Root Path Cost

MST örneği için anahtarın kök yolu maliyeti. Yol maliyeti, anahtar ile ağdaki bir sonraki cihaz arasındaki bağlantının hızıyla tanımlanır. Kök yol maliyeti, anahtardan kök köprüye giden yol maliyetlerinin kümülatif toplamıdır. Bu değer sıfırsa, anahtar kök köprüdür.

Bridge ID

Belirtilen örnek için anahtarın köprü önceliği ve Mac adresi

Remaining Hops

Bir sonraki hedefe kadar olan atlama sayısı.

Port Durumu

Belirtilen bağlantı noktasının mevcut durumu

Disabled(Devre Dışı) : STP bağlantı noktasında devre dışı bırakılır. Bağlantı noktası trafiği yönlendirir ve Mac adresini öğrenir.

Blocking(Engelleme): Bu, bağlantı noktasının trafiği iletmesine veya MAC adreslerini öğrenmesine izin verilmediği anlamına gelir. Ancak bağlantı noktası BPDU paketlerini iletebilir.

Listening(Dinleme): Bağlantı noktası dinleme modundadır. Bu, bağlantı noktasının trafiği iletmesine izin verilmediği ve MAC adreslerini öğrenemediği anlamına gelir.

Learning(Öğrenme): Bu bağlantı noktasının trafiği iletimesine izin verilmediği, ancak yeni MAC adreslerini öğrenmesine izin verildiği anlamına gelir.

Forwarding(Yönlendirme): Bu bağlantı noktasının trafiği iletmesine izin verildiği ve yeni MAC adreslerini öğrenebildiği anlamına gelir.

Port Rolü

MSTP tarafından STP yollarını sağlamak için atanan bağlantı noktası veya LAG'ın rolü

Root (Kök): Paketleri kök cihaza iletmek için en düşük maliyetli yolu sağlayan bağlantı noktasıdır.

Designated(Belirlenmiş): Köprünün LAN'a bağlandığı bağlantı noktası. Bu, MST örneği için LAN'dan Kök Köprüye en düşük kök yolu maliyetini sağlar.

Alternate(Alternatif): Bağlantı noktası, kök arayüzden kök aygıta giden alternatif bir yol sağlar.

Backup(Yedekleme): Bağlantı noktası, kapsama ağacına doğru belirlenen bağlantı noktası yoluna bir yedekleme yolu sağlar. Bunun nedeni,iki bağlantı noktasının bir noktadan noktaya bağlantı ile bir döngü içinde bağlandığı bir yapılandırmadır. Bir LAN, ağın paylaşılan bir kesimine iki veya daha fazla bağlantıya ihtiyaç duyduğunda yedek bağlantı noktaları kullanabilirler.

Disabled(Devre Dışı): Bağlantı noktası kapsayan ağacın parçası değildir.

Sonsuz döngüye sebep olabilecek. Aradaki kabloyu kırıyor. Arada kablo yokmuş gibi davranıyor. Portu komple kapatmıyor. Trafiğin geçmesini izin vermiyor. Eğer aradaki kablolardan birisi koparsa Trunk 3 veya Trunk 1. Stp protokolü bunu otomatik olarak algılıyor ve bloklamayı kaldırıyor Trunk 2 den ve trafiğin geçmesine izin veriyor. Her şey otomatik.

A Layer 2 loop can be result in MAC address table instability, link saturation, and high CPU utilization on switches and end devices,resulting in network becoming unusuable.

Switchlerden bir tanesi loop olduğunu anlıyor. Ağaç gibi düşünürsek bir tane kök (root ) bridge (switch'in eski adı) olacak. Stp protokolü çercevesinde her switch bir isme sahip olur bu isme Bridge ID deniliyor.

Bridge ID; 2 parçadan oluşan sayısal bir değer. Ön tarafı priority no, sonrada switch'in mac adresinden oluşuyor. Her yönetilebilir swithin kendisine ait mac adresi vardır. öncelikNo.MacAddres Öncelik numarası ile 16 bitlik sayısal bir değer. Yani 0-65535 arasında değer alan bir kısım. Default olarak 32768'dir. Bridge ID denilen Bridge ismine bakılarak kararlar veriliyor. Bu defaul değeri küçültebiliyorsun büyütebiliyorsun. Yani yöneticiye hak vermişler. Hiçbir şey ellemesen kabloları tak STP çalışır. (Plug and Play)

Mac adresi eşsiz olduğu için tüm Switchlerin mac adresi birbirlerinden farklı olur.

Path Cost

Path cost değeri, Routing protokollerinde metric denilen bir değer vardır. Metric bir hattın ne kadar kaliteli olduğunu tarif etmek için kullanılan bir parametre.STP protokolü de mümkün olduğunca en kaliteli hat ayakta kalsın. Kalitesiz daha yavaş, daha düşük hızlı hatlar bloklansın.

Hattın hızı ne kadar yüksek ise Cost değeri düşük oluyor. Gerçek hayatta ücretli yollar gibi düşünebilirsiniz. Kilometresi düşük ise kalitelidir. Hat hızları 10 GB dan daha büyük olabileceği için bunları revize ettiler. RSTP'deki gibi revize ettiler ama hala bu değerler hala geçerli. Bunların geçerli olmasının nedeni piyasada hala çok fazla eski switch var. Eskiler STP'ye yeniler RSTPye bakarsa elma ile armutu karşılaştırmış olur.

STP değerleri hale geçerli bunların cost değeri verirken bir mantığı yok.

Port ID

Switchin üzerindeki portlara da bir isim verelim demişler. Ona da port id deniliyor. Port ID iki kısımdan oluşuyor. ÖncelikNumarası.PortNumarası bu değer 8 bit 0-255 arasında alabileceği değer defaultta 128. Port IDye örnek vermek gerekirse 128.1 (STP'ye göre 1.portun adı).

Switchler birbirlerine bağlı olduklarında ilk yaptıkları iş, birbirlerine kendilerini tanıtmak amaçlı BPDU denilen paketler yollar. Bridge Protocol Data Unit, BPDU paketi 2 sn de bir yollanır. Tüm swithcler STP çalıştığı sürece 2 sn de bir bu paketi yollarlar.

İlk açıldıklarında hattı dinlerler sonra yollamaya başlarlar. İlk kabloyu taktıktan sonra switch kendini Listening durumana geçirir. Karşı switche BPDU yollar ve BPDU'ları dinler. Listening durumda hiçbir şekilde data trafiği geçirmez. Gelen paketleri kesinlikle Mac adres tablosuna kayıt etmez. Bu süreç 15 sndir. 15 sn boyunca sadece BPDU yollar ve alır amacı loop var mı yok mu diye tespit etmek. Loop olmadığını düşünüyorsa 15 sn'de learning state'e geçer. Öğrenme aşamasıdır. Burada da data trafiği yok. BPDU alıp yollar artık Mac adresi tablosuna gelen paketlerin kaynak mac adreslerini işlemeye başlar. Adı üstünde öğreniyor neyi öğreniyor Mac adresini.

Eğer bu 15 snde de bir sıkıntı yoksa toplam 30sn sonra Forwarding state'e geçer. Yani gerçekte switchin paket akışını sağladığı duruma deniliyor.

Blocking state portun shutdown edilmesi değildir. Portu shutdown etmek, disable etmek anlamına geliyor STP protokolünde. Portu kapatmak demek. Öldü yani Link yok. Blocking de ise BPDU almaya devam eder. Yani sadece dinler. Geri BPDU bile yollamaz.

15 sn süresinin adı Forward Delay'dir. 15sn listening 15 sn learning toplam 30 sn de hat açılır.

En küçük bridge id olan switche root bridge (switch) denilir. Switchler birbilerini tanımadığı için önce kendilerini root zanneder. Kabloları takınca birbilerine BPDU paketleri yollarlar ve burada en küçük Mac adresi olan, en küçük Bridge ID'ye sahip olur dolayısıyla. Bir STP topolojisinde sadece bir tane Root olur. En küçük olan.

Root'tan aşağıya doğru giden portlara Designated port adı verilir. Root'a doğru giden switchlerin portlarına Root port adı verilir.

B ve C birbirinden designated port bilgisi alırsa, Switchler ikiside Root swithce gidiyor diye birbirlerini tanıyorlar ve loop olduğuna karar veriyor. Bu şekilde bir durum ile karşılaştıkları anda switchlerden birisi karar verip, kendisi gönüllü olarak portunu bloke edecek. Block port diğer adı ise alternate port.

Bloklama sürecinde 3 ayrı değere bakılır. Bakılan ilk değer Path Cost'tur. Cost değeri düşük olan her zaman daha üstündür. Hat hızları eşitse bu durumda Bridge ID ye bakılıyor. Bridge ID değeri küçük olan kazanır. Bridge IDler eşitse o zaman Port ID 'ye bakılır. Port Idlerin eşit olma ihtimali yok. Port Idsi düşük olan port açık tutulacak. Büyük olan port kapatılacak.

Cisco ve IEEE STP protokolünü geliştirip, farklı versiyonları çıkardılar.

Switch STP ayarlıysa onu RSTP'ye çevirerek 30 snlik bekleme süresini kısaltabiliriz.

MST ile her vlan'a ağaç değilde gruplar için ağaç yapan versiyonuna deniliyor.

Switch(config)#spanning-tree mode ?
  pvst        Per-Vlan spanning tree mode
  rapid-pvst  Per-Vlan rapid spanning tree mode
  Switch(config)#spanning-tree mode rapid-pvst 

Defaultta PVST çalışıyor. hızlıya geçmek istersek rapid-pvst yapabiliriz.

Portfast olarak yapılandırılan portlar, Switch, Hub veya Bridge cihazlarına bağlanmayan portlardır ve sadece son kullanıcı cihazlar için kullanılmaktadır.

Switch(config)#int fa0/1
Switch(config-if)#spanning-tree portfast 
%Warning: portfast should only be enabled on ports connected to a single
host. Connecting hubs, concentrators, switches, bridges, etc... to this
interface  when portfast is enabled, can cause temporary bridging loops.
Use with CAUTION

%Portfast has been configured on FastEthernet0/1 but will only
have effect when the interface is in a non-trunking mode.


Switch(config-if)#spanning-tree bpduguard enable 

//Bu komutlar ile tek tek uğraşmak yerine global config modda şu komutu yazabilirz.
Switch(config)#spanning-tree portfast bpduguard default

//Tüm acces portlarda bpduguard ve portfastı açıyor.Trunk portlarda bunu açmıyor.

//Dizaynındaki merkezdeki  herkesin birleştiği ana omurga switchin her zaman root 
olsun istersin. Root olması önemli çünkü Root'a giden portlar asla bloklanmaz.
// Ana omurga switchin Root olmasını tercih ediyoruz. Bunun için öncelik numarasını 
küçüktüyoruz.

Switch(config)#spanning-tree vlan 1 priority 4096

//Ciscoda her vlan için ayrı ağaç çizdiği için. İLk olarak vlan1 için öncelik numarası 
verdik. 
Bu komut ile aynı işlemi yapan diğer bir komut ise

Switch(config)#spanning-tree vlan 1 root primary
//Yedek olacak omurga switchte ise şu komutu yazabilirsin

Switch(config)#spanning-tree vlan 1 root secondary

//genelde root olmasını istediğimiz komut ise şu şekilde.
Switch(config)#spanning-tree vlan 1 priority 0
//yedek olmasını istediğimize ise şu komutu yazıyorum
Switch(config)#spanning-tree vlan 1 priority 4096

Kablolama hatası olabilmesine karşı cisco bunu korumaya almış. Korumayı da devreye alabiliriz. Bpdu guard şu işe yarıyor. Eğer kazara BPDU paketi gelirse yani switch takarsak portu hemen switch error-disabled ediyor.

Last updated