[OpenSIPS-Users] OpenSIPS 'ignoring' incoming '200 OKs' in the middle of a call

Jock McKechnie jock.mckechnie at gmail.com
Mon Mar 27 10:56:42 EDT 2017


Greetings all;

This is in continuation with a message I sent last week ('OpenSIPS
debug logging SIP packets it deems non-local'). I've been beating my
head against this problem for almost three weeks now and I'm really
hoping someone might be able to offer some insight. Either the problem
is really, really stupid - or it's seriously nasty.. and unfortunately
I'm just not grokking this one.

I have a "good" call flow and a "bad" call flow. The "good" one looks
like the below:
SIP Call Source (pjsip) -> LoadBalancer (OpenSIPS) -> Destination (FreeSWITCH)

The bad one:
SIP Call Source (pjsip) -> Proxy (OpenSIPS) -> LoadBalancer (OpenSIPS)
-> Destination (FreeSWITCH)

In both flows above the Source, LoadBalancer and Destination servers
are the same machines, the only change is the addition of a Proxy
between the Source and the LoadBalancer. In the former call flow
everything works exactly as expected - the call originates, makes it
through the LoadBalancer and gets passed onto the Destination, and all
returning messages are routed as expected, the call comes up, the call
tears down, life is good.

When the middleman Proxy is added all of a sudden the LoadBalancer
stops seeing 200 OKs from the Destination box. The LoadBalancer DOES
see 100 Tryings, so it's not completely busted, but it ignores/doesn't
receive/something the 200 OKs. And I just cannot figure out why it's
decided it can't see these.

I've compared both traps and signaling fields and besides an
additional Via (the Proxy) and tag differences, they appear identical
to my eyes. I've verified it's not local firewall (if it was the
OpenSIPS shouldn't have seen the 100 Trying either, but I've also
totally dropped the fw to no avail), the messaging is all following
the same networking path, it's coming in on the correct interface on
the LoadBalancer, the obvious in other words.

I've simplified the LoadBalancer config to the point it's not
"balancing" and is just sending to a specific FreeSWITCH box and the
behaviour is consistent. I've tried this on three versions of OpenSIPS
- 1.8.5, 1.8.8 and 1.11.6 and the behaviour is also consistent across
versions.

I have a bunch of traps and debug in the hopes someone might spot
something. These are all coming from a 1.8.5 release of OpenSIPS, for
what it's worth, although given it's across multiple versions
(including LTS), I'm guessing the version does not have anything to do
with it.

The opensips config I'm using is:
https://pastebin.com/LPNHtrVC

The "Good" ngrep trace:
https://pastebin.com/y8Way7Vq

The "Good" level 9 debug output:
https://pastebin.com/pwJvdafp


The "Bad" ngrep trace where you can see it ignoring the 200 OKs:
https://pastebin.com/9b322irb

The "Bad" debug output:
https://pastebin.com/MVdWDEgx


I've replaced the IPs in our flow with bogus hostnames to (hopefully)
illustrate things clearly - using hostnames, the call flow looks like:
Source.Me.com -> (Proxy.Me.com) -> LoadBalancer.Me.com -> Destination.Me.com

The destination number, 8005000300, is a test number on our platform -
although it is (presumably) a real US number, we're not routing this
out into the "Wild". The source is similarly a bogus number for
testing purposes.

If anyone has any suggestions, theories or insights, I cannot describe
to you how grateful I would be to hear them. By necessity I have to
add this additional Proxy into the call flow, so I -need- to make this
work.

As always, my thanks,
 - Jock



More information about the Users mailing list