Forum Discussion

harry_35316's avatar
harry_35316
Icon for Nimbostratus rankNimbostratus
Dec 17, 2011

persistence using MSISDNnumber

Hi,

 

I have configured the below irule for persistence using MSISDN no for a VIP x.x.x.x:2709 and using the ssl certificates for secure communication and default serverssl profile. I have associated TCP profile and a default pool consisting of two members on port 2609.

 

 

 

Now i have configured irule and assigned to an universal persistence profile(with time out 300) and assigned to the VIP. But the persistence is not working and it is load balancing again even for requests with same MSISDN no and in less than 1-2 min itself.

 

 

 

Also I have observed the statistics and and have seen that no failures in irule executions. and also no records in the persistence table.

 

Also did not observe any logs for the irule.

 

 

 

I am using 10.2.1 version.

 

 

 

irule:

 

when CLIENT_ACCEPTED{

 

TCPC::collect}

 

when CLIENT_DATA{

 

if{[[TCP::payload] contains "MSISDN="]}

 

{

 

set num [findstr [TCP::payload] MSISDN= 7 /n]

 

persist uie $num 300

 

log local7. "MSISDN number $num"

 

}

 

TCP::release

 

}

 

 

 

 

 

 

 

 

  • just curious if there is only one request per tcp connection. not sure if HTTP::collect/release is helpful.
  • But in either case the request with same MSISDN no should go to the same server which is not happening...
  • Hi Harry,

    Can you try this version with added logging, reproduce the issue and reply with the debug logging from /var/log/ltm?

    when CLIENT_ACCEPTED {
    TCP::collect
    log local0. "[IP::client_addr]:[TCP::client_port]: Collecting payload"
    }
    when CLIENT_DATA{
    if {[TCP::payload] contains "MSISDN="}{
    set num [findstr [TCP::payload] MSISDN= 7 "\n"]
    persist uie $num 300
    log local0. "[IP::client_addr]:[TCP::client_port]: Parsed MSISDN: $num, with record: [persist lookup uie $num]"
    }
    log local0. "[IP::client_addr]:[TCP::client_port]: Releasing"
    TCP::release
    }
    when LB_SELECTED {
    log local0. "[IP::client_addr]:[TCP::client_port]: Selected [LB::server]"
    }
    when SERVER_CONNECTED {
    log local0. "[IP::client_addr]:[TCP::client_port]: Connected [IP::server_addr]:[TCP::server_port]"
    }
    

    Aaron