Silence suppression in Asterisk 1.8 

- Codename Roibos
oej@edvina.net * Twitter @oej
Copyright 2014, Edvina AB, Sollentuna Sweden.All rights reserved.
Want to save at least

40% of the bandwidth used for
media in your Asterisk server?
This work is funded by Bressner Technology GMBH
(bressner.de) that makes a series of Lync integration
products. 



They also distribute Industrial PCs that are excellent as
Asterisk platforms.



Thank you, Bressner, for contributing to Asterisk.
Thank you
If you use Asterisk,

make sure you contribute back

whenever possible.
Thank you Josh and Matt
for the support!
An RTP session
Alice Bob
Typical RTP streams consists of UDP/RTP packets sent

every 20 millisecond. With Asterisk today, we need a constant

stream of packets.
But… In a normal
conversation one person
listens while the other one
speaks.
With silence suppression
Alice Bob
CN
CN
When the sender detects silence, it sends a CN - Comfort
Noise - request frame. After that no RTP traffic will be seen until
the audio comes back.



This saves a lot of bandwidth in a 

normal conversation. Up to 40% bandwidth

savings in a normal call.
When we get no RTP from the other side,

Asterisk needs to produce some noise.
CN is agreed on in SDP Offfer/answer and

is only used if both parties support it.
After a few frames of silence, alerts RTP to send

a CN frame and starts dropping frames.
Listens to outbound audio stream and

detects silence. An Asterisk audiohook and DSP.
The various parts
Silence

detection
Silence

suppression
Comfort Noise

support in SDP and RTP
Noise generator
silencedetection.c
silencedetection.c
chan_sip.c, res_rtp_asterisk.c
channel.c
Configuration
Add the ”cn” codec to allowed codecs in sip.conf
Add ”silencesuppression=yes” 

in the [general] section or device section of sip.conf
Note: If you enable the CN codec but not silence suppression, 

we will accept CN but never send a CN frame. 

This saves some CPU for silence detection, 

but still uses CPU for noice generation.
1.
2.
Download roibos
svn checkout http://svn.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8"
cd roibos-cng-support-1.8

more README.roibos"
./configure"
make"
make install"
!
Test it and report bugs to the
bug tracker, as indicated in the
README file.
Issue: ASTERISK-23624
What next?
?
If this code get good feedback,

it’s going to get ported to 12 and trunk,

to be integrated into the standard

version of Asterisk."
!
We do need your help testing it to get there.
Due to release policies it can
not be part of Asterisk

1.8 or 11.
F.A.Q.
Why 1.8?
Simply because that’s what we use in the project

this was developed for. Funding for porting it to

other releases is welcome.
Why
chan_sip?
chan_pjsip doesn’t exist in 1.8 (see above). Most of the

work is in the core of Asterisk and will be updated to

other releases after testing and when funding exists.
Why not
IAX2? chan_iax2 does not use RTP media framing.
Other RTP-channels
Most of this work is generic in
Asterisk. Other channels may benefit too,
as long as they are using RTP.
Like chan_pjsip in 12 and the
XMPP Jingle drivers. 

Time to start coding?
Do you need a new

Asterisk feature?
If you need a new Asterisk feature or want to 

get general Asterisk or Kamailio

support or training from Edvina, 

please contact us - info@edvina.net

Roibus will soon be part of our 

version of Asterisk 1.8 - EDVx -

with improved RTCP support, Lync integration

PRACK support, Improved SRTP negotiation, 

RTP packet loss concealment and much more.
http://edvina.net * Twitter @edvina

roibos-asterisk-bandwidth-saving

  • 1.
    Silence suppression inAsterisk 1.8 
 - Codename Roibos oej@edvina.net * Twitter @oej Copyright 2014, Edvina AB, Sollentuna Sweden.All rights reserved. Want to save at least
 40% of the bandwidth used for media in your Asterisk server?
  • 2.
    This work isfunded by Bressner Technology GMBH (bressner.de) that makes a series of Lync integration products. 
 
 They also distribute Industrial PCs that are excellent as Asterisk platforms.
 
 Thank you, Bressner, for contributing to Asterisk. Thank you If you use Asterisk,
 make sure you contribute back
 whenever possible. Thank you Josh and Matt for the support!
  • 3.
    An RTP session AliceBob Typical RTP streams consists of UDP/RTP packets sent
 every 20 millisecond. With Asterisk today, we need a constant
 stream of packets. But… In a normal conversation one person listens while the other one speaks.
  • 4.
    With silence suppression AliceBob CN CN When the sender detects silence, it sends a CN - Comfort Noise - request frame. After that no RTP traffic will be seen until the audio comes back.
 
 This saves a lot of bandwidth in a 
 normal conversation. Up to 40% bandwidth
 savings in a normal call.
  • 5.
    When we getno RTP from the other side,
 Asterisk needs to produce some noise. CN is agreed on in SDP Offfer/answer and
 is only used if both parties support it. After a few frames of silence, alerts RTP to send
 a CN frame and starts dropping frames. Listens to outbound audio stream and
 detects silence. An Asterisk audiohook and DSP. The various parts Silence
 detection Silence
 suppression Comfort Noise
 support in SDP and RTP Noise generator silencedetection.c silencedetection.c chan_sip.c, res_rtp_asterisk.c channel.c
  • 6.
    Configuration Add the ”cn”codec to allowed codecs in sip.conf Add ”silencesuppression=yes” 
 in the [general] section or device section of sip.conf Note: If you enable the CN codec but not silence suppression, 
 we will accept CN but never send a CN frame. 
 This saves some CPU for silence detection, 
 but still uses CPU for noice generation. 1. 2.
  • 7.
    Download roibos svn checkouthttp://svn.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8" cd roibos-cng-support-1.8
 more README.roibos" ./configure" make" make install" ! Test it and report bugs to the bug tracker, as indicated in the README file. Issue: ASTERISK-23624
  • 8.
    What next? ? If thiscode get good feedback,
 it’s going to get ported to 12 and trunk,
 to be integrated into the standard
 version of Asterisk." ! We do need your help testing it to get there. Due to release policies it can not be part of Asterisk
 1.8 or 11.
  • 9.
    F.A.Q. Why 1.8? Simply becausethat’s what we use in the project
 this was developed for. Funding for porting it to
 other releases is welcome. Why chan_sip? chan_pjsip doesn’t exist in 1.8 (see above). Most of the
 work is in the core of Asterisk and will be updated to
 other releases after testing and when funding exists. Why not IAX2? chan_iax2 does not use RTP media framing.
  • 10.
    Other RTP-channels Most ofthis work is generic in Asterisk. Other channels may benefit too, as long as they are using RTP. Like chan_pjsip in 12 and the XMPP Jingle drivers. 
 Time to start coding?
  • 11.
    Do you needa new
 Asterisk feature? If you need a new Asterisk feature or want to 
 get general Asterisk or Kamailio
 support or training from Edvina, 
 please contact us - info@edvina.net
 Roibus will soon be part of our 
 version of Asterisk 1.8 - EDVx -
 with improved RTCP support, Lync integration
 PRACK support, Improved SRTP negotiation, 
 RTP packet loss concealment and much more. http://edvina.net * Twitter @edvina