Test topology using K 5.4 where topos module is loaded in Proxy1:
A - Proxy1 - Proxy2 - Proxy1 - B
A sends INVITE, B responds with 183 Session Progress, and A sends PRACK.
The result is that PRACK starts to loop in second Proxy1 instance instead of being forwarded to B.
If topos module is not loaded in Proxy1, it forwards PRACK to B as it should.
Also, if Proxy1 loads topos module, but A does not send PRACK, other in-dialog requests (e.g. BYE) work fine.
-- Juha
Hi Juha,
as there have been different changes to topology hiding modules in the last months, can you specify the exact minor version?
Cheers,
Henning
On 13.04.21 20:34, Juha Heinanen wrote:
Henning Westerholt writes:
as there have been different changes to topology hiding modules in the last months, can you specify the exact minor version?
5.4.4
Actually the stable branches (including 5.4) didn't get many changes in the topos module recently, only some fix for routing 100-trying reply, previous commits are from september-october last year. The recent changes to topos were in master branch, but being new features, none of them was backported (as far as I could notice and the git log shows).
Cheers, Daniel
On 13.04.21 19:56, Juha Heinanen wrote:
Test topology using K 5.4 where topos module is loaded in Proxy1:
A - Proxy1 - Proxy2 - Proxy1 - B
A sends INVITE, B responds with 183 Session Progress, and A sends PRACK.
The result is that PRACK starts to loop in second Proxy1 instance instead of being forwarded to B.
If topos module is not loaded in Proxy1, it forwards PRACK to B as it should.
Also, if Proxy1 loads topos module, but A does not send PRACK, other in-dialog requests (e.g. BYE) work fine.
The topos module was not designed for spirals, so the messages of the same dialog have to pass only one time through topos processing. For example, t should work if you load topos in the proxy2. For spirals, it may work in some cases, but not guaranteed, you may get it working better by playing with its event_routes to skip topos processing in one of the Porxy1 steps.
If you need to do two different topology striping, one for each Porxy1 steps, you have to try the development version and set different context for initial requests on Proxy1 steps. I didn't really test it for this use case, I needed context for some grouping without the case of spiralling, but thinking a bit about what it does internally, it may make it work better with spirals.
Cheers, Daniel
On 13.04.21 20:35, Daniel-Constantin Mierla wrote:
On 13.04.21 19:56, Juha Heinanen wrote:
Test topology using K 5.4 where topos module is loaded in Proxy1:
A - Proxy1 - Proxy2 - Proxy1 - B
A sends INVITE, B responds with 183 Session Progress, and A sends PRACK.
The result is that PRACK starts to loop in second Proxy1 instance instead of being forwarded to B.
If topos module is not loaded in Proxy1, it forwards PRACK to B as it should.
Also, if Proxy1 loads topos module, but A does not send PRACK, other in-dialog requests (e.g. BYE) work fine.
The topos module was not designed for spirals, so the messages of the same dialog have to pass only one time through topos processing. For example, t should work if you load topos in the proxy2. For spirals, it may work in some cases, but not guaranteed, you may get it working better by playing with its event_routes to skip topos processing in one of the Porxy1 steps.
If you need to do two different topology striping, one for each Porxy1 steps, you have to try the development version and set different context for initial requests on Proxy1 steps. I didn't really test it for this use case, I needed context for some grouping without the case of spiralling, but thinking a bit about what it does internally, it may make it work better with spirals.
Btw, just to add as I forgot about, parallel forking was not something really taken in consideration, the case of topos being int he node after a proxy doing parallel forking, it may work, just that was also not part of initial design, you should test it in case you needed for such scenarios.
Cheers, Daniel
Daniel-Constantin Mierla writes:
If you need to do two different topology striping, one for each Porxy1 steps, you have to try the development version and set different context for initial requests on Proxy1 steps. I didn't really test it for this use case, I needed context for some grouping without the case of spiralling, but thinking a bit about what it does internally, it may make it work better with spirals.
Thanks for the tip. We'll try with contexts after upgrade to 5.5. For now, the "solution" is to strip 100rel from Supported headers.
-- Juha