รู้จัก Radia Perlman และเรียนรู้ว่า Spanning Tree Protocol ป้องกันลูปอีเธอร์เน็ต ทำให้มีความซ้ำซ้อน และทำให้เครือข่ายขนาดใหญ่เสถียรและเชื่อถือได้อย่างไร

Ethernet เริ่มจากการเป็นวิธีง่าย ๆ ในการเชื่อมคอมพิวเตอร์ภายในอาคารเดียวกัน เมื่อขยายไปยังสำนักงาน แคมปัส และศูนย์ข้อมูล ความคาดหวังก็เปลี่ยนไป: เครือข่ายท้องถิ่นไม่ได้เป็นแค่สิ่ง “ที่ดีถ้ามี” อีกต่อไป—มันกลายเป็นระบบท่อสำหรับอีเมล ไฟล์ ปริ้นเตอร์ โทรศัพท์ และกระบวนการธุรกิจทั้งระบบ เมื่อท่อเหล่านี้ล้ม เหนือต้นน้ำก็ล้มตามด้วย
ผู้สร้างเครือข่ายยังได้บทเรียนเรื่องความน่าเชื่อถือ: ถ้าคุณออกแบบเครือข่ายให้มีทางเดียวระหว่างอุปกรณ์ การขาดของสายหรือสวิตช์ตัวเดียวอาจทำให้ทั้งพื้นที่ล่ม การแก้ที่ชัดเจนคือความซ้ำซ้อน—เพิ่มสายและสวิตช์สำรอง
แต่ที่เลเยอร์ 2 ของ Ethernet ความซ้ำซ้อนมาพร้อมผลด้านอันตราย: ลูป
Radia Perlman ออกแบบ Spanning Tree Protocol (STP) กลไกที่ทำให้เครือข่าย Ethernet มีความซ้ำซ้อนโดยไม่พังจากลูป ผลงานของเธอไม่ใช่การขยายท่อให้ใหญ่ขึ้น แต่เป็นวิธีแบบกระจายที่ปฏิบัติได้จริงให้สวิตช์ประสานงาน ตกลงกันบนโครงสร้างการส่งข้อมูลที่ปลอดภัย และปรับตัวอัตโนมัติเมื่อโทโปโลยีเปลี่ยน
STP เป็นระบบที่คุณมักสังเกตได้เมื่อมันหายไปหรือถูกตั้งค่าผิด เมื่อมันทำงาน ทุกอย่างดูปกติ: ทราฟฟิกไหล ลิงก์ยังคงใช้งานได้ และเครือข่ายทนต่อความล้มเหลว มันบล็อกพาธเพียงพอที่จะป้องกันลูป ในขณะเดียวกันก็เตรียมทางเลือกไว้เมื่อเส้นทางที่ใช้งานอยู่ขาด
เราจะทำให้ปัญหาชัดเจนด้วยการแสดงว่าลูปอีเธอร์เน็ตเป็นอย่างไรและทำไมมันถึงสร้างพายุและการล่ม จากนั้นจะอธิบายแนวคิดหลักของ STP—วิธีที่มันรักษาความซ้ำซ้อนแต่ขจัดลูป—และอธิบายแบบง่าย ๆ ว่าสวิตช์ตัดสินใจอย่างไรว่าลิงก์ไหนส่งข้อมูลและลิงก์ไหนรอเป็นสำรอง เมื่อจบคุณจะมีโมเดลเชิงสัญชาตญาณว่าทำไม STP ถึงกลายเป็นพื้นฐานของการสวิตช์เลเยอร์ 2 และทำไมการออกแบบของ Perlman ยังคงสำคัญแม้ Ethernet จะขยายตัวไปไกลจากรากสำนักงานเดิม
เครือข่าย Ethernet ยุคแรกมักเล็กและตรงไปตรงมา: เครื่องไม่กี่เครื่องเชื่อมบนเซ็กเมนต์เดียว หรือสวิตช์ไม่กี่ตัว (หรือ "bridge" ในคำเก่า) เชื่อมเซ็กเมนต์เข้าด้วยกัน ถ้าสายเดียวถูกถอด ผู้ใช้จะสังเกตเห็น แต่การล้มเหลวเข้าใจได้ง่าย
เมื่อองค์กรเพิ่มห้อง ชั้น และอาคาร เครือข่ายไม่ได้เติบโตตามแบบแปลนชัดเจน แต่มันเติบโตเหมือนสิ่งมีชีวิต: สวิตช์ใหม่ที่นี่ สายฉุกเฉินที่นั่น การแก้ปัญหาชั่วคราวที่กลายเป็นถาวร
เมื่อเครือข่ายขยายแบบนี้ ลิงก์พิเศษจะถูกเพิ่มด้วยเหตุผลทางปฏิบัติ:
แต่ละการเปลี่ยนแปลงดูเหมือนไม่อันตราย เมื่อรวมกันแล้วอาจสร้างทางหลายเส้นระหว่างสวิตช์เดียวกัน
ความซ้ำซ้อนเป็นสิ่งที่ต้องการเพราะช่วยเพิ่มเวลาให้บริการ หากลิงก์หนึ่งเสีย ทราฟฟิกสามารถใช้เส้นทางอื่นได้ ผู้ใช้จึงยังคงทำงานได้
แต่ที่เลเยอร์ 2 (การสวิตช์) Ethernet ไม่ได้ออกแบบให้เลือกเส้นทางเดียวโดยอัตโนมัติ สวิตช์ส่งเฟรมตามที่อยู่ที่เรียนรู้มา และถ้าไม่มีการควบคุมร่วมกัน หลายเส้นทางสามารถสร้างลูปได้
นี่คือความตึงเครียดหลัก: การเพิ่มสายอาจเผลอทำให้เครือข่ายพัง การเชื่อมต่อที่เพิ่มมาเพื่อให้ปลอดภัยกลับสามารถสร้างสภาวะให้ทราฟฟิกหมุนเวียนไม่รู้จบ Spanning Tree ถูกสร้างขึ้นเพื่อเก็บประโยชน์ของความซ้ำซ้อนในขณะเดียวกันก็ป้องกันการล่มที่เกิดจากความผิดพลาดเหล่านี้
ลูปการสวิตช์อีเธอร์เน็ตเกิดขึ้นเมื่อมีเส้นทางเลเยอร์ 2 ที่ใช้งานได้สองเส้นทางหรือมากกว่าไปยังสวิตช์ตัวเดียวกัน มักเกิดจากการเพิ่มสายสำรอง การเสียบ uplink สองเส้นเข้าเครือข่ายเดียวกัน หรือการเชื่อมสวิตช์เป็นวงโดยไม่มีการควบคุม เฟรมไม่มีขีดจำกัดจำนวนฮ็อปที่เลเยอร์ 2 จึงสามารถหมุนเวียนได้ไม่จำกัด
ทราฟฟิกบางชนิดต้องถูกฟลัด เช่น broadcast (เช่น ARP) และเฟรมที่มีปลายทางไม่ทราบ (unknown destination) ในลูป เฟรมที่ถูกฟลัดจะถูกคัดลอกและส่งไปรอบวง จากนั้นถูกคัดลอกอีก และอีก
ตัวอย่างง่าย ๆ: เครื่องพีซีถามว่า "ใครมี 10.0.0.5?" ด้วย ARP (broadcast) เมื่อมีลูป สวิตช์แต่ละตัวจะทำสำเนา broadcast ออกหลายพอร์ต และสำเนาที่ซ้ำกันจะกลับมาถึงสวิตช์อีกครั้ง เร็ว ๆ นี้ ลิงก์และซีพียูของสวิตช์จะใช้เวลาส่วนใหญ่ไปกับการจัดการสำเนาจนแทบไม่มีที่ว่างให้ทราฟฟิกจริง
สวิตช์เรียนรู้ตำแหน่งของอุปกรณ์โดยดูว่าที่มาของ MAC address มาจากพอร์ตใด ในลูป เฟรมของอุปกรณ์เดียวกันอาจมาถึงหลายพอร์ตภายในมิลลิวินาที สวิตช์จะคอยเปลี่ยนคำตอบว่า MAC นั้นอยู่ที่พอร์ตไหน เขียนทับตารางซ้ำ ๆ ผลลัพธ์คือทราฟฟิกถูกส่งไปผิดพอร์ต แล้วถูกฟลัด แล้วถูกรื้อเรียนรู้ใหม่อีกครั้ง
ผลรวมเหล่านี้รวมเป็นอาการที่คนคุ้นเคย: ความช้าทั่วทั้งเครือข่าย การตัดการเชื่อมต่อเป็นพัก ๆ โทรศัพท์ตกการเชื่อมต่อ Wi‑Fi "ใช้งานได้แต่ใช้งานไม่ได้" และบางครั้งเป็นการล่มสมบูรณ์เมื่อสวิตช์อิ่มตัวและไม่ตอบสนอง สายแพตช์เพียงเส้นเดียวสามารถทำให้ล่มมากกว่าตัวอุปกรณ์สองตัวที่มันเชื่อมต่ออยู่
Ethernet ได้ความทนทานจากการมี มากกว่าหนึ่งเส้นทางเป็นไปได้ ระหว่างสวิตช์ หากสายขาด ทราฟฟิกสามารถใช้เส้นทางอื่นได้ ข้อแม้คือเส้นทางพิเศษอาจสร้างวงจรโดยไม่ได้ตั้งใจ—และเฟรมอีเธอร์เน็ตไม่มีฟิลด์ "time to live" เพื่อหยุดการหมุนเวียน
Spanning Tree Protocol (STP) แก้ปัญหานี้ด้วยข้อตกลงง่าย ๆ: ให้เก็บลิงก์สำรองไว้เชิงกายภาพ แต่ปิดการใช้งานเชิงตรรกะบางเส้นเพื่อให้เครือข่ายที่ใช้งานจริงเป็นต้นไม้ไร้ลูป
คิดถึงเมืองที่สร้างถนนเพิ่มเพื่อให้รถพยาบาลเข้าถึงทุกย่านได้ถ้ามีการปิดเส้นทาง ถ้าเมืองเปิดถนนทุกเส้นโดยไม่มีระเบียบ จะเกิดเส้นทางวงกลมที่คนขับอาจขับวนรอบบล็อกเดิมได้
STP ทำหน้าที่เหมือนการควบคุมการจราจร:
ส่วนสำคัญของการออกแบบของ Radia Perlman คือมันไม่พึ่งพาคอนโทรลเลอร์ที่สั่งสวิตช์ทุกตัว แต่ สวิตช์แต่ละตัวมีส่วนร่วม แลกเปลี่ยนข้อความเล็ก ๆ และตัดสินใจเองถึงผลสรุปเดียวกันว่าลิงก์ไหนควรส่งและลิงก์ไหนควรรอ
นั่นทำให้ STP ปฏิบัติได้ในเครือข่ายจริง: คุณสามารถเพิ่มสวิตช์ ถอดลิงก์ หรือเผชิญความล้มเหลว แล้วเครือข่ายจะมาบรรจบกันบนรูปแบบการส่งข้อมูลที่ปลอดภัย
หากทำถูกวิธี STP ให้ผลลัพธ์สองอย่างที่มักขัดแย้งกัน:
STP มีงานเดียว: เก็บความซ้ำซ้อนของ Ethernet โดยไม่ให้ทราฟฟิกหมุนไปไม่รู้จบ มันทำได้โดยการทำให้สวิตช์ทุกตัวตกลงบนชุดลิงก์ที่ "ดีที่สุด" ในขณะนั้นเรียกว่า spanning tree และตั้งค่าลิงก์ส่วนเกินให้อยู่ในสถานะสแตนด์บาย
STP เริ่มด้วยการเลือก root bridge สวิตช์ที่ถูกเลือกเป็นจุดอ้างอิงของทั้งเครือข่าย คิดว่ามันเป็น "ศูนย์กลางของแผนที่" Root ถูกกำหนดจากค่าความสำคัญ (priority) และตัวระบุสวิตช์ที่เป็นเอกลักษณ์ ค่าที่ต่ำกว่าจะชนะ
ทุกสวิตช์ถามตัวเองว่า: "ทางที่ดีที่สุดของฉันไปยัง root คืออะไร?" STP กำหนด path cost ให้แต่ละลิงก์ (ลิงก์เร็วมักได้ cost ต่ำกว่า) แต่ละสวิตช์รวมค่า cost ตามเส้นทางที่เป็นไปได้และเลือกผลรวมที่ต่ำที่สุด
พอร์ตที่สวิตช์ที่ไม่ใช่ root ใช้เพื่อไปยัง root ตามเส้นทางที่ดีที่สุดนั้นจะเป็น root port
ในแต่ละการเชื่อมต่อระหว่างสวิตช์ STP ต้องการให้มีสวิตช์เพียงตัวเดียวที่ส่งทราฟฟิกไปทาง root พอร์ตที่ส่งนี้คือ designated port ฝั่งของสวิตช์ที่ประกาศเส้นทางไปยัง root ที่มี cost ต่ำสุดบนเซ็กเมนต์นั้นจะได้บทบาท designated
พอร์ตที่ไม่ถูกเลือกเป็น root port หรือ designated port จะถูกตั้งเป็น blocking (หรือสถานะไม่ส่งในเวอร์ชันใหม่) การบล็อกไม่ได้ถอดสายหรือทำให้ความซ้ำซ้อนหายไป แต่เพียงหยุดไม่ให้พอร์ตนั้นส่งเฟรมอีเธอร์เน็ตตามปกติ เพื่อไม่ให้เกิดลูป หากลิงก์ที่ใช้งานอยู่ล้ม STP สามารถยกเลิกการบล็อกเส้นทางสำรองและรักษาการเชื่อมต่อไว้ได้
ให้เราใช้เครือข่ายเล็ก ๆ ที่มีสวิตช์สี่ตัวเป็นตัวอย่าง:
STP เริ่มด้วยการเลือก root bridge แต่ละสวิตช์ประกาศ bridge ID และ ID ที่ต่ำสุดชนะ สมมติว่า S1 มี bridge ID ต่ำสุด ตอนนี้ทุกคนตกลงกันว่า S1 เป็น root
สวิตช์ที่ไม่ใช่ root แต่ละตัวเลือกพอร์ตเดียวเป็น root port คือพอร์ตที่ให้เส้นทางที่ดีที่สุดกลับไปยัง S1
สำหรับแต่ละลิงก์ STP เลือกฝั่งเดียวเป็น designated port พอร์ตใดที่ไม่ใช่ root port หรือ designated port จะกลายเป็น blocking
ในตัวอย่างนี้ ลิงก์ S3–S4 เป็นจุดที่ลูปถูกตัด ถ้า S3 ถึง root ผ่าน S2 อยู่แล้ว STP สามารถตั้ง พอร์ตของ S3 ไปหา S4 (หรือพอร์ตของ S4 ไปหา S3 ขึ้นกับการตัดสิน) ให้เป็น blocking
ผลลัพธ์: สายทุกเส้นยังคงเสียบอยู่ แต่มี เส้นทางใช้งานจริงเดียว ระหว่างจุดสองจุด—ไม่มีลูป
ถ้าเส้นทางที่ใช้งานอยู่ขาด (เช่น S2–S3 เสีย) STP จะประเมินใหม่ ลิงก์ที่เคยถูกบล็อก S3–S4 อาจเปลี่ยนเป็นส่งคืนการเชื่อมต่อผ่าน S3 → S4 → S1
การเปลี่ยนแปลงนี้ไม่เกิดขึ้นทันที STP ต้องการเวลาให้คืนสภาพ (convergence) เพื่ออัปเดตสถานะการส่งข้อมูลอย่างปลอดภัยโดยไม่กลับไปสร้างลูป
Spanning Tree จะทำงานได้ก็ต่อเมื่อสวิตช์ทุกตัวในเครือข่ายตกลงกันในกฎเดียวกัน นั่นคือเหตุผลที่มาตรฐานสำคัญ: เครือข่ายจริงมักมีอุปกรณ์จากหลายผู้ผลิต หากไม่มีโปรโตคอลที่ใช้ร่วมกัน ฟีเจอร์ป้องกันลูปของยี่ห้อหนึ่งอาจไม่เข้าใจฟีเจอร์ของอีกยี่ห้อ และความซ้ำซ้อนอาจกลายเป็นการล่ม
Spanning Tree แบบดั้งเดิมถูกกำหนดใน IEEE 802.1D คุณไม่จำเป็นต้องอ่านข้อกำหนดทั้งหมดเพื่อได้ประโยชน์—แต่ข้อสำคัญคือ 802.1D ให้ภาษากลางแก่ผู้ขายต่าง ๆ ในการเลือก root bridge คำนวณ path cost และตัดสินใจว่าพอร์ตใดควรส่งหรือบล็อก
แม้เมื่อคุณย้ายไปยังเวอร์ชันใหม่กว่า (เช่น RSTP หรือ MSTP) เหตุผลที่อัปเกรดได้เพราะพฤติกรรมมาตรฐานเพียงพอที่จะให้เครื่องหลายยี่ห้อประสานงานกันได้
สวิตช์ประสานงานด้วยเฟรมควบคุมขนาดเล็กที่เรียกว่า BPDUs (Bridge Protocol Data Units) คิดว่า BPDU เป็น "ข้อความทักทาย" ของ STP: มันบรรจุข้อมูลที่สวิตช์ต้องการเพื่อสร้างมุมมองโทโปโลยีร่วมกัน—ใครคิดว่าเป็น root, ระยะทาง (cost), และข้อมูลด้านเวลา
เพราะ BPDU ถูกแลกเปลี่ยนอย่างต่อเนื่อง STP สามารถตอบสนองเมื่อมีการเปลี่ยนแปลง หากลิงก์เสีย การสนทนา BPDU ก็เปลี่ยนและสวิตช์จะคืนสภาพและเปิดพาธที่ถูกบล็อกก่อนหน้านี้
เรื่องที่มักเกิดในทางปฏิบัติ: ผู้ขายมักใช้ชื่อต่างกันสำหรับตัวเลือกเดียวกัน การตั้งค่าอย่าง "port cost", "edge/PortFast", หรือ "bpdu guard" อาจอยู่ในเมนูหรือคำอธิบายที่ต่างกัน แนวคิดพื้นฐานของ STP คงที่ แต่คำศัพท์บนอินเตอร์เฟซไม่แน่นอน—ดังนั้นแปลคุณสมบัติกลับเป็นสิ่งที่ 802.1D พยายามทำจะช่วยได้
STP แบบคลาสสิก (IEEE 802.1D) แก้ลูปได้ แต่การรักษาหลังจากลิงก์หรือสวิตช์เสียอาจช้ามาก เพราะ STP ระมัดระวัง พอร์ตไม่ได้เริ่มส่งทันที แต่ต้องผ่านสถานะที่หน่วงเวลา (blocking → listening → learning → forwarding) ด้วยตัวจับเวลามาตรฐาน การคืนสภาพอาจใช้เวลาหลายสิบวินาที (มัก ~30–50 วินาที) พอทำให้การโทรเสียงหลุด แอปพลิเคชันหมดเวลา หรืผู้ใช้คิดว่า "เครือข่ายล่ม"
Rapid Spanning Tree Protocol (RSTP, IEEE 802.1w) ยังคงเป้าหมายเดิม—การส่งข้อมูลไร้ลูปพร้อมความซ้ำซ้อน—แต่เปลี่ยนวิธีที่สวิตช์มาบรรจบกัน
แทนที่จะรอเวลาคงที่นาน RSTP ใช้การจับมือที่เร็วขึ้นระหว่างสวิตช์เพื่อยืนยันว่าพอร์ตใดสามารถส่งได้อย่างปลอดภัย มันยังรู้ด้วยว่าพอร์ตบางชนิดควรข้ามไปเป็นส่งทันที:
พูดง่าย ๆ: RSTP ยังคงบล็อกลิงก์ที่ถูกต้องเพื่อป้องกันลูป แต่ไม่พิจารณาการเปลี่ยนแปลงทุกครั้งเหมือนเป็นกรณีแย่ที่สุด
เมื่อเครือข่ายขยาย การรันต้นไม้เดียวสำหรับทุกอย่างอาจจำกัด โดยเฉพาะเมื่อมีหลาย VLAN และโทโปโลยีซับซ้อน Multiple Spanning Tree Protocol (MSTP, IEEE 802.1s) ช่วยให้สร้าง อินสแตนซ์หลายต้นไม้ และจับกลุ่ม VLAN ให้กับแต่ละอินสแตนซ์
นั่นหมายความว่าคุณสามารถ:
หัวใจสำคัญในการพัฒนา STP → RSTP → MSTP คือ: รักษาความซ้ำซ้อน ป้องกันลูป และคืนสภาพได้เร็วและคาดเดาได้มากขึ้น
ประโยชน์ที่มักถูกประเมินค่าต่ำที่สุดของ Spanning Tree คือมันแปลง "สายและสวิตช์เพิ่มเติม" ให้เป็นความน่าเชื่อถือที่คาดเดาได้ ในเครือข่ายระดับองค์กร—ตู้สวิตช์หลายแห่ง สวิตช์เข้าถึงจำนวนมาก การย้าย/เพิ่ม/เปลี่ยนแปลงอย่างต่อเนื่อง—ความซ้ำซ้อนของเลเยอร์ 2 อาจเป็นของขวัญหรือกับดัก STP ทำให้มันมีโอกาสเป็นของขวัญมากขึ้น
เครือข่ายขนาดใหญ่ไม่ค่อยล้มเพราะสายเส้นเดียวขาด แต่ล้มเพราะการคืนสภาพยุ่งเหยิง STP ช่วยโดยให้วิธีควบคุมที่เครื่องมือสามารถตอบสนองเมื่อมีการเปลี่ยนแปลง:
หลายองค์กรเปิดใช้ STP แม้คิดว่าโทโปโลยีของตนปลอดลูป เหตุผลคือเชิงปฏิบัติ: คนผิดพลาด เอกสารเลือนลาง และทางเชื่อมเลเยอร์ 2 ที่ไม่คาดคิดปรากฏขึ้น หากมี STP สายแพตช์พลาด ๆ มักจะทำให้พอร์ตถูกบล็อกมากกว่าจะทำให้ทั้งอาคารล่ม
ศูนย์ข้อมูลสมัยใหม่มักชอบสถาปัตยกรรม leaf–spine แบบเลเยอร์ 3 หรือเทคโนโลยีหลายพาธเลเยอร์ 2 เฉพาะทางเพื่อให้แบนด์วิดท์ active/active โดยไม่ต้องพึ่งการคืนสภาพแบบ STP ที่ดั้งเดิม อย่างไรก็ดี STP (หรือ RSTP/MSTP) ยังคงใช้ในเครือข่ายแคมปัส ขอบเครือข่าย และเป็นชั้นความเข้ากันได้เมื่อเลเยอร์ 3 ไม่สะดวก
ในระดับใหญ่ ผลงานจริงของ STP คือการทำให้ความซ้ำซ้อนจัดการได้สำหรับทีมปฏิบัติการทั่วไป ไม่ใช่แค่ผู้เชี่ยวชาญ
STP แนวคิดง่าย—ป้องกันลูปเลเยอร์ 2 ในขณะที่เก็บเส้นทางสำรอง—แต่มีตำนานบางอย่างที่ทำให้คนปิดมัน ตั้งค่าผิด หรือลอง "ปรับแต่ง" จนเกิดการล่ม
จริงที่เครือข่ายสมัยใหม่มักพึ่งเราต์ติ้งเลเยอร์ 3, MLAG, และ overlay ที่ลดความจำเป็นของ IEEE 802.1D แต่ STP (หรือเวอร์ชันใหม่อย่าง RSTP/MSTP) ยังคงเป็นตาข่ายนิรภัยทุกที่ที่ Ethernet อาจเกิดลูปโดยไม่ตั้งใจ: สวิตช์เข้าถึง เครือข่ายเหตุการณ์ชั่วคราว ห้องทดลอง สาขาขนาดเล็ก และสภาพแวดล้อมที่ใครสักคนอาจเสียบพอร์ตสองพอร์ตเข้าด้วยกันเพื่อทดสอบ
การปิด STP อาจเปลี่ยนความผิดพลาดในการเดินสายเป็นพายุ broadcast ที่ล้ม VLAN ทั้งหมดได้
พอร์ตที่ถูกบล็อกไม่ใช่ "ตาย" มันคือเส้นทางสแตนด์บายที่ผ่านการตรวจสอบแล้ว STP แลกความจุที่ใช้งานอยู่บางส่วนแลกกับความเสถียร: หากลิงก์ส่งล้ม ลิงก์ที่บล็อกสามารถกลายเป็นเส้นทางใหม่โดยไม่ต้องให้คนมาทำงานแข่งกับเวลา
ทีมบางครั้งพยายามให้ลิงก์ทั้งหมดส่งโดยปิด STP แบน VLAN ให้แบน หรือต่อสวิตช์ไร้การจัดการ ซึ่งอาจดูมีประสิทธิภาพ—แต่มักจะล้มเมื่อเกิดลูปแรก
ความซ้ำซ้อนช่วยได้เมื่อออกแบบมา การเพิ่ม cross-link ระหว่างสวิตช์โดยไม่วางแผนเพิ่มจำนวนกรณีลูปที่เป็นไปได้และทำให้พฤติกรรม STP ยากต่อการคาดเดา ผลลัพธ์อาจเป็นเส้นทางทราฟฟิกที่ไม่คาดคิด พอร์ต uplink ที่ถูกบล็อก หรืการคืนสภาพที่ช้ากว่าหลังเกิดความล้มเหลว
แม้จะเปิดใช้ STP แต่การตั้งค่าผิดก็ทำให้เกิดปัญหาจริงได้:
ข้อสรุป: STP ไม่ใช่แค่กล่องให้ติ๊ก—มันคือเพลนคอนโทรล ปฏิบัติกับมันเช่นนั้น จัดทำเอกสารเจตนา และทดสอบการเปลี่ยนแปลงก่อนใช้งานทั่วทั้งระบบ
ปัญหา STP มักแสดงออกเป็น "เครือข่ายช้า" ก่อนที่ใครจะรู้ว่ามีปัญหาเลเยอร์ 2 การตรวจสอบที่มุ่งเป้าไม่กี่จุดสามารถประหยัดเวลาได้มาก
เมื่อเกิดลูปหรือความไม่เสถียรของ STP คุณจะมักเห็น:
เริ่มจากพื้นฐาน:
สุขอนามัย STP ที่ดีเป็นเรื่องกระบวนการ:
ถ้าคุณต้องการรายการตรวจสอบที่กว้างขึ้นสำหรับการแยกปัญหาเครือข่ายนอกเหนือจาก STP ให้ดูบทความพื้นฐานการแก้ปัญหาเครือข่าย
STP เป็นตัวอย่างที่ดีของ "โครงสร้างพื้นฐานเงียบ" และมักล้มในวิธีที่เป็นมนุษย์มาก: เจตนาไม่ชัดเจน สายไม่มีเอกสาร การตั้งค่าที่ไม่สอดคล้อง และการแก้ปัญหาแบบพิสดาร วิธีปฏิบัติหนึ่งเพื่อลดความเสี่ยงคือสร้างเครื่องมือภายในและ runbook เบา ๆ
กับ Koder.ai ทีมสามารถสร้างแดชบอร์ดขนาดเล็กหรือยูทิลิตี้จากการแชทได้อย่างรวดเร็ว—เช่น เครื่องมือที่ดึงเอาผลลัพธ์จากสวิตช์ มาร์กจุด root bridge ปัจจุบัน แจ้งพอร์ตที่ถูกบล็อกโดยไม่คาดคิด หรือเก็บเหตุการณ์ topology-change เพื่อวิเคราะห์เมื่อเวลาผ่านไป เพราะ Koder.ai รองรับการส่งออกซอร์สโค้ดและการ deploy/โฮสต์แอป (พร้อม rollback และ snapshot) มันจึงเป็นวิธีที่สะดวกในการเปลี่ยนความรู้ในหัวคนให้เป็นบริการภายในที่ดูแลรักษาได้ ไม่ใช่สคริปต์บนแลปท็อปคนใดคนหนึ่ง
ผลงาน spanning tree ของ Radia Perlman เตือนใจว่าโครงสร้างพื้นฐานที่สำคัญที่สุดบางอย่างไม่ต้องดูหรูหรา—มันแค่ป้องกันความโกลาหล ด้วยการให้ Ethernet ใช้ลิงก์ซ้ำซ้อนได้อย่างปลอดภัยโดยไม่สร้างลูป STP ทำให้การเพิ่ม "ทางสำรอง" เป็นค่าเริ่มต้นที่ปลอดภัย ไม่ใช่การทดลองที่เสี่ยง สิ่งนี้เอื้อให้เครือข่ายเลเยอร์ 2 ขนาดใหญ่และยืดหยุ่นขึ้นในองค์กร แคมปัส และศูนย์ข้อมูล
STP สมมติว่าจะมีข้อผิดพลาดเกิดขึ้น: สายถูกเสียบผิด สวิตช์รีบูท ลิงก์กระพริบ แทนที่จะหวังให้ผู้ปฏิบัติงานไม่ผิดพลาด มันสร้างระบบที่รับความผิดพลาดได้และยังกลับมาสู่สถานะที่ปลอดภัยได้ บทเรียนนี้กว้างกว่าเครือข่าย: ให้โหมดล้มเหลวเป็นข้อกำหนดแรก
Spanning Tree จงใจบล็อกลิงก์บางเส้นเพื่อให้เครือข่ายโดยรวมเสถียร ความจุที่เป็น "หัวเสีย" นี้เป็นการแลกเพื่อพฤติกรรมที่คาดเดาได้ ระบบที่ดีมักสำรองพื้นที่ว่าง—เวลาเพิ่มเติม การตรวจสอบเพิ่มเติม หรือการป้องกันเพิ่มเติม—เพราะการหลีกเลี่ยงความล้มเหลวรุนแรงมีค่าสูงกว่าการรีดเอาประสิทธิภาพปลีกย่อย
STP ทำงานเพราะสวิตช์ทุกตัวทำตามกฎแบบกระจายเดียวกันและแลกข้อความควบคุมเล็ก ๆ เพื่อเห็นพ้องกันว่าโทโปโลยีไร้ลูป คุณไม่จำเป็นต้องให้ผู้ปฏิบัติงานมาปิดพอร์ตด้วยตนเองเมื่อเปลี่ยนอะไรครั้งละมาก ๆ ข้อสรุป: เมื่อต้องให้หลายส่วนร่วมมือกัน ลงทุนในโปรโตคอลและค่าเริ่มต้นที่ทำให้พฤติกรรมที่ปลอดภัยเป็นพฤติกรรมที่ง่ายที่สุด
ถ้าจำได้แค่นิดเดียว ให้จำสิ่งเหล่านี้: สร้างความซ้ำซ้อน สมมติความผิดพลาดของมนุษย์ และอัตโนมัติ "ทางเลือกที่ปลอดภัย" แนวคิดนี้—มากกว่าฟีเจอร์ใดฟีเจอร์หนึ่ง—อธิบายว่าทำไม spanning tree จึงกลายเป็นของจำเป็นที่เงียบเชียบ
ถ้าคุณต้องการพื้นฐานเครือข่ายที่เข้าถึงได้มากขึ้น ลองอ่านบทความเพิ่มเติม
การเกิดลูประดับ Layer 2 เกิดขึ้นเมื่อสวิตช์มีเส้นทางระดับเลเยอร์ 2 มากกว่าหนึ่งเส้นทางระหว่างส่วนเดียวกัน ทำให้เกิดวงจร เพราะเฟรมอีเธอร์เน็ตไม่มีขีดจำกัดจำนวนฮ็อป (hop limit) การรับส่งแบบฟลัด เช่น broadcast และ unknown unicast จึงสามารถหมุนเวียนไปเรื่อย ๆ และเพิ่มจำนวนขึ้นจนลิงก์และซีพียูของสวิตช์ถูกครอบงำได้
การเพิ่มลิงก์สำรองสร้างเส้นทางทางเลือก แต่ถ้าไม่มีการประสานสวิตช์อาจส่งข้อมูลผ่านทุกเส้นทางพร้อมกัน ทำให้เกิดลูปที่เฟรมถูกทำสำเนาซ้ำ ๆ เกิดเป็น broadcast storm และการเรียนรู้ MAC ที่ไม่เสถียร ซึ่งมักทำให้เกิดการล่มของเครือข่ายทั้ง VLAN จากสายแพตช์เส้นเดียว
STP ปล่อยให้ลิงก์สำรองยังคงเชื่อมต่อทางกายภาพไว้ แต่ปิดการใช้งานพอร์ตบางพอร์ตเชิงตรรกะ เพื่อให้โทโพลยีที่ใช้งานจริงเป็นรูปแบบต้นไม้ไร้ลูป เมื่อเส้นทางหลักล้มเหลว STP สามารถเปลี่ยนพอร์ตที่ถูกบล็อกให้เป็นพอร์ตส่งได้เพื่อคืนการเชื่อมต่อ
STP เลือกสวิตช์ตัวหนึ่งเป็น root bridge เป็นจุดอ้างอิงของโดเมนเลเยอร์ 2 ตัวสวิตช์ที่มี bridge ID ต่ำสุด (ค่า priority + ตัวระบุ) จะเป็น root การเลือกสวิตช์ที่ตั้งใจให้เป็น core/distribution เป็น root จะช่วยให้เส้นทางการจราจรคาดเดาได้ง่ายขึ้น
แต่ละสวิตช์ที่ไม่ใช่ root เลือกพอร์ตหนึ่งเป็น root port: พอร์ตที่มีผลรวมของ path cost ไปยัง root ต่ำที่สุด ค่า path cost มักขึ้นกับความเร็วของลิงก์ (ลิงก์เร็วกว่าจะมี cost ต่ำกว่า) และถ้ามีค่าเท่ากันจะใช้การตัดสินด้วยตัวระบุเพื่อให้ผลลัพธ์แน่นอน
สำหรับแต่ละเซ็กเมนต์ที่สวิตช์เชื่อมกัน STP เลือกหนึ่งพอร์ตเป็น designated port ที่จะส่งข้อมูลสำหรับเซ็กเมนต์นั้น ฝั่งที่ประกาศเส้นทางไปยัง root ที่ดีที่สุดจะได้สิทธิเป็น designated พอร์ตใดที่ไม่ใช่ root port หรือ designated port จะถูกตั้งเป็น blocking/discarding ซึ่งช่วยตัดวงจร
พอร์ตที่อยู่ในสถานะบล็อกจะไม่ส่งทราฟฟิกผู้ใช้ตามปกติ จึงไม่สามารถสร้างลูปได้ แต่สายยังคงเชื่อมอยู่และสามารถรับ/ส่งข้อมูลควบคุม STP ได้ หากโทโพลยีเปลี่ยน พอร์ตที่ถูกบล็อกอาจถูกเลื่อนสถานะมาเป็นพอร์ตส่งได้
BPDUs (Bridge Protocol Data Units) เป็นเฟรมควบคุมของ STP ที่สวิตช์ส่งเพื่อแลกข้อมูลโทโพลยี: ใครเห็นว่าเป็น root, ค่า path cost, และข้อมูลด้านเวลา ด้วยการแลก BPDU อย่างต่อเนื่อง สวิตช์จะตรวจพบการเปลี่ยนแปลงและปรับโทโพลยีให้ปลอดภัยได้
STP แบบดั้งเดิม (IEEE 802.1D) อาจใช้เวลาหลายสิบวินาทีในการคืนสภาพเพราะพอร์ตต้องผ่านสถานะที่มีการหน่วงเวลา RSTP (IEEE 802.1w) เร่งการคืนสภาพด้วยการจับมือที่เร็วขึ้นและการเปลี่ยนสถานะอย่างรวดเร็ว โดยเฉพาะพอร์ตที่เป็น edge/PortFast ซึ่งไม่ค่อยสร้างลูป
รายการตรวจสอบเบื้องต้นคือ: