Spanning Tree Protocol
01 / L2 Loop Neden Felaket?
IP (L3) paketlerinin TTL alanı vardır — loop durumunda paket eninde sonunda düşer. Ethernet frame'lerinin ise böyle bir mekanizması yoktur. Redundant bir L2 altyapıda loop oluşursa:
- Broadcast storm: ARP broadcast loopda döner, kopyalanarak üstel büyür
- MAC table instability: Switch aynı MAC'i farklı portlardan görür, sürekli günceller
- CPU %100: Switch tüm frame'leri işlemeye çalışır, yönetim erişimi kesilir
- Tam network outage: Saniyeler içinde ağ çöker
02 / STP Nasıl Çalışır?
STP (IEEE 802.1D), redundant L2 altyapılarda mantıksal olarak bir portu bloklayarak loop-free topoloji oluşturur. Fiziksel bağlantı korunur — arıza durumunda bloklu port devreye girer.
Temel çalışma prensibi:
- Switch'ler BPDU mesajı göndererek birbirini tanır
- Bir Root Bridge seçilir (tüm topololojinin merkezi)
- Her switch Root Bridge'e tek bir yol belirler
- Fazla yollar bloklanır
03 / BPDU Yapısı
BPDU (Bridge Protocol Data Unit), STP'nin haberleşme paketidir. Hello BPDU her 2 saniyede bir gönderilir.
bpdu fieldsProtocol ID : 0x0000 Version : 0x00 Message Type : 0x00 (Config BPDU) Flags : Topology change, ACK Root BID : Priority + MAC (8 byte) Root Path Cost : Root Bridge'e maliyet Bridge BID : Gönderen switch BID Port ID : Gönderen port Message Age : Kaç hop geçtiği Max Age : 20 saniye (default) Hello Time : 2 saniye (default) Forward Delay : 15 saniye (default)
04 / Root Bridge Seçimi
Ağ açıldığında her switch kendisinin Root Bridge olduğunu varsayar ve BPDU gönderir. BPDU karşılaştırması sonucunda en düşük Bridge ID'li switch Root Bridge seçilir.
bridge id karşılaştırmaKarşılaştırma sırası: 1. En düşük Priority (default 32768) 2. Beraberse: En düşük MAC adresi Örnek: SW1: Priority 32768, MAC aa:00:00:00:00:01 → Root Bridge ✓ SW2: Priority 32768, MAC bb:00:00:00:00:02 SW3: Priority 32768, MAC cc:00:00:00:00:03
cisco ios — root bridge belirleme! Manuel priority: spanning-tree vlan 10 priority 4096 ! Otomatik (macro): spanning-tree vlan 10 root primary spanning-tree vlan 10 root secondary
05 / Port Rolleri
- Root Port (RP): Root Bridge'e en kısa yol. Her non-root switch'te tam olarak 1 adet Root Port vardır.
- Designated Port (DP): Segment üzerinde Root Bridge'e en iyi yolu sunan port. Forwarding durumundadır.
- Non-Designated / Blocked Port: Loop'u önlemek için bloklanan port. BPDU dinler ama trafik iletmez.
path cost değerleriLink Speed | STP Cost (802.1D) | RSTP Cost 10 Mbps | 100 | 2,000,000 100 Mbps | 19 | 200,000 1 Gbps | 4 | 20,000 10 Gbps | 2 | 2,000
06 / Port Durumları (802.1D)
- Blocking (20s): BPDU dinler, veri iletmez. Loop tespiti.
- Listening (15s): BPDU gönderir/alır, MAC adresi öğrenmez.
- Learning (15s): MAC tablosunu oluşturur, henüz veri iletmez.
- Forwarding: Normal çalışma. Veri iletir + BPDU dinler.
- Disabled: Administratively kapatılmış.
07 / Topology Change
Bir port Forwarding'e geçer veya düşerse Topology Change (TC) tetiklenir. TC BPDU Root Bridge'e iletilir, Root Bridge TCN (Topology Change Notification) yayar. Tüm switch'ler MAC tablolarını hızlıca yaşlandırır (Forward Delay kadar = 15s).
debug komutushow spanning-tree detail show spanning-tree topology change debug spanning-tree events
08 / Rapid STP (802.1w)
RSTP, 802.1D'nin yerini almıştır. Temel fark: port state negotiation ile convergence saniyeler yerine milisaniyelere düşer.
- Port states sadeleşti: Discarding, Learning, Forwarding
- Edge port (PortFast) — son kullanıcı portu, anında Forwarding
- Proposal/Agreement mekanizması ile hızlı convergence
- 802.1D ile geriye uyumlu
cisco ios — rstpspanning-tree mode rapid-pvst ! Doğrulama: show spanning-tree summary show spanning-tree vlan 10
09 / PortFast ve BPDU Guard
PortFast: Son kullanıcı portlarında STP durumlarını (Listening, Learning) atlayarak anında Forwarding'e geçer. Sadece access portlarda kullanılmalıdır.
BPDU Guard: PortFast açık bir porta BPDU gelirse port err-disabled olur. Yetkisiz switch bağlanmasını engeller.
cisco ios — portfast + bpdu guard! Global (tüm PortFast portlara otomatik BPDU Guard): spanning-tree portfast default spanning-tree portfast bpduguard default ! Interface bazlı: interface GigabitEthernet0/1 spanning-tree portfast spanning-tree bpduguard enable ! Err-disabled recovery: errdisable recovery cause bpduguard errdisable recovery interval 300
10 / STP Manipülasyon Saldırısı
Saldırgan switch'e sahte düşük-priority BPDU göndererek kendisini Root Bridge ilan edebilir. Tüm network trafiği saldırgan üzerinden akar → MITM.
savunma! 1. Root Guard — komşudan gelen Root BPDU'ları reddet: interface GigabitEthernet0/24 spanning-tree guard root ! 2. BPDU Guard — yetkisiz switch bağlanmasını engelle: interface range GigabitEthernet0/1-20 spanning-tree bpduguard enable ! 3. Root Bridge'i sabitle: spanning-tree vlan 10 priority 0
11 / Enterprise Konfigürasyon
cisco ios — enterprise stp! Rapid PVST+ modu: spanning-tree mode rapid-pvst ! Root bridge'leri sabitle (distribution switch): spanning-tree vlan 10,20,30 priority 4096 ! primary spanning-tree vlan 10,20,30 priority 8192 ! secondary (backup) ! Access portlar: interface range GigabitEthernet0/1-20 spanning-tree portfast spanning-tree bpduguard enable ! Uplink/trunk portlar: interface GigabitEthernet0/24 spanning-tree guard root ! Global PortFast: spanning-tree portfast default spanning-tree portfast bpduguard default ! Doğrulama: show spanning-tree vlan 10 show spanning-tree summary totals
12 / Checklist
- Root Bridge manuel olarak belirlendi mi? (priority 0 veya 4096)
- Access portlarda PortFast + BPDU Guard aktif mi?
- Uplink portlarda Root Guard aktif mi?
- Spanning-tree mode rapid-pvst mi?
- show spanning-tree'de unexpected root port var mı?