I am using Freeswitch (1.4.8) as an SBC between our company PABX and our ISP's Trunk (also terminating on an SBC). My problem is that I need G729 in some cases and PCMA in others (the majority). The setup looks more or less like this: Our PABX (192.168.102.215)=>(192.168.102.102)Our SBC (10.17.159.10)=>(10.17.159.9)ISP SBC=>Rest of the world Since we use private addresses, Freeswitch must do RTP proxying. No transcoding must be done!!! I have set global_codec_prefs to "PCMA,G729". Then everything to destination supporting PCMA works. When trying to connect to a G729-only PABX, the call fails. Leg A is setup as follows 192.168.102.215.5060 > 192.168.102.102.5090: SIP, length: 933 INVITE sip:0873611337@192.168.102.102:5090;transport=udp SIP/2.0 To: <sip:0873611337@192.168.102.102;user=phone> From: "JGD Winson" <sip:anonymous@anonymous.invalid
;tag=snl_iFGEOrlLLf
Call-ID: SEC11-a64a8c0-1e64a8c0-1-9lz36fM4mXAo CSeq: 1235 INVITE Contact: <sip:anonymous@192.168.102.215:5060;maddr=192.168.102.215> Via: SIP/2.0/UDP 192.168.102.215:5060 ;branch=z9hG4bKSEC-a64a8c0-1e64a8c0-1-5nUh73XkOk Content-Type: application/sdp Content-Length: 288 X-Siemens-Call-Type: ST-insecure Accept-Language: en;q=0.0 Allow: REGISTER, INVITE, ACK, BYE, CANCEL, NOTIFY, REFER, INFO Date: Wed, 01 Apr 2015 14:30:15 GMT Max-Forwards: 69 v=0 o=MxSIP 0 105140472 IN IP4 10.11.32.226 s=SIP Call c=IN IP4 10.11.32.226 t=0 0 m=audio 5014 RTP/AVP 8 0 18 101 a=rtpmap:8 PCMA/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:18 G729/8000 a=rtpmap:101 telephone-event/8000 a=silenceSupp:off - - - - a=fmtp:18 annexb=no a=fmtp:101 0-15 192.168.102.102.5090 > 192.168.102.215.5060: SIP, length: 396 SIP/2.0 100 Trying Via: SIP/2.0/UDP 192.168.102.215:5060 ;branch=z9hG4bKSEC-a64a8c0-1e64a8c0-1-5nUh73XkOk From: "JGD Winson" <sip:anonymous@anonymous.invalid
;tag=snl_iFGEOrlLLf
To: <sip:0873611337@192.168.102.102;user=phone> Call-ID: SEC11-a64a8c0-1e64a8c0-1-9lz36fM4mXAo CSeq: 1235 INVITE User-Agent: FreeSWITCH-mod_sofia/1.4.18+git~20150312T185523Z~4eed221b69~64bit Content-Length: 0 192.168.102.102.5090 > 192.168.102.215.5060: SIP, length: 1201 SIP/2.0 200 OK Via: SIP/2.0/UDP 192.168.102.215:5060 ;branch=z9hG4bKSEC-a64a8c0-1e64a8c0-1-5nUh73XkOk From: "JGD Winson" <sip:anonymous@anonymous.invalid
;tag=snl_iFGEOrlLLf
To: <sip:0873611337@192.168.102.102;user=phone>;tag=BytX6X1t7HytF Call-ID: SEC11-a64a8c0-1e64a8c0-1-9lz36fM4mXAo CSeq: 1235 INVITE Contact: <sip:0873611337@192.168.102.102:5090;transport=udp> User-Agent: FreeSWITCH-mod_sofia/1.4.18+git~20150312T185523Z~4eed221b69~64bit Accept: application/sdp Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE Supported: timer, path, replaces Allow-Events: talk, hold, conference, presence, as-feature-event, dialog, line-seize, call-info, sla, include-session-description, presence.winfo, message-summary, refer Content-Type: application/sdp Content-Disposition: session Content-Length: 226 Remote-Party-ID: "0873611337" <sip:0873611337@192.168.102.102
;party=calling;privacy=off;screen=no
v=0 o=FreeSWITCH 1427881297 1427881298 IN IP4 192.168.102.102 s=FreeSWITCH c=IN IP4 192.168.102.102 t=0 0 m=audio 17318 RTP/AVP 8 101 a=rtpmap:8 PCMA/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=ptime:20 When I change my global_codec_prefs to "G729,PCMA", G729 is offered to our PABX by Freeswitch, then to the ISP and then it works to destinations supporting G729. It fails to destinations not supporting G729. Now Leg A is setup as follows: 192.168.102.215.5060 > 192.168.102.102.5090: SIP, length: 934 INVITE sip:0873611337@192.168.102.102:5090;transport=udp SIP/2.0 To: <sip:0873611337@192.168.102.102;user=phone> From: "JGD Winson" <sip:anonymous@anonymous.invalid
;tag=snl_8NZMvB3KNA
Call-ID: SEC11-a64a8c0-1e64a8c0-1-k6bGtU73W2Vm CSeq: 1235 INVITE Contact: <sip:anonymous@192.168.102.215:5060;maddr=192.168.102.215> Via: SIP/2.0/UDP 192.168.102.215:5060 ;branch=z9hG4bKSEC-a64a8c0-1e64a8c0-1-ZO003uQGh0 Content-Type: application/sdp Content-Length: 289 X-Siemens-Call-Type: ST-insecure Accept-Language: en;q=0.0 Allow: REGISTER, INVITE, ACK, BYE, CANCEL, NOTIFY, REFER, INFO Date: Wed, 01 Apr 2015 14:27:51 GMT Max-Forwards: 69 v=0 o=MxSIP 0 1224193414 IN IP4 10.11.32.226 s=SIP Call c=IN IP4 10.11.32.226 t=0 0 m=audio 5014 RTP/AVP 8 0 18 101 a=rtpmap:8 PCMA/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:18 G729/8000 a=rtpmap:101 telephone-event/8000 a=silenceSupp:off - - - - a=fmtp:18 annexb=no a=fmtp:101 0-15 192.168.102.102.5090 > 192.168.102.215.5060: SIP, length: 396 SIP/2.0 100 Trying Via: SIP/2.0/UDP 192.168.102.215:5060 ;branch=z9hG4bKSEC-a64a8c0-1e64a8c0-1-ZO003uQGh0 From: "JGD Winson" <sip:anonymous@anonymous.invalid
;tag=snl_8NZMvB3KNA
To: <sip:0873611337@192.168.102.102;user=phone> Call-ID: SEC11-a64a8c0-1e64a8c0-1-k6bGtU73W2Vm CSeq: 1235 INVITE User-Agent: FreeSWITCH-mod_sofia/1.4.18+git~20150312T185523Z~4eed221b69~64bit Content-Length: 0 192.168.102.102.5090 > 192.168.102.215.5060: SIP, length: 1224 SIP/2.0 200 OK Via: SIP/2.0/UDP 192.168.102.215:5060 ;branch=z9hG4bKSEC-a64a8c0-1e64a8c0-1-ZO003uQGh0 From: "JGD Winson" <sip:anonymous@anonymous.invalid
;tag=snl_8NZMvB3KNA
To: <sip:0873611337@192.168.102.102;user=phone>;tag=g2eKXDUB6y4Hr Call-ID: SEC11-a64a8c0-1e64a8c0-1-k6bGtU73W2Vm CSeq: 1235 INVITE Contact: <sip:0873611337@192.168.102.102:5090;transport=udp> User-Agent: FreeSWITCH-mod_sofia/1.4.18+git~20150312T185523Z~4eed221b69~64bit Accept: application/sdp Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE Supported: timer, path, replaces Allow-Events: talk, hold, conference, presence, as-feature-event, dialog, line-seize, call-info, sla, include-session-description, presence.winfo, message-summary, refer Content-Type: application/sdp Content-Disposition: session Content-Length: 249 Remote-Party-ID: "0873611337" <sip:0873611337@192.168.102.102
;party=calling;privacy=off;screen=no
v=0 o=FreeSWITCH 1427866745 1427866746 IN IP4 192.168.102.102 s=FreeSWITCH c=IN IP4 192.168.102.102 t=0 0 m=audio 31726 RTP/AVP 18 101 a=rtpmap:18 G729/8000 a=fmtp:18 annexb=no a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=ptime:20 I have tried various (hopefully all) combinations of inbound-codec-negotiation (generous, greedy and scrooge) and inbound-late-negotiation (true, false). Nothing does what I want. I believe Freeswitch needs to negotiate the codecs with the endpoint and choose one from my list. However, it seems to grab the first one in my list before checking the endpoint. Then it offers only that codec to the endpoint, which of course ignores / rejects it! What can I do? Regards Andries