RCSe TLS/TCP Re-Use Connections
In an RCSe environment the sip-interface reuse-connections option is used to make the Oracle® Enterprise Session Border Controller retain the TCP/TLS connection established by the endpoint during the registration for all subsequent messages to that endpoint, essentially providing for a persistent connection between the Oracle® Enterprise Session Border Controller and the user equipment (UE).
Field experience uncovered an implementation deficiency associated with these persistent connections particularly within RCSe deployments. The basic scenario is as follows:
-
The UE registers in a TLS realm on SBC1. SBC1 stores the IP:Port from VIA (and Contact) as alias of the currently established connection.
-
The UE transits to another realm/sip-port (same or different Oracle® Enterprise Session Border Controller) without previously unregistering or closing the TCP connection with the TLS sip-port on SBC1.
-
UE goes back to the TLS realm in SBC1 and establishes a new connection — same source IP as in Step 1, but a different port as in Step 1.
The problem arises at Step 3. If the Oracle® Enterprise Session Border Controller has not detected that the TLS connection established in Step 1 has been effectively terminated, it will not update the alias connection to that established in Step 3, but instead continue to attempt to use the Step 1 connection.
This means that the next message from the core side to the UE will fail, since the Oracle® Enterprise Session Border Controller will attempt to send the message of the dead TLS connection — that is using the IP address:port pair passed in Step 1.
All communications to this UE will fail until it sends the next message to the Oracle® Enterprise Session Border Controller, when the alias connection will be update to the TLS connection in Step 3.
To resolve this issue, the Oracle® Enterprise Session Border Controller needs to always update the alias table when it receives a new inbound connection on the configured sip-interface.
Option Configuration Guidelines
Option | Connection Behavior |
---|---|
reuse-connections | Use/retain first inbound connection until explicitly closed |
reuse-connections=latest | Use the last inbound connection, update the alias for each new connection |
reuse-connections=no | Establish new connection at each UE access |
NOT CONFIGURED | Equivalent to reuse-connections=no |