Spanning-Tree is No More
May 30, 2006Spanning-Tree Protocol (STP) adalah protokol yg digunakan untuk memastikan tidak adanya loop di suatu jaringan layer 2. Jika kita punya dua buah switch yg dihubungkan satu sama lain dengan dua kabel, jika tidak ada STP maka paket broadcast dari switch pertama akan dikirimkan ke switch yg kedua melalui dua link tersebut, dan oleh switch yg kedua paket broadcast tersebut akan dikirimkan kembali melalui dua link itu lagi. Ini yg disebut switching loop, dan paket broadcast akan membuat suatu kondisi loop yg disebut broadcast storm.
STP, yg sudah distandarkan menjadi IEEE 802.1D, menggunakan algoritma ciptaan Radia Perlman untuk memutuskan loop dgn cara membuat status dari salah satu port dari kedua link tsb menjadi blocking. Algoritma tsb membuat switching tree dgn salah satu switch sebagai akar (disebut root bridge), dan switch yg lain bisa terhubung ke root hanya dgn satu uplink. Semua alternatif link akan di block, sehingga kita seolah-olah membuat tree dgn cabang-cabang yg hanya memiliki satu link untuk menuju root. Semua komunikasi antar switch untuk memutuskan switch mana yg menjadi root bridge dan alternatif link mana yg harus di block menggunakan Bridge Protocol Data Unit (BPDU).
Kembali ke scenario di atas, dgn STP maka tidak akan terjadi loop karena satu link akan di block dan paket broadcast dari switch pertama akan dikirimkan ke switch yg kedua hanya melalui satu link.
Tapi tunggu dulu, sebenarnya buat apa di suatu jaringan kita menghubungkan dua switch dgn dua link?
Coba ambil kertas dan gambar topologi campus network dgn core, distribution dan access layer. Sangat umum di suatu jaringan campus seperti ini satu access switch dihubungkan ke dua distribution switch yg berbeda untuk alasan redundancy dan load balancing. Distribution switch biasanya dijadikan central dari VLAN database (disebut VTP server) dan gateway untuk semua user yg konek ke access switch tsb.
Jika kita konek ke access switch yg dihubungkan ke dua distribution switch, maka sekarang kita mempunyai dua gateway. Dgn topologi seperti ini kita membutuhkan satu protokol lain yg disebut Hot Standby Routing Protocol (HSRP). HSRP akan memutuskan distribution switch mana yg akan menjadi active gateway, dan distribution switch yg lain menjadi backup dan akan mengambil alih jika active gateway down. Nah, jika kita memiliki beberapa access switch yg dihubungkan ke dua distribution switch, dan kita memiliki satu VLAN yg tersebar di beberapa access switch, maka kita harus menghubungkan satu distribution switch dgn distribution switch yg lain menggunakan layer 2 link atau trunk. Sekarang kita memiliki switching loop antara: access switch – distribution switch 1 – distribution switch 2 – kembali ke access switch, dan disini STP diperlukan untuk memblock satu port untuk menghilangkan loop tsb. Yg bikin repot, untuk mengoptimalkan link yg digunakan, kita harus membuat si active gateway juga sebagai root bridge. Hal ini bisa dicapai dgn cara mengubah parameter prioritas si active gateway.
I hate Spanning-Tree Protocol. I really hate it.
Bukannya tanpa alasan. Gue sudah pernah melihat beberapa network customer gue melted down gara-gara STP loop. STP loop bukan berarti STP nya yg loop, tapi STP gagal berfungsi dan tidak berhasil mencegah broadcast storm yg terjadi gara-gara adanya loop. Protokol dan algoritmanya memang hebat, tapi STP bisa saja tidak memblock suatu alternatif link gara-gara beberapa alasan. Bisa jadi karena ada satu switch yg mengalami utilisasi CPU yg sangat tinggi dan tidak konsisten dalam mengkomunikasikan BPDU dgn switch lain. Bisa jadi juga karena di jaringan fiber yg menggunakan dua link untuk mengirim dan menerima paket, salah satu link rusak sehingga terjadi unidirectional fiber link. Switch yg satu menerima BPDU tapi tidak berhasil mengirimkan BPDU. Hal ini sebenernya sudah dicegah oleh vendor seperti Cisco Systems dgn menggunakan fitur Uni-Directional Link Detection (UDLD), tapi gue sempet menjadi saksi STP loop gara-gara hal ini. Hal serupa juga bisa terjadi jika beberapa access switch di stack, access switch yg berdekatan dihubungkan satu sama lain dgn kabel khusus untuk stack, dan terjadi masalah di kabel stack tersebut. Karena stack link ini menjadi bagian dari kalkulasi STP dan kemungkinan seharusnya di block juga.
Ada cara agar kita tidak perlu menghubungkan dua distribution switch dgn Layer 2 link. Cara yg pertama adalah dgn tidak memiliki VLAN yg sama di beberapa access switch yg berbeda. Karena jika kita memiliki satu VLAN tersebar di beberapa access switch, dan salah satu uplink dari satu access switch down, maka access switch tsb akan menggunakan alternatif link yg dihubungkan dgn distribution switch yg lain. Tapi karena tidak ada Layer 2 link antar distribution switches, dan active gateway masih ada di distribution switch yg lain, maka paket dari access switch ini tidak akan bisa mencapai gateway. Active gateway tidak akan berubah karena HSRP masih melihat ke dua distribution switch masih berfungsi, dan antara HSRP gateway masih bisa berkomunikasi melalui beberapa access switch yg lain.
Cara yg kedua adalah dgn menggunakan protokol baru pengganti HSRP yg disebut Gateway Load Balancing Protocol (GLBP). GLBP membuat ke dua distribution switch menjadi aktif, dgn cara memberi MAC address yg berbeda untuk satu virtual IP yg sama. Jadi semua user akan menggunakan satu virtual IP address sebagai gateway. Ketika user pertama harus me-resolve virtual IP address tsb, maka dia akan mendapat respon MAC address dari distribution switch yg pertama. User kedua akan mendapat respon MAC address dari distribution switch yg kedua, dan seterusnya.
GLBP is perfect. Sebagai network designer, hidup gue menjadi sangat indah karena gue bisa membuat design campus network yg redundant dan support load balancing, tanpa memerlukan Layer 2 link antara dua distribution switches. Cuman ada satu masalah kecil: karena gue sedang mengkampanyekan MPLS in the Enterprise, gue sangat sangat sangat kecewa ketika dapet berita dari Cisco bahwa:
MPLS doesn’t support GLBP! VRF is not aware of GLBP!
Why Cisco, why? Why you always want to make my life miserable?
Berita ini tidak tertulis di Cisco public website, cuman beberapa Cisco SE bilang ke gue: “Himawan, you have to trust us on this. If you want to deploy MPLS on distribution, and distribution switch is the gateway, you must use HSRP and not GLBP.”
Dengan informasi terbaru ini gue cuman punya dua pilihan:
Bertahan dgn distribution switch sebagai gateway dan menggunakan HSRP, tapi memastikan tidak ada VLAN yg sama di access switch yg berbeda. Dgn cara begini tidak ada layer 2 link antar distribution switch.
Pilihan ke-2, tentunya bertahan dgn layer 2 link antar distribution dan tetap menggunakan HSRP, dengan catatan gue harus meng set agar distribution switch yg menjadi active gateway sekaligus menjadi root bridge.
Gue terus terang gak suka cara ini karena gue harus tetap tergantung dgn STP. Meskipun sekarang sudah ada Rapid STP dgn standar IEEE 802.1W, tapi mekanisme kerjanya masih mirip. Hanya saja perubahan status port dari blocking ke forwarding, status port yg ready untuk men-forward traffic, menjadi jauh lebih cepat.
Jadi gue akan mencoba dgn pilihan ke-3 yg akan gue coba dalam waktu dekat: Routing sampai ke access switch. Dgn cara ini, access switch akan menjadi gateway buat semua VLAN dan users yg konek ke access switch tsb. Tiap access switch akan punya VLAN ID yg sama untuk tipe user yg similar, sehingga user yg konek ke access switch yg lain tetap memiliki VLAN ID yg sama walaupun akan berada di network yg berbeda. Ini tidak akan menjadi masalah asal semua access control list disesuaikan, sehingga users yg berada di VLAN ID yg sama bisa saling tetap berkomunikasi.
No STP, No HSRP. Routing rules.
Bagaimana dgn MPLS? Karena berbagai access switch sampai sekarang belum support MPLS, MPLS cloud tetap di mulai dari distribution switch. Tapi gue harus meng-extend VRF dari distribution ke access switch. Ada fitur di Cisco switch yg disebut VRF-lite, yg bisa mem-bind user VLAN di access switch dgn uplink ke distribution. Jadi tiap user VLAN akan memiliki dedicated uplink, dan uplink-uplink ini bisa langsung di associate ke VRF di distribution switch tergantung dari VPN masing-masing.
Ini pilihan seru. Gue belum nemu contoh skenario dari Cisco website. Hasrat gue untuk tidak menggunakan STP membuat gue akan mengambil pilihan ini. Yang jelas sekarang gue lagi mendesign satu Enterprise campus network yg akan gue bangun dgn cara ini. Kalo gagal, gue bisa fallback ke pilihan satu dan dua. Kalo berhasil, gue bakal menuliskan sejarah baru. Hmm, kayaknya enggak sih. Tapi paling tidak gue berhasil menyalurkan hasrat gue
I don’t live by the book. I want to write my own book.
Mas Himawan, saya kan baru belajar CCNA.. kira2 apa yang harus saya lakukan?? saya masih agak bingung. saya tertarik sekali dengan security. apakah saya musti punya lab juga spt mas Himawan..? Btw, saya suka bgt sama motivasinya mas Himawan. Mantap!!
Comment by Ghoz — May 30, 2006 @ 1:45 pm
Hima!
Gue baru aja dapat masalah ini kemarin…Stackable switch gue tewas, fiber link nya dishutdown sama core switch karena ada broadcast storm. I am thinking now about what you suggest as solution to tackle the looping issue, hehehe
Comment by wisnu — June 8, 2006 @ 5:18 am
Mas, Himawan
link antar gedung kami kemarin terputus….apakah mungkinkah karena spanning-tree….???,(kami menggunakan cisco 2950 antar gedung, converter FO allied telesys at-202 atau 232).
konfigurasi kami tidak bisa masuk karena di tutup oleh admin.
mohon saran.
Comment by gugah — March 28, 2008 @ 5:51 am