2016-01-13 18:30 GMT+03:00 Grant Saicom <grant.sai...@gmail.com>:

> I might have the wrong end of the stick here, but I was under the
> impression that kannel/bearerbox used openSMPP libraries to implement its
> smpp functionality. I have done a bit of googling and cannot see anything
> confirming this. So I guess this is not the case :)
>

No. Kannel is basically is a set of bearerbox, smsbox, wapbox.

sqlbox is a box too as well.

opensmppbox is kinda -box too.

each *box is connected to bearerbox or sometimes sqlbox connected to smsbox
for further processing.

each *box got its own functionality, but main thing is bearerbox which
routes all messages / manages your smsc uplinks and processing own internal
queues.

so if you want to just send messages through kannel you need only:

1) bearerbox
2) sqlbox

you just insert into send_sms your MT message with certain values in fields
and it's submitted to bearerbox, which sends it to upstream SMSC you
specified (smsc_id field).

this is basically how it works.


> With respect to mtr (both gateways are same device, juniper mx-140 with
> dual 10Gbit direct connection to blade hypervisor data fabric):
>  Host                                            Loss%   Snt   Last   Avg
>  Best  Wrst StDev
>  1. smsc-gateway                        0.0%    95    0.4   0.5   0.3
> 0.9   0.0
>  2. kannel                                     0.0%    94    0.8   0.6
> 0.4   1.0   0.0
>
>  Host                                            Loss%   Snt   Last   Avg
>  Best  Wrst StDev
>  1. kannel-gateway                      0.0%    73    0.4   0.3   0.3
> 0.5   0.0
>  2. smsc                                       0.0%    72    0.5   0.6
> 0.4   2.7   0.4
>

Better run mtr for at least 1000 packets, but I guess since both hosts are
on the same network there shouldn't be any problem.


>
> Average on both is sub 1ms. MTU are is 1500 on both.
>

What's the software on SMSC server? Or It's some commercial solution? It
could be this is the problem.


>
> I am loathe to think it is the hypervisor or hardware as it is all service
> provider grade. I have a spare HP DL380 in the rack at the DC which was
> scheduled for collection. I may just wipe that and put kannel there and see
> how it behaves there.
>

Waiting for your results.


>
> Thank you for the advice.
>
> On 13 Jan 2016, at 15:09, spameden <spame...@gmail.com> wrote:
>
>
>
> 2016-01-13 15:14 GMT+03:00 Grant Saicom <grant.sai...@gmail.com>:
>
>> Thanks for the advice.
>>
>> Which smpp implementation does kannel code ship with from the repo? Just
>> want to clarify as it sounds it isn’t opensmpp in the answer.
>>
>
> Why do you even ask about opensmppbox? I thought original question was
> about sqlbox. OpenSMPPBox is basically a simple proxy to kannel for outside
> clients. There is not much in it, there is no flow control or accounting.
> What bearerbox/kannel implements for smsc is basically what opensmppbox
> offers in terms of connections to upstream links.
>
>
>
>> With regards to network, all the machines are on the same subnet,
>> including the smsc. We have an instance within our network. On top of that,
>> they are all on the same hypervisor and data fabric.
>>
>
> Another thought I just got: could your network problems be due your
> virtualization used? Try using kannel on a bare machine and see if there is
> any TCP retransmissions going?
>
> Did you check mtr output as well to your upstream smsc? And also check
> reverse network path if it's same or not.
>
>
>
>
>>
>> On 13 Jan 2016, at 14:02, spameden <spame...@gmail.com> wrote:
>>
>> opensmppbox is generally not recommended for production, it's very basic
>> and there is no accounting at all, for SMPP-server I'd recommended
>> contacting Stipe Tolk (you can find his e-mail on the lists archive in
>> google), he has commercial solution carrier-grade.
>>
>> about TCP retransmissions you might need tuning either Linux network
>> settings, e.g. MTU if you're behind some sorta NAT or better contact your
>> provider with mtr output and tcpdump captures there might be unoptimal
>> direct or/and reverse network path between you and your SMSC provider.
>>
>> 2016-01-13 14:07 GMT+03:00 Grant Saicom <grant.sai...@gmail.com>:
>>
>>> I suspect the issue I am still experiencing is because of TCP
>>> retransmission between Kannel and SMSC. The time out for ack is 210ms on
>>> the SMSC we are sending to and the delay can sometimes be as long as 370ms.
>>>
>>> I have not found a solution, but am exploring further optimisations and
>>> avenues.
>>>
>>> Another Kannel user advised me saying that openSMPP can be problematic
>>> some times. Is this a generally known and confirmed issue?
>>>
>>> Kind regards
>>> Grant
>>>
>>> On 15 Dec 2015, at 12:53, spameden <spame...@gmail.com> wrote:
>>>
>>> store-type = spool
>>> store-location = "/tmp/kannel-spool/"
>>>
>>> put these 2 lines below group = core in /etc/kannel/kannel.conf
>>>
>>> do you use for dlr MySQL as well?
>>>
>>> worth adding index on dlr table as well: KEY `smsc_ts` (`smsc`,`ts`)
>>>
>>> ALTER table dlr add index `smsc_ts` (`smsc`,`ts`);
>>>
>>>
>>>
>>>
>>> 2015-12-15 13:43 GMT+03:00 spameden <spame...@gmail.com>:
>>>
>>>> Yes.
>>>>
>>>> The only thing that comes to my mind is to use kannel-store = spool and
>>>> move your spool store to /tmp dir, this way queue will be in multiple files
>>>> instead of the single file and in RAM, I found this way it's very fast.
>>>>
>>>> Let me know if it helps.
>>>>
>>>> If you want to preserve queue (in case of hard reset or something) you
>>>> can rsync it's contents every 2 minutes or so in some permanent directory.
>>>>
>>>> 2015-12-15 12:56 GMT+03:00 Grant Saicom <grant.sai...@gmail.com>:
>>>>
>>>>> Haven’t really found my answer yet, but I have another question along
>>>>> this line of thought.
>>>>>
>>>>> I see the queue in sqlbox rises quite high, but the queue in the smpp
>>>>> connector to the smsc barely goes above 0.
>>>>>
>>>>> Is there a way to control.modify the flow of messages from sqlbox to
>>>>> the smpp queue?
>>>>>
>>>>> Architecturally, is this correct in terms of the flow of messages:
>>>>> sqlbox queue -> bearerbox sms store-> smpp queue
>>>>>
>>>>> Regards
>>>>> Grant
>>>>>
>>>>> On 09 Dec 2015, at 11:56, spameden <spame...@gmail.com> wrote:
>>>>>
>>>>>
>>>>>
>>>>> 2015-12-09 12:43 GMT+03:00 Grant Saicom <grant.sai...@gmail.com>:
>>>>>
>>>>>> We process the sent_sms into another table on they fly. Maximum size
>>>>>> the sent_sms table gets is maybe 40k tops but mostly it averages around
>>>>>> 10K. We see this once 1 week maybe.
>>>>>>
>>>>>> I have really made every attempt to remove any bottlenecks in terms
>>>>>> unwieldy database sizes to allow kannel to work in a favourable 
>>>>>> environment.
>>>>>>
>>>>>> Is there reason to add multiple sqlboxes to feed bearer box?
>>>>>>
>>>>>> Is there maybe a concurrency setting I can do for bearer box to
>>>>>> receive the messages? I did not come across documentation aside from 
>>>>>> email
>>>>>> posts with respect to the limit-per-cycle setting.
>>>>>>
>>>>>> I have another question, would we be able to get faster performance
>>>>>> if we went flat file for the kannel operations?
>>>>>>
>>>>>
>>>>> Well you can exclude bottlenecks by simply testing same setup with
>>>>> fakesmsc daemon and see if speed will be better.
>>>>>
>>>>> It might be that delay is caused by your SMSC uplinks overall speed
>>>>> and not database.
>>>>>
>>>>> You can also try classic smsbox implementation for sending instead of
>>>>> sqlbox. But I think sqlbox is fastest and more convinient way because of 
>>>>> DB
>>>>> storage.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>> Regards
>>>>>>
>>>>>>
>>>>>> On 08 Dec 2015, at 15:12, spameden <spame...@gmail.com> wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> 2015-12-08 12:51 GMT+03:00 Grant Vorenberg <gr...@saicomvoice.co.za>:
>>>>>>
>>>>>>> <saicom-voice-services.gif>
>>>>>>> <https://branding.synaq.com/api/r/id/22474050/map/0>
>>>>>>>
>>>>>>> Hi
>>>>>>>
>>>>>>> We manage how big send_sms gets. The queue builder puts in 500
>>>>>>> messages at a time to a total maximum of 3000 from a larger main queue
>>>>>>> which can go as big as 2M.
>>>>>>>
>>>>>>
>>>>>> 2M is kinda big table, how big is sent_sms? 10-30M ?
>>>>>>
>>>>>> I think your issue happens when kannel tries to move from send_sms to
>>>>>> sent_sms table already submitted message this is where it hangs. You can
>>>>>> try testing it yourself with simple query:
>>>>>>
>>>>>> INSERT INTO sent_sms SELECT * from send_sms where sql_id=XXXX and
>>>>>> measure time per query.
>>>>>>
>>>>>> if it's instant there should be no problem.
>>>>>>
>>>>>> Generally it's better to leave sent_sms table at around 1M records
>>>>>> not more, old records you can move to other table daily.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Actual hardware is a VCenter on blades with plenty ram, cpu and hp
>>>>>>> 3PAR(144GB raid card ram for caching in total) fibre attached storage 
>>>>>>> with
>>>>>>> dedicated SSD specifically for DB. Calculated IOPS are stupidly good.
>>>>>>>
>>>>>>> The VMs are as follows:
>>>>>>> Queuebuilder: 4 vcpu, 16Gb on SAS
>>>>>>> Kannel: 4 vcpu, 8GB on SAS
>>>>>>> MysqlDB-Master: 8 vcpu, 32GB on SSD
>>>>>>> MysqlDB-Slave: 8 vcpu, 32GB on SSD
>>>>>>>
>>>>>>
>>>>>> MySQL on SSDs should work just fine and you should have big number of
>>>>>> iops. Btw, I recommend to use MariaDB instead of regular MySQL (
>>>>>> mariadb.org) it's very fast and reliable, for InnoDB it uses
>>>>>> modified XtraDB engine which has some tweaks.
>>>>>>
>>>>>> did you check mysqladmin status to indicate number of queries
>>>>>> processed per second?
>>>>>>
>>>>>>
>>>>>>> The Load on the MysqlDB-Master averages around 0.4 with max of 0.6
>>>>>>> (single spike). Memory usage hangs around 24GB. I will need to check the
>>>>>>> process list to double check, but we generally don’t see much strain 
>>>>>>> here
>>>>>>> either, but I stand to be corrected.
>>>>>>>
>>>>>> DB optimasations as follows:
>>>>>>>
>>>>>>> key_buffer               = 16M
>>>>>>> max_allowed_packet       = 16M
>>>>>>>
>>>>>>
>>>>>> maybe increase a bit max_allowed_packet to 64mb
>>>>>>
>>>>>> innodb_buffer_pool_size = 12G
>>>>>>>
>>>>>>
>>>>>> this is fine
>>>>>>
>>>>>> query_cache_limit       = 20M
>>>>>>> query_cache_size         = 128M
>>>>>>>
>>>>>>
>>>>>> query_cache in kannel's case doesn't affect much, so it's ok to have
>>>>>> it like that.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> No extra indexes on the send_sms as we limit its size to 3000.
>>>>>>>
>>>>>>
>>>>>> make sure both send_sms and sent_sms tables are InnoDB type.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> All reporting is done on the slaveDB, so no extra strain on
>>>>>>> monitoring and reporting.
>>>>>>>
>>>>>>
>>>>>> under 'reporting' do you mean your dlr_url is called to external
>>>>>> script which is connected to slaveDB?
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Historically, we have queued at the SMPP connector and not at the
>>>>>>> smsbox. We generally reached a top (AVG) speed of 73 msg/s but when I 
>>>>>>> see
>>>>>>> the smsbox queued figure rise and the internal smpp queue drop to 0, we
>>>>>>> only hit half of this speed.
>>>>>>>
>>>>>>> I did not see the limit-per-cycle setting in the sqlbox
>>>>>>> documentation (2011). I also checked the code and saw that the select 
>>>>>>> limit
>>>>>>> was a variable instead of hard-limited.
>>>>>>>
>>>>>>
>>>>>> Yeah, it was introduced some time ago alongside with other
>>>>>> optimisations (year ago or so, can't remember now), I think it should be 
>>>>>> in
>>>>>> new documentation. However, you need to build documentation to get more
>>>>>> recent version of it.
>>>>>>
>>>>>>
>>>>>>> Regards
>>>>>>> G
>>>>>>>
>>>>>>> On 08 Dec 2015, at 10:52, spameden <spame...@gmail.com> wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Grant Vorenberg
>>>>>>>
>>>>>>> Technical Manager
>>>>>>> Office  0861 SAICOM (724 266) Direct  010 140 5012 Support  010 140
>>>>>>> 5050 Cell  - Fax  010 140 5001 Email  gr...@saicomvoice.co.za Visit
>>>>>>> our website  www.saicomvoice.co.za
>>>>>>>
>>>>>>> <logo-image.png> <http://www.saicomvoice.co.za/>
>>>>>>>
>>>>>>> 2015-12-08 11:23 GMT+03:00 Grant Vorenberg <gr...@saicomvoice.co.za>
>>>>>>> :
>>>>>>>
>>>>>>>> <saicom-now-offers-cloud-pbx.gif>
>>>>>>>> <https://branding.synaq.com/api/r/id/22469522/map/0>
>>>>>>>>
>>>>>>>> Here is my config:
>>>>>>>>
>>>>>>>> group = sqlbox
>>>>>>>> id = sqlbox-db
>>>>>>>> smsbox-id = sqlbox
>>>>>>>> #global-sender = ""
>>>>>>>> bearerbox-host = localhost
>>>>>>>> bearerbox-port = 13001
>>>>>>>> smsbox-port = 13005
>>>>>>>> smsbox-port-ssl = false
>>>>>>>> sql-log-table = sent_sms
>>>>>>>> sql-insert-table = send_sms
>>>>>>>> log-file = "/var/log/kannel/kannel-sqlbox.log"
>>>>>>>> log-level = 0
>>>>>>>> #sqlbox optimisation GAV 20151207
>>>>>>>> limit-per-cycle = 100
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Try monitoring your database workload.
>>>>>>>
>>>>>>> Is send_sms table is big?
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> On 07 Dec 2015, at 15:06, spameden <spame...@gmail.com> wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Grant Vorenberg
>>>>>>>>
>>>>>>>> Technical Manager
>>>>>>>> Office   0861 SAICOM (724 266) Direct   010 140 5012 Support   010
>>>>>>>> 140 5050 Cell   - Fax   010 140 5001 Email
>>>>>>>> gr...@saicomvoice.co.za Visit our website   www.saicomvoice.co.za
>>>>>>>>
>>>>>>>> <logo-image.png> <http://www.saicomvoice.co.za/>
>>>>>>>>
>>>>>>>> 2015-12-07 14:03 GMT+03:00 Grant Vorenberg <gr...@saicomvoice.co.za
>>>>>>>> >:
>>>>>>>>
>>>>>>>>> <saicom-now-offers-cloud-pbx.gif>
>>>>>>>>> <https://branding.synaq.com/api/r/id/22451334/map/0>
>>>>>>>>>
>>>>>>>>> Hi Guys
>>>>>>>>>
>>>>>>>>> I am a new to the list subscription and am looking for a little
>>>>>>>>> clarity on the SQLBOX.
>>>>>>>>>
>>>>>>>>> I have a Debian Wheezy box running:
>>>>>>>>> Kannel sqlbox version 1.4.4
>>>>>>>>> Libxml version 2.7.2
>>>>>>>>> MySQL 5.5.43
>>>>>>>>>
>>>>>>>>> The front end is custom and drops message into the send_sms table.
>>>>>>>>> These messages are terminated via smpp to another system of ours. We
>>>>>>>>> process and clean out the sent_sms table.
>>>>>>>>>
>>>>>>>>> I gather stats on the performance of the system using the status
>>>>>>>>> page: http://localhost:13000/status
>>>>>>>>>
>>>>>>>>> I am trying to understand the following output from the screen:
>>>>>>>>> Box connections:
>>>>>>>>>        smsbox:sqlbox, IP 127.0.0.1 (2532 queued), (on-line 0d 2h
>>>>>>>>> 48m 19s)
>>>>>>>>>
>>>>>>>>
>>>>>>>> This means there is a queue on sqlbox.
>>>>>>>>
>>>>>>>> Queue works like this:
>>>>>>>>
>>>>>>>> First sqlbox gets messages from DB backend, then it adds messages
>>>>>>>> to own queue, then it sends message into bearerbox queue and bearerbox
>>>>>>>> splits this queue over your connected SMSC/upstream operators.
>>>>>>>>
>>>>>>>> So if there is a huge queue on sqlbox it means there is a big
>>>>>>>> amount of MTs in your send_sms table and sqlbox is still submitting 
>>>>>>>> those
>>>>>>>> to bearerbox.
>>>>>>>>
>>>>>>>> To optimize sqlbox I'd recommend adding this parameter into sqlbox
>>>>>>>> section (after group = sqlbox):
>>>>>>>> limit-per-cycle = 50 this means sqlbox will get 50 bulk messages
>>>>>>>> from DB per query at once instead of 1.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> What I noticed is when our send speeds start dipping on the smpp
>>>>>>>>> connection (internal/default route), this smsbox:sql queue starts 
>>>>>>>>> building
>>>>>>>>> up.
>>>>>>>>>
>>>>>>>>> When the smsbox:sqlbox queue starts building up like this:
>>>>>>>>> 1)What causes this?
>>>>>>>>> 2) What does this signify?
>>>>>>>>>
>>>>>>>>> We generally don’t see this behaviour very often, but its effect
>>>>>>>>> is detrimental to the performance of the system so I would like to 
>>>>>>>>> know
>>>>>>>>> what causes the growth and how to combat it so our send speed is
>>>>>>>>> safe-guarded.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Here is an excerpt from my config files:
>>>>>>>>>
>>>>>>>>> <smsbox conf>:
>>>>>>>>> group = sqlbox
>>>>>>>>> id = sqlbox-db
>>>>>>>>> smsbox-id = sqlbox
>>>>>>>>> #global-sender = ""
>>>>>>>>> bearerbox-host = localhost
>>>>>>>>> bearerbox-port = 13001
>>>>>>>>> smsbox-port = 13005
>>>>>>>>> smsbox-port-ssl = false
>>>>>>>>> sql-log-table = sent_sms
>>>>>>>>> sql-insert-table = send_sms
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> <kannel.conf>:
>>>>>>>>> group = smsbox
>>>>>>>>> bearerbox-host = 127.0.0.1
>>>>>>>>> sendsms-port = 13013
>>>>>>>>> global-sender = 13013
>>>>>>>>> smsbox-id=my_smsbox
>>>>>>>>>
>>>>>>>>> group=smsbox-route
>>>>>>>>> smsbox-id=sqlbox
>>>>>>>>> smsc-id=internal
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Regards
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Grant Vorenberg
>>>>>>>>>
>>>>>>>>> Technical Manager
>>>>>>>>> Office   0861 SAICOM (724 266) Direct   010 140 5012 Support   010
>>>>>>>>> 140 5050 Cell   - Fax   010 140 5001 Email
>>>>>>>>> gr...@saicomvoice.co.za Visit our website   www.saicomvoice.co.za
>>>>>>>>>
>>>>>>>>> <logo-image.png> <http://www.saicomvoice.co.za/>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>
>>
>
>

Reply via email to