From takebayashi.shinya @ oss.ntt.co.jp Fri Oct 24 11:06:07 2008 From: takebayashi.shinya @ oss.ntt.co.jp (Shinya TAKEBAYASHI) Date: Fri, 24 Oct 2008 11:06:07 +0900 Subject: [Ultramonkey-l7-develop 200] Re: =?iso-2022-jp?b?YWNjZXB0IBskQjt+JEslaiUiJWslNSE8JVAkS0BcGyhC?= =?iso-2022-jp?b?GyRCQjMkOSRrJVElQyVBGyhC?= In-Reply-To: <20081020102505.9580.TANUMA.KOUHEI@nttcom.co.jp> References: <20081020102505.9580.TANUMA.KOUHEI@nttcom.co.jp> Message-ID: 田沼 さま 竹林です. お疲れ様です. 本件,パッチ作成ありがとうございます. 時間を見つけて試してみます. branch/sachiel にマージしてもらっても良いですか? ----------------------------------------------------------- Shinya TAKEBAYASHI E-mail: takebayashi.shinya @ oss.ntt.co.jp GPG ID: 395EFCE8 GPG FP: 58B2 B5D0 A692 1BD8 328B E31E E027 AC35 395E FCE8 ----------------------------------------------------------- Kouhei TANUMA wrote in message <20081020102505.9580.TANUMA.KOUHEI @ nttcom.co.jp > *** Subject: [Ultramonkey-l7-develop 199] accept 時にリアルサーバに接続するパッ チ *** Date: 2008/10/20 11:53:23 > 皆様 > > 田沼です。 > お疲れ様です。 > > 現在の UltraMonkey-L7 の仕様で、クライアントから 1 パケット届かないと > リアルサーバの決定処理に入らないため、SMTP 等、先にサーバが応答する > ことを前提としているものが、うまくいかないという問題があったと思います。 > sessionless などレイヤ 7 の情報を使わずにリアルサーバの決定を行う > モジュールでは、クライアント接続時にリアルサーバとの接続処理を行って > 問題ないので、そのようなパッチを作成しましたので、ご確認下さい。 > (stable/trunk のパッチ) > > > 変更点については、lsock とプロトコルモジュールの構造体に、 > クライアント接続時にリアルサーバ決定処理を行うフラグを追加。 > モジュールでは sessionless のみフラグを有効にし、他モジュールは無効。 > 今後、レイヤ 7 のパーシステンス処理を行わないモジュールを > 作成するときはこのフラグを有効にする。(Source-IPパーシステンス等) > > lsock 側は、1 つの lsock に複数の VirtualService がくくりつくので、 > lsock にくくりついてる VirtualService のモジュール全てでフラグが > 立っている場合に、lsock のフラグも立てるという処理になっています。 > > > 接続処理の流れとしては、クライアントからの接続を accept した際に、 > accept した lsock のフラグを確認し、フラグが立っている場合は、 > リアルサーバとの接続処理に移り、フラグが立っていない場合は、 > 今までどおり、クライアントからのパケットを待ってから、 > リアルサーバを決定します。 > > > ■ 設定例(sessionless のみ) > % sudo l7vsadm -l -n > Layer-7 Virtual Server version 2.0.0-1 > Prot LocalAddress:Port ProtoMod Scheduler > -> RemoteAddress:Port Forward Weight ActiveConn InactConn > TCP 192.168.0.1:25 sessionless rr > -> 192.168.1.1:25 Masq 1 0 1 > -> 192.168.1.2:25 Masq 1 0 1 > -> 192.168.1.3:25 Masq 1 0 1 > > ■ 確認(220 応答が接続しただけで得られる) > % telnet 192.168.0.1 25 > Trying 192.168.0.1... > Connected to 192.168.0.1. > Escape character is '^]'. > 220 192.168.1.1 ESMTP Representation Server; Mon, 20 Oct 2008 10:40:25 > +0900 (JST) > quit > 221 2.0.0 192.168.1.1 closing connection > Connection closed by foreign host. > > > ■ 設定例(同一 lsock に cinsert を追加) > % sudo l7vsadm -l -n > Layer-7 Virtual Server version 2.0.0-1 > Prot LocalAddress:Port ProtoMod Scheduler > -> RemoteAddress:Port Forward Weight ActiveConn InactConn > TCP 192.168.0.1:25 sessionless rr > -> 192.168.1.1:25 Masq 1 0 2 > -> 192.168.1.2:25 Masq 1 0 1 > -> 192.168.1.3:25 Masq 1 0 1 > TCP 192.168.0.1:25 cinsert rr > > ■ 確認(クライアントからのパケット待ちになる) > % telnet 192.168.0.1 25 > Trying 192.168.0.1... > Connected to 192.168.0.1. > Escape character is '^]'. > > > ■ 設定例(cinsert を削除) > % sudo l7vsadm -l -n > Layer-7 Virtual Server version 2.0.0-1 > Prot LocalAddress:Port ProtoMod Scheduler > -> RemoteAddress:Port Forward Weight ActiveConn InactConn > TCP 192.168.0.1:25 sessionless rr > -> 192.168.1.1:25 Masq 1 0 2 > -> 192.168.1.2:25 Masq 1 0 1 > -> 192.168.1.3:25 Masq 1 0 1 > > ■ 確認(220 応答が接続しただけで得られる) > % telnet 192.168.0.1 25 > Trying 192.168.0.1... > Connected to 192.168.0.1. > Escape character is '^]'. > 220 192.168.1.2 ESMTP Representation Server; Mon, 20 Oct 2008 10:41:55 > +0900 (JST) > quit > 221 2.0.0 192.168.1.2 closing connection > Connection closed by foreign host. > > > 動作上は問題なさそうですが、ご確認いただければと思います。 > また、フラグ名が fast_schedule というかなりいまいちな名前に > なっています。何かいい名前がありましたら、お知らせ下さい。 >