News:

On Tuesday September 6th the forum will be down for maintenance from 9:30 PM to 11:59 PM PDT

Main Menu

One way audio with Obi202, Panasonic KX-TGP550T04 and double NAT

Started by Zopa, March 07, 2015, 08:34:27 PM

Previous topic - Next topic

Zopa

Hello all,

Background:

I have Panasonic KX-TGP550T04 IP Phone which I've been using for years with CallWithUs.com as a SIP provider for outbound and Google Voice (via some sort of free DID redirect for GV) for inbound calls. This phone is on my NATed LAN. I have a static IP, although it's irrelevant.


Issue:

I have been working on configuring KX-TGP550T04 to use Obi202 as a SIP Gateway as per Option 1 in this manual http://www.obihai.com/docs/OBi-VoIP-Device-Attach-Legacy-IP-Phone-Workbook-v1-0.pdf, essentially putting my Panasonic IP phone behind a double NAT. SP1 is set to GV, SP2 and SP3 are not used, SP4 is set as SIP Proxy. I have this phone configured with a stun server of stun.callwithus.com: 3478.

Let's say I'm using 123456789 as a user name and my X_InboundCallRoute is set to  {123456789>(xx.):sp}

My phone is configured with Registrar Server Address and Proxy Server Address pointing to 50xxxxx744.pnn.obihai.com:5063.

I'm able to call from my Panasonic KX-TGP550T04 to my Google Voice, but I get one way audio where I cannot hear the party on my Panasonic IP phone. The callwithus service is works just fine even with double NAT.

While one way audio is a common issue, I still can't figure out. Any advice is appreciated.

Additionally, after I get this to work, I would love to know what's the best way to configure additional GV accounts on SP1 and SP2 and allow seamless use of those if of GV lines on SP1 lines are already used up. If I have three GV accounts setup, does it mean I can have up to 6 concurrent outbound calls using GV?

TIA

azrobert

I'm far from a network expert and don't understand your double NAT setup. Not that it matters.

I've been playing with a double NAT. I added a 2nd router with a different subnet to my network. I connected my Android to the secondary router via WiFi and registered CSipSimple to an OBi200 on the primary network. I was having audio problems.

I fixed the problem by doing this on the trunk CSipSimple was registered:

Service Providers -> ITSP Profile X -> General -> X_SymmetricRTPEnable: Checked

You might be able to get more than 2 concurrent calls with GV. I've only tried 2, but it's worth trying more. You will need to increase the MaxSessions. The default is 2. I think you should set it to the max number of concurrent users plus 1. This will allow for an inbound call when all users are on active calls. It can't hurt to make it more.

Voice Services -> SPx Service -> MaxSessions: 5

You can try a Trunk Groups to failover to another trunk. I only tested Trunk Groups for failover when a trunk is down, but it should also work when a call is rejected because of capacity.

Edit:
Maybe you should set MaxSession to 3, so the 4th call with failover. I not sure how this will work with Trunk Groups. You will just have to test it, unless someone else knows.

ianobi

Within a Trunk Group if all the sessions for a trunk are in use, then the next call will failover to the next trunk.

However, in this case we do need some trial and error or expert help - SteveInWA? I have no idea how many sessions a GV trunk will support. In fact "sessions" may not be the correct description here as it refers to SIP. Setting MaxSessions to a particular number for an SPx Service supporting GV will be ignored as it is a SIP parameter that does not apply to GV.

Anyone using GV and Trunk Groups? Testers are needed   :)

azrobert

ianobi,
Thanks for the info.

Zopa,
I assume you will register additional IP phones on SP4.
You will have to increase MaxSessions on SP4.

Zopa

Thank you for your replies!

azrobert, by double NAT I mean that I have my Panasonic phone connected to Obi202 LAN interface which is NATed to the upstream network (my local LAN), which in turn is NATed to the real Internet. So my phone has an ip of something like 192.168.100.101, Obi202 has an IP of 10.16.100.xxx and then my real internet address is something else entirely.

Let's keep the trunking of GV lines aside for a second, although I do agree it's a more interesting question to figure out. Even though I'm pretty fresh with Obi and advanced VoIP configs, I'm a very high level IT architect and would love to help with any testing, while learning things along.

However, right now I can't even get the basics of two way audio to work. I checked X_SymmetricRTPEnable first under ITSP Profile 1, then also under ITSP Profile 4, testing in between. Still have a one way audio, can't hear called party on my Panasonic phone.

What is the importance of this parameter? And which profile should it have been done under?

Any other suggestions?

azrobert

Repeat. I'm not a network expert, so anything I say might not be accurate. If anyone else wants to chime in, please do.

Look at the OBi Call Status when a call is in session.

Status -> Call Status
You should see RTP packet counts like this: tx=213; rx=222
When you have one way audio, one of the counts usually will be blank.
This is usually a port forwarding problem.
In a single network you should port forward the RTP ports to the OBi's IP address.
It's been awhile since I played with double NATs, but I think you need to port forward the RTP ports in both networks.
The primary router should assign a 2nd IP address for the OBi.

In my case the RTP ports were flowing in both directions.
I decided to change any parm related to RTP one at a time.
I don't know what's Symmetric RTP, but it was the first parm I changed and it fixed my audio problem.


SteveInWA

Just commenting on the GV aspect as it relates to OBi use:

I think there are too many "balls in the air" to troubleshoot this -- I'd start by diagnosing a plan, vanilla configuration of the OBi plugged into the primary internet router, with an analog telephone plugged into the phone port, and testing if two-way audio works on both outbound calls (which are using Chat/XMPP directly with GV's infrastructure), and with inbound calls, which you are forwarding to as SIP DID.  If both work fine, then move onto the next stage of complexity.  If inbound calls work, but outbound calls have one way audio, then we can troubleshoot that, for example. 

One reason I suggest this, is that there have been some recent (in the past week) issues with the audio stream dropping on some users' GV calls.  Google Engineering is investigating that issue, which could be a red herring, confusing your troubleshooting.

I also don't profess to be the VoIP network architect/expert, so I will leave that conversation to y'all.  I will just remind you that GV doesn't use SIP to set up or control call signaling, so don't bother futzing with SIP settings for GV SPs.  I don't know how the old Chat/XMPP service works or doesn't work with ICE, STUN, NAT or other network traversal techniques, sorry.  One other thing, don't forget to disable SIP ALG in your router, if your calls via your SIP DID are the only ones having one-way audio.

Regarding multiple calls using GV:  You can only register and use one GV account per OBi SP, so on the OBi 202, that gives you support for a maximum of four GV accounts/numbers.  GV supports call waiting when forwarding calls to a conventional telephone carrier or SIP DID, as long as that carrier supports call waiting.  I don't know the maximum number of calls that can be juggled this way; it's not documented.

Assuming that you have multiple GV accounts, and you want to use them with your OBi, you would log into the OBiTALK portal page, with your OBi device added, while also being signed into the desired GV account on the same browser session.  You'd then simply repeat the GV setup procedure for each OBi SP you want to assign to a GV account.  The procedure will even display the GV account it's about to connect, to make sure you are selecting the right one (it's easy to accidentally select the wrong account, since Google supports multiple accounts being signed-in on one browser session).

You probably already figured it out, but just in case, here are my instructions for setting up GV:

http://www.obitalk.com/forum/index.php?topic=8560.msg56460#msg56460

Zopa

Was just about to try heavier troubleshooting and ... everything is working. Must've been GV... Thank you for assistance. I thought I checked everything, but still.

Now on to trunking GV accounts. :)

azrobert

Voice Services -> Gateways and Trunk Groups -> Trunk Group 1
TrunkList: sp1,sp2,sp3
DigitMap: (Msp1)

X_InboundCallRoute: {123456789>(Mtg1):tg1}

Define ITSP A, B and C DigitMap with the same rules.
It has to be setup this way.
Trunk Groups work differently.
ITSP A DigitMap must match the dialed number to route a call out SP1
Same for ITSP B and C

If you are calling from the Phone Port change the Primary Line to TG1.

I have GV defined on SP1 and set MaxSessions=1
The second call failed over to SP2, so MaxSessions does apply to GV.


Zopa

Thank you.

I think I like the MaxSessions=1 on SP1, to balance CallerID vs. keeping a channel open for incoming calls. Essentially because of GV's 2 channels (in any incoming/outgoing combo) limitation, and my desire to have a specific number to show up on caller ID most of the time, I have to compromise. Therefore I would want the first outgoing call to go from GV account 1, while all other outgoing calls going to GV accounts 2 and 3. This way the second channel of GV account 1 will be open for an inbound call.

From what I understand while free, GV is limited in a number of way, such there is not way to have an arbitrary CallerID passed and not failover once the limit of two calls reached.

Zopa

azrobert, I'm trying your suggestions, but I'm a bit lost as this is a novel thing for me.

This part worked fine:

QuoteVoice Services -> Gateways and Trunk Groups -> Trunk Group 1
TrunkList: sp1,sp2,sp3
DigitMap: (Msp1)

X_InboundCallRoute: {123456789>(Mtg1):tg1}

And so did this:

QuoteI have GV defined on SP1 and set MaxSessions=1

Now I can only place one outbound call, which goes out on SP1


However, the rest of the instructions are just a tad confusing to me. Can you expand on them a bit? What do you mean by this?
QuoteDefine ITSP A, B and C DigitMap with the same rules.

Under Service Providers -> ITSP Profile X General -> DigitMap, I have a default value of "(1xxxxxxxxxx|<1>[2-9]xxxxxxxxx|011xx.|xx.|(Mipd)|[^*#]@@.)" Is this what you're you suggesting I change? I'm not exactly sure.

To tell you the truth I'm not very handy with regular expressions of DigitMap syntax yet. Yes, I looked at the manual, but it still looks like Greek to me. :)

Also this sentence is not very clear to me either.
QuoteIf you are calling from the Phone Port change the Primary Line to TG1.

Thank you in advance.

azrobert

The OBi MaxSessions is different than the GV MaxSessions. Each inbound or outbound call will use 1 session. If you have MaxSessions set to 1 on SP1 with an active outbound call, you won't be able to receive an inbound call. That is my understanding. If you want to have SP1 open for inbound calls, you can place it 3rd in the Trunk Group.

I will respond to your last post latter. I don't have time right now.

azrobert

I probably shouldn't have said anything because the default settings will work, but you should understand how trunk groups work. I guess I did a poor job of explaining.

This is how a Trunk Group works
The 1st trunk in the TG is SP1
The dialed number is compared to the ITSP A DigitMap
If the dialed number matches a rule in the DigitMap the call is routed out SP1.
If there is a mismatch SP1 is skipped and the same process is used for ITSP B DigitMap and SP2
This is repeated for each trunk in the TG list until the call is routed.

I didn't include the failover process.

All the ITSP X DigitMaps contain the rule "xx.", so the defaults will work and no change is required.

If you have an analog phone(s) connected to the Phone Port(s) make the following change(s)

Physical Interfaces -> Phone1 Port -> Primary Line: Trunk Group 1
Physical Interfaces -> Phone2 Port -> Primary Line: Trunk Group 1


Zopa

Thank you azrobert. Just a quick point of clarification. I don't care for inbound calls via Obi at all. Inbound calls are not routed via Obi (at least they weren't before), but rather are going via a ipcomms.net free DID proxying to my callwithus.com account and ring directly on my KX-TGP550T04. However now I question if this setup would work quite like this since I have Obi in the mix, registering to GB account. I wonder if I can uncheck it as an available "phone" in GV web interface.

What would seem as ideal setup for me would be to have first outbound call to go on SP1, taking 1 of 2 of GV channels, and any subsequent calls to go on SP2 GV channels, then SP3 GV channels. That would give me up to 5 concurrent outbound calls, and between one and two of

azrobert

QuoteI wonder if I can uncheck it as an available "phone" in GV web interface.

Yes, you can. Then inbound calls will only go to your CallWithUs account.

ianobi

QuoteI have GV defined on SP1 and set MaxSessions=1
The second call failed over to SP2, so MaxSessions does apply to GV.

Real life testing seems to be more reliable than the Admin Guide which says:

QuoteWhen Google Voice is selected as the protocol, all the other ITSP Profile parameters are ignored except the DigitMap parameter. The following SP1/SP2 Service parameters are also ignored:
- X_Codec_Profile, X_RegisterEnable, X_UserAgentPort, X_SipDebugOption
- X_KeepAliveEnable, X_KeepAliveExpires, X_KeepAliveServer, X_KeepAliveServerPort, X_KeepAliveMsgType
- URI, MaxSessions, X_AcceptDialogSubscription, X_AcceptLinePortStatusSubscription

I'm happy to admit that I know very little about Google Voice. Looks like I'm on about the same level of expertise as the Admin Guide    :D

azrobert

I did some more testing. I set Maxsessions to 3 on the trunk where GV is defined. I answered an inbound call on the phone port and made 2 outbound calls, one from an Android and the other from a softphone on a computer. If I did this correctly, GV will support a minimum of 3 concurrent calls.

Zopa

azrobert, actually trying your original suggestion to see if I can failover in TG1 to GV channels of SP2, and SP3 and it doesn't seem to work. If I set MaxSessions=1 on SP1 I would expect it fail over to SP2 at the second call, but it doesn't. Moreover, if I change TrunkList to "sp2,sp3,sp1" (no quotes) in Voice Services -> Gateways and Trunk Groups -> Trunk Group1, the first call STILL goes out on SP1 as judged by caller ID on the called phone... What gives? This doesn't make sense to me...

azrobert

Are you using OBiTalk or the local interface to configure your OBi202?
If you use the local interface to configure your OBi you must disable OBiTalk auto provisioning, otherwise OBiTalk will overlay any changes you make.

System Management -> Auto Provisioning
Under OBiTalk Provisioning
Method: Disabled

Check the OBi202's call history to see what trunks to calls are routed.
To access Call History:
Log directly into the OBi using the local interface.
Key the IP address of the OBi into a Web Browser.
Hit Enter
The UserID and default Password are both "admin".
Click Status on the left column.
Then click Call History.



Zopa

All calls are in call history are routed via Google Voice 1, which is configured on SP1

As for which interface I use, I try to use the remote management via obitalk.com. Which way is better, btw? Isn't the only way to configure GV via a web authentication pop in ObiTalk "Google Voice Set-Up"? I though if I unchecked OBitalk Settings and Device Default checkbox, I can manually enter parameters. Does it matter which way to configure it? I like the idea of remote management, but if it makes something not work, I can do it locally.