[asterisk-ss7] chan_ss7-1.4.3/1.2.1 MTP3D - No signaling channels

Matthias van der Vlies mvdvlies at gmail.com
Fri Dec 3 07:39:38 CST 2010


Dear all,

Two weeks ago a working interconnection with another carrier went down, 
due to a reboot of our system. Since then chan_ss7 stopped working.

When I load the module all looks fine:

apollo*CLI> module load chan_ss7.so
[Dec  3 14:12:04] NOTICE[27660]: config.c:804 load_config_link: 
Configured link 'KPN-XXX-sig' on linkset 'XXX-XXX', firstcic=1
[Dec  3 14:12:04] NOTICE[27660]: config.c:804 load_config_link: 
Configured link 'KPN-XXX-Z05-01' on linkset 'XXX-XXX', firstcic=1
[Dec  3 14:12:04] NOTICE[27660]: config.c:804 load_config_link: 
Configured link 'KPN-XXX-sig' on linkset 'XXX-XXX', firstcic=1
[Dec  3 14:12:04] NOTICE[27660]: config.c:804 load_config_link: 
Configured link 'KPN-XXX-Z05-01' on linkset 'KPN-XXX', firstcic=1
[Dec  3 14:12:04] NOTICE[27660]: config.c:1277 load_config: Configuring 
OPC XXXX, DPC XXX for linkset 'XXX-XXX'.
[Dec  3 14:12:04] NOTICE[27660]: config.c:1277 load_config: Configuring 
OPC XXXX, DPC XXX for linkset 'XXX-XXX'.
     -- Starting cluster thread, pid=27628.
     -- Starting continuity check thread, pid=27628.
[Dec  3 14:12:04] NOTICE[27660]: mtp.c:2378 mtp_init: Initialising 2 
signalling links
     -- Starting MTP thread, pid=27628.
     -- Starting monitor thread, pid=27628.
[Dec  3 14:12:04] NOTICE[28090]: mtp.c:2259 mtp_init_link: Initialising 
link 'XXX-XXX-Z05-01/16', linkset 'XXX-XXX', sls 0.
[Dec  3 14:12:04] NOTICE[28090]: mtp.c:2277 mtp_init_link: Signalling 
channel on link 'KPN-XXX-Z05-01/16' has signalling type 0x80080.
[Dec  3 14:12:04] NOTICE[28090]: mtp.c:2259 mtp_init_link: Initialising 
link 'XXX-XXX-Z05-01/16', linkset 'XXX-XXX', sls 0.
[Dec  3 14:12:04] NOTICE[28090]: mtp.c:2277 mtp_init_link: Signalling 
channel on link 'XXX-XXX-Z05-01/16' has signalling type 0x80080.
     -- SS7 channel loaded successfully.

When I issue a reset I see the following:

[Dec  3 14:15:30] NOTICE[28090]: l4isup.c:1442 t22_timeout: T22 timeout 
(No "circuit group reset acknowledge" from peer) CIC=1.
[Dec  3 14:15:30] WARNING[28090]: l4isup.c:442 mtp_enqueue_isup_packet: 
MTP send fifo not ready, lsi=0.
[Dec  3 14:15:30] NOTICE[28090]: l4isup.c:1442 t22_timeout: T22 timeout 
(No "circuit group reset acknowledge" from peer) CIC=17.
[Dec  3 14:15:30] WARNING[28090]: l4isup.c:442 mtp_enqueue_isup_packet: 
MTP send fifo not ready, lsi=0.
[Dec  3 14:15:30] NOTICE[28090]: l4isup.c:1442 t22_timeout: T22 timeout 
(No "circuit group reset acknowledge" from peer) CIC=1.
[Dec  3 14:15:30] WARNING[28090]: l4isup.c:442 mtp_enqueue_isup_packet: 
MTP send fifo not ready, lsi=0.
[Dec  3 14:15:30] NOTICE[28090]: l4isup.c:1442 t22_timeout: T22 timeout 
(No "circuit group reset acknowledge" from peer) CIC=17.
[Dec  3 14:15:30] WARNING[28090]: l4isup.c:442 mtp_enqueue_isup_packet: 
MTP send fifo not ready, lsi=0.

Conclusion, the module is unable to contact the MTP3D. When I run it 
manually I get the following message:

No signaling channels

Which comes from mtp3d.c:

349   for (i = 0; i < this_host->n_slinks; i++) {
350     struct link* link = this_host->slinks[i];
351     if (strcmp(link->mtp3server_host, this_host->name) == 0) {
352       if (*link->mtp3server_port) {
353         port = atoi(link->mtp3server_port);
354         link->mtp3fd = mtp3_setup_socket(port, 0);
355         if (link->mtp3fd == -1) {
356           ast_log(LOG_ERROR, "Could not setup mtp3 listen port %d, 
%d:%s\n", port, errno, strerror(errno));
357           return;
358         }
359         printf("Using mtp3 service port %d, socket %d\n", port, 
link->mtp3fd);
360         n_listen++;
361       }
362     }
363   }
364   if (!n_listen) {
365     fprintf(stderr, "No signaling channels\n");
366     exit(1);
367   }

See the exit(1), meaning the MTP daemon shuts down. When I comment it 
out, the same problem exists because there were no sockets opened. So I 
looked for code setting link->mtp3server_host and link->mtp3server_port. 
It's in config.c in a rather odd place:

663     } else if(0 == strcasecmp(v->name, "schannel")) {
  664       link->remote = 0;
  665       spec = &chan_spec_buf[0];
  666       if (strcmp(v->value, "")) {
  667         if ((sscanf(v->value, "%[^@]@%[^:]:%s", chan_spec_buf, 
link->mtp3server_host, link->mtp3server_port) == 3) || (sscanf(v->value, 
"%[^@]@%[^:]", chan_spec_buf, link->mtp3server_host) == 2)) {
  668           if (!is_mtp3d)
  669             link->remote = 1;
  670         } else
  671           snprintf(chan_spec_buf, sizeof(chan_spec_buf), "%s", 
v->value);
  672         p = strsep(&spec, ",");
  673         while(p && *p) {
  674           int i, first, last;
  675           if(sscanf(p, "%d-%d", &first, &last) == 2) {
  676             if (first < 0 || first > last || last > 31) {
  677               ast_log(LOG_DEBUG, "Schannel range '%s' is %d %d 
\n", p, first,last);
  678               ast_log(LOG_ERROR, "Illegal schannel range '%s' for 
schannel specification for link '%s'.\n", p, link_name);
  679               return -1;
  680             }
  681           }
  682           else {
  683             if((sscanf(p, "%d", &first) != 1) || (first < 0) || 
(first > 31)) {
  684               ast_log(LOG_ERROR, "Illegal schannel value '%s' for 
schannel specification for link '%s'.\n", p, link_name);
  685               return -1;
  686             }
  687             last = first;
  688           }
  689           for (i = first; i <= last; i++)
  690             link->schannel.mask |= 1 << (i-1);
  691           p = strsep(&spec, ",");
  692         }
  693         for (i = 0; i < 32; i++)
  694           if (link->schannel.mask & (1 << i))
  695             link->n_schannels++;
  696       }
  697       has_schannel = 1;
  698     }

It's set by the schannel configuration. I think that has something to do 
with chan_ss7's capabilty to cluster. However I'm a bit clueless why the 
same configuration does not work anymore. Tried 1.2.1 (original version 
used) and 1.4.3

Kind regards,

Matthias van der Vlies





More information about the asterisk-ss7 mailing list