← Network Makalelerine Dön
CCNPSwitching802.1DLoop Prevention

Spanning Tree Protocol

Spanning Tree Protocol
Bu makale STP'yi "loop önler" özetinin ötesinde ele alır: BPDU exchange mekanizması, root bridge seçim süreci, port rolleri, Rapid STP'nin neden daha hızlı converge ettiği ve STP manipülasyon saldırıları.

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:

Gerçek Durum: Loop oluştuğunda müdahale süresi çok kısadır. Switch'e SSH bağlanamaz, fiziksel erişim gerekebilir.
L2 loop
Şekil 1 — Geçici L2 loop oluşumu: broadcast storm ve MAC table instability

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:

03 / BPDU Yapısı

BPDU (Bridge Protocol Data Unit), STP'nin haberleşme paketidir. Hello BPDU her 2 saniyede bir gönderilir.

bpdu fields
Protocol 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)
Bridge ID (BID): Priority (2B) + MAC Address (6B) = 8 byte. Default priority: 32768. En düşük BID = Root Bridge.

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ırma
Karşı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
Dikkat: Default durumda Root Bridge MAC adresine göre seçilir. Bu güvenilir değil. Root Bridge'i manuel olarak belirle.
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
Root election step 1
Şekil 2 — Root Bridge election adım 1: her switch kendini root ilan eder
Root election step 2
Şekil 3 — Root Bridge election adım 2: superior BPDU ile root belirlenir

05 / Port Rolleri

path cost değerleri
Link 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
Root cost
Şekil 4 — Root Path Cost hesaplama: her switch root'a olan maliyeti hesaplar
STP topology
Şekil 5 — Root Port, Designated Port ve Alternate Port rolleri

06 / Port Durumları (802.1D)

Convergence Süresi: 802.1D'de toplam convergence = 30-50 saniye. Lisening (15s) + Learning (15s) + propagation. Rapid STP bunu <1 saniyeye indirir.
Port states animation
Şekil 6 — Port durumlarının geçiş animasyonu: Blocking → Forwarding süreci
Port states table
Şekil 7 — STP port durumları tablosu: durum, süre ve işlev özeti

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 komutu
show 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.

cisco ios — rstp
spanning-tree mode rapid-pvst ! Doğrulama: show spanning-tree summary show spanning-tree vlan 10
📌
Öneri: Modern Cisco switch'lerde 'rapid-pvst' varsayılan moddur. PVST+ = VLAN başına ayrı STP instance.

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
PVST topology
Şekil 8 — Per-VLAN STP: her VLAN için ayrı root bridge ve topoloji

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.

Root Bridge Takeover: Saldırgan priority=0 BPDU gönderir. Network convergence tetiklenir, saldırgan Root Bridge olur. Tüm inter-VLAN trafik saldırgana akar.
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