プロトコル拡張 - アーキテクチャ
トラフィックレベルの拡張性を実現するために、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
<!--NeedCopy-->
このコンテンツの正式なバージョンは英語で提供されています。Cloud Software Groupドキュメントのコンテンツの一部は、お客様の利便性のみを目的として機械翻訳されています。Cloud Software Groupは機械翻訳されたコンテンツを管理していないため、誤り、不正確な情報、不適切な用語が含まれる場合があります。英語の原文から他言語への翻訳について、精度、信頼性、適合性、正確性、またはお使いのCloud Software Group製品またはサービスと機械翻訳されたコンテンツとの整合性に関する保証、該当するライセンス契約書またはサービス利用規約、あるいはCloud Software Groupとのその他すべての契約に基づき提供される保証、および製品またはサービスのドキュメントとの一致に関する保証は、明示的か黙示的かを問わず、かかるドキュメントの機械翻訳された範囲には適用されないものとします。機械翻訳されたコンテンツの使用に起因する損害または問題について、Cloud Software Groupは責任を負わないものとします。
DIESER DIENST KANN ÜBERSETZUNGEN ENTHALTEN, DIE VON GOOGLE BEREITGESTELLT WERDEN. GOOGLE LEHNT JEDE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG IN BEZUG AUF DIE ÜBERSETZUNGEN AB, EINSCHLIESSLICH JEGLICHER GEWÄHRLEISTUNG DER GENAUIGKEIT, ZUVERLÄSSIGKEIT UND JEGLICHER STILLSCHWEIGENDEN GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND DER NICHTVERLETZUNG VON RECHTEN DRITTER.
CE SERVICE PEUT CONTENIR DES TRADUCTIONS FOURNIES PAR GOOGLE. GOOGLE EXCLUT TOUTE GARANTIE RELATIVE AUX TRADUCTIONS, EXPRESSE OU IMPLICITE, Y COMPRIS TOUTE GARANTIE D'EXACTITUDE, DE FIABILITÉ ET TOUTE GARANTIE IMPLICITE DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER ET D'ABSENCE DE CONTREFAÇON.
ESTE SERVICIO PUEDE CONTENER TRADUCCIONES CON TECNOLOGÍA DE GOOGLE. GOOGLE RENUNCIA A TODAS LAS GARANTÍAS RELACIONADAS CON LAS TRADUCCIONES, TANTO IMPLÍCITAS COMO EXPLÍCITAS, INCLUIDAS LAS GARANTÍAS DE EXACTITUD, FIABILIDAD Y OTRAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD, IDONEIDAD PARA UN FIN EN PARTICULAR Y AUSENCIA DE INFRACCIÓN DE DERECHOS.
本服务可能包含由 Google 提供技术支持的翻译。Google 对这些翻译内容不做任何明示或暗示的保证,包括对准确性、可靠性的任何保证以及对适销性、特定用途的适用性和非侵权性的任何暗示保证。
このサービスには、Google が提供する翻訳が含まれている可能性があります。Google は翻訳について、明示的か黙示的かを問わず、精度と信頼性に関するあらゆる保証、および商品性、特定目的への適合性、第三者の権利を侵害しないことに関するあらゆる黙示的保証を含め、一切保証しません。
ESTE SERVIÇO PODE CONTER TRADUÇÕES FORNECIDAS PELO GOOGLE. O GOOGLE SE EXIME DE TODAS AS GARANTIAS RELACIONADAS COM AS TRADUÇÕES, EXPRESSAS OU IMPLÍCITAS, INCLUINDO QUALQUER GARANTIA DE PRECISÃO, CONFIABILIDADE E QUALQUER GARANTIA IMPLÍCITA DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM PROPÓSITO ESPECÍFICO E NÃO INFRAÇÃO.