Technical Forum
Ask questions. Discover Answers.
Showing results for 
Search instead for 
Did you mean: 
Custom Alert Banner

Maintaining persistancy based on Unique transaction ID for 2 different URI

F5 Employee
F5 Employee



Explaining a bit about scenario. Customer has requirement of sending certain traffic to specific node within a pool for 2 different URI with same transactionID (attaching snapshot for 2 sample transcationID) . The objective is api /req and api /resp should land on same node. Below irule seems not working as expected. the below irule is attached to persistancy uie and attached to vs.



set txnid [findstr [HTTP::uri] "urn:txnid:" 10 ";"]

# set txnid [string range $string1 10 end]

# log local0. " Printing txnid: $txnid for [HTTP::uri]"

if { $txnid != "" } {

persist uie $txnid




Have done a bit of modification, can you please look into this and suggest any modifications. The new sample irule:

when HTTP_REQUEST {   

  if { (([string tolower [HTTP::uri]] contains "/upi/respbalenq/") or ([string tolower [HTTP::uri]] contains "/upi/reqbalenq/") and ( [string tolower [HTTP::uri]] contains "/urn:txnid:auto" ) } {  

set txnid [findstr [HTTP::uri] "urn:txnid:" 10 ";"]

#set string1 [findstr [HTTP::URI] "urn:txnid:"]

#set txnid [string range $string1 10 end]

 Log local0. " Printing txnid: $txnid for [HTTP::uri}"

 if { $trxnid != ""} {

     persist uie $txnid

   pool inq_bal

   } else {





In the snapshot is selfip and / 100 / 101 are backend servers. Objective is if transaction ID is same for both api (req and resp) , it should always land on same node.








Hi Amith,

I think your iRule is missing the part when you add the persistence record. Example:

persist add uie  [findstr [HTTP::uri] "urn:txnid:" 10 ";"]

Check here:

and here:

With your iRule you are looking up a record that was never created.

Furthermore you can list existing persistence records and verify that your iRule works, see here:



Thanks Daniel for response.


I am under impression persist add uie is to be used for http_response and we are not inspecting response of the server.


Am i going wrong in my understanding?

You are right with your understanding, it must be inserted as part of the response.


Can you try configuring oneconnect profile with /32 mask and see if that makes a diffrence? With oneconnect, F5 should detach the connection and reload-balance using persistence record per HTTP request.

Sure Sanjay. I will try Oneconnect too.