Next up, trunking. We'll be starting with defining a PRI, but as you might guess, this is a big drawn out process involve a ton of different tables, crosslinking of data, etc. We'll be following along with 298-7002-001 (DMS SuperNode System Primary Rate Interface (PRI) Translations (the student guide for Nortel course 7002). The first place to have a look at is the CARRMTC table, which contains information about DS1 trunk profiles, essentially. Having a look through, there's one entry that we didn't remove from the University of Alabama that looks about right for a modern PRI on our LTC: CSPMTYPE TMPLTNM RTSML RTSOL ATTR ---------------------------------------------------------------------------- LTC ESFB8ZS 255 255 DS1 NT6X50AB MU_LAW ESF B8ZS BPV NILDL N 250 1000 50 50 50 1000 3 6 864 100 17 511 4 255 It's set up for a mu law DS1 on a 6X50AB using ESF framing and B8ZS line code. The training material suggests this may be one of the default entries for this table (or modified from it). This entry matches our needs and hardware, so we'll use it. The other fields have to do with out-of-service and maintenance error limits for trunks that are having issues. Then we've got a few changes to make in LTCINV. When we initially configured it, we were just worried about supporting POTS, so we didn't set it up for DS1 trunks. We'll change our entry to include the PRAB TRMTYPE using the DTCEX EXEC. Those go as an additional entry to the EXECTAB field. The resulting new tuple is the following: LTCNAME ADNUM FRTYPE FRNO SHPOS FLOOR ROW FRPOS EQPEC LOAD EXECTAB CSLNKTAB OPTCARD TONESET PROCPEC EXTLINKS E2LOAD OPTATTR PEC6X40 EXTINFO ---------------------------------------------------------------------------- LTC 0 1 LTEI 0 18 1 B 3 6X02NA QLI22AO ( POTS POTSEX) ( PRAB DTCEX)$ (0 10 16 0) (0 10 16 1) (0 10 16 2) (0 10 16 3) (0 10 16 4) (0 10 16 5) (0 10 16 6) (0 10 16 7) (0 10 16 8) (0 10 16 9) (0 10 16 10) (0 10 16 11) (0 10 16 12) (0 10 16 13) (0 10 16 14) (0 10 16 15) $ (UTR15 ) (MSG6X69 ) (CMR13 CMRU23A) (ISP 16) $ NORTHAA SX05AA $ SX05AA $ 0 SXFWAL01 $ 6X40FA N The next changes we'll have to make are in LTCPSINV. This is where the T1 cards themselves get assigned. I've added an NT6X50AB to slot 5 of unit 0 of my LTC. This corresponds to ports 0 and 1. Thus, ports 0 and 1 will be changed to DS1PRA type (for PRI), reference ESFB8ZS from CARRMTC, interface identifier of 0 for both, line equalization set to NIL, and echo canceller tail set to '$'. The line equalization and tail only apply to cards with integrated echo canceller (6X50EC, I think). For 6X50AB and AA, the line equalization is set by dip switches. I also set up ports 2 and 3, which would be slot 5 of unit 1. I'm going to see what happens if I don't install the card. I need these additional ports equipped because SYNCLK enforces some redundancy rules for clocking and I needed another card in the other unit. The results follow: LTCNAME PSLNKTAB ---------------------------------------------------------------------------- LTC 0 N (0 DS1PRA ESFB8ZS N 0 NIL $) (1 DS1PRA ESFB8ZS N 0 NIL $) (2 DS1PRA ESFB8ZS N 0 NIL $) (3 DS1PRA ESFB8ZS N 0 NIL $) (4 NILTYPE ) (5 NILTYPE ) (6 NILTYPE ) (7 NILTYPE ) (8 NILTYPE ) (9 NILTYPE ) (10 NILTYPE ) (11 NILTYPE ) (12 NILTYPE ) (13 NILTYPE ) (14 NILTYPE ) (15 NILTYPE ) (16 NILTYPE ) (17 DS30A ) (18 NILTYPE ) (19 DS30A ) $ The interface identifier gets used in larger trunk groups, I believe, and may need to be set correctly if you're setting up a PRI group that comprised more than a single DS1. Next, we'll have to define our trunk in the CLLI table. We'll need to pick a CLLI, and administrative number, set our trunk group size, and optionally set some administrative information. The CLLI is a free-form entry, but should ideally be composed so as to clearly identify the trunk. The administrative number must be a value above 50, because 1 through 50 are reserved for pseudo-CLLIs used by internal parts of the switch. Aside from that, a number of fixed CLLIs exist that are likely already assigned various places, so you'll have to work around them. In my case, the result is this: CLLI ADNUM TRKGRSIZ ADMININF ---------------------------------------------------------------- LBRDILLG01T0 100 24 PRI_TO_CISCO I didn't touch PADDATA (or maybe I couldn't delete it) when I cleared tables, so I won't need to set that again. Suffice it to say that PADDATA contains loss plan information for calls between various trunk and line types. The defaults that come with the switch are probably pretty sane. The trunk group itself finally gets defined in TRKGRP. The trunk group must use a CLLI already defined previously for the GRPKEY. For a PRI, the GRPTYP will be PRA. Since I don't care about traffic separation, I'll use TRAFSNO of 0. The PADGRP for a PRA should be PRAC (unless you have something else in mind). That is defined in PADDATA as previously mentioned. NCCLS has something to do with OM pegs when GNCT occurs. A sane default seems to be NCRT. We'll choose ASEQ (ascending sequence) for SELSEQ (channel selection sequence). We don't require a specific billing DN at this time, so we enter N. For the initial LTID entry, $ is used and this will be assigned later when we make an entry in LTMAP. We won't use any additional options to be specified on this trunk, so we enter $ for OPTION. The result is the following: GRPKEY GRPINFO ---------------------------------------------------------------------------- LBRDILLG01T0 PRA 0 PRAC NCRT ASEQ N $ $ We have to define some ISDN parameters in ISDNPARM. To be honest, I don't fully understand this yet, but it has to do with mapping or blocking information elements as part of different message types in the ISDN signalling. For now, I'm leveraging the old values from the UofAl translations, which were pretty uniform: NAME MSGTYPE MSGDIR DFLTACT PARMACT ---------------------------------------------------------------------------- PRI1 SETUP BOTH MAP (DIE MAP) (SH5 BLK) (SH6 BLK) (SH7 BLK) (UNK BLK) (CGS ATP) (CDS ATP) (LLC ATP) (HLC ATP) $ PRI1 NOTIFY BOTH MAP (DIE MAP) (UNK BLK)$ PRI1 ALERT BOTH MAP (UNK BLK)$ There are some additional parameters that can be set in TRKRCSEL, but it's not clear what they are or do, and apparently if you don't define them, some sane defaults are used, so I'll leave them unset. With those ISDN parameters taken care of, we can define the trunk subgroups in TRKSGRP. We add an entry for out CLLI (LBRDILLG01T0). Only subgroup 0 is valid for ISDN trunks. For ISDN, the cardcode is DS1SIG, SGRPVAR is ISDN. PSPDSEIZ is the timeout for partial dial seizure (reception of first digit). PARTDIAL is the same but for any digit after the first. VERSION is the ISDN protocol version. CRLENGTH determines the number of bytes to use for the call reference value. BCHNEG determines whether B channels can be negotiated (during setup, I assume?). BCHGLARE determines whether the switch will STAND or YIELD in the event of B-channel glare. IFCLASS determines whether the switch is the network or user side of the connection. CONFIG should be set to PT_PT for normal point to point trunks. LOCATION determines the location to be used for creating cause codes. SAT should be set based on whether satellite switching is used in the trunk. ECSTAT is set to UNEQ for no echo canceller. TRKGRDTH sets the lockout timeout. L1FLAGS set to Y is normal for most vendors and has to do with Q.921 flags. We can choose the ISDNPARM entry with PARMNAME. Our D-channel is in LTC 0, span 0, channel 24. It is 64k and uses normal polarity HDLC. We don't have a backup D channel, so we enter $. We don't have any options, so we enter $. SGRPKEY CARDCODE SGRPVAR SGRPVAR ---------------------------------------------------------------------------- LBRDILLG01T0 0 DS1SIG ISDN 10 12 87Q931 2 N YIELD USER PT_PT USER N UNEQ 75 Y PRI1 LTC 0 0 24 64K HDLC $ $ Now we can define the trunk members in TRKMEM. We do this for each of the B channels. We use our previously defined CLLI, create an entry for each B-channel with EXTRKNM starting from 0, trunk subgroup is 0, and specify the channels on our LTC 0, span 0, channel 1 through 23. CLLI EXTRKNM SGRP MEMVAR ----------------------------------------------------------- LBRDILLG01T0 0 0 LTC 0 0 1 LBRDILLG01T0 1 0 LTC 0 0 2 LBRDILLG01T0 2 0 LTC 0 0 3 LBRDILLG01T0 3 0 LTC 0 0 4 LBRDILLG01T0 4 0 LTC 0 0 5 LBRDILLG01T0 5 0 LTC 0 0 6 LBRDILLG01T0 6 0 LTC 0 0 7 LBRDILLG01T0 7 0 LTC 0 0 8 LBRDILLG01T0 8 0 LTC 0 0 9 LBRDILLG01T0 9 0 LTC 0 0 10 LBRDILLG01T0 10 0 LTC 0 0 11 LBRDILLG01T0 11 0 LTC 0 0 12 LBRDILLG01T0 12 0 LTC 0 0 13 LBRDILLG01T0 13 0 LTC 0 0 14 LBRDILLG01T0 14 0 LTC 0 0 15 LBRDILLG01T0 15 0 LTC 0 0 16 LBRDILLG01T0 16 0 LTC 0 0 17 LBRDILLG01T0 17 0 LTC 0 0 18 LBRDILLG01T0 18 0 LTC 0 0 19 LBRDILLG01T0 19 0 LTC 0 0 20 LBRDILLG01T0 20 0 LTC 0 0 21 LBRDILLG01T0 21 0 LTC 0 0 22 LBRDILLG01T0 22 0 LTC 0 0 23 Next we declare a logical terminal group for the PRI in LTGRP. It's not clear if we have to do this or if we can use the default ISDN LTGRP. GROUP GROUPNO OPTIONS -------------------------- PRI 16 $ PRIPROF controls protocol variants. We create an entry for NI2, and lean on the UofAl translations a bit for the OPTIONS. PROFNAME VARINFO SWITCH ---------------------------------------------------------------------------- PROFPRI NIPRI NI2V1 (UNTONNPI)$ Now we define the logical terminal in LTDEF. We add a logical terminal to our LTGRP PRI. The only supported LTAP for PRIs is B for circuit switching. PRA indicated the PRA type, 23 B channels, NIPRI ISDN variant and the NI2V1 issue. We use the PROFPRI profile, and the NOPMD option is default (we entered $ and didn't specify additional options). LTKEY LTAP CLASSREF ---------------------------------------------------------------------------- PRI 1 B PRA 23 NIPRI NI2V1 PROFPRI (NOPMD ) $ Next we add an LTMAP to point our PRI 1 LTDEF at our CLLI. PRI requires an option of TEI 0. TUPLE TO BE ADDED: PRI 1 CLLI LBRDILLG01T0 ( TEI 0)$ When the entry is created in LTMAP, the DMS also updates table TRKGRP with the LTID: GRPKEY GRPINFO ---------------------------------------------------------------------------- LBRDILLG01T0 PRA 0 PRAC NCRT ASEQ N (PRI 1) $ $ We also need to consider clocking for the switch. In my case, as wrong as it sounds, I'll have the DMS synchronize to my Cisco 3845. This is because the 3845 is always on in my setup, so it is the best device to use as a clock master at the moment. It doesn't have to be, but the way it's all set up currently, it just makes the most sense. Clock settings are set in SYNCLK. Since my switch is currently set to free run after I cleared the tables previously, I won't have to switch to free run before changing the clock synchronization settings. Since the tuple in SYNCLK always exists, we'll have to change it rather than add one. We'll be a stratum 3 clock, clocked off of our trunk in our LTC (LTC 0 circuit 0). Apparently the datafill manual advises that for LTCs (and a number of other XPMs) the circuit number choices are 0 and 8, but it seems like any circuit can be specified. LK0_REG determines which register on a 2-link DS1 card gets used (relevant for XPM DS1 interfaces). Possible choices are 0 or 1, but it's not clear which one applies to what circuits. The DMS will make sure you use the right one, so there's a bit of trial and error here. The DMS also really wants you to define a secondary timing link, and it enforces some rules. I think it wants the links used for timing to be in different shelves. CLKKEY CLKDATA OFFCDATA ----------------------------------------------------- 0 STRAT3 SLAVE LTC 0 0 0 LTC 0 2 1 Now that we've got everything configured as far as the trunk goes, we'll need to put the trunk into service. When we created the trunk initially, it went into the INB or INstallation Busy state. We must manually put the trunk in service using mapci;mtc;trks;ttp;post g lbrdillg01t0;bsy all followed by rts all. We need to do similar with the D-channel in mapci;mtc;trks;pradch;post gd lbrdillg01t0;bsy all followed by rts all. And finally, we need to do the DS1 carrier itself in mapci;mtc;trks;carrier;post ltc 0 0;bsy all; followed by rts all. [insert thing about checking and switching the clocking over to train on the link here] At this point, hopefully we've got everything configured for the PRI to come up. We don't yet have any outgoing or incoming routing set. We'll start with outgoing. First is to set up a route. I'll add my first route in OFRT. I picked a free route reference number and added an ISA type route to the route list. ISA is Integrated Services Access. There may be other types of routes that would work, but this will do for now. I did not enable off-hook queueing, call-back queueing, or expensive route warning tones. I pointed the route selector at the CLLI I defined for the trunk and set the number type to public. I disabled operator access, did not use a transit network selector, did not require calling number identification, and chose no digit manipulation. I ended the route list and did not use any additional options for the route. RTE RTELIST OPTIONS ---------------------------------------------------------------------------- 3 ( ISA N N N LBRDILLG01T0 N PUB NONE N N 0)$ $ With the route created, we need to set up the translations to send some traffic out using it. Back in FNPACONT, we enter the RTEREF subtable for the 222 (SCDP) FNPA. Here, we add a RTEREF to point to our OFRT route list. We use the T selector for Table, and point to OFRT 3. Then we end our route list. Note that we could have implemented the ISA selector here directly, if we wanted to. RTE RTELIST ---------------------------------------------------------------------------- 1 ( T OFRT 3)$ Then we back out and enter the FNPACODE subtable for the 222 FNPA. For now, we'll add a couple ranges around our existing 563 code to encompass all possible SCDP (noting that we're covering a couple reserved codes like N11 etc.). FROMDIGS TODIGS RTEREF CAMAAUTH ------------------------------- 200 562 1 Y 563 563 563 Y 564 999 1 Y [add text for ltcalls] LTID XLARTSEL OPTIONS ---------------------------------------------------------------------------- PRI 1 PUB XLALEC 0 222_POTS_0 NLCA_NILLA_0 $