[SR-Users] Same Via Tag for INVITE and ACK on S/L loadbalancer

Sebastian Damm damm at sipgate.de
Tue Feb 11 14:50:19 CET 2020


Hi all,

thanks for the discussion and reminding everyone that it is already
fixed. Henning, I guess we owe you a beer or two at Kamailioworld. :)

Daniel, to answer your question regarding "why stateless": Our setup
includes anycast, so multiple machines share the same IP address. And
depending on the datacenter location of our gateways or the uplink to
the carrier, even requests and answers can be routed through different
instances running with the same IP address. So yes, even in 2020 there
can be use cases for a stateless loadbalancer.

We were running 5.2.2, and after I upgraded to 5.2.6, our error reply
counter dropped significantly. Wow.

Regards,
Sebastian

On Mon, Feb 10, 2020 at 8:02 PM Henning Westerholt <hw at skalatan.de> wrote:
>
> Hello Serge,
>
> there was a regression introduced by b64a25874e3 in 5.2 because of a wrong refactoring. This were not noticed for some time because only a few people (still) use stateless load balancers. I noticed it as well in middle of last year during a customer project. It was fixed in  82635674517 end of July 2019, you find in the related discussion also some test results that I posted before doing the backport. So, if this is your problem, after 5.2.4 is should work again.
>
> Cheers,
>
> Henning
>
> --
> Henning Westerholt – https://skalatan.de/blog/
> Kamailio services – https://gilawa.com
>
> -----Original Message-----
> From: sr-users <sr-users-bounces at lists.kamailio.org> On Behalf Of Serge S.Yuriev
> Sent: Monday, February 10, 2020 4:46 PM
> To: Kamailio (SER) - Users Mailing List <sr-users at lists.kamailio.org>
> Subject: Re: [SR-Users] Same Via Tag for INVITE and ACK on S/L loadbalancer
>
> Hello,
>
> This stateless call flow is smooth in 5.1 branch, at least 5.1.7 but in 5.2.1 already broken IIRC.
> Some time ago I wrote about this very same issue
>
> 10.02.2020, 18:39, "Daniel-Constantin Mierla" <miconda at gmail.com>:
> > In such case, because the proxy is doing stateless forwarding, there
> > is no transaction. I guess the solution right now is to use tm for
> > relaying
> > - is any concern of doing that?
> >
> > If someone wants to look at generating same via branch, I am fine with
> > it, eventually controlled by a parameter if the code change is
> > significant, to be able to switch to current mode if unexpected side
> > effects pop up.
> >
> > One more note in this case: I expect it would be required to generate
> > different tag for 200ok ACK, so it is matched as different transaction
> > by next hop, not sure if there is any easy way to discover the type of
> > ACK in a stateless proxy.
> >
> > I am not sure I remember correctly, but in some discussions I think it
> > was suggested to just reuse the branch value of incoming top Via when
> > doing stateless forwarding.
> >
> > Cheers,
> > Daniel
> >
> > On 10.02.20 16:26, Sebastian Damm wrote:
> >>  We use 5.2 on the affected systems.
> >>
> >>  On Mon, Feb 10, 2020 at 4:15 PM Serge S. Yuriev <me at nevian.org> wrote:
> >>>  Hi
> >>>
> >>>  I believe you are using 5.2 or 5.3 series? This tend to work
> >>> properly on 5.1 series
> >>>
> >>>  10.02.2020, 18:10, "Sebastian Damm" <damm at sipgate.de>:
> >>>>  Hi,
> >>>>
> >>>>  actually, our only problem is handling negative replies. The ACK
> >>>>  belongs to the same transaction and therefore has to carry the
> >>>> same
> >>>>  Via branch ID.
> >>>>
> >>>>  Sebastian
> >>>>
> >>>>  On Mon, Feb 10, 2020 at 3:50 PM Yuriy Gorlichenko <ovoshlook at gmail.com> wrote:
> >>>>>   ACK for successull response is a new transaction. It has to be different. May be it is better to point provider to this?
> >>>>>
> >>>>>   On Mon, 10 Feb 2020, 14:26 Sebastian Damm, <damm at sipgate.de> wrote:
> >>>>>>   Hi,
> >>>>>>
> >>>>>>   I stumbled upon an interop problem with a carrier. We have the
> >>>>>>   following scenario:
> >>>>>>
> >>>>>>   Gateway --> Loadbalancer --> Carrier
> >>>>>>
> >>>>>>   The loadbalancer generates a Via header for each request. But
> >>>>>> since it
> >>>>>>   is stateless, the Via tag is generated for each request. As a
> >>>>>>   consequence, the Via tag in the ACK differs from the one in the
> >>>>>>   INVITE. And one carrier doesn't handle those ACKs if the Via
> >>>>>> tag
> >>>>>>   differs.
> >>>>>>
> >>>>>>   Is there a way to force the creation of a "deterministic" Via
> >>>>>> branch
> >>>>>>   tag? For example, building it from a hash over call-id and
> >>>>>> from-tag or
> >>>>>>   something like that?
>
> --
> wbr,
> Serge
>
>
> _______________________________________________
> Kamailio (SER) - Users Mailing List
> sr-users at lists.kamailio.org
> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users



-- 
Sebastian Damm
Voice Engineer
__________________________________________
sipgate GmbH



More information about the sr-users mailing list