← Back to list

Spanning Tree Nedir, Nasıl Kullanılır?

Spanning Tree Protocols;

Emrah Gökmen · 2023-07-26 08:32 · 0 claps · 7.3 min read
#spanning-tree #rstp #mstp #network-security #networking-tips
Open on Medium ↗

Spanning Tree Nedir, Nasıl Kullanılır?

Spanning Tree Protocols;

Genel anlamda tüm L2 switch’ lerde yedekliliği sağlamanın güvencesi olan protokoldür. Yapınızda core switch ne bağlı önemli olan fiziksel sunucularınızı sadece bir kablo ile bağlandığını düşünelim, böyle bir senaryoda eğer ki kablonuzun başına bir iş geldi tüm sisteminizin down olması demektir. Muhtemelen kimsenin başına gelmesini istemeyeceği bir olaydır. Peki tek kablo yerine 2–3 tane kablo atarız diyebiliriz. Tabi ki çok da güzel olur aslında … Aman Dikkat!. Stp olmadan bunu yaptığımız andan itibaren ağımız içerisinde loop lar oluşmaya başladı bile diyebiliriz. Loop bir networkden korkulacak en kötü şeylerden biri olabilir. Saniyeler içersinde L2 switch lerinizde sonsuz paketler dönmeye başlar ve cihazları cpu, ram gibi değerleri dakikalar içerisinde tavan yaptırıp networkünüzün kullanılmaz hale getirecektir.

Ama TTL (Time to Live) değeri var paketler sonsuza kadar dönmez diyebilirsiniz. Ancak TTL değeri üçüncü katmanda çalışır ve paketlerin başına eklenir. Her bir router geçildiğinde yaşam ömründen bir(1) eksilir. L2 Switch’ ler bu değerli değiştiremezler.

1- Nolu bilgisayar ARP sorgusunda bulunduğunu varsayalım. ARP broadcast paketidir ve herkese giden paketlerdir. Switch bu paketlere karsı davranışı geldiği port hariç tüm portlarından bir sonraki hedefe yollar. Sıraki switch yine aynı davranışı sergiler geldiği port hariç tüm portlarından o paketi gönderir. Bir sonraki yine aynı davranış. Ne oldu paket yine çıktığı switch ye geri geldi. Bitti mi hayıtr aynı senaryo işleme devam eder. Loop oldu bile. 2. makine her arp paketine cevap vermek zorunda hisseder ve oda arp broadcast yapmaya başlar. Geçmiş olsun 😊. Artık sonsuz bir döngünün içerisindeyiz. Ağdaki cihazlarımızın CPU, RAM değerleri bir süre sonra tıkanacak ve cevap veremez hale gelecektir.

Stp protokolü eğer sisteminiz de aktif ise switch’ lerin her 2 sn’ de bir birbirlerine gönderdirleri BPDU mesajları sayesinde böyle bir durumu algılayıp loop’ a sebep olabilecek portu blokluyor. Broadcast storm başlamadan bunu yapar çünkü yayın fırtınası başlayınca switch’ lere ulaşamayabiliriz.

Sadece broadcast paketleri değil, multicast ve unknown unicast paketlerde loop a sebep olabilirler. Loop mac adresi toplalarını da bozar.

STP Protokolü Nasıl Çalışıyor?

Spanning Tree ağaç yapısından switch’ ler den bir tanesi loop olduğunu anlıyor ve bazı kriterlere göre switch ben bu portumu kapatıyorum diyor. Bu sayede döngüdeki paketin tekrardan kendisine gelmesini engellemiş oluyor. Portu bloklamak kapatmak anlamında değil sadece trafik geçirmemek anlamındadır. Bloklanan port BPDU mesajların gönderip almaya devam eder. Standby yedeklilik durumdan bekler diyebiliriz. Bu işlemlerin yapılması için 3 tane tanımlamamız var gelin hep beraber inceleyim.

Bu sürecin gerçekleşmesi için stp ağaç yapısında bazı gereklilikler vardır. Öncelikle Root (kök) switch seçilmesidir.

Root Switch Nasıl Seçilir.?

Spanning Tree Protokolünde, protokolün çalışması öncelikle Root Switch seçimine ihtiyaç vardır. Root Switch seçilmesi için Bridge-id, Path Cost, Port-id gibi değerlere bakarak en düşük değerler baz alınarak seçilir.

Bridge ID

Bütün switch lerin bir adı vardır buna bridge-id diyoruz. Priority-No.MAC adresi olarak tanımlanır. Öncelik numarası 0–65535 arası değer alabilir. Bu değeri manuel değiştirebiliriz ancak Default değeri 32768 dir. En küçük bridge id sahip olan switch root bridge dir. Eğer Priority’ ler eşit ise o zaman en küçük mac adres değerine sahip cihaz root cihaz olarak seçilir.

O zaman gelin bakalım bizim topolojimizde kim ne olarak seçilmiş.

Görüldüğü gibi Priority değerleri eşit geldi. Mac adresleri seçeneğine geçtiğimizde ise en küçük mac adresi SWİTCH-2 olarak görülmektedir. SWİTCH-2 artık ROOT SWİTCH oldu.

Path Cost (metrik)

Hattın ne kadar kaliteli olduğunu tarif etmemize yarar. Spanning Tree metrik değeri örneğin. Hedefe giden 2 yol var 1.yol 10mb bant genişliğine sahip, 2.yol ise 100mb bant genişliğine sahip bu duruda metriğimiz bant genişliği gibi düşünebiliriz. Bu durumda 10mb’ lik hat bloklanır. Burada Hattın hızı ne kadar yüksekse Cost değeri o kadar düşüktür.

Port ID

Port id değerleri Öncelik-değeri.Port No dur. Öncelik numarası 0–255 arasında Değer alır. Default değeri 128 dir. Birinci portun adı 128.1 dir örnek verecek olursak.

Bpdu paketlerinin içinde switch kendi id’ sini, root bridge idlerini, portun path cost değerini, portun rolünü yollarlar.

Topolojide stp aktif olan switchlere de ilk yapılacak iş bpdu paketlerini birbirlerine 2sn aralıkla yollamaktır. Bu ilk süreç listening modda 15 sn sürer. Eğer loop olmadığını düşünüyorsa learning aşamasına geçer 15 sn de burada geçer ve mac adreslerini ögrenmeye baslar. Eğer bu 2 aşamada sorun yok ise toplamda 50sn. sonrasında forwarding moda geçer ve paketler akmaya baslar. Eğer listende loop algılarsa bloking de kalır ve bpdu paketlerini dinlemeye devam eder.

Topolojimize tekrar döndüğümüzde switch3 root tan aşağıya giden portlar destinated porttur. Root bridge de hiçbir zaman root port olmaz! Switch3 den switch1 e giden port root porttur.

2 switch de eger birbirine bakan portlar eğer roller destignated ise böyle bir senaryoda loop un varlıgı ortada çıkıyor. Hangisini portunu bloke edeceğinin kararını 1. olarak path cost a bakılır eğer eşit ise 2. olarak bridge id eğer onlarda eşit olsaydı port id ye bakılacaktı.

Aşağıdaki senaryoda görüldüğü üzere switch lerin den biri portunu destignated modda ve blok olarak işaretlendi. Eger root a giden port koparsa işte o zman blok kaldırılır ve root port olarak işaretlenir sistem saniyeler içerisinde aktif durumda kalır.

  • Blok porttun adı alternatif port olarak değiştirildi ve bu port shutdown edilmez hep hazırda bekler.

*Topolojimizde BPDU Paketlerinin Dolaşımı ve Paket İçeriği.

[embed]

Spanning Tree Nasıl Aktif Edebiliriz.?

Stp yapılandırılmasını herkes genel olarak Core, Backbone gibi Switchlermizde config etmeye başlarız. Yapılandırması anlatımdan daha basit olabiliyor😊. Bütün ayarları genelde Default olarak bırakmak bu işi standartı diyebiliriz.

SW-2(config)#spanning-tree
SW-2(config)#spanning-tree mode rapid-pvst

Stp açıyoruz ve hangi modu kullanacağımızı bildiriyoruz. Bazı stp modelleri vlan bazlı yapılandırmayada olanak sağlıyor aşağıda belirtiyor olacağım.

Ee hadi o zaman bizim topolojimizde SW-3 fa/01 hangi kriterlere göre bloklanmış bakalım.

1. Path Cost :

SW-3, SW-4 ve SW-1 in Path Cost değerlerine bakınca

SW-1 => 19 ,

SW-3 => 38 ,

SW-4 => 19

bu durumda en küçük değer en iyi yoldur ve ayakta kalır. Bu sebeple SW-3 fa 0/1 bloklanmıştır.

2. Bridge ID: Bridge id’ ler her üç switch’ de de aynı ama zaten 1 seçenekte olay bitmiş.

3. Port ID: Eğer yukarıdaki 2 seçenekte eşit ilerleseydi SW-1 ve SW-3 arasında bir seçim yapılaktı.

STP Timer and Port State

  • Hello Timer: Default değeri 2 sn. İçinde BPDUs mesajları gitmektedir.

  • Forward Delay Timer: Default değeri 15 sn. dir.

  • Max Age Timer: Default değeri 20 sn. dir

Bu değerler ROOT Switch’ de belirlenir ve diğer switchlere bildirilir. Bir portun açılma süresi toplamda 50 Saniye almaktadır. Bu süre uzun gelebilir ancak hayat kurtarır.

Spanning Tree Çeşitleri

  • STP (802.1D): Orijinal STP protokolüdür.CST Common spanning tree diyede geçebilir
  • PVST+: Cisco tarafından geliştirilen ve sadece Cisco Switchler üzerinde çalışan bir protokoldür.
  • RSTP (802.1W): Hızlı converge (toparlanan) geliştirilmiş STP protokolüdür.
  • Rapid PVST+: Cisco tarafından geliştirilen ve her bir VLAN için RSTP özelliği getirilen protokoldür.
  • MSTP (802.1S): Çoklu VLAN’lar bir Spanning Tree İnstance’a bağlanabilir. Bununla birlikte farklı Spanning Tree İnstance’ları diğer İnstance’lardan bağımsız olarak kendi topolojisini kullanabilir.

O halde basit bir senaryo yapalım kendimize …..

Şimdi yukarıdaki olaylara baktığımızda Resim-1’ de beni zaten normal topolojimde SW-3 fa 0/1 ‘i blokluydu. Ben gittim SW-3 ün fa 0/2’ sini manuel shutdown ettim. Sonra ne mi oldu? SW-3’ e “show Spanning-tree” komutu gönderdiğimde fa 0/1’ in toplamda 45sn sonrasında UP olduğunu görüyoruz.

Resim-2 ye geçelim. Burada yine SW-3 fa 0/2 portumu UP olarak manuel olarak ayarladım. Ben portu UP etmemin ardından Resim-2’ de 3 tane portun “turuncu” olarak işaretlendiğini görüyoruz. Komut ile SW-3’ e ne oluyor diye yeniden “sh Spanning-tree” komutu çekiyorum ve portların anlık durumunu ögrenmiş oluyoruz.

Fa 0/2 LNR (Learning) moduna gelmiş burada 15 sn boyunca portta loop var mı yok mu tespitini yapmasını bekliyoruz. Söylemiştik portu hemen açmıyor ve önce ortama bakıyor. Bu arada fa 0/1 her ihtimale karşı cost hesabına göre bloklanmış. Burada zaten port bloklandığında BPDU mesajları almaya devam ettiği için hangi hattın daha kaliteli olduğunu biliyordu.

Resim-3’ e geçtiğimizde ise artık SW-3 fa 0/2’ nin Learning State durumu FWR moda geçmiş ve herşey yolunda portlardaki hafif bir kesinti sonrasında sistem çalışmaya devam ediyor.

Stp ağaç topolojilerinde sistem tamamen böyle işliyor diyebiliriz. Varsa Loop tehditi bloklanır, en kaliteli hat kullanılarak devamlılık sağlanır.

Tabi bir de farklı STP tiplerine göre farklı özellikler var. Bunları bazı durumlarda kullanmanız gerekebilir. Nedir bunlar.

· Bpduguard: Portfast’ ın açık olduğu portlarda port, hemen iletim durumuna geçtiğinden bir süre döngü oluşabilir. Bu durumu önlemek için “BPDU Guard” isimli bir özellik geliştirilmiştir. BPDU koruması, portfastın açık olduğu portlardan BPDU alınca o portu kapatma işlevi yapar

· Cost: Port bazında manuel cost değeri girmemiz gerekir

· Vlan: STP modeline göre Vlan bazı yapılandırma yapılabilir.

· PortFast: Bazı yapılarda STP’ nin Listening ve Learning sürelerini bypass ederek direk Forward Moda geçmesini totalda 50 sn süren hesaplamalara dahil edilmemesini sağlıyor. Aşağıdaki komut ile aktif edebiliriz. Portta komutu kullanmanın tehlikeli olduğunu söylüyor bize.

SW-2(config)#interface fastEthernet 0/1
SW-2(config-if)#spanning-tree portfast
SW-2(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.

*Eğer portfast kullanacaksanız bpduguard komutu ile beraber kullanmayı unutmayalım.

*Nitekim aşağıdaki komut ilede tek tek ugraşmak yerine portfastıda guardıda kendisi otomatik olarak ayarlyabilir.

SW-2(config)#spanning-tree portfast default 

Genelde Omurga Switchmizin Root Swicth olmasını isteriz. Bu sebeple manuel olarak öncelik değerinide değiştirebiliriz

Bu komut ile root seçimini otomatik yaptırabiliriz.

SW-2(config)#spanning-tree vlan 10 root primary

Veya en düşük değeri elle verebiliriz.

SW-2(config)#spanning-tree vlan 10 priority 0

Spanning Tree konusunda anlatmak istediklerim bu kadar. Zaten sahada kullanımıda çok zor değil. Güzel yapılandırıldıktan sonra harika çalışan bir protokoldür. Bir sonraki yazımda görüşmek üzere….


메타데이터
post_id
a23db9f92aa8
slug
spanning-tree-nedir-nasil-kullanilir-a23db9f92aa8
url
https://medium.com/@emrahgokmen/spanning-tree-nedir-nasil-kullanilir-a23db9f92aa8
canonical_url
https://medium.com/@emrahgokmen/spanning-tree-nedir-nasil-kullanilir-a23db9f92aa8
author_url
https://medium.com/@emrahgokmen
status
ok
fetched_at
2026-06-20 20:29:01