PJ-SIP and VOIP Innovations

I actually sat down last night to try to figure out “the best” way to interface PJ-SIP to VOIP Innovations.

BACKGROUND: Unlike other ITSPs, VI uses different discontiguous servers for their “inbound” and “outbound” services, and they also move the IP addresses they use depending on your specific rate plan. In addition, VI uses IP Authentication, allowing you to set up as many server locations as you could want. This flexibility comes at a price, and that price is the many-to-many relationship that the configuration ends up using.

Here’s how I set up VI to maximize their services and ensure the best outcome for my dialing needs.

One of the things that makes this work is understanding that inbound calling and outbound calling are almost entirely unrelated. Calls coming from your ITSP can come from almost anywhere, as long as you know where the anywhere is. Outbound calls, on the other hand, have to go to one place (at a time). Because of this disconnect, it’s often hard to get the full range of functionality from your ITSP.

The easy way: Use Chan-SIP and set up User and Peer connections for each of the addresses involved. This can get a little confusing, though, since the “host=” line for the “User” section of the configuration is often different than the “Peer” host address. Tried that. Lost the ball many times before I got it to work. It sounds easy, but it rapidly gets convoluted. Also, the “type=friend” thing doesn’t work very well with VI since there is no combination where the inbound and outbound actually use the same IP address for the primary connections.

Next way: Use PJ-SIP and set up one trunk for each “outbound” (from you) address. This allows you to have all four (or whatever) possible destinations for your connections and allows you to prioritize the sending of your calls to your ITSP.

Here’s the short version (I’ll try to get pictures later):

  • Download the VI PDF File about VOIP IP Addresses. This document includes all of their connection addresses for each of their rate plans. Find yours. There are four or five IP addresses across that are “your” termination destinations for sending calls.
  • Add a new PJ-SIP Trunk and name it something obvious like “VOIP_INNOVATIONS_1”.
  • In the PJ-SIP settings, select the “General” tab
  • Set the Authentication Type to “None”.
  • Set the SIP Server to the “Primary” IP for your rate group termination. Mine is “Conversational”, so mine primary termination address is “”.
  • Set the SIP Server Port to 5060.
  • Go back to the top and select the “Advanced” tab.
  • Find the “Match (Permit)” field. Fill in all of the addresses from the “Origination” row that applies to you (if you are the Advanced Server, use the second line). I use “copy/paste” and then modify each one by appending “/32,” (the netmask for the server and a comma) since this is a Comma Separated list of addresses to expect calls from.
  • Everything else is usually OK.

So, with that done, “Submit” your work.
Next, re-open your VI trunk and use the “Duplicate” option to make a copy. Change the name so that it’s not silly (not “*_COPY_1”) and once again go to PJ-SIP options General tab. Change the Server IP to the Secondary address (“” in mine). Submit, reopen, and Duplicate.
Repeat for each of the addresses. At the end of the process, you will have four or five independent trunks that you can use for your outbound calling.

I’m writing this down for two reasons:

  1. We (the forum) get questions from time to time about using ITSPs that have multiple IP addresses.
  2. I can never remember whether “Origination” means originating here or at the ITSP.

Hope that helps.


I’m going to sound like a broken record on this but this is where a SIP Proxy comes in handy. Perhaps even a DNS server or two.

With the SIP Proxy you can connect everything from VI to that single system and then route to your PBXes. You can have all of VI’s IPs in a trusted/permitted list for inbound and use LCR or other routing for outbound. Your PBXes? One trunk to your proxy. It also helps with troubleshooting, CDRs and other call tracking because everything goes through the proxy. Plus it helps hide the fact you’re using a provider that offers directly to consumers and has very public rates to compare to. Along with probably no morals on not taking the customer.

I’ve had quite a few wholesale end users call directly wanting to switch because of various reasons with the wholesaler themselves and they found out we were the upstream. However, I believe in not undercutting my own wholesaler so I redirect them back.

In regards to my DNS server suggestion, in situations like this where the ITSP is not doing SRV DNS or has /32’s from all over the place. Having your own DNS to allow you to setup a domain with SRV records for all those /32’s can ease the pain as well. So instead of having multiple trunks due to multiple IPs you can have one trunk that can resolve all those IPs.

Origination is the source of the call, Termination is the destination of the call. So when an ITSP is offering Origination services that means they are providing you the ability to receive calls that originate from the PSTN directed to the Direct Inward Dial numbers you have. Termination services are for allowing you to terminate calls to the PSTN.

I know it can get funky because it’s perspective. It’s why generally inbound rates are cheaper than outbound rates. At the carrier level the originator pays for the call. So if the call comes from ATT to Verizon, ATT is paying Verizon for the call. So Verizon is already making money on the call before they charge their end user for origination fees.

The only time that isn’t the case is with Toll Free, then the terminating carrier pays for the call. So Verizon would be paying for the call if it was Toll Free instead of ATT.

Tom - both excellent ideas and for most large providers, an excellent suggestion. On the other hand, a lot of our fellow forumites are in the same basic position as me - just trying to make it work with the least amount of overhead we can. If, on the other hand, you’re just trying to get your wife’s dog rescue or your kid’s house into phones that are a little cheaper and a little more efficient, adding that extra stuff is work that can be done another day.

Once again, thanks for the suggestions. I appreciate that you took the time to look through it.

While I may have worked for large ITSPs and even a LEC, the latter was the only place I ever was at that had more than six people (at most) in the operation. The ITSPs could be considered large due to their subscriber base, the subscriber base was large due to small ITSP acting like a large carrier while generally only being 1-3 actual techs running the entire thing.

No ruffled feathers over not wanting to go with my idea, however, the “good for large carriers” reasoning is more of an excuse to me. Nothing on you, that’s totally on me.

I’d really like to research this a bit more, any suggestions where to start?

SIP Proxies? Just Google for SIP Proxy and start with the “usual suspects” (Kamiliio and OpenVox?, maybe). From there, you can look and see if you have enough connections to make a SIP proxy worth your while.

BTW - you really need to ask your questions as your own questions instead if high-jacking my Voip Innovations thread.

I believe you meant OpenSIPS and not OpenVox

1 Like

I’m really sorry about that, I recently signed up with voip innovations and your post here really helped me so thanks a lot, I didn’t mean to hijack your thread, it’s just that there was already a discussion here about sip proxies I thought I’d ask, anyway I think for now I’ll stick with what I have and in the future I’m thinking of checking out Dsiprouter.

1 Like