Citrix ADC

ユスケス2:tcpバ

プロトコルによっては,名前/値のペアをTCPバ。この例のTCPバereplicationトストリムのプロトコルは,財務情報交換(fix)プロトコルです。XML以外の実装では,修复プロトコルにより,ネットワークを介して通信する2つのホストが,名前と値のペア(“修复フィールド”と呼ばれる)のリストとしてビジネスまたは取引関連の情報を交換できます。フィルドの形式は<标记> = <价值> <分隔符>です。この従来のタグ値形式により,修改プロトコルはユスケスに最適です。

修复フィルドのタグは,フィルドの意味を示す数値識別子です。この例では,

  • タグ35はメッセプを示します。
  • 等号の後の値は,指定されたタグの特定の意味を保持し,デ,タ型に関連付けられています。タグ35の値がaの場合は,メッセジがログオンメッセジであることを示します。
  • 区切り文字は,印刷されない”ヘッダーの開始”(SOH) ASCII文字(0 x01)でキャレット記号(^)です。
  • 各フィルドには名前も割り当てられます。タグ35のフィMsgTypeフィ。

ログオンメッセジの例を次に示します。

8= fix.4.1 9=61 35= a 49= invmgr 56= brkr 34=1 52=20000426-12:05:06 98=0 108=30 10=157

上記のようなタグ値リストのパーシステンスタイプの選択は,リストから特定の文字列を抽出するためのオプションによって決まります。トークンベースの永続性メソッドでは,ペイロードから抽出するトークンのオフセットと長さを指定する必要があります。修复プロトコルでは,特定のフィールドのオフセットとその値の長さがメッセージによって異なる可能性があるため,これを行うことはできません。この変化は,メッセプ,前のフィ,および前の値の長さによって異なります。また,カスタムフィ,ルドが定義されているかどうかによって,実装によっても異なります。このようなバリエーションにより,特定のフィールドの正確なオフセットを予測したり,トークンとして抽出される値の長さを指定したりすることは不可能になります。この場合,ル。

仮想サーバーfixlb1が,修复対応アプリケーションのインスタンスをホストしているサーバーのファームへのTCP接続の負荷分散を行うと仮定します。メッセージを送信する会社を識別するSenderCompidフィールドの値に基づいて,接続の永続性を構成します。このfixフィルドのタグは49です(前述のログオンメッセジの例に示されています)。

ロードバランシング仮想サーバーのルールベースの永続性を構成するには,ロードバランシング仮想サーバーのパーシステンスタイプを规则に設定し,ルールパラメータに式を設定します。式は、SenderCompID フィールドが見つかると予想される TCP ペイロードの一部を抽出し、結果の文字列を区切り文字に基づいて名前/値リストに型キャストしてから、次のように SenderCompID フィールド(タグ 49)の値を抽出する式である必要があります。

set lb vserver fixlb1 -persistenceType RULE -rule "CLIENT.TCP.PAYLOAD(300).TYPECAST_NVLIST_T('=','^').VALUE("\49\")"

注:これはcliコマンドであるため,式ではバックスラッシュ文字が使用されています。構成ユティリティを使用している場合は,バックスラッシュ文字を入力しないでください。

クライアントが,前述のログオンメッセージの例の名前と値のリストを含む修复メッセージを送信する場合,式は値INVMGRを抽出し,Citrix ADCアプライアンスはこの値に基づいて永続性セッションを作成します。

有效载荷()関数の引数は,関数によって抽出された文字列にSenderCompIDフィールドを含めるために必要な大きさにすることができます。オプションで,フィールドの値を抽出するときにアプライアンスで大文字と小文字を区別する場合は,SET_TEXT_MODE (IGNORECASE)関数を使用し,抽出された値のハッシュに基づいて永続セッションを作成するために散列関数を使用できます。次の式ではSET_TEXT_MODE (IGNORECASE)関数と散列関数を使用します。

.TYPECAST_NVLIST_T CLIENT.TCP.PAYLOAD (500) ('=','^'). SET_TEXT_MODE (IGNORECASE) value .HASH(“49”)

次に,修复接続の永続性を構成するために使用できる規則の例を示します(<标记>は,値を抽出するフィルドのタグに置き換えます)。

  • TCPペイロードの最初の300バイトの修复フィールドの値を抽出するには,CLIENT.TCP.PAYLOAD (300) .BEFORE_STR .AFTER_STR(“^”)(“<标记>= ")式を使用できます。
  • オフセット80で20バイトの長さの文字列を抽出するには,文字列の名前値リストにキャストし,目的のフィールドの値を抽出するには,式CLIENT.TCP.PAYLOAD (100) .SUBSTR .TYPECAST_NVLIST_T (80, 20) (‘=’,’^’). 值(“<标记>)を使用します。
  • TCPペイロードの最初の100バイトを抽出するには,文字列を名前/値リストにキャストし,目的のフィールドの3番目の出現の値を抽出するには,式CLIENT.TCP.PAYLOAD .TYPECAST_NVLIST_T (100) (‘=’,’^’). 值(“<标记>,2)を使用します。注:值()関数に渡される2番目の引数がnの場合,アプライアンスはフィールドの(n + 1)<一口> th > < /晚餐ンスタンスの値を抽出します。これは,カウントがゼロ(0)。

次に,永続性の設定に使用できる規則の例を示します。修复プロトコルを介して送信されるデタを評価できるのは,ペ。その他の式は、より低いネットワーキングプロトコルに基づいてパーシステンスを設定するためのより一般的な式です。

  • CLIENT.TCP.PAYLOAD (100)
  • .HASH CLIENT.TCP.PAYLOAD (100)
  • CLIENT.TCP.PAYLOAD (100) .SUBSTR (5, 10)
  • CLIENT.TCP.SRCPORT
  • CLIENT.TCP.DSTPORT
  • CLIENT.IP.SRC
  • CLIENT.IP.DST
  • CLIENT.IP.SRC.GET4
  • CLIENT.IP.DST.GET4
  • CLIENT.ETHER.SRCMAC.GET6
  • CLIENT.ETHER.DSTMAC.GET5
  • CLIENT.VLAN.ID
ユスケス2:tcpバ

この記事の概要