حافظه CAM چیست و چه کاربردی دارد؟
CAM یک حافظهای بسیار سریع و گران قیمت و به طور قابل توجهی سریعتر از RAM است. همین ویژگی باعث استفاده از این حافظه جهت بهبود عملکرد سوییچ و سریعتر شدن عمل جستوجو و Forwarding در سوییچ ها شده است. CAM میتواند در جداولی که جستوجو براساس یک مقدار با طول ثابت است بسیار کارآمد باشد؛ مانند MAC address table در سوییچ ها.
سوییچ به منظور درست کردن MAC table خود، پس از دریافت فریم از یک MAC HOST، دستگاه و پورتی که از طریق آن فریم را دریافت کرده است را در جدول MAC table ذخیره میکند تا بتواند با استفاده از این جدول عمل Forwarding را براساس آدرس MAC مقصد انجام دهد. با استفاده از حافظه CAM و استفاده از آن در MAC Table، میتوان در کوتاه ترین زمان، جست و جو را براساس Destination MAC انجام داد.
پیدایش TCAM برای چه بود؟
در مثال بالا جست و جو فقط براساس یک شاخصه کلیدی بعنی Destination MAC بود. CAM فقط میتوانست بر اساس یک سری از صفر و یکهای مشخص (Destination MAC) عمل انطباق را در انجام دهد. اما در شرایطی ممکن است سوییچ به چند شاخص برای عمل انطباق نیاز پیدا کند. در اینجا حافظه (TCAM (ternary content-addressable memory با اضافه کردن یک وضعیت جدید به میان میآید. حافظهی TCAM قابلیت نگهداری 3 وضعیت را فراهم کرده است: 0,1 و X که X به معنی اهمیت ندادن به بیت متناظر میباشد. این ویژگی در شرایطی که نیاز به چند شاخص کلیدی برای جست و جو باشد میتواند باعث بهبود سرعت و عملکرد سوییچ شود. با یک مثال کاربرد TCAM واضح تر خواهد شد.
هنگام نوشتن یک ACL ممکن است یک یا چند پارامتر مد نظر شما باشد: انتخاب یکسری از آدرس ها یا انتخاب آدرس به همراه پورت در ACL. انتخاب بازه آدرس مورد نظر با مفهومی به نام Wildcard Mask مشخص میشود، بیت صفر در wildcard Mask یعنی دقیقا بیت متناظر آدرس چک شود و بیت 1 به معنی اهمیت ندادن به آدرس متناظر است.
TCAM بعد از کامپایل کردن ACL با استفاده ویژگی خود میتواند انطباق خود را رو بازهای از آدرس ها انجام دهد:
IP:192.168.1.240
wildcard Mask:0.0.0.3
111100XX
11110000
11110001
11110010
11110011
در مثال بالا، دو بیت آخر به صورت X یا Don’t Care در نظر گرفته شدهاند و با این کار سرعت جستجو بالاتر خواهد رفت؛در واقع نقطه قوت TCAM نسبت CAM در داشتن وضعیت X خود است.
برای اینکه سویچ این اطلاعات را در جداول TCAM ذخیره و مدیریت حافظه داشته باشد از دو نرم افزار در سویچ استفاده میکند:
- Feature Manager :این نرم افزار با کامپایل ACL تنظیم شده در سوییچ آن را به فرمت استاندار برای جدول TCAM تبدیل میکند.
- Switching Database Manager: حافظه TCAM را به بخش های مختلف برای کاربردهای متفاوت تقسیم کرده که به کمک SDM میتوان مدیریت تخصیص حافظه TCAM را کنترل کرد.
جداول TCAM و کاربرد آن ها
جدول TCAM از سه بخش تشکیل شده است : Value, mask, Result
Value و Mask هر کدام 134 بیت طول دارند که تمام این بیت استفاده نمیشود و بسته به نوع ACL از بیت ها استفاده میشود .
بیت 0 در جدول Mask به معنی انتخاب بیت متناظر در جدول Value میباشد و بیت 1 در جدول MASK به معنی بی اهمیت بودن بیت متناظر در جدول Value است.
جدول Result نتیجهای که بعد از جست و جو انجام میشود را در خود نگه میدارد، این نتیجه میتواند به انتخاب یا عدم انتخاب یکسری آدرس یا اعمال یکسری از سیاست ها ختم شود.
شکل زیر نحوه کامپایل شدن یک ACL در جدول TCAM را تشریح میکند:

برای دیدن اینکه چه مقدار از TCAM سوییچ مورد استفاده قرار گرفته میتوانید از دستور Show platform tcam utilization استفاده کنید.

در صورتی که بخواهید حجم این حافظه را برای هدف خاصی مثلا سویچینگ یا روتینگ بهینه کنید میتوانید SDM Template سوییچ را عوض کنید.
C3750G-24T#show sdm prefer
The current template is "desktop default" template.
The selected template optimizes the resources in
the switch to support this level of features for
8 routed interfaces and 1024 VLANs.
number of unicast mac addresses: 6K
number of igmp groups + multicast routes: 1K
number of unicast routes: 8K
number of directly connected hosts: 6K
number of indirect routes: 2K
number of policy based routing aces: 0
number of qos aces: 512
number of security aces: 1K
برای تغییر SDM Template سویچ از دستور زیر استفاده کنید و سپس سوییچ را reload کنید.
sdm prefer { access | default | dual-ipv4-and-ipv6 { default | routing | vlan } | routing | vlan }
منابع:
https://www.cisco.com/c/en/us/support/docs/switches/catalyst-3750-series-switches/44921-swdatabase-3750ss-44921.html
https://learningnetwork.cisco.com/docs/DOC-27403
CCNP SWITCH Book