"Enter"a basıp içeriğe geçin

Snapping Tree

 

Yedekli yollar

İki switch arasında bağlantı kurmak için birden çok yol varsa bunlara yedekli yol denir. Ağlardan biri açıkken diğeri kapalı şekilde hazırda bekler. Eğer açıkta olanda bir kopma olursa kapalı olan açılarak iletişimin devamını sağlar.

Bu yöntem bütçeyi arttırsa da olası bir kopmada bağlantının devamlılığını sağlar.
2 switch arasında yedek hat çekmek oldukça basittir. S3 switch’inin 23. portunu S4’nin 24’üne, S3’ün 24’ünü de S4’ün 23’üne bağlarsak alttaki yol yedek yol olmuş olur. Yedek yol normalde kapalıdır.

İki switch arasında 2 farklı hat çekilmiş. Switch4’ün portlarından biri turuncu. Yani bu port şuanda kapalı gibi düşünülebilir. iletişim üst taraftaki hattan, yani S3’ün 23.  ve S4’ün 24. portu sayesinde sağlanıyor. Eğer bu hatta bir arıza meydana gelirse, turuncu port otomatik olarak yeşil olacak yani açılacak. Böylece iletişim sıkıntısız devam edecek.

Yedek portun kapalı olma sebebi LOOP’ları engellemektir.
İki yolun da açık olduğunu düşünelim. A cihazına bir broadcast mesajı geliyor. Mesajı tüm portlara (23 ve 24 dahil) yollar. A23’den B24’e taşınır. B switch’i de bu mesajı tüm portlarına yollar.(23 dahil)
Mesaj B24-A23 üzerinden tekrar A cihaına gelir. A switch’i bu mesajı tekrar tüm switch’lere (23 dahil) yollar. Bu şekilde sonsuz bir döngüye girer.
Döngüler bir ağda en son isteyeceğimiz şeydir. Bant genişliğini çok fazla harcarlar. Hatta belki de ağı kilitleyebilirler. Bu yüzden döngülerden uzak durun 🙂

Ayrıca bir broadcast mesajı olan ARP sırasında switch cihazların MAC adreslerini kaydederdi. Eğer loop olursa Mesajın kaynağının hangi port olduğunu algılayamaz ve sürekli MAC tablosunda hatalar oluşur.

3 yada daha fazla switch olduğunda da aslında aynı mantık geçerlidir. A, B ve C switchleri her biri diğer ikisiyle doğrudan bağlantılı olsun.


A-B, B-C ve C-A yollarımız var. Döngü oluşmaması için C-A yolu kapanır. A ile C konuşmak istediğinde B üzerinden yani A-B ve B-C yollarını kullanarak konuşurlar.
Diyelim ki B-C yolunda kopma oldu. C-A yolu hemen devreye girer. Böylece C cihazı hem A hem de B ile doğrudan iletişim kurabilir. A ile B de C üzerinden iletişim kurarlar.

Tüm bunları sağlayan STP protokolüdür. Ayrıca switch ilk açıldığında bir süre beklemesinin (converge) sebebi de STP hesaplaması yapmasıdır.

STP protokolünü kapamak için config modda no spanning-tree vlan 1-1001 diyebiliriz. Bunu oluşacak hataları görmek için yapıyoruz.

spanning-tree vlan 1-1001 diyerek geri açarız

Root Bridge Belirlenmesi

Kapalı yollarda sadece BPDUs mesajları iletilebilir. BPDUs mesajları hangi yolun kapalı olacağına karar vermede kullanılır. Açılımı da zaten Bridge Protocol Data Unit’dir. 0180 ile başlayan bir multicast mesajıdır.

Görüldüğü gibi, o hattan bir mesaj yollanıyor. Bu mesaj BPDU mesajı.

Ağ başlatıldığında tüm switch’ler BPDUs measjları yollar. Bu trafik converge bitene kadar devam eder. converge bittiğinde root bridge (switch) belirlenir, portlardan biri kapanır ve artık sadece root bridge BPDUs mesajları yollar. Diğer köprüler normal trafiğe devam eder.

Mesela az önceki örneğimizde A,B ve C switclerindeki A-B ve B-C yollarının açık, C-A yolunun kapalı olduğunu söylemiştik. Bu durumda root bridge B switch’idir. Çünkü root bridge’e bağlı bir yol kapalı olamaz.
A ile C cihazı iletişim kuracağı zaman root bridge üzerinden kurmak zorundadır.

Az önceki mesajın içeriğine bakalım:

BPDU mesajlarının içinde root bridge bilgileri bulunur(BID). BID, 32768 + VLAN ID / Root MAC formatındadır. Örneğin burada Vlan 1 üzerinde olduğu için 32769 olur.
Port ID ise 32768 + port numarasıdır. Mesaj C cihazının 23. portundan çıkmış. Bu yüzden PID değeri 32791.

32768 sayısı güvenlik amaçlıdır ve değiştirilebilir. Böylece mesajları takip eden birisi zorlanır.
Root Path Cost, root cihaza olan uzaklık maliyetidir. Aradaki cihaz sayısına ve aradaki kabloların hızına göre maliyet düşebilir. Bu örnekte mesaj, Root  olan B’den C’ye, oradan da A’ya gelmiş. Ve maliyeti 19’muş.

root bridge bağlantılardaki olası kopmalar sonucu yedek yolların kullanımını sağlamak için 2 saniyede bir diğer köprülere BPDU mesajı yollar. Mesajlar sorunsuz gidiyorsa problem yok demektir. Ama mesaj ulaşmamışsa bir aksaklık var demektir. Ve yedekli yollar devreye girer.
Bu mesajların gönderimi kaynak tüketeceği için, root bridge’i buna göre seçmemiz gerekir.
Ayrıca root bridge olarak da en uygun switch’i seçmek önemlidir.
Hello time değeri varsayılan olarak 2’dir ama değiştirilebilir.

Güvenlik ipucu

BPDU mesajları broadcast olarak yayınlandığı için, bu mesajlar uç cihazlara da yollanır. Bu da büyük bir güvenlik zaafiyetidir.
Sistemi izleyen biri bu meaja bakarak saldırılar gerçekleştirebilir.
Bunu engellemek için int config modunda spanning-tree bpduguard enable yazarız.
Artık bu porttan STP yayını yapılmaz.
Eğer ağımızda spanning tree olmadığından eminsek kaynak kullanımını azaltmak için tüm portlarda STP kapatılabilir.

Portların statüleri

Bir port, blocking, listening, learning ve forwading olmak üzere 4 durumda olabilir. Bir switch cihazı ilk başlatıldığında veya port açıldığında da, bir süre STP ayarları yapılması için beklenir. Ve bu bekleme sırasında tüm portlar sırasıyla bu 4 duruma geçer.

Bir switch başlatıldığında tüm portları blocking modda olur. Blocking halindeki bir port, BPDU mesajları dışında hiçbir işlem yapamaz. (20 sn sürer)

Listening durumunda da yine sadece BPDU mesajları işlenir. Listening durumundaki bir port, olası loop’lar için BPDU mesajlarıyla ağı tarıyor demektir. (15 sn sürer)

Döngü bulunursa port block durumuna alınır. Eğer döngü yoksa Learning durumuna geçebilir.
Learning durumunda, portun tüm trafiğe izin verdiği forwarding durumu için hazırlık yapılır. Bu Learning durumunda MAC adresi öğrenilebilir. (15 sn sürer)

50 saniyenin sonunda aykırı bir durum oluşmaz ise converge biter ve port forwarding durumuna geçerek veri trafiğine açılır. Bu süre, STP türüne göre değişebilir.

Farklı amaçlarla üretilen STP türleri de vardır.

Standart STP modunda, tüm vlanlar için Root ve bloklanan portlar aynıdır.  Her VLAN için ayrı ST(snapping tree) belirlemek istiyorsak Cisco’nun PVST veya IEEE’nin RAPID-PVST protokolü kullanmamız gerekir.

Ayrıca RSTP gibi STP türleri de vardır.
Farklı STP türlerinde convergence aşamaları değişebilir. Bu da süreyi azaltır.
Modu değiştirmek için global config modunda spanning-tree mode pvst diyebiliriz. Diğer modlara da aynı şekilde geçmek mümkündür. ? komutu ile diğer modlara bakabiliriz.

Benim cihazımda pvst ve rapid-pvst modlarına geçebiliyormuşum.

 

 

int config modunda spanning-tree portfast diyerek uç cihazlara bağlı olan(Switch’e bağlı olmayan) portların convergence süresini 0’a indirebiliriz.

Port rolleri

Portların 3 farklı rolü olabilir.

Öncelikle root bridge bulunmalıdır. Root bridge, BID değeri en düşük olan switch’tir. Varsayılan ayarlarda 32768+Vlan ID değeri tüm Switchler için aynıdır. Bu durumda MAC adreslerine bakılır.
Yani en küçük MAC adresine sahip cihazın root bridge olduğunu anlamak mümkündür.

Switch’in MAC adresini öğrenmek için show int vlan 1 diyerek vlan 1’in MAC adresine bakabiliriz.

Diğer cihazlara da bakıp kaydediyorum.

Daha önceden de teyit ettiğimiz gibi, MAC adresi 0001 ile başlayan B cihazı en küçük MAC’e sahip olduğu için Root olur.

Her switch’in root switch’e en yakın portu root port olur (portun hızı arttıkça maliyet azalır).
Bloklanan portu bulmak için diğer portlara bakmak gerekir. Yine maliyete bakılır. Tüm switchlerdeki tüm portlar arasında maliyeti en fazla olan bloklanır. Mesela az önce bloklanan portun maliyetinin 19 olduğunu görmüştük. Demek ki tüm ağda en yüksek maliyet 19’muş. Bu yüzden o port bloklanmış.
Eğer maliyetler eşit çıkarsa yine BID değerine bakılır. BID değeri en yüksek olan port bloklanır.
Diğer tüm portlar Designated port olur. Root bridge’in diğer switch’lere bağlanan tüm portları Designated port’tur.

Sonuç olarak bu topoloji için port rolleri aşağıdaki gibidir.

En uzaktaki switch’in iki portunun maliyeti eşitse, portların diğer ucundaki switch’lerin BID’sine bakılır. (ör 4 switch olan topolojilerde)

Tüm kabloların hızları eşit olduğundan, maliyet hesaplaması için geçtiği cihaz sayısına bakmamız lazım. En düşük BID değeri Switch1’e ait olduğundan, root bridge o olduğu bellidir. Switch1’e en uzak portlar da Switch5’in 23 ve 24. portlarıdır. Bu iki porttan biri bloke edilmelidir. İki porta gidiş maliyeti de eşit olduğundan (1 cihaz geçiliyor) bağlı oldukları cihazın BID değerlerine bakarız.
23. portun karşısındaki Switch’in BID değeri 005 ile başlıyor. 24. portun karşısındaki ise 0090 ile başlıyor. Yani 24. portun karşısındaki BID değeri daha yüksek. Bu yüzden bu port bloke olur.

 

Eğer iki portun karşısındaki switch’ler de aynı ise (ör 2 switch) port ID’ye bakılır.

Switch11 root bridge. Bu durumda switch10’daki portlardan biri bloklanmalı. İki portun da karşısında aynı switch olduğundan BID değerleri aynıdır. Bu durumda, karşısındaki portun ID’si büyük olan bloklanır. 5. portun karşısında 24 olduğundan o bloklanmalır.

show spanning tree diyerek switch üzerinden bu bilgileri görebiliriz.

Eğer bir port kapanırsa veya yeni bir port açılırsa STP bu değişikliği fark eder ve duruma göre yeni bir Root bridge belirleyebilir.

Root’u manuel seçme

Şimdiye kadar Root bridge hep otomatik seçilmişti. Ancak bazen kendimiz belirlemek isteyebiliriz.

Root bridge seçilirken ilk olarak BID değerine bakıldığını söylemiştik. BID değeri varsayılan olarak 32768+VID/MAC şeklindeydi. 32768+VID değeri aynı ağdaki tüm cihazlar için aynı olacağından şimdiye kadar hep MAC adresine göre root seçildi.

Peki kendi seçtiğimiz cihazı root yapmak istersek?
MAC adresi ve VID değerini değiştiremeyeceğimize göre, değiştirmemiz gereken şey 32768 değeridir.

3 switch’li bir ağda 2 cihazın değeri 32768 iken, 3. cihazın değeri daha düşük bir sayı, örneğin 8192 olursa, diğer şeylere bakmaksızın .. değeri en düşük olan root olur.
32768 sayısı aslında priority denen bir değerdir.

config modda spanning-tree vlan 1 priority sayı diyerek istediğimiz priority değerini verebiliriz. priority değeri en düşük olan switch root olacaktır. (superio BPDU diğerini tahttan indirir )
priority değeri 4096 sayısının katı olmak zorundadır.

MAC değeri en büyük olmasına rağmen priority değeri en küçük olduğu için, A switch’i root oldu.

Yeni bir cihaz root olduğunda diğer cihazlara superio BPDU mesajları yollar. Saldırganlar bu mesajı taklit edebilir.

Bunu engellemek için interface config modunda spanning-tree guard root deriz. Artık o porttan gelen superio mesajları dikkate alınmaz.

Şimdiye kadar bahsettiklerimizin hepsi, her vlan için ayrı çalışır. Vlan1 için root A switch’i iken, vlan2 için B switch’i olabilir. Yani STP her vlan için ayrı çalışır.

Bu durumda bir port bloklandığı zaman da sadece o vlan için bloklanır. Diğer vlanlarda eğer root switch farklıysa diğer vlanların geçişine izin verebilir. Diğer vlan için de başka bir port bloklanır.

 

    Bir cevap yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir