[Asterisk-Dev] I need help to make a simple iax switch/proxy
Andrew Kohlsmith
akohlsmith-asterisk at benshaw.com
Sun Sep 11 21:58:08 MST 2005
On Monday 12 September 2005 00:34, Derek Smithies wrote:
> C)The time to do a thread switch arguement is nonsense.
> Recent kernels report thread switching times well under a microsecond.
> Sure, it was a problem with 2.0 kernels. Things have moved on.
I wasn't saying it was taking hundreds of miliseconds to switch a thread. I
was saying "If the CPU's punked out what's adding MORE overhead going to
help?" You did, however explain it in D) below:
> D)A review of the asterisk IAX2 code shows that the receive thread does a
> lot of work.
> The iax2 channel consists of two threads, which handles all of the
> current iax2 calls. One thread is for reading, one is for writing.
> Thus, one thread will read in all iax2 frames, process them, and pass
> them on to the queues (as used by the * core).
> The other thread will pick the packets of the queues, process, and
> transmit. This is O.K, until you realise that if the core locks the
> queues, the read&write threads are totally locked, and no sending can
> happen. By using more threads to do the read/write process, would not
> stop the entire read/write process by a mutex on the queues.
> E)Jitter buffers.
> There does not seem to be a uniform approach to jitter buffers in
> asterisk. IAX2, SIP and H.323 all appear to have quite different
> approacches to this problem - why not one jitter buffer for all ?
> In IAx2, it relies uppon the computer (with software timers) to correctly
> deliver the packets. Software timers are not, in my view, reliable enough
> for this task - particularly when the box is loaded....
If the box is loaded then you will have all kinds of other problems in
addition to the timers shifting. I don't think any kind of hard timer source
is going to help. Asterisk is *very* dependent on the host CPU being able to
do things in a near-realtime fashion.
I worked with Steve Kann on the IAX2 jitter buffer implementation. (Ok, he
did all of the work and I provided half-assed bug reports, let me have my 15
mintues, ok? :-)) -- the JB is quite abstracted from the channel driver, and
it was my understanding that it was done this way *specifically* to
facilitate its being used in any channel technology which could benefit from
it.
-A.
More information about the asterisk-dev
mailing list