Re: [PATCH] SMSC cluster
Alexander Malysh <[email protected]> Fri, 28 Jun 2019 09:42:54 +0200
| Newsgroups | gmane.comp.mobile.kannel.devel |
|---|---|
| Message-ID | <[email protected]> |
--Apple-Mail=_9CB41686-4CC4-40F7-9132-2A6A4864A7FD Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Hi, I=E2=80=99m agree with Alejandro. For SMPP we don=E2=80=99t need such = patch but for the CIMD2 we have to fix it to conn->id if it=E2=80=99s = not used there. Thanks, Alex > Am 26.06.2019 um 15:13 schrieb Alejandro Guerrieri = <[email protected]>: >=20 > Franck, >=20 > Thank you for clarifying. >=20 > Regarding SMPP, you are using your application to indirectly diagnose = problem with your binds. Kannel has a status endpoint that you can use = to monitor the bind status directly instead of "bubbling-up" the problem = to your application layer. >=20 > You have a point on CIMD2, though iMHO that is a "bug" in Kannel: all = connectors should use the same naming strategy. I don't know how likely = is the scenario of having multi-protocol binds sharing SMS traffic, but = in Kannel's current state it is the only case where this patch would = make a difference. In my opinion, the right answer is to make the naming = convention consistent so DLR's can be resolved across different = protocols. >=20 > Regards, >=20 > Alejandro >=20 > On Wed, Jun 26, 2019 at 4:11 AM Lamasuta, Franck, Vodafone Automotive = <[email protected] <mailto:[email protected]>> = wrote: > Hi Alejandro, >=20 > =20 >=20 > I know we could use identical smsc-ids but=E2=80=A6 >=20 > =20 >=20 > 1) It does not work for CIMD2 because dlr_add() and dlr_find() are = called with conn->name which is built with the IP and port. >=20 > =20 >=20 > 2) It could work with SMPP (because dlr_add() and dlr_find() are = called with conn->id) but=E2=80=A6 > When a MO-SMS is received, the smsc-id is assigned to the message and = forwarded to our back-end by smsbox. > We use this id to monitor the incoming traffic on each bind and detect = issues (e.g. when the MO-SMS rate is below a threshold). >=20 > With identical smsc-ids, we could have an issue on one of the binds = (with the bind still up) and not be able to detect it. Therefore we do = prefer to have different smsc-ids. >=20 >=20 > The patch only uses smsc-username which is (AFAIK) always the same = with multiple binds. >=20 > It is more flexible in my opinion. >=20 > =20 >=20 > Regards, >=20 > Franck >=20 > =20 >=20 > =20 >=20 > From: Alejandro Guerrieri <[email protected] = <mailto:[email protected]>>=20 > Sent: mercredi 26 juin 2019 00:27 > To: Lamasuta, Franck, Vodafone Automotive = <[email protected] <mailto:[email protected]>> > Cc: [email protected] <mailto:[email protected]> > Subject: Re: [PATCH] SMSC cluster >=20 > =20 >=20 > I'm curious why do you even need this patch? You could use the same = smsc-id on both and assign different smsc-admin-id values to manage each = bind separately (e.g. start/stop). If by any reason you'd want to send = over a specific bind, you could use different allowed-smsc-id's as well. >=20 > =20 >=20 > Regards, >=20 > =20 >=20 > Alejandro >=20 > =20 >=20 > On Tue, Jun 25, 2019 at 12:20 PM Lamasuta, Franck, Vodafone Automotive = <[email protected] <mailto:[email protected]>> = wrote: >=20 > Hi list, >=20 > =20 >=20 > We have implemented many patches along the way and I can finally take = some time to submit them. > They are running on our staging and production platforms since years = for the oldest ones. >=20 > I will submit them one by one in the next days/weeks. >=20 > Let=E2=80=99s start with the first one=E2=80=A6 J >=20 > =20 >=20 > This patch allows Kannel to retrieve a pending DLRs in its database = when 2 (or more) SMSC binds are established (with different IPs and/or = ports). >=20 > It is required when a MT-SMS is submitted to SMSC A and its DLR is = sent back by SMSC B. >=20 > Done for CIMD2 and SMPP. >=20 > =20 >=20 > Example of configuration where the patch is required: >=20 > =20 >=20 > # >=20 > # Primary server >=20 > # >=20 > group =3D smsc >=20 > smsc =3D cimd2 >=20 > smsc-id =3D SMSC-A >=20 > host =3D 123.1.2.3 >=20 > port =3D 6001 >=20 > smsc-username =3D user >=20 > smsc-password =3D xxxxxxxx >=20 > allowed-smsc-id =3D id1 >=20 > preferred-smsc-id =3D id1 >=20 > =20 >=20 > # >=20 > # Secondary server >=20 > # >=20 > group =3D smsc >=20 > smsc =3D cimd2 >=20 > smsc-id =3D SMSC-B >=20 > host =3D 123.1.2.3 >=20 > port =3D 6002 >=20 > smsc-username =3D user >=20 > smsc-password =3D xxxxxxxx >=20 > allowed-smsc-id =3D id1 >=20 > =20 >=20 > =20 >=20 > Regards, >=20 > Franck >=20 --Apple-Mail=_9CB41686-4CC4-40F7-9132-2A6A4864A7FD Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 <html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; = charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; = -webkit-nbsp-mode: space; line-break: after-white-space;" = class=3D"">Hi,<div class=3D""><br class=3D""></div><div class=3D"">I=E2=80= =99m agree with Alejandro. For SMPP we don=E2=80=99t need such patch but = for the CIMD2 we have to fix it to conn->id if it=E2=80=99s not = used</div><div class=3D"">there.</div><div class=3D""><br = class=3D""></div><div class=3D"">Thanks,</div><div = class=3D"">Alex</div><div class=3D""><br class=3D""></div><div = class=3D""><div><br class=3D""><blockquote type=3D"cite" class=3D""><div = class=3D"">Am 26.06.2019 um 15:13 schrieb Alejandro Guerrieri <<a = href=3D"mailto:[email protected]" = class=3D"">[email protected]</a>>:</div><br = class=3D"Apple-interchange-newline"><div class=3D""><div dir=3D"ltr" = style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: = 12px; font-style: normal; font-variant-caps: normal; font-weight: = normal; letter-spacing: normal; text-align: start; text-indent: 0px; = text-transform: none; white-space: normal; word-spacing: 0px; = -webkit-text-stroke-width: 0px; text-decoration: none;" = class=3D"">Franck,<div class=3D""><br class=3D""></div><div = class=3D"">Thank you for clarifying.</div><div class=3D""><br = class=3D""></div><div class=3D"">Regarding SMPP, you are using your = application to indirectly diagnose problem with your binds. Kannel has a = status endpoint that you can use to monitor the bind status directly = instead of "bubbling-up" the problem to your application = layer.</div><div class=3D""><div class=3D""><br = class=3D"gmail-Apple-interchange-newline">You have a point on CIMD2, = though iMHO that is a "bug" in Kannel: all connectors should use the = same naming strategy. I don't know how likely is the scenario of having = multi-protocol binds sharing SMS traffic, but in Kannel's current state = it is the only case where this patch would make a difference. In my = opinion, the right answer is to make the naming convention consistent so = DLR's can be resolved across different protocols.</div><div class=3D""><br= class=3D""></div></div><div class=3D"">Regards,</div><div class=3D""><br = class=3D""></div><div class=3D"">Alejandro</div></div><br = style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: = 12px; font-style: normal; font-variant-caps: normal; font-weight: = normal; letter-spacing: normal; text-align: start; text-indent: 0px; = text-transform: none; white-space: normal; word-spacing: 0px; = -webkit-text-stroke-width: 0px; text-decoration: none;" class=3D""><div = class=3D"gmail_quote" style=3D"caret-color: rgb(0, 0, 0); font-family: = Helvetica; font-size: 12px; font-style: normal; font-variant-caps: = normal; font-weight: normal; letter-spacing: normal; text-align: start; = text-indent: 0px; text-transform: none; white-space: normal; = word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: = none;"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, Jun 26, 2019 at = 4:11 AM Lamasuta, Franck, Vodafone Automotive <<a = href=3D"mailto:[email protected]" = class=3D"">[email protected]</a>> wrote:<br = class=3D""></div><blockquote class=3D"gmail_quote" style=3D"margin: 0px = 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; = border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div = lang=3D"EN-US" class=3D""><div = class=3D"gmail-m_-4211829121702154947WordSection1"><p = class=3D"MsoNormal"><span style=3D"font-size: 11pt; font-family: = Calibri, sans-serif; color: rgb(31, 73, 125);" class=3D"">Hi = Alejandro,<u class=3D""></u><u class=3D""></u></span></p><p = class=3D"MsoNormal"><span style=3D"font-size: 11pt; font-family: = Calibri, sans-serif; color: rgb(31, 73, 125);" class=3D""><u = class=3D""></u> <u class=3D""></u></span></p><p = class=3D"MsoNormal"><span style=3D"font-size: 11pt; font-family: = Calibri, sans-serif; color: rgb(31, 73, 125);" class=3D"">I know we = could use identical smsc-ids but=E2=80=A6<u class=3D""></u><u = class=3D""></u></span></p><p class=3D"MsoNormal"><span style=3D"font-size:= 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);" = class=3D""><u class=3D""></u> <u class=3D""></u></span></p><p = class=3D"MsoNormal"><span style=3D"font-size: 11pt; font-family: = Calibri, sans-serif; color: rgb(31, 73, 125);" class=3D"">1) It does not = work for CIMD2 because dlr_add() and dlr_find() are called with = conn->name which is built with the IP and port.<u class=3D""></u><u = class=3D""></u></span></p><p class=3D"MsoNormal"><span style=3D"font-size:= 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);" = class=3D""><u class=3D""></u> <u class=3D""></u></span></p><p = class=3D"MsoNormal"><span style=3D"font-size: 11pt; font-family: = Calibri, sans-serif; color: rgb(31, 73, 125);" class=3D"">2) It could = work with SMPP (because dlr_add() and dlr_find() are called with = conn->id) but=E2=80=A6<br class=3D"">When a MO-SMS is received, the = smsc-id is assigned to the message and forwarded to our back-end by = smsbox.<br class=3D"">We use this id to monitor the incoming traffic on = each bind and detect issues (e.g. when the MO-SMS rate is below a = threshold).<u class=3D""></u><u class=3D""></u></span></p><p = class=3D"MsoNormal"><span style=3D"font-size: 11pt; font-family: = Calibri, sans-serif; color: rgb(31, 73, 125);" class=3D"">With identical = smsc-ids, we could have an issue on one of the binds (with the bind = still up) and not be able to detect it. Therefore we do prefer to have = different smsc-ids.<br class=3D""><br class=3D""><u class=3D""></u><u = class=3D""></u></span></p><p class=3D"MsoNormal"><span style=3D"font-size:= 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);" = class=3D"">The patch only uses smsc-username which is (AFAIK) always the = same with multiple binds.<u class=3D""></u><u class=3D""></u></span></p><p= class=3D"MsoNormal"><span style=3D"font-size: 11pt; font-family: = Calibri, sans-serif; color: rgb(31, 73, 125);" class=3D"">It is more = flexible in my opinion.<u class=3D""></u><u class=3D""></u></span></p><p = class=3D"MsoNormal"><span style=3D"font-size: 11pt; font-family: = Calibri, sans-serif; color: rgb(31, 73, 125);" class=3D""><u = class=3D""></u> <u class=3D""></u></span></p><p = class=3D"MsoNormal"><span style=3D"font-size: 11pt; font-family: = Calibri, sans-serif; color: rgb(31, 73, 125);" class=3D"">Regards,<u = class=3D""></u><u class=3D""></u></span></p><p class=3D"MsoNormal"><span = style=3D"font-size: 11pt; font-family: Calibri, sans-serif; color: = rgb(31, 73, 125);" class=3D"">Franck<u class=3D""></u><u = class=3D""></u></span></p><p class=3D"MsoNormal"><span style=3D"font-size:= 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);" = class=3D""><u class=3D""></u> <u class=3D""></u></span></p><p = class=3D"MsoNormal"><u class=3D""></u> <u class=3D""></u></p><p = class=3D"MsoNormal"><b class=3D""><span style=3D"font-size: 11pt; = font-family: Calibri, sans-serif;" class=3D"">From:</span></b><span = style=3D"font-size: 11pt; font-family: Calibri, sans-serif;" = class=3D""><span class=3D"Apple-converted-space"> </span>Alejandro = Guerrieri <<a href=3D"mailto:[email protected]" = target=3D"_blank" class=3D"">[email protected]</a>><span = class=3D"Apple-converted-space"> </span><br class=3D""><b = class=3D"">Sent:</b><span = class=3D"Apple-converted-space"> </span>mercredi 26 juin 2019 = 00:27<br class=3D""><b class=3D"">To:</b><span = class=3D"Apple-converted-space"> </span>Lamasuta, Franck, Vodafone = Automotive <<a href=3D"mailto:[email protected]" = target=3D"_blank" class=3D"">[email protected]</a>><br = class=3D""><b class=3D"">Cc:</b><span = class=3D"Apple-converted-space"> </span><a = href=3D"mailto:[email protected]" target=3D"_blank" = class=3D"">[email protected]</a><br class=3D""><b = class=3D"">Subject:</b><span = class=3D"Apple-converted-space"> </span>Re: [PATCH] SMSC cluster<u = class=3D""></u><u class=3D""></u></span></p><p class=3D"MsoNormal"><u = class=3D""></u> <u class=3D""></u></p><div class=3D""><p = class=3D"MsoNormal">I'm curious why do you even need this patch? You = could use the same smsc-id on both and assign different smsc-admin-id = values to manage each bind separately (e.g. start/stop). If by any = reason you'd want to send over a specific bind, you could use different = allowed-smsc-id's as well.<u class=3D""></u><u class=3D""></u></p><div = class=3D""><div class=3D""><p class=3D"MsoNormal"><u = class=3D""></u> <u class=3D""></u></p></div><div class=3D""><p = class=3D"MsoNormal">Regards,<u class=3D""></u><u = class=3D""></u></p></div><div class=3D""><p class=3D"MsoNormal"><u = class=3D""></u> <u class=3D""></u></p></div><div class=3D""><p = class=3D"MsoNormal">Alejandro<u class=3D""></u><u = class=3D""></u></p></div></div></div><p class=3D"MsoNormal"><u = class=3D""></u> <u class=3D""></u></p><div class=3D""><div = class=3D""><p class=3D"MsoNormal">On Tue, Jun 25, 2019 at 12:20 PM = Lamasuta, Franck, Vodafone Automotive <<a = href=3D"mailto:[email protected]" target=3D"_blank" = class=3D"">[email protected]</a>> wrote:<u class=3D""></u><u= class=3D""></u></p></div><blockquote style=3D"border-style: none none = none solid; border-left-width: 1pt; border-left-color: rgb(204, 204, = 204); padding: 0cm 0cm 0cm 6pt; margin-left: 4.8pt; margin-right: 0cm;" = class=3D""><div class=3D""><div class=3D""><p class=3D"MsoNormal"><span = lang=3D"FR" class=3D"">Hi list,</span><u class=3D""></u><u = class=3D""></u></p><p class=3D"MsoNormal"><span lang=3D"FR" = class=3D""> </span><u class=3D""></u><u class=3D""></u></p><p = class=3D"MsoNormal">We have implemented many patches along the way and I = can finally take some time to submit them.<br class=3D"">They are = running on our staging and production platforms since years for the = oldest ones.<u class=3D""></u><u class=3D""></u></p><p = class=3D"MsoNormal">I will submit them one by one in the next = days/weeks.<u class=3D""></u><u class=3D""></u></p><p = class=3D"MsoNormal">Let=E2=80=99s start with the first = one=E2=80=A6 <span = class=3D"Apple-converted-space"> </span><span style=3D"font-family: = Wingdings;" class=3D"">J</span><u class=3D""></u><u class=3D""></u></p><p = class=3D"MsoNormal"> <u class=3D""></u><u class=3D""></u></p><p = class=3D"MsoNormal">This patch allows Kannel to retrieve a pending DLRs = in its database when 2 (or more) SMSC binds are established (with = different IPs and/or ports).<u class=3D""></u><u class=3D""></u></p><p = class=3D"MsoNormal">It is required when a MT-SMS is submitted to SMSC A = and its DLR is sent back by SMSC B.<u class=3D""></u><u = class=3D""></u></p><p class=3D"MsoNormal">Done for CIMD2 and SMPP.<u = class=3D""></u><u class=3D""></u></p><p class=3D"MsoNormal"> <u = class=3D""></u><u class=3D""></u></p><p class=3D"MsoNormal">Example of = configuration where the patch is required:<u class=3D""></u><u = class=3D""></u></p><p class=3D"MsoNormal"> <u class=3D""></u><u = class=3D""></u></p><p class=3D"MsoNormal"><span style=3D"font-family: = "Courier New"; color: rgb(68, 114, 196);" class=3D"">#</span><u = class=3D""></u><u class=3D""></u></p><p class=3D"MsoNormal"><span = style=3D"font-family: "Courier New"; color: rgb(68, 114, = 196);" class=3D""># Primary server</span><u class=3D""></u><u = class=3D""></u></p><p class=3D"MsoNormal"><span style=3D"font-family: = "Courier New"; color: rgb(68, 114, 196);" class=3D"">#</span><u = class=3D""></u><u class=3D""></u></p><p class=3D"MsoNormal"><span = style=3D"font-family: "Courier New"; color: rgb(68, 114, = 196);" class=3D"">group =3D smsc</span><u class=3D""></u><u = class=3D""></u></p><p class=3D"MsoNormal"><span style=3D"font-family: = "Courier New"; color: rgb(68, 114, 196);" class=3D"">smsc =3D = cimd2</span><u class=3D""></u><u class=3D""></u></p><p = class=3D"MsoNormal"><span style=3D"font-family: "Courier New"; = color: rgb(68, 114, 196);" class=3D"">smsc-id =3D SMSC-A</span><u = class=3D""></u><u class=3D""></u></p><p class=3D"MsoNormal"><span = style=3D"font-family: "Courier New"; color: rgb(68, 114, = 196);" class=3D"">host =3D 123.1.2.3</span><u class=3D""></u><u = class=3D""></u></p><p class=3D"MsoNormal"><span style=3D"font-family: = "Courier New"; color: rgb(68, 114, 196);" class=3D"">port =3D = 6001</span><u class=3D""></u><u class=3D""></u></p><p = class=3D"MsoNormal"><span style=3D"font-family: "Courier New"; = color: rgb(68, 114, 196);" class=3D"">smsc-username =3D user</span><u = class=3D""></u><u class=3D""></u></p><p class=3D"MsoNormal"><span = style=3D"font-family: "Courier New"; color: rgb(68, 114, = 196);" class=3D"">smsc-password =3D xxxxxxxx</span><u class=3D""></u><u = class=3D""></u></p><p class=3D"MsoNormal"><span style=3D"font-family: = "Courier New"; color: rgb(68, 114, 196);" = class=3D"">allowed-smsc-id =3D id1</span><u class=3D""></u><u = class=3D""></u></p><p class=3D"MsoNormal"><span style=3D"font-family: = "Courier New"; color: rgb(68, 114, 196);" = class=3D"">preferred-smsc-id =3D id1</span><u class=3D""></u><u = class=3D""></u></p><p class=3D"MsoNormal"><span style=3D"font-family: = "Courier New"; color: rgb(68, 114, 196);" = class=3D""> </span><u class=3D""></u><u class=3D""></u></p><p = class=3D"MsoNormal"><span style=3D"font-family: "Courier New"; = color: rgb(68, 114, 196);" class=3D"">#</span><u class=3D""></u><u = class=3D""></u></p><p class=3D"MsoNormal"><span style=3D"font-family: = "Courier New"; color: rgb(68, 114, 196);" class=3D""># = Secondary server</span><u class=3D""></u><u class=3D""></u></p><p = class=3D"MsoNormal"><span style=3D"font-family: "Courier New"; = color: rgb(68, 114, 196);" class=3D"">#</span><u class=3D""></u><u = class=3D""></u></p><p class=3D"MsoNormal"><span style=3D"font-family: = "Courier New"; color: rgb(68, 114, 196);" class=3D"">group =3D = smsc</span><u class=3D""></u><u class=3D""></u></p><p = class=3D"MsoNormal"><span style=3D"font-family: "Courier New"; = color: rgb(68, 114, 196);" class=3D"">smsc =3D cimd2</span><u = class=3D""></u><u class=3D""></u></p><p class=3D"MsoNormal"><span = style=3D"font-family: "Courier New"; color: rgb(68, 114, = 196);" class=3D"">smsc-id =3D SMSC-B</span><u class=3D""></u><u = class=3D""></u></p><p class=3D"MsoNormal"><span style=3D"font-family: = "Courier New"; color: rgb(68, 114, 196);" class=3D"">host =3D = 123.1.2.3</span><u class=3D""></u><u class=3D""></u></p><p = class=3D"MsoNormal"><span style=3D"font-family: "Courier New"; = color: rgb(68, 114, 196);" class=3D"">port =3D 6002</span><u = class=3D""></u><u class=3D""></u></p><p class=3D"MsoNormal"><span = style=3D"font-family: "Courier New"; color: rgb(68, 114, = 196);" class=3D"">smsc-username =3D user</span><u class=3D""></u><u = class=3D""></u></p><p class=3D"MsoNormal"><span style=3D"font-family: = "Courier New"; color: rgb(68, 114, 196);" = class=3D"">smsc-password =3D xxxxxxxx</span><u class=3D""></u><u = class=3D""></u></p><p class=3D"MsoNormal"><span style=3D"font-family: = "Courier New"; color: rgb(68, 114, 196);" = class=3D"">allowed-smsc-id =3D id1</span><u class=3D""></u><u = class=3D""></u></p><p class=3D"MsoNormal"> <u class=3D""></u><u = class=3D""></u></p><p class=3D"MsoNormal"> <u class=3D""></u><u = class=3D""></u></p><p class=3D"MsoNormal">Regards,<u class=3D""></u><u = class=3D""></u></p><p class=3D"MsoNormal">Franck<u class=3D""></u><u = class=3D""></u></p></div></div></blockquote></div></div></div></blockquote= ></div><style class=3D"">ul[class*=3D'mb-extra__public-links'], = ul[class*=3D'mb-note__public-links'], ul[class*=3D'mb-task__public-links']= { display: none !important; }</style></div></blockquote></div><br = class=3D""></div></body></html>= --Apple-Mail=_9CB41686-4CC4-40F7-9132-2A6A4864A7FD--