Bug 2127398

Summary: backport commit "Allow persistence_granularity to be 0.0.0.0" for keepalived version 1.3.5, RHEL 7
Product: Red Hat Enterprise Linux 7 Reporter: suresh kumar <surkumar>
Component: keepalivedAssignee: Ryan O'Hara <rohara>
Status: NEW --- QA Contact: cluster-qe <cluster-qe>
Severity: urgent Docs Contact:
Priority: urgent    
Version: 7.9CC: cluster-maint, mmhatre, rohara
Target Milestone: rcFlags: surkumar: needinfo? (rohara)
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description suresh kumar 2022-09-16 07:55:14 UTC
Description of problem:
SIP request message with same call-id, but different source IP is routed to different server as if it was newly initiated call-id and connection breaks.

Setup:
=======

SIP clients ------------> keepalived Server ------> Real Server
                           192.168.100.116          192.168.100.118
                                                    192.168.100.121



Version-Release number of selected component (if applicable):
keepalived 1.3.5

How reproducible:
Always by customer


Actual results:
Current Flow:
SIPP(192.168.100.171) --- INVITE ---> LB(192.168.100.116) ---> RealServer(192.168.100.118)
SIPP(192.168.100.171) <----- 200 ----- RealServer(192.168.100.118)
SIPP(192.168.100.170) ----- ACK -----> LB(192.168.100.116) ---> RealServer(192.168.100.121)
SIPP(192.168.100.170) ----- BYE -----> LB(192.168.100.116) ---> RealServer(192.168.100.121)

# ipvsadm -Ln --connection --persistent-conn
IPVS connection entries
pro expire state       source             virtual            destination        pe name          pe_data
UDP 14:07  UDP         192.168.100.170:0  192.168.100.116:5060 192.168.100.121:5060 sip                1-16760.100.171
UDP 14:07  UDP         192.168.100.171:0  192.168.100.116:5060 192.168.100.118:5060 sip                1-16760.100.171

The call-id is same, but packet from 192.168.100.171 is routed to 192.168.100.118



Expected results:
==================

SIPP(192.168.100.171) --- INVITE ---> LB(192.168.100.116) ---> RealServer(192.168.100.118)
SIPP(192.168.100.171) <----- 200 ----- RealServer(192.168.100.118)
SIPP(192.168.100.170) ----- ACK -----> LB(192.168.100.116) ---> RealServer(192.168.100.118) ***
SIPP(192.168.100.170) ----- BYE -----> LB(192.168.100.116) ---> RealServer(192.168.100.118) ***

Additional info:
==================
keepalived configuration used:

virtual_server 192.168.100.116 5060 {
# virtual_server fd00::7ea1:10:1:1:145 5060 {
    delay_loop 5
    lb_algo rr
    lb_kind DR
    ops 
    persistence_timeout 60
    persistence_granularity 0.0.0.0  <----------------- This is not working
    persistence_engine sip 
    protocol UDP

Comment 6 Mithil Mhatre 2023-08-09 08:05:43 UTC
Hello Team,

Any update on this?


Thanks,
Mithil