Forum Discussion

Julian_Sierra_4's avatar
Icon for Nimbostratus rankNimbostratus
Jun 10, 2011

Help me with exchage2010 in F5 v 10.2.1

Hello every one... I am setting exchange 2010 on BIG-IP 10.2.1 Build 511.0 Hotfix HF3, following the Deployment Guide I am use the Template for Exchange 2010, this template generate an iRule named Exch_2010_single_Persist_irule (view original iRule in the pag 56 of deployment guide).






iRule to select pool and persistence method when all Exchange


Client Access services are accessed through the same BIG-IP


virtual server.




switch -glob [HTTP::path] {



"/Microsoft-Server-ActiveSync*" {


Direct all ActiveSync clients to a common pool; use


HTTP cookie persistence


persist cookie


pool Exch_2010_single_as_pool


log local0. "host [HTTP::host] url [HTTP::uri] Persistencia"


HTTP::class disable





"/rpc/rpcproxy.dll" {


Grab all requests for Outlook Anywhere; the following


checks assign correct persistence methods.


switch -glob [HTTP::header "User-Agent"] {




This User-Agent section matches most versions of


Outlook and Windows using Outlook Anywhere.


The OutlookSession cookie is new to Outlook 2010.


if { [HTTP::cookie exists "OutlookSession"] } {


persist uie [HTTP::header "OutlookSession"] 3600




else {


persist uie [HTTP::header "Authorization"] 3600







"*Microsoft Office*" {


This section matches some versions of


Outlook 2007 on Windows XP


persist uie [HTTP::header "Authorization"] 3600





default {


This section catches all other requests for


Outlook Anywhere, and sets a persistence method


that does not require the client to support


HTTP cookies


persist source_addr







Finally, this assigns the Outlook Anywhere pool and turns


off full HTTP parsing and compression. If the preceding


clients should be sent to separate pools, the pool statement


should be removed here, and a separate pool statement


placed in each of the preceding logic branches.


Other modules (APM, ASM, etc.) should be disabled here


as well, if active for other traffic though this virtual




pool Exch_2010_single_oa_pool






CACHE::class disable


log local0. "host [HTTP::host] url [HTTP::uri] Anyware"





"/xml/autodiscover.aspx" {


Requests for Autodiscovery information. The selected pool


might be unique, or might be the same as e.g. your pool


for OWA or ActiveSync. In this example, we use the same


pool that receives ActiveSync traffic.


persist cookie


pool Exch_2010_single_as_pool


log local0. "host [HTTP::host] url [HTTP::uri] AuteSync"


HTTP::class disable





default {


This final section takes all traffic that has not


otherwise been accounted for and sends it to the


pool for Outlook Web App


persist cookie


pool Exch_2010_single_owa_pool


log local0. "host [HTTP::host] url [HTTP::uri] Owa"



If using the Web Accelerator module, uncomment the


following line and change the name to that of


your WA class.


HTTP::class select Exch_2010_class


log local0. "host [HTTP::host] url [HTTP::uri] WebAcelerator"













Checking logs, found the next error



Jun 10 10:26:51 local/tmm err tmm[5201]: 01220001:3: TCL error: Exch_2010_single_Persist_IRule_irule - Prerequisite operation not in progress (line 1) invoked from within "HTTP::host" ("/rpc/rpcproxy.dll" arm line 51) invoked from within "switch -glob [HTTP::path] { "/Microsoft-Server-ActiveSync*" { Direct all ActiveSync clients to a common pool; use ..."






Any idea...?





7 Replies

  • Did you by any chance try to create a new iRule by cutting and pasting from the deployment guide and see if the syntax error persists?



  • Do you have a default pool on the virtual server? If not, try adding one to see if the error goes away.






    When using the session or persist commands, one common error that occurs is "Prerequisite operation not in progress". The most common cause for this error is that there is no pool currently selected for the connection. Persistence and session entries by default are limited to a single pool. For most virtual servers, a default pool is specified in bigip.conf, and this pool will be used when persistence or session queries are made. Selecting a default pool to use is usually the best way to eliminate this error. If you cannot specify a default pool (for example, with a forwarding virtual), then you can specify that the operation should be across all pools using the any pool option described above.




  • Also, make sure to add a OneConnect profile to the virtual server if you haven't already. If you're using SNAT you can add the default OneConnect profile with a /0 source mask. If not create a custom OneConnect profile with a /32 source mask.



  • Aron, thank you very much for you help... I checking configuration for virtual server and look what profile use for the virtual server is, One Connect... The configuration for me virtual server is



    virtual Exch_2010_single_https_virtual_server {


    snat automap




    ip protocol tcp


    rules {










    persist Exch_2010_single_persist_profile


    profiles {


    Exch_2010_single_clientssl_profile {






    Exch_2010_single_lan-optimized_tcp_profile {






    Exch_2010_single_ntlm_profile {}


    Exch_2010_single_one_connect_profile {}


    Exch_2010_single_wan-optimized_tcp_profile {






    microsoft_exchange_2010_https_http-wan-optimized-compression_shared_http {}








    Was taken configuration file from bigip.conf... I can change some parameter in the virtual server...? The problem persist
  • Can you set the virtual server to use the Exch_2010_single_owa_pool pool under the virtual server resources tab? The iRule can select other pools based on the logic in the rule. But having a default pool on the virtual server should avoid the runtime error you're seeing.



  • Two more questions: did you modify the configuration after running through the template at all, and what are the symptoms other than the message logged? Is traffic flowing through the box, or is the message indicative of the connections being interrupted? What client type is accessing Exchange when the message is logged?