freeswitch pbxソフトウェアでSIPコールバッファリングをオフにしたい。
FreeswitchはクライアントのRTPデータをバッファに保存し、20ミリ秒ごとに送信します。
通過するパケットを維持せずに自由に切り替えたいです。
どのように構成しますか?
-----編集(追加情報) -----
2つのSIPクライアントとFreeSwitch PBXがあります。
音声8kHzサンプルレート、A-Lawエンコード(サンプルあたり8バイト、圧縮なし)
あるクライアントを別のクライアントから直接呼び出すと、あるクライアントの tcpdump 出力は次のようになります。
00:00:00.000475 IP 10.64.177.34.5440 > 10.64.0.42.5082: UDP, length 172
00:00:00.031599 IP 10.64.177.34.5440 > 10.64.0.42.5082: UDP, length 172
00:00:00.032012 IP 10.64.177.34.5440 > 10.64.0.42.5082: UDP, length 172
00:00:00.000315 IP 10.64.177.34.5440 > 10.64.0.42.5082: UDP, length 172
00:00:00.031775 IP 10.64.177.34.5440 > 10.64.0.42.5082: UDP, length 172
00:00:00.000384 IP 10.64.177.34.5440 > 10.64.0.42.5082: UDP, length 172
00:00:00.031499 IP 10.64.177.34.5440 > 10.64.0.42.5082: UDP, length 172
00:00:00.031986 IP 10.64.177.34.5440 > 10.64.0.42.5082: UDP, length 172
00:00:00.000475 IP 10.64.177.34.5440 > 10.64.0.42.5082: UDP, length 172
00:00:00.031578 IP 10.64.177.34.5440 > 10.64.0.42.5082: UDP, length 172
00:00:00.031936 IP 10.64.177.34.5440 > 10.64.0.42.5082: UDP, length 172
00:00:00.000419 IP 10.64.177.34.5440 > 10.64.0.42.5082: UDP, length 172
00:00:00.031573 IP 10.64.177.34.5440 > 10.64.0.42.5082: UDP, length 172
ただし、あるクライアントから別のクライアントに接続するための中間点としてpbxを使用すると、次の結果が得られます。
00:00:00.020013 IP 10.64.72.24.30230 > 10.64.0.42.5078: UDP, length 172
00:00:00.019969 IP 10.64.72.24.30230 > 10.64.0.42.5078: UDP, length 172
00:00:00.020017 IP 10.64.72.24.30230 > 10.64.0.42.5078: UDP, length 172
00:00:00.019984 IP 10.64.72.24.30230 > 10.64.0.42.5078: UDP, length 172
00:00:00.020078 IP 10.64.72.24.30230 > 10.64.0.42.5078: UDP, length 172
00:00:00.020016 IP 10.64.72.24.30230 > 10.64.0.42.5078: UDP, length 172
00:00:00.019850 IP 10.64.72.24.30230 > 10.64.0.42.5078: UDP, length 172
00:00:00.020045 IP 10.64.72.24.30230 > 10.64.0.42.5078: UDP, length 172
00:00:00.020012 IP 10.64.72.24.30230 > 10.64.0.42.5078: UDP, length 172
00:00:00.019974 IP 10.64.72.24.30230 > 10.64.0.42.5078: UDP, length 172
00:00:00.020054 IP 10.64.72.24.30230 > 10.64.0.42.5078: UDP, length 172
00:00:00.019996 IP 10.64.72.24.30230 > 10.64.0.42.5078: UDP, length 172
00:00:00.019972 IP 10.64.72.24.30230 > 10.64.0.42.5078: UDP, length 172
どちらの場合も、平均時間は約20ms(直接的な場合はわずかに少ない)ですが、(スピーカーやヘッドフォンで)聞こえるサウンドにギャップがないため、非正規のデータ部分はクライアントにとってよりよく見えます。データの定期的な周期部分は、クロックドリフトの問題が原因で問題が発生すると思います。
だから私はFreeSwitchでこの機能をオフにして、データが元のタイムスタンプで表示されるようにしたいと思います。
答え1
私の問題に対する解決策を見つけました。
行を追加する必要があります
<X-PRE-PROCESS cmd="set" data="rtp_notimer_during_bridge=true"/>
ファイルに
/etc/freeswitch/vars.xml
これにより、ブリッジモードのFreeSwitchは元のパケット間隔を維持します。
答え2
SIP通信はUDPを使用して音声データを送信するため、各フレームを埋めるために必要なバッファが必要であり、SIP通信でUDPパケットが通常保持するデータ量は20msです。
これをバイパスすることはできませんが、整理して減らすことはできます。
私はfreepbxを使わずにAsteriskをpbxとして使うので、これが機能なのか、それとも計算遅延なのかはわかりません。 sip ネゴシエーションは pbx を介して行われますが、 rtp ペイロードはピア間で直接行われるようにアスタリスクに direct_media 機能と同等の機能を使用することを検討する必要があります。