Citrix ADC

Diameterの負荷分散を設定する

Diameter プロトコルは、主にラップトップや携帯電話などのモバイルデバイスで使用される次世代の認証、認可、アカウンティング(AAA)シグナリングプロトコルです。これは、他のほとんどのプロトコルで使用される従来のクライアント/サーバーモデルとは対照的に、ピアツーピアプロトコルです。ただし、ほとんどの Diameter 展開では、クライアントは要求を発信し、サーバーは要求に応答します。

Diameter メッセージが交換されると、Diameter サーバーは通常 Diameter クライアントよりも多くの処理を行います。コントロールプレーンシグナリングボリュームが増加すると、Diameter サーバがボトルネックになります。したがって、Diameter メッセージは複数のサーバーに負荷分散する必要があります。Diameter メッセージのロードバランシングを実行する仮想サーバには、次の利点があります。

  • Diameter サーバーの負荷が軽くなり、エンドユーザーへの応答時間が短縮されます。
  • サーバの健全性監視とフェイルオーバー機能の向上。
  • クライアント構成を変更することなく、サーバーの追加に関するスケーラビリティが向上します。
  • 高可用性。
  • SSL Diameterオフロード。

次の図は、Citrix ADC展開環境でのDiameterシステムを示しています。

Diameterシステム

Diameterシステムには、次のコンポーネントがあります。

  • Diameterクライアント。基本プロトコルに加えて Diameter クライアントアプリケーションをサポートします。Diameter クライアントは、多くの場合、ネットワークのエッジにあるデバイスに実装され、そのネットワークのアクセスコントロールサービスを提供します。Diameter クライアントの典型的な例は、ネットワークアクセスサーバ(NAS)とモバイル IP 外部エージェント(FA)です。
  • Diameterエージェント。リレー、プロキシ、リダイレクト、または翻訳サービスを提供します。Citrix ADCアプライアンス(Diameter負荷分散仮想サーバーで構成されている)は、Diameterエージェントの役割を果たします。
  • Diameterサーバー。特定のレルムの認証、認可、アカウンティング要求を処理します。Diameter サーバーは、基本プロトコルに加えて Diameter サーバーアプリケーションをサポートする必要があります。

典型的な Diameter トポロジでは、エンドユーザデバイス(携帯電話など)がサービスを必要とする場合、Diameter クライアントに要求を送信します。各 Diameter クライアントは、Diameter ベースプロトコル RFC 6733 で指定された Diameter サーバーとの単一の接続 (TCP 接続 — SCTP はまだサポートされていません) を確立します。接続は長期間有効であり、2 つの Diameter ノード (クライアントとサーバー) 間のすべてのメッセージがこの接続を介して交換されます。Citrix ADCは、メッセージベースの負荷分散を使用します。

例:

モバイルサービスプロバイダは、その課金システムのためのDiameterを使用しています。ユーザがプリペイド番号を使用する場合、Diameter クライアントは、使用可能な残高を確認するために、サーバに要求を繰り返し送信します。Diameter プロトコルは、クライアントとサーバー間の接続を確立し、すべての要求はその接続を介して交換されます。接続は 1 つしかないため、接続ベースのロードバランシングは無意味です。ただし、接続上に多数のメッセージがあると、メッセージベースのロードバランシングにより、プリペイドモバイルサブスクライバへの課金プロセスが迅速になります。

Diameter負荷分散の仕組み

Disconnect Peer Request(DPR; 切断ピア要求)は、接続を閉じる理由とともに、ピアが接続を閉じる意図を示します。ピアは DPA で応答します(TCP は常に正常な DPA を提供します)。

  • アプライアンスは、クライアントから DPR を受信すると、DPR をすべてのサーバーにブロードキャストし、ただちに DPA でクライアントに応答します。サーバはDPAで応答しますが、アプライアンスはDPAを無視します。クライアントは FIN を送信し、アプライアンスがすべてのサーバーにブロードキャストします。
  • アプライアンスは、サーバから DPR を受信すると、そのサーバだけに DPA を返信し、再使用プールからサーバを削除しません。サーバーがFINを送信すると、アプライアンスはFIN/ACKで応答し、再利用プールから接続を削除します。
  • アプライアンスがクライアントから FIN を受信すると、クライアントに FIN/ACK を送信し、FIN をブロードキャストして、再使用プールからサーバー接続をただちに削除します。
  • アプライアンスがサーバーから FIN を受信すると、FIN/ACK が送信され、再使用プールから削除されます。このサーバーに対する新しいメッセージは、新しい接続で送信されます。

Diameterトラフィックの負荷分散

クライアントがCitrix ADCアプライアンスに要求を送信すると、アプライアンスは要求を解析し、持続的AVPに基づいてDiameterサーバーにコンテキスト的に負荷分散します。アプライアンスはクライアントIDをサーバにアドバタイズしているため、サーバはクライアントからのメッセージを直接受信するため、ルートエントリを追加しません。

サーバが開始する要求は、クライアント要求ほど頻繁ではありません。サーバが開始する要求は、クライアントが開始する要求に似ていますが、次の点を除きます。

  • メッセージは複数のサーバーから受信されるため、アプライアンスは転送された各要求メッセージに一意のHop by Hop(HbyH)番号を追加して、トランザクションの状態を維持します。メッセージ応答が(同じ HbyH 番号で)到着すると、アプライアンスはこの HbyH 番号を、要求が到着したときにサーバで受信された HbyH 番号に変換します。
  • Citrix ADCアプライアンスは、クライアントはアプライアンスをリレーエージェントとして認識するため、アイデンティティを入力してルートエントリを追加します。

注:Diameter メッセージが複数のパケットにまたがる場合、アプライアンスはパケットを不完全なヘッダーキューに蓄積し、メッセージ全体が蓄積されるとサーバーに転送します。同様に、1 つのパケットに複数のDiameter メッセージが含まれている場合、アプライアンスはパケットを分割し、ロードバランシング仮想サーバによって決定されたとおりにメッセージをサーバに転送します。

セッションの切断

Disconnect Peer Request(DPR; 切断ピア要求)は、接続を閉じる理由とともに、ピアが接続を閉じる意図を示します。ピアは DPA で応答します(TCP は常に正常な DPA を提供します)。

  • Citrix ADCアプライアンスは、クライアントからDPRを受信すると、DPRをすべてのサーバーにブロードキャストし、ただちにDPAでクライアントに応答します。サーバはDPAで応答しますが、アプライアンスはDPAを無視します。クライアントは FIN を送信し、アプライアンスがすべてのサーバーにブロードキャストします。
  • アプライアンスは、サーバから DPR を受信すると、そのサーバだけに DPA を返信し、再使用プールからサーバを削除しません。サーバーがFINを送信すると、アプライアンスはFIN/ACKで応答し、再利用プールから接続を削除します。
  • アプライアンスがクライアントから FIN を受信すると、クライアントに FIN/ACK を送信し、FIN をブロードキャストして、再使用プールからサーバー接続をただちに削除します。
  • アプライアンスがサーバーから FIN を受信すると、FIN/ACK が送信され、再使用プールから削除されます。このサーバーに対する新しいメッセージは、新しい接続で送信されます。

Diameter トラフィックのロードバランシングの構成

Diameterトラフィックを負荷分散するようにCitrix ADCアプライアンスを構成するには、まずアプライアンスでDiameterパラメータを設定し、Diameterモニターを追加し、Diameterサービスを追加し、サービスをモニターにバインドし、Diameter負荷分散仮想サーバーを追加し、サービスを仮想サーバーにインストールします。

コマンドラインインターフェイスを使用して diameter トラフィックのロードバランシングを構成するには

Diameterパラメータを設定します。

set ns diameter -identity <string> -realm <string> -serverClosePropagation <YES|NO>

例:

set ns diameter -identity mydomain.org -realm org -serverClosePropagation YES

Diameterモニタを追加します。

add lb monitor <monitorName> DIAMETER -originHost <string> -originRealm <string>

例:

add lb monitor diameter_mon DIAMETER -originHost mydomain.org -originRealm org

Diameter サービスを作成します。

add service <name> <IP> DIAMETER <port>

例:

add service diameter_svc0 10.102.82.86 DIAMETER 3868

add service diameter_svc1 10.102.82.87 DIAMETER 3868

add service diameter_svc2 10.102.82.88 DIAMETER 3868

add service diameter_svc3 10.102.82.89 DIAMETER 3868

Diameter サービスを Diameter モニタにバインドします。

bind service <name>@ monitorName <monitorName>

例:

bind service diameter_svc0 -monitorName diameter_mon

bind service diameter_svc1 -monitorName diameter_mon

bind service diameter_svc2 -monitorName diameter_mon

bind service diameter_svc3 -monitorName diameter_mon

Diameter 永続性を持つ Diameter 負荷分散仮想サーバーを追加します。

add lb vserver <name> DIAMETER <IPAddress> <port> -persistenceType DIAMETER -persistAVPno <positive_integer>

例:

add lb vserver diameter_vs DIAMETER 10.102.112.152 3868 -persistenceType DIAMETER -persistAVPno 263

Diameter サービスを Diameter ロードバランシング仮想サーバにバインドします。

bind lb vserver <name> <serviceName>

例:

bind lb vserver diameter_vs diameter_svc0

bind lb vserver diameter_vs diameter_svc1

bind lb vserver diameter_vs diameter_svc2

bind lb vserver diameter_vs diameter_svc3

構成を保存します。

save ns config

: SSL_DIAMETERサービスタイプを使用して、SSL を介した Diameter トラフィックの負荷分散を構成することもできます。

構成ユーティリティを使用して Diameter トラフィックの負荷分散を構成するには

  1. [システム] > [設定] > [Diameterパラメータを変更] に移動し、Diameterパラメータを設定します。
  2. トラフィック管理 > 負荷分散 > 仮想サーバー に移動し、Diameter タイプの負荷分散仮想サーバーを作成します。
  3. Diameterタイプのサービスを作成します。
  4. Diameterタイプのモニタを作成します。「特殊パラメータ」で、オリジナル・ホストとオリジナル・レルムを設定します。
  5. モニタをサービスにバインドし、Diameter 仮想サーバにサービスをバインドします。
  6. [詳細設定] で、[持続性] をクリックし、[Diameter] を指定し、持続性 AVP 番号を入力します。
  7. [保存] をクリックし、[完了] をクリックします。

Diameterの負荷分散を設定する