Author |
Message |
dudley.aoi Brekeke Addict
Joined: 17 Oct 2018 Posts: 31
|
Posted: Fri Sep 29, 2023 1:23 pm Post subject: Source IP changes when using failover rule with redundancy. |
|
|
1. Brekeke Product Name and Version:
Brekeke SIP Server 3.14.7.4/563.3
2. Java version:
OpenJDK 64-Bit Server 11.0.20
3. OS type and the version:
RHEL 8.8
4. UA (phone), gateway or other hardware/software involved:
Genesys SIP server 8.1.104.42 on Windows 2019
5. Your problem:
When a failover rule is used in Brekeke SIP Server, the initiating IP changes when failing through to the next Genesys server. The Genesys server is expecting the session to initiate from the Brekeke cluster IP, which it does in normal operations.
Let us assume the following setup:
Two Brekeke SIP servers in a cluster with redundancy set up, for 3 IPs (cluster, primary, secondary).
Two Genesys SIP servers with a primary and a secondary, for 2 IPs.
Brekeke ruleset:
Match Pattern:
Code: |
$request = ^INVITE
To = sip:(SOME_PREFIX..)@
|
Deploy Patterns |
Code: |
$transport = TCP
$auth = false
$rtp = false
To = sip:%1@GENESYS_PRIMARY:5060
$session = failover sip:%1@GENESYS_SECONDARY:5060
&failover.pattern.response = ^$
|
|
Brekeke Advanced settings:
(required for dealing with Avaya equipment unrelated to Genesys, but included for completeness)
Code: |
net.sip.transport.follow.request = false
net.sip.tcp.connection.put.followable = false
net.sip.tcp.keepalive.use=false
|
Traffic Genesys admins are expecting to see:
Normally:
BREKEKE_CLUSTER_IP -> GENESYS_PRIMARY
GENESYS_PRIMARY -> BREKEKE_CLUSTER_IP
SIP session establishes and continues
IF THE GENESYS PRIMARY FAILS:
BREKEKE_CLUSTER_IP -> GENESYS_PRIMARY (fails, no response)
BREKEKE_CLUSTER_IP -> GENESYS_SECONDARY
GENESYS_SECONDARY -> BREKEKE_CLUSTER_IP
SIP session establishes and continues
Observed traffic:
Normally:
BREKEKE_CLUSTER_IP -> GENESYS_PRIMARY
GENESYS_PRIMARY -> BREKEKE_CLUSTER_IP
SIP session establishes and continues
IF THE GENESYS PRIMARY FAILS:
BREKEKE_CLUSTER_IP -> GENESYS_PRIMARY (fails, no response)
BREKEKE_PRIMARY_IP -> GENESYS_SECONDARY
GENESYS_SECONDARY -> BREKEKE_PRIMARY_IP
SIP session fails with 404 unknown from Genesys.
We want to know why the inconsistency with the source IP from Brekeke using the failover rule and if there is any way to configure Brekeke to always only use the cluster IP and not the individual member node IPs. |
|
Back to top |
|
Laurie Brekeke Master Guru
Joined: 07 Jan 2008 Posts: 245
|
|
Back to top |
|
dudley.aoi Brekeke Addict
Joined: 17 Oct 2018 Posts: 31
|
Posted: Thu Oct 12, 2023 12:04 pm Post subject: |
|
|
Unfortunately due to constraints imposed by our networking team based on how we observed Brekeke functioning, yes, BREKEKE_CLUSTER_IP and BREKEKE_PRIMARY_IP are in the same network segment in this example.
I believe years ago (2018) we tried initially setting it up as per the documentation example, but it required routing between the "private" cluster subnet and the public side, IIRC. Networking was ok with giving me a non-routable cluster private subnet, but making a separate "private" subnet routable they weren't happy about.
The way we've been working around this is to simply set up SIP trunks on the far end with all three IPs, cluster IP and each of the node IPs. Otherwise when Brekeke sends traffic from the node IPs the other side will reject that traffic. And technically, it should because those IPs would be otherwise unknown - it would only know about the cluster IP. We've encountered the same behavior with both Avaya and Genesys equipment. It is because there is no way to force Brekeke to ONLY use the cluster IP. This is also why we could not use a non-routable cluster private subnet for the node IPs - Brekeke will regularly send traffic from the node IPs, as evidenced by the observed behavior described in my OP. |
|
Back to top |
|
dudley.aoi Brekeke Addict
Joined: 17 Oct 2018 Posts: 31
|
Posted: Thu Oct 12, 2023 12:09 pm Post subject: |
|
|
The "fix"/workaround for this is apparently to configure SIP trunks for the Brekeke node IPs of the primary and secondary on the far end equipment.
There does not appear to be any way to force Brekeke to only use the cluster IP. |
|
Back to top |
|
Tata Brekeke Master Guru
Joined: 27 Jan 2008 Posts: 223
|
Posted: Fri Oct 13, 2023 10:10 am Post subject: |
|
|
Add the line below in the [Configuration]->[Advanced] page. It might meet the requirement.
Code: |
net.bind.use = true |
|
|
Back to top |
|
dudley.aoi Brekeke Addict
Joined: 17 Oct 2018 Posts: 31
|
|
Back to top |
|
Tata Brekeke Master Guru
Joined: 27 Jan 2008 Posts: 223
|
Posted: Fri Oct 13, 2023 10:41 pm Post subject: |
|
|
"net.bind.use" enables the interface binding.
> Would I need to set net.bind.interface explicitly before using net.bind.use=true?
It doesn't matter. |
|
Back to top |
|
|