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

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

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

ローカライズされた画像

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

ローカライズされた画像

ビヘイビア

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

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

コンテキスト:

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

ペイロード:

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

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

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

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

function client.on_data(ctxt, payload)
    ns.send(ctxt.output, "DATA", {data = payload.data})
end

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