L5 ルールに該当する通信においてクライアント側コネクションとバックエンドサーバー側コネクションでの TCP window scale オプション使用有無やシフトカウントのミスマッチにより、クライアントやバックエンドサーバが極端に小さい TCP window size を受け取り、最適なパフォーマンスが得られない場合があります。
Software Version 8.20.3.03, 8.10.5.03にて L5 ルール使用時の TCP window scale オプションへの対応が導入されました。 以降のバージョンでは、CSS は TCP window scale オプションのネゴシエーションに応答します。 クライアントへの SYN/ACK パケットへセットされるシフトカウントは "flow tcp-window-scale <0 - 14>" にて設定されている任意の値です(default = 0)。
使用されるバックエンドサーバが決定すると CSS はクライアントから通知されたシフトカウントをバックエンドサーバに対する SYN パケットにセットし、バックエンドサーバ側のコネクションを作成します。
L5 ルールでは CSS がコネクションを終端するため、クライアント側のコネクションとバックエンドサーバ側のコネクションにおいて TCP window scale オプションの使用有無やシフトカウントのミスマッチが発生する場合があります。
# 想定される状況の例 1 - クライアント、バックエンドサーバ双方が TCP widnow scale オプションに対応している場合 バックエンドサーバが使用するシフトカウントが "flow tcp-window-scale <0 - 14>" で設定されている値より大きい場合(例えば CSS の設定値は 0 でバックエンドサーバ の設定が "7")には、バックエンドサーバはクライアントが TCP window size に対して 7 ビットシフトする事を期待して値をセットしますが、クライアントが CSS から通知されているシフトカウントは 0 であるためクライアントは 7 ビットシフトを行いません。 その結果、クライアントはバックエンドサーバが意図したよりも小さい TCP window size として認識し最適なパフォーマンスが得られない場合があります。
# 想定される状況の例 2 - クライアントが TCP window scale オプションに対応しているが、バックエンドサーバが対応していない場合 クライアント側のコネクションでは TCP window scale オプションが有効化されますがバックエンドサーバ側では無効化されます。 クライアントは通知したシフトカウントに応じてビットシフトされる事を期待し TCP window size をセットしますが、バックエンドサーバ側コネクションでは TCP window scale オプションが無効化されており、バックエンドサーバは受け取った TCP window size に対してビットシフトを行いません。 その結果、バックエンドサーバはクライアントが意図したよりも小さい TCP window size として認識し最適なパフォーマンスが得られない場合があります。
|