Kurumsal Network Kurulumu

BPDU Guard Nedir? PortFast, Root Guard ve Storm Control

BPDU Guard, PortFast, BPDU Filter, root guard ve storm control ne yapar? Lab switch'inde döngü kablosuyla ölçtüm: 22 saniyelik bekleme, fırtına, kapanan port.

İlker Pehlivan

BPDU Guard, kenar port olarak işaretlenmiş bir porta BPDU gelirse o portu kapatan STP korumasıdır. Kullanıcı portuna biri switch takarsa ya da iki duvar prizini bir kabloyla birbirine bağlarsa, döngü kurulamadan port kapanır.

Bu yazıda lab switch’imde bir döngü kablosuyla beş ayarı ölçüyorum: PortFast, BPDU Guard, BPDU Filter, storm control ve root guard. Her birinin ne yaptığını, günlüğe ne yazdığını ve yanlış porta konunca neyi bozduğunu gösteriyorum.

Bir süpermarket şubesinin müşteri kapısı sabah açılır açılmaz müşteriyi içeri alır, çünkü arkasında depo koridoru yoktur. Aynı kapıya bir depo görevlisi transpaletle dayanırsa kapı kapanır ve üstündeki lamba yanar. Transpalet oraya ait değildir. Bu yazıda müşteri kapısı kullanıcı portudur, transpalet başka bir switch’tir, kapının kendini kapatması da BPDU Guard’dır.

BPDU Guard ve PortFast benzetmesi: süpermarket şubesinin müşteri girişinde iki otomatik kapı; soldaki açık kapıdan bir müşteri beklemeden giriyor, sağdaki kapı bantlı koli taşıyan bir transpaletin önünde kapalı ve üstündeki lamba yanıyor
Müşteri kapısı müşteriye beklemeden açılır. Aynı kapıya depo aracı dayanırsa kapanır; BPDU Guard da kullanıcı portuna switch takılınca portu kapatır.

Bu yazı, switch yapılandırma rehberimizdeki kontrol listesinin 12. adımıdır ve Kurumsal Network Kurulumu hizmetimizin switch tarafına aittir. Aynı işi müşterilerimizin ağında nasıl yürüttüğümüzü switch kurulumu ve VLAN yapılandırma hizmeti sayfamızda anlattık.

STP’nin döngüyü nasıl kestiğini, kök köprünün nasıl seçildiğini ve STP kapalıyken bir döngünün neler taşıdığını Spanning Tree yazımızda ölçtüm. Bu yazı o protokolün switch üzerindeki korumalarını anlatır.

STP Korumaları: Hangi Porta Hangi Ayar?

STP, bir porttan gelen her BPDU’ya güvenir; kök köprüyü ve port rollerini o BPDU’lara bakarak seçer. Korumalar bu güvenin nerede geçerli olacağını port başına yazar. Lab switch’imde ölçtüğüm beş ayarın kısa hâli şöyledir:

AyarNereye konurNe yaparLab’da ne oldu
PortFastKullanıcı portuPortu beklemeden iletime alırİletime geçiş 22 saniyeden 0 saniyeye indi
BPDU GuardPortFast yazılmış kullanıcı portuPorta BPDU gelirse portu kapatırDöngü kablosunu takılı olduğu saniyede kesti
BPDU FilterKullanıcı portunda kullanılmazPortta BPDU’yu ne gönderir ne duyarAynı kabloda fırtına başladı
Storm controlBütün erişim portlarıYayın trafiğine üst sınır koyarFırtınayı bir saniyenin altında söndürdü
Root guardKökün asla olmaması gereken portOradan gelen daha güçlü BPDU’yu reddederSahte kök reddedildi, port 56 saniye kapalı kaldı

Storm control bir STP koruması değildir. STP’nin ne düşündüğüne bakmaz, yalnız yayını sayar. Yine de bu yazıda duruyor, çünkü aynı erişim portlarına birlikte yazılır ve STP’nin göremediği bir döngüde son sözü o söyler.

Ölçümleri tek switch’le yaptım. Switch’in 10. ve 12. portlarını kısa bir kabloyla birbirine bağladım; STP, 12. portu yedek (Backup) rolünde bekletiyordu. İş istasyonum 1. porta bağlıydı. Ölçümlerin çoğu o portu kapattığı için switch’i konsoldan yönettim ve hiçbir ayarı kaydetmedim.

PortFast Nedir? Kullanıcı Portu Neden 22 Saniye Bekler?

Korumaların ilki kullanıcı portunu hızlandırır. PortFast, ucunda switch olmayan bir portu link kalktığı anda iletime alan ayardır. Standart bu porta kenar port (edge port) der; lab switch’imin komutunda adı PortFast’tir. Ayar yoksa port, bir döngünün parçası olup olmadığını anlamak için önce bekler.

İş istasyonumun bağlı olduğu 1. portu konsoldan kapatıp açtım. Bu sırada bilgisayardan switch’e saniyede yaklaşık on kez ping attım ve switch’in günlüğündeki saatleri okudum. Üç durumu ayrı ayrı ölçtüm:

DurumSwitch günlüğü: link kalkınca iletime geçişBilgisayar: link kalkınca ilk ping
Fabrika ayarı (otomatik kenar port açık)3 saniye3,0 saniye
Otomatik kenar port kapalı22 saniye22,0 saniye
PortFast açık0 saniye0,0 saniye

İki ölçüm birbirini doğruluyor. Switch’in yazdığı saniye ile bilgisayarın ağa kavuştuğu an aynıdır.

Fabrika ayarındaki 3 saniye, otomatik kenar port özelliğinden gelir. Lab switch’imin kılavuzu onu şöyle tarif ediyor: link kalktıktan sonra 3 saniye boyunca BPDU görmeyen port kenar port olur. Windows BPDU göndermediği için port üç saniyenin sonunda iletime geçti.

22 saniye, otomatik kenar port kapalıyken ölçüldü. Port bir switch’ten cevap bekledi, bilgisayar cevap vermedi ve RSTP zamanlayıcılarına düştü. Bu süreyi Spanning Tree yazımızda standarttan 20 + 2 olarak hesaplamıştım; burada bir uç cihaz portunda ölçüldü.

Günlükte bakılacak iki satır var. Biri Link Up, öteki portun Learning durumundan Forwarding durumuna geçtiğini söyleyen satırdır. Günlük en yeni satırı en üstte gösterir. 22 saniyelik durumun günlüğü şuydu:

Switch Konsol Çıktısı
gmsw01#show logging | include Gi1/0/1
...
<189> Sep 27 00:06:40 gmsw01-1 TRAPMGR[trapTask]: traputil.c(735) 342 %% Gi1/0/1 is transitioned from the Learning state to the Forwarding state in instance 0
<189> Sep 27 00:06:18 gmsw01-1 TRAPMGR[trapTask]: traputil.c(735) 341 %% Gi1/0/1 is transitioned from the Forwarding state to the Blocking state in instance 0
<189> Sep 27 00:06:18 gmsw01-1 TRAPMGR[trapTask]: traputil.c(735) 340 %% Link Up: Gi1/0/1
...

Satırlar aşağıdan yukarı şunu anlatıyor:

  1. 00:06:18’de link kalktı ve port aynı saniyede beklemeye (Blocking) girdi.
  2. 00:06:40’ta port iletime geçti. Arada geçen 22 saniye boyunca bilgisayar switch’e ulaşamadı.
  3. Öğrenme adımının başladığı an günlüğe yazılmıyor. Bu yüzden 20 + 2 bölünmesini değil, yalnız toplamı ölçtüm.

PortFast’i açan satır tektir:

Switch Konsolu
configure
interface gigabitethernet 1/0/1
spanning-tree portfast
exit
exit

Otomatik kenar portu kapatan no spanning-tree auto-portfast satırını yalnız ölçüm için kullandım. Lab’da 22 saniye, bilgisayarın switch’e hiç ulaşamadığı süreydi.

Fabrika ayarındaki 3 saniye çoğu kullanıcıya fark ettirmez. PortFast’i elle yazmanın asıl sebebi bir sonraki korumadır.

BPDU Guard Nedir? Kullanıcı Portuna Switch Takılınca Port Kapanır

PortFast portu beklemeden açar, çünkü ucunda switch olmadığını varsayar. BPDU Guard bu varsayımı denetler. Kenar port olarak işaretlenmiş porta bir BPDU gelirse, yani ucunda STP konuşan bir cihaz belirirse, switch o portu kapatır.

Switch Konsolu
configure
spanning-tree bpdu-protection
interface gigabitethernet 1/0/12
spanning-tree portfast
exit
exit

İlk satır BPDU Guard’ı switch genelinde açar, ikinci satır 12. portu kenar port yapar. Lab switch’imde bu iki parça ayrı yazılıyor ve aşağıdaki ölçüm ikisinin de gerektiğini gösteriyor.

PortFast Yazılmamış Portu BPDU Guard Korumuyor

Önce yalnız ilk satırı yazdım ve 12. portu kapatıp açtım. Döngü kablosu takılıydı, yani port switch’in kendi BPDU’sunu geri alıyordu. Switch geneli ayarda BPDU Guard açık görünüyordu (BPDU Guard Mode: Enabled). Port yine de kapanmadı:

Switch Konsol Çıktısı
gmsw01#show spanning-tree gigabitethernet 1/0/12
Port: Gi1/0/12  Enabled
State: Discarding                                Role: Backup
Port ID: 128.12                                  Port Cost: 20000
Port Fast: No                                    Root Protection: No
...
Auto Portfast.................................. True
...

Sebebi otomatik kenar portun çalışma biçimidir. Port BPDU görünce kendini kenar port saymaktan vazgeçer; BPDU Guard da yalnız kenar portta çalışır. STP portu yine yedeğe aldığı için döngü kesildi. Ama ucundaki cihaz ağın STP ağacına katılmış oldu ve hiçbir satır bunu haber vermedi.

Lab’da BPDU, link kalktığı saniyede geldi ve port hiç kenar port sayılmadı. Bu yüzden yalnız otomatik kenar portla çalışan bir kullanıcı portu, BPDU Guard açık bir switch’te bile bu durumda korumasız kalır.

PortFast Yazılınca Port Aynı Saniyede Kapandı

Sonra aynı porta spanning-tree portfast yazdım. Switch porta gelen ilk BPDU’da portu kapattı ve günlüğe şunu yazdı:

Switch Konsol Çıktısı
gmsw01#show logging | include Gi1/0/12
<189> Sep 27 00:02:02 gmsw01-1 TRAPMGR[trapTask]: traputil.c(735) 284 %% Link on Gi1/0/12 is failed
<189> Sep 27 00:02:02 gmsw01-1 TRAPMGR[trapTask]: traputil.c(735) 283 %% Link Down: Gi1/0/12
<189> Sep 27 00:02:02 gmsw01-1 TRAPMGR[trapTask]: traputil.c(735) 282 %% Gi1/0/12 is transitioned from the Forwarding state to the Blocking state in instance 0
<187> Sep 27 00:02:02 gmsw01-1 DOT1S[dot1s_task]: dot1s_sm.c(1269) 281 %% Received BPDU on Edge port Disabling interface Gi1/0/12
...

En alttaki satır korumanın kendisidir. Switch, kenar portta BPDU aldığını ve portu kapattığını yazıyor.

Başındaki <187>, satırın syslog önceliğidir. Öncelik tesis ve seviyenin toplamıdır; 187 = 23 × 8 + 3, yani local7 tesisinde hata (error) seviyesi. STP’nin olağan satırları <189>, yani bildirim (notice) seviyesinde durur. Merkezi log sunucusunda BPDU Guard’ı bu farkla süzebilirsiniz; tesis ve seviyeyi syslog yazımızda anlattık.

Portun durumu da değişti:

Switch Konsol Çıktısı
gmsw01#show interfaces status gigabitethernet 1/0/12
Port      Description     Duplex Speed   Neg  Link   Flow  M  VLAN
                                              State  Ctrl
--------- --------------- ------ ------- ---- ------ ----- -- -------------------
Gi1/0/12                  N/A    Unknown Auto D-Down Off   A  5

D-Down, portun bir koruma tarafından kapatıldığını gösterir. Kablo arızası değildir; switch portu bilerek kapatmıştır.

BPDU Guard’ın Kapattığı Port Nasıl Açılır?

Kapanan port kendiliğinden açılmadı. Kablo hâlâ takılıyken no shutdown yazdım ve port aynı saniyede yeniden kapandı:

Switch Konsol Çıktısı
gmsw01#show logging | include Gi1/0/12
<189> Sep 27 00:02:49 gmsw01-1 TRAPMGR[trapTask]: traputil.c(735) 303 %% Link on Gi1/0/12 is failed
<189> Sep 27 00:02:49 gmsw01-1 TRAPMGR[trapTask]: traputil.c(735) 302 %% Link Down: Gi1/0/12
<189> Sep 27 00:02:48 gmsw01-1 TRAPMGR[trapTask]: traputil.c(735) 300 %% Gi1/0/12 is transitioned from the Forwarding state to the Blocking state in instance 0
<189> Sep 27 00:02:48 gmsw01-1 TRAPMGR[trapTask]: traputil.c(735) 298 %% Gi1/0/12 is transitioned from the Learning state to the Forwarding state in instance 0
<189> Sep 27 00:02:48 gmsw01-1 TRAPMGR[trapTask]: traputil.c(735) 297 %% Gi1/0/12 is transitioned from the Forwarding state to the Blocking state in instance 0
<187> Sep 27 00:02:48 gmsw01-1 DOT1S[dot1s_task]: dot1s_sm.c(1269) 296 %% Received BPDU on Edge port Disabling interface Gi1/0/12
<189> Sep 27 00:02:48 gmsw01-1 TRAPMGR[trapTask]: traputil.c(735) 293 %% Link Up: Gi1/0/12
...

Link 00:02:48’de kalktı ve aynı saniyede kapatma satırı geldi. Günlükte aynı saniyeye bir iletime geçiş satırı da düşmüş; PortFast’li port beklemediği için döngü, kapanana kadar geçen bir saniyenin altındaki sürede de açıktı. Link bir saniye sonra düştü.

Doğru sıra, önce takılan kabloyu ya da switch’i çıkarmak, sonra portu açmaktır:

Switch Konsolu
configure
interface gigabitethernet 1/0/12
no shutdown
exit
exit

Bazı switch yazılımları kapanan portu bir süre sonra kendiliğinden açabiliyor. Lab switch’imin kılavuzu bu özelliği (errdisable recovery) daha yeni bir yazılım sürümüyle getiriyor. Varsayılan bekleme 300 saniyedir, ayarlanabilen aralık 30 ile 3.600 saniye arasıdır. Kılavuza göre süre dolunca port açılır, BPDU gelmeye devam ediyorsa yeniden kapanır. Lab switch’imin sürümü komutu tanımadı:

Switch Konsol Çıktısı
gmsw01#show errdisable recovery
             ^
% Invalid input detected at '^' marker.

Benzetme burada kopuyor. Kapıdaki görevli transpaleti gözüyle görür; switch başka bir switch’i ancak onun gönderdiği BPDU’dan tanır. BPDU göndermeyen bir cihaz BPDU Guard’a görünmez. BPDU’yla ilgili bir ayar daha var ve adı BPDU Guard’a çok benziyor.

BPDU Filter Nedir? Aynı Döngüde Fırtına Başladı

BPDU Filter, PortFast’li bir portta BPDU’yu hem göndermeyi hem almayı kesen ayardır. BPDU Guard porta gelen BPDU’yu bir alarm sayar; BPDU Filter onu hiç duymaz. Lab switch’imin kılavuzu da bu ayarın uç cihaz dışında bir şeye bağlı portta döngüye yol açabileceğini yazıyor ve daha güçlü koruma için BPDU Guard’ı öneriyor.

Aynı döngü kablosunda BPDU Guard’ın yerine BPDU Filter’ı açtım. Bir port BPDU duymuyorsa döngüyü göremez; beklenen sonuç bir fırtınadır. Aşağıdaki satırları yalnız ölçüm için yazdım:

Switch Konsolu
configure
interface gigabitethernet 1/0/12
spanning-tree portfast
spanning-tree portfast bpdufilter default
exit
exit
  1. port link kalktığı saniyede iletime geçti. İş istasyonumu gözlem için aynı VLAN’a aldım ve kartının saydığı yayın paketlerine yaklaşık 0,74 saniyede bir baktım. Hız ilk dört örnekte, yani üç saniye içinde saniyede 0,22 milyondan 0,73, 1,11 ve 1,36 milyona çıktı. Sonraki yirmi beş saniye boyunca saniyede 1,23 ile 1,40 milyon arasında kaldı.

Fırtınayı benim göndereceğim yayın başlatmadı. Windows’un kendi yayını, benim yayınımdan üç saniye önce döngüye girmişti. Bu, STP kapalıyken ölçtüğüm fırtınanın aynısıdır. BPDU Filter, o portta STP’yi kapatmakla aynı sonucu doğurdu.

BPDU GuardBPDU Filter
Porta BPDU gelincePortu kapatırDuymaz
Porttan BPDUGönderirGöndermez
Aynı döngü kablosundaPort aynı saniyede kapandıFırtına üç saniyede saniyede 1,36 milyon pakete çıktı

Şube benzetmesinde BPDU Filter, kapıdaki görevlinin transpaleti görmezden gelmesidir. Araç içeri girer ve depo koridoru müşteri alanına bağlanır. Kullanıcı portunda BPDU Filter’a yer yoktur.

BPDU Filter, STP’nin göremediği bir döngünün en kısa yoludur. STP’nin göremediği döngüde son söz, yayını sayan bir sınıra kalır.

Storm Control Nedir? Fırtınayı Eşikte Durdurmak

Storm control, bir portun kabul ettiği yayın trafiğine üst sınır koyan ayardır. Yayının nereden geldiğine bakmaz, eşiği aşan kısmı atar.

BPDU Filter’ın başlattığı fırtına sürerken önce yalnız 10. porta, birkaç saniye sonra 12. porta yüzde 1’lik sınır koydum:

Switch Konsolu
configure
interface gigabitethernet 1/0/10
storm-control broadcast level 1
exit
interface gigabitethernet 1/0/12
storm-control broadcast level 1
exit
exit

İş istasyonunun saydığı yayın şöyle değişti:

  1. 10. port sınırı aldıktan sonra hız değişmedi. Altı örnek boyunca saniyede 1,34 ile 1,38 milyon arasında kaldı.
  2. 12. port da sınırı alınca bir sonraki örnekte sıfıra indi. Aradaki süre 0,75 saniyenin altındaydı.
  3. Sonra saniyede beş paketin altında kaldı. Döngü fiziksel olarak duruyordu ve STP onu hâlâ görmüyordu.

Yüzde 1’lik eşik, 1 Gbps’lik bir portta 64 baytlık çerçeveyle saniyede yaklaşık 14.880 pakete karşılık gelir; bu bir hesaptır. Fırtına bu eşiğe inmedi, sıfıra indi.

İki sonucu da ölçtüm, ama açıklamalarını ölçmedim. Mekanizmadan çıkan açıklama şudur:

  • Tek porttaki sınır neden yetmedi? İki portlu bir döngüde kablonun iki yönü iki ayrı dolaşım gibi çalışır. Bir yönün çerçeveleri switch’e hep 12. porttan, öbürününkiler hep 10. porttan girer. 10. porttaki sınır bir yönü kesti, öbür yön iş istasyonunun hattını tek başına doldurmaya yetti.
  • Fırtına neden eşikte kalmadı? Döngüde dönen paketler yeni üretilmez; aynı birkaç yayın kopyalanarak döner. Sınır o kopyaları düşürünce döngüde dönecek paket kalmaz.

Pratikteki sonuç ise ölçümün kendisidir. Storm control döngünün yalnız bir ucunda yetmedi; bu yüzden bütün erişim portlarına yazılır.

Storm Control Günlüğe Ne Yazar?

Varsayılan kipte hiçbir şey yazmadı. Fırtınayı söndürdü ve kimseye haber vermedi. Aynı porta eşik aşılınca portu kapatan kipi yazdım:

Switch Konsolu
configure
interface gigabitethernet 1/0/12
storm-control broadcast action shutdown
exit
exit

Port kapandı ve günlüğe iki satır düştü:

Switch Konsol Çıktısı
gmsw01#show logging | include storm
<189> Sep 27 00:12:27 gmsw01-1 TRAPMGR[trapTask]: traputil.c(735) 385 %% broadcast storm control is reached on Gi1/0/12. Action taken is shutdown.
<188> Sep 27 00:12:27 gmsw01-1 POLICY[trafficStormCon]: std_policy.c(1446) 384 %% Interface Gi1/0/12 is diagnostically disabled due to broadcast storm control

<188> uyarı (warning) seviyesidir. O anda fırtına zaten sönmüştü; eşiği büyük ihtimalle döngüye giren yeni bir yayın aştı, bunu ayrıca doğrulamadım. Kılavuza göre üçüncü bir kip daha var. action trap eşiği aşan trafiği atar, günlüğe satır ve SNMP trap yazar, portu kapatmaz. Bu kipi ölçmedim. Fırtınadan haberdar olmak istiyorsanız varsayılan kipte bırakmayın.

İndirim günü kapıdaki görevli içeri saniyede ancak belli sayıda kişi alır. Benzetme burada da kopuyor. Markette kapıda bekleyen müşteri içeri girmekten vazgeçmez; switch’te eşiği aşan yayın bekletilmez, atılır.

Buraya kadarki korumalar kullanıcı portunu korudu. Ama ağacın merkezi kök köprüdür ve kökü dışarıya kaptıran port bir kullanıcı portu olmak zorunda değildir.

Root Guard Nedir? Kök Köprüyü Dışarıya Kaptırmamak

Root guard, bir porttan gelen daha güçlü BPDU’nun kök köprüyü değiştirmesine izin vermeyen ayardır. O porttan “kök benim” diyen bir BPDU gelirse switch onu kök seçimine almaz ve portu bekletir. Bunun gerçek bir sebebi var. Spanning Tree yazımızda Rapid PVST+ açınca, önceliği 0 olan BPDU’larıyla ev modemi VLAN 10’un kök köprüsü olmuştu.

Aynı durumu bilerek kurdum. İş istasyonumdaki bir Linux sanal makinesinde önceliği 0 olan bir köprü açtım ve onu switch’in 1. portuna bağladım. Koruma yokken switch kökü devretti:

Switch Konsol Çıktısı
gmsw01#show spanning-tree
...
ROOT ID
              Priority        0
              Address         565B.5892.4878
              Path Cost       20000
              Root Port       Gi1/0/1
...

Günlük de aynı şeyi söyledi: Instance 0 has elected a new STP root: 0000:565b:5892:4878. Ağacın merkezi artık masaya takılmış bir sanal makineydi.

Sonra 1. porta root guard yazdım:

Switch Konsolu
configure
interface gigabitethernet 1/0/1
spanning-tree guard root
exit
exit

Port hemen beklemeye geçti:

Switch Konsol Çıktısı
gmsw01#show spanning-tree gigabitethernet 1/0/1
Port: Gi1/0/1   Enabled
State: Discarding                                Role: Alternate
Port ID: 128.1                                   Port Cost: 20000
Port Fast: No                                    Root Protection: Yes
...
Root Guard..................................... True
...

Günlük üç şey söyledi:

Switch Konsol Çıktısı
gmsw01#show logging | include 00:3
...
<189> Sep 27 00:33:36 gmsw01-1 TRAPMGR[trapTask]: traputil.c(735) 471 %% Link Down: Vl10
<189> Sep 27 00:33:36 gmsw01-1 TRAPMGR[trapTask]: traputil.c(735) 470 %% Gi1/0/1 is transitioned from the Forwarding state to the Blocking state in instance 0
<189> Sep 27 00:33:36 gmsw01-1 TRAPMGR[dot1s_task]: traputil.c(777) 469 %% Spanning Tree Topology Change Received: MSTID: 0 Gi1/0/12
<189> Sep 27 00:33:36 gmsw01-1 TRAPMGR[trapTask]: traputil.c(735) 468 %% Instance 0 has elected a new STP root: 0080:f48e:381b:184a
<189> Sep 27 00:33:36 gmsw01-1 TRAPMGR[trapTask]: traputil.c(735) 467 %% Unit 1 elected as the new STP root
...
  1. Switch kendini yeniden kök seçti (467 ve 468). Sahte kök reddedildi.
  2. 1. port beklemeye geçti (470).
  3. Yönetim VLAN’ı düştü (471). Switch’in yönetim adresi yönetim VLAN’ında duruyordu ve o VLAN’ın tek portu kapanmıştı.

Günlükte “root guard” kelimesi hiç geçmiyor. Korumanın tetiklendiğini show spanning-tree çıktısındaki Discarding ile Root Guard: True yan yana gösterir; günlükteki iz ise switch’in kendini yeniden kök seçmesidir.

Sonra sanal makinenin BPDU göndermesini kestim. Port 36 saniye sonra kendiliğinden iletime döndü; kesinti toplam 56 saniye sürdü. Root guard, BPDU Guard’dan burada ayrılır. Portu kapatmaz, bekletir; tehdit susunca port kendiliğinden açılır. 36 saniyenin nasıl bölündüğünü günlük göstermiyor.

Modem vakasında root guard’ın bedeli de buradan çıkıyor. Modem iki saniyede bir kök olmaya çalıştığı sürece uplink portu beklemede kalır ve internet gider. Bunu modemde denemedim; ölçtüğüm davranıştan doğrudan çıkıyor. Root guard ağacı korur, bağlantıyı korumaz.

Modem gibi vazgeçemeyeceğiniz bir cihaz kök olmaya çalışıyorsa asıl soru o cihazın neden BPDU gönderdiğidir. Lab switch’im fabrika ayarındaki RSTP kipinde modemin BPDU’larını zaten geçersiz sayıp atıyordu; modem yalnız Rapid PVST+ açıkken kök olabildi.

Root guard’ın yeri, ucunda bir switch bulunan ama kökün asla o yönde olmaması gereken porttur. Gerçek köke bakan porta konmaz. O port kökün BPDU’sunu iki saniyede bir alır ve root guard onu da bekletir; bu, ölçtüğüm davranışın doğrudan sonucudur.

Şube benzetmesinde yan dükkân kapıdan “merkez depo benim” diye anons ederse şube koridor planını değiştirmez. O kapıyı anons susana kadar kapalı tutar.

STP Korumalarını Doğrulamak: Hangi Çıktıda Ne Aranır?

Beş ayarı tek tek ölçtüm. Kendi switch’inizde bir korumanın açık olup olmadığını üç çıktıdan okursunuz:

  1. show spanning-tree summary switch genelini gösterir. BPDU Guard Mode ve BPDU Filter Mode satırlarına bakılır.
  2. show spanning-tree gigabitethernet 1/0/N tek bir portu gösterir. Port Fast, Root Guard, State ve Role satırları o portun korumalarını ve o anki durumunu söyler.
  3. show interfaces status kapanan portu gösterir. D-Down, portu bir korumanın kapattığı anlamına gelir.

Korumanın tetiklendiğini ise günlükten okursunuz ve her korumanın izi farklıdır:

KorumaGünlükteki izÖncelik
BPDU GuardReceived BPDU on Edge port Disabling interface<187>, hata
Storm control, kapatma kipidiagnostically disabled due to broadcast storm control<188>, uyarı
Storm control, varsayılan kipSatır yok
Root guardUnit 1 elected as the new STP root ve portun Blocking satırı<189>, bildirim

Bu satırları merkezi bir log sunucusunda tutarsanız bir korumanın gece tetiklendiğini sabah görürsünüz. Storm control’ün varsayılan kipi orada da iz bırakmaz.

STP Korumalarında Sık Yapılan Hatalar

Bir koruma beklediğiniz gibi çalışmadıysa ya da yanlış yeri kapattıysa önce şunlara bakın:

  • BPDU Guard’ı açıp PortFast’i yazmamak. Lab switch’imde otomatik kenar portla çalışan port BPDU aldı ve korumaya hiç takılmadı. BPDU Guard yalnız PortFast yazılmış portta çalıştı.
  • Kapanan portu kablo takılıyken açmak. Port aynı saniyede yeniden kapandı. Önce takılan cihazı ya da kabloyu çıkarın.
  • BPDU Filter’ı BPDU Guard sanmak. Aynı kabloda biri portu kapattı, öbürü fırtına başlattı.
  • Storm control’ü döngünün tek ucuna koymak. Lab’da tek porttaki sınır fırtınayı hiç etkilemedi; iki uç birlikte söndürdü.
  • Storm control’ün sessiz olduğunu unutmak. Varsayılan kip fırtınayı günlüğe yazmadan söndürdü. Haberdar olmak için kapatma ya da trap kipi seçilir.
  • Root guard’ı gerçek köke bakan porta koymak. O port kökün BPDU’sunu sürekli alır ve beklemede kalır.
  • Yönetimi korumanın kapatabileceği tek porta bağlamak. Root guard 1. portu beklemeye alınca yönetim VLAN’ı düştü ve switch’e yalnız konsoldan ulaşabildim.
  • Kaydetmemek. Ayarlar yalnız çalışan yapılandırmada kalırsa switch ilk yeniden başlatmada korumasız açılır. Çalışan ve kalıcı yapılandırmanın farkını yönetilebilir switch ayarları yazımızda anlattık.

Sonuç: Korumalar Hangi Porta Güvenileceğini Yazar

STP bir porttan gelen her BPDU’ya güvenir; korumalar bu güveni port başına daraltır. Lab switch’imde PortFast kullanıcı portunun bekleyişini 22 saniyeden sıfıra indirdi. BPDU Guard aynı porta takılan döngüyü BPDU’nun geldiği saniyede kesti. BPDU Filter aynı kabloda fırtına başlattı, storm control o fırtınayı bir saniyenin altında söndürdü. Root guard sahte kökü reddetti, ama bedeli o portun beklemeye alınmasıydı.

Şubenin müşteri kapısı müşteriye beklemeden açılır, transpalete kapanır. İndirim günü kapıdan saniyede ancak belli sayıda kişi geçer ve yan dükkânın anonsu koridor planını değiştirmez.

Rehberin sıradaki adımı iki switch arasındaki yedek kabloyu LACP ile birleştirmektir; sıralamanın tamamı switch yapılandırma rehberimizde duruyor. STP’nin kendisini Spanning Tree yazımızda anlattık.

BPDU Guard ve STP Korumaları Hakkında Sık Sorulan Sorular

BPDU Guard, kenar port olarak işaretlenmiş porta BPDU gelirse o portu kapatır. BPDU Filter ise aynı portta BPDU'yu ne gönderir ne duyar. Lab switch'imde ikisini aynı döngü kablosunda denedim. BPDU Guard portu BPDU'nun geldiği saniyede kapattı; BPDU Filter döngüyü göremedi ve üç saniye içinde saniyede 1,36 milyon yayın paketine ulaşan bir fırtına başladı.
Port beklemeden iletime geçer, yani döngü de beklemeden kurulur. PortFast portun ucunda switch olmadığını varsayar; bu varsayımı denetleyen şey BPDU Guard'dır. Lab switch'imde PortFast ve BPDU Guard açık bir portu döngü kablosu takılıyken açtığımda port aynı saniye içinde iletime geçti ve BPDU'yu görünce kapandı. Bu yüzden PortFast tek başına açılmaz, BPDU Guard'la birlikte açılır.
Switch'in yazılımında otomatik açılma özelliği varsa ve siz onu açtıysanız açılır. Lab switch'imin kılavuzu bu özelliğin daha yeni bir yazılım sürümüyle geldiğini ve varsayılan bekleme süresinin 300 saniye olduğunu yazıyor; switch'imin sürümü komutu tanımadı. Böyle bir switch'te port ancak no shutdown komutuyla elle açılır. Önce takılan kabloyu ya da cihazı çıkarın, çünkü kablo takılıyken açtığım port aynı saniyede yeniden kapandı.
Tek bir doğru sayı yoktur, ama olağan yayın trafiği eşiğin çok altında kalır. Lab ağımda fırtına bittikten sonra kalan yayın saniyede beş paketin altındaydı. Yüzde 1'lik eşik, 1 Gbps'lik bir portta 64 baytlık çerçeveyle saniyede yaklaşık 14.880 pakete karşılık gelir; bu bir hesaptır. Lab switch'imin kılavuzunda varsayılan eşik yüzde 5'tir. Yüzde 1 eşik, saniyede 1,36 milyon paketlik fırtınayı bir saniyenin altında söndürdü.
İlker Pehlivan
Yazan

BT Danışmanı | Ağ, Sistem ve Güvenlik Yönetimi

İlker Pehlivan, karmaşık BT altyapılarını ölçeklenebilir ve güvenli sistemlere dönüştürür. Buradaki rehberleri kendi laboratuvarında kurup ölçerek yazar.

LinkedIn

Benzer Makaleler

Kurumsal Network Kurulumu altındaki diğer 114 makale