Skip to content
Dialer & Setup

ViciDial Capacity and Concurrency Planning: How Many SIP Lines Does Your Campaign Need?

Under-provisioned SIP capacity causes campaigns to stall. Over-provisioned capacity on per-minute billing wastes money. On flat-rate billing, over-provisioning is free — but you still need accurate numbers to configure Asterisk correctly and avoid hitting account-level concurrent session ceilings. This guide gives you the math.

The Concurrency Stack: Three Limits That All Must Clear

Concurrent call capacity in a ViciDial deployment is bounded by three independent limits. Your effective capacity is the minimum of all three:

  1. Asterisk channel capacity — hardware CPU/RAM limit on calls the Asterisk process can handle simultaneously
  2. SIP trunk concurrent session limit — the carrier's account-level ceiling on simultaneous calls
  3. ViciDial's channel count setting — the software limit you set in ViciDial Admin

A common mistake is provisioning a high-capacity SIP trunk and forgetting to raise ViciDial's internal channel count setting — campaigns silently cap out at the ViciDial default.


Step 1: Calculate Required Concurrent Sessions

The formula:

`` Concurrent sessions = Active agents × Dial ratio + Ringing buffer ``

Walk through an example:

  • 80 agents logged in and ready
  • Predictive dial ratio: 2.5 (each agent has 2.5 calls dialing simultaneously)
  • Calls in ringing state before answer: average 12 seconds; at 2.5x with 80 agents, you have 200 simultaneous ringing calls
  • Ringing buffer: add 15% for calls that ring longer than average

Result: 80 × 2.5 = 200 concurrent sessions + 30 buffer = 230 concurrent sessions at peak.

Round up to the nearest 25 for account provisioning. For this example: 250 concurrent sessions.


Step 2: Set ViciDial's Concurrent Call Count

In Admin → System Settings (global) or at the campaign level via Campaign Detail → Max Calls:

  • Max Vicidial Trunks: The global ceiling on simultaneous ViciDial-originated calls. Set this to match or slightly exceed your calculated peak.
  • Max Calls per Campaign: Per-campaign limit. Useful when running multiple campaigns and you want to reserve capacity for higher-priority campaigns.

If you are running a single large campaign, set both values to your calculated peak. If you run multiple campaigns sharing the same Asterisk server, the per-campaign limits should sum to no more than the global Max Vicidial Trunks.


Step 3: Size the Asterisk Host

ViciDial runs Asterisk on the same server as the ViciDial application in standard deployments, or on dedicated Asterisk media servers for large floors. CPU is the binding constraint for voice calls — not RAM or network bandwidth.

Reference sizing (G.711, no transcoding, no conferencing):

Concurrent callsRecommended CPURAM
Up to 504-core modern x868 GB
50–1508-core16 GB
150–30016-core32 GB
300–50032-core or dual-socket64 GB

These numbers assume:

  • G.711 codec (ulaw/alaw) — no transcoding overhead
  • ViciDial + Asterisk on the same host
  • No call recording (recording multiplies I/O load — see the ViciDial recording setup post)

Transcoding (e.g., G.711 to OPUS or G.729) increases per-call CPU cost by 3–5x. Use G.711 throughout your deployment unless there is a specific reason to transcode.


Step 4: Network Bandwidth Planning

A G.711 call uses approximately 87 kbps of bidirectional UDP traffic (64 kbps audio + 23 kbps RTP/UDP/IP headers). For 250 concurrent calls:

`` 250 × 87 kbps × 2 (bidirectional) = 43.5 Mbps ``

A 100 Mbps dedicated uplink is adequate for 250 concurrent G.711 calls. A 1 Gbps uplink handles up to 2,000 concurrent calls with headroom for burst.

More important than raw bandwidth is latency. SIP trunks perform best with sub-50ms round-trip latency to the carrier's SIP proxy. UnlimCall's network has regional points of presence that minimize latency for calls originating from major data center locations. Check your server's round-trip latency to the assigned SIP host with a basic ICMP ping before deploying.


Step 5: SIP Trunk Concurrent Session Provisioning

With UnlimCall, concurrent session capacity is tied to your seat count. Each provisioned seat supports the concurrent session load appropriate for a predictive dialing workload — you are not buying per-channel increments separately.

If you are migrating from a traditional per-minute carrier where you explicitly purchased a channel bundle (e.g., 200 channels at $X/month), the flat-rate model replaces the channel bundle with a seat count. The math changes: instead of paying per channel, you pay per agent seat at $99/seat/month for US/CA routes. See flat-rate economics for outbound floors for the cost comparison.


Step 6: Monitoring and Alerting on Concurrency

Once deployed, watch for capacity ceiling events:

  • Asterisk full log: Errors containing maximum number of channels or no available trunk indicate you have hit a ceiling.
  • ViciDial real-time: Campaign calls dropping to 0 while agents are waiting, without a list exhaustion event, suggests a capacity cap.
  • Carrier-side: SIP 503 Service Unavailable responses indicate the carrier's concurrent session ceiling has been reached.

Set up a Nagios/Zabbix check on active Asterisk channels against your provisioned ceiling. Alert at 85% to give time to react before the ceiling causes dropped dials.

For ongoing capacity planning as you scale from 50 to 500 agents, the outbound cost model from 10 to 500 seats gives the full economic model alongside technical capacity.


Takeaways

  • Effective concurrency is the minimum of Asterisk capacity, SIP trunk limit, and ViciDial's channel setting — all three must be set consistently.
  • Formula: active agents × dial ratio + 15% ringing buffer = required concurrent sessions.
  • G.711 (no transcoding) is the correct codec choice for maximizing concurrent call density per CPU core.
  • On flat-rate SIP, concurrent session capacity scales with seat count — no separate channel bundle purchase.
  • Alert at 85% of your concurrent session ceiling, not 100%.

Model Your Seat Count at Scale

UnlimCall's pricing is seat-based, not channel-based. See the per-seat numbers for your target markets at unlimcall.com/pricing/, and review network coverage for the 33 live countries.