IST · บทที่ 1 Switching Concepts, MAC Address Table และ Port Security

หัวข้อ 3 · 16 นาที

MAC address table

นึกภาพก่อน

พนักงานรับส่งเอกสารคนใหม่ในตึก ยังไม่รู้ว่าใครนั่งห้องไหน

  • ทุกครั้งที่มีคนเอาเอกสารมาฝาก เขา จดไว้ ว่า "คุณ A มาจากห้อง 1" (เรียนจาก ผู้ส่ง)
  • ถ้าเอกสารจ่าหน้าถึงคนที่ยังไม่รู้ว่าอยู่ห้องไหน เขา เดินตะโกนถามทุกห้อง ยกเว้นห้องที่เอกสารมา
  • ถ้ารู้แล้ว ก็เดินไปห้องนั้นห้องเดียว
  • ถ้าใครไม่ส่งอะไรมานาน เขาขีดชื่อออกจากสมุด เผื่อคนนั้นย้ายห้องไปแล้ว

สี่ข้อนี้คือ Learn → Flood → Forward → Age Out

MAC address

MAC address ยาว 48 bit (6 byte) เขียนเป็นเลขฐานสิบหก 12 หลัก เช่น 00:1A:2B:3C:4D:5E

ส่วนขนาดความหมาย
OUI (Organizationally Unique Identifier)3 byte แรกIEEE กำหนดให้ผู้ผลิตแต่ละราย
Device ID (NIC specific)3 byte หลังผู้ผลิตกำหนดให้อุปกรณ์แต่ละตัว

จาก OUI จึงบอกได้ว่าการ์ดเครือข่ายเป็นของผู้ผลิตรายใด

กระบวนการ 4 ขั้น

ขั้นดูอะไรทำอะไร
1. LearnSource MAC + พอร์ตขาเข้าบันทึกลง MAC address table
2. FloodDestination MAC ที่ ไม่รู้จักส่งออก ทุกพอร์ตยกเว้นพอร์ตขาเข้า
3. ForwardDestination MAC ที่ รู้จักส่งออกเฉพาะพอร์ตที่ตรงกัน
4. Age Outรายการที่ไม่มี frame เข้ามานานลบออกเมื่อครบ aging time (default 300 วินาที)
  • เรียนจาก Source ตัดสินใจจาก Destination — สองอย่างนี้ห้ามสลับ
  • Broadcast และ multicast ถูก flood เสมอ ไม่ว่าตารางจะมีอะไร
  • frame ที่ปลายทางอยู่ พอร์ตเดียวกับที่เข้ามา ถูก filter (ไม่ส่งต่อ)
  • MAC address table เรียกอีกชื่อว่า CAM table (Content Addressable Memory)

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

โจทย์ (ตามสไลด์): PC-A อยู่พอร์ต Fa0/1 และ PC-B อยู่พอร์ต Fa0/2 ตารางเริ่มต้นว่าง A ส่งหา B แล้ว B ตอบกลับ

#frameLearnตัดสินใจตารางหลังจบ
1A → BA อยู่ Fa0/1ไม่รู้จัก B → Flood ออกทุกพอร์ตยกเว้น Fa0/1A: Fa0/1
2B → AB อยู่ Fa0/2รู้จัก A → Forward ออก Fa0/1 พอร์ตเดียวA: Fa0/1, B: Fa0/2
3A → BA มีอยู่แล้ว (รีเซ็ต timer)รู้จัก B → Forward ออก Fa0/2 พอร์ตเดียวเหมือนเดิม

frame แรกทุกเครื่องได้เห็น (เพราะ flood) แต่ตั้งแต่ frame ที่สองเป็นต้นไป เฉพาะคู่สนทนาเท่านั้นที่เห็น

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

รูปแบบ: ชื่อ พอร์ต เช่น A 1 — ใส่หลาย host พอร์ตเดียวกันได้ (เหมือนต่อผ่าน hub)

รูปแบบ: ต้นทาง>ปลายทาง เช่น A>B และ A>* คือ broadcast

  1. A→B
  2. B→A
  3. A→B
Switch1A2B3C4DMAC ของ host แต่ละเครื่องแทนด้วยชื่อ host

MAC address table (CAM table)

MACพอร์ต
ว่าง
↑ เข้า = พอร์ตขาเข้า / ต้นทาง↓ ออก = พอร์ตขาออก / ปลายทาง
1.0×

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

MAC address table ว่าง

เมื่อเปิดเครื่อง switch ยังไม่รู้ว่า MAC ใดอยู่พอร์ตใด ทุก frame ที่เข้ามา switch ทำสองอย่างตามลำดับ: (1) Learn จาก Source MAC (2) ตัดสินใจจาก Destination MAC ว่าจะ Flood, Forward หรือ Filter

ลองใน simulation:

  • preset ที่สองเป็นตัวอย่างจากสไลด์ชุดเก่า: A → C และ D → C ถูก flood ทั้งคู่เพราะยังไม่มีใครรู้จัก C จนกว่า C จะส่งอะไรออกมาเอง
  • preset ที่สาม: A กับ B อยู่พอร์ตเดียวกัน (ต่อผ่าน hub) frame A → B จึงถูก filter
  • ลองใส่ A>* เพื่อดูว่า broadcast ถูก flood แม้ตารางจะเต็มแล้ว

คำสั่งที่เกี่ยวข้อง

cisco
show mac address-table
show mac address-table dynamic
show mac address-table count
clear mac address-table dynamic
mac address-table aging-time <seconds>
mac address-table static <mac> vlan <vlan-id> interface <interface>
คำสั่งใช้ทำอะไร
show mac address-tableดูทั้งตาราง
show mac address-table dynamicดูเฉพาะรายการที่เรียนรู้เอง
show mac address-table countดูจำนวนรายการ
clear mac address-table dynamicล้างรายการที่เรียนรู้เอง
mac address-table aging-timeตั้ง aging time
mac address-table staticเพิ่มรายการแบบ static

Aging time

ตั้งผล
สั้นเกินไปรายการถูกลบเร็ว → ต้อง flood และเรียนใหม่บ่อย → เปลือง CPU และ bandwidth
ยาวเกินไปรายการ ค้าง (stale) → เครื่องที่ย้ายพอร์ตหรือถอดออกแล้วยังมีชื่ออยู่ ตารางเต็มง่าย

Static MAC address

รายการ static ไม่ถูก age out และไม่เปลี่ยนเอง เหมาะกับ:

  • Server สำคัญ ที่ต้องอยู่พอร์ตเดิมเสมอ
  • อุปกรณ์ที่ต้องควบคุมเข้มงวด เช่น เครื่องควบคุมการเข้าออก, กล้อง CCTV
  • ลดการ flood (รายการอยู่ตลอด ไม่ต้องเรียนใหม่)

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

1. คิดว่า switch เรียนจาก Destination MAC

เรียนจาก Source MAC เท่านั้น เครื่องที่ไม่เคยส่งอะไรเลยจะไม่อยู่ในตาราง

2. คิดว่า flood ส่งออกทุกพอร์ต

ทุกพอร์ต ยกเว้นพอร์ตขาเข้า

3. คิดว่า broadcast ถูก forward ตามตาราง

broadcast (และ multicast) ถูก flood เสมอ ตารางไม่มีรายการของ broadcast address

4. จำ aging time ผิด

default 300 วินาที (5 นาที)

5. คิดว่า frame ตอบกลับถูก flood ด้วย

ตอนตอบกลับ switch รู้จักผู้ส่งคนแรกแล้ว (เรียนตอน frame แรก) จึง forward ได้เลย

6. สลับ OUI

OUI คือ 3 byte แรก กำหนดโดย IEEE ให้ผู้ผลิต

ที่มา: chapter1_lecture (2).pdf หน้า 12–17 · chapter2 Switched Network.pdf หน้า 17–22