VoIP Mailing List Archives
Mailing list archives for the VoIP community |
|
View previous topic :: View next topic |
Author |
Message |
ohjelmistoarkkitehti a... Guest
|
Posted: Mon Aug 11, 2014 3:45 am Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin |
|
|
Hello,
I'm trying to get calls working between websocket clients and sip clients. For clients I have sip.js based clients on chrome, Zoipers and a Grandstream phone. Challenge here is I'd like to have Kamailio and rtpengine to handle the bridging between different rtp profiles but Asterisk changes them in the sdp bodies along the way. I'm using Asterisk 11.11.0.
Is there a way to configure Asterisk to ignore the rtp profile but allow calls to pass with either of those profiles (even though clients might answer with 488 which would be caught and handled by Kamailio and rtpengine)? In my setup I have Asterisk Kamailio realtime integration, and the second goal is to be able to add peers to the db table with similar data, as in no different values based on what kind of client wants to register. I'd like to allow the user to register using which ever client they choose (in this case one of the 3 I mentioned).
Previously I had problems like 'rejecting secure audio stream without encryption details', no audio or BYE messages sent immediately after call has begun etc, but according to sip.js documentation (http://sipjs.com/guides/server-configuration/asterisk/) the settings avpf and force_avp affect the way Asterisk handles the rtp profiles and now my calls do work ok but I'd need to move the rtp profile handling to rtpengine.
Here's my sip.conf:
bindport = 5070 ;Kamailio is at port 5060, and it's always used as outbound proxy
bindaddr = PU.BL.IC.IP
tcpenable = yes
limitonpeers = yes
rtcachefriends = yes
rtupdate=yes
tos_sip=cs3
tos_audio=ef
realm = testers.com
autodomain=no
domain=testers.com
allowexternaldomains=no
allowguest=no
;avpf=yes ;
encryption=yes
transport=ws,wss,udp
icesupport=yes
srvlookup=yes
nat=force_rport,comedia
videosupport=yes
directmedia=no
And here's the way I've defined my websocket peer to my sippeers table:
id: 4
name: 660
ipaddr: PU.BL.IC.IP
port: 5060
regseconds: 1407744248
defaultuser: 660
fullcontact: sip:660@PU.BL.IC.IP:5060
regserver:
useragent:
lastms: 0
host: dynamic
type: friend
context: default
deny: 0.0.0.0/0.0.0.0
permit: PU.BL.IC.IP
secret: NULL
md5secret: NULL
avpf: yes
force_avp: yes
icesupport: yes
directmedia: yes
encryption: yes
nat: force_rport,comedia
callgroup: NULL
pickupgroup: NULL
language: NULL
disallow: NULL
allow: NULL
setvar: NULL
callerid: NULL
amaflags: NULL
videosupport: no
maxcallbitrate: NULL
mailbox: NULL
regexten: NULL
fromdomain: testers.com
fromuser: NULL
qualify: NULL
defaultip: NULL
outboundproxy: PU.BL.IC.IP
contactpermit: NULL
contactdeny: NULL
fullname: NULL
cid_number: NULL
callingpres: NULL
mohinterpret: NULL
mohsuggest: NULL
hasvoicemail: NULL
subscribemwi: NULL
vmexten: NULL
rtpkeepalive: NULL
directrtpsetup: yes
dtlsenable: yes
dtlsverify: no
dtlsprivatekey: /etc/asterisk/keys/asterisk.pem
dtlssetup: actpass
dtlscertfile: /etc/asterisk/keys/asterisk.pem
dtlscafile: /etc/asterisk/keys/ca.crt
sippasswd: md5ofmypwd
rpid: NULL
domain: testers.com
sippasswd2: NULL
This is how all other clients are currently defined:
id: 7
name: 771
ipaddr: PU.BL.IC.IP
port: 5060
regseconds: 1407748788
defaultuser: 771
fullcontact: sip:771@PU.BL.IC.IP:5060
regserver:
useragent:
lastms: 0
host: dynamic
type: friend
context: default
deny: 0.0.0.0/0.0.0.0
permit: PU.BL.IC.IP
secret: NULL
md5secret: NULL
avpf: no
force_avp: NULL
icesupport: NULL
directmedia: yes
encryption: NULL
nat: force_rport,comedia
callgroup: NULL
pickupgroup: NULL
language: NULL
disallow: NULL
allow: NULL
setvar: NULL
callerid: NULL
amaflags: NULL
videosupport: NULL
maxcallbitrate: NULL
mailbox: NULL
regexten: NULL
fromdomain: testers.com
fromuser: NULL
qualify: NULL
defaultip: NULL
outboundproxy: PU.BL.IC.IP
contactpermit: NULL
contactdeny: NULL
fullname: NULL
cid_number: NULL
callingpres: NULL
mohinterpret: NULL
mohsuggest: NULL
hasvoicemail: NULL
subscribemwi: NULL
vmexten: NULL
rtpkeepalive: NULL
directrtpsetup: NULL
dtlsenable: NULL
dtlsverify: NULL
dtlsprivatekey: NULL
dtlssetup: NULL
dtlscertfile: NULL
dtlscafile: NULL
sippasswd: 27e13af7c596313350986c58c9d24946
rpid: NULL
domain: testers.com
sippasswd2: NULL
cheers,
Olli |
|
Back to top |
|
|
paul.belanger at polyb... Guest
|
Posted: Mon Aug 11, 2014 5:56 pm Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin |
|
|
On Mon, Aug 11, 2014 at 4:45 AM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com> wrote:
Quote: |
Hello,
I'm trying to get calls working between websocket clients and sip clients.
For clients I have sip.js based clients on chrome, Zoipers and a Grandstream
phone. Challenge here is I'd like to have Kamailio and rtpengine to handle
the bridging between different rtp profiles but Asterisk changes them in the
sdp bodies along the way. I'm using Asterisk 11.11.0.
Is there a way to configure Asterisk to ignore the rtp profile but allow
calls to pass with either of those profiles (even though clients might
answer with 488 which would be caught and handled by Kamailio and
rtpengine)? In my setup I have Asterisk Kamailio realtime integration, and
the second goal is to be able to add peers to the db table with similar
data, as in no different values based on what kind of client wants to
register. I'd like to allow the user to register using which ever client
they choose (in this case one of the 3 I mentioned).
Previously I had problems like 'rejecting secure audio stream without
encryption details', no audio or BYE messages sent immediately after call
has begun etc, but according to sip.js documentation
(http://sipjs.com/guides/server-configuration/asterisk/) the settings avpf
and force_avp affect the way Asterisk handles the rtp profiles and now my
calls do work ok but I'd need to move the rtp profile handling to rtpengine.
| We are successfully using kamailio / rtpengine with websockets and
asterisk 1.8. First question is why are you duplicating registrations
within asterisk? Secondly, why are you using websockets in asterisk?
Without knowing more about your use case, I'll tell you how we did it.
Like I said, kamailio is responsible for our SIP/ws subscribers and
registrations. Once within kamailio we simply dispatch traffic to
asterisk via SIP/udp. RTP is handled by rtpengine (using rtproxy-ng)
and that is basically it.
No special configuration is needed for asterisk (in fact 1.8 has no
support for RTP/SAVPF) so we rewrite SDP on 488. Then setup a
kamailio peer and away you go.
--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users |
|
Back to top |
|
|
ohjelmistoarkkitehti a... Guest
|
Posted: Tue Aug 12, 2014 3:17 am Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin |
|
|
Hello,
Thank You Paul for your reply,
The registrations in my setup are not duplicated, the 'secret' field in the realtime table is empty, which causes Asterisk to not authenticate requests from my Kamailio. Kamailio handles registrations, and also routes the traffic to Asterisk using dispatcher. Also, all peers have the Kamailio ip:port as outbound proxy so all traffic goes through Kamailio.
Looks like version 11.11 works differently, I'll try to revert back to a previous version, and see if that works. I know at least the 'force_avp' field is new to 11.11 so it's safe to assume there's some difference between versions in rtp profile handling.
It would be good to know how to handle this scenario in the new versions as well, I'll probably need to upgrade ahead anyway.
Thanks,
Olli
2014-08-12 1:56 GMT+03:00 Paul Belanger <paul.belanger@polybeacon.com (paul.belanger@polybeacon.com)>:
Quote: | On Mon, Aug 11, 2014 at 4:45 AM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com (ohjelmistoarkkitehti@gmail.com)> wrote:
Quote: |
Hello,
I'm trying to get calls working between websocket clients and sip clients.
For clients I have sip.js based clients on chrome, Zoipers and a Grandstream
phone. Challenge here is I'd like to have Kamailio and rtpengine to handle
the bridging between different rtp profiles but Asterisk changes them in the
sdp bodies along the way. I'm using Asterisk 11.11.0.
Is there a way to configure Asterisk to ignore the rtp profile but allow
calls to pass with either of those profiles (even though clients might
answer with 488 which would be caught and handled by Kamailio and
rtpengine)? In my setup I have Asterisk Kamailio realtime integration, and
the second goal is to be able to add peers to the db table with similar
data, as in no different values based on what kind of client wants to
register. I'd like to allow the user to register using which ever client
they choose (in this case one of the 3 I mentioned).
Previously I had problems like 'rejecting secure audio stream without
encryption details', no audio or BYE messages sent immediately after call
has begun etc, but according to sip.js documentation
(http://sipjs.com/guides/server-configuration/asterisk/) the settings avpf
and force_avp affect the way Asterisk handles the rtp profiles and now my
calls do work ok but I'd need to move the rtp profile handling to rtpengine.
|
We are successfully using kamailio / rtpengine with websockets and
asterisk 1.8. First question is why are you duplicating registrations
within asterisk? Secondly, why are you using websockets in asterisk?
Without knowing more about your use case, I'll tell you how we did it.
Like I said, kamailio is responsible for our SIP/ws subscribers and
registrations. Once within kamailio we simply dispatch traffic to
asterisk via SIP/udp. RTP is handled by rtpengine (using rtproxy-ng)
and that is basically it.
No special configuration is needed for asterisk (in fact 1.8 has no
support for RTP/SAVPF) so we rewrite SDP on 488. Then setup a
kamailio peer and away you go.
--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com (paul.belanger@polybeacon.com) | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users
|
|
|
Back to top |
|
|
ohjelmistoarkkitehti a... Guest
|
Posted: Tue Aug 12, 2014 6:57 am Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin |
|
|
Okay, tried reverting to Asterisk 11.10.2. I didn't change the realtime table yet, but now when calling from websocket client to another websocket client, cli says:
WARNING[30620][C-00000000]: chan_sip.c:11056 process_sdp_a_dtls: Unsupported fingerprint hash type 'sha-2' received on dialog '36ns50nk1fo04pu3m7lf'
WARNING[30620][C-00000000]: chan_sip.c:10509 process_sdp: Rejecting secure audio stream without encryption details: audio 10640 RTP/SAVPF 111 103 104 0 8 106 105 13 126
This many times, until the forking capacity of Kamailio has been reached and call fails. The clients are running on chrome, and calls have worked before... I wonder if I should revert further back and/or change or remove some realtime table fields?
cheers,
Olli
2014-08-12 11:17 GMT+03:00 Olli Heiskanen <ohjelmistoarkkitehti@gmail.com (ohjelmistoarkkitehti@gmail.com)>:
Quote: | Hello,
Thank You Paul for your reply,
The registrations in my setup are not duplicated, the 'secret' field in the realtime table is empty, which causes Asterisk to not authenticate requests from my Kamailio. Kamailio handles registrations, and also routes the traffic to Asterisk using dispatcher. Also, all peers have the Kamailio ip:port as outbound proxy so all traffic goes through Kamailio.
Looks like version 11.11 works differently, I'll try to revert back to a previous version, and see if that works. I know at least the 'force_avp' field is new to 11.11 so it's safe to assume there's some difference between versions in rtp profile handling.
It would be good to know how to handle this scenario in the new versions as well, I'll probably need to upgrade ahead anyway.
Thanks,
Olli
2014-08-12 1:56 GMT+03:00 Paul Belanger <paul.belanger@polybeacon.com (paul.belanger@polybeacon.com)>:
Quote: | On Mon, Aug 11, 2014 at 4:45 AM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com (ohjelmistoarkkitehti@gmail.com)> wrote:
Quote: |
Hello,
I'm trying to get calls working between websocket clients and sip clients.
For clients I have sip.js based clients on chrome, Zoipers and a Grandstream
phone. Challenge here is I'd like to have Kamailio and rtpengine to handle
the bridging between different rtp profiles but Asterisk changes them in the
sdp bodies along the way. I'm using Asterisk 11.11.0.
Is there a way to configure Asterisk to ignore the rtp profile but allow
calls to pass with either of those profiles (even though clients might
answer with 488 which would be caught and handled by Kamailio and
rtpengine)? In my setup I have Asterisk Kamailio realtime integration, and
the second goal is to be able to add peers to the db table with similar
data, as in no different values based on what kind of client wants to
register. I'd like to allow the user to register using which ever client
they choose (in this case one of the 3 I mentioned).
Previously I had problems like 'rejecting secure audio stream without
encryption details', no audio or BYE messages sent immediately after call
has begun etc, but according to sip.js documentation
(http://sipjs.com/guides/server-configuration/asterisk/) the settings avpf
and force_avp affect the way Asterisk handles the rtp profiles and now my
calls do work ok but I'd need to move the rtp profile handling to rtpengine.
|
We are successfully using kamailio / rtpengine with websockets and
asterisk 1.8. First question is why are you duplicating registrations
within asterisk? Secondly, why are you using websockets in asterisk?
Without knowing more about your use case, I'll tell you how we did it.
Like I said, kamailio is responsible for our SIP/ws subscribers and
registrations. Once within kamailio we simply dispatch traffic to
asterisk via SIP/udp. RTP is handled by rtpengine (using rtproxy-ng)
and that is basically it.
No special configuration is needed for asterisk (in fact 1.8 has no
support for RTP/SAVPF) so we rewrite SDP on 488. Then setup a
kamailio peer and away you go.
--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com (paul.belanger@polybeacon.com) | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users
|
|
|
|
Back to top |
|
|
paul.belanger at polyb... Guest
|
Posted: Tue Aug 12, 2014 9:41 am Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin |
|
|
On Tue, Aug 12, 2014 at 4:17 AM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com> wrote:
Quote: | Hello,
Thank You Paul for your reply,
The registrations in my setup are not duplicated, the 'secret' field in the
realtime table is empty, which causes Asterisk to not authenticate requests
from my Kamailio. Kamailio handles registrations, and also routes the
traffic to Asterisk using dispatcher. Also, all peers have the Kamailio
ip:port as outbound proxy so all traffic goes through Kamailio.
| That is your issue, stop using chan_sip with realtime (using data from
kamailio). The only SIP peer asterisk should know of is kamailio, and
your webrtc clients should be anonymous SIP users. This way, Asterisk
doesn't even need to deal with websockets and RTP/SAVPF (this is what
kamailio and rtpengine) is for.
In your current setup, you are bypassing the functionality of
rtpengine and not even leveraging it.
Quote: | Looks like version 11.11 works differently, I'll try to revert back to a
previous version, and see if that works. I know at least the 'force_avp'
field is new to 11.11 so it's safe to assume there's some difference between
versions in rtp profile handling.
It would be good to know how to handle this scenario in the new versions as
well, I'll probably need to upgrade ahead anyway.
|
--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users |
|
Back to top |
|
|
ohjelmistoarkkitehti a... Guest
|
Posted: Wed Aug 13, 2014 3:35 am Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin |
|
|
Hi,
Wow, thanks Paul, realizing the problem makes a lot of sense.
So I setup Kamailio as a peer, but if I disable chan_sip module completely, I can't do it in sip.conf like I'd otherwise assume to do. I tried to rebuild Asterisk without chan_sip, but I guess that's not quite the way to go? Asterisk stopped sending back any sip messages so either there is a configuration means on how to do this or I'm doing something wrong with my current setup. My next thought was to compile Asterisk normally and set rtcachefriends to no, that did not work either, when dialing the cli stated:
app_dial.c:2437 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Subscriber absent)
which I guess says Asterisk does not know where to send the message.
The inner workings of Asterisk is a bit beyond me, if you don't mind giving advice on how to proceed I'd be most grateful.
cheers,
Olli
2014-08-12 17:40 GMT+03:00 Paul Belanger <paul.belanger@polybeacon.com (paul.belanger@polybeacon.com)>:
Quote: | On Tue, Aug 12, 2014 at 4:17 AM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com (ohjelmistoarkkitehti@gmail.com)> wrote:
Quote: | Hello,
Thank You Paul for your reply,
The registrations in my setup are not duplicated, the 'secret' field in the
realtime table is empty, which causes Asterisk to not authenticate requests
from my Kamailio. Kamailio handles registrations, and also routes the
traffic to Asterisk using dispatcher. Also, all peers have the Kamailio
ip:port as outbound proxy so all traffic goes through Kamailio.
|
That is your issue, stop using chan_sip with realtime (using data from
kamailio). The only SIP peer asterisk should know of is kamailio, and
your webrtc clients should be anonymous SIP users. This way, Asterisk
doesn't even need to deal with websockets and RTP/SAVPF (this is what
kamailio and rtpengine) is for.
In your current setup, you are bypassing the functionality of
rtpengine and not even leveraging it.
Quote: | Looks like version 11.11 works differently, I'll try to revert back to a
previous version, and see if that works. I know at least the 'force_avp'
field is new to 11.11 so it's safe to assume there's some difference between
versions in rtp profile handling.
It would be good to know how to handle this scenario in the new versions as
well, I'll probably need to upgrade ahead anyway.
|
--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com (paul.belanger@polybeacon.com) | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users
|
|
|
Back to top |
|
|
paul.belanger at polyb... Guest
|
Posted: Wed Aug 13, 2014 12:08 pm Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin |
|
|
On Wed, Aug 13, 2014 at 4:35 AM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com> wrote:
Quote: | Hi,
Wow, thanks Paul, realizing the problem makes a lot of sense.
So I setup Kamailio as a peer, but if I disable chan_sip module completely,
I can't do it in sip.conf like I'd otherwise assume to do. I tried to
rebuild Asterisk without chan_sip, but I guess that's not quite the way to
go? Asterisk stopped sending back any sip messages so either there is a
configuration means on how to do this or I'm doing something wrong with my
current setup. My next thought was to compile Asterisk normally and set
rtcachefriends to no, that did not work either, when dialing the cli stated:
app_dial.c:2437 dial_exec_full: Unable to create channel of type 'SIP'
(cause 20 - Subscriber absent)
which I guess says Asterisk does not know where to send the message.
The inner workings of Asterisk is a bit beyond me, if you don't mind giving
advice on how to proceed I'd be most grateful.
| I think you are still mis-understanding me. I'll try to be clearer.
From the POV of asterisk, you do still need chan_sip, however the only
peer asterisk needs to be away of it Kamailio. All other peers will
be stored within kamailio. This was the reason for my comment about
realtime sip, you don't need it.
Then, within kamailio, you'll need to invoke rtpengine using
(rtpproxy-ng with kamailio 4.1) to rewrite the sdp for the invite to
asterisk. You'll use the rtpproxy_offer and rtp_answer functions to
remove ICE when calls originate from webrtc clients. Since you are
not using a websocket in asterisk, it will just be a SIP over udp, the
need for ICE and SAVPF is not needed.
What you are trying to do is pretty complicated, it took me about 2
weeks to get everything setup properly. There is good information[1]
on the web, you just need to google for it.
[1] http://www.slideshare.net/crocodilertc/webrtc-websockets
--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users |
|
Back to top |
|
|
ohjelmistoarkkitehti a... Guest
|
Posted: Wed Aug 13, 2014 12:39 pm Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin |
|
|
Aaa now I understood better, thanks!
That's the instruction I used originally to write my Kamailio config, but I wasn't sure on how the sdp was supposed to be altered at which places in the whole SIP flow. I was thinking the original INVITE with the original sdp would go all the way to the receiving client, which return 488, which Kamailio would pick up and use rtpengine to alter the sdp at that point.
So I'll need to alter the sdp every time before sending it to the Asterisk servers altogether and so avoid all the hassle I've been having with Asterisk.
cheers,
Olli
2014-08-13 20:07 GMT+03:00 Paul Belanger <paul.belanger@polybeacon.com (paul.belanger@polybeacon.com)>:
Quote: | On Wed, Aug 13, 2014 at 4:35 AM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com (ohjelmistoarkkitehti@gmail.com)> wrote:
Quote: | Hi,
Wow, thanks Paul, realizing the problem makes a lot of sense.
So I setup Kamailio as a peer, but if I disable chan_sip module completely,
I can't do it in sip.conf like I'd otherwise assume to do. I tried to
rebuild Asterisk without chan_sip, but I guess that's not quite the way to
go? Asterisk stopped sending back any sip messages so either there is a
configuration means on how to do this or I'm doing something wrong with my
current setup. My next thought was to compile Asterisk normally and set
rtcachefriends to no, that did not work either, when dialing the cli stated:
app_dial.c:2437 dial_exec_full: Unable to create channel of type 'SIP'
(cause 20 - Subscriber absent)
which I guess says Asterisk does not know where to send the message.
The inner workings of Asterisk is a bit beyond me, if you don't mind giving
advice on how to proceed I'd be most grateful.
|
I think you are still mis-understanding me. I'll try to be clearer.
From the POV of asterisk, you do still need chan_sip, however the only
peer asterisk needs to be away of it Kamailio. All other peers will
be stored within kamailio. This was the reason for my comment about
realtime sip, you don't need it.
Then, within kamailio, you'll need to invoke rtpengine using
(rtpproxy-ng with kamailio 4.1) to rewrite the sdp for the invite to
asterisk. You'll use the rtpproxy_offer and rtp_answer functions to
remove ICE when calls originate from webrtc clients. Since you are
not using a websocket in asterisk, it will just be a SIP over udp, the
need for ICE and SAVPF is not needed.
What you are trying to do is pretty complicated, it took me about 2
weeks to get everything setup properly. There is good information[1]
on the web, you just need to google for it.
[1] http://www.slideshare.net/crocodilertc/webrtc-websockets
--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com (paul.belanger@polybeacon.com) | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users
|
|
|
Back to top |
|
|
ohjelmistoarkkitehti a... Guest
|
Posted: Fri Aug 15, 2014 9:41 am Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin |
|
|
Hello,
After having thought this through a bit I have some thoughts I'd like to share.
In this case where the rtp profile is RTP/AVP Asterisk accepts and handles the call normally. If a webrtc client calls a sip client, or even another webrtc client, rtpengine is needed to step in (in my setup most of the clients would indeed be webrtc, but some of them might be sip). I think it would be better to use RTP/SAVPF throughout the process if both clients are webrtc (or otherwise speak RTP/SAVPF), but currently there is no way to accomplish this?
Is it possible to configure Asterisk to only accept the RTP/SAVPF profile, and send 488 to all others? If it's not possible to force Asterisk to ignore rtp profiles (thus allowing the sdp be handled by rtpengine entirely), I'd prefer to use RTP/SAVPF or RTP/SAVP in the communication between Kamailio and Asterisk servers and use rtpengine to bridge to RTP/AVP and RTP/AVPF only if the client cannot speak securely.
I'd very much like to hear opinions and thoughts on these.
cheers,
Olli
2014-08-13 20:39 GMT+03:00 Olli Heiskanen <ohjelmistoarkkitehti@gmail.com (ohjelmistoarkkitehti@gmail.com)>:
Quote: |
Aaa now I understood better, thanks!
That's the instruction I used originally to write my Kamailio config, but I wasn't sure on how the sdp was supposed to be altered at which places in the whole SIP flow. I was thinking the original INVITE with the original sdp would go all the way to the receiving client, which return 488, which Kamailio would pick up and use rtpengine to alter the sdp at that point.
So I'll need to alter the sdp every time before sending it to the Asterisk servers altogether and so avoid all the hassle I've been having with Asterisk.
cheers,
Olli
2014-08-13 20:07 GMT+03:00 Paul Belanger <paul.belanger@polybeacon.com (paul.belanger@polybeacon.com)>:
Quote: | On Wed, Aug 13, 2014 at 4:35 AM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com (ohjelmistoarkkitehti@gmail.com)> wrote:
Quote: | Hi,
Wow, thanks Paul, realizing the problem makes a lot of sense.
So I setup Kamailio as a peer, but if I disable chan_sip module completely,
I can't do it in sip.conf like I'd otherwise assume to do. I tried to
rebuild Asterisk without chan_sip, but I guess that's not quite the way to
go? Asterisk stopped sending back any sip messages so either there is a
configuration means on how to do this or I'm doing something wrong with my
current setup. My next thought was to compile Asterisk normally and set
rtcachefriends to no, that did not work either, when dialing the cli stated:
app_dial.c:2437 dial_exec_full: Unable to create channel of type 'SIP'
(cause 20 - Subscriber absent)
which I guess says Asterisk does not know where to send the message.
The inner workings of Asterisk is a bit beyond me, if you don't mind giving
advice on how to proceed I'd be most grateful.
|
I think you are still mis-understanding me. I'll try to be clearer.
From the POV of asterisk, you do still need chan_sip, however the only
peer asterisk needs to be away of it Kamailio. All other peers will
be stored within kamailio. This was the reason for my comment about
realtime sip, you don't need it.
Then, within kamailio, you'll need to invoke rtpengine using
(rtpproxy-ng with kamailio 4.1) to rewrite the sdp for the invite to
asterisk. You'll use the rtpproxy_offer and rtp_answer functions to
remove ICE when calls originate from webrtc clients. Since you are
not using a websocket in asterisk, it will just be a SIP over udp, the
need for ICE and SAVPF is not needed.
What you are trying to do is pretty complicated, it took me about 2
weeks to get everything setup properly. There is good information[1]
on the web, you just need to google for it.
[1] http://www.slideshare.net/crocodilertc/webrtc-websockets
--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com (paul.belanger@polybeacon.com) | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users
|
|
|
|
Back to top |
|
|
paul.belanger at polyb... Guest
|
Posted: Fri Aug 15, 2014 10:49 am Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin |
|
|
On Fri, Aug 15, 2014 at 10:41 AM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com> wrote:
Quote: | Hello,
After having thought this through a bit I have some thoughts I'd like to
share.
In this case where the rtp profile is RTP/AVP Asterisk accepts and handles
the call normally. If a webrtc client calls a sip client, or even another
webrtc client, rtpengine is needed to step in (in my setup most of the
clients would indeed be webrtc, but some of them might be sip). I think it
would be better to use RTP/SAVPF throughout the process if both clients are
webrtc (or otherwise speak RTP/SAVPF), but currently there is no way to
accomplish this?
Is it possible to configure Asterisk to only accept the RTP/SAVPF profile,
and send 488 to all others? If it's not possible to force Asterisk to ignore
rtp profiles (thus allowing the sdp be handled by rtpengine entirely), I'd
prefer to use RTP/SAVPF or RTP/SAVP in the communication between Kamailio
and Asterisk servers and use rtpengine to bridge to RTP/AVP and RTP/AVPF
only if the client cannot speak securely.
I'd very much like to hear opinions and thoughts on these.
| Again, I'll only share my experiences, but we do the complete
opposite. Traffic between kamailio and asterisk is only RTP/AVP since
the version of asterisk we are using does not support RTP/SAVPF (1..
However, if you want RTP/SAVPF then honestly, you should just
completely remove rtpengine from the picture since newer version of
asterisk support both RTP/AVP and RTP/SAVPF (asterisk 12+).
What I think you should do is go back to the basics, and document
everything you want to do. Right now you have too many pieces in the
puzzle and making the setup complicated. Like I said before, this is
a complex setup and you need to start some place. Here is a diagram
of what we do.
webrtc (RTP/SAVPF) -> kamailio -> rtpengine -> asterisk (RTP/AVP)
This way, only RTP/AVP is in the core of our network. Rtpengine is on
the edge (where it belongs), proxing rtp traffic. And, for us, we
keep RTP/SAVPF outside of asterisk since support for it has been
recently added. I also believe there are some open issue with dtls +
srtp too.
--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users |
|
Back to top |
|
|
ohjelmistoarkkitehti a... Guest
|
Posted: Fri Aug 15, 2014 11:18 am Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin |
|
|
Thanks Paul, I appreciate your thoughts.
I understand your way, it's logical in your environment. I prefer to use LTS versions of Asterisk so I'm guessing what I want to do is not quite possible with Asterisk 11.
I'd prefer my setup to work like this in different cases.
webrtc (rtp/savpf) -- kamailio -- asterisk -- kamailio -- webrtc (rtp/savpf)
sip (rtp/avp) -- kamailio -- rtpengine (rtp/savpf) -- asterisk -- kamailio -- rtpengine (rtp/avp) -- sip (rtp/avp)
webrtc (rtp/savpf) -- kamailio -- asterisk -- kamailio -- rtpengine (rtp/avp) -- sip (rtp/avp)
... essentially, using RTP/AVP only when the client does not speak securely.
It appears I'll have to try out the RTP/AVP way until there is an Asterisk that can accomplish this without having to use peer-specific settings. Down-side to this is that rtpengine needs resources from the server for webrtc clients even though both ends speak the same profile.
It's not so complicated now that I know more on what Asterisk supports and how it handles the sdp, I just needed to learn by doing, testing and asking. I must be a bit ahead of my time for going for a RTP/SAVPF within my architecture, but using RTP/AVP is not such a bad option as srtp is on its way anyway in future Asterisk versions and the rtp flowing between Kamailio and users' networks are far more important than internal rtp traffic.
cheers,
Olli
2014-08-15 18:48 GMT+03:00 Paul Belanger <paul.belanger@polybeacon.com (paul.belanger@polybeacon.com)>:
Quote: | On Fri, Aug 15, 2014 at 10:41 AM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com (ohjelmistoarkkitehti@gmail.com)> wrote:
Quote: | Hello,
After having thought this through a bit I have some thoughts I'd like to
share.
In this case where the rtp profile is RTP/AVP Asterisk accepts and handles
the call normally. If a webrtc client calls a sip client, or even another
webrtc client, rtpengine is needed to step in (in my setup most of the
clients would indeed be webrtc, but some of them might be sip). I think it
would be better to use RTP/SAVPF throughout the process if both clients are
webrtc (or otherwise speak RTP/SAVPF), but currently there is no way to
accomplish this?
Is it possible to configure Asterisk to only accept the RTP/SAVPF profile,
and send 488 to all others? If it's not possible to force Asterisk to ignore
rtp profiles (thus allowing the sdp be handled by rtpengine entirely), I'd
prefer to use RTP/SAVPF or RTP/SAVP in the communication between Kamailio
and Asterisk servers and use rtpengine to bridge to RTP/AVP and RTP/AVPF
only if the client cannot speak securely.
I'd very much like to hear opinions and thoughts on these.
|
Again, I'll only share my experiences, but we do the complete
opposite. Traffic between kamailio and asterisk is only RTP/AVP since
the version of asterisk we are using does not support RTP/SAVPF (1..
However, if you want RTP/SAVPF then honestly, you should just
completely remove rtpengine from the picture since newer version of
asterisk support both RTP/AVP and RTP/SAVPF (asterisk 12+).
What I think you should do is go back to the basics, and document
everything you want to do. Right now you have too many pieces in the
puzzle and making the setup complicated. Like I said before, this is
a complex setup and you need to start some place. Here is a diagram
of what we do.
webrtc (RTP/SAVPF) -> kamailio -> rtpengine -> asterisk (RTP/AVP)
This way, only RTP/AVP is in the core of our network. Rtpengine is on
the edge (where it belongs), proxing rtp traffic. And, for us, we
keep RTP/SAVPF outside of asterisk since support for it has been
recently added. I also believe there are some open issue with dtls +
srtp too.
--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com (paul.belanger@polybeacon.com) | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users
|
|
|
Back to top |
|
|
paul.belanger at polyb... Guest
|
Posted: Fri Aug 15, 2014 2:25 pm Post subject: [asterisk-users] Letting rtp profiles be handled by rtpengin |
|
|
On Fri, Aug 15, 2014 at 12:17 PM, Olli Heiskanen
<ohjelmistoarkkitehti@gmail.com> wrote:
Quote: | Thanks Paul, I appreciate your thoughts.
I understand your way, it's logical in your environment. I prefer to use LTS
versions of Asterisk so I'm guessing what I want to do is not quite possible
with Asterisk 11.
I'd prefer my setup to work like this in different cases.
webrtc (rtp/savpf) -- kamailio -- asterisk -- kamailio -- webrtc (rtp/savpf)
sip (rtp/avp) -- kamailio -- rtpengine (rtp/savpf) -- asterisk -- kamailio
-- rtpengine (rtp/avp) -- sip (rtp/avp)
webrtc (rtp/savpf) -- kamailio -- asterisk -- kamailio -- rtpengine
(rtp/avp) -- sip (rtp/avp)
... essentially, using RTP/AVP only when the client does not speak securely.
It appears I'll have to try out the RTP/AVP way until there is an Asterisk
that can accomplish this without having to use peer-specific settings.
Down-side to this is that rtpengine needs resources from the server for
webrtc clients even though both ends speak the same profile.
It's not so complicated now that I know more on what Asterisk supports and
how it handles the sdp, I just needed to learn by doing, testing and asking.
I must be a bit ahead of my time for going for a RTP/SAVPF within my
architecture, but using RTP/AVP is not such a bad option as srtp is on its
way anyway in future Asterisk versions and the rtp flowing between Kamailio
and users' networks are far more important than internal rtp traffic.
| Fair enough, I won't be able to help moving forward. We opted for
only using RTP/AVF with asterisk because how new the code for RTP/AVPF
and dtls-strp handling is. And since RTP/AVF has been around since
the start, it is pretty stable. And this is the primary reason people
are using rtpengine with asterisk to start. So, in your setup listed
above, rtpengine is not needed, since newer versions of asterisk
support both. Adding it in will just complicate your setup.
--
Paul Belanger | PolyBeacon, Inc.
Jabber: paul.belanger@polybeacon.com | IRC: pabelanger (Freenode)
Github: https://github.com/pabelanger | Twitter: https://twitter.com/pabelanger
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users |
|
Back to top |
|
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|