Re: [asterisk-users] Letting rtp profiles be handled by rtpengine instead of Asterisk
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 ohjelmistoarkkite...@gmail.com: 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.belan...@polybeacon.com: On Wed, Aug 13, 2014 at 4:35 AM, Olli Heiskanen ohjelmistoarkkite...@gmail.com wrote: 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.belan...@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 -- _ -- 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
Re: [asterisk-users] Letting rtp profiles be handled by rtpengine instead of Asterisk
On Fri, Aug 15, 2014 at 10:41 AM, Olli Heiskanen ohjelmistoarkkite...@gmail.com wrote: 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.8). 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.belan...@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
Re: [asterisk-users] Letting rtp profiles be handled by rtpengine instead of Asterisk
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.belan...@polybeacon.com: On Fri, Aug 15, 2014 at 10:41 AM, Olli Heiskanen ohjelmistoarkkite...@gmail.com wrote: 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.8). 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.belan...@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 -- _ -- 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
Re: [asterisk-users] Letting rtp profiles be handled by rtpengine instead of Asterisk
On Fri, Aug 15, 2014 at 12:17 PM, Olli Heiskanen ohjelmistoarkkite...@gmail.com wrote: 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.belan...@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
Re: [asterisk-users] Letting rtp profiles be handled by rtpengine instead of Asterisk
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.belan...@polybeacon.com: On Tue, Aug 12, 2014 at 4:17 AM, Olli Heiskanen ohjelmistoarkkite...@gmail.com wrote: 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. 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.belan...@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 -- _ -- 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
Re: [asterisk-users] Letting rtp profiles be handled by rtpengine instead of Asterisk
On Wed, Aug 13, 2014 at 4:35 AM, Olli Heiskanen ohjelmistoarkkite...@gmail.com wrote: 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.belan...@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
Re: [asterisk-users] Letting rtp profiles be handled by rtpengine instead of Asterisk
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.belan...@polybeacon.com: On Wed, Aug 13, 2014 at 4:35 AM, Olli Heiskanen ohjelmistoarkkite...@gmail.com wrote: 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.belan...@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 -- _ -- 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
Re: [asterisk-users] Letting rtp profiles be handled by rtpengine instead of Asterisk
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.belan...@polybeacon.com: On Mon, Aug 11, 2014 at 4:45 AM, Olli Heiskanen ohjelmistoarkkite...@gmail.com wrote: 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.belan...@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 -- _ -- 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
Re: [asterisk-users] Letting rtp profiles be handled by rtpengine instead of Asterisk
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-]: chan_sip.c:11056 process_sdp_a_dtls: Unsupported fingerprint hash type 'sha-2' received on dialog '36ns50nk1fo04pu3m7lf' WARNING[30620][C-]: 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 ohjelmistoarkkite...@gmail.com: 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.belan...@polybeacon.com: On Mon, Aug 11, 2014 at 4:45 AM, Olli Heiskanen ohjelmistoarkkite...@gmail.com wrote: 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.belan...@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 -- _ -- 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
Re: [asterisk-users] Letting rtp profiles be handled by rtpengine instead of Asterisk
On Tue, Aug 12, 2014 at 4:17 AM, Olli Heiskanen ohjelmistoarkkite...@gmail.com wrote: 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. 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.belan...@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
[asterisk-users] Letting rtp profiles be handled by rtpengine instead of Asterisk
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:6...@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:7...@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 -- _ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- New to Asterisk? Join us for a live introductory webinar
Re: [asterisk-users] Letting rtp profiles be handled by rtpengine instead of Asterisk
On Mon, Aug 11, 2014 at 4:45 AM, Olli Heiskanen ohjelmistoarkkite...@gmail.com wrote: 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.belan...@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