System Tune

SoodarOS از سرویس‌هایی تشکیل شده است که با هم کار می‌کنند. این سرویس‌ها را می‌توان به دسته‌های زیر طبقه‌بندی کرد:

  • Data-plane Services

  • Control-plane Services

  • Security-plane Services

  • Management Services

  • System services

برخی تنظیمات برای عملکرد بهتر روتر از لحاظ performance و کارایی می‌تواند در اختصاص memory و CPU انجام گیرد تا روتر با توجه به کاربردی که دارد و منابع سخت‌افزاری که در اختیار دارد در بهترین حالت ممکن قرار داشته باشد.

Data-plane Services

سرویس‌های Data-plane مسئول forwarding، routing و filtering بسته‌های ورودی هستند.

اعضا

  • VPP: VPP یک network stack چند پلتفرمی سریع و مقیاس‌پذیر در لایه 2-4 است.

Control-plane Services

تمام سرویس‌های مربوط به signaling و routing protocols در این دسته قرار دارند.

اعضا

  • FRRouting: FRRouting (FRR) یک مجموعه پروتکل routing اینترنت رایگان و open-source است.

Security-plane Services

تمام سرویس‌های مربوط به تونل‌های امن IPSec در این دسته قرار دارند.

اعضا

  • Strongswan: Strongswan یک راه‌حل VPN مبتنی بر IPsec open-source برای ارتباط امن در شبکه‌ها است.

Management Services

سرویس‌های مسئول اتصال از خارج به SoodarOS یا مدیریت سرویس‌های داخلی.

اعضا

  • SooSLA: SooSLA سرویس زیربنایی است که زمان‌بندی و اجرای IP SLA را انجام می‌دهد.

  • Sooweb: وب سرور برای Soodar (فقط در محصول Amnet استفاده می‌شود).

System services

تمام سرویس‌های دیگر که برای اجرای سیستم استفاده می‌شوند در این دسته قرار دارند.

Tweaks

بسته به نیاز هر use case، مدیران می‌توانند سرویس‌ها و منابع آن‌ها را تنظیم کنند. این تنظیمات به عنوان Tuning profiles تعریف می‌شوند.

Common tweaks

برای تمام سه دسته سرویس‌های بالا، پارامترهای زیر را می‌توان تنظیم کرد:

  • CPU cores: مدیر می‌تواند هسته‌های CPU که سرویس مجاز به استفاده از آن‌ها است را مشخص کند. این core pinning به دو روش انجام می‌شود:

    • Exclusive: هسته فقط به این سرویس اختصاص داده می‌شود و در OS Scheduler استفاده نمی‌شود.

    • Shared: هسته در OS Scheduler لیست می‌شود و سایر پروسس‌ها می‌توانند از آن استفاده کنند.

    نکته

    برای سرویس‌های data-plane، اختصاص CPU core به صورت متفاوتی انجام می‌شود. به بخش Data-plane tweaks مراجعه کنید.

  • CPU weight: در صورت استفاده از CPU های shared، زمان CPU موجود بین تمام سرویس‌ها نسبت به وزن CPU time آن‌ها تقسیم می‌شود. وزن بالاتر به معنای زمان CPU بیشتر، وزن پایین‌تر به معنای زمان CPU کمتر است. محدوده مجاز 1 تا 10000 است. پیش‌فرض برای تمام پروسس‌ها 100 است.

  • Maximum memory: حد مطلق استفاده از حافظه برای پروسس‌های اجرا شده در این دسته را مشخص می‌کند.

Hugepages

زیرسیستم Hugepages مسئول مدیریت و پیکربندی استفاده از hugepages در سیستم است. Hugepages صفحات حافظه بزرگ‌تری نسبت به صفحات معمولی هستند که معمولاً از 2MB تا 1GB اندازه دارند. این صفحات بزرگ‌تر می‌توانند عملکرد سیستم را با کاهش overhead مرتبط با مدیریت تعداد زیادی صفحه کوچک‌تر بهبود بخشند.

نکته

Hugepages پیکربندی شده در این زیرسیستم در حال حاضر به طور انحصاری توسط کامپوننت data-plane استفاده می‌شود.

پارامترها

زیرسیستم Hugepages پارامترهای پیکربندی زیر را ارائه می‌دهد:

  • Hugepages Size: پارامتر اندازه hugepages اندازه هر hugepage را مشخص می‌کند. مقدار حافظه اختصاص داده شده برای هر hugepage را تعیین می‌کند. اندازه‌های پشتیبانی شده ممکن است بسته به معماری سیستم متفاوت باشد، اما اندازه‌های معمول شامل 2MB و 1GB است.

  • Hugepages Number: پارامتر تعداد hugepages تعداد کل hugepages اختصاص داده شده در سیستم را مشخص می‌کند. مقدار کلی حافظه رزرو شده برای hugepages را تعیین می‌کند. تعداد hugepages اختصاص داده شده باید بر اساس نیازهای حافظه سیستم و ویژگی‌های workload به دقت تعیین شود.

Data-plane tweaks

VPP یک شبکه پیچیده و با عملکرد بالا است که گزینه‌های قابل تنظیم زیادی دارد.

Data-plane CPU configuration

VPP حداقل به یک main thread و چند worker thread اختیاری نیاز دارد. هر یک از این thread ها به یک هسته CPU pin می‌شوند. پیکربندی پیش‌فرض از core 0 به عنوان main thread (در حالت shared) و بدون worker استفاده می‌کند. مدیر می‌تواند main thread/worker threads، انحصاری بودن CPU و وزن CPU سرویس را تنظیم کند.

Data-plane Memory configuration

VPP از سیستم مدیریت حافظه خود استفاده می‌کند، بنابراین در ابتدا، حافظه‌های مورد نیاز را از heap OS mmap می‌کند.

  • Main heap: حافظه اصلی VPP. برای ذخیره قوانین ACL، IP Routes و غیره استفاده می‌شود. پیش‌فرض 1GB است.

  • Stat heap: حافظه اختصاص داده شده برای ذخیره آمار (مانند تعداد بسته‌ها). پیش‌فرض 32MB است.

مدیر می‌تواند این مقادیر را در صورت نیاز تغییر دهد.

Data-plane buffer configuration

VPP از بافرهای از پیش تخصیص داده شده per NUMA برای پردازش بسته‌های ورودی استفاده می‌کند. توصیه می‌شود مقادیر پیش‌فرض تغییر نکنند، اما مدیران می‌توانند تعداد بافرها و اندازه بافر را تغییر دهند.

Data-plane poll sleep

حلقه اصلی poll VPP همیشه بسته‌های جدید را واکشی می‌کند و 100% CPU استفاده می‌کند. یک مدیر می‌تواند یک sleep ثابت بین main loop poll اضافه کند تا مصرف برق، استفاده CPU و تولید گرما را در دستگاه‌های کوچک کاهش دهد.

هشدار

فعال‌سازی poll sleep می‌تواند باعث کاهش عملکرد شود.

Interface order configuration

اینترفیس‌های شبکه بر اساس آدرس PCI آن‌ها مرتب می‌شوند. به عنوان مثال، یک روتر با 4 اینترفیس شبکه و آدرس‌های مربوطه آن‌ها به این صورت نگاشت می‌شود:

لیست اینترفیس‌ها (اصلی)

PCI Address

Order

Interface Name

MAC Address

00:04.0

0

ge0

0c:61:0c:83:00:00

00:05.0

1

ge1

0c:61:0c:83:00:01

00:06.0

2

ge2

0c:61:0c:83:00:02

00:07.0

3

ge3

0c:61:0c:83:00:03

در برخی شرایط، مدیران ممکن است بخواهند این ترتیب را تغییر دهند. SoodarOS Tuning Profiles از ترتیب اینترفیس استاتیک بر اساس آدرس MAC پشتیبانی می‌کند. اینترفیس‌های بدون ترتیب استاتیک از ترتیب توضیح داده شده استفاده می‌کنند. به عنوان مثال، در مثال بالا، مدیر ترتیب آدرس MAC 0c:61:0c:83:00:00 را به عنوان 2 تنظیم می‌کند. لیست اینترفیس حاصل:

لیست اینترفیس‌ها (بازترتیب شده)

PCI Address

Order

Interface Name

MAC Address

00:04.0

2

ge2

0c:61:0c:83:00:00

00:05.0

0

ge0

0c:61:0c:83:00:01

00:06.0

1

ge1

0c:61:0c:83:00:02

00:07.0

3

ge3

0c:61:0c:83:00:03

CLI Commands

Adding/Removing tuning profile

system tune profile TPROF

یک پروفایل Tuning ایجاد کرده و وارد پیکربندی آن می‌شود.

  • TPROF: نام پروفایل tuning را مشخص می‌کند.

نکته

حذف پروفایل فعلی پیکربندی پیش‌فرض را اعمال نمی‌کند. برای بازگشت به پیکربندی پیش‌فرض، باید پروفایل default را اعمال کنید.

no system tune profile TPROF

پروفایل tuning مشخص شده را حذف می‌کند.

Configuring Data-plane

data-plane

وارد node پیکربندی Data-plane می‌شود.

Configuring Data-plane CPU

cpu main [exclusive] (1-256)

یک هسته CPU را به عنوان main thread VPP تنظیم می‌کند.

  • exclusive: مشخص می‌کند که آیا هسته CPU باید از OS scheduler جدا شود.

  • (1-256): شماره هسته CPU.

no cpu main [[exclusive] (1-256)]

هسته CPU اختصاص داده شده فعلی به main thread را به پیش‌فرض (Shared CPU 0) تغییر می‌دهد.

cpu worker [exclusive] (1-256)…

یک لیست از هسته‌های CPU را برای استفاده به عنوان worker threads VPP اضافه می‌کند.

  • exclusive: مشخص می‌کند که آیا هسته CPU باید از OS scheduler جدا شود.

  • (1-256): شماره هسته CPU.

no cpu worker [[exclusive] (1-256)]

یک لیست از هسته‌های CPU را از worker threads VPP حذف می‌کند. اگر دستور بدون هیچ ورودی استفاده شود، تمام worker threads VPP حذف می‌شوند.

مثال:

soodar(config)# system tune profile max-perf
soodar(tune-profile)# data-plane
soodar(tune-dp-cfg)# cpu main exclusive 1
soodar(tune-dp-cfg)# cpu worker exclusive 2 3 4 5
soodar(tune-dp-cfg)# cpu worker 6 7

مثال دیگر:

می‌توانید core 3 از CPU را به data-plane اختصاص دهید:

soodar(config)# system tune profile DATA_PLANE_TUNE
soodar(tune-profile)# data-plane
soodar(tune-dp-cfg)# cpu main exclusive 3

Configuring Data-plane Memory

memory heap main SIZE

اندازه main heap VPP را تنظیم می‌کند.

  • SIZE: اندازه main heap VPP را مشخص می‌کند. می‌تواند به بایت یا فرمت قابل خواندن توسط انسان باشد.

نکته

مقدار پیش‌فرض برای اندازه main heap 1GB است.

no memory heap main [SIZE]

اندازه main heap VPP را به مقدار پیش‌فرض 1GB بازنشانی می‌کند.

memory heap stats SIZE

اندازه stats heap VPP را به مقدار SIZE تنظیم می‌کند.

  • SIZE: اندازه stats heap VPP را مشخص می‌کند. می‌تواند به بایت یا فرمت قابل خواندن توسط انسان باشد.

نکته

مقدار پیش‌فرض برای اندازه stats heap 32MB است.

no memory heap stats [SIZE]

اندازه stats heap VPP را به مقدار پیش‌فرض 32MB بازنشانی می‌کند.

مثال:

soodar(config)# system tune profile max-perf
soodar(tune-profile)# data-plane
soodar(tune-dp-cfg)# memory heap main 2G
soodar(tune-dp-cfg)# memory heap stats 64M
soodar(tune-dp-cfg)# memory max 4G

مثال دیگر:

یا حداکثر memory که data-plane می‌تواند به خود اختصاص دهد را محدود کنید:

soodar(tune-dp-cfg)# memory max 8G

Configuring Data-plane Buffers

memory packet-buffer size (2048-65536)

اندازه بخش داده بافر بسته را تنظیم می‌کند.

  • (2048-65536): اندازه بخش داده بافر بسته را مشخص می‌کند.

نکته

مقدار پیش‌فرض برای اندازه بخش داده بافر بسته 2048 است.

هشدار

اندازه بافر بسته به دقت انتخاب شده است و تغییر آن توصیه نمی‌شود.

no memory packet-buffer size [(2048-65536)]

اندازه بخش داده بافر بسته را به مقدار پیش‌فرض 2048 بازنشانی می‌کند.

memory packet-buffer count (16384-1049776)

تعداد بافرهای بسته data-plane را تنظیم می‌کند.

  • (16384-1049776): تعداد بافرهای مورد استفاده برای بسته‌ها را مشخص می‌کند.

نکته

تعداد پیش‌فرض بافرهای بسته 16384 است.

نکته

هر اینترفیس شبکه حدود 2000 بافر بسته مصرف می‌کند. به عنوان یک قاعده کلی، برای محاسبه بافرهای بسته مورد نیاز می‌توان از 2000 * تعداد اینترفیس‌ها + 1000 استفاده کرد.

no memory packet-buffer count [(16384-1049776)]

تعداد بافرهای بسته data-plane را به مقدار پیش‌فرض 16384 بازنشانی می‌کند.

Configuring Data-plane Poll Sleep

poll sleep (0-10000)

Sleep ثابت بین main loop polls VPP را تنظیم می‌کند. Sleep بر حسب میکروثانیه است.

no poll sleep [(0-10000)]

Sleep ثابت بین main loop polls VPP را غیرفعال می‌کند.

مثال:

soodar(config)# system tune profile max-perf
soodar(tune-profile)# data-plane
soodar(tune-dp-cfg)# poll sleep 100

Configuring Data-plane Interface Order

map interface <X:X:X:X:X:X|IFNAME> (0-1024)

ترتیب اینترفیس را بر اساس نام یا آدرس MAC آن تنظیم می‌کند.

  • <X:X:X:X:X:X|IFNAME>: آدرس MAC یا نام اینترفیس را مشخص می‌کند.

  • (0-1024): ترتیب اینترفیس را مشخص می‌کند.

no map interface <X:X:X:X:X:X|IFNAME> [(0-1024)]

ترتیب اینترفیس را به مقدار پیش‌فرض بازنشانی می‌کند.

  • <X:X:X:X:X:X|IFNAME>: آدرس MAC یا نام اینترفیس را مشخص می‌کند.

  • (0-1024): (اختیاری) ورودی که ترتیب اینترفیس را مشخص می‌کند.

map interface interactive

وارد حالت interactive برای تنظیم ترتیب اینترفیس‌ها می‌شود. در این حالت، کاربر می‌تواند فیزیکی اینترفیس‌ها را به ترتیبی که مطلوب است وصل کند. سیستم به طور خودکار ترتیب اینترفیس‌ها را تشخیص می‌دهد و ترتیب را بر اساس اتصال فیزیکی تنظیم می‌کند.

مثال:

soodar(config)# system tune profile max-perf
soodar(tune-profile)# data-plane
soodar(tune-dp-cfg)# map interface 0c:61:0c:83:00:00 2
soodar(tune-dp-cfg)# map interface ge0 1

مثال بالا ترتیب اینترفیس با آدرس MAC 0c:61:0c:83:00:00 (ge1) را به 2 و اینترفیس با نام ge0 را به 1 تنظیم می‌کند. پس از اعمال این پیکربندی و راه‌اندازی مجدد دستگاه، اینترفیس قبلی ge1 به ge2 و اینترفیس قبلی ge0 به ge1 تبدیل می‌شود.

مثال دیگر - Interface mapping:

همچنین تیون دیگری نیز برای map کردن نام اینترفیس‌ها وجود دارد. سیستم عامل سودار اینترفیس‌ها را طبق ID کارت شبکه نام‌گذاری می‌کند. گاهی اوقات ممکن است چینش کارت‌های شبکه به گونه‌ای باشد که ترتیب اینترفیس‌ها درست نباشد (در واقع ID کارت‌های شبکه به ترتیب نباشد). اینجا شما می‌توانید با تیون کردن دستگاه ترتیب‌ها را اصلاح نمایید. در زیر یک نمونه تیون اینترفیس را مشاهده می‌کنید:

soodar(config)# system tune profile interface-mapping
soodar(tune-profile)# data-plane 
soodar(tune-dp-cfg)# map interface ge2 0
interface ge2 changed to interface ge0
soodar(tune-dp-cfg)# 

فرض کنید به صورت پیش‌فرض اطلاعات کارت شبکه به شکل زیر باشد:

PCI Address

Order

Interface Name

MAC Address

00:04.0

0

ge0

0c:61:0c:83:00:00

00:05.0

1

ge1

0c:61:0c:83:00:01

00:06.0

2

ge2

0c:61:0c:83:00:02

00:07.0

3

ge3

0c:61:0c:83:00:03

ادمین بعد از بررسی متوجه می‌شود که اولین اینترفیس، ge2 شناخته شده است و باید اینترفیس تغییر کند.

با اعمال تیون تغییر به شکل زیر اعمال خواهد شد:

PCI Address

Order

Interface Name

MAC Address

00:06.0

0

ge0

0c:61:0c:83:00:02

00:05.0

1

ge1

0c:61:0c:83:00:01

00:04.0

2

ge2

0c:61:0c:83:00:00

00:07.0

3

ge3

0c:61:0c:83:00:03

توجه

با استفاده از دستور beacon در هر اینترفیس می‌توانید چراغ اینترفیس را روشن کنید و نام و جایگیری فیزیکی اینترفیس‌ها را تشخیص دهید.

Configuring Control-plane

control-plane

وارد node پیکربندی Control-plane می‌شود.

Common CPU Configuration

cpu [exclusive] (1-256)…

یک لیست از هسته‌های CPU را برای thread های سرویس‌های این دسته اضافه می‌کند.

  • exclusive: مشخص می‌کند که آیا هسته CPU باید از OS scheduler جدا شود.

  • (1-256): شماره هسته CPU.

no cpu [[exclusive] (1-256)]

یک لیست از هسته‌های CPU را از سرویس‌های این دسته حذف می‌کند. اگر دستور بدون هیچ ورودی استفاده شود، تمام CPU ها حذف می‌شوند.

cpu weight (1-10000)

دستور cpu weight برای تنظیم اولویت استفاده CPU برای یک پروسس یا گروهی از پروسس‌ها استفاده می‌شود. زمانی مفید است که هسته‌های CPU بین OS scheduler و سرویس به اشتراک گذاشته می‌شوند.

  • (1-10000): وزن پروسس یا گروهی از پروسس‌ها را مشخص می‌کند و باید عددی بین 1 تا 10000 باشد. وزن بالاتر به معنای اولویت بالاتر است و وزن 1 به معنای کمترین اولویت است.

هنگام استفاده از این دستور، مهم است که توجه داشته باشید که این دستور مقدار مشخصی از زمان CPU را برای پروسس یا گروهی از پروسس‌ها تضمین نمی‌کند. در عوض، اولویت نسبی بین آن‌ها را تنظیم می‌کند. بنابراین، اگر سیستم به شدت شلوغ باشد، پروسس‌های با وزن بالاتر ممکن است همچنان از زمان CPU محروم شوند.

نکته

مقدار پیش‌فرض وزن 100 است.

no cpu weight [(1-10000)]

وزن زمان CPU سرویس را به مقدار پیش‌فرض 100 تغییر می‌دهد.

مثال:

soodar(config)# system tune profile max-perf
soodar(tune-profile)# control-plane
soodar(tune-cp-cfg)# cpu exclusive 8
soodar(tune-cp-cfg)# cpu 9 10
soodar(tune-cp-cfg)# cpu weight 1000

مثال دیگر:

می‌توانید core های CPU را مدیریت کنید و مثلا core 2 را به engine سودار اختصاص دهید و دیگر پروسس‌ها از آن استفاده نکند:

soodar(config)# system tune profile CONTROL_PLANE_TUNE
soodar(tune-profile)# control-plane 
soodar(tune-cp-cfg)# cpu exclusive 2
soodar(tune-cp-cfg)# memory max 1G

Common Memory Configuration

memory max SIZE

حداکثر حافظه موجود سرویس را محدود می‌کند.

  • SIZE: حداکثر حافظه موجود سرویس را مشخص می‌کند. SIZE می‌تواند به بایت، فرمت قابل خواندن توسط انسان یا درصدی از حافظه کل سیستم باشد.

مثال:

soodar(config)# system tune profile max-perf
soodar(tune-profile)# control-plane
soodar(tune-cp-cfg)# memory max 16G

Configuring Security Plane

security-plane

وارد node پیکربندی Security-plane می‌شود.

Configuring Management Plane

management-plane

وارد node پیکربندی Management-plane می‌شود.

Configuring System services

system

وارد node پیکربندی System services می‌شود.

Applying tuning profile

پس از ایجاد یک پروفایل tuning، می‌توان این پروفایل را با استفاده از دستورات زیر به SoodarOS اعمال کرد.

system tune apply PROFILE

این دستور برای اعمال یک پروفایل tuning به SoodarOS استفاده می‌شود. برای اعمال تغییرات، راه‌اندازی مجدد دستگاه لازم است.

  • PROFILE: نام پروفایل tuning است که باید اعمال شود.

system tune apply default

این دستور برای اعمال پروفایل پیش‌فرض به SoodarOS استفاده می‌شود. برای اعمال تغییرات، راه‌اندازی مجدد دستگاه لازم است.

Tips

  • CPU 0 همیشه توسط kernel SoodarOS استفاده می‌شود. سعی کنید سرویس‌ها را به هسته‌های دیگر اختصاص دهید.

  • بهتر است از هسته‌های CPU انحصاری برای thread های data plane (main یا workers) استفاده شود.

  • یک یا 2 هسته باید برای سرویس‌های control-plane و management-plane کافی باشد، آن‌ها حتی می‌توانند با kernel سیستم به اشتراک گذاشته شوند.

  • استفاده از حافظه معمولاً نگرانی نیست و محدود کردن استفاده از حافظه می‌تواند نادیده گرفته شود.

  • تمام هسته‌های روتر خود را به کار بگیرید!

خلاصه

System Tune یک ویژگی قدرتمند برای:

بهینه‌سازی عملکرد با تخصیص صحیح منابع CPU و حافظه
کنترل دقیق بر روی سرویس‌های مختلف سیستم
مدیریت اینترفیس‌ها با تغییر ترتیب و نام‌گذاری
صرفه‌جویی در مصرف برق با تنظیم poll sleep
پروفایل‌های از پیش تنظیم شده برای استفاده سریع

با استفاده صحیح از System Tune می‌توانید عملکرد روتر خود را بهینه کرده و از تمام منابع سخت‌افزاری به بهترین شکل استفاده کنید.