目次

概要

問題

解決策

概要

このドキュメントでは、マルチポイント コントロール ユニット（MCU）バージョン 4.5 以降で、MCU が Session Initiation Protocol（SIP）URI の : を %3A に変換するという問題について説明します。これは、: が パスワードの指定に使用される特殊文字として扱われるために発生します。 MCU がサードパーティ ゲートキーパーに登録されている場合に、これが原因でコールが失敗します。

問題

MCU が SIP URI の : を %3A に変換します。 ビデオ通信サーバ（VCS）は %3A を : に適切に復号化できるため、 : を使用した MCU からのコールは VCS 経由では正常に機能します。

ただし、MCU がサードパーティ ゲートキーパーに登録されている場合、%3A を : に変換できません。

MCU バージョン 4.4 (3.67) の MCU ログ（この場合 MCU は : を %3A にコーディングしません）：

TX:INVITE

-SIP

-Line Value="INVITE sip:record:97055@domain.com SIP/2.0

"

-Line Value="Via: SIP/2.0/UDP 10.1.1.1:5060;branch=z9hG4bKff9702c4

"

-Line Value="Max-Forwards: 70

"

-Line Value="From: "Codian MCU 4220" <sip:10.1.1.1>;tag=C7E8FE01CC370000

"

-Line Value="To: <sip:record:97055@domain.com>

"

-Line Value="Call-ID: DAEA9E22@10.1.1.1

"

-Line Value="CSeq: 1 INVITE

"

-Line Value="User-Agent: Codian MCU 4220 v4.4 (3.67)

"

MCU バージョン 4.5 (1.45) の MCU ログ：

TX:INVITE

-SIP

-Line Value="INVITE sip:record%3A97055@domain.com SIP/2.0

"

-Line Value="Via: SIP/2.0/UDP 10.1.1.1:5060;branch=z9hG4bKF876f970

"

-Line Value="Max-Forwards: 70

"

-Line Value="From: "Codian MCU 4220" <sip:10.1.1.1>;tag=C7E8FE01BC0079

"

-Line Value="To: <sip:record%3A97055@domain.com>

"

-Line Value="Call-ID: DAEBCE37@10.1.1.1

"

-Line Value="CSeq: 1 INVITE

"

-Line Value="User-Agent: Codian MCU 4220 v4.5 (1.45)

MCU バージョン 4.5 へのアップグレード後、SIP アドレスが URI アドレス record:97055@domain.com から record%3A97055@domain.com に変更されます。

MCU は : の代わりに %3A を送信しますが、サードパーティ ゲートキーパーはこれを認識せず、これが原因でコールが失敗します。

解決策

解決策は、%3A を : に変換するトランスフォームをサードパーティ ゲートキーパーで作成するか、 または SIP URI で : を 使用しないことです。

MCU サイドでこの問題を追跡するバグ（CSCur46154）がありました。 ただし、MCU がこの RFC に準拠したため、このバグはクローズされました。

この RFC には、次のような記述があります。

パスワード： ユーザに関連付けられているパスワード。 SIP と SIPS URI 構文ではこのフィールドを使用できますが、このフィールドを使用することは推奨されません。これは、認証情報をクリア テキスト（URI など）で渡すことは、認証情報を使用するほぼすべての状況でセキュリティ リスクであると実証されているためです。 たとえば、このフィールドに PIN 番号を指定して転送すると、その PIN が公開されます。

パスワード フィールドは、ユーザ部分の単なる拡張であることに注意してください。 このフィールドのパスワード部分を特に重要視しない実装では、「user: password」が単に単一文字列として扱われます。

したがって、この文字列を単一文字列のユーザまたはパスワードのいずれとして復号化されるかはデコーダにより決定し（: は特殊文字）、MCU は : を 特殊文字として扱います。