Sunday, 27 November 2011

Caller ID Display over ISDN PRI - PART 1

I thought to divide this topic into two blogs to make it more clear. First we will understand Caller ID Display from ISDN side, then we will map it to call control protocols (MGCP/SIP/H323).


Advanced ISDN IEs Configuration (Facility & Display)


Display IE is used mainly to provide the calling name over PRI Trunk. It can be sent in SETUP, ALERTING, or CALLPROC messages. For example,

Nov 23 12:36:11.610: ISDN Se0/2/0:23 Q931: TX -> SETUP pd = 8  callref = 0x00A3
        Bearer Capability i = 0x8090A2
                Standard = CCITT
                Transfer Capability = Speech 
                Transfer Mode = Circuit
                Transfer Rate = 64 kbit/s
        Channel ID i = 0xA98383
                Exclusive, Channel 3
        Progress Ind i = 0x8183 - Origination address is non-ISDN 
        Display i = 'user01'
        Calling Party Number i = 0x4180, '2023001'
                Plan:ISDN, Type:Subscriber(local)
        Called Party Number i = 0xC1, '3023001'
                Plan:ISDN, Type:Subscriber(local)
Nov 23 12:36:11.642: ISDN Se0/2/0:23 Q931: RX <- CALL_PROC pd = 8  callref = 0x80A3
        Channel ID i = 0xA98383
                Exclusive, Channel 3
Nov 23 12:36:11.694: ISDN Se0/2/0:23 Q931: RX <- ALERTING pd = 8  callref = 0x80A3
        Progress Ind i = 0x8188 - In-band info or appropriate now available

However, Display IE isn’t enabled by default. In order to enable it different methods are available.

1)
interface Serial0/2/0:23
 no ip address
 encapsulation hdlc
 isdn switch-type primary-ni
 isdn incoming-voice voice
 isdn outgoing display-ie
 no cdp enable

2)
interface Serial0/2/0:23
 no ip address
 encapsulation hdlc
 isdn switch-type primary-ni
 isdn incoming-voice voice
 isdn outgoing ie display
 no cdp enable

Also, calling name is considered as supplementary service and therefore it can be carried over Facility IE instead of Display IE. Facility IE is enabled by default on PRI trunk, however, calling name as supplementary service isn’t enabled by default. Facility IE can be carried in SETUP and ALERTING messages.

interface Serial0/2/0:23
 no ip address
 encapsulation hdlc
 isdn switch-type primary-ni
 isdn incoming-voice voice
 isdn supp-service name calling
 no cdp enable
end

Nov 23 12:26:23.558: ISDN Se0/2/0:23 Q931: TX -> SETUP pd = 8  callref = 0x009D
        Bearer Capability i = 0x8090A2
                Standard = CCITT
                Transfer Capability = Speech 
                Transfer Mode = Circuit
                Transfer Rate = 64 kbit/s
        Channel ID i = 0xA98383
                Exclusive, Channel 3
        Facility i = 0x9F8B0100A10E0201080201008006757365723031
                Protocol Profile =  Networking Extensions
                0xA10E0201080201008006757365723031
                Component = Invoke component
                        Invoke Id = 8
                        Operation = CallingName
                                Name Presentation Allowed Extended
                                Name = user01
        Progress Ind i = 0x8183 - Origination address is non-ISDN 
        Calling Party Number i = 0x4180, '2023001'
                Plan:ISDN, Type:Subscriber(local)
        Called Party Number i = 0xC1, '3023001'
                Plan:ISDN, Type:Subscriber(local)
Nov 23 12:26:23.594: ISDN Se0/2/0:23 Q931: RX <- CALL_PROC pd = 8  callref = 0x809D
        Channel ID i = 0xA98383
                Exclusive, Channel 3
Nov 23 12:26:23.642: ISDN Se0/2/0:23 Q931: RX <- ALERTING pd = 8  callref = 0x809D
        Progress Ind i = 0x8188 - In-band info or appropriate now available

The same command should be applied on the terminating gateway in order to decode the Facility IE value as calling name and send the displayed text to the phone (in case of CME) or to CUCM. Else, Facility IE will be forwarded without decode (raw value) and the calling name won’t be displayed since Facility IE isn’t recognized by phone or CUCM (KEEP THIS IN MIND CAUSE WE WILL USE IT IN THE SECOND BLOG).

Notes:
1.       Calling Name (CNAM) as Facility IE and Display IE can be enabled simultenously.
2.       IEs can be enabled/disabled invidually under D-Channel configuration. E.g. “no isdn outgoing ie facility”, “no isdn outgoing ie calling-number”, “no isdn outgoing ie called-number”, etc. This can be used to hide calling number by disabling Calling Number IE. Still CLID feature can be used as well.
3.       Converting the hex value of Facility IE to ASCII, you can see the calling name.

Another hint is that CNAM can be sent as Facility IE without enabling CNAM as supplementary service. How??

IOS Gateways have the option to decode application protocol data units (APDUs) for supplementary services. If this command is not enabled, data units are not interpreted and are tunneled through the router.

voice service voip
qsig decode

Decoding those APDUs by the gateway locally enables it to use their contents. Since those APDUs are representing supplementary services, then those are Facility IEs.

Back to name display, once this feature is enabled on both gateways (mandatory on both gateways), IOS will encode all supplementary services on one side to Facility IE and decode them on the other side. Those supplementary services include CNAM and ALERTING name (display the name of called party on calling phone).

Very Important TIP: This is the only way to display the ALERTING NAME on calling phone. Note that ALERTING NAME is carried in the Facility IE of ALERTING message.

Nov 23 12:13:12.123: ISDN Se0/2/0:23 Q931: TX -> SETUP pd = 8  callref = 0x0095
        Bearer Capability i = 0x8090A2
                Standard = CCITT
                Transfer Capability = Speech 
                Transfer Mode = Circuit
                Transfer Rate = 64 kbit/s
        Channel ID i = 0xA98383
                Exclusive, Channel 3
        Facility i = 0x9FAA068001018201018B0100A10E02012D0201008006757365723031
                Protocol Profile =  Networking Extensions
                0x010182
                0x01018B
                0x0100
                0xA10E02012D0201008006757365723031
                Component = Invoke component
        Progress Ind i = 0x8183 - Origination address is non-ISDN 
        Calling Party Number i = 0x4180, '2023001'
                Plan:ISDN, Type:Subscriber(local)
        Called Party Number i = 0xC1, '3023001'
                Plan:ISDN, Type:Subscriber(local)
Nov 23 12:13:12.159: ISDN Se0/2/0:23 Q931: RX <- CALL_PROC pd = 8  callref = 0x8095
        Channel ID i = 0xA98383
                Exclusive, Channel 3
Nov 23 12:13:12.219: ISDN Se0/2/0:23 Q931: RX <- ALERTING pd = 8  callref = 0x8095
        Facility i = 0x9FAA068001018201018B0100A10E02012A0201018006757365723032
                Protocol Profile =  Networking Extensions
                0x010182
                0x01018B
                0x0100
                0xA10E02012A0201018006757365723032
                Component = Invoke component, Unsupported operation 
        Progress Ind i = 0x8188 - In-band info or appropriate now available

Note: In case CNAM as supplementary service is enabled as well as ‘qsig decode’ feature, ‘qsig decode’ feature will take precedence.
Also note the difference between Facility IE for CNAM as supplementary service and CNAM using ‘qsig decode’ feature. For this reason ‘qsig decode’ should be enabled at both sides in order to decode the Facility IE.

At this stage ISDN part should be clear and we can start the second blog.