İçeriğe geç
FreeSWITCH

FreeSWITCH; 2006’da Anthony Minessale tarafından başlatılan, modüler / multi-threaded mimari ile yazılmış açık-kaynak yumuşak switch (softswitch) ve ses uygulama platformudur. Asterisk’in modüler olmayan dialplan-driven yapısının aksine, FreeSWITCH olay tabanlı çalışır ve çekirdek + modül yaklaşımıyla istenen özellikler kütüphane gibi yüklenir.

FreeSWITCH’in güçlü olduğu alanlar: yüksek konkürans (10K+ eşzamanlı çağrı tek node’da), media-heavy işlemler (transcoding, conferencing, IVR’da TTS/ASR), WebRTC (mod_verto + native SIP-WSS) ve carrier-grade routing (Kamailio + FreeSWITCH klasik telekom mimarisi). Saf PBX iş yükü için Asterisk olgunluk + ekosistem avantajı sürdürür.

Mono’nun yaklaşımı

FreeSWITCH’i Mono ekibi özellikle kurumsal contact-center, WebRTC tabanlı iş uygulamaları ve carrier-grade ses projelerinde kullanır. Standart kurulum kararlarımız:

  • Versiyon: FreeSWITCH 1.10.x stable; deneysel sürümler kullanılmaz.
  • Modül seçimi: mod_pjsip (sip stack), mod_conference, mod_verto/mod_av (WebRTC + video), mod_event_socket (ESL).
  • Dialplan: XML + mod_lua karışık; karmaşık iş kurallarında ESL ile Python uygulama.
  • Storage: Recording → S3 uyumlu (Garage); CDR → MariaDB/PostgreSQL.
  • HA: Aktif-pasif (Pacemaker + DRBD) veya Kamailio + dispatcher ile aktif-aktif.
  • Security: TLS + SRTP zorunlu; SBC önünde (Kamailio + iptables).
  • Observability: OpenSIPs/Kamailio metric’leri Prometheus, FreeSWITCH log → Loki, çağrı kalitesi (MOS) ölçümleri.

Tipik mimari (carrier-grade)

  1. SIP Trunk → Edge SBC (Kamailio) → routing/policy → FreeSWITCH cluster.
  2. FreeSWITCH instance’lar arasında mod_event_socket ile state replication (gerekli ise).
  3. Recording (mod_record_session) → local SSD → S3 archive.
  4. CDR/CDR-CSV/mod_cdr_pg_csv → PostgreSQL → BI dashboard.
  5. WebRTC client → HAProxy WebSocket sticky → FreeSWITCH WSS → conference room.

Yaygın sorunlar ve çözümler

  • Yüksek CPU transcoding’de: Codec uyumsuzluğu (Opus ↔ G.729). Mümkün olduğunca uçtan uca aynı codec; transcoding’i yatay ölçeklendir.
  • Yetersiz file descriptor: ulimit -n 1048576; sysctl fs.file-max.
  • WebRTC ICE başarısızlık: STUN/TURN konfigürasyonu; firewall UDP port aralığı; symmetric NAT’ta TURN zorunlu.
  • Conference audio bozulması: Codec ayarı (conference-rate); jitter buffer; düşük QoS network’te 8000Hz’e düş.
  • ESL bağlantı kopması: Auth token rotation; retry with backoff; long-running connection’da heartbeat.

İlgili hizmetlerimiz

Sıkça sorulan sorular

FreeSWITCH mi Asterisk mı?
Asterisk dialplan-driven, ekosistem zengin (FreePBX), klasik PBX işleri için hızlı kurulur. FreeSWITCH modüler/threaded mimari + daha yüksek konkürans + WebRTC/conferencing için optimize. Mono önerisi: PBX + IVR Asterisk; media gateway, conference bridge, contact-center backbone FreeSWITCH.
Hangi dilde uygulama yazılır?
XML dialplan (deklaratif, hızlı), mod_lua (script-friendly), mod_v8 / mod_javascript (Node-benzeri), ESL (Event Socket Library) ile dış uygulama (Python/Go/Node). Olay-odaklı uygulamalar için ESL pattern’i çok güçlü.
Conference / WebRTC nasıl çalışır?
FreeSWITCH mod_conference + mod_verto (kendi WebRTC sinyali) veya SIP-WSS native. Sticky load-balancer (HAProxy WebSocket affinity) ve TURN sunucu (Coturn) production için zorunlu. 100+ kişilik conferencing FreeSWITCH’in güçlü olduğu alandır.
Ölçekleme stratejisi?
Yatay ölçekleme: birden fazla FreeSWITCH instance + Kamailio önünde load distribution. Dikey: tek instance 5K+ eşzamanlı çağrıyı (codec’e göre) kaldırabilir. Mono kurulumlarında media transcoding gereken yerlerde GPU-assist veya dedicated DSP.

Bir sonraki dönüşümü birlikte planlayalım.

Ekibimiz teknik gereksinimlerinizi anlamak ve hızlıca prototip çıkarmak için hazır.