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

Spanning Tree Protocol



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

   สวัสดีครับผู้อ่านทุกท่าน วันนี้ผมจะพาไปทำความรู้จักกับ Spanning Tree Protocol หรือ STP ซึ่งต่อไปผมจะเรียกย่อๆว่า STP ก็แล้วกันครับ ก่อนจะไปทำความรู้จักกับ STP ผมขออธิบายการทำงานของอุปกรณ์สวิตซ์ก่อนเผื่อสำหรับท่านที่ยังไม่คุ้นเคยกับอุปกรณ์ประเภทนี้จะได้มีความเข้าใจในการทำงานเบื้องต้น

    อุปกรณ์สวิตซ์จะรับส่งข้อมูลโดยอาศัย MAC Address table ซึ่งเป็นตารางที่บอกว่าแต่ละพอร์ตของสวิตซ์เชื่อมต่อกับอุปกรณ์ใดอยู่บ้าง ขอใช้รูปด้านล่างเพื่ออธิบายให้เห็นภาพครับ


MAC Address คือหมายเลขที่อยู่ทางกายภาพของอุปกรณ์ที่ถูกกำหนดมาจากโรงงานผู้ผลิตซึ่งไม่สามารถแก้ไขได้ครับ(แต่จริงๆก็แก้ไขได้แหละครับแต่เป็นการกระทำที่ไม่เหมาะ) และอุปกรณ์แต่ละตัวจะมีหมายเลข MAC Address ที่ไม่ซ้ำกัน

เมื่ออุปกรณ์ Client 1 ที่มี MAC Address เป็น aa:aa:aa:aa:aa:aa จะส่งข้อมูลไปให้ Client 3 ที่มี MAC Address เป็น cc:cc:cc:cc:cc:cc อุปกรณ์สวิตซ์จะตรวจสอบ MAC Address table เพื่อดูว่า Client 3 ต่ออยู่กับพอร์ตไหน จากในตารางจะเห็นว่าเป็นพอร์ต Gi0/3 จากนั้นสวิตซ์ก็จะส่งข้อมูลไปให้ Client 3 ทางพอร์ต Gi0/3 และเมื่อ Client 3 ต้องการตอบกลับไปยัง Client 1 สวิตซ์ก็จะส่งต่อข้อมูลไปให้ Client 1 ทางพอร์ต Gi0/1 ซึ่งก็ดูเป็นการทำงานที่ไม่ได้ซับซ้อนอะไรใช่มั้ยครับ

ก่อนที่สวิตซ์จะมี MAC Address table แบบในรูปนั้น สวิตซ์จะมีกระบวนการเรียนรู้เพื่อสร้าง MAC Address table ทีนี้มาดูขั้นตอนการสร้าง MAC Address table กันครับ ซึ่งมีการทำงานดังนี้

1.เมื่อสวิตซ์รับข้อมูลจาก Client สวิตซ์จะทำการบันทึกข้อมูล MAC address จากฟิลด์ข้อมูล source MAC address ไว้ เช่น Client 1 ต้องการส่งข้อมูลไปยัง Client 2 เมื่อ Client 1 ส่งข้อมูลไปยังสวิตซ์จะถูกบันทึกข้อมูลไว้ดังนี้ 


2.จากนั้นสวิตซ์จะตรวจสอบ destiantion MAC address ซึ่งก็คือ Client 2 ว่าต่ออยู่กับพอร์ตไหน แต่จากตารางยังไม่มีข้อมูลของ Client 2 ดังนั้นสวิตซ์จึงเลือกวิธีการฟลัดข้อมูลออกไปทุกพอร์ตยกเว้นพอร์ต Gi0/1 ที่รับข้อมูลเข้ามา
3.Client 2,3,4 จะได้รับข้อมูลที่สวิตซ์ แต่จะมีเพียง Client 2 เท่านั้นที่จะประมวลผลข้อมูลต่อ ส่วน Client 3,4 จะดรอปข้อมูลนั้นทิ้ง
4.Client 2 จะตอบกลับข้อมูลไปยัง Client 1 เมื่อข้อมูลส่งมาถึงสวิตซ์ สวิตซ์จะตรวจสอบ source MAC address และทำการบันทึกข้อมูลลงใน MAC address table ดังนี้
5.เมื่อสวิตซ์ตรวจสอบ destination MAC address ซึ่งก็คือ Client 1 สวิตซ์จะรู้ได้ทันทีจาก MAC address table ว่าต่ออยู่กับพอร์ต Gi0/1
6.การเรียนรู้ MAC address ของ Client ที่เหลือก็จะใช้วิธีการในลักษณะเดียวกันครับ

ทีนี้มาดูการเชื่อมต่อของสวิตซ์ที่มันซับซ้อนขึ้นดังรูปด้านล่างนี้
จากในรูปถ้าต้องการส่งข้อมูลจาก Client 1 ไป Client 2 สามารถส่งข้อมูลได้สองเส้นทางดังนี้
1. Client 1 -> SW1 -> SW2 -> Client 2
2. Client 1 -> SW1 -> SW3 -> SW2 -> Client 3
สงสัยมั้ยครับว่าทำไมเราต้องมีวิธีที่ 2 ด้วยในเมื่อวิธีที่ 1 น่าจะมีการส่งข้อมูลได้เร็วกว่าเพราะส่งผ่านอุปกรณ์สวิตซ์เพียงแค่ 2 ตัว แต่ลองนึกถึงเหตุการณ์ที่ลิ้งค์ระหว่าง SW1 กับ SW2 เสียหาย ถ้าเป็นแบบนี้เราก็ไม่สามารถส่งข้อมูลไปยัง Client 2 ได้ จึงได้มีการสร้างเส้นทางสำรองตามวิธีที่ 2 
ดูเหมือนทุกอย่างจะไปได้สวยใช่มั้ยครับ แต่เราลองย้อนกลับไปดูขั้นตอนการเรียนรู้ MAC address เพื่อสร้าง MAC address table กันดูครับว่ามันเกิดปัญหาอะไรขึ้นบ้าง

1. เริ่มจาก Client 1 ส่งข้อมูลไปยัง SW1 เพื่อส่งต่อข้อมูลไปยัง Client 2 ที่ SW1 ยังไม่มีข้อมูล MAC address table ก็จะทำการบันทึกไว้ว่า Client 1 ต่ออยู่กับพอร์ต Gi0/10
2. จากนั้นสวิตซ์ SW1 จะฟลัดข้อมูลออกไปทางพอร์ต Gi0/1 และ Gi0/2

2.1 ที่สวิตซ์ SW2 เมื่อรับข้อมูลเข้ามาจากขั้นตอนที่ 2 จะบันทึก MAC address table ของ Client 1 ไว้ และเนื่องจากยังไม่มีข้อมูล MAC address ของ Client 2 ใน MAC address table  SW2 ก็จะฟลัดข้อมูลต่อไปทางพอร์ต Gi0/3 และ Gi0/10

2.2 ที่สวิตซ์ SW3 เมื่อรับข้อมูลเข้ามาจากขั้นตอนที่ 2 จะบันทึก MAC address table ของ Client 1 ไว้ และเนื่องจากยังไม่มีข้อมูล MAC address ของ Client 2 ใน MAC address table  SW3 ก็จะฟลัดข้อมูลต่อไปทางพอร์ต Gi0/3 และ Gi0/10
3. ที่สวิตซ์ SW2 ซึ่งได้รับข้อมูลจาก SW3 ในขั้นตอน 2.2 ทางพอร์ต Gi0/3 ก็จะบันทึกข้อมูลว่า Client 1 ต่ออยู่กับพอร์ต Gi0/3 ซึ่งก่อนหน้านั้นในขั้นตอน 2.1 ได้บันทึกไว้ว่าต่ออยู่ที่พอร์ต Gi0/1 และจะฟลัดข้อมูลออกทางพอร์ต Gi0/1 และ Gi0/10 ที่ยังต้องฟลัดอยู่ก็เพราะยังไม่มีข้อมูลว่า Clinet 2 ต่ออยู่ที่พอร์ต Gi0/10 เริ่มเห็นความสับสนแล้วใช่มั้ยครับ สรุป Client 1 ต่ออยู่ที่พอร์ตไหนของ SW 2 กันแน่

3.1 จากนั้น SW1 ก็จะรับข้อมูลจาก SW2 ว่า Client 1 ต่ออยู่ที่พอร์ต Gi0/1 ซึ่งจริงๆแล้วต่ออยู่ที่พอร์ต Gi0/10 จากนั้นก็จะฟลัดข้อมูลต่อออกไปทาง Gi0/2 และ Gi0/10
3.2 SW3 เมื่อได้รับข้อมูลก็จะฟลัดข้อมูลต่อไปให้ SW2

4 .ที่สวิตซ์ SW3 ซึ่งได้รับข้อมูลจาก SW2 ในขั้นตอน 2.1 ทางพอร์ต Gi0/3 ก็จะบันทึกข้อมูลว่า Client 1 ต่ออยู่กับพอร์ต Gi0/3 ซึ่งก่อนหน้านั้นในขั้นตอน 2.2 ได้บันทึกไว้ว่าต่ออยู่ที่พอร์ต Gi0/2 และทำการฟลัดข้อมูลออกไปทาง Gi0/2 และ Gi0/10 SW3 ก็เริ่มงงๆอีกเช่นกันว่า Client 1 ต่ออยู่พอร์ตไหนกันแน่

4.1 จากนั้น SW1 ก็จะรับข้อมูลจาก SW3 ว่า Client 1 ต่ออยู่ที่พอร์ต Gi0/2 ซึ่งจริงๆแล้วต่ออยู่ที่พอร์ต Gi0/10 จากนั้นก็จะฟลัดข้อมูลต่อออกไปทาง Gi0/1 และ Gi0/10
4.2 SW2 เมื่อได้รับข้อมูลก็จะฟลัดข้อมูลต่อไปให้ SW3

การส่งข้อมูลของสวิตซ์ทั้ง 3 ตัวจะส่งข้อมูลซ้ำไปซ้ำมาในระบบจนเกิดเป็นลูปขึ้น ทำให้เกิดปัญหาเรียกว่า Broadcast storm และท้ายที่สุดแล้วจะทำให้เกิดข้อมูลขึ้นในระบบอย่างมหาศาลจากข้อมูลที่ส่งจาก Client 1 ไปหา Client 2 เพียงแพ็กเกตเดียว และยังเกิดปัญหาการอัพเดตข้อมูลใน MAC address table แบบไม่มีวันสิ้นสุด ซึ่งเรียกว่า MAC table instability ซึ่งปัญหาที่ว่ามานี้จะทำให้ทรัพยากรของสวิตซ์ เช่น หน่วยประมวลผล,RAM ต้องทำงานหนักและถูกใช้จนหมดสิ้นผลที่ตามมาคืออุปกรณ์ไม่สามารถทำงานได้และค้างไปในที่สุด จึงเป็นที่มาของการนำ STP มาใช้เพื่อแก้ปัญหาดังกล่าว ในตอนถัดไปผมจะมาอธิบายต่อว่า STP ทำงานอย่างไรถึงไม่ทำให้เกิดลูปขึ้นในระบบ


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

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

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

ผู้เข้าชม 3390 ครั้ง 2022-09-28 09:08:50

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