IST · บทที่ 3 Spanning Tree Protocol

หัวข้อ 10 · 14 นาที

Layer 2 loop และแนวคิดของ STP

นึกภาพก่อน

สองห้องต่อกันด้วยประตูสองบาน เพื่อว่าถ้าบานหนึ่งเสียยังใช้อีกบานได้ ตอนนี้ตะโกนประกาศในห้องแรก: เสียงลอดประตูทั้งสองบานไปห้องสอง แล้วเสียงจากแต่ละบานก็ลอดกลับมาทางอีกบาน วนไปมาไม่หยุด และดังขึ้นเรื่อย ๆ

ลิงก์สำรองระหว่าง switch ทำแบบเดียวกันกับ broadcast frame STP แก้โดยล็อกประตูบานหนึ่งไว้ และเปิดเมื่ออีกบานเสีย

ปัญหา: Layer 2 loop

  • เราต่อ ลิงก์สำรอง (redundant link) ระหว่าง switch เพื่อ fault tolerance
  • แต่ลิงก์สำรองทำให้เกิด loop ทาง physical
  • frame ระดับ Layer 2 ไม่มี TTL (IP packet มี TTL ที่ลดลงทุก hop จนถูกทิ้ง แต่ Ethernet frame ไม่มี) frame จึง วนไม่สิ้นสุด

กลไกของ broadcast storm

  1. PC ส่ง broadcast (เช่น ARP request)
  2. SW1 flood ออก ทั้งสองลิงก์ ไปยัง SW2
  3. SW2 ได้รับสองชุด และ flood แต่ละชุดออกพอร์ตอื่นทั้งหมด รวมถึงลิงก์อีกเส้นที่กลับไป SW1
  4. SW1 ได้ broadcast กลับมา ก็ flood อีก วนซ้ำและ ทวีคูณ

ผลกระทบสามอย่าง

ผลอธิบาย
Broadcast stormbroadcast วนและทวีคูณจน bandwidth และ CPU ของ switch ถูกใช้ 100% เครือข่ายใช้งานไม่ได้
MAC address table instability (MAC flapping)switch เห็น Source MAC เดียวกันเข้ามาจากหลายพอร์ตสลับกัน ตารางจึงเปลี่ยนไปมาตลอด
Multiple frame copiesปลายทางได้รับ frame เดียวกันหลายชุด

STP (Spanning Tree Protocol)

IEEE 802.1D — สร้าง topology ที่ ไม่มี loop ทาง logical โดยการ block พอร์ต บางพอร์ต

  • ไม่ต้องถอดสาย — สายสำรองยังเสียบอยู่ แต่พอร์ตไม่ส่ง data
  • เมื่อลิงก์หลักล่ม STP เปิดพอร์ตที่ block กลับมาใช้ อัตโนมัติ
  • switch คุยกันด้วย BPDU

ได้ทั้ง redundancy (ทาง physical) และ loop-free (ทาง logical)

ตระกูลของ STP

โพรโทคอลมาตรฐานลักษณะconvergence
STPIEEE 802.1Dต้นฉบับ~50 วินาที
RSTPIEEE 802.1wเร็วขึ้นมาก< 10 วินาที
PVST+CiscoSTP หนึ่งชุดต่อ VLAN~50 วินาที
Rapid-PVST+CiscoRSTP + PVST+ — default บน Ciscoเร็วแบบ RSTP
MSTPIEEE 802.1sรวม หลาย VLAN เข้า instance เดียว ประหยัด CPUเร็วแบบ RSTP

BPDU (Bridge Protocol Data Unit)

frame ที่ switch ใช้แลกข้อมูล STP กัน ส่ง ทุก 2 วินาที (Hello time)

fieldเก็บอะไร
Root Bridge IDBridge ID ของตัวที่ผู้ส่งเชื่อว่าเป็น root
Sender Bridge IDBridge ID ของผู้ส่ง BPDU นี้
Root Path Costcost รวมจากผู้ส่งไปถึง root
Port IDพอร์ตที่ส่ง BPDU ออกมา

ประเภทของ BPDU

ประเภทใช้เมื่อ
Configuration BPDUปกติ — root ส่งออก แล้ว switch อื่นส่งต่อ (relay)
TCN BPDU (Topology Change Notification)แจ้งว่า topology เปลี่ยน → ทำให้ switch ล้าง MAC table เร็วขึ้น

Timer

Timerค่า defaultความหมาย
Hello2 วินาทีระยะห่างของ BPDU
Forward Delay15 วินาทีเวลาที่อยู่ในสถานะ Listening และ Learning (อย่างละ 15)
Max Age20 วินาทีเวลาที่เก็บข้อมูล BPDU ล่าสุดไว้ก่อนถือว่าหมดอายุ (ประมาณ 10 BPDU)

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

โจทย์: SW1 และ SW2 ต่อกันด้วยสองลิงก์ ไม่มี STP PC-A บน SW1 ส่ง ARP request (broadcast) หนึ่ง frame ไล่สามรอบแรก

รอบเกิดอะไรจำนวน frame ที่วิ่งอยู่
0A ส่ง broadcast เข้า SW11
1SW1 flood ออกลิงก์ 1 และลิงก์ 22
2SW2 รับจากลิงก์ 1 → flood ออกลิงก์ 2 · รับจากลิงก์ 2 → flood ออกลิงก์ 12 (กลับไปหา SW1)
3SW1 รับกลับมาทั้งสองทาง → flood ออกอีกลิงก์ และออกพอร์ตของ host ทุกเครื่องอีกครั้ง2 (และวนต่อไม่หยุด)

ระหว่างนั้น:

  • host ทุกเครื่องบนทั้งสอง switch ได้รับ ARP request เดิมซ้ำทุกรอบ (multiple frame copies)
  • SW2 เห็น Source MAC ของ A เข้ามาจากลิงก์ 1 แล้วลิงก์ 2 สลับกัน → แก้ตารางกลับไปกลับมา (MAC flapping)
  • frame ไม่มี TTL จึงไม่มีอะไรหยุดมัน และทุก broadcast ใหม่เพิ่ม frame ที่วนอยู่ (broadcast storm)

ถ้ามี switch สามตัวต่อเป็นสามเหลี่ยม จำนวน frame จะเพิ่มขึ้นทุกรอบ เพราะแต่ละ switch flood ออกมากกว่าหนึ่งพอร์ต

ถ้าเปิด STP: พอร์ตหนึ่งของลิงก์ 2 ถูก block → รอบ 1 SW1 ส่งออกลิงก์ 1 เส้นเดียว → SW2 ไม่มีทางส่งกลับ → จบ

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

1. คิดว่า TTL ช่วยหยุด loop ที่ Layer 2

TTL อยู่ใน IP header (Layer 3) switch ไม่ได้ดูและไม่ได้ลดค่า

2. คิดว่า STP ปิดสาย

block ทาง logical สายยังต่ออยู่ และพอร์ตยังฟัง BPDU

3. สลับมาตรฐาน

802.1D = STP · 802.1w = RSTP · 802.1s = MSTP · PVST+ และ Rapid-PVST+ เป็นของ Cisco

4. สลับ timer

Hello 2 · Forward Delay 15 · Max Age 20

5. คิดว่า loop เกิดเฉพาะกับ broadcast

unknown unicast และ multicast ก็ถูก flood และวนได้เช่นกัน

ที่มา: Spanning Tree Protocol Presentation (1).pdf หน้า 3–12 · chapter2 Switched Network.pdf หน้า 52–64, 68, 72