در دنیای VoIP، یکی از مهمترین چالشها، بهینهسازی عملکرد Asterisk است. بسیاری از متخصصان این حوزه در انتخاب بهترین SIP Channel دچار تردید میشوند. در یک ارائه فنی، Flavio به بررسی عملکرد Chan_SIP و PJSIP پرداخته و نتایج مهمی را در مورد بهینهسازی Asterisk ارائه کرده است. در این مقاله، خلاصهای از این تحلیل را ارائه میدهیم تا بتوانید کارایی سیستمهای VoIP خود را بهبود دهید.
مشاهده ویدئو بر روی بستر یوتوب
متن ویدئو
پیشزمینه و تنظیمات
قبل از ورود به جزئیات آزمایشات، مهم است که زمینه این پژوهش را درک کنیم. Flavio، که در شرکت SIP Pulse برزیل فعالیت دارد، تجربه گستردهای در طراحی Softswitch، PBX Multi-Tenant و Session Border Controller دارد. در معماری VoIP آنها، Asterisk بهعنوان سرور اصلی پردازش رسانه مورد استفاده قرار میگیرد. با شروع پروژهای جدید، او متوجه شد که اطلاعات دقیقی در مورد عملکرد کانالهای مختلف در دسترس نیست. به همین دلیل، تصمیم به انجام این پژوهش و ارائه نتایج آن گرفت.
اهداف و روششناسی
اهداف اصلی
هدف از این تستها تعیین موارد زیر بود:
- انتخاب بهترین SIP Channel
- مقایسه عملکرد نسخههای مختلف Asterisk
- تعیین ظرفیت پردازش تماس در واحد Calls Per Second (CPS) و تعداد تماسهای همزمان (Simultaneous Calls)
روش تست
Flavio از رویکردی علمی استفاده کرد که شامل تولید ترافیک تا زمان بروز Retransmission بود. سپس این ترافیک کاهش داده شد تا سیستم به یک وضعیت پایدار برسد.
پارامترهای کلیدی تست:
- اجرای تستها بهمدت حداقل ۵ دقیقه برای اطمینان از نتایج معتبر
- محدود کردن CPU Usage به کمتر از ۶۰٪ برای جلوگیری از Overload
- بررسی کیفیت صوتی در طول تست
سناریوهای تست شامل موارد زیر بود:
- آزمایشهای بدون Media
- تست Echo Channel
- بررسی SIP Registration
سختافزار تست
برای این آزمایش، یک سیستم ارزانقیمت Quad-Core Celeron با هزینه کمتر از ۲۰۰ دلار استفاده شد که نمایانگر یک Mid-Range Implementation واقعی است.
نتایج آزمایشها
تست بدون Media
اولین مجموعه آزمایشها، بررسی عملکرد SIP Stack بدون پردازش صوتی بود.
نتایج:
- Asterisk 11, 13, 15 (Chan_SIP): همه نسخهها عملکردی مشابه، حدود ۲۹۵ تماس در ثانیه (CPS) داشتند.
- Asterisk 13, 15 (PJSIP): عملکرد بهتری با ۵۱۰ CPS ارائه داد، اما با مصرف بیشتر CPU.
نتیجهگیری
PJSIP سرعت بالاتری در Signaling دارد اما باعث افزایش CPU Usage میشود. بنابراین، اگر سیستم شما بر Signaling Performance متمرکز است، PJSIP انتخاب بهتری خواهد بود.
تست با Media
در این مرحله، آزمایشها شامل Echo Channel و تماسهای واقعی با فایلهای صوتی بود.
نتایج:
- Asterisk 11 (Chan_SIP): مدیریت ۳۷ تماس در ثانیه
- Asterisk 13 (Chan_SIP): کمی کاهش به ۳۲ تماس در ثانیه
- PJSIP: عملکرد حدود ۳۲ تماس در ثانیه، که کمی پایینتر از Chan_SIP بود.
نتیجهگیری
در زمانی که Media فعال است، Chan_SIP کمی بهتر عمل میکند، که نشاندهنده وجود CPU Bottleneck در PJSIP برای سیستمهایی با پردازش صوتی سنگین است.
تست تعداد تماسهای همزمان
بدون Media، Chan_SIP تعداد تماسهای همزمان بیشتری پشتیبانی کرد.
نتایج:
- Asterisk 11 (Chan_SIP): حداکثر ۳۰۳۸ تماس همزمان
- PJSIP: مقدار کمی کمتر از Chan_SIP در نسخههای جدیدتر
تست تعداد ثبت نام SIP در ثانیه
یکی از مسائل مهم در VoIP، تعداد SIP Registrations در هر ثانیه است. در اینجا، عملکرد Asterisk 11 نسبت به نسخههای جدیدتر بسیار بهتر بود.
نتایج:
- Asterisk 11: حدود ۸۵۰ ثبتنام در ثانیه
- Asterisk 13, 15: کاهش شدید به ۱۷۰ ثبتنام در ثانیه
نتیجهگیری
در محیطهایی که Registration Rate بالاست، استفاده از SIP Proxy یا Load Balancer ضروری خواهد بود.
نکات کلیدی و توصیهها
افزایش مقدار max files
یکی از اولین تنظیمات حیاتی، افزایش مقدار max files به بالاتر از مقدار پیشفرض ۱۰۰۰ است. در غیر این صورت، ظرفیت CPS و تعداد تماسهای همزمان بهشدت محدود خواهد شد.
تاثیر ماژولهای CDR بر عملکرد
نسخههای جدیدتر Asterisk شامل SQLite CDR Module بهصورت پیشفرض هستند که میتواند باعث کاهش عملکرد شود. اگر این قابلیت نیاز نیست، توصیه میشود که آن را غیرفعال کنید.
انتخاب نسخه مناسب
- برای سیستمهای کوچک و متوسط: نسخههای Asterisk 11 تا ۱۵ با Chan_SIP یا PJSIP کافی خواهند بود.
- برای سیستمهای بزرگ: استفاده از یک SIP Proxy مانند Kamailio یا OpenSIPS برای Load Balancing توصیه میشود.
آیندهنگری و پشتیبانی بلندمدت
با توجه به اینکه Chan_SIP دیگر پشتیبانی رسمی نمیشود، بهتر است که سیستمها به سمت PJSIP مهاجرت کنند تا از قابلیتهای جدید و Long-Term Support بهرهمند شوند.
جمعبندی
این بررسی دقیق، عوامل کلیدی را در بهینهسازی و انتخاب کانال SIP در Asterisk مشخص کرد. مهندسان VoIP با در نظر گرفتن این دادهها میتوانند سیستمهایی مقیاسپذیر، کارآمد و پایدار طراحی کنند.
منابع بیشتر
کدها و ابزارهای تست Flavio در GitHub موجود هستند:
Flavio’s Asterisk Testing Tools and Scripts
سوالات خود را مطرح کنید
اگر تجربهای در بهینهسازی Asterisk دارید یا سوالی در مورد این تستها دارید، در بخش نظرات با ما به اشتراک بگذارید.