
บทนำ: ทำไม Network Engineer ต้องเข้าใจ Spanning Tree Protocol ในปี 2026
Spanning Tree Protocol (STP) เป็นหนึ่งใน Protocol ที่สำคัญที่สุดในโลกของ Layer 2 Switching แม้จะเป็น Protocol ที่มีมานานตั้งแต่ปี 1985 แต่ในปี 2026 STP ยังคงเป็น Fundamental Knowledge ที่ Network Engineer ทุกคนต้องเข้าใจอย่างลึกซึ้ง เพราะ Switch ทุกตัวที่ขายในท้องตลาดยังคง Run STP หรือ Variant ของมันอยู่ และปัญหา Layer 2 Loop ยังคงเป็นสาเหตุหลักของ Network Outage ในองค์กรจำนวนมาก
Layer 2 Loop เกิดขึ้นเมื่อมี Redundant Path ระหว่าง Switch ใน Network ซึ่งเป็นสิ่งที่ต้องการ (เพื่อ Redundancy) แต่ถ้าไม่มี Mechanism ป้องกัน Frame จะวน Loop ไม่รู้จบ ทำให้เกิด Broadcast Storm ที่กิน Bandwidth ทั้งหมด MAC Address Table Instability ที่ Switch สับสนว่า MAC Address อยู่ที่ Port ไหน และ Duplicate Frames ที่ Host ได้รับ Frame เดียวกันหลายครั้ง ผลลัพธ์คือ Network Down ทั้งหมดภายในไม่กี่วินาที
STP แก้ปัญหานี้โดย Create Loop-free Logical Topology จาก Physical Topology ที่มี Redundant Link STP จะ Block บาง Port เพื่อป้องกัน Loop แต่ยังคงมี Redundant Path ที่พร้อม Activate เมื่อ Active Path Fail ทำให้ Network มีทั้ง Redundancy และ Loop Prevention
ในบทความนี้จะอธิบาย STP อย่างละเอียดครบถ้วน ตั้งแต่ปัญหา Layer 2 Loop, Original STP (802.1D), Bridge Priority และ BID, Root Bridge Election, Port Roles และ Port States, STP Timers, PVST+, Rapid STP (802.1w), MSTP (802.1s), STP Configuration บน Cisco Switch, STP Protection Features (Root Guard, BPDU Guard, PortFast, Loop Guard, UDLD), Common STP Issues และ Troubleshooting ไปจนถึงคำถามว่า STP ยังจำเป็นใน Network สมัยใหม่หรือไม่
ทำไม Layer 2 Loop ถึงอันตราย: เข้าใจปัญหาก่อนเรียนรู้ Solution
Broadcast Storm
ใน Layer 2 Network เมื่อ Switch ได้รับ Broadcast Frame (Destination MAC = FF:FF:FF:FF:FF:FF) Switch จะ Forward Frame นั้นออกทุก Port ยกเว้น Port ที่ได้รับ (Flood) ถ้ามี Redundant Link ระหว่าง Switch Frame จะถูก Forward ไปยัง Switch อีกตัว ซึ่งก็จะ Flood ออกทุก Port อีกครั้ง Frame จะวน Loop ระหว่าง Switch ไม่รู้จบ เพราะ Ethernet Frame ไม่มี TTL (Time to Live) เหมือน IP Packet
เมื่อ Broadcast Frame วน Loop จำนวน Frame จะเพิ่มขึ้นแบบ Exponential เพราะทุกครั้งที่ Frame วนกลับมา Switch จะ Flood ออกทุก Port อีกครั้ง สร้าง Copy ใหม่ ภายในไม่กี่วินาที Frame จำนวนมหาศาลจะกิน Bandwidth ทั้งหมดของ Link ทำให้ไม่มี Bandwidth เหลือสำหรับ Traffic จริง CPU ของ Switch จะ Overload เพราะต้อง Process Broadcast Frame จำนวนมาก อุปกรณ์ทุกตัวใน Network จะได้รับ Broadcast Frame จำนวนมหาศาลทำให้ CPU Overload เช่นกัน ผลคือ Network Down ทั้งหมด
MAC Address Table Instability
Switch เรียนรู้ MAC Address จาก Source MAC Address ของ Frame ที่ได้รับ (MAC Learning) เมื่อได้รับ Frame จาก Port ใด Switch จะบันทึกว่า Source MAC Address นั้นอยู่ที่ Port นั้น แต่เมื่อมี Loop Frame จาก Host เดียวกันจะมาถึง Switch จากหลาย Port (เพราะ Frame วน Loop ไปมา) ทำให้ MAC Address Table ของ Switch สลับไปมาตลอดเวลา (Flapping) Switch จะสับสนว่า MAC Address อยู่ที่ Port ไหนกันแน่ ส่งผลให้ Unicast Frame ถูก Forward ไปผิด Port หรือถูก Flood ออกทุก Port เหมือน Unknown Unicast
Duplicate Frames
เมื่อมี Redundant Path Frame จากต้นทางจะถึงปลายทางผ่านหลาย Path ทำให้ปลายทางได้รับ Frame เดียวกันหลายชุด สำหรับ Application ที่ใช้ TCP ปัญหานี้อาจไม่รุนแรงนักเพราะ TCP จะจัดการ Duplicate Segment ได้ แต่สำหรับ Application ที่ใช้ UDP (เช่น VoIP, Video) อาจมีปัญหาเรื่อง Audio/Video Quality
ตัวอย่างสถานการณ์ที่เกิด Loop ในชีวิตจริง
สถานการณ์ที่พบบ่อยที่สุดคือ User เสียบสาย Ethernet ทั้ง 2 ปลายเข้า Switch ตัวเดียวกัน (เช่น เสียบสาย Patch Cord ที่วางอยู่บนโต๊ะเข้า Wall Outlet 2 จุด) หรือ User นำ Consumer Switch มาต่อใน Office โดยเสียบสาย 2 เส้นจาก Consumer Switch ไปยัง Corporate Switch ทำให้เกิด Loop หรือ Network Team เพิ่ม Redundant Link ระหว่าง Switch แต่ลืม Configure STP ให้ถูกต้อง หรือ STP ทำงานอยู่แต่ใช้เวลา Converge นานจนทำให้ Network ขัดข้อง ทุกสถานการณ์เหล่านี้สามารถป้องกันได้ด้วยการเข้าใจและ Configure STP อย่างถูกต้อง
Original STP (IEEE 802.1D): พื้นฐานที่ต้องรู้
ประวัติความเป็นมา
STP ถูกคิดค้นโดย Radia Perlman วิศวกรจาก DEC (Digital Equipment Corporation) ในปี 1985 และถูก Standardize เป็น IEEE 802.1D ในปี 1990 Radia Perlman เขียน Algorithm ที่ช่วยให้ Switch (ในสมัยนั้นเรียกว่า Bridge) สามารถ Create Loop-free Topology ได้อัตโนมัติ โดย Switch จะสื่อสารกันด้วย BPDU (Bridge Protocol Data Unit) เพื่อเลือก Root Bridge และกำหนด Port Role ที่จะ Forward หรือ Block Traffic
BPDU: Bridge Protocol Data Unit
BPDU เป็น Frame ที่ Switch ส่งหากันเพื่อ Exchange Information สำหรับ STP Operation BPDU มี 2 ประเภทคือ Configuration BPDU ที่ส่งจาก Root Bridge ออกมา (และถูก Relay โดย Switch อื่นๆ) เพื่อ Maintain STP Topology และ Topology Change Notification (TCN) BPDU ที่ Switch ส่งเมื่อตรวจพบ Topology Change (เช่น Port Up หรือ Port Down)
Configuration BPDU มีข้อมูลสำคัญหลายอย่าง ได้แก่ Root Bridge ID (BID ของ Root Bridge ที่ Switch เชื่อว่าเป็น Root), Root Path Cost (Cost รวมจาก Switch ที่ส่ง BPDU ไปถึง Root Bridge), Sender Bridge ID (BID ของ Switch ที่ส่ง BPDU), Port ID (Port Number ที่ส่ง BPDU ออก), Timers (Hello Time, Max Age, Forward Delay) BPDU ถูกส่งด้วย Destination MAC Address 01:80:C2:00:00:00 ซึ่งเป็น Well-known Multicast Address สำหรับ STP ทุก Switch ที่ได้รับ Frame ที่มี Destination MAC นี้จะ Process ในฐานะ BPDU
Bridge ID (BID)
Bridge ID (BID) เป็น Identifier ที่ Unique สำหรับแต่ละ Switch ใน STP Domain BID ประกอบด้วย 2 ส่วนคือ Bridge Priority (2 bytes) และ MAC Address (6 bytes) รวมเป็น 8 bytes ในรุ่นดั้งเดิมของ 802.1D Bridge Priority เป็นค่า 16-bit ที่มี Default Value = 32768 (0x8000) และสามารถ Configure ได้ตั้งแต่ 0 ถึง 65535 ค่า Priority ที่ต่ำกว่าหมายถึง Priority สูงกว่า MAC Address เป็น Base MAC Address ของ Switch ที่ Unique สำหรับแต่ละตัว
ใน Extended System ID Format (ที่ใช้ใน PVST+ ของ Cisco) Bridge Priority 16-bit ถูกแบ่งเป็น Priority Multiplier 4 bits (ค่า 0-15 คูณด้วย 4096) และ VLAN ID 12 bits ทำให้ค่า Priority ที่ Configure ได้คือ 0, 4096, 8192, 12288, 16384, 20480, 24576, 28672, 32768, 36864, 40960, 45056, 49152, 53248, 57344, 61440 ค่า Default คือ 32768 และ BID จะ Unique ต่อ VLAN เพราะ VLAN ID ถูกรวมอยู่ใน BID
Root Bridge Election
Root Bridge เป็น Switch ที่ทำหน้าที่เป็น “Center” ของ STP Topology ทุก Path ใน Network จะถูกคำนวณจาก Root Bridge การเลือก Root Bridge เป็นขั้นตอนแรกของ STP Operation
กระบวนการ Root Bridge Election เริ่มจากเมื่อ Switch เปิดเครื่องขึ้นมา ทุก Switch จะสมมติว่าตัวเองเป็น Root Bridge และส่ง BPDU ที่มี Root Bridge ID เป็น BID ของตัวเอง เมื่อ Switch ได้รับ BPDU จาก Switch อื่น จะเปรียบเทียบ Root Bridge ID ใน BPDU ที่ได้รับกับ Root Bridge ID ที่ตัวเองเชื่อ ถ้า BPDU ที่ได้รับมี Root Bridge ID ที่ดีกว่า (ค่า BID ต่ำกว่า) Switch จะยอมรับว่า Switch ตัวนั้นเป็น Root Bridge ที่ดีกว่า และจะ Update BPDU ของตัวเองให้ชี้ไปยัง Root Bridge ใหม่ เมื่อ Process นี้ Converge ทุก Switch จะ Agree ว่า Switch ที่มี BID ต่ำที่สุดเป็น Root Bridge
การเปรียบเทียบ BID ดูที่ Bridge Priority ก่อน ค่าต่ำกว่าชนะ ถ้า Priority เท่ากัน (ซึ่งเกิดบ่อยเพราะ Default Priority เหมือนกัน) จะดูที่ MAC Address ค่าต่ำกว่าชนะ ดังนั้น ถ้าไม่ Configure Priority ด้วยมือ Root Bridge จะเป็น Switch ที่มี MAC Address ต่ำที่สุด ซึ่งมักเป็น Switch ตัวเก่าที่สุด (เพราะ MAC Address จะถูก Assign ตามลำดับการผลิต) นี่คือเหตุผลที่ Network Engineer ต้อง Configure Root Bridge ด้วยมือ เพื่อให้ Switch ที่เหมาะสม (เช่น Core Switch หรือ Distribution Switch) เป็น Root Bridge ไม่ใช่ Switch ตัวเก่าที่ Performance ต่ำ
Port Roles
หลังจากเลือก Root Bridge แล้ว STP จะกำหนด Role ให้แต่ละ Port ของทุก Switch ดังนี้
Root Port เป็น Port ที่มี Path Cost ต่ำที่สุดไปยัง Root Bridge ทุก Non-root Switch จะมี Root Port 1 Port เท่านั้น Root Port จะอยู่ใน Forwarding State เสมอ การเลือก Root Port พิจารณาตามลำดับคือ Lowest Root Path Cost (ค่า Cost รวมจาก Switch ไปยัง Root Bridge), Lowest Sender BID (ถ้า Root Path Cost เท่ากัน), Lowest Port Priority ของ Sender (ถ้า Sender BID เท่ากัน เช่น สาย 2 เส้นเชื่อม Switch เดียวกัน), Lowest Port ID ของ Sender (ถ้า Port Priority เท่ากัน)
Designated Port เป็น Port ที่ทำหน้าที่ Forward Traffic สำหรับ Segment นั้นๆ แต่ละ Segment (Link ระหว่าง Switch) จะมี Designated Port 1 Port โดย Switch ที่ส่ง BPDU ที่ดีกว่า (Root Path Cost ต่ำกว่า) บน Segment นั้นจะเป็น Designated Switch และ Port ที่เชื่อมต่อ Segment นั้นจะเป็น Designated Port Designated Port จะอยู่ใน Forwarding State เสมอ Port ทุก Port บน Root Bridge เป็น Designated Port
Blocked Port (หรือ Non-designated Port) เป็น Port ที่ถูก Block เพื่อป้องกัน Loop Port ที่ไม่ใช่ Root Port และไม่ใช่ Designated Port จะถูก Block Blocked Port ยังคงรับ BPDU แต่จะไม่ Forward Data Frame ใดๆ Blocked Port พร้อมที่จะเปลี่ยนเป็น Forwarding State ถ้า Active Path Fail
Port Cost
STP ใช้ Port Cost ในการคำนวณ Path Cost ไปยัง Root Bridge Port Cost ถูกกำหนดตาม Bandwidth ของ Link ตาม IEEE Standard 10 Mbps มี Cost = 100, 100 Mbps มี Cost = 19, 1 Gbps มี Cost = 4, 10 Gbps มี Cost = 2 ค่าเหล่านี้เป็น Short Mode (16-bit) Cost ที่ใช้ใน 802.1D ดั้งเดิม ใน Long Mode (32-bit) ที่ใช้ใน RSTP/MSTP ค่าจะแตกต่างออกไป เช่น 10 Gbps มี Cost = 2000, 1 Gbps มี Cost = 20000
Root Path Cost คือ Cost รวมจาก Switch ไปถึง Root Bridge โดยคำนวณจาก Cost ของ Port ที่ได้รับ BPDU บวกกับ Root Path Cost ที่อยู่ใน BPDU ที่ได้รับ เช่น ถ้า Switch A (Root) ส่ง BPDU ด้วย Root Path Cost = 0 ผ่าน 1 Gbps Link ไปยัง Switch B, Switch B จะคำนวณ Root Path Cost = 0 + 4 = 4 ถ้า Switch B ส่ง BPDU ด้วย Root Path Cost = 4 ผ่าน 100 Mbps Link ไปยัง Switch C, Switch C จะคำนวณ Root Path Cost = 4 + 19 = 23
Port States ใน 802.1D
ใน Original STP (802.1D) Port มี 5 States ดังนี้
Disabled คือ Port ที่ถูก Shutdown ด้วยมือ (Admin Down) หรือไม่มี Link ไม่มี STP Activity ใดๆ Blocking คือ State เริ่มต้นเมื่อ Port เปิดใช้งาน Port จะรับ BPDU แต่ไม่ Forward Data Frame ไม่ Learn MAC Address ไม่ส่ง BPDU ออก (ยกเว้น Root Bridge) Port อยู่ใน Blocking State เมื่อถูกกำหนดเป็น Blocked Port
Listening คือ State ที่ Port เปลี่ยนมาหลังจากถูกเลือกเป็น Root Port หรือ Designated Port Port จะรับและส่ง BPDU แต่ไม่ Forward Data Frame ไม่ Learn MAC Address Port อยู่ใน Listening State เป็นเวลา Forward Delay (Default 15 วินาที) ก่อนเปลี่ยนเป็น Learning State
Learning คือ State ที่ Port เริ่ม Learn MAC Address จาก Frame ที่ได้รับ แต่ยังไม่ Forward Data Frame Port อยู่ใน Learning State เป็นเวลา Forward Delay (Default 15 วินาที) ก่อนเปลี่ยนเป็น Forwarding State วัตถุประสงค์ของ Learning State คือเพื่อให้ Switch เรียนรู้ MAC Address ก่อน Forward Traffic เพื่อลดโอกาส Unknown Unicast Flooding
Forwarding คือ State ปกติที่ Port Forward Data Frame และ Learn MAC Address เป็น State ที่ Root Port และ Designated Port จะอยู่เมื่อ STP Converge
ปัญหาหลักของ 802.1D คือเวลา Convergence ที่นาน เมื่อเกิด Topology Change (เช่น Link Fail) Port ที่ต้องเปลี่ยนจาก Blocking เป็น Forwarding ต้องผ่าน Listening (15 วินาที) และ Learning (15 วินาที) รวมเป็น 30 วินาที บวกกับ Max Age Timer (20 วินาที) ที่ต้องรอก่อนเริ่ม Reconverge ทำให้ Total Convergence Time อาจถึง 50 วินาที ซึ่งนานเกินไปสำหรับ Network สมัยใหม่
STP Timers
STP มี Timer 3 ตัวที่สำคัญ ทุก Timer ถูก Set โดย Root Bridge และ Propagate ผ่าน BPDU ไปยังทุก Switch ใน Network
Hello Timer (Default 2 วินาที) คือ Interval ที่ Root Bridge ส่ง Configuration BPDU ออกมา Switch อื่นจะ Relay BPDU ที่ได้รับจาก Root Bridge ออก Designated Port ทุกๆ Hello Timer Interval การลดค่า Hello Timer จะทำให้ BPDU ถูกส่งบ่อยขึ้น ช่วยให้ Detect Failure ได้เร็วขึ้น แต่เพิ่ม Control Plane Traffic
Max Age Timer (Default 20 วินาที) คือเวลาสูงสุดที่ Switch จะเก็บ BPDU ไว้ก่อนจะถือว่า BPDU หมดอายุ ถ้า Switch ไม่ได้รับ BPDU ใหม่ภายใน Max Age จะถือว่า Root Bridge หรือ Path ไป Root Bridge Down และเริ่ม Reconverge Max Age ยังถูกใช้เป็น Age ของ BPDU ที่ถูก Relay ทุกครั้งที่ BPDU ถูก Relay Age จะเพิ่มขึ้น 1 ถ้า Age ถึง Max Age BPDU จะถูก Discard
Forward Delay Timer (Default 15 วินาที) คือเวลาที่ Port อยู่ใน Listening State และ Learning State Port ต้องอยู่ใน Listening 15 วินาที แล้วเปลี่ยนเป็น Learning อีก 15 วินาที ก่อนจะ Forward Traffic ได้ รวมเป็น 30 วินาที Forward Delay ถูกออกแบบมาเพื่อให้ BPDU มีเวลา Propagate ทั่ว Network ก่อนที่ Port จะเริ่ม Forward เพื่อป้องกัน Temporary Loop
PVST+ (Per-VLAN Spanning Tree Plus)
PVST+ คืออะไร
PVST+ เป็น Cisco Proprietary Implementation ของ STP ที่ Run STP Instance แยกสำหรับแต่ละ VLAN ใน Original IEEE 802.1D มี STP Instance เดียวสำหรับทุก VLAN (Common Spanning Tree หรือ CST) ซึ่งหมายความว่า Port ที่ถูก Block จะ Block ทุก VLAN ทำให้ไม่สามารถใช้ Redundant Link สำหรับ Traffic ของ VLAN อื่นได้
PVST+ แก้ปัญหานี้โดยสร้าง STP Instance แยกสำหรับแต่ละ VLAN แต่ละ Instance มี Root Bridge, Port Roles และ Port States ของตัวเอง ทำให้สามารถทำ Load Balancing ระหว่าง Redundant Link ได้ เช่น Link A อาจ Forward VLAN 10, 20 และ Block VLAN 30, 40 ขณะที่ Link B Forward VLAN 30, 40 และ Block VLAN 10, 20
ข้อดีของ PVST+ คือ Per-VLAN Load Balancing สามารถ Utilize Redundant Link ได้อย่างมีประสิทธิภาพ, Per-VLAN Root Bridge สามารถ Optimize Path สำหรับแต่ละ VLAN และ Backward Compatible กับ IEEE CST ข้อเสียคือ CPU และ Memory Usage สูงขึ้นตามจำนวน VLAN เพราะต้อง Run STP Instance แยกสำหรับแต่ละ VLAN และ BPDU Traffic เพิ่มขึ้นตามจำนวน VLAN PVST+ เป็น Default STP Mode บน Cisco Switch รุ่นเก่า
PVST+ Load Balancing Configuration
การทำ Load Balancing ด้วย PVST+ ทำได้โดย Configure Root Bridge ต่างกันสำหรับแต่ละกลุ่ม VLAN เช่น ถ้ามี Switch 2 ตัว (SW1 และ SW2) ที่เชื่อมต่อกันด้วย Link 2 เส้น สามารถ Set SW1 เป็น Root Bridge สำหรับ VLAN 10-50 (ด้วย spanning-tree vlan 10-50 priority 4096) และ SW2 เป็น Root Bridge สำหรับ VLAN 51-100 (ด้วย spanning-tree vlan 51-100 priority 4096) ผลคือ Traffic ของ VLAN 10-50 จะ Forward ผ่าน SW1 และ Traffic ของ VLAN 51-100 จะ Forward ผ่าน SW2 ทำให้ใช้ Bandwidth ของ Redundant Link ได้ทั้งคู่
Rapid STP (IEEE 802.1w / RSTP): วิวัฒนาการที่สำคัญ
ทำไมต้อง RSTP
ปัญหาหลักของ Original STP (802.1D) คือ Convergence Time ที่นานถึง 30-50 วินาที ซึ่งไม่เหมาะกับ Network สมัยใหม่ที่ต้องการ High Availability RSTP (IEEE 802.1w) ถูก Standardize ในปี 2001 เพื่อแก้ปัญหานี้ โดยลด Convergence Time เหลือไม่กี่วินาที RSTP ถูก Incorporate เข้าไปใน IEEE 802.1D-2004 Revision ทำให้ปัจจุบัน 802.1D หมายถึง RSTP ไม่ใช่ Original STP อีกต่อไป
RSTP Port States
RSTP ลดจำนวน Port States เหลือ 3 States (จาก 5 States ใน Original STP) คือ Discarding (รวม Disabled, Blocking และ Listening ของ 802.1D เข้าด้วยกัน เพราะทั้ง 3 States มีพฤติกรรมคล้ายกันคือไม่ Forward Data Frame), Learning (เหมือนกับ Learning ใน 802.1D คือ Learn MAC Address แต่ไม่ Forward Data Frame) และ Forwarding (เหมือนกับ Forwarding ใน 802.1D คือ Forward Data Frame และ Learn MAC Address)
RSTP Port Roles
RSTP มี Port Role 4 Roles คือ Root Port (เหมือนกับ 802.1D คือ Port ที่มี Best Path ไปยัง Root Bridge), Designated Port (เหมือนกับ 802.1D คือ Port ที่ Forward Traffic สำหรับ Segment นั้น), Alternate Port (เป็น Role ใหม่ คือ Port ที่ได้รับ Superior BPDU จาก Switch อื่น เป็น Backup สำหรับ Root Port ถ้า Root Port Fail Alternate Port สามารถเปลี่ยนเป็น Root Port ได้ทันทีโดยไม่ต้องรอ Timer) และ Backup Port (เป็น Role ใหม่ คือ Port ที่ได้รับ Superior BPDU จากตัวเอง เช่น Switch มี 2 Port เชื่อมต่อไปยัง Shared Segment เดียวกัน Port ที่ไม่ใช่ Designated Port จะเป็น Backup Port เป็น Backup สำหรับ Designated Port)
Alternate Port เป็น Key Innovation ของ RSTP เพราะช่วยให้ Convergence เร็วขึ้นมาก ใน Original STP เมื่อ Root Port Fail Switch ต้องรอ Max Age (20 วินาที) แล้วเริ่ม Election ใหม่ แต่ใน RSTP Switch รู้อยู่แล้วว่า Alternate Port เป็น Backup สำหรับ Root Port เมื่อ Root Port Fail Switch สามารถ Promote Alternate Port เป็น Root Port ได้ทันที (Sub-second Convergence)
RSTP Convergence Mechanisms
RSTP ใช้หลาย Mechanism เพื่อเร่ง Convergence Proposal/Agreement Mechanism เป็น Handshake ระหว่าง Switch ที่เชื่อมต่อกัน เพื่อ Quickly Transition Port ไปยัง Forwarding State โดยไม่ต้องรอ Forward Delay Timer เมื่อ Switch ต้องการเปลี่ยน Designated Port เป็น Forwarding จะส่ง Proposal ไปยัง Switch อีกฝั่ง Switch ที่ได้รับ Proposal จะ Block ทุก Non-edge Port ก่อน (Sync Process) แล้วส่ง Agreement กลับมา เมื่อได้รับ Agreement Designated Port จะเปลี่ยนเป็น Forwarding ทันที Process นี้ Propagate ทั่ว Network ทำให้ Convergence เร็วมาก
Edge Port Concept เป็น Port ที่เชื่อมต่อกับ End Device (เช่น PC, Printer, Server) ไม่ใช่ Switch Edge Port สามารถเปลี่ยนเป็น Forwarding State ทันทีเมื่อ Link Up โดยไม่ต้อง Run STP เทียบได้กับ PortFast ใน Cisco ถ้า Edge Port ได้รับ BPDU จะ Automatically เปลี่ยนเป็น Non-edge Port
BPDU Handling ใน RSTP ต่างจาก 802.1D ตรงที่ ทุก Switch ส่ง BPDU ออกทุก Hello Interval (ไม่ใช่แค่ Root Bridge) ถ้า Switch ไม่ได้รับ BPDU จาก Neighbor ภายใน 3 Hello Intervals (6 วินาที) จะถือว่า Neighbor Down ทันที (แทนที่จะรอ Max Age 20 วินาทีเหมือน 802.1D)
Rapid PVST+ (RPVST+)
Rapid PVST+ เป็น Cisco Implementation ที่รวม RSTP กับ Per-VLAN STP ให้ทั้ง Fast Convergence ของ RSTP และ Per-VLAN Load Balancing ของ PVST+ Rapid PVST+ เป็น Default STP Mode บน Cisco Switch รุ่นใหม่ การเปิดใช้งาน Rapid PVST+ ใช้ Command spanning-tree mode rapid-pvst ใน Global Configuration Mode
MSTP (IEEE 802.1s / Multiple Spanning Tree Protocol)
MSTP คืออะไร
MSTP (IEEE 802.1s ปัจจุบันถูก Incorporate เข้าไปใน IEEE 802.1Q) เป็น STP Variant ที่ Map หลาย VLAN เข้ากับ STP Instance เดียว แทนที่จะ Run STP Instance แยกต่อ VLAN เหมือน PVST+ เช่น แทนที่จะ Run 100 STP Instances สำหรับ 100 VLANs สามารถ Map VLAN 1-50 เข้า Instance 1 และ VLAN 51-100 เข้า Instance 2 เหลือแค่ 2 Instances
ข้อดีของ MSTP คือ ลด CPU และ Memory Usage อย่างมาก เมื่อเทียบกับ PVST+ โดยเฉพาะเมื่อมี VLAN จำนวนมาก ยังคงทำ Load Balancing ได้ (ระหว่าง Instance) เป็น IEEE Standard ไม่ใช่ Proprietary ทำงานร่วมกับ Switch จาก Vendor อื่นได้ ข้อเสียคือ Configuration ซับซ้อนกว่า PVST+ ต้อง Plan VLAN-to-Instance Mapping ล่วงหน้า ทุก Switch ใน MST Region ต้องมี Configuration ที่ตรงกัน (Region Name, Revision Number, VLAN-to-Instance Mapping)
MST Region
MSTP ใช้ Concept ของ MST Region ที่ Switch ที่มี Configuration ตรงกัน (Region Name, Revision Number, VLAN-to-Instance Mapping) จะอยู่ใน Region เดียวกัน ภายใน Region จะ Run Multiple STP Instances ตาม Configuration ระหว่าง Region จะ Run CST (Common Spanning Tree) Instance เดียว ทำให้ MSTP สามารถ Scale ได้ดีในเครือข่ายขนาดใหญ่ที่มีหลาย Region
STP Configuration บน Cisco Switch
การ Configure Root Bridge
การ Configure Root Bridge เป็นสิ่งแรกที่ต้องทำเมื่อ Deploy STP ไม่ควรปล่อยให้ Root Bridge ถูกเลือกโดย Default (MAC Address ต่ำสุด) เพราะอาจได้ Switch ที่ไม่เหมาะสม วิธีที่ง่ายที่สุดคือใช้ Macro Command spanning-tree vlan 1 root primary บน Switch ที่ต้องการเป็น Root Bridge Command นี้จะ Set Priority เป็น 24576 หรือค่าที่ต่ำกว่า Current Root ถ้า Current Root มี Priority ต่ำกว่า 24576 ส่วน spanning-tree vlan 1 root secondary จะ Set Priority เป็น 28672 เป็น Backup Root Bridge
วิธีที่แนะนำคือ Set Priority ด้วยมือ spanning-tree vlan 1 priority 4096 สำหรับ Primary Root Bridge และ spanning-tree vlan 1 priority 8192 สำหรับ Secondary Root Bridge การ Set ด้วยมือให้ Control มากกว่าและ Predictable มากกว่า Macro Command
การ Verify STP
Command สำหรับ Verify STP ได้แก่ show spanning-tree แสดง STP Status สำหรับทุก VLAN รวมถึง Root Bridge ID, Local Bridge ID, Port Roles และ Port States show spanning-tree vlan 10 แสดง STP Status เฉพาะ VLAN 10 show spanning-tree summary แสดงภาพรวมของ STP รวมถึงจำนวน Instance, Port ที่ Forwarding/Blocking show spanning-tree root แสดง Root Bridge Information สำหรับทุก VLAN show spanning-tree bridge แสดง Local Bridge Information show spanning-tree interface GigabitEthernet0/1 แสดง STP Status ของ Port เฉพาะ
STP Protection Features: ป้องกันปัญหาก่อนเกิด
PortFast
PortFast ทำให้ Access Port (Port ที่เชื่อมต่อกับ End Device) เปลี่ยนเป็น Forwarding State ทันทีเมื่อ Link Up โดยไม่ต้องผ่าน Listening และ Learning State (ประหยัดเวลา 30 วินาที) PortFast ควรเปิดเฉพาะ Port ที่เชื่อมต่อกับ End Device เท่านั้น ห้ามเปิดบน Port ที่เชื่อมต่อกับ Switch อื่น เพราะอาจทำให้เกิด Temporary Loop
Configuration คือ interface GigabitEthernet0/1 ตามด้วย spanning-tree portfast หรือเปิด PortFast บนทุก Access Port พร้อมกันด้วย spanning-tree portfast default ใน Global Configuration (จะเปิด PortFast บนทุก Access Port โดย Non-trunk Port)
BPDU Guard
BPDU Guard ทำให้ Port ที่ Enable PortFast ถูก Shutdown ทันที (Error-disabled) เมื่อได้รับ BPDU วัตถุประสงค์คือป้องกัน User เสียบ Switch เข้า Port ที่ Enable PortFast ซึ่งอาจทำให้เกิด STP Topology Change หรือ Loop ถ้า Port ถูก Error-disabled ต้อง Manually Recover ด้วย shutdown แล้ว no shutdown หรือ Configure errdisable recovery cause bpduguard เพื่อ Auto-recover
Configuration คือ interface GigabitEthernet0/1 ตามด้วย spanning-tree bpduguard enable หรือเปิดบนทุก PortFast Port ด้วย spanning-tree portfast bpduguard default ใน Global Configuration BPDU Guard ควรเปิดคู่กับ PortFast เสมอ เป็น Best Practice ที่สำคัญมาก
Root Guard
Root Guard ป้องกันไม่ให้ Port กลายเป็น Root Port ถ้า Port ที่ Enable Root Guard ได้รับ Superior BPDU (BPDU ที่ดีกว่า Root Bridge ปัจจุบัน) Port จะถูกเปลี่ยนเป็น Root-inconsistent State (เป็น Blocking State ชนิดหนึ่ง) แทนที่จะเปลี่ยนเป็น Root Port วัตถุประสงค์คือป้องกัน Switch ที่ไม่ได้รับอนุญาต (เช่น Switch ที่ User นำมาเสียบเอง) จากการเป็น Root Bridge ซึ่งจะทำให้ STP Topology เปลี่ยนแปลง
Root Guard ควรเปิดบน Designated Port ที่เชื่อมต่อไปยัง Switch ที่ไม่ควรเป็น Root Bridge เช่น Port ที่เชื่อมต่อไปยัง Access Layer Switch Configuration คือ interface GigabitEthernet0/1 ตามด้วย spanning-tree guard root เมื่อ Superior BPDU หยุดส่ง Port จะ Automatically กลับมาเป็น Designated Port ใน Forwarding State
Loop Guard
Loop Guard ป้องกัน Loop ที่เกิดจาก Unidirectional Link Failure ปกติเมื่อ Root Port หรือ Alternate Port หยุดได้รับ BPDU (เช่น เพราะ Link เสียเป็น Unidirectional) Port จะเปลี่ยนเป็น Designated Port ใน Forwarding State ตาม STP Rule ปกติ ซึ่งอาจทำให้เกิด Loop
Loop Guard จะป้องกันสิ่งนี้โดย เมื่อ Root Port หรือ Alternate Port หยุดได้รับ BPDU แทนที่จะเปลี่ยนเป็น Designated Port จะถูกเปลี่ยนเป็น Loop-inconsistent State (Blocking) จนกว่าจะเริ่มได้รับ BPDU อีกครั้ง Configuration คือ interface GigabitEthernet0/1 ตามด้วย spanning-tree guard loop หรือเปิดทั่วทั้ง Switch ด้วย spanning-tree loopguard default Loop Guard ควรเปิดบน Root Port และ Alternate Port ทุก Port
UDLD (Unidirectional Link Detection)
UDLD เป็น Cisco Protocol ที่ Detect Unidirectional Link (Link ที่ส่งได้ทิศทางเดียว) ซึ่งเป็นสาเหตุหลักของ STP Loop จาก Unidirectional Failure UDLD ทำงานโดย Switch ทั้ง 2 ฝั่งส่ง UDLD Frame หากัน ถ้าฝั่งหนึ่งส่งได้แต่ไม่ได้รับ UDLD Frame กลับมา จะรู้ว่า Link เป็น Unidirectional
UDLD มี 2 Mode คือ Normal Mode ที่ Mark Port เป็น Undetermined เมื่อ Detect Unidirectional Link แต่ไม่ Shutdown Port และ Aggressive Mode ที่ Error-disable Port ทันทีเมื่อ Detect Unidirectional Link Configuration คือ udld enable สำหรับ Normal Mode หรือ udld aggressive สำหรับ Aggressive Mode ใน Interface Configuration UDLD ควรเปิดบน Fiber Optic Link ทุกเส้น เพราะ Fiber มีโอกาสเกิด Unidirectional Failure สูงกว่า Copper (เช่น Fiber ขาด Strand เดียวจาก 2 Strand)
BPDU Filter
BPDU Filter ป้องกัน Port จากการส่งและรับ BPDU ทำให้ Port ไม่ Participate ใน STP เลย ต่างจาก BPDU Guard ที่ Shutdown Port เมื่อได้รับ BPDU BPDU Filter จะ Ignore BPDU ที่ได้รับ BPDU Filter ควรใช้ด้วยความระมัดระวัง เพราะถ้าเปิดบน Port ที่เชื่อมต่อกับ Switch อื่น จะไม่มี STP Protection และอาจเกิด Loop ได้ Use Case ที่เหมาะสมคือ Port ที่เชื่อมต่อกับ Service Provider ที่ไม่ต้องการ STP BPDU ข้าม Boundary
UplinkFast และ BackboneFast
UplinkFast
UplinkFast เป็น Cisco Feature สำหรับ 802.1D ที่เร่ง Convergence เมื่อ Root Port ของ Access Layer Switch Fail ปกติเมื่อ Root Port Fail Switch ต้องรอ Max Age + 2x Forward Delay = 50 วินาที ก่อน Alternate Port จะเปลี่ยนเป็น Root Port ใน Forwarding State UplinkFast ลดเวลานี้เหลือประมาณ 1-3 วินาที โดย Immediately Transition Alternate Port เป็น Root Port ใน Forwarding State เมื่อ Root Port Fail
UplinkFast เพิ่ม Bridge Priority เป็น 49152 เพื่อป้องกันไม่ให้ Switch ที่ Enable UplinkFast กลายเป็น Root Bridge (เพราะ UplinkFast ออกแบบมาสำหรับ Access Layer Switch ไม่ใช่ Root Bridge) ใน RSTP/Rapid PVST+ UplinkFast ไม่จำเป็นเพราะ RSTP มี Alternate Port Mechanism ในตัว
BackboneFast
BackboneFast เป็น Cisco Feature ที่เร่ง Convergence เมื่อ Indirect Link Failure เกิดขึ้น (Link ที่ไม่ได้เชื่อมต่อกับ Switch โดยตรง แต่อยู่ที่อื่นใน Network) ปกติเมื่อเกิด Indirect Failure Switch จะต้องรอ Max Age (20 วินาที) ก่อนเริ่ม Reconverge BackboneFast ลดเวลานี้โดยใช้ Root Link Query (RLQ) เพื่อ Quickly Determine ว่า Root Bridge ยังมีอยู่หรือไม่ ทำให้ข้าม Max Age Timer ได้ ลด Convergence Time เหลือประมาณ 30 วินาที (จาก 50 วินาที) ใน RSTP BackboneFast ไม่จำเป็นเพราะ RSTP มี Mechanism ที่ดีกว่าในตัว
Common STP Issues และ Troubleshooting
Root Bridge ไม่ถูกต้อง
ปัญหา Root Bridge ถูกเลือกผิดตัว (เช่น Access Layer Switch เป็น Root Bridge แทน Core Switch) ทำให้ Traffic Flow ไม่ Optimal สาเหตุ ไม่ได้ Configure Root Bridge Priority ปล่อยให้ Default Priority (32768) ทำงาน Root Bridge ถูกเลือกจาก MAC Address ต่ำสุด ซึ่งมักเป็น Switch เก่า วิธีแก้ Configure Primary Root Bridge บน Core Switch ด้วย spanning-tree vlan 1-4094 priority 4096 Configure Secondary Root Bridge บน Secondary Core Switch ด้วย spanning-tree vlan 1-4094 priority 8192 เปิด Root Guard บน Designated Port ที่เชื่อมต่อไปยัง Access Layer เพื่อป้องกัน Rogue Root Bridge
STP Topology Change ที่ผิดปกติ
ปัญหา STP Topology Change เกิดบ่อยผิดปกติ ทำให้ MAC Address Table ถูก Flush บ่อย เพิ่ม Unknown Unicast Flooding สาเหตุ Port ที่ไม่ได้ Enable PortFast เชื่อมต่อกับ End Device ที่ Reboot บ่อย หรือ Link Flapping (เช่น สาย Ethernet หลวม) ทุกครั้งที่ Port Up/Down จะ Generate TCN BPDU วิธีแก้ เปิด PortFast บนทุก Access Port (Port ที่เชื่อมต่อกับ End Device) ตรวจสอบ Port ที่ Flapping ด้วย show interface status err-disabled และ show log แก้ไข Physical Issue (สายหลวม, SFP เสีย)
Broadcast Storm จาก STP Failure
ปัญหา Broadcast Storm เกิดขึ้นแม้มี STP ทำงานอยู่ สาเหตุ Unidirectional Link Failure ทำให้ BPDU ไม่สามารถส่งผ่านได้ Port ที่ควร Block กลายเป็น Forwarding BPDU Filter ถูกเปิดบน Port ที่ไม่ควร ทำให้ไม่มี STP Protection Software Bug ใน Switch Firmware วิธีแก้ เปิด Loop Guard บน Root Port และ Alternate Port ทุก Port เปิด UDLD Aggressive บน Fiber Link ตรวจสอบ BPDU Filter Configuration อย่าเปิดบน Port ที่เชื่อมต่อกับ Switch อื่น Update Switch Firmware เป็นเวอร์ชันล่าสุด Deploy Storm Control เพื่อจำกัด Broadcast Traffic
การ Troubleshoot STP ทีละขั้นตอน
ขั้นตอนที่ 1 ตรวจสอบ Root Bridge ว่าถูกต้องหรือไม่ ด้วย show spanning-tree root ถ้า Root Bridge ไม่ใช่ Switch ที่คาดหวัง ให้ตรวจสอบ Priority Configuration ขั้นตอนที่ 2 ตรวจสอบ Port Roles ด้วย show spanning-tree ดูว่า Port ไหนเป็น Root, Designated, Alternate, Blocking ตรงกับ Design หรือไม่ ขั้นตอนที่ 3 ตรวจสอบ Port States ว่ามี Port ที่อยู่ใน State ผิดปกติหรือไม่ เช่น Root-inconsistent (Root Guard Triggered), Loop-inconsistent (Loop Guard Triggered), BKN (BPDU Guard Triggered) ขั้นตอนที่ 4 ตรวจสอบ Topology Change Counter ด้วย show spanning-tree detail ดูว่ามี Topology Change เกิดบ่อยผิดปกติหรือไม่ ขั้นตอนที่ 5 ตรวจสอบ BPDU Statistics ด้วย show spanning-tree interface detail ดูว่า Port ส่งและรับ BPDU ถูกต้องหรือไม่ ขั้นตอนที่ 6 ใช้ debug spanning-tree events เพื่อดู Real-time STP Events (ใช้ด้วยความระวังใน Production)
STP Best Practices สำหรับ Network ในปี 2026
Design Best Practices
กำหนด Root Bridge ด้วยมือเสมอ Set Primary Root Bridge บน Core/Distribution Switch ที่ Performance สูงและ Centrally Located Set Secondary Root Bridge เป็น Backup กำหนด Root Bridge ทุก VLAN ด้วย PVST+ หรือ MSTP เพื่อ Load Balancing ใช้ Rapid PVST+ หรือ MSTP แทน Original STP (802.1D) เพื่อ Fast Convergence จำกัด STP Domain Size ไม่ควรมี Switch มากกว่า 10-20 ตัวใน STP Domain เดียว ลด Network Diameter (จำนวน Switch Hop ระหว่าง Switch ที่ไกลที่สุดกับ Root Bridge) ให้น้อยกว่า 7 ถ้ามากกว่านั้นควรพิจารณา Layer 3 Routing แทน Layer 2 Switching
Security Best Practices
เปิด PortFast บนทุก Access Port (Port ที่เชื่อมต่อกับ End Device) เปิด BPDU Guard คู่กับ PortFast เสมอ เพื่อ Protect จาก Rogue Switch เปิด Root Guard บน Designated Port ที่เชื่อมต่อไปยัง Switch ที่ไม่ควรเป็น Root Bridge เปิด Loop Guard บน Root Port และ Alternate Port เปิด UDLD Aggressive บน Fiber Link Enable Storm Control บนทุก Access Port เพื่อจำกัด Broadcast/Multicast/Unknown Unicast Traffic
Monitoring Best Practices
Monitor STP Topology Change ด้วย SNMP Trap หรือ Syslog การเกิด Topology Change บ่อยบ่งบอกปัญหา Monitor Port State Change ด้วย SNMP เมื่อ Port เปลี่ยนจาก Forwarding เป็น Blocking หรือในทางกลับกัน ควรมี Alert Document STP Design รวมถึง Root Bridge, Port Roles, VLAN-to-Instance Mapping (ถ้าใช้ MSTP) เก็บ Configuration Backup ของ STP Configuration ทุก Switch ทดสอบ Failover เป็นประจำ ถอดสาย Primary Link แล้วดูว่า STP Converge ถูกต้องหรือไม่
STP ในเครือข่ายสมัยใหม่: ยังจำเป็นอยู่หรือไม่
Arguments Against STP
ในปี 2026 มีหลาย Technology ที่ถูกเสนอเป็นทางเลือกแทน STP ได้แก่ Layer 3 Everywhere Design ที่ใช้ Routing (เช่น OSPF, BGP) ตั้งแต่ Access Layer ขึ้นไป แทน Layer 2 Switching ทำให้ไม่มี Layer 2 Loop และไม่ต้องใช้ STP VXLAN/EVPN Fabric ที่ใช้ VXLAN Overlay บน Layer 3 Underlay พร้อม EVPN Control Plane สำหรับ MAC Learning ให้ Layer 2 Connectivity ข้าม Layer 3 Network โดยไม่ต้องใช้ STP MC-LAG หรือ vPC (virtual Port Channel) ที่ให้ Active-Active Link ไปยัง 2 Switch โดยไม่ต้อง Block Link ใดเลย SD-Access/SD-WAN ที่ใช้ Software-Defined Networking ที่ Automate Network Configuration รวมถึง Loop Prevention
Arguments For STP
แม้จะมี Technology ใหม่ STP ยังคงจำเป็นด้วยเหตุผลหลายประการ Legacy Infrastructure องค์กรส่วนใหญ่ยังมี Layer 2 Network ที่ใช้ STP การเปลี่ยนเป็น Layer 3 Everywhere หรือ VXLAN/EVPN ต้องใช้เวลาและ Budget Small/Medium Networks สำหรับ Network ขนาดเล็กถึงกลาง STP เพียงพอและง่ายกว่า Technology อื่น Safety Net แม้ใน Network ที่ Design เป็น Layer 3 Everywhere อาจยังมี Layer 2 Segment อยู่ (เช่น VLAN ภายใน Access Layer) STP ทำหน้าที่เป็น Safety Net ป้องกัน Loop ในกรณีที่มี Misconfiguration Certification และ Knowledge STP เป็น Fundamental Knowledge ที่ Network Engineer ต้องรู้ ทุก Certification Exam (CCNA, CCNP, JNCIA, JNCIS) ยังมี STP เป็นหัวข้อหลัก
แนวทางสำหรับ Network ในปี 2026
สำหรับ Network ใหม่ที่ออกแบบจากศูนย์ พิจารณา Layer 3 Everywhere Design ด้วย OSPF/BGP หรือ VXLAN/EVPN Fabric ตาม Scale และ Requirements แม้จะใช้ Technology เหล่านี้ ยังควร Configure STP เป็น Safety Net สำหรับ Layer 2 Segment ที่เหลืออยู่ สำหรับ Network ที่มีอยู่แล้ว Optimize STP Configuration ตาม Best Practices ที่กล่าวมา ใช้ Rapid PVST+ หรือ MSTP เพื่อ Fast Convergence เปิด Protection Features ทั้งหมด (PortFast, BPDU Guard, Root Guard, Loop Guard, UDLD) วางแผน Migration ไปยัง Technology ใหม่เป็น Phase ไม่ต้องเปลี่ยนทั้งหมดพร้อมกัน
สรุป: STP เป็น Fundamental Knowledge ที่ Network Engineer ต้องเชี่ยวชาญ
Spanning Tree Protocol แม้จะเป็น Technology ที่มีมานานกว่า 40 ปี แต่ยังคงเป็นส่วนสำคัญของ Network Infrastructure ในปี 2026 Layer 2 Loop ยังคงเป็นภัยคุกคามที่ร้ายแรง สามารถทำให้ Network Down ได้ภายในไม่กี่วินาที และ STP (โดยเฉพาะ RSTP และ MSTP) เป็น First Line of Defense ต่อ Loop
Key Takeaway สำหรับ Network Engineer คือ เข้าใจ STP Operation อย่างลึกซึ้ง ตั้งแต่ Root Bridge Election, Port Roles, Port States, Timers ไปจนถึง Convergence Mechanism ใช้ Rapid PVST+ หรือ MSTP แทน Original STP เพื่อ Convergence Time ที่เร็วขึ้น กำหนด Root Bridge ด้วยมือเสมอ ไม่ปล่อยให้ Default Priority ตัดสินใจ เปิด Protection Features ทั้งหมดคือ PortFast และ BPDU Guard บน Access Port, Root Guard บน Designated Port ที่ไม่ควรรับ Superior BPDU, Loop Guard บน Root Port และ Alternate Port, UDLD บน Fiber Link Monitor STP อย่างสม่ำเสมอ ดู Topology Change Counter, Port State Changes และ Root Bridge Changes
STP อาจไม่ใช่ Technology ที่น่าตื่นเต้นที่สุดใน Network แต่เป็น Technology ที่สำคัญที่สุดตัวหนึ่ง เพราะเมื่อ STP ทำงานถูกต้อง ไม่มีใครสังเกตเห็น แต่เมื่อ STP ไม่ทำงาน ทุกคนในองค์กรจะรู้ทันที Network Engineer ที่เข้าใจ STP อย่างลึกซึ้งจะสามารถ Design Network ที่ Resilient, Troubleshoot ปัญหาได้เร็ว และป้องกันปัญหาก่อนเกิด เป็น Skill ที่จำเป็นต้องมีไม่ว่า Technology จะเปลี่ยนไปอย่างไร