مجله ایرانیکاسرورآموزش سرور، هاست، وردپرس و شبکه
آموزشی

مقایسه FreeSWITCH و Asterisk؛ کدام برای حجم بالای تماس مناسب‌تر است؟

اگر قرار است سامانه‌ای با صدها یا هزاران تماس هم‌زمان بسازید، پاسخ سؤال «FreeSWITCH بهتر است یا Asterisk؟» با یک عدد ثابت مشخص نمی‌شود. تعداد تماس هم‌زمان فقط یکی از متغیرهاست. Codec، Transcoding، ضبط…

مقایسه FreeSWITCH و Asterisk؛ کدام برای حجم بالای تماس مناسب‌تر است؟
خلاصه سریع این آموزش

اگر قرار است سامانه‌ای با صدها یا هزاران تماس هم‌زمان بسازید، پاسخ سؤال «FreeSWITCH بهتر است یا Asterisk؟» با یک عدد ثابت مشخص نمی‌شود. تعداد تماس هم‌زمان فقط یکی از…

۲۱ دقیقه مطالعه ۰ دیدگاه ۲۵ مهر ۱۴۰۵ آخرین به‌روزرسانی
اگر قرار است سامانه‌ای با صدها یا هزاران تماس هم‌زمان بسازید، پاسخ سؤال «FreeSWITCH بهتر است یا Asterisk؟» با یک عدد ثابت مشخص نمی‌شود. تعداد تماس هم‌زمان فقط یکی از متغیرهاست. Codec، Transcoding، ضبط مکالمه، Conference، WebRTC، TLS/SRTP، تعداد تماس جدید در ثانیه، Database، Logging و حتی اینکه RTP از خود سرور عبور کند یا مستقیماً بین دو Endpoint منتقل شود، می‌تواند نتیجه را کاملاً تغییر دهد.

برای مثال، یک سرور ممکن است هزاران تماس SIP را در حالتی که Media از PBX عبور نمی‌کند تحمل کند، اما همان سخت‌افزار با Transcoding، ضبط همه تماس‌ها یا WebRTC به ظرفیت بسیار پایین‌تری برسد. بنابراین مقایسه FreeSWITCH vs Asterisk باید بر اساس سناریوی واقعی انجام شود، نه اعداد قدیمی Benchmarkهای اینترنتی.

در این راهنما Asterisk و FreeSWITCH را از نظر Concurrency، Call Setup Rate، پردازش Media، WebRTC، اکوسیستم، High Availability و توسعه نرم‌افزاری مقایسه می‌کنیم و در پایان یک روش Benchmark عملی با SIPp ارائه می‌دهیم تا روی سخت‌افزار خودتان تصمیم بگیرید.

نسخه‌های مبنا در اکتبر ۲۰۲۶: آخرین نسخه پایدار LTS فعلی Asterisk برابر 22.11.0 است. آخرین Release رسمی FreeSWITCH نیز 1.11.3 است که شامل اصلاحات امنیتی و پایداری مهم می‌شود.

فهرست مطالب

پاسخ کوتاه: FreeSWITCH یا Asterisk؟

اگر هدف شما یک PBX سازمانی، تلفن اداری، SIP Trunk، Queue، IVR و اکوسیستم مدیریتی گسترده است، Asterisk معمولاً انتخاب ساده‌تر و شناخته‌شده‌تری است.

اگر پروژه شما Media-heavy است، WebRTC، Conference، Media Proxy، تعداد Session بالا یا Routing در مقیاس Carrier اهمیت زیادی دارد، FreeSWITCH ارزش بررسی جدی‌تری دارد.

اما این به معنی «FreeSWITCH همیشه سریع‌تر است» یا «Asterisk برای بار بالا مناسب نیست» نیست.

هر دو می‌توانند در معماری‌های پرترافیک استفاده شوند و نتیجه نهایی را طراحی سیستم تعیین می‌کند.

اول یک اشتباه رایج را کنار بگذاریم: تعداد تماس با تعداد Session یکسان نیست

در یک تماس ساده دوطرفه معمولاً حداقل دو Leg داریم:

A-Leg برای تماس‌گیرنده

B-Leg برای مقصد

بنابراین وقتی FreeSWITCH مثلاً درباره تعداد Session صحبت می‌کند، نباید آن را بدون بررسی مستقیم به تعداد تماس تبدیل کرد.

در یک Bridge معمولی:

1 Call ≈ 2 Call Legs

اما Conference، Recording، External Media و Applicationهای پیچیده می‌توانند ساختار متفاوتی داشته باشند.

چه چیزی واقعاً ظرفیت یک VoIP Server را تعیین می‌کند؟

مهم‌ترین متغیرها عبارت‌اند از:

🔹 تعداد تماس هم‌زمان

🔹 تعداد تماس جدید در ثانیه یا CPS

🔹 Codec مورد استفاده

🔹 وجود یا نبود Transcoding

🔹 عبور RTP از PBX یا Direct Media

🔹 Recording

🔹 Conference

🔹 TLS و SRTP

🔹 WebRTC و DTLS-SRTP

🔹 Dialplan Complexity

🔹 Database Query

🔹 CDR Logging

🔹 Storage IOPS

🔹 Network PPS و Bandwidth

Concurrent Calls با CPS فرق دارد

این دو معیار را با هم اشتباه نگیرید.

Concurrent Calls یعنی چند تماس در یک لحظه فعال هستند.

CPS یا Calls Per Second یعنی در هر ثانیه چند تماس جدید باید Setup شود.

ممکن است یک سامانه ۵۰۰۰ تماس طولانی داشته باشد ولی فقط ۱۰ تماس جدید در ثانیه دریافت کند.

سیستم دیگری ممکن است فقط ۵۰۰ تماس هم‌زمان داشته باشد اما ۲۰۰ تماس جدید در ثانیه ایجاد کند.

نوع فشار روی CPU و SIP Stack در این دو سناریو یکسان نیست.

FreeSWITCH برای Session Rate کنترل داخلی دارد

در FreeSWITCH تنظیماتی مثل:

max-sessions
sessions-per-second
min-idle-cpu
tipping-point

وجود دارد.

Defaultهای مستند فعلی Core عبارت‌اند از:

max-sessions = 1000
sessions-per-second = 30

اما این مقادیر Benchmark سخت‌افزار نیستند.

فقط سقف نرم‌افزاری پیش‌فرض‌اند.

افزایش:

max-sessions=10000

باعث نمی‌شود سرور شما واقعاً ده هزار Session را تحمل کند.

وضعیت لحظه‌ای FreeSWITCH را چطور ببینیم؟

داخل:

fs_cli

دستور:

status

اطلاعاتی مثل Session فعلی، Peak Session، Sessions Per Second و CPU Idle را نشان می‌دهد.

برای تعداد Channelها:

show channels count
show calls

Asterisk هم ظرفیت را باید با Benchmark واقعی سنجید

مستند رسمی Asterisk برای Performance Testing پیشنهاد می‌کند دو تست مستقل انجام دهید:

تست اول: Call Processing Rate

تست دوم: Maximum Concurrent Calls

در تست CPS تماس‌ها بسیار کوتاه نگه داشته می‌شوند تا فشار اصلی روی Setup و Tear-down تماس باشد.

در تست Concurrency، تماس‌ها طولانی نگه داشته می‌شوند تا تعداد تماس فعال افزایش پیدا کند.

Media Handling؛ مهم‌ترین بخش مقایسه

در بسیاری از پروژه‌ها، عامل اصلی محدودکننده نه SIP Signaling بلکه RTP Processing است.

اگر PBX مجبور باشد هر Packet صوتی را دریافت، Decode، Process و دوباره Encode کند، Load بسیار بیشتر می‌شود.

FreeSWITCH سه مدل Media اصلی دارد

FreeSWITCH به‌صورت صریح سه Media Mode مهم ارائه می‌کند.

حالت اول: Full Media

در حالت عادی، RTP هر دو Leg وارد FreeSWITCH می‌شود.

در این حالت FreeSWITCH می‌تواند:

🔹 Transcoding انجام دهد.

🔹 Recording انجام دهد.

🔹 DTMF تشخیص دهد.

🔹 Jitter Buffer اعمال کند.

🔹 Music on Hold تزریق کند.

این حالت بیشترین کنترل را دارد ولی بیشترین منابع را هم مصرف می‌کند.

حالت دوم: Proxy Media

در Proxy Media، RTP هنوز از FreeSWITCH عبور می‌کند اما Payload Decode نمی‌شود.

FreeSWITCH Packetها را Forward می‌کند.

proxy_media=true

Transcoding در این حالت ممکن نیست.

حالت سوم: Bypass Media

در Bypass Media، FreeSWITCH فقط Signaling را نگه می‌دارد و RTP مستقیماً بین Endpointها جابه‌جا می‌شود.

bypass_media=true

در این حالت Load Media روی FreeSWITCH به‌شدت کاهش پیدا می‌کند.

Asterisk هم Direct Media دارد

Asterisk نیز می‌تواند RTP را از خودش خارج کند.

در PJSIP:

direct_media=yes

می‌تواند باعث شود RTP مستقیماً بین Endpointها جریان پیدا کند.

در اصطلاح Bridge Architecture، این حالت Remote Native Bridge محسوب می‌شود.

مستند رسمی Asterisk نیز Direct Media را بهترین حالت Performance از نظر Media Path معرفی می‌کند، چون RTP دیگر وارد Asterisk نمی‌شود.

پس FreeSWITCH از نظر Media حتماً سریع‌تر نیست

نه.

اگر در FreeSWITCH Full Media داشته باشید و در Asterisk Direct Media، مقایسه CPU منصفانه نیست.

همین‌طور اگر FreeSWITCH Bypass Media داشته باشد ولی Asterisk مجبور به Recording یا Transcoding باشد، نتیجه به نفع FreeSWITCH خواهد بود.

Benchmark باید Media Path یکسان داشته باشد.

Transcoding؛ قاتل پنهان ظرفیت

یکی از مهم‌ترین عوامل کاهش ظرفیت، Transcoding است.

مثلاً Caller با:

Opus

تماس می‌گیرد ولی Carrier فقط:

PCMA / G.711 A-law

می‌پذیرد.

سرور باید Media را در لحظه Decode و Encode کند.

اگر ۱۰۰۰ تماس هم‌زمان Transcode شوند، CPU Load می‌تواند چندین برابر حالت Codec Pass-through باشد.

در تست Performance باید Codec Matrix داشته باشید

A-Leg B-Leg Transcoding
PCMA PCMA خیر
PCMU PCMU خیر
Opus Opus خیر
Opus PCMA بله
G.729 PCMA بله

Recording روی Capacity چه اثری دارد؟

Recording فقط CPU نیست.

سه منبع را هم‌زمان درگیر می‌کند:

🔹 CPU

🔹 RAM Buffer

🔹 Disk IOPS

اگر صدها تماس هم‌زمان روی Storage کند ضبط شوند، حتی وقتی CPU آزاد است ممکن است I/O Wait بالا برود.

بنابراین Benchmark بدون Recording نمی‌تواند ظرفیت یک Call Center Recording-heavy را پیش‌بینی کند.

Conference برای کدام سیستم بهتر است؟

Conference ماهیتاً با تماس دوطرفه ساده فرق دارد.

در Conference سرور باید چند Stream صوتی را Mix کند.

بنابراین Media نمی‌تواند مثل تماس ساده مستقیماً بین Endpointها عبور کند.

هر دو پروژه قابلیت Conference دارند.

FreeSWITCH از `mod_conference` و Asterisk از `ConfBridge` استفاده می‌کند.

برای پروژه‌ای که Conference بخش اصلی محصول است، Benchmark واقعی Conference بسیار مهم‌تر از نتیجه تماس Point-to-Point است.

FreeSWITCH در پروژه‌های Media-heavy چرا محبوب است؟

FreeSWITCH از ابتدا امکانات Media Processing گسترده‌ای در معماری خود دارد و کنترل صریحی روی:

🔹 Full Media

🔹 Proxy Media

🔹 Bypass Media

🔹 Codec Negotiation

🔹 Jitter Handling

🔹 WebRTC

🔹 Conference

در اختیار Administrator قرار می‌دهد.

به همین دلیل در پروژه‌های Media Server و Carrier-style زیاد دیده می‌شود.

اما انتخاب نهایی همچنان باید با Load Test انجام شود.

Asterisk در چه سناریوهایی برتری عملی دارد؟

Asterisk اکوسیستم PBX بسیار بزرگی دارد.

ابزارها و پروژه‌هایی مثل:

🔹 FreePBX

🔹 VitalPBX

🔹 Issabel

🔹 بسیاری از SBC/PBX Integrationها

بر پایه Asterisk یا سازگار با آن ساخته شده‌اند.

همچنین تعداد زیادی SIP Provider، Integrator و VoIP Engineer تجربه مستقیم با Asterisk دارند.

برای یک شرکت، هزینه نگهداری و نیروی انسانی گاهی از اختلاف Benchmark مهم‌تر است.

اکوسیستم توسعه نرم‌افزاری Asterisk

Asterisk رابط:

ARI

دارد.

ARI از REST، WebSocket و Stasis برای ساخت Applicationهای ارتباطی استفاده می‌کند.

برای مثال می‌توان:

🔹 تماس را Answer کرد.

🔹 Channel ساخت.

🔹 Bridge ایجاد کرد.

🔹 Recording کنترل کرد.

🔹 Voicebot ساخت.

Asterisk 22 در API هم تغییرهای مهمی داشته است

شاخه‌های جدید Asterisk قابلیت‌هایی مثل REST روی WebSocket و Outbound WebSocket برای ARI را توسعه داده‌اند.

این موضوع برای Applicationهایی که Load Balancing و اتصال دائمی به Call-Control Backend نیاز دارند مهم است.

FreeSWITCH برای Integration چه دارد؟

در FreeSWITCH رابط اصلی توسعه خارجی:

Event Socket Library یا ESL

است.

Application خارجی می‌تواند به Event Socket متصل شود و:

🔹 Event دریافت کند.

🔹 تماس Originated کند.

🔹 Channel را کنترل کند.

🔹 Dialplan Command اجرا کند.

این مدل در پروژه‌های Call Control با حجم بالا بسیار رایج است.

WebRTC؛ کدام بهتر است؟

هر دو سیستم WebRTC را پشتیبانی می‌کنند.

Asterisk

Asterisk با PJSIP می‌تواند WebRTC Client را از طریق:

🔹 HTTPS/TLS

🔹 SIP over WebSocket

🔹 WSS

🔹 ICE

🔹 DTLS-SRTP

پشتیبانی کند.

FreeSWITCH

FreeSWITCH دو مسیر اصلی دارد.

SIP over WSS از طریق Sofia

و:

Verto

که یک Protocol مبتنی بر JSON-RPC روی WebSocket برای WebRTC است.

Verto چه مزیتی دارد؟

Client Browser لازم نیست SIP Stack کامل داشته باشد.

Verto Signaling ساده‌تری برای Applicationهای WebRTC ایجاد می‌کند.

Media همچنان از:

🔹 ICE

🔹 DTLS-SRTP

🔹 SRTP

استفاده می‌کند.

اگر Browser Client استاندارد SIP داریم چه؟

FreeSWITCH از SIP over WSS نیز پشتیبانی می‌کند.

در نتیجه Clientهایی مثل SIP.js یا JsSIP می‌توانند بدون Verto به Sofia Profile متصل شوند.

Asterisk نیز همین مدل SIP-over-WSS را با PJSIP ارائه می‌کند.

برای WebRTC Benchmark چه چیزی را اندازه بگیریم؟

فقط تماس موفق کافی نیست.

این موارد را ثبت کنید:

🔹 زمان ICE Connection

🔹 زمان DTLS Handshake

🔹 CPU مصرفی Opus

🔹 Packet Loss

🔹 Jitter

🔹 Round Trip Time

🔹 TURN Relay Percentage

🔹 تعداد WSS Connection

High Availability؛ کدام بهتر است؟

در این بخش هم نباید انتظار یک دکمه جادویی داشت.

نه Asterisk و نه FreeSWITCH به‌تنهایی یک Cluster توزیع‌شده کامل Carrier-grade نمی‌سازند.

HA معمولاً شامل چند لایه است:

🔹 SIP Proxy یا Load Balancer

🔹 چند Media/PBX Node

🔹 Health Check

🔹 Database خارجی یا Replication

🔹 Shared Configuration

🔹 Failover Route

معماری رایج برای ترافیک بالا

یکی از معماری‌های رایج:

Kamailio / OpenSIPS → چند Asterisk یا FreeSWITCH Node

است.

SIP Proxy Registration و Routing را در Edge مدیریت می‌کند و Callها بین Media Nodeها توزیع می‌شوند.

چرا SIP Proxy را جدا کنیم؟

اگر PBX هم‌زمان مسئول:

🔹 Registration

🔹 Load Balancing

🔹 Routing

🔹 Media

🔹 Recording

باشد، Scale کردن دشوارتر می‌شود.

در معماری بزرگ بهتر است Signaling Edge و Media/Application Layer از هم جدا شوند.

FreeSWITCH ابزار Session Recovery دارد

FreeSWITCH فرمان‌هایی مثل:

fsctl recover

و:

sofia profile internal recover

دارد.

همچنین برخی Limit Stateها می‌توانند با Backendهای خارجی مثل Redis یا Database مدیریت شوند.

اما وجود Session Recovery را نباید با Active-Active Cluster کامل و بدون قطع تماس یکی دانست.

Active Call Failover سخت‌ترین بخش HA است

اگر یک Node وسط تماس خاموش شود، Signaling Session، RTP State، Codec State، Recording و Application State همه روی همان Node بوده‌اند.

انتقال بدون وقفه تماس فعال به Node دیگر بسیار سخت‌تر از Route کردن تماس جدید است.

برای بسیاری از طراحی‌ها هدف HA واقعی این است:

تماس‌های جدید سریعاً روی Node سالم Route شوند.

نه اینکه الزاماً همه تماس‌های فعال بدون هیچ وقفه‌ای مهاجرت کنند.

کدام برای Carrier Routing مناسب‌تر است؟

اگر بخش اصلی کار شما فقط SIP Routing با حجم بسیار بالا است، هیچ‌کدام شاید بهترین Edge Router نباشند.

برای این لایه پروژه‌هایی مثل:

🔹 Kamailio

🔹 OpenSIPS

معمولاً مناسب‌ترند.

Asterisk یا FreeSWITCH را پشت آن‌ها برای:

🔹 Media

🔹 IVR

🔹 Conference

🔹 Recording

🔹 Application Logic

قرار دهید.

Benchmarkهای قدیمی اینترنتی را مستقیم استفاده نکنید

در مستندات قدیمی FreeSWITCH تست‌هایی با صدها تماس هم‌زمان و ده‌ها CPS روی سخت‌افزارهای بسیار قدیمی وجود دارد.

این تست‌ها برای درک روش Benchmark مفیدند اما برای خرید Server در سال ۲۰۲۶ معیار ظرفیت نیستند.

CPU Architecture، Kernel، NIC، Codec، FreeSWITCH Version و SIP Profileها کاملاً تغییر کرده‌اند.

همین موضوع درباره Benchmarkهای قدیمی Asterisk هم صادق است

مستند Performance رسمی Asterisk مثال‌هایی از SIPp دارد، اما هدف اصلی آن آموزش روش تست است، نه ارائه عدد Capacity برای سخت‌افزار امروزی.

از Command Pattern استفاده کنید، نه از عدد نهایی قدیمی.

روش درست Benchmark در سال ۲۰۲۶

Benchmark باید روی همان Environment Production انجام شود.

یعنی:

🔹 همان VPS یا CPU Family

🔹 همان Kernel

🔹 همان نسخه Asterisk/FreeSWITCH

🔹 همان Codec

🔹 همان TLS/SRTP

🔹 همان Recording Policy

🔹 همان Database

🔹 همان Dialplan

مرحله ۱: Baseline بدون Media Processing

ابتدا ساده‌ترین حالت را تست کنید:

PCMA → PCMA

بدون Recording

بدون Transcoding

بدون Conference

بدون TLS

این عدد Baseline سیستم است.

مرحله ۲: Call Setup Rate را تست کنید

با SIPp می‌توانید Call Rate را مرحله‌ای افزایش دهید.

ساختار نمونه مشابه روش رسمی Asterisk:

sipp 192.0.2.20 \
-sn uac \
-s 1000 \
-d 100 \
-r 10 \
-l 500

IP نمونه است.

`-r` نرخ Call Setup را تعیین می‌کند.

آن را مرحله‌ای افزایش دهید.

یک‌باره از 10 CPS به 500 CPS نروید

بهتر است Step Test داشته باشید.

مثلاً:

10 CPS
25 CPS
50 CPS
100 CPS
150 CPS
200 CPS

در هر مرحله چند دقیقه سیستم را پایدار نگه دارید.

مرحله ۳: Maximum Concurrent Call را تست کنید

Duration تماس را افزایش دهید.

مثلاً:

sipp 192.0.2.20 \
-sn uac \
-s 1000 \
-d 120000 \
-r 10 \
-l 1000

تماس‌ها به‌تدریج جمع می‌شوند تا Limit مشخص‌شده برسند.

مرحله ۴: CPU را اندازه بگیرید

mpstat -P ALL 1

اگر یک Core به 100 درصد برسد ولی بقیه آزاد باشند، Average CPU به‌تنهایی می‌تواند شما را گمراه کند.

Load Average کافی نیست

به این موارد هم نگاه کنید:

vmstat 1
iostat -xz 1
pidstat -p ALL 1

در VPS مقدار Steal Time را بررسی کنید

روی سرور مجازی CPU ممکن است توسط Host بین VMها به اشتراک گذاشته شود.

در:

vmstat
mpstat

مقدار Steal بالا یعنی Hypervisor CPU را در اختیار VMهای دیگر قرار داده است.

برای VoIP پرترافیک، رفتار پایدار CPU مهم‌تر از Burst Benchmark کوتاه است.

مرحله ۵: Network را اندازه بگیرید

RTP تعداد بسیار زیادی Packet کوچک تولید می‌کند.

بنابراین فقط Mbps مهم نیست.

Network PPS یا Packets Per Second نیز اهمیت دارد.

برای بررسی Interface:

sar -n DEV 1

پهنای باند G.711 را تقریبی حساب کنیم

خود Payload یک تماس G.711 حدود 64kbps است، اما با RTP/UDP/IP و Packetization مصرف واقعی بیشتر می‌شود.

برای Capacity Planning عدد Raw Codec را به‌تنهایی استفاده نکنید.

همچنین رفت و برگشت و دو Leg را در نظر بگیرید.

مرحله ۶: Transcoding Test

بعد همان تست را با:

Opus → PCMA

تکرار کنید.

اختلاف CPU را ثبت کنید.

این عدد برای پروژه WebRTC بسیار مهم است.

مرحله ۷: Recording Test

همه تماس‌ها را Record کنید.

CPU و به‌خصوص:

%util
await
iowait

Disk را بررسی کنید.

مرحله ۸: TLS و SRTP را فعال کنید

Benchmark دیگری با:

🔹 SIP TLS

🔹 SRTP

اجرا کنید.

Encryption هزینه CPU دارد و در CPS بالا TLS Handshake هم اهمیت پیدا می‌کند.

مرحله ۹: WebRTC Test

اگر Production شما Browser-based است، تست SIP UDP هیچ نتیجه قابل اعتمادی برای ظرفیت نهایی WebRTC نمی‌دهد.

باید:

🔹 WSS

🔹 ICE

🔹 DTLS-SRTP

🔹 Opus

نیز داخل Benchmark باشند.

مرحله ۱۰: Dialplan واقعی را وارد کنید

در پایان Load Test را با همان Business Logic اجرا کنید.

مثلاً:

🔹 Database Lookup

🔹 API Call

🔹 Least Cost Routing

🔹 Queue

🔹 CDR

فعال باشد.

چه معیارهایی را در گزارش Benchmark بنویسیم؟

معیار چرا مهم است؟
Concurrent Calls ظرفیت تماس هم‌زمان
CPS توان Setup تماس
CPU per Core شناسایی Bottleneck تک‌هسته‌ای
RAM رشد حافظه با Session
Call Setup Delay تجربه کاربر
SIP Error Rate 503/408/5xx در بار بالا
Packet Loss کیفیت Media
Jitter کیفیت صوت
Disk IOPS Recording و CDR
Network PPS ظرفیت RTP
p95 Setup Time تأخیر بدترین بخش عمده تماس‌ها
Recovery after Load پایداری سیستم بعد از Peak

Average کافی نیست؛ p95 و p99 را ثبت کنید

ممکن است Average Setup Time فقط 120ms باشد اما در Peak برخی تماس‌ها 4 ثانیه منتظر بمانند.

برای Production حداقل:

🔹 Average

🔹 p95

🔹 p99

را ثبت کنید.

Stress Test را با Capacity Test اشتباه نگیرید

در Stress Test هدف پیدا کردن نقطه شکست است.

در Capacity Test هدف پیدا کردن Load امن Production است.

اگر سیستم در ۳۰۰۰ تماس سقوط می‌کند، ظرفیت Production نباید ۲۹۰۰ تماس تعریف شود.

Headroom لازم دارید.

چقدر Headroom نگه داریم؟

یک درصد ثابت برای همه پروژه‌ها وجود ندارد.

اما در سیستم Real-Time معمولاً طراحی روی 100 درصد Benchmark منطقی نیست.

باید فضای کافی برای:

🔹 Traffic Burst

🔹 GC یا Background Task

🔹 Backup

🔹 Log Rotation

🔹 Provider Retry

وجود داشته باشد.

یک Benchmark منصفانه FreeSWITCH vs Asterisk

برای مقایسه واقعی دو VM کاملاً مشابه بسازید.

🔹 CPU یکسان

🔹 RAM یکسان

🔹 NIC یکسان

🔹 OS یکسان تا حد ممکن

🔹 Codec یکسان

🔹 Media Path یکسان

🔹 Recording Policy یکسان

🔹 Logging Level یکسان

سپس همان SIPp Scenario را روی هر دو اجرا کنید.

سه Profile جدا تست کنید

Profile A: Signaling Heavy

تماس کوتاه، CPS بالا، بدون Media Processing.

Profile B: Media Heavy

تماس طولانی، RTP داخل Server، بدون Transcoding.

Profile C: Processing Heavy

Transcoding + Recording + TLS/SRTP.

ممکن است Winner هر سه Profile یکسان نباشد.

جدول تصمیم‌گیری FreeSWITCH vs Asterisk

سناریو انتخاب اولیه پیشنهادی دلیل
PBX سازمانی کلاسیک Asterisk اکوسیستم و GUIهای گسترده
FreePBX/VitalPBX Asterisk موتور اصلی همین اکوسیستم
Media Server پرترافیک FreeSWITCH را جدی تست کنید کنترل گسترده Media Mode
Conference-heavy Benchmark FreeSWITCH ضروری mod_conference و Media Architecture
WebRTC گسترده هر دو؛ FreeSWITCH مزیت Verto دارد WSS + Verto در کنار SIP
Call Control با API هر دو ARI در Asterisk، ESL در FreeSWITCH
Carrier SIP Routing Kamailio/OpenSIPS + Media Node تفکیک Signaling و Media
Hosted PBX هر دو پنل و معماری بالادستی تعیین‌کننده است
Voice AI هر دو External Media/API Architecture مهم‌تر است

در پروژه پرترافیک یک Node غول‌پیکر بهتر است یا چند Node؟

معمولاً چند Node کوچک‌تر و قابل جایگزینی معماری سالم‌تری ایجاد می‌کنند.

به‌جای:

یک PBX با ۱۰ هزار تماس

ممکن است طراحی:

چهار Node با ۲۵۰۰ تماس

Failover و Maintenance ساده‌تری ایجاد کند.

اما Load Balancing، Registration State و Routing باید برای Multi-Node طراحی شود.

Scale Up و Scale Out را از هم جدا کنید

Scale Up: CPU و RAM همان Server را افزایش دهید.

Scale Out: Nodeهای بیشتری اضافه کنید.

برای VoIP بسیار پرترافیک، Scale Out معمولاً سقف معماری بالاتری دارد.

چه زمانی از Asterisk به FreeSWITCH مهاجرت نکنیم؟

فقط به خاطر اینکه در یک انجمن نوشته شده FreeSWITCH تماس بیشتری تحمل می‌کند مهاجرت نکنید.

اگر سیستم شما:

🔹 پایدار است.

🔹 CPU Headroom دارد.

🔹 تیم Asterisk را خوب می‌شناسد.

🔹 اکوسیستم FreePBX/VitalPBX استفاده می‌شود.

مهاجرت ممکن است هزینه بیشتری از سود Performance داشته باشد.

چه زمانی FreeSWITCH را جدی‌تر بررسی کنیم؟

اگر پروژه جدید است و نیاز دارید:

🔹 Media Processing سنگین

🔹 WebRTC در مقیاس بالا

🔹 Conference گسترده

🔹 کنترل دقیق RTP Path

🔹 Event Socket Application

داشته باشید، FreeSWITCH گزینه خوبی برای Proof of Concept است.

چه زمانی Asterisk 22 انتخاب مناسبی است؟

اگر نیاز اصلی:

🔹 PBX سازمانی

🔹 SIP Trunk

🔹 Queue

🔹 IVR

🔹 Dialplan

🔹 ARI Application

است و تیم شما تجربه Asterisk دارد، Asterisk 22.11 LTS همچنان انتخاب کاملاً جدی و مدرنی است.

چک‌لیست نهایی انتخاب

مرحله ۱: Peak Concurrent Call را مشخص کنید.

مرحله ۲: Peak CPS را مشخص کنید.

مرحله ۳: Codec Matrix را مشخص کنید.

مرحله ۴: درصد تماس‌های Transcoding را مشخص کنید.

مرحله ۵: Recording Percentage را مشخص کنید.

مرحله ۶: WebRTC Percentage را مشخص کنید.

مرحله ۷: Conference Load را مشخص کنید.

مرحله ۸: HA Requirement را مشخص کنید.

مرحله ۹: دو Prototype یکسان بسازید.

مرحله ۱۰: SIPp Benchmark را اجرا کنید.

مرحله ۱۱: p95/p99، CPU، I/O و SIP Error را ثبت کنید.

مرحله ۱۲: با Headroom واقعی Production تصمیم بگیرید.

پرسش‌های رایج

FreeSWITCH سریع‌تر است یا Asterisk؟

بدون تعریف سناریو نمی‌توان پاسخ دقیقی داد. Codec، Transcoding، Media Path، Recording، Conference، TLS و CPS می‌توانند نتیجه را تغییر دهند. مقایسه معتبر باید روی سخت‌افزار و Call Profile یکسان انجام شود.

برای تعداد تماس هم‌زمان بالا FreeSWITCH بهتر است؟

FreeSWITCH معماری Media انعطاف‌پذیری دارد و در پروژه‌های پرترافیک زیاد استفاده می‌شود، اما ظرفیت واقعی باید با Benchmark سنجیده شود. Asterisk نیز با Native و Direct Media می‌تواند بار Media را به‌شدت کاهش دهد.

FreeSWITCH چند تماس هم‌زمان پشتیبانی می‌کند؟

عدد ثابتی وجود ندارد. `max-sessions` فقط سقف Configuration است و ظرفیت واقعی به CPU، Codec، Media Mode، Recording، Network و Dialplan بستگی دارد.

آیا max-sessions=10000 یعنی FreeSWITCH ده هزار تماس می‌گیرد؟

خیر. این فقط Limit نرم‌افزاری است. باید با Load Test ثابت شود سخت‌افزار و Configuration توان آن تعداد Session را دارند.

Asterisk 22 برای بار زیاد مناسب است؟

بله. Asterisk 22 شاخه LTS فعلی است و Native/Direct Media، PJSIP و ابزارهای مدرن Call Control دارد. ظرفیت نهایی به معماری و نوع Workload وابسته است.

برای WebRTC کدام بهتر است؟

هر دو WebRTC دارند. Asterisk از PJSIP روی WebSocket/WSS استفاده می‌کند. FreeSWITCH علاوه بر SIP-over-WSS، Verto را نیز برای Signaling مبتنی بر JSON-RPC ارائه می‌دهد.

برای High Availability کدام بهتر است؟

HA واقعی بیشتر به Architecture بستگی دارد تا فقط موتور PBX. معمولاً SIP Proxy مثل Kamailio/OpenSIPS، چند Media Node، Health Check و State Management در کنار Asterisk یا FreeSWITCH استفاده می‌شوند.

برای Carrier Routing از FreeSWITCH استفاده کنیم یا Asterisk؟

برای Routing خالص با CPS بسیار بالا معمولاً SIP Proxyهایی مثل Kamailio و OpenSIPS مناسب‌ترند و FreeSWITCH/Asterisk پشت آن‌ها برای Media و Application Logic استفاده می‌شوند.

بهترین ابزار Benchmark VoIP چیست؟

SIPp یکی از ابزارهای استاندارد و پرکاربرد برای تولید SIP Call Load است. بهتر است CPS، Concurrent Call، CPU، Memory، Network، SIP Error Rate و Call Setup Delay هم‌زمان اندازه‌گیری شوند.

برای Voice AI کدام بهتر است؟

هر دو قابل استفاده‌اند. Asterisk ARI و Media WebSocket دارد و FreeSWITCH ESL و Media Integrationهای مختلف ارائه می‌دهد. معماری AI Backend و Media Transport معمولاً مهم‌تر از نام PBX است.

جمع‌بندی

در مقایسه FreeSWITCH و Asterisk برای سامانه تماس پرترافیک، هیچ Winner مطلقی وجود ندارد.

FreeSWITCH کنترل صریح Full Media، Proxy Media و Bypass Media دارد و برای Media Processing، Conference و WebRTC گزینه بسیار قدرتمندی است.

Asterisk نیز با Direct Media می‌تواند RTP را کاملاً از PBX خارج کند و در نسخه 22 LTS یک پلتفرم مدرن با PJSIP، ARI، WebRTC و اکوسیستم مدیریتی بسیار گسترده ارائه می‌دهد.

تفاوت اصلی زمانی مشخص می‌شود که Workload واقعی وارد شود. یک تماس PCMA بدون Recording با یک تماس WebRTC Opus که به G.711 Transcode و هم‌زمان Record می‌شود از نظر مصرف منابع اصلاً قابل مقایسه نیست.

اگر پروژه شما واقعاً پرترافیک است، تصمیم معماری را با اعداد اینترنتی نگیرید. دو Node یکسان بسازید، SIPp اجرا کنید و CPS، Concurrent Call، p95 Setup Time، CPU per Core، I/O، Packet Loss و Error Rate را اندازه بگیرید.

در مقیاس Carrier نیز معمولاً بهتر است Signaling Edge را با Kamailio یا OpenSIPS از Media/Application Node جدا کنید و چند Asterisk یا FreeSWITCH Node داشته باشید.

در نهایت بهترین انتخاب آن سیستمی نیست که در یک Benchmark آزمایشگاهی عدد بزرگ‌تری نشان داده؛ بهترین انتخاب سیستمی است که روی Workload واقعی شما، با Headroom کافی، Failover قابل پیش‌بینی و تیم عملیاتی مناسب کار کند.

منابع و مستندات
نسخه‌های روز، Media Handling، WebRTC، Benchmark، Session Limit و APIهای دو پروژه با مستندات رسمی Asterisk و FreeSWITCH تا ۱۷ اکتبر ۲۰۲۶ بررسی شده‌اند.
Asterisk LTS
مرجع نسخه پایدار فعلی Asterisk 22.11.0 و شاخه‌های پشتیبانی‌شده پروژه
FreeSWITCH Release
مرجع FreeSWITCH 1.11.3 به‌عنوان آخرین Release رسمی و اصلاحات امنیتی و پایداری این نسخه
FreeSWITCH Media
مرجع Full Media، Proxy Media، Bypass Media، Codec Negotiation و تأثیر Media Path روی پردازش تماس
FreeSWITCH Capacity Control
مرجع max-sessions، sessions-per-second، min-idle-cpu و tipping-point؛ این مقادیر Limit هستند و به‌تنهایی Benchmark ظرفیت محسوب نمی‌شوند
Asterisk Media
مرجع Native Bridge و Remote Direct Media؛ در Direct Media، RTP از Asterisk خارج می‌شود و بیشترین صرفه‌جویی Media Processing را ایجاد می‌کند
Benchmark
مرجع روش SIPp برای تفکیک Call Processing Rate از Maximum Concurrent Calls و پایش CPU هنگام افزایش Load
Asterisk WebRTC
مرجع PJSIP WebSocket Transport، HTTPS/TLS و تنظیم Endpointهای WebRTC در Asterisk
FreeSWITCH WebRTC
مرجع SIP over WSS و ارتباط Browser Clientهایی مانند SIP.js و JsSIP با FreeSWITCH
Verto WebRTC
مرجع Verto JSON-RPC، WebSocket، ICE، DTLS-SRTP و Media Engine اختصاصی WebRTC در FreeSWITCH
Asterisk API
مرجع REST، WebSocket و Stasis برای ساخت Call-Control Application روی Asterisk
پیشنهاد ایرانیکاسرور برای Benchmark سامانه VoIP پرترافیک

قبل از خرید سرور بزرگ، ظرفیت واقعی Asterisk و FreeSWITCH را روی Workload خودتان اندازه بگیرید

برای سامانه پرترافیک، تعداد vCPU به‌تنهایی معیار خوبی نیست. پایداری CPU، Network PPS، Storage IOPS و امکان افزایش منابع مهم‌اند؛ مخصوصاً اگر تماس‌ها Recording، Transcoding یا WebRTC داشته باشند.

می‌توانید روی سرور مجازی ایرانیکاسرور یک محیط آزمایشی مستقل بسازید و Asterisk و FreeSWITCH را با منابع یکسان اجرا کنید. سپس با SIPp همان Call Profile واقعی را روی هر دو تست کنید و قبل از انتقال Trunk اصلی، سقف امن CPS و تماس هم‌زمان را مشخص کنید.

مشاوره انتخاب زیرساخت Asterisk و FreeSWITCH: 021-91302467

اشتراک‌گذاری مقاله
گفت‌وگو درباره آموزش

دیدگاه‌ها (۰)

هنوز دیدگاهی ثبت نشده است.

دیدگاه یا سؤال خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *