Solved CISCO CME/CCUCM SIP TRUNK WITH 3CX GENERIC TRUNK

Status
Not open for further replies.

sfriday02

Free User
Joined
Jun 14, 2021
Messages
15
Reaction score
0
I have confirmed from Cisco that they validate the from field for the SIP invite, and it needs to be from the originating peer. (IE 3CX),
yet 3cx sets the from and the to the same IP address (confirmed by the CEO of 3cx) in his blog... and confirmed by the trace below... BUT

If you change the outbound parameters to even the hard coded fields, Cisco still shows that it received the wrong information being sent from 3cx in the debug field, then
sends a 404 back to 3cx as call/trunk failed and shows the trunk red.

See below:

Jun 14 04:12:01.035: //12862/809A0101AC03/SIP/Msg/ccsipDisplayMsg:
Sent:
SIP/2.0 503 Service Unavailable
Via: SIP/2.0/UDP 10.44.41.185:5060;branch=z9hG4bK-524287-1---be45aa7be0612935;rport
From: <sip:[email protected]>;tag=4568bd3d (THIS SHOULD BE 10.44.41.185 AND I CANT CHANGE IT?)
To: <sip:[email protected]>;tag=6C84A54-EB1
Date: Mon, 14 Jun 2021 04:12:01 GMT
Call-ID: mzdLfYFhhIvifbNoku9yIg..
Server: Cisco-SIPGateway/IOS-12.x
CSeq: 2 REGISTER
Content-Length: 0

Any assistance would be appreciated, otherwise if there is a list of supported SBC's maybe I can get ACME or something else to translate.

I need the From Field to Match the IP Address in the VIA or calls will fail.
 
10.44.41.185
Is this the 3CX server local IP? If so then you can use the "ContactUri" variable in the From:HostPart
1623655219826.png
This will add the contact IP which is the 3CX servers IP. The PBX will add the local IP if the request is going to a local destination. So the From:HostPart and VIA will match
 
Thank you for the note, if I change the 3CX parameters for outbound (host:part) to contact URI... 3CX does add a contact string, but it doesnt change the from...... 3CX is still sending the wrong information to Cisco. Below is the

ccsip debug trace events on setting on a Cisco ISR Router. 10.44.41.185 is the 3CX Instance on Windows, and 10.44.41.1 is a Cisco CME instance on a 2851 Router.


Jun 14 10:47:16.438: //-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:
Received:
REGISTER sip:10.44.41.1 SIP/2.0
Via: SIP/2.0/UDP 10.44.41.185:5060;branch=z9hG4bK-524287-1---bf301749e3696d27;rport
Max-Forwards: 70
Contact: <sip:[email protected]:5060;rinstance=e5012e030d7f0ab2>
To: <sip:[email protected]>
From: <sip:[email protected]>;tag=2374221f
Call-ID: czJiE84NP1fB77SPE6SuvA..
CSeq: 2 REGISTER
Expires: 3600
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REGISTER, SUBSCRIBE, NOTIFY, REFER, INFO, MESSAGE, UPDATE
Supported: replaces, timer
Content-Length: 0

An Option is to set the SIP trunk on the 3CX to be unauthenticated, in this model, 3CX turns the trunk green, and sends calls to the PBX as it should, but the Cisco CME instance rejects the calls even if I set the trusted IP host value on CME. IF the trunk is in alarm, 3CX never sends any calls to the destination.
 
Apologies but you mentioned SIP invites in your original post and I though you were speaking of Invite messages not Register messages. The option I mentioned will not change the Registration message as that is fairly standard.
Your best bet is to troubleshoot why the Invites via an IP based trunk get rejected by the Cisco CME and make adjustments to get that to work
 
Is it possible for me to define my own SIP Trunk Type on 3CX as if you were building it at corporate, and put the registration information in a user defined format? Cisco is validating the From statement, otherwise do you have a list of supported SBC's who may be able to translate?
 
Is it possible for me to define my own SIP Trunk Type on 3CX as if you were building it at corporate, and put the registration information in a user defined format?
No it is not. What you see is what you get.

otherwise do you have a list of supported SBC's who may be able to translate?
No we do not as we test interoperability with providers directly. No SBC is required for 3CX to communicate with a provider. Having said that we do have providers behind different SBCs like acmes and ribbons and we have no issues connecting.
 
Alright here's where I am:
1) If I build a Generic SIP trunk from my Cisco CME to 3CX on the 3CX side. And Turn off authentication, 3CX sees it up and green. Furthermore, I can create a routing profile to force certain types of calls to the trunk. Meaning that 3CX believes it is working and functional, and will route calls to the new trunk.
2) Cisco says you can configure the sip-ua to trust specific IP addresses (IE My 3CXPBX) which I have done.
voice service voip
ip address trusted list
ipv4 10.44.40.185
ipv4 10.44.41.185

And I have built inbound dn's and outbound dn's for the new trunk with the correct MAC-ID....

3) But when I send a call to the Cisco Trunk I get a 404 error back which I have seen on this forum that the destination number doesnt exist?
 
The 404 comes from the Cisco IP address? If so then you need to look at the Cisco side to see why the call is rejected. From the 3CX side you can check the Activity log (put in verbose logging if necessary) to see if the call was forwarded to the Cisco. If it was and it was rejected then you need to see why and make the necessary adjustments
 
Ok I have two interfaces on the 3CX PBX, and changed to the second subnet, and now getting
calls through. The 3CX was sending calls from the IP address I hadnt provisioned on the Cisco side.
So I think I just need to configure another DN for both IP addresses and it should work. The Cisco DN#
I had busied out so I am reasonable confident the SIP server is giving the right address.

So in summary I did the following:
1) Created a Generic SIP Trunk with the IP address of the Cisco GW.
2) Named it CISCOTIELINE
3) Turned Authentication TO TRUSTED.
4) Added the 3CX IP ADDRESS of both IP interfaces as trusted on the Cisco side.
5) Set up Dial-Peers for Inbound and Outbound Peers (4 Peers are required - 2 for each IP Interface)
6) Set up a Preliminary Dial Around of 99 as the TieLine Prefix, and created an Outbound plan from 3CX.

I will try in reverse tomorrow(making calls from Cisco to 3CX), and will confirm but have a time constraint today.
  • Call or Registration to 1000@(Ln.10003@CISCOTIELINE) has failed. 10.44.41.1 replied: 486 Busy here; from IP:10.44.41.1:56556
    SIP Server ID: 12294 06/14/2021 10:53:07 AM

To get to this I dialed 99,1000 from a 3CX registered phone, and forced out the CISCOTIELINE.
The reason I want to do this is I have an FXS/FXO gateway on the Cisco side with provisioned POTS lines
so it gives me some overflow trunking options.
 
Ok I made a few calls to the POTS lines and they ring and work - good two way audio good quality as we would expect... so I have complete integration between Cisco, and 3CX!
 
06/14/2021 11:10:43 AM CoolUser (00001) 803814XXXX 00:00:33
 
And here are the Outbound rules I used....Screen Shot 2021-06-14 at 11.16.04 AM.png
 
ok Yannis, I have 3CX to Cisco working... I can call the PSTN from a 3CX extension to PSTN trunks on a Cisco Call Manager, or CME....

However, Inbound calls were failing because I cant strip digits on the inbound SIP trunk can I? Otherwise I have to do it on the dial peer, but on a call which is originating from a SIP domain, even if you strip digits I am not sure you can set callerid...

Is there a way for 3CX to accept any inbound call on a SIP trunk, and then try to process the existing rules for outbound?
 
Ok I got the reverse working, because I missed a fundamental fact of Cisco CME platforms. When SCCP is enabled the backplane is supervising every port in memory... and thus dial-peers are essentially just trunks which point at various resources.

So if you configure a Dial Peer Voice XYZ voip on Cisco and point it back to your 3CX Gateway everything works as long as you dial valid translations, otherwise you need a Gatekeeper to stay in the call flow.

So heres the final answer .....and it took awhile....


dial-peer voice 99 voip
description OutgoingCallTo5DigitExtension
destination-pattern 00T (My Extensions are 00XXX)
session protocol sipv2
session target ipv4:10.44.40.185
session transport tcp
voice-class codec 1
voice-class sip bind control source-interface Vlan900
voice-class sip bind media source-interface Vlan900
dtmf-relay rtp-nte
no vad
 
My concern is that my CME is an analog gateway and has FXO, and FXS ports on it and I thought that I had to do similar translations as I have inbound, but thats not the case. Its a separate code base.
 
So in summary to integrate with Cisco CME or Call Manager:
1) Create a Generic SIP trunk with IP based authentication.
2) Create Permissions on the Cisco to Trust the IP addresses on the 3CX platform.
3) Set up an outbound dial plan to point at Cisco. (9+number, 8+number) as usual.
4) Set up dial peers on the Cisco CME to point back at 3CX, and handle exceptions.
5) Peer authentication is possible, but not out of the box, it will take considerable time and effort to get authentication to work WITHOUT an SBC inline.

Please note it does not appear that 3CX can normalize inbound SIP connections so you have to do your work before you transfer the calls.
 
Lastly here is the call log on the Cisco CME, and the 3CX to prove the point....
 

Attachments

  • Screen Shot 2021-06-14 at 11.16.04 AM.png
    Screen Shot 2021-06-14 at 11.16.04 AM.png
    20 KB · Views: 15
Ok, that was a read. Glad to see you were able to get everything working and thank you for posting the details on how you did it. I am sure other users will find this very useful.
 
Status
Not open for further replies.

Latest Posts

Forum statistics

Threads
112,325
Messages
591,898
Members
165,478
Latest member
postmaster@studiolegaleda