SIP の式
Citrix ADCの詳細ポリシー式言語には、セッション開始プロトコル(SIP)接続で動作するいくつかの式が含まれています。これらの式は、要求/応答ベースで動作する、サポートされているプロトコルのポリシーで使用することを意図しています。これらの式は、コンテンツスイッチング、レート制限、レスポンダ、および書き換えポリシーで使用できます。
レスポンダポリシーで使用される SIP 式には、特定の制限が適用されます。SIP ロードバランシング仮想サーバーでは、DROP、NOOP、または RESPONDWITH アクションだけが許可されます。レスポンダーポリシーは、負荷分散仮想サーバー、上書きグローバルバインドポイント、既定のグローバルバインドポイント、または sip_udp ポリシーラベルにバインドできます。
SIP プロトコルで使用されるヘッダー形式は、HTTP プロトコルで使用されるヘッダー形式と似ているため、新しい式の多くは HTTP アナログとよく似ています。各 SIP ヘッダーは、SIP メソッド、URL、およびバージョンを含む行で構成され、続いて HTTP ヘッダーのような一連の名前と値のペアが続きます。
次に、その下の式テーブルで参照される SIP ヘッダーの例を示します。
INVITE sip:16@www.sip.com:5060;transport=udp SIP/2.0
Record-Route: <sip:200.200.100.22;lr=on>
Via: SIP/2.0/UDP 200.200.100.22;branch=z9hG4bK444b.c8e103d1.0;rport=5060;
received=10.102.84.18
Via: SIP/2.0/UDP 10.102.84.180:5060;branch=z9hG4bK03e76d0b;rport=5060;
received=10.102.84.160
From: "12" <sip:12@sip_example.com>;tag=00127f54ec85a6d90cc14f45-53cc0185
To: "16" <sip:16@sip_example.com>;tag=00127f54ec85a6d90cc14f45-53cc0185
Call-ID: 00127f54-ec850017-0e46f5b9-5ec149c2@10.102.84.180
Max-Forwards: 69CSeq: 101 INVITE
User-Agent: Cisco-CP7940G/8.0
Contact: <sip:12@10.102.84.180:5060;transport=udp>
Expires: 180
Accept: application/sdp
Allow: ACK,BYE,CANCEL,INVITE,NOTIFY,OPTIONS,REFER,REGISTER,UPDATE
Supported: replaces,join,norefersub
Content-Length: 277
Content-Type: application/sdp
Content-Disposition: session;handling=optiona
<!--NeedCopy-->
SIP リファレンステーブル
次の表に、SIP ヘッダーで動作する式の一覧を示します。最初のテーブルには、リクエストヘッダーに適用される式が含まれています。ほとんどの応答ベースの式は、対応する要求ベースの式とほぼ同じです。対応する要求式から応答式を作成するには、式の最初の 2 つのセクションを SIP.REQ から SIP.RES に変更し、その他の明白な調整を行います。2 番目のテーブルには、応答に固有の応答式が含まれており、対応する要求はありません。次の表の任意の要素を完全な式として使用することも、さまざまな演算子を使用してこれらの式要素を他の要素と組み合わせて、より複雑な式を形成することもできます。
SIP 要求式
式 | 説明 |
---|---|
SIP.REQ.METHOD | SIP 要求のメソッドで操作します。サポートされているSIP要求メソッドは、ACK、BYE、CANCEL、INFO、INVITE、MESSAGE、NOTIFY、OPTIONS、PRACK、PUBLISH、REFER、REGISTER、SUBSCRIBE、UPDATEです。この式はテキストクラスの派生であるため、テキストに適用可能なすべての操作がこのメソッドに適用されます。たとえば、SIP 要求が INVITE SIP: 16 @10 .102.84. 181:5060; トランスポート=udp SIP/2.0 の場合、この式は INVITE を返します。 |
SIP.REQ.URL | SIP 要求 URL で操作します。この式はテキストクラスの派生であるため、テキストに適用可能なすべての操作がこのメソッドに適用されます。たとえば、SIP リクエストが「INVITE SIP: 16 @10 .102.84. 181:5060; トランスポート=udp SIP/2.0」の場合、次の式は 16 @10 .102.84. 181:5060; トランスポート=udp を返します。 |
SIP.REQ.URL.PROTOCOL | URL プロトコルを返します。たとえば、SIP URL の「16@www.sip.com: 5060; トランスポート=udp」の場合、この式は sip を返します。 |
SIP.REQ.URL.HOSTNAME | SIP URL のホスト名部分を返します。たとえば、「16@www.sip.com: 5060; トランスポート=udp」の場合、この式は「www.sip.com: 5060」を返します。 |
SIP.REQ.URL.HOSTNAME.PORT | SIP URL ホスト名のポート部分を返します。ポートが指定されていない場合、この式はデフォルトの SIP ポート 5060 を返します。たとえば、SIP ホスト名が www.sip.com: 5060 の場合、この式は 5060 を返します。 |
SIP.REQ.URL.HOSTNAME.DOMAIN | SIP URL ホスト名のドメイン名部分を返します。ホストが IP アドレスの場合、この式は誤った結果を返します。たとえば、SIP ホスト名が www.sip.com: 5060 の場合、この式は sip.com を返します。SIP ホスト名が 192.168.43. 15:5060 の場合、この式はエラーを返します。 |
SIP.REQ.URL.HOSTNAME.SERVER | ホストのサーバー部分を返します。たとえば、SIP ホスト名が www.sip.com: 5060 の場合、この式は www を返します。 |
SIP.REQ.URL.USERNAME | @ 文字の前のユーザー名を返します。たとえば、SIP URL が「16@www.sip.com: 5060; トランスポート=udp」の場合、この式は 16 を返します。 |
SIP.REQ.VERSION | 要求内の SIP バージョン番号を返します。たとえば、SIP 要求が INVITE SIP: 16 @10 .102.84. 181:5060; トランスポート=udp SIP/2.0 の場合、この式は SIP/2.0 を返します。 |
SIP.REQ.VERSION.MAJOR | メジャーバージョン番号(ピリオドの左側の番号)を返します。たとえば、SIP バージョン番号が SIP/2.0 の場合、この式は 2 を返します。 |
SIP.REQ.VERSION.MINOR | マイナーバージョン番号 (ピリオドの右側にある数値) を返します。たとえば、SIP バージョン番号が SIP/2.0 の場合、この式は 0 を返します。 |
SIP.REQ.CONTENT_LENGTH | コンテンツ-Lengthヘッダーの内容を返します。この式は thesip_header_t クラスの派生型であるため、SIP ヘッダーで使用できるすべての操作を使用できます。たとえば、コンテンツ長:277 の SIP コンテンツ長ヘッダーの場合、この式は 277 を返します。 |
SIP.REQ.TO | To ヘッダーの内容を返します。たとえば、[宛先] のヘッダーの場合、<sip: 16@sip_example.com > タグ=00127f54ec85a6d90c14f45-53cc0185は、この式は「16」 を返します <sip: 16@sip_example.com >。タグ=00127f54ec85a6d90c14f45-53ccc0185を返します。 |
SIP.REQ.TO.ADDRESS | sip_url オブジェクトにある SIP URI を返します。SIP URI で使用できるすべての操作を使用できます。たとえば、[宛先] ヘッダーの [宛先] の場合、<sip: 16@sip_example.com > タグ=00127f54ec85a6d90c14f45-53cc0185の場合、この式はsip: 16@sip_example.com を返します。 |
SIP.REQ.TO.DISPLAY_NAME | To ヘッダーの表示名部分を返します。たとえば、[宛先] の SIP ヘッダーの場合、<sip: 16@sip_example.com > タグ=00127f54ec85a6d90c14f45-53cc0185、この式は 16 を返します。 |
SIP.REQ.TO.TAG | TO ヘッダーの「タグ」名値のペアから「タグ」値を返します。たとえば、[宛先] ヘッダーの場合、タグ <sip: 16@sip_example.com > =「16」、タグ = 00127f54cc14f45-53cc0185 は、この式は、00127f54ec85a6d90c14f45-53cc0185 を返します。 |
SIP.REQ.FROM | From ヘッダーの内容を返します。たとえば、「12」 <sip: 12@sip_example.com >; タグ=00127f54ec85a6d90c14f45-53cc0185の差出人ヘッダーの場合、この式はsip: 12@sip_example.com を返します。 |
SIP.REQ.FROM.ADDRESS | sip_url オブジェクトにある SIP URI を返します。SIP URI で使用できるすべての操作を使用できます。たとえば、「12」 <sip: 12@sip_example.com >; タグ=00127f54ec85a6d90c14f45-53cc0185の差出人ヘッダーの場合、この式はsip: 12@sip_example.com を返します。 |
SIP.REQ.FROM.DISPLAY_NAME | To ヘッダーの表示名部分を返します。たとえば、「12」 <sip: 12@sip_example.com >; タグ=00127f54ec85a6d90c14f45-53cc0185の差出人ヘッダーの場合、この式は12を返します。 |
SIP.REQ.FROM.TAG | TOヘッダーの「タグ」名と値のペアから「タグ」値を返します。たとえば、”12”<sip:12@sip_example.com>; タグ=00127f54cc14f45-53cc0185の差出人ヘッダーの場合、この式は00127f54ec85a6d90c14f45-53cc0185を返します。 |
SIP.REQ.VIA | 完全な Via ヘッダーを返します。リクエスト内に複数の Via ヘッダーがある場合は、最後の Via ヘッダーを返します。たとえば、サンプル SIP ヘッダー内の 2 つの Via ヘッダーの場合、次の式は Via を返します。SIP/2.0/UDP 10.102.84。180:5060; ブランチ=z9hG4bK03e76d0b; ポート=5060; 受信=10.102.84.160。 |
SIP.REQ.VIA.SENTBY_ADDRESS | リクエストを送信したアドレスを返します。たとえば、ビアヘッダーの場合、SIP/2.0/UDP 10.102.84. 180:5060; ブランチ=z9hG4bK03e76d0b; ポート=5060; 受信=10.102.84.160、この式は 10.102.84.180 を返します。 |
SIP.REQ.VIA.SENTBY_PORT | 要求を送信したポートを返します。たとえば、ビアヘッダーの場合、SIP/2.0/UDP 10.102.84. 180:5060; ブランチ=z9hG4bK03e76d0b; ポート=5060; 受信=10.102.84.160、この式は 5060 を返します。 |
SIP.REQ.VIA.RPORT | rport の名前と値のペアから値を返します。たとえば、ビアヘッダーの場合、SIP/2.0/UDP 10.102.84. 180:5060; ブランチ=z9hG4bK03e76d0b; ポート=5060; 受信=10.102.84.160、この式は 5060 を返します。 |
SIP.REQ.VIA.BRANCH | ブランチ名と値のペアから値を返します。たとえば、ビアヘッダーの場合、SIP/2.0/UDP 10.102.84. 180:5060; ブランチ=9hG4bK03e76d0b; ポート=5060; 受信=10.102.84.160、この式は z9hG4bK03e76d0b を返します。 |
SIP.REQ.VIA.RECEIVED | 受信した名前と値のペアから値を返します。たとえば、ビアヘッダーの場合、SIP/2.0/UDP 10.102.84.180:5060;branch=z9hG4bK03e76d0b;rport=5060;received=10.102.84.160, この式は10.102.84.160を返します。 |
SIP.REQ.CALLID | Callid ヘッダーの内容を返します。この式は thesip_header_t クラスの派生型であるため、SIP ヘッダーで使用できるすべての操作を使用できます。For example, for a SIP Callid header ofCall-ID: 00127f54-ec850017-0e46f5b9-5ec149c2@10.102.84.180, this expression returns00127f54-ec850017-0e46f5b9-5ec149c2@10.102.84.180. |
SIP.REQ.CSEQ | CSEQ から CSEQ 番号を整数で返します。たとえば、CSeq: 101 INVITE の SIP CSEQ ヘッダーの場合、この式は 101 を返します。 |
SIP.REQ.HEADER( |
指定された SIP ヘッダーを返します。 |
SIP.REQ.HEADER( |
指定された SIP ヘッダーの指定されたインスタンスを返します。同じ SIP ヘッダーの複数のインスタンスが発生する可能性があります。このような SIP ヘッダーの特定のインスタンス(たとえば、特定の Via ヘッダー)が必要な場合は、に番号を入力してそのヘッダーを指定できます |
SIP.REQ.HEADER( |
指定された SIP ヘッダーの指定されたインスタンスの内容を返します。使用法は前の式とほぼ同じです。たとえば、上記のテーブルエントリの SIP ヘッダーの例で使用した場合、SIP.REQ.HEADER (「経由」) .VALUE (1) は SIP/2.0/UDP 10.102.84 を返します。180:5060; ブランチ = z9hG4bK03e76d0b; rport = 5060 を返します。 |
SIP.REQ.HEADER( |
特定のヘッダーのインスタンスの数を整数で返します。たとえば、上記の SIP ヘッダーの例で使用すると、SIP.REQ.HEADER (「Via」) .COUNT は 2 を返します。 |
SIP.REQ.HEADER( |
指定されたヘッダーが存在するかどうかに応じて、trueまたはfalseのブール値を返します。たとえば、上記の SIP ヘッダーの例で使用した場合、SIP.REQ.HEADER (「期限切れ」) .EXISTSは true を返し、一方、SIP.REQ.HEADER (「発信者 ID」) .EXISTS は false を返します。 |
SIP.REQ.HEADER( |
指定されたヘッダーのコンマ区切りのパラメータリストを返します。たとえば、上記の SIP ヘッダーの例で使用した場合、SIP.REQ.HEADER (「許可」) .LIST は ACK、BYE、キャンセル、受信、通知、オプション、参照、登録、更新を返します。文字列.GET ( |
SIP.REQ.HEADER( |
型キャスト |
SIP.REQ.HEADER( |
指定されたテキスト文字列が指定されたヘッダーのいずれかのインスタンスに存在する場合は、ブール値 true を返します。指定されたヘッダーのすべてのインスタンスに対して操作します。ヘッダーインスタンスは最後(0)から最初に一致します。 |
SIP.REQ.HEADER( |
に関連付けられたパターンが、 |
SIP.REQ.HEADER( |
に関連付けられたパターンが、 |
SIP.REQ.HEADER( |
そのパターンが |
SIP.REQ.HEADER( |
そのパターンが |
SIP.REQ.HEADER( |
指定された文字列が指定されたヘッダーのインスタンスに存在する場合、この式はその文字列を返します。たとえば、SIPヘッダー経由の場合:SIP/2.0/UDP 10.102.84. 180:5060; ブランチ=z9hG4bK03e76d0b; ポート=5060; 受信=10.102.84.160”、SIP.要求.ヘッダー(「経由」).SUBSTR(「rport=5060」)は「rport=5060」を返します。.REQ.HEADER (「経由」) .SUBSTR (「rport = 5061」) は空の文字列を返します。 |
SIP.REQ.HEADER( |
指定された文字列が指定されたヘッダーのいずれかのインスタンスに存在する場合、この式はその文字列の直後の文字列を返します。たとえば、SIP ヘッダービア:SIP/2.0/UDP 10.102.84. 180:5060; ブランチ=z9hG4bK03e76d0b; ポート=5060; 受信=10.102.84.160、式SIP.要求.ヘッダー (「経由」) .AFTER_STR (「rport=」) は 5060 を返します。 |
SIP.REQ.HEADER( |
指定された正規表現(regex)が指定されたヘッダーのいずれかのインスタンスと一致する場合、ブール値trueを返します。正規表現は、次の形式で指定する必要があります。re |
SIP.REQ.HEADER( |
指定された正規表現が指定されたヘッダーのいずれかのインスタンス内の任意のテキストと一致する場合、この式はテキストを返します。たとえば、SIP header Via: SIP/2.0/UDP 10.102.84.180:5060;branch=z9hG4bK03e76d0b;rport=5060;received=10.102.84.160は式 SIP.REQ.HEADER(“Via”).REGEX_SELECT(“received=[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}”) received=10.102.84.160 を返します。 |
SIP.REQ.HEADER( |
指定された正規表現が、指定されたヘッダーの任意のインスタンス内の任意のテキストと一致する場合、この式は、そのテキストの直後の文字列を返します。たとえば、SIP ヘッダーの経由:SIP/2.0/UDP 10.102.84.180:5060;branch=z9hG4bK03e76d0b;rport=5060;received=10.102.84.160, the expression SIP.REQ.HEADER(“Via”).AFTER_REGEX(“received=”) returns10.102.84.160. |
SIP.REQ.HEADER( |
指定された正規表現が指定されたヘッダーのいずれかのインスタンス内の任意のテキストと一致する場合、この式は、そのテキストの直前の文字列を返します。たとえば、SIP ヘッダーの経由:SIP/2.0/UDP 10.102.84.180:5060;branch=z9hG4bK03e76d0b;rport=5060;received=10.102.84.160, the expression SIP.REQ.HEADER(“Via”).BEFORE_REGEX(“[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}”) returns received=. |
SIP.REQ.FULL_HEADER | 終端の CR/LF を含む SIP ヘッダー全体を返します。 |
SIP.REQ.IS_VALID | リクエスト形式が有効な場合、ブール値 true を返します。 |
SIP.REQ.BODY( |
指定された長さまで、リクエスト本文を返します。指定された長さがリクエスト本文の長さより大きい場合、この式はリクエスト本文全体を返します。 |
SIP.REQ.LB_VSERVER | 現在の要求を処理している負荷分散仮想サーバー (LB vserver) の名前を返します。 |
SIP.REQ.CS_VSERVER | 現在の要求を処理しているコンテンツスイッチ仮想サーバー (CS vserver) の名前を返します。 |
SIP 応答式
式 | 説明 |
---|---|
SIP.RES.STATUS | SIP 応答ステータスコードを返します。たとえば、応答の最初の行が「SIP/2.0 100」の場合、この式は「100」を返します。 |
SIP.RES.STATUS.MSG | SIP 応答ステータスメッセージを返します。たとえば、応答の最初の行が SIP/2.0 100 Trying である場合、この式は Trying を返します。 |
SIP.RES.IS_REDIRECT | レスポンスコードがリダイレクトの場合、ブール値 true を返します。 |
SIP.RES.METHOD | CSeqヘッダ内の要求メソッド文字列から抽出された応答メソッドを返します。 |