เกณฑ์วิธีต้นไม้แบบทอดข้าม

thumb|250x250px|จากรูปทำให้เกิด loop ถ้ามี Spanning tree มันจะส่ง BPDU คุยกันว่าใครอยู่ตรงไหนเสร็จแล้วก็จะ Block path ใด path หนึ่งเพื่อไม่ให้เกิด loop เช่น ถ้าเราปิด Segment ที่ 2 ไปถ้าเกิดว่าเส้นทางใดทางหนึ่งใช้ไม่ได้ Switch มันจะรู้ว่าเส้นทางนี้ใช้ไม่ได้ คือเส้นทางหลักใช้ไม่ได้ให้เปิด port สำรองขึ้นมาแทนแล้ว Block ตัวนี้แทน
**เกณฑ์วิธีต้นไม้แบบทอดข้าม** () หรือ **เอสทีพี** เป็นตัวช่วยในการหาเส้นทาง หรือ Spanning Tree Protocol หน้าที่ของมันคือ ช่วยป้องกันการเกิด loop ได้ และก็ช่วยเสริมให้มีเส้นทางสำรอง เช่น สมมุติว่าเรามีจุดหมายปลายทางอยู่จุดหนึ่งแล้วเส้นทางนี้เกิดมีปัญหาทำให้ระบบใช้งานไม่ได้เลย ก็ทำให้ระบบทั้งหมดมีปัญหาไปด้วย ตัว Spanning Tree มันก็จะมีระบบช่วยป้องกันไม่ให้ระบบหยุดการทำงาน ถ้าเส้นทางหนึ่งมีปัญหาก็สามารถไปใช้เส้นทางอื่นได้ Redundancy ของ Spanning Tree มันทำให้ระบบมีเสถียรภาพ เพราะใช้ตลอดเวลาก็ไม่ Down ถึงแม้เส้นทางใดเส้นทางหนึ่งใช้ไม่ได้ก็ตาม Spanning tree  ก็จะมีเส้นทางขึ้นมาใช้แทนโดยรวมทำให้มีเสถียรภาพมากขึ้น

## ผลเสียจากการเกิดลูป (loop) ขึ้นในระบบเน็ตเวิร์ก (Network)
thumb|250x250px
# เนื่องจาก Broadcast ไม่รู้จบมากเกินไปทำให้ข้อมูลจริงส่งข้อมูลไปไม่ได้เพราะในระบบมี แต่ Broadcast หรือ Broadcast เยอะมากจน Switch รับไม่ไหว Switchก็อาจจะหยุดการทำงาน ไปเลยก็ได้
# เรื่องของ Frame มันไปถึงจุดปลายทาง 2 อัน คือ ข้อมูลชุดเดียวกันไปถึงจุดหมายปลายทาง 2 ครั้ง
# ความไม่แน่นอนของ Mac Address table ใครอยู่ port ไหนอยู่ port อะไรถ้ามี Frame ส่งเข้ามาในตัวมันมันจะบอกส่งไปหาใคร ถ้าเกิดข้อมูลในตาราง Mac Address เปลี่ยนอยู่ตลอดเวลา มันจะเกิดการสับสนข้อมูลอาจหาย

## การหารูทบริดจ์ (Root Bridge)
เพื่อป้องกันการเกิดลูป (loop) ในเน็ตเวิร์ก (network) อุปกรณ์สวิทช์ (switch) ทั้งหมดในเน็ตเวิร์ก จะต้องแลกเปลี่ยนข้อมูลระหว่างกัน เพื่อกำหนดจุดอ้างอิงเดียวกันในการป้องกันลูป ซึ่งจุดอ้างอิงที่ว่านี้เรียกว่ารูทบริดจ์ (หรือรูทสวิตช์ Root Switch)

ในกระบวนการเลือกรูทบริดจ์นี้สวิตช์ทุกตัวจะอาศัยบริดจ์ไอดี ซึ่งเป็นค่าเฉพาะตัวของสวิทช์แต่ละตัวเป็นเงื่อนไขในการเลือก โดยค่าบริดจ์ไอดีมีขนาด 8 ไบต์ (byte) แบ่งออกเป็น 2 ส่วนได้แก่

# **บริดจ์ไพเออริตี้** (Bridge Priority) (2 ไบต์) ระบุความสำคัญของสวิตช์นั้น ๆ เมื่อเปรียบเทียบกับสวิตช์อื่น ๆ ในเน็ตเวิร์ก โดยมีค่าได้ตั้งแต่ 0 ถึง 65,535 
# **แมคแอดเดรส** (MAC Address) (6 ไบต์) เนื่องจากค่าบริดจ์ไพเออริตี้สามารถที่จะกำหนดเองได้ ทำให้แต่ละบริดจ์มีโอกาสที่จะมีบริดจ์ไพเออริตี้เท่ากัน จึงมีการนำค่าแมคแอดเดรสของสวิตช์ ซึ่งเป็นค่าเฉพาะของแต่ละอุปกรณ์ มาเป็นส่วนหนึ่งของบริดจ์ไอดี เพื่อให้กระบวนการหารูทบริดจ์สามารถทำได้สมบูรณ์
สำหรับในเน็ตเวิร์กใด ๆ นั้นจะมีรูทบริดจ์ได้เพียงแค่ 1 เดียวเท่านั้น โดยบริดจ์ที่มีค่าบริดจ์ไอดีต่ำที่สุดจะถูกเลือกให้เป็นรูทบริดจ์ ส่วนบริดจ์อื่น ๆ จะถูกเรียกว่า  นอนรูทบริดจ์ (Non Root Bridge)

## บริดจ์ไอดี - Bridge ID
บริดจ์ไอดีเป็นพารามิเตอร์หนึ่งใน BPDU ที่สวิตช์แลกเปลี่ยนกัน เพื่อใช้ในการกำหนดว่า สวิตช์ใดจะทำหน้าที่เป็นรูทบริดจ์ในเน็ตเวิร์กนั้น ๆ

บริดจ์ไอดีจะแบ่งออกเป็น 2 ส่วน ได้แก่

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

## คุณสมบัติของรูทบริดจ์
รูทบริดจ์ เป็นจุดอ้างอิงของเน็ตเวิร์กหนึ่ง สวิตช์ทุกตัวในเน็ตเวิร์กจะต้องมีรูทบริดจ์เป็นค่าเดียวกันเสมอ ทำให้สวิตช์ทุกตัวเห็นเน็ตเวิร์กโทโพโลยี (Network Topology) รูปเดียวกันเสมอ ซึ่งจะส่งผลให้ไม่เกิดลูปในเน็ตเวิร์กนั้น ๆ

สำหรับคุณสมบัติของรูทบริดจ์ได้แก่

# **รูทบริดจ์ คือ บริดจ์ที่มีค่าบริดจ์ไอดี** (Bridge ID : BID) ต่ำที่สุดในเน็ตเวิร์ก
# **ทุกพอร์ทบนรูทบริดจ์จะมีสเตทฟอร์เวิร์ด** (state Forward) เสมอ (ไม่มีพอร์ทใดมีสเตทเป็นบล็อก)
# **ทุกพอร์ทบนรูทบริดจ์จะมีโรล** (Role) เป็น ดีไซเนทพอร์ท (Designated port)

## กฎของสแปนนิ่งทรี (Spanning tree rules)
# พอร์ททุกพอร์ทของรูทบริดจ์จะไม่ถูกบล็อกเลย
# สวิตช์อื่นในเน็ตเวิร์กจะถูกเรียกว่า Designate Switch
# พอร์ทที่วิ่งไปรูทบริดจ์เรียกว่า รูทพอร์ท ภายในสวิตช์หนึ่งตัวจะมีรูทพอร์ทได้พอร์ทเดียว โดยเลือกจากค่าคอส (Cost) ที่ต่ำที่สุดที่สามารถเชื่อมต่อไปยังรูทสวิตช์ได้สำเร็จ
# นอนรูทบริดจ์จะมีดีไซเนทพอร์ทได้ 1 พอร์ทต่อ 1 เน็ตเวิร์กเซกเมนต์
# พอร์ทใด ๆ ที่ไม่ได้เป็นดีไซเนทพอร์ท จะถูกเรียกว่า นอนดีไซเนทพอร์ท (Non Designated Port) และจะมีสเตทเป็นบล็อกสเตท

## บริดจ์โพรโทคอลดาต้ายูนิต (บีพีดียู) - Bridge Protocol Data Unit (BPDU)
* **Root Bridge ID** บ่งบอก Bridge ID ของ Root Bridge ในเน็ตเวิร์กที่สวิทช์ตัวนี้รู้จัก
* **Sender Bridge ID** ระบุ Bridge ID ของตัวสวิทช์เจ้าของ BPDU Frame นี้เอง (สำหรับ BPDU ของ Root Bridge จะมีค่าของ Root Bridge ID กับ Sender Bridge ID เหมือนกัน)

Spanning tree มันจะคุยกันโดยแต่ละตัวจะส่งข้อมูลเป็นชุดข้อมูลขนาดเล็ก ที่เรียกว่า Bridge Protocol Data Unit หรือ BPDU ทุกครั้งที่ส่ง BPDU มันจะบอกว่าตัวไหนคือ Root Bridge หรือใครคือ Root ID จากนั้นมันก็วิ่งไปที่ root ว่ามีค่า Cost เท่าไหร่ แล้วข้อมูล BPDU ใครเป็นคนส่งก็ดูจาก port ที่มันส่ง BPDU มันก็จะบอกว่า Root Bridge คือตัวไหน และค่า Cost เท่าไหร่

## Mode การทำงานของ Spanning-Tree
ถ้า Switch มันตรวจสอบพบว่ามีการเปลี่ยนแปลงอะไรเกิดขึ้นภายใน Switch และถ้ามันมีค่า cost พอที่จะเปลี่ยนสถานะมาเป็น Designated port มันก็จะทำการเปลี่ยนสถานะจาก Blocking ไปจนถึง Forward port ตามสถานการณ์นั้น ๆ 

# **Blocking** มันจะไม่ส่ง user ของมันออกไปแต่จะมีการส่ง BPDU ส่งไปให้ port ที่ Block ก็คือว่า Blocking นั้นเป็นสถานะที่ไม่สามารถส่งข้อมูลได้ แต่มันสามารถรับ BPDU ได้ ถ้าข้อมูลของ user หายไปหรือเริ่มมีการผิดปกติมันก็จะเปลี่ยนสถานะไปสู่สถานะ Listening มันจะใช้เวลาประมาณ 20 วินาที
# **Listening** มันจะเริ่มเชื่อม link ขึ้นมา (Enable Link) มันจะรอฟังว่ามันจะได้เป็น Designate portหรือเปล่าจะใช้เวลารอประมาณ 15 วินาที
# **Learning** มันก็จะเรียนรู้ Mac Address จากที่อื่น ๆ และก็ดูว่ามีอะไรเกิดขึ้น ข้อมูลที่ถูกส่งเข้ามามันก็จะเก็บที่ Mac Table ทันทีเพื่อเก็บเป็นข้อมูลตั้งต้นใช้เวลาประมาณ 15 วินาที
# **Forwarding** มันจะส่งข้อมูล User ได้ตามปกติ

port ที่ Blocking จะไม่ส่ง User ของมัน แต่จะมีการส่ง BPDU ส่งไปให้ Port ที่ Block แต่ข้อมูลของ User ไม่ส่ง ถ้าเกิด หายไปหรือเริ่มมีการผิดปกติ มันก็จะเปลี่ยนจาก มาเป็นทันที ถ้า หายไปในช่วงระยะเวลาหนึ่งมันก็จะเปลี่ยนเป็น ประมาณ 15 วินาที ถ้ามัน Listening แล้ว port นี้ต้องเปลี่ยนตัวเองไปอีก และมันก็จะเข้าสู่ Mode Learning มันก็จะดูว่ามีอะไรเกิดขึ้น ถ้าเกิดว่ายังไม่ได้รับ BPDU เข้ามามันก็จะ Learning ทันที ข้อมูลที่ส่งเข้ามาหาตัวมันก็จะเก็บที่ Mac Table ทันที เพื่อที่จะเก็บเป็นข้อมูลตั้งต้น พอผ่านมา 15 วินาทีมันก็จะเข้าสู่ Mode Forwarding ทันที Forward เป็นการส่งข้อมูล User ตามปกติ

Spanning tree จะคำนวณตลอดว่า BPDU ที่ได้รับมานั้นถูกต้องหรือเปล่าได้รับจากเส้นทางเดิม Switch ตัวเดิมหรือเปล่า ถ้าหากว่าเส้นทางใดเสียหาย เท่ากับว่า port BPDU เปลี่ยนมันก็จะเข้า step เปลี่ยนสถานะเป็น Listening การเข้าสู่ Mode ต่าง ๆ ของ Spaning tree ต้องใช้เวลาประมาณ 15 วินาที ถ้าหากว่า Network เสียหายการส่งข้อมูลของ User อาจต้องรอถึง 50 วินาที จึงปรับปรุงไปเป็น Rapit Spanning tree คือ ลดสถานะบางอย่างออกไป

**Rapid Spanning Tree Protocol (IEEE 802.1w)** จะเพิ่มความสามารถโดยจะแยกสถานะของ port และสามารถเปลี่ยนสถานะของ port ให้ทำงานได้เร็วขึ้น และเพิ่มในเรื่องของ Switch ทำให้ Switch สามารถส่ง BPDU ได้เองจากปกติ Root Bridge จะเป็นผู้ส่งเสมอทำให้เร็วขึ้น

**Shortest Path Bridging (IEEE 802.1aq)** เปลี่ยนที่ทันสมัยเพื่อ Spanning Tree