oa_sip_recorder — Rust ile Yüksek Performanslı Pasif VoIP SIP/RTP Çağrı Dinleme ve Stereo Ses Sentezleyici
VoIP ağ arayüzlerini libpcap ile pasif dinleyerek SIP sinyalleşmesini ayrıştıran, dinamik RTP paketlerini yakalayıp G.711 çözücüyle arayan/arananı iki ayrı kanalda senkron stereo WAV dosyasına dönüştüren yüksek performanslı Rust sistem aracı.
Projeye Genel Bakış
Kurumsal santral (PBX) ve çağrı merkezi operasyonlarında ses kaydı altyapısı kritik bir mimari zorluktur. Santral seviyesinde kayıt alan (Asterisk MixMonitor, FreeSWITCH modülleri) veya SIP proxy yönlendirmesi kullanan aktif sistemler; canlı çağrı hatlarına işlemci yükü, ağ gecikmesi ve tek hata noktası (SPOF) riski bindirir.
oa_sip_recorder, çağrı hattına ve PBX sunucusuna sıfır ek yük getiren pasif ağ dinleme (promiscuous packet sniffing) mimarisiyle bu açmazı ortadan kaldırır. Modern Rust ile geliştirilen sistem, ağ arayüzüne (NIC) libpcap üzerinden kanca atar. Sıfır kopyalama (zero-copy) bellek disipliniyle Ethernet, IPv4/IPv6 ve UDP paketlerini ayrıştırır; SIP sinyalleşmesini (INVITE, 200 OK, BYE) izleyerek Call-ID bazlı oturum durumlarını yönetir. Dinamik RTP portlarını gerçek zamanlı eşleştirip G.711 (PCMU/PCMA) ses paketlerini çözer; arayanı sol kanalda, arananı sağ kanalda konumlandırarak mükemmel senkronize 16-bit stereo WAV dosyaları üretir. Üstelik tüm bu hattı 25 MB altı sabit bellek tüketimiyle icra eder.
flowchart TD
subgraph Wire ["Fiziksel / Sanal Ağ Arayüzü (NIC)"]
Traf["Canlı VoIP Ethernet Paketleri (Promiscuous Mod)"]
end
subgraph Sniffer ["libpcap & Sıfır-Kopya Ayrıştırıcı"]
PcapEngine["libpcap Çekirdek Tampon Kancası"]
EthParser["Ethernet / IPv4 / IPv6 Başlık Ayrıştırıcı"]
UDPFilter["UDP Port Demultiplexer"]
PcapEngine --> EthParser --> UDPFilter
end
subgraph Correlator ["SIP Oturum Durum Makinesi (Tokio / DashMap)"]
SIPParser["SIP Sinyal Ayrıştırıcı (INVITE / 200 OK / BYE)"]
CallIDStore["İş Parçacığı Güvenli Call-ID & RTP Eşleştirme Motoru"]
SIPParser --> CallIDStore
end
subgraph AudioPipeline ["Eşzamanlı RTP Çözücü & WAV Sentezleyici"]
RTPIn["RTP Paket Halka Tamponları (Jitter Toleranslı)"]
Decoder["G.711 Çözücü Motoru (μ-law / A-law'dan 16-bit PCM'e)"]
ChannelSync["Stereo Kanal Birleştirici\nArayan (Sol) | Aranan (Sağ)"]
WAVWriter["RIFF Broadcast WAV Dosya Üreticisi (Disk IO)"]
RTPIn --> Decoder --> ChannelSync --> WAVWriter
end
Traf --> PcapEngine
UDPFilter -- "Port 5060 (SIP Sinyalleşmesi)" --> SIPParser
UDPFilter -- "Dinamik UDP Portları (RTP Medyası)" --> RTPIn
CallIDStore -. "Oturum Bağlamı & Port Yönlendirmesi" .-> RTPIn
style Wire fill:#08090A,stroke:#E05D44,stroke-width:1px,color:#EDEDED
style Sniffer fill:#0E1013,stroke:#F87171,stroke-width:1px,color:#EDEDED
style Correlator fill:#14171D,stroke:#E05D44,stroke-width:2px,color:#EDEDED
style AudioPipeline fill:#0E1013,stroke:#FB923C,stroke-width:1px,color:#EDEDEDMimari Karşılaştırma: oa_sip_recorder ve PBX Dahili Kayıt Modülleri / Java-Node Sniffer'lar
| Sistem & Performans Kriteri | PBX Dahili Kayıt (MixMonitor / FreeSWITCH) | Java / Node.js Tabanlı Dinleyiciler | oa_sip_recorder (Rust Sistem Motoru) |
|---|---|---|---|
| Canlı Çağrıya Etkisi | Yüksek (PBX CPU ve Bellek Paylaşımı) | Sıfır (Pasif Ağ Dinleme) | Sıfır (Pasif Promiscuous Ağ Dinleme) |
| Bellek Tüketimi | 100 MB – 500 MB (PBX Daemon Yükü) | 250 MB – 1.2 GB (JVM / V8 Çalışma Zamanı) | < 25 MB Sabit Bellek Tüketimi |
| Paket Yakalama Stratejisi | PBX Medya Çekirdeği Kancası | libpcap JNI / Native Sarmalayıcılar | Yerel C FFI Sıfır-Kopya libpcap Tamponları |
| Kanal Mimarisi | Genellikle Mono veya Manuel Sonradan Miks | Değişken / Yüksek İşlemci Yükü | Gerçek Zamanlı Doğrudan Stereo WAV (Sol: Arayan, Sağ: Aranan) |
| Hata Direnci ve Güvenlik | PBX Çökmesi Canlı Çağrıları Düşürür | Garbage Collection Kaynaklı Gecikme Sıçramaları | Derleme Zamanı Bellek Güvenliği (Sıfır GC Gecikmesi) |
Teknik Derinlemesine İnceleme
1. libpcap ile Sıfır-Etkili Pasif Ağ Dinleme
Geleneksel VoIP kayıt sistemleri medyayı uygulama katmanında yakalar ya da bir SIP proxy gibi araya girer; bu da santralde kesinti yaşandığında canlı müşteri çağrılarının düşmesine neden olur. oa_sip_recorder, libpcap C FFI kancalarıyla ağ kartına promiscuous modda bağlanır. Ham çerçeveleri çekirdek halka tamponlarından pasif olarak okuduğu için PBX, SBC ağ geçitleri ve SIP telefonlar tarafından tamamen görünmezdir ve telekom sürekliliğine sıfır ek yük getirir.
2. SIP Durum Makinesi & Dinamik RTP Oturum Korelasyonu
SIP sinyalleşmesi standart portları (genellikle UDP 5060) kullanırken, RTP ses akışları çalışma anında SDP gövdesi üzerinden dinamik UDP portlarında (10000–60000) uzlaşır. oa_sip_recorder, Call-ID bazlı yüksek verimli bir durum makinesi işletir. INVITE ve eşleşen 200 OK el sıkışması tamamlandığında, arayan ve arananın IP adresleri ile dinamik RTP portları kilit gerektirmeyen eşzamanlı tablolara (DashMap) yazılır ve medya paketleri oturum üstverisiyle anında ilişkilendirilir.
3. Gerçek Zamanlı G.711 Çözümleme & Stereo Kanal Ayrıştırma
Yakalanan RTP paketleri G.711 μ-law (PCMU) veya A-law (PCMA) sıkıştırılmış ses taşır. oa_sip_recorder, bu 8-bit logaritmik örnekleri önceden hesaplanmış arama tablolarıyla anında 16-bit doğrusal PCM verisine çözer. En kritik mimari avantaj olarak arayanın sesi Sol Kanala, arananın sesi Sağ Kanala yönlendirilir. Jitter tamponları her iki kanaldaki RTP zaman damgalarını senkronize ederek ses analitiği ve yapay zeka transkripsiyonu için mükemmel bir 16-bit Broadcast RIFF stereo WAV dosyası oluşturur.
4. Rust ile Bellek Güvenliği, Sıfır-Kopya Ayrıştırma & Eşzamanlılık
Rust'ın sahiplik (ownership) modeliyle tasarlanan oa_sip_recorder; bellek taşmalarını, yarış durumlarını (data race) ve çöp toplayıcı (GC) duraksamalarını derleme anında yok eder. Paket işleme boru hatları crossbeam MPMC kanalları üzerinden asenkron konuşur. Ağ başlık ayrıştırıcıları bellek yeniden tahsisine (re-allocation) gitmeden doğrudan bayt dilimleri üzerinden çalışır; bu da çoklu gigabit ağ arayüzlerinde dahi toplam bellek tüketiminin 25 megabaytın altında kalmasını sağlar.
Teknoloji Yığını
- Dil & Araç Takımı
- Rust 1.70+ / Cargo (Sistem Seviyesi Sıfır Ek Yük)
- Paket Dinleme
- libpcap (Promiscuous NIC yakalama, ham soket filtreleri)
- Sinyalleşme Protokolü
- SIP RFC 3261 (Durumsal diyalog takibi, INVITE/BYE korelasyonu)
- Medya & Çözücüler
- RTP RFC 3550, G.711 μ-law (PCMU) & A-law (PCMA) çözücüler
- Ses Sentezleme
- 16-bit Doğrusal PCM Broadcast RIFF WAV, Stereo Kanal Senkronizasyonu
- Eşzamanlılık & Durum
- Crossbeam MPMC Kanalları, DashMap kilitsiz korelasyon tabloları
Sağlanan Katma Değer & İş Etkisi
Ses kaydı operasyonunu santral donanımından tamamen yalıtan oa_sip_recorder; telekom altyapısına sıfır risk bindirerek kurumsal çağrı kayıt ve arşivleme maliyetlerini %80'in üzerinde düşürür.
Benzer bir sistem mimarisine mi ihtiyacınız var?
Teknik danışmanlık, özel yazılım geliştirme veya sistem denetimi için doğrudan iletişime geçebilirsiniz.