[ntp:questions] Getting NTP to correct only the clock skew

Richard B. gilbert rgilbert88 at comcast.net
Thu Apr 5 20:17:04 UTC 2007


Spoon wrote:
> Hans Jørgen Jakobsen wrote:
> 
>> Spoon wrote:
>>
>>> Consider two systems, A and B.
>>>
>>> A sends ~1000 UDP packets per second to B.
>>>
>>> A timestamps each packet.
>>>
>>> These packets travel over an IP network, and suffer delay and jitter.
>>>
>>> B is supposed to re-send the packets it receives at the rate they
>>> were originally sent by A.
>>>
>>> B buffers N packets. Then it sends the first packet in the queue, 
>>> computes the departure time of the next packet using the timestamps 
>>> provided by A, and sleeps until that departure time.
>>>
>>> If the clocks on A and B do not tick at the same rate, the buffer 
>>> used by B will either overflow or underflow.
>>
>>
>> If the problem is to not have overflow or underflow then why not steer on
>> how full the buffer are.
> 
> 
> This is easier said than done. When there is a lot of jitter on the link 
> between A and B, it is actually quite hard to even tell whether the 
> buffer is shrinking or expanding. The problem becomes a digital signal 
> processing exercise. I didn't find an appropriate filter.
> 
> The people in comp.dsp told me to take a look at NTP.
> 
>> The master(A) send packets out at its rate.
>> B answers trying to have N in the buffer.
> 
> 
> This was my original implementation. It did not work well.
> 
>> Could you change the protocol and allow to flag that a packet is going
>> to be dropped or send a dummy answer?
> 
> 
> Could you expand on this suggestion?
> What is the purpose of the flag?
> 
>> Sending packet at a smooth rate of 1000 Hz requires a fairly accurate
>> scheduling.
> 
> 
> I'm running a soft real-time OS with high-resolution timers.
> A frequency of 1 kHz is easy to achieve.
> 
>> (In telecom they have the same problem. Their solution involves systems
>> of frequency synchronized clocks)
> 
> 
> What is a frequency synchronized clock?
> 
> Regards.

This seems to me to resemble a very simple flow control problem solved 
many years go by the simple expedient of having B tell A to stop sending 
or to resume sending depending on the fullness of B's buffer pool; e.g. 
the Xon/Xoff protocol used in things like Xmodem and Kermit.





More information about the questions mailing list