[ntp:questions] NTPD concurrent clients limit
Unruh
unruh-spam at physics.ubc.ca
Wed Jul 30 23:46:39 UTC 2008
"Richard B. Gilbert" <rgilbert88 at comcast.net> writes:
>Unruh wrote:
>> "Richard B. Gilbert" <rgilbert88 at comcast.net> writes:
>>
>>> j. wrote:
>>>> Hi all,
>>>> I'm testing an embedded linux device, which implement an NTP server,
>>>> based on the ntpd demon.
>>>> It looks like ntpd accepts only a limited number of requests from a
>>>> test clientIi've set up.
>>>> Do you know if there's such limit or what's the logic behind it?
>>>> Maybe ntpd rejects bursts of requests coming from the same IP?
>>>>
>>>> Thanks in advance,
>>>> Gianandrea Gobbo.
>>
>>> If you poll the server continuously at intervals of less than 64
>>> seconds, most modern NTP servers will send you a "Kiss of Death" packet.
>>> Polling this frequently is considered abusive! It's also unnecessary,
>>> NTP is designed to work with poll intervals between 64 seconds and 1024
>>> seconds and will adjust its poll interval within that range as needed.
>>
>> His question can be rephrased, what does ntpd do after it has sent the Kiss of Death?
>> does it drop all subsequent packets? -- That sounds like a huge cost on the
>> ntp server-- ie imagine a popular server with 10,000 machines it has sent
>> the KoD to. It then has to scan that whole list for each packet to see if
>> it is in there-- something which takes time and destroys the ability of ntp
>> to deliver its time base rapidly.
>>
>> Note that how ntpd handles this situation depends on which version of ntpd
>> you are running.
>>
>>
>>
>>> There are two exceptions to the above. You may specify the "iburst"
>>> keyword for a server and NTPD will send an INITIAL burst of eight
>>> request packets at intervals of two seconds. This is designed for fast
>>> startup. After the initial burst, polling continues at intervals
>>> between 64 and 1024 seconds.
>>
>> So how does the server know whether this burst is an iburst or is a rogue
>> client to which it should send a KoD?
>Ntpd keeps a list of its clients. It should be able to tell if a
>particular client is initializing or is abusing the server.
And how would it tell? And how DOES it tell ( since there is a lot that
could have been programed in and wasn't). And why would it keep a list of
its clients. That could mean it would have to keep a lost of 1000000
clients, and how does it prune the list? And how does it check that the
latest request is from an abuser, from a newcomer, or from a good guy?
More information about the questions
mailing list