ข้อสอบเก่า · Q10

Spanning Tree: RP / DP / BP

ข้อ 10 คะแนนที่ไม่ต้องใช้เครื่องคิดเลขเลย — มีแค่การเทียบเลข 3 รอบ (priority → path cost → Bridge ID) ถ้าเดินตามลำดับ 3 ขั้นแบบไม่ข้าม จะได้คำตอบตรงเป๊ะทุกพอร์ต

ระดับกลาง ควรใช้ ~20 นาที 10 คะแนน อ่านคู่กับ บทที่ 15 (STP) พื้นฐาน: บทที่ 14 (Bridge)
ทำไมข้อนี้คุ้มที่สุดในข้อสอบ

10 คะแนน แต่ข้อย่อยที่ 1 (2 คะแนน) ใช้เวลาไม่ถึง 1 นาที — แค่เขียน Bridge ID = priority + MAC ของ 5 ตัว แล้วชี้ว่า priority ต่ำสุดคือใคร · ส่วนอีก 8 คะแนนให้กับการแสดงการคำนวณของแต่ละเส้นทาง ไม่ใช่คำตอบสุดท้าย ดังนั้นถึงจะแจกบทบาทพอร์ตพลาดไป 1–2 ตัว ถ้าตารางคำนวณครบ ก็ยังเก็บคะแนนได้เกินครึ่ง

โจทย์จริงจากข้อสอบปีที่แล้ว

Q10 (10 คะแนน · 20 นาที) — จากรูป (เครือข่ายมีสวิตช์ 5 ตัว เชื่อมกันผ่าน LAN Segment 4 เซกเมนต์)

สวิตช์MAC AddressPriorityพอร์ต (cost)
Switch-10000.0001.1234100I (10), J (10)
Switch-20001.0001.000125E (20), F (10)
Switch-30001.0000.AC1D150C (10), D (20)
Switch-40000.0001.178750G (40), H (20)
Switch-50000.0001.A134100A (10), B (10)
LAN Segmentพอร์ตที่ต่ออยู่
Segment-AH (Switch-4) และ D (Switch-3)
Segment-BA (Switch-5), E (Switch-2) และ J (Switch-1)
Segment-CC (Switch-3), F (Switch-2) และ I (Switch-1)
Segment-DB (Switch-5) และ G (Switch-4)
  1. Bridge ID (priority + MAC) ของแต่ละ SW มีค่าเป็นเท่าใด และโหนดใดเป็น root (2 คะแนน)
  2. จงหา Spanning Tree ที่เกิดขึ้น จาก Root ที่กำหนดในข้อ 1 พร้อมกำหนดว่าพอร์ตใดทำหน้าที่อะไรให้ถูกต้อง เช่น Root Port (RP), Designated Port (DP) และ Block Port (BP) พร้อมแสดงการคำนวณแต่ละเส้นทาง (8 คะแนน)
อ่านโจทย์ให้ขาดก่อนลงมือ — 3 จุดที่กำหนดคำตอบทั้งข้อ
  1. Segment-B มี 3 พอร์ต (A, E, J) ไม่ใช่ 2 — พอร์ต J ของ Switch-1 ต่ออยู่ที่นี่ ถ้าอ่านตกจะไม่เจอลูปเล็ก และจะได้พอร์ตที่ถูก block แค่ตัวเดียว
  2. cost บวกที่พอร์ต "ขารับ" เท่านั้น (บทที่ 15 หัวข้อ 15.1.3) — ผลคือ cost ของพอร์ต E (20) และ F (10) ที่อยู่บน root ไม่ถูกนำไปบวกในเส้นทางของใครเลย โจทย์ใส่ไว้เป็นตัวลวง
  3. โหนดในกราฟไม่ได้มีแค่สวิตช์ — LAN segment ก็เป็นโหนด รวม 5 + 4 = 9 โหนด และมี 10 พอร์ต = 10 ลิงก์ ใช้ตรวจคำตอบตอนท้ายได้

คิดยังไง (แนวคิดใน 30 วินาที)

ข้อนี้ถามอย่างเดียวคือ "ตัดกิ่งไหนทิ้งเพื่อให้กราฟที่มีลูปกลายเป็นต้นไม้" และ STP ตัดด้วยกติกาเดียวคือ ใครอยู่ใกล้ root กว่า คนนั้นได้ส่ง ท่ามาตรฐานมี 3 ขั้น ห้ามสลับลำดับ:

  1. ขั้นที่ 1 — หา Root Bridge · เทียบ priority ก่อนเสมอ ต่ำสุดชนะ ถ้าเสมอค่อยเทียบ MAC ต่ำสุด · ทุกพอร์ตของ root เป็น DP ทันที และ root path cost ของ root = 0

  2. ขั้นที่ 2 — หา Root Port ของสวิตช์ที่ไม่ใช่ root · สวิตช์แต่ละตัวมี RP ได้ 1 พอร์ตเท่านั้น คือพอร์ตที่ให้ path cost ไป root น้อยที่สุด · คิดจากตัวที่ติด root ก่อน แล้วค่อยไล่ออกไปรอบนอก

  3. ขั้นที่ 3 — หา Designated Port ของแต่ละ segment · แต่ละ segment มี DP ได้ 1 พอร์ตเท่านั้น คือพอร์ตของสวิตช์ที่มี cost ไป root ต่ำสุดในเซกเมนต์นั้น

  4. ที่เหลือ = Blocked · พอร์ตที่ไม่ใช่ทั้ง RP และ DP คือพอร์ตที่ถูก block ไม่มีขั้นที่ 4 ให้คิด

ประโยคเดียวที่ต้องท่องให้ได้

"1 สวิตช์ (ที่ไม่ใช่ root) = 1 RP · 1 เซกเมนต์ = 1 DP · ที่เหลือ block" — สามวลีนี้คือทั้งข้อสอบ ถ้าคำตอบของคุณมีสวิตช์ที่มี RP สองพอร์ต หรือมีเซกเมนต์ที่มี DP สองพอร์ต แปลว่าผิดแน่นอนโดยไม่ต้องตรวจอย่างอื่น

สูตร/ขั้นตอนที่ต้องใช้

Bridge ID = Priority (2 ไบต์) ‖ MAC Address (6 ไบต์) รวม 8 ไบต์ · เทียบกันแบบ "ซ้ายไปขวา" คือ priority มาก่อน ถ้าเท่ากันจึงเทียบ MAC
Root Path Cost ของพอร์ต = (cost ที่ BPDU แจ้งมา) + (cost ของพอร์ตที่รับ BPDU นั้น) หัวข้อ 15.1.3 — บวกที่ขารับ ไม่ใช่ขาส่ง · root แจ้ง cost = 0 ออกไป
บทบาทพอร์ตนิยามมีได้กี่พอร์ตสถานะ
Root Port (RP)พอร์ตที่ path cost ไป root ต่ำสุดของสวิตช์ตัวนั้น1 พอร์ต / 1 สวิตช์ (root ไม่มี RP)Forwarding
Designated Port (DP)พอร์ตที่ path cost ไป root ต่ำสุดของ LAN segment นั้น1 พอร์ต / 1 เซกเมนต์Forwarding
Blocked Port (BP)พอร์ตที่ไม่ใช่ทั้ง RP และ DPที่เหลือทั้งหมดBlocking (รับ BPDU อย่างเดียว)
จำนวนพอร์ตที่ถูก block = (จำนวนลิงก์) − (จำนวนโหนด − 1) ใช้ตรวจคำตอบ · โหนด = สวิตช์ + LAN segment · โจทย์นี้ = 10 − (9 − 1) = 2 พอร์ต
ลำดับกฎตัดสินเมื่อ "เสมอ" (ใช้ทั้งขั้นที่ 2 และ 3)
  1. Root path cost ต่ำสุด ชนะ
  2. ถ้าเสมอ → Bridge ID ของผู้ส่ง BPDU ต่ำสุด ชนะ
  3. ถ้ายังเสมอ → Port priority ต่ำสุด ชนะ (ค่าปกติเท่ากันหมด)
  4. ถ้ายังเสมออีก → หมายเลข/ชื่อพอร์ตต่ำสุด ชนะ (A < B < … < J)

ข้อ 1 — Bridge ID ครบ 5 ตัว และวิธีเทียบ 2 คะแนน

Bridge ID เป็นเลข 8 ไบต์ ที่เอา priority มาต่อหน้า MAC ตรง ๆ · priority เขียนเป็นเลขฐานสิบก็ได้ แต่ถ้าอยากเห็นภาพว่ามันเทียบกันยังไง ให้เขียน priority เป็นเลขฐานสิบหก 2 ไบต์ (4 หลัก) แล้วต่อหน้า MAC เลย

สวิตช์Priority (ฐาน 10)Priority (2 ไบต์ hex)MAC Address (6 ไบต์)Bridge ID เต็ม 8 ไบต์
Switch-2 ★2500190001.0001.00010019.0001.0001.0001
Switch-45000320000.0001.17870032.0000.0001.1787
Switch-110000640000.0001.12340064.0000.0001.1234
Switch-510000640000.0001.A1340064.0000.0001.A134
Switch-315000960001.0000.AC1D0096.0001.0000.AC1D

ตรวจการแปลง: 25 = 0x19 · 50 = 0x32 · 100 = 0x64 · 150 = 0x96 (เติม 0 ข้างหน้าให้ครบ 4 หลักเพราะ priority กว้าง 2 ไบต์)

Root Bridge = Switch-2 priority 25 < 50 < 100 = 100 < 150 → ต่ำสุดตัวเดียว ไม่ต้องเทียบ MAC เลย · Root Path Cost ของ Switch-2 = 0
กับดักที่โจทย์วางไว้ตรงนี้โดยเฉพาะ

Switch-1 มี MAC ต่ำที่สุด (0000.0001.1234) และ Switch-2 มี MAC สูงที่สุด (0001.0001.0001 ขึ้นต้นด้วย 0001) — คนที่รีบจะคว้า Switch-1 มาเป็น root ทันที ผิด เพราะ priority มาก่อน MAC เสมอ · MAC จะถูกใช้ก็ต่อเมื่อ priority เท่ากัน เท่านั้น (ในโจทย์นี้คือคู่ Switch-1 กับ Switch-5 ที่ priority 100 เท่ากัน — ถ้าบังเอิญต้องเทียบกันเอง Switch-1 จะชนะเพราะ 1234 < A134)

ข้อ 2 — เฉลยละเอียดทีละขั้น 8 คะแนน

กดเล่นภาพข้างล่างก่อน — มันจะวาดโทโพโลยีของโจทย์ทีละเส้น (เหมือนที่คุณต้องวาดในกระดาษ) แล้วเดินหา Root → RP → DP → BP ทีละขั้น พร้อมโชว์ cost สะสมของทุกเส้นทาง ทั้งเส้นที่ชนะและเส้นที่แพ้

ขั้นที่ 1 — Root Bridge

เทียบ priority: 25 (SW2) < 50 (SW4) < 100 (SW1) = 100 (SW5) < 150 (SW3) → Root = Switch-2 · Root Path Cost = 0 · พอร์ต E และ F เป็น DP ทันทีทั้งคู่ (พอร์ตของ root เป็น DP เสมอ)

ขั้นที่ 2 — Root Port พร้อมการคำนวณทุกเส้นทาง

Root ประกาศ BPDU ที่บอกว่า cost = 0 ลง Segment-B (ผ่าน E) และ Segment-C (ผ่าน F) · สวิตช์ที่รับได้ก็เอา 0 + cost ของพอร์ตขารับ

สวิตช์เส้นทางที่ 1 (คำนวณเต็ม)เส้นทางที่ 2 (คำนวณเต็ม)เลือก
Switch-5 พอร์ต A ← Seg-B ได้ยิน cost 0 จาก SW2
0 + 10 = 10
พอร์ต B ← Seg-D ได้ยิน cost 30 จาก SW4
30 + 10 = 40
RP = A
cost = 10
Switch-3 พอร์ต C ← Seg-C ได้ยิน cost 0 จาก SW2
0 + 10 = 10
พอร์ต D ← Seg-A ได้ยิน cost 30 จาก SW4
30 + 20 = 50
RP = C
cost = 10
Switch-1 พอร์ต I ← Seg-C ได้ยิน cost 0 จาก SW2
0 + 10 = 10
พอร์ต J ← Seg-B ได้ยิน cost 0 จาก SW2
0 + 10 = 10
เสมอ → กฎข้อ 4
RP = I · cost = 10
Switch-4 พอร์ต G ← Seg-D ได้ยิน cost 10 จาก SW5
10 + 40 = 50
พอร์ต H ← Seg-A ได้ยิน cost 10 จาก SW3
10 + 20 = 30
RP = H
cost = 30
ลำดับการคิดสำคัญกว่าตัวเลข

Switch-4 ไม่ได้ติดกับ root จึงต้องรู้ cost ของ Switch-5 (=10) กับ Switch-3 (=10) ให้เสร็จก่อน แล้วจึงคิด Switch-4 ได้ · ถ้าเผลอไปคิด Switch-4 ก่อน จะไม่มีเลขให้บวกและมั่วทันที · วิธีจำ: ไล่จากวงในออกวงนอกเหมือนน้ำกระเพื่อมจาก root

ทำไมเส้นทางที่ 2 ของ Switch-5 ถึงเป็น 40 ไม่ใช่ 20?

เพราะ สวิตช์ไม่ฟังเสียงตัวเอง — บน Segment-D มีสองพอร์ตคือ B (ของ SW5 เอง) และ G (ของ SW4) เวลา SW5 พิจารณาพอร์ต B มันจะดู BPDU ที่คนอื่นส่งเข้ามาเท่านั้น ซึ่งก็คือ BPDU ของ Switch-4 ที่แจ้ง cost = 30

ดังนั้น 30 + 10 (cost ของพอร์ต B) = 40 · ถ้าเอา cost ของ SW5 เอง (10) มาบวก จะกลายเป็นการวนกลับมาหาตัวเอง ซึ่งไม่มีความหมาย — หลักการเดียวกันนี้ใช้กับพอร์ต D ของ Switch-3 (30 + 20 = 50) ด้วย

ขั้นที่ 3 — Designated Port ของแต่ละเซกเมนต์

Segmentพอร์ตที่ต่ออยู่ (cost ของสวิตช์นั้นไป root)DPพอร์ตที่เหลือกลายเป็นอะไร
Segment-AD → SW3 = 10 · H → SW4 = 30DH เป็น RP ของ SW4 อยู่แล้ว → ไม่ block
Segment-BE → SW2 = 0 · A → SW5 = 10 · J → SW1 = 10EA เป็น RP ของ SW5 · J ไม่ใช่ทั้ง RP และ DP → BLOCK
Segment-CF → SW2 = 0 · C → SW3 = 10 · I → SW1 = 10FC เป็น RP ของ SW3 · I เป็น RP ของ SW1 → ไม่มีใคร block
Segment-DB → SW5 = 10 · G → SW4 = 30BG ไม่ใช่ทั้ง RP และ DP → BLOCK

คำตอบสุดท้าย (ตารางนี้คือสิ่งที่ต้องมีในกระดาษ)

สวิตช์Bridge IDcost ไป rootRoot PortDesignated PortBlocked
Switch-2 ★ (root)25 : 0001.0001.00010— (เป็น root)E, F—
Switch-1100 : 0000.0001.123410I—J
Switch-3150 : 0001.0000.AC1D10CD—
Switch-450 : 0000.0001.178730H—G
Switch-5100 : 0000.0001.A13410AB—
RP = A, C, I, H  ·  DP = E, F, D, B  ·  Blocked = G, J พอร์ตทั้งหมด 10 พอร์ต = RP 4 + DP 4 + BP 2 ✓ ครบพอดี
ตรวจคำตอบใน 10 วินาที — ทำทุกครั้งก่อนส่งกระดาษ
  • นับจำนวน block: 10 ลิงก์ − (9 โหนด − 1) = 2 → ได้ G กับ J = 2 พอดี ✓
  • ทุกสวิตช์ที่ไม่ใช่ root ต้องมี RP ตัวละ 1 พอร์ต: SW1=I, SW3=C, SW4=H, SW5=A ✓
  • ทุกเซกเมนต์ต้องมี DP 1 พอร์ต: Seg-A=D, Seg-B=E, Seg-C=F, Seg-D=B ✓
  • ทุกพอร์ตของ root ต้องเป็น DP: E, F ✓
  • ไล่นิ้วจากทุกสวิตช์ไป root ต้องถึงได้ และต้องมีทางเดียว ✓
ส่วนขยาย — จุดเสมอที่ Switch-1 ตอบได้ 2 แบบ (ให้เขียนกฎกำกับไว้)

ที่ Switch-1 พอร์ต I และ J ได้ cost 10 เท่ากันเป๊ะ และ BPDU ทั้งสองมาจาก Switch-2 ตัวเดียวกัน จึงตกมาถึงกฎเรื่องหมายเลขพอร์ต ซึ่งตีความได้ 2 ทาง:

  • ตามตำรา (ที่หน้านี้และบทที่ 15 ใช้) — กฎข้อ 4 "เลือกพอร์ตหมายเลขต่ำสุด" หมายถึงพอร์ตของตัวเอง → I < J → RP = I, block J
  • ตาม IEEE 802.1D จริง ๆ — เทียบ Port identifier ของผู้ส่ง ที่ติดมาใน BPDU: พอร์ต J รับ BPDU จากพอร์ต E ส่วนพอร์ต I รับจากพอร์ต F เนื่องจาก E < F จึงได้ RP = J, block I

ข่าวดี: ต้นไม้ที่ได้สมมูลกันทั้งสองแบบ (จำนวนพอร์ตที่ block ยังเป็น 2 และไม่มีลูปทั้งคู่) · ในห้องสอบให้เขียนกำกับว่าใช้กฎข้อไหน เช่น "cost เสมอที่ 10 → ตัดสินด้วยหมายเลขพอร์ตต่ำสุดของสวิตช์เอง I < J" — เขียนแบบนี้ได้คะแนนขั้นตอนเต็มไม่ว่าอาจารย์เฉลยแบบไหน

ลองเปลี่ยนโจทย์ดู — root ย้าย ต้นไม้เปลี่ยนทั้งหมด

ภาพข้างล่างใช้โทโพโลยีเดียวกันแต่ให้เปลี่ยน priority ได้เอง ระบบจะคำนวณ STP ใหม่จริง ๆ ด้วย JavaScript (ไม่ใช่คำตอบที่พิมพ์ไว้ล่วงหน้า) — กดปุ่มดูว่าเปลี่ยน priority ตัวเดียวแล้วพอร์ตที่ถูก block ย้ายไปไหน · ปุ่ม SW2 → 200 คือเฉลยของโจทย์ฝึกข้อ 5

กับดักที่ทำให้เสียคะแนน

กับดักที่ 1 — เลือก root จาก MAC ต่ำสุด (พบบ่อยที่สุดในข้อนี้)

คำตอบผิดที่เจอจริง: "Root = Switch-1 เพราะ MAC 0000.0001.1234 ต่ำสุด" — ผิด เพราะ Bridge ID เรียง priority ก่อน MAC และ priority ของ Switch-1 คือ 100 ส่วน Switch-2 คือ 25 · โจทย์จงใจให้ Switch-2 มี MAC ที่ดูสูงที่สุด (0001.…) เพื่อดักคนที่ข้ามช่อง priority ไป · วิธีกันพลาด: เขียน Bridge ID เป็น hex 8 ไบต์ต่อกันจริง ๆ แล้วเทียบจากซ้ายไปขวา จะไม่มีทางสลับลำดับได้เลย

กับดักที่ 2 — บวก cost ของพอร์ตฝั่ง root ด้วย

คำตอบผิดที่เจอจริง: "Switch-5 → cost = 20 (E) + 10 (A) = 30" — ผิด เพราะ cost บวกที่พอร์ตขารับเท่านั้น พอร์ต E เป็นขาส่งของ root จึงไม่ถูกนับ · สังเกตว่าถ้าบวกผิดแบบนี้ Switch-5 จะได้ 30 เท่ากับ Switch-4 แล้วบทบาทพอร์ตทั้งเครือข่ายจะรวนหมด · เลข 20 ของพอร์ต E คือตัวลวงที่ชัดที่สุดในข้อนี้ — มันไม่ถูกใช้เลยแม้แต่ครั้งเดียว

กับดักที่ 3 — ให้สวิตช์ตัวเดียวมี RP สองพอร์ต

ที่ Switch-1 พอร์ต I และ J ได้ 10 เท่ากัน มีคนตอบว่า "RP = I และ J ทั้งคู่" — ผิดทันที เพราะสวิตช์หนึ่งตัวมี RP ได้พอร์ตเดียวเสมอ (มิฉะนั้นก็ยังมีลูปอยู่ ซึ่งขัดกับจุดประสงค์ของ STP) · เมื่อเสมอต้องตัดสินให้ขาดด้วยกฎข้อ 2→3→4 แล้วเขียนกำกับว่าใช้กฎข้อไหน

กับดักที่ 4 — ลืมว่า LAN segment ก็เป็นโหนด

คนที่นับ "โหนด = 5 สวิตช์" แล้วใช้สูตรตรวจ จะได้ block = 10 − 4 = 6 พอร์ต ซึ่งผิดมหาศาล · โทโพโลยีแบบนี้เป็น กราฟสองส่วน (switch ↔ segment) ลิงก์ทุกเส้นวิ่งจากสวิตช์ไปเซกเมนต์เสมอ ดังนั้น โหนด = 5 + 4 = 9 · ถ้าวาดรูปแล้วเห็นเส้นลากจากสวิตช์ไปสวิตช์โดยตรง แปลว่าวาดผิดตั้งแต่ต้น

กับดักที่ 5 — ตอบแค่ผลลัพธ์ ไม่แสดงการคำนวณ

โจทย์เขียนชัดว่า "พร้อมแสดงการคำนวณแต่ละเส้นทาง" — คนที่เขียนแค่ "RP = A, C, I, H" ได้คะแนนไม่ถึงครึ่งของ 8 คะแนน แม้คำตอบถูกหมด · ต้องมีตารางที่แสดงทั้งเส้นทางที่ชนะและเส้นทางที่แพ้ เช่น "Switch-4: ผ่าน G = 10+40 = 50 · ผ่าน H = 10+20 = 30 → เลือก H" — เลข 50 ที่แพ้นั่นแหละคือคะแนน

เขียนยังไงให้ได้คะแนนเต็ม

ข้อ 1 (2 คะแนน) — เช็กลิสต์

  1. เขียนนิยาม: "Bridge ID = priority (2 ไบต์) + MAC (6 ไบต์)"
  2. ตาราง Bridge ID ครบทั้ง 5 ตัว (ขาดตัวเดียวก็เสียคะแนน)
  3. เขียนประโยคเทียบ: "25 < 50 < 100 = 100 < 150"
  4. ตอบ Root = Switch-2 พร้อมเหตุผล "priority ต่ำสุด ไม่ต้องเทียบ MAC"
  5. เขียนเพิ่มบรรทัดเดียว: "Root Path Cost ของ Switch-2 = 0"

ข้อ 2 (8 คะแนน) — เช็กลิสต์

  1. วาดรูปโทโพโลยีใหม่ในกระดาษ พร้อมชื่อพอร์ตและ cost กำกับทุกเส้น
  2. ตารางขั้นที่ 2: ทุกสวิตช์ × ทุกเส้นทาง แสดงการบวกเต็ม x + y = z
  3. ตารางขั้นที่ 3: ทุกเซกเมนต์ × cost ของแต่ละฝั่ง → ชี้ DP
  4. เขียน RP / DP / BP กำกับลงบนรูปด้วย (อาจารย์ดูรูปก่อนตาราง)
  5. ตีกรอบคำตอบสรุป: RP = A, C, I, H · DP = E, F, D, B · BP = G, J
  6. เขียนบรรทัดตรวจสอบ: "block = 10 − (9−1) = 2 ✓"
  7. ถ้ามีจุดเสมอ ให้เขียนกฎที่ใช้ตัดสินกำกับไว้
เทคนิควาดรูปให้เร็วในห้องสอบ

วาด สวิตช์เป็นสี่เหลี่ยม และ LAN segment เป็นเส้นหนาแนวนอน (ไม่ใช่จุด) แล้วลากพอร์ตจากสวิตช์ลงมาแตะเส้น — แบบนี้จะไม่มีทางลากเส้นสวิตช์–สวิตช์ผิด และเห็นชัดว่าเซกเมนต์ไหนมี 3 พอร์ต · จากนั้นเขียน cost ของทุกสวิตช์ไว้ใต้กล่อง ทันทีที่คำนวณเสร็จ จะได้ไม่ต้องไล่ซ้ำตอนทำขั้นที่ 3

โจทย์ฝึก 5 ข้อ

ไล่จากง่ายไปยากกว่าของจริงเล็กน้อย · ลองทำในกระดาษก่อนกดดูเฉลย

ข้อ 1 ง่าย — เครือข่ายมีสวิตช์ 4 ตัวดังนี้ จงเขียน Bridge ID ของทุกตัวและระบุว่าตัวไหนเป็น Root Bridge พร้อมเหตุผล

สวิตช์PriorityMAC
SW-P4096AAAA.AAAA.AAAA
SW-Q81920000.0000.0001
SW-R4096BBBB.BBBB.BBBB
SW-S327680000.0000.0000
เฉลยข้อ 1

ขั้นที่ 1 — แปลง priority เป็น hex 2 ไบต์แล้วต่อหน้า MAC (4096 = 0x1000 · 8192 = 0x2000 · 32768 = 0x8000)

สวิตช์Bridge ID (8 ไบต์)
SW-P ★1000.AAAA.AAAA.AAAA
SW-R1000.BBBB.BBBB.BBBB
SW-Q2000.0000.0000.0001
SW-S8000.0000.0000.0000

ขั้นที่ 2 — เทียบ priority ก่อน · ต่ำสุดคือ 4096 ซึ่งมี 2 ตัวเสมอกัน (SW-P และ SW-R) → SW-Q (8192) และ SW-S (32768) ตกรอบทันที

ขั้นที่ 3 — เสมอแล้วจึงเทียบ MAC · AAAA.AAAA.AAAA vs BBBB.BBBB.BBBB → เทียบไบต์แรก AA (170) < BB (187) → SW-P ชนะ

Root Bridge = SW-Ppriority 4096 (ต่ำสุด, เสมอกับ SW-R) แล้วชนะที่ MAC เพราะ AAAA… < BBBB…

กับดักของข้อนี้: SW-S มี MAC เป็น 0000.0000.0000 ซึ่งต่ำที่สุดในโลก และ SW-Q ก็มี MAC ต่ำมาก แต่ทั้งคู่ไม่ได้เป็น root เพราะ priority สูงกว่า — เหมือนกับที่ Switch-1 ในข้อสอบจริงไม่ได้เป็น root ทั้งที่ MAC ต่ำสุด

ข้อ 2 ง่าย–กลาง — สวิตช์ SW-X (ไม่ใช่ root) มี 3 พอร์ต และได้รับ BPDU ดังนี้
• พอร์ต P1 — BPDU แจ้ง root path cost = 4 · cost ของ P1 = 19
• พอร์ต P2 — BPDU แจ้ง root path cost = 8 · cost ของ P2 = 4
• พอร์ต P3 — BPDU แจ้ง root path cost = 0 · cost ของ P3 = 100
จงหาว่าพอร์ตใดเป็น Root Port และ root path cost ของ SW-X เป็นเท่าใด · แล้วอีก 2 พอร์ตที่เหลือเป็นอะไรได้บ้าง

เฉลยข้อ 2

ขั้นที่ 1 — บวก cost ของพอร์ตขารับทุกพอร์ต

พอร์ตcost ที่ BPDU แจ้ง+ cost ของพอร์ตขารับRoot Path Cost
P14+ 1923
P28+ 412 ← ต่ำสุด
P30+ 100100
RP = P2 · root path cost ของ SW-X = 12

บทเรียนของข้อนี้: พอร์ต P3 ต่อตรงเข้าหา root (BPDU แจ้ง cost = 0 แปลว่าผู้ส่งคือ root เอง) แต่ไม่ได้เป็น RP เพราะสายเส้นนั้นช้ามาก (cost 100 = ลิงก์ 10 Mbps) — "ใกล้ที่สุด" ใน STP วัดด้วย cost ไม่ใช่จำนวน hop

อีก 2 พอร์ตเป็นอะไร: ต้องดูต่อว่าในเซกเมนต์ของ P1 และ P3 มี cost ของ SW-X (=12) ต่ำสุดหรือไม่ · ถ้า SW-X ต่ำสุดในเซกเมนต์นั้น พอร์ตนั้นเป็น DP · ถ้าไม่ต่ำสุด พอร์ตนั้นถูก block — ตอบว่า "เป็น DP หรือ BP ก็ได้ ขึ้นกับ cost ของเพื่อนบ้านในเซกเมนต์" ถึงจะครบ

ข้อ 3 กลาง — LAN Segment-Z มี 3 พอร์ตต่ออยู่
• พอร์ต p ของ SW-1 (cost ไป root = 19, Bridge ID = 100 : 0000.0000.0001)
• พอร์ต q ของ SW-2 (cost ไป root = 19, Bridge ID = 100 : 0000.0000.00FF)
• พอร์ต r ของ SW-3 (cost ไป root = 23, Bridge ID = 50 : 0000.0000.ABCD)
(ก) พอร์ตใดเป็น DP ของเซกเมนต์นี้ · (ข) ถ้า RP ของ SW-1 กับ SW-3 อยู่บนเซกเมนต์อื่น ส่วน RP ของ SW-2 คือพอร์ต q เอง พอร์ตใดถูก block

เฉลยข้อ 3

(ก) หา DP — กฎข้อ 1: cost ต่ำสุดก่อนเสมอ

  • p → cost 19 · q → cost 19 · r → cost 23
  • r ตกรอบทันที (23 > 19) — อย่าหลงว่า SW-3 มี priority 50 ต่ำสุดแล้วจะชนะ priority จะถูกใช้ก็ต่อเมื่อ cost เสมอเท่านั้น
  • เหลือ p กับ q เสมอที่ 19 → กฎข้อ 2: เทียบ Bridge ID ของผู้ส่ง · priority 100 = 100 เสมอ → เทียบ MAC: 0000.0000.0001 < 0000.0000.00FF
DP ของ Segment-Z = พอร์ต p (ของ SW-1)

(ข) หาพอร์ตที่ถูก block — ไล่ทีละพอร์ตด้วยนิยาม "ไม่ใช่ RP และไม่ใช่ DP = block"

พอร์ตเป็น DP ไหมเป็น RP ไหมผล
p (SW-1)ใช่ไม่ (RP อยู่เซกเมนต์อื่น)DP → forwarding
q (SW-2)ไม่ใช่RP → forwarding
r (SW-3)ไม่ไม่ (RP อยู่เซกเมนต์อื่น)BLOCK

ประเด็นสำคัญ: SW-3 มี Bridge ID ต่ำสุดในเซกเมนต์นี้ (priority 50) แต่ก็ยังถูก block — เพราะ Bridge ID ใช้ตัดสินเฉพาะตอนเสมอ ส่วน cost คือเกณฑ์หลัก · นี่คือกับดักเดียวกับที่ข้อสอบจริงวางไว้ แค่ย้ายมาอยู่ที่ขั้นที่ 3 แทนขั้นที่ 1

ข้อ 4 กลาง–ยาก — เครือข่ายวงแหวน: สวิตช์ 4 ตัว (A, B, C, D) และ LAN segment 4 เส้น (L1–L4)

สวิตช์PriorityMACพอร์ต (segment, cost)
SW-A40960000.0000.00AAa1 (L1, 10) · a2 (L4, 10)
SW-B40960000.0000.00ABb1 (L1, 20) · b2 (L2, 10)
SW-C327680000.0000.00C0c1 (L2, 10) · c2 (L3, 30)
SW-D327680000.0000.00D0d1 (L3, 10) · d2 (L4, 50)

จงหา Root Bridge, cost ไป root ของทุกสวิตช์, RP / DP / BP ของทุกพอร์ต แล้วตรวจด้วยสูตรจำนวนพอร์ตที่ถูก block

เฉลยข้อ 4

ขั้นที่ 1 — Root Bridge · priority ต่ำสุด = 4096 มี 2 ตัวเสมอ (SW-A, SW-B) → เทียบ MAC: …00AA < …00AB → Root = SW-A · cost = 0 · a1 และ a2 เป็น DP ทันที

ขั้นที่ 2 — Root Port (ไล่จากวงในออกวงนอก)

สวิตช์เส้นทางที่ 1เส้นทางที่ 2ผล
SW-Bb1 ← L1 ได้ยิน 0 จาก SW-A → 0 + 20 = 20b2 ← L2 ได้ยิน 30 จาก SW-C → 30 + 10 = 40RP = b1 · cost 20
SW-Cc1 ← L2 ได้ยิน 20 จาก SW-B → 20 + 10 = 30c2 ← L3 ได้ยิน 40 จาก SW-D → 40 + 30 = 70RP = c1 · cost 30
SW-Dd1 ← L3 ได้ยิน 30 จาก SW-C → 30 + 10 = 40d2 ← L4 ได้ยิน 0 จาก SW-A → 0 + 50 = 50RP = d1 · cost 40

สังเกต SW-D: เส้นทางที่ ต่อตรงเข้า root (d2, cost 50) กลับแพ้เส้นทางที่ต้องอ้อม 2 ต่อ (d1, cost 40) — เพราะ cost ของ d2 แพงถึง 50 · นี่คือหลักการเดียวกับโจทย์ฝึกข้อ 2

ขั้นที่ 3 — Designated Port ของแต่ละเซกเมนต์

Segmentฝั่งซ้าย (cost)ฝั่งขวา (cost)DPอีกฝั่ง
L1a1 → SW-A = 0b1 → SW-B = 20a1b1 = RP ของ SW-B
L2b2 → SW-B = 20c1 → SW-C = 30b2c1 = RP ของ SW-C
L3c2 → SW-C = 30d1 → SW-D = 40c2d1 = RP ของ SW-D
L4a2 → SW-A = 0d2 → SW-D = 40a2d2 ไม่ใช่ทั้ง RP และ DP → BLOCK
Root = SW-A · RP = b1, c1, d1 · DP = a1, a2, b2, c2 · Blocked = d2 cost: SW-A = 0 · SW-B = 20 · SW-C = 30 · SW-D = 40

ตรวจ: ลิงก์ = 8 พอร์ต · โหนด = 4 สวิตช์ + 4 เซกเมนต์ = 8 → block = 8 − (8 − 1) = 1 พอร์ต ✓ ได้ d2 ตัวเดียวพอดี · และ RP มี 3 ตัว (สวิตช์ที่ไม่ใช่ root มี 3 ตัว ✓) · DP มี 4 ตัว (เซกเมนต์มี 4 ✓) · รวม 3+4+1 = 8 พอร์ต ✓

ข้อ 5 ยากกว่าของจริง — ใช้โทโพโลยีเดียวกับข้อสอบจริงทุกอย่าง แต่เปลี่ยน priority ของ Switch-2 จาก 25 เป็น 200 (ตัวอื่นเหมือนเดิม)
จงหา Root Bridge ใหม่ · cost ไป root ของทุกสวิตช์ · RP / DP / BP ของทั้ง 10 พอร์ต · และตรวจด้วยสูตรจำนวนพอร์ตที่ถูก block
(คำใบ้: ข้อนี้มีจุด "เสมอ" ที่ต้องตัดสินด้วย Bridge ID ของผู้ส่ง ถึง 2 จุด — ลองทำในกระดาษก่อน แล้วกดปุ่ม "SW2 → 200" ในภาพโต้ตอบด้านบนเพื่อตรวจ)

เฉลยข้อ 5

ขั้นที่ 1 — Root Bridge ใหม่ · priority ตอนนี้คือ SW1 = 100, SW2 = 200, SW3 = 150, SW4 = 50, SW5 = 100 → ต่ำสุดคือ 50 ตัวเดียว

Root Bridge = Switch-4 (priority 50)cost = 0 · พอร์ต G และ H เป็น DP ทันที · G ประกาศลง Segment-D, H ประกาศลง Segment-A

ขั้นที่ 2 — คลื่นลูกแรก: สวิตช์ที่ติดกับ root

  • Switch-5 — พอร์ต B ← Seg-D ได้ยิน 0 จาก SW4 → 0 + 10 = 10 · (พอร์ต A ← Seg-B ต้องรอคำนวณทีหลัง)
  • Switch-3 — พอร์ต D ← Seg-A ได้ยิน 0 จาก SW4 → 0 + 20 = 20 · (พอร์ต C ← Seg-C รอทีหลัง)

ขั้นที่ 3 — คลื่นลูกที่สอง: Switch-1

  • พอร์ต J ← Seg-B ได้ยิน 10 จาก SW5 → 10 + 10 = 20
  • พอร์ต I ← Seg-C ได้ยิน 20 จาก SW3 → 20 + 10 = 30
  • → RP ของ SW1 = J · cost ของ Switch-1 = 20

ขั้นที่ 4 — คลื่นลูกที่สาม: Switch-2 (จุดเสมอที่ 1)

  • พอร์ต E ← Seg-B ได้ยิน 10 จาก SW5 → 10 + 20 = 30
  • พอร์ต F ← Seg-C ได้ยิน 20 จาก SW1 → 20 + 10 = 30
  • เสมอที่ 30! → กฎข้อ 2: เทียบ Bridge ID ของผู้ส่ง · ผู้ส่งฝั่ง E คือ SW5 (100 : 0000.0001.A134) ส่วนฝั่ง F คือ SW1 (100 : 0000.0001.1234) → priority เสมอ 100 → เทียบ MAC: …1234 < …A134
  • → RP ของ SW2 = F · cost ของ Switch-2 = 30 · พอร์ต E เหลือรอลุ้นในขั้นที่ 3

ขั้นที่ 5 — Designated Port ทีละเซกเมนต์ (จุดเสมอที่ 2 อยู่ที่ Segment-C)

Segmentพอร์ตที่ต่อ (cost ของสวิตช์)DPผลของพอร์ตที่เหลือ
Seg-AH → SW4 = 0 · D → SW3 = 20HD = RP ของ SW3
Seg-DG → SW4 = 0 · B → SW5 = 10GB = RP ของ SW5
Seg-BA → SW5 = 10 · J → SW1 = 20 · E → SW2 = 30AJ = RP ของ SW1 · E ไม่ใช่ทั้งคู่ → BLOCK
Seg-CC → SW3 = 20 · I → SW1 = 20 · F → SW2 = 30IF = RP ของ SW2 · C ไม่ใช่ทั้งคู่ → BLOCK

จุดเสมอที่ 2 อธิบายละเอียด — บน Segment-C มี SW3 (cost 20) และ SW1 (cost 20) เสมอกัน → เทียบ Bridge ID: SW1 = 100 : 0000.0001.1234 vs SW3 = 150 : 0001.0000.AC1D → priority 100 < 150 → SW1 ชนะ → DP = I · ผลคือพอร์ต C ของ Switch-3 ถูก block ทั้งที่ในโจทย์เดิมมันเคยเป็น RP

Root = Switch-4 · RP = B, D, F, J · DP = G, H, A, I · Blocked = C, E cost: SW4 = 0 · SW5 = 10 · SW3 = 20 · SW1 = 20 · SW2 = 30

ตรวจ: block = 10 − (9 − 1) = 2 พอร์ต ✓ ได้ C กับ E พอดี · RP มี 4 ตัว (สวิตช์ที่ไม่ใช่ root มี 4 ✓) · DP มี 4 ตัว (เซกเมนต์มี 4 ✓) · 4+4+2 = 10 พอร์ต ✓

บทเรียนของข้อนี้: เปลี่ยน priority ของสวิตช์ตัวเดียว ทำให้ ทุกอย่างเปลี่ยน — root ย้ายจาก SW2 ไป SW4, cost ของทุกตัวเปลี่ยน, และพอร์ตที่ถูก block ย้ายจาก {G, J} ไป {C, E} · นี่คือเหตุผลที่ในงานจริงเราต้องตั้ง priority ต่ำ ๆ ให้สวิตช์แกนกลางที่แรงที่สุด แทนที่จะปล่อยให้ MAC address ตัดสินแบบสุ่ม

เช็คความเข้าใจ

สวิตช์ 2 ตัวมี priority เท่ากันคือ 32768 · SW-A มี MAC 00AB.CD00.0001 และ SW-B มี MAC 00AB.CC99.FFFF ตัวไหนเป็น root?
การเทียบ Bridge ID (และ MAC) เป็นการเทียบเลขทั้งก้อนจากซ้ายไปขวา เหมือนเทียบเลขฐานสิบหกยาว ๆ ไม่ใช่เทียบไบต์สุดท้าย · 00AB.CC… vs 00AB.CD… ต่างกันครั้งแรกที่ไบต์ที่ 3: CC (204) < CD (205) → SW-B ต่ำกว่า จึงเป็น root · port cost ไม่เกี่ยวกับการเลือก root เลย มันใช้ในขั้นที่ 2 และ 3 เท่านั้น
ในโจทย์จริง ทำไม cost ของพอร์ต E (= 20) ที่อยู่บน Switch-2 ถึงไม่ถูกนำไปบวกในเส้นทางของสวิตช์ใดเลย?
ตามหัวข้อ 15.1.3 ค่า path cost จะถูกบวกที่พอร์ตที่รับ BPDU เข้ามา · Switch-2 เป็น root จึงมีแต่ส่ง BPDU ออก (E, F เป็น DP ทั้งคู่) ไม่เคยรับ BPDU เพื่อคิด cost ของตัวเอง — cost ของ E และ F จึงเป็นตัวเลขที่โจทย์ใส่มาลวงล้วน ๆ · ตัวเลือกที่ 3 ผิดตรงที่ root ก็มี cost ของตัวเองอยู่ คือ 0 ซึ่งเป็นค่าที่มันประกาศออกไป
คำตอบของนักศึกษาคนหนึ่งระบุว่า Switch-4 มี RP = H และ RP = G ทั้งสองพอร์ต เพราะทั้งคู่ไปถึง root ได้ · ผิดตรงไหน?
กติกาแกนกลางของ STP คือ 1 สวิตช์ (ที่ไม่ใช่ root) = 1 RP ถ้ามีสองพอร์ต forwarding ขึ้นไปหา root พร้อมกันก็ยังมีลูปอยู่ ซึ่งขัดกับจุดประสงค์ทั้งหมดของโปรโตคอล · และในโจทย์นี้ cost ก็ไม่เสมอกันเลย: ผ่าน H ได้ 10+20 = 30 ส่วนผ่าน G ได้ 10+40 = 50 → เลือก H · ส่วน G ตกไปเป็น Blocked เพราะบน Segment-D ฝั่ง B (cost 10) ชนะไปเป็น DP · Switch-4 ไม่ใช่ root เพราะ priority 50 > 25 ของ Switch-2
เก็บก่อนออกจากข้อนี้
  • Bridge ID = priority (2 ไบต์) + MAC (6 ไบต์) — เทียบซ้ายไปขวา priority ชนะก่อนเสมอ · โจทย์นี้ Root = Switch-2 (priority 25) ทั้งที่ MAC ดูสูงสุด
  • path cost บวกที่พอร์ตขารับ — cost ของพอร์ต E (20) และ F (10) บน root ไม่ถูกใช้เลย
  • cost ถึง root: SW5 = 10 · SW3 = 10 · SW1 = 10 · SW4 = 30 (SW4 ต้องรอ SW3/SW5 คำนวณเสร็จก่อน)
  • คำตอบ: RP = A, C, I, H · DP = E, F, D, B · Blocked = G, J
  • ตรวจเสมอ: block = ลิงก์ − (โหนด − 1) = 10 − 8 = 2 · โหนดต้องนับ LAN segment ด้วย (9 โหนด)
  • 8 คะแนนของข้อ 2 ให้กับตารางแสดงการคำนวณทุกเส้นทาง — เขียนทั้งเส้นที่ชนะและเส้นที่แพ้