Spanning Tree -protokollalla on jo pitkät perinteet. Sen ensimmäinen versio julkaistiin jo vuonna 1990 ja se tunnettiin tarkemmin standardina 802.1D. Protokolla on määritelty alla olevassa englannin kielisessä tekstissä seuraavasti: Spanning-Tree Protocol (STP) as defined in the IEEE 802.1D is a link management protocol that provides path redundancy while preventing undesirable loops in the network. Suomeksi voidaan puhua protokollasta, joka tarjoaa vaihtoehtoisia reittejä estäen samalla verkon toimintaa häiritsevien silmukoiden syntymisen. Protokollan ensisijainen tehtävä on siis tuoda verkkoihin varmuutta eli, jos vaikkapa kaivinkone katkaisee kahden rakennuksen välisen kytkinverkon kaapelin poikki, voidaan automaattisesti siirtyä käyttämään toista, toimivaa reittiä. Toiminta edellyttää luonnollisesti vaihtoehtoisten reittien olemassa olon. Jos näin ei ole, protokolla on lähes turha eli estää käytännössä vain kytkentävirheistä johtuvat silmukat. Spanning Tree, jatkossa STP, on tarkoituksella ja tarkoituksetta käytössä lähes jokaisessa verkossa, erityisesti kytkentäisissä Ethernet-verkoissa. Tämä johtuu siitä, että protokolla löytyy lähes jokaisesta myynnissä olevasta verkkolaitteesta, pois lukien pelkästään kotikäyttäjille suunnatut, yleensä edullisen hintaluokan laitteet. Iso osa verkkoympäristöistä on sellaisia, joissa protokollan olemassaoloa ei edes huomata eikä tiedosteta, paitsi silloin, kun verkossa on ilmenee ongelmia. Verkossa tapahtuneet muutokset, joista tyypillinen esimerkki on verkkolaitteen vaihto, vaikuttaa kokonaisuuteen niin, että laitteen vaihdon jälkeen esimerkiksi verkon loppukäyttäjien yhteydet katkeilevat tai hidastuvat. Tämä voi tapahtua esimerkiksi siksi, että laitteen vaihdon jälkeen liikenne voi mennä STP:n ansioista täysin toista reittiä kuin aikaisemmin. Kuva 1. Satunnaisesti valitun kytkimen ominaisuuksia. Tämän oppaan tarkoituksena on havainnollistaa lukijalle erilaisia STP:n ilmiöitä. Koska STP on standardisoitu protokolla, sen perustoiminnallisuuden pitäisi olla eri valmistajien verkkolaitteilla sama. Tästä syystä oppaassa ei ole haluttu keskittyä siihen, että miten toimitaan tietyn kytkinvalmistajan laitteiden kanssa. Esimerkkien kytkimiä hallitaan ja konfiguroidaan konsoliliittymästä, josta on otettu tekstikaappauksia. Kytkimet ovat tehdasasetuksilla eli mitään muutoksia ei ensimmäisissä esimerkeissä ole vielä tehty. Esimerkkien edetessä tullaan huomaan, että miten STP toimii ja millä tapaa se pitää ottaa verkkoympäristöissä huomioon.
Porttien tilat Ensimmäisessä esimerkissä on näytetty perusnäkymä STP:n toiminnasta. STP löytyy siis nykyään lähes jokaisesta verkkolaitteesta ja on oletuksena monesti myös heti käytössä. Tässä esimerkissä ei ole yhtään kytkimen porttia kytketty toisiin laitteisiin. Kuva 2. Kaksi STP:llä varustettua kytkintä yhdistetty toisiinsa Alla on näytetty tilannen ennen kytkentää. Oletuksena STP on siis käytössä. console# show spanning tree Root ID Priority 32768 Address 00:14:78:8e:c1:45 This switch is the root Number of topology changes 0 last change occurred 00:21:38 ago enabled 128.1 100 DSBL Dsbl No P2p (STP) g2 enabled 128.2 100 DSBL Dsbl No P2p (STP) g3 enabled 128.3 100 DSBL Dsbl No P2p (STP) g4 enabled 128.4 100 DSBL Dsbl No P2p (STP) g5 enabled 128.5 100 DSBL Dsbl No P2p (STP) g6 enabled 128.6 100 DSBL Dsbl No P2p (STP) g7 enabled 128.7 100 DSBL Dsbl No P2p (STP) g8 enabled 128.8 100 DSBL Dsbl No P2p (STP) g9 enabled 128.9 100 DSBL Dsbl No P2p (STP) ch1 enabled 128.53 4 DSBL Dsbl No P2p (STP) ch2 enabled 128.54 4 DSBL Dsbl No P2p (STP) ch3 enabled 128.55 4 DSBL Dsbl No P2p (STP) ch4 enabled 128.56 4 DSBL Dsbl No P2p (STP) ch5 enabled 128.57 4 DSBL Dsbl No P2p (STP) ch6 enabled 128.58 4 DSBL Dsbl No P2p (STP) ch7 enabled 128.59 4 DSBL Dsbl No P2p (STP) ch8 enabled 128.60 4 DSBL Dsbl No P2p (STP) console#
Seuraavaksi kytkimet on yhdistetty toisiinsa porttien g1 välille laitetulla kaapelilla. STP:n ensimmäisessä vaiheessa linkki on nostettu pystyyn, mutta liikennettä ei vielä välitetä portista ulospäin. Tätä tilaa kutsutaan kuuntelevaksi eli listening-tilaksi, jossa kytkin liittyy osaksi verkkoa lähettämällä informaatiota muille laitteille itsestään. Informaation lähetykseen käytetään BPDU-viestejä, joita vastaavasti muut laitteet kuuntelevat. console# 01 Jan 2000 01:26:12 %LINK I Up: Vlan 1 01 Jan 2000 01:26:12 %LINK I Up: g1 console# show spanning tree ethernet g1 Port g1 enabled State: listening Role: designated Port id: 128.1 Port cost: 4 Type: P2p (configured: Auto) STP Port Fast: No (configured:no) Designated bridge Priority : 32768 Address: 00:14:78:8e:c1:45 Designated port id: 128.1 Designated path cost: 0 Guard root: Disabled Number of transitions to forwarding state: 0 BPDU: sent 6, received 0 Listening-tilan jälkeen siirrytään oppivaan eli Learning-tilaan. Tässä tilassa portti kuuntelee verkon liikennettä ja luo samalla MAC-osoitteiden pohjalta ohjaustaulun. Vieläkään portin kautta ei lähetetä siihen kytketylle laitteelle muuta liikennettä kuin STP:n BPDU-viestejä. console# show spanning tree ethernet g1 Port g1 enabled State: learning Role: designated Port id: 128.1 Port cost: 4 Type: P2p (configured: Auto) STP Port Fast: No (configured:no) Designated bridge Priority : 32768 Address: 00:14:78:8e:c1:45 Designated port id: 128.1 Designated path cost: 0 Guard root: Disabled Number of transitions to forwarding state: 0 BPDU: sent 14, received 0 Learning-tilasta siirrytään välittävään eli Forwarding-tilaan. Tässä tilassa portti kuuntelee sekä lähettää BPDU-viestejä, mutta mikä tärkeintä, siihen kytkettyihin laitteisiin saadaan yhteys ja vastaavasti laitteet saavat yhteyden kytkimen ulkopuolelle. Käytännössä vasta kolmenkymmenen sekunnin jälkeen kytkimien välillä voi liikkua kytkimiin kytkettyjen laitteiden, vaikkapa työasemien välistä liikennettä. Yleisimpiä STP:n aiheuttamia ongelmia on se, että kun työasema kytketään kytkimeen ja työasema olettaa, että se on verkossa. Työasema aloittaa IP-osoitteen kyselyn DHCP:llä, mutta STP:n ansiosta kolmeenkymmeneen sekunttiin ei liikennettä portista kulje. Työasema olettaa DHCP-palvelimen olevan pois käytöstä, ja tästä seurauksena työaseman käyttäjälle tulee ilmoitus, että verkko ei ole käytössä. console# 01 Jan 2000 01:26:42 %STP W PORTSTATUS: g1: STP status Forwarding console# show spanning tree ethernet g1 Port g1 enabled State: forwarding Role: designated Port id: 128.1 Port cost: 4 Type: P2p (configured: Auto) STP Port Fast: No (configured:no) Designated bridge Priority : 32768 Address: 00:14:78:8e:c1:45 Designated port id: 128.1 Designated path cost: 0 Guard root: Disabled Number of transitions to forwarding state: 1 BPDU: sent 17, received 1
Neljäs ja viimeinen tila tässä esimerkissä on suljettu eli Blocking, jossa portin kautta ei välitetä muuta kuin BPDU-viestejä. Tämän tilan tarkoitus on estää verkkoon syntyvät silmukat. console# show spanning tree ethernet g2 Port g2 enabled State: blocking Role: alternate Port id: 128.2 Port cost: 4 Type: P2p (configured: Auto) STP Port Fast: No (configured:no) Designated bridge Priority : 32768 Address: 00:14:78:8e:c1:47 Designated port id: 128.1 Designated path cost: 4 Guard root: Disabled Number of transitions to forwarding state: 0 BPDU: sent 0, received 29 STP määrää porttien tilat, joita on neljä eli kuunteleva, oppiva, välittävä ja suljettu. Kytkimeen kytketyn laitteen toimintaan vaikuttaa merkittävästi se, että missä tilassa portti milloinkin on. Porttien roolit ja puun virittyminen Spanning Tree -protokollan toiminnassa portit ovat keskeisessä roolissa. Jokaisella portilla on tietty tila, mutta tämän lisäksi myös yhteen kytketyt, protokollaa tukevat laitteet ovat tietyssä tilassa. Portit ja yhteen kytketyt laitteet muodostavat tietyn muotoisen puun, jossa liikenne kulkee aina parasta reittiä pitkin. Tätä havainnollistaa seuraavat esimerkit, joissa on kytketty kolme kytkintä toisiinsa kiinni renkaan muotoon. Jokaisesta kytkimestä on portista g1 viety toisen kytkimen porttiin g2 kaapeli. Tämän lisäksi kytkimet on nimetty nimillä YKKONEN, KAKKONEN ja KOLMONEN. Kytkennän havainnollistava kuva alla. Kuva 3. Kuva esimerkin kytkennästä
Ensimmäiseksi on listattu STP-tiedot kytkimeltä YKKONEN. Kaapelit ovat olleet kytkettyinä jo jonkin aikaa, eli portit ovat määräytyneet jo oikeisiin tiloihin. Listauksesta nähdään, että kytkimestä on tullut STP-puun pääkytkin eli root. Tämä rooli on määräytynyt kytkimen MAC-osoitteesta, joka on kaikista kolmesta kytkimestä pienin. Pääkytkimen portit yksi ja kaksi ovat välittävässä (FRW) tilassa eli niiden kautta kulkee liikenne aivan normaalista. YKKONEN# show spanning tree Root ID Priority 32768 Address 00:14:78:8e:c1:45 This switch is the root Number of topology changes 1 last change occurred 20:46:54 ago enabled 128.1 4 FRW Desg No P2p (STP) g2 enabled 128.2 4 FRW Desg No P2p (STP) g3 enabled 128.3 100 DSBL Dsbl No P2p (STP) g4 enabled 128.4 100 DSBL Dsbl No P2p (STP) g5 enabled 128.5 100 DSBL Dsbl No P2p (STP) g6 enabled 128.6 100 DSBL Dsbl No P2p (STP) g7 enabled 128.7 100 DSBL Dsbl No P2p (STP) g8 enabled 128.8 100 DSBL Dsbl No P2p (STP) g9 enabled 128.9 100 DSBL Dsbl No P2p (STP) ch1 enabled 128.53 4 DSBL Dsbl No P2p (STP) ch2 enabled 128.54 4 DSBL Dsbl No P2p (STP) ch3 enabled 128.55 4 DSBL Dsbl No P2p (STP) ch4 enabled 128.56 4 DSBL Dsbl No P2p (STP) ch5 enabled 128.57 4 DSBL Dsbl No P2p (STP) ch6 enabled 128.58 4 DSBL Dsbl No P2p (STP) ch7 enabled 128.59 4 DSBL Dsbl No P2p (STP) ch8 enabled 128.60 4 DSBL Dsbl No P2p (STP) YKKONEN# Seuraavalla sivulla on listattu STP-tiedot kytkimeltä KAKKONEN. Erona YKKONEN-kytkimeen on se, että tämä ei ole pääkytkin vaan silta (Bridge). Porttien roolissa on myös eroa, sillä ensimmäinen portti (g1) välittävä ja tämän kytkimen pääportti (root). Tässä portista pääsee puun pääkytkimeen eli tämä on kytkimen KAKKONEN reitti kytkimestä muuhun verkkoon. Toinen portti (g2) on tilassa suljettu (BLK) eli tämä portti on kytketty kytkimeen KOL- MONEN. Portin kautta ei kulje muuta kuin BPDU-liikennettä eli STP:n toimintaan liittyvää liikennettä. Tällä portilla on kaksi merkitystä, toimia vaihtoehtoisena reittinä ja katkaista syntyvä silmukka. Jos yhteys pääkytkimeen ensimmäisen portin kautta menetetään, otetaan käyttöön kyseisen portin kautta kulkeva vaihtoehtoinen reitti. Vastaavasti, jos tehdään samantapainen rengas kolmesta kytkimestä, joissa ei ole STP:tä, on lopputuloksena kytkimien ylikuormittuminen. Tämä tapahtuu siksi, että verkkoon muodostuu silmukka, joka täyttyy yleislähetysliikenteestä (broadcast).
KAKKONEN# show spanning tree Root ID Priority 32768 Address 00:14:78:8e:c1:45 Cost 4 Port g1 Bridge ID Priority 32768 Address 00:14:78:8f:48:32 Number of topology changes 1 last change occurred 21:02:22 ago enabled 128.1 4 FRW Root No P2p (STP) g2 enabled 128.2 4 BLK Altn No P2p (STP) g3 enabled 128.3 100 DSBL Dsbl No P2p (STP) g4 enabled 128.4 100 DSBL Dsbl No P2p (STP) g5 enabled 128.5 100 DSBL Dsbl No P2p (STP) g6 enabled 128.6 100 DSBL Dsbl No P2p (STP) g7 enabled 128.7 100 DSBL Dsbl No P2p (STP) g8 enabled 128.8 100 DSBL Dsbl No P2p (STP) g9 enabled 128.9 100 DSBL Dsbl No P2p (STP) ch1 enabled 128.53 4 DSBL Dsbl No P2p (STP) ch2 enabled 128.54 4 DSBL Dsbl No P2p (STP) ch3 enabled 128.55 4 DSBL Dsbl No P2p (STP) ch4 enabled 128.56 4 DSBL Dsbl No P2p (STP) ch5 enabled 128.57 4 DSBL Dsbl No P2p (STP) ch6 enabled 128.58 4 DSBL Dsbl No P2p (STP) ch7 enabled 128.59 4 DSBL Dsbl No P2p (STP) ch8 enabled 128.60 4 DSBL Dsbl No P2p (STP) KAKKONEN# Viimeisenä on listattu seuraavalla sivulla kytkimen KOLMONEN STP-tiedot. Kytkin on lähes vastaava kuin KAKKONEN. Muutamat poikkeukset koskevat portteja eli nyt pääkytkin löytyy toisesta (g2) portista ja ensimmäinen portti on kytketty kytkimeen KAK- KONEN. Edellisestä kytkimestä poiketen ensimmäinen portti ei ole suljetussa tilassa vaan välittävässä. Tämän muutoksen aiheuttaja löytyy kytkimien KAKKONEN ja KOL- MONEN MAC-osoitteista. STP priorisoi kytkimet oletuksena MAC-osoitteiden perusteella, eli mitä pienempi MAC-osoite sitä tärkeämpi kytkin. Kytkimen KOLMONEN MACosoite on pienempi kuin kytkimen KAKKONEN ja toisaalta taas suurempi kuin kytkimen YKKONEN. Tästä syystä kytkimien KAKKONEN ja KOLMONEN välisen yhteyden portit ovat eri tiloissa.
show spanning tree Root ID Priority 32768 Address 00:14:78:8e:c1:45 Cost 4 Port g2 Bridge ID Priority 32768 Address 00:14:78:8e:c1:47 Number of topology changes 2 last change occurred 21:49:28 ago enabled 128.1 4 FRW Desg No P2p (STP) g2 enabled 128.2 4 FRW Root No P2p (STP) g3 enabled 128.3 100 DSBL Dsbl No P2p (STP) g4 enabled 128.4 100 DSBL Dsbl No P2p (STP) g5 enabled 128.5 100 DSBL Dsbl No P2p (STP) g6 enabled 128.6 100 DSBL Dsbl No P2p (STP) g7 enabled 128.7 100 DSBL Dsbl No P2p (STP) g8 enabled 128.8 100 DSBL Dsbl No P2p (STP) g9 enabled 128.9 100 DSBL Dsbl No P2p (STP) ch1 enabled 128.53 4 DSBL Dsbl No P2p (STP) ch2 enabled 128.54 4 DSBL Dsbl No P2p (STP) ch3 enabled 128.55 4 DSBL Dsbl No P2p (STP) ch4 enabled 128.56 4 DSBL Dsbl No P2p (STP) ch5 enabled 128.57 4 DSBL Dsbl No P2p (STP) ch6 enabled 128.58 4 DSBL Dsbl No P2p (STP) ch7 enabled 128.59 4 DSBL Dsbl No P2p (STP) ch8 enabled 128.60 4 DSBL Dsbl No P2p (STP) STP:lla varustetuilla kytkimillä saadaan rakennettua vikasietoisia verkkoja, mikä on hyvä asia. Tätä kuvaa seuraava kuva, jossa on esitetty miten liikenne normaali tilanteessa kulkee. Jos KAKKONEN tai KOLMONEN katkaisee suoran yhteyden YKKONEN-kytkimeen, voidaan reitti korvata vaihtoehtoisella. Valitettavasti yksi suurimmista STP:n ongelmista on se, että verkon puu virittyy sen mukaan, mikä on tietyn kytkimen MAC-osoite. Pahimmillaan uuden kytkimen lisääminen verkkoon sekoittaa koko verkon toiminnan. Tästä syystä STP:n perusasiat olisi hyvä tietää. Kuva 4. Liikenteen kulkeminen esimerkin verkossa
Puun rakenteen muuttaminen STP muodostaa puun, jossa osapuolia ovat kaikki protokollaa tukevat laitteet. Millaiseksi puu sitten muodostuu määräytyy monesta tekijästä, joista edellisessä tuotiin esille MAC-osoite. Kytkimet muodostivat puun, jossa prioriteettijärjestys oli YKKONEN, KOLMONEN ja KAKKONEN. YKKONEN oli pääkytkin ja vastaavasti siltakytkiminä toimivat KOLMONEN ja KAKKONEN. Prioriteettijärjestyksen mukaisesti määräytyivät porttien roolit. Tästä esimerkki alla, jossa voi todeta, että portti g1 on kytketty kytkimeen YKKONEN ja portti g2 on kytkimessä KOLMONEN kiinni eli portti on suljettu (BLK). KAKKONEN# show spanning tree active Root ID Priority 32768 Address 00:14:78:8e:c1:45 Cost 4 Port g1 Bridge ID Priority 32768 Address 00:14:78:8f:48:32 Number of topology changes 3 last change occurred 00:05:06 ago enabled 128.1 4 FRW Root No P2p (STP) g2 enabled 128.2 4 BLK Altn No P2p (STP) KAKKONEN# Ensimmäinen tapa puun rakenteen muuttamiseen on kytkimen prioriteetin pienentäminen tai vastaavasti nostaminen. Jos kytkin ei ole pääkytkin, niin prioriteettilukua lasketaan. Jos taas pääkytkimestä halutaan tehdä siltakytkin, nostetaan prioriteettilukua. Tästä esimerkki seuraavassa, jossa KAKKONEN kytkimestä on tehty puun pääkytkin. KAKKONEN# configure KAKKONEN(config)# spanning tree priority parameter out of range, should be between 0 and 61440 in steps of 4096. Allowed values are: 0 4096 8192 12288 16384 20480 24576 28672 32768 36864 40960 45056 49152 53248 57344 61440 KAKKONEN(config)# spanning tree priority 4096 KAKKONEN(config)# exit KAKKONEN# show spanning tree active Root ID Priority 4096 Address 00:14:78:8f:48:32 This switch is the root Number of topology changes 4 last change occurred 00:01:04 ago enabled 128.1 4 FRW Desg No P2p (STP) g2 enabled 128.2 4 FRW Desg No P2p (STP) KAKKONEN#
Muutos näkyy kytkimellä YKKONEN alla olevalla tavalla eli entisestä pääkytkimestä on tullut siltakytkin. YKKONEN# show spanning tree active Root ID Priority 4096 Address 00:14:78:8f:48:32 Cost 4 Port g2 Bridge ID Priority 32768 Address 00:14:78:8e:c1:45 Number of topology changes 5 last change occurred 00:21:37 ago enabled 128.1 4 FRW Desg No P2p (STP) g2 enabled 128.2 4 FRW Root No P2p (STP) YKKONEN# Tilannetta esittää myös seuraava kuva, josta näkyy, miten liikenne muutoksen jälkeen kulkee. Miksi näin sitten joskus pitää tehdä? Tärkein syy on, että saadaan puun pääkytkimen rooli keskuskytkimelle, jonka suorituskyky ja hinta on erilainen kuin reunakytkimillä. Pahimmillaanhan reunakytkimestähän voi tulla puun pääkytkin, jolloin keskuskytkimeksi kaavailtu kalliimpi ja suorituskykyisempi kytkin menettää hieman merkitystään. Kuva 5. Tilanne prioriteettimuutoksen jälkeen.
Edellä KAKKONEN kytkimestä tuli siis pääkytkin. Puun prioriteettijärjestys on nyt KAK- KONEN YKKONEN KOLMONEN. Liikenne kulkee reunakytkimiltä suoraan pääkytkimelle eli reunakytkimien välinen yhteys on poissa käytöstä (BLK), mikä näkyy alla. show spanning tree active Root ID Priority 4096 Address 00:14:78:8f:48:32 Cost 4 Port g1 Bridge ID Priority 32768 Address 00:14:78:8e:c1:47 Number of topology changes 5 last change occurred 24:48:14 ago enabled 128.1 4 FRW Root No P2p (STP) g2 enabled 128.2 4 BLK Altn No P2p (STP) Jos halutaan, että liikenne kulkee reittiä KOLMONEN YKKONEN KAKKONEN, voidaan muutos tehdä vaihtamalla kytkimien KOLMONEN ja KAKKONEN välisen reitin arvoa. Oletuksen yhteysnopeudella 1 Gbps reitin arvo on neljä, nopeudella 100 Mbps reitin arvo on 19 ja nopeudella 10 Mbps reitin arvo on 100. Seuraavassa esimerkissä on mainitun yhteyden arvoa nostettu kymmeneen, jonka jälkeen haluttu muutos tapahtuu, koska kytkimen YKKONEN kautta reitin arvo on pienempi eli 8 (4+4). configure KOLMONEN(config)# interface ethernet g1 KOLMONEN(config if)# spanning tree cost 10 02 Jan 2000 01:58:05 %STP W PORTSTATUS: g1: STP status Blocking KOLMONEN(config if)# exit KOLMONEN(config)# exit 02 Jan 2000 01:58:35 %STP W PORTSTATUS: g2: STP status Forwarding show spanning tree active Root ID Priority 4096 Address 00:14:78:8f:48:32 Cost 8 Port g2 Bridge ID Priority 32768 Address 00:14:78:8e:c1:47 Number of topology changes 6 last change occurred 00:00:09 ago enabled 128.1 10 BLK Altn No P2p (STP) g2 enabled 128.2 4 FRW Root No P2p (STP)
Edellisillä muutoksilla päästiin seuraavan kuvan tilanteeseen. Miksi tämä kaikki sitten tehtiin? Verkkoympäristöissä on asioita, joita pitää hallita henkilöt eivätkä laitteet. Kuten jo mainittu, verkon rakennetta voi muuttaa oletusasetuksilla mikä tahansa verkkolaite. Tehdyillä muutoksilla varmistutaan siitä, että verkon ylläpitäjä tietää mitä verkossa tapahtuu. Ylläpitäjä on varma siitä, että mistä liikenne milloinkin kulkee, mitä kytkintä kuormitetaan eniten, mitä tapahtuu vikatilanteissa ja esimerkiksi mitä vaikutusta on uudella verkkolaitteella. Seuraavassa kappaleessa täydennetään niitä asioita, joita tässäkin jo hieman sivuttiin eli keskitytään verkon hallintaan ja toiminnan parantamiseen. Kuva 6. Verkko muutoksien jälkeen.
Toiminnan parantaminen Alkuperäinen standardi 802.1D on saanut useita parannuksia, joilla on korjattu käytännön ympäristöissä eteen tulleita haasteita ja ongelmia. Vuonna 1998 standardi täydentyi tietyiltä osin, mutta uudistuksilla ei ollut kovinkaan suurta vaikutusta itse protokollan perustoimintaan. Vasta vuoden 2004 täydennys toi itse protokollaan suuren muutoksen, sillä STP:n rinnalle tuli toinen protokolla nimeltään RSTP eli Rapid Spanning Tree Protocol. Seuraavaksi käydään läpi, miksi RSTP oli tarpeellinen ja mitä sillä oikein saavutetaan. Kuva 7. Käytännön verkkoympäristö. Tulevissa esimerkeissä toimitaan yllä olevan kuvan mukaisessa verkkoympäristössä. STP:n ensisijainen tarkoitushan on mahdollistaa työaseman yhteys Internetiin huolimatta siitä, että yksi kytkimien välisistä yhteyksistä olisi väliaikaisesti poikki. Tätä tilannetta tullaan havainnollistamaan työasemalta suoritettavalla ping-komennolla, jolla voidaan nähdä, että milloin yhteys reitittimeen on olemassa. Ping-komennossa käytetään IPv6-osoitteita, jotka sopivat loistavasti tähän tarkoitukseen. IPv6-osoitehan on käytössä heti kun laitteen linkki nousee ylös, ja näin vältytään kiinteiden IPv4-osoitteiden asettamiselta. Ping-komennon pyyntö lähetetään viiden sekunnin välein.
Ensimmäiseksi käynnistetään Ping-komento ja heti sen jälkeen työaseman verkkokaapeli kytketään KOLMONEN-kytkimen kolmanteen (g3) porttiin. Lopputuloksesta nähdään, että vasta noin puoli minuuttia kytkemisestä työasema on verkossa. viheik@viheik laptop:~$ ping6 i 5 ff02::1%eth0 PING ff02::1%eth0(ff02::1) 56 data bytes 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=1 ttl=64 time=0.056 ms 0 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=2 ttl=64 time=0.078 ms 5 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=3 ttl=64 time=0.078 ms 10 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=4 ttl=64 time=0.083 ms 15 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=5 ttl=64 time=0.079 ms 20 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=6 ttl=64 time=0.084 ms 25 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=7 ttl=64 time=0.079 ms 30 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=8 ttl=64 time=0.082 ms 35 sekuntia! 64 bytes from fe80::a00:27ff:feb1:f397: icmp_seq=8 ttl=64 time=0.510 ms (DUP!) 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=9 ttl=64 time=0.078 ms 64 bytes from fe80::a00:27ff:feb1:f397: icmp_seq=9 ttl=64 time=0.370 ms (DUP!) ^C ff02::1%eth0 ping statistics 9 packets transmitted, 9 received, +2 duplicates, 0% packet loss, time 39994ms rtt min/avg/max/mdev = 0.056/0.143/0.510/0.143 ms viheik@viheik laptop:~$ Seuraavaksi on katkaistu kytkimien välinen yhteys kesken kaiken eli on tehty verkkoon vikatilanne. Vaihtoehtoinen reitti tulee kuntoon noin puoli minuuttia vikatilanteesta. viheik@viheik laptop:~$ ping6 i 5 ff02::1%eth0 PING ff02::1%eth0(ff02::1) 56 data bytes 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=1 ttl=64 time=0.057 ms 64 bytes from fe80::a00:27ff:feb1:f397: icmp_seq=1 ttl=64 time=1.80 ms (DUP!) 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=2 ttl=64 time=0.073 ms 0 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=3 ttl=64 time=0.080 ms 5 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=4 ttl=64 time=0.077 ms 10 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=5 ttl=64 time=0.076 ms 15 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=6 ttl=64 time=0.069 ms 20 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=7 ttl=64 time=0.083 ms 25 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=8 ttl=64 time=0.080 ms 30 sekuntia! 64 bytes from fe80::a00:27ff:feb1:f397: icmp_seq=8 ttl=64 time=0.473 ms (DUP!) 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=9 ttl=64 time=0.071 ms 64 bytes from fe80::a00:27ff:feb1:f397: icmp_seq=9 ttl=64 time=0.502 ms (DUP!) ^C ff02::1%eth0 ping statistics 9 packets transmitted, 9 received, +3 duplicates, 0% packet loss, time 39998ms rtt min/avg/max/mdev = 0.057/0.287/1.808/0.483 ms viheik@viheik laptop:~$ Edellä olevista testeistä voidaan nähdä, että laitteen pääsy verkkoon kytkemisen jälkeen sekä vikatilanteista toipuminen kestää liian kauan. Puolessa minuutissa työasemien sovellukset voivat ehtiä ilmoittamaan käyttäjälle aikakatkaisuista tai esimerkiksi tietyt palvelut, kuten esimerkiksi videolähetykset keskeyttävät toiminnan. Tästä on lähdettävä miettimään, että miten asiaa voidaan parantaa. Ensimmäisenä vaihtoehtona tässä tapauksessa voisi olla se, että poistetaan protokollan toiminta kokonaan esimerkiksi työaseman portista. Tämä ratkaisu on esitetty seuraavalla sivulla.
configure KOLMONEN(config)# interface ethernet g3 KOLMONEN(config if)# spanning tree disable KOLMONEN(config if)# exit KOLMONEN(config)# exit show spanning tree Root ID Priority 4096 Address 00:14:78:8f:48:32 Cost 4 Port g1 Bridge ID Priority 32768 Address 00:14:78:8e:c1:47 Number of topology changes 5 last change occurred 24:48:14 ago enabled 128.1 4 FRW Root No P2p (STP) g2 enabled 128.2 4 BLK Altn No P2p (STP) g3 disabled 128.3 4 DSBL Dsbl No P2p (STP) g4 enabled 128.4 100 DSBL Dsbl No P2p (STP) g5 enabled 128.5 100 DSBL Dsbl No P2p (STP) g6 enabled 128.6 100 DSBL Dsbl No P2p (STP) g7 enabled 128.7 100 DSBL Dsbl No P2p (STP) g8 enabled 128.8 100 DSBL Dsbl No P2p (STP) g9 enabled 128.9 100 DSBL Dsbl No P2p (STP) ch1 enabled 128.53 4 DSBL Dsbl No P2p (STP) ch2 enabled 128.54 4 DSBL Dsbl No P2p (STP) ch3 enabled 128.55 4 DSBL Dsbl No P2p (STP) ch4 enabled 128.56 4 DSBL Dsbl No P2p (STP) ch5 enabled 128.57 4 DSBL Dsbl No P2p (STP) ch6 enabled 128.58 4 DSBL Dsbl No P2p (STP) ch7 enabled 128.59 4 DSBL Dsbl No P2p (STP) ch8 enabled 128.60 4 DSBL Dsbl No P2p (STP) Muutoksen jälkeen irrotetaan työaseman verkkokaapeli kytkimestä, käynnistetään Ping-komento ja kytketään työaseman uudelleen kytkimeen kiinni. Lopputuloksena huomataan, että työasema on verkossa välittömästi kytkennän jälkeen eikä vasta puolen minuutin päästä. viheik@viheik laptop:~$ ping6 i 5 ff02::1%eth0 PING ff02::1%eth0(ff02::1) 56 data bytes 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=1 ttl=64 time=0.055 ms 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=2 ttl=64 time=0.094 ms 64 bytes from fe80::a00:27ff:feb1:f397: icmp_seq=2 ttl=64 time=0.421 ms (DUP!) 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=3 ttl=64 time=0.059 ms 64 bytes from fe80::a00:27ff:feb1:f397: icmp_seq=3 ttl=64 time=0.390 ms (DUP!) ^C ff02::1%eth0 ping statistics 3 packets transmitted, 3 received, +2 duplicates, 0% packet loss, time 9998ms rtt min/avg/max/mdev = 0.055/0.203/0.421/0.166 ms viheik@viheik laptop:~$ Edellinen muutos oli työaseman kannalta hyvä juttu, mutta STP:n kannalta huono. STP:n ensimmäinen tehtävähän oli varmistaa toimivat yhteydet myös vikatilanteissa ja toisena tehtävänä poistaa verkossa olevat silmukat, jotka voivat syntyä vaikkapa kytkentävirheistä. Valitettavasti edellisellä muutoksella tehtiin mahdottomaksi tuo toinen tehtävä. Parempi ratkaisu on käyttää monesta kytkimestä löytyvää PortFastominaisuutta, joka ohittaa portissa aikaa vievät kuuntelevan sekä oppivan tilan ja siirtyy suoraan välittävään tilaan eli yhdistää portin laitteen välittömästi verkkoon. Seuraavassa on esimerkki tästä.
Ensimmäiseksi kytkimen porttiin on asetettu PortFast-toiminto päälle, jonka jälkeen porttiin on kytketty työaseman verkkokaapeli. Esimerkistä nähdään, että portti siirtyy välittömästi Forwarding-tilaan ja työasema pääsee verkkoon heti kytkennän jälkeen. configure KOLMONEN(config)# interface ethernet g3 KOLMONEN(config if)# spanning tree portfast KOLMONEN(config if)# exit KOLMONEN(config)# exit 01 Jan 2000 01:06:23 %STP W PORTSTATUS: g3: STP status Forwarding 01 Jan 2000 01:06:23 %LINK I Up: g3 show spanning tree ethernet g3 Port g3 enabled State: forwarding Role: designated Port id: 128.3 Port cost: 4 Type: P2p (configured: Auto) STP Port Fast: Yes (configured:yes) Designated bridge Priority : 32768 Address: 00:14:78:8e:c1:47 Designated port id: 128.3 Designated path cost: 0 Guard root: Disabled Number of transitions to forwarding state: 0 BPDU: sent 57, received 0 Alla on tehty sama testi kuin edellisessä esimerkissä. Lopputuloskin on työaseman kannalta täysin sama eli hieno homma. Paitsi, että tämä koskee vain työasemaa, eli kytkimien väliset yhteydet toimii edelleen hitaalla tavalla, vikatilanteissa yhteydet toimivat vasta aikaisintaan puolen minuutin odottelun jälkeen. Lisäksi vikakytkentä työaseman porttiin saattaa edelleen aiheuttaa verkko häiritsevän silmukan, mutta tässä tapauksessa verkko pystyy toipumaan tietyn ajan kuluttua vikatilanteesta. viheik@viheik laptop:~$ ping6 i 5 ff02::1%eth0 PING ff02::1%eth0(ff02::1) 56 data bytes 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=1 ttl=64 time=0.056 ms 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=2 ttl=64 time=0.083 ms 64 bytes from fe80::a00:27ff:feb1:f397: icmp_seq=2 ttl=64 time=4.55 ms (DUP!) 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=3 ttl=64 time=0.078 ms 64 bytes from fe80::a00:27ff:feb1:f397: icmp_seq=3 ttl=64 time=0.368 ms (DUP!) ^C ff02::1%eth0 ping statistics 3 packets transmitted, 3 received, +2 duplicates, 0% packet loss, time 10005ms rtt min/avg/max/mdev = 0.056/1.027/4.551/1.765 ms viheik@viheik laptop:~$ STP:n yli puoli minuuttia kestävä toipuminen on jossain tapauksissa liian pitkä aika, ja tästä syystä on kehitetty RSTP. Tällä protokollalla kytkimien väliset vikatilanteet korjautuvat noin viidessä sekunnissa, mikä on huikea parannus STP:n vastaavaan toipumisaikaan. Huomion arvoinen asia on se, että kaikkien verkossa olevien kytkimien pitäisi tukea ja olla konfiguroituna käyttämään RSTP-protokollaa. Muuten hyviin toipumisaikoihin ei välttämättä päästä, sillä RSTP on yhteensopiva STP:n kanssa, ja näin linkkien yhteensovittaminen saattaa viedä taas sen reilun puoli minuuttia. Lisäksi kannattaa huomioida, että RSTP:n käyttöönotossa määritellään kahdenlaisia portteja. Ensimmäinen, joka on yleensä oletusporttina, kytketään muihin kytkimiin. Tätä porttia kutsutaan yleensä point-to-point -portiksi ja sen tarkoitus on neuvotella nopeasti kytkimien välinen linkki kuntoon. Toista porttityyppiä kutsutaan yleensä edge-portiksi, ja sen tarkoitus on itse asiassa sama kuin PortFastin, eli edge-porttiin kytketään työasemia. Edge-portti yhdistää työaseman verkkoon huomattavasti nopeammin kuin pointto-point -portti, koska point-to-point odottaa vastapuolen olevan RSTP-protokollaa tukeva laite ja näin vastaavan portin liikenteeseen. Jos näin ei käy, portti nousee pystyyn perinteisen STP:n tavoin. Seuraavalla sivulla esimerkki RSTP:n toiminnasta.
Ensimmäiseksi STP on vaihdetty RSTP:hen. Tämän jälkeen on määritetty portit g1 ja g2 point-to-point -porteiksi eli ne kytketään kytkimiin. Loput portit on määritetty Port- Fast-rooliin, joka on kyseisen kytkinmallin tapa määritellä Edge-portti. configure KOLMONEN(config)# spanning tree mode rstp KOLMONEN(config)# interface range ethernet g(1 2) KOLMONEN(config if)# spanning tree link type point to point KOLMONEN(config if)# exit KOLMONEN(config)# interface range ethernet g(3 8) KOLMONEN(config if)# spanning tree portfast KOLMONEN(config if)# exit KOLMONEN(config)# exit show spanning tree Spanning tree enabled mode RSTP Root ID Priority 4096 Address 00:14:78:8f:48:32 Cost 4 Port g1 Bridge ID Priority 32768 Address 00:14:78:8e:c1:47 Number of topology changes 23 last change occurred 00:00:15 ago enabled 128.1 4 FRW Root No P2p (RSTP) g2 enabled 128.2 4 BLK Altn No P2p (RSTP) g3 enabled 128.3 4 FRW Desg Yes P2p (RSTP) g4 enabled 128.4 100 DSBL Dsbl Yes P2p (STP) g5 enabled 128.5 100 DSBL Dsbl Yes P2p (STP) g6 enabled 128.6 100 DSBL Dsbl Yes P2p (STP) g7 enabled 128.7 100 DSBL Dsbl Yes P2p (STP) g8 enabled 128.8 100 DSBL Dsbl Yes P2p (STP) g9 enabled 128.9 100 DSBL Dsbl No P2p (STP) ch1 enabled 128.53 4 DSBL Dsbl No P2p (STP) ch2 enabled 128.54 4 DSBL Dsbl No P2p (STP) ch3 enabled 128.55 4 DSBL Dsbl No P2p (STP) ch4 enabled 128.56 4 DSBL Dsbl No P2p (STP) ch5 enabled 128.57 4 DSBL Dsbl No P2p (STP) ch6 enabled 128.58 4 DSBL Dsbl No P2p (STP) ch7 enabled 128.59 4 DSBL Dsbl No P2p (STP) ch8 enabled 128.60 4 DSBL Dsbl No P2p (STP) Muutoksien jälkeen ympäristöä on testattu ja lopputulos voidaan nähdä alla. Kytkimien välisiä yhteyksiä voidaan irrotella ja yhdistellä vapaasti ja yhteys pysyy hyvänä. Työaseman verkkokaapelia voidaan irrottaa ja yhdistää, eikä häiritseviä puolen minuutin katkoja esiinny. viheik@viheik laptop:~$ ping6 i 5 ff02::1%eth0 PING ff02::1%eth0(ff02::1) 56 data bytes 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=1 ttl=64 time=0.066 ms 64 bytes from fe80::a00:27ff:feb1:f397: icmp_seq=1 ttl=64 time=0.403 ms (DUP!) 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=2 ttl=64 time=0.080 ms 64 bytes from fe80::a00:27ff:feb1:f397: icmp_seq=2 ttl=64 time=0.420 ms (DUP!) 64 bytes from fe80::21e:33ff:fee1:745a: icmp_seq=3 ttl=64 time=0.092 ms 64 bytes from fe80::a00:27ff:feb1:f397: icmp_seq=3 ttl=64 time=0.476 ms (DUP!) ^C ff02::1%eth0 ping statistics 3 packets transmitted, 3 received, +3 duplicates, 0% packet loss, time 9998ms rtt min/avg/max/mdev = 0.066/0.256/0.476/0.178 ms viheik@viheik laptop:~$
Viimeisenä loppusilauksena määritellään työasemien portit sellaiseksi, ettei ne voi olla portteja, johon koko kytkimen liikenne ohjataan. Tämä itse asiassa koskee molempia eli STP:tä ja RSTP:tä, mutta tuodaan esille vasta tässä kohtaa. Eli jos ennen alla olevaa muutosta portteihin g3-g8 kytketään kytkin, jonka prioriteetti on pienempi kuin 4096, liikenne voidaan ohjata kyseisen portin kautta. Näin tilanne ei voi olla, joten asetetaan tätä asiaa vastaan suojaus päälle. Tämä tapahtuu alla olevan mukaisesti. configure KOLMONEN(config)# interface range ethernet g(3 8) KOLMONEN(config if)# spanning tree guard root KOLMONEN(config if)# exit KOLMONEN(config)# exit show spanning tree ethernet g4 Port g4 enabled State: disabled Role: disabled Port id: 128.4 Port cost: 100 Type: P2p (configured: P2p) STP Port Fast: Yes (configured:yes) Designated bridge Priority : 32768 Address: 00:14:78:8e:c1:47 Designated port id: 128.4 Designated path cost: 0 Guard root: Enabled Number of transitions to forwarding state: 0 BPDU: sent 0, received 0