برای مثال، یک سرور ممکن است هزاران تماس 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 قابل پیشبینی و تیم عملیاتی مناسب کار کند.
قبل از خرید سرور بزرگ، ظرفیت واقعی Asterisk و FreeSWITCH را روی Workload خودتان اندازه بگیرید
برای سامانه پرترافیک، تعداد vCPU بهتنهایی معیار خوبی نیست. پایداری CPU، Network PPS، Storage IOPS و امکان افزایش منابع مهماند؛ مخصوصاً اگر تماسها Recording، Transcoding یا WebRTC داشته باشند.
میتوانید روی سرور مجازی ایرانیکاسرور یک محیط آزمایشی مستقل بسازید و Asterisk و FreeSWITCH را با منابع یکسان اجرا کنید. سپس با SIPp همان Call Profile واقعی را روی هر دو تست کنید و قبل از انتقال Trunk اصلی، سقف امن CPS و تماس همزمان را مشخص کنید.
مشاوره انتخاب زیرساخت Asterisk و FreeSWITCH: 021-91302467






دیدگاهها (۰)