LOL! If it weren't for the nun and the wooden spoons, it sure might have taken a different flavour! But I prefer the nuns with wooden spoons flavour!

Andrew explained it straight down to the point! So Jim... any thoughts on my last email with regards to the FXO's & Timing Devices?

Cheers!

----- Original Message ----- From: "Jim Van Meggelen" <[EMAIL PROTECTED]>
To: "'Andrew Kohlsmith'" <[EMAIL PROTECTED]>; <[email protected]>
Sent: Thursday, March 23, 2006 10:17 PM
Subject: RE: [on-asterisk] Timing Device Hardware (zaptel interfaces) and Software (ztdummy)


Frau Ztdummy.

"zis ist mein klok! [ka-WHAP], unt you vill be schlaif to it! [wha-BANG}"

Nuns with wooden spoons . . . Nice. Make her in her mid-20s,
though--Asterisk is still young.

Only Andrew could take something as boring as telecom, and make it downright
kinky!



-----Original Message-----
From: Andrew Kohlsmith [mailto:[EMAIL PROTECTED]
Sent: March 23, 2006 11:25 AM
To: [email protected]
Subject: Re: [on-asterisk] Timing Device Hardware (zaptel
interfaces) and Software (ztdummy)

On Thursday 23 March 2006 02:29, Reza - Asterisk Enthusiast wrote:
> My question is quite simple:  What is the real purpose of a
"timing device"
> for Asterisk, and in this * case, what really is a "timer".
  Is it just a
> traditional "timing" device keeping track of time etc...
or something
> more?

As Jim mentioned, the telephone network requires a
"metronome" to ensure that all points are in sync with each
other.  That's the purpose of this timing device.  It's a
periodic tap on the shoulder saying "you need to do something
now," except when it comes to telephony it's not just your
wife tapping you on the shoulder every five minutes hoping
that this time you'll put the computer down and do what needs
to be done; it's an 80-year old German nun with a Swiss time
institute-calibrated stopwatch and a big bruise-inducing
wooden spoon tapping you on the shoulder at PRECISE and
CAREFULLY MEASURED intervals.  When she taps, you must accept
an audio frame from her (well 8, see below) and you must also
give her an 8 audio frames.  If you don't, she is going to
beat you with that spoon.

That's kind of what it's like with telephony.  When the clock
says it's time to move, you must move.  You must exchange a
full frame of information (I'm simplifying here, but I can
get obscenely technical if you like) or you will have a
condition known as a frame slip -- either you will drop
information from them, or they will get partial information
from you.  Either way it's
bad.   Your conversations start to get little buzzes and
chirps in them, or
you can get a fragment of someone else's conversation in your
own, etc.  You don't want to do that, you want to work in
lock-step with whoever you're connected to.  The timing
devices provide the mechanism or drumbeat to make sure you
work this way.

> We all take it for granted that it provides some sort of timing
> feature/mechanism that is needed for Asterisk to function
properly, if
> we wish to have the MeetMe function or the Music On Hold
function...
> to supposedly improve the sound quality of the music when
MoH is activated.

It's the nun I mentioned above.  It's the mechanism that
Asterisk uses to ensure that the voice traffic is handled in
lock-step with the rest of the system.

> The exact same answers I have continued to receive is, "You
need the
> timing device for the MoH & MeetMe function...  if you want
* to work
> well...  you need it...  you have no choice...  ztdummy isn't good
> enough so it's best that you have a zaptel hardware to
provide accurate timing capability".
> -- and of course my question comes back to "what is this
timing capability"
> and then there is no answer.

Telephony works on a 125us period.  That's 8000 "exchanges of
information" a second.  Zaptel processes 8 of these at a time
to try and get the interrupt rate down to a more reasonable
level, which is why you get 1000 interrupts a second with Zaptel.

Computers are powers-of-two systems.  As such, almost
everything revolves around some 2^n number.  RTC and USB
clock sources are no exception.  You can get a 1024Hz
interrupt out of the RTC or USB, but you can't get 1000Hz.
If it sounds like it's "close enough" it isn't.  You are
pressing to exchange information (in this case 8 audio
frames) faster than that data is actually available.  Over
the course of a second, you want to process 24*8 more frames
than anyone else you're connected to.  They either return a
"bugger off"
return code to you or they fake the information.  Either way
it sounds bad.

The newer ztdummy code does try to smooth this out by
dropping interrupts to try and maintain an overall 1000Hz
interrupt rate, but it's still not perfect.  There is some
mention of a software phase-locked-loop implementation for
ztdummy that should help quite a bit, but I haven't seen any
code for it yet.  Ultimately you want 1000 interrupts a
second and if you don't have EXACTLY 1000 interrupts per
second, you will eventually slip frames and your voice
quality will go down.  The more often you slip, the worse it
will sound.

Remember that MeetMe (for example) is mixing an arbitrary
number of audio sources.  Everyone has to agree on how much
data per interval they are going to send.  If everyone sends
20ms of data at a time everything is great and it sounds
good.  However if you have some SIP phones sending enough
data for 20ms and Asterisk is taking that and mixing it
together just slightly faster than 20ms (in the case of
ztdummy), or if you have some phones sending 20ms of data at
a time and another Asterisk system sending 20ms of data every
18ms (duplicating or fudging data to make it fit) and the box
running MeetMe is mixing everything every 977us instead of
every 1000us...  well you can see
how this becomes a nasty little problem.   It's like trying
to put a puzzle
together after your kids have taken every puzzle in the house
and mixed it into one box.  (not that this has ever happened
with my kids, nooooo.)  It'll almost work, but it just won't
be as pretty as it could be if you just had pieces of all the
same size, and from only one puzzle.

> So...  here are my questions again in brief:
>   1.. What really is a Timing Device in Asterisk?
>   2.. Why do we need this for the MoH & MeetMe function?

Answered above.

>   3.. Is ztdummy good enough in a 100% VOIP setting (100%
of traffic
> is through your NIC)? 4.. Does ztdummy have any limitations when
> compared to timing devices in ZAPTEL interfaces? 5.. Does ztdummy
> utilize a lot of CPU process?

Ztdummy isn't required for 100% VOIP systems unless MeetMe or
MOH is used, for the reasons outlined above.  Until (very)
recently, Asterisk relied on the far-end to send packets at
exact intervals, because Asterisk used the packets themselves
as the timing source.  For anything on the LAN this is okay,
but as soon as you introduce lag or jitter or dropped
packets, things fall apart fast.  The SIP and IAX2 jitter
buffers are "self-timed" meaning they use an internal timer
to schedule when audio must be squirted out, which is the
proper way to do this.

If there is no audio to send when it's time (i.e. when that
nun taps you on the shoulder and you don't have something to
give her) what do you do?  You can't give her nothing so you
either fake it and give her an approximation of what you
think the finished product should be (this is called Packet
Loss Concealment, very cool), or you give her a copy of the
last bit of information and hope she doesn't notice, or you
might give her an empty shell, but you give her something.
Thankfully the nun doesn't care what you give her, but she
will take that to someone else and give it to them, and if it
doesn't have what was expected, they'll start doing things
like asking "Pardon?  I didn't make out that last word.  What
did you say?" and eventually "Your phone system sucks.  I'm
going to call Jim and ask him for a Norstar system, because
VOIP just sucks."

>   6.. Technically the ztdummy under Linux 2.4 utilizes the UHCI-USB
> which is the hardware minus the FXO/FXS - so why would
ztdummy not be
> good enough?

This is incorrect.  UHCI is the host-side.  Certain USB host
controllers have a timer on them which ztdummy can use.  It's
like the RTC driver though -- powers of two are in vogue, not
powers of ten.  So 1024Hz is what you get, not 1000Hz.

> 7.. In Linux 2.6, according to "
> http://www.voip-info.org/wiki/view/Asterisk+timer ",
ztdummy uses high
> resolution kernel timer.  Is this "high res. kernel timer", 100%
> software driven, or takes advantage of the internal
hardware clock on
> the motherboard or takes advantage of the UHCI/OHCI USB
controller? I
> guess people who work with or write device drivers will truly
> appreciate my questions.  Would love to hear thoughts & inputs on
> these theoritical questions, my soul is seeking for, up
until it finds
> other things to ponder about :)

Basically the kernel has the resources to provide a good
1000Hz software interrupt.  I believe that the original
decision to tie MeetMe/MOH to zaptel was to try and lock
people into Digium hardware.  Software timers are good enough
for most applications.  Anytime you are tying to the PSTN
through digital means (PRI, T1/E1), you want to use their
clock source, though.

The SIP and IAX2 PLC jitter buffers both use software timers
for the 20ms interrupt, and they work reasonably well.  My
personal opinion is that unless your system's hideously
overtaxed you will have no trouble with a pure software
timer, provided that the kernel can deliver exactly 1000
interrupts per second (which it can).  If you're connecting
to Real Telco Hardware, you want to let them lead, so to speak.

Hopefully this addresses your questions.

-A.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED] For
additional commands, e-mail: [EMAIL PROTECTED]



--
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.385 / Virus Database: 268.3.0/290 - Release
Date: 23/03/2006



--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.385 / Virus Database: 268.3.0/290 - Release Date: 23/03/2006



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to