フローのタイムアウトに関するタイマーとして、CSS は2つのタイマーを使用しています。1つは、flow-timeout-multiplier 等で変更可能な flow idle timer で、もう1つはトラフィック量やプロトコルに応じて動的に変化する inactivity timer です。
inactivity timer は、フローが新規作成された直後に開始され、このタイマーが切れるまではフローがタイムアウトしないようにするために使われます。inactivity timer が停止した後は、flow idle timer のみを使用して、タイムアウト処理が行われます。
これらのタイマーの値は、以下のコマンドで確認できます。
# show flow-timeout default
TCP/IP Port Application Inactivity Timeout In Seconds * Default 16 2049 NFS 2 2049 NFS 2 5190-5193 AOL Chat 180 80 HTTP 8 21 FTP Control 600 20 FTP Data 600 23 Telnet 600
# show flow-timeout configured
User Configured Values for Content Rule Flow Timeout Port Content Rule Timeout
User Configured Values for Source Group Flow Timeout Port Source Group Timeout
(debug)# flow-agent show stats inactivity
Inactivity State Blocks: ****************************************************************************** Inactivity State: Nominal Percent In Use - low/high: 0/40 FCB Thresholds low/high: 0/52428 TCP ListTimeout: 120, UDP ListTimeout: 15, Long Lived FCB List LoopCount: 1000 ******************************************************************************
試験環境のようにトラフィックが非常に少ない状況においては、inactivity timer の値は120秒となります。この場合、新規作成されたフローは、最初の120秒間はタイムアウトしません。このため、flow idle timer において HTTP のタイムアウト値が8秒であっても、120秒経過するまでタイムアウトしない、という事象が発生します。120秒経過した後は、flow idle timer の設定値に従ってタイムアウト処理が行われます。
inactivity timer の値が120秒の場合、flow-timeout-multiplier コマンドで設定する値を、8以上にしないと、新規フローに関しては、期待通りの時間でタイムアウトしません。flow-timeout-multiplier で設定されるタイムアウト時間は、設定値を16倍した値が使用されるため、設定値が8であれば、8x16=128となり、120秒よりも大きくなるためです。
|