From makoto @ kanon-net.jp Fri Jun 29 01:19:39 2007 From: makoto @ kanon-net.jp (Shinya TAKEBAYASHI) Date: Fri, 29 Jun 2007 01:19:39 +0900 Subject: [Ultramonkey-l7-develop 30] =?iso-2022-jp?b?bDd2c19zZXJ2aWNlIBskQjk9QiRCTiROSlE5OSRLJEQbKEI=?= =?iso-2022-jp?b?GyRCJCQkRhsoQg==?= Message-ID: 竹林です. お疲れさまです. 先日,WRR(Weighted RoundRobin)のα版をメールで投げましたが, 色々と考えたところ 「複数の仮想サービスで同じスケジューラを使う場合, 振り分け状況をどう保存するか」 という問題に当たりました. 従って,l7vs_service 構造体に「どの仮想サービスか」を認識するための ハンドルを持たせる必要があると思っており,既存コードに追加しても 良いか伺います. ○ 問題 現在のつくりでは sched_* や protomod_* の中の関数が呼ばれる時には どの仮想サービスが叩かれたかがモジュール側では認識できない状態と なっており,特に wrr のように残コストなどを管理する必要のある モジュールでは,その情報を管理する術がありません. 従って,複数の仮想サービスで同一のモジュールを使用した場合, モジュールの組み方によってはリクエストの振り分け等に不整合が 発生する可能性が生じます. ○ 対処案 仮想サービスの情報を持つ l7vs_service 構造体に仮想サービスを 識別するためのハンドル(ユニークな ID)を持たせ,モジュール側で この値を判定することで,「どの仮想サービスのものか」を識別できる ようになります. これにより,モジュール内部で管理テーブルを作成することが可能となり 上記「問題」で記述した不具合発生の可能性を減らすことが出来ます. ****************************************************************** $ diff -urNP l7vs-0.6.0-0/l7vs.h l7vs-0.6.0-1/l7vs.h --- l7vs-0.6.0-0/l7vs.h 2007-04-20 15:19:13.000000000 +0900 +++ l7vs-0.6.0-1/l7vs.h 2007-06-24 17:04:28.000000000 +0900 @@ -112,6 +112,7 @@ /* virtual service definition datatype */ struct l7vs_service { + uint32_t handle; struct l7vs_lsock *lsock; GList *dest_list; GList *conn_list; ****************************************************************** ○ 対処による既存への影響 特になし. 構造体へのメンバの追加となるため,既存のビルドへの影響はありません. 以上,よろしくご検討願います. ------------------------------------------------------------- Shinya TAKEBAYASHI E-mail(Office) : takebayashi.shinya @ nttcom.co.jp E-mail(private): makoto @ kanon-net.jp GPG ID: FFD20D1F GPG FP: 7B5B E0FC B785 7457 683C 47D6 5564 DDDD FFD2 0D1F ------------------------------------------------------------- From kurosawa @ valinux.co.jp Fri Jun 29 08:09:19 2007 From: kurosawa @ valinux.co.jp (KUROSAWA Takahiro) Date: Fri, 29 Jun 2007 08:09:19 +0900 Subject: [Ultramonkey-l7-develop 31] Re: =?iso-2022-jp?b?bDd2c19zZXJ2aWNlIBskQjk9QiRCTiROSlE5OSRLGyhC?= =?iso-2022-jp?b?GyRCJEQkJCRGGyhC?= In-Reply-To: References: Message-ID: <20070628230919.A39F92DC652@mail.valinux.co.jp> 竹林さん 黒澤です.お疲れさまです. l7vs_service 構造体の sched_data は,この用途に使うことはできませんか? スケジューラに状態を持たせるために存在するメンバとして考えていたので, まさにこの用途に使えると思います. ただ,いろいろ考えると,サービスが生成・削除されたときにスケジューラに 通知してあげる仕組みも必要になりそうですね.おそらくサービスが生成された ときに,スケジューラ側で何らかの初期化処理をしたいはずですので…… On Fri, 29 Jun 2007 01:19:39 +0900 Shinya TAKEBAYASHI wrote: > 竹林です. > お疲れさまです. > > > 先日,WRR(Weighted RoundRobin)のα版をメールで投げましたが, > 色々と考えたところ > > 「複数の仮想サービスで同じスケジューラを使う場合, > 振り分け状況をどう保存するか」 > > という問題に当たりました. > 従って,l7vs_service 構造体に「どの仮想サービスか」を認識するための > ハンドルを持たせる必要があると思っており,既存コードに追加しても > 良いか伺います. > > > ○ 問題 > > 現在のつくりでは sched_* や protomod_* の中の関数が呼ばれる時には > どの仮想サービスが叩かれたかがモジュール側では認識できない状態と > なっており,特に wrr のように残コストなどを管理する必要のある > モジュールでは,その情報を管理する術がありません. > 従って,複数の仮想サービスで同一のモジュールを使用した場合, > モジュールの組み方によってはリクエストの振り分け等に不整合が > 発生する可能性が生じます. > > > ○ 対処案 > > 仮想サービスの情報を持つ l7vs_service 構造体に仮想サービスを > 識別するためのハンドル(ユニークな ID)を持たせ,モジュール側で > この値を判定することで,「どの仮想サービスのものか」を識別できる > ようになります. > これにより,モジュール内部で管理テーブルを作成することが可能となり > 上記「問題」で記述した不具合発生の可能性を減らすことが出来ます. > > ****************************************************************** > $ diff -urNP l7vs-0.6.0-0/l7vs.h l7vs-0.6.0-1/l7vs.h > --- l7vs-0.6.0-0/l7vs.h 2007-04-20 15:19:13.000000000 +0900 > +++ l7vs-0.6.0-1/l7vs.h 2007-06-24 17:04:28.000000000 +0900 > @@ -112,6 +112,7 @@ > > /* virtual service definition datatype */ > struct l7vs_service { > + uint32_t handle; > struct l7vs_lsock *lsock; > GList *dest_list; > GList *conn_list; > ****************************************************************** > > > ○ 対処による既存への影響 > > 特になし. > 構造体へのメンバの追加となるため,既存のビルドへの影響はありません. > > > > 以上,よろしくご検討願います. > > ------------------------------------------------------------- > Shinya TAKEBAYASHI > > E-mail(Office) : takebayashi.shinya @ nttcom.co.jp > E-mail(private): makoto @ kanon-net.jp > GPG ID: FFD20D1F > GPG FP: 7B5B E0FC B785 7457 683C 47D6 5564 DDDD FFD2 0D1F > ------------------------------------------------------------- > > _______________________________________________ > Ultramonkey-l7-develop mailing list > Ultramonkey-l7-develop @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/ultramonkey-l7-develop >