ทำความรู้จัก Spanning Tree ตอนที่ 4

STP



ทำความรู้จัก-Spanning-Tree-ตอนที่-4

    สวัสดีครับ ในตอนที่ 4 นี้ผมจะมาอธิบายถึง protocol ที่เข้ามาแก้ไขปัญหาของ STP ที่ใช้ระยะในการประมวลผลเป็นเวลานานเพื่อที่จะให้สวิตซ์สามารถรับส่งข้อมูลให้ผู้ใช้งานได้นั่นก็คือ protocol RSTP ที่ถูกกำหนดขึ้นตามมาตรฐาน IEEE 802.1W ซึ่งใช้พื้นฐานของ STP มาพัฒนาต่อยอดเพื่อแก้ไขข้อบกพร่องของ STP ที่พบว่า

1. STP จะต้องรอจนครบเวลาก่อนที่จะตัดสินว่ามีการเปลี่ยนแปลงของ topology ซึ่งทำให้ทั้งเครือข่ายมีการทำงานช้าไปด้วย

2. STP จะต้องอาศัย Root Bridge ในการส่ง configuration BPDU หลังจากที่สวิตซ์ทุกตัวคำนวน STP เสร็จสิ้นและจะใช้สวิตซ์ที่เป็น non Root Bridge ในการกระจาย configuration BPDU ไปให้ทั่วทั้งเครือข่าย

    อีกประการหนึ่งของปัญหาที่เจอใน STP คือในมุมของผู้ใช้ไม่สามารถแยกแยะความต่างของสถานะพอร์ตในแต่ละstateได้ เช่น พอร์ตที่เปลี่ยนสถานะจาก blocking -> listening -> learning ซึ่งทั้ง 3 สถานะนั้นในมุมของผู้ใช้คือเป็นสถานะที่ไม่สามารถรับส่งข้อมูลให้ผู้ใช้ได้ ซึ่งสิ่งที่ใช้แยกความต่างของ STP กลับเป็น port role นั่นคือ root port,designated portและblocked port

    สิ่งที่ RSTP ได้แก้ไขนั่นก็คือ

1. กำหนดพอร์ต role ขึ้นมาใหม่ได้แก่ aternated port เป็นพอร์ตที่ไว้สำรองเมื่อ root port ไม่สามารถใช้งานได้ และ backup port ที่ไว้เป็นพอร์ตสำรองของ designated port

2. RSTP มีวิธีการประมวลผล configuration BPDU ที่ต่างกับ STP คือ RSTP ให้ non Root Bridge สามารถส่ง configuration BPDU ของตัวเองได้ถึงแม้ว่าจะคำนวน topology เสร็จสิ้นแล้วก็ตาม

3. RSTP กำหนดค่า time out ที่สั้นกว่าเดิมเมื่อพอร์ตของสวิตซ์ไม่ได้รับ configuration BPDU จากสวิตซ์ที่เป็นอัพลิ้งค์สวิตซ์

4. RSTP มีวิธีการจัดการ configuration BPDU ที่รวดเร็ว เช่น ถ้ารับ configuration BPDU มาจากอัพลิ้งค์สวิตซ์และมีค่าด้อยกว่าของตนจะกำจัด configuration BPDU นั้นทิ้งและตอบกลับไปยังอัพลิ้งค์สวิตซ์ด้วย configuration BPDU ของตัวเอง หลังจากที่อัพลิ้งค์สวิตซ์รับ configuration BPDU ที่ดีกว่าของตนเข้ามาก็จะใช้อันที่ดีกว่ามาแทนที่ของเดิม

    มาดูพอร์ต role ของ RSTP กันครับ

1. root port อันนี้เหมือนกันกับของ STP และมีวิธีการคัดเลือกที่เหมือนกัน

2. designated port อันนี้ก็เหมือนกันกับ STP อีกและวิธีการกำหนดว่าพอร์ตไหนเป็น designated port ก็เหมือนกัน

3. alternated port อันนี้จะเป็นพอร์ต role ที่เพิ่มเข้ามาใหม่ทำหน้าเป็นพอร์ตสำรองของ root port แปลว่าถ้าพอร์ตที่เป็น root port เกิด fail ขึ้นมา alternated port ก็จะ active ขึ้นมาแทนนั่นเองโดยที่ไม่ต้องคำนวน topology ใหม่ ในสถานะการทำงานปกติของ alternated port จะเป็น discarding คือไม่ส่งต่อข้อมูลให้ผู้ใช้

4. backup port อันนี้ก็เป็นพอร์ตที่เพิ่มเข้ามาใหม่เช่นกัน ทำหน้าที่เป็นพอร์ตสำรองของ designated port และมักถูกใช้กับพอร์ตที่ต่อกับสวิตซ์ที่เป็นunmanageที่นำมาต่อเข้ากับสวิตซ์ที่manageได้ สถานะการทำงานปกติของ backup port จะเป็น discarding คือไม่ส่งต่อข้อมูลให้ผู้ใช้เช่นกัน

    พอร์ต state หรือสถานะพอร์ตของ RSTP ก็เปลี่ยนไปเช่นกันครับดังนี้

1. forwarding อันนี้ก็เหมือนกันกับ STP คือเป็นพอร์ตที่มีการรับส่งข้อมูลให้ผู้ใช้ได้ตามปกติ

2. learning อันนี้ก็เหมือนกับ STP เช่นกันคือเป็นขึ้นตอนที่สวิตซ์ใช้สร้าง MAC Address table

3. discarding ถ้าเป็น STP จะเป็น blocking พอร์ตที่อยู่ในสถานะนี้จะไม่รับหรือส่งข้อมูลให้ผู้ใช้

สถานะที่หายไปนั่นคือ listening state สาเหตุนี้นี่เองครับที่เป็นส่วนนึงที่ทำให้ RSTP ทำงานได้เร็วขึ้น ถ้าเราจำได้ listening ใช้เวลาถึง 15 วินาทีถึงจะเปลี่ยนไปยัง learning state ในการทำงานของ STP

ปัจจัยที่ทำให้ RSTP ทำงานได้รวดเร็วเมื่อมีการเปลี่ยนแปลงของ Topology

    RSTP รู้ได้อย่างไรว่ามีการเปลี่ยนแปลงของ topology วิธีการก็คือเมื่อพอร์ตที่ไม่ได้เป็น edge port คือไม่ได้ต่อกับอุปกรณ์ของผู้ใช้ และพอร์ตนั้นเปลี่ยนสถานะเป็น forwarding เช่น อยู่ดีๆก็นำสวิตซ์มาต่อเพิ่มกับพอร์ตที่ไม่ได้ใช้งานและอยู่ในสถานะ discarding เมื่อสวิตซ์รู้ว่ามีการเปลี่ยนแปลงของ topology จะตอบสนองโดยเริ่มกระบวนการตั้งค่านาฬิกาจับเวลากำหนดเวลาที่ 2 เท่าของค่าhello interval ซึ่งจะเท่ากับ 4 วินาที และขณะเดียวกันจะเรียนรู้ MAC Address จากพอร์ตที่มีการเปลี่ยนแปลงของสถานะ และพอร์ตนั้นๆจะส่ง configuration BPDU โดยที่จะเซ็ตบิต TC เป็น 1 จนครบเวลา 4 วินาทีและก็จะหยุดการส่ง configuration BPDU ลง

    จากนั้นสวิตซ์ตัวอื่นๆที่ได้รับ configuration BPDU ที่บิต TC ถูกเซ็ตเป็น 1 ก็จะทำการล้างค่า MAC Address table ของตัวเองที่ได้เรียนรู้มาจากพอร์ตอื่นๆยกเว้น MAC Address ที่เรียนรู้จากพอร์ตเดียวกันกับที่รับ configuration เข้ามา จากนั้นก็จะทำซ้ำในกระบวนการก่อนหน้าคือตั้งค่าเวลา แล้วส่งconfiguration BPDU ออกทางพอร์ตที่ไม่ใช่edgeพอร์ต เมื่อสวิตซ์ตัวอื่นทำแบบนี้ไปเรื่อยๆ Configuration BPDU ก็จะถูกส่งไปทั่วทั้งเครือข่าย

กระบวนการที่ RSTP ใช้เพื่อย่นระยะเวลาในการเปลี่ยนสถานะพอร์ต

1.กระบวนการที่เรียกว่า กระบวนการข้อเสนอและข้อตกลง ซึ่งจะทำให้พอร์ตที่ต้องเป็น designated port สามารถเข้าสู่สถานะ forwarding ได้เร็วขึ้นมีขั้นตอนดังนี้

1.1 ระหว่างพอร์ตของสวิตซ์ที่ส่ง configuration BPDU สวิตซ์ตัวใดมีค่า configuration BPDU ด้อยกว่าก็ให้กำหนดพอร์ตของสวิตซ์ตัวนั้นเป็น root port และให้หยุดส่ง configuration BPDU

1.2 พอร์ตของสวิตซ์ที่มีค่า configuration BPDU ที่ดีกว่าจะเปลี่ยนสถานะเป็น discarding ก่อนชั่วคราวและเซ็ตค่าบิต A และ P ในconfiguration BPDU เป็น 1 

1.3 เมื่อสวิตซ์รับ configuration BPDU ที่มีบิต P เป็น 1 ก็ให้บล็อกพอร์ตที่ไม่ใช่edgeพอร์ตไว้ชั่วคราวและเซ็ตบิตsyncในconfiguration BPDUของทุกพอร์ตเป็น 1

1.4 ถ้าสวิตซ์ตัวนั้นมีพอร์ตที่เป็น designated port พอร์ตนั้นก็จะถูกบล็อกตามในขั้นตอนที่1.3

1.5 เมื่อเซ็ตบิตsyncเป็น1 และพอร์ตที่เป็น designated port เปลี่ยนเป็นสถานะdiscardingแล้ว สวิตซ์ก็จะเปลี่ยนพอร์ต designated ที่ต่อกับสวิตซ์อัพลิ้งค์เป็นสถานะforwardingแล้วเซ็ตบิต A เป็น 1 แล้วส่ง configuration BPDU กลับไปให้สวิตซ์อัพลิ้งค์

1.6 เมื่อสวิตซ์อัพลิงค์รับ configuration BPDU ที่บิต A มีค่าเป็น 1 ก็รู้ได้ทันทีว่าเป็นการส่งตอบกลับมาจากการส่ง configuration BPDU ในขั้นตอนที่ 1.2 และทำการเปลี่ยนสถานะของ designated port เป็น forwarding ในทันที

รูปแบบ frame ข้อมูลของ configuration BPDU ที่ใช้งานใน RSTP เปรียบเทียบกับ STP ก็จะเป็นแบบในรูปด้านล่างครับ

RSTP มีกระบวนการเพื่อรักษาความเสถียรของเครือข่ายดังนี้ครับ

1. ในการใช้งานปกติแล้ว edge port จะใช้ต่อกับอุปกรณ์ผู้ใช้ นั่นแปลว่าไม่จำเป็นที่จะต้องประมวลผล configuration BPDU แต่อย่างใด ดังนั้น RSTP จะมีการเปิดการใช้งานป้องกันการส่ง configuration BPDU เข้าสู่พอร์ตที่เป็น edge port หากเมื่อไหร่ที่ตรวจเจอก็จะเปลี่ยนสถานะของ edge port จาก forwarding เป็นสถานะ Error-Disable

2. ในกรณีที่ Root Bridge รับค่า configuration BPDU ที่ดีกว่าเนื่องมาจากการตั้งค่าที่ผิดพลาดหรือการโจมตีระบบจากผู้ไม่หวังดี เมื่อเกิดเหตุการณ์ดังนี้ Root Bridge ก็จะถูกเปลี่ยนตำแหน่งทำให้ topology ของระบบเปลี่ยนไป อาจจะส่งผลต่อการรับส่งข้อมูลผ่านลิ้งค์ที่มีความเร็วต่ำแทน ทำให้ประสิทธิภาพของระบบเครือข่ายแย่ลงหรืออาจจะใช้งานไม่ได้เลยทั้งระบบ เพื่อแก้ไขปัญหานี้เราจะตั้งค่าเพื่อป้องกัน Root Bridge บนพอร์ตที่มี role เป็น designated port เพื่อไม่ให้เปลี่ยนไปเป็น root port เมื่อพอร์ตที่เป็น designated port รับ configuration BPDU ที่มีค่าดีกว่า configuration BPDU ของ Root Bridge เดิม พอร์ตจะเปลี่ยนสถานะเป็น Discarding และจะไม่ส่งต่อ configuration BPDU ที่รับเข้ามานั้น และถ้า configuration BPDU ที่ส่งเข้ามานั้นหยุดการส่งไปซักระยะนึง พอร์ต designated ก็จะเปลี่ยนสถานะกลับเป็น forwarding ได้เอง ทำให้สามารถรับส่งข้อมูลให้ผู้ใช้ได้ต่อ

3. กระบวนการรักษาความเสถียรของเครือข่ายของ RSTP ยังมีอีกนะครับนอกจาก 2 ข้อด้านบนแต่ขอละไว้ก่อนนะครับ เนื่องจากรายละเอียดค่อนข้างเยอะและทำความเข้าใจได้ค่อนข้างยาก

สำหรับบทความในตอนที่ 4 คงต้องขอตัดจบไว้เพียงเท่านั้นนี้ครับ จะเห็นได้ว่า RSTP มีการปรับปรุงการทำงานจาก STP ไปค่อนข้างเยอะถึงแม้จะยังใช้พื้นฐานการทำงานของ STP อยู่เช่นวิธีการเลือก Root Bridge วิธีการหา Root port ของ non Root Bridge และการกำหนด alternated port ที่เข้ามาแทนที่ blocked port ที่เคยใช้บน STP จะยังคงเดิม และมีการเพิ่ม Backup port เข้ามารวมถึง Edge port ที่ไว้สำหรับต่อกับอุปกรณ์ผู้ใช้ รวมถึงวิธีการเพื่อลดระยะเวลาของ designated port ในการเปลี่ยนสถานะเป็น forwarding state และในตอนท้ายของบทความก็เป็นตัวอย่างวิธีที่ RSTP ใช้เพื่อรักษาความสเถียรของเครือข่ายและลดโอกาสการโจมตีระบบจากผู้ไม่หวังดี ในตอนหน้าจะเป็นตอนสุดท้ายของบทความทำความรู้จัก STP เราจะไปดูวิธีการตั้งค่าบนอุปกรณ์สวิตซ์เพื่อใช้งาน RSTP กันครับ


By : อรรถกร ทองคำชุม

โปรไฟล์ Blog โปรไฟล์ E-portfolio

หมวดหมู่ : เทคโนโลยี

ผู้เข้าชม 1986 ครั้ง 2022-10-02 11:42:54

Comment แสดงความคิดเห็น