Forum Discussion

Frank_ten_Wolde's avatar
Frank_ten_Wolde
Icon for Nimbostratus rankNimbostratus
Dec 20, 2023

[LB::server pool] evaluation changes between HTTP_REQUEST and HTTP_REQUEST_SEND

Consider a virtual server with two pools, one for virtual host A and one for virtual host B:

  1. https://A.example.com/ --> pool_A
  2. https://B.example.com/ --> pool_B
  • We are using a Local Traffic Policy to perform pool selection.
  • We have a client-side HTTP/2 profile attached to this virtual server.
  • We are using TMOS 16.1.4.
  • We do not have OneConnect enabled.

When I browse to site A and check "[LB::server pool]" in HTTP_REQUEST, it evaluates to "pool_A". In HTTP_REQUEST_SEND, "[LB::server pool]" also evaluates to "pool_A". This is to be expected…

However, when I then browse to site B and check "[LB::server pool]" in HTTP_REQUEST, I still get "pool_A"???

In the corresponding HTTP_REQUEST_SEND event, "[LB::server pool]" does correctly evaluates to "pool_B". (Also: in the corresponding LB_SELECTED event, "[LB::server pool]" correctly evaluates to "pool_B".)

Somewhere between HTTP_REQUEST and LB_SELECTED/HTTP_REQUEST_SEND, the value of "[LB::server pool]" changes from "pool_A" to "pool_B". This is NOT what I would expect...

If I remove the HTTP/2 client-side profile, this behaviour is not observed (and "[LB::server pool]" evaluates to the same pool in both the HTTP_REQUEST and LB_SELECTED/HTTP_REQUEST_SEND event).

Has anyone observed this behaviour before? Is this a 'bug' perhaps?