2 つの異なるデータセンターに 2 つの asterisk サーバーがあります。通話は 1 つのサーバーから別のサーバーに転送されます。突然、オーディオ品質が低下しました。両方のサーバーで SIP トレースを作成しました。次のことがわかりました。
- サーバー A はサーバー B に RTP を送信します。(サーバー A で SIP トレースが実行され、トレースではすべて正常に見えます。Wireshark RTP プレーヤーを使用してオーディオを正常に再生できます)
- サーバー B はサーバー A から RTP を受信します。(サーバー B で作成された SIP トレースは、順序が間違っているパケットが多数 (45.3%) あることを示しています)
質問: 問題がどこにあるのかをどのように判断しますか? :)
ありがとう!
答え1
通常、ストリーム内に順序が乱れたパケットが大量にある場合、原因はパケットのパス上のどこかのルーターで負荷分散ルーティングが適切に行われていないことです。IP はパケットの順序どおりの配信を保証しませんが、TCP や RTP などのプロトコルは、ほとんどの場合パケットが順序どおりであると想定しており、その想定が成り立たない場合にはパフォーマンスが大幅に低下します。したがって、ベスト プラクティスでは、ルーターは大量の順序が乱れたパケットや順序が乱れたパケットを発生させるような構成にすべきではないとされています。
ほとんどのルータは、複数のリンク間でトラフィックの負荷を分散するように設定されている場合、ハッシュ アルゴリズム (多くの場合、送信元と宛先の IP アドレス、場合によっては TCP/UDP ポートに基づく) を使用します。これにより、1 つのストリームに属するパケットはすべて、負荷分散されたグループの同じメンバーを選択するようになります。これにより、パケットの順序が維持されます。ルータがこのようなハッシュを使用せずに負荷分散を行い、1 つのストリームに属するパケットが異なるリンクに到達すると、送信にかかる時間が簡単に異なり (主にバッファリングが原因で、負荷分散されたリンクの特性が同一であってもこれが発生します)、宛先で順序が乱れることになります。
それがあなたに起こっていることであり、RTP 受信機のジッター バッファーが補正できないほどひどい場合は、残念ながら、ネットワーク管理者に修正してもらう以外に、何もできることはありません。