İçeriğe atla
Onur AksoyOnur Aksoy — Homepage
Açık Kaynak / Üretime Hazır2024 — Günümüz•Sistem Mimarı & Düşük Seviye Ağ Mühendisi

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ı.

Dinleme Modu
Pasif Ağ Dinleme
Çözücü Motoru
G.711 PCMU / PCMA Çözümleme
Ses Sentezi
Gerçek Zamanlı Stereo WAV
Bellek Tüketimi
< 25MB Bellek
#Rust 1.70+#Packet Capture (pcap)#VoIP SIP/RTP#G.711 μ-law/A-law#Stereo WAV Synthesis#Concurrency & Ring Buffers#Zero-Copy Parsing

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.

Sistem Mimarisi Topolojisivektörel mimari diyagramı
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:#EDEDED

Mimari Karşılaştırma: oa_sip_recorder ve PBX Dahili Kayıt Modülleri / Java-Node Sniffer'lar

Sistem & Performans KriteriPBX Dahili Kayıt (MixMonitor / FreeSWITCH)Java / Node.js Tabanlı Dinleyicileroa_sip_recorder (Rust Sistem Motoru)
Canlı Çağrıya EtkisiYüksek (PBX CPU ve Bellek Paylaşımı)Sıfır (Pasif Ağ Dinleme)Sıfır (Pasif Promiscuous Ağ Dinleme)
Bellek Tüketimi100 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 StratejisiPBX Medya Çekirdeği Kancasılibpcap JNI / Native SarmalayıcılarYerel C FFI Sıfır-Kopya libpcap Tamponları
Kanal MimarisiGenellikle Mono veya Manuel Sonradan MiksDeğişken / Yüksek İşlemci YüküGerçek Zamanlı Doğrudan Stereo WAV (Sol: Arayan, Sağ: Aranan)
Hata Direnci ve GüvenlikPBX Çökmesi Canlı Çağrıları DüşürürGarbage 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.

Projeyi Konuşalım →