İç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.

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

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