Spanning Tree: RP / DP / BP
ข้อ 10 คะแนนที่ไม่ต้องใช้เครื่องคิดเลขเลย — มีแค่การเทียบเลข 3 รอบ (priority → path cost → Bridge ID) ถ้าเดินตามลำดับ 3 ขั้นแบบไม่ข้าม จะได้คำตอบตรงเป๊ะทุกพอร์ต
10 คะแนน แต่ข้อย่อยที่ 1 (2 คะแนน) ใช้เวลาไม่ถึง 1 นาที — แค่เขียน Bridge ID = priority + MAC ของ 5 ตัว แล้วชี้ว่า priority ต่ำสุดคือใคร · ส่วนอีก 8 คะแนนให้กับการแสดงการคำนวณของแต่ละเส้นทาง ไม่ใช่คำตอบสุดท้าย ดังนั้นถึงจะแจกบทบาทพอร์ตพลาดไป 1–2 ตัว ถ้าตารางคำนวณครบ ก็ยังเก็บคะแนนได้เกินครึ่ง
โจทย์จริงจากข้อสอบปีที่แล้ว
Q10 (10 คะแนน · 20 นาที) — จากรูป (เครือข่ายมีสวิตช์ 5 ตัว เชื่อมกันผ่าน LAN Segment 4 เซกเมนต์)
| สวิตช์ | MAC Address | Priority | พอร์ต (cost) |
|---|---|---|---|
| Switch-1 | 0000.0001.1234 | 100 | I (10), J (10) |
| Switch-2 | 0001.0001.0001 | 25 | E (20), F (10) |
| Switch-3 | 0001.0000.AC1D | 150 | C (10), D (20) |
| Switch-4 | 0000.0001.1787 | 50 | G (40), H (20) |
| Switch-5 | 0000.0001.A134 | 100 | A (10), B (10) |
| LAN Segment | พอร์ตที่ต่ออยู่ |
|---|---|
| Segment-A | H (Switch-4) และ D (Switch-3) |
| Segment-B | A (Switch-5), E (Switch-2) และ J (Switch-1) |
| Segment-C | C (Switch-3), F (Switch-2) และ I (Switch-1) |
| Segment-D | B (Switch-5) และ G (Switch-4) |
- Bridge ID (priority + MAC) ของแต่ละ SW มีค่าเป็นเท่าใด และโหนดใดเป็น root (2 คะแนน)
- จงหา Spanning Tree ที่เกิดขึ้น จาก Root ที่กำหนดในข้อ 1 พร้อมกำหนดว่าพอร์ตใดทำหน้าที่อะไรให้ถูกต้อง เช่น Root Port (RP), Designated Port (DP) และ Block Port (BP) พร้อมแสดงการคำนวณแต่ละเส้นทาง (8 คะแนน)
- Segment-B มี 3 พอร์ต (A, E, J) ไม่ใช่ 2 — พอร์ต J ของ Switch-1 ต่ออยู่ที่นี่ ถ้าอ่านตกจะไม่เจอลูปเล็ก และจะได้พอร์ตที่ถูก block แค่ตัวเดียว
- cost บวกที่พอร์ต "ขารับ" เท่านั้น (บทที่ 15 หัวข้อ 15.1.3) — ผลคือ cost ของพอร์ต E (20) และ F (10) ที่อยู่บน root ไม่ถูกนำไปบวกในเส้นทางของใครเลย โจทย์ใส่ไว้เป็นตัวลวง
- โหนดในกราฟไม่ได้มีแค่สวิตช์ — LAN segment ก็เป็นโหนด รวม 5 + 4 = 9 โหนด และมี 10 พอร์ต = 10 ลิงก์ ใช้ตรวจคำตอบตอนท้ายได้
คิดยังไง (แนวคิดใน 30 วินาที)
ข้อนี้ถามอย่างเดียวคือ "ตัดกิ่งไหนทิ้งเพื่อให้กราฟที่มีลูปกลายเป็นต้นไม้" และ STP ตัดด้วยกติกาเดียวคือ ใครอยู่ใกล้ root กว่า คนนั้นได้ส่ง ท่ามาตรฐานมี 3 ขั้น ห้ามสลับลำดับ:
ขั้นที่ 1 — หา Root Bridge · เทียบ priority ก่อนเสมอ ต่ำสุดชนะ ถ้าเสมอค่อยเทียบ MAC ต่ำสุด · ทุกพอร์ตของ root เป็น DP ทันที และ root path cost ของ root = 0
ขั้นที่ 2 — หา Root Port ของสวิตช์ที่ไม่ใช่ root · สวิตช์แต่ละตัวมี RP ได้ 1 พอร์ตเท่านั้น คือพอร์ตที่ให้ path cost ไป root น้อยที่สุด · คิดจากตัวที่ติด root ก่อน แล้วค่อยไล่ออกไปรอบนอก
ขั้นที่ 3 — หา Designated Port ของแต่ละ segment · แต่ละ segment มี DP ได้ 1 พอร์ตเท่านั้น คือพอร์ตของสวิตช์ที่มี cost ไป root ต่ำสุดในเซกเมนต์นั้น
ที่เหลือ = Blocked · พอร์ตที่ไม่ใช่ทั้ง RP และ DP คือพอร์ตที่ถูก block ไม่มีขั้นที่ 4 ให้คิด
"1 สวิตช์ (ที่ไม่ใช่ root) = 1 RP · 1 เซกเมนต์ = 1 DP · ที่เหลือ block" — สามวลีนี้คือทั้งข้อสอบ ถ้าคำตอบของคุณมีสวิตช์ที่มี RP สองพอร์ต หรือมีเซกเมนต์ที่มี DP สองพอร์ต แปลว่าผิดแน่นอนโดยไม่ต้องตรวจอย่างอื่น
สูตร/ขั้นตอนที่ต้องใช้
| บทบาทพอร์ต | นิยาม | มีได้กี่พอร์ต | สถานะ |
|---|---|---|---|
| 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 อย่างเดียว) |
- Root path cost ต่ำสุด ชนะ
- ถ้าเสมอ → Bridge ID ของผู้ส่ง BPDU ต่ำสุด ชนะ
- ถ้ายังเสมอ → Port priority ต่ำสุด ชนะ (ค่าปกติเท่ากันหมด)
- ถ้ายังเสมออีก → หมายเลข/ชื่อพอร์ตต่ำสุด ชนะ (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 ★ | 25 | 0019 | 0001.0001.0001 | 0019.0001.0001.0001 |
| Switch-4 | 50 | 0032 | 0000.0001.1787 | 0032.0000.0001.1787 |
| Switch-1 | 100 | 0064 | 0000.0001.1234 | 0064.0000.0001.1234 |
| Switch-5 | 100 | 0064 | 0000.0001.A134 | 0064.0000.0001.A134 |
| Switch-3 | 150 | 0096 | 0001.0000.AC1D | 0096.0001.0000.AC1D |
ตรวจการแปลง: 25 = 0x19 · 50 = 0x32 · 100 = 0x64 · 150 = 0x96 (เติม 0 ข้างหน้าให้ครบ 4 หลักเพราะ priority กว้าง 2 ไบต์)
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 จาก SW20 + 10 = 10 |
พอร์ต B ← Seg-D ได้ยิน cost 30 จาก SW430 + 10 = 40 |
RP = A cost = 10 |
| Switch-3 | พอร์ต C ← Seg-C ได้ยิน cost 0 จาก SW20 + 10 = 10 |
พอร์ต D ← Seg-A ได้ยิน cost 30 จาก SW430 + 20 = 50 |
RP = C cost = 10 |
| Switch-1 | พอร์ต I ← Seg-C ได้ยิน cost 0 จาก SW20 + 10 = 10 |
พอร์ต J ← Seg-B ได้ยิน cost 0 จาก SW20 + 10 = 10 |
เสมอ → กฎข้อ 4 RP = I · cost = 10 |
| Switch-4 | พอร์ต G ← Seg-D ได้ยิน cost 10 จาก SW510 + 40 = 50 |
พอร์ต H ← Seg-A ได้ยิน cost 10 จาก SW310 + 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-A | D → SW3 = 10 · H → SW4 = 30 | D | H เป็น RP ของ SW4 อยู่แล้ว → ไม่ block |
| Segment-B | E → SW2 = 0 · A → SW5 = 10 · J → SW1 = 10 | E | A เป็น RP ของ SW5 · J ไม่ใช่ทั้ง RP และ DP → BLOCK |
| Segment-C | F → SW2 = 0 · C → SW3 = 10 · I → SW1 = 10 | F | C เป็น RP ของ SW3 · I เป็น RP ของ SW1 → ไม่มีใคร block |
| Segment-D | B → SW5 = 10 · G → SW4 = 30 | B | G ไม่ใช่ทั้ง RP และ DP → BLOCK |
คำตอบสุดท้าย (ตารางนี้คือสิ่งที่ต้องมีในกระดาษ)
| สวิตช์ | Bridge ID | cost ไป root | Root Port | Designated Port | Blocked |
|---|---|---|---|---|---|
| Switch-2 ★ (root) | 25 : 0001.0001.0001 | 0 | — (เป็น root) | E, F | — |
| Switch-1 | 100 : 0000.0001.1234 | 10 | I | — | J |
| Switch-3 | 150 : 0001.0000.AC1D | 10 | C | D | — |
| Switch-4 | 50 : 0000.0001.1787 | 30 | H | — | G |
| Switch-5 | 100 : 0000.0001.A134 | 10 | A | B | — |
- นับจำนวน 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 พอร์ต 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
กับดักที่ทำให้เสียคะแนน
คำตอบผิดที่เจอจริง: "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 ไบต์ต่อกันจริง ๆ แล้วเทียบจากซ้ายไปขวา จะไม่มีทางสลับลำดับได้เลย
คำตอบผิดที่เจอจริง: "Switch-5 → cost = 20 (E) + 10 (A) = 30" — ผิด เพราะ cost บวกที่พอร์ตขารับเท่านั้น พอร์ต E เป็นขาส่งของ root จึงไม่ถูกนับ · สังเกตว่าถ้าบวกผิดแบบนี้ Switch-5 จะได้ 30 เท่ากับ Switch-4 แล้วบทบาทพอร์ตทั้งเครือข่ายจะรวนหมด · เลข 20 ของพอร์ต E คือตัวลวงที่ชัดที่สุดในข้อนี้ — มันไม่ถูกใช้เลยแม้แต่ครั้งเดียว
ที่ Switch-1 พอร์ต I และ J ได้ 10 เท่ากัน มีคนตอบว่า "RP = I และ J ทั้งคู่" — ผิดทันที เพราะสวิตช์หนึ่งตัวมี RP ได้พอร์ตเดียวเสมอ (มิฉะนั้นก็ยังมีลูปอยู่ ซึ่งขัดกับจุดประสงค์ของ STP) · เมื่อเสมอต้องตัดสินให้ขาดด้วยกฎข้อ 2→3→4 แล้วเขียนกำกับว่าใช้กฎข้อไหน
คนที่นับ "โหนด = 5 สวิตช์" แล้วใช้สูตรตรวจ จะได้ block = 10 − 4 = 6 พอร์ต ซึ่งผิดมหาศาล · โทโพโลยีแบบนี้เป็น กราฟสองส่วน (switch ↔ segment) ลิงก์ทุกเส้นวิ่งจากสวิตช์ไปเซกเมนต์เสมอ ดังนั้น โหนด = 5 + 4 = 9 · ถ้าวาดรูปแล้วเห็นเส้นลากจากสวิตช์ไปสวิตช์โดยตรง แปลว่าวาดผิดตั้งแต่ต้น
โจทย์เขียนชัดว่า "พร้อมแสดงการคำนวณแต่ละเส้นทาง" — คนที่เขียนแค่ "RP = A, C, I, H" ได้คะแนนไม่ถึงครึ่งของ 8 คะแนน แม้คำตอบถูกหมด · ต้องมีตารางที่แสดงทั้งเส้นทางที่ชนะและเส้นทางที่แพ้ เช่น "Switch-4: ผ่าน G = 10+40 = 50 · ผ่าน H = 10+20 = 30 → เลือก H" — เลข 50 ที่แพ้นั่นแหละคือคะแนน
เขียนยังไงให้ได้คะแนนเต็ม
ข้อ 1 (2 คะแนน) — เช็กลิสต์
- เขียนนิยาม: "Bridge ID = priority (2 ไบต์) + MAC (6 ไบต์)"
- ตาราง Bridge ID ครบทั้ง 5 ตัว (ขาดตัวเดียวก็เสียคะแนน)
- เขียนประโยคเทียบ: "25 < 50 < 100 = 100 < 150"
- ตอบ Root = Switch-2 พร้อมเหตุผล "priority ต่ำสุด ไม่ต้องเทียบ MAC"
- เขียนเพิ่มบรรทัดเดียว: "Root Path Cost ของ Switch-2 = 0"
ข้อ 2 (8 คะแนน) — เช็กลิสต์
- วาดรูปโทโพโลยีใหม่ในกระดาษ พร้อมชื่อพอร์ตและ cost กำกับทุกเส้น
- ตารางขั้นที่ 2: ทุกสวิตช์ × ทุกเส้นทาง แสดงการบวกเต็ม
x + y = z - ตารางขั้นที่ 3: ทุกเซกเมนต์ × cost ของแต่ละฝั่ง → ชี้ DP
- เขียน RP / DP / BP กำกับลงบนรูปด้วย (อาจารย์ดูรูปก่อนตาราง)
- ตีกรอบคำตอบสรุป: RP = A, C, I, H · DP = E, F, D, B · BP = G, J
- เขียนบรรทัดตรวจสอบ: "block = 10 − (9−1) = 2 ✓"
- ถ้ามีจุดเสมอ ให้เขียนกฎที่ใช้ตัดสินกำกับไว้
วาด สวิตช์เป็นสี่เหลี่ยม และ LAN segment เป็นเส้นหนาแนวนอน (ไม่ใช่จุด) แล้วลากพอร์ตจากสวิตช์ลงมาแตะเส้น — แบบนี้จะไม่มีทางลากเส้นสวิตช์–สวิตช์ผิด และเห็นชัดว่าเซกเมนต์ไหนมี 3 พอร์ต · จากนั้นเขียน cost ของทุกสวิตช์ไว้ใต้กล่อง ทันทีที่คำนวณเสร็จ จะได้ไม่ต้องไล่ซ้ำตอนทำขั้นที่ 3
โจทย์ฝึก 5 ข้อ
ไล่จากง่ายไปยากกว่าของจริงเล็กน้อย · ลองทำในกระดาษก่อนกดดูเฉลย
ข้อ 1 ง่าย — เครือข่ายมีสวิตช์ 4 ตัวดังนี้ จงเขียน Bridge ID ของทุกตัวและระบุว่าตัวไหนเป็น Root Bridge พร้อมเหตุผล
| สวิตช์ | Priority | MAC |
|---|---|---|
| SW-P | 4096 | AAAA.AAAA.AAAA |
| SW-Q | 8192 | 0000.0000.0001 |
| SW-R | 4096 | BBBB.BBBB.BBBB |
| SW-S | 32768 | 0000.0000.0000 |
เฉลยข้อ 1
ขั้นที่ 1 — แปลง priority เป็น hex 2 ไบต์แล้วต่อหน้า MAC (4096 = 0x1000 · 8192 = 0x2000 · 32768 = 0x8000)
| สวิตช์ | Bridge ID (8 ไบต์) |
|---|---|
| SW-P ★ | 1000.AAAA.AAAA.AAAA |
| SW-R | 1000.BBBB.BBBB.BBBB |
| SW-Q | 2000.0000.0000.0001 |
| SW-S | 8000.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 ชนะ
กับดักของข้อนี้: 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 |
|---|---|---|---|
| P1 | 4 | + 19 | 23 |
| P2 | 8 | + 4 | 12 ← ต่ำสุด |
| P3 | 0 | + 100 | 100 |
บทเรียนของข้อนี้: พอร์ต 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
(ข) หาพอร์ตที่ถูก 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)
| สวิตช์ | Priority | MAC | พอร์ต (segment, cost) |
|---|---|---|---|
| SW-A | 4096 | 0000.0000.00AA | a1 (L1, 10) · a2 (L4, 10) |
| SW-B | 4096 | 0000.0000.00AB | b1 (L1, 20) · b2 (L2, 10) |
| SW-C | 32768 | 0000.0000.00C0 | c1 (L2, 10) · c2 (L3, 30) |
| SW-D | 32768 | 0000.0000.00D0 | d1 (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-B | b1 ← L1 ได้ยิน 0 จาก SW-A → 0 + 20 = 20 | b2 ← L2 ได้ยิน 30 จาก SW-C → 30 + 10 = 40 | RP = b1 · cost 20 |
| SW-C | c1 ← L2 ได้ยิน 20 จาก SW-B → 20 + 10 = 30 | c2 ← L3 ได้ยิน 40 จาก SW-D → 40 + 30 = 70 | RP = c1 · cost 30 |
| SW-D | d1 ← L3 ได้ยิน 30 จาก SW-C → 30 + 10 = 40 | d2 ← L4 ได้ยิน 0 จาก SW-A → 0 + 50 = 50 | RP = d1 · cost 40 |
สังเกต SW-D: เส้นทางที่ ต่อตรงเข้า root (d2, cost 50) กลับแพ้เส้นทางที่ต้องอ้อม 2 ต่อ (d1, cost 40) — เพราะ cost ของ d2 แพงถึง 50 · นี่คือหลักการเดียวกับโจทย์ฝึกข้อ 2
ขั้นที่ 3 — Designated Port ของแต่ละเซกเมนต์
| Segment | ฝั่งซ้าย (cost) | ฝั่งขวา (cost) | DP | อีกฝั่ง |
|---|---|---|---|---|
| L1 | a1 → SW-A = 0 | b1 → SW-B = 20 | a1 | b1 = RP ของ SW-B |
| L2 | b2 → SW-B = 20 | c1 → SW-C = 30 | b2 | c1 = RP ของ SW-C |
| L3 | c2 → SW-C = 30 | d1 → SW-D = 40 | c2 | d1 = RP ของ SW-D |
| L4 | a2 → SW-A = 0 | d2 → SW-D = 40 | a2 | d2 ไม่ใช่ทั้ง RP และ DP → BLOCK |
ตรวจ: ลิงก์ = 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 ตัวเดียว
ขั้นที่ 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-A | H → SW4 = 0 · D → SW3 = 20 | H | D = RP ของ SW3 |
| Seg-D | G → SW4 = 0 · B → SW5 = 10 | G | B = RP ของ SW5 |
| Seg-B | A → SW5 = 10 · J → SW1 = 20 · E → SW2 = 30 | A | J = RP ของ SW1 · E ไม่ใช่ทั้งคู่ → BLOCK |
| Seg-C | C → SW3 = 20 · I → SW1 = 20 · F → SW2 = 30 | I | F = 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
ตรวจ: 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 ตัดสินแบบสุ่ม
เช็คความเข้าใจ
00AB.CD00.0001 และ SW-B มี MAC 00AB.CC99.FFFF ตัวไหนเป็น root?00AB.CC… vs 00AB.CD… ต่างกันครั้งแรกที่ไบต์ที่ 3: CC (204) < CD (205) → SW-B ต่ำกว่า จึงเป็น root · port cost ไม่เกี่ยวกับการเลือก root เลย มันใช้ในขั้นที่ 2 และ 3 เท่านั้น- 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 ให้กับตารางแสดงการคำนวณทุกเส้นทาง — เขียนทั้งเส้นที่ชนะและเส้นที่แพ้