Universal or UIE Persistence is one of the great features that is available with F5 devices. UIE stands for Universal Inspection Engine. Universal Persistence provides us with the ability to load balance traffic based on the information available in the HEADER or the CONTENT of the incoming packet.
When to use it:
- When you require persistence based on a session identifier that can’t be utilized using the pre-configured persistence profiles like Source IP or Cookie Insertion.
Usage Example:
Sometimes, you may want to have persistence to exist based on a “Session Cookie” that is inserted by the Server. This “Session Cookie” could be utilized within the Header or URI of incoming packet and this may also be utilized within the content, when you are using the HTTP POST method.
Configuration Steps:
- Identify the Session Identifier & its location – Example: JSessionID present in URI
- Write a simple iRule utilizing “persist UIE”
- Create a Custom UIE profile with default UIE profile as the parent profile. Attach the iRule to this Custom UIE profile
A simple example based on X-Forwarded-For header:
when HTTP_REQUEST {
if {[HTTP::header X-Forwarded-For] != ""}{
persist uie [HTTP::header X-Forwarded-For] 600
}
}
Use the above iRule within a UIE persistence profile for persistence based on the incoming X-Forwarded-For header value. “600” denotes the timeout in seconds and this can also be set in the UIE persistence profile.
Reference: