Monday, November 28, 2005

ss7boost's Role Expands

ss7boost, the ISUP state machine that sits on top of ss7box, is responsible for translating trunk group indicator to span/chan on outbound calls, and translating CIC to span/chan on inbound calls. Design discussions today explored that value of adding support for phone number to span/chan translations as a way to supress most trunk-side PSTN detail into ss7boost instead of handling it in higher levels. The discussion was prompted by questions from a user on how certain per-number services and selections would be configured and handled. We realized that under the current design guidlelines, these functions could be handled in several places. It makes more sense to keep those functions inside of ss7boost and expand the definition of the purpose and function of ss7boost.

The product composed of Sangoma-Woomerang-ss7box-ss7boost may get a name soon. The Release 0.0.1 content and function is being defined. There should be a link to this description forthcoming.

ss7box.com has returned to service. The website and email are both working now. The content is returning steadily.

Sunday, November 27, 2005

ss7box.com Out Of Order

The ss7box.com web host provider's HDD failed completely. For some reason the backups of the account are completely lost as well. The site content can be reassembled from the pieces archived on the author's CVS and HDD but it will take some time. The author is still waiting for ssh/scp access as well.

Saturday, November 26, 2005

Calls In/Out of PSTN Working

Calls inbound from and outbound to the ANSI PSTN over an SS7 inter-machine trunk were made using the Sangoma-ss7box-Woomerang-Asterisk combination. This is a significant milestone in a project that has been discussed and planned since mid-year 2003.

What' s next? There is a big todo list on the ss7box wiki. In the comming week we will work on automating installation of the Sangoma-Woomerang-ss7box-ss7boost-Asterisk toolset. We will also begin ITU-izing the ss7boost ISUP state machine component in Pakistan and Paraguay. There will be a discussion about per number ISUP option configuration - where and how it should be done to minimize impact to current design, be maintainable, and not force the user into a confusing sequence of config file edits.

The ss7box website has been down since 2005-11-25 because of a massive failure of the shared host server. The web host support group advised today at 12PM to open a trouble ticket on web sites that were still missing. A trouble ticket is open on ss7box.com and hopefully it will be available again soon.

Thursday, November 17, 2005

CNAM Query Demo

The ss7box CNAM system was successfully demonstrated today. This system accepts 10 digit phone numbers as input from a TCP socket, forms a CNAM query that is launched into the North American SS7 network, analyzes the response, and forms a simple response on the same socket that delivered the query. A Python script was used to deliver the query and print the response to the ss7box system. An example of the output is shown below.

Phone number: 9054741990
---> D 710 UDT CNAM response:return result (Network Lookup) gn:SANGOMA TECHNLG

Outbound call testing

Outbound call testing began today. This is where a call is originated on the Asterisk/media gateway side toward the PSTN side. The number we dialed was terminated on the adjacent switch which sent and ANS immediately. This is within spec but ss7boost was expecting an ACM to preceed the ANS. We also found a need to implement the Circuit Reset Sending state machine (CRS) sooner rather than later.

We found a need for a special case of aborting a call waiting for span/chan assignment in the Woomerang component which is a minor fix.

In the course of testing we elected to manually reset the circuits in the connected trunk group which exposed us to the Circuit Group Reset procedure. Theis procedure runs indefinitely until 1) the CGR Reception state machine satisfies it, or 2) it is manually stopped on the switch. We'll have to build the CGRR state machine sooner rather than later too.

Tuesday, November 15, 2005

Call Completes With Voice

Here is the ss7boost output of a complete incoming call (PSTN to Asterisk). If you call the number 9897200000 and wait a few seconds you'll get a voice mail announcement (this will not always be in effect as this is a test system).

I:../common/udp_sockets.c:check_udp_socket:received a msg:length/function follow:64:1
I:sb_sgw_sm.c:discrim_sgw_msg:MARK:0
I:sb_sgw_sm.c:handle_m3ua_x4_msg:MARK:0
I:sb_sprc.c:isup_sprc_inbound:MARK:0
I:msu_decode.c:msu_decode:MARK:0
I:msu_decode.c:handle_m3ua_isup_transfer_msg:MARK:0
CIC: 8
MSG TYPE: IAM
NATURE OF CONNECTION INDICATORS:
SATELLITE INDICATOR: 0x00
CONTINUITY CHECK INDICATOR: 0x00
ECHO CONTROL DEVICE INDICATOR: 0x00
FORWARD CALL INDICATORS:
INCOMING INTL CALL IND: 0x00
END TO END METHOD IND: 0x00
INTERWORKING IND: 0x00
IAM SEGMENTATION IND: 0x00
ISDN USER_PART IND: 0x01
ISDN USER_PART PREFERENCE IND: 0x00
ISDN ACCESS IND: 0x00
SCCP METHOD IND: 0x00
SPARE: 0x00
RESERVED: 0x00
CALLING PARTY CATEGORY: 0x0a
MANDATORY VLP:
NAME: USER SERVICE INFORMATION
LENGTH: 3
OCTET 0: 0x80
OCTET 1: 0x90
OCTET 2: 0xa2
MANDATORY VLP:
NAME: CALLED PARTY NUMBER
LENGTH: 7
OCTET 0: 0x03
OCTET 1: 0x10
OCTET 2: 0x89
OCTET 3: 0x79
OCTET 4: 0x02
OCTET 5: 0x00
OCTET 6: 0x00
---CdPA/CgPA DECODE---
NUMBER OF DIALED DIGITS: 10
NATURE OF ADDRESS INDICATOR: 0x03
SCREENING INDICATOR: 0x00
ADDRESS PRESENTATION INDICATOR: 0x00
NUMBERING PLAN: 0x01
DIALED DIGITS: 9897200000
OPTIONAL PARAMETERS - BEGIN
OPTIONAL VLP:
NAME VALUE: 10 - CALLING PARTY ADDRESS
LENGTH: 7
OCTET 0: 0x03
OCTET 1: 0x13
OCTET 2: 0x19
OCTET 3: 0x89
OCTET 4: 0x43
OCTET 5: 0x77
OCTET 6: 0x06
---CdPA/CgPA DECODE---
NUMBER OF DIALED DIGITS: 10
NATURE OF ADDRESS INDICATOR: 0x03
SCREENING INDICATOR: 0x03
ADDRESS PRESENTATION INDICATOR: 0x00
NUMBERING PLAN: 0x01
DIALED DIGITS: 9198347760
OPTIONAL VLP:
NAME VALUE: 196 - (parm name string not defined)
LENGTH: 3
OCTET 0: 0x19
OCTET 1: 0x79
OCTET 2: 0x55
(No decode for this ISUP parameter)
OPTIONAL VLP:
NAME VALUE: 234 - (parm name string not defined)
LENGTH: 1
OCTET 0: 0x00
(No decode for this ISUP parameter)
OPTIONAL PARAMETERS - END
I:sb_toolbox.c:find_trunk_group:MARK:0
tg 0
I:sb_toolbox.c:convert_cic_to_span_chan:MARK:0
cic 8 cic_base 1 ncic 7 span 0 chan 8
I:sb_mgw_tx.c:send_call_start_to_mg:MARK:0
I:span 0 chan 8 tg 0 cic 8 sls 0 nd 10 cld 9897200000 ng 0 clg spc 5-39-221 imt_pc 5-39-220
I:sb_sgw_tx.c:send_acm_to_ss7box:MARK:0
I:span 0 chan 8 tg 0 cic 8 sls 0 nd 10 cld 9897200000 ng 0 clg spc 5-39-221 imt_pc 5-39-220
I:isup_event.c:send_canned_acm:MARK:0
I:../common/udp_sockets.c:check_udp_socket:received a msg:length/function follow:96:131
I:sb_mgw_sm.c:discrim_mgw_msg:MARK:0
I:sb_sgw_tx.c:send_ans_to_ss7box:MARK:0
I:span 0 chan 8 tg 0 cic 8 sls 0 nd 10 cld 9897200000 ng 0 clg spc 5-39-221 imt_pc 5-39-220
I:isup_event.c:send_canned_ans:MARK:0
I:../common/udp_sockets.c:check_udp_socket:received a msg:length/function follow:32:1
I:sb_sgw_sm.c:discrim_sgw_msg:MARK:0
I:sb_sgw_sm.c:handle_m3ua_x4_msg:MARK:0
I:sb_sprc.c:isup_sprc_inbound:MARK:0
I:msu_decode.c:msu_decode:MARK:0
I:msu_decode.c:handle_m3ua_isup_transfer_msg:MARK:0
CIC: 8
MSG TYPE: REL
MANDATORY VLP:
NAME: CAUSE INDICATOR
LENGTH: 2
OCTET 0: 0x80
OCTET 1: 0x90
---CAUSE INDICATOR DECODE---
LOCATION: 0
CAUSE VALUE CODING STANDARD: 0
CAUSE CLASS: 0x01 CAUSE VALUE : 0x00
---SUPPLEMENTAL INTERPRETATION---
CAUSE VALUE CODING STANDARD: CCITT/DEFAULT
CAUSE: NORMAL CLEARING
OPTIONAL PARAMETERS - BEGIN
OPTIONAL PARAMETERS - END
I:sb_toolbox.c:find_trunk_group:MARK:0
tg 0
I:sb_toolbox.c:convert_cic_to_span_chan:MARK:0
cic 8 cic_base 1 ncic 7 span 0 chan 8
I:sb_mgw_tx.c:send_call_stopped_to_mg:MARK:0
I:sb_toolbox.c:find_trunk_group:MARK:0
tg 0
I:sb_toolbox.c:convert_cic_to_span_chan:MARK:0
cic 8 cic_base 1 ncic 7 span 0 chan 8
I:span 0 chan 8 tg 0 cic 8 sls 0 nd 10 cld 9897200000 ng 0 clg spc 5-39-221 imt_pc 5-39-220
I:sb_sgw_tx.c:send_rlc_to_ss7box:MARK:0
I:span 0 chan 8 tg 0 cic 8 sls 0 nd 10 cld 9897200000 ng 0 clg spc 5-39-221 imt_pc 5-39-220
I:isup_event.c:send_canned_rlc:MARK:0

First Real Call

The following output from ss7boost (ISUP state machine connected to ss7box) is from the first real phone call from a DTI DXC 4K (CLLI CRNNMIAS00W) in Corunna, Michigan, USA (thanks Collin).

The Asterisk component was not connected so the call did not complete. The call on the calling switch timed out and sent a REL and ss7boost responded with a RLC.

I:../common/udp_sockets.c:check_udp_socket:received a msg:length/function follow:64:1
I:sb_sgw_sm.c:discrim_sgw_msg:MARK:0
I:sb_sgw_sm.c:handle_m3ua_x4_msg:MARK:0
I:sb_sprc.c:isup_sprc_inbound:MARK:0
I:msu_decode.c:msu_decode:MARK:0
I:msu_decode.c:handle_m3ua_isup_transfer_msg:MARK:0
CIC: 8
MSG TYPE: IAM
NATURE OF CONNECTION INDICATORS:
SATELLITE INDICATOR: 0x00
CONTINUITY CHECK INDICATOR: 0x00
ECHO CONTROL DEVICE INDICATOR: 0x00
FORWARD CALL INDICATORS:
INCOMING INTL CALL IND: 0x00
END TO END METHOD IND: 0x01
INTERWORKING IND: 0x00
IAM SEGMENTATION IND: 0x00
ISDN USER_PART IND: 0x01
ISDN USER_PART PREFERENCE IND: 0x00
ISDN ACCESS IND: 0x00
SCCP METHOD IND: 0x00
SPARE: 0x00
RESERVED: 0x01
CALLING PARTY CATEGORY: 0x0a
MANDATORY VLP:
NAME: USER SERVICE INFORMATION
LENGTH: 3
OCTET 0: 0x80
OCTET 1: 0x90
OCTET 2: 0xa2
MANDATORY VLP:
NAME: CALLED PARTY NUMBER
LENGTH: 7
OCTET 0: 0x03
OCTET 1: 0x10
OCTET 2: 0x89
OCTET 3: 0x79
OCTET 4: 0x02
OCTET 5: 0x00
OCTET 6: 0x00
---CdPA/CgPA DECODE---
NUMBER OF DIALED DIGITS: 10
NATURE OF ADDRESS INDICATOR: 0x03
SCREENING INDICATOR: 0x00
ADDRESS PRESENTATION INDICATOR: 0x00
NUMBERING PLAN: 0x01
DIALED DIGITS: 9897200000
OPTIONAL PARAMETERS - BEGIN
OPTIONAL VLP:
NAME VALUE: 10 - CALLING PARTY ADDRESS
LENGTH: 7
OCTET 0: 0x03
OCTET 1: 0x13
OCTET 2: 0x89
OCTET 3: 0x79
OCTET 4: 0x34
OCTET 5: 0x04
OCTET 6: 0x99
---CdPA/CgPA DECODE---
NUMBER OF DIALED DIGITS: 10
NATURE OF ADDRESS INDICATOR: 0x03
SCREENING INDICATOR: 0x03
ADDRESS PRESENTATION INDICATOR: 0x00
NUMBERING PLAN: 0x01
DIALED DIGITS: 9897434099
OPTIONAL VLP:
NAME VALUE: 196 - (parm name string not defined)
LENGTH: 3
OCTET 0: 0x89
OCTET 1: 0x79
OCTET 2: 0x34
(No decode for this ISUP parameter)
OPTIONAL VLP:
NAME VALUE: 234 - (parm name string not defined)
LENGTH: 1
OCTET 0: 0x00
(No decode for this ISUP parameter)
OPTIONAL PARAMETERS - END
I:sb_toolbox.c:find_trunk_group:MARK:0
tg 0
I:sb_toolbox.c:convert_cic_to_span_chan:MARK:0
cic 8 cic_base 1 ncic 7 span 0 chan 8
I:sb_mgw_tx.c:send_call_start_to_mg:MARK:0
I:span 0 chan 8 tg 0 cic 8 sls 0 nd 10 cld 9897200000 ng 0 clg spc 5-39-221 imt_pc 5-39-220
I:sb_sgw_tx.c:send_acm_to_ss7box:MARK:0
I:span 0 chan 8 tg 0 cic 8 sls 0 nd 10 cld 9897200000 ng 0 clg spc 5-39-221 imt_pc 5-39-220
I:isup_event.c:send_canned_acm:MARK:0
I:../common/udp_sockets.c:check_udp_socket:received a msg:length/function follow:32:1
I:sb_sgw_sm.c:discrim_sgw_msg:MARK:0
I:sb_sgw_sm.c:handle_m3ua_x4_msg:MARK:0
I:sb_sprc.c:isup_sprc_inbound:MARK:0
I:msu_decode.c:msu_decode:MARK:0
I:msu_decode.c:handle_m3ua_isup_transfer_msg:MARK:0
CIC: 8
MSG TYPE: REL
MANDATORY VLP:
NAME: CAUSE INDICATOR
LENGTH: 2
OCTET 0: 0x80
OCTET 1: 0x90
---CAUSE INDICATOR DECODE---
LOCATION: 0
CAUSE VALUE CODING STANDARD: 0
CAUSE CLASS: 0x01 CAUSE VALUE : 0x00
---SUPPLEMENTAL INTERPRETATION---
CAUSE VALUE CODING STANDARD: CCITT/DEFAULT
CAUSE: NORMAL CLEARING
OPTIONAL PARAMETERS - BEGIN
OPTIONAL PARAMETERS - END
I:sb_toolbox.c:find_trunk_group:MARK:0
tg 0
I:sb_toolbox.c:convert_cic_to_span_chan:MARK:0
cic 8 cic_base 1 ncic 7 span 0 chan 8
I:sb_mgw_tx.c:send_call_stopped_to_mg:MARK:0
I:sb_toolbox.c:find_trunk_group:MARK:0
tg 0
I:sb_toolbox.c:convert_cic_to_span_chan:MARK:0
cic 8 cic_base 1 ncic 7 span 0 chan 8
W:sb_mgw_tx.c:send_call_stopped_to_mg:REL dropped:could not validate CIC
I:sb_sgw_tx.c:send_rlc_to_ss7box:MARK:0
I:span 0 chan 8 tg 0 cic 8 sls 0 nd 10 cld 9897200000 ng 0 clg spc 5-39-221 imt_pc 5-39-220
I:isup_event.c:send_canned_rlc:MARK:0

Responding to RSC

Working on the ISUP state machine suite called ss7boost. Program a monolithic source code file (with exception of MSU decoders and encoders). Split source file apart along functional lines. Created the SPRC, CPC, and MPC functional entitities to follow the ISUP SDL specs because it's easier to develop with naming similarities.

Calls work in the lab but now were in the field in Michigan, Pakistan, Paraguay, and India. New installations coming soon in Bulgaria and Phillipines.

First thing we encountered in .mi was the RSC message. We didn't bother with the maintenance ISUP messages in the lab so we expected to be greeted with this type of message.

We also found out very quickly that the system for mapping trunk group and CIC to span and channel was too simple and inflexible. That is now changed but not thoroughly tested.

This is where the author leaves off tonight:

I:../common/udp_sockets.c:check_udp_socket:received a msg:length/function follow:27:1
I:sb_sgw_sm.c:discrim_sgw_msg:MARK:0
I:sb_sgw_sm.c:handle_m3ua_x4_msg:MARK:0
I:sb_sprc.c:isup_sprc_inbound:MARK:0
I:../libmsu/msu_decode.c:msu_decode:MARK:0
I:../libmsu/msu_decode.c:handle_m3ua_isup_transfer_msg:MARK:0
CIC: 8
MSG TYPE: RSC
I:../libmsu/msu_decode.c:rsc_decode:MARK:0
I:sb_toolbox.c:find_trunk_group:MARK:0
tg 0
I:sb_toolbox.c:convert_cic_to_span_chan:MARK:0
cic 8 cic_base 1 ncic 7 span 0 chan 8
I:sb_mpc.c:ckt_reset_reception:MARK:0
I:sb_sgw_tx.c:send_rlc_to_ss7box:MARK:0
I:span 0 chan 8 tg 0 cic 0 sls 0 nd 0 cld ng 0 clg spc 0-0-0 imt_pc 0-0-0
I:isup_event.c:send_canned_rlc:MARK:0

An RLC is being sent in response to an RSC but the RLC is improperly filled out because the CDR for span 0 chan 8 is empty. Will fix by loading CDR with info from RSC.