プロトコル拡張 - アーキテクチャ

トラフィックレベルの拡張性を実現するために、NetScalerアプライアンスでのトラフィック処理は、個別の処理モジュールのパイプラインとして公開されます。トラフィックは、入力から出力へと処理されるときにそれらを通過します。パイプラインのこれらのモジュールは、何も共有しないモデルを採用しています。メッセージパッシングは、パイプライン内の 1 つのモジュールから次のモジュールにトラフィックデータを送信するために使用されます。

トラフィック処理パイプラインの特定のポイントは拡張可能になっているため、コードを追加してNetScalerの動作をカスタマイズできます。

ローカライズされた画像

デフォルトでは、トラフィックはコードを追加しないプログラマブルモジュールをバイパスします。

ローカライズされた画像

行動

トラフィック処理をカスタマイズするためのプログラム可能なインターフェースは、ビヘイビアと呼ばれます。動作は基本的に、NetScalerアプライアンスで使用できる一般的なプログラム可能なパターンを形式化したものです。動作は、事前に定義された一連のイベントコールバック関数で構成されています。動作に対応するコールバック関数を提供することで、動作を実装できます。

たとえば、TCP クライアントの動作は、TCP クライアントデータストリームイベントを処理するコールバック関数 (on_data) で構成されています。TCP ベースのプロトコルのメッセージベース負荷分散 (MBLB) を実装するには、このコールバック関数のコードを追加して、クライアントからの TCP データストリームを処理し、バイトストリームを解析してプロトコルメッセージにします。

コンテキスト:

ビヘイビアのコールバック関数は、処理モジュールの状態であるコンテキストとともに呼び出されます。コンテキストは、処理モジュールのインスタンスです。たとえば、TCP クライアント動作コールバックは、クライアント TCP 接続ごとに異なるコンテキストで呼び出されます。

ペイロード:

コンテキストに加えて、ビヘイビアコールバックは他の引数を持つことができます。通常、残りの引数はペイロードとして渡されます。ペイロードはすべての引数のコレクションです。

したがって、プログラマブルプロセッシングモジュールのインスタンスは、インスタンス状態とイベントコールバック関数の組み合わせ、つまりコンテキストと動作の組み合わせと見なすことができます。トラフィックはイベントペイロードとしてパイプラインを通過します。

NetScaler API拡張機能については、 Citrix ADC拡張APIリファレンスを参照してください

次のコードスニペットは、TCP クライアントデータストリームイベントを処理するユーザー定義関数を示しています。コンテキストとペイロードはNetScalerコードによって関数に渡されます。このコードは、すべての呼び出しで受信した TCP データを、パイプライン内の次の処理モジュールコンテキストに転送するだけです。この場合、次のモジュールは負荷分散(LB)コンテキストであり、これはCitrix ADCネイティブモジュールです。

function client.on_data(ctxt, payload)
    ns.send(ctxt.output, "DATA", {data = payload.data})
end
<!--NeedCopy-->
プロトコル拡張 - アーキテクチャ

この記事の概要