メーカー概要

iRules活用ガイド

■機能解説資料:iRules活用ガイドブック 

iRules活用ガイド

 

 

BIG-IPの持つトラフィック処理機能の1つである、iRulesの機能をご理解いただくためのガイドブックです。「iRulesに興味はあるが、どのようなことができるのかわからない」といった方に、iRulesとはどのようなものなのか、何ができるのかを活用事例を交えて概要をご紹介しています。

※資料ダウンロードフォーム入力後、閲覧頂けます。

強力なトラフィック処理機能を利用した「iRule」の効果的な活用事例

F5 Networks BIG-IP Local Traffic Manager:「iRule」の効果的な活用事例

本ページでは、BIG-IPの強力なトラフィック処理機能である「iRule」について、具体的な例を用いてご紹介します。

■「iRule」とは、

BIG-IP」のトラフィック処理を司るTraffic Management OS(TMOS)の中に組み込まれ、「BIG-IP」に実装されたトラフィック処理機能を詳細に制御することが可能なTCL(=Tool Command Language)プログラミング言語です。

iRules活用ガイド

「iRule」を使用することで、メジャーなベンダーのアプリケーションサーバーやWebサービスのXMLデータ、あるいはモバイルアプリケーションによる通信に対し、よりきめ細やかで柔軟なトラフィック処理を実現し、アプリケーションの改変なしに多くの機能を実現できるようになります。

「iRule」では、単純なクライアントリクエストのHTTPヘッダによるロードバランス先の決定だけではなく、サーバーのレスポンス、コンテンツ内容、その他様々な条件に基づき、ダイナミックな設定変更、通信内容の書き換え、ロギング更には「BIG-IP」自身がレスポンスを返すといった高度な機能を備えています。

■特長

「iRule」には、以下のような特長があります。

  • 様々なイベントをキーにした動作 イベントベースで記述を行うことで、クライアントのリクエスト内容による判断だけでなく、サーバーのレスポンスや様々な条件に基づいた制御が可能です。
  • 多彩な処理が可能 ロードバランス先の判断だけではなく、条件に合わせたダイナミックな設定変更、内容の書き換え認証、帯域制御、圧縮、パーシステンス、ロギングなども可能です。
  • 解析対象、データ量に制限がない クライアントからのHTTPリクエストデータの解析だけではなく、サーバーからのレスポンスや、HTTP以外のTCP/UDPの通信内容も処理することが可能です。

■機能

「iRule」の処理は主に以下の3つの要素に分かれます。

処理を開始するトリガー

様々なデータを用いた条件の判断

トラフィックデータの処理

処理を開始するトリガー

トリガーとは、どのようなイベントが発生した際にiRuleの処理を開始するかという条件です。

主要なイベントとしては

  • クライアント、サーバーの接続、切断
  • TCP、UDPコネクションの確立、終了、データの受信
  • ロードバランス先の選択、失敗
  • HTTPリクエスト、レスポンスの受信
  • SSLハンドシェイクの開始、成功、失敗
  • クライアント認証の開始、成功、失敗

があり、HTTPリクエストのヘッダ情報を元に処理を行いたい場合は、HTTPリクエストを受け取った際に発生するイベント“HTTP_REQUEST”をトリガーとして処理を開始します。

トリガーにできるイベント

Global HTTP SSL AUTH

CLIENT

_ACCEPTED

HTTP

_REQUEST

_DATA

CLIENTSSL

_HANDSHAKE

AUTH

_FAILURE

CLIENT

_DATA

HTTP

_RESPONSE

HTTP

_REQUEST

CLIENTSSL

_CLIENTCERT

AUTH

_ERROR

SERVER

_ACCEPTED

HTTP

_RESPONSE_DATA

SERVERSSL

_HANDSHAKE

AUTH

_SUCCESS

SERVER

_CONNECTED

HTTP

_ERROR

  AUTH

_WANTCREDENTIAL

SERVER

_DATA

HTTP

_RESPONSE

_CONTINUE

   

様々なデータを用いた条件の判断

イベントが発生した際、様々なデータに基づいてどのような処理を行うかの判断を行います。

判断の対象として参照できる主な情報には

  • IPアドレス情報
  • TCP/UDPパケットのヘッダおよびデータ部
  • HTTPのヘッダおよびデータ部の検査
  • class(事前に定義されたリスト)
  • POOLやノードのステータス
  • 時刻

があり、これらの情報から必要な部分を抜き出して

  • ~を含む
  • ~で始まる
  • ~で終わる
  • ~と一致する
  • ~(リスト)の1つと一致する
  • ~(パターン)と一致する

のような条件判断を行います。例えば、クライアントのIPアドレスが特定のネットワークからのものか、HTTPヘッダーに特定のCookieがあるかなどの条件で判断します。

判断基準に使用できる値と判断方法

IP UDP TCP HTTP SSL AUTH X509

IP::

client

_addr

UDP::

client

_port

TCP::

client

_port

HTTP::

header

SSL::

cert

AUTH::

status

X509::

version

IP::

server

_addr

UDP::

server

_port

TCP::

server

_port

HTTP::

method

SSL::

cipher

AUTH::

wantcredential

_type

X509::

issuer

IP::

protocol

UDP::

payload

TCP::

payload

HTTP::

uri

SSL::

current_

sessionid

AUTH::

wantcredential

_prompt

X509::

serial_

number

IP::

tos

UDP::

payload

_length

TCP::

payload

_length

HTTP::

is_

keepalive

SSL::

mode

AUTH::

wantcredential

_prompt_style

X509::

subject

_public

_key

IP::

idle_

timeout

 

TCP::

rtt

HTTP::

payload

SSL::

verify_

result

AUTH::

ssl_cc_ldap

_username

X509::

subject

_public_

key_type

   

TCP::

mss

HTTP::

cookie

 

AUTH::

ssl_cc_ldap

_status

X509::

hash

比較演算子

contains ~ ~を含む
matches ~ ~(リスト)の1つと一致する
equals ~ ~と一致する
starts_with ~ ~で始まる
ends_with ~ ~で終わる

matches_regex ~

~(正規表現)と一致する

トラフィックデータの処理

条件の判断を行った結果、条件に一致した(一致しなかった)場合に行う処理には、

  • 振り分け先の指定
  • パケットの破棄
  • リダイレクト
  • ログ出力
  • ヘッダ、データの書き換え
  • 設定の変更
  • 暗号化/複合化
  • classの操作

があります。例えば、リクエストのコンテンツ種別毎に振り分け先POOLを指定する、クライアント証明書の項目をHTTPヘッダーに埋め込んでサーバーに渡す、不正なアクセスを検知した場合にログを出力するなどの処理を行うことができます。

判断処理方法

node 指定したノードを選択する
pool 指定したpoolに渡す
discard パケットを破棄
log syslogに記録する
matchclass classと比較し、一致する値に対応するノードを選択する
rateclass レートシェーピングの設定を変更する
HTTP::redirect リダイレクトする
HTTP::header insert HTTPヘッダを挿入する
HTTP::respond HTTPのレスポンスを返す