In my scenario, one outbound proxy and two internal SIP servers. The two SIP servers share one DB.
When receiving a SIP message, the outbound proxy forwards it to one of the internal SIP servers. The main task of the outbound proxy is to dispatch SIP requests to internal SIP servers evenly (achieve loading balancing). The SIP servers are both active and with different IPs. The adoption of two active SIP servers is to achieve higher performance.
When one SIP server is suddenly down, the outbound proxy will forward the subsequent SIP messages to the other alive SIP server so that user agents never feel the service unavailable. However, I encounter a serious problem in my scenario where the two SIP servers have different IPs. Specifically,
consider user agent A sends an INVITE message to user agent B. Suppose the INVITE message of A was handled by SIP server SA and SA suddenly
goes down. When receiving the BYE message from A or B, the outbound proxy will forward it to the other alive SIP server SB. However, SB will not process the BYE message as my wish even though SA and SB share the same DB. From my understanding, SB won't process the BYE message because the corresponding dialog is not stored in the local shared memory of SB.
To address this issue, I have a feature request that a SIP server will access the DB for a received BYE message whose dialog is not in the shared memory. Besides, the SIP server will process the dialog found in the DB even when the caller_sock and callee_sock are different from its listening sockets. I know caller_sock and callee_sock are for NAT. But in my case, the outbound proxy is responsible for NAT traversal. So, the SIP server
does not need to care about the caller_sock and callee_sock.
In my opinion, my setting (one outbound proxy and two internal SIP servers; SIP servers have different IPs and share one DB) is able to achieve higher performance. Thus, I truly hope that the OpenSIPS developers can kindly help to meet this feature request. Many thanks in advance.