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
Hello Team, Any update on this? Thanks, Mithil