This is almost an oxymoron. PRI interfaces are so common on PBXs that you’d think we would all be familiar with the process of building them. However, since these interfaces don’t change very often, sometimes we will go several years between PRI configuration. Here’s a quick reference for setting up a PRI. This one will use AT&T’s IPFlex BVoIP service, but most PRIs are configured the same way nowadays.
Here are the steps we will perform:
- Determine the physical location for the PRI (i.e. what port network or gateway and what slot?).
- Determine the trunk group number you will use and the TAC (trunk access code). Often, these will correspond with a site or media gateway. Just do a ‘list trunk’ and you’ll probably see a pattern where the trunk group number should fit and the TAC is almost always based upon the trunk group number.
- Find out the line coding and framing for the T1. Almost all T1s are now ‘b8zs’ and ‘esf’. Your carrier can confirm this, but I’ve never seen a voice PRI installed after the mid-1990s anything else.
- Find out the service protocol to use. This one is tricky and depends upon the emulation of the carrier’s switch. In fact, their planning docs will often ask you which one you want. And half the time it’s wrong anyway. If the D-channel doesn’t come up, this is usually the problem. It’s either ‘a’ for AT&T custom or ‘b’ for NI-2. It looks like this is used in three different places. The DS1 form, the signaling group form, and the trunk group form all have signaling protocol fields! However, the signaling and trunk group fields are different. When the carrier asks you “are you AT&T or NI2?”, they mean the ds1 itself. I have added some notes at the bottom of this post regarding the service protocols.
First, make sure you have a PRI slot available. I just pushed a PRI card into slot 5 of my G450 gateway (media gateway 10 in my case) so it looks like this:
list configuration media-gateway 10 Page 1 SYSTEM CONFIGURATION Board Assigned Ports Number Board Type Code Vintage u=unassigned t=tti p=psa 010V1 ICC MM S8300D HW06 FW001 010V2 ANA MM MM716AP HW06 FW098 01 02 03 04 05 p p p p p p p p p p p p p p p p p p p 010V4 DS1 MM MM710BP HW11 FW052 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 u u u u u u u u 010V5 DS1 MM MM710BP HW11 FW049 u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u press CANCEL to quit -- press NEXT PAGE to continue ESC-x=Cancel Esc-e=Submit Esc-p=Prev Pg Esc-n=Next Pg Esc-h=Help Esc-r=Refresh
Slot 5 is nice and clean with 24 unassigned ports. First we need to create the DS1, which is really creating the D-channel on port 24. I type
add ds1 010v524
and the DS1 form comes up. It’s only two pages. Fortunately, I have a couple working DS1s from AT&T already so I’ll refer to those. By the time I’m done, my DS1 looks like this:
display ds1 010v524 Page 1 of 2 DS1 CIRCUIT PACK Location: 010V5 Name: Atlanta BVoIP Bit Rate: 1.544 Line Coding: b8zs Line Compensation: 1 Framing Mode: esf Signaling Mode: isdn-pri Connect: network TN-C7 Long Timers? n Country Protocol: 1 Interworking Message: PROGress Protocol Version: b Interface Companding: mulaw CRC? n Idle Code: 11111111 DCP/Analog Bearer Capability: 3.1kHz T303 Timer(sec): 4 Slip Detection? n Near-end CSU Type: integrated Echo Cancellation? n Block Progress Indicator? n display ds1 010v524 Page 2 of 2 DS1 CIRCUIT PACK ESF DATA LINK OPTIONS Network Management Protocol: tabs Send ANSI-T1.403 One-Second Performance Reports? n Far-end CSU Address: b INTEGRATED CSU OPTIONS Transmit LBO: 0db Receive ALBO: 26db Upon DTE LOS: loopback CPE LOOPBACK JACK OPTIONS Supply CPE Loopback Jack Power? n
Now we create the signaling group, which is the communication layer on the D-channel. Signaling groups can be shared (rarely), so these are split up. They’re very simple. The form is 5 pages long, but page 1 is all that matters:
display signaling-group 110 Page 1 of 5 SIGNALING GROUP Group Number: 110 Group Type: isdn-pri Associated Signaling? y Max number of NCA TSC: 0 Primary D-Channel: 010V524 Max number of CA TSC: 0 Trunk Group for NCA TSC: Trunk Group for Channel Selection: X-Mobility/Wireless Type: NONE TSC Supplementary Service Protocol: a
There is a chicken-and-egg problem here. The signaling group wants to know what trunk group to use, but we haven’t built the trunk group yet. We will need to modify this after we create the trunk group.
Now create the trunk group. After the first page, almost everything is fine with default values. The only fields I end up changing are “send name”, “send number”, and “show ANSWERED BY” on page 3. I typically submit the form before assigning channels on page 5 to make sure the form submits.
display trunk-group 110 Page 1 of 21 TRUNK GROUP Group Number: 110 Group Type: isdn CDR Reports: y Group Name: Atlanta BVoIP COR: 1 TN: 1 TAC: 8900 Direction: two-way Outgoing Display? n Carrier Medium: PRI/BRI Dial Access? n Busy Threshold: 255 Night Service: Queue Length: 0 Service Type: public-ntwrk Auth Code? n TestCall ITC: rest Far End Test Line No: TestCall BCC: 4 display trunk-group 110 Page 2 of 21 Group Type: isdn TRUNK PARAMETERS Codeset to Send Display: 6 Codeset to Send National IEs: 6 Max Message Size to Send: 260 Charge Advice: none Supplementary Service Protocol: a Digit Handling (in/out): enbloc/enbloc Trunk Hunt: cyclical Digital Loss Group: 13 Incoming Calling Number - Delete: Insert: Format: Bit Rate: 1200 Synchronization: async Duplex: full Disconnect Supervision - In? y Out? n Answer Supervision Timeout: 0 Administer Timers? n CONNECT Reliable When Call Leaves ISDN? n XOIP Treatment: auto Delay Call Setup When Accessed Via IGAR? n display trunk-group 110 Page 3 of 21 TRUNK FEATURES ACA Assignment? n Measured: none Wideband Support? n Maintenance Tests? y Data Restriction? n NCA-TSC Trunk Member: Send Name: y Send Calling Number: y Used for DCS? n Send EMU Visitor CPN? n Suppress # Outpulsing? n Format: natl-pub Outgoing Channel ID Encoding: preferred UUI IE Treatment: service-provider Replace Restricted Numbers? n Replace Unavailable Numbers? n Send Connected Number: n Hold/Unhold Notifications? n Send UUI IE? y Modify Tandem Calling Number: no Send UCID? n Send Codeset 6/7 LAI IE? y Ds1 Echo Cancellation? n Apply Local Ringback? n US NI Delayed Calling Name Update? n Show ANSWERED BY on Display? n Invoke ID for USNI Calling Name: variable Network (Japan) Needs Connect Before Disconnect? n
We still have two things to do – we need to set the trunk group for channel selection in the signaling group, and we need to assign the channels. Before I forget, change the signaling group to tell it what trunk group it will control:
change signaling-group 110 Page 1 of 5 SIGNALING GROUP Group Number: 110 Group Type: isdn-pri Associated Signaling? y Max number of NCA TSC: 0 Primary D-Channel: 010V524 Max number of CA TSC: 0 Trunk Group for NCA TSC: Trunk Group for Channel Selection: 110 X-Mobility/Wireless Type: NONE TSC Supplementary Service Protocol: a
Now, for the last step, let’s assign channels! Change the trunk group and set these on page 5 and 6. Note how we assign the signaling group along with the channel. When I get the circuit ID from AT&T, I will put it in the “Name” column along with the DIDs that were provided on this circuit.
change trunk-group 110 Page 5 of 21 TRUNK GROUP Administered Members (min/max): 1/23 GROUP MEMBER ASSIGNMENTS Total Administered Members: 23 Port Code Sfx Name Night Sig Grp 1: 010V501 MM710 B 110 2: 010V502 MM710 B 110 3: 010V503 MM710 B 110 4: 010V504 MM710 B 110 5: 010V505 MM710 B 110 6: 010V506 MM710 B 110 7: 010V507 MM710 B 110 8: 010V508 MM710 B 110 9: 010V509 MM710 B 110 10: 010V510 MM710 B 110 11: 010V511 MM710 B 110 12: 010V512 MM710 B 110 13: 010V513 MM710 B 110 14: 010V514 MM710 B 110 15: 010V515 MM710 B 110 change trunk-group 110 Page 6 of 21 TRUNK GROUP Administered Members (min/max): 1/23 GROUP MEMBER ASSIGNMENTS Total Administered Members: 23 Port Code Sfx Name Night Sig Grp 16: 010V516 MM710 B 110 17: 010V517 MM710 B 110 18: 010V518 MM710 B 110 19: 010V519 MM710 B 110 20: 010V520 MM710 B 110 21: 010V521 MM710 B 110 22: 010V522 MM710 B 110 23: 010V523 MM710 B 110 24: 25: 26: 27: 28: 29: 30:
And now it’s a matter of troubleshooting. I plugged in my PRI into the BVoIP router and the first thing is to make sure the D-channel came up. Do this by statusing the signaling group:
status signaling-group 110 STATUS SIGNALING GROUP Group ID: 110 Active NCA-TSC Count: 0 Group Type: isdn-pri Active CA-TSC Count: 0 Signaling Type: facility associated signaling Group State: in-service Primary D-Channel Port: 010V524 Level 3 State: in-service Secondary D-Channel Port: Level 3 State: no-link
The “Level 3 State” is the state of the D-Channel. If you’re on the phone with your carrier and they ask about the D-Channel, you can give them that status.
Next, status the trunk group itself:
status trunk 110 TRUNK GROUP STATUS Member Port Service State Mtce Connected Ports Busy 0110/001 010V501 in-service/idle no 0110/002 010V502 in-service/idle no 0110/003 010V503 in-service/idle no 0110/004 010V504 in-service/idle no 0110/005 010V505 in-service/idle no 0110/006 010V506 in-service/idle no 0110/007 010V507 in-service/idle no 0110/008 010V508 in-service/idle no 0110/009 010V509 in-service/idle no 0110/010 010V510 in-service/idle no 0110/011 010V511 in-service/idle no 0110/012 010V512 in-service/idle no
This gives you the channel state within the trunk group. These channels will only come up in-service/idle if the D-channel is good. If you have any problems, you can try to “bounce” the D-channel by perform a busyout then release on the port of the D-channel with “busy port 010v524” in my case:
busyout port 010v524 COMMAND RESULTS Port Maintenance Name Alt. Name Result Error Code 010V524 ISDN-PLK PASS release port 010v524 COMMAND RESULTS Port Maintenance Name Alt. Name Result Error Code 010V524 ISDN-PLK PASS
And if the D-channel still won’t come up, that’s when you tweak the service protocol values between ‘a’ and ‘b’.
When you’re on the phone with your carrier trying to turn up service, the ability to bounce the D-Channel, monitor the D and B channel status, and change from AT&T custom to NI-2 is typically enough to get the carrier to work with you and get this working. On rare occasions you may need to tweak the line coding (b8zf/esf) but this has only happened to me once.
As for service protocols, a good friend of mine provided a nice summary from his notes. Remember these apply to the DS1! (i.e. “change ds1 010v524”), not the sig or trunk group forms.
Protocol “a” – AT&T Custom
- For the layer 3 messaging or 4ESS/5ESS messaging type (Maintenance Protocol Discriminator 03) (TR41449/TR41459)
- Normally used by Long Distance Companies
- 4ESS is strictly AT&T Custom for FAS/NFAS
- DMS 100/250 is AT&T Custom for FAS/NFAS (software load BCS.36 or later)
- DSC DEX600E is AT&T Custom for FAS/NFAS (used BY MCI and Frontier as central offices)
Protocol “b” – National ISDN 2
- Bellcore protocol (5ESS LEC messaging for NFAS and DCBU applications, the only way the 5ESS can be set up for NFAS and DCBU) (Maintenance Protocol Discriminator 43) (TR1268)
- Normally used by LECs
- DMS 100 will do NI-2 FAS/NFAS (started in the BCS.37 load of software)
- Starting with the 5E9.0 software load in the 5ESS
- Normal protocol for connection to Siemen’s EWSD
- Normal protocol for connection to GTE GTD5
Thanks as always for your time and attention. If you’re interested, I can include a post on routing incoming calls from this trunk group, routing calls out this trunk group, and setting the caller-id for calls over this trunk group. Please let me know your own experiences with setting up and using PRI and IP trunks.