I have not read the fix.  I was just wondering that this fix save the
wait time, but increase the networking traffics, and increase the
workload of KDC servers.  I think the KDC timeout should be corner cases
for TCP, and it is tolerable for UDP connections.  I'm not confident
that this is a cost-effective update if we considering the overall
system of Kerberos.

Xuelei

On 6/24/2014 4:17 PM, Wang Weijun wrote:
> Hi All
> 
> Please review the code change at
> 
>    http://cr.openjdk.java.net/~weijun/8014870/webrev.00/
> 
> In Kerberos, when trying to request for a ticket, we tried multiple KDC 
> servers for multiple times. Before this fix, we connect to a server, wait for 
> 30 seconds (the default kdc_timeout). If there is no answer, go to the next 
> KDC, wait for another 30 seconds, and so on. If none of the KDCs replies. We 
> do more rounds (max_retries, default 3) of connections, and fail at last. 
> Altogether with 3 KDCs we will wait at most 3*30*3=270 seconds.
> 
> After this fix, connections are non-blocking and made every second, so they 
> can wait at the same time. The kdc_timeout default is also reduced to 10 
> seconds (the same as other vendors). At the worst case, we will wait 
> 3*3+10=19 seconds.
> 
> You might say that changing kdc_timeout to 10 seconds matters a lot here but 
> actually the wait-together style is much more helpful. Suppose only the 3rd 
> KDC is alive, the old code needs to wait for 60 seconds to be able to connect 
> to it, while the new one only needs to wait for 2 seconds, and this has 
> nothing to do with kdc_timeout.
> 
> Because of this, I've thrown away the old krb5.kdc.bad.policy security 
> property. It's now not worth remembering which KDC is alive and which is not.
> 
> All changes are inside the KdcComm.java file. Others are test and removal of 
> useless things.
> 
> I've included net-dev@ because these are all NIO calls, which I was no 
> familiar with.
> 
> Thanks
> Max
> 

Reply via email to