Network Trunking
Configuring Trunking
Feature Groups
What is PhreakNet?
PhreakNet is a community of telephone enthusiasts — phreaks, collectors, and switchers, interested in the art of telephony for hobbyist, experimental, and innovative purposes. Collectively, we strive to amalgamate the old with the new.
What is PhreakNet not?
This is not a way to make free phone calls to the PSTN. If you came here looking for a way to call Timbuktu, you're in the wrong place. Get lost.
What is the dialing plan?
7-digit NANPA (NNX) numbers are mostly used, but special numbers (e.g. 0, N11) also exist. Although there aren't country codes or non-NANPA codes, international members are welcome.
Are the "Docs" PhreakNet specific?
The Docs today consist of well over 200 pages of Asterisk (and closely related) documentation. Some parts of it are, particularly those that dive into network code, concepts, or standards, but much of the Docs is a general Asterisk resource that is network and project agnostic, maintained by PhreakNet since 2018. It is a freely and publicly available resource maintained for the greater hobbyist Asterisk community, as well as the main place to find PhreakNet-specific documentation.
How do I get set up?
Please see the Getting Started guide — welcome!
What equipment do I need?
To connect your own exchange to the network, you will need an Asterisk system. The latest LTS version of vanilla Asterisk (as opposed to FreePBX, IncrediblePBX, or a GUI frontend to Asterisk) is highly recommended, as it's significantly more flexible and more powerful. In particular, using PhreakScript to install Asterisk is recommended. There is plenty of technical expertise in the PhreakNet community to answer questions and help other members learn. Other systems may or may not be fully compatible. More information can be found in the Docs.
If you don't want to host your own exchange, you can also use a hosted line using an ATA (analog telephone adapter), commonly using the SIP protocol.
PJSIP looks more complicated than SIP does — what is it, and why should I use PJSIP over SIP?
PJSIP is a new SIP channel driver that was introduced in Asterisk 12, so a number of years ago now. SIP is a monolithic channel driver that was written way at the beginning of Asterisk, more than 20 years ago, and has become unwieldy and hard to maintain in several ways. PJSIP is based off the open source PJProject, also written in C. Since Asterisk 16, the SIP channel driver has been deprecated and it will be removed in Asterisk 21. This means that the SIP channel driver's days are limited. If that's not enough reason to move off it, the PJSIP driver contains many improvements that will likely cause your ATAs to work better with PJSIP than with SIP. However, if you are migrating from chan_sip to PJSIP, there can be a bit of a learning curve to that. We've included some PJSIP boilerplate in the Docs to help you get started. Feel free to post to the mailing list with PJSIP questions.
What is InterLinked?
InterLinked is the identity provider for this site (for single sign-on). This means there is no separate "PhreakNet" account. Additional functionality is unlocked by associated a PhreakNet integration key with your InterLinked account. Account settings are typically configured on the InterLinked site, but PhreakNet-specific stuff is on this site.
Are the PhreakNet key and InterLinked key the same? Which do I use where?
No, they are not the same. The "PhreakNet key" is an integration key which essentially grants access to certain functionality (in this case, PhreakNet). The actual key value is not meaningful — you just need to have a valid key on file and you don't even need to know what it is. The InterLinked key refers to your InterLinked API key which is not PhreakNet-specific. You can generate, view, and regenerate this key in your Account Settings. This is the key you'll need to provide in API calls. Note that the InterLinked API key is what authenticates your API request. Having a PhreakNet integration key is what authorizes PhreakNet-specific API requests. A PhreakNet integration key isn't provided explicitly — when you make an API call, the system will check if one is associated with your account.
I have a Grandstream or Linksys/Sipura ATA — how can I quickly configure all the needed settings?
You can use the PhreakNet provisioning server to automatically configure all the settings needed for an optimal network experience. You can do this even if you don't have a SIP account on the main PhreakNet tandem — your ATA will receive a generic configuration that could be used with any server. See the lines tab for more info.
My Cisco/Linksys/Sipura ATA has old firmware I need to upgrade, but I can't find it on the Cisco website.
Cisco has taken firmware for most of their end-of-support ATAs (e.g. PAP2T, SPA-2102) down. However, you can obtain a copy of the latest firmware from the PhreakNet provisioning server. Grandstream ATA is available at firmware.grandstream.com — you can manually go here or point your ATA there. Any ATAs provisioned by the PhreakNet provisioning server will attempt to upgrade to the latest firmware available.
I need some help with getting things set up. Can someone else help me or do this for me?
Yes! The Business Office is happy to help users through the process, and you can also call on your more technically inclined colleagues if you wish. You will likely want to use the Delegation feature in the user portal to allow other members to assist you with configuring settings in the user portal. Never provide your credentials to anyone else.
What protocols does PhreakNet support?
PhreakNet uses IAX2 (Inter-Asterisk exchange) trunking. IAX2 is firewall friendly, bandwidth efficient, and easy to set up and manage, making it technically superior for, well, inter-Asterisk trunking. Authentication, encryption, and call tokens are used for security reasons. The verification subroutines also assume the use of IAX2. Although Sangoma does not actively work on IAX2, it is still core supported, and PhreakNet has added improvements to the IAX2 channel driver in Asterisk to improve it for our usage.
I see only one IAX2 user in the boilerplate code / config sample. How does this work with MD5 and RSA authentication?
IAX2 users can allow multiple authentication methods. Since the connection details are largely the same, a single user can be used for both MD5 authentication and RSA authentication. RSA authentication will be used if possible on an outgoing call, falling back to MD5 if not, but the same incoming user on the other side is used, meaning secrets, dialplan contexts, etc. do not need to be duplicated for each auth method.
What do you mean by multiple contexts per IAX2 user? I thought that was a context?
Sections (e.g. [something]) in Asterisk are the correct name for configuration sections. A context is a dialplan-specific terminology. An IAX2 user is defined as a section in iax.conf, and the configuration for this user specifies a context (or multiple contexts) in the dialplan in which to begin dialplan execution when a call is received on this user (a similar thing can be done for peers on outgoing calls in the configuration, or in the dial string).
In what order do dialplan contexts go for an IAX2 user?
The first context listed (e.g. from-phreaknet is the default. This "default" or implicit dialplan context is not specified as part of routing, which means you can actually change the name of this if you want. Other contexts, such as from-stepnet, are used as part of routing, so these names can't be changed.
How does the unified routing and verification API work and why is it like that?
The unified API means that a single API is used for all routing and verification (with the sole exception of downloading RSA public keys of other nodes, which is an adjunct API that depends on the unified API). In addition to being unified, a single API is used for every verification or routing lookup, including StepNet and inward routings. There is no need to make multiple lookups using different APIs. Instead, the API is designed to be flexible, and the dialplan parses the API response appropriately. This reduces bandwidth usage on slow connections and results in a cleaner and faster experience. Verification is very fast and all routing lookups can now occur quickly, too.
Instead of dialing 7-digits, I want PhreakNet accessible as a pseudo-NPA on my switch. How should I do that?
The pseudo-NPA 400 is recommended for assignment for PhreakNet, if desired. Similarly, 200 is commonly used for C*NET NANPA numbers.
Servers, switches, users, reservations, I'm all mixed up! What's the difference?
A server is an actual server reachable publicly via the Internet via a hostname or IP address. It's the basic foundation of setting up a routing.
A user defines how to route into a particular server. A server can have one or more users configured.
A switch is a logical entity on the server. A separate switch with a unique CLLI should be configured for each kind of equipment, physical or simulated.
This all comes together when you reserve thousand blocks. You need to specify a user (which is tied to a server) and a switch (which is tied to a server).
You can also think of a server like a central office (CO). A CO can have have one or more switches inside to house the different exchanges. In the same way, your Asterisk server may be home to multiple different switches, either presiding on the server itself or routed through it.
While servers underlie both switches and users, there is no hierarchical relationship between switches and users. These are on the same level hierarchically and can be mixed and matched per thousand block per your needs.
Why is there a separate process for adding servers, users, switches, and thousand blocks?
Normalizing the backend in this manner allows for greater flexibility and manageability. For instance, if you change your hostname in the future, or you want to change your IAX2 password at some point, or your CLLI, only a single update is needed. The route table remains untouched in all of these cases.
My server is currently down. What do I need to do?
You can change the condition of your server at anytime in the user portal. Go to the "Servers" tab and set the condition of the server appropriately. You can choose the condition that corresponds to why your server is currently unavailable. If you do not see a condition that corresponds to your situation, please contact the Business Office and we can add one that meets your need. Otherwise, there is no need to reach out to the Business Office. You can change your server condition back to "Normal" once the fault is resolved.
What is a feature group?
A feature group is a standardized means of access by which callers may obtain access to alternative carriers or long distance providers. There are four different Feature Groups:
Feature Group A — simply dialing a regular telephone number, entering a PIN number, then the number to call
Feature Group B — dialing a 950-WXXX number, where X is 0 or 1. 950 codes on the PSTN are the same in every NPA in the NANPA.
Feature Group C — used by AT&T for coin lines since it allows remote operator control of a phone line through TSPS. Non-equal access 0+ or 1+ long distance.
Feature Group D — Equal access long distance, dialed as 101-XXXX for any carrier, where XXXX is the carrier code, or directly as 0+ or 1+ for a pre-designated carrier.
The NANPA is predominantly using Feature Group D nowadays. However, Feature Group A can never really go away.
What feature groups does PhreakNet support?
All four feature groups are supported on PhreakNet, in some capacity.
Feature Group A — anyone may set up a Feature Group A access number using any number assigned to his or her switch. No arrangements need to be made between carriers and the PhreakNet Business Office.
Feature Group B — anyone may request a WXXX carrier access code. These are dialable as 950-WXXX on PhreakNet. No additional digits may be dialed after the code before the call is routed to the carrier facility. The caller will receive a second (dial) tone from the Feature Group B carrier's facility, at which additional digits (e.g. PIN and/or number) should be dialed.
Feature Group C — these are not requestable; however, coin lines using PhreakNet TSPS for coin calls are using Feature Group C trunks.
Feature Group D — anyone may request a XXXX carrier access code. These are dialable as:
101-XXXX
101-XXXX-0
101-XXXX-NNX-XXXX
PhreakNet will complete any calls begining with 101-XXXX to the carrier designated by XXXX, including any additional digits following. This means that dialing 101-XXXX can be used to access a specific Feature Group D carrier's dial tone, dialing 101-XXXX-0 can be used to reach a specific Feature Group D carrier's operator, and dialing 101-XXXX-NNX-XXXX could be used to access a specific number through a Feature Group D carrier directly. Dialing fewer digits will "cut through", allowing the carrier to receive additional digits directly. It is up to each Feature Group D facility to properly handle any scenarios that should be supported and to inform users of dialing procedures.
Feature Group D trunking is the most advanced and is thus optimal for carriers with sophisticated usage requirements.
How are feature groups delivered?
They are delivered over the same routes used to deliver calls to regular thousand blocks. Simply update your dialplan with the necessary pattern matches, e.g. exten => 9501234 or exten => _1010222! (for Feature Group D, you should capture any digits that begin with your carrier access code, as additional digits may or may not be delivered to you initially).
How does billing work?
Calls to Feature Group B and D facilities are not ticketed by PhreakNet and may be completed from any unrestricted line. The carrier is responsible for handling billing. Equal Access carriers may opt to have any charges issued by the carrier appear on a caller's PhreakNet bill. Contact the Business Office for API and integration information.
Why are there two directories?
The main or general directory (or simply "Directory") is the primary and larger of the two directories. It contains mostly numbers on members' exchanges, most of which are "things" rather than people. In contrast, the White Pages contains directory entries that ring a telephone that somebody may answer. Most are Residential listings, but Business listings are also included.
What are the different directory listing visibilities?
Anyone on the Internet can see public listings. Logged In Only restricts visibility to logged in members. Unlisted means it's never listed in the directory and only available through Directory Assistance. Private listings are neither listed in the directory nor obtainable through Directory Assistance.
Generally speaking, if there are things you want people to call, you should use the Public or Logged In Only visibilities. The latter is optimal if you don't want unsolicited calls from outside the network.
How do I add a directory entry for somebody else, like listing somebody else (e.g. a hosted member) in the White Pages?
You can't. Directory entries are tied to the member account used to input them, which means that entries for people who aren't registered members aren't possible. That person will need to list him or herself (and register first, if he or she hasn't done so already).
To make the process easier, you can send that person an invite.
What's the difference between "the Docs", the PRFCs, and the PSPs?
The PhreakNet Community Docs, colloquially known as "the Docs" throughout the community, is a comprehensive general Asterisk resource for hobbyist telephonists. Most PhreakNet code can also be found here, but by and large, the Docs are not PhreakNet specific. The Docs is where you'll find most documentation as it's a vast and comprehensive collection of knowledge.
PhreakNet Request For Comments (PRFCs) document technical standards or methodologies that are the basis for implementations of PhreakNet network features. However, these memos are fairly brief and generic and serve as a starting point for more involved components of the network. These are high level documents that aren't PhreakNet-specific, so they generally don't contain any Asterisk dialplan code. Since PRFCs may form the basis of future network features, community input is solicited and encouraged for PRFCs.
PhreakNet System Practices (PSPs) document specific aspects of network operation in a manner similar to Bell System Practices. All PhreakNet training material for operators, for instance, is documented in PSPs. Unlike the Docs and PRFCs, these documents are not publicly circulated, but may be available on request.
I don't hear the right time and/or temperature when calling network time numbers.
Make sure the number from which you are calling is listed in the White Pages. It doesn't need to be publicly listed, but it does need to be in there. Some services will fallback to the general directory and route table allocations if there isn't an exact match in the White Pages; other services will not.
How do I get a pager number?
Simply call the Business Office. There is no charge for the service. Two types are available: a simple number which simply sends you a page when called, and a slightly fancier one that accepts numeric messages.
You'll need to provide both your own pager endpoint (e.g. pager, mobile) and a pager gateway address which accepts email. This address is never made public to other members.
The bill is provided for historical entertainment purposes. There is no need to (get a second job to) pay any charges that appear on it.
What happened to the eXtensible dialplan?
For security reasons, the eXtensible dialplan has been discontinued. It was an innovative idea, but allowing unlimited remote write access to your dialplan is rarely a good security practice. Instead, we've compiled all the core code that you need into several configuration files which you can easily add to your dialplan. We'll post a note to the list if and when there are any major updates or additions.
I need to access my ATA, but I don't know its IP address
If you are hosted on the main tandem, you can use a CLASS vertical service code to obtain your internal IP address.
In all cases, you can use a tool like Advanced IP Scanner to show you all the devices on your network, including their IP addresses.
Why does the site look so dark?
You probably have the dark theme enabled for your account. To disable it, go to your Account Settings and change the theme.
How can I stay logged in persistently?
When authenticating via SSO (single sign on) to InterLinked, make sure you check the 'Remember Me' box. This will keep you logged into InterLinked for 30 days. Now, each time your session expires, you will be automatically redirected to InterLinked SSO and back to your requested page, without any intervention required.
I'm logged in, but I get Access Denied messages on some pages. What's going on?
You don't have a PhreakNet key, in which case you will need to request one to become a member of the community.
You have a PhreakNet key, but you don't have access to the page. Some pages are restricted to operators and/or administration.
Why is the time in the lower left corner wrong?
You are logged in, but the time zone configured in your InterLinked Account Settings is incorrect, in which case you should update it.