[asterisk-users] About Zitter Control

Rifat Rahman
Sat, 09 Mar 2013 12:00:36 -0000

Hello there,

I have built a kernel module that is responsible for sip and rtp
encryption/decryption, padding/depadding, ptime decrease (splitting a
large rtp packet to splitting into smaller packets of ptime 20) for
incoming packets and ptime increase (merging small rtp packets into a
big rtp packet of desired ptime) for outgoing packets. This is meant
to be a faster process and indeed it is. The whole purpose is to
taking the load from the sip server and to manage this things in
kernel space.

Now my problem is that, when packets are splitted in kernel space, no
harm is done. But when packets are merged, i see somehow large zitter
and delta that makes the voice robotic. I am quite new to this line.
So from my experience I can say nothing on which side it is the
problem. I carefully observed RTP sequencing and timestamping, and
yes, it is handled perfectly. To have a work around, I suspect the
following things:

1. The zitter control might be the problem. But on which side I should
concentrate? Should I look the client's zitter buffer handling or
server side zitter buffer handling?

2. If asterisk is run from a RT (real time) kernel, should it make any
problem? Or, is it necessary to run asterisk from an RT kernel to
mitigate my issue?

3. If both RT kernel and zitter control mechanism is taken to the
asterisk server, can I hope to solve this problem?

I am in doubt whether the process gets somehow expensive while ptime
increase. Because I have to drop a few packets, making lists of
packets referring to a communication, and etc. etc. I am running out
of ideas. Because debugging in kernel space is not easy.
--
Rifat Rahman