Citrix ADC

SIP サーバのグループのロードバランシング

セッション開始プロトコル (SIP) は、マルチメディア通信セッションを開始、管理、および終了するように設計されています。これは、インターネット電話(VoIP)の標準として浮上しています。SIP メッセージは、TCP または UDP を介して送信できます。SIP メッセージには、要求メッセージと応答メッセージの 2 つのタイプがあります。

SIP ベースの通信システムのトラフィックは、専用のデバイスおよびアプリケーション(エンティティ)を介してルーティングされます。マルチメディア通信セッションでは、これらのエンティティはメッセージを交換します。次の図は、基本的なSIPベースの通信システムを示しています。

図1:SIPベースの通信システム

sip

Citrix ADCを使用すると、UDPまたはTCP(TLSを含む)経由でSIPメッセージを負荷分散できます。SIPプロキシサーバーのグループに対してSIP要求を負荷分散するようにCitrix ADCを構成できます。これを行うには、負荷分散方式と永続性のタイプを次のいずれかの組み合わせに設定して、負荷分散仮想サーバーを作成します。

  • 持続性設定なしの Call-ID ハッシュロードバランシング方式
  • 最小接続またはラウンドロビンロードバランシング方式による Call-ID ベースのパーシステンス
  • 最小接続またはラウンドロビン負荷分散方式によるルールベースのパーシステンス

また、デフォルトでは、Citrix ADCはSIP要求のvierヘッダーにRPORTを追加します。これにより、サーバーは要求の発信元のIPアドレスとポートに応答を返送します。

注:ロードバランシングが機能するには、プライベート IP アドレスまたはプライベートドメインが SIP ヘッダー/ペイロードに追加されないように SIP プロキシを設定する必要があります。SIP プロキシは、SIP 仮想サーバの IP アドレスに解決されるドメイン名を SIP ヘッダーに追加する必要があります。また、SIP プロキシは、登録情報を共有するために共通のデータベースと通信する必要があります。

サーバ開始トラフィック

SIPサーバーが開始するアウトバウンドトラフィックの場合は、クライアントが使用するプライベートIPアドレスがパブリックIPアドレスに変換されるように、Citrix ADCでRNATを構成します。

RNAT 送信元ポートまたは宛先ポートを含む SIP パラメータを設定した場合、アプライアンスは要求パケットの送信元ポートと宛先ポートの値を、RNAT 送信元ポートおよび RNAT 宛先ポートと比較します。いずれかの値が一致すると、アプライアンスは VIA ヘッダーをRPORT で更新します。クライアントからの SIP 応答は、要求と同じパスを通過します。

サーバーが開始するSSLトラフィックの場合、Citrix ADCは組み込みの証明書とキーのペアを使用します。カスタム証明書とキーのペアを使用する場合は、カスタム証明書とキーのペアを、 nsrnatsip-127.0.0.1-5061という名前のCitrix ADC内部サービスにバインドします。

ポリシーと式のサポート

Citrix ADC デフォルトの式言語には、セッション開始プロトコル(SIP)接続で動作するいくつかの式が含まれています。これらの式は、SIP ベース (sip_udp、sip_tcp、sip_ssl) 仮想サーバーおよびグローバルバインドポイントにのみバインドできます。これらの式は、コンテンツスイッチング、レート制限、レスポンダ、および書き換えポリシーで使用できます。

TCP または UDP を介した SIP シグナリングトラフィックのロードバランシングの設定

Citrix ADCは、TLSで保護されたTCPトラフィックを含め、UDPまたはTCPを介して要求を送信するSIPサーバーの負荷を分散できます。ADCは、SIPサーバの負荷分散のために次のサービスタイプを提供します。

  • SIP_UDP:SIP サーバが UDP を介して SIP メッセージを送信する場合に使用します。
  • SIP_TCP:SIP サーバが TCP 経由で SIP メッセージを送信する場合に使用します。
  • SIP_SSL:SSL または TLS を使用して TCP 経由の SIP シグナリングトラフィックを保護するために使用されます。Citrix ADCでは、次のモードがサポートされています。
    • クライアント、ADC、および SIP サーバ間のエンドツーエンドの TLS 接続。
    • クライアントと ADC 間の TLS 接続、および ADC と SIP サーバ間の TCP 接続。
    • クライアントとADC間のTCP接続、およびADCとSIPサーバ間のTLS接続。

次の図は、TCP または UDP 経由で SIP メッセージを送信する SIP サーバのグループをロードバランシングするように設定されたセットアップのトポロジを示しています。

図2:SIP ロードバランシングトポロジ

sip-lb-topology

エンティティタイプ 名前 IPアドレス ポート サービスタイプ/プロトコル
仮想サーバー Vserver-LB-1 10.102.29.65 80 SIP_UDP / SIP_TCP / SIP_SSL
サービス Service-SIP-1 168.1.6 80 SIP_UDP / SIP_TCP / SIP_SSL
  Service-SIP-2 168.1.5 80 SIP_UDP / SIP_TCP / SIP_SSL
モニター デフォルト なし 80 SIP_UDP / SIP_TCP / SIP_SSL

次に、SIP トラフィックの基本的なロードバランシングの設定の概要を示します。

  1. サービスを設定し、ロードバランシングする SIP トラフィックのタイプごとに仮想サーバを設定します。

    • SIP_UDP:UDP 経由で SIP トラフィックをロードバランシングする場合。
    • SIP_TCP:TCP 経由で SIP トラフィックをロードバランシングする場合。
    • SIP_SSL :TCP を介した SIP トラフィックのロードバランシングおよびセキュリティ保護を行う場合。

    注:SIP_SSL を使用する場合は、必ず SSL 証明書とキーのペアを作成してください。詳細については、「証明書キーペアの追加」を参照してください。

  2. サービスを仮想サーバーにバインドします。

  3. デフォルト(tcp-default)以外のモニタでサービスの状態を監視する場合は、カスタムモニタを作成してサービスにバインドします。Citrix ADCには、 SIP-UDPとSIP-TCPの2つのカスタムモニタータイプがあり、SIP サービスを監視できます。

  4. SIP_SSL 仮想サーバーを使用している場合は、SSL 証明書とキーのペアを仮想サーバーにバインドします。

  5. 展開環境でSIPサーバーのGateway としてCitrix ADCを使用している場合は、RNATを構成します。

  6. SIP サーバから開始された SIP メッセージに RPORT を追加する場合は、SIP パラメータを設定します。

コマンドラインインターフェイスを使用して SIP トラフィックの基本的なロードバランシング設定を構成するには

1 つ以上のサービスを作成します。コマンドプロンプトで、次のように入力します。

add service <name> <serverName> (SIP_UDP | SIP_TCP | SIP_SSL) <port>

例:

add service Service-SIP-UDP-1 192.0.2.5 SIP_UDP 80

作成したサービスを処理するために必要な数の仮想サーバーを作成します。仮想サーバーの種類は、バインドするサービスの種類と一致する必要があります。コマンドプロンプトで、次のように入力します。

add lb vserver <name> <serverName> (SIP_UDP | SIP_TCP | SIP_SSL) <port>

例:

add lb vserver Vserver-LB-1 SIP_UDP 10.102.29.60 80

各サービスを仮想サーバにバインドします。コマンドプロンプトで、次のように入力します。

bind lb vserver <name> <serverName>

例:

bind lb vserver Vserver-LB-1 Service-SIP-UDP-1

(オプション)SIP-UDP または SIP-TCP タイプのカスタムモニタを作成し、モニタをサービスにバインドします。コマンドプロンプトで、次のように入力します。

add lb monitor <monitorName> <monitorType> [<interval>]

bind lb monitor <monitorName> <ServiceName>

例:

add lb monitor mon1 sip-UDP -sipMethod REGISTER -sipuRI sip:mon@test.com -sipregURI sip:mon@test.com -respcode 200

bind monitor mon1 Service-SIP-UDP-1

SIP_SSL 仮想サーバーを作成した場合は、SSL 証明書のキーペアを仮想サーバーにバインドします。コマンドプロンプトで、次のように入力します。コマンドプロンプトで、次のように入力します。

bind ssl vserver <vServerName> -certkeyName <certificate-KeyPairName> -CA –skipCAName

例:

bind ssl vserver Vserver-LB-1 -certkeyName CertKey-SSL-1

ネットワークトポロジの必要に応じて RNAT を設定します。コマンドプロンプトで、次のコマンドのいずれかを入力します。それぞれ、条件としてネットワークアドレスを使用し、NAT IP アドレスとして SNIP を使用する RNAT エントリ、条件としてネットワークアドレスを使用する RNAT エントリ、NAT IP アドレスとして一意の IP アドレスを使用する RNAT エントリ、ACL を条件と NAT IP アドレスとしての SNIP、または ACL を条件として使用し、一意の IP アドレスを NAT IP アドレスとして使用する RNAT エントリ

add rnat <name> (<network> | (<aclname> [-redirectPort <port>]))

bind rnat <name> <natIP>@ …

show rnat

例:

add rnat RNAT-1 192.168.1.0 255.255.255.0

bind rnat RNAT-1 -natip 10.102.29.50

カスタム証明書とキーのペアを使用する場合は、カスタム証明書とキーのペアを、 nsrnatsip-127.0.0.1-5061という名前のCitrix ADC内部サービスにバインドします。

add ssl certKey <certkeyName> -cert <string> [-key <string>]

bind ssl service <serviceName> -certkeyName <string>

例:

add ssl certKey c1 -cert cert.epm -key key.ky

bind ssl service nsrnatsip-127.0.0.1-5061 -certkeyName c1

SIP サーバが開始する SIP メッセージに RPORT を追加する場合は、コマンドプロンプトで次のコマンドを入力します。

set lb sipParameters -rnatSrcPort <rnatSrcPort> -rnatDstPort<rnatDstPort> -retryDur <integer> -addRportVip <addRportVip> - sip503RateThreshold <sip503_rate_threshold_value>

UDP を介した SIP トラフィックのロードバランシングの設定例

add service service-UDP-1 10.102.29.5 SIP_UDP 80

Done

add lb vserver vserver-LB-1 SIP_UDP 10.102.29.60 80

Done

bind lb vserver vserver-LB-1 service-UDP-1

Done

add lb mon mon1 sip-udp -sipMethod REGISTER -sipuRI sip:mon@test.com -sipregURI sip:mon@test.com -respcode 200

Done

bind mon mon1 service-UDP-1

Done

add rnat RNAT-1 192.168.1.0 255.255.255.0

Done

set lb sipParameters -rnatSrcPort 5060 -rnatDstPort 5060 -retryDur 1000 -addRportVip ENABLED -sip503RateThreshold 1000

Done

TCP を介した SIP トラフィックのロードバランシングの設定例

add service service-TCP-1 10.102.29.5 SIP_TCP 80

Done

add lb vserver vserver-LB-1 SIP_TCP 10.102.29.60 80

Done

bind lb vserver vserver-LB-1 service-TCP-1

Done

add lb mon mon1 sip-tcp -sipMethod REGISTER -sipuRI sip:mon@test.com -sipregURI sip:mon@test.com -respcode 200

Done

bind mon mon1 service-TCP-1

Done

add rnat RNAT-1 192.168.1.0 255.255.255.0

Done

set lb sipParameters -rnatSrcPort 5060 -rnatDstPort 5060 -retryDur 1000 -addRportVip ENABLED -sip503RateThreshold 1000

Done

TCP を介した SIP トラフィックのロードバランシングおよびセキュリティ保護の設定例

add service service-SIP-SSL-1 10.102.29.5 SIP_SSL 80

Done

add lb vserver vserver-LB-1 SIP_SSL 10.102.29.60 80

Done

bind lb vserver vserver-LB-1 service-SIP-SSL

Done

add lb mon mon1 sip-tCP -sipMethod REGISTER -sipuRI sip:mon@test.com -sipregURI sip:mon@test.com -respcode 200

Done

bind mon mon1 service-SIP-SSL

Done

bind ssl vserver Vserver-LB-1 -certkeyName CertKey-SSL-1

Done

add rnat RNAT-1 192.168.1.0 255.255.255.0

Done

set lb sipParameters -rnatSrcPort 5060 -rnatDstPort 5060 -retryDur 1000 -addRportVip ENABLED -sip503RateThreshold 1000

Done

構成ユーティリティを使用して SIP トラフィックの基本的なロードバランシング設定を構成するには

  1. [トラフィック管理] > [負荷分散] > [仮想サーバー] に移動し、タイプが SIP_UDP、SIP_TCP、または SIP_SSL の仮想サーバーを追加します。

  2. 「サービス」セクションをクリックし、「SIP_UDP」、「SIP_TCP」、または「SIP_SSL」タイプのサービスを追加します。

  3. (オプション)[Monitor] セクションをクリックし、タイプ(SIP-UDP または SIP-TCP)のモニタを追加します。

  4. モニターをサービスにバインドし、サービスを仮想サーバーにバインドします。

  5. SIP_SSL 仮想サーバーを作成した場合は、SSL 証明書のキーペアを仮想サーバーにバインドします。[証明書] セクションをクリックし、証明書キーペアを仮想サーバーにバインドします。

  6. ネットワークトポロジの必要に応じて RNAT を設定します。RNAT を設定するには、次の手順を実行します。

    1. [システム] > [ネットワーク] > [ルート] に移動します。
    2. [ルート] ページで、[RNAT] タブをクリックします。
    3. 詳細ウィンドウで、[RNAT の構成] をクリックします。
    4. [RNAT の構成] ダイアログボックスで、次のいずれかの操作を行います。
      • RNAT エントリを作成するための条件としてネットワークアドレスを使用する場合は、[Network] をクリックし、次のパラメータを設定します。
        • ネットワーク
        • ネットマスク
      • 拡張 ACL を RNAT エントリを作成するための条件として使用する場合は、[ACL] をクリックし、次のパラメータを設定します。
        • ACL 名
        • リダイレクトポート
    5. SNIP アドレスを NAT IP アドレスとして設定するには、手順 7 に進みます。
    6. 一意の IP アドレスを NAT IP として設定するには、[使用可能な NAT IP] の一覧で、NAT IP として設定する IP アドレスを選択し、[追加] をクリックします。選択した NAT IP が [構成済み NAT IP] リストに表示されます。
    7. [ 作成] をクリックし、[ 閉じる] をクリックします。

    カスタム証明書とキーのペアを使用する場合は、カスタム証明書とキーのペアを、 nsrnatsip-127.0.0.1-5061という名前のCitrix ADC内部サービスにバインドします。ペアをバインドするには、次の手順に従います。

    1. [トラフィック管理] > [負荷分散] > [サービス] に移動し、[内部サービス] タブをクリックします。
    2. nsrnatsip-127.0.0.1-5061を選択し、[編集]をクリックします。
    3. [証明書] セクションをクリックし、証明書キーペアを内部サービスにバインドします。
  7. SIP サーバが開始する SIP メッセージに RPORT を追加する場合は、SIP パラメータを設定します。[トラフィック管理] > [ロードバランシング] に移動し、[SIP 設定の変更] をクリックし、さまざまな SIP パラメータを設定します。

SIP 式およびポリシーの例:クライアント要求で圧縮が有効になっている

Citrix ADCは圧縮されたクライアントSIP要求を処理できないため、クライアントSIP要求は失敗します。

クライアントからの SIP NEGOTIATE メッセージを代行受信し、圧縮ヘッダーを検索する応答側ポリシーを設定できます。メッセージに圧縮ヘッダーが含まれている場合、ポリシーは「400 Bad Request」と応答し、クライアントは要求を圧縮せずに再送信します。

コマンドプロンプトで、次のコマンドを入力してレスポンダーポリシーを作成します。

add responder action sipaction1 respondwith q{"SIP/2.0 400 Bad Requestrnrn"}

Done

add responder policy sippol1

add responder policy sippol1 "SIP.REQ.METHOD.EQ("NEGOTIATE")&&SIP.REQ.HEADER("Compression").EXISTS" sipaction1