Andrew,
logically speaking, your openser cannot be proxy (in Route hdr) and end
point (in Contact) in the same time.
Regarding the Contact rewriting - I would say it is not necessary.
According the RFC, the UAS (b2bua) will receive as route set the RR of
openser and as remote target URI the private contact of the UAC. When
building the BYE, it will put the UAC's contact (private) in RURI and
all received RR in Route headers. The whole idea is that the Route hdrs
will be used by b2bua to send out the request and not RURI - so this can
be private as it will not be used for routing ;)...Only openser will
start routing based on RURI as all the ROute headers will be consumed.
Regards,
Bogdan
Andrew Pogrebennyk wrote:
Bogdan,
Thanks for clarifying, that's good to know the root cause.
But I rewrite the contact IP from INVITE for a reason. As stated
earlier, on the public internet side OpenSER talks to b2bua. So from
INVITE b2bua learns remote target URI of the client. And when it's
time to send BYE to the it, b2bua follows RFC 3261 rules regarding
Request-URI:
The UAC uses the remote target and route set to build the Request-URI
and Route header field of the request.
If the route set is empty, the UAC MUST place the remote target URI
into the Request-URI. The UAC MUST NOT add a Route header field to
the request.
If the route set is not empty, and the first URI in the route set
contains the lr parameter (see Section 19.1.1), the UAC MUST place
the remote target URI into the Request-URI and MUST include a Route
header field containing the route set values in order, including all
parameters.
Since all URIs in route set from OpenSER do contain lr parameter b2bua
behaves as described in the last paragraph of the extract above.
Therefore as long as b2bua can not reach the internal network (it is
many hops away) and uses the remote target URI to send request to and
client puts private IP into Contact header (which is the right thing
for him to do) I do have to rewrite Contact header - otherwise request
will never reach the destination. Any recommendations?
Bogdan-Andrei Iancu wrote:
Hi Andrew,
My question was about the BYE request - all the routing information
(Route+RURI) are pointing to your server - I find this a bit strange
as there is no information about the end device (where openser should
send further the request).
If I understand correctly your scenario, it seams you change the
contact IP from INVITE into the openser IP - this is not good as it
will make impossible to make difference between loose route and
strict route.
So your problem is that you put in INVITE's contact the server IP.
Regards,
Bogdan