On Sat, Jun 21, 2003 at 08:01:14PM -0400, Ed Tomlinson wrote:
> On June 21, 2003 04:52 pm, Toad wrote:
> > On Sat, Jun 21, 2003 at 08:48:19AM -0700, Ian Clarke wrote:
> > > > > Ok, are you comfortable with the algorithm I proposed for dealing
> > > > > with connection failures and such-like?
> > > >
> > > > What algorithm?
> > >
> > > To the RTE estimate we add Pf * T where Pf is the probability of a
> > > connection failure for that node, and T is the average time it takes for
> > > a connection to fail.
> >
> > But then we are saying that success in time T is no better than failure
> > in time T. What we want is
> >
> > E = P(success) * E_time(success) 
> >     P(failure) * (E_time(failure) + E_time(full request)
> >
> >
> > Where E_time(full request) is an estimated time based on the overall
> > node performance.
> 
> I've got code doing P(success) * E_time(success) + P(failure) * (E_time(failure)...
> I do not understand what you want to use for E_time(full request)).  Toad?

Because if we do not then a node which always fails quickly will get
lots of traffic. This is NOT what we want.

If we succeed, it takes E_time(success). There is a probability
P(success). That gives

E = P(success) * E_time(sucess) + ...

If we fail, it takes E_time(failure). Probability P(failure). That gives

E = P(success) * E_time(success) + 
    (P(failure) * E_time(failure) ...

BUT, we will have to retry the request if it fails. So we want to add
on the estimated time it will take to retry the request. We will
calculate this based on a RoutingTimeEstimator we keep for our node, and
call it E_time(global).

So we get

E = P(success) * E_time(success) +
    (P(failure) * (E_time(failure) + E_time(global))

Does this make sense?
> 
> I Propose doing the following with HTLs.  For successfull messages I track
> the HTL(success) average.  For failed messages I normalize using like this:
> 
> routetime = routetime * HTL(success) / HTL 
> 
> Here is a sample of what results look like using the above formula with the
> ResponseTimeEstimator class (without HTL normalization).
> 
> Jun 21, 2003 7:31:31 PM (freenet.node.rt.CPAlgoRoutingTable, QThread-475, NORMAL): 
> NGROUTING Response time esti
> mator guess 125784 actual 489877 ngrouting estimation 103849
> Jun 21, 2003 7:32:16 PM (freenet.node.rt.CPAlgoRoutingTable, QThread-490, NORMAL): 
> NGROUTING Response time esti
> mator guess 86675 actual 497293 ngrouting estimation 46875
> Jun 21, 2003 7:32:17 PM (freenet.node.rt.CPAlgoRoutingTable, QThread-485, NORMAL): 
> NGROUTING Response time esti
> mator guess 103654 actual 1152801 ngrouting estimation 45038
> Jun 21, 2003 7:32:49 PM (freenet.node.rt.CPAlgoRoutingTable, QThread-485, NORMAL): 
> NGROUTING Response time esti
> mator guess 270527 actual 216386 ngrouting estimation 172495
> Jun 21, 2003 7:34:34 PM (freenet.node.rt.CPAlgoRoutingTable, QThread-491, NORMAL): 
> NGROUTING Response time esti
> mator guess 154612 actual 149939 ngrouting estimation 117982
> Jun 21, 2003 7:36:14 PM (freenet.node.rt.CPAlgoRoutingTable, QThread-495, NORMAL): 
> NGROUTING Response time esti
> mator guess 212095 actual 261925 ngrouting estimation 138131
> Jun 21, 2003 7:36:44 PM (freenet.node.rt.CPAlgoRoutingTable, QThread-476, NORMAL): 
> NGROUTING Response time esti
> mator guess 199622 actual 165668 ngrouting estimation 133352
> Jun 21, 2003 7:38:48 PM (freenet.node.rt.CPAlgoRoutingTable, QThread-499, NORMAL): 
> NGROUTING Response time esti
> mator guess 258220 actual 133455 ngrouting estimation 159685
> Jun 21, 2003 7:38:57 PM (freenet.node.rt.CPAlgoRoutingTable, QThread-504, NORMAL): 
> NGROUTING Response time esti
> mator guess 78613 actual 130054 ngrouting estimation 80703
> Jun 21, 2003 7:39:50 PM (freenet.node.rt.CPAlgoRoutingTable, QThread-476, NORMAL): 
> NGROUTING Response time esti
> mator guess 44116 actual 223246 ngrouting estimation 35985
> Jun 21, 2003 7:41:12 PM (freenet.node.rt.CPAlgoRoutingTable, QThread-476, NORMAL): 
> NGROUTING Response time esti
> mator guess 0 actual 51869 ngrouting estimation 233
> Jun 21, 2003 7:42:14 PM (freenet.node.rt.CPAlgoRoutingTable, QThread-508, NORMAL): 
> NGROUTING Response time esti
> mator guess 592076 actual 139590 ngrouting estimation 150854
> Jun 21, 2003 7:43:46 PM (freenet.node.rt.CPAlgoRoutingTable, QThread-476, NORMAL): 
> NGROUTING Response time esti
> mator guess 100715 actual 249235 ngrouting estimation 46090
> Jun 21, 2003 7:48:47 PM (freenet.node.rt.CPAlgoRoutingTable, QThread-494, NORMAL): 
> NGROUTING Response time esti
> mator guess 8126 actual 59429 ngrouting estimation 2863
> Jun 21, 2003 7:49:53 PM (freenet.node.rt.CPAlgoRoutingTable, QThread-512, NORMAL): 
> NGROUTING Response time esti
> mator guess 190462 actual 81532 ngrouting estimation 65868
> 
> Now I have to figure out how to integrate this so routing actually uses these 
> numbers.
> 
> Toad/Ian guess experimental would be a good place for all this?
> 
> Ed
> 
> 
> _______________________________________________
> devl mailing list
> [EMAIL PROTECTED]
> http://hawk.freenetproject.org:8080/cgi-bin/mailman/listinfo/devl

-- 
Matthew J Toseland - [EMAIL PROTECTED]
Freenet Project Official Codemonkey - http://freenetproject.org/
ICTHUS - Nothing is impossible. Our Boss says so.

Attachment: pgp00000.pgp
Description: PGP signature

Reply via email to