Source IP changes when using failover rule with redundancy.

Discuss any topic about Brekeke SIP Server.

Moderator: Brekeke Support Team

Post Reply
dudley.aoi
Posts: 31
Joined: Wed Oct 17, 2018 2:21 pm

Source IP changes when using failover rule with redundancy.

Post by dudley.aoi »

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: Select all

$request = ^INVITE
To = sip:(SOME_PREFIX..)@
Deploy Pattern:

Code: Select all

$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: Select all

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.
Laurie
Posts: 245
Joined: Mon Jan 07, 2008 12:25 pm

Post by Laurie »

Are BREKEKE_CLUSTER_IP and BREKEKE_PRIMARY_IP in the same network segment?

The Brekeke's document recommends that they are in different network segments.
https://docs.brekeke.com/sip/brekeke-si ... ancy-setup
dudley.aoi
Posts: 31
Joined: Wed Oct 17, 2018 2:21 pm

Post by dudley.aoi »

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.
dudley.aoi
Posts: 31
Joined: Wed Oct 17, 2018 2:21 pm

Post by dudley.aoi »

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.
Tata
Posts: 223
Joined: Sun Jan 27, 2008 1:03 pm

Post by Tata »

Add the line below in the [Configuration]->[Advanced] page. It might meet the requirement.

Code: Select all

net.bind.use = true 
dudley.aoi
Posts: 31
Joined: Wed Oct 17, 2018 2:21 pm

Post by dudley.aoi »

Can you point me to documentation on what "net.bind.use" does?

Closest I can find is net.bind.interface. Similar, but different: https://docs.brekeke.com/sip/bind-breke ... ip-address

Would I need to set net.bind.interface explicitly before using net.bind.use=true?
Tata
Posts: 223
Joined: Sun Jan 27, 2008 1:03 pm

Post by Tata »

"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.
Post Reply