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

STP



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

    สวัสดีครับผู้อ่านทุกท่าน มาต่อกันตอนที่ 2 ครับ ในตอนที่ 1 ผมได้เกริ่นเกี่ยวกับการทำงานของสวิตซ์ไปแล้ว จะเห็นว่าเมื่อมีการสร้างเส้นทางสำรองในการส่งข้อมูลระหว่างตัวสวิตซ์ไว้นั้นเผื่อในกรณีเกิดเหตุการณ์สายสัญญาณเส้นหลักเสียหาย เราก็จะได้ใช้เส้นทางสำรองในการส่งข้อมูลให้เราได้อย่างต่อเนื่อง แต่การสร้างเส้นทางสำรองนั้นมีปัญหาที่ตามมาคือการส่งข้อมูลไปมาระหว่างอุปกรณ์จนเกิดเป็นลูปข้อมูลที่ไม่มีที่สิ้นสุดจนทำให้อุปกรณ์ไม่สามารถทำงานต่อได้

    ในปีคศ.1985 คุณ Radia Perlman โปรแกรมเมอร์และวิศวกรเครือข่ายชาวอเมริกันได้คิดค้นอัลกอริทึมการทำงานของ spanning tree แต่ยังไม่ได้นำมาปรับใช้กับอุปกรณ์สวิตซ์ จวบจนปี 1990 ทาง IEEE ได้ประกาศมาตรฐาน 802.1D spanning tree protocol โดยพัฒนาต่อยอดจากอัลกอริทึมที่คุณ Radia Perlman ได้คิดค้นไว้แล้วนั้น และนำมาปรับใช้กับอุปกรณ์บริดจ์(ตอนนั้นยังมีเพียงแค่บริดจ์ ซึ่งยังไม่ฉลาดเท่าสวิตซ์ในปัจจุบัน) และในปีต่อๆมา คศ. 2001 IEEE ได้ประกาศมาตรฐาน 802.1w Rapid Spanning Tree Protocol (RSTP) ซึ่งเป็นการปรับปรุงการทำงานของ 802.1D ให้ทำงานได้เร็วขึ้น

    หลังจากที่ทราบประวัติของ spanning tree protocol ไปพอสังเขปแล้วสำหรับในตอนนี้ผมจะมาอธิบายขั้นตอนการทำงานของ STP เพื่อแก้ไขปัญหาลูปที่เกิดขึ้นในระบบ มาเริ่มกันเลยครับ วิธีการแก้ปัญหาของลูปในระบบง่ายมากครับ คือปิดเส้นทางสำรองไว้ก่อน แค่นี้ก็ไม่เกิดลูปแล้วใช่มั้ยครับ ทุกท่านอาจจะงงว่า อ้าวแล้วจะสร้างเส้นทางสำรองมาเพื่อ? ถ้าเหลือไว้ใช้งานจริงแค่เส้นทางเดียว ผมขออธิบายต่อแบบนี้ครับ หลังจากที่ปิดเส้นทางสำรองไว้ ถ้าเมื่อไหร่เส้นทางหลักเกิดเสียหาย อุปกรณ์ก็จะเปิดใช้เส้นทางสำรองขึ้นมาโดยอัตโนมัติ ซึ่ง STP ก็จะเข้ามาช่วยเราในการเลือกเส้นทางที่จะปิดไว้ก่อนแล้วเปิดขึ้นมาใช้งานหลังจากเส้นทางหลักไม่สามารถใช้งานได้ STP จะมีวิธีการทำงานดังนี้ครับ

    1. STP จะเลือก root bridge ขึ้นมาก่อนซึ่งใน 1 STP ที่ประกอบไปด้วยสวิตซ์หลายๆตัว จะมี root bidge ได้แค่ 1 ตัวเท่านั้น โดยหลักการเลือก root bridge จะเลือกอุปกรณ์ที่ค่า bridge ID ต่ำที่สุด ซึ่ง bridge ID เป็นฟิลด์ข้อมูลขนาด 64 bits ประกอบด้วย

ค่า root bridge priority ใน VLAN เดียวกัน(ตอนนี้ให้กำหนดมีเพียงแค่ 1 VLAN ก่อนนะครับ เนื่องจากก่อนหน้านี้ผมยังไม่ได้อธิบายว่า VLAN คืออะไร โดยปกติสวิตซ์จะมี VLAN 1 เป็นค่าที่มาจากโรงงาน ดังนั้นเราจะใช้ VLAN นี้เพื่อคำนวน STP เพียง VLAN เดียวครับ) จะมีค่าเริ่มต้นคือ 32768 และเมื่อรวมกับ Root Bridge System ID Extension ที่มีค่าเป็น 1 (VLAN 1) จะเท่ากับ 32769 ดังนั้นสวิตซ์ที่เปิดกล่องขึ้นมาใช้งานครั้งแรกจะมีค่าเท่ากับ 32769 เหมือนกันทุกตัว เราก็จะไปพิจารณาค่า Root Bridge MAC Address ต่อ ซึ่งสวิตซ์ทุกตัวค่า MAC Address จะไม่ซ้ำกัน เราจะเลือกตัวที่มีค่า MAC Address น้อยที่สุดมาเป็น Root Bridge จากในรูปเราจะได้ Root Bridge คือสวิตซ์ SW1 นั่นเอง

2.เมื่อได้ Root Bridge แล้วเราจะมากำหนด port role ให้กับอุปกรณ์สวิตซ์ ซึ่งทุกพอร์ตของ Root Bridge จะทำหน้าที่เป็น Designeted port ทำหน้าที่ในการforwardข้อมูลผู้ใช้และ BPDU packet ที่ข้างในจะประกอบด้วยข้อมูลที่อธิบายไปในขั้นตอนที่ 1 ผมใช้ตัวย่อ Designeted port ว่า DP มี state ของพอร์ตเป็น Forwarding ตามรูป

3.สวิตซ์ที่เหลือคือ SW2,SW3 จะทำหน้าที่เป็น non Root Bridge เราจะต้องกำหนด root port ซึ่งทำหน้าที่เป็นพอร์ตที่ส่งข้อมูลไปยัง Root Bridge ซึ่งแต่ละ non Root Bridge จะมีได้แค่ 1 root port เท่านั้น หลักการเลือก root port คือต้องเป็นพอร์ตที่มีค่า root path cost ไปยัง Root Bridge ที่น้อยที่สุด ค่า root path cost จะคำนวนจาก Bandwidth ของลิ้งค์ ซึ่งดูได้จากตารางครับ

จากในรูป topology ของเราจะใช้ค่า path cost 802.1D สรุปได้ว่า

3.1 ลิ้งจาก SW2 port Gi0/1 ไป SW1 มีค่า root path costเท่ากับ 4 

3.2 ลิ้งจาก SW3 port Gi0/2 ไป SW1 มีค่า root path cost เท่ากับ 4

3.3 ลิ้งจาก SW2 port Gi0/3 ไป SW1 มีค่า root path cost เท่ากับ 4+4(ของSW3) = 8

3.4 ลิ้งจาก SW3 port Gi0/3 ไป SW1 มีค่า root path cost เท่ากับ 4+4(ของSW2) = 8

ดังนั้นแล้วเราจะได้พอร์ต Gi0/1 ของ SW2 เป็น root port และ Gi0/2 ของ SW3 เป็น root port มีสถานะเป็น forwarding ดังรูป


4. เราก็จะเหลือที่จะต้องกำหนด port role ของ SW2 พอร์ต Gi0/3 และพอร์ต Gi0/3 ของ SW3 โดยที่จะมีพอร์ตใดพอร์ตนึงทำหน้าที่เป็น designated port และอีกพอร์ตจะเป็น blocked port โดยมีหลักการพิจารณาดังนี้ ให้พิจารณา bridge ID ที่รับเข้ามา นำมาเปรียบเทียบกับ bridge ID ของตัวเอง ถ้า bridge ID ที่รับเข้ามามีค่ามากกว่า(ค่า MAC Address มากกว่า)ของตัวเองก็ให้พอร์ตนั้นทำหน้าที่เป็น designated port แต่ถ้า bridge ID ที่รับเข้ามามีค่าน้อยกว่า(ค่า MAC Address น้อยกว่า) bridge ID ของตัวเองก็ให้พอร์ตนั้นทำหน้าที่เป็น blocked port ทีนี้เรามาดูในกรณีของเรากันครับ

4.1 ที่ SW2 พอร์ต Gi0/3 จะรับข้อมูล bridge ID ของ SW3 เข้ามา ซึ่งค่า bridge ID ของ SW2 มีค่าน้อยกว่า bridge ID ของ SW3 ดังนั้นพอร์ต Gi0/3 จะทำหน้าที่เป็น designated port มีสถานะพอร์ตเป็น forwarding

4.2 ที่ SW3 พอร์ต Gi0/3 จะรับข้อมูล bridge ID ของ SW2 เข้ามา ซึ่งค่า bridge ID ของ SW3 มีค่ามากกว่า bridge ID ของ SW2 ดังนั้นพอร์ต Gi0/3 จะทำหน้าที่เป็น blocked port มีสถานะพอร์ตเป็น discarding

5. พอร์ต Gi0/10 ของ SW2,3 ซึ่งต่ออยู่กับอุปกรณ์ end device ซึ่งจะไม่เข้ามามีส่วนร่วมในการคำนวน STP ดังนั้นพอร์ตเหล่านี้ก็จะเป็น designated port มีสถานะเป็น forwarding โดยอัตโนมัติ

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

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

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

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

ผู้เข้าชม 11008 ครั้ง 2022-09-28 03:03:25

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