Forum Discussion

shawn306_84070's avatar
shawn306_84070
Icon for Nimbostratus rankNimbostratus
Oct 31, 2012

Error Message in Irule while setting up Exchange 2010

Oct 31 07:54:28 local/tmm1 err tmm1[7417]: 01220001:3: TCL error: vs_Exchange_2010_OWA_INT_single_Persist_IRule_irule - Operation not supported (line 3) invoked from within "CACHE::disable" ("/ews*" arm line 10) invoked from within "switch -glob -- [string tolower [HTTP::path]] { "/microsoft-server-activesync" { ActiveSync. if { [HTTP::header ex..."

 

Oct 31 07:54:28 local/tmm err tmm[7416]: 01220001:3: TCL error: vs_Exchange_2010_OWA_INT_single_Persist_IRule_irule - Operation not supported (line 1) invoked from within "CACHE::disable" ("/ews*" arm line 10) invoked from within "switch -glob -- [string tolower [HTTP::path]] { "/microsoft-server-activesync" { ActiveSync. if { [HTTP::header ex..."

 

This is the Irule that seems to be causing the issue.

 

iRule to select pool and persistence method when all Exchange

 

Client Access services are accessed through the same BIG-IP

 

virtual server.

 

when HTTP_REQUEST {

 

switch -glob [HTTP::path] {

 

 

"/Microsoft-Server-ActiveSync*" {

 

Direct all ActiveSync clients to a common pool; use

 

HTTP cookie persistence

 

persist cookie

 

pool vs_Exchange_2010_OWA_EXT_single_as_pool

 

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"] {

 

"MSRPC" {

 

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

 

server.

 

pool vs_Exchange_2010_OWA_EXT_single_oa_pool

 

HTTP::disable

 

COMPRESS::disable

 

HTTP::class disable

 

}

 

 

"/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 vs_Exchange_2010_OWA_EXT_single_ad_pool

 

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 vs_Exchange_2010_OWA_EXT_single_owa_pool

 

 

If using the Web Accelerator module, uncomment the

 

following line and change the name to that of

 

your WA class.

 

HTTP::class select vs_Exchange_2010_OWA_EXT_single_wa_http_class

 

}

 

}

 

}

 

 

Is this a case of another Irule being used before this irule is called ? If someone can explain the error message to me that would be great.

 

Thanks

 

Shawn

 

 

 

 

5 Replies

  • It doesn't look like the error relates to the iRule you've listed. The error message states the iRule is called: vs_Exchange_2010_OWA_INT_single_Persist_IRule_irule and the one you've listed doesn't appear to contain the text "if { [HTTP::header ex..." as listed near the end of the error message.
  • My mistake. Here is the right one..

     

     

    iRule to select pool and persistence method when all Exchange Client

     

    Access HTTP-based services are accessed through the same BIG-IP virtual

     

    server. This iRule will use an HTTP header inserted by a BIG-IP Edge

     

    Gateway for persistence (if that header is present); otherwise it will

     

    set persistence according to traditional methods.

     

     

    CHANGE ALL POOL NAMES TO MATCH THOSE IN YOUR ENVIRONMENT.

     

     

    when HTTP_REQUEST {

     

     

    Offline Address Book and Autodiscover do not require persistence.

     

     

    switch -glob -- [string tolower [HTTP::path]] {

     

     

    "/microsoft-server-activesync" {

     

    ActiveSync.

     

    if { [HTTP::header exists "APM_session"] } {

     

    persist uie [HTTP::header "APM_session"] 7200

     

    } elseif { [HTTP::header exists "Authorization"] } {

     

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

     

    } else {

     

    persist source_addr

     

    }

     

    pool vs_EXCHANGE_2010_OWA_single_as_pool

     

    COMPRESS::disable

     

    CACHE::disable

     

    return

     

    }

     

     

    "/owa*" {

     

    Outlook Web Access

     

    if { [HTTP::header exists "APM_session"] } {

     

    persist uie [HTTP::header "APM_session"] 7200

     

    } else {

     

    persist cookie insert

     

    }

     

    pool vs_Exchange_2010_OWA_INT_single_owa_pool

     

    return

     

    }

     

     

    "/ecp*" {

     

    Exchange Control Panel.

     

    if { [HTTP::header exists "APM_session"] } {

     

    persist uie [HTTP::header "APM_session"] 7200

     

    } else {

     

    persist cookie insert

     

    }

     

    pool vs_Exchange_2010_OWA_INT_single_owa_pool

     

    return

     

    }

     

     

    "/ews*" {

     

    Exchange Web Services.

     

    if { [HTTP::header exists "APM_session"] } {

     

    persist uie [HTTP::header "APM_session"] 7200

     

    } else {

     

    persist source_addr

     

    }

     

    pool vs_Exchange_2010_OWA_INT_single_owa_pool

     

    COMPRESS::disable

     

    CACHE::disable

     

    return

     

    }

     

    "/oab*" {

     

    Offline Address Book.

     

    pool vs_Exchange_2010_OWA_INT_single_owa_pool

     

    return

     

    }

     

     

    "/autodiscover*" {

     

    Autodiscover.

     

    pool vs_Exchange_2010_OWA_INT_single_ad_pool

     

    return

     

    }

     

     

    default {

     

    This final section takes all traffic that has not otherwise

     

    been accounted for and sends it to the pool for Outlook Web App

     

    if { [HTTP::header exists "APM_session"] } {

     

    persist uie [HTTP::header "APM_session"] 7200

     

    } else {

     

    persist source_addr

     

    }

     

    pool vs_EXCHANGE_2010_OWA_single_owa_pool

     

    }

     

    }

     

    }

     

     

    when HTTP_RESPONSE {

     

    if { [string tolower [HTTP::header values "WWW-Authenticate"]] contains "negotiate"} {

     

    ONECONNECT::reuse disable

     

    ONECONNECT::detach disable

     

    this command disables NTLM conn pool for connections where OneConnect has been disabled

     

    NTLM::disable

     

    }

     

    this command rechunks encoded responses

     

    if {[HTTP::header exists "Transfer-Encoding"]} {

     

    HTTP::payload rechunk

     

    }

     

    }
  • The iRule looks good. Can you comment out the CACHE::disable commands and see if the error persists. Do you have a relevant profile assigned to the VS that enables caching?
  • Do you have caching enabled on the HTTP profile? Did you use the iApp to deploy this?

     

     

    Aaron
  • Ok I commented out the following lines and the messages stopped.

     

     

    CACHE::disable

     

     

    Aaron: I used the template to create everything. There is an http proflie where the compression is enabled and the Cache is disabled.