IST · บทที่ 3 Spanning Tree Protocol

หัวข้อ 11 · 20 นาที

Root Bridge, Port role และ Path cost

นึกภาพก่อน

หมู่บ้านที่มีถนนเชื่อมกันหลายสายอยากปิดถนนบางสายเพื่อไม่ให้มีทางวน ต้องตกลงกันสามเรื่อง:

  1. ศูนย์กลางอยู่ที่ไหน — เลือกหมู่บ้านหนึ่งเป็นจุดอ้างอิง
  2. แต่ละหมู่บ้านไปศูนย์กลางทางไหน — เลือกถนนที่ดีที่สุดหนึ่งสาย
  3. ถนนแต่ละสายใครดูแล — ฝั่งที่อยู่ใกล้ศูนย์กลางกว่า

ถนนที่ไม่เข้าข้อ 2 และ 3 ถูกปิด สามข้อนี้คือ Root Bridge, Root Port และ Designated Port

Bridge ID

Bridge ID (8 byte) = Bridge Priority (2 byte) + MAC address (6 byte)

ส่วนรายละเอียด
Bridge Prioritydefault 32768 · ปรับได้เป็น พหุคูณของ 4096 (0, 4096, 8192, …, 61440)
MAC addressตัวตัดสินเมื่อ priority เท่ากัน

ค่าต่ำสุดชนะ ทั้งสองส่วน

เลือก Root Bridge

  1. ตอนเริ่ม ทุก switch อ้างตัวเป็น root และส่ง BPDU ที่ใส่ Bridge ID ของตัวเอง
  2. เมื่อได้รับ BPDU ที่ Bridge ID ต่ำกว่า ก็เลิกอ้าง และส่งต่อ BPDU ของตัวที่ดีกว่า
  3. สุดท้ายเหลือตัวเดียว: Bridge ID ต่ำสุด เป็น Root Bridge — จุดอ้างอิงของทั้ง topology

วิธีเทียบ: priority ก่อน ถ้าเท่ากันจึงดู MAC ต่ำสุด

ตัวอย่างจากสไลด์

SwitchPriorityMACผล
SW132768AAAA…
SW224576BBBB…Root Bridge
SW332768CCCC…

SW2 ชนะเพราะ priority ต่ำสุด แม้ MAC ของ SW1 จะต่ำกว่า — MAC ไม่ถูกดูเลยเมื่อ priority ตัดสินได้แล้ว

อีกตัวอย่าง (สไลด์ชุดเก่า): X, Y, Z มี priority 32768 เท่ากัน MAC คือ 0c0011111111, 0c0022222222, 0c0011110000 → ตัดสินด้วย MAC → Z (0c0011110000) ต่ำสุด เป็น root

Path cost

ความเร็วของลิงก์STP cost (802.1D)
10 Mbps100
100 Mbps19
1 Gbps4
10 Gbps2

Root path cost = ผลรวมของ cost ทุกลิงก์ ตลอดเส้นทางกลับไปยัง root ลิงก์ยิ่งเร็ว cost ยิ่งต่ำ

Port role

Roleกติกาจำนวนสถานะ
Root Port (RP)พอร์ตที่ path cost ไป root ต่ำสุดหนึ่งพอร์ตต่อ non-root switch (root ไม่มี)forward
Designated Port (DP)พอร์ตที่รับหน้าที่ forward ให้ segment นั้นหนึ่งพอร์ตต่อ segment · ทุกพอร์ตบน root bridge เป็น DPforward
Blocking (Nondesignated)พอร์ตที่เหลือ–ไม่ส่ง data แต่ยัง ฟัง BPDU

ขั้นตอนหาคำตอบด้วยมือ

  1. หา Root Bridge — Bridge ID ต่ำสุด
  2. ทุกพอร์ตของ root เป็น DP
  3. หา Root Port ของ non-root switch แต่ละตัว — คำนวณ root path cost ของทุกเส้นทาง เลือกต่ำสุด
  4. แต่ละลิงก์ที่เหลือ: ฝั่งที่ root path cost ต่ำกว่า เป็น DP (ถ้าเท่ากัน ฝั่งที่ Bridge ID ต่ำกว่า) อีกฝั่งเป็น Blocking

ตรวจคำตอบ: ทุกลิงก์ต้องมี DP หนึ่งพอร์ตพอดี · non-root switch ทุกตัวมี RP หนึ่งพอร์ตพอดี · ลิงก์ที่มีพอร์ต Blocking คือลิงก์ที่ถูกตัดออกจากต้นไม้

ตัวอย่างไล่ทีละขั้น

โจทย์: SW1 (32768, AAAA), SW2 (24576, BBBB), SW3 (32768, CCCC) ต่อกันเป็นสามเหลี่ยมด้วยลิงก์ 1 Gbps ทั้งสามเส้น

ขั้น 1: Root Bridge — priority ต่ำสุดคือ SW2 (24576) → SW2 เป็น root

ขั้น 2: พอร์ตของ SW2 ทั้งสองเป็น DP

ขั้น 3: Root Port (ลิงก์ 1 Gbps = cost 4)

Switchทางตรงไป SW2ทางอ้อมRoot Port
SW14ผ่าน SW3: 4 + 4 = 8พอร์ตที่ไป SW2 (cost 4)
SW34ผ่าน SW1: 4 + 4 = 8พอร์ตที่ไป SW2 (cost 4)

ขั้น 4: ลิงก์ SW1–SW3 — ทั้งคู่มี root path cost 4 เท่ากัน → เทียบ Bridge ID: SW1 (32768.AAAA) ต่ำกว่า SW3 (32768.CCCC) → พอร์ตของ SW1 เป็น DP · พอร์ตของ SW3 เป็น Blocking

สรุป

ลิงก์ฝั่งหนึ่งอีกฝั่ง
SW1–SW2SW1: RPSW2: DP
SW2–SW3SW2: DPSW3: RP
SW1–SW3SW1: DPSW3: Blocking

frame จาก SW1 ไป SW3 จึงต้องอ้อมผ่าน SW2 ทั้งที่มีสายตรง นี่คือราคาของการไม่มี loop และเป็นเหตุผลที่ต้องเลือก root ให้ดี

ขั้นที่ 1 / 9เริ่มต้น

รูปแบบ: ชื่อ priority MAC เช่น SW1 32768 AAAA — priority เป็นพหุคูณของ 4096

รูปแบบ: SW1-SW2 ความเร็ว — 10, 100, 1000, 10000 Mbps (cost 100, 19, 4, 2)

cost 4cost 4cost 4SW132768.AAAASW224576.BBBBSW332768.CCCC
switchBridge ID (priority.MAC)path cost
SW132768.AAAA?
SW224576.BBBB?
SW332768.CCCC?
RP = Root PortDP = Designated PortBLK = Blocking★ = Root Bridge
1.0×

คำอธิบายทีละขั้น

Topology มี loop

ลิงก์สำรองทำให้เกิด loop ทาง physical STP จะเลือก Root Bridge เป็นจุดอ้างอิง แล้วกำหนดบทบาทของทุกพอร์ต เพื่อ block พอร์ตให้เหลือเส้นทางเดียวไปยัง root

ลองใน simulation:

  • preset ที่สาม: SW4 มีสองทางไป root — ผ่าน SW2 (4 + 4 = 8) หรือผ่าน SW3 (4 + 19 = 23) ลิงก์ 100 Mbps ทำให้ทางนั้นแพง
  • แก้ priority ของ switch ตัวอื่นเป็น 4096 แล้วดูว่า root และพอร์ตที่ถูก block ย้ายไปไหน

ทำไมต้องกำหนด root เอง

ถ้าปล่อย default ทุกตัวมี priority 32768 → root คือตัวที่ MAC ต่ำสุด ซึ่งมักเป็น switch ที่เก่าที่สุด (และอาจช้าที่สุด หรืออยู่ที่ขอบเครือข่าย) traffic ส่วนใหญ่ต้องวิ่งผ่านมัน จึงควรตั้ง priority ให้ switch แกนกลางเป็น root:

cisco
spanning-tree vlan 1 root primary

จุดที่มักพลาด

1. เทียบ MAC ก่อน priority

priority ก่อนเสมอ MAC ใช้เมื่อ priority เท่ากันเท่านั้น

2. คิดว่าค่าสูงชนะ

STP เลือก ต่ำสุด ทุกเรื่อง: Bridge ID ต่ำสุด, cost ต่ำสุด (ตรงข้ามกับ HSRP และ OSPF DR ที่เลือกสูงสุด)

3. คิดว่า root bridge มี Root Port

root ไม่มี RP ทุกพอร์ตของ root เป็น DP

4. จำ cost ผิด

10 Mbps = 100 · 100 Mbps = 19 · 1 Gbps = 4 · 10 Gbps = 2

5. คิดว่าพอร์ต Blocking ไม่รับอะไรเลย

ยังรับ BPDU เพื่อรู้ว่าเมื่อใดต้องเปิดกลับ

6. ตั้ง priority เป็นค่าอะไรก็ได้

ต้องเป็นพหุคูณของ 4096

7. คิดว่าลิงก์หนึ่งมี DP ได้สองฝั่ง

segment หนึ่งมี DP ได้พอร์ตเดียว อีกฝั่งเป็น RP หรือ Blocking

ที่มา: Spanning Tree Protocol Presentation (1).pdf หน้า 14–18, 27 · chapter2 Switched Network.pdf หน้า 66–71