For more information regarding the security incident at F5, the actions we are taking to address it, and our ongoing efforts to protect our customers, click here.

Forum Discussion

trx's avatar
Jan 26, 2012

How many HTTP request can access IRules?

Hello Community,

How many HTTP request can access IRules? If more than 1 HTTP request

 

can access a set of IRules associated with a VS, then do they have their own set of variables or do they share a static variable? ".... own set of variables..." meaning each HTTP request variable X can be any value at any point in time. "... share a static variable..." meaning each HTTP request will share 1 variable X value and if it changes then it changes for ALL.

 

 

 

ex) If 2 HTTP request access IRules at the same time and manipulates X variable.

 

 

 

1) HTTP Request 1 changes variable X to "1" in HTTP REQUEST EVENT.

 

2) Then HTTP Request 2 changes variable X to "2" in HTTP REQUEST EVENT.

 

3) HTTP Request 2 uses variable X in the HTTP RESPONSE EVENT.

 

 

 

Is HTTP Request 2 variable X equal to "1" or "2"?

 

 

 

Thanks in advance.

 

 

 

TRX

 

6 Replies

  • hoolio's avatar
    hoolio
    Icon for Cirrostratus rankCirrostratus
    Hi TRX,

     

     

    Local variables are accessible for the life of the client connection. So X would be equal to 2. See these posts and its links for more info:

     

     

    http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/50/aft/1172260/showtab/groupforums/Default.aspxc

     

     

    Aaron

     

     

  • The link you listed is not working properly.

     

     

    So when you say X is equal to "2", I'm assuming you're implying more than 1 HTTP Request can access IRules, correct?
  • hoolio's avatar
    hoolio
    Icon for Cirrostratus rankCirrostratus
    I had an extra letter on the end of the URL. Can you try this:

     

     

    http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/50/aft/1172260/showtab/groupforums/Default.aspx1172986

     

     

    If you have an iRule enabled with code in an HTTP_REQUEST event, the HTTP_REQUEST event will be triggered on each HTTP request. Local variables created or updated at any point during a client's connection to the virtual server will still be available until the connection is closed.

     

     

    Aaron
  • Thanks. I will check it out.

     

     

    With your example above, does the 2nd HTTP request wait for the 1st HTTP request (HTTP_RESPONSE event) to go out back to the client before the

     

    it enters the HTTP_REQUEST event?

     

     

    TRX
  • hoolio's avatar
    hoolio
    Icon for Cirrostratus rankCirrostratus
    Clients can pipeline requests with HTTP so that request one and request two are sent before a reply comes back for the first request. I'm not sure how TMM handles that. By default, pipelining is enabled on the HTTP profile. But I think OneConnect does not support pipelining.

     

     

    I'll try testing and let you know what I find.

     

     

    Aaron
  • Trx: for 'normal' variables set in iRules (as opposed to static::, globals, tables or data groups), they are scoped locally per connection. A connection hits the VIP, then instantiates the iRule and the variables are uniquely scoped to that flow. So connection 1 will only ever see connection 1's variables; ditto connection 2...

     

     

    In that way an iRule is almost like an "object" that is born when the rule is executed. Without being explicitly global, variables are local.

     

     

    --Matt Cauthorn