جدول CAM و معماری سوئیچینگ (TCAM, CEF, SDM)

راهنمای جامع و تخصصی عملکرد، امنیت، مدیریت منابع سخت‌افزاری و عیب‌یابی پیشرفته در سوئیچ‌های سیسکو

جدول CAM یا Content Addressable Memory، قلب تپندهٔ سوئیچ‌های لایه ۲ است. این حافظهٔ ویژه، برخلاف RAM معمولی که با آدرس جستجو می‌شود، با محتوا (مانند آدرس MAC) جستجو می‌کند و در یک سیکل کلاک، پورت مربوطه را پیدا می‌کند. درک عمیق CAM، TCAM و تعامل آن‌ها با معماری CEF، مرز بین یک ادمین معمولی و یک مهندس خبره شبکه است.

عملکرد جدول CAM چگونه است؟

جدول CAM در سوئیچ‌های شبکه، آدرس‌های MAC دستگاه‌های متصل را به پورت‌های فیزیکی سوئیچ نگاشت می‌دهد. این جدول در حافظهٔ سخت‌افزاری سریع ذخیره می‌شود تا جستجوها در حد نانوثانیه انجام گیرد. فرآیند عملکرد در مراحل زیر خلاصه می‌شود:

  1. یادگیری (Learning): وقتی فریمی از یک پورت وارد می‌شود، سوئیچ آدرس MAC مبدأ و شماره پورت را در جدول CAM ثبت می‌کند. اگر آدرس قبلاً وجود داشته باشد، فقط زمان‌نگار (timestamp) به‌روزرسانی می‌شود.
  2. جستجو (Lookup): برای فریم‌های جدید، آدرس MAC مقصد در کل جدول CAM جستجو می‌شود — این جستجو موازی و بسیار سریع است.
  3. ارسال (Forwarding):
    • اگر آدرس پیدا شد: ارسال Unicast فقط به پورت مربوطه.
    • اگر پیدا نشد: Flooding به تمام پورت‌های VLAN (به جز پورت مبدأ)، که اغلب با ARP ترکیب می‌شود.
  4. انقضا (Aging): رکوردهای غیرفعال پس از زمان مشخص (پیش‌فرض ۳۰۰ ثانیه) حذف می‌شوند تا فضا برای رکوردهای جدید آزاد شود. این زمان برای جلوگیری از flooding غیرضروری حیاتی است.

در سوئیچ‌های سیسکو، دستور show mac address-table برای نمایش جدول CAM استفاده می‌شود. برای شمارش ورودی‌ها از show mac address-table count بهره ببرید.

نمونه جدول CAM

در زیر، نمونه خروجی دستور show mac address-table در یک سوئیچ سیسکو آورده شده است. این جدول آدرس‌های MAC، VLAN، نوع ورودی و پورت مربوطه را نشان می‌دهد:

VLAN    MAC Address       Type        Ports
----    -----------       --------    -----
   1    0011.2233.4455    DYNAMIC     Gi1/0/1
   1    00a0.c9b2.3e4f    DYNAMIC     Gi1/0/2
   2    0050.56ab.cdef    STATIC      Gi1/0/3
   1    000c.29a4.b5c6    DYNAMIC     Gi1/0/4

بر اساس مستندات سیسکو و NetworkLessons.com

تفاوت CAM با TCAM

CAM فقط تطبیق‌های دقیق باینری (۰ و ۱) را پشتیبانی می‌کند و برای جدول MAC ایده‌آل است. اما TCAM (Ternary Content Addressable Memory) حالت سوم «X» (مهم نیست یا wildcard) را اضافه می‌کند، که برای تطبیق‌های الگویی مانند Longest Prefix Match در روتینگ IP، ACLها و QoS ضروری است.

مزایای TCAM:
• جستجوی موازی در یک سیکل کلاک.
• پشتیبانی از ماسک برای subnetها (مثل ۱۹۲.۱۶۸.۱.۰/۲۴).
• استفاده در سوئیچ‌های لایه ۳ برای روتینگ سریع.

TCAM گران‌تر و پرمصرف‌تر از CAM است، اما در سوئیچ‌های مدرن مانند Catalyst سیسکو، هر دو با هم استفاده می‌شوند.

نمونه خروجی TCAM Utilization

برای بررسی استفاده از TCAM، از دستور show platform hardware fed active fwd-asic resource tcam utilization استفاده کنید. نمونه خروجی:

Table Max Values Used Values
Unicast MAC addresses 32768/1024 19/21
L3 Multicast entries 8192/512 0/9
Directly or indirectly connected routes 24576/8192 3/19
QoS Access Control Entries 5120 85
Security Access Control Entries 5120 126

مدیریت پیشرفته منابع با SDM Templates

یکی از چالش‌های اصلی در سوئیچ‌های Enterprise (مانند سری Catalyst 3750, 3850, 9300)، محدودیت سخت‌افزاری TCAM است. حافظه TCAM یک منبع اشتراکی است. سیسکو از طریق SDM (Switch Database Management) به شما اجازه می‌دهد نحوه تقسیم این کیک سخت‌افزاری را تعیین کنید.

💡 مثال عملی: اگر سوئیچ شما در لایه Core استفاده می‌شود، به جدول Routing بزرگتری نیاز دارید، اما اگر در لایه Access است، به تعداد بیشتری آدرس MAC نیاز دارید.

برای مشاهده وضعیت فعلی از دستور show sdm prefer استفاده کنید. تغییر این پروفایل نیاز به Reboot دارد.

آسیب‌پذیری‌های امنیتی جدول CAM

حمله MAC Flooding (CAM Table Overflow)

جدول CAM ظرفیت محدودی دارد (مثلاً ۸۰۰۰ تا ۶۴۰۰۰ ورودی). مهاجم با ارسال فریم‌های جعلی با MACهای تصادفی، جدول را پر می‌کند. سوئیچ سپس flooding می‌کند و مثل هاب عمل می‌نماید، که اجازهٔ شنود ترافیک را می‌دهد.

حمله ARP Spoofing

مهاجم با پاسخ‌های ARP جعلی، MAC خودش را به جای گیت‌وی قرار می‌دهد و جدول CAM را مسموم می‌کند، که منجر به Man-in-the-Middle می‌شود.

⚠️ روش‌های مقابله:
Port Security: محدود کردن تعداد MAC در هر پورت (مثل maximum 2).
DHCP Snooping: اعتبارسنجی DHCP و جلوگیری از جعل.
Dynamic ARP Inspection (DAI): بررسی ARP بر اساس DHCP binding.
IP Source Guard: فیلتر بر اساس IP/MAC معتبر.
• BPDU Guard برای جلوگیری از حملات STP.

چالش فنی: پدیده Unicast Flooding و نامتقارنی مسیریابی

بسیاری از مهندسان شبکه تصور می‌کنند Flooding فقط برای ترافیک Broadcast است. اما خطرناک‌ترین نوع ترافیک برای CPU سوئیچ و پهنای باند شبکه، Unknown Unicast Flooding است.

سناریوی نامتقارنی (Asymmetric Routing)

این مشکل زمانی رخ می‌دهد که ترافیک رفت از یک مسیر و ترافیک برگشت از مسیر دیگری (مثلاً سوئیچ دوم در HSRP) عبور کند:

  1. سوئیچ A بسته را به مقصد می‌فرستد اما پاسخ از سوئیچ B برمی‌گردد.
  2. سوئیچ A هیچ ترافیک ورودی از سمت سرور مقصد نمی‌بیند، بنابراین آدرس MAC سرور را در جدول CAM خود یاد نمی‌گیرد (یا تایمر آن منقضی می‌شود).
  3. دفعه بعد که کلاینت بسته‌ای به سرور می‌فرستد، سوئیچ A آدرس مقصد را در جدول CAM ندارد و بسته را روی تمام پورت‌های VLAN پخش (Flood) می‌کند.
⚠️ تأثیر مخرب: این پدیده باعث می‌شود پورت‌های کم‌سرعت متصل به سوئیچ (مثل پرینترها یا IoT) زیر بار ترافیک گیگابیتی سرورها غرق شوند (Denial of Service ناخواسته).

بهترین شیوه‌ها برای زمان انقضا (Aging Time)

برای حل مشکل Unicast Flooding که در بالا ذکر شد، زمان Aging بسیار مهم است. زمان پیش‌فرض Aging ۳۰۰ ثانیه است، اما برای جلوگیری از flooding، آن را با ARP timeout (معمولاً ۱۴۴۰۰ ثانیه یا ۴ ساعت) همسان کنید — مثلاً ۱۴۴۱۰ ثانیه (ARP + ۱۰ ثانیه). دستور: mac address-table aging-time 14410.

در شبکه‌های بزرگ، Aging را per-VLAN تنظیم کنید. در تغییرات توپولوژی (TCN)، Aging را سریع‌تر کنید.

ادغام CAM با Quality of Service (QoS)

CAM پایهٔ QoS است، اما TCAM برای اعمال سیاست‌های پیچیده (مانند اولویت‌بندی VoIP) استفاده می‌شود. سوئیچ‌ها با TCAM، ACLهای QoS را در یک جستجو اعمال می‌کنند.

بهترین شیوه: ظرفیت TCAM را برای QoS اولویت‌بندی کنید تا تأخیر کم بماند. از show sdm prefer برای پارتیشن‌بندی استفاده کنید.

معماری زیرساخت: ارتباط CEF، FIB و TCAM

در سوئیچ‌های لایه ۳ مدرن، CPU درگیر ارسال تک‌تک بسته‌ها نمی‌شود. این کار توسط سخت‌افزار (ASIC) و با کمک جدول‌های مشتق شده از نرم‌افزار انجام می‌شود که سرعت Wire-Speed را تضمین می‌کند:

مفهوم نرم‌افزاری (Control Plane) معادل سخت‌افزاری (Data Plane) وظیفه
Routing Table (RIB) FIB (Forwarding Information Base) ذخیره شده در TCAM. تصمیم‌گیری سریع برای انتخاب پورت خروجی بر اساس IP مقصد (Longest Match).
ARP Table Adjacency Table ذخیره شده در RAM اختصاصی. حاوی اطلاعات Rewrite (هدر جدید لایه ۲) برای جایگزینی سریع MAC آدرس‌های Hop بعدی.

وقتی تغییری در شبکه رخ می‌دهد (مثلاً لینک قطع می‌شود)، CPU جدول‌های RIB و ARP را آپدیت کرده و بلافاصله تغییرات را به TCAM و حافظه Adjacency تزریق می‌کند تا وقفه در ارسال بسته‌ها به حداقل برسد.

سوالات متداول (FAQ)

📋 جدول CAM چیست؟

جدول CAM یا Content Addressable Memory، حافظه‌ای است که در سوئیچ‌های شبکه برای نگاشت آدرس‌های MAC به پورت‌ها استفاده می‌شود. این جدول اجازه جستجوی موازی و سریع را می‌دهد.

📋 تفاوت CAM و TCAM چیست؟

CAM فقط تطبیق دقیق باینری (0 و 1) را پشتیبانی می‌کند، در حالی که TCAM حالت سوم 'X' (مهم نیست) را برای ACL و QoS اضافه می‌کند.

📋 چگونه جدول CAM را در سیسکو نمایش دهیم؟

از دستور 'show mac address-table' استفاده کنید تا محتوای جدول CAM را ببینید.

📋 علت flooding در سوئیچ چیست؟

Flooding زمانی رخ می‌دهد که آدرس MAC مقصد در جدول CAM پیدا نشود، یا جدول پر شده باشد (CAM Overflow).

📋 چگونه حمله MAC Flooding را جلوگیری کنیم؟

از Port Security، DHCP Snooping و Dynamic ARP Inspection (DAI) استفاده کنید.

عیب‌یابی رایج مسائل جدول CAM

در جدول زیر، مشکلات رایج، علل و راه‌حل‌های عیب‌یابی جدول CAM آورده شده است:

مشکل علت احتمالی راه‌حل
Flooding ترافیک Unicast عدم تطابق Aging Time CAM با ARP Timeout Aging Time را به ۱۴۴۱۰ ثانیه تنظیم کنید: mac address-table aging-time 14410
جدول CAM خالی یا پر نمی‌شود مشکل STP یا TCN (Topology Change Notification) STP را چک کنید و show spanning-tree اجرا کنید؛ Aging را سریع کنید
CAM Overflow و شنود ترافیک حمله MAC Flooding Port Security فعال کنید: switchport port-security maximum 2
ورودی‌های قدیمی در جدول Aging Time طولانی جدول را پاک کنید: clear mac address-table dynamic
مشکل QoS به دلیل TCAM پر استفاده بیش از حد ACL استفاده TCAM را چک کنید: show platform hardware tcam utilization
TCAM Exhaustion برای Security ACL تعداد ACEs بیش از حد ACLها را بهینه کنید یا SDM را تغییر دهید: show platform tcam utilization
💡 نکته عیب‌یابی: همیشه از show mac address-table count برای شمارش ورودی‌ها استفاده کنید و SNMP برای مانیتورینگ مداوم تنظیم کنید. برای TCAM، از show sdm prefer بهره ببرید.

نکات مهم برای مدیران شبکه