From nakai.norihisa @ yes.nttcom.ne.jp Fri Aug 10 16:07:41 2007 From: nakai.norihisa @ yes.nttcom.ne.jp (nakai norihisa) Date: Fri, 10 Aug 2007 16:07:41 +0900 Subject: [Ultramonkey-l7-develop 45] =?iso-2022-jp?b?bDd2c2QbJEIkThsoQlFvUxskQjUhRz08QkF1JEskRCQkGyhC?= =?iso-2022-jp?b?GyRCJEYbKEI=?= Message-ID: <46BC0EBD.3030808@yes.nttcom.ne.jp> TO:UltraMonkey-L7開発者の皆様 お世話になっております。 NTTコムウェアの中居です。 前回前々回と既存のUltraMonkey-L7の速度的な改良部分を説明させていただきま したが、新たに実装する機能としてQoSがありますので、QoSの説明をさせていた だきます。 必要と思われるQoSの要求条件は以下のものとなっています。 1) サービス単位でのひとつのclientの短時間あたりの通過量の設定 2) ひとつのserviceの単位時間あたりの通過量の設定 全体へのQoSの設定はserviceに設定されるQoSの合計値で決まります。 ここでのバランシング(*1)は今回考慮に入れません。 考え方は単純です。 まず、1)に関してはstruct l7vs_connに二つ、変数を導入します。 struct timeval recvtime; [1] size_t recvsize; [2] [1]は、recvしたときの時間、 [2]は、recvしたときのバイト数です。 これを実際にclientからrecv()するときに (1)現在の時刻をとる (2)保存されているrecvtimeとの差分を求める (3)これによりrecvsizeから(2)と(1)より単位時間あたりの通過量が求まる。 例) 前回のrecv()したときとの時間差が0.001secだった場合で前回1024byteを recvした場合にはこのときの1024000byte/secの通信量となる。 (4)指定されている制限値以上の場合には、recv()せずに次回のepoll_wait()で 反応するようにeventを設定し、終了する。 (5)制限値以下の場合にはrecv()を行い、[1]に(1)で求めたtimevalを、[2]に revv()したバイト数を入れる。 この実装が可能になったのは、複数回でのepoll_wait()での読み込みを可能とし たところが大きいです。 これでclient別の単純なQoSは解決できるとして2)のservice別のQoSに関しては l7vs_serviceに別途値を追加する必要があります。 同じようにrecvtimeとrecvsizeを追加し、clientのときと同じように、サーバー 別でもほとんど同じ処理を入れてやります。 この場合、client別の場合にはepoll_wait()一度あたり同じクライアントからは 一度しか現在時刻を取得しませんが、server別の場合には反応するclientの数だ け変数が参照及び書き換えられる結果になります。 ただし、timevalを取得する回数はepoll_wait()あたり、反応のあったconnの数 のみです。 QoSの機能としては必要最低限だと思われますが、コード量もあまり多くないた め、上記の実装といたしました。 以上簡単ながらQoSの実装を説明させていただきました。 どうぞよろしくお願いいたします。 (*1)全体でのバランシング設定 UltraMonkey全体の上限値を100Mbps、service1を50Mbps、service2を50Mbpsのよ うな設定を行い、service1の通信量が60Mbpsになった場合でもservice2が10Mbps だった場合に全体通信料が70Mbpsのため、service1のQoSは行わないような処理。 From takebayashi.shinya @ nttcom.co.jp Fri Aug 10 19:48:33 2007 From: takebayashi.shinya @ nttcom.co.jp (Shinya TAKEBAYASHI) Date: Fri, 10 Aug 2007 19:48:33 +0900 Subject: [Ultramonkey-l7-develop 46] =?iso-2022-jp?b?bDdkaXJlY3RvcmQtMC41LjAtMiAbJEIlaiVqITwlORsoQg==?= Message-ID: <20070810194833.66bcbb34.takebayashi.shinya@nttcom.co.jp> UltraMonkey-L7 ご利用の皆様へ 竹林です. お世話になっております. 本日,l7directord-0.5.0-2 をリリースしました. リアルサーバの監視を行う処理で,ソケットへの接続に失敗した場合に アラームタイムアウトをリセットしてから処理を終えるように 修正しました. l7directord-0.5.0-2 は,下記からダウンロードできます. https://sourceforge.jp/projects/ultramonkey-l7/files/?release_id=26644#26644 アップデートを宜しくお願い致します. ----------------------------------------------------------- Shinya TAKEBAYASHI E-mail(Office) : takebayashi.shinya @ nttcom.co.jp E-mail(Private): makoto @ kanon-net.jp GPG ID: 70298B55 GPG FP: 98C3 25CF 8201 4881 9328 5C91 CBFA DCFC 7029 8B55 -----------------------------------------------------------