ADC

Diameterの負荷分散を構成する

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

Diameter メッセージが交換されるとき、通常、Diameter サーバーは Diameter クライアントよりもはるかに多くの処理を行います。コントロールプレーンの信号量が増えると、Diameter サーバがボトルネックになります。そのため、Diameter メッセージは複数のサーバに負荷分散する必要があります。Diameter メッセージの負荷分散を実行する仮想サーバーには、次のような利点があります。

  • Diameter サーバーの負荷が軽いため、エンドユーザーへの応答時間が短縮されます。
  • サーバーのヘルスモニタリングとフェイルオーバー機能の向上。
  • クライアント構成を変更せずにサーバーを追加できるため、スケーラビリティが向上します。
  • 高可用性。
  • SSLDiameter のオフロード。

次の図は、NetScaler環境におけるDiameter ameterシステムを示しています。

diameter-system

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

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

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

例:

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

直径負荷分散の仕組み

Diameter terクライアントはNetScalerアプライアンスへの接続を開き、Diameter ameter機能交換リクエスト(CER)メッセージを送信します。NetScalerは直径サーバーを選択し、サーバーへの接続を開いて、CERメッセージをサーバーに転送します。サーバーはクライアント ID を読み取り、クライアントに直接接続されていると判断します。

Diameter terサーバーはDiameter ameterハンドシェイクリプライを準備し、NetScalerアプライアンスに送信します。アプライアンスはハンドシェイクを変更し、独自のIDを挿入します。この時点で、DiameterクライアントはNetScaler(エージェント)に直接接続されていると判断します。

注:

Diameter ハンドシェイクが完了するまで、クライアントからのすべての Diameter 要求メッセージは、選択したサーバーのキューに格納されます。ハンドシェイクが完了すると、パケットはサーバーに転送されます。

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

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

サーバーから開始されるリクエストは、クライアントのリクエストほど頻繁ではありません。サーバーから開始される要求は、次の点を除いてクライアントが開始する要求と似ています。

  • メッセージは複数のサーバーから受信されるため、アプライアンスは転送された各リクエストメッセージに固有のホップバイホップ(HByH)番号を追加することでトランザクション状態を維持します。メッセージ応答が(同じ HByH 番号で)到着すると、アプライアンスはこの HByH 番号を、要求が到着したときにサーバーで受信した HByH 番号に変換します。
  • NetScalerアプライアンスは、クライアントはアプライアンスをリレーエージェントと見なすため、IDを入力してルートエントリを追加します。

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

セッションを切断する

Disconnect Peer Request (DPR) は、ピアが接続を閉じる意図と、接続を閉じる理由を示します。ピアはDPAで応答します(TCPは常にDPAが成功します)。

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

直径トラフィックの負荷分散の設定

NetScalerアプライアンスが直径トラフィックの負荷分散を行うように構成するには、まずアプライアンスのDiameterパラメーターを設定し、次にDiameter Monitorを追加し、Diameterサービスを追加し、サービスをモニターにバインドし、Diameter Load Balancing仮想サーバーを追加して、サービスを仮想サーバーにバインドする必要があります。

コマンドラインインターフェイスを使用して直径トラフィックの負荷分散を設定するには

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

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

例:

set ns diameter -identity mydomain.org -realm org -serverClosePropagation YES
<!--NeedCopy-->

Diameter モニターを追加します。

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

例:

add lb monitor diameter_mon DIAMETER -originHost mydomain.org -originRealm org
<!--NeedCopy-->

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

add service <name> <IP> DIAMETER <port>
<!--NeedCopy-->

例:

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
<!--NeedCopy-->

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

bind service <name>@ monitorName <monitorName>
<!--NeedCopy-->

例:

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
<!--NeedCopy-->

Diameter パーシステンスを備えた Diameter 負荷分散仮想サーバーを追加します。

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

例:

add lb vserver diameter_vs DIAMETER 10.102.112.152 3868 -persistenceType DIAMETER -persistAVPno 263
<!--NeedCopy-->

Diameter サービスを Diameter 負荷分散仮想サーバーにバインドします。

bind lb vserver <name> <serviceName>
<!--NeedCopy-->

例:

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
<!--NeedCopy-->

構成を保存します。

save ns config
<!--NeedCopy-->

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

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

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