Hi,

It is a bug even now, AFAIK. Unfortunately not easy to correct, and only for 
outdated SMScs. Tranceiver mode means that you can use a single connection for 
sending and receiving. Depends on your SMSC's SMPP version. It is not supported 
earlier than SMPP 3.4.

The bug is due to the fact that one status is used internally to describe the 
SMSc. It can be either "inactive' or "active".  Assume that the send link goes 
down and cannot send any SMS. SMSc is marked momentarily "inactive". Normally 
this should be it, and kannel would try to reconnect. However the receive link, 
receive an enquire-link packet, which resets the SMSc status as "active". 
Therefore kannel doesn't try to reconnect.

BR,
Nikos
  ----- Original Message ----- 
  From: Donald Jackson 
  To: shaded 4 
  Cc: users@kannel.org 
  Sent: Friday, May 15, 2009 9:15 AM
  Subject: Re: Messages intermittently getting stuck in kannel's queue


  This is a bug in 1.4.1, I can't remember the exact details but its to do with 
the one of the 2 binds dropping.

  The solution to this problem is, if you have an smsc group with a tx/rx pair 
like:

  # TX/RX pair
  group=smsc
  smsc=smpp
  host=smpp.host.com
  port=2345
  receive-port=2345
  smsc-id=mysmsc
  ...

  You can split it into 2 SMSC's, like:

  # TX
  group=smsc
  smsc=smpp
  host=smpp.host.com
  port=2345
  smsc-id=mysmsc
  ...

  # RX
  group=smsc
  smsc=smpp
  host=smpp.host.com
  receive-port=2345
  smsc-id=mysmsc
  ...

  Hope this helps,

  Thanks,
  Donald
  http://www.ddj.co.za


  2009/5/15 shaded 4 <shad...@gmail.com>

    Thanks very much for your reply, Abdulmnem!

    I don't think that's the problem in this case.
    From what I can tell from the logs, kannel successfully
    binds to both the transmitter and the receiver streams,
    and it shows apparently successful enquire_link/enquire_link_resp
    messages going in both directions, every 30 seconds for each stream.

    (E.g. enquire_links for the transmitter at 4:30:03, 4:30:33, 4:31:03, etc
       and for the receiver at 4:30:11, 4:30:41, 4:31:11, etc.
    )

    Any other suggestions from anyone?

    Although I think the problem lies elsewhere, can
    anyone else verify Abdulmnem's suggestion that this might be
    some bug in v1.4.1 ?
    Has it been fixed in the more recent versions?
    From http://kannel.org/news.shtml, I can't tell if it lists
    this problem. I know in our environment it's a lot of
    work and bureaucracy to upgrade versions of software,
    so I don't want to do it unneccessarily.

    Pardon my ignorance, but does 'transceiver mode' mean that
    it would connect to both the transmitter/receiver streams
    via a single connection?

    We have always been using separate transmitter and receiver
    connections, as the SMSC support team has told us in the past to do it
    this way and to not use the transceiver mode (I'm not sure why -
    I have no experience with SMSC's directly).

    But we don't need the receiver on this particular SMSC, and
    I have now disabled it. I'm not really confident that this
    will fix the problem, but we'll see. In any case, it certainly
    won't hurt.



    Monim Benaiad wrote:
    --------------------------------------------------


    > Hi,
    >
    > Is there any known problem in kannel such that it sometimes
    > refuses to send messages? (I'm talking about just transmitter
    > functionality here, not receiver.)
    > It seems to happen sometimes after connectivity to a SMSC is
    > disrupted and reconnected.
    >
    > The only way that kannel eventually sends the messages
    > is if I restart kannel, or after it again loses and regains
    > connectivity the next time.

    > ...etc.

    >

    AFAIK, The "transceiver-mode" variable in the smsc group will solve this
    problem.
    I think it's a bug in that version, because Kannel reconnect the receiver
    only.
    also remove the "receive-port".

    TIA

    Abdulmnem Benaiad
    Almontaha
    almontaha.com


    shaded4 wrote:
    --------------------------------------------------

    Hi,

    Is there any known problem in kannel such that it sometimes
    refuses to send messages? (I'm talking about just transmitter
    functionality here, not receiver.)
    It seems to happen sometimes after connectivity to a SMSC is
    disrupted and reconnected.

    The only way that kannel eventually sends the messages
    is if I restart kannel, or after it again loses and regains
    connectivity the next time.

    We have been using kannel 1.4.1 for years. According to
    http://kannel.org/news.shtml, it's a stable version which
    has been out for some years before the very recent newer versions.

    I haven't seen this problem in production before (maybe because
    connectivity to the SMSC's is rarely disrupted there), but
    we have noticed it in our test environment where disruptions are more
    common.

    What seems to happen:
    - Kannel is working fine, sending messages to the correct SMSC's
        exactly as expected. So apparently we have it configured correctly.
    - Connectivity to the SMSC's is temporarily lost for whatever reason.
        E.g. network connectivity slowness or outage, etc. 
    - When network connectivity is restored, kannel automatically reconnects
        (re-binds, if that's the correct terminology).
    No problem so far.

    That's all ok, but sometimes any future messages targeted to some
    particular SMSC (e.g. call it SMPP_SMSC1) now get stuck in kannel and
    refuse to budge. Messages to other SMSC's still go through ok.

    This is what I observe when I try to subsequently send 17 messages to kannel
    which in normal circumstances always correctly route to SMPP_SMSC1.
    I have all of kannel's logs enabled to maximum verbosity, i.e. log-level=0 .
    - I see the messages go into kannel's store-file and not budging. 
    - The messages appear in smsbox's access-log and log-file, but they
        do NOT appear (yet) in the 'core' group's access-log .
    - Kannel and the SMSC are constantly sending enquire_link and 
enquire_link_resp
        messages every 30 seconds, which show that the connection is
        supposedly constantly active during this time.
    - Running kannel's status snapshot (i.e. http://127.0.0.1:13000/status)
        shows the general SMS section reporting that there are 17 messages
        in the queued store, but the SMPP_SMSC1 line shows 0 queued messages.
        (Shouldn't that say 17 as well??)

        --------------------------------------------------------------------
        SMS: received 95 (0 queued), sent 12626 (17 queued), store size 17
        SMSC connections:
            SMPP_SMSC1    SMPP:x.x.x.x:n/n:username1:smpp (online 74534s, rcvd 
0, sent 2615, failed 0, queued 0 msgs)
            SMPP_SMSC2    SMPP:x.x.x.x:n/n:username2:smpp (online 83104s, rcvd 
5, sent 21, failed 0, queued 0 msgs)       
            ....etc.
        --------------------------------------------------------------------
    - The 'core' group's log-file shows kannel going through all of the
        17 messages every 30 seconds, but frustratingly I can't find anything
        in any log file telling me WHY it's not sending the messages.

        Can anybody tell me what is the significance of the rightmost numbers on
        each line. E.g. 0x9a59e28 appears on each line - what does that mean?
        What does "0x9a96ba0 vs 0x9a59e28" mean?
        Are the message having too much fun playing soccer games against each 
other?

            2009-05-14 12:57:09 [29629] [23] DEBUG: sms_router: gwlist_len = 17
            2009-05-14 12:57:09 [29629] [23] DEBUG: sms_router: handling 
message (0x9a59e28 vs 0x9a59e28)
            2009-05-14 12:57:09 [29629] [23] DEBUG: sms_router: handling 
message (0x9a96ba0 vs 0x9a59e28)
            ....etc.
            2009-05-14 12:57:09 [29629] [23] DEBUG: sms_router: handling 
message (0x9a5c370 vs 0x9a59e28)
            2009-05-14 12:57:09 [29629] [23] DEBUG: sms_router: handling 
message (0x9a59e28 vs 0x9a59e28)
            2009-05-14 12:57:09 [29629] [23] DEBUG: sms_router: time to sleep 
30.00 secs.

    The only thing that causes these messages to be eventually sent is:
    - If I manually restart kannel.
    - Or if there is another temporary disruption to the SMSC connectivity,
        and then kannel automatically reconnects (re-binds).

    As soon as that happens, kannel immediately sends all of the
    stuck messages to the correct SMPP_SMSC1. It is also only at this time
    that these messages are logged in the 'core' group's access-log .

    So why were the messages stuck in the first place?
    If the enquire_link and enquire_link_resp messages show that
    link is supposedly constantly up during this time,
    why is kannel holding on to these messages?

    Two things I can think of:
    a) I found a bug in kannel, e.g. some component of kannel might think
        that the link is still down.
    b) *Something* might be telling kannel that the link is not really up
        or not healthy or something?? I don't know.
        Should I be looking for something special in the
        enquire_link messages, or in the initial bind messages perhaps?
        I can post logs if that helps.

    What also puzzles me is that we have a lot of SMSC's
    configured in our kannel, but the problem most often
    seems to occur with messages that we want to route to SMPP_SMSC1.
    I _think_ it may have also happened with some of the other SMSC's, but
    I'm not sure.

    What's slightly special about SMPP_SMSC1 is that it is
    our 'default' SMSC. 

    All of our other SMSC's like SMPP_SMSC2, SMPP_SMSC3, etc.
    have a config like the following. The allowed-smsc-id line
    means that only messages specified with 'smsc=SMPP_SMSC2' will
    go through SMPP_SMSC2 for example.

    group = smsc
    smsc = smpp
    smsc-id = SMPP_SMSC2
    host = ....
    port = ....
    receive-port = ....
    smsc-username = ....
    smsc-password = ....
    system-type = smpp
    address-range = ""
    keepalive = 0
    log-file = ....
    log-level = 0 
    msg-id-type = 0x01
    throughput = 25
    allowed-smsc-id = SMPP_SMSC2
    alt-charset = ASCII

    But SMPP_SMSC1 is our default SMSC. So it will 
    accept messages which specify one of
    - smsc=SMPP_SMSC1
    - smsc=jfdkljgltjhgtjljkgflkj (any rubbish value)
    - No smsc setting
    The denied-smsc-id line ensures that other
    messages can't pass through this SMSC.

    group = smsc
    smsc = smpp
    smsc-id = SMPP_SMSC1
    host = ....
    port = ....
    receive-port = ....
    smsc-username = ....
    smsc-password = ....
    system-type = smpp
    address-range = ""
    keepalive = 0
    log-file = ....
    log-level = 0
    msg-id-type = 0x01
    throughput = 25
    denied-smsc-id = SMPP_SMSC2;SMPP_SMSC3;SMPP_SMSC4;SMPP_SMSC5;....
    alt-charset = ASCII

    Yes, all this normally works exactly as I expect.
    So the messages aren't getting stuck due to some misconfiguration
    as far as I know, but they get stuck intermittently.





  -- 
  Donald Jackson
  http://www.ddj.co.za/
  donaldjster(a)gmail.com

Reply via email to