Re: ENRP Server Hunt Timer

Qiaobing Xie <[email protected]>
Newsgroups gmane.ietf.rserpool
Message-ID <[email protected]>
Hi,

A general comments to this timer discussion.

There are a lot of useful stuff and interesting details if we look at rserpool from an 
implementation's perspective, such as many things being talked about in this thread. But not 
necessarily all of them should be documented in the spec. IMO, only those details which, if 
ignored, would 1) cause interoperability problems, 2) impact the network in a negative way, 
or 3) undo a designed feature should be documented.

Moreover, the spec should always be written conservatively since it is a known fact that the 
implementations are always the ones that push the envelop of aggressiveness.

With the above in mind, I would NOT recommend to put text suggesting the use of a ceiling 
for the timer and continuous try at the ceiling. These are aggressive behaviors and very 
likely many implementors will try to do without the spec asking them to. There are 
aggressive since they may negatively impact the network if the ceiling is set too low or the 
endpoint just refuses to give up trying forever.

If we really feel that the ceiling and continuous try are essential to rserpool operation 
and must be supported (I haven't been convinced that they are), then we should have text in 
the spec to explain it (including how they are essential to rserpool). And it must say some 
thing like - if the ceiling is used, it MUST NOT be too small. Or if continuous try is used, 
it MUST come with a mechanism that the endpoint will give up at some point. IETF won't want 
some endpoints injecting infinite packets into the network.

regards,
-Qiaobing

Thomas Dreibholz wrote:

> On Tuesday 02 November 2004 14:16, c s chandrashekaran-A14667 wrote:
> 
>>I agree with the upper limit and with the idea of continuing to try (I
>>think at the upper limited value of the timer). However it may be simpler
>>to keep retrying forever. The application or user, can decide after certain
>>number of failures to use ASAP (like register; name resoution etc) whether
>>or not to shutdown. We would not need an additional configuration parameter
>>in that case.
> 
> 
> This would imply an asynchronous API, e.g. the user calls 
> StartNameResolution(), which initiates the name resolution in background and 
> returns immediately. Finally, the user application is notified - by signal (a 
> bad idea!) or callback - and then calls a function GetNameResolutionResult() 
> - or the user aborts the name resolution when he decides to have waited long 
> enough. Example:
> 
> void callback()
> {
>    Notify main program that name resolution has been successful
> }
> 
> ok = StartNameResolution();
> if(!ok) {
>    cerr << "ERROR: Unable to initiate name resolution" << endl;
>    exit(1);
> }
> Start a timer -> nameResolutionCallback
> ...
> while(...) {
>    if(Name Resolution Event) {
>       Name resolution successful!
>    }
>    if(Timer Event) {
>       Name resolution failed!
>    }
>    ...
> }
> 
> Probably, the program also has to care for thread safety in the callback 
> function!
> 
> 
> An asynchronous API is quite complicated. Giving a maximum number of trials 
> directly to a NameResolution() function is much easier to use and much nearer 
> to the existing DNS name resolution API. Example:
> 
> result = NameResolution("MyPoolHandle", 10 Trials)
> if(result == NULL) {
>    cerr << "ERROR: Name resolution failed!" << endl;
>    exit(1);
> }
> 
> 
> Best regards
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.