﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>DevCentral Main Feed</title><link>http://devcentral.f5.com</link><description>F5 DevCentral Main Syndication Feed</description><item><title>To all my SysAdmin friends I say - Run your databases through BIG-IP and sleep better at night</title><link>http://devcentral.f5.com/weblogs/nojan/archive/2010/07/30/to-all-my-sysadmin-friends-i-say-run-your.aspx</link><description>&lt;img src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/nojan/logo-mysql-110x57-2010-07-13-10-17.png" alt="logo-mysql-110x57-2010-07-13-10-17.png" width="110" height="57" /&gt;&lt;img src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/nojan/logo-oracle-red-91x22-2010-07-13-10-17.gif" alt="logo-oracle-red-91x22-2010-07-13-10-17.gif" width="91" height="22" /&gt;
&lt;img src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/nojan/hdr_left-2010-07-13-10-17.png" alt="hdr_left-2010-07-13-10-17.png" width="230" height="80" /&gt; When I was an “Internet Architect” (lofty title alert!) I used to hear this question fairly often in design meetings, whether to run the database (DB) through the load balancer or not.  I would almost always come down on the side of “no there’s no point” because the DBs have their own high availability solutions, they don’t benefit from load balancing and there are usually no multi-master solutions.  Also, load balancers are expensive and resources are finite on them.  
&lt;p /&gt;&lt;p&gt;
Over the last few years a number of factors have changed, and today the answer is a solid maybe. There are a lot of compelling features and the crafty engineers that see the light may be able to solve some sticky architectural problems and even sleep better at night.
&lt;/p&gt;&lt;p /&gt;&lt;p&gt;
&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;Change in viewpoint&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;&lt;p /&gt;&lt;p&gt;
Enter 2010, things have changed a lot and so has my viewpoint.  More often now I’m finding that there are reasonable cases to be made for running the DB through the Application Delivery Controller (ADC).  Resources are not as finite anymore, especially on BIG-IPs, and the added benefits include monitoring, flexibility, scaling and control.  As an architect I always want more options and as a sydadmin I was stable solutions that let me sleep at night.  The ADC has come of age and the benefits  outweigh the main negative which is one more potential point of failure for a critical infrastructure component. 
&lt;/p&gt;&lt;p /&gt;&lt;p&gt;
The changes that have made me change my mind is first, the resource issue on the ADC.  Even from our BIG-IP 1600 series, our so-called “entry-level” point, our 10.2 release allows for passing of 1 Gigabit per second.  On the SSL side, we’re talking about 5000 transactions per second of encrypted traffic.  Many of the ADCs I’ve used in production spend a large amount of their time mostly idle, just serving front-end traffic and could easily handle the additional load of database connections.  I’ve seen these boxes pushed to the limits and it doesn’t worry me nearly as much as it did even five years ago to run database connections through them for fear of overload. 
&lt;/p&gt;&lt;p /&gt;&lt;p&gt;
&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;But question still exists why bother?&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;&lt;p /&gt;&lt;p&gt;
Once we rule out the “hardware can’t handle it” argument, the second benefit is the ability to monitor the databases, built into our ADC.  As Ryan Corder demonstrates in his entry &lt;a href="http://devcentral.f5.com/weblogs/rcorder/archive/2010/05/25/monitoring-open-source-databases-with-big-ip.aspx"&gt;Monitoring Open Source databases with BIG-IP&lt;/a&gt;, monitoring Postgres and MySQL is a snap with BIG-IP.  This only makes me sleep better at night.  I  can setup replication to another local instance and create my own high-availability hot/standby cluster without all the overhead of a software clustered solution.  Or, I can have the ability to instantly recognize outages and using iRules make intelligent traffic flow changes on the fly, without having to include my monitoring system.  We all know how it works today, the monitoring system finds a problem, sends out a page to a system administrator (&lt;a href="http://www.sysadminday.com/"&gt;happy sys-admin day by the way guys and gals!&lt;/a&gt;) and meanwhile traffic is down until the problem can be resolved.  How about this: the ADC finds the problem beginning with the very first request that has an issue and makes a decision to route traffic around the problem, and the sysadmin doesn’t have to run a fire-drill at that instant.  
&lt;/p&gt;&lt;p /&gt;&lt;p&gt;
I’m already a long way towards sold on this now.  But finally there’s the idea hinted at above, the flexibility of having the ADC in the way.  This is the flexibility of making routing decisions based on layer-7 content.  This is the flexibility of putting the databases where you need them and relying on the ADC to optimize TCP, or perhaps even to accelerate connections using BIG-IP WAN optimization.  This is the flexibility of opening long-distance VMotion and having your database follow, all made possible by having an ADC in the architecture.
&lt;/p&gt;&lt;p /&gt;&lt;p&gt;
&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;So, should I run my database through BIG-IP?
&lt;p /&gt;&lt;p&gt;
&lt;/p&gt;&lt;/strong&gt;&lt;/span&gt;So, should you? It depends of course, if you’re a mom-and-pop shop with one site and no growth, probably not! But if you’re larger:&lt;/p&gt;&lt;p&gt;
        * Could you benefit from having more fine-grained control over the uptime and availability of your DB?  &lt;/p&gt;&lt;p&gt;
        * Are you running MySQL or PostgreSQL?  If you’re running Oracle, Sybase or MS-SQL, what kind of applications connect to your DBs?&lt;/p&gt;&lt;p&gt;
        * Is there a better connection manager solution available?&lt;/p&gt;&lt;p&gt;
        * Would the ADC conflict with your other high availability solution?&lt;/p&gt;&lt;p&gt;
        * Do you have a fairly complex architecture that could require multiple sites? &lt;/p&gt;&lt;p&gt;
        * Do you have an architecture that can change rapidly based on business needs? &lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p /&gt;&lt;p&gt;
Hopefully this will be another arrow in the quiver of the lofty Internet Architects ( :-) ) out there enabling them to successfully nail down another great infrastructure design. 
 &lt;/p&gt;&lt;p /&gt;&lt;p&gt;
Until later, I give all of the System Administrators out there the rest of the day off! May your pager be quiet and your systems remain up!&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/nojan/aggbug/1090205.aspx" width="1" height="1" /&gt;</description><pubDate>Fri, 30 Jul 2010 04:36:17 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/nojan/archive/2010/07/30/to-all-my-sysadmin-friends-i-say-run-your.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Nojan Moshiri</dc:creator></item><item><title>F5 Friday: Eavesdropping on Availability</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/30/f5-friday-eavesdropping-on-availability.aspx</link><description>&lt;table border="0" cellspacing="0" cellpadding="2" width="100%"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;script type="text/javascript"&gt;&lt;![CDATA[
tweetmeme_source = 'f5networks';
tweetmeme_style = 'compact';
tweetmeme_service = 'bit.ly';
service_api = 'R_782503f4d9754dae4543383cee6ad988';
]]&gt;&lt;/script&gt;&lt;script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td valign="top"&gt;&lt;em&gt;Eliminating the overhead associated with active health checks without sacrificing availability &lt;/em&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayEavesdroppingThatsGoodforApplica_9A8F/f5friday_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="f5friday" border="0" alt="f5friday" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayEavesdroppingThatsGoodforApplica_9A8F/f5friday_thumb.png" width="240" height="86" /&gt;&lt;/a&gt;One of the core benefits of &lt;a title="" href="http://www.f5.com/solutions/cloud-computing" rel=""&gt;cloud computing &lt;/a&gt; and application delivery (and primary purposes of &lt;a title="" href="http://www.f5.com/glossary/load-balancing.html" rel=""&gt;load balancing&lt;/a&gt;) is availability. In the simplest of terms, achieving availability is accomplished by putting two or more servers (virtual or iron) behind a load balancing device. If one of the servers fails, the &lt;a title="" href="http://www.f5.com/glossary/load-balancer.html" rel=""&gt;Load balancer&lt;/a&gt; directs users to the remaining server, ensuring the application being served from that server remains available. &lt;/p&gt;  &lt;p&gt;The question then is this: how does the load balancer know when an application is not available? The answer is: health monitoring. &lt;/p&gt;  &lt;p&gt;Every load balancer (and clustering solution) can do this at some level. It may be just an ICMP ping or a TCP three-way handshake or determining whether the HTTP and application response received are correct. It may be a combination of a variety of health monitoring options. Regardless of what the health check is doing, it’s getting done and an individual server may be taken out of rotation in the event that its health check response indicates a problem. &lt;/p&gt;  &lt;p&gt;Now, interestingly enough there is more than one way to perform a health check. As you might have guessed the first way is to communicate out-of-band with the server and/or application. Every &amp;lt;user configured&amp;gt; time interval, the load balancer performs a check and then acts or doesn’t act upon the response. The advantage of this is that the load balancer can respond very quickly to problems provided the time interval is of sufficiently granular value. The disadvantage of this approach is that it takes up resources on the load balancer, the network, and the server. In a service-provider or cloud computing environment, the resources consumed by out-of-band health checks can be devastating to network performance and may well impact capacity of the server. &lt;/p&gt;  &lt;p&gt;What else is there?  &lt;/p&gt;  &lt;h3&gt;&lt;font color="#800000"&gt;INBAND and PASSIVE MONITORING &lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;While inband monitoring is relatively new, passive monitoring was pioneered by &lt;a title="F5 Networks" href="http://www.f5.com/" rel="" target="_blank"&gt;F5&lt;/a&gt; many years ago. In fact, leveraging passive monitoring and inband monitoring together provides the means to more quickly address problems as they occur. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.f5.com/pdf/white-papers/inband-passive-monitors-wp.pdf"&gt;&lt;/a&gt;&lt;a href="http://links.f5.com/cW568b"&gt;Inband monitoring&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayEavesdroppingThatsGoodforApplica_9A8F/pdf-icon_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="pdf-icon" border="0" alt="pdf-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayEavesdroppingThatsGoodforApplica_9A8F/pdf-icon_thumb.png" width="15" height="15" /&gt;&lt;/a&gt; was introduced in &lt;a href="http://www.f5.com/products/big-ip/"&gt;BIG-IP&lt;/a&gt; v10. Inband monitors can be used with either a Standard or a Performance (Layer 4) type virtual server, and as a bonus can also be used with active monitors. What inband monitoring does is basically eavesdrop on the conversation between a client and the server to determine availability. The monitor, upon an attempt by a client to connect to a pool member, behaves as follows: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;If the pool member does not respond to a connection request after a user-specified number of tries within a user-specified time period, the monitor marks the pool member as down. &lt;/li&gt;    &lt;li&gt;After the monitor has marked the pool member as down , and after a user-specified amount of time has passed, the monitor tries again to connect to the pool member (if so configured). &lt;/li&gt; &lt;/ul&gt; What inband monitoring &lt;em&gt;does &lt;/em&gt;do – and does well – is eliminate all the extraneous traffic and connections consuming resources on servers and the network typically associated with active monitoring. But what it can’t do at this time is inspect or verify the correctness of the response. It’s operating strictly at the layer 4 (TCP). So if the server|application responds, the inband monitor thinks all is well. But we know that a response from a server does not mean that all is well; the content may not be what we expect. What we want is to mitigate the impact of monitoring on the network and servers but we don’t want to sacrifice &lt;em&gt;application &lt;/em&gt;availability. That’s where passive monitoring comes in.   &lt;p&gt;&lt;a href="http://links.f5.com/cIoOdn"&gt;Passive monitoring&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayEavesdroppingThatsGoodforApplica_9A8F/pdf-icon_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="pdf-icon" border="0" alt="pdf-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayEavesdroppingThatsGoodforApplica_9A8F/pdf-icon_thumb.png" width="15" height="15" /&gt;&lt;/a&gt; is actually a technique that leverages network-side scripting (in our case F5 &lt;a href="http://devcentral.f5.com/iRules"&gt;iRules&lt;/a&gt;) to inspect the content returned by an application and determine whether it is valid or not. If it is not valid, iRules affords the ability to mark the node down and/or resend the request to another (hopefully correctly working) application instance.  Here’s a brief example that can mark the server down after three successive failures, otherwise attempts to “retry” the request: &lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; rule count_server_down {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;    when HTTP_REQUEST {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; { not [info exists orig_request]} {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;       set orig_request [HTTP::request]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; when HTTP_RESPONSE {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; { [HTTP::status] &amp;gt;= 500 } {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;       set failures [session lookup dest_addr [LB::server addr]]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;       &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; { $failures &amp;gt;= 3 } {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;          LB::down&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;       } &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;          session add dest_addr [LB::server addr] [incr failures]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;          LB::detach&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;          HTTP::retry $orig_request&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;       }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Passive monitoring is real-time, it’s looking at real requests to determine actual availability and correctness of response. This is even more useful when you start considering how you might respond. The robust nature of iRules allows you to do some interesting manipulation of content and communication channel, so if you can think it up you can probably get it done with an iRule. &lt;/p&gt;

&lt;p&gt;By combining inband with passive monitoring you end up with “inband passive monitoring”. This solution eliminates the overhead of active monitoring by eavesdropping on client-server conversations and ensures &lt;em&gt;application &lt;/em&gt;availability by inspecting content. &lt;/p&gt;

&lt;p&gt;For a great discussion of inband passive monitoring and a detailed scenario of how it might work in conjunction with a real application, check out &lt;a href="http://devcentral.f5.com/weblogs/amurphy"&gt;Alan Murphy’s&lt;/a&gt; post on the subject, “&lt;a href="http://devcentral.f5.com/weblogs/amurphy/archive/2009/04/09/5933.aspx"&gt;BIG-IP v10: Passive Application Monitoring&lt;/a&gt;”. &lt;/p&gt;

&lt;hr color="#808080" width="100%" noshade="noshade" /&gt;

&lt;table border="0" cellspacing="0" cellpadding="2" width="100%"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td valign="top" width="70%"&gt;
        &lt;h3&gt;Related Posts&lt;/h3&gt;

        &lt;ul&gt;
          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/amurphy/archive/2009/04/09/5933.aspx"&gt;BIG-IP v10: Passive Application Monitoring&lt;/a&gt; &lt;/li&gt;

          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/category/1084420.aspx"&gt;All F5 Friday Entries on DevCentral&lt;/a&gt;  &lt;/li&gt;

          &lt;li&gt;&lt;a href="http://links.f5.com/cW568b"&gt;Inband monitoring&lt;/a&gt; [white paper] &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayEavesdroppingThatsGoodforApplica_9A8F/pdf-icon_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="pdf-icon" border="0" alt="pdf-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayEavesdroppingThatsGoodforApplica_9A8F/pdf-icon_thumb.png" width="15" height="15" /&gt;&lt;/a&gt;  &lt;/li&gt;

          &lt;li&gt;&lt;a href="http://links.f5.com/cIoOdn"&gt;Passive monitoring&lt;/a&gt; [white paper] &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayEavesdroppingThatsGoodforApplica_9A8F/pdf-icon_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="pdf-icon" border="0" alt="pdf-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayEavesdroppingThatsGoodforApplica_9A8F/pdf-icon_thumb.png" width="15" height="15" /&gt;&lt;/a&gt; &lt;/li&gt;
        &lt;/ul&gt;

        &lt;div class="wlw_related_posts"&gt;from tag &lt;a href="http://del.icio.us/lmacvittie/BIG-IP"&gt;BIG-IP&lt;/a&gt; 

          &lt;br /&gt;&lt;/div&gt;

        &lt;div class="wlw_related_posts"&gt;
          &lt;ul&gt;
            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/06/04/f5-friday-the-rules-for-the-game-of-application-performance.aspx"&gt;F5 Friday: The Rules for the Game of Application Performance Tag&lt;/a&gt; &lt;/li&gt;

            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/13/is-vendor-lock-in-really-a-bad-thing.aspx"&gt;Is Vendor Lock-In Really a Bad Thing?&lt;/a&gt; &lt;/li&gt;
          &lt;/ul&gt;
        &lt;/div&gt;
from tag &lt;a href="http://del.icio.us/lmacvittie/monitoring"&gt;monitoring&lt;/a&gt; 

        &lt;br /&gt;

        &lt;ul&gt;
          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/05/17/when-microseconds-matter.aspx"&gt;When (Micro)Seconds Matter&lt;/a&gt; &lt;/li&gt;

          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/09/30/wils-a-good-hall-monitor-actually-checks-the-hall-pass.aspx"&gt;WILS: A Good Hall Monitor Actually Checks the Hall Pass&lt;/a&gt; &lt;/li&gt;

          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/07/22/beware-the-availability-rat-hole-in-the-cloud.aspx"&gt;Beware the Availability Rat Hole in the Cloud&lt;/a&gt; &lt;/li&gt;

          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/06/25/five-questions-you-need-to-ask-about-load-balancing-and.aspx"&gt;Five questions you need to ask about load balancing and the cloud&lt;/a&gt; &lt;/li&gt;

          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/02/19/the-days-of-ip-based-management-are-numbered.aspx"&gt;The days of IP-based management are numbered&lt;/a&gt; &lt;/li&gt;

          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/11/24/infrastructure-2.0-the-diseconomy-of-scale-virus.aspx"&gt;Infrastructure 2.0: The Diseconomy of Scale Virus&lt;/a&gt; &lt;/li&gt;

          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/10/16/is-twitter-the-newest-data-security-threat.aspx"&gt;Is Twitter the newest data security threat?&lt;/a&gt; &lt;/li&gt;
        &lt;/ul&gt;
from tag &lt;a href="http://del.icio.us/lmacvittie/availability"&gt;availability&lt;/a&gt; 

        &lt;br /&gt;

        &lt;ul&gt;
          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/08/27/wils-cloud-changes-how-but-not-what.aspx"&gt;WILS: Cloud Changes How But Not What&lt;/a&gt; &lt;/li&gt;

          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/01/13/the-one-problem-cloud-canrsquot-solve.-or-can-it.aspx"&gt;The One Problem Cloud Can’t Solve. Or Can It?&lt;/a&gt; &lt;/li&gt;

          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/12/01/managing-virtual-infrastructure-requires-an-application-centric-approach.aspx"&gt;Managing Virtual Infrastructure Requires an Application Centric Approach&lt;/a&gt; &lt;/li&gt;
        &lt;/ul&gt;
        &lt;a href="http://del.icio.us/lmacvittie/availability"&gt;(more..)&lt;/a&gt; &lt;/td&gt;

      &lt;td valign="top" width="30%"&gt;
        &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img border="0" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" /&gt;&lt;/a&gt; &lt;a href="http://www.friendfeed.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="friendfeed" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/friendfeed_3.jpg" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;

        &lt;p&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;script type="text/javascript" src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355"&gt;&lt;/script&gt;&lt;/p&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt; &lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:86d51322-d3ff-4157-b299-37be14f86ff5" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+Friday" rel="tag"&gt;F5 Friday&lt;/a&gt;,&lt;a href="http://technorati.com/tags/monitoring" rel="tag"&gt;monitoring&lt;/a&gt;,&lt;a href="http://technorati.com/tags/health+checks" rel="tag"&gt;health checks&lt;/a&gt;,&lt;a href="http://technorati.com/tags/availability" rel="tag"&gt;availability&lt;/a&gt;,&lt;a href="http://technorati.com/tags/BIG-IP" rel="tag"&gt;BIG-IP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/LTM" rel="tag"&gt;LTM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/load+balancing" rel="tag"&gt;load balancing&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1088370.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 29 Jul 2010 18:51:24 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/30/f5-friday-eavesdropping-on-availability.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Lori MacVittie</dc:creator></item><item><title>DevCentral Weekly Podcast 142 &amp;ndash; Enterprise Manager And Some Pizza</title><link>http://devcentral.f5.com/weblogs/dcpodcast/archive/2010/07/29/devcentral-weekly-podcast-142-ndash-enterprise-manager-and-some-pizza.aspx</link><description>&lt;a href="http://devcentral.f5.com/media/audio/20100729-F5DevCentralPodcast-142.mp3"&gt; &lt;/a&gt;   &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" align="center"&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="320" height="260" id="utv405004" name="utv_n_906764"&gt;&lt;param name="flashvars" value="autoplay=false" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="src" value="http://www.ustream.tv/flash/video/8593423" /&gt;&lt;embed flashvars="autoplay=false" width="320" height="260" allowfullscreen="true" allowscriptaccess="always" id="utv405004" name="utv_n_906764" src="http://www.ustream.tv/flash/video/8593423" type="application/x-shockwave-flash" /&gt;&lt;/object&gt;&lt;/td&gt;        &lt;td&gt;   &lt;/td&gt;        &lt;td valign="top"&gt;&lt;img align="right" src="http://devcentral.f5.com/podcast/DC4-Podcast.jpg" width="90" height="90" /&gt;Welcome to the one hundred and fortieth edition of the DevCentral Weekly Roundtable Podcast!  A weekly recap of the interesting things that have been going on within the DevCentral community.           &lt;br /&gt;          &lt;br /&gt;Hosts: &lt;a href="http://devcentral.f5.com/weblogs/cwalker"&gt;Colin Walker&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/watkins"&gt;George Watkins&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/jeffb"&gt;Jeff Browning&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/joe"&gt;Joe Pruitt&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/scott"&gt;Scott Koon&lt;/a&gt;, and special guests Dan Kim, Bruce Butterfield, and Jim Ruddy from the Enterprise Manager team.           &lt;p&gt;In this weeks podcast we had F5er’s Dan Kim and Bruce Butterfield from the &lt;a href="http://www.f5.com/products/enterprise-manager/"&gt;Enterprise Manager&lt;/a&gt; team on to talk about their latest release.  The covered some cool new features in the product as well as some sneak peeks of what to look out for down the road – you’ll have to listen to find out what they are!  We ended things up with some details about our &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/2003/Default.aspx"&gt;F5 Customer Summit&lt;/a&gt; next week in Chicago.  Look out Chicago, here we come…&lt;/p&gt;          &lt;p&gt;All of the links from this recording can be found with the &lt;a href="http://delicious.com/devcentral/dcpodcast142"&gt;dcpodcast142&lt;/a&gt; tag at Delicious.com.  You can also watch the video recording from our &lt;a href="http://www.ustream.tv/channel/dcpodcast"&gt;UStream.TV channel&lt;/a&gt;: &lt;a href="http://www.ustream.tv/recorded/8593423"&gt;DevCentral Podcast 142&lt;/a&gt;.&lt;/p&gt;          &lt;div id="dcpc142player" align="center" width="100%"&gt;&lt;a href="http://www.macromedia.com/go/getflashplayer"&gt;Get the Flash Player&lt;/a&gt; to see this player. &lt;/div&gt;          &lt;div align="center" width="100%"&gt;&lt;script language="javascript"&gt;&lt;!--

generateMP3Player("dcpc142player", "20100729-F5DevCentralPodcast-142.mp3");
//--&gt;&lt;/script&gt;&lt;/div&gt;          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e521c832-fa7c-4045-90de-dcf06eee47fc" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Enterprise+Manager" rel="tag"&gt;Enterprise Manager&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Management" rel="tag"&gt;Management&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Automation" rel="tag"&gt;Automation&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Policy+Control" rel="tag"&gt;Policy Control&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Performance" rel="tag"&gt;Performance&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TCO" rel="tag"&gt;TCO&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Forecasting" rel="tag"&gt;Forecasting&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Reporting" rel="tag"&gt;Reporting&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Dan+Kim" rel="tag"&gt;Dan Kim&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Bruce+Butterfield" rel="tag"&gt;Bruce Butterfield&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jim+Ruddy" rel="tag"&gt;Jim Ruddy&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin+Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;,&lt;a href="http://technorati.com/tags/George+Watkins" rel="tag"&gt;George Watkins&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jeff+Browning" rel="tag"&gt;Jeff Browning&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Joe+Pruitt" rel="tag"&gt;Joe Pruitt&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Scott+Koon" rel="tag"&gt;Scott Koon&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/dcpodcast/aggbug/1090203.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 29 Jul 2010 07:33:47 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dcpodcast/archive/2010/07/29/devcentral-weekly-podcast-142-ndash-enterprise-manager-and-some-pizza.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral Weekly Podcast</dc:creator></item><item><title>A Storage (Capacity) Optimization Buying Spree!</title><link>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/29/a-storage-capacity-optimization-buying-spree.aspx</link><description>&lt;p&gt;Remember when Beanie Babies were free in Happy Meals, and tons of people ran out to buy the Happy Meals but only really wanted the Beanie Babies? Yeah, that’s what the storage compression/dedupe market is  &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/AStorageOptimizationBuyingSpree_9C2F/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/AStorageOptimizationBuyingSpree_9C2F/image_thumb.png" width="162" height="180" /&gt;&lt;/a&gt;starting to look like these days. Lots of big names are out snatching up at-rest de-duplication and compression vendors to get the products onto their sales sheets, we’ll have to see if they wanted the real value of such an acquisition – the bright staff that brought these products to fruition – or they’re buying for the product and going to give or throw away the meat of the transaction. Yeah, that sentence is so pun laden that I think I’ll leave it like that. Except there is no actual meat in a Happy Meal, I’m pretty certain of that.&lt;/p&gt;  &lt;p&gt;Today &lt;a href="http://www.ibm.com" target="_blank"&gt;IBM&lt;/a&gt; announced that it is formally &lt;a href="http://www.theregister.co.uk/2010/07/29/ibm_buys_storwize/" target="_blank"&gt;purchasing Storwize&lt;/a&gt;, a file compression tool designed to compress data on NAS devices. That leaves few enough players in the storage optimization space, and only one – &lt;a href="http://www.permabit.com/" target="_blank"&gt;Permabit&lt;/a&gt; – whose name I readily recognize. Since I wrote the blog about &lt;a href="http://www.dell.com"&gt;Dell&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/26/dell-buys-ocarina-networks.-dedupe-for-all.aspx" target="_blank"&gt;picking up Ocarina&lt;/a&gt;, and this is happening while that blog is still being read pretty avidly, I figured I’d weigh in on this one also.&lt;/p&gt;  &lt;p&gt;Storwize is a pretty smart purchase for IBM on the surface. The products support NAS at the protocol level – they claim “storage agnostic”, but personal experience in the space is that there’s no such thing… CIFs and NFS tend to require tweaks from vendor A to vendor B, meaning that to be “agnostic” you have to “write to the device”. An interesting conundrum. Regardless, they support CIFS and NFS, are stand-alone appliances that the vendors claim are simple to set up and require little or no downtime, and offer straight-up compression. Again, Storewize and IBM are both claiming zero performance impact, I cannot imagine how that is possible in a compression engine, but that’s their claim. The key here is that they work on everyone’s NAS devices. If IBM is smart, the products still will work on everyone’s devices in a year. &lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;BENEFITS FOR YOU.&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;It would be sweet if you could get a 5x storage space improvement just by putting in one of these boxes, and if they are as easy to manage as claimed, the overhead is minimized while the benefit is maximized. The one concern that these boxes always evoke is recoverability of data. How in the world do you keep uptime if you lose the only box that can access the data on your NAS devices. And that is generally solved by putting in more than one device… Perhaps IBM can have a buy one get one free sale. &lt;/p&gt;  &lt;p&gt;Some have wondered (aloud even) how IBM will manage its growing (in both size and complexity) storage offerings. I don’t think that’s a huge problem, to be honest. IBM has huge offerings of everything. From Tivoli and associated offerings to servers, they manage a complex solution set all of the time without problems. Presumably they’ll merge and end of life product lines as it makes sense, which would solve the complexity issue by itself, one would think.&lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;AND THE RACE GOES ON.&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;Now that &lt;a href="http://www.dell.com" target="_blank"&gt;Dell&lt;/a&gt;, &lt;a href="http://www.emc.com" target="_blank"&gt;EMC&lt;/a&gt;, &lt;a href="http://www.ibm.com" target="_blank"&gt;IBM&lt;/a&gt;, and &lt;a href="http://www.netapp.com" target="_blank"&gt;NetApp&lt;/a&gt; all have compression/deduplication of one form or another, it remains to be seen if &lt;a href="http://www.hp.com" target="_blank"&gt;HP&lt;/a&gt; and &lt;a href="http://www.hitachidatasystems.com/" target="_blank"&gt;HDS&lt;/a&gt; will get itchy fingers. With the rumors of HDS considering a &lt;a href="http://www.brocade.com" target="_blank"&gt;Brocade&lt;/a&gt; purchase, that could get interesting quickly. Note that there are also rumors of HDS having something in their roadmap, but HDS is largely an enigma to US writers (I’ve dealt with them as a writer, they are tough to get solid information from), so I wouldn’t give those rumors much credence until you see what they’re doing. They might be OEMing or something, not developing. Though I find that unlikely. It will be interesting to see who, if anyone, will pick up Permabit.&lt;/p&gt;  &lt;p&gt;For the record, &lt;a href="http://www.f5.com" target="_blank"&gt;F5&lt;/a&gt; is a partner with nearly all of these vendors in one form or another, but doesn’t play in this space in any way. Our value-adds are Directory Virtualization and remote storage (So Called Capacity Optimized Transport) through our &lt;a href="http://www.f5.com/products/arx-series/" target="_blank"&gt;ARX&lt;/a&gt; and &lt;a href="http://www.f5.com/products/big-ip/product-modules/wan-optimization-module.html" target="_blank"&gt;WOM&lt;/a&gt; products. Apologies for the repetitive disclaimer to regular readers, but that’s a fair statement for the individual that just happened on this blog.&lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;ONLY REAL QUESTION LEFT: WILL YOU JUMP?&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;So now we’re getting to the fun part of this game. Very soon, disk optimization is going to be available to you if you use a big-name vendor. The interesting part to me is how many of you will use it. My guess? Lots. We’ve been fighting the disk space wars for years, and &lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/28/here-comes-payback-time.-prepare-for-storage-shortages.aspx" target="_blank"&gt;yesterday’s blog&lt;/a&gt; was all about how to survive in the short term. I think that resistance to data that can’t be read by any old machine is going to go away in the face of space shortages. I’ve been wrong before, but it’s a tough call for a CIO to tell the CEO “there’s this technology that could give us X times the space with little outlay and very little work, but we fear it”. Most smart CEOs would respond “the rest of us don’t understand IT, and thus fear it, but we work with you every day”.&lt;/p&gt;  &lt;p&gt;So I’ll be seeing you around the water container, your hands trembling as you worry about what to do if that redundant pair of compression/dedupe boxes ever goes down, but you’ll be there, I’m pretty sure. Because contrary to the old maxim, disk ain’t so cheap.&lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c8010169-4848-4482-97f4-3019b9e2fed0" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Storage+Optimization" rel="tag"&gt;Storage Optimization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Capacity+Optimization" rel="tag"&gt;Capacity Optimization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/IBM" rel="tag"&gt;IBM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Storewize" rel="tag"&gt;Storewize&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HP" rel="tag"&gt;HP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/EMC" rel="tag"&gt;EMC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Dell" rel="tag"&gt;Dell&lt;/a&gt;,&lt;a href="http://technorati.com/tags/NetApp" rel="tag"&gt;NetApp&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HDS" rel="tag"&gt;HDS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Brocade" rel="tag"&gt;Brocade&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+Networks" rel="tag"&gt;F5 Networks&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Don+MacVittie" rel="tag"&gt;Don MacVittie&lt;/a&gt;&lt;/div&gt;  &lt;p align="right"&gt;&lt;a href="http://twitter.com/dmacvittie" target="_blank"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/Rss.aspx" target="_blank"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/don.macvittie" target="_blank"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="right"&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fdmacvittie%2FRss.aspx&amp;amp;t1=" target="_blank"&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Related Articles and Blogs&lt;/p&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.theregister.co.uk/2010/07/29/ibm_buys_storwize/" target="_blank"&gt;IBM Buys Storewize&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/26/dell-buys-ocarina-networks.-dedupe-for-all.aspx" target="_blank"&gt;Dell Buys Ocarina Networks&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Capacity_optimization" target="_blank"&gt;Wikipedia definition – Capacity Optimization&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=3&amp;amp;ved=0CCUQFjAC&amp;amp;url=http%3A%2F%2Fsearchstorage.techtarget.com%2Fdigitalguide%2Fimages%2FMisc%2Fcapacity_optimization.pdf&amp;amp;ei=jLBRTPGlN4uongff6czxAw&amp;amp;usg=AFQjCNFrrbBKtAf-00Nz043E7tYJm0jRlQ" target="_blank"&gt;Capacity Optimization – A Core Storage Technology (PDF)&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://devcentral.f5.com/weblogs/dmacvittie/aggbug/1088369.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 29 Jul 2010 02:54:10 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/29/a-storage-capacity-optimization-buying-spree.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Don MacVittie</dc:creator></item><item><title>WILS: Load Balancing and Ephemeral Port Exhaustion</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/29/wils-load-balancing-and-ephemeral-port-exhaustion.aspx</link><description>&lt;p&gt;&lt;em&gt;Understanding the relationship between SNAT and connection limitations in full proxy intermediaries. &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;script type="text/javascript"&gt;&lt;![CDATA[
tweetmeme_source = 'f5networks';
tweetmeme_style = 'compact';
tweetmeme_service = 'bit.ly';
service_api = 'R_782503f4d9754dae4543383cee6ad988';
]]&gt;&lt;/script&gt;&lt;script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"&gt;&lt;/script&gt;&lt;/p&gt;
&lt;em&gt;&lt;em&gt;  &lt;/em&gt; &lt;/em&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/WILSEphemeralPortExhaustion_994D/image_4.png"&gt;&lt;img height="297" border="0" align="left" width="539" style="border: 0px none ; margin: 0px 10px 0px 0px; display: inline;" title="image" alt="image" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/WILSEphemeralPortExhaustion_994D/image_thumb_1.png" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;If you’ve &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/24/wils-snat-nat-load-balancing.aspx"&gt;previously delved into the world of SNAT&lt;/a&gt; (which is becoming increasingly important in large-scale implementations, such as those in the service provider world) you remember that SNAT essentially provides an IP address from which a full-proxy intermediary can communicate with server-side resources and maintain control over the return routing path.&lt;/p&gt;
&lt;p&gt;There is an interesting relationship between intermediaries that leverage two separate TCP stacks (such as &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/10/02/the-concise-guide-to-proxies.aspx"&gt;full-proxies&lt;/a&gt;) and SNAT in terms of concurrent (open) connections that can be supported by any given &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/07/3522.aspx"&gt;“virtual” server&lt;/a&gt; (or virtual IP address, as they are often referred to in the industry). The number of ephemeral ports that can be used by any client IP address is 65535. Programmer types will recognize that as a natural limitation imposed by the use of an &lt;a href="http://en.wikipedia.org/wiki/Short_integer"&gt;unsigned short integer&lt;/a&gt; (16 bits) in many programming languages. &lt;/p&gt;
&lt;p&gt;Now, what that means is that for each SNAT address assigned to a virtual IP address, a theoretical total of 65535 connections can be open at any other single address at any given time. This is because in a full-proxy architecture the intermediary is acting as a client and while servers use well-known ports for communication, clients do not. They use ephemeral (temporary) ports, the value of which is communicated to the server in the source port field in the request. Each additional SNAT address available increases the total number of connections by some portion of that space. As you should never use ephemeral ports in the privileged range (port numbers under 1024 are traditionally reserved for firewall and other sanity checkers - see /etc/services on any Unix box) that number can be as many as 64512 available ports between the SNAT address and any other IP address. For example, if a server pool (virtual or iron) has 24 members and assuming the SNAT address is configured to use ephemeral ports in the range of 1024-65535, then a single SNAT address results in a total of 24 x 48k = 1,152k concurrent connections to the pool. If the SNAT is assigned to a virtual server that is targeting a single address (like another virtual server or another intermediate device) then the total connections is 1 x 48k = 48k connections. &lt;/p&gt;
&lt;p&gt;Obviously this has a rather profound impact on scalability and capacity planning. If you only have one SNAT address available and you need the capabilities of a full-proxy (such as payload inspection inbound and out) you can only support a limited number of connections (and by extension, users). Some solutions provide the means by which these limitations can be mitigated, such as the ability to configure a SNAT pool (a set of dedicated IP addresses) from which SNAT addresses can be automatically pulled and used to automatically increase the number of available ephemeral ports. &lt;/p&gt;
&lt;p&gt;Running out of ephemeral ports is known as “&lt;a href="http://en.wikipedia.org/wiki/Ephemeral_port"&gt;ephemeral port&lt;/a&gt; exhaustion” as you have exhausted the ports available from which a connection to the server resource can be made. In practice the number of ephemeral ports available for any given IP address can be limited by operating system implementations and is always much lower than the 65535 available per IP address. For example, the &lt;a href="http://www.iana.org/assignments/port-numbers"&gt;IANA official suggestion is that ephemeral ports use 49152 through 65535&lt;/a&gt;, which means a limitation of 16383 open connections per address. Any full-proxy intermediary that has adopted this suggestion would necessarily require more SNAT addresses to scale an application to more concurrent connections. &lt;/p&gt;
&lt;p&gt;One of the advantages of a solution implementing a custom TCP/IP stack, then, is that they can ignore the suggestion on ephemeral port assignment typically imposed at the operating system or underlying software layer and increase the range to the full 65535 if desired. Another major advantage is making aggressive use of TIME-WAIT recycling. Normal TCP stacks hold on to the ephemeral port for seconds to minutes after a connection closes. This leads to odd bursting behavior. With proper use of TCP timestamps you can recycle that ephemeral port almost immediately. &lt;/p&gt;
&lt;p&gt;Regardless, it is an important relationship to remember, especially if it appears that the &lt;a title="" href="http://www.f5.com/glossary/load-balancer.html" rel=""&gt;Load balancer&lt;/a&gt; (intermediary) is suddenly the bottleneck when demand increases. It may be that you don’t have enough IP addresses and thus ports available to handle the load. &lt;/p&gt;
&lt;p style="text-transform: uppercase; font-size: 10px;"&gt;WILS: Write It Like Seth. Seth Godin always gets his point across with brevity and wit. WILS is an ATTEMPT TO BE concise about application delivery TOPICS AND just get straight to the point. NO DILLY DALLYING AROUND.&lt;/p&gt;
&lt;hr noshade="noshade" color="#808080" width="100%" /&gt;

&lt;table cellspacing="0" cellpadding="2" border="0" width="100%"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="70%" valign="top"&gt;
            &lt;h3&gt;Related Posts&lt;/h3&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/category/4335.aspx"&gt;All WILS Topics on DevCentral&lt;/a&gt;  &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/07/3522.aspx"&gt;Server Virtualization versus Server Virtualization&lt;/a&gt; &lt;/li&gt;
            &lt;/ul&gt;
            &lt;div class="wlw_related_posts"&gt;from tag &lt;a href="http://del.icio.us/lmacvittie/SNAT"&gt;SNAT&lt;/a&gt;             &lt;br /&gt;
            &lt;/div&gt;
            &lt;div class="wlw_related_posts"&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/24/wils-snat-nat-load-balancing.aspx"&gt;WILS: Client IP or Not Client IP, SNAT is the Question&lt;/a&gt; &lt;/li&gt;
            &lt;/ul&gt;
            &lt;/div&gt;
            from tag &lt;a href="http://del.icio.us/lmacvittie/WILS"&gt;WILS&lt;/a&gt;           &lt;br /&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/02/03/wils-ssl-tps-versus-http-tps-over-ssl.aspx"&gt;WILS: SSL TPS versus HTTP TPS over SSL&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/10/29/wils-three-ways-to-better-utilize-resources-in-any-data.aspx"&gt;WILS: Three Ways To Better Utilize Resources In Any Data Center&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/10/22/wils-why-does-load-balancing-improve-application-performance.aspx"&gt;WILS: Why Does Load Balancing Improve Application Performance?&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/09/30/wils-a-good-hall-monitor-actually-checks-the-hall-pass.aspx"&gt;WILS: A Good Hall Monitor Actually Checks the Hall Pass&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/08/03/wils-applications-should-be-like-sith-lords.aspx"&gt;WILS: Applications Should Be Like Sith Lords&lt;/a&gt; &lt;/li&gt;
            &lt;/ul&gt;
            from tag &lt;a href="http://del.icio.us/lmacvittie/capacity"&gt;capacity&lt;/a&gt;           &lt;br /&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/09/16/ajax-and-network-side-scripting.aspx"&gt;AJAX and Network-Side Scripting&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/02/16/wils-layer-7-protocol-versus-layer-7-application.aspx"&gt;WILS: Layer 7 (Protocol) versus Layer 7 (Application)&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/01/27/how-to-gracefully-degrade-web-2.0-applications-to-maintain-availability.aspx"&gt;How to Gracefully Degrade Web 2.0 Applications To Maintain Availability&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/01/13/building-an-elastic-environment-requires-elastic-infrastructure.aspx"&gt;Building an elastic environment requires elastic infrastructure&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/02/18/lots-of-little-virtual-web-applications-scale-out-better-than.aspx"&gt;Lots of Little Virtual Web Applications Scale Out Better than Scaling Up&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/05/27/i-am-wondering-why-not-all-websites-enabling-this-great.aspx"&gt;I am wondering why not all websites enabling this great feature GZIP?&lt;/a&gt; &lt;/li&gt;
            &lt;/ul&gt;
            &lt;a href="http://del.icio.us/lmacvittie/capacity"&gt;(more..)&lt;/a&gt;&lt;/td&gt;
            &lt;td width="30%" valign="top"&gt;
            &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img height="18" border="0" width="18" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img height="18" border="0" width="18" alt="" src="http://tweepml.org/s/tweepml16.png" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img height="18" border="0" width="18" alt="" src="http://tweepml.org/s/tweepml16.png" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img border="0" alt="" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img height="18" border="0" width="18" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img border="0" alt="" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" /&gt;&lt;/a&gt; &lt;a href="http://www.friendfeed.com/lmacvittie"&gt;&lt;img height="18" border="0" width="18" style="border-width: 0px;" alt="friendfeed" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/friendfeed_3.jpg" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img height="18" border="0" width="18" style="border-width: 0px;" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" /&gt;&lt;/a&gt; &lt;/p&gt;
            &lt;p&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img height="18" border="0" width="125" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img height="18" border="0" width="125" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" /&gt;&lt;/a&gt; &lt;script type="text/javascript" src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355"&gt;&lt;/script&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;em&gt;&lt;em&gt;  &lt;/em&gt; &lt;/em&gt;
&lt;p&gt;&lt;em&gt;&lt;em&gt; &lt;/em&gt;&lt;/em&gt;&lt;/p&gt;
&lt;em&gt;&lt;em&gt;  &lt;/em&gt; &lt;/em&gt;
&lt;p&gt;&lt;em&gt;&lt;em&gt;  &lt;/em&gt;&lt;/em&gt;&lt;/p&gt;
&lt;div style="margin: 0px; padding: 0px; display: inline; float: none;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6538662a-6e0a-476f-a4e9-e505e50ebe22" class="wlWriterEditableSmartContent"&gt;&lt;em&gt;&lt;em&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/load+balancing" rel="tag"&gt;load balancing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WILS" rel="tag"&gt;WILS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TCP" rel="tag"&gt;TCP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/scalability" rel="tag"&gt;scalability&lt;/a&gt;,&lt;a href="http://technorati.com/tags/capacity" rel="tag"&gt;capacity&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SNAT" rel="tag"&gt;SNAT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/IP+addresses" rel="tag"&gt;IP addresses&lt;/a&gt;,&lt;a href="http://technorati.com/tags/virtualization" rel="tag"&gt;virtualization&lt;/a&gt;&lt;/em&gt;&lt;/em&gt;&lt;/div&gt;
&lt;em&gt;&lt;em&gt;  &lt;/em&gt; &lt;/em&gt;
&lt;p&gt;&lt;em&gt;&lt;em&gt;  &lt;/em&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;em&gt;  &lt;/em&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h4&gt;&lt;em&gt;&lt;em&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/07/3522.aspx"&gt;&lt;/a&gt;&lt;/em&gt;&lt;/em&gt;&lt;/h4&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1088368.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 28 Jul 2010 18:58:58 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/29/wils-load-balancing-and-ephemeral-port-exhaustion.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Lori MacVittie</dc:creator></item><item><title>Here Comes Payback Time. Prepare for Storage Shortages.</title><link>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/28/here-comes-payback-time.-prepare-for-storage-shortages.aspx</link><description>&lt;p&gt;The last couple of years have been painful, to say the least. Some call them unprecedented, financially, but I do believe that is pushing the descriptor a bit far, since there have been plenty of instances where &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/HereComesPaybackTime.PrepareforStorageS_CFF9/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/HereComesPaybackTime.PrepareforStorageS_CFF9/image_thumb.png" width="154" height="136" /&gt;&lt;/a&gt;business pretty much en-masse questioned the amount that IT returns for their investment and cut budgets, so the feel of this recession is not much different than what we’ve felt before, it’s just by necessity. The funny bit of this is that everyone seems to agree that IT spending still went up in 2009, just by a massively reduced amount. Since the pinch is definitely out there, one can only assume that a 1.6% (or so, depending upon your source) increase in spending was not enough to cover increases in maintenance costs and new purchases.&lt;/p&gt;  &lt;p&gt;The impact on IT is pretty straight-forward, at least in my mind. Major IT projects were delayed or canceled based on tough funding decisions, and those projects ran the gamut from development to networking to  outsourcing services. Some of these projects were not critical, and some were cut when the business they were going to support was curtailed, but some are “hidden gems” that will in the long run cost the business more than it is saving today. &lt;/p&gt;  &lt;p&gt;But belt tightening went on across the entire organization, so IT is left to struggle with its portion of the pie, hoping that the shortfalls (necessary project wise) will be made up in the future. The only bright spot from a budgeting perspective is that new programs and products were cut before IT, since IT is corporate wide and viewed (mostly) strategically.&lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;THE BIGGER THEY ARE, THE HARDER THE CUTS&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;One area that suffered heavily was storage purchases. Looking at the dollar amount and the growth rate, this is no surprise at all. While the growth rate strongly implies the need for more storage, it also strongly advises finding new ways to deal with storage growth. I’ve written about a few of them in my blog over the last few months, but a thorough examination of the ways available to you today to clean up storage usage is in order.&lt;/p&gt;  &lt;p&gt;Don’t believe me? The Recent InformationWeek Analytics Research Report &lt;a href="http://analytics.informationweek.com/abstract/24/2153/Storage-Server/research-2010-state-of-enterprise-storage.html" target="_blank"&gt;The State of Storage 2010&lt;/a&gt; (shows a hefty 47% of respondents are struggling with the amount of storage demanded &lt;em&gt;just by their mission critical applications&lt;/em&gt;. That’s a big number. This percentage topped out 2010 concerns for storage strategists, taking the number one spot away from 2009’s “Data Loss/Data Security” category (which came in at 44% this year).&lt;/p&gt;  &lt;p&gt;While that doesn’t exactly leave a bleak picture for the near future – the implication being that 53% of us aren’t struggling as badly with storage resources – it is certainly not rosy.&lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;IDEAS FOR SAVING ON STORAGE&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/HereComesPaybackTime.PrepareforStorageS_CFF9/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/HereComesPaybackTime.PrepareforStorageS_CFF9/image_thumb_1.png" width="158" height="118" /&gt;&lt;/a&gt;  &lt;p&gt;There are a variety of tools out there to help you get through the crunch, and the technology and process list is growing. Some of them we’ve discussed before, some we haven’t, but let’s make a list. If I miss  anything, feel free to add on in the comments. And I’ve linked all but a couple that are all over the news. &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Tiered Storage. If you’re not there yet, go there. The cost of lower end storage is less even if you buy it from the same big name, and it holds less access-speed sensitive data just fine.&lt;/li&gt;    &lt;li&gt;Compression. Consider it. Even though your data must be read by the compression engine, the amount of space you can recoup is huge. Not for everyone by a long shot though. There’s a short introductory piece &lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=2&amp;amp;ved=0CBwQFjAB&amp;amp;url=http%3A%2F%2Fsearchstoragechannel.techtarget.com%2Fgeneric%2F0%2C295582%2Csid98_gci1321225%2C00.html&amp;amp;ei=Kn1QTKr3LsT9nAfp39CPBw&amp;amp;usg=AFQjCNFUTo3UAq6UR37IRUiNAdy3reqmYg" target="_blank"&gt;here&lt;/a&gt; about it.&lt;/li&gt;    &lt;li&gt;At-rest Deduplication. I list it separately because it’s the popular twin in the compression/dedupe category right now. Again, requires the dedupe engine rehydrate your data on read, but worth considering for the massive space savings.&lt;/li&gt;    &lt;li&gt;Virtualization. This is one of the areas &lt;a href="http://www.f5.com" target="_blank"&gt;F5&lt;/a&gt; plays in with &lt;a href="http://www.f5.com/products/arx-series/" target="_blank"&gt;ARX&lt;/a&gt;. If you abstract your disk, you can increase utilization on the back-end without disrupting users. Increased utilization means less outlay for new disk. IMO, NAS virtualization is much more reasonable/viable than SAN, simply because you can get your data back relatively painlessly if the virtualization engine fails. Coworker Renny Shen wrote a good &lt;a href="http://www.virtual-strategy.com/Features/20100707-F5.html" target="_blank"&gt;overview of virtualization and storage&lt;/a&gt; this month that’s worth reviewing for background.&lt;/li&gt;    &lt;li&gt;Thin Provisioning. I’ve warned about the &lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/05/05/thin-provisioning-plus-vms-ndash-armageddon-in-a-virtual-box.aspx" target="_blank"&gt;potential for inadvertent abuse that thin provisioning harbors&lt;/a&gt;, but that doesn’t make it a useless technology, just one to use judiciously.&lt;/li&gt;    &lt;li&gt;Remote Data Centers. If you have storage in many data centers and the storage is not being roughly equally utilized, time to start looking at ways to equalize data distribution. We play in this space also with our &lt;a href="http://www.f5.com/products/big-ip/product-modules/wan-optimization-module.html" target="_blank"&gt;WOM&lt;/a&gt; product, since it speeds and secures replication and other data transfers across the WAN to a remote datacenter.&lt;/li&gt;    &lt;li&gt;Cloud Storage. It is worth the time to investigate cloud storage, as I’ve &lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/16/cloud-storage-gateways-stairway-to-thin-provisioning-heaven.aspx" target="_blank"&gt;chattered&lt;/a&gt; about frequently of late. Particularly if that storage is fronted by a cloud gateway.&lt;/li&gt;    &lt;li&gt;Archival Storage. Remember the poor, lost, lonely archive? The place where outdated or underutilized data was supposed to go to die? Well it’s time to bring it back. Want to reduce storage costs? Reduce storage needs. I discussed &lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/06/09/give-your-unstructured-data-the-meyers-briggs-tm.aspx" target="_blank"&gt;one way to deal with this possibility&lt;/a&gt; a few weeks ago, but there are others. The point being that we need to start throwing stuff away. Since we can’t chuck it into the circular file, data that is unlikely to be needed again soon will have to go onto long-term storage and stay there forever.&lt;/li&gt; &lt;/ol&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;IT’S A DUOCITY!&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;Much like &lt;a href="http://www.dilbert.com/" target="_blank"&gt;Dilbert’s&lt;/a&gt; Top Secret Management tips, many of these ideas work best when used in tandem. Unlike Dilbert, none of these ideas is likely to get you fired. Put archival storage with Cloud storage and you get a place to stash data limited by only your operations budget. Put an ARX or other Directory Virtualization product in front of that cloud storage gateway and you have disk that is indistinguishable to the end user from local NAS devices, but is actually shoving stuff off of your expensive disk and into the cloud. Add tiered storage (automatically provided by ARX, maybe by other vendors), and your data is moving to the right place at the right time, but users don’t have to care. Utilize WOM to open WAN tunnels to a remote datacenter and optimize file transfers between the two and you’ve got resource leveling… It all adds up.&lt;/p&gt;  &lt;p&gt;Hopefully you will soon be flush with new disk, but none of the above ideas would be precluded by adding new disk (though the extended portion of file information discussed in my Meyers’-Briggs blog might be too resource intensive to pursue if disk were plentiful). They are all additive, meaning new disk would simply last longer, which is certainly worthy of consideration. They vary in costs, some requiring little investment given your existing infrastructure, some requiring an investment that I would argue is minimal in comparison to buying new disk every year. &lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;HOPE FOR THE BEST, PLAN FOR THE WORST&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;And should those rumbling about a “double-dip” recession be correct, it is certainly a good idea to have these tools in your stable before you are once again trying to do more with less. Here’s hoping they’re not right, but contingency planning dictates that, at least to some extent, we should act like they’re visionaries, just in case.&lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;WHAT THE HECK ARE YOU STORING?&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;Fun random fact from that InformationWeek report? 58% of you are managing more than one terabyte of data and less than 100 terabytes. It boggles the mind. We are not accessing 100 terabytes of data in a year, so a ton of that is likely wasted space. Add in the 17% managing 100-500 Terabytes, and 75% of you have a whole lot of data. Ever wonder what it is? Ever ponder that there is stuff on your network no one has seen in a year or more? Creepy fun.&lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:58f584a9-ef54-443c-b7d5-a5013abcb591" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Virtualization" rel="tag"&gt;Virtualization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Storage+Virtualization" rel="tag"&gt;Storage Virtualization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/IT+Management" rel="tag"&gt;IT Management&lt;/a&gt;,&lt;a href="http://technorati.com/tags/IT+Budget" rel="tag"&gt;IT Budget&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WAN+Optimization" rel="tag"&gt;WAN Optimization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Cloud+Storage+Gateways" rel="tag"&gt;Cloud Storage Gateways&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Cloud+Storage" rel="tag"&gt;Cloud Storage&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+Networks" rel="tag"&gt;F5 Networks&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Don+MacVittie" rel="tag"&gt;Don MacVittie&lt;/a&gt;&lt;/div&gt;  &lt;p align="right"&gt;&lt;a href="http://twitter.com/dmacvittie" target="_blank"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/Rss.aspx" target="_blank"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/don.macvittie" target="_blank"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="right"&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fdmacvittie%2FRss.aspx&amp;amp;t1=" target="_blank"&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Related Articles and Blogs&lt;/p&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://analytics.informationweek.com/abstract/24/2153/Storage-Server/research-2010-state-of-enterprise-storage.html" target="_blank"&gt;Breaking Point: 2010 State of Storage (membership required)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=2&amp;amp;ved=0CBwQFjAB&amp;amp;url=http%3A%2F%2Fsearchstoragechannel.techtarget.com%2Fgeneric%2F0%2C295582%2Csid98_gci1321225%2C00.html&amp;amp;ei=Kn1QTKr3LsT9nAfp39CPBw&amp;amp;usg=AFQjCNFUTo3UAq6UR37IRUiNAdy3reqmYg" target="_blank"&gt;Top Five Data Storage Compression Methods&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.virtual-strategy.com/Features/20100707-F5.html" target="_blank"&gt;Storage In A Virtualized Environment&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/05/05/thin-provisioning-plus-vms-ndash-armageddon-in-a-virtual-box.aspx" target="_blank"&gt;Thin Provisioning Plus VMs – Armageddon in a Virtual Box?&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/16/cloud-storage-gateways-stairway-to-thin-provisioning-heaven.aspx" target="_blank"&gt;Cloud Storage Gateways – Stairway to (thin provisioning) Heaven&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/06/09/give-your-unstructured-data-the-meyers-briggs-tm.aspx" target="_blank"&gt;Give Your Unstructured Data the Meyers-Briggs(TM)&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://devcentral.f5.com/weblogs/dmacvittie/aggbug/1088367.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 28 Jul 2010 05:48:28 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/28/here-comes-payback-time.-prepare-for-storage-shortages.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Don MacVittie</dc:creator></item><item><title>CloudFucius Investigates: The Comeback Cloud</title><link>http://devcentral.f5.com/weblogs/psilva/archive/2010/07/28/cloudfucius-investigates-the-comeback-cloud.aspx</link><description>&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/psilva/WindowsLiveWriter/106f5db7f4be_92C5/Konfuzius-1770_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Konfuzius-1770" border="0" alt="Konfuzius-1770" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/psilva/WindowsLiveWriter/106f5db7f4be_92C5/Konfuzius-1770_thumb.jpg" width="63" height="87" /&gt;&lt;/a&gt; Not that it was ever down and out, but the whole cloud computing concept has gotten off to a grand but challenging start.  It was all the rage when first ‘conceived’ as the new way of hosting applications with the promise of cost savings, automation, flexible/dynamic architectures, fast and repeatable deployment and a pay-as-you-go model.  The Coin Operated Cloud but with very little understanding of all the buttons, functions and risks.  As IT started to comprehend the nuances of the cloud, then some very serious questions regarding it’s ability to protect and secure information came to light.  This arrived at a time when the economic downturn could have vaulted the shared, less expensive infrastructure offerings to the top of any IT list since budgets were tight and resources scarce.  It was the perfect storm of tight budgets and cost effective computing.  However, the risk of data loss kept folks questioning the viability of putting sensitive data in the cloud.  Plus, no consent on standards kept the mix of cloud offerings all over the place while limiting the customer’s ability to mix and match.&lt;/p&gt;  &lt;p&gt;As cloud offerings matured and *some* security concerns addressed along with IT having a better grasp on risks and mitigation, the cloud is gradually becoming more attractive to enterprises.  Like anything else that suddenly bursts on to the scene, the hype outweighs the reality and it takes time to fully understand and realize the benefits.&lt;/p&gt;  &lt;p&gt;It seems that almost weekly a shiny new cloud computing survey is released and this week, Vanson Bourne (commissioned by Savvis) released a report that ties cloud computing to the economic recovery.  Specifically, ‘&lt;em&gt;&lt;a title="Cloud Computing Will Fuel Economic Recovery: Survey" href="http://www.crn.com/software/226200061"&gt;68 percent of respondents said cloud computing will help their businesses recover from the recession&lt;/a&gt;&lt;/em&gt;.’  The survey found that 54% of respondents said cost cutting and more flexible IT provisioning is the biggest issue they face and they are optimistic with the prospect that cloud computing can cut costs.  A significant number of IT decision makers, 96%, said they are as confident or more confident than they were last year that cloud computing is enterprise ready.  Yankee Group also released a report that says &lt;em&gt;&lt;a href="http://www.masshightech.com/stories/2010/07/26/daily17-Yankee-Group-Sky-clears-for-cloud-computing.html"&gt;cloud computing is on the cusp of broad enterprise adoption&lt;/a&gt;&lt;/em&gt;.  They also indicate that the concept of cloud computing as a business enabler has jumped from 37% to 60% of respondents in just a year.  &lt;/p&gt;  &lt;p&gt;But can cloud computing save the economy?  &lt;/p&gt;  &lt;p&gt;That’s a stretch, according to David Linthicum in &lt;a title="Will cloud computing save the economy?" href="http://www.infoworld.com/d/cloud-computing/will-cloud-computing-save-the-economy-794"&gt;this article&lt;/a&gt;.  The logic goes, if companies can save money with cloud computing and are more optimistic about the prospect of cloud computing, then they will start spending IT dollars for cloud deployments.  This will, in turn, boost the cloud economy since providers will have to prepare and hire for the influx of customers.  Since accelerated growth would occur, that would attract public and private investments in cloud computing technologies.  The ‘catalyst,’ as Linthicum notes, is to get more investment dollars back into the technology industry, which should fuel the tech economy at least.  Betting that cloud computing will turn the entire economy is a huge long-shot and unrealistic.  The survey also revealed that even with all that confidence, &lt;a title="Cloud Computing Will Fuel Economic Recovery: Survey" href="http://www.crn.com/software/226200061"&gt;&lt;em&gt;security remains as the key adoption barrier&lt;/em&gt;&lt;/a&gt;.  52% of those who do not use cloud computing said ‘security of sensitive data’ as a top concern.&lt;/p&gt;  &lt;p&gt;In a slightly related story, &lt;a title="LimeWire Planning A Serious, Cloud-Based Comeback" href="http://paidcontent.org/article/419-limewire-planning-a-serious-cloud-based-comeback/"&gt;LimeWire Planning A Serious, Cloud-Based Comeback&lt;/a&gt;.  &lt;/p&gt;  &lt;p&gt;And one from Confucius: &lt;em&gt;&lt;a href="http://www.brainyquote.com/quotes/authors/c/confucius.html"&gt;And remember, no matter where you go, there you are.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;em&gt;&lt;em&gt;&lt;em /&gt;&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em /&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;em&gt;&lt;em /&gt;&lt;/em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;em /&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;ps&lt;/p&gt;  &lt;p /&gt;  &lt;p&gt;The CloudFucius Series: &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/04/07/cloudfucius-says-blog-series-good-idea.aspx"&gt;Intro&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/04/13/cloudfucius-says-aaa-important-to-cloud.aspx"&gt;1&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/04/21/cloudfucius-wonders-can-cloud-confidentiality-and-the-constitution-coexist.aspx"&gt;2&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/04/27/cloudfucius-hollers-read-all-about-f5rsquos-on-demand-it.aspx"&gt;3&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/05/05/cloudfucius-ponders-high-availability-in-the-cloud.aspx"&gt;4&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/05/11/cloudfucius-wants-an-optimized-cloud.aspx"&gt;5&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/Default.aspx"&gt;6&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/05/25/cloudfucius-combines-security-and-acceleration.aspx"&gt;7&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/05/26/cloudfucius-listens-f5rsquos-cloud-computing-solutions.aspx"&gt;8&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/06/01/cloudfucius-shares-cloud-research-and-stats.aspx"&gt;9&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/06/10/connecting-to-a-cloud-while-flying-thru-the-clouds.aspx"&gt;10&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/06/14/99-blog-posts-on-the-wall.aspx"&gt;11&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/07/07/cloudfucius-dials-up-the-cloud.aspx"&gt;12&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/07/14/cloudfucius-tunes-into-radio-kcloud.aspx"&gt;13&lt;/a&gt;, &lt;a title="CloudFucius Asks: Will Open Source Open Doors for Cloud Computing?" href="http://devcentral.f5.com/weblogs/psilva/archive/2010/07/20/cloudfucius-asks-will-open-source-open-doors-for-cloud-computing.aspx"&gt;14&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Resources:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.crn.com/software/226200061"&gt;Cloud Computing Will Fuel Economic Recovery: Survey&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="Will cloud computing save the economy?" href="http://www.infoworld.com/d/cloud-computing/will-cloud-computing-save-the-economy-794"&gt;Will cloud computing save the economy?&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://searchcloudcomputing.techtarget.com/news/article/0,289142,sid201_gci1517296,00.html"&gt;Who's actually spending on cloud computing?&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.masshightech.com/stories/2010/07/26/daily17-Yankee-Group-Sky-clears-for-cloud-computing.html"&gt;Yankee Group: Sky clears for cloud computing&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://itmanagement.earthweb.com/netsys/article.php/3895111/Cloud-Computings-Effect-on-the-Hosting-Industry.htm"&gt;Cloud Computing's Effect on the Hosting Industry&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://paidcontent.org/article/419-limewire-planning-a-serious-cloud-based-comeback/"&gt;LimeWire Planning A Serious, Cloud-Based Comeback&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5"&gt;F5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/infrastructure+2.0"&gt;infrastructure 2.0&lt;/a&gt;, &lt;a href="http://technorati.com/tags/integration"&gt;integration&lt;/a&gt;, &lt;a href="http://technorati.com/tags/cloud+connect"&gt;cloud connect&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Pete+Silva"&gt;Pete Silva&lt;/a&gt;, &lt;a href="http://technorati.com/tags/security"&gt;security&lt;/a&gt;, &lt;a href="http://technorati.com/tag/business"&gt;business&lt;/a&gt;, &lt;a href="http://technorati.com/tag/education"&gt;education&lt;/a&gt;, &lt;a href="http://technorati.com/tag/technology"&gt;technology&lt;/a&gt;, &lt;a href="http://technorati.com/tags/application+delivery"&gt;application delivery&lt;/a&gt;, &lt;a href="http://technorati.com/tags/cloud"&gt;cloud&lt;/a&gt;, &lt;a href="http://technorati.com/tags/context-aware"&gt;context-aware&lt;/a&gt;, &lt;a href="http://technorati.com/tags/web"&gt;web&lt;/a&gt;, &lt;a href="http://technorati.com/tags/internet"&gt;internet,&lt;/a&gt; &lt;a href="http://technorati.com/tags/openstack"&gt;openstack&lt;/a&gt;&lt;/p&gt;  &lt;p /&gt;  &lt;p&gt;twitter: &lt;a href="http://twitter.com/psilvas"&gt;@psilvas&lt;/a&gt;&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:right; margin:0px; padding:4px 0px 4px 0px;"&gt;&lt;a href="http://digg.com/submit?url=http%3a%2f%2fdevcentral.f5.com%2fweblogs%2fpsilva%2farchive%2f2010%2f07%2f28%2fcloudfucius-investigates-the-comeback-cloud.aspx&amp;amp;title=CloudFucius+Investigates%3a+The+Comeback+Cloud"&gt;&lt;img src="http://digg.com/img/badges/100x20-digg-button.png" width="100" height="20" alt="Digg This" title="Digg This" border="0" style="border: 0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/psilva/aggbug/1088366.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 28 Jul 2010 03:06:58 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/psilva/archive/2010/07/28/cloudfucius-investigates-the-comeback-cloud.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Pete Silva</dc:creator></item><item><title>Extreme Automation. Dynamic Control with or without the Cloud.</title><link>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/27/extreme-automation.-dynamic-control-with-or-without-the-cloud.aspx</link><description>&lt;p&gt;In the data center of the future, you are going to need to be able to bring up new instances of an application, have them fully functional without any user intervention, and when they’re no longer needed they  &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/ExtremeAutoma.DynamiccontrolwithiControl_9BBC/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px 5px 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/ExtremeAutoma.DynamiccontrolwithiControl_9BBC/image_thumb_1.png" width="96" height="148" /&gt;&lt;/a&gt;should clean up after themselves and quietly go away. Five years ago this was fantasy talk, two years ago it was coming to the fore, and today we can see clearly that such adaptable infrastructure is going to be mandatory for any installation/application that has a highly variable rate of throughput.&lt;/p&gt;  &lt;p&gt;The drivers for this need for adaptability are varied, but the core ones that we have all heard an earful of are cloud – where you are charged for your usage, and leaving apps running when not needed is tantamount to throwing money away – and a highly virtualized environment where there are a lot of virtuals running per physical server and keeping an instance running that you do not need is tantamount to throwing CPU cycles away. Okay, the alliteration was good, but it really IS throwing CPU cycles away, nothing tantamount about it.&lt;/p&gt;  &lt;p&gt;The problem is/has been that there are a lot of complex pieces to put together when making such a system work. It is difficult to say “spin up an instance, give it access to all the resources it needs, and make it play well with the other instances of the same application while directing traffic to it.”&lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;IF YOU THINK ABOUT IT, THE JOKE IS ON US.&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;Yet all of this stuff exists – you provision servers and virtual servers and integrate them into your environment today – it just wasn’t designed with automation in mind. Which is kind of amusing if you think for a second about what computers are, at their heart. How we missed an opportunity to design for automation is a fun point to ponder.&lt;/p&gt;  &lt;p&gt;Over the last couple of years, things have come a long way. &lt;a href="http://www.vmware.com" target="_blank"&gt;VMWare&lt;/a&gt; has thin provisioning for disk, developers have gotten smarter about developing applications that automatically play nice with multiple instances of the same app running, and load balancers have APIs to help with automation. F5’s API is pretty thorough and allows you to do just about any automation task – indeed, I myself helped develop a complete automation system in Java with iControl that ran from Linux shell apps. You can check out some similar functionality in my iC2I series of Tech Tips from 2008. Here’s the one that shows how to create a Virtual IP from code with a minimum of information available &lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/224/iC2I-Automation--Creating-Virtuals-Simplified.aspx" target="_blank"&gt;&lt;em&gt;iC2I: Creating a Virtual Simplified&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. &lt;/em&gt;The process isn’t simple because the architecture and assumptions – like the existence of a pool of servers to service the Virtual IP, monitors to check health, etc. – aren’t simple, but since you only create this code once, and this is the basis of a Java implementation to manage the Virtual IP creation process, it’s not too overly burdensome either. The flip side of this one (and I believe another installment in the iC2I series) is removing a node from a pool – deprovisioning from the Virtual IP perspective. I haven’t looked into the VCenter functionality to stop an instance, but likely it is there also.&lt;/p&gt;  &lt;p&gt;When I wrote the iC2I series, TMSH did not yet exist. Now that it does, much of the functionality that was done in that series with Java could be done with command line scripts, though automation and coordination is admittedly easier to do from a Java application that can be run anywhere, it is another option to make the datacenter more dynamic.&lt;/p&gt;  &lt;p&gt;This is the part where I normally say “and you can do this stuff with other vendors too…” You’ll note that this time I’m not. You can. It’s not so easy.&lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;IS THIS NOT CLOUDISH?&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;At this point in this blog, many of you will question how close we are to cloud computing without a ton of excess overhead. &lt;a href="http://devcentral.f5.com/weblogs/macvittie" target="_blank"&gt;Lori&lt;/a&gt; and I were discussing that very topic and came to the conclusion that while this is&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/ExtremeAutoma.DynamiccontrolwithiControl_9BBC/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/ExtremeAutoma.DynamiccontrolwithiControl_9BBC/image_thumb.png" width="211" height="242" /&gt;&lt;/a&gt; data center automation, it is a long way from cloud computing. Suffice it to say that you can manage to bring things up and down, but the Business Process Automation portion – self-service provisioning, checking the health of the overall Virtual IP before harvesting a little-used instance, projecting needed usage into the future (to keep from harvesting a virtual machine that is likely to be needed in five minutes even if it is idle now) is all missing. &lt;/p&gt;  &lt;p&gt;That doesn’t stop this functionality from being extremely useful in the data center of today or tomorrow though. The ability to spin up new instances and work them into the overall architecture at a whim (remember that by being behind a &lt;a href="http://www.f5.com/products/big-ip/" target="_blank"&gt;BIG-IP&lt;/a&gt; under a Virtual IP, you don’t have to worry about firewall or other infrastructure issues, and through VMWare VCenter you can set up disk and other per-instance tasks) is huge and has implications for your ability to sleep peacefully at night.&lt;/p&gt;  &lt;p&gt;Using iSessions you can even distribute load to a completely separate data center (or cloud provider) and make the instances appear to the BIG-IP (and all connections running through it) to be coming from the current location. That allows you to automate not just the data center, but also shift load to a backup location that might normally only come online during downtime. Multiple data centers, one connection point, automation… Now we’re getting somewhere, no?&lt;/p&gt;  &lt;p&gt;The picture at the right could be any BIG-IP arrangement (or most load balancers for that matter), except that “pool” could be in this data center, in the cloud, in a datacenter on the other side of the globe… It really doesn’t matter with iSessions, as long as you can build a reliable Internet connection to the location and there is a BIG-IP there also.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;THE FUTURE, IT IS SO BRIGHT.&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;The point is that we’ve arrived at true data center automation and I  have seen it in action. It takes a time investment to get things going at first, but once they’re up, you can even hand out scripts (or point at a web interface) for IT application owners that allow them to add virtual machines on-demand by running a command line or clicking on a web page. &lt;/p&gt;  &lt;p&gt;Once again, we see the power of the future coming to fruition, and the future appears to be a very cool place. Moving forward, perhaps the other pieces of cloud will fall as nicely into place, but this level of dynamism allows you to offer up the apps your business customers want, when they want them, where they want them, for as long as they want them… Without the overhead of spinning up machines yourself, or leaving dead instances running on your servers. And that doesn’t even touch on VMotion…&lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:49039802-ca40-48ff-85a8-5674c924497d" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Automation" rel="tag"&gt;Automation&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iC2I" rel="tag"&gt;iC2I&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Virtualization" rel="tag"&gt;Virtualization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VMWare" rel="tag"&gt;VMWare&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iSessions" rel="tag"&gt;iSessions&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iControl" rel="tag"&gt;iControl&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+Networks" rel="tag"&gt;F5 Networks&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Don+MacVittie" rel="tag"&gt;Don MacVittie&lt;/a&gt;&lt;/div&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p align="right"&gt;&lt;a href="http://twitter.com/dmacvittie" target="_blank"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/Rss.aspx" target="_blank"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/don.macvittie" target="_blank"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="right"&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fdmacvittie%2FRss.aspx&amp;amp;t1=" target="_blank"&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Related Articles and Blogs&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/186/iControl-Concept-to-Implementation-iC2I-The-Introduction.aspx" target="_blank"&gt;iC2I: Introduction&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/246/iC2I-Dumping-a-Node.aspx" target="_blank"&gt;iC2I: Dumping a Node&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/261/iC2I--Dumping-iRules.aspx" target="_blank"&gt;iC2I: Dumping iRules&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/205/iC2I-Creating-a-Virtual-Server.aspx" target="_blank"&gt;iC2I: Creating a Virtual Server&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/224/iC2I-Automation--Creating-Virtuals-Simplified.aspx" target="_blank"&gt;iC2I: Creating Virtuals Simplified&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/202/iC2I-What-Virtuals-Rely-on-this-iRule.aspx" target="_blank"&gt;iC2I: What Virtuals Rely on This iRule?&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/192/iC2I-What-Pools-Rely-on-This-Server.aspx" target="_blank"&gt;iC2I: What Pools Rely on This Server?&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/195/iC2I-What-Virtuals-Rely-on-this-Server.aspx" target="_blank"&gt;iC2I: What Virtuals Rely on This Server?&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/nojan/archive/2010/02/02/introducing-long-distance-vmotion-with-vmware.aspx" target="_blank"&gt;Introducing Long Distance VMotion With VMWare&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://devcentral.f5.com/weblogs/dmacvittie/aggbug/1088365.aspx" width="1" height="1" /&gt;</description><pubDate>Tue, 27 Jul 2010 03:45:54 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/27/extreme-automation.-dynamic-control-with-or-without-the-cloud.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Don MacVittie</dc:creator></item><item><title>The World Doesn&amp;rsquo;t Care About APIs</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/27/the-world-doesnrsquot-care-about-apis.aspx</link><description>&lt;p&gt;&lt;strong /&gt;&lt;/p&gt;
&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;  &lt;/strong&gt; &lt;/strong&gt; &lt;/strong&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Bottles, birds, and packets: how the message is exchanged is less important than what the message is as long as it gets there. &lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;  &lt;/strong&gt; &lt;/strong&gt; &lt;/strong&gt;
&lt;h3&gt;&lt;span style="font-weight: normal;"&gt;&lt;strong&gt;I heard it said the other day, regarding the OpenStack announcement, that “the world does not care about APIs.”&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;  &lt;/strong&gt; &lt;/strong&gt; &lt;/strong&gt;
&lt;p&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;em&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/TheWorldDoesntCareAboutAPIs_8545/image_2.png"&gt;&lt;img height="191" border="0" align="left" width="312" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/TheWorldDoesntCareAboutAPIs_8545/image_thumb.png" alt="image" title="image" style="border-width: 0px; margin: 10px 15px 10px 0px; display: inline;" /&gt;&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/strong&gt;Unpossible! How could the world &lt;em&gt;not &lt;/em&gt;care about APIs? After all, it is APIs that make the Web (2.0) go around. It is APIs that drive the automation of infrastructure from static toward dynamic. It is APIs that drive self-service and thin-provisioning of compute and storage in the cloud. It is APIs that make cross-environment integration of SaaS possible. In general, without APIs we’d be very unconnected, un-integrated, un-collaborative, and in many cases, uninformed. &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Now, it could be said that the world doesn’t care about APIs until they’re highly adopted, but unlike the chicken and the egg question (&lt;a href="http://www.msnbc.msn.com/id/38238685/ns/technology_and_science-science/"&gt;which may very well have been answered, in case you weren’t paying attention&lt;/a&gt;), it is still questionable whether the success of sites like &lt;a href="http://www.facebook.com"&gt;Facebook&lt;/a&gt; and &lt;a href="http://twitter.com"&gt;Twitter&lt;/a&gt; and the continued growth of SaaS darlings like &lt;a href="http://www.salesforce.com"&gt;Salesforce.com&lt;/a&gt; are dependent upon exactly that: their API. &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The API is the new CLI in the network. The API is the web’s version of EAI (Enterprise Application Integration), without which we wouldn’t have interesting interactions between our favorite sites and applications. The API is the cloud’s version of the ATM (Automated Teller Machine) through which services are provisioned with just a few keystrokes and a valid credit card. The API is the means by which interoperability of cloud computing &lt;em&gt;will &lt;/em&gt;be enabled because to do otherwise is to create the mother-of-all hub-and-spoke integration points. As &lt;a href="http://twitter.com/jen_h"&gt;Jen Harvey&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/TheWorldDoesntCareAboutAPIs_8545/twitterbird_2.png"&gt;&lt;img height="13" border="0" width="13" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/TheWorldDoesntCareAboutAPIs_8545/twitterbird_thumb.png" alt="twitterbird" title="twitterbird" style="border-width: 0px; display: inline;" /&gt;&lt;/a&gt; ( co-founder of &lt;a href="http://www.voxilate.com/"&gt;Voxilate&lt;/a&gt;, developer of voice-related mobile applications) pointed out, an API makes it possible to develop a user-interface that essentially obscures the underlying implementation. It’s the user-interface the users care about, and if you don’t have to change &lt;em&gt;it &lt;/em&gt;as your application takes advantage of different clouds or services or technologies, you ensure that productivity and user-adoption – two frequently cited negative impacts of changes to applications in any organization – are not impacted at all. It’s a game-changer, to be sure.  &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;So the API is the world in technology today, how could we &lt;em&gt;not&lt;/em&gt; care about it? &lt;/strong&gt;&lt;/p&gt;
&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;  &lt;/strong&gt; &lt;/strong&gt; &lt;/strong&gt;
&lt;h3&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;font color="#800000"&gt;&lt;strong&gt;WE DO. WE JUST CARE MORE ABOUT the MODEL &lt;/strong&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;  &lt;/strong&gt; &lt;/strong&gt; &lt;/strong&gt;
&lt;h3 style="font-weight: normal;"&gt;&lt;strong&gt;Maybe the point is that we shouldn’t because the API today is just a URI and URIs are nearly interchangeable.&lt;/strong&gt;&lt;/h3&gt;
&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;  &lt;/strong&gt; &lt;/strong&gt; &lt;/strong&gt;
&lt;p&gt;Face it, if interoperability between &lt;em&gt;anything &lt;/em&gt;were simply about the API then we’d have already solved this puppy and put it to sleep. Permanently. But it’s not about the API per se, it is, as &lt;a href="http://twitter.com/vambenepe"&gt;William Vambenepe&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/TheWorldDoesntCareAboutAPIs_8545/twitterbird_2.png"&gt;&lt;img height="13" border="0" width="13" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/TheWorldDoesntCareAboutAPIs_8545/twitterbird_thumb.png" alt="twitterbird" title="twitterbird" style="border-width: 0px; display: inline;" /&gt;&lt;/a&gt; is wont to say, “&lt;a href="http://stage.vambenepe.com/archives/700"&gt;it’s the model, stupid&lt;/a&gt;”&lt;em&gt; [Edited per William's comment below, 7-27-2010]  &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Unfortunately, when most people stand up and cheer “the API” what they’re really cheering is “the model.” They aren’t making the distinction between the &lt;em&gt;interface &lt;/em&gt;and the &lt;em&gt;data (or meta-data) &lt;/em&gt;exchanged&lt;em&gt;. &lt;/em&gt;It’s what's &lt;em&gt;inside &lt;/em&gt;the message that enables interoperability because it is through the message, &lt;em&gt;the model&lt;/em&gt;, that we are able to exchange the information necessary to do whatever it is the API call is supposed to do. Without a meaningful, shared model the API is really not all that important. &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The API is &lt;em&gt;how&lt;/em&gt;, not &lt;em&gt;what&lt;/em&gt;, and unfortunately even if everyone agreed on &lt;em&gt;how&lt;/em&gt;, we’d still have to worry about &lt;em&gt;what &lt;/em&gt;and that, as anyone who has every worked with EAI systems can tell you, is the really, really, super hard part of integration. And it is integration that we’re really looking for when we talk about cloud and interoperability or portability or mobility, because what we want is to be able to share data (configuration, architectures, virtual machines, hypervisors, applications) across multiple programmatic systems in a meaningful way. &lt;/strong&gt;&lt;/p&gt;
&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;  &lt;/strong&gt; &lt;/strong&gt; &lt;/strong&gt;
&lt;h3&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;font color="#800000"&gt;COMMODITIZATION REALLY MEANS NORMALIZATION &lt;/font&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;  &lt;/strong&gt; &lt;/strong&gt; &lt;/strong&gt;
&lt;h3 style="font-weight: normal;"&gt;&lt;strong&gt;Here’s the rub: having an API is important, but the actual API itself is not nearly as important as what it’s used to exchange.&lt;/strong&gt;&lt;/h3&gt;
&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;  &lt;/strong&gt; &lt;/strong&gt; &lt;/strong&gt;
&lt;p&gt;&lt;strong&gt;APIs, at least those on the web and taking advantage of HTTP, are little more than URIs. Doesn’t matter if it’s REST or SOAP, the end-point is still just a URI. The URI is often somewhat self-descriptive and in the case of true REST (which doesn’t really exist) it would be nearly completely self-documenting but it’s still just a URI. That means it is nearly a trivial exercise to map “/start/myresource” to “/myresource/start”. But when the data, the &lt;em&gt;model, &lt;/em&gt;is expressed as the payload of that API call, then things get … ugly. Is one using JSON? Or is it XML? Is that XML OVF? Schemaless? Bob’s Homegrown Format? Does it use common descriptors? Is a load balancer&lt;em&gt; &lt;/em&gt;in cloud a described as an application delivery controller in cloud b? Is the description of a filter required in cloud a using iptables semantics or some obscure format the developer made up on the fly because it made sense to her? &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mapping the data, &lt;em&gt;the model&lt;/em&gt;, isn’t a trivial exercise. In fact without a common semantic model it would require not the traditional one-chicken sacrifice but probably a whole flock in order to get it working, and you’d essentially be locked-in for all the same reasons you end up locked-in today: it costs too much and takes too much effort to change. When pundits and experts talk about commoditization of cloud computing, and they do often, it’s not an attempt to minimize the importance of the model, of the infrastructure, but rather it’s a necessary step toward providing services in a consistent manner across implementations; across clouds. By defining core cloud computing services in a consistent manner and describing them in similar terms, advanced services can then be added atop those services in a like manner without impacting negatively the ability to migrate between implementations. If the underlying model is consistent, commoditized if you will, this process becomes much easier for everyone involved. &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Consider HTTP headers. There is a common set, a &lt;em&gt;standard&lt;/em&gt; set of headers used to describe core functions and capabilities. They have a common model and use consistent semantics through which the name-value pairs are described. Then there’s &lt;em&gt;custom &lt;/em&gt;headers; headers that follow the same model but which are peculiar to the service being invoked. In a cloud model these are the &lt;a href="http://cloudscaling.com/blog/cloud-computing/does-openstack-change-the-cloud-game"&gt;differentiated value-added cloud services (VACS)&lt;/a&gt; &lt;a href="http://twitter.com/randybias"&gt;Randy Bias&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/TheWorldDoesntCareAboutAPIs_8545/twitterbird_2.png"&gt;&lt;img height="13" border="0" width="13" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/TheWorldDoesntCareAboutAPIs_8545/twitterbird_thumb.png" alt="twitterbird" title="twitterbird" style="border-width: 0px; display: inline;" /&gt;&lt;/a&gt; mentions in his post regarding the announcement of &lt;a href="http://www.openstack.org/"&gt;OpenStack&lt;/a&gt; and the ensuing cries of “it will be the standard! it will save the world!”. The most important aspect of custom HTTP headers that we must keep in any cloud API or stack is that if they aren’t supported, they do not negatively impact the ability to invoke the service. They are &lt;em&gt;ignored&lt;/em&gt; by applications which do not support them. Only through commoditization and a common model can this come to fruition. &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Having an API is important. It’s what makes integration of applications, infrastructure, and ultimately clouds possible. But it isn’t the definition of that interface across disparate implementations of similar technology that will make or break intercloud. What will make or break intercloud is the definition of a consistent semantic model for core services and components that can be used to describe the technologies and policies and meta-data necessary to enable interoperability. &lt;/strong&gt;&lt;/p&gt;
&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;  &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;hr noshade="noshade" color="#808080" width="100%" /&gt;
&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;  &lt;/strong&gt; &lt;/strong&gt; &lt;/strong&gt;
&lt;table cellspacing="0" cellpadding="2" border="0" width="100%"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="70%" valign="top"&gt;
            &lt;h3&gt;Related Posts&lt;/h3&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/12/cloud-standards-and-pants.aspx"&gt;Cloud, Standards, and Pants&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/01/18/infrastructure-2.0-squishy-name-for-a-squishy-concept.aspx"&gt;Infrastructure 2.0: Squishy Name for a Squishy Concept&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/05/24/despite-good-intentions-paas-interoperability-still-only-skin-deep.aspx"&gt;Despite Good Intentions PaaS Interoperability Still Only Skin Deep&lt;/a&gt; &lt;/li&gt;
            &lt;/ul&gt;
            &lt;div class="wlw_related_posts"&gt;from tag &lt;a href="http://del.icio.us/lmacvittie/model"&gt;model&lt;/a&gt;             &lt;br /&gt;
            &lt;/div&gt;
            &lt;div class="wlw_related_posts"&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/05/26/f5-and-the-cloud.aspx"&gt;F5 and the Cloud&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/01/27/cloud-computings-other-achilles-heel-software-licensing.aspx"&gt;Cloud Computing's Other Achilles' Heel: Software Licensing&lt;/a&gt; &lt;/li&gt;
            &lt;/ul&gt;
            &lt;/div&gt;
            from tag &lt;a href="http://del.icio.us/lmacvittie/API"&gt;API&lt;/a&gt;           &lt;br /&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/04/23/hindsight-is-always-twenty-twenty.aspx"&gt;Hindsight is Always Twenty-Twenty&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/25/are-you-scrubbing-the-twitter-stream-on-your-web-site.aspx"&gt;Are You Scrubbing the Twitter Stream on Your Web Site?&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/09/25/infrastructure-integration-metadata-versus-api.aspx"&gt;Infrastructure Integration: Metadata versus API&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/05/13/are-admins-developers-too.aspx"&gt;Are admins developers too?&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/02/rest-api-developers-between-a-rock-and-a-hard-place.aspx"&gt;REST API Developers Between a Rock and a Hard Place&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/01/26/cloud-interoperability-must-dig-deeper-than-the-virtualization-layer.aspx"&gt;Cloud interoperability must dig deeper than the virtualization layer&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/04/the-api-is-the-new-cli.aspx"&gt;The API Is the New CLI&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/09/10/wils-automation-versus-orchestration.aspx"&gt;WILS: Automation versus Orchestration&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/26/magic-virtualization-fairy-dust-and-the-new-network.aspx"&gt;Magic Virtualization-Fairy Dust and the New Network&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/12/04/next-generation-management-of-data-centers-should-be-modeled-on-social.aspx"&gt;Next-Generation Management of Data Centers Should be Modeled on Social Networking&lt;/a&gt; &lt;/li&gt;
            &lt;/ul&gt;
            &lt;a href="http://del.icio.us/lmacvittie/API"&gt;(more..)&lt;/a&gt;&lt;/td&gt;
            &lt;td width="30%" valign="top"&gt;
            &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img height="18" border="0" width="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" alt="Follow me on Twitter" /&gt;&lt;/a&gt; &lt;a href="http://tweepml.org/F5-Networks-Tweeple/" title="Follow F5 Networks on Twitter"&gt;&lt;img height="18" border="0" width="18" src="http://tweepml.org/s/tweepml16.png" alt="" /&gt;&lt;/a&gt; &lt;a href="http://tweepml.org/F5-DevCentral/" title="Follow F5 DevCentral on Twitter"&gt;&lt;img height="18" border="0" width="18" src="http://tweepml.org/s/tweepml16.png" alt="" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" alt="" /&gt;&lt;/a&gt; &lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img height="18" border="0" width="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" alt="View Lori's profile on SlideShare" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" alt="" /&gt;&lt;/a&gt; &lt;a href="http://www.friendfeed.com/lmacvittie"&gt;&lt;img height="18" border="0" width="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/friendfeed_3.jpg" alt="friendfeed" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img height="18" border="0" width="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" alt="icon_facebook" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
            &lt;p&gt;&lt;a href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1=" title="Subscribe using any feed reader!"&gt;&lt;img height="18" border="0" width="125" src="http://s9.addthis.com/button1-fd.gif" alt="AddThis Feed Button" /&gt;&lt;/a&gt; &lt;a target="_blank" href="http://www.addthis.com/bookmark.php" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" title="Bookmark and Share"&gt;&lt;img height="18" border="0" width="125" src="http://s9.addthis.com/button1-share.gif" alt="Bookmark and Share" /&gt;&lt;/a&gt; &lt;script type="text/javascript" src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355"&gt;&lt;/script&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;  &lt;/strong&gt; &lt;/strong&gt; &lt;/strong&gt;
&lt;h3&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;   &lt;/strong&gt; &lt;/strong&gt; &lt;/strong&gt;
&lt;div class="wlw_related_posts"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;a href="http://del.icio.us/lmacvittie/API"&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;strong&gt;&lt;strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;  &lt;/strong&gt; &lt;/strong&gt; &lt;/strong&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2980afce-7397-44cf-8ab7-ef922a7f6e64" style="margin: 0px; padding: 0px; display: inline; float: none;"&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/MacVittie"&gt;MacVittie&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/F5"&gt;F5&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/infrastructure+2.0"&gt;infrastructure 2.0&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/cloud+computing"&gt;cloud computing&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/API"&gt;API&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/model"&gt;model&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/OpenStack"&gt;OpenStack&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Randy+Bias"&gt;Randy Bias&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/William+Vambenepe"&gt;William Vambenepe&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Jen+Harvey"&gt;Jen Harvey&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Web+2.0"&gt;Web 2.0&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/integration"&gt;integration&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/standards"&gt;standards&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/intercloud"&gt;intercloud&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1088364.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 26 Jul 2010 19:15:24 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/27/the-world-doesnrsquot-care-about-apis.aspx#comment</comments><slash:comments>2</slash:comments><dc:creator>Lori MacVittie</dc:creator></item><item><title>Dell Buys Ocarina Networks. Dedupe For All?</title><link>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/26/dell-buys-ocarina-networks.-dedupe-for-all.aspx</link><description>&lt;p&gt;Storage at rest de-duplication has been a growing point of interest for most IT staffs over the last year or so, just because de-duplication allows you to purchase less hardware over time, and if that hardware is a big old storage array sucking a ton of power and costing a not-insignificant amount to install and maintain, well, it’s appealing.&lt;/p&gt;  &lt;p&gt;Most of the recent buzz has been about primary storage de-duplication, but that is merely a case of where the market is. Backup de-duplication has existed for a good long while, and secondary storage de-duplication is not new. Only recently have people decided that at-rest de-dupe was stable enough to give it a go on their primary storage – where all the most important and/or active information is kept. I don’t think I’d call it a “movement” yet, but it does seem that the market’s resistance to anything that obfuscates data storage is eroding at a rapid rate due to the cost of the hardware (and attendant maintenance) to keep up with storage growth.&lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;WHO AND WHAT?&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/DellBuysOcarinaNetworks.DedupeForAll_AC6C/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/DellBuysOcarinaNetworks.DedupeForAll_AC6C/image_thumb.png" width="153" height="197" /&gt;&lt;/a&gt;  &lt;p&gt;Ocarina Networks is one of a handful of vendors that was dealing with de-duplication abstracted from the tier. They didn’t care what tier you were de-duplicating, only that they were very good at it. They’ve been  working hard to get your attention, and failing that to get the attention of resellers/OEMs. This move shows that they managed to receive that attention. And a good thing too, since this market is going to be over-run by big names providing de-duplication directly. Even though I think that de-duplication falls into the category of technologies you want outside of your storage arrays so that you can apply it across vendors and tiers, we’ve all seen that similar functionality, if offered by the big names, ceases to exist as a stand-alone market, just through market attrition.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dell.com"&gt;Dell&lt;/a&gt; is a provider of a variety of storage systems, and while you don’t think of them when you think &lt;a href="http://www.hp.com/#Product" target="_blank"&gt;HP&lt;/a&gt;/&lt;a href="http://www.emc.com" target="_blank"&gt;EMC&lt;/a&gt;/&lt;a href="http://www.netapp.com" target="_blank"&gt;NetApp&lt;/a&gt;/&lt;a href="http://www.ibm.com" target="_blank"&gt;IBM&lt;/a&gt;/&lt;a href="http://www.hitachidatasystems.com/" target="_blank"&gt;HDS&lt;/a&gt; (when did The Big Three become The Big Five?), they certainly move a lot of disk. From entry level NAS devices to high-end iSCSI, they’re out there with their own products, and reselling the likes of EMC for things they don’t directly offer of their own (or OEM, but these days even IBM OEMs some storage boxes). At a minimum, Dell is a force in the storage market, I think of them more as “the next generation” because they’re poised to take advantage of the move to IP storage, while not invested in FC in any great depth.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;IS THE WHOLE GREATER THAN THE SUM OF THE PARTS?&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;The merger of these two companies makes for some interesting possibilities. Much like when Dell bought &lt;a href="http://www.equallogic.com/" target="_blank"&gt;EqualLogic&lt;/a&gt;, it doesn’t seem like a perfect fit, but the potential for a merged future that betters Dell’s place in the business market exists. It is no longer just massive companies with millions of servers that are suffering from storage expense overload, lots of smaller organizations are feeling the pinch of a never-ending stream of unstructured data. From the perspective that most of this unstructured data is driving the business, that’s good. From the perspective of the costs to store this data, that’s bad. Dell should find good resonance with its customer base, and hopefully enough of a market to make this purchase worthwhile (for the record, I have no idea if EqualLogic has worked out for Dell as a valuable purchase, but I’ve been a fan of EqualLogic since the early days, and presume that they kept the momentum going under the aegis of Dell).&lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;ALWAYS WITH THE QUESTIONS.&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;The question I – and presumably many others – have is “will Dell keep this open to all vendors?” They are in a unique position to do so, they resell other vendors’ gear, they sell their own, their focus is not on totally dominating the storage market with the newest, snazziest, shiniest boxes, but rather on giving their customer base an array of options that suit their needs within the price bounds of the market segment they’re selling to (I know that you can buy storage from them for $3000, and that some storage from them is more than $50,000 – and that’s all aimed at the SMB market). They have the relationships to keep Ocarina free of the fetters of single-vendorism, and Ocarina has contracts that would make it one of the top choices for de-dupe. The only question is what Dell’s management was thinking when they signed the contract. It would be a valid road for them to pursue to attempt to fold Ocarina into their existing offerings and focus it primarily or even solely on Dell storage products… If they wanted to be a storage vendor. My gut says probably not, and I hope that this time my gut is right. They have a lot more business than just storage, so another valid path for them to take is to offer the Ocarina product for any certified storage. IMO that would be the best option, they can then sell it to their existing and future customers without constraint.&lt;/p&gt;  &lt;p&gt;Dave Raffo over at SearchStorage has a pretty good &lt;a href="http://searchstorage.techtarget.com/news/article/0,289142,sid5_gci1517246,00.html" target="_blank"&gt;listing&lt;/a&gt; of the relationships this purchase impacts and what the relationships entail. It will be interesting to see how Dell handles each of them. &lt;/p&gt;  &lt;p&gt;And in that second scenario, we’d all win. If you don’t need de-duplication, you can buy from whomever, if you do need de-duplication, you can buy Ocarina devices from Dell, get their world-class support, and get your storage… From whomever. In my opinion that would be a win for everyone.&lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;THE FUN LITTLE DISCLAIMER PARTS&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;&lt;strong&gt;Note: &lt;/strong&gt;Dell is a business partner of &lt;a href="http://www.f5.com" target="_blank"&gt;F5&lt;/a&gt; (as are all of the other vendors mentioned). While I have not talked to anyone at Dell or Ocarina leading up to to writing this blog, I thought it only fair to mention our relationship.&lt;/p&gt;  &lt;p&gt;And F5 currently has no horse in this race, we don’t make storage, our de-dupe (via &lt;a href="http://www.f5.com/products/big-ip/product-modules/wan-optimization-module.html" target="_blank"&gt;WOM&lt;/a&gt; and &lt;a href="http://www.f5.com/products/big-ip/solution-modules/edge-gateway.html" target="_blank"&gt;EDGE Gateway&lt;/a&gt;) is on-the-fly and complimentary to that done by Ocarina, and we don’t sell servers. This blog simply reflects my interest in the changing storage market space and not any kind of official F5 position on the topic. If we even have one. &lt;/p&gt;  &lt;p&gt;   &lt;/p&gt;&lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9be160d7-75f4-44bc-b9ca-90283de928c5" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Storage+Deduplication" rel="tag"&gt;Storage Deduplication&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Ocarina+Networks" rel="tag"&gt;Ocarina Networks&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Dell" rel="tag"&gt;Dell&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Dell+EqualLogic" rel="tag"&gt;Dell EqualLogic&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HP" rel="tag"&gt;HP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/EMC" rel="tag"&gt;EMC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/NetApp" rel="tag"&gt;NetApp&lt;/a&gt;,&lt;a href="http://technorati.com/tags/IBM" rel="tag"&gt;IBM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HDS" rel="tag"&gt;HDS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+Networks" rel="tag"&gt;F5 Networks&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+WOM" rel="tag"&gt;F5 WOM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+EDGE+Gateway" rel="tag"&gt;F5 EDGE Gateway&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Don+MacVittie" rel="tag"&gt;Don MacVittie&lt;/a&gt;&lt;/div&gt;  &lt;p align="right"&gt;&lt;a href="http://twitter.com/dmacvittie" target="_blank"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/Rss.aspx" target="_blank"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/don.macvittie" target="_blank"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="right"&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fdmacvittie%2FRss.aspx&amp;amp;t1=" target="_blank"&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Related Articles and Blogs&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://searchstorage.techtarget.com/news/article/0,289142,sid5_gci1517246,00.html" target="_blank"&gt;Dell-Ocarina deal will alter landscape of primary storage deduplication&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://searchdatabackup.techtarget.com/news/article/0,289142,sid187_gci1506893,00.html" target="_blank"&gt;Data dedupe technology helps curb virtual server sprawl&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.informationweek.com/news/storage/systems/showArticle.jhtml?articleID=224701816" target="_blank"&gt;Expanding Role of Data Deduplication&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.networkcomputing.com/deduplication/is-primary-deduplication-right-for-you.php" target="_blank"&gt;The Reality of Primary Storage Deduplication&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://devcentral.f5.com/weblogs/dmacvittie/aggbug/1088362.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 26 Jul 2010 04:28:23 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/26/dell-buys-ocarina-networks.-dedupe-for-all.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Don MacVittie</dc:creator></item><item><title>The Battle of Economy of Scale versus Control and Flexibility</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/26/the-battle-of-economy-of-scale-versus-control-and-flexibility.aspx</link><description>&lt;p&gt;&lt;em&gt;When strategies are formed it quickly becomes obvious that &lt;a title="" href="http://www.f5.com/solutions/cloud-computing" rel=""&gt;cloud computing &lt;/a&gt; is more about balance than anything else. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;At a time when you’d think cloud computing would be the primary “go to” strategy for managing scale and rapid growth multiple well-known and demanding organizations are building their own data centers instead.&lt;/p&gt;  &lt;p&gt;With all the hype around cloud being faster, cheaper, and more efficient these folks must be crazy, right? &lt;/p&gt;  &lt;p&gt;Not at all. In fact, these moves illustrate the growing friction between the economy of scale offered by cloud computing and the control and flexibility that is part and parcel of owning one’s own data center. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InteroperabilityisnotPortabilityisnotMob_4F8B/blockquote_2.gif"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="blockquote" border="0" alt="blockquote" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InteroperabilityisnotPortabilityisnotMob_4F8B/blockquote_thumb.gif" width="46" height="28" /&gt;&lt;/a&gt; In April Twitter &lt;a href="http://www.datacenterknowledge.com/archives/2010/04/16/twiter-will-get-its-own-data-center/"&gt;announced plans&lt;/a&gt; to build a data center of its own. On Wednesday it provided additional details on the &lt;a href="http://engineering.twitter.com/2010/07/room-to-grow-twitter-data-center.html"&gt;Twitter Engineering blog&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;“Later this year, Twitter is moving our technical operations infrastructure into a new, custom-built data center in the Salt Lake City area,” wrote Twitter’s Jean-Paul Cozzatti, who said &lt;strong&gt;having dedicated data centers will provide more capacity to accommodate growth&lt;/strong&gt; of 300,000 new users per day. “Keeping pace with these users and their Twitter activity presents some unique and complex engineering challenges. Importantly, having our own data center will give us &lt;strong&gt;the flexibility to more quickly make adjustments as our infrastructure needs change&lt;/strong&gt;.”&lt;/p&gt;    &lt;p&gt;-- &lt;a href="http://www.datacenterknowledge.com"&gt;Data Center Knowledge&lt;/a&gt;, “&lt;a href="http://www.datacenterknowledge.com/archives/2010/07/22/twitters-new-data-center/"&gt;Twitter Picks Utah for New Data Center&lt;/a&gt;” &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Twitter isn’t the only Web 2.0 savvy organization moving to their own data center. Facebook earlier this year announced it, too, was also investing in building out its own data center. &lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;&lt;font color="#800000"&gt;BUT CLOUD AUTO-SCALES and STUFF! &lt;/font&gt;&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;It’s not all about scalability. I know that sounds nearly heretical, but it’s not. And it’s not a new mantra, either. Scalability is certainly a factor in why one would choose cloud computing over a localized deployment, but also important are &lt;strong&gt;control&lt;/strong&gt; and &lt;strong&gt;flexibility&lt;/strong&gt;.  &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Another consideration is the ability to customize your data center infrastructure to provide &lt;strong&gt;more granular control of operations&lt;/strong&gt;. “That &lt;strong&gt;control gives us a ton of flexibility&lt;/strong&gt;, and we can build new things without having to wait for our partner,” said Heiliger [Jonathan Heiliger, Facebook’s VP of Technical Operations] &lt;/p&gt;    &lt;p&gt;-- &lt;a href="http://www.datacenterknowledge.com"&gt;Data Center Knowledge&lt;/a&gt;, “&lt;a href="http://www.datacenterknowledge.com/archives/2010/07/22/data-centers-for-when-the-cloud-is-not-enough/"&gt;Data Centers: For When The Cloud is Not Enough&lt;/a&gt;”&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If I’ve said it once I’ve said it a thousand times: &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/03/18/control-choice-and-cost-the-conflict-in-the-cloud.aspx"&gt;control is a huge factor in the decision making process&lt;/a&gt; and &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InteroperabilityisnotPortabilityisnotMob_4F8B/cloud-cio-disruptors_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="cloud-cio-disruptors" border="0" alt="cloud-cio-disruptors" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InteroperabilityisnotPortabilityisnotMob_4F8B/cloud-cio-disruptors_thumb.png" width="311" height="344" /&gt;&lt;/a&gt;something that isn’t effectively offered by today’s public cloud computing offerings. Remember the Information week analytics Cloud computing survey in 2009? &lt;/p&gt;  &lt;p&gt;Even though security remains concern number one, control and configurability are on the top of the list, as well. The issue of control has almost always gone hand in hand with cloud adoption inhibitors, but it &lt;a href="http://blogs.eweek.com/masked_intentions/content/cloud_computing/fear_and_loathing_of_cloud_computing.html?kc=EWWHNEMNL02262009STR2"&gt;always takes a back seat to the more glamorous and scary “security” issue&lt;/a&gt;. These are not minor stumbling blocks in many cases, and the inability to rapidly adapt an infrastructure to meet growth and scale and make architectural changes, if necessary, are paramount to success. If cloud computing cannot provide the agility necessary to meet these challenges then it is logical to assume that organizations will either (a) stay in the local data center or (b) move to a local data center from the cloud when it becomes obvious the environment is inhibiting forward momentum. &lt;/p&gt;  &lt;p&gt;Current adoption patterns indicate that this is not an anomaly, but will instead likely become the norm for organizations. Applications that are initially deployed “in the cloud” will, upon becoming a critical business application or growing beyond the meager means of control and flexibility offered by the cloud, will &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InteroperabilityisnotPortabilityisnotMob_4F8B/cloudcontrol_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 10px 10px 10px 0px; display: inline; border-top: 0px; border-right: 0px" title="cloudcontrol" border="0" alt="cloudcontrol" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InteroperabilityisnotPortabilityisnotMob_4F8B/cloudcontrol_thumb.jpg" width="176" height="208" /&gt;&lt;/a&gt;migrate to the data center, where control and agility are provided by the simple fact that the organization can change at will any piece of the infrastructure – from its physical implementation to its logical organization – at will. This is evident in the percentage of organizations using cloud for “dev and test” but not for production. Clearly the economy of scale and rapidity of deployment makes the cloud a perfect environment for development and testing but not necessarily production. &lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;&lt;font color="#800000"&gt;ECONOMY of SCALE MAY be INHIBITING SCALE &lt;/font&gt;&lt;/strong&gt;&lt;/h3&gt;  &lt;h4&gt;The irony is that the economy of scale offered by cloud may well be biting cloud in the proverbial derrière as it becomes the inhibitor to effective scale by limiting or making extremely difficult the architectural changes necessary for an application to scale in a cloud environment.&lt;/h4&gt;  &lt;p&gt; At some point scalability can become not about the application but about its infrastructure and the way in which that infrastructure interacts. It can become about the network and its components and how applications end up interacting with and through that infrastructure. In a cloud computing environment it is rarely the case that a customer can impact that infrastructure and, when it can, it is then limited by other factors such as underlying virtualization technology and the &lt;em&gt;physical server infrastructure on &lt;/em&gt;which the application is ultimately deployed. If the answer to a scalability obstacle is more bandwidth and higher throughput, you can’t really add another NIC to a server in the cloud. That’s not your call. But it is if you’re in the data center, and it is &lt;em&gt;virtualization – &lt;/em&gt;not cloud - that ultimately provides the agility to make such a change and rapidly propagate that change across the application deployment. &lt;/p&gt;  &lt;p&gt;It isn’t always about costs. Well, okay, it &lt;em&gt;is&lt;/em&gt; about cost but in IT it’s about cost as it relates to performance, or flexibility, or other operational functionality required to successfully meet data center and business goals. When spending less on infrastructure results in higher operational costs, the organization really hasn’t saved money at all. Savvy CIO and CTOs understand that it’s not a battle, but a balancing act. It’s not about achieving the &lt;strong&gt;highest&lt;/strong&gt; economy of scale, but the &lt;strong&gt;best&lt;/strong&gt; economy of scale given the specific operational and business needs.&lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="100%"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="70%"&gt;         &lt;h3&gt;Related Posts&lt;/h3&gt;          &lt;ul&gt;           &lt;li&gt;&lt;a href="http://blogs.eweek.com/masked_intentions/content/cloud_computing/fear_and_loathing_of_cloud_computing.html"&gt;Fear and Loathing of Cloud Computing&lt;/a&gt;&lt;/li&gt;         &lt;/ul&gt;          &lt;p /&gt;          &lt;p&gt;from tag &lt;a href="http://del.icio.us/lmacvittie/control"&gt;control&lt;/a&gt;&lt;/p&gt;          &lt;div class="wlw_related_posts"&gt;           &lt;ul&gt;             &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/06/17/what-is-a-strategic-point-of-control-anyway.aspx"&gt;What is a Strategic Point of Control Anyway?&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/04/01/i-have-a-dream.aspx"&gt;I Have a Dream&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/22/the-three-reasons-hybrid-clouds-will-dominate.aspx"&gt;The Three Reasons Hybrid Clouds Will Dominate&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/06/09/the-infrastructure-2.0-trifecta.aspx"&gt;The Infrastructure 2.0 Trifecta&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/03/18/control-choice-and-cost-the-conflict-in-the-cloud.aspx"&gt;Control, choice, and cost: The Conflict in the Cloud&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/02/25/do-you-control-your-application-network-stack-you-should.aspx"&gt;Do you control your application network stack? You should.&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://blog.jamesurquhart.com/2008/11/in-cloud-computing-good-network-gives.html"&gt;The Wisdom of Clouds: In Cloud Computing, a Good Network Gives You Control...&lt;/a&gt;&lt;/li&gt;           &lt;/ul&gt; from tag &lt;a href="http://del.icio.us/lmacvittie/agility"&gt;agility&lt;/a&gt;            &lt;br /&gt;            &lt;ul&gt;             &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/05/26/f5-and-the-cloud.aspx"&gt;F5 and the Cloud&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/11/10/infrastructure-2.0-aligning-the-network-with-the-business-and-the.aspx"&gt;Infrastructure 2.0: Aligning the network with the business (and the rest of IT)&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/11/03/cloud-computing-its-the-destination-not-the-journey-that-is.aspx"&gt;Cloud Computing: It's the destination, not the journey that is important&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://www.baselinemag.com/c/a/Virtualization/State-Street-Puts-Agility-in-The-Fast-Lane/"&gt;State Street Puts Agility in The Fast Lane - Virtualization&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/02/22/knowing-is-half-the-battle.aspx"&gt;Knowing is Half the Battle&lt;/a&gt;&lt;/li&gt;           &lt;/ul&gt;           &lt;a href="http://del.icio.us/lmacvittie/agility"&gt;(more..)&lt;/a&gt;&lt;/div&gt;       &lt;/td&gt;        &lt;td valign="top" width="30%"&gt;         &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img border="0" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" /&gt;&lt;/a&gt; &lt;a href="http://www.friendfeed.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="friendfeed" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/friendfeed_3.jpg" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;          &lt;p&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;script type="text/javascript" src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355"&gt;&lt;/script&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;h3 class="wlw_related_posts"&gt;&lt;a href="http://del.icio.us/lmacvittie/agility"&gt;&lt;/a&gt;&lt;/h3&gt;  &lt;p class="wlw_related_posts"&gt;   &lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d9a69439-b41b-4932-beed-3ca1a9acd9ea" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/cloud+computing" rel="tag"&gt;cloud computing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/virtualization" rel="tag"&gt;virtualization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/scalability" rel="tag"&gt;scalability&lt;/a&gt;,&lt;a href="http://technorati.com/tags/control" rel="tag"&gt;control&lt;/a&gt;,&lt;a href="http://technorati.com/tags/architecture" rel="tag"&gt;architecture&lt;/a&gt;,&lt;a href="http://technorati.com/tags/agility" rel="tag"&gt;agility&lt;/a&gt;,&lt;a href="http://technorati.com/tags/infrastructure" rel="tag"&gt;infrastructure&lt;/a&gt;&lt;/div&gt;   &lt;p&gt; &lt;/p&gt;  &lt;p&gt;   &lt;/p&gt;&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/03/18/control-choice-and-cost-the-conflict-in-the-cloud.aspx"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1090202.aspx" width="1" height="1" /&gt;</description><pubDate>Sun, 25 Jul 2010 20:53:00 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/26/the-battle-of-economy-of-scale-versus-control-and-flexibility.aspx#comment</comments><slash:comments>1</slash:comments><dc:creator>Lori MacVittie</dc:creator></item><item><title>IT and Data: If Not Me, Then Who? If Not Now, Then When?</title><link>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/23/it-and-data-if-not-me-then-who-if-not.aspx</link><description>&lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;YES, IT IS ABOUT THE BUSINESS…&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;Over the years data archiving and backup technology have waxed and waned, growing closer and further away from each other as the needs of the enterprise, new technologies, and the external economic and regulatory environment have changed. There have been clear indications that the need for reliable backup and archiving of data was a growing regulatory requirement, yet it did nothing for the business, and that meant it was a hard-to-sell expense.&lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;BUT LET’S NOT GENERALIZE TOO MUCH.&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;Out in the TwitterSphere there are some thinkers starting to expound that we need more business analysts and less techs, and even a few saying that we should stop being technologists all together in IT. One has even suggested that we stop calling it IT and call it something more aligned with business. That way lies danger for all things infrastructure or IT focused. Back in the late 90s I was at a place where the Network Engineers had to sell an upgrade to a network segment. One that should have been upgraded long before their proposal. As an Enterprise Architect, I was involved in looking over what they did, reviewing the presentation, and helping them out. They had to fight tooth and nail to upgrade a segment that was years out of date, showing projections of usage and predicting a segment meltdown. Mind you that network segments, backups, lots of that stuff is not going anywhere… It is all part of the overhead that is IT, whether your IT is in the cloud or in your data center on physical servers and everywhere in between. It is also all technical. The usage on a network segment, which backup/replication/archive system to use, these things are decision points that require technical knowledge of the systems involved.&lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;REPLICATION AND ARCHIVE – COOPETITION?&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;But I digress. Back to the topic at hand, which is your data. When courts started slapping enterprises with penalties for “lost” email archives, and requirements for data retention in some industries started to go up, many started looking at long term archival again, but replication was just heating up, and we’re multi-tasking, but not that multi-tasking, these things were similar and happening at the same time. Replication could be sold to the business as disaster recovery, archival storage is risk management. Replication won. But with replication came a slew of “for long term storage” caveats – getting the most out of technology for the business, even when the business is resistant. Or perhaps to overcome the business’ resistance.&lt;/p&gt;  &lt;p&gt;Where does that leave us? Well, for many people, and against the advice of many others, replication is a key to both our short and long term data retention strategies… We need that replication to a remote site to go through so that we have short term DR capability, &lt;em&gt;and &lt;/em&gt;so that we have long term archival capability. Sometimes the archiving is done off the replica, sometimes it &lt;em&gt;is&lt;/em&gt; the replica, perhaps with some snapshotting. I won’t tell you this is just a bad idea, you know it, and if you’re using a replica as your archive, we’ll just assume it is due to the business environment you are operating in.&lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;IT’S GONNA GET WORSE.&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;We in IT are facing even more hurdles to infrastructure upgrades, and while in the nirvana of the future, your infrastructure needs may go down, the reality of today is that they’re going up. Those replicas, backups, and archives are going to be more important as the regulatory situation changes &lt;em&gt;yet again&lt;/em&gt; in the coming year, and the chances of you implementing something with no add to the business value of IT go down. One of the things that has been increasing over time, and cloud/SaaS increase is the burden on your Internet connection(s). The amount of data sent off site is going up, and these days the vast majority of us use our Internet connections to send nearly all data off-site. Trucks and tapes aren’t more secure, they’re not more reliable, and they’re certainly not faster, so Internet bits and bytes won. That means you need to get the most out of that pipe though, and for most organizations, &lt;em&gt;the most&lt;/em&gt; isn’t at all accurate in today’s usage scenario. &lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;WAN OPTIMIZATION HELPS&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;That’s why the resurgence of &lt;a href="http://www.f5.com/solutions/acceleration/wan-optimization/" target="_blank"&gt;WAN Optimization&lt;/a&gt;. We need to get the data to its destination as quickly as possible, as reliably as possible, and as inexpensively as possible. All while increasing the amount of data being transferred. With high performance WAN Optimization you can put off making a never-ending investment in more bandwidth. Which adds up quickly if you have to pay by the month for increased bandwidth, considering that T3 to OC3 prices are a huge multiple – around 5x the monthly fees – anything that helps you defer the need to perform an upgrade that will cost you thousands of dollars – or more – per month is worth checking out. And that’s without the equipment and service costs.&lt;/p&gt;  &lt;p&gt;And with WAN Optimization, you’re benefitting all applications that run through it, not just making replication more reliable and secure, which makes it easier to sell to the business. And there’s always that chance that by installing WAN Optimization you can reduce your remote datacenter bandwidth needs, which could result in an immediate cost savings. Not that I expect this to be typical, but the bandwidth reduction WAN Optimization offers makes it possible, particularly if you’re barely into the next size of pipe.&lt;/p&gt;  &lt;p&gt;Buying more bandwidth is always an option, but like so many things in IT, it is a high-cost, every month expense, so exploring options that can optimize your connection and reduce or defer upgrades – yes, like our &lt;a href="http://www.f5.com/products/big-ip/product-modules/wan-optimization-module.html" target="_blank"&gt;WOM&lt;/a&gt; product, but I’m talking more generally – should be on your checklist before you sign that contract. After all, if not you, then who? If not now, then when?&lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;INTERNET RESEARCH LESSONS&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;Funny bit about this title, I’ve known of this phrase since I was a kid, and researching it now, it seems to have no actual progenitor. Many believe it is a modification of the famous quote by Hillel the Elder, but it gets a lot of attribution, including a rapper and Gorbachev – both of which came to prominence after I learned of the phrase. So you can claim it if you want! &lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:55d50742-784c-4247-a7e4-47ea7c82926c" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Data+Replication" rel="tag"&gt;Data Replication&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WAN+Optimization" rel="tag"&gt;WAN Optimization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Bandwidth" rel="tag"&gt;Bandwidth&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Backup" rel="tag"&gt;Backup&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Data+Archiving" rel="tag"&gt;Data Archiving&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+WOM" rel="tag"&gt;F5 WOM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+Networks" rel="tag"&gt;F5 Networks&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Don+MacVittie" rel="tag"&gt;Don MacVittie&lt;/a&gt;&lt;/div&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p align="right"&gt;&lt;a href="http://twitter.com/dmacvittie" target="_blank"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/Rss.aspx" target="_blank"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/don.macvittie" target="_blank"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="right"&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fdmacvittie%2FRss.aspx&amp;amp;t1=" target="_blank"&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Related Articles and Blogs&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.technewsworld.com/story/64582.html?wlc=1279823612" target="_blank"&gt;WAN Optimization: Getting the Most Bang For the Buck&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.cost-of-t1-line.com/" target="_blank"&gt;How Much is a T1 Line?&lt;/a&gt; (dated info on t1 and larger, well documented)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/22/zombies-this-yearrsquos-vampires-are-zombies.aspx" target="_blank"&gt;Zombies! This Years’ Vampires Are Zombies!&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://devcentral.f5.com/weblogs/dmacvittie/aggbug/1090200.aspx" width="1" height="1" /&gt;</description><pubDate>Fri, 23 Jul 2010 00:59:54 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/23/it-and-data-if-not-me-then-who-if-not.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Don MacVittie</dc:creator></item><item><title>F5 Friday: Beyond the VPN to VAN</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/23/f5-friday-beyond-the-vpn-to-van.aspx</link><description>&lt;p&gt;&lt;em&gt;Web 2.0 and &lt;a title="" href="http://www.f5.com/solutions/cloud-computing" rel=""&gt;cloud computing &lt;/a&gt; have naturally pushed all things toward application-centric views, why not the VPN? &lt;/em&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayBeyondVPNtoVPAN_498E/f5friday_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="f5friday" border="0" alt="f5friday" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayBeyondVPNtoVPAN_498E/f5friday_thumb.png" width="240" height="86" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;h4&gt;When SSL VPNs were first introduced they were a welcome alternative to the traditional IPSEC VPN because they reduced the complexity involved with providing robust, secure remote access to corporate resources for externally located employees. &lt;/h4&gt;  &lt;p&gt;Early on SSL VPNs were fairly simple – allowing access to just about everything on the corporate network to authenticated users. It soon became apparent this was not acceptable for several reasons, most prominently standing out the risk of infection by remote employees who might have been using personal technology to work from home. While most organizations have no issue with any employee working a few extra hours at home, those few extra hours of productivity can be&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayBeyondVPNtoVPAN_498E/mobile-user_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="mobile-user" border="0" alt="mobile-user" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayBeyondVPNtoVPAN_498E/mobile-user_thumb.png" width="193" height="170" /&gt;&lt;/a&gt; easily offset by the need to clean up after a virus or bot entering the corporate network from an unsecured, non-validated remote source. This was especially true as one of the selling points for SSL VPN was (and still is) that it could be used from any endpoint. The “clientless” nature of SSL VPN made it possible to use a public kiosk to log-in to corporate resources via an SSL VPN without fear that the ability to do so would be “left behind.” I’m not really all that sure this option was ever widely used, but it was an option. &lt;/p&gt;  &lt;p&gt;Then SSL VPNs got more intelligent. They were able to provide endpoint security and policies such that an “endpoint”, whether employee or corporate owned, had to meet certain criteria – including being “clean” – before it was allowed access to any corporate resource. This went hand in hand with the implementation of graded authentication, which determined access rights and authorization levels based on context: location, device, method of access, etc… That’s where we sat for a number of years. There were updates and upgrades and additions to functionality but nothing major about the solution changed. &lt;/p&gt;  &lt;p&gt;Until recently. See, the advent of cloud computing and the increasing number of folks who would  like to “work from home” if not as a matter of course then as a benefit occasionally has been driving all manner of solutions toward a more application-centric approach and a more normalized view of access to those applications. As more and more applications have become “webified” it’s made less sense over time to focus on securing remote access to the corporate &lt;em&gt;network&lt;/em&gt; and more sense to focus on access to corporate &lt;em&gt;applications&lt;/em&gt; – wherever they might be deployed. &lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;&lt;font color="#800000"&gt;THE NEXT GENERATION of ACCESS CONTROL &lt;/font&gt;&lt;/strong&gt;&lt;/h3&gt;  &lt;h4&gt;That change in focus has led to what should be the next step in the evolution of remote access – from SSL VPN to secure access management, to managing application access by policy across &lt;em&gt;all &lt;/em&gt;users regardless of where they might be located. &lt;/h4&gt;  &lt;p&gt;Similarly, it shouldn’t matter whether corporate applications are “in the cloud” or “in the data center”. A consistent method of managing access to applications across all deployment locations and all users reduces the complexity inherent in managing both sides of the equation. &lt;/p&gt;  &lt;p&gt;We might even call this a Virtual &lt;strong&gt;Application&lt;/strong&gt; Network (VAN) instead of a Virtual Private Network (VPN) because what I’m suggesting is that we create a “network” of applications that is secured by a combination of transport layer security (SSL) and controlled by context-based access management at the application layer. Whether a user is on the corporate LAN or dialed-in from some remote location that has yet to see deployment of broadband access shouldn’t matter. The pre-access validation that the accessing system is “clean” is just as important today when the system is local as if it were remote; viruses and bots and malware don’t make the distinction between them, why should you? &lt;/p&gt;  &lt;p&gt;By centralizing application access across users and locations, such secure access methodologies can be used to extend control over applications that may be deployed in a cloud computing environment as well. Part of &lt;a href="http://www.f5.com"&gt;F5’s&lt;/a&gt; position on cloud computing is that many of the solutions that will be required to make cloud-deployed applications viable is that the control that exists today over locally deployed applications must be extended somehow to those remote applications as a means to normalize management and security as well as controlling the costs of leveraging what is supposed to be a reduced cost environment. &lt;/p&gt;  &lt;p&gt;That’s part of the promise of &lt;a title="F5 Networks" href="http://www.f5.com/" rel="" target="_blank"&gt;F5&lt;/a&gt;’s BIG-IP &lt;a href="http://www.f5.com/products/big-ip/product-modules/access-policy-manager.html"&gt;Access Policy Manager (APM)&lt;/a&gt;. It’s the next step in secure remote access that combines years of SSL VPN (&lt;a href="http://www.f5.com/products/firepass/"&gt;FirePass&lt;/a&gt;) experience with our inherent application-aware delivery infrastructure. It provides the means by which access to corporate applications can be normalized across users and application environments without compromising on security and control. And it’s context-aware because it’s integrated into F5’s core enabling technology platform, &lt;a href="http://www.f5.com/products/technologies/tmos/"&gt;TMOS&lt;/a&gt;, upon which almost all other application delivery functionality is based and deployed. &lt;/p&gt;  &lt;p&gt;I highly encourage a quick read of &lt;a href="http://devcentral.f5.com/weblogs/watkins/Default.aspx"&gt;George Watkin’s&lt;/a&gt; latest blog on the topic, &lt;a href="http://devcentral.f5.com/weblogs/watkins/archive/2010/07/19/securing-the-corporate-intranet-with-access-policy-manager.aspx"&gt;Securing the Corporate Intranet with Access Policy Manager&lt;/a&gt;, in which he details the solution and some good reasons behind why you’d want to do such a thing (in case I’m not convincing enough for you). You may also enjoy a dive into a solution presented in a previous F5 Friday, “&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/05/14/f5-friday-never-outsource-control.aspx"&gt;F5 Friday: Never Outsource Control&lt;/a&gt;”, that describes an architectural approach to extending normalized control of application access to the cloud. &lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="100%"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="70%"&gt;         &lt;h3&gt;Related Posts&lt;/h3&gt;          &lt;ul&gt;           &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/category/1084420.aspx"&gt;All F5 Friday Entries on DevCentral&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/04/09/the-other-hybrid-cloud-architecture.aspx"&gt;The Other Hybrid Cloud Architecture&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/22/the-three-reasons-hybrid-clouds-will-dominate.aspx"&gt;The Three Reasons Hybrid Clouds Will Dominate&lt;/a&gt; &lt;/li&gt;         &lt;/ul&gt;          &lt;div class="wlw_related_posts"&gt;from tag &lt;a href="http://del.icio.us/lmacvittie/VPN"&gt;VPN&lt;/a&gt;             &lt;br /&gt;&lt;/div&gt;          &lt;div class="wlw_related_posts"&gt;           &lt;ul&gt;             &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/08/26/the-virtual-public-private-cloud-connection.aspx"&gt;The Virtual Public-Private Cloud Connection&lt;/a&gt; &lt;/li&gt;           &lt;/ul&gt;         &lt;/div&gt; from tag &lt;a href="http://del.icio.us/lmacvittie/APM"&gt;APM&lt;/a&gt;           &lt;br /&gt;          &lt;ul&gt;           &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/04/20/i-find-your-lack-of-win-disturbing.aspx"&gt;I Find Your Lack of Win Disturbing&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/02/19/the-days-of-ip-based-management-are-numbered.aspx"&gt;The days of IP-based management are numbered&lt;/a&gt; &lt;/li&gt;         &lt;/ul&gt; from tag &lt;a href="http://del.icio.us/lmacvittie/SSL"&gt;SSL&lt;/a&gt;           &lt;br /&gt;          &lt;ul&gt;           &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/23/stopping-push-do-trojan.aspx"&gt;Turning the Pushdo Bot Into the Push-oh-no-you-don’t Bot&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/06/16/virtual-network-infrastructure-virtually-good-enough.aspx"&gt;Virtual Network Infrastructure: Virtually Good Enough?&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/02/03/wils-ssl-tps-versus-http-tps-over-ssl.aspx"&gt;WILS: SSL TPS versus HTTP TPS over SSL&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/05/21/f5-friday-secure-scalable-and-fast-vmware-view-deployment.aspx"&gt;F5 Friday: Secure, Scalable and Fast VMware View Deployment&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/03/24/hardware-acceleration-critical-component-for-cost-conscious-data-centers.aspx"&gt;Hardware Acceleration Critical Component for Cost-Conscious Data Centers&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/10/22/wils-why-does-load-balancing-improve-application-performance.aspx"&gt;WILS: Why Does Load Balancing Improve Application Performance?&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/01/19/sans-top-25-epic-fail-cwe-319.aspx"&gt;SANS Top 25 Epic Fail: CWE-319&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/17/google-spdy-protocol-would-require-mass-change-in-infrastructure.aspx"&gt;Google SPDY Protocol Would Require Mass Change in Infrastructure&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/05/12/network-security-does-not-imply-application-or-database-security.aspx"&gt;Network Security Does Not Imply Application or Database Security&lt;/a&gt; &lt;/li&gt;         &lt;/ul&gt;         &lt;a href="http://del.icio.us/lmacvittie/SSL"&gt;(more..)&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="30%"&gt;         &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img border="0" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" /&gt;&lt;/a&gt; &lt;a href="http://www.friendfeed.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="friendfeed" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/friendfeed_3.jpg" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;          &lt;p&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;script type="text/javascript" src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355"&gt;&lt;/script&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p /&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8d11b0d4-0ce0-4d27-9c81-69fee5779ed1" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+Friday" rel="tag"&gt;F5 Friday&lt;/a&gt;,&lt;a href="http://technorati.com/tags/APM" rel="tag"&gt;APM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SSL" rel="tag"&gt;SSL&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VPN" rel="tag"&gt;VPN&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SSL+VPN" rel="tag"&gt;SSL VPN&lt;/a&gt;,&lt;a href="http://technorati.com/tags/remote+access" rel="tag"&gt;remote access&lt;/a&gt;,&lt;a href="http://technorati.com/tags/cloud+computing" rel="tag"&gt;cloud computing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Firepass" rel="tag"&gt;Firepass&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application+access" rel="tag"&gt;application access&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1090199.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 22 Jul 2010 19:23:16 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/23/f5-friday-beyond-the-vpn-to-van.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Lori MacVittie</dc:creator></item><item><title>DevCentral Weekly Podcast 141 - #CameraFail</title><link>http://devcentral.f5.com/weblogs/dcpodcast/archive/2010/07/22/devcentral-weekly-podcast-141-camera-fail.aspx</link><description>&lt;a href="http://devcentral.f5.com/media/audio/20100722-F5DevCentralPodcast-141.mp3"&gt; &lt;/a&gt;   &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" align="center"&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="320" height="260" id="utv279708" name="utv_n_218532"&gt;&lt;param name="flashvars" value="autoplay=false" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="src" value="http://www.ustream.tv/flash/video/8443273" /&gt;&lt;embed flashvars="autoplay=false" width="320" height="260" allowfullscreen="true" allowscriptaccess="always" id="utv279708" name="utv_n_218532" src="http://www.ustream.tv/flash/video/8443273" type="application/x-shockwave-flash" /&gt;&lt;/object&gt;&lt;/td&gt;        &lt;td&gt;   &lt;/td&gt;        &lt;td valign="top"&gt;&lt;img align="right" src="http://devcentral.f5.com/podcast/DC4-Podcast.jpg" width="90" height="90" /&gt;Welcome to the one hundred and fortieth edition of the DevCentral Weekly Roundtable Podcast!  A weekly recap of the interesting things that have been going on within the DevCentral community.           &lt;br /&gt;          &lt;br /&gt;Hosts: &lt;a href="http://devcentral.f5.com/weblogs/cwalker"&gt;Colin Walker&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/watkins"&gt;George Watkins&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/jason"&gt;Jason Rahm&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/jeffb"&gt;Jeff Browning&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/joe"&gt;Joe Pruitt&lt;/a&gt;, and &lt;a href="http://devcentral.f5.com/weblogs/scott"&gt;Scott Koon&lt;/a&gt;.           &lt;p&gt;In this weeks podcast we discussed &lt;a href="http://devcentral.f5.com/weblogs/dctv/archive/2010/07/22/colin-and-jeff-discuss-their-trip-to-japan.aspx"&gt;Jeff and Colin’s trip to Japan&lt;/a&gt; where they threw down some #camerafail, the &lt;a href="http://devcentral.f5.com/weblogs/dctv/Tags/TechFieldDay/default.aspx"&gt;Gestalt IT Tech Field Day at F5 last week&lt;/a&gt; (where we recorded sessions on &lt;a href="http://devcentral.f5.com/weblogs/dctv/archive/2010/07/15/f5-tech-field-day-ndash-intro-to-f5-as-a.aspx"&gt;F5&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/dctv/archive/2010/07/15/f5-tech-field-day-ndash-orchestration-of-vmware-vmotion-over.aspx"&gt;VMWare Orchestration&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/dctv/archive/2010/07/15/f5-tech-field-day-tales-from-the-woods-with.aspx"&gt;API’s in the Woods&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/dctv/archive/2010/07/15/f5-tech-field-day-ndash-security-compliance-and-access-control.aspx"&gt;Security&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/dctv/archive/2010/07/15/f5-tech-field-day-ndash-storage-optimization-and-a-practical.aspx"&gt;Storage Optimization&lt;/a&gt;, and the &lt;a href="http://devcentral.f5.com/weblogs/dctv/archive/2010/07/15/f5-tech-field-day-ndash-delegate-roundtable.aspx"&gt;Delegate Roundtable&lt;/a&gt;), &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/50/afv/topic/aft/1174147/aff/5/showtab/groupforums/Default.aspx"&gt;iRules breaking the world,&lt;/a&gt; &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/50/afv/topic/aft/1174171/aff/5/showtab/groupforums/Default.aspx"&gt;HTTP Version in redirects&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/22/the-crayola-network.aspx"&gt;Coloring some Bits&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/watkins/archive/2010/07/19/securing-the-corporate-intranet-with-access-policy-manager.aspx"&gt;Securing the Corporate Intranet with APM&lt;/a&gt;, and &lt;a href="http://devcentral.f5.com/weblogs/Joe/archive/2010/07/21/searching-devcentral-just-got-easier.aspx"&gt;OpenSearch on DevCentral&lt;/a&gt;.&lt;/p&gt;          &lt;p&gt;All of the links from this recording can be found with the &lt;a href="http://delicious.com/devcentral/dcpodcast141"&gt;dcpodcast141&lt;/a&gt; tag at Delicious.com.  You can also watch the video recording from our &lt;a href="http://www.ustream.tv/channel/dcpodcast"&gt;UStream.TV channel&lt;/a&gt;: &lt;a href="http://www.ustream.tv/recorded/8443273"&gt;DevCentral Podcast 141&lt;/a&gt;.&lt;/p&gt;          &lt;div id="dcpc141player" align="center" width="100%"&gt;&lt;a href="http://www.macromedia.com/go/getflashplayer"&gt;Get the Flash Player&lt;/a&gt; to see this player. &lt;/div&gt;          &lt;div align="center" width="100%"&gt;&lt;script language="javascript"&gt;&lt;!--

generateMP3Player("dcpc141player", "20100722-F5DevCentralPodcast-141.mp3");
//--&gt;&lt;/script&gt;&lt;/div&gt;          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1d934a7d-1ae5-4e76-8f99-e52f60b10ba9" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Japan" rel="tag"&gt;Japan&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VMWare" rel="tag"&gt;VMWare&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Orchestration" rel="tag"&gt;Orchestration&lt;/a&gt;,&lt;a href="http://technorati.com/tags/APIs" rel="tag"&gt;APIs&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Security" rel="tag"&gt;Security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Storage+Optimization" rel="tag"&gt;Storage Optimization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HTTP" rel="tag"&gt;HTTP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Intranet" rel="tag"&gt;Intranet&lt;/a&gt;,&lt;a href="http://technorati.com/tags/APM" rel="tag"&gt;APM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/OpenSearch" rel="tag"&gt;OpenSearch&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin+Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;,&lt;a href="http://technorati.com/tags/George+Watkins" rel="tag"&gt;George Watkins&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jason+Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jeff+Browning" rel="tag"&gt;Jeff Browning&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Joe+Pruitt" rel="tag"&gt;Joe Pruitt&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Scott+Koon" rel="tag"&gt;Scott Koon&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/dcpodcast/aggbug/1090198.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 22 Jul 2010 06:17:29 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dcpodcast/archive/2010/07/22/devcentral-weekly-podcast-141-camera-fail.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral Weekly Podcast</dc:creator></item><item><title>Colin And Jeff Discuss Their Trip To Japan</title><link>http://devcentral.f5.com/weblogs/dctv/archive/2010/07/22/colin-and-jeff-discuss-their-trip-to-japan.aspx</link><description>&lt;table border="0" cellpadding="5"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="386" id="utv292015" name="utv_n_37338"&gt;&lt;param name="flashvars" value="autoplay=false" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="src" value="http://www.ustream.tv/flash/video/8441187" /&gt;&lt;embed flashvars="autoplay=false" width="480" height="386" allowfullscreen="true" allowscriptaccess="always" id="utv292015" name="utv_n_37338" src="http://www.ustream.tv/flash/video/8441187" type="application/x-shockwave-flash" /&gt;&lt;/object&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Joe sat down with Jeff and Colin and took a few minutes to discuss their recent trip to visit our team in Tokyo, Japan.  &lt;br /&gt;          &lt;br /&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dctv/WindowsLiveWriter/ColinAndJeffDiscussTheirTripToJapan_B655/blowfish_2.jpg"&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 10px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="blowfish" border="0" alt="blowfish" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dctv/WindowsLiveWriter/ColinAndJeffDiscussTheirTripToJapan_B655/blowfish_thumb.jpg" width="92" height="82" /&gt;&lt;/a&gt; Listen in and hear about a recap of the meetings they were involved with – including an awesome event with the DevCentral User Group.  &lt;br /&gt;          &lt;br /&gt;You will also get a taste of what they &lt;a href="http://www.google.com/images?q=blowfish&amp;amp;um=1&amp;amp;ie=UTF-8&amp;amp;source=univ&amp;amp;ei=_qFITI_0NpHCsAOkkZRJ&amp;amp;sa=X&amp;amp;oi=image_result_group&amp;amp;ct=title&amp;amp;resnum=4&amp;amp;ved=0CD0QsAQwAw&amp;amp;biw=1207&amp;amp;bih=867"&gt;dined on&lt;/a&gt; while they were there.           &lt;br /&gt;          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b85fa81d-50b5-41ef-a119-cd0cecc40a0d" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Tokyo" rel="tag"&gt;Tokyo&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Japan" rel="tag"&gt;Japan&lt;/a&gt;,&lt;a href="http://technorati.com/tags/User+Group" rel="tag"&gt;User Group&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jeff+Browning" rel="tag"&gt;Jeff Browning&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin+Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Joe+Pruitt" rel="tag"&gt;Joe Pruitt&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/dctv/aggbug/1090196.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 22 Jul 2010 03:58:59 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dctv/archive/2010/07/22/colin-and-jeff-discuss-their-trip-to-japan.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral TV</dc:creator></item><item><title>F5 Application Designer: Health Based Load Balancing</title><link>http://devcentral.f5.com/weblogs/jbalog/archive/2010/07/22/f5-application-designer-health-based-load-balancing.aspx</link><description>&lt;p&gt;With the release of the F5 Management Pack v2.1.2 (available for download &lt;a target="_blank" href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/54/afv/topic/aft/1174176/aff/2301/showtab/groupforums/Default.aspx"&gt;here&lt;/a&gt;) the F5 Application Designer extensibility framework has been updated to support various load-balancing scenarios, based on health and performance monitoring conditions of the applications monitored to System Center Operations Manager (SCOM).&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;1. The F5 Application Designer Extensions: a Quick Overview&lt;/h2&gt;
&lt;p&gt;The F5 Application Designer Extensions are application specific management packs built on top of the core F5 Management Pack. They provide holistic monitoring and auto-configuration support for various server platforms and application environments fronted by F5 devices (such as IIS 7, SharePoint 2007/2010, VMM Server 2008/R2). The traditional way of monitoring all these applications in System Center Operations Manager usually would be mostly scoped to the individual platform itself rather than a unified health monitoring view of the whole application environment.&lt;/p&gt;
&lt;p&gt;Here’s where the F5 Application Designers come into play and wire the applications together into a unified health monitoring diagram, as “Application Instances”, enabling a more comprehensive view of the applications’ health in System Center Operations Manager.&lt;/p&gt;
&lt;p&gt;With the F5 Application Designer extensions, the F5 LTM Pool Members are paired with their related application components (such as Windows servers, Web servers, Virtual servers, SharePoint servers, etc) and the resulting object hierarchies are wired together as “Application Instances” grouped within an “Application Instance Group”, which ultimately is paired with the related F5 LTM Virtual Server, making up the “Overall Application” monitoring object. Such an application can be for example the entire deployment of an e-commerce web-farm, monitored within System Center Operations Manager.&lt;/p&gt;
&lt;p&gt;The health of the App Instance by default represents the worst health of any of it's member components. In turn, the overall Application's health depends on at least one of the App Instances being healthy as well as the health of the underlying LTM Virtual Server.&lt;/p&gt;
&lt;p&gt;More information on F5 Application Designer Extensions related topics can be found here:&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2" border="0" width="1009"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="283" valign="top"&gt;Application Designer Library:&lt;/td&gt;
            &lt;td width="722" valign="top"&gt;&lt;a href="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/ApplicationDesigner.html" title="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/ApplicationDesigner.html"&gt;http://devcentral.f5.com/wiki/default.aspx/MgmtPack/ApplicationDesigner.html&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="283" valign="top"&gt;Holistic Monitoring and Auto Configuration using the F5 Management Pack and IIS 7:&lt;/td&gt;
            &lt;td width="722" valign="top"&gt;&lt;a href="http://devcentral.f5.com/weblogs/jhendrickson/archive/2010/04/23/holistic-monitoring-and-auto-configuration-using-the-f5-management-pack.aspx" title="http://devcentral.f5.com/weblogs/jhendrickson/archive/2010/04/23/holistic-monitoring-and-auto-configuration-using-the-f5-management-pack.aspx"&gt;http://devcentral.f5.com/weblogs/jhendrickson/archive/2010/04/23/holistic-monitoring-and-auto-configuration-using-the-f5-management-pack.aspx&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;2. Health Based Load Balancing - Overview&lt;/h2&gt;
&lt;p&gt;In this article (which is part of a series on similar topics), I'll talk about the F5 Application Designer Extensions and their use in providing intelligent monitoring decisions within the System Center Operations Manager, in various data-center-specific scenarios. In particular: the health-based load balancing, where F5 LTM Pool Members get enabled/disabled depending on the health of various applications monitored.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; Enable / Disable LTM Pool Member based on application specific health-monitor state change&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use Case:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Trigger an Error health-state for an IIS 7 specific monitor (IIS 7 Application Pool) by stopping the Default Application Pool on the IIS Server hosted on LTM Pool Member 1 &lt;/li&gt;
    &lt;li&gt;See the related (hosting) App Instance health state turn red / Error &lt;/li&gt;
    &lt;li&gt;See the related LTM Pool Member (1) health state turn red / Error &lt;/li&gt;
    &lt;li&gt;Load balancing follows LTM Pool Member 2 &lt;/li&gt;
    &lt;li&gt;Resume the Success health-state for the IIS 7 monitor (IIS 7 Application Pool) by starting the Default Application Pool on the IIS Server hosted on LTM Pool Member 1 &lt;/li&gt;
    &lt;li&gt;See the related (hosting) App Instance health state turn green / Success &lt;/li&gt;
    &lt;li&gt;See the related LTM Pool Member (1) health state turn green / Success &lt;/li&gt;
    &lt;li&gt;Load balancing follows LTM Pool Members 1 and 2. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;3. Prerequisites&lt;/h2&gt;
&lt;ul&gt;
    &lt;li&gt;Install the F5 Management Pack (&lt;a href="http://devcentral.f5.com/mpack"&gt;http://devcentral.f5.com/mpack&lt;/a&gt;) &lt;/li&gt;
    &lt;li&gt;Windows Server 2008 Internet Information Services 7 management pack (MS System Center catalog) &lt;/li&gt;
    &lt;li&gt;System Center Virtual Machine Manager 2008 R2 management pack (MS System Center catalog) &lt;/li&gt;
    &lt;li&gt;Windows Server 2008 Operating System (Discovery) management pack (MS System Center catalog) &lt;/li&gt;
    &lt;li&gt;F5 Application Designer Library extension packs (&lt;a href="http://devcentral.f5.com/mpack"&gt;http://devcentral.f5.com/mpack&lt;/a&gt;): &lt;/li&gt;
    &lt;li&gt;Core App Designer: &lt;a href="http://devcentral.f5.com/LinkClick.aspx?link=http://devcentral.f5.com/downloads/MgmtPack/Setup/F5.ApplicationDesigner.Common-2.0.0.516.zip&amp;amp;tabid=73&amp;amp;mid=3221"&gt;Common Library&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;IIS App Designer: &lt;a href="http://devcentral.f5.com/LinkClick.aspx?link=+http://devcentral.f5.com/downloads/MgmtPack/Setup/F5.ApplicationDesigner.IIS.2008-2.0.0.516.zip&amp;amp;tabid=73&amp;amp;mid=3221"&gt;Microsoft Internet Information Server 2008&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;4. Preparation&lt;/h2&gt;
&lt;ul&gt;
    &lt;li&gt;Discover F5 device (with at least 1 LTM Virtual Server and 2 LTM Pool Members) &lt;/li&gt;
    &lt;li&gt;Discover IIS 7 web servers (expected to run on the LTM Pool Members discovered above) &lt;/li&gt;
    &lt;li&gt;Discover overall application deployment (F5 + IIS 7) (see details &lt;a href="http://devcentral.f5.com/weblogs/jhendrickson/archive/2010/04/23/holistic-monitoring-and-auto-configuration-using-the-f5-management-pack.aspx"&gt;here&lt;/a&gt;): &lt;/li&gt;
    &lt;li&gt;Look for the topic on “discovering an existing application” (&lt;a href="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/ApplicationDesigner.html"&gt;here&lt;/a&gt;) &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;5. Scenario&lt;/h2&gt;
&lt;ul&gt;
    &lt;li&gt;Trigger an Error health-state for an IIS 7 specific monitor (IIS 7 Application Pool) by stopping the Default Application Pool on the IIS Server hosted on LTM Pool Member 1 &lt;/li&gt;
    &lt;li&gt;See the related (hosting) App Instance health state turn red / Error &lt;/li&gt;
    &lt;li&gt;See the related LTM Pool Member (1) health state turn red / Error &lt;/li&gt;
    &lt;li&gt;Load balancing follows LTM Pool Member 2 &lt;/li&gt;
    &lt;li&gt;Resume the Success health-state for the IIS 7 monitor (IIS 7 Application Pool) by starting the Default Application Pool on the IIS Server hosted on LTM Pool Member 1 &lt;/li&gt;
    &lt;li&gt;See the related (hosting) App Instance health state turn green / Success &lt;/li&gt;
    &lt;li&gt;See the related LTM Pool Member (1) health state turn green / Success &lt;/li&gt;
    &lt;li&gt;Load balancing follows LTM Pool Members 1 and 2. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;6. Resources&lt;/h2&gt;
&lt;table cellspacing="0" cellpadding="2" border="0" width="800"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="212" valign="top"&gt;&lt;strong&gt;Video tutorials:&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="584" valign="top"&gt;&lt;a href="http://www.vimeo.com/13548421" title="http://vimeo.com/13548421"&gt;http://www.vimeo.com/13548421&lt;/a&gt; (Health Based Load Balancing Scenario - Overview)  &lt;br /&gt;
            &lt;a href="http://www.vimeo.com/13523437" title="http://www.vimeo.com/13523437"&gt;http://www.vimeo.com/13523437&lt;/a&gt; (Health Based Load Balancing Scenario)&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="212" valign="top"&gt;&lt;strong&gt;PowerPoint presentation:&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="584" valign="top"&gt;
            &lt;div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:79f6e740-adc7-4962-ab87-0f4cd7647612" style="padding: 0px; margin: 0px; display: inline;"&gt;
            &lt;p&gt; &lt;a target="_blank" href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/F5ApplicationDesignerHealthBasedLoadBala_AC0C/health-based-load-balancing-scenario.pptx"&gt;health-based-load-balancing-scenario.pptx&lt;/a&gt;&lt;/p&gt;
            &lt;/div&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;&lt;img src="http://devcentral.f5.com/weblogs/jbalog/aggbug/1090194.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 22 Jul 2010 03:22:52 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/jbalog/archive/2010/07/22/f5-application-designer-health-based-load-balancing.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Julian Balog</dc:creator></item><item><title>F5 Application Designer: Load Balancing Scenarios</title><link>http://devcentral.f5.com/weblogs/jbalog/archive/2010/07/22/f5-application-designer-load-balancing-scenarios.aspx</link><description>&lt;p&gt;With the release of the F5 Management Pack v2.1.2 (available for download &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/54/afv/topic/aft/1174176/aff/2301/showtab/groupforums/Default.aspx" target="_blank"&gt;here&lt;/a&gt;) the F5 Application Designer extensibility framework has been updated to support various load-balancing scenarios, based on health and performance monitoring conditions of the applications monitored to System Center Operations Manager (SCOM).&lt;/p&gt;
&lt;h2&gt;1. The F5 Application Designer Extensions: a Quick Overview&lt;/h2&gt;
&lt;p&gt;The F5 Application Designer Extensions are application specific management packs built on top of the core F5 Management Pack. They provide holistic monitoring and auto-configuration support for various server platforms and application environments fronted by F5 devices (such as IIS 7, SharePoint 2007/2010, VMM Server 2008/R2). The traditional way of monitoring all these applications in System Center Operations Manager usually would be mostly scoped to the individual platform itself rather than a unified health monitoring view of the whole application environment.&lt;/p&gt;
&lt;p&gt;Here’s where the F5 Application Designers come into play and wire the applications together into a unified health monitoring diagram, as “Application Instances”, enabling a more comprehensive view of the applications’ health in System Center Operations Manager.&lt;/p&gt;
&lt;p&gt;With the F5 Application Designer extensions, the F5 LTM Pool Members are paired with their related application components (such as Windows servers, Web servers, Virtual servers, SharePoint servers, etc) and the resulting object hierarchies are wired together as “Application Instances” grouped within an “Application Instance Group”, which ultimately is paired with the related F5 LTM Virtual Server, making up the “Overall Application” monitoring object. Such an application can be for example the entire deployment of an e-commerce web-farm, monitored within System Center Operations Manager.&lt;/p&gt;
&lt;p&gt;The health of the App Instance by default represents the worst health of any of it's member components. In turn, the overall Application's health depends on at least one of the App Instances being healthy as well as the health of the underlying LTM Virtual Server.&lt;/p&gt;
&lt;p&gt;More information on F5 Application Designer Extensions related topics can be found here:&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2" border="0" width="1009"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="283" valign="top"&gt;Application Designer Library&lt;/td&gt;
            &lt;td width="722" valign="top"&gt;&lt;a title="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/ApplicationDesigner.html" href="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/ApplicationDesigner.html"&gt;http://devcentral.f5.com/wiki/default.aspx/MgmtPack/ApplicationDesigner.html&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="283" valign="top"&gt;Holistic Monitoring and Auto Configuration using the F5 Management Pack and IIS 7&lt;/td&gt;
            &lt;td width="722" valign="top"&gt;&lt;a title="http://devcentral.f5.com/weblogs/jhendrickson/archive/2010/04/23/holistic-monitoring-and-auto-configuration-using-the-f5-management-pack.aspx" href="http://devcentral.f5.com/weblogs/jhendrickson/archive/2010/04/23/holistic-monitoring-and-auto-configuration-using-the-f5-management-pack.aspx"&gt;http://devcentral.f5.com/weblogs/jhendrickson/archive/2010/04/23/holistic-monitoring-and-auto-configuration-using-the-f5-management-pack.aspx&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;2. Load Balancing Scenarios&lt;/h2&gt;
&lt;p&gt;With this article we initiate a series of presentations centered around various Data Center Orchestration scenarios, where the F5 App Designer extensions not only help with the overall health monitoring of a complex application environment, but also provide automatic intelligent decisions based on certain health and performance monitor triggers.&lt;/p&gt;
&lt;p&gt;Here's a brief overview on some of these scenarios (use cases).&lt;/p&gt;
&lt;h3&gt;2.1. Health Based Load Balancing (Scenario #1)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; Enable / Disable LTM Pool Member based on application specific health-monitor state change&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use Case:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Trigger an Error health-state for an IIS 7 specific monitor (IIS 7 Application Pool) by stopping the Default Application Pool on the IIS Server hosted on LTM Pool Member 1&lt;/li&gt;
    &lt;li&gt;See the related (hosting) App Instance health state turn red / Error&lt;/li&gt;
    &lt;li&gt;See the related LTM Pool Member (1) health state turn red / Error&lt;/li&gt;
    &lt;li&gt;Load balancing follows LTM Pool Member 2&lt;/li&gt;
    &lt;li&gt;Resume the Success health-state for the IIS 7 monitor (IIS 7 Application Pool) by starting the Default Application Pool on the IIS Server hosted on LTM Pool Member 1&lt;/li&gt;
    &lt;li&gt;See the related (hosting) App Instance health state turn green / Success&lt;/li&gt;
    &lt;li&gt;See the related LTM Pool Member (1) health state turn green / Success&lt;/li&gt;
    &lt;li&gt;Load balancing follows LTM Pool Members 1 and 2.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2.2. Performance Threshold Rule Based Load Balancing (Scenario #2)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; Enable / Disable LTM Pool Member based on application specific threshold rules&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use Case:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Create a unit monitor based on an IIS 7 specific rule (ASP.NET\Worker Process Restarts Performance Rule), targeting the ASP.NET Application Pool object&lt;/li&gt;
    &lt;li&gt;Create the ASP.NET worker process recycle condition based on the number of requests made&lt;/li&gt;
    &lt;li&gt;The unit monitor created above will mark the health of the ASP.NET Application Pool object's state as red / Error&lt;/li&gt;
    &lt;li&gt;See the related (hosting) App Instance health state turn red / Error&lt;/li&gt;
    &lt;li&gt;See the related LTM Pool Member (1) health state turn red / Error&lt;/li&gt;
    &lt;li&gt;Load balancing follows LTM Pool Member 2&lt;/li&gt;
    &lt;li&gt;Resume the Success health-state for the unit monitor by lowering the number of requests and having the ASP.NET worker process recycle no more&lt;/li&gt;
    &lt;li&gt;See the related (hosting) App Instance health state turn green / Success&lt;/li&gt;
    &lt;li&gt;See the related LTM Pool Member (1) health state turn green / Success&lt;/li&gt;
    &lt;li&gt;Load balancing follows LTM Pool Members 1 and 2.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2.3. Performance / System Metrics (Provisioning) Based Load Balancing (Scenario #3)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; Update LTM Pool Member load-balancing ratios based on system-performance / provisioning&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use Case:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Set the load-balancing method for the targeted LTM Pool to “Ratio (member)”&lt;/li&gt;
    &lt;li&gt;Start by setting the Ratio on both LTM Pool Members to 1&lt;/li&gt;
    &lt;li&gt;Provision LTM Pool Member 1 (virtual machine) with 2GB of RAM&lt;/li&gt;
    &lt;li&gt;Provision LTM Pool Member 2 (virtual machine) with 4GB of RAM&lt;/li&gt;
    &lt;li&gt;See how the load balancing ratios on LTM Pool Member 1 and LTM Pool Member 2 get updated (automatically) to 33 and 67 respectively, following the capacity (total memory) of the LTM Pool Members&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Details on configuring and running these use cases will follow in subsequent articles, so stay tuned.&lt;img src="http://devcentral.f5.com/weblogs/jbalog/aggbug/1090193.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 22 Jul 2010 01:55:38 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/jbalog/archive/2010/07/22/f5-application-designer-load-balancing-scenarios.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Julian Balog</dc:creator></item><item><title>Get Out Your Crayons. We Need to Color Us Some Bits</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/22/the-crayola-network.aspx</link><description>&lt;p&gt;&lt;em&gt;Those eight bits in the IP header aren’t doing much of anything these days, perhaps it’s time to put them to work &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/OperationsPerformanceManagement_9714/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/OperationsPerformanceManagement_9714/image_thumb_3.png" width="210" height="240" /&gt;&lt;/a&gt; Back in the early days of bandwidth management, when quality of service and prioritization of traffic were on everyone’s minds because we were stuck with low throughput connectivity, there was a brief discussion about the use of IP’s &lt;a href="http://www.rhyshaden.com/ipdgram.htm"&gt;TOS (Type of Service) bits&lt;/a&gt; as a means to meet specific application performance needs. I say brief because, well, it never really got anywhere. See, even though the creators of the IP specification had looked into the future and provided a technical solution to prioritization of traffic they couldn’t have looked into the future and seen the organizational roadblocks to leveraging such a simple but effective method of managing traffic. &lt;/p&gt;  &lt;p&gt;The biggest problem was that you could ensure that TOS bits were honored within the organization, but once those packets passed through the organization’s boundary of control, i.e. onto the Internet, there was no guarantee or requirement that any other organization honor those bits. And because packets flow through many, many different routers and switches along its very long yet ironically very short travels from datacenter to client, if just one fails to honor the bits then the packets go gray and prioritization is lost. &lt;/p&gt;  &lt;p&gt;Hence it was that bandwidth management moved up the stack, with queuing and rate shaping at the transport and application layers of the stack becoming the norm and the “coloring” of TOS bits fell into disuse, like childhood crayons set aside in favor of cool gel pens and clicky-mechanical pencils. &lt;/p&gt;  &lt;h3 /&gt;  &lt;h3&gt;&lt;strong&gt;&lt;font color="#800000"&gt;THE NEED STILL EXISTS &lt;/font&gt;&lt;/strong&gt;&lt;/h3&gt;  &lt;h4&gt;Interestingly enough, the need for prioritization and bandwidth management still exists and, in many cases, it could become of paramount importance to the successful implementation of a mature cloud. &lt;/h4&gt;  &lt;p&gt;It is easy to forget that when you look under the covers of a &lt;a title="" href="http://www.f5.com/solutions/cloud-computing" rel=""&gt;cloud computing &lt;/a&gt; environment that there still exist physical network connections that comprise that environment. Despite the magnitude of virtualization in use at all layers that abstracts the entire infrastructure from its physical implementations, that network is still there. It’s massive, it’s huge, and it’s a spider’s web of connectivity. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/OperationsPerformanceManagement_9714/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/OperationsPerformanceManagement_9714/image_thumb.png" width="362" height="335" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I am not the only one thinking about this, I’m fairly certain. An InformationWeek Analytics survey last year included a concern rarely seen in cloud computing surveys: “&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/05/17/when-microseconds-matter.aspx"&gt;speed to activate new services/expand capacity&lt;/a&gt;.” And folks are apparently somewhat concerned about this. Less so than other “problem” areas of cloud but enough concerned that it made the chart. &lt;/p&gt;  &lt;p&gt;The problem is that because everyone is still actually sharing a physical network connection all that traffic gets mixed up on the wire. At the physical layer, every packet is the same regardless of what payload it’s carrying. But the reality is that some packets are more “important” in the sense that some will be extremely time sensitive. A request to provision a service that’s under increasing load is more important than many application requests but both look the same to the routers and switches that get those packets from point A to point B within a cloud computing environment. &lt;/p&gt;  &lt;p&gt;As cloud computing providers and enterprises get better at automating the provisioning and elastic scalability processes, the packets that make up requests for such operational tasks will become increasingly time sensitive and important to ensuring operational efficiency and success. &lt;/p&gt;  &lt;p&gt;The problem, as once reared its ugly head before, is that all that traffic – customer and operational – is &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/20/http-now-serving-everything.aspx"&gt;running over HTTP&lt;/a&gt;. REST, SOAP, whatever. The APIs that make it possible to provide “compute as a service” are almost unilaterally implemented using a combination of &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/21/paas-is-just-soa-for-platforms-without-the-baggage.aspx"&gt;HTTP and REST or SOAP-based architectural principles&lt;/a&gt;. And so are the applications running in the cloud. Everything is running over HTTP and thus, as with bandwidth management challenges in the past, it becomes increasingly difficult to distinguish traffic without inspecting its payload. &lt;/p&gt;  &lt;p&gt;And payload inspection always adds latency. It may be only microseconds but it’s still latency. And if every router has to do it, well, microseconds eventually add up to seconds. And when we’re talking about ensuring the order of operations in a provisioning process, those seconds can make a big difference. &lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;&lt;font color="#800000"&gt;BACK to BEGINNING&lt;/font&gt; &lt;/strong&gt;&lt;/h3&gt;  &lt;h4&gt;Sometimes the solution really is to go back to the beginning, to our roots, to the network.&lt;/h4&gt;  &lt;p&gt;It could be that the solution lies in &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/06/01/the-rise-of-the-out-of-band-management-network.aspx"&gt;out-of-band management networks&lt;/a&gt;. If not physically at least logically separated network channels that are by default prioritized and therefore will never get stuck in a traffic jam trying to get to location “C” because the application at location “A” is physically on the same network and heavily oversubscribed at the moment an important management request is trying to get to “C”. This would, however, add another layer of complexity to the management of not just the physical but the logical network. Complexity that is almost always translated into higher costs, which of course gets passed on to the customer. &lt;/p&gt;  &lt;p&gt;It could be that DCSP (&lt;a href="http://www.ietf.org/rfc/rfc2474.txt"&gt;DiffServ or Differentiated Services Code Point (DSCP)&lt;/a&gt;) – what eventually became of TOS because it was basically unused - could become the solution precisely because a single provider “owns” the entire network. Because a provider has control over all the components comprising the underlying &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/OperationsPerformanceManagement_9714/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 10px 0px 0px 20px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/OperationsPerformanceManagement_9714/image_thumb_2.png" width="296" height="178" /&gt;&lt;/a&gt;network infrastructure it could enforce the honoring of DSCP bits across its network and thus prioritize traffic at the IP layer. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/OperationsPerformanceManagement_9714/blockquote_2.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="blockquote" border="0" alt="blockquote" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/OperationsPerformanceManagement_9714/blockquote_thumb.gif" width="46" height="28" /&gt;&lt;/a&gt; DiffServ is concerned with classifying packets as they enter the local network. This classification then applies to &lt;b&gt;Flow&lt;/b&gt; of traffic where a Flow is defined by 5 elements; Source IP address, Destination IP, Source port, Destination port and the transport protocol. A flow that has been classified or marked can then be acted upon by other QoS mechanisms. Multiple flows can therefore be dealt with in a multitude of ways depending on the requirements of each flow. Packets are first Classified according to their current DSCP. Then they are separated into queues where one queue may be routed via a marking mechanism and another queue may be examined more closely. &lt;/p&gt;    &lt;p&gt;-- &lt;a href="http://www.rhyshaden.com/qos.htm"&gt;Quality of Service&lt;/a&gt; overview &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If a provider segments by port “cloud management” traffic from “normal” traffic, this solution would be fairly easy to implement. If not, well, then we’re going to need something else. It’s the concept behind DiffServ and TOS that’s important to leverage in such a solution – the recognition that some traffic must be prioritized to ensure delivery in a timely fashion. &lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;&lt;font color="#800000"&gt;EIGHT BITS&lt;/font&gt;&lt;/strong&gt;&lt;/h3&gt;  &lt;h4&gt;What seems clear, to me at least, is that eventually we’re going to run into scenarios in which we need something akin to Operations Performance Management (OPM) to ensure that management and control messages are delivered in a timely fashion.&lt;/h4&gt;  &lt;p&gt; This is especially true as cloud computing matures and we start to see the dynamism inherent in infrastructure 2.0 components put into broader use. Real-time enforcement of security and delivery policies must be &lt;em&gt;real-time. &lt;/em&gt;They can’t be near-time, they must happen &lt;em&gt;now&lt;/em&gt;. When we start relying on existing open standards like HTTP and messaging hubs and event-driven networking architectures we have to remember we get the good &lt;em&gt;and &lt;/em&gt;the bad from those existing standards and implementations. We get the ease of use and integration, the flexibility, and the ubiquity of support, but we also get the problems that have plagued quality of service implementations forever: when everything is delivered via HTTP then everything looks like HTTP. Differentiation is nice, but we need to have a way to do that that doesn’t impede performance in a cloud computing environment. &lt;/p&gt;  &lt;p&gt;In this case, it seems wise to look down the stack and return to a perhaps less sophisticated but absolutely more elegant and simple means of distinguishing not only traffic but precedence and terms of service. DSCP or TOS or whatever we might decide to slap into those 8 bits in the IP header (perhaps there’s room for a new specification and use of those bits?) would be infinitely more scalable and easily supported in a cloud computing environment for distinguishing between the small subset of internal “traffic types” that need to be managed. &lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="100%"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="70%"&gt;         &lt;h3&gt;Related Posts&lt;/h3&gt;          &lt;ul&gt;           &lt;li&gt;             &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/06/01/the-rise-of-the-out-of-band-management-network.aspx"&gt;The Rise of the Out-of-Band Management Network&lt;/a&gt;&lt;/p&gt;           &lt;/li&gt;         &lt;/ul&gt;          &lt;div class="wlw_related_posts"&gt;from tag &lt;a href="http://del.icio.us/lmacvittie/ethernet"&gt;ethernet&lt;/a&gt;            &lt;br /&gt;&lt;/div&gt;          &lt;div class="wlw_related_posts"&gt;           &lt;ul&gt;             &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/05/03/thatrsquos-awesome-and-by-awesome-i-mean-stupid.aspx"&gt;That’s Awesome! And By Awesome I Mean Stupid&lt;/a&gt;&lt;/li&gt;           &lt;/ul&gt;         &lt;/div&gt; from tag &lt;a href="http://del.icio.us/lmacvittie/management"&gt;management&lt;/a&gt;          &lt;br /&gt;          &lt;ul&gt;           &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/05/27/why-it-needs-to-take-control-of-public-cloud-computing.aspx"&gt;Why IT Needs to Take Control of Public Cloud Computing&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/05/17/when-microseconds-matter.aspx"&gt;When (Micro)Seconds Matter&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/07/22/beware-the-availability-rat-hole-in-the-cloud.aspx"&gt;Beware the Availability Rat Hole in the Cloud&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/10/01/virtual-server-sprawl-fud-or-fact.aspx"&gt;Virtual Server Sprawl: FUD or FACT?&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/11/24/infrastructure-2.0-the-diseconomy-of-scale-virus.aspx"&gt;Infrastructure 2.0: The Diseconomy of Scale Virus&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/12/04/next-generation-management-of-data-centers-should-be-modeled-on-social.aspx"&gt;Next-Generation Management of Data Centers Should be Modeled on Social Networking&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/30/how-to-instrument-your-java-ee-applications-for-a-virtualized.aspx"&gt;How to instrument your Java EE applications for a virtualized environment&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/12/01/managing-virtual-infrastructure-requires-an-application-centric-approach.aspx"&gt;Managing Virtual Infrastructure Requires an Application Centric Approach&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/06/08/and-the-killer-app-for-private-cloud-computing-ishellip.aspx"&gt;And the Killer App for Private Cloud Computing Is...&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/11/drowsy-networking-green-it.aspx"&gt;‘Drowsy’ Networking&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/02/24/as-deep-as-a-puddle.aspx"&gt;As Deep as a Puddle&lt;/a&gt;&lt;/li&gt;         &lt;/ul&gt;         &lt;a href="http://del.icio.us/lmacvittie/management"&gt;(more..)&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="30%"&gt;         &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img border="0" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" /&gt;&lt;/a&gt; &lt;a href="http://www.friendfeed.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="friendfeed" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/friendfeed_3.jpg" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;          &lt;p&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;script type="text/javascript" src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355"&gt;&lt;/script&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p /&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c8c568f3-aec3-4ed4-84ee-d3c6b9f96874" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/performance" rel="tag"&gt;performance&lt;/a&gt;,&lt;a href="http://technorati.com/tags/management" rel="tag"&gt;management&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TOS" rel="tag"&gt;TOS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ethernet" rel="tag"&gt;ethernet&lt;/a&gt;,&lt;a href="http://technorati.com/tags/network" rel="tag"&gt;network&lt;/a&gt;,&lt;a href="http://technorati.com/tags/operations+performance+management" rel="tag"&gt;operations performance management&lt;/a&gt;,&lt;a href="http://technorati.com/tags/OPM" rel="tag"&gt;OPM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DSCP" rel="tag"&gt;DSCP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DiffServ" rel="tag"&gt;DiffServ&lt;/a&gt;,&lt;a href="http://technorati.com/tags/cloud+computing" rel="tag"&gt;cloud computing&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1090191.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 21 Jul 2010 19:10:56 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/22/the-crayola-network.aspx#comment</comments><slash:comments>2</slash:comments><dc:creator>Lori MacVittie</dc:creator></item><item><title>Zombies! This Year&amp;rsquo;s Vampires Are Zombies!</title><link>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/22/zombies-this-yearrsquos-vampires-are-zombies.aspx</link><description>&lt;p&gt;A couple of weeks ago, one of the people I follow on our home Twitter account (focused on role-playing and miniature wargames) tweeted “Zombies! This Year’s Vampires Are Zombies!&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/ZombiesThisYearsVampiresAreZombies_E73/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/ZombiesThisYearsVampiresAreZombies_E73/image_thumb.png" width="230" height="240" /&gt;&lt;/a&gt; Oh Please Let This Year’s Vampires Be Zombies!!” as a joke aimed at those in the entertainment industry that were riding the fad wave of Vampire films/books/games. Seriously, the show that did the penitent Vampire in the 80s was good, everything portraying a “good-guy” Vampire after that was lame follow-on. &lt;/p&gt;  &lt;p&gt;That’s how I feel about high-tech sometimes. “Cloud is This Year’s SOA! Oh Please Let Cloud Be This Year’s SOA! All we have to do is change our marketing material!” seems to be the refrain. The benefits to you the user are often glossed over with the demand that you do something &lt;em&gt;now&lt;/em&gt; &lt;em&gt;before it’s too late (eg: Before the Zombies get you!)&lt;/em&gt;. Security and storage are in the throes of this phenomenon too… I’ll just say “primary storage deduplication” and leave it at that.&lt;/p&gt;  &lt;p&gt;And then someone with their head on straight reminds me that we’re still fighting the fires of 2000, let alone solving the problems of tomorrow… In this case it was Howard Marks’ &lt;a href="http://www.informationweek.com/blog/main/archives/2009/02/doh_i_shoiuld_h.html" target="_blank"&gt;short-but-sweet blog about data loss&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In our home network, &lt;a href="http://devcentral.f5.com/weblogs/macvittie" target="_blank"&gt;Lori&lt;/a&gt; and I use copies and RAID to keep our backups, there is not a ton of timestamping and versioning except – as is the case in Howard’s blogs – the external facing stuff. I know many (too many) small to medium businesses and even a few departments in larger organizations that use the same type of methodology. Replication will help in the event of a hardware failure, but can cause you heartburn if the database is systematically destroyed through queries. While Howard is a bit sharp on snapshots, they can be a lifesaver, though they’re not a panacea either.&lt;/p&gt;  &lt;p&gt;And the statistics on the quality of backups and the number of people who even bother to validate them are horrendous. Why bother if you’re not checking the quality?&lt;/p&gt;  &lt;p&gt;Look at the old problems, the ones we’ve been fighting for years, and ask yourself a couple of questions…&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Have things changed technologically that make a different way better?&lt;/li&gt;    &lt;li&gt;Is the problem we were working on/ignoring/pondering four or ten years ago resolved?&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Regardless of the future of the infrastructure in your IT department, IT is the guardian and steward of both data and systems. Don’t lose sight of that in the rush to deploy shiny new solutions. Of course every vendor believes they have solutions to help you do things better - have I mentioned &lt;a href="http://www.f5.com/products/big-ip/product-modules/wan-optimization-module.html" target="_blank"&gt;WOM&lt;/a&gt; or &lt;a href="http://www.f5.com/products/arx-series/" target="_blank"&gt;ARX&lt;/a&gt; lately? But the place to start is an evaluation of where you are, what infrastructure/systems/needs you are weak in, and only &lt;em&gt;then&lt;/em&gt; go looking for a solution to them. Using WOM to back up to a remote datacenter is a good solution – if you need it – as is using ARX with a Cloud Storage Gateway – again, only if you need it. But what you do need is assurances that no matter what the nightmare unleashed upon your IT department – be it trojan, file integrity issues, or selective DB deletes, that you have a route back to working systems with consistent data. If you can’t guarantee that today, I’d start figuring out how to do so… Quickly.&lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0d34e8c3-a025-41ad-a584-332022db6ce7" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/replication" rel="tag"&gt;replication&lt;/a&gt;,&lt;a href="http://technorati.com/tags/RAID" rel="tag"&gt;RAID&lt;/a&gt;,&lt;a href="http://technorati.com/tags/data+loss" rel="tag"&gt;data loss&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+WOM" rel="tag"&gt;F5 WOM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+ARX" rel="tag"&gt;F5 ARX&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+Networks" rel="tag"&gt;F5 Networks&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Don+MacVittie" rel="tag"&gt;Don MacVittie&lt;/a&gt;&lt;/div&gt;  &lt;p align="right"&gt;&lt;a href="http://twitter.com/dmacvittie" target="_blank"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/Rss.aspx" target="_blank"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/don.macvittie" target="_blank"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="right"&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fdmacvittie%2FRss.aspx&amp;amp;t1=" target="_blank"&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Related Articles and Blogs&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.informationweek.com/blog/main/archives/2009/02/doh_i_shoiuld_h.html" target="_blank"&gt;D’oh, I should have Made a Backup&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.bostoncomputing.net/consultation/databackup/statistics/" target="_blank"&gt;Data Loss Statistics&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.disaster-resource.com/articles/05p_094.shtml" target="_blank"&gt;Avoiding an IT Crisis&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://devcentral.f5.com/weblogs/dmacvittie/aggbug/1090190.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 21 Jul 2010 16:50:17 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/22/zombies-this-yearrsquos-vampires-are-zombies.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Don MacVittie</dc:creator></item><item><title>Searching DevCentral Just Got Easier</title><link>http://devcentral.f5.com/weblogs/Joe/archive/2010/07/21/searching-devcentral-just-got-easier.aspx</link><description>&lt;p&gt;I recently received an internal iRule email and one of our folks created a search provider for FireFox to search DevCentral.  &lt;a href="http://devcentral.f5.com/weblogs/lmacvittie"&gt;Lori&lt;/a&gt; quickly responded and asked if we could get this posted to DevCentral.  Why not if it will help the community so I took a look.  Then it occurred to me that a while back I created a search provider definition based on the &lt;a href="http://www.opensearch.org/Home"&gt;OpenSearch&lt;/a&gt; specification.  For some reason, on our last site refresh, the links in our website were removed so the browser didn’t natively pick them up.   I fixed that so now you can add DevCentral as a native search target in your browser of choice.&lt;/p&gt;  &lt;p&gt;Here’s a little background on OpenSearch, how I implemented it on DevCentral, and how to set it up in your browser.&lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;OpenSearch&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;OpenSearch is a format that can be used to &lt;a href="http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_description_document"&gt;describe a search engine&lt;/a&gt; so that it can be accessed and used by search client applications such as web browsers.  It’s basically just an XML file that you put on your webserver and by adding a hidden tag in your application pages, a browser is able to automatically access the search pages on your site.&lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;Creating the Search Engine&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;The first step is to create the search engine definition file.  In this case, I called that file OpenSearch.xml.  The format for that file is defined &lt;a href="http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_description_document"&gt;here&lt;/a&gt;.  For DevCentral, you can view the definition directly at &lt;a href="http://devcentral.f5.com/OpenSearch.xml"&gt;OpenSearch.xml&lt;/a&gt;.&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &amp;lt;OpenSearchDescription&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;   &amp;lt;ShortName&amp;gt;DevCentral Search&amp;lt;/ShortName&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;   &amp;lt;Description&amp;gt;Search F5's DevCentral Developer Community&amp;lt;/Description&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;   &amp;lt;Url type=&lt;span style="color: #006080"&gt;"text/html"&lt;/span&gt; method=&lt;span style="color: #006080"&gt;"get"&lt;/span&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     template=&lt;span style="color: #006080"&gt;"http://devcentral.f5.com/Default.aspx?..q={searchTerms}"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;   &amp;lt;Image width=&lt;span style="color: #006080"&gt;"16"&lt;/span&gt; height=&lt;span style="color: #006080"&gt;"16"&lt;/span&gt;&amp;gt;http:&lt;span style="color: #008000"&gt;//devcentral.f5.com/favicon.ico&amp;lt;/Image&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;   &amp;lt;InputEncoding&amp;gt;UTF-8&amp;lt;/InputEncoding&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;   &amp;lt;SearchForm&amp;gt;http:&lt;span style="color: #008000"&gt;//devcentral.f5.com/&amp;lt;/SearchForm&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt; &amp;lt;/OpenSearchDescription&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;It’s pretty self explanatory.  The only thing you need to make sure you include in is the {searchTerm} template value into your search url.&lt;/p&gt;

&lt;h4&gt;&lt;strong&gt;Exposing it to Browsers&lt;/strong&gt;&lt;/h4&gt;

&lt;p&gt;Once you have the definition setup, you need to broadcast it to the browsers accessing your site.  This can be done with a hidden link tag in the header of your HTML pages.  By adding a “&lt;strong&gt;link&lt;/strong&gt;” element of type “application/opensearchdescription+xml”, the browser will look at the “&lt;strong&gt;href&lt;/strong&gt;” attribute for the location of the search provider.&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &amp;lt;head&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;   ..&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;   &amp;lt;link rel=&lt;span style="color: #006080"&gt;"search"&lt;/span&gt; type=&lt;span style="color: #006080"&gt;"application/opensearchdescription+xml"&lt;/span&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     title=&lt;span style="color: #006080"&gt;"DevCentral Search"&lt;/span&gt; href=&lt;span style="color: #006080"&gt;"http://devcentral.f5.com/opensearch.xml"&lt;/span&gt; /&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; &amp;lt;/head&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;That’s it.  Now site search is ready to be configured in the browsers.  For each of the following steps, click on the &lt;a href="http://devcentral.f5.com/"&gt;DevCentral homepage&lt;/a&gt; before starting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/Joe/WindowsLiveWriter/SearchingDevCentralJustGotEasier_C837/OpenSearchFireFox1_2.png"&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;&lt;strong&gt;&lt;u&gt;Installing in FireFox&lt;/u&gt;&lt;/strong&gt;&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/Joe/WindowsLiveWriter/SearchingDevCentralJustGotEasier_C837/OpenSearchFireFox1_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="OpenSearchFireFox1" border="0" alt="OpenSearchFireFox1" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/Joe/WindowsLiveWriter/SearchingDevCentralJustGotEasier_C837/OpenSearchFireFox1_thumb.jpg" width="401" height="118" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on the drop down on the left side of the search control in the browsers address bar.  You will see a &lt;strong&gt;Add “DevCentral Search”&lt;/strong&gt; menu item.  &lt;/p&gt;

&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/Joe/WindowsLiveWriter/SearchingDevCentralJustGotEasier_C837/OpenSearchFireFox2_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 10px 10px; display: inline; border-top: 0px; border-right: 0px" title="OpenSearchFireFox2" border="0" alt="OpenSearchFireFox2" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/Joe/WindowsLiveWriter/SearchingDevCentralJustGotEasier_C837/OpenSearchFireFox2_thumb.jpg" width="166" height="127" /&gt;&lt;/a&gt; Select this item and you will now have “DevCentral Search” as your default search provider.  This can be changed back by selecting another drop down from the menu.&lt;/p&gt;

&lt;p&gt;Now you should see the F5 logo in your search control and by typing a search term in it, it will take you to the DevCentral search results for that query.  &lt;/p&gt;

&lt;p&gt;At this point the search provider is available to you on any website you visit, not just when you are visiting DevCentral.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Installing in Internet Explorer&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/Joe/WindowsLiveWriter/SearchingDevCentralJustGotEasier_C837/OpenSearchIE1a_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="OpenSearchIE1a" border="0" alt="OpenSearchIE1a" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/Joe/WindowsLiveWriter/SearchingDevCentralJustGotEasier_C837/OpenSearchIE1a_thumb.jpg" width="411" height="104" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Installation for Internet Explorer is almost as easy as FireFox.  The search control dropdown on the top right of the browser will have a “&lt;strong&gt;Add Search Providers&lt;/strong&gt;” menu item.  &lt;/p&gt;

&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/Joe/WindowsLiveWriter/SearchingDevCentralJustGotEasier_C837/OpenSearchIE2_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 10px 0px; display: inline; border-top: 0px; border-right: 0px" title="OpenSearchIE2" border="0" alt="OpenSearchIE2" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/Joe/WindowsLiveWriter/SearchingDevCentralJustGotEasier_C837/OpenSearchIE2_thumb.jpg" width="129" height="88" /&gt;&lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/Joe/WindowsLiveWriter/SearchingDevCentralJustGotEasier_C837/OpenSearchIE3_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 10px 10px; display: inline; border-top: 0px; border-right: 0px" title="OpenSearchIE3" border="0" alt="OpenSearchIE3" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/Joe/WindowsLiveWriter/SearchingDevCentralJustGotEasier_C837/OpenSearchIE3_thumb.jpg" width="171" height="134" /&gt;&lt;/a&gt; Select that and you will then see “DevCentral Search” as an option.  By selecting that menu item, you will be presented with a “&lt;strong&gt;Add Search Provider&lt;/strong&gt;” dialog box.  Click the “Add” button.&lt;/p&gt;

&lt;p&gt;At this point, you now have Internet Explorer configured to browse DevCentral anytime you please.  If you didn’t make it your default search provider in the Add dialog box, you’ll have to select it from the menu. &lt;/p&gt;

&lt;p&gt;Now by typing a search term, you will be taking to the DevCentral search just like you were with the previous Firefox installation.&lt;/p&gt;

&lt;h4&gt;&lt;u&gt;&lt;strong&gt;Installing in Google Chrome&lt;/strong&gt;&lt;/u&gt;&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/Joe/WindowsLiveWriter/SearchingDevCentralJustGotEasier_C837/OpenSearchChrome1_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="OpenSearchChrome1" border="0" alt="OpenSearchChrome1" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/Joe/WindowsLiveWriter/SearchingDevCentralJustGotEasier_C837/OpenSearchChrome1_thumb.jpg" width="426" height="113" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Google Chrome behaves a bit different as it doesn’t have a dedicated search control, but relies on the address box to do both navigation and search.  The search provider settings can be found by right clicking in the address control and you will find an “&lt;strong&gt;Edit search engines…&lt;/strong&gt;” menu item.  &lt;/p&gt;

&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/Joe/WindowsLiveWriter/SearchingDevCentralJustGotEasier_C837/OpenSearchChrome2_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 10px 0px; display: inline; border-top: 0px; border-right: 0px" title="OpenSearchChrome2" border="0" alt="OpenSearchChrome2" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/Joe/WindowsLiveWriter/SearchingDevCentralJustGotEasier_C837/OpenSearchChrome2_thumb.jpg" width="90" height="111" /&gt;&lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/Joe/WindowsLiveWriter/SearchingDevCentralJustGotEasier_C837/OpenSearchChrome3_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 10px 10px; display: inline; border-top: 0px; border-right: 0px" title="OpenSearchChrome3" border="0" alt="OpenSearchChrome3" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/Joe/WindowsLiveWriter/SearchingDevCentralJustGotEasier_C837/OpenSearchChrome3_thumb.jpg" width="169" height="144" /&gt;&lt;/a&gt; By selecting that menu item, you will be presented with a dialog box containing the currently configured default engines, and others that Google thinks you might like.  &lt;/p&gt;

&lt;p&gt;Look for “DevCentral Search” at the bottom of the list.  Highlight it and click the “Make Default” button on the right side of the dialog box.&lt;/p&gt;

&lt;p&gt;Now, just enter your search term in the address control and Chrome will take you to the DevCentral search results page.&lt;/p&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;

&lt;p&gt;-Joe&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b272408b-8698-42ed-a483-5f133957ac10" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/OpenSearch" rel="tag"&gt;OpenSearch&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Internet+Explorer" rel="tag"&gt;Internet Explorer&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Firefox" rel="tag"&gt;Firefox&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Chrome" rel="tag"&gt;Chrome&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Search" rel="tag"&gt;Search&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Joe+Pruitt" rel="tag"&gt;Joe Pruitt&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/Joe/aggbug/1090189.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 21 Jul 2010 05:21:19 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/Joe/archive/2010/07/21/searching-devcentral-just-got-easier.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Joe Pruitt</dc:creator></item><item><title>Let&amp;rsquo;s Face It: PaaS is Just SOA for Platforms Without the Baggage</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/21/paas-is-just-soa-for-platforms-without-the-baggage.aspx</link><description>&lt;h4&gt;At some point in the past few years &lt;a title="Service Oriented Architecture definition " href="http://www.f5.com/glossary/soa.html" rel="" target="_blank"&gt;SOA&lt;/a&gt; apparently became a four-letter word (as opposed to just a TLA that leaves a bad taste in your mouth) or folks are simply unwilling – or unable – to recognize the parallels between SOA and &lt;a title="" href="http://www.f5.com/solutions/cloud-computing" rel=""&gt;cloud computing &lt;/a&gt;.&lt;/h4&gt;  &lt;p&gt;This is mildly amusing given the heavy emphasis of &lt;strong&gt;services&lt;/strong&gt; in all things now under the “cloud computing” moniker. Simeon Simeonov was compelled to pen an article for GigaOM on the evolution/migration of cloud computing toward PaaS after an experience playing around with some data from CrunchBase. He came to the conclusion that if only there were REST-based web services (note the use of the term “web services” here for later in the discussion) for both MongoDB and CrunchBase his life would have been a whole lot easier. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/LetsFaceFactsPaaSisJustSOAMinustheStanda_7B85/quote-left_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="quote-left" border="0" alt="quote-left" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/LetsFaceFactsPaaSisJustSOAMinustheStanda_7B85/quote-left_thumb.png" width="24" height="21" /&gt;&lt;/a&gt; For an application developer, as opposed to an infrastructure developer, all these vestiges of decades-old operating system architecture add little value. In fact, they cause deployment and operational headaches—lots of them. If I had taken almost any other approach to the problem using the tools I’m familiar with I would have performed HTTP operations against the REST-based web services interface for CrunchBase and then used HTTP to send the data to MongoDB. My code would have never operated against a file or any other OS-level construct directly.&lt;/p&gt;    &lt;p&gt;[…]&lt;/p&gt;    &lt;p&gt;Most assume that server virtualization as we know it today is a fundamental enabler of the cloud, but it is only a crutch we need until cloud-based application platforms mature to the point where applications are built and deployed without any reference to current notions of servers and operating systems.&lt;/p&gt;    &lt;p&gt;-- &lt;a href="http://twitter.com/simeons"&gt;Simeon Simeonov&lt;/a&gt;  “&lt;a href="http://blog.simeonov.com/2010/07/19/vmware-aws-paas-next-stage-of-cloud-computing/"&gt;The next reincarnation of cloud computing&lt;/a&gt;” &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Now I’m certainly not going to disagree with Simeon on his point that REST-based web services for data sources would make life a whole lot easier for a whole lot of people. I’m not even going to disagree with his assertion that PaaS is where cloud is headed. What needs to be pointed out is what he (and a lot of other people) are describing is essentially SOA minus the standards baggage. You’ve got the notion of abstraction in the maturation of platforms removing the need for developers to reference servers or operating systems (and thus files). You’ve got ubiquity in a standards-based transport protocol (HTTP) through which such services are consumed. You’ve got everything &lt;em&gt;except &lt;/em&gt;the standards baggage. You know them, the &lt;em&gt;real &lt;/em&gt;four-letter words of SOA: SOAP, WSDL, WSIL and, of course, the stars of the “we hate SOA show”, WS-everything. &lt;/p&gt;  &lt;p&gt;But the underlying principles that were the foundation and the vision of SOA – abstraction of interface from implementation, standards-based communication channels, discrete chunks of reusable logic – are all present in Simeon’s description. If they are not spelled out they are certainly implied by his frustration with a required interaction with file system constructs, desiring instead some higher level abstracted interface through which the underlying implementation is obscured from view. &lt;/p&gt;  &lt;h3&gt;&lt;font color="#800000"&gt;&lt;strong&gt;CLOUDS AREN’T CALLED “as a SERVICE” for NOTHING&lt;/strong&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;h4&gt;Whether we’re talking about compute, storage, platform, or infrastructure as a service the operative word is &lt;em&gt;service&lt;/em&gt;. &lt;/h4&gt;  &lt;p&gt;It’s a services-based model, a service-oriented model. It’s a service-oriented architecture that’s merely moved down the stack a bit, into the underlying and foundational technologies upon which applications are built. Instead of building business services we’re talking about building developer services – &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/LetsFaceFactsPaaSisJustSOAMinustheStanda_7B85/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 10px 10px 10px 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/LetsFaceFactsPaaSisJustSOAMinustheStanda_7B85/image_thumb.png" width="444" height="331" /&gt;&lt;/a&gt; messaging services, data services, provisioning services. Services, services, and more services. &lt;/p&gt;  &lt;p&gt;Move down the stack again and when we talk about devops and automation or cloud and orchestration we’re talking about leveraging &lt;em&gt;services&lt;/em&gt; – whether RESTful or SOAPy – to codify operational and datacenter level processes as a means to shift the burden of managing infrastructure from people to technology. Infrastructure services that can be provisioned on-demand, that can be managed on-demand, that can apply policies on-demand. PaaS is no different. It’s about leveraging &lt;em&gt;services&lt;/em&gt; instead of libraries or adapters or connectors. It’s about platforms – data, application, messaging – as a &lt;em&gt;service&lt;/em&gt;.  &lt;/p&gt;  &lt;p&gt;And here’s where I’ll diverge from agreeing with Simeon, because it shouldn’t matter to PaaS how the underlying infrastructure is provisioned or managed, either. I agree that virtualization isn’t necessary to build a highly scalable, elastic and on-demand cloud computing environment. But whether that data services is running on bare-metal, or on a physical server supported by an operating system, or on a virtual server should not be the concern of the platform services. Whether elastic scalability of a &lt;a href="http://www.rabbitmq.com/"&gt;RabbitMQ&lt;/a&gt; service is enabled via virtualization or not is &lt;em&gt;irrelevant. &lt;/em&gt;It is exactly that level of abstraction that makes it possible to innovate at the &lt;em&gt;next&lt;/em&gt; layer, for PaaS offerings to focus on platform services and not the underlying infrastructure, for developers to focus on application services and not the underlying platforms. Thus his musings on the migration of IaaS into PaaS are ignoring that for most people, “cloud” is essentially a step pyramid, with each “level” in that pyramid being founded upon a firm underlying layer that exposes itself as services. &lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;&lt;font color="#800000"&gt;SOA IS ALIVE and LIVING UNDER an ASSUMED NAME for ITS OWN PROTECTION &lt;/font&gt;&lt;/strong&gt;&lt;/h3&gt;  &lt;h4&gt;If we return to the early days of SOA you’ll find this is exactly the same prophetic message offered by proponents riding high on the “game changing” technology of that time.&lt;/h4&gt;  &lt;p&gt; SOA promised agility through abstraction, reuse through a services-oriented approach to composition, and relieving developers of the need to be concerned with how and where a services was implemented so they could focus instead on &lt;em&gt;innovating new solutions&lt;/em&gt;. That’s the same thing that all the *aaS are trying to provide – and with many of the same promises. The “cloud” plays into the paradigm by introducing elastic scalability, multi-tenancy, and the notion of self-service for provisioning that brings the financial incentives to the table. &lt;/p&gt;  &lt;p&gt;The only thing missing from the “as a service” paradigm is a plethora of standards and the bad taste they left in many a developer’s mouth. And it is that facet of SOA that is likely the impetus for refusing to say the “S” word in close proximity to cloud and *aaS. The conflict, the disagreement, the confusion, the difficulties, the lack of interoperability that nearly destroyed the interoperability designed in the first place – all the negatives associated with SOA come to the fore upon hearing that TLA instead of its underlying concepts and architectural premises. Premises which, if you look around hard enough, you’ll find still very much in use and successfully doing exactly what it promised to do. &lt;/p&gt;  &lt;p&gt;Simeon himself does not appear to disagree with the SOA-aaS connection. In a Twitter conversation he said, “&lt;em&gt;I still have scars from the early #SOA days. Shouldn't we start with something simpler for PaaS&lt;/em&gt;?” &lt;/p&gt;  &lt;p&gt;To which I would now say “but we are”. After all it wasn’t – and isn’t - SOA that was so darn complex, it was its myriad complex and often competing standards. A rose by any other name, and all that. We can refuse to use the acronym, but that doesn’t change the fact that the core principles we’re applying (successfully, I might add) are, in fact, service-oriented.    &lt;/p&gt;&lt;hr color="#808080" width="100%" noshade="noshade" /&gt;    &lt;table border="0" cellspacing="0" cellpadding="2" width="100%"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="70%"&gt;           &lt;h3&gt;Related Posts&lt;/h3&gt;            &lt;div class="wlw_related_posts"&gt;from tag &lt;a href="http://del.icio.us/lmacvittie/IaaS"&gt;IaaS&lt;/a&gt;              &lt;br /&gt;              &lt;ul&gt;               &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/06/07/cloud-today-is-just-capacity-on-demand.aspx"&gt;Cloud Today is Just Capacity On-Demand&lt;/a&gt;&lt;/li&gt;                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/05/07/cloud-computing-is-not-burger-king.-you-canrsquot-have-it.aspx"&gt;Cloud computing is not Burger King. You can’t have it your way. Yet.&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt; from tag &lt;a href="http://del.icio.us/lmacvittie/PaaS"&gt;PaaS&lt;/a&gt;              &lt;br /&gt;              &lt;ul&gt;               &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/05/24/despite-good-intentions-paas-interoperability-still-only-skin-deep.aspx"&gt;Despite Good Intentions PaaS Interoperability Still Only Skin Deep&lt;/a&gt;&lt;/li&gt;                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/04/29/is-paas-just-outsourced-application-server-platforms.aspx"&gt;Is PaaS Just Outsourced Application Server Platforms?&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt; from tag &lt;a href="http://del.icio.us/lmacvittie/SOA"&gt;SOA&lt;/a&gt;              &lt;br /&gt;              &lt;ul&gt;               &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/10/15/amazon-elastic-load-balancing-only-simple-on-the-outside.aspx"&gt;Amazon Elastic Load Balancing Only Simple On the Outside&lt;/a&gt;&lt;/li&gt;                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/07/13/the-end-of-3-teared-architectures.aspx"&gt;The End of 3-Teared Architectures&lt;/a&gt;&lt;/li&gt;                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/07/3523.aspx"&gt;Redefining SOA&lt;/a&gt;&lt;/li&gt;                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/04/16/have-a-can-of-duh-itrsquos-on-me.aspx"&gt;Have a can of Duh! It’s on me&lt;/a&gt;&lt;/li&gt;                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/06/26/forklifts-rip-and-replace-and-other-it-fairy-tales.aspx"&gt;Forklifts, Rip and Replace, and Other IT Fairy Tales&lt;/a&gt;&lt;/li&gt;                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/09/14/the-cloud-metastructure-hubub.aspx"&gt;The Cloud Metastructure Hubub&lt;/a&gt;&lt;/li&gt;                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/01/12/virtualization-gone-wild-infrastructure-as-virtual-appliances.aspx"&gt;Virtualization Gone Wild: Infrastructure as virtual appliances&lt;/a&gt;&lt;/li&gt;                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/16/data-as-a-service-could-drastically-impact-success-of-sql.aspx"&gt;Data as a Service Could Drastically Impact Success of SQL Injection Attacks&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt;             &lt;a href="http://del.icio.us/lmacvittie/SOA"&gt;(more..)&lt;/a&gt;&lt;/div&gt;         &lt;/td&gt;          &lt;td valign="top" width="30%"&gt;           &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img border="0" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" /&gt;&lt;/a&gt; &lt;a href="http://www.friendfeed.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="friendfeed" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/friendfeed_3.jpg" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;            &lt;p&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;script type="text/javascript" src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355"&gt;&lt;/script&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;   &lt;h3&gt;   &lt;div class="wlw_related_posts"&gt;&lt;a href="http://del.icio.us/lmacvittie/SOA"&gt;&lt;/a&gt;&lt;/div&gt; &lt;/h3&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:36133e95-8bd1-4be4-a689-72412a7b0813" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SOA" rel="tag"&gt;SOA&lt;/a&gt;,&lt;a href="http://technorati.com/tags/services" rel="tag"&gt;services&lt;/a&gt;,&lt;a href="http://technorati.com/tags/IaaS" rel="tag"&gt;IaaS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/PaaS" rel="tag"&gt;PaaS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/standards" rel="tag"&gt;standards&lt;/a&gt;,&lt;a href="http://technorati.com/tags/infrastructure" rel="tag"&gt;infrastructure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Simeon+Simeonov" rel="tag"&gt;Simeon Simeonov&lt;/a&gt;,&lt;a href="http://technorati.com/tags/virtualization" rel="tag"&gt;virtualization&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1090187.aspx" width="1" height="1" /&gt;</description><pubDate>Tue, 20 Jul 2010 19:36:27 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/21/paas-is-just-soa-for-platforms-without-the-baggage.aspx#comment</comments><slash:comments>2</slash:comments><dc:creator>Lori MacVittie</dc:creator></item><item><title>CloudFucius Asks: Will Open Source Open Doors for Cloud Computing?</title><link>http://devcentral.f5.com/weblogs/psilva/archive/2010/07/20/cloudfucius-asks-will-open-source-open-doors-for-cloud-computing.aspx</link><description>&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/psilva/WindowsLiveWriter/4d946634f15b_7C2F/Konfuzius-1770_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Konfuzius-1770" border="0" alt="Konfuzius-1770" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/psilva/WindowsLiveWriter/4d946634f15b_7C2F/Konfuzius-1770_thumb.jpg" width="45" height="62" /&gt;&lt;/a&gt; There has been &lt;a title="The Recipe for Clouds Goes Open-Source" href="http://bits.blogs.nytimes.com/2010/07/20/the-recipe-for-clouds-goes-open-source/"&gt;a lot of press&lt;/a&gt; already about &lt;a title="Innovative, open source cloud computing software for building reliable cloud infrastructure." href="http://www.openstack.org/"&gt;OpenStack’s&lt;/a&gt; announcement yesterday about their new open source cloud computing software.  OpenStack says that the goal is, ‘&lt;em&gt;to allow any organization to create and offer cloud computing capabilities using open source software running on standard hardware&lt;/em&gt;.’  The software is intended to to allow companies to automatically create and manage large deployments of virtual private servers and remove the concern of vendor lock-in since the software will allow customers to span multiple cloud providers.  Customers and service providers alike can use their own physical hardware to create large cloud environments, public or private, across the globe.  It is also positioned to give customers more choice in how they want their specific cloud environment designed and deployed.  &lt;a title="OpenStack Participants" href="http://www.openstack.org/community/"&gt;Almost 30 companies&lt;/a&gt; are participating with the folks at &lt;a title="Rackspace Opens the Cloud with OpenStack™" href="http://www.rackspace.com/information/mediacenter/announcements/openstack.php"&gt;Rackspace&lt;/a&gt; and &lt;a title="NASA's Nebula Cloud Computing Technology To Play Key Role In New Open Source Initiative" href="http://www.nasa.gov/home/hqnews/2010/jul/HQ_10-172_Nebula_Initiative.html"&gt;NASA&lt;/a&gt; (Nebula cloud computing platform) leading the charge.&lt;/p&gt;  &lt;p&gt;Certainly, there are several attractive pieces to this, including the notion of &lt;a title="All for One Cloud and One Cloud for All" href="http://www.sys-con.com/node/1469519"&gt;cloud-standards&lt;/a&gt;, but will it finally open the flood gates for mass adoption of Cloud deployments?  Maybe not for the enterprise, at least initially.  Openstack &lt;a title="Frequently Asked Questions" href="http://www.openstack.org/projects/openstack-faq/"&gt;honestly admits&lt;/a&gt;, ‘&lt;em&gt;OpenStack is probably not something that the average business would consider deploying themselves yet. The big news for end customers is the potential for a halo effect of providers adopting an open and standard cloud: easy migration, cloud-bursting, better security audits, and a large ecosystem of compatible tools and services that work across cloud providers&lt;/em&gt;.’  This means that Openstack is really aimed at *&lt;b&gt;very&lt;/b&gt;* technical enterprises (very large with lots of resources) and service providers.  Thus, the play for the enterprise does not exist (yet) here, *&lt;b&gt;except&lt;/b&gt;* for management layer players who could leverage it to build something they could sell to enterprises to “make it easy” for them.  (thanks &lt;a title="Two Different Socks" href="http://devcentral.f5.com/weblogs/macvittie/Default.aspx"&gt;Lori&lt;/a&gt;!)&lt;/p&gt;  &lt;p&gt;In addition, as &lt;a title="Ted Julian" href="http://www.yankeegroup.com/tjulian"&gt;Ted Julian of the Yankee Group&lt;/a&gt; points out in &lt;a title="OpenStack is great, but Clouds need security. Meet the Clean Cloud." href="http://blogs.yankeegroup.com/2010/07/20/openstack-is-great-but-clouds-need-security-meet-the-clean-cloud/"&gt;this story&lt;/a&gt;, security is still the great unknown since there doesn’t seem to be a security vendor on the list of &lt;a title="OpenStack Participants" href="http://www.openstack.org/community/"&gt;Openstack participants&lt;/a&gt;.  I’m sure that list will grow over time, especially with &lt;a title="Rackspace, NASA launch OpenStack: Can it prevent cloud lock-in?" href="http://www.zdnet.com/blog/btl/rackspace-nasa-launch-openstack-can-it-prevent-cloud-lock-in/36850"&gt;the press&lt;/a&gt; that it’s getting, and the ever present &lt;a title="Yankee Group Anywhere Enterprise -- Large: 2009 IT Infrastructure Survey" href="http://blogs.yankeegroup.com/wp-content/uploads/2010/07/cloud-computing-barriers.gif"&gt;cloud security concerns&lt;/a&gt; will eventually be addressed.  This project is in the very early stages and will continue to evolve as folks &lt;a title="openstack code" href="http://launchpad.net/openstack/"&gt;pick up the code&lt;/a&gt;, test it and decide how it might work for them.  Maybe it’ll also help push along and enable the whole &lt;a title="The Inter-Cloud: Will MAE become a MAC?" href="http://devcentral.f5.com/weblogs/psilva/archive/2010/03/23/the-inter-cloud-will-mae-become-a-mac.aspx"&gt;Inter-Cloud&lt;/a&gt; notion. &lt;/p&gt;  &lt;p&gt;And one from Confucius: &lt;a href="http://www.quotationspage.com/quote/24046.html"&gt;&lt;em&gt;The cautious seldom err&lt;/em&gt;.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;em&gt;&lt;em&gt;&lt;em /&gt;&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;em /&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;ps&lt;/p&gt;  &lt;p&gt;The CloudFucius Series: &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/04/07/cloudfucius-says-blog-series-good-idea.aspx"&gt;Intro&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/04/13/cloudfucius-says-aaa-important-to-cloud.aspx"&gt;1&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/04/21/cloudfucius-wonders-can-cloud-confidentiality-and-the-constitution-coexist.aspx"&gt;2&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/04/27/cloudfucius-hollers-read-all-about-f5rsquos-on-demand-it.aspx"&gt;3&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/05/05/cloudfucius-ponders-high-availability-in-the-cloud.aspx"&gt;4&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/05/11/cloudfucius-wants-an-optimized-cloud.aspx"&gt;5&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/Default.aspx"&gt;6&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/05/25/cloudfucius-combines-security-and-acceleration.aspx"&gt;7&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/05/26/cloudfucius-listens-f5rsquos-cloud-computing-solutions.aspx"&gt;8&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/06/01/cloudfucius-shares-cloud-research-and-stats.aspx"&gt;9&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/06/10/connecting-to-a-cloud-while-flying-thru-the-clouds.aspx"&gt;10&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/06/14/99-blog-posts-on-the-wall.aspx"&gt;11&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/07/07/cloudfucius-dials-up-the-cloud.aspx"&gt;12&lt;/a&gt;, &lt;a title="CloudFucius Tunes into Radio KCloud" href="http://devcentral.f5.com/weblogs/psilva/archive/2010/07/14/cloudfucius-tunes-into-radio-kcloud.aspx"&gt;13&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Resources:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://bits.blogs.nytimes.com/2010/07/20/the-recipe-for-clouds-goes-open-source/"&gt;The Recipe for Clouds Goes Open-Source&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="Open Stack Launches" href="http://thecommandline.net/2010/07/19/open-stack-launches/"&gt;Open Stack Launches&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://arstechnica.com/open-source/news/2010/07/nasa-and-rackspace-part-the-clouds-with-open-source-project.ars"&gt;NASA and Rackspace part the clouds with open source project&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.linuxinsider.com/story/Rackspaces-Risky-Open-Cloud-Bet-70442.html?wlc=1279650872"&gt;Rackspace's Risky Open Cloud Bet&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.observenews.com/rackspace-launches-open-source-cloud-platform-called-openstack/906"&gt;Rackspace Launches Open-Source Cloud Platform Called OpenStack&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.channelregister.co.uk/2010/07/20/why_nasa_is_dropping_eucalyptus_from_its_nebula_cloud/"&gt;NASA drops Ubuntu's Koala food for (real) open source&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.theregister.co.uk/2010/07/19/nasa_rackspace_openstack/"&gt;NASA and Rackspace open source cloud fluffer&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.sys-con.com/node/1469519"&gt;All for One Cloud and One Cloud for All&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="Rackspace, NASA launch OpenStack: Can it prevent cloud lock-in?" href="http://www.zdnet.com/blog/btl/rackspace-nasa-launch-openstack-can-it-prevent-cloud-lock-in/36850"&gt;Rackspace, NASA launch OpenStack: Can it prevent cloud lock-in?&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.yankeegroup.com/2010/07/20/openstack-is-great-but-clouds-need-security-meet-the-clean-cloud/"&gt;OpenStack is great, but Clouds need security. Meet the Clean Cloud.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://wiki.openstack.org/"&gt;OpenStack Wiki&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://launchpad.net/openstack/"&gt;Openstack Code&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5"&gt;F5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/infrastructure+2.0"&gt;infrastructure 2.0&lt;/a&gt;, &lt;a href="http://technorati.com/tags/integration"&gt;integration&lt;/a&gt;, &lt;a href="http://technorati.com/tags/cloud+connect"&gt;cloud connect&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Pete+Silva"&gt;Pete Silva&lt;/a&gt;, &lt;a href="http://technorati.com/tags/security"&gt;security&lt;/a&gt;, &lt;a href="http://technorati.com/tag/business"&gt;business&lt;/a&gt;, &lt;a href="http://technorati.com/tag/education"&gt;education&lt;/a&gt;, &lt;a href="http://technorati.com/tag/technology"&gt;technology&lt;/a&gt;, &lt;a href="http://technorati.com/tags/application+delivery"&gt;application delivery&lt;/a&gt;, &lt;a href="http://technorati.com/tags/cloud"&gt;cloud&lt;/a&gt;, &lt;a href="http://technorati.com/tags/context-aware"&gt;context-aware&lt;/a&gt;, &lt;a href="http://technorati.com/tags/web"&gt;web&lt;/a&gt;, &lt;a href="http://technorati.com/tags/internet"&gt;internet,&lt;/a&gt; &lt;a href="http://technorati.com/tags/openstack"&gt;openstack&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;twitter: &lt;a href="http://twitter.com/psilvas"&gt;@psilvas&lt;/a&gt;&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:right; margin:0px; padding:4px 0px 4px 0px;"&gt;&lt;a href="http://digg.com/submit?url=http%3a%2f%2fdevcentral.f5.com%2fweblogs%2fpsilva%2farchive%2f2010%2f07%2f20%2fcloudfucius-asks-will-open-source-open-doors-for-cloud-computing.aspx&amp;amp;title=CloudFucius+Asks%3a+Will+Open+Source+Open+Doors+for+Cloud+Computing%3f"&gt;&lt;img src="http://digg.com/img/badges/100x20-digg-button.png" width="100" height="20" alt="Digg This" title="Digg This" border="0" style="border: 0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/psilva/aggbug/1090186.aspx" width="1" height="1" /&gt;</description><pubDate>Tue, 20 Jul 2010 06:02:22 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/psilva/archive/2010/07/20/cloudfucius-asks-will-open-source-open-doors-for-cloud-computing.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Pete Silva</dc:creator></item><item><title>Many Stops is Good for Vacation, Not for WAN Opt</title><link>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/20/many-stops-is-good-for-vacation-not-for-wan-opt.aspx</link><description>&lt;p&gt;Anyone who has children and travels by car will tell you that there is no substitute for the mandatory array of bathroom breaks that must be taken by those children. One of the many reasons I prefer to travel at&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/ManyStopsisGoodforVacationNotforWANOpt_BBB3/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/ManyStopsisGoodforVacationNotforWANOpt_BBB3/image_thumb.png" width="242" height="95" /&gt;&lt;/a&gt; night when driving long distances is that children who are asleep are not asking to pull into the next rest stop for yet another restroom break. And I was one of those children. My father once told me I had the smallest bladder on the planet… Right before my mother made him stop at a gas station for me.&lt;/p&gt;  &lt;p&gt;Another favorite is the “tourist trap” stop, where someone in the car with authority decides to stop, even though everyone over the age of 12 knows that the stop will be wasted on sites like “The World’s only three horned steer!” or “The ultimate hedge maze!” These may be things I’ve seen. May be.&lt;/p&gt;  &lt;p&gt;When driving, these stops slow your drive to your destination and if someone was waiting for you, ultimately make you late, but since you are on a discrete vacation, this is not terribly bad. You get less time on-site, but in the end return home and get into your old routine.&lt;/p&gt;  &lt;p&gt;This is completely not true with your data. &lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;STOP! GO! STOP! WAIT!&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;Every stop on the network path that your data makes is a small disaster for your overall network throughput. The closer your WAN is to capacity, the greater the impact of each stop. &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/ManyStopsisGoodforVacationNotforWANOpt_BBB3/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/ManyStopsisGoodforVacationNotforWANOpt_BBB3/image_thumb_1.png" width="242" height="87" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Those of us who have been hanging in the networking space for too long call it latency, and treat it as a bullet point on a brochure, but it’s a real beast that consumes resources, sometimes with horrendous effects on your network throughput.&lt;/p&gt;  &lt;p&gt;The problem is basically the same one as a long car ride. You’re clipping along, someone sees a rest stop (in this case a network device of any kind – Application Acceleration, &lt;a href="http://www.f5.com/solutions/acceleration/wan-optimization/" target="_blank"&gt;WAN Optimization&lt;/a&gt;, Encryption, whatever), and the packet stops off. The greater the latency, the longer the stop. And then it goes on until it sees the next one. Each stop may be small, but they’re stops that slow down the rate of the packet  across the network/WAN/MAN/airwaves…&lt;/p&gt;  &lt;p&gt;And because most network protocols require a response, and most network protocols are timed, that way lies doom. Imagine if there are 5000 cars behind you, and you have to stop at every restroom you pass, and they all have to follow you through the rest room. But there are 5000 cars coming the other way that have to wait for your cars to get off the road before they can take off. And if you’re too late they send a separate car to go check on you, and then a copy of you gets sent… Okay, maybe the car analogy is breaking down here… Because networks are more complex – there is one you, and you’re going to get to your destination. If a packet doesn’t make it to the destination in a timely manner, a request is sent to go get it, and then the packet comes again.&lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;WHAT I WAS REALLY TRYING TO SAY WAS…&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/ManyStopsisGoodforVacationNotforWANOpt_BBB3/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/ManyStopsisGoodforVacationNotforWANOpt_BBB3/image_thumb_2.png" width="185" height="140" /&gt;&lt;/a&gt; The more congested your network, the more problems latency causes, just because the chance of slowing things down too much grows (it’s not that simple, but close enough for this blog), and once you reach a certain level of packets not arriving in a timely manner, requests and retransmits start filling the rest of the over-burdened pipe and causing even more delays. &lt;/p&gt;  &lt;p&gt;What can you do about it? First, make sure it is or might be a problem for you. Congestion and latency are measurable these days, and it should be pretty straightforward to determine if you have a device that’s gumming up the works. Figuring out where latency is introduced into a connection can be harder but is not insurmountable.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;LESS STOPS, MORE GOODNESS&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;Also, combine functionality where it makes sense. Many years ago I came out against all-in-one security boxes because they offer a single point of failure for a whole array of security on your network, but if you already have a high latency link, they might just ease your pain by eliminating the time it takes to parse packets (among other things) multiple times. Several of our solutions act in much the same manner – utilizing &lt;a href="http://www.f5.com/products/technologies/tmos/" target="_blank"&gt;TMOS&lt;/a&gt; on &lt;a href="http://www.f5.com/products/big-ip/" target="_blank"&gt;BIG-IP&lt;/a&gt; means that any of our solutions sold as a module  - &lt;a href="http://www.f5.com/products/big-ip/product-modules/wan-optimization-module.html" target="_blank"&gt;WOM&lt;/a&gt;, &lt;a href="http://www.f5.com/products/big-ip/product-modules/application-security-manager.html" target="_blank"&gt;ASM&lt;/a&gt;, etc. can act on the packet in conjunction with load balancing requests. Other vendors do similar things by combining functionality (of course I believe not as well as &lt;a href="http://www.f5.com" target="_blank"&gt;F5&lt;/a&gt;, that’s why I work here), and each time you don’t have to touch the packet/envelope/etc, is one less tiny bit of latency you don’t have to worry about.&lt;/p&gt;  &lt;p&gt;With multiple cores, SSL offload, and outrageously huge memory capacities, and Saas/Cloud making WAN communications a growing portion of our overall data communications, we have again turned the corner where the server doesn’t have to be the bottleneck, the network might well be. So it’s time to consider latency as more than a check-box again. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;NOTE: There are many sources of latency, I’m merely drawing your attention to one that is completely within your control. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;After all, the key difference between vacation and the network is that the packet doesn’t care if it stops or not, so don’t make it if you don’t have to.&lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4936ad1a-34c8-4d8b-bed6-b32ae0a9f95f" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Network+Latency" rel="tag"&gt;Network Latency&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WAN+Optimization" rel="tag"&gt;WAN Optimization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Vacation" rel="tag"&gt;Vacation&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+WOM" rel="tag"&gt;F5 WOM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+BIG-IP" rel="tag"&gt;F5 BIG-IP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+ASM" rel="tag"&gt;F5 ASM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+Networks" rel="tag"&gt;F5 Networks&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Don+MacVittie" rel="tag"&gt;Don MacVittie&lt;/a&gt;&lt;/div&gt;  &lt;p align="right"&gt;&lt;a href="http://twitter.com/dmacvittie" target="_blank"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/Rss.aspx" target="_blank"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/don.macvittie" target="_blank"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="right"&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fdmacvittie%2FRss.aspx&amp;amp;t1=" target="_blank"&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Related Articles and Blogs&lt;/p&gt;  &lt;p /&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Latency_(engineering)" target="_blank"&gt;Latency Definitions on Wikipedia&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.potaroo.net/ispcol/2000-09/2000-09-latency.html" target="_blank"&gt;Latency and IP&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.verizonbusiness.com/about/network/latency/" target="_blank"&gt;Verizon Business WW Network Latency Chart&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.wikihow.com/Test-Network-and-Internet-Latency-%28Lag%29-in-Microsoft-Windows" target="_blank"&gt;How to Test Network and Internet Latency in MS-Windows&lt;/a&gt; (&lt;em&gt;very&lt;/em&gt; basic)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://arstechnica.com/business/news/2009/08/new-protocol-could-enable-real-time-network-latency-data.ars" target="_blank"&gt;Researchers Crack Network Latency Nut With New Algorithm&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://devcentral.f5.com/weblogs/dmacvittie/aggbug/1090185.aspx" width="1" height="1" /&gt;</description><pubDate>Tue, 20 Jul 2010 04:21:59 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/20/many-stops-is-good-for-vacation-not-for-wan-opt.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Don MacVittie</dc:creator></item><item><title>HTTP Now Serving &amp;hellip; Everything</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/20/http-now-serving-everything.aspx</link><description>&lt;p&gt;&lt;em&gt;You can’t assume anything about an application’s performance and delivery needs based on the fact that it rides on HTTP. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/HTTPNowServingEverything_9A4D/image_2.png"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 15px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/HTTPNowServingEverything_9A4D/image_thumb.png" width="261" height="478" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h4&gt;I read an interesting article during my daily perusal of most of the Internet (I’ve had to cut back because the Internet is growing faster than my ability to consume) on “&lt;a href="http://www.matsoccumbria.org/index.php/2010/07/13/whats-driving-creation-of-virtual-micro-networks/"&gt;Virtual Micro Networks&lt;/a&gt;.” &lt;/h4&gt;  &lt;blockquote style="padding-bottom: 10px; margin: 10px; padding-left: 10px; padding-right: 10px; background: #fec; padding-top: 10px"&gt;   &lt;p&gt;     &lt;br /&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/HTTPNowServingEverything_9A4D/quote-left_2.png"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="quote-left" border="0" alt="quote-left" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/HTTPNowServingEverything_9A4D/quote-left_thumb.png" width="24" height="21" /&gt;&lt;/a&gt; The VMN concept goes well beyond Virtual Local Area Networks (VLANs). Like VLANs or any other network, VMNs transport data from source to destination. But VMNs extend beyond transport to consider security, location, users, and applications. VMNs address: &lt;/p&gt;    &lt;p&gt;Where is the information? The answer to this question used to be a physical server or storage device but application switching and server/storage virtualization makes this more dynamic and complex. &lt;/p&gt;    &lt;p&gt;[…] &lt;/p&gt;    &lt;p&gt;VMNs also must be aware of traffic type. &lt;font color="#ff0000"&gt;For example, voice, video, and storage traffic is extremely latency-sensitive while HTTP traffic is not.&lt;/font&gt; Additionally, some network traffic may contain confidential information that should be encrypted or even blocked. &lt;/p&gt;    &lt;p&gt;What are the specific characteristics of the information? Network-based applications may be made up of numerous services that come together at the user browser. How they get there isn’t always straightforward, thus the rise of vendors like Citrix NetScaler and &lt;a title="F5 Networks" href="http://www.f5.com/" rel="" target="_blank"&gt;F5&lt;/a&gt; Networks. This is also where security comes into play as certain traffic may be especially sensitive, suspicious, or susceptible. [emphasis added] &lt;/p&gt;    &lt;h5&gt;&lt;a href="http://www.matsoccumbria.org/index.php/2010/07/13/whats-driving-creation-of-virtual-micro-networks/"&gt;What’s driving creation of Virtual Micro Networks&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/h5&gt; &lt;/blockquote&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p /&gt;  &lt;p&gt;Okay, so first things first: the author really is using another term to describe what we’ve been calling for some time an application delivery network. That was cool in and of itself; not the emergence of yet another TLA but that the concept is apparently out there and rising. But what was even more interesting was the conversation this started on Twitter. If you don’t follow &lt;a href="http://twitter.com/csoandy"&gt;@csoandy&lt;/a&gt; (that’s the Twitternym of Andy Ellis of &lt;a href="http://www.akamai.com/"&gt;Akamai Networks&lt;/a&gt;) you might want to start. Andy pointed out that the statement “HTTP traffic is not latency-sensitive” is a bit too broad and went on to point out that it really depends on what you’re delivering. Live video, after all, &lt;em&gt;is&lt;/em&gt; sensitive to latency no matter what protocol is transporting it. &lt;/p&gt;  &lt;p&gt;Andy put it well in an off-line conversation when he said, “There's also the myth that HTTP isn't for low latency apps. HTTP lets you take advantage of optimizations done in TCP and HTTP to accelerate delivery.” A great point and very true. All the “&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/06/25/f5-friday-speed-matters.aspx"&gt;built-in acceleration and optimization” of an application delivery controller’s TCP stack&lt;/a&gt; is free for HTTP because after all, HTTP rides on TCP. But ironically this is also where things get a bit wonky. &lt;/p&gt;  &lt;p&gt;The reality is that the application &lt;em&gt;data&lt;/em&gt; is sensitive, not the protocol. But because the data HTTP was initially designed to transport was &lt;em&gt;not&lt;/em&gt; considered to be latency sensitive, you almost have to look at HTTP as though &lt;em&gt;it is, &lt;/em&gt;which is why the broad statement bothered Andy in the first place.&lt;em&gt; &lt;/em&gt;We wouldn’t say something like “TCP” or “UDP” is not sensitive to latency because these are transport layer protocols. We need to know about the data that’s being transported. Similarly, we can’t (anymore) say “HTTP isn’t sensitive to latency” because HTTP is the de facto transport protocol of web applications. As I remarked to Andy, the move to deliver everything via HTTP changes things significantly. “Things” being the entire realm of optimization, acceleration, and application delivery. &lt;/p&gt;  &lt;h3&gt;&lt;font color="#800000"&gt;&lt;strong&gt;Context is Everything &lt;/strong&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;h4&gt;As the initial blog post that started this conversation pointed out, and which nothing Andy and I discussed really changed, is that our nearly complete reliance on &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/05/21/3283.aspx"&gt;HTTP as the de facto transport protocol&lt;/a&gt; for everything means that the infrastructure really needs to be aware of the context in which requests and responses are handled.&lt;/h4&gt;  &lt;p&gt; When an HTTP GET and its associated response might in one case be a simple binary image and in another case it might be the initiation of a live video stream,  well, the infrastructure better be able to not only recognize the difference but &lt;em&gt;handle them differently.&lt;/em&gt; HTTP doesn’t change regardless, but the delivery needs of the data do change. &lt;/p&gt;  &lt;p&gt;This is the “application aware” mantra we (as in the entire application delivery industry) have been chanting for years. And now it’s becoming an imperative because HTTP no longer implies text and images, it implies &lt;em&gt;nothing&lt;/em&gt;. The infrastructure responsible for delivering (securing, optimizing, accelerating, &lt;a title="" href="http://www.f5.com/glossary/load-balancing.html" rel=""&gt;load balancing&lt;/a&gt;) the access to that application data cannot assume anything; not session length, not content length, not content type, not optimal network conditions. The policies that might ensure a secure, fast, and available web application are almost certainly not the same policies that will provide the same assurance for video, or audio, or even lengthy binary data. The policies that govern the delivery of a user-focused application are not the same ones that should &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/HTTPNowServingEverything_9A4D/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 10px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/HTTPNowServingEverything_9A4D/image_thumb_1.png" width="493" height="275" /&gt;&lt;/a&gt;govern the delivery of integration-driven applications like Web 2.0 and &lt;a title="" href="http://www.f5.com/solutions/cloud-computing" rel=""&gt;cloud computing &lt;/a&gt; APIs. These are different data types, different use cases, different needs. &lt;/p&gt;  &lt;p&gt;Yet they are all delivered via the same protocol: HTTP. &lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;&lt;font color="#800000"&gt;Dynamic Infrastructure Needed &lt;/font&gt;&lt;/strong&gt;&lt;/h3&gt;  &lt;h4&gt;What makes this all even more complicated (yes, it does get worse as a matter of fact) is that not only is the same protocol used to deliver different types of data but in many cases it may be delivered to the same user in the same session.&lt;/h4&gt;  &lt;p&gt; A user might move from an article or blog to a video back to text all the while a stream of &lt;a href="http://twitter.com"&gt;Twitter&lt;/a&gt; and &lt;a href="http://www.facebook.com"&gt;Facebook&lt;/a&gt; updates are updating a gadget in that application. And the same infrastructure has to handle all of it. Simultaneously. &lt;/p&gt;  &lt;p&gt;Wheeeeeeeeeee! &lt;/p&gt;  &lt;p&gt;That HTTP can be extended (and has been, and will continue to be) to include broad advanced capabilities has been a blessing and a curse, for as we deliver more and more differenter content over the same protocol the infrastructure must be able to ascertain dynamically what type of data is being delivered and apply the appropriate actions dynamically. And it has to incorporate user information, as well, because applications highly sensitive to latency need special care and feeding when delivered over a congested, bandwidth constrained network as opposed to delivery via a high-speed, low latency LAN. The application delivery network, from user to application and back, must be context-aware and able to “turn on a dime” as it were, and adjust delivery policies based on conditions at the time of the request and subsequent responses. It’s got to by dynamic.  &lt;/p&gt;  &lt;p&gt;Consider the comparison offered by Andy regarding video served via traditional protocols and HTTP: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/HTTPNowServingEverything_9A4D/quote-left_6.png"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="quote-left" border="0" alt="quote-left" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/HTTPNowServingEverything_9A4D/quote-left_thumb_2.png" width="24" height="21" /&gt;&lt;/a&gt;Consider a live stream; say, Hope for Haiti. A user opens a browser, and has a small embedded video, with a button to expand to full screen. With most streaming protocols, to get a higher resolution stream, your player needs to either:&lt;/p&gt;    &lt;p&gt;a) start grabbing a second, high res stream in the background, and guess when to splice them over. (now consider if the stream is too fat, and you need to downgrade)&lt;/p&gt;    &lt;p&gt;b) pause (drop existing stream) and grab a new stream, exposing buffering to a user.&lt;/p&gt;    &lt;p&gt;c) signal somehow to the streaming server that it should splice in new content (we built this. it's *hard* to get right. And you have to do it differently for each protocol).&lt;/p&gt;    &lt;p&gt;With HTTP, instead what you see is:&lt;/p&gt;    &lt;p&gt;a) Browser player is grabbing short (usually 2) second chunks of live streaming content. When it detects that it is fuller screen, and, inferring available bandwidth by how long it takes to download a chunk, ask for a higher resolution chunk for the next available piece.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Quite the difference, isn’t it? But underlying that simplicity is the ubiquity of HTTP and a highly dynamic, flexible infrastructure capable of adapting to the sensitivities specific not only to the protocol, to the data, but to the &lt;em&gt;type&lt;/em&gt; of data being delivered. &lt;/p&gt;  &lt;p&gt;So it turns that both Andy and I are both right, it just depends on how you’re looking at it. It isn’t that HTTP is sensitive to latency, it isn’t. But the data being delivered over HTTP most certainly is. But it &lt;em&gt;is&lt;/em&gt; confusing to discuss HTTP in broad, general terms because you can’t assume anymore that what’s being delivered is text and images. We don’t talk in terms of TCP when we talk web applications, so maybe it’s time to stop generalizing about “HTTP” and start focusing on applications and data, about the &lt;em&gt;content, &lt;/em&gt;because that’s where the real challenges surrounding performance and security are hiding. &lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="100%"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="70%"&gt;         &lt;h3&gt;Related Posts&lt;/h3&gt;          &lt;ul&gt;           &lt;li&gt;&lt;a href="http://www.matsoccumbria.org/index.php/2010/07/13/whats-driving-creation-of-virtual-micro-networks/"&gt;What’s driving creation of Virtual Micro Networks&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/05/21/3283.aspx"&gt;HTTP: The de facto application transport protocol of the Web&lt;/a&gt;&lt;/li&gt;         &lt;/ul&gt;          &lt;div class="wlw_related_posts"&gt;from tag &lt;a href="http://del.icio.us/lmacvittie/context-aware"&gt;context-aware&lt;/a&gt;            &lt;br /&gt;&lt;/div&gt;          &lt;div class="wlw_related_posts"&gt;           &lt;ul&gt;             &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/06/15/top-to-bottom-is-the-new-end-to-end.aspx"&gt;Top-to-Bottom is the New End-to-End&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/29/call-me-crazy-but-application-awareness-should-be-about-the-application.aspx"&gt;Call Me Crazy but Application-Awareness Should Be About the Application&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/24/cool-hand-cloud.aspx"&gt;Cool Hand Cloud&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/05/when-everything-is-a-threat-nothing-is-a-threat.aspx"&gt;When Everything is a Threat Nothing is a Threat&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/04/the-ip-address-ndash-identity-disconnect.aspx"&gt;The IP Address - Identity Disconnect&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/02/17/what-if-users-could-specify-their-own-slas.aspx"&gt;What if users could specify their own SLAs?&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/19/warning-security-device-enclosed.aspx"&gt;WARNING: Security Device Enclosed&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/08/28/the-end-of-dns-as-we-know-it.aspx"&gt;The End of DNS As We Know It&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/07/29/denied.aspx"&gt;Denied!&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/06/30/intercloud-the-evolution-of-global-application-delivery.aspx"&gt;Intercloud: The Evolution of Global Application Delivery&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/04/30/picard-and-dathon-at-el-adrel.aspx"&gt;Picard and Dathon at El-Adrel&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/01/28/infrastructure-2.0-as-a-matter-of-fact-that-isnt-what.aspx"&gt;Infrastructure 2.0: As a matter of fact that isn't what it means&lt;/a&gt;&lt;/li&gt;           &lt;/ul&gt;         &lt;/div&gt;         &lt;a href="http://del.icio.us/lmacvittie/context-aware"&gt;(more..)&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="30%"&gt;         &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img border="0" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" /&gt;&lt;/a&gt; &lt;a href="http://www.friendfeed.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="friendfeed" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/friendfeed_3.jpg" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;          &lt;p&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;script type="text/javascript" src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355"&gt;&lt;/script&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;h3&gt;   &lt;div class="wlw_related_posts"&gt; &lt;/div&gt; &lt;/h3&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:bcc5fe31-9b40-4f51-af00-760ba2a45bd0" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/f5" rel="tag"&gt;f5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Akamai" rel="tag"&gt;Akamai&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Andy+Ellis" rel="tag"&gt;Andy Ellis&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HTTP" rel="tag"&gt;HTTP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/context-aware" rel="tag"&gt;context-aware&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application-aware" rel="tag"&gt;application-aware&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application+delivery+network" rel="tag"&gt;application delivery network&lt;/a&gt;,&lt;a href="http://technorati.com/tags/dynamic+control+plane" rel="tag"&gt;dynamic control plane&lt;/a&gt;,&lt;a href="http://technorati.com/tags/infrastructure+2.0" rel="tag"&gt;infrastructure 2.0&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application+delivery" rel="tag"&gt;application delivery&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1090184.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 19 Jul 2010 19:06:15 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/20/http-now-serving-everything.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Lori MacVittie</dc:creator></item><item><title>Securing the Corporate Intranet with Access Policy Manager</title><link>http://devcentral.f5.com/weblogs/watkins/archive/2010/07/19/securing-the-corporate-intranet-with-access-policy-manager.aspx</link><description>&lt;p&gt;Fire doors are used to minimize damage to a structure during a fire. In the event of a fire, a central monitoring system will trigger the release of the doors isolating flames and smoke at the epicenter of the disaster while protecting adjacent sectors. While most of our office buildings are built in this fashion, corporate IT environments are largely built like multi-story stick-built mansions with no segregation mechanisms. Someone playing with fire in the tool shed can bring the entire house to the foundation. Does your infrastructure have any such safety net? &lt;/p&gt;  &lt;p&gt;When engineers hear ‘VPN’ or access management, they think of a device that sits on the edge between the corporate intranet and the Internet. All too often, internal corporate traffic is allowed to bypass these barriers and access corporate resources directly. While there may be authentication mechanisms protecting these services, it is almost impossible to secure them all without placing some barrier between them and the users. Enter APM.&lt;/p&gt;  &lt;p&gt;APM is well suited as a demarcation point not only for access from the Internet, but also from the corporate user space. In any organization, users are inherently your largest security risk. Whether a user is accessing the intranet from a non-corporate sponsored machine from their house or a workstation in their cubicle, they should be expected to adhere to the same security standards.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/watkins/WindowsLiveWriter/SecuringthecorporateintranetwithAccessPo_DAA3/001_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="001" border="0" alt="001" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/watkins/WindowsLiveWriter/SecuringthecorporateintranetwithAccessPo_DAA3/001_thumb_1.png" width="376" height="227" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;In a “flat” security model, all corporate users can see any resource (even if it is just a login page) whether or not they meet the authorization requirements. Is there really any reason why John in product development should ever be able to see the corporate payroll system? Even if he can’t access the information, he can still see it. That means if John’s workstation is compromised, an attacker may be able to use his access to execute an exploit against this system thereby gaining access to precious corporate information. This may be a far-fetched example, but such things have happened and in many cases they’ve made major news headlines. This is not the kind of press any large corporation wants.&lt;/p&gt;  &lt;p&gt;In terms of physical security, we can use APM to ensure that every packet that is exchanged between our user subnets and the secure corporate space is encrypted. This protects any insecure data from being compromised by an eaves dropping attack and does so at a fraction of the cost of fiber.&lt;/p&gt;  &lt;p&gt;If properly implemented, Access Policy Manager should not present any hurdles to the end user. In fact, with single sign-on (SSO) credential mapping features, APM should actually improve user experience. This means when Joan in human resources logs into her Edge Client in the morning and receives her session for the day, APM will cache her credentials. She won’t have to type her credentials every time she access the payroll system because APM will enter them for her. &lt;/p&gt;  &lt;p&gt;The end result of securing your corporate resources with APM is increased security for your environment and improved accessibility for your users. While nothing can protect against every potential security breach, APM can go a long way in ensuring that a single attack will not bring your organization to its knees.&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/watkins/aggbug/1090183.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 19 Jul 2010 07:44:11 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/watkins/archive/2010/07/19/securing-the-corporate-intranet-with-access-policy-manager.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>George Watkins</dc:creator></item><item><title>A funny Thing Happened on the Way to the Branch Office&amp;hellip;</title><link>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/19/a-funny-thing-happened-on-the-way-to-the-branch.aspx</link><description>&lt;p&gt;Where you are going has a huge impact upon the mode of transportation that you choose to use. If you are going to the neighbor’s house, you tend to walk. If on your way to town or downtown, you tend to take&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/AfunnyThingHappenedontheWaytotheBranchOf_B7B9/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/AfunnyThingHappenedontheWaytotheBranchOf_B7B9/image_thumb.png" width="244" height="183" /&gt;&lt;/a&gt; a motorized vehicle. Out for a leisurely trip around the subdivision? You are likely going to ride a bike. Going to another continent, probably a plane, maybe a ship… You get the idea.&lt;/p&gt;  &lt;p&gt;Several years ago (while working for Network Computing) I reviewed &lt;a href="http://www.f5.com/solutions/acceleration/wan-optimization/" target="_blank"&gt;WAN Optimization&lt;/a&gt; products, with an eye to file transfer acceleration. Interestingly, &lt;a href="http://www.f5.com" target="_blank"&gt;F5&lt;/a&gt; decided not to participate in that review (I won’t conjecture why, they weren’t alone). At the time, all WAN Optimization was treated pretty much equally. Tacit Networks (later bought by Packeteer, who was subsequently purchased by Blue Coat) was pretty zeroed in on remote office access and acceleration, but all of the other vendors I looked at were, at the time, treating all WAN Optimization greatly the same.&lt;/p&gt;  &lt;p&gt;These days that’s far from the truth, with different feature sets of WAN Optimization products aimed at DC-to-DC or DC-to-Cloud versus DC-to-remote office. Talking over the differences and how they influence product development with one of our uber-smart PD people spawned some intriguing points that make these product sets completely different, though they may well use the same set (or overlapping sets) of functionality.&lt;/p&gt;  &lt;p&gt;Back in the day, Tacit networks had approached the problem by going very &lt;a href="http://www.microsoft.com" target="_blank"&gt;Microsoft&lt;/a&gt; heavy. They tied their file acceleration to Microsoft technology, along with several other “add-on” functionality bits. It made their product unique, but overall the product didn’t fit well into our review because we were looking at something more acceleration focused and they were more general remote office focused (you could accelerate a Windows-shared printer in the DC, for example). These days the industry has a more firm grasp on what it takes to serve a remote office versus a remote DC, and the devices share a decent amount of functionality while still targeting different market needs.&lt;/p&gt;  &lt;p&gt;The thing that got this blog started was pretty simple, but I had not paused to consider. Remote office devices pretty much require fail-to-wire functionality because there is no other route to get out of most remote offices, and there is often no IT staff at the remote office to make the routing changes. DC-to-DC devices however do not require fail-to-wire because there are alternate routes out of the building and plenty of staff to jump if issues come up. This issue becomes less clear if you consider the inclusion of security functionality in WAN Optimization devices. Do you fail to wire on a device that is supposed to be providing edge security? And if not, what are the business implications of rejecting all connections if something goes wrong with the box. This conundrum pretty much guarantees that if the application/connection is important enough to put a WAN Optimization device onto, you should probably get a redundant pair right at the outset.&lt;/p&gt;  &lt;p&gt;Never easy for the IT person, is it? There have been some great changes – like integrated security and all-in-one QoS – that do make your life easier, but they increase the workload… At a minimum on initial configuration and likely off-and-on over the life of the product. But if it keeps you from buying more bandwidth, secures the connection without burden on servers, and handles QoS issues by balancing how much bandwidth a given protocol/app can use up… A few hours setting it up and tweaking configs is reasonable, no?&lt;/p&gt;  &lt;p&gt;No doubt there will be more to come on similar topics, I have a ton of notes from these conversations, and there’s some cool stuff hiding in there.&lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7835f564-d44b-4b02-89ed-a437e6687c4f" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/WAN+Optimization" rel="tag"&gt;WAN Optimization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+WOM" rel="tag"&gt;F5 WOM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+Networks" rel="tag"&gt;F5 Networks&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Remote+office+connectivity" rel="tag"&gt;Remote office connectivity&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Don+MacVittie" rel="tag"&gt;Don MacVittie&lt;/a&gt;&lt;/div&gt;  &lt;p align="right"&gt;&lt;a href="http://twitter.com/dmacvittie" target="_blank"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/Rss.aspx" target="_blank"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/don.macvittie" target="_blank"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="right"&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fdmacvittie%2FRss.aspx&amp;amp;t1=" target="_blank"&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Related Articles and Blogs&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.networkworld.com/news/2010/042610-interop-f5-wan-optimization.html" target="_blank"&gt;F5 Steers WAN Optimization to Virtual, Cloud Environments&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.enterprisenetworkingplanet.com/netsp/article.php/3646606/WAN-Optimization-101-Know-Your-Options.htm" target="_blank"&gt;WAN Optimization 101: Know Your Options&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/05/14/like-a-matrushka-wan-optimization-is-nested.aspx" target="_blank"&gt;Like a Matrushka, WAN Optimization is Nested&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/06/30/stop-repeating-yourself.-deduping-wan-opt-style.aspx" target="_blank"&gt;Stop Repeating Yourself: Deduping WAN Opt Style&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://devcentral.f5.com/weblogs/dmacvittie/aggbug/1090181.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 19 Jul 2010 04:04:59 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/19/a-funny-thing-happened-on-the-way-to-the-branch.aspx#comment</comments><slash:comments>2</slash:comments><dc:creator>Don MacVittie</dc:creator></item><item><title>Defeating Attacks Easier Than Detecting Them</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/19/defeating-timing-attacks-easier-than-detecting-them.aspx</link><description>&lt;p&gt;&lt;em&gt;Defeating modern attacks – even distributed ones – isn’t the problem. The problem is detecting them in the first place. &lt;/em&gt;&lt;/p&gt;  &lt;h4&gt;Last week researchers claimed they’ve discovered a way to exploit a basic security flaw that’s used in software that’s in high use by Web 2.0 applications to essentially support if not single-sign on then the next best thing – a single source of online identity.&lt;/h4&gt;  &lt;p&gt;The prevalence of OAuth and OpenID across the Web 2.0 application realm could potentially be impacted (and not in a good way) if the flaw were to be exploited. Apparently a similar flaw was used in the past to successfully exploit Microsoft’s Xbox 360. So the technique is possible and has been proven “in the wild.” &lt;/p&gt;  &lt;blockquote style="padding-bottom: 10px; margin: 10px; padding-left: 10px; padding-right: 10px; background: #fec; padding-top: 10px"&gt;   &lt;p&gt;&lt;strong&gt;       &lt;br /&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/DefeatingTimingAttacksisEasy.DetectingT_BE19/quote-left_2.png"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="quote-left" border="0" alt="quote-left" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/DefeatingTimingAttacksisEasy.DetectingT_BE19/quote-left_thumb.png" width="24" height="21" /&gt;&lt;/a&gt; &lt;/strong&gt;&lt;strong&gt;The attacks are thought to be so difficult because they require very precise measurements&lt;/strong&gt;. They crack passwords by measuring the time it takes for a computer to respond to a login request. On some login systems, the computer will check password characters one at a time, and kick back a "login failed" message as soon as it spots a bad character in the password. This means a computer returns a completely bad login attempt a tiny bit faster than a login where the first character in the password is correct.&lt;/p&gt;    &lt;p&gt;[…] &lt;/p&gt;    &lt;p&gt;But Internet developers have long assumed that there are too many other factors -- called network jitter -- that slow down or speed up response times and make it almost impossible to get the kind of precise results, where nanoseconds make a difference, required for a successful timing attack. &lt;/p&gt;    &lt;p&gt;Those assumptions are wrong, according to Lawson, founder of the security consultancy Root Labs. He and Nelson tested attacks over the Internet, local-area networks and in &lt;a href="http://www.computerworld.com/s/topic/158/Cloud+Computing"&gt;cloud computing&lt;/a&gt; environments and found they were able to crack passwords in all the environments by using algorithms to weed out the network jitter.       &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://www.computerworld.com/s/article/9179224/Researchers_Password_crack_could_affect_millions "&gt;Researchers: Password crack could affect millions&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;ComputerWorld, July 2010      &lt;br /&gt;      &lt;br /&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;   &lt;br /&gt;Actually, after reading the first few paragraphs I’m surprised that this flaw wasn’t exploited a lot sooner than it was. The ability to measure fairly accurately the components that make up web application&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/DefeatingTimingAttacksisEasy.DetectingT_BE19/image_16.png"&gt;&lt;img style="border-right-width: 0px; margin: 10px 10px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/DefeatingTimingAttacksisEasy.DetectingT_BE19/image_thumb_7.png" width="282" height="236" /&gt;&lt;/a&gt; performance is not something that’s unknown, after all.  So the claim that an algorithm can correctly “weed out” network latency is not at all surprising. &lt;/p&gt;  &lt;p&gt;But what if the performance was randomized by, say, an intermediary interjecting additional delays into the response? You can’t accurately account for something that’s randomly added (or not added, as the case may be) and as long as you seeded the random generation with something that cannot be derived from the context of the session there are few algorithms that could figure out what the random generation seed might be. That’s important because &lt;a href="http://seclists.org/fulldisclosure/2005/Jun/397"&gt;random number generation often isn’t&lt;/a&gt; and it can often be &lt;a href="http://en.wikipedia.org/wiki/Pseudorandom_number_generator"&gt;predicted based on knowing what was used to seed the generator&lt;/a&gt;. So we could defeat such an attack by simply injecting random amounts of delay into the response. &lt;/p&gt;  &lt;p&gt;Or, because the attack depends on an observable difference in timing, simply normalizing response times for the login process would also defeat this attack. This is the solution pointed out in another article on the discovery, “&lt;a href="http://thenextweb.com/socialmedia/2010/07/17/oauth-and-openid-authentication-vulnerable-to-timing-attack/"&gt;OAuth and OpenID Vulnerable to Timing Attack&lt;/a&gt;”, in which it is reported developers of impacted libraries indicate that just &lt;strong&gt;six lines of code&lt;/strong&gt; will solve this problem by normalizing response times. This, of course, illustrates a separate problem, which is the reliance on external sources to address security risks that millions may be vulnerable to &lt;em&gt;now &lt;/em&gt;because while it’s a simple resolution, it may takes days, weeks, or more before it is available. &lt;/p&gt;  &lt;p&gt;This particular attack would indeed be disastrous were it to be exploited given the reliance on these libraries by so many popular web sites. And though the solutions are fairly easy to implement, that isn’t the &lt;em&gt;real&lt;/em&gt; problem. The real problem is how difficult such attacks are becoming to detect, especially in the face of the risk incurred by remaining vulnerable while solutions are developed and distributed. &lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;&lt;font color="#800000"&gt;DEFEATING is EASY. DETECTING is HARD.&lt;/font&gt; &lt;/strong&gt;&lt;/h3&gt;  &lt;h4&gt;The trick here, and what makes many modern attacks so dangerous is that it’s really really hard to detect them in the first place. &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/DefeatingTimingAttacksisEasy.DetectingT_BE19/image_12.png"&gt;&lt;img style="border-right-width: 0px; margin: 10px 0px 0px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/DefeatingTimingAttacksisEasy.DetectingT_BE19/image_thumb_5.png" width="548" height="386" /&gt;&lt;/a&gt; &lt;/h4&gt;  &lt;p&gt;Any attack that could be distributed across multiple clients – clients smart enough to synchronize and communicate with one another – becomes difficult to detect, especially in a load balanced (elastic) environment in which those requests are likely spread across multiple application instances. The variability in where attacks are coming from makes it very difficult to see an attack occurring in real-time because no single stream exhibits the behavior most security-focused infrastructure watches for. &lt;/p&gt;  &lt;p&gt;What’s needed to detect such an attack is to be more concerned with &lt;em&gt;what &lt;/em&gt;is being targeted rather than &lt;em&gt;by whom &lt;/em&gt;or &lt;em&gt;from where. &lt;/em&gt;While you want to keep track of that data the trigger for such brute-force attacks is the target, not the client activity. Attackers are getting smart, they know that repeated attempts at X or Y will be detected and that more than likely they will find their client blacklisted for a period of time (if not permanently) so they’ve come up with alternative methods that “hide” and try to appear like normal requests and responses instead. In fact it could be postulated that it is not repeated attempts to login from a single location that are the problem today, but rather the attempt to repeatedly login from &lt;em&gt;multiple &lt;/em&gt;locations across time that’s the problem. So what you have to look for is not necessarily (or only) repeated requests but also at repeated attempts to access specific resources, like a login page. &lt;/p&gt;  &lt;p&gt;But a login page is going to see a lot of use so it’s not just the login page you need to be concerned with, but the credentials, as well. In any brute force account level attack there are going to be multiple requests to try to access a resource using the same credentials. &lt;em&gt;That’s &lt;/em&gt;the trigger. It requires more&lt;strong&gt; context&lt;/strong&gt; than your traditional connection or request based security triggers because you’re not just looking at IP address, or resource, you’re looking deeper and trying to infer from a combination of data and behavior what’s going on. &lt;/p&gt;  &lt;h3&gt;&lt;font color="#800000"&gt;THIS SITUATION will BECOME the STATUS QUO&lt;/font&gt;&lt;/h3&gt;  &lt;h4&gt;As we move forward into a &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/05/19/are-you-ready-for-the-new-network.aspx"&gt;new networking&lt;/a&gt; frontier, as applications and users are decoupled from IP addresses and distribution of both clients and applications across &lt;a title="" href="http://www.f5.com/solutions/cloud-computing" rel=""&gt;cloud computing &lt;/a&gt; environments becomes more common, the detection of attacks is going to get even more difficult without collaboration. &lt;/h4&gt;  &lt;p&gt;The new network, the integrated and collaborative network, the dynamic network, is going to become a requirement.  Network and application network and security infrastructure needs a new way of combating modern threats and their attack patterns. That new way is going to require context and the sharing of that context across all &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/06/17/what-is-a-strategic-point-of-control-anyway.aspx"&gt;strategic points of control&lt;/a&gt; at which such attacks might be mitigated. &lt;/p&gt;  &lt;p&gt;This becomes important because, as pointed out earlier, many web applications rely upon third-party solutions for functionality. Open source or not, it still takes time for developers to implement a solution and subsequently for organizations to incorporate and redeploy the “patched” application. That leaves users of such applications vulnerable to exploitation or identity theft in the interim. Security infrastructure must be able to detect such attacks in order to protect users and corporate resources (infrastructure and applications and data) from exploitation while they wait for such solutions. &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/06/when-is-more-important-than-where-in-web-application-security.aspx"&gt;When is more important than where&lt;/a&gt; when it comes to addressing newly discovered vulnerabilities, but &lt;em&gt;when &lt;/em&gt;is highly dependent upon the ability of infrastructure to detect an attack in the first place. &lt;/p&gt;  &lt;p&gt;We’re going to need infrastructure that is &lt;strong&gt;context-aware&lt;/strong&gt;. &lt;/p&gt;  &lt;p /&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;p /&gt;  &lt;p&gt;   &lt;/p&gt;&lt;table border="0" cellspacing="0" cellpadding="2" width="100%"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="70%"&gt;           &lt;h3&gt;Related Posts&lt;/h3&gt;            &lt;p&gt;from tag &lt;a href="http://del.icio.us/lmacvittie/brute-force"&gt;brute-force&lt;/a&gt;&lt;/p&gt;            &lt;ul /&gt;            &lt;div class="wlw_related_posts"&gt;             &lt;ul&gt;               &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/01/05/stop-brute-force-listing-of-http-options-with-network-side-scripting.aspx"&gt;Stop brute force listing of HTTP OPTIONS with network-side scripting&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt; from tag &lt;a href="http://del.icio.us/lmacvittie/Twitter"&gt;Twitter&lt;/a&gt;              &lt;br /&gt;              &lt;ul&gt;               &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/25/are-you-scrubbing-the-twitter-stream-on-your-web-site.aspx"&gt;Are You Scrubbing the Twitter Stream on Your Web Site?&lt;/a&gt;&lt;/li&gt;                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/05/twitter-account-lockouts-continue-to-plague-users.aspx"&gt;Twitter Account Lockouts Continue to Plague Users&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt; from tag &lt;a href="http://del.icio.us/lmacvittie/context-aware"&gt;context-aware&lt;/a&gt;              &lt;br /&gt;              &lt;ul&gt;               &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/04/the-ip-address-ndash-identity-disconnect.aspx"&gt;The IP Address - Identity Disconnect&lt;/a&gt;&lt;/li&gt;                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/01/28/infrastructure-2.0-as-a-matter-of-fact-that-isnt-what.aspx"&gt;Infrastructure 2.0: As a matter of fact that isn't what it means&lt;/a&gt;&lt;/li&gt;                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/05/when-everything-is-a-threat-nothing-is-a-threat.aspx"&gt;When Everything is a Threat Nothing is a Threat&lt;/a&gt;&lt;/li&gt;                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/07/29/denied.aspx"&gt;Denied!&lt;/a&gt;&lt;/li&gt;                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/24/cool-hand-cloud.aspx"&gt;Cool Hand Cloud&lt;/a&gt;&lt;/li&gt;                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/29/call-me-crazy-but-application-awareness-should-be-about-the-application.aspx"&gt;Call Me Crazy but Application-Awareness Should Be About the Application&lt;/a&gt;&lt;/li&gt;                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/19/warning-security-device-enclosed.aspx"&gt;WARNING: Security Device Enclosed&lt;/a&gt;&lt;/li&gt;                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/04/30/picard-and-dathon-at-el-adrel.aspx"&gt;Picard and Dathon at El-Adrel&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt;             &lt;a href="http://del.icio.us/lmacvittie/context-aware"&gt;(more..)&lt;/a&gt;&lt;/div&gt;         &lt;/td&gt;          &lt;td valign="top" width="30%"&gt;           &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img border="0" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" /&gt;&lt;/a&gt; &lt;a href="http://www.friendfeed.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="friendfeed" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/friendfeed_3.jpg" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;            &lt;p&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;script type="text/javascript" src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355"&gt;&lt;/script&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;   &lt;h3&gt; &lt;/h3&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d7a8c09a-a7e5-4809-9d92-e4519a9c1938" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/security" rel="tag"&gt;security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web+application+security" rel="tag"&gt;web application security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/OAuth" rel="tag"&gt;OAuth&lt;/a&gt;,&lt;a href="http://technorati.com/tags/OpenID" rel="tag"&gt;OpenID&lt;/a&gt;,&lt;a href="http://technorati.com/tags/context-aware" rel="tag"&gt;context-aware&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Web+2.0" rel="tag"&gt;Web 2.0&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Digg" rel="tag"&gt;Digg&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Twitter" rel="tag"&gt;Twitter&lt;/a&gt;,&lt;a href="http://technorati.com/tags/brute-force" rel="tag"&gt;brute-force&lt;/a&gt;,&lt;a href="http://technorati.com/tags/timing+attack" rel="tag"&gt;timing attack&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web+application+firewall" rel="tag"&gt;web application firewall&lt;/a&gt;,&lt;a href="http://technorati.com/tags/infrastructure+2.0" rel="tag"&gt;infrastructure 2.0&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1090180.aspx" width="1" height="1" /&gt;</description><pubDate>Sun, 18 Jul 2010 19:15:41 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/19/defeating-timing-attacks-easier-than-detecting-them.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Lori MacVittie</dc:creator></item><item><title>Cloud Storage Gateways, stairway to (thin provisioning) heaven?</title><link>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/16/cloud-storage-gateways-stairway-to-thin-provisioning-heaven.aspx</link><description>With thanks to Led Zeppelin for some great lyrics.&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/CloudStorageGatewaysstairwaytothinprovis_14691/image_2.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/CloudStorageGatewaysstairwaytothinprovis_14691/image_thumb.png" width="150" height="150" /&gt;&lt;/a&gt;   &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;There's a sign on the wall        &lt;br /&gt;But she wants to be sure         &lt;br /&gt;'Cause you know sometimes words have         &lt;br /&gt;Two meanings&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Since cloud computing has a bit of an identity crisis, and cloud storage is just starting to realize one itself, it should be no surprise to anyone that “cloud storage gateway” has more than one meaning. While they are  all a single market, implementation and deployment details make them &lt;em&gt;very &lt;/em&gt;distinct products. In such a young market, differentiation is easy, even if selling your differentiation as a plus is not. Some vendors are already attempting to turn product differentiation into market segmentation – the upcoming &lt;a href="http://www.cirtas.com/" target="_blank"&gt;Cirtas&lt;/a&gt; product, for example, is referred to by them as a “Cloud Storage Controller” because they believe that better defines their product, though they acknowledge that the market term “gateway” has taken on.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;When she gets there she knows        &lt;br /&gt;If the stores are all closed         &lt;br /&gt;With a word she can get what she came for&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Okay, so you don’t quite have that power, but all of these products do offer you a significant bonus in terms of cloud storage in the form of thin provisioning. For several years now you have had the capability to tell your server it had more storage than was actually dedicated to it, and if it ran over what was actually dedicated, more was allocated from a pool. The problem with this model is that you have to be certain you have enough storage to cover the worst reasonable case – what percentage of your servers might request extra storage over the weekend, and how much might they request. Weekend, month, year… Whatever your timeframe for buying new storage. The point of over-provisioning is that you’ll likely be oversubscribed, but you’re taking the risk that the oversubscription will never come due at the same time with one large calamitous bang. I wrote about this scenario and how virtualization has made the risk worse &lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/05/05/thin-provisioning-plus-vms-ndash-armageddon-in-a-virtual-box.aspx" target="_blank"&gt;here&lt;/a&gt;. &lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Yes, there are two paths you can go by        &lt;br /&gt;But in the long run         &lt;br /&gt;There's still time to change         &lt;br /&gt;The road you're on &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Enter Cloud Storage Gateways. First a bit about cloud providers… They scale up to as much as you need (as long as your payments are covering it anyway), and down as your usage goes down. I won’t say all of them fit this pattern because there are a bewildering number of players looking to make a name in this space, and believe it or not, &lt;a href="http://www.f5.com" target="_blank"&gt;F5&lt;/a&gt; doesn’t pay me to ponder cloud storage or cloud storage gateways, they merely allow me to chat about it, but I’m not taking weeks researching all of this, more like hours. The big players do indeed scale up and down, only billing you for actual usage though.&lt;/p&gt;  &lt;p&gt;Now that we have covered that for any who didn’t know, the cloud storage gateway handles the intricacies of dealing with various cloud storage providers, and most cache locally and encrypt on the way out.&lt;/p&gt;  &lt;p&gt;Starting to see the silver lining yet? They give you thin provisioning limited only by how much money you’re willing to &lt;em&gt;risk&lt;/em&gt;. The current model gives you thin provisioning limited by either how much you’re willing to &lt;em&gt;pay&lt;/em&gt; to guarantee you have enough disk for the worst case, or the amount of risk you’re willing to take on. Cloud storage gateways navigate that mine-laden sea for you and guarantee that your servers will stay up as long as you’re willing to foot the bill.&lt;/p&gt;  &lt;p&gt;Of course that doesn’t eliminate planning for you, but it does allow you to move the choke point up and down much more easily. You can eliminate the risk without a significant cash outlay, if that is your desire, as long as you know what it will cost you if your servers all start requesting more and more storage.&lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;And it makes me wonder&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;(if you just went “Ooohhh Yeahhh-hah” in your head, take a moment to laugh at yourself, it’s healthy)&lt;/p&gt;  &lt;p&gt;The biggest risk in cloud storage gateways is the one I mentioned in &lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/06/07/cloud-storage-gateways.-short-term-win-but-long-termhellip.aspx" target="_blank"&gt;a previous blog&lt;/a&gt;. If they are scooped up by cloud storage vendors that suddenly remembered the lingua franca of enterprise IT storage is not SOA, they will surely limit your options on the back-end. One of the strengths of these products is that you can point one at two completely different cloud storage vendors and remind each that with a flick of a switch, you can be on the other one, so 48 hour response times are not acceptable. That benefit would almost certainly disappear if a cloud storage vendor bought up your cloud storage gateway vendor. Otherwise, the risk is not any larger than any other cloud solution.&lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Your head is humming and it won't go        &lt;br /&gt;In case you don't know         &lt;br /&gt;The piper's calling you to join him&lt;/em&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Cloud everything is the buzz du-jour, and cloud storage with a gateway to make it appear on your network as a NAS is a good idea for tier three, and these vendors are all (I’ve only spoken to three, so “all” is a bit of a stretch) saying they’re getting traction on tier two also, which makes sense for a lot of tier two data. Either way, it’s coming your way, and you should consider if it has a space in your datacenter. The idea of truly thin provisioning is a huge one that even further removes you from the limitation of monstrous disk arrays.&lt;/p&gt;  &lt;p&gt;And if thin provisioning with no subscription worries is on your list of things that would help you sleep at night, I suggest you go out and try…&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Bu-uying a stairway… To (thin provisioning) heaven&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;And I won’t even get into what these solutions coupled with the automated tiering of &lt;a href="http://www.f5.com/products/arx-series/" target="_blank"&gt;ARX&lt;/a&gt; can do for you. That’s for another blog.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:09da2c7a-e9b8-4c67-9a8f-a28b6440dd87" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Cloud+Storage+Gateways" rel="tag"&gt;Cloud Storage Gateways&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Cloud+Storage" rel="tag"&gt;Cloud Storage&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Thin+Provisioning" rel="tag"&gt;Thin Provisioning&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Cirtas" rel="tag"&gt;Cirtas&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+Networks" rel="tag"&gt;F5 Networks&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Don+MacVittie" rel="tag"&gt;Don MacVittie&lt;/a&gt;&lt;/div&gt;  &lt;p align="right"&gt;&lt;a href="http://twitter.com/dmacvittie" target="_blank"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/Rss.aspx" target="_blank"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/don.macvittie" target="_blank"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="right"&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fdmacvittie%2FRss.aspx&amp;amp;t1=" target="_blank"&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Related Articles and Blogs&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.lyricsfreak.com/l/led+zeppelin/#share" target="_blank"&gt;Stairway to Heaven Lyrics&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/05/05/thin-provisioning-plus-vms-ndash-armageddon-in-a-virtual-box.aspx" target="_blank"&gt;Thin Provisioning Plus VMs - Armageddon in a Virtual Box&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/06/07/cloud-storage-gateways.-short-term-win-but-long-termhellip.aspx" target="_blank"&gt;Cloud Storage Gateways: Short Term Win, but Long Term…?&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://silvertonconsulting.com/blog/2010/06/15/more-cloud-storage-gateways-come-out/" target="_blank"&gt;More Cloud Storage Gateways Come Out&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://gigaom.com/2010/06/22/show-me-the-gateway-taking-storage-to-the-cloud/" target="_blank"&gt;Show Me The Gateway – Talking Storage to the Cloud&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://devcentral.f5.com/weblogs/dmacvittie/aggbug/1090179.aspx" width="1" height="1" /&gt;</description><pubDate>Fri, 16 Jul 2010 01:15:04 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/16/cloud-storage-gateways-stairway-to-thin-provisioning-heaven.aspx#comment</comments><slash:comments>1</slash:comments><dc:creator>Don MacVittie</dc:creator></item><item><title>F5 Friday: An On-Demand Turing Test</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/16/f5-friday-an-on-demand-turing-test.aspx</link><description>&lt;p&gt;&lt;em&gt;Detecting bots requires more than a simple USER_AGENT check today…&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayAnOnDemandTuringTest_39AC/f5friday_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="f5friday" border="0" alt="f5friday" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayAnOnDemandTuringTest_39AC/f5friday_thumb.png" width="240" height="86" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Anyone who’s taken an artificial intelligence class in college or grad school knows all about the Turing Test. If you aren’t familiar with the concept, it was a “test proposed by &lt;a href="http://en.wikipedia.org/wiki/Alan_Turing"&gt;Alan Turing&lt;/a&gt; in his 1950 paper &lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Computing_Machinery_and_Intelligence"&gt;Computing Machinery and Intelligence&lt;/a&gt;&lt;/i&gt;, which opens with the words: "I propose to consider the question, 'Can machines think?'" Traditional Turing Tests always involve three players, and the goal is to fool a human interviewer such that the interviewer cannot determine which of the two players is human and which is a computer. There are variations on this theme, but they are almost always focused on “fooling” an interviewer regarding some aspect of the machine that it is attempting to imitate. &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayAnOnDemandTuringTest_39AC/Turing_Test_version_3_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 25px; display: inline; border-top: 0px; border-right: 0px" title="Turing_Test_version_3" border="0" alt="Turing_Test_version_3" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayAnOnDemandTuringTest_39AC/Turing_Test_version_3_thumb.png" width="188" height="240" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;blockquote style="padding-bottom: 10px; margin: 10px; padding-left: 10px; padding-right: 10px; background: #fec; padding-top: 10px"&gt;   &lt;p&gt;     &lt;br /&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayAnOnDemandTuringTest_39AC/quote-left_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="quote-left" border="0" alt="quote-left" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayAnOnDemandTuringTest_39AC/quote-left_thumb.png" width="24" height="21" /&gt;&lt;/a&gt; Common understanding has it that the purpose of the Turing Test is not specifically to determine whether a computer is able to fool an interrogator into believing that it is a human, but rather whether a computer could &lt;i&gt;imitate&lt;/i&gt; a human.&lt;sup&gt;&lt;a href="http://en.wikipedia.org/wiki/Turing_test#cite_note-Saygin252-43"&gt;[44]&lt;/a&gt;&lt;/sup&gt; While there is some dispute whether this interpretation was intended by Turing — Sterrett believes that it was&lt;sup&gt;&lt;a href="http://en.wikipedia.org/wiki/Turing_test#cite_note-Moor2003-42"&gt;[43]&lt;/a&gt;&lt;/sup&gt; and thus conflates the second version with this one, while others, such as Traiger, do not&lt;sup&gt;&lt;a href="http://en.wikipedia.org/wiki/Turing_test#cite_note-Traiger2000-40"&gt;[41]&lt;/a&gt;&lt;/sup&gt; — this has nevertheless led to what can be viewed as the "standard interpretation." In this version, player A is a computer and player B a person of either gender. The role of the interrogator is not to determine which is male and which is female, but which is a computer and which is a human.&lt;sup&gt;&lt;a href="http://en.wikipedia.org/wiki/Turing_test#cite_note-44"&gt;[45]&lt;/a&gt;        &lt;br /&gt;        &lt;br /&gt;-- &lt;a href="http://en.wikipedia.org/wiki/Turing_test"&gt;Wikipedia, Turing Test&lt;/a&gt;         &lt;br /&gt;&lt;/sup&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Over the past decade, as the web has grown more connected and intelligent, so too have the bots that crawl its voluminous pages attempting to index the web and make it possible for search engines like Google and Bing to be useful. Simultaneously have come the evil bots, the scripts, the automated attempts at exploiting vulnerabilities and finding holes in software that enable malicious miscreants to access data and systems to which they are not authorized. While a &lt;a title="" href="http://www.f5.com/glossary/web-application-firewall.html" rel=""&gt;web application firewall&lt;/a&gt; and secure software development lifecycle practices can detect an attempted exploit, neither are necessarily very good at determining whether the request is coming from a bot (machine) or a real user. &lt;/p&gt;  &lt;p&gt;Given the &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/14/out-out-damned-bot.aspx"&gt;very real threat posed by bots&lt;/a&gt;, it’s becoming increasingly important for organizations to detect and prevent these automated digital rodents from having access to web applications, especially business-critical applications. The trick is, however, to determine which requests are coming from bots and which ones are coming from real users. It’s a trick not only because this determination is difficult to make with a high degree of confidence in the result, but because it needs to be determined &lt;em&gt;on-demand, in real-time. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;What organizations need is a sort of “on-demand Turing test” that can sort out the bots from the not bots. &lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;HUMAN INTERACTION HEURISTICS &lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;In a recent release of &lt;a title="F5 Networks" href="http://www.f5.com/" rel="" target="_blank"&gt;F5&lt;/a&gt;’s web application firewall, &lt;a href="http://www.f5.com/products/big-ip/product-modules/application-security-manager.html"&gt;ASM (Application Security Manager)&lt;/a&gt;, there was a very neat little “trick” that essentially provides just what we’ve described: an on-demand Turing test. This capability of ASM attempts to detect whether or not the client side is human by monitoring client-side &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayAnOnDemandTuringTest_39AC/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 10px 10px 10px 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayAnOnDemandTuringTest_39AC/image_thumb.png" width="199" height="316" /&gt;&lt;/a&gt; interaction events. The assumption is, of course, that a bot will not be interacting with the page but a human must interact – clicking a mouse, typing – in order to interact with the application. &lt;/p&gt;  &lt;p&gt;The intention behind this feature is to allow administrators to configure policies that act upon the determination. This is particularly helpful in &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/23/the-application-delivery-spell-book-detect-invisible-application-stalkers.aspx"&gt;preventing web scraping and other automated attack tools&lt;/a&gt; that make use of scripts and bots to attack sites. &lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;How does it work?&lt;/strong&gt; &lt;/h4&gt;  &lt;p&gt;Because ASM is deployed as part of a unified application delivery platform, it is able to take advantage of the systems’ underlying foundational technologies. In this case, &lt;a href="http://www.f5.com/products/technologies/tmos/"&gt;TMOS&lt;/a&gt; – a full proxy that provides the capability to intercept, inspect, and transform application data. It is application aware, and can interact in real-time with the messages being exchanged between the client and the server. In much the same way as we leverage this capability to inject the &lt;a href="http://www.gomez.com/"&gt;Gomez&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/06/04/f5-friday-the-rules-for-the-game-of-application-performance.aspx"&gt;Javascript code necessary to monitor any application&lt;/a&gt; for which &lt;a href="http://www.f5.com/big-ip/"&gt;BIG-IP&lt;/a&gt; provides application delivery services, we can inject Javascript into clients that provides the information necessary to determine whether the client is a human being or an automated system. &lt;/p&gt;  &lt;p&gt;Based on the results of the determination, the administrator can take action. Rejecting the connection or redirecting to a honey-pot are common actions to take, but ASM like all TMOS-enabled solutions offered as part of the BIG-IP family of solutions the limits are really based on organizational need. &lt;a href="http://devcentral.f5.com/iRules"&gt;iRules&lt;/a&gt; (network-side scripting) can be employed to provide additional custom and unique actions, logging, etc…or a pre-defined set of actions can be easily applied. This also provides some measure of future-proofing against modifications by miscreants to bots and automated scripts. Evolving the heuristics used to determine human from bot can be updated without requiring upgrades to the system, requiring modification of injected scripts. the ability to leverage iRules further allows organizations to develop their own methods that may or may not be based on ASM’s included functionality. &lt;/p&gt;  &lt;p&gt;This is not a panacea. There is no web application security solution that is. But it is more than what is currently available in most web application security solutions today, and it’s something that isn’t generally included in the application itself, for a variety of reasons. It’s certainly not listed in the &lt;a href="http://www.owasp.org/index.php/Main_Page"&gt;OWASP&lt;/a&gt; top ten methods for securing an application. There are legitimate uses for bots, after all, so the use of such a deterministic system to unilaterally deny or permit requests must be carefully balanced across the typical usage patterns and needs of the organization. &lt;/p&gt;  &lt;p&gt;Regardless, it is another tool in the information security toolbox that can be applied to better secure applications against “users” of malicious intent, and it’s certainly moving web application security in the right direction by being as context-aware as possible when attempting to respond to a request for a resource. &lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="100%"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="70%"&gt;         &lt;h3&gt;Related Posts&lt;/h3&gt;          &lt;ul&gt;           &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/category/1084420.aspx"&gt;All F5 Friday Entries on DevCentral&lt;/a&gt;&lt;/li&gt;         &lt;/ul&gt;          &lt;div class="wlw_related_posts"&gt;from tag &lt;a href="http://del.icio.us/lmacvittie/bot"&gt;bot&lt;/a&gt;            &lt;br /&gt;&lt;/div&gt;          &lt;div class="wlw_related_posts"&gt;           &lt;ul&gt;             &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/23/stopping-push-do-trojan.aspx"&gt;Turning the Pushdo Bot Into the Push-oh-no-you-don’t Bot&lt;/a&gt;&lt;/li&gt;           &lt;/ul&gt;         &lt;/div&gt; from tag &lt;a href="http://del.icio.us/lmacvittie/javascript"&gt;javascript&lt;/a&gt;          &lt;br /&gt;          &lt;ul&gt;           &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/06/02/facepalm-google-wave-choice-of-xmpp-not-the-death-of.aspx"&gt;Facepalm: Google Wave Choice of XMPP Not the Death of HTTP&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/12/10/why-flash-cant-win-the-web-application-war.aspx"&gt;Why Flash can't win the Web application war&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/12/3609.aspx"&gt;Why it's so hard to secure JavaScript&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/11/3605.aspx"&gt;A Billion More Laughs: The JavaScript hack that acts like an XML attack&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/06/3519.aspx"&gt;Working around client-side limitations on custom HTTP headers&lt;/a&gt;&lt;/li&gt;         &lt;/ul&gt; from tag &lt;a href="http://del.icio.us/lmacvittie/security"&gt;security&lt;/a&gt;          &lt;br /&gt;          &lt;ul&gt;           &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/10/06/telecommute-your-way-to-a-greener-bottom-line.aspx"&gt;Telecommute your way to a greener bottom line&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/12/10/json-versus-xml-your-choice-matters-more-than-you-think.aspx"&gt;JSON versus XML: Your Choice Matters More Than You Think&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/01/20/wils-how-can-a-load-balancer-keep-a-single-server.aspx"&gt;WILS: How can a load balancer keep a single server site available?&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/01/14/3-reasons-you-need-a-waf-even-if-your-code.aspx"&gt;3 reasons you need a WAF even if your code is (you think) secure&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/07/14/an-unhackable-server-is-still-vulnerable.aspx"&gt;An Unhackable Server is Still Vulnerable&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/12/08/security-is-not-a-luxury-item.aspx"&gt;Security is not a luxury item&lt;/a&gt;&lt;/li&gt;         &lt;/ul&gt;         &lt;a href="http://del.icio.us/lmacvittie/security"&gt;(more..)&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="30%"&gt;         &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img border="0" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" /&gt;&lt;/a&gt; &lt;a href="http://www.friendfeed.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="friendfeed" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/friendfeed_3.jpg" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;          &lt;p&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;script type="text/javascript" src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355"&gt;&lt;/script&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;   &lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ce14d59a-7345-4d4c-8758-1e369481e54e" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+Friday" rel="tag"&gt;F5 Friday&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web+application+security" rel="tag"&gt;web application security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Turing" rel="tag"&gt;Turing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/bot" rel="tag"&gt;bot&lt;/a&gt;,&lt;a href="http://technorati.com/tags/security" rel="tag"&gt;security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Web+2.0" rel="tag"&gt;Web 2.0&lt;/a&gt;,&lt;a href="http://technorati.com/tags/javascript" rel="tag"&gt;javascript&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application+delivery" rel="tag"&gt;application delivery&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1090177.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 15 Jul 2010 19:08:30 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/16/f5-friday-an-on-demand-turing-test.aspx#comment</comments><slash:comments>1</slash:comments><dc:creator>Lori MacVittie</dc:creator></item><item><title>F5 Tech Field Day &amp;ndash; Delegate Roundtable</title><link>http://devcentral.f5.com/weblogs/dctv/archive/2010/07/15/f5-tech-field-day-ndash-delegate-roundtable.aspx</link><description>&lt;table border="0" cellpadding="5"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="386" id="utv514890" name="utv_n_455340"&gt;&lt;param name="flashvars" value="loc=%2F&amp;amp;autoplay=false&amp;amp;vid=8300080&amp;amp;locale=en_US" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="src" value="http://www.ustream.tv/flash/video/8300080" /&gt;&lt;embed flashvars="loc=%2F&amp;amp;autoplay=false&amp;amp;vid=8300080&amp;amp;locale=en_US" width="480" height="386" allowfullscreen="true" allowscriptaccess="always" id="utv514890" name="utv_n_455340" src="http://www.ustream.tv/flash/video/8300080" type="application/x-shockwave-flash" /&gt;&lt;/object&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Web Magazine Gestalt IT brings together innovative &lt;strong&gt;IT product vendors&lt;/strong&gt; and &lt;strong&gt;independent thought leaders&lt;/strong&gt; who have immense influence on the ways that products and companies are perceived and understood by the general public.           &lt;br /&gt;          &lt;br /&gt;F5 Networks hosted a session for the Tech Field Day on Thursday, July 15th.  &lt;br /&gt;          &lt;br /&gt;In the final session, the delegates have a round table discussing their thoughts on the presentations this afternoon at F5 Networks.           &lt;br /&gt;          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e29ec28d-1b45-444c-87af-3a1ba949676a" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Gestalt+IT" rel="tag"&gt;Gestalt IT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TechFieldDay" rel="tag"&gt;TechFieldDay&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/dctv/aggbug/1090176.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 15 Jul 2010 14:02:39 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dctv/archive/2010/07/15/f5-tech-field-day-ndash-delegate-roundtable.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral TV</dc:creator></item><item><title>F5 Tech Field Day &amp;ndash; Storage Optimization And A Practical Tiering Demo</title><link>http://devcentral.f5.com/weblogs/dctv/archive/2010/07/15/f5-tech-field-day-ndash-storage-optimization-and-a-practical.aspx</link><description>&lt;table border="0" cellpadding="5"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="386" id="utv223902" name="utv_n_472128"&gt;&lt;param name="flashvars" value="loc=%2F&amp;amp;autoplay=false&amp;amp;vid=8298935&amp;amp;locale=en_US" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="src" value="http://www.ustream.tv/flash/video/8298935" /&gt;&lt;embed flashvars="loc=%2F&amp;amp;autoplay=false&amp;amp;vid=8298935&amp;amp;locale=en_US" width="480" height="386" allowfullscreen="true" allowscriptaccess="always" id="utv223902" name="utv_n_472128" src="http://www.ustream.tv/flash/video/8298935" type="application/x-shockwave-flash" /&gt;&lt;/object&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Web Magazine Gestalt IT brings together innovative &lt;strong&gt;IT product vendors&lt;/strong&gt; and &lt;strong&gt;independent thought leaders&lt;/strong&gt; who have immense influence on the ways that products and companies are perceived and understood by the general public.           &lt;br /&gt;          &lt;br /&gt;F5 Networks hosted a session for the Tech Field Day on Thursday, July 15th.  &lt;br /&gt;          &lt;br /&gt;In this session, F5’s Rick Gillett and Bob Blair talk about Storage Optimization and give a Practical Tiering Demo.           &lt;br /&gt;          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ea2f2466-afe4-471f-beae-853dc69d5a4a" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Gestalt+IT" rel="tag"&gt;Gestalt IT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TechFieldDay" rel="tag"&gt;TechFieldDay&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Rick+Gillett" rel="tag"&gt;Rick Gillett&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Bob+Blair" rel="tag"&gt;Bob Blair&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Storage" rel="tag"&gt;Storage&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Optimization" rel="tag"&gt;Optimization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Tiering" rel="tag"&gt;Tiering&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/dctv/aggbug/1090175.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 15 Jul 2010 13:59:39 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dctv/archive/2010/07/15/f5-tech-field-day-ndash-storage-optimization-and-a-practical.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral TV</dc:creator></item><item><title>F5 Tech Field Day &amp;ndash; Security: Compliance And Access Control</title><link>http://devcentral.f5.com/weblogs/dctv/archive/2010/07/15/f5-tech-field-day-ndash-security-compliance-and-access-control.aspx</link><description>&lt;table border="0" cellpadding="5"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="386" id="utv992768" name="utv_n_824538"&gt;&lt;param name="flashvars" value="loc=%2F&amp;amp;autoplay=false&amp;amp;vid=8298588&amp;amp;locale=en_US" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="src" value="http://www.ustream.tv/flash/video/8298588" /&gt;&lt;embed flashvars="loc=%2F&amp;amp;autoplay=false&amp;amp;vid=8298588&amp;amp;locale=en_US" width="480" height="386" allowfullscreen="true" allowscriptaccess="always" id="utv992768" name="utv_n_824538" src="http://www.ustream.tv/flash/video/8298588" type="application/x-shockwave-flash" /&gt;&lt;/object&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Web Magazine Gestalt IT brings together innovative &lt;strong&gt;IT product vendors&lt;/strong&gt; and &lt;strong&gt;independent thought leaders&lt;/strong&gt; who have immense influence on the ways that products and companies are perceived and understood by the general public.           &lt;br /&gt;          &lt;br /&gt;F5 Networks hosted a session for the Tech Field Day on Thursday, July 15th.  &lt;br /&gt;          &lt;br /&gt;In this session, F5's Nogan Moshiri discusses Security with regards to compliance and access control.           &lt;br /&gt;          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:3a8bd7cf-3a0f-4abf-bad0-75fa9a7252c5" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TechFieldDay" rel="tag"&gt;TechFieldDay&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Nojan+Moshiri" rel="tag"&gt;Nojan Moshiri&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Security" rel="tag"&gt;Security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Compliance" rel="tag"&gt;Compliance&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Access+Control" rel="tag"&gt;Access Control&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/dctv/aggbug/1090174.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 15 Jul 2010 13:57:09 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dctv/archive/2010/07/15/f5-tech-field-day-ndash-security-compliance-and-access-control.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral TV</dc:creator></item><item><title>F5 Tech Field Day - Tales From The Woods With iControl and iRules</title><link>http://devcentral.f5.com/weblogs/dctv/archive/2010/07/15/f5-tech-field-day-tales-from-the-woods-with.aspx</link><description>&lt;table border="0" cellpadding="5"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="386" id="utv475384" name="utv_n_485227"&gt;&lt;param name="flashvars" value="loc=%2F&amp;amp;autoplay=false&amp;amp;vid=8297956&amp;amp;locale=en_US" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="src" value="http://www.ustream.tv/flash/video/8297956" /&gt;&lt;embed flashvars="loc=%2F&amp;amp;autoplay=false&amp;amp;vid=8297956&amp;amp;locale=en_US" width="480" height="386" allowfullscreen="true" allowscriptaccess="always" id="utv475384" name="utv_n_485227" src="http://www.ustream.tv/flash/video/8297956" type="application/x-shockwave-flash" /&gt;&lt;/object&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Web Magazine Gestalt IT brings together innovative &lt;strong&gt;IT product vendors&lt;/strong&gt; and &lt;strong&gt;independent thought leaders&lt;/strong&gt; who have immense influence on the ways that products and companies are perceived and understood by the general public.           &lt;br /&gt;          &lt;br /&gt;F5 Networks hosted a session for the Tech Field Day on Thursday, July 15th.  &lt;br /&gt;          &lt;br /&gt;In this session, F5’s &lt;a href="http://devcentral.f5.com/weblogs/joe"&gt;Joe Pruitt&lt;/a&gt; takes the delegates on a walk through the woods with iControl and iRules in action.           &lt;br /&gt;          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6e58bcf7-ab74-4719-857f-6e3eb06f87af" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Gestalt+IT" rel="tag"&gt;Gestalt IT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TechFieldDay" rel="tag"&gt;TechFieldDay&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iControl" rel="tag"&gt;iControl&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Joe+Pruitt" rel="tag"&gt;Joe Pruitt&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/dctv/aggbug/1090173.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 15 Jul 2010 13:53:29 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dctv/archive/2010/07/15/f5-tech-field-day-tales-from-the-woods-with.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral TV</dc:creator></item><item><title>F5 Tech Field Day &amp;ndash; Orchestration Of VMWare VMotion Over Distance</title><link>http://devcentral.f5.com/weblogs/dctv/archive/2010/07/15/f5-tech-field-day-ndash-orchestration-of-vmware-vmotion-over.aspx</link><description>&lt;table border="0" cellpadding="5"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="386" id="utv222153" name="utv_n_905355"&gt;&lt;param name="flashvars" value="loc=%2F&amp;amp;autoplay=false&amp;amp;vid=8297761&amp;amp;locale=en_US" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="src" value="http://www.ustream.tv/flash/video/8297761" /&gt;&lt;embed flashvars="loc=%2F&amp;amp;autoplay=false&amp;amp;vid=8297761&amp;amp;locale=en_US" width="480" height="386" allowfullscreen="true" allowscriptaccess="always" id="utv222153" name="utv_n_905355" src="http://www.ustream.tv/flash/video/8297761" type="application/x-shockwave-flash" /&gt;&lt;/object&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Web Magazine Gestalt IT brings together innovative &lt;strong&gt;IT product vendors&lt;/strong&gt; and &lt;strong&gt;independent thought leaders&lt;/strong&gt; who have immense influence on the ways that products and companies are perceived and understood by the general public.           &lt;br /&gt;          &lt;br /&gt;F5 Networks hosted a session for the Tech Field Day on Thursday, July 15th.  &lt;br /&gt;          &lt;br /&gt;In this session, F5's Erick Hammersmark gives a live demo of Orchestration of VMWare illustrating non-disruptive VMotion over Distance.          &lt;br /&gt;          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:32f03e5b-ba87-4a0a-a409-538359578dfb" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Gestalt+IT" rel="tag"&gt;Gestalt IT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TechFieldDay" rel="tag"&gt;TechFieldDay&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VMWare" rel="tag"&gt;VMWare&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Orchestration" rel="tag"&gt;Orchestration&lt;/a&gt;,&lt;a href="http://technorati.com/tags/vMotion" rel="tag"&gt;vMotion&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Erick+Hammersmark" rel="tag"&gt;Erick Hammersmark&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/dctv/aggbug/1090172.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 15 Jul 2010 13:50:09 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dctv/archive/2010/07/15/f5-tech-field-day-ndash-orchestration-of-vmware-vmotion-over.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral TV</dc:creator></item><item><title>F5 Tech Field Day &amp;ndash; Intro To F5 As A Strategic Point Of Control</title><link>http://devcentral.f5.com/weblogs/dctv/archive/2010/07/15/f5-tech-field-day-ndash-intro-to-f5-as-a.aspx</link><description>&lt;table border="0" cellpadding="5"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="386" id="utv24086" name="utv_n_530385"&gt;&lt;param name="flashvars" value="loc=%2F&amp;amp;autoplay=false&amp;amp;vid=8297317&amp;amp;locale=en_US" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="src" value="http://www.ustream.tv/flash/video/8297317" /&gt;&lt;embed flashvars="loc=%2F&amp;amp;autoplay=false&amp;amp;vid=8297317&amp;amp;locale=en_US" width="480" height="386" allowfullscreen="true" allowscriptaccess="always" id="utv24086" name="utv_n_530385" src="http://www.ustream.tv/flash/video/8297317" type="application/x-shockwave-flash" /&gt;&lt;/object&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Web Magazine Gestalt IT brings together innovative &lt;strong&gt;IT product vendors&lt;/strong&gt; and &lt;strong&gt;independent thought leaders&lt;/strong&gt; who have immense influence on the ways that products and companies are perceived and understood by the general public.           &lt;br /&gt;          &lt;br /&gt;F5 Networks hosted a session for the Tech Field Day on Thursday, July 15th.  &lt;br /&gt;          &lt;br /&gt;In this session, F5’s Dan Matte and Kirby Wadsworth welcome the bloggers and give an overview of F5 as a Strategic Point of Control.           &lt;br /&gt;          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f45146c7-43d3-4ed2-b47b-175d165dc16a" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Gestalt+IT" rel="tag"&gt;Gestalt IT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TechFieldDay" rel="tag"&gt;TechFieldDay&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Dan+Matte" rel="tag"&gt;Dan Matte&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Kirby+Wadsworth" rel="tag"&gt;Kirby Wadsworth&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/dctv/aggbug/1090171.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 15 Jul 2010 13:44:36 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dctv/archive/2010/07/15/f5-tech-field-day-ndash-intro-to-f5-as-a.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral TV</dc:creator></item><item><title>Cloud is Defined, Right?</title><link>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/15/cloud-is-defined-right.aspx</link><description>&lt;p&gt;At the end of the odd but intriguing movie Existenz, one of the primary characters looks at the other after killing a bunch of people and says “We’re still in the game, right?” With the implication that you the viewer really don’t know if they’re still in the Virtual Reality game they were playing. Sometimes, Cloud feels like that. I can just go “We’re still in the cloud, right?”&lt;/p&gt;  &lt;p&gt;Here we are, it is 2010, the pundits have been hailing cloud for years, and yet there is still a vast gulf of understanding of &lt;em&gt;what is the cloud, exactly &lt;/em&gt;out there. Recently I was involved in a Twitter conversation with &lt;a href="http://twitter.com/mfratto" target="_blank"&gt;Mike Fratto&lt;/a&gt; (of Network Computing), &lt;a href="http://twitter.com/csoandy" target="_blank"&gt;Andy Ellis&lt;/a&gt; (of Akamai), &lt;a href="http://devcentral.f5.com/weblogs/macvittie" target="_blank"&gt;Lori&lt;/a&gt; (of &lt;a href="http://www.f5.com" target="_blank"&gt;F5&lt;/a&gt;, as am I), with occasional input from &lt;a href="http://twitter.com/damrhein" target="_blank"&gt;Dustin Amrhein&lt;/a&gt; (of IBM), &lt;a href="http://www.twitter.com/Knieriemen" target="_blank"&gt;Greg Knieriemen&lt;/a&gt; (of Chi Corp and the InfoSmack podcast), &lt;a href="http://www.twitter.com/VanessaAlvarez1" target="_blank"&gt;Vanessa Alvarez&lt;/a&gt; (of Frost and Sullivan), and &lt;a href="http://www.twitter.com/tompetrocelli" target="_blank"&gt;Tom Petrocelli&lt;/a&gt; (formerly of IP.com) where it became painfully clear that it is indeed not at all settled. Not even amongst such an august group of individuals.&lt;/p&gt;  &lt;p&gt;The thing is, that nearly two years ago, Lori gave &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/11/05/cloud-computing-the-last-definition-youll-ever-need.aspx" target="_blank"&gt;“The Last Cloud Definition You’ll Ever Need”&lt;/a&gt;, and laid out what Cloud was and was not. It’s a good definition, but it is one that many vendors do not want to acknowledge for a variety of reasons, the most prevalent of which is marketing of their own products.&lt;/p&gt;  &lt;p&gt;In this conversation, Andy was simply asking “is a Content Delivery Network (CDN) not cloud?” now you might be quick to say “marketing! He works for Akamai!”, but my experience is that he’s deeper than that, and not really a marketer… He IS the CSO of Akamai after all, not exactly a marketing position. Also, his question made sense to me. A CDN delivers content across a wide geography on demand. A CDN is billed very much like all cloud services are billed, and many have APIs to manipulate what’s out there, how it’s delivered, etc.&lt;/p&gt;  &lt;p&gt;It didn’t make sense to Lori, and she was continuing the conversation with a different set of individuals in that wonderful “Twitter fracture effect” that causes conversations to veer off not just in topic but participants also, they generally seemed to be in agreement with her assessment. Mike was pretty much in agreement with her also.&lt;/p&gt;  &lt;p&gt;I spend a lot of time talking cloud with Lori because we’re together essentially all of the time, and she’s largely focused in that space right now. I don’t see it as too clear. If Cloud is or includes Infrastructure-As-A-Service (IaaS), and CDN was the original IaaS product, then it seems to me that it is worth exploring whether it is indeed not cloud just by virtue of being what it is.&lt;/p&gt;  &lt;p&gt;In the definition I linked to above, CDN is excluded by the simple fact that it is not an application delivery mechanism, but a content delivery mechanism. But that definition would preclude cloud storage from the definition of “what is cloud” also. And I think that cloud storage meets all of the numbered points in the definition, though due to the difference between storing data and delivering applications, point number four is only adhered to by some cloud storage providers.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://csrc.nist.gov/groups/SNS/cloud-computing/cloud-def-v15.doc" target="_blank"&gt;The NIST Notional Definition of Cloud Computing&lt;/a&gt; (MS-Word Doc) is commonly referenced by Cloud aficionados, and also seems to limit “Cloud” to application services, which would imply that there is no “Cloud Storage”, see above for my views on that notion.&lt;/p&gt;  &lt;p&gt;The problem is that you just can’t say (as &lt;a href="http://www.twitter.com/bmichelson" target="_blank"&gt;Brenda Michelson&lt;/a&gt; of Elemental Links said while I was writing this blog) “The tubes formerly known as web”. She was joking, even used the #snark tag, but we do need a definition that goes beyond application delivery, or at least makes cloud storage fit into the application delivery paradigm (heh. I said paradigm in a blog. I’m so 90s) that is currently en-vogue.&lt;/p&gt;  &lt;p&gt;I’m trying to get a handle around the issue, because if you read the SNIA Cloud Storage documentation, it doesn’t clear the issue up, it ignores it and says “all these things are “cloud storage”. Nice, but how does that fit into the current definitions of cloud? And that doesn’t even touch &lt;a href="http://www.microsoft.com" target="_blank"&gt;Microsoft&lt;/a&gt; offering MS-SQL Server on &lt;a href="http://www.microsoft.com/windowsazure/" target="_blank"&gt;Azure&lt;/a&gt;, which is technically SaaS, but smacks of cloud because of whom the customer is…&lt;/p&gt;  &lt;p&gt;I think that is where we come to the key to defining cloud as it exists today. It does leave some vendors out, but only those aiming at end users, and I’d argue those are cloud-delivered applications.&lt;/p&gt;  &lt;p&gt;So how about this for a new definition…&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;“IT services designed to interact with and/or take the place of core enterprise IT hardware or software infrastructure”.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;It’s short, and no doubt I’ll get feedback that will help refine it, but it does encompass the core – this would be inclusive of Databases as services, it would be inclusive of what we all think of traditionally as “cloud” – server allocation – it would include cloud storage, it would rule out applications with end user interfaces that happen to be hosted in cloud or cloud like environments because those have never been considered “infrastructure”. It would include CDN, but if you’re going to put cloud storage in the bucket, you’re going to have to accept that CDN is a service that meets the above definition.&lt;/p&gt;  &lt;p&gt;It fits, it captures the spirit of cloud computing, and it leaves out those IaaS vendors that have been a serious bone of contention for everyone else. Some IaaS vendors can claim “Hosted in the cloud”, and that would make everyone happy, just don’t claim to be “the cloud” if your target user is an end user and not an administrator.&lt;/p&gt;  &lt;p&gt;Feedback, conversations, commentary, and even flame are all welcome. Visits from the men in white coats will not be appreciated.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;And thanks to all those listed. My blog topic for today was not nearly as interesting as this one.&lt;/em&gt;&lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:25db914f-432b-48d6-9a3b-dfda37ce15a4" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Cloud" rel="tag"&gt;Cloud&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Cloud+Infrastructure" rel="tag"&gt;Cloud Infrastructure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Cloud+Computing" rel="tag"&gt;Cloud Computing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Cloud+Storage" rel="tag"&gt;Cloud Storage&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+Networks" rel="tag"&gt;F5 Networks&lt;/a&gt;,&lt;a href="http://technorati.com/tags/IBM" rel="tag"&gt;IBM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Akamai" rel="tag"&gt;Akamai&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Network+Computing+Magazine" rel="tag"&gt;Network Computing Magazine&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Elemental+Links" rel="tag"&gt;Elemental Links&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Chi+Corp" rel="tag"&gt;Chi Corp&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Frost+and+Sullivan" rel="tag"&gt;Frost and Sullivan&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Azure" rel="tag"&gt;Azure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Don+MacVittie" rel="tag"&gt;Don MacVittie&lt;/a&gt;&lt;/div&gt;  &lt;p align="right"&gt;&lt;a href="http://twitter.com/dmacvittie" target="_blank"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/Rss.aspx" target="_blank"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/don.macvittie" target="_blank"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="right"&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fdmacvittie%2FRss.aspx&amp;amp;t1=" target="_blank"&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Related Articles and Blogs&lt;/p&gt;  &lt;p /&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Cloud_computing" target="_blank"&gt;Wikipedia Cloud Computing Entry&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.infoworld.com/d/cloud-computing/what-cloud-computing-really-means-031" target="_blank"&gt;What Cloud Computing Really Means&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://cloudcomputing.sys-con.com/node/612375" target="_blank"&gt;Twenty One Experts Define Cloud Computing&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/11/05/cloud-computing-the-last-definition-youll-ever-need.aspx" target="_blank"&gt;Cloud Computing – The Last Definition You’ll Ever Need&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://devcentral.f5.com/weblogs/dmacvittie/aggbug/1090169.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 15 Jul 2010 04:32:59 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/15/cloud-is-defined-right.aspx#comment</comments><slash:comments>2</slash:comments><dc:creator>Don MacVittie</dc:creator></item><item><title>DevCentral Weekly Podcast 140 &amp;ndash; Hostname Blackberryization</title><link>http://devcentral.f5.com/weblogs/dcpodcast/archive/2010/07/15/devcentral-weekly-podcast-140-ndash-hostname-blackberryization.aspx</link><description>&lt;a href="http://devcentral.f5.com/media/audio/20100715-F5DevCentralPodcast-140.mp3"&gt; &lt;/a&gt;   &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" align="center"&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="320" height="260" id="utv732096" name="utv_n_778499"&gt;&lt;param name="flashvars" value="autoplay=false" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="src" value="http://www.ustream.tv/flash/video/8294116" /&gt;&lt;embed flashvars="autoplay=false" width="320" height="260" allowfullscreen="true" allowscriptaccess="always" id="utv732096" name="utv_n_778499" src="http://www.ustream.tv/flash/video/8294116" type="application/x-shockwave-flash" /&gt;&lt;/object&gt;&lt;/td&gt;        &lt;td&gt;   &lt;/td&gt;        &lt;td valign="top"&gt;&lt;img align="right" src="http://devcentral.f5.com/podcast/DC4-Podcast.jpg" width="90" height="90" /&gt;Welcome to the one hundred and fortieth edition of the DevCentral Weekly Roundtable Podcast!  A weekly recap of the interesting things that have been going on within the DevCentral community.           &lt;br /&gt;          &lt;br /&gt;Hosts: &lt;a href="http://devcentral.f5.com/weblogs/watkins"&gt;George Watkins&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/jason"&gt;Jason Rahm&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/joe"&gt;Joe Pruitt&lt;/a&gt;, and &lt;a href="http://devcentral.f5.com/weblogs/scott"&gt;Scott Koon&lt;/a&gt;.           &lt;p&gt;In this weeks podcast we discussed &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/51/afv/topic/aft/1172228/aff/1/showtab/groupforums/Default.aspx"&gt;Authenticating At signs (@)&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/watkins/archive/2010/07/12/thoughts-on-hostname-nomenclature.aspx"&gt;Thoughts on Hostnames&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/jason/archive/2010/07/14/a-taste-of-blackberries.aspx"&gt;Blackberry and Smartphones in the corporate environment&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/jason/archive/2010/07/09/benefits-of-desktop-virtualization.aspx"&gt;The benefits of desktop virtualization&lt;/a&gt;, and finished it up with a preview of Today’s &lt;a href="http://gestaltit.com/field-day/2010-seattle/"&gt;Gestalt IT Tech Field Day at F5&lt;/a&gt;.&lt;/p&gt;          &lt;p&gt;All of the links from this recording can be found with the &lt;a href="http://delicious.com/devcentral/dcpodcast140"&gt;dcpodcast140&lt;/a&gt; tag at Delicious.com.  You can also watch the video recording from our &lt;a href="http://www.ustream.tv/channel/dcpodcast"&gt;UStream.TV channel&lt;/a&gt;: &lt;a href="http://www.ustream.tv/recorded/8294116"&gt;DevCentral Podcast 140&lt;/a&gt;.&lt;/p&gt;          &lt;div id="dcpc140player" align="center" width="100%"&gt;&lt;a href="http://www.macromedia.com/go/getflashplayer"&gt;Get the Flash Player&lt;/a&gt; to see this player. &lt;/div&gt;          &lt;div align="center" width="100%"&gt;&lt;script language="javascript"&gt;&lt;!--

generateMP3Player("dcpc140player", "20100715-F5DevCentralPodcast-140.mp3");
//--&gt;&lt;/script&gt;&lt;/div&gt;          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e755b8ae-8716-4c43-8ffd-f0b9e242648e" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Authentication" rel="tag"&gt;Authentication&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Hostname" rel="tag"&gt;Hostname&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Blackberry" rel="tag"&gt;Blackberry&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Smartphone" rel="tag"&gt;Smartphone&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Virtualization" rel="tag"&gt;Virtualization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TechFieldDay" rel="tag"&gt;TechFieldDay&lt;/a&gt;,&lt;a href="http://technorati.com/tags/George+Watkins" rel="tag"&gt;George Watkins&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jason+Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Joe+Pruitt" rel="tag"&gt;Joe Pruitt&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Scott+Koon" rel="tag"&gt;Scott Koon&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/dcpodcast/aggbug/1090170.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 15 Jul 2010 03:23:52 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dcpodcast/archive/2010/07/15/devcentral-weekly-podcast-140-ndash-hostname-blackberryization.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral Weekly Podcast</dc:creator></item><item><title>Booth Babes Don&amp;rsquo;t Wear Glasses</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/15/booth-babes-donrsquot-wear-glasses.aspx</link><description>&lt;p&gt;&lt;em&gt;Gidget or gadgets, that’s not really what the debate is all about anyway&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Computer Engineer Barbie: We Need Details Not Dolls" href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/02/19/computer-engineer-barbie-we-need-details-not-dolls.aspx"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 15px 10px 0px; display: inline; border-top: 0px; border-right: 0px" title="Computer Engineer Barbie: We Need Details Not Dolls" border="0" alt="Computer Engineer Barbie: We Need Details Not Dolls" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/BoothBabesDontWearGlasses_4FBE/barbiegeek_230_3.jpg" width="120" height="240" /&gt;&lt;/a&gt; An axiomatic truth of technology today is that women in technology are, few and far between. The recent debate over booth babes slides naturally into the question “how can we encourage young women to enter science, technology, engineering and mathematics (STEM) fields”? After all, the argument goes, what young woman would willingly enter a field where she’ll be assumed to be ignorant unless she proves otherwise? Where she’ll be admired not for her Masters degree but for her mastery of makeup? &lt;/p&gt;  &lt;p&gt;STEM, and technology in particular, has an unclear career path that tends to put off young women and, unsurprisingly, young men, too. Young women, according to research, aren’t thinking about the difficulties that exist being a woman in a traditionally male-dominated field – and they do exist, there’s no denying that. They’re thinking “what the heck would I do with a degree in [insert STEM field here]?” [&lt;a href="http://www.scientificamerican.com/blog/60-second-science/post.cfm?id=us-students-say-yay-for-science-2009-01-08"&gt;Scientific American, “U.S. Students say “yah for science””]&lt;/a&gt; Young women aren’t avoiding STEM because technology vendors at technology shows are hiring “booth babes.” In fact looking closer at the debate that’s risen regarding booth babes it really has nothing to do with them and everything to do with men and attitudes. &lt;/p&gt;  &lt;p&gt;It isn’t the existence of booth babes that causes the treatment cited by &lt;a href="http://twitter.com/ddubie"&gt;Denise Dubie&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/BoothBabesDontWearGlasses_4FBE/twitterbird_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="twitterbird" border="0" alt="twitterbird" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/BoothBabesDontWearGlasses_4FBE/twitterbird_thumb_1.png" width="14" height="14" /&gt;&lt;/a&gt; in a recent post on this very debate over the practice, that is the result of a field that’s (1) still young compared to other STEM fields, (2) dominated by men, and (3) the fact that women in general haven’t been out &lt;em&gt;en force&lt;/em&gt;  for all that long. It’s been less than 100 years since the right of women to vote was recognized, and less than 40 since we’ve really been accepted into the work force. Most of us are first and maybe second generation “working women”, &lt;em&gt;professional&lt;/em&gt; women. We’re still paving the path for our daughters and &lt;em&gt;their&lt;/em&gt; daughters. It’s no surprise that men in general, then, haven’t had a whole lot of time yet to adjust. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/BoothBabesDontWearGlasses_4FBE/quote-left_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="quote-left" border="0" alt="quote-left" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/BoothBabesDontWearGlasses_4FBE/quote-left_thumb.png" width="24" height="21" /&gt;&lt;/a&gt;A recent post by &lt;em&gt;Network World&lt;/em&gt; blogger &lt;a href="http://www.networkworld.com/community/blog/special-cisco-live-contest-hottest-booth-girl?page=1&amp;amp;source=nww_rss"&gt;Michael Morris&lt;/a&gt; caused a bit of discussion on that site as well as chatter across social media network Twitter. He held a contest immediately following &lt;a href="http://www.networkperformancedaily.com/2010/06/network_engineers_embrace_clou_1.html"&gt;Cisco Live&lt;/a&gt; to identify the hottest booth babe at the show. &lt;/p&gt;    &lt;p&gt;[…] &lt;/p&gt;    &lt;p&gt;The one thing I do note at these shows, being in a position required to approach and speak to attendees and being female, is that I am in the definitely in the minority there. &lt;u&gt;&lt;strong&gt;And often when I approach male attendees, they seem a bit shocked that I am talking technology with them&lt;/strong&gt;&lt;/u&gt;. And when sitting in on sessions and looking around the room, I am always elated to find another female in attendance. But I have found that some of those women work for the vendor doing the presentation and aren’t IT professionals attending the show. Still I have to admit in the 10+ years of going to shows, the number of women in attendance has increased, based on my informal opinion. [emphasis added] &lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;h4&gt;&lt;a href="http://www.networkperformancedaily.com/2010/07/the_booth_babe_debate.html"&gt;The ‘booth babe’ debate&lt;/a&gt;&lt;/h4&gt;    &lt;p&gt;Denise Dubie, NetworkWorld &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;It would likely be difficult to find a woman in technology that &lt;strong&gt;hasn’t&lt;/strong&gt; had this same experience. The shock, the surprise, the change in tone and demeanor that comes from male counterparts upon realizing that the woman they’re talking to &lt;u&gt;knows what she’s talking about&lt;/u&gt;. In some cases, she knows a heck of a lot more than they do. But that “shock and awe” isn’t restricted to trade shows, and it’s really got nothing to do with booth babes. It’s the preconceived notions many  men carry along with them to trade shows. Notice that these opinions didn’t originate at a trade show replete with lusty booth babes, they were &lt;em&gt;carried along. &lt;/em&gt;That shock and awe isn’t peculiar to trade show environments, &lt;em&gt;it is everywhere&lt;/em&gt;. On the phone, on a webinar, in a lab. In environments where there are no booth babes. Hence, they are not really part of the “problem” at all. &lt;/p&gt;  &lt;p&gt;   &lt;/p&gt;&lt;hr color="#680000" width="100%" noshade="noshade" /&gt;     &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;SWAG versus SKIRTS &lt;/strong&gt;&lt;/div&gt;    &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;Go ahead, take the booth babe out of the picture. The assumptions and pre-conceived notions held by many in IT will still be there. The front line in any booth is assumed to be staffed by both male and female “talent” or employees that are not necessarily very technical. Period. Whether they’re male or female, that “screening line” isn’t going to be able to describe in detail, for example, the anatomy of an SSL handshake. Go ahead, ask. Ask a man, ask a woman. Doesn’t matter. Front line booth staff are almost unilaterally there to screen and direct. They exist to welcome you to the booth, scan your badge, and to help you get to the right person if you’re interested in a discussion. They are there because they are outgoing and friendly and enjoy engaging with people, for which those of us who are hiding “in the booth” and are not outgoing are grateful. &lt;/p&gt;  &lt;p&gt;Now many folks point out that using booth babes generates a lot of useless leads. Mostly true. But the same can be said for interesting swag, as well. Folks who visit a booth to snatch up the latest geegaw or enter a drawing to win an iPad aren’t exactly solid leads in the first place, so whether they’re attracted by a nice set of legs or a shiny toy isn’t really all that relevant now, is it? It’s not as if the guy who stopped by for a shiny, sparkly ball for his kids is any more interested in your product than the one who was attracted by a beautiful set of … legs.  &lt;/p&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p&gt;It is more than expected that women in technology want the respect they deserve based on their knowledge and expertise, not their choice in clothing or &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/BoothBabesDontWearGlasses_4FBE/demandingwoman_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 10px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="demandingwoman" border="0" alt="demandingwoman" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/BoothBabesDontWearGlasses_4FBE/demandingwoman_thumb.jpg" width="80" height="111" /&gt;&lt;/a&gt;shoes. But how do you know who they are? And for that matter, how do you which men are the ones that have the knowledge you’re looking for? You can’t assume (or shouldn’t) that any given man at a technology show is any more technically astute than another because there are a variety of folks who attend those shows: from the IT manager who may not have 1337 technical skillz to the router jockey that does. Despite the attempts of Hollywood to the contrary, you can’t tell who’s is or isn’t a geek by looking at them. You simply can’t judge the competency and knowledge of an IT worker from their outward appearance or their title or even their degree. &lt;/p&gt;  &lt;p&gt;On the other hand, you can be relatively sure that a booth babe is just that: a booth babe. Their proximity to the booth and uniform of short skirts, tight tops, and heavily glossed lips is hard to miss. I am not likely to be mistaken for a booth babe and conversely they are unlikely to be mistaken for someone with a clue. I will, however, almost certainly run into someone who is very surprised that I know a thing or two. Why? Because I’m a woman. In technology. And as much as I’d like to at times, I &lt;strong&gt;don’t&lt;/strong&gt; carry a 2x4 wrapped in copies of my master’s degree in computer science, so there’s no obvious clue other than the fact that I’m &lt;em&gt;not &lt;/em&gt;dressed like a booth babe.  &lt;/p&gt;  &lt;p&gt;The debate over “booth babes” isn’t really about booth babes. It’s not even really about the inability to distinguish the geeks from the rest of the crowd. It’s about the &lt;em&gt;reaction&lt;/em&gt; of men to a technically competent woman, no matter what she’s wearing. It’s the surprise and the shock in their expression and voice. It’s about the assumption that &lt;em&gt;no &lt;/em&gt;woman is technically competent – at a trade show or on a conference call. &lt;em&gt;That’s &lt;/em&gt;at the heart of this debate and others like it, and whether booth babes are present or not is unlikely to have an impact on those assumptions.     &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: &lt;em&gt;It’s been mentioned by “those in the know” that the event that started this whole brouhaha, CiscoLive, will be “booth babe” free in the future. &lt;/em&gt;&lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="100%"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="70%"&gt;         &lt;h3&gt;Related Posts&lt;/h3&gt;          &lt;div class="wlw_related_posts"&gt;from tag &lt;a href="http://del.icio.us/lmacvittie/women"&gt;women&lt;/a&gt;            &lt;br /&gt;            &lt;ul&gt;             &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/02/19/computer-engineer-barbie-we-need-details-not-dolls.aspx"&gt;Computer Engineer Barbie: We Need Details not Dolls&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/05/01/confessions-of-a-tech-blogging-grandmother.aspx"&gt;Confessions of a tech blogging grandmother&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://girldeveloper.com/waxing-dev/i-ve-concluded-that-you-guys-don-t-think-i-m-an-idiot/"&gt;I've Concluded That You Guys Don't Think I'm an Idiot - A Reflection on the Sexes and the Field : Girl Developer&lt;/a&gt;&lt;/li&gt;           &lt;/ul&gt; from tag &lt;a href="http://del.icio.us/lmacvittie/technology"&gt;technology&lt;/a&gt;            &lt;br /&gt;            &lt;ul&gt;             &lt;li&gt;&lt;a href="http://laptoplogic.com/resources/64-things-every-geek-should-know"&gt;64 Things Every Geek Should Know - LaptopLogic.com&lt;/a&gt;&lt;/li&gt;           &lt;/ul&gt; from tag &lt;a href="http://del.icio.us/lmacvittie/F5"&gt;F5&lt;/a&gt;            &lt;br /&gt;            &lt;ul&gt;             &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/08/26/the-virtual-public-private-cloud-connection.aspx"&gt;The Virtual Public-Private Cloud Connection&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/07/24/3481.aspx"&gt;Madness? THIS. IS. SOA!&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/02/10/that-whole-concept-is-broken.aspx"&gt;That Whole Concept is Broken&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/01/15/google-gmail-ssl-cookie-encryption.aspx"&gt;Following Google’s Lead on Security? Don’t Forget to Encrypt Cookies&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/04/29/is-paas-just-outsourced-application-server-platforms.aspx"&gt;Is PaaS Just Outsourced Application Server Platforms?&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/11/soft-adc-vadc-definition.aspx"&gt;I CAN HAS DEFINISHUN of SoftADC and vADC?&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/26/magic-virtualization-fairy-dust-and-the-new-network.aspx"&gt;Magic Virtualization-Fairy Dust and the New Network&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/05/24/despite-good-intentions-paas-interoperability-still-only-skin-deep.aspx"&gt;Despite Good Intentions PaaS Interoperability Still Only Skin Deep&lt;/a&gt;&lt;/li&gt;           &lt;/ul&gt;           &lt;a href="http://del.icio.us/lmacvittie/F5"&gt;(more..)&lt;/a&gt;&lt;/div&gt;       &lt;/td&gt;        &lt;td valign="top" width="30%"&gt;         &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img border="0" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" /&gt;&lt;/a&gt; &lt;a href="http://www.friendfeed.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="friendfeed" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/friendfeed_3.jpg" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;          &lt;p&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;script type="text/javascript" src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355"&gt;&lt;/script&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;   &lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1fbdc901-0f0d-4072-b09b-b2e0f277eee3" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/women" rel="tag"&gt;women&lt;/a&gt;,&lt;a href="http://technorati.com/tags/technology" rel="tag"&gt;technology&lt;/a&gt;,&lt;a href="http://technorati.com/tags/booth+babes" rel="tag"&gt;booth babes&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Denise+Dubie" rel="tag"&gt;Denise Dubie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/conferences" rel="tag"&gt;conferences&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1090168.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 14 Jul 2010 19:16:18 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/15/booth-babes-donrsquot-wear-glasses.aspx#comment</comments><slash:comments>3</slash:comments><dc:creator>Lori MacVittie</dc:creator></item><item><title>Risk Averse or Cutting Edge? Both at Once.</title><link>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/14/risk-averse-or-cutting-edge-both-at-once.aspx</link><description>&lt;p&gt;A couple of articles that have come out in the last week or so got me to pondering the current state of IT Management mentality, and it is somewhat amusing, if you think it through. We’re risk-averse where all &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/RiskAverseorCuttingEdgeBothatOnce_A1A0/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/RiskAverseorCuttingEdgeBothatOnce_A1A0/image_thumb.png" width="92" height="156" /&gt;&lt;/a&gt;evidence indicates we don’t need to be, and we’re cutting edge, risk aware but not averse, where all evidence says we should be treading with caution. The curious thing to me is that all of this is happening at once, and we’re okay with it.&lt;/p&gt;  &lt;p&gt;The first article that brought this to my attention was published on The Register about &lt;a href="http://www.theregister.co.uk/2010/07/07/enterprise_storage_buyer_views_on_his_supplier/" target="_blank"&gt;Enterprise Storage&lt;/a&gt;, and talks about an enterprise storage guy who is discussing how his organization will only use a few top- of-the-line storage vendors, and how up-and-coming solutions have almost no chance of getting in the door of his enterprise.&lt;/p&gt;  &lt;p&gt;The second article comes compliments of Network Computing and discusses a &lt;a href="http://www.networkcomputing.com/next-gen-network/despite-a-claim-of-5-nines-uptime-a-48-hour-outage-blew-the-curve.php" target="_blank"&gt;failure of a cloud provider&lt;/a&gt;, and is another IT person talking about how their cloud-based provider failed them and failed to resolve their issues in a timely manner.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;EASILY AMUSED&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;Am I the only one amused by these two articles, taken in tandem? I mean storage is commodity stuff these days. I’ve written before about the joys of RAID and the highly capable software add-ons available in tier two storage vendors. The industry has been around long enough that true differentiators for the vast majority of storage environments are service and support. These days the new features that high-end, tier one vendors offer are all aimed at the high end of the storage spectrum. Most enterprises don’t need flash drives for a long-term cache, for example.&lt;/p&gt;  &lt;p&gt;The cloud? It is immature, ill-defined (as a market), poorly documented, and lacks standards. What vendor you choose, or even if you jump in at all, is of tremendous importance to the success of your IT endeavors and possibly to the success of your enterprise. &lt;/p&gt;  &lt;p&gt;We’re at an odd point in the technological life-cycle where the hype factor for cloud is driving some to try things that when looked at through the prism of realistic capabilities, it just isn’t ready for, while the storage industry has long been one where enterprises are told they might lose critical data if they use anything but the most feature packed, expensive vendors…&lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;WHAT COLOR IS YOUR RISK ASSESSMENT?&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/RiskAverseorCuttingEdgeBothatOnce_A1A0/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/RiskAverseorCuttingEdgeBothatOnce_A1A0/image_thumb_1.png" width="162" height="111" /&gt;&lt;/a&gt;But in the end you have the organization to look out for. Put the inexpensive disk in and give it a test run, right next to the cloud solution. Seriously. If you’re willing to test-drive cloud solutions, then you should be willing to test drive less expensive storage solutions too. If you’re not doing either, then at least you are consistent.&lt;/p&gt;  &lt;p&gt;The one caveat I would offer in the storage space is to make sure the functionality that you do need is in your chosen tier-two vendor’s offerings. If you rely upon replication for DR, buying storage that doesn’t include replication is kind of self-defeating. But given the state of the storage market, I’ll speculate that most enterprises are well-served by the functionality in less expensive solutions.&lt;/p&gt;  &lt;p&gt;And check performance of course. Put high-performance gear in where it is needed, and not where it isn’t. Some enterprises need the incremental speed boosts of higher-end storage arrays, but some don’t, and in some cases the lower-cost solution performs as well or better than the higher-end gear.&lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;NOPE. NOT ABOUT US.&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;Now some of you will immediately jump to the conclusion that this could be generalized to include F5’s markets. I say no, because &lt;a href="http://www.f5.com" target="_blank"&gt;F5&lt;/a&gt; has provided VM solutions for dev, test, and low-volume implementations and physical solutions for your other needs. Our other products are cutting-edge high-quality (like &lt;a href="http://www.f5.com/products/big-ip/product-modules/wan-optimization-module.html" target="_blank"&gt;WOM&lt;/a&gt; and &lt;a href="http://www.f5.com/products/big-ip/solution-modules/edge-gateway.html" target="_blank"&gt;EDGE Gateway&lt;/a&gt;), or technically tier two storage (&lt;a href="http://www.f5.com/products/arx-series/" target="_blank"&gt;ARX&lt;/a&gt; and &lt;a href="http://www.f5.com/products/data-manager/" target="_blank"&gt;Data Manager&lt;/a&gt;). So I really am only talking about the storage market, where even the “secondary storage” arrays of top-line vendors are more expensive than the “primary storage” lines of other quality vendors. &lt;/p&gt;  &lt;p&gt;For the cloud? Well, pick a vendor and try them out. Don’t go crazy and move your entire infrastructure, stay loosely coupled, determine what they can and can’t do, and like every other tool in your toolbox, use them for their strengths. Or find a new vendor if your experiences are like the ones in the Network Computing article. &lt;/p&gt;  &lt;p&gt;In other words, become more risk-averse on the cutting edge technology, and less on the stuff that’s been around since the 80s.&lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:296416ee-e79b-433b-b4cc-81976eec269b" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Cloud" rel="tag"&gt;Cloud&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Storage" rel="tag"&gt;Storage&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+Networks" rel="tag"&gt;F5 Networks&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Don+MacVittie" rel="tag"&gt;Don MacVittie&lt;/a&gt;&lt;/div&gt;  &lt;p align="right"&gt;&lt;a href="http://twitter.com/dmacvittie" target="_blank"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/Rss.aspx" target="_blank"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/don.macvittie" target="_blank"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="right"&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fdmacvittie%2FRss.aspx&amp;amp;t1=" target="_blank"&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Related Articles and Blogs&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.networkcomputing.com/next-gen-network/despite-a-claim-of-5-nines-uptime-a-48-hour-outage-blew-the-curve.php" target="_blank"&gt;Despite a Claim of five nines, a 48 hour outage blew the curve&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.theregister.co.uk/2010/07/07/enterprise_storage_buyer_views_on_his_supplier/" target="_blank"&gt;The Enterprise Storage Buyer: Why I Stick With the Big Guys&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://tech.fortune.cnn.com/2010/01/25/startup-with-all-star-backers-aims-to-disrupt-storage-market/" target="_blank"&gt;Startup with all-star backers aims to disrupt the storage market&lt;/a&gt; (Start-up? I covered them more than three years ago…)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.zycko.com/news/19885652-Isilon_scale-out_storage_selected_by_NAVTEQ" target="_blank"&gt;Isilon Scale-out Storage Selected by NAVTEQ&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://cloudcomputing.sys-con.com/" target="_blank"&gt;Cloud Computing Journal on Sys-Con&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://devcentral.f5.com/weblogs/dmacvittie/aggbug/1090165.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 14 Jul 2010 04:03:54 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/14/risk-averse-or-cutting-edge-both-at-once.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Don MacVittie</dc:creator></item><item><title>CloudFucius Tunes into Radio KCloud</title><link>http://devcentral.f5.com/weblogs/psilva/archive/2010/07/14/cloudfucius-tunes-into-radio-kcloud.aspx</link><description>&lt;p&gt;&lt;em&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/psilva/WindowsLiveWriter/CloudFuciusTunesintotheCloud_8643/Konfuzius-1770_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Konfuzius-1770" border="0" alt="Konfuzius-1770" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/psilva/WindowsLiveWriter/CloudFuciusTunesintotheCloud_8643/Konfuzius-1770_thumb.jpg" width="38" height="52" /&gt;&lt;/a&gt; Set the dial and rip it off – all the hits from the 70s, 80s, 90s and beyond – you’re listening to the K-Cloud.  We got The Puffy &amp;amp; Fluffy Show to get you going in the morning, Cumulous takes you through midday with lunchtime legion, Mist and Haze get you home with 5 o’clock funnies and drive-time traffic while Vapor billows overnight for all you insomniacs.  K-Cloud; Radio Everywhere.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;I came across &lt;a title="Radio’s Future May Be in the Clouds" href="http://www.radioworld.com/article/103296"&gt;this article&lt;/a&gt; which discusses Radio’s analogue to digital transition and it’s slow but eventual move to cloud computing.  How ‘&lt;em&gt;Embracing cloud computing requires a complete rethinking of the design, operation and planning of a station’s data center&lt;/em&gt;.’  Industries like utilities, technology, insurance, government and others are already using the cloud while the broadcast community is just starting it’s exploration, according to Tom Vernon, a long-time contributor to Radio World.  &lt;/p&gt;  &lt;p&gt;Like many of you, I grew up listening to the radio (music, I’m not &lt;em&gt;that&lt;/em&gt; old) and still have a bunch of hole-punched record albums for being the 94th caller.  I listened to &lt;a title="The Home of Rock and Roll" href="http://www.whjy.com/main.html"&gt;WHJY (94-HJY)&lt;/a&gt; in &lt;a title="Providence, RI" href="http://www3.providenceri.com/"&gt;Providence&lt;/a&gt; and still &lt;a title="WHJY" href="http://en.wikipedia.org/wiki/WHJY"&gt;remember the day in 1981 when it switched from JOY&lt;/a&gt;, a soft, classical station to Album-Orientated Rock.  Yes, I loved the hair-metal, arena rock, new wave, pop and most what they now call classic rock.  It’s weird remembering &lt;a title="Emotional Rescue" href="http://en.wikipedia.org/wiki/Emotional_Rescue"&gt;&lt;em&gt;‘Emotional Rescue’&lt;/em&gt;&lt;/a&gt; and &lt;a title="Love Rollercoaster" href="http://en.wikipedia.org/wiki/Love_Rollercoaster"&gt;&lt;em&gt;‘Love Rollercoaster’&lt;/em&gt;&lt;/a&gt; playing on the radio as Top 40 hits and now they are considered ‘classics.’   Um, what am I then?!?  &lt;/p&gt;  &lt;p&gt;&lt;a title="Radio's Future in the Clouds" href="http://www.radioworld.com/article/103296"&gt;That article&lt;/a&gt; prompted me to explore the industries that have not embraced the cloud, and why.  Risk adverse industries immediately come to mind, like financial and health care.  There have been somewhat contradictory stories and surveys recently indicating both that, they are hesitant to adopt the cloud and ready to embrace the cloud.  A survey by &lt;a title="log management and security management products" href="http://loglogic.com/"&gt;LogLogic&lt;/a&gt; says that &lt;a title="The Cloud Fear Factor in Financial Services" href="http://www.itbusinessedge.com/cm/blogs/vizard/the-cloud-fear-factor-in-financial-services/?cs=41824"&gt;60% of the financial services sector felt that cloud computing was not a priority or they were risk-averse to cloud computing.&lt;/a&gt;  This is generally an industry that historically has been an early adopter of new technologies.  The survey indicates that &lt;a title="Financial services firms hesitant to adopt cloud computing" href="http://www.net-security.org/secworld.php?id=9428"&gt;they will be spending IT dollars on ‘essential’ needs&lt;/a&gt; and that security questions and data governance concerns is what’s holding them back from cloud adoption.&lt;/p&gt;  &lt;p&gt;About a week later, results from a survey done by &lt;a title="SIFMA" href="http://www.sifma.org/news/news.aspx?id=17428"&gt;The Securities Industry and Financial Markets Association (SIFMA)&lt;/a&gt; and IBM reports that there is now a strong interest in cloud computing after a couple years of reluctance.  The delay was due to the cost of implementing new technologies and the lack of talent needed to mange those systems.  Security is not the barrier that it once was since their cloud strategies include security ramifications.  They better understand the security risks and calculate that into their deployment models.  &lt;a title="Financial Services Like The Cloud, Provided It's Private" href="http://www.informationweek.com/cloud-computing/blog/archives/2010/05/financial_servi.html"&gt;This &lt;em&gt;InformationWeek.com&lt;/em&gt; story&lt;/a&gt; says that the financial services industry is indeed interested in cloud computing, as long as it’s a Private Cloud.  The one’s behind the corporate firewall, not Public floaters.  And that security was not the real issue, regulations and compliance with international border laws were the real holdback.&lt;/p&gt;  &lt;p&gt;In the healthcare sector, according to &lt;a title="Healthcare Taking Computing To The Cloud" href="http://www.informationweek.com/news/healthcare/interoperability/showArticle.jhtml;jsessionid=MCGXMYV4IYVSNQE1GHPSKH4ATMY32JVN?articleID=225700843&amp;amp;subSection=News"&gt;yet another survey&lt;/a&gt;,  Accenture says that 73% said they are planning cloud movements while nearly one-third already have deployed cloud environments.  &lt;a title="Risk-Averse Verticals Embrace Cloud Computing" href="http://www.informationweek.com/cloud-computing/blog/archives/2010/06/riskaverse_vert.html"&gt;This story&lt;/a&gt; also says that ‘&lt;em&gt;healthcare firms are beginning to realize that cloud providers actually may offer more robust security than is available in-house&lt;/em&gt;.’  &lt;/p&gt;  &lt;p&gt;Is there a contradiction?  Maybe.  More, I think it shows natural human behavior and progression when facing fears.  If you don’t understand something and there is a significant risk involved we’ll generally say, ‘no thanks’ to preserve our safety and security.  As the dilemma is better understood and some of the fears are either addressed or accounted for, the threat level is reduced and progress can be made.  This time around, while there are still concerns, we are more likely to give it a try since we know what to expect.  A risk assessment exercise gives us the tools to manage the fears.  Maybe the threat is high but the potential of it occurring is low or the risk is medium but we now know how to handle it.  It’s almost like jumping out of a plane.  If you’ve never done it, that first 3000ft tethered leap can be freighting – jumping at that height, hoping a huge piece of fabric will hold and glide you to a safe landing on the ground.  But once you’ve been through training, practiced it a few times, understand how to deploy your backup ‘chute and realize the odds are in your favor, then it’s not so daunting.  This may be what’s happening with risk averse industries and cloud computing.  Initially, the concerns, lack of understanding, lack of visibility, lack of maturity, lack of control, lack of security mechanisms and their overall fear kept these entities away, even with the lure of flexibility and potential cost savings.  Now that there is a better understanding of what types of security solutions a cloud provider can and cannot offer along with the knowledge of how to address specific security concerns, it’s not so scary any more.&lt;/p&gt;  &lt;p&gt;Incidentally, I had initially used &lt;a title="1047 KCLD  - Today's Hit Music!" href="http://www.1047kcld.com/index.php"&gt;KCLD&lt;/a&gt; and &lt;a title="Jammin 104" href="http://www.missradio.com/"&gt;WCLD&lt;/a&gt; for my cloud stations until I realized that they were already taken by real radio stations out of Minnesota and Mississippi.&lt;/p&gt;  &lt;p&gt;And one from Confucius: &lt;a href="http://www.quotationspage.com/quote/29399.html"&gt;&lt;em&gt;Everything has its beauty but not everyone sees it&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;em&gt;&lt;em&gt;&lt;em /&gt;&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;ps&lt;/p&gt;  &lt;p&gt;The CloudFucius Series: &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/04/07/cloudfucius-says-blog-series-good-idea.aspx"&gt;Intro&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/04/13/cloudfucius-says-aaa-important-to-cloud.aspx"&gt;1&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/04/21/cloudfucius-wonders-can-cloud-confidentiality-and-the-constitution-coexist.aspx"&gt;2&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/04/27/cloudfucius-hollers-read-all-about-f5rsquos-on-demand-it.aspx"&gt;3&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/05/05/cloudfucius-ponders-high-availability-in-the-cloud.aspx"&gt;4&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/05/11/cloudfucius-wants-an-optimized-cloud.aspx"&gt;5&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/Default.aspx"&gt;6&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/05/25/cloudfucius-combines-security-and-acceleration.aspx"&gt;7&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/05/26/cloudfucius-listens-f5rsquos-cloud-computing-solutions.aspx"&gt;8&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/06/01/cloudfucius-shares-cloud-research-and-stats.aspx"&gt;9&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/06/10/connecting-to-a-cloud-while-flying-thru-the-clouds.aspx"&gt;10&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/06/14/99-blog-posts-on-the-wall.aspx"&gt;11&lt;/a&gt;, &lt;a title="CloudFucius Dials Up the Cloud" href="http://devcentral.f5.com/weblogs/psilva/archive/2010/07/07/cloudfucius-dials-up-the-cloud.aspx"&gt;12&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Related:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.radioworld.com/article/103296"&gt;Radio’s Future May Be in the Clouds&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.itbusinessedge.com/cm/blogs/vizard/the-cloud-fear-factor-in-financial-services/?cs=41824"&gt;The Cloud Fear Factor in Financial Services&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.net-security.org/secworld.php?id=9428"&gt;Financial services firms hesitant to adopt cloud computing&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.informationweek.com/cloud-computing/blog/archives/2010/05/financial_servi.html;jsessionid=ILVSGYKXYV4IRQE1GHPSKH4ATMY32JVN?catid=cloud-computing"&gt;Financial Services Like The Cloud, Provided It's Private&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.informationweek.com/cloud-computing/blog/archives/2010/06/riskaverse_vert.html"&gt;Risk-Averse Verticals Embrace Cloud Computing&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.informationweek.com/news/healthcare/interoperability/showArticle.jhtml;jsessionid=MCGXMYV4IYVSNQE1GHPSKH4ATMY32JVN?articleID=225700843&amp;amp;subSection=News"&gt;Healthcare Taking Computing To The Cloud&lt;/a&gt;&lt;b /&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.sifma.org/news/news.aspx?id=17428"&gt;Wall Street Firms Set to Increase IT Spend through 2011 on Transformation Initiatives&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ctoedge.com/content/state-cloud-computing-security"&gt;The State of Cloud Computing Security&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/06/28/risk-is-not-a-synonym-for-ldquolack-of-securityrdquo.aspx"&gt;Risk is not a Synonym for “Lack of Security”&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5"&gt;F5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/infrastructure+2.0"&gt;infrastructure 2.0&lt;/a&gt;, &lt;a href="http://technorati.com/tags/integration"&gt;integration&lt;/a&gt;, &lt;a href="http://technorati.com/tags/cloud+connect"&gt;cloud connect&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Pete+Silva"&gt;Pete Silva&lt;/a&gt;, &lt;a href="http://technorati.com/tags/security"&gt;security&lt;/a&gt;, &lt;a href="http://technorati.com/tag/business"&gt;business&lt;/a&gt;, &lt;a href="http://technorati.com/tag/education"&gt;education&lt;/a&gt;, &lt;a href="http://technorati.com/tag/technology"&gt;technology&lt;/a&gt;, &lt;a href="http://technorati.com/tags/application+delivery"&gt;application delivery&lt;/a&gt;, &lt;a href="http://technorati.com/tags/cloud"&gt;cloud&lt;/a&gt;, &lt;a href="http://technorati.com/tags/context-aware"&gt;context-aware&lt;/a&gt;, &lt;a href="http://technorati.com/tags/web"&gt;web&lt;/a&gt;, &lt;a href="http://technorati.com/tags/internet"&gt;internet&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;twitter: &lt;a href="http://twitter.com/psilvas"&gt;@psilvas&lt;/a&gt;&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:right; margin:0px; padding:4px 0px 4px 0px;"&gt;&lt;a href="http://digg.com/submit?url=http%3a%2f%2fdevcentral.f5.com%2fweblogs%2fpsilva%2farchive%2f2010%2f07%2f14%2fcloudfucius-tunes-into-radio-kcloud.aspx&amp;amp;title=CloudFucius+Tunes+into+Radio+KCloud"&gt;&lt;img src="http://digg.com/img/badges/100x20-digg-button.png" width="100" height="20" alt="Digg This" title="Digg This" border="0" style="border: 0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/psilva/aggbug/1090167.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 14 Jul 2010 02:59:00 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/psilva/archive/2010/07/14/cloudfucius-tunes-into-radio-kcloud.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Pete Silva</dc:creator></item><item><title>A Taste of Blackberries</title><link>http://devcentral.f5.com/weblogs/jason/archive/2010/07/14/a-taste-of-blackberries.aspx</link><description>&lt;p&gt;No, not the &lt;a href="http://www.amazon.com/Taste-Blackberries-Doris-Buchanan-Smith/dp/006440238X" target="_blank"&gt;kiddie lit favorite by Doris Buchanan Smith&lt;/a&gt;, I mean the smart phones.  I was not a member of the smart phone club when I started at &lt;a href="http://www.f5.com" target="_blank"&gt;F5&lt;/a&gt;.  In fact, my first week on the job was at our international sales conference and I remember watching Jeff and Joe scroll, click, and type like the wind and Jeff leaned over and said, “They’re addicting, you’ll see.”  I got my first &lt;a href="http://na.blackberry.com/" target="_blank"&gt;Blackberry&lt;/a&gt;, the &lt;a href="http://na.blackberry.com/eng/devices/blackberrycurve8300/" target="_blank"&gt;Curve 8310&lt;/a&gt;, a week later.  I liked having all the keys for typing, as the limited texts I’d written with the basic phones was a chore, but the buttons were pretty small for my stubby fingers, and given that I h    &lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:d901b93f-ab1f-45e9-afa0-307dd7ae7229" class="wlWriterEditableSmartContent"&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jason/WindowsLiveWriter/ATasteofBlackberries_BF35/blackberries-8x6.jpg" title="" rel="thumbnail"&gt;&lt;img border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jason/WindowsLiveWriter/ATasteofBlackberries_BF35/blackberries_11.png" width="377" height="321" /&gt;&lt;/a&gt;&lt;/div&gt; ave the dexterity of one wearing mittens, well, let’s just say it took some getting used to.  I wasn’t immediately impressed overall, and couldn’t for the life of my figure out whey this was so appealing.  However, after figuring out the email usage and installing &lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=1&amp;amp;ved=0CCYQFjAA&amp;amp;url=http%3A%2F%2Fmaps.google.com%2F&amp;amp;ei=qfs9TN2UFOCynAfY8LTdDg&amp;amp;usg=AFQjCNGjiDvWOKhrFyciD3gY-ZTNaakfyg" target="_blank"&gt;google maps&lt;/a&gt;, &lt;a href="http://www.facebook.com" target="_blank"&gt;facebook&lt;/a&gt;, and &lt;a href="http://www.twitter.com" target="_blank"&gt;twitter&lt;/a&gt;, I was well on my way to becoming an addict.  &lt;p&gt;Two things drove my nuts about my 8310.  One was the camera.  The pinhole for the sensor was not covered at level with the phone with glass, so it was near impossible to keep the lens clean.  The second was the trackball.  It was constantly getting stuck, and after a few falls, would occasionally pop out.  This came to a head at Tech Ed last month when it fell out at night, in a gravel driveway.  I crawled around in the hot sticky mess that is the South in the summer, but couldn’t find it.  So I learned a few of the trackball-less navigation techniques that allowed me to at least make phone calls and read emails.  This problem led to a short experience with the &lt;a href="http://na.blackberry.com/eng/devices/blackberrycurve8300/" target="_blank"&gt;Curve 8320&lt;/a&gt;.  Not really an evolution here, as both models I assume were released concurrently, but I found it odd that in this line at least, you had to choose between GPS and wi-fi.  I was a little shocked while out driving and needing to find a place I hadn’t been that google maps couldn’t zero in on my location, only to find I had no GPS receiver.  The wi-fi was nice, though, as it’s a little quicker while at home than using the 3G network.  I’m sure it was a buggy unit, but the 8320 froze constantly and often hard shutdown, requiring about 10 minutes to return to normal.  Not good while on phone calls.&lt;/p&gt;  &lt;p&gt;Fast forward to the &lt;a href="http://na.blackberry.com/eng/devices/blackberrybold/bold_specifications.jsp" target="_blank"&gt;Bold 9700&lt;/a&gt;.  I received this bad boy yesterday after waving the white flag on figuring out the 8320 instability issues.  While I’m not crazy about the change in the feel of the buttons, I’m excited to see the trackpad instead of the trackball.  Also, the camera lens is covered at-level with glass.  Woo Hoo! Both issues addressed.  I guess I’m easy, right?  Another nice feature is the grip pad on the back of the phone that prevents sliding (and fidget-induced phone spinning).  I’m still getting used the interface, but overall, I’m impressed with the advances.  I’m a little annoying by all the preview software that I can’t use, but that’s not just a Blackberry problem.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4c9bb58f-4c72-4025-bfdb-0897ba508883" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5+DevCentral" rel="tag"&gt;F5 DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Blackberry" rel="tag"&gt;Blackberry&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Blackberry+Curve" rel="tag"&gt;Blackberry Curve&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Blackberry+Bold" rel="tag"&gt;Blackberry Bold&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jason+Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/jason/aggbug/1090166.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 14 Jul 2010 02:36:46 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/jason/archive/2010/07/14/a-taste-of-blackberries.aspx#comment</comments><slash:comments>1</slash:comments><dc:creator>Jason Rahm</dc:creator></item><item><title>Out, Damn&amp;rsquo;d Bot! Out, I Say!</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/14/out-out-damned-bot.aspx</link><description>&lt;p&gt;&lt;em&gt;Exorcising your digital demons &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/OutOutDamnedBot_798B/stop-woman_2.jpg"&gt;&lt;img height="267" border="0" align="left" width="224" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/OutOutDamnedBot_798B/stop-woman_thumb.jpg" alt="stop-woman" title="stop-woman" style="border: 0px none ; display: inline; margin-left: 0px; margin-right: 0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Most people are familiar with Shakespeare’s &lt;a href="http://en.wikipedia.org/wiki/Macbeth"&gt;&lt;em&gt;The Tragedy of Macbeth&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. &lt;/em&gt;Of particularly common usage is the famous line uttered repeatedly by Lady Macbeth, “Out, damn’d spot! Out, I say” as she tries to wash imaginary bloodstains from her hands, wracked with the guilt of the many murders of innocent men, women, and children she and her husband have committed. &lt;/p&gt;
&lt;p&gt;It might be no surprise to find a similar situation in the datacenter, late at night. With the background of humming servers and cozily blinking lights shedding a soft glow upon the floor, you might hear some of your infosecurity staff roaming the racks and crying out “Out, damn’d bot! Out I say!” as they try to exorcise digital demons from their applications and infrastructure.  &lt;/p&gt;
&lt;p&gt;Because once those bots get in, they tend to take up a permanent residence. Getting rid of them is harder than you’d think because like Lady Macbeth’s imaginary bloodstains, they just keep coming back – until you address the source. &lt;/p&gt;
&lt;hr noshade="noshade" color="#680000" width="100%" /&gt;
&lt;div style="background: rgb(235, 211, 211) none repeat scroll 0% 0%; width: 77.82%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; height: 18px;"&gt;&lt;strong&gt;A RECURRING NIGHTMARE&lt;/strong&gt;&lt;/div&gt;
&lt;hr noshade="noshade" color="#680000" width="100%" /&gt;
&lt;p&gt;One of the ways in which a bot can end up in your datacenter wreaking havoc and driving your infosec and ops teams insane is through web application vulnerabilities. These vulnerabilities in both the underlying language and server software as well as the web application itself, are generally exploited through &lt;a href="http://www.f5.com/glossary/cross-site-scripting.html"&gt;XSS&lt;/a&gt; (Cross-site scripting). While we tend to associate XSS with attempts to corrupt a data source and subsequently use it as distribution channel for malware, a second use of XSS is to enable the means by which a bot can be loaded onto an internal resource. From there the bot can spread, perform DoS attacks on the local network, be used as a SPAM bot, or join in a larger bot network as part of a DDoS. &lt;/p&gt;
&lt;p&gt;The uses of such deposited bots is myriad and always malevolent. &lt;/p&gt;
&lt;p&gt;Getting rid of one is easy. It’s &lt;em&gt;keeping &lt;/em&gt;it gone that’s the problem. If it entered via a web application it is imperative that the vulnerability be found and patched. And it can’t wait for days, because the bot that likely exploited that vulnerability and managed to deploy the bot inside your network is probably coming back. In a few hours. You can remove the one that’s there now, but unless the hole is closed, it’ll be back – sooner rather than later. &lt;/p&gt;
&lt;p&gt;According to an &lt;a href="http://www.arstechnica.com"&gt;ARS Technica&lt;/a&gt; report, you may already know this pain as “&lt;a href="http://arstechnica.com/security/news/2010/04/almost-all-fortune-500-companies-show-zeus-botnet-activity.ars"&gt;almost all Fortune 500 companies show Zeus botnet activity&lt;/a&gt;”: &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/OutOutDamnedBot_798B/quote-left_2.png"&gt;&lt;img height="21" border="0" align="left" width="24" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/OutOutDamnedBot_798B/quote-left_thumb.png" alt="quote-left" title="quote-left" style="border: 0px none ; margin: 0px 10px 0px 0px; display: inline;" /&gt;&lt;/a&gt;Up to 88% of Fortune 500 companies may have been affected by the Zeus trojan, according to research by RSA's FraudAction Anti-Trojan division, part of EMC. &lt;/p&gt;
&lt;p&gt;The trojan installs keystroke loggers to steal login credentials to banking, social networking, and e-mail accounts.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is one of those cases in which &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/06/when-is-more-important-than-where-in-web-application-security.aspx"&gt;when is more important than where&lt;/a&gt; the vulnerability is patched initially. Yes, you want to close the hole in the application, but the reality is that it takes far longer to accomplish that then it will take for attackers to redeposit their bot. According to &lt;a href="http://www.whitehatsec.com"&gt;WhiteHat Security’s&lt;/a&gt; &lt;a href="http://www.whitehatsec.com/home/assets/presentations/09PPT/PPT_statsfall09_8th.pdf"&gt;Fall 2009 Website Security Statistics Report&lt;/a&gt; &lt;img height="12" width="12" src="http://www.whitehatsec.com/home/files/icon_PDF.gif" alt="PDF" /&gt; a website is 66 percent likely to be vulnerable to an XSS exploit, and it will take an average of 67 days for that vulnerability to be patched. &lt;/p&gt;
&lt;p&gt;That’s 67 days in which the ops and infosec guys will be battling with the bot left behind – cleaning it up and waiting for it to show up again. Washing their hands, repeatedly, day and night, in the hopes that the stain will go away. &lt;/p&gt;
&lt;em&gt;  &lt;/em&gt;&lt;hr noshade="noshade" color="#680000" width="100%" /&gt;
&lt;em&gt;   &lt;/em&gt;
&lt;div style="background: rgb(235, 211, 211) none repeat scroll 0% 0%; width: 100%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;em&gt;&lt;strong&gt;WHAT CAN YOU DO? &lt;/strong&gt;&lt;/em&gt;&lt;/div&gt;
&lt;em&gt;  &lt;/em&gt;&lt;hr noshade="noshade" color="#680000" width="100%" /&gt;
&lt;em&gt;  &lt;/em&gt;
&lt;p&gt;The best answer to keeping staff sane is to employ a security solution that’s just a bit more agile than the patching process. There are several options, after all, that can be implemented nearly immediately to plug the hole and prevent the re-infection of the datacenter while the development team is implementing a more permanent solution. &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/01/29/virtual-patching-what-is-it-and-why-you-should-be.aspx"&gt;Virtual patching&lt;/a&gt; &lt;/strong&gt;provides a nearly automated means of plugging vulnerabilities by combining vulnerability assessment services with a &lt;a rel="" href="http://www.f5.com/glossary/web-application-firewall.html" title=""&gt;web application firewall&lt;/a&gt; to virtually patch, in the network, a vulnerability while providing information necessary to development teams to resolve the issue permanently. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/10/31/understanding-network-side-scripting.aspx"&gt;Network-side scripting&lt;/a&gt; &lt;/strong&gt;can provide the means by which a vulnerability can be almost immediately addressed manually. This option provides a platform on which vulnerabilities that may be newly discovered and have not yet been identified by vulnerability assessment solutions can be addressed. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;&lt;a href="http://www.f5.com/solutions/security/web-application/"&gt;Web application firewall&lt;/a&gt;&lt;/strong&gt; can be manually instructed to discover and implement policies to prevent exploitation of vulnerabilities. Such policies generally target specific pages and parameters and allow operations to target protection at specific points of potential exploitation. &lt;/li&gt;
    &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/OutOutDamnedBot_798B/out-damnd-bot_2.jpg"&gt;&lt;img height="251" border="0" align="right" width="439" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/OutOutDamnedBot_798B/out-damnd-bot_thumb.jpg" alt="out-damnd-bot" title="out-damnd-bot" style="border-width: 0px; margin: 0px 0px 0px 10px; display: inline;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/ul&gt;
&lt;p&gt;All three options can be used together or individually. All three options can be used as permanent solutions or temporary stop-gap measures. All three options are just that, options, that make it possible to address vulnerabilities immediately rather than forcing the organization to continually battle the results of a discovered vulnerability until developers can address it themselves. &lt;/p&gt;
&lt;p&gt;More important than how is when, and as important as when is that the organization have in place a strategy that includes a tactical solution for protection of exploited vulnerabilities between discovery and resolution. It’s not enough to have a strategy that says “we find vulnerability. we fix. ugh.” That’s a prehistoric attitude that is inflexible and inherently dangerous given the rapid evolution of botnets over the past decade and will definitely not be acceptable in the next one. &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/OutOutDamnedBot_798B/quote-left_2.png"&gt;&lt;img height="21" border="0" align="left" width="24" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/OutOutDamnedBot_798B/quote-left_thumb.png" alt="quote-left" title="quote-left" style="border: 0px none ; margin: 0px 10px 0px 0px; display: inline;" /&gt;&lt;/a&gt; John Pescatore, vice president and distinguished analyst, speaking about the enterprise threat landscape Tuesday at the Gartner Security and &lt;/p&gt;
&lt;p&gt;Risk Management Summit, said rapid changes are taking place in the way IT organizations deliver services, largely via virtualization and &lt;a rel="" href="http://www.f5.com/solutions/cloud-computing" title=""&gt;cloud computing &lt;/a&gt;, and the way businesses consume them, which create infrastructure breakage points ripe for exploit. &lt;/p&gt;
&lt;/blockquote&gt;  &lt;blockquote&gt;
&lt;p&gt;"Ninety percent of attacks are exploiting vulnerabilities we already knew about, by missing patches, deciding not to patch, or uses of technology in which we made the decision to deploy without putting security controls on it," Pescatore said. "Less than 1% are zero-day attacks; &lt;strong&gt;the other 99% are exploited configurations and unpatched machines that the simplest vulnerability scan would've found&lt;/strong&gt;." &lt;/p&gt;
&lt;p&gt;And since attackers have had so much success using bots to take advantage of these vulnerabilities, Pescatore said that trend is likely to continue through 2012, when the ongoing cat-and-mouse game between attackers and enterprise defenders leads to the next threat delivery breakthrough. &lt;/p&gt;
&lt;p&gt;With IT and security resources always at a premium, Pescatore said enterprises must prioritize their defensive efforts simply by asking themselves what an attacker would want to get from them; in most cases it's personally identifiable information (PII) in the form of credit card and Social Security numbers, or sensitive intellectual property. [emphasis added] &lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://searchsecurity.techtarget.com/news/article/0,289142,sid14_gci1515425,00.html?track=sy160"&gt;Gartner: Enterprises must learn to detect botnet threats&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;  &lt;hr noshade="noshade" color="#680000" width="100%" /&gt;
&lt;div style="background: rgb(235, 211, 211) none repeat scroll 0% 0%; width: 100%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;strong&gt;PATCH FIRST, ASK QUESTIONS LATER &lt;/strong&gt;&lt;/div&gt;
&lt;hr noshade="noshade" color="#680000" width="100%" /&gt;
&lt;p&gt;It’s going to get harder and harder to exorcise those digital demons. That means the best strategy is to be proactive; to ensure the proper protections are in place before you go live. To &lt;a href="http://www.owasp.org/index.php/Main_Page"&gt;provide developers with the training and tools&lt;/a&gt; to ensure that known vulnerabilities are addressed, and that the infrastructure or application is sanitizing inbound data and scrubbing outbound data. &lt;/p&gt;
&lt;p&gt;Protecting the organization is no longer about which group or which solution should or shouldn’t be responsible for web application security. When web application vulnerabilities took legs and began to be a problem for the entire datacenter and the business, it became more about enabling solutions and less about who or how or what. &lt;/p&gt;
&lt;p&gt;Patch the vulnerability first, in whatever way can make that happen immediately. Then you can discuss and debate about what’s the proper long-term solution for your organization. After all, no one would suggest that the &lt;a href="http://en.wikipedia.org/wiki/Hans_Brinker,_or_The_Silver_Skates"&gt;little Dutch boy who stuck his finger in the dike&lt;/a&gt; should stand there forever, holding back the flood of water. But no one would suggest he was wrong to do it, either. &lt;/p&gt;
&lt;em&gt;  &lt;/em&gt;&lt;hr noshade="noshade" color="#808080" width="100%" /&gt;
&lt;em&gt;  &lt;/em&gt;
&lt;table cellspacing="0" cellpadding="2" border="0" width="100%"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="70%" valign="top"&gt;
            &lt;h3&gt;Related Posts&lt;/h3&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/05/12/network-security-does-not-imply-application-or-database-security.aspx"&gt;Network Security Does Not Imply Application or Database Security&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/25/are-you-scrubbing-the-twitter-stream-on-your-web-site.aspx"&gt;Are You Scrubbing the Twitter Stream on Your Web Site?&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/23/stopping-push-do-trojan.aspx"&gt;Turning the Pushdo Bot Into the Push-oh-no-you-don’t Bot&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/23/the-application-delivery-spell-book-detect-invisible-application-stalkers.aspx"&gt;The Application Delivery Spell Book: Detect Invisible (Application) Stalkers&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
            &lt;div class="wlw_related_posts"&gt;from tag &lt;a href="http://del.icio.us/lmacvittie/vulnerability"&gt;vulnerability&lt;/a&gt;            &lt;br /&gt;
            &lt;/div&gt;
            &lt;div class="wlw_related_posts"&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/06/when-is-more-important-than-where-in-web-application-security.aspx"&gt;When Is More Important Than Where in Web Application Security&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/07/21/i-can-has-ur-.htaccess-file.aspx"&gt;I Can Has UR .htaccess File&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/07/14/an-unhackable-server-is-still-vulnerable.aspx"&gt;An Unhackable Server is Still Vulnerable&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/03/05/using-resource-obfuscation-to-reduce-risk-of-mass-sql-injection.aspx"&gt;Using Resource Obfuscation to Reduce Risk of Mass SQL Injection&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://www.infosecwriters.com/"&gt;Infosecwriters.com&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/10/03/new-tcp-vulnerability-about-trust-not-technology.aspx"&gt;New TCP vulnerability about trust, not technology&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
            &lt;/div&gt;
            from tag &lt;a href="http://del.icio.us/lmacvittie/security"&gt;security&lt;/a&gt;          &lt;br /&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/05/3514.aspx"&gt;Compliance in the Cloud&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/09/03/if-your-users-see-an-http-error-code-yoursquore-doing.aspx"&gt;If Your Users See an HTTP Error Code You're Doing It Wrong&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/05/04/the-real-meaning-of-cloud-security-revealed.aspx"&gt;The Real Meaning of Cloud Security Revealed&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/13/3531.aspx"&gt;What's the difference between a web application and a blog?&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/01/20/wils-how-can-a-load-balancer-keep-a-single-server.aspx"&gt;WILS: How can a load balancer keep a single server site available?&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="http://sev.prnewswire.com/computer-software/20090413/SF9763513042009-1.html"&gt;Robert Half Technology :: Top 10 Tech Investments: Information Security Leads List, CIO Survey Shows&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
            &lt;a href="http://del.icio.us/lmacvittie/security"&gt;(more..)&lt;/a&gt;          &lt;br /&gt;
            &lt;/td&gt;
            &lt;td width="30%" valign="top"&gt;
            &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img height="18" border="0" width="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" alt="Follow me on Twitter" /&gt;&lt;/a&gt; &lt;a href="http://tweepml.org/F5-Networks-Tweeple/" title="Follow F5 Networks on Twitter"&gt;&lt;img height="18" border="0" width="18" src="http://tweepml.org/s/tweepml16.png" alt="" /&gt;&lt;/a&gt; &lt;a href="http://tweepml.org/F5-DevCentral/" title="Follow F5 DevCentral on Twitter"&gt;&lt;img height="18" border="0" width="18" src="http://tweepml.org/s/tweepml16.png" alt="" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" alt="" /&gt;&lt;/a&gt; &lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img height="18" border="0" width="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" alt="View Lori's profile on SlideShare" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" alt="" /&gt;&lt;/a&gt; &lt;a href="http://www.friendfeed.com/lmacvittie"&gt;&lt;img height="18" border="0" width="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/friendfeed_3.jpg" alt="friendfeed" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img height="18" border="0" width="18" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" alt="icon_facebook" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
            &lt;p&gt;&lt;a href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1=" title="Subscribe using any feed reader!"&gt;&lt;img height="18" border="0" width="125" src="http://s9.addthis.com/button1-fd.gif" alt="AddThis Feed Button" /&gt;&lt;/a&gt; &lt;a target="_blank" href="http://www.addthis.com/bookmark.php" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" title="Bookmark and Share"&gt;&lt;img height="18" border="0" width="125" src="http://s9.addthis.com/button1-share.gif" alt="Bookmark and Share" /&gt;&lt;/a&gt; &lt;script type="text/javascript" src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355"&gt;&lt;/script&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;em&gt;  &lt;/em&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:3d53c281-d7b4-4ec2-9e13-714028ac396a" style="margin: 0px; padding: 0px; display: inline; float: none;"&gt;&lt;em&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/MacVittie"&gt;MacVittie&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/F5"&gt;F5&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/web+application+security"&gt;web application security&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/web+application+firewall"&gt;web application firewall&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/network-side+scripting"&gt;network-side scripting&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/vulnerabilities"&gt;vulnerabilities&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/virtual+patching"&gt;virtual patching&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/WhiteHat+Security"&gt;WhiteHat Security&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Gartner"&gt;Gartner&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Arstechnica"&gt;Arstechnica&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/zeus+bot"&gt;zeus bot&lt;/a&gt;&lt;/em&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1090164.aspx" width="1" height="1" /&gt;</description><pubDate>Tue, 13 Jul 2010 18:53:04 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/14/out-out-damned-bot.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Lori MacVittie</dc:creator></item><item><title>Thoughts On Hostname Nomenclature</title><link>http://devcentral.f5.com/weblogs/watkins/archive/2010/07/12/thoughts-on-hostname-nomenclature.aspx</link><description>&lt;p&gt;There are few topics as controversial in the world of systems administration as hostname nomenclature. I'm not talking about the merits of using Disney characters versus the names of stars. I'm discussing how to structure a host's name in such a way that it requires a minimal amount of effort to decipher its purpose. I am going to present a naming convention that has worked very well for me in the past in both Windows and *nix environments. This nomenclature should reflect four key pieces of information about our host: location, environment, purpose, and a unique identifier. This hostname will be 15 characters in length with each field consisting of 3 letters or numbers separated by hyphens: loc-env-pur-001.&lt;/p&gt;

&lt;p&gt;This is not just an issue for the systems administrator, this is also a matter of department policy. It is easy to follow a naming convention when there are one or two administrators in agreement, but when there are 50 in your organization it gets a little more tricky. Left to their own vices, the installers will adhere to whatever names they find convenient. If a hostname convention isn't actively reviewed by upper management and required to go through an approval process, it will just turn out to be a mess. There needn't be hours of meetings on this topic, but a basic thumbs up or down from a director can make everyone's life easier in the long run.&lt;br /&gt;&lt;/p&gt;


&lt;u&gt;&lt;b&gt;Location&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;

&lt;p&gt;A hostname should reflect the physical location of a piece of hardware. This element is often omitted altogether in smaller environments that have a single office. It may seem redundant to include this if you only operate one location, but will be a pain to go back and correct when you open another office. Do yourself a favor by adding this from the beginning. You'll be a lot happier when your manager brings you the good news about the new office you are opening in London.&lt;/p&gt;

&lt;p&gt;As a rule of thumb, I use the nearest airport's three letter code. This is easy to stick to and minimizes arguing as to how some localities should be abbreviated. Seattle-Tacoma International has a three letter abbreviation of 'SEA', so the first three letters of a machine name located in Seattle would be 'sea'. If we opened another datacenter in Portland, those hostnames would start with 'pdx'.&lt;br /&gt;&lt;/p&gt;


&lt;u&gt;&lt;b&gt;Environment&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;

&lt;p&gt;We use the environment field to indicate whether this database server is the MySQL server in corporate, development, test, etc. By placing the environment in the hostname we can reduce mistakes where we "thought we were doing that in test." We've all done it and it can turn a normal morning into a firestorm. &lt;/p&gt;

&lt;p&gt;Some of the more common environments I have encountered in my tenure have been: corporate, production (also seen it called delivery), development, test, stage, stress, and operations. With that in mind, all of my production hardware in Portland will start with 'pdx-prd'. As the name starts to take shape, you should notice how easy it is to grep a zone file and give your boss a list of all the test machines you have at the satellite development office in Dublin. &lt;br /&gt;&lt;/p&gt;


&lt;u&gt;&lt;b&gt;Purpose&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;

&lt;p&gt;Whether the machine will be used to host a web server, an e-mail relay, or a corporate database, it needs to be displayed in the hostname. I want to know what the machine is doing when I look at my Remote Desktop toolbar or my *nix prompt. I don't want to have to look at the process list, then search through the service's configuration to figure out what it is doing.&lt;/p&gt;

&lt;p&gt;The list of possible purposes or services is too long to list here, but we can take a common service to demonstrate my point. We are getting ready to roll out some web servers at our new production datacenter in Boston. Our closest airport in Logan International and Director Tom says we're using 'prd' and 'web' for production web servers. Our new web servers are all going to start with the same prefix, 'bos-prd-web'. Done deal, there's not too much to argue about here.&lt;br /&gt;&lt;/p&gt;


&lt;u&gt;&lt;b&gt;Unique identifier&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;

&lt;p&gt;This is self-explanatory, but we need a way to differentiate all of our web servers in Boston. I do this by using a base 10 integer padded with zeros. This works well unless we have more than 999 of a particular host type in one environment at a single location. The easy fix for this would be to substitute a hexadecimal integer in place of the decimal integer. This will allow you to have up to 4095 machines in that particular server class.&lt;/p&gt;

&lt;p&gt;A My 40th development SQL server at our main campus in Seattle will be named 'sea-dev-sql-040'.&lt;br /&gt;&lt;/p&gt;


&lt;u&gt;&lt;b&gt;The pressing questions&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;

&lt;p&gt;So now comes the question: "but we have all that information already broken out by subdomain, why would I put it in the hostname?" The default number of searchable domains on a Linux host is 6. This can be changed to a different value in resolv.h, but is an unacceptable expectation for the casual user. On the flip side, as an administrator I don't want to spend all day typing the fully qualified domain names of my servers. Searching one or a couple domains makes life a lot easier. &lt;/p&gt;

&lt;p&gt;As for the 15 character maximum length, this is a limitation of NetBIOS. NetBios usage ceased with the releases of Vista, Server 2008, and all subsequent releases of Windows. While this is becoming less of a limitation with newer operating systems, I still like to provide backward compatibility for those users who may not be using the most current version. &lt;br /&gt;&lt;/p&gt;


&lt;u&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;

&lt;p&gt;This is by no means the definitive guide to hostname nomenclature. This is merely my personal opinion. There are few things that irritate me more than walking into a new position where someone has named everything from switches to web clusters after Star Wars characters. Don't get me wrong, I like Star Wars as much as the next guy, but please don't name a database server 'Chewie'. &lt;/p&gt;

&lt;p&gt;I hope you found this informative and will take some of it to heart while architecting your infrastructure. Future systems administrators will thank you.&lt;br /&gt;&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/watkins/aggbug/1090163.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 12 Jul 2010 08:24:00 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/watkins/archive/2010/07/12/thoughts-on-hostname-nomenclature.aspx#comment</comments><slash:comments>1</slash:comments><dc:creator>George Watkins</dc:creator></item><item><title>Use the Force Luke. (Zzzaap)</title><link>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/12/use-the-force-luke.-zzzaap.aspx</link><description>&lt;p&gt;In Star Wars Episode IV: A New Hope (the first Star Wars movie for those more curmudgeonly than I), Luke is training with a light saber…&lt;/p&gt;  &lt;blockquote&gt;   &lt;p /&gt;   &lt;dd&gt;&lt;b&gt;Ben Kenobi&lt;/b&gt;: Remember, a Jedi can feel the Force flowing through him. &lt;/dd&gt;&lt;dd&gt;&lt;b&gt;Luke Skywalker&lt;/b&gt;: You mean it controls your actions? &lt;/dd&gt;&lt;dd&gt;&lt;b&gt;Ben Kenobi&lt;/b&gt;: Partially, but it also obeys your commands. &lt;/dd&gt;&lt;/blockquote&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;VIRTUALIZATION AND THE FORCE&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/UsetheForceLukeZzzaap_B36F/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/UsetheForceLukeZzzaap_B36F/image_thumb_1.png" width="244" height="107" /&gt;&lt;/a&gt; Virtualization is much like that – it limits your options, in effect controlling your actions, while also helping you to do your job more effectively. The problem is that, like the dark side, the temptation is always there to  think of virtualization as the answer to every problem. It’s insidious, and at this point in time, it’s telling. It always intrigues me to have discussions about virtualization, because you can quickly tell the other person’s level of involvement by the approach they take to the topic. “Everything Virtual” is the hew and cry of those who aren’t responsible for the systems in question, while cautious optimism is the approach of those who have to live with – and work on – the systems that would be virtualized.&lt;/p&gt;  &lt;p&gt;I was recently on a call with another vendor, and they said they did not offer a virtualized solution because they wanted to be able to back up any performance claims they made without the added complexity of having to state hardware requirements to meet their performance numbers, and needed the ability to guarantee a certain level of throughput, something they just plain could not do if they had no control over the hardware that their system was being run on. Indeed, they couldn’t even control how many VMs were sharing the hardware they were given, or how many shared the NIC that their network device required to do its job. I pointed out that our motivation was first to get a copy of an ADC into the hands of developers, and second to meet the needs of customers with less throughput than our boxes are typically rated for. Their response was cool detachment that said louder than if they’d shouted it “yes, but that’s not the only way it will be used”.&lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;DIFFERENT REASONS, DIFFERENT USES&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;Which is true, but only superficially. Most enterprises want a supported configuration that they can call someone and get answers straight-away, so, for example, even if virtual Application Delivery Controller (vADC) throughput grows beyond what their existing product can handle, they are highly likely to put another vADC in rather than have to tell someone on the other end of the phone that they’re running four gigabits through a single 1 Gig NIC and can’t figure out what’s wrong with performance.&lt;/p&gt;  &lt;p&gt;But the pressure will be there to virtualize your entire infrastructure, which is, at this point in time, not feasible. That pressure is okay, those are people who want the best for the organization, just keep reality in the spotlight and all will go well. We’ve come a long way, but server virtualization is still ongoing in many organizations and VDI is a distant possibility in most. So size your other infrastructure to what you need, and don’t get too wrapped up in the virtual/not virtual conversation beyond “can we service these needs reasonably with a virtual X”? If yes, then it’s an option, if not then physical is your solution.&lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;DON’T LET IT BECOME A RELIGIOUS DISCUSSION&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/UsetheForceLukeZzzaap_B36F/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/dmacvittie/WindowsLiveWriter/UsetheForceLukeZzzaap_B36F/image_thumb.png" width="143" height="135" /&gt;&lt;/a&gt;  &lt;p&gt;Like so many things in high-tech – cell phones, operating systems, programming languages, DBMS’s all spring to mind - It’s much less about the rhetoric and much more about what solves your problem the best. Putting in a virtual infrastructure device that is going to generate calls for you in the middle of the night because it is overloaded is not the best answer to any problem, and all of the hardware vendors I have spoken with are still doing hardware because they see a benefit for their customers – the vendor I was talking to because they want to offer customers guarantees about performance they can’t make in a virtualized environment, we have custom hardware that does improve performance, though sometimes that hardware boost isn’t necessary. That gives you the option of the best tool for the job. So take your pick, blaster or The Force, they’re both available, depending upon what you need to do.&lt;/p&gt;  &lt;p&gt;But don’t dismiss a good solution just because it is hardware or software only – pin the vendor down, make them justify their choice, and insist on usable performance numbers. After all, it’s not the form of the tool but  how well the tool does the job that matters. And whatever you do, don’t go into the conversation in a helmet with the blast shield down… Unless your name is Luke. Who, I might add, used both light sabers &lt;em&gt;and&lt;/em&gt; blasters… Right tool for the job and all.&lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:dc4ea85a-d5b8-409c-91fe-83f6aad40e39" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Virtualization" rel="tag"&gt;Virtualization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Virtual+Infrastructure" rel="tag"&gt;Virtual Infrastructure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Star+Wars" rel="tag"&gt;Star Wars&lt;/a&gt;,&lt;a href="http://technorati.com/tags/vADC" rel="tag"&gt;vADC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+Networks" rel="tag"&gt;F5 Networks&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Don+MacVittie" rel="tag"&gt;Don MacVittie&lt;/a&gt;&lt;/div&gt;  &lt;p align="right"&gt;&lt;a href="http://twitter.com/dmacvittie" target="_blank"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/Rss.aspx" target="_blank"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/don.macvittie" target="_blank"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="right"&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fdmacvittie%2FRss.aspx&amp;amp;t1=" target="_blank"&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Related Articles and Blogs&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://en.wikiquote.org/wiki/Star_Wars_Episode_IV:_A_New_Hope" target="_blank"&gt;WikiQuote – Star Wars Episode IV&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/06/21/a-million-vms.-test-environments-in-virtual-and-cloud-infrastructures.aspx" target="_blank"&gt;A Million VMs. Test Environments in Virtual and Cloud Infrastructures&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/06/03/100-percent-virtual-sure-run-that-test.aspx" target="_blank"&gt;100% Virtual? Sure, Run That Test&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://thevirtualdc.com/?p=154" target="_blank"&gt;Dynamic Infrastructure: Are We Over That Hump?&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://devcentral.f5.com/weblogs/dmacvittie/aggbug/1090161.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 12 Jul 2010 04:50:58 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/07/12/use-the-force-luke.-zzzaap.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Don MacVittie</dc:creator></item><item><title>Does This Application Make My Browser Look Fat?</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/12/does-this-application-make-my-browser-look-fat.aspx</link><description>&lt;p&gt;&lt;em&gt;Web applications that count on the advantage of not having a bloated desktop footprint need to keep one eye on the scale… &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;A recent article on &lt;a href="http://www.cloudave.com/" target="_blank"&gt;CloudAve&lt;/a&gt; that brought back the “browser versus native app” debate caught my eye last week. After reading it, the author is really focusing on that piece of the debate which dismisses SaaS and browser-based applications in general based on the disparity in functionality between them and their “bloated desktop” cousins. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/ThinisthenewFatCloudThinClientsandHTML5_27D7/quote-left_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="quote-left" border="0" alt="quote-left" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/ThinisthenewFatCloudThinClientsandHTML5_27D7/quote-left_thumb.png" width="24" height="21" /&gt;&lt;/a&gt;Why do I have to spend money on powerful devices when I can get an experience almost similar to what I get from native apps? More importantly, the rate of innovation on browser based apps is much higher than what we see in the traditional desktop software. &lt;/p&gt;    &lt;p&gt;[…] &lt;/p&gt;    &lt;p&gt;Yes, today's SaaS applications still can't do everything a desktop application can do for us. But there is a higher rate of innovation on the SaaS side and it is just a matter of time before they catch up with desktop applications on the user experience angle.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://www.cloudave.com/link/when-you-can-innovate-with-browser-why-do-you-need-native-apps" target="_blank"&gt;When You Can Innovate With browser, Why Do You Need Native Apps?&lt;/a&gt;, &lt;a href="http://www.cloudave.com/author/krishnan"&gt;Krishnan Subramanian&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I don’t disagree with this assessment and Krishnan’s article is a good one – a reminder that when you move from one paradigm to another it takes time to “catch up”. This is true with &lt;a title="" href="http://www.f5.com/solutions/cloud-computing" rel=""&gt;cloud computing &lt;/a&gt; in general. We’re only at the early stages of maturity, after all, so comparing the “infrastructure services” available from today’s cloud computing implementations with well-established datacenters is a bit unfair. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/ThinisthenewFatCloudThinClientsandHTML5_27D7/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/ThinisthenewFatCloudThinClientsandHTML5_27D7/image_thumb_1.png" width="494" height="350" /&gt;&lt;/a&gt;But while I don’t disagree with Krishnan, his discussion reminded me that there’s another piece of this debate that needs to be examined – &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/08/new-three-tiered-architecture-changes-everything.aspx" target="_blank"&gt;especially in light of the impact on the entire application delivery infrastructure as browser (and browser-based applications) capabilities to reproduce a desktop experience mature&lt;/a&gt;. At what point do we stop looking at browser-based applications as “thin” clients and start viewing them for what they must certainly become to support the kind of user-experience we want from cloud and web applications: bloated desktop applications. &lt;/p&gt;  &lt;p&gt; The core fallacy here is that SaaS (or any other “cloud” or web application) is &lt;em&gt;not &lt;/em&gt;a desktop application. It is. Make no mistake. The technology that makes that interface interactive and integrated is almost all enabled &lt;em&gt;on the desktop, &lt;/em&gt;via the use of a whole lot of client-side scripting. Just because it’s loaded and executing from within a browser doesn’t mean it isn’t executing &lt;em&gt;on the desktop&lt;/em&gt;. It is. It’s using your desktop’s compute resources and your desktop’s network connection and it’s a whole lot more bloated than anything Tim Berners-Lee could have envisioned back in the early days of HTML and the “World Wide Web.” In fact, I’d argue that with the move to Web 2.0 and a heavy reliance on client-side scripting to implement what is presentation-layer logic that the term “web application” became a misnomer. Previously, when the interface and functionality relied solely on HTML and was assembled completely on the web-side of the equation, these were correctly called “web” applications. Today? Today they’re very nearly a perfected client-server, three-tiered architectural implementation. Presentation layer on the client, application and data on the server. That the network is the Internet instead of the LAN changes nothing; it simply introduces additional challenges into the delivery chain. &lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;   &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;THE MANAGEMENT and MAINTENTANCE DISTINCTION is NO MORE&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;But Lori! Desktop applications require installation! They require maintenance, and support! They are more costly! They are &lt;em&gt;evil! &lt;/em&gt;An ancient horror that we have worked hard to eradicate from the face of laptops and desktops everywhere! &lt;/p&gt;  &lt;p&gt;Let’s get a grip on reality, shall we? &lt;/p&gt;  &lt;p&gt;As more and more of that presentation layer logic moves into the client – the browser, the &lt;em&gt;desktop&lt;/em&gt; – those same issues are going to arise. Perhaps not on the same scale, but they will arise. When you start relying on libraries – frameworks like &lt;a href="http://www.prototypejs.org/" target="_blank"&gt;Prototype&lt;/a&gt; and &lt;a href="http://xajaxproject.org/" target="_blank"&gt;XAJAX&lt;/a&gt; and the like – to provide the underlying framework through which all that interactivity and cool functionality is achieved, you are basically installing software. It’s just as hidden from the end-user as much of the desktop software, at least in an enterprise setting. It still requires &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/ThinisthenewFatCloudThinClientsandHTML5_27D7/different-browsers_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 10px 0px 10px 10px; display: inline; border-top: 0px; border-right: 0px" title="different-browsers" border="0" alt="different-browsers" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/ThinisthenewFatCloudThinClientsandHTML5_27D7/different-browsers_thumb.png" width="128" height="128" /&gt;&lt;/a&gt;maintenance and support and oh how problematic is the support! When an AJAX call goes “bad” it’s not uncommon at all for a web application to fail to provide the means by which the end-user is notified or that updating can be “restarted”. At some point that’s going to generate a support call to someone, and troubleshooting a browser-based application has got to be the most miserable experience on the face of the earth. You don’t have – can’t have – an exact duplicate of the user’s environment because, well, you may not have the same plug-ins installed, or the same version of the plug-ins. You may not be accessing the application over the same network with the same underlying infrastructure that may or may not be causing issues. You may not even be running on the same operating system – or device. But you’re still going to have to troubleshoot it and figure out what’s causing the problem somehow. &lt;/p&gt;  &lt;p&gt;Good luck with that. &lt;/p&gt;  &lt;p&gt;I’m not saying the evolution of the browser into the modern-day desktop – and that is what is happening – is a bad thing. But I am pointing out that at some point the same issues that once made us look upon browser-based applications as a godsend will crop up and cause the same kind of headaches for IT and end-users and in some cases those headaches will be migraines that never existed when IT had control over the environment. &lt;/p&gt;  &lt;p&gt;The days of SaaS and “web applications” claiming an almost moral superiority over “bloated desktop applications” are over. They went the way of “Web 1.0” – lost to memory and saved only in the “&lt;a href="http://www.archive.org/web/web.php" target="_blank"&gt;wayback machine&lt;/a&gt;” to be called forth and viewed with awe and disbelief by digital millennials that any one ever used applications so simple. &lt;/p&gt;  &lt;p&gt;Today’s “web” applications are anything but simple, and the environment within which they execute is anything but thin.  &lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="100%"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="70%"&gt;         &lt;h3&gt;Related Posts&lt;/h3&gt;          &lt;ul&gt;           &lt;li&gt;             &lt;div class="wlw_related_posts"&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/08/new-three-tiered-architecture-changes-everything.aspx"&gt;The New Distribution of The 3-Tiered Architecture Changes Everything&lt;/a&gt; &lt;/div&gt;           &lt;/li&gt;         &lt;/ul&gt;          &lt;div class="wlw_related_posts"&gt;from tag &lt;a href="http://del.icio.us/lmacvittie/frameworks"&gt;frameworks&lt;/a&gt;            &lt;br /&gt;            &lt;ul&gt;             &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/02/02/the-great-client-server-architecture-myth.aspx"&gt;The Great Client-Server Architecture Myth&lt;/a&gt;&lt;/li&gt;           &lt;/ul&gt; from tag &lt;a href="http://del.icio.us/lmacvittie/client-server"&gt;client-server&lt;/a&gt;            &lt;br /&gt;            &lt;ul&gt;             &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/05/21/how-reality-blew-the-cloud-away-at-interop.aspx"&gt;How Reality Blew the Cloud Away at Interop&lt;/a&gt;&lt;/li&gt;           &lt;/ul&gt; from tag &lt;a href="http://del.icio.us/lmacvittie/browser"&gt;browser&lt;/a&gt;            &lt;br /&gt;            &lt;ul&gt;             &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/06/02/facepalm-google-wave-choice-of-xmpp-not-the-death-of.aspx"&gt;Facepalm: Google Wave Choice of XMPP Not the Death of HTTP&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://www.readwriteweb.com/archives/firefox_reaches_20_market_shar.php"&gt;Firefox Reaches 20% Market Share for First Time Ever - ReadWriteWeb&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/10/03/firebug-the-firefox-add-on-everybody-else-says-i-cant-live.aspx"&gt;Firebug: The Firefox add-on everybody else says I can't live without&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/09/3599.aspx"&gt;Automatically detecting client speed&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/05/3593.aspx"&gt;IE8: Robbing Peter to pay Paul&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/05/3516.aspx"&gt;Is the Mozilla FireFox 3 SSL policy bad for the web?&lt;/a&gt;&lt;/li&gt;           &lt;/ul&gt; from tag &lt;a href="http://del.icio.us/lmacvittie/development"&gt;development&lt;/a&gt;            &lt;br /&gt;            &lt;ul&gt;             &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/20/3550.aspx"&gt;Is your epic application being dragged down by green shoes?&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/07/20/rip-and-replace-wonrsquot-solve-twitterrsquos-or-your-security-problems.aspx"&gt;Rip and Replace Won't Solve Twitter's (Or Your) Security Problems&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/12/14/let-your-enums-do-the-talking-with-css.aspx"&gt;Let Your ENUMs Do the Talking with CSS&lt;/a&gt;&lt;/li&gt;              &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/20/3549.aspx"&gt;All your control are belong to us&lt;/a&gt;&lt;/li&gt;           &lt;/ul&gt;           &lt;a href="http://del.icio.us/lmacvittie/development"&gt;(more..)&lt;/a&gt;&lt;/div&gt;       &lt;/td&gt;        &lt;td valign="top" width="30%"&gt;         &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img border="0" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" /&gt;&lt;/a&gt; &lt;a href="http://www.friendfeed.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="friendfeed" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/friendfeed_3.jpg" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;          &lt;p&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;script type="text/javascript" src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355"&gt;&lt;/script&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:324643ad-7ee8-473b-891e-ba75b85864a0" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/frameworks" rel="tag"&gt;frameworks&lt;/a&gt;,&lt;a href="http://technorati.com/tags/development" rel="tag"&gt;development&lt;/a&gt;,&lt;a href="http://technorati.com/tags/client-server" rel="tag"&gt;client-server&lt;/a&gt;,&lt;a href="http://technorati.com/tags/browser" rel="tag"&gt;browser&lt;/a&gt;,&lt;a href="http://technorati.com/tags/architecture" rel="tag"&gt;architecture&lt;/a&gt;,&lt;a href="http://technorati.com/tags/3-tier" rel="tag"&gt;3-tier&lt;/a&gt;,&lt;a href="http://technorati.com/tags/web" rel="tag"&gt;web&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SaaS" rel="tag"&gt;SaaS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/cloud+computing" rel="tag"&gt;cloud computing&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1090160.aspx" width="1" height="1" /&gt;</description><pubDate>Sun, 11 Jul 2010 19:02:46 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/12/does-this-application-make-my-browser-look-fat.aspx#comment</comments><slash:comments>4</slash:comments><dc:creator>Lori MacVittie</dc:creator></item><item><title>Benefits of Desktop Virtualization</title><link>http://devcentral.f5.com/weblogs/jason/archive/2010/07/09/benefits-of-desktop-virtualization.aspx</link><description>&lt;p&gt;There is an abundance of mature desktop virtualization solutions that are outright free or at least reasonable.  From VMware’s &lt;a href="http://www.vmware.com/products/workstation/" target="_blank"&gt;Workstation&lt;/a&gt; (at cost after 30-day trial, but entirely worth it) to Oracle’s &lt;a href="http://www.virtualbox.org/" target="_blank"&gt;VirtualBox&lt;/a&gt; and Microsoft’s &lt;a href="https://www.microsoft.com/windows/virtual-pc/default.aspx" target="_blank"&gt;Virtual PC&lt;/a&gt;, you can get started in literally minutes.  Why would you want to?&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Trivial backups.  Tired of losing a drive and having to restore first the OS, then the applications, and finally your files?  Once everything is hosted on a virtual disk, keeping that backed up frequently means a physical disk failure costs you only the time to restore the hardware OS and your virtualization.  Major time saver.  For enterprise environments, this also makes hardware changes for employees a cinch.  New desktop?  A single file copy and a short vm configuration, and the IT folks can move on to something more important.&lt;/li&gt;    &lt;li&gt;Snapshots prior to patching, new applications. Ever had an antivirus or OS patch destroy your system?  Snapshot your virtual machine prior to making changes, and if anything goes wonky, simply revert to the last snapshot.&lt;/li&gt;    &lt;li&gt;Minimal, purposeful systems for online banking (or remote vpn access, shopping, etc).  Do you know the malware that threads its tentacles into your system over time from browsing the internet?  Keep one virtual machine that has nothing installed except the browser and plugins necessary to do your banking and investing, and once you’re done, shutting down the virtual machine restores it to original state so any potential malware threats are eliminated.&lt;/li&gt;    &lt;li&gt;For the geeks in the audience (all of you?), quick test setups with teaming (VMware Desktop for sure, check on the others). &lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084344/Configuring-a-multi-server-Testing-Environment-with-VMWare-Teams-and-BIG-IP-LTM-VE.aspx" target="_blank"&gt;Don had a great article&lt;/a&gt; on this relating to a &lt;a href="http://www.f5.com/pdf/products/big-ip-local-traffic-manager-ve-overview.pdf" target="_blank"&gt;BIG-IP LTM VE&lt;/a&gt; test setup.  This is great becuase you mock up complete test environments and spin them together, but only when you need them.  With several linux-based appliances, you can get virtual switches, routers, firewalls, lamp servers, all purpose-built and ready to go for your test environments.&lt;/li&gt;    &lt;li&gt;Run nothing on the host OS except the hypervisor and antivirus.  This ensures a minimal rebuild time should there be a failure.  My exceptions to this rule are audio/video tools like skype, jing, camtasia, and iTunes.  Lest you think I’ll need a file rebuild for iTunes, that library is off box anyway.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;There are far more benefits, but these are the ones that jump out at me.  Assuming you’re on windows, you can convert your physical disk to virtual with &lt;a href="http://technet.microsoft.com/en-us/sysinternals/ee656415.aspx" target="_blank"&gt;disk2vhd&lt;/a&gt;, another great tool from the &lt;a href="http://technet.microsoft.com/en-us/sysinternals/default.aspx" target="_blank"&gt;Sysinternals&lt;/a&gt; team.  Note that if you plan to use Virtual PC, you’ll need to resize the drive to less than 127G with &lt;a href="http://support.microsoft.com/kb/300415" target="_blank"&gt;diskpart&lt;/a&gt; and then tell the drive it has shrunk as well with a tool like &lt;a href="http://www.windowsreference.com/free-utilities/vhd-resizer-resize-microsofts-vhd-hyper-v-files/" target="_blank"&gt;VHD Resizer&lt;/a&gt;.  If you want to use VMware Workstation, you’ll need an additional step that converts the drive from vhd format to vmdk with a tool like &lt;a href="http://www.winimage.com/" target="_blank"&gt;WinImage&lt;/a&gt;.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9f654587-ee53-4b1d-a394-8e739567950a" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5+DevCentral" rel="tag"&gt;F5 DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Virtualization" rel="tag"&gt;Virtualization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Desktop+Virtualization" rel="tag"&gt;Desktop Virtualization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VMware+Workstation" rel="tag"&gt;VMware Workstation&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Virtualbox" rel="tag"&gt;Virtualbox&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VirtualPC" rel="tag"&gt;VirtualPC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WinImage" rel="tag"&gt;WinImage&lt;/a&gt;,&lt;a href="http://technorati.com/tags/disk2vhd" rel="tag"&gt;disk2vhd&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SysInternals" rel="tag"&gt;SysInternals&lt;/a&gt;,&lt;a href="http://technorati.com/tags/diskpart" rel="tag"&gt;diskpart&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VHD+Resizer" rel="tag"&gt;VHD Resizer&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Don+MacVittie" rel="tag"&gt;Don MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jason+Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/jason/aggbug/1090158.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 08 Jul 2010 20:56:54 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/jason/archive/2010/07/09/benefits-of-desktop-virtualization.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Jason Rahm</dc:creator></item><item><title>F5 Friday: Would You Like Some Transaction Integrity with Your Automation?</title><link>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/09/f5-friday-would-you-like-some-transaction-integrity-with-your.aspx</link><description>&lt;p&gt;&lt;em&gt;If you thought the integration and collaboration required new networking capabilities, you ain’t seen nothing yet. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayWouldYouLikeSomeTransactionInteg_AAF9/f5friday_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="f5friday" border="0" alt="f5friday" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayWouldYouLikeSomeTransactionInteg_AAF9/f5friday_thumb_1.png" width="240" height="86" /&gt;&lt;/a&gt; Anyone who has ever configured a network anything or worked with any of a number of cloud provider’s API to configure “auto-scaling” via a &lt;a title="" href="http://www.f5.com/glossary/load-balancing.html" rel=""&gt;load balancing&lt;/a&gt; service recognizes that it isn’t simply point, click, and configure. Certain steps need to be configured in a certain order (based entirely on the solution and completely non-standardized across the industry) and it’s always a pain to handle errors and exceptions because if you want to “do over” you have to backtrack through the completed steps or leave the system cluttered or worse – unstable. &lt;/p&gt;  &lt;p&gt;Developers and system operators have long understood the importance of a “transaction” in databases and in systems where a series of commands (processed in a “batch”) are “all or nothing”. Concepts like two-phase commit and transaction integrity are nothing new to developers and sysops and probably not to network folks, either. It’s just that the latter has never had that kind of support and have thus had to engineer some, shall we say, innovative solutions to recreating this concept. &lt;/p&gt;  &lt;p&gt;Infrastructure 2.0 and &lt;a title="" href="http://www.f5.com/solutions/cloud-computing" rel=""&gt;cloud computing &lt;/a&gt; are pushing to the fore the need for transactional integrity and idempotent configuration management. Automation, which is similar to the early concepts of “batch” processing, requires that a series of commands be executed that individually configure the many moving pieces and parts of an overarching architecture that are required in order to “make the cloud go” and provide the basic support necessary to enable auto-scaling. &lt;/p&gt;  &lt;p&gt;Because it is possible that one command in a sequence of ten, twenty, or more commands that make up an “automation” could fail, you need to handle it. You can catch it and try again, of course, but if it’s a problem that isn’t easily handled you’d wind up wanting to “roll back” the entire transaction until the situation could be dealt with, perhaps even manually. One way to accomplish this is to enable the ability to package up a set commands as a transaction and, if any command fails the transaction management system automagically hits the “undo” button and rolls back each command to the very beginning, making it like it never happened. &lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;IT’S A LONG, LONG WAY TO TIPPERARY…and FULLY AUTOMATED DATACENTERS &lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;We’re not there yet. If you were waiting for me to pronounce “we have arrived” I’m sorry. We haven’t, but we are at least recognizing that this is a problem that needs solutions. In order for the above scenario to be reality &lt;em&gt;every &lt;/em&gt;system, every device, every component that is (or could be) part of the transaction must be enabled with such functionality. &lt;/p&gt;  &lt;p&gt;Transactions are essential to maintaining the integrity of components across an orchestration in complex systems. That basically means most – if not all – datacenters will need transactions eventually if they go the route of automation to achieve operational efficiency. This is another one of those “dev” meets “ops” topics in which dev has an advantage over ops merely due to the exigencies of being in development and working with integration and databases and other &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayWouldYouLikeSomeTransactionInteg_AAF9/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/F5FridayWouldYouLikeSomeTransactionInteg_AAF9/image_thumb_1.png" width="136" height="135" /&gt;&lt;/a&gt;development-focused systems that require transactional support. Basically we’re going to (one day) end up with layers of transactions: transactions at the orchestration layer that is comprised of individual transactions at the component layer and it will be imperative that both layers of transactions are able to handle errors, be idempotent (to handle restarts), and to provide integrity of the implied shared systems that make up a cloud computing environment (that’s &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/06/16/data-center-feng-shui-fault-tolerance-and-fault-isolation.aspx" target="_blank"&gt;fault isolation&lt;/a&gt;, by the way). &lt;/p&gt;  &lt;p&gt;The necessity of transactional support for &lt;a href="http://devcentral.f5.com/weblogs/macvittie/category/1082349.aspx" target="_blank"&gt;infrastructure 2.0&lt;/a&gt; components is going to become more important as larger and more business critical systems become “cloudified”. The new network has to be more dynamic and that means it must be able to adapt its operating conditions to meet the challenges associated with integration and the dependencies between devices and applications that creates. &lt;/p&gt;  &lt;p&gt;For &lt;a href="http://www.f5.com/" target="_blank"&gt;F5&lt;/a&gt;, we’ve taken a few of the first steps down the road to Tipperary (and the eventually fully transactional-based automation implementation required to get there) by enabling our &lt;a href="http://www.f5.com/big-ip/" target="_blank"&gt;BIG-IP&lt;/a&gt; shell scripting solution (&lt;a href="http://devcentral.f5.com/wiki/default.aspx/tmsh/HomePage.html" target="_blank"&gt;TMSH&lt;/a&gt;) with some basic transactional support. It isn’t the full kitchen sink, it’s just a start, and as you can guess you should “watch this space” for updates and improvements and broader support for this concept across the entire BIG-IP management space. &lt;/p&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;div style="width: 100%; background: #ebd3d3"&gt;&lt;strong&gt;TMSH TRANSACTION SUPPORT&lt;/strong&gt;&lt;/div&gt;  &lt;hr color="#680000" width="100%" noshade="noshade" /&gt;  &lt;p&gt;If you weren’t aware, back in a prior release (we called it Park City, you might know it as v10) there was a capability added called TMSH (TMOS SHell) which is an action/object based scripting shell for &lt;a title="F5 Networks" href="http://www.f5.com/" rel="" target="_blank"&gt;F5&lt;/a&gt; BIG-IP that allows administrators to script the configuration and management of a BIG-IP in much the same way as they might develop system scripts in BASH and KORN or &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/3/Default.aspx" target="_blank"&gt;PowerShell&lt;/a&gt; or whatever their favorite shell scripting language may be. &lt;/p&gt;  &lt;p&gt;What was really cool was the addition of the ability to wrap &lt;strong&gt;transactions&lt;/strong&gt; around a series of TMSH commands.  What transactions allow you to do is bundle a list of commands to be executed as a single atomic operation. Now, we’re not anywhere near the “two phase commit” capabilities of mature batch processing systems like IBM and databases might have, but we are a far sight further along than perhaps people realized. When you’re “in” a transaction, for example, the command is only validated for syntax. It isn’t executed until the transaction is submitted for execution, you can’t undo a submitted transaction, and right now you can’t create “named” transactions that you can queue up for approval or save to execute at a later date or what have you.  You can, however, recreate a transaction you have deleted by using the &lt;strong&gt;cli history&lt;/strong&gt; component. &lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; root@bigip(Active)(tmos)&lt;span style="color: #008000"&gt;# create transaction&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; [batch mode]root@bigip(Active)(tmos)&lt;span style="color: #008000"&gt;# create ltm pool a_pool members add { 10.2.27.1:80 }&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; Command successfully added to the current transaction&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; [batch mode]root@bigip(Active)(tmos)&lt;span style="color: #008000"&gt;# create ltm pool a_pool members add { 10.2.16.1:80 }&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; Command successfully added to the current transaction&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; [batch mode]root@bigip(Active)(tmos)&lt;span style="color: #008000"&gt;# submit transaction &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; 01020066:3: The requested pool (a_pool) already exists in partition Common&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt; [batch mode]root@bigip(Active)(tmos)&lt;span style="color: #008000"&gt;# list ltm pool a_pool&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt; 01020036:3: The requested pool (a_pool) was not found.&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt; [batch mode]root@bigip(Active)(tmos)&lt;span style="color: #008000"&gt;# list transaction &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt; 1: (tmos)&lt;span style="color: #008000"&gt;# create ltm pool a_pool members add { 10.2.27.1:80 }&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt; 2: (tmos)&lt;span style="color: #008000"&gt;# create ltm pool a_pool members add { 10.2.16.1:80 }&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt; [batch mode]root@bigip(Active)(tmos)&lt;span style="color: #008000"&gt;# modify transaction delete 1&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt; [batch mode]root@bigip(Active)(tmos)&lt;span style="color: #008000"&gt;# submit transaction &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt; root@bigip(Active)(tmos)&lt;span style="color: #008000"&gt;# list ltm pool a_pool&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt; pool a_pool {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;     members {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;         10.2.16.1:http { }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p /&gt;

&lt;p /&gt;

&lt;p&gt;This is only one (small) piece of a much larger puzzle: the automated, dynamic infrastructure (a la infrastructure 2.0). And it’s a piece that’s not even wholly complete yet. But it’s a &lt;em&gt;start&lt;/em&gt; on what’s going to be necessary if we’re going to automate the data center and realize the potential gains in efficiency and move even further into the “automated self-healing, self-optimizing” networks of the (further out) future. We can’t get even to a true implementation of “cloud” until we can automate the basic processes needed to implement elastic scalability because otherwise we’d just be shifting man hours from racking servers to tapping out commands on routers and switches and load balancers. &lt;/p&gt;

&lt;p&gt;But it’s a step forward on the road that every one is going to have travel. 
  &lt;/p&gt;&lt;hr color="#808080" width="100%" noshade="noshade" /&gt;

&lt;table border="0" cellspacing="0" cellpadding="2" width="100%"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td valign="top" width="70%"&gt;
        &lt;h3&gt;Related Posts&lt;/h3&gt;

        &lt;ul&gt;
          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/category/1084420.aspx"&gt;All F5 Friday Entries on DevCentral&lt;/a&gt; &lt;/li&gt;

          &lt;li&gt;&lt;a href="http://devcentral.f5.com/wiki/default.aspx/tmsh/HomePage.html" target="_blank"&gt;TMSH Wiki&lt;/a&gt; &lt;/li&gt;
        &lt;/ul&gt;

        &lt;div class="wlw_related_posts"&gt;from tag &lt;a href="http://del.icio.us/lmacvittie/CLI"&gt;CLI&lt;/a&gt;

          &lt;br /&gt;&lt;/div&gt;

        &lt;div class="wlw_related_posts"&gt;
          &lt;ul&gt;
            &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/11/04/the-api-is-the-new-cli.aspx"&gt;The API Is the New CLI&lt;/a&gt;&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/div&gt;
from tag &lt;a href="http://del.icio.us/lmacvittie/orchestration"&gt;orchestration&lt;/a&gt;

        &lt;br /&gt;

        &lt;ul&gt;
          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/06/07/cloud-today-is-just-capacity-on-demand.aspx"&gt;Cloud Today is Just Capacity On-Demand&lt;/a&gt;&lt;/li&gt;

          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/05/25/repetition-is-the-key-to-network-automation-success.aspx"&gt;Repetition is the Key to Network Automation Success&lt;/a&gt;&lt;/li&gt;

          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/04/05/if-a-cat-has-catness-does-a-cloud-have-cloudness.aspx"&gt;If a Cat has Catness Does a Cloud have Cloudness?&lt;/a&gt;&lt;/li&gt;

          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/16/mobility-can-be-a-pain-in-the-aas.aspx"&gt;Mobility Can Be a Pain in the aaS&lt;/a&gt;&lt;/li&gt;

          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/02/22/knowing-is-half-the-battle.aspx"&gt;Knowing is Half the Battle&lt;/a&gt;&lt;/li&gt;

          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/10/09/the-thing-private-clouds-can-do-that-public-clouds-canrsquot.aspx"&gt;The Thing Private Clouds Can Do that Public Clouds Can’t&lt;/a&gt;&lt;/li&gt;

          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/09/29/infrastructure-2.0-isnrsquot-just-for-cloud-computing.aspx"&gt;Infrastructure 2.0 Isn’t Just For Cloud Computing&lt;/a&gt;&lt;/li&gt;

          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/09/10/wils-automation-versus-orchestration.aspx"&gt;WILS: Automation versus Orchestration&lt;/a&gt;&lt;/li&gt;

          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/06/08/and-the-killer-app-for-private-cloud-computing-ishellip.aspx"&gt;And the Killer App for Private Cloud Computing Is...&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
from tag &lt;a href="http://del.icio.us/lmacvittie/automation"&gt;automation&lt;/a&gt;

        &lt;br /&gt;

        &lt;ul&gt;
          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/04/21/ovf-a-few-layers-short-of-a-full-stack.aspx"&gt;OVF: A few layers short of a full stack&lt;/a&gt;&lt;/li&gt;

          &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/06/21/googlecl-puts-another-tool-in-the-devops-integration-and-automation.aspx"&gt;GoogleCL Puts Another Tool in the Devops Integration and Automation Toolbox&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
        &lt;a href="http://del.icio.us/lmacvittie/automation"&gt;(more..)&lt;/a&gt;&lt;/td&gt;

      &lt;td valign="top" width="30%"&gt;
        &lt;p&gt;&lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img border="0" alt="Follow me on Twitter" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_twitt-twoo-icon.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 Networks on Twitter" href="http://tweepml.org/F5-Networks-Tweeple/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a title="Follow F5 DevCentral on Twitter" href="http://tweepml.org/F5-DevCentral/"&gt;&lt;img border="0" src="http://tweepml.org/s/tweepml16.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img border="0" src="http://devcentral.f5.com/Portals/0/images/Icons/icon_xml_18.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.slideshare.net/lmacvittie"&gt;&lt;img border="0" alt="View Lori's profile on SlideShare" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_slideshare.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_linkedin_16.png" /&gt;&lt;/a&gt; &lt;a href="http://www.friendfeed.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="friendfeed" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/friendfeed_3.jpg" width="18" height="18" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="icon_facebook" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/WindowsLiveWriter/InfrastructureasaServiceHowcontextawares_69CD/icon_facebook_4.png" width="18" height="18" /&gt;&lt;/a&gt; &lt;/p&gt;

        &lt;p&gt;&lt;a title="Subscribe using any feed reader!" href="http://www.addthis.com/feed.php?pub=lmacvittie&amp;amp;h1=http%3A%2F%2Fdevcentral.f5.com%2Fweblogs%2Fmacvittie%2FRss.aspx&amp;amp;t1="&gt;&lt;img border="0" alt="AddThis Feed Button" src="http://s9.addthis.com/button1-fd.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;a title="Bookmark and Share" onclick="window.open('http://www.addthis.com/bookmark.php?wt=nw&amp;amp;pub=lmacvittie&amp;amp;url='+encodeURIComponent(location.href)+'&amp;amp;title='+encodeURIComponent(document.title), 'addthis', 'scrollbars=yes,menubar=no,width=620,height=520,resizable=yes,toolbar=no,location=no,status=no,screenX=200,screenY=100,left=200,top=100'); return false;" href="http://www.addthis.com/bookmark.php" target="_blank"&gt;&lt;img border="0" alt="Bookmark and Share" src="http://s9.addthis.com/button1-share.gif" width="125" height="18" /&gt;&lt;/a&gt; &lt;script type="text/javascript" src="http://track.mybloglog.com/js/jsserv.php?mblID=2008070914270355"&gt;&lt;/script&gt;&lt;/p&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;

&lt;p /&gt;

&lt;p&gt;&lt;a href="http://del.icio.us/lmacvittie/automation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;hr color="#808080" width="100%" noshade="noshade" /&gt;

&lt;p&gt;
  &lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:88acf78d-9eed-4f3b-977e-ab77048bcb69" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F5+Friday" rel="tag"&gt;F5 Friday&lt;/a&gt;,&lt;a href="http://technorati.com/tags/automation" rel="tag"&gt;automation&lt;/a&gt;,&lt;a href="http://technorati.com/tags/infrastructure+2.0" rel="tag"&gt;infrastructure 2.0&lt;/a&gt;,&lt;a href="http://technorati.com/tags/orchestration" rel="tag"&gt;orchestration&lt;/a&gt;,&lt;a href="http://technorati.com/tags/integration" rel="tag"&gt;integration&lt;/a&gt;,&lt;a href="http://technorati.com/tags/CLI" rel="tag"&gt;CLI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/cloud+computing" rel="tag"&gt;cloud computing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/virtualization" rel="tag"&gt;virtualization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/devops" rel="tag"&gt;devops&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1090157.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 08 Jul 2010 18:34:22 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/09/f5-friday-would-you-like-some-transaction-integrity-with-your.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Lori MacVittie</dc:creator></item><item><title>Heatmaps, iRules Style: Part2</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086353/Heatmaps-iRules-Style-Part2.aspx</link><description>&lt;script type="text/javascript" src="/DesktopModules/itcMetaPost/js/ca0c21fbdc85f6a1597417732d450607.ashx?hs=1"&gt;&lt;/script&gt;
&lt;p&gt;Last week &lt;a target="_blank" href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084382/Heatmaps-iRules-Style-Part-1.aspx"&gt;I talked about generating a heat map 100% via iRules&lt;/a&gt;, thanks to the Quova magic in LTM systems, and the good people over at &lt;a target="_blank" href="http://google.com"&gt;Google&lt;/a&gt; letting us use their charting API. This was an outstanding way to visualize the the traffic coming to your application. For those interested in metrics it provides a great way to see this data in a visually pleasing manner.&amp;#160; That said, it was pretty basic.&amp;#160; All it showed was the United States which, for anyone that has used the internet much, is obviously not representative of the entire web.&amp;#160; To be truly useful we’ll need to show the entire world. That’s simple enough. We’ll update the region the map we’re drawing zooms to, so it will look more like this:&lt;/p&gt;
&lt;p&gt;&lt;img height="236" border="0" width="450" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Jul/heatmapsworld1.png" alt="image" style="border: 0px none; display: block; float: none; margin-left: auto; margin-right: auto;" /&gt;&lt;/p&gt;
&lt;p&gt;Let’s take a look at how this is going to work.&amp;#160; Since we were collecting data based on state abbreviations before, we’ll need to first switch that up to use country codes instead.&amp;#160; We’ll then change up our Google call so that we’re setting the range covered by the map to the entire world, rather than just the US.&amp;#160; While we’re at it, let’s change the name of the subtable we’re using from states to countries, just to keep things more clear.&amp;#160; What we end up with is some code that looks very familiar, if you’ve already seen last week’s solution, with a few minor changes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="courier new"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set chld ""&amp;#160; &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set chd ""        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach country [table keys -subtable countries] {        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; append chld $country        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; append chd "[table lookup -subtable countries $country],"        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set chd [string trimright $chd ","]        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HTTP::respond 200 content "&amp;lt;HTML&amp;gt;&amp;lt;center&amp;gt;&amp;lt;font size=5&amp;gt;Here is your site's usage by Country:&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;img src='&lt;/font&gt;&lt;font face="courier new"&gt;http://chart.apis.google.com/chart?cht=t&amp;amp;chd=&amp;amp;chs=440x220&amp;amp;chtm=&lt;strong&gt;world&lt;/strong&gt;&amp;amp;chd=t:&lt;/font&gt;&lt;font face="courier new"&gt;$chd&amp;amp;chld=$chld&amp;amp;chco=f5f5f5,edf0d4,6c9642,365e24,13390a' border='0'&amp;gt;&amp;lt;br&amp;gt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;a href='/resetmap'&amp;gt;Reset All Counters&amp;lt;/a&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/HTML&lt;/font&gt;&amp;gt;"&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So using that in place of the similar logic in last week’s solution you can get a simple world view of the traffic passing through your site.&amp;#160; That’s great and all, but what if you can’t see the detail you’re looking for?&amp;#160; What if you want to see the details of Asia’s traffic and be able to decipher the patterns in Japan and the Middle East?&amp;#160; What we really need is to build a simple interface to make this more of an application, and less of a single image displayed on a web page.&lt;/p&gt;
&lt;p&gt;Well, first of all, we already have all the data collected that we’ll need, if you think about it. We’re already tracking the requests per country, so all we need to do is build out options to allow for users to click a link and zoom to a different region of the map.&amp;#160; To do this we’ll set up some simple HTML navigation links at the bottom of the page being generated via the iRule, and set up a switch structure to handle each URI the links pass back into the iRule, and use those to format the HTML appropriately so that we get the right Google charts call.&amp;#160; That sounds more complicated than it is. Here’s what it looks like:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="courier new"&gt;&amp;#160;&amp;#160;&amp;#160; "/heatmap" {       &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set chld ""&amp;#160; &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set chd ""        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach country [table keys -subtable countries] {        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; append chld $country        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; append chd "[table lookup -subtable countries $country],"        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set chd [string trimright $chd ","]        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HTTP::respond 200 content "&amp;lt;HTML&amp;gt;&amp;lt;center&amp;gt;&amp;lt;font size=5&amp;gt;Here is your site's usage by Country:&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;img src='&lt;/font&gt;&lt;font face="courier new"&gt;http://chart.apis.google.com/chart?cht=t&amp;amp;chd=&amp;amp;chs=440x220&amp;amp;chtm=&lt;strong&gt;world&lt;/strong&gt;&amp;amp;chd=t:&lt;/font&gt;&lt;font face="courier new"&gt;$chd&amp;amp;chld=$chld&amp;amp;chco=f5f5f5,edf0d4,6c9642,365e24,13390a' border='0'&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Zoom to region: &amp;lt;a href='/asia'&amp;gt;Asia&amp;lt;/a&amp;gt; | &amp;lt;a href='/africa'&amp;gt;Africa&amp;lt;/a&amp;gt; | &amp;lt;a href='/europe'&amp;gt;Europe&amp;lt;/a&amp;gt; | &amp;lt;a href='/middle_east'&amp;gt;Middle East&amp;lt;/a&amp;gt; | &amp;lt;a href='/south_america'&amp;gt;South America&amp;lt;/a&amp;gt; | &amp;lt;a href='/usa'&amp;gt;United States&amp;lt;/a&amp;gt; | &amp;lt;a href='/heatmap'&amp;gt;World&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;a href='/resetmap'&amp;gt;Reset All Counters&amp;lt;/a&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/HTML&amp;gt;"&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;&amp;#160;&amp;#160;&amp;#160; "/asia" {       &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set chld ""&amp;#160; &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set chd ""        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach country [table keys -subtable countries] {        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; append chld $country        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; append chd "[table lookup -subtable countries $country],"        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set chd [string trimright $chd ","]        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HTTP::respond 200 content "&amp;lt;HTML&amp;gt;&amp;lt;center&amp;gt;&amp;lt;font size=5&amp;gt;Here is your site's usage by Country:&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;img src='&lt;/font&gt;&lt;font face="courier new"&gt;http://chart.apis.google.com/chart?cht=t&amp;amp;chd=&amp;amp;chs=440x220&amp;amp;chtm=&lt;strong&gt;asia&lt;/strong&gt;&amp;amp;chd=t:&lt;/font&gt;&lt;font face="courier new"&gt;$chd&amp;amp;chld=$chld&amp;amp;chco=f5f5f5,edf0d4,6c9642,365e24,13390a' border='0'&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Zoom to region: &amp;lt;a href='/asia'&amp;gt;Asia&amp;lt;/a&amp;gt; | &amp;lt;a href='/africa'&amp;gt;Africa&amp;lt;/a&amp;gt; | &amp;lt;a href='/europe'&amp;gt;Europe&amp;lt;/a&amp;gt; | &amp;lt;a href='/middle_east'&amp;gt;Middle East&amp;lt;/a&amp;gt; | &amp;lt;a href='/south_america'&amp;gt;South America&amp;lt;/a&amp;gt; | &amp;lt;a href='/usa'&amp;gt;United States&amp;lt;/a&amp;gt; | &amp;lt;a href='/heatmap'&amp;gt;World&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;a href='/resetmap'&amp;gt;Reset All Counters&amp;lt;/a&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/HTML&amp;gt;"&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;…&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;That section can be repeated once for each available region that Google will let us view (Asia | Africa | Europe | Middle East | South America | United States | World).&amp;#160; That then gives us something that looks like this:&lt;/p&gt;
&lt;p&gt;&lt;img height="407" border="0" width="582" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Jul/WLW-HeatmapsiRulesStylePart2_ADCF-image_3.png" alt="image" style="border: 0px none; display: block; float: none; margin-left: auto; margin-right: auto;" /&gt;&lt;/p&gt;
&lt;p&gt;As you can see, we now have a world view map that shows the heat of each country, and we have individual links that we can click on along the bottom to take us to a zoom of each country/region to get a more specific look at the info there.&amp;#160; As an example, let’s take a look at the data from Asia:&lt;/p&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'538c884e'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Colin/2010/Jul/WLW-HeatmapsiRulesStylePart2_ADCF-image_5.png"&gt;&lt;img height="401" border="0" width="585" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Jul/WLW-HeatmapsiRulesStylePart2_ADCF-image_thumb_1.png" alt="image" style="border: 0px none; display: block; float: none; margin-left: auto; margin-right: auto;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;So we now have a nice little heatmapping application.&amp;#160; It pulls up a world view of app traffic going to your site or app, it allows you to click around to the different regions of the world to get a more detailed view, and it even lets you re-set the data at will.&amp;#160; I can hear some among you asking “What about the states, though?”.&amp;#160; If I take away the state view of the US and give a world view, then I’m really trading one limitation for another.&amp;#160; Ideally we’d be able to see both, right?&lt;/p&gt;
&lt;p&gt;If I want to be able to give a detailed view on both the countries around the world and the states within the US, then I need to expand my data collection a bit. I need to collect both country codes for incoming requests &lt;em&gt;&lt;strong&gt;and&lt;/strong&gt; &lt;/em&gt;state abbreviations, where applicable. This means creating a second sub-table within the iRule, and issuing a second whereis per request coming in.&amp;#160; Something like this should do:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;br /&gt;
&lt;font face="courier new"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set cloc [whereis ]IP::client_addr[ country]       &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set sloc [whereis ]IP::client_addr[ abbrev]        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if {[table incr -subtable countries -mustexist $cloc] eq ""} {        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; table set -subtable countries $cloc 1 indefinite indefinite        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160;&amp;#160; &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if {[table incr -subtable states -mustexist $sloc] eq ""} {        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; table set -subtable states $sloc 1 indefinite indefinite        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;font face="treb"&gt;Above we’re using the cloc (country location) and sloc (state location) variables to simultaneously track both country codes and state abbreviations in separate sub tables within the iRule.&amp;#160; This way we don’t mix up CA (Canada) and CA (California) or similar crossovers and throw our counts off. When doing this, don’t forget to update the resetmap case as well to empty both sub tables, not just one.&amp;#160; This also means that we’ll need to slightly change the logic in the “usa” case as opposed to all of the other cases when doing a lookup.&amp;#160; If the user wants to view the USA details, we need to do a subtable lookup on the states sub table, everything else uses the countries sub table.&amp;#160; Not too horrible.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="treb"&gt;Okay, we now have heatmaps for all countries, all available zoom regions &lt;strong&gt;and&lt;/strong&gt; a zoom to state level in the US, complete with some rudimentary HTML to make this feel like an application, not just a static image on a web page.&amp;#160; Unfortunately, we also have around 140 lines of code, &lt;strong&gt;&lt;em&gt;much &lt;/em&gt;&lt;/strong&gt;of which is being repeated. There’s no sense in repeating that HTML over and over, or those logic statements doing the lookups and whatnot. So it’s time to take out the scalpel and start slicing and dicing, looking for unnecessary code.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="treb"&gt;I started with the HTML.&amp;#160; There’s just no reason to repeat that HTML in every single switch case. So I set that in some static variables in the RULE_INIT section and did away with that all together in each switch case.&amp;#160; Next, the actual iRules logic is identical if I want to view asia or africa or europe or anything other than the US. The only difference is the HTML changing one word to tell the API where to zoom in. Using a little extra “zoom” logic, I was able to cut down most of that repetitive code as well, by having all of the switch cases other than the USA fall through to the world view case, giving us just two chunks of iRules logic to deal with. Not including the extra variables and tidbits, the core of those two chunks of logic are:&lt;/font&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;#160;&amp;#160; &lt;font face="courier new"&gt;&amp;#160;&amp;#160; foreach country [table keys -subtable countries] {       &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; append chld $country        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; append chd "[table lookup -subtable countries $country],"        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;
&amp;#160;&amp;#160; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach state [table keys -subtable states] {       &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; append chld $state        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; append chd "[table lookup -subtable states $state],"        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Don’t stop there, though, there’s more to trim!&amp;#160; With some more advanced trickery we can combine these two table lookups into a single piece of logic. When all is said and done, here is the final iRule trimmed down to fighting form with a single switch case handling the presentation of all the possible heatmaps generated by Google…pretty cool stuff:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="courier new"&gt; when RULE_INIT {       &lt;br /&gt;
&amp;#160; set static::resp1 "&amp;lt;HTML&amp;gt;&amp;lt;center&amp;gt;&amp;lt;font size=5&amp;gt;Here is your site's usage by Country:&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;img src='&lt;/font&gt;&lt;a href="http://chart.apis.google.com/chart?cht=t&amp;amp;chd=&amp;amp;chs=440x220&amp;amp;chtm=&amp;quot;"&gt;&lt;font face="courier new"&gt;http://chart.apis.google.com/chart?cht=t&amp;amp;chd=&amp;amp;chs=440x220&amp;amp;chtm="&lt;/font&gt;&lt;/a&gt;      &lt;br /&gt;
&lt;font face="courier new"&gt;&amp;#160; set static::resp2 "&amp;amp;chco=f5f5f5,edf0d4,6c9642,365e24,13390a' border='0'&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Zoom to region: &amp;lt;a href='/asia'&amp;gt;Asia&amp;lt;/a&amp;gt; | &amp;lt;a href='/africa'&amp;gt;Africa&amp;lt;/a&amp;gt; | &amp;lt;a href='/europe'&amp;gt;Europe&amp;lt;/a&amp;gt; | &amp;lt;a href='/middle_east'&amp;gt;Middle East&amp;lt;/a&amp;gt; | &amp;lt;a href='/south_america'&amp;gt;South America&amp;lt;/a&amp;gt; | &amp;lt;a href='/usa'&amp;gt;United States&amp;lt;/a&amp;gt; | &amp;lt;a href='/heatmap'&amp;gt;World&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;a href='/resetmap'&amp;gt;Reset All Counters&amp;lt;/a&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/HTML&amp;gt;"       &lt;br /&gt;
} &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;when HTTP_REQUEST {       &lt;br /&gt;
&amp;#160; switch -glob [string tolower ]HTTP::uri[] {&amp;#160; &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; "/asia" -         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; "/africa" -         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; "/europe" -         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; "/middle_east" -         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; "/south_america" -         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; "/usa" -        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; "/world" -         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; "/heatmap*" {        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set chld ""&amp;#160; &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set chd ""        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set zoom [string map {"/" "" "heatmap" "world"} ]HTTP::uri[]        &lt;br /&gt;
##&amp;#160; Configure the table query to be based on the countries subtable or the states subtable&amp;#160; ##        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if {$zoom eq "usa"} {         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set region "states"         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } else {         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set region "countries"         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;
##&amp;#160; Get a list of all states or countries and the associated count of requests from that area ##        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach rg [table keys -subtable $region] {        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; append chld $rg        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; append chd "[table lookup -subtable $region $rg],"        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set chd [string trimright $chd ","]        &lt;br /&gt;
##&amp;#160; Send back the pre-formatted response, set in RULE_INIT, combined with the map zoom, list of areas, and request count ##        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HTTP::respond 200 content "${static::resp1}${zoom}&amp;amp;chd=t:${chd}&amp;amp;chld=${chld}${static::resp2}"        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; "/resetmap" {        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach country [table keys -subtable countries] {        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; table delete -subtable countries $country        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach state [table keys -subtable states] {        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; table delete -subtable states $state        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HTTP::respond 200 Content "&amp;lt;HTML&amp;gt;&amp;lt;center&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Table Cleared.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &amp;lt;a href='/heatmap'&amp;gt;Return to Map&amp;lt;/a&amp;gt;&amp;lt;/HTML&amp;gt;"        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; default {        &lt;br /&gt;
##&amp;#160; Look up country &amp;amp; state locations ##        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set cloc [whereis ]IP::client_addr[ country]        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set sloc [whereis ]IP::client_addr[ abbrev]        &lt;br /&gt;
##&amp;#160; If the IP doesn't resolve to anything, pick a random IP (useful for testing on private networks) ##&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if {($cloc eq "") and ($sloc eq "")} {         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set ip [expr { int(rand()*255) }].[expr { int(rand()*255) }].[expr { int(rand()*255) }].[expr { int(rand()*255) }]        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set cloc [whereis $ip country]        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set sloc [whereis $ip abbrev]        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;
##&amp;#160; Set Country&amp;#160; ##&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if {[table incr -subtable countries -mustexist $cloc] eq ""} {        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; table set -subtable countries $cloc 1 indefinite indefinite        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;
##&amp;#160; Set State&amp;#160; ##        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if {[table incr -subtable states -mustexist $sloc] eq ""} {        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; table set -subtable states $sloc 1 indefinite indefinite        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HTTP::respond 200 Content "Added"        &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;
&amp;#160; }&amp;#160; &lt;br /&gt;
}&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There we have it, an appropriately trimmed down and sleek application to provide worldwide or regional views of heatmaps showing traffic to your application, all generated 100% via iRules. Again, this couldn’t be done without the awesome Quova abilities of LTM or the Google charting API or, of course, iRules.&amp;#160; In the next installment we’ll dig even deeper to see how to turn this application into something even more valuable to those interested in what the users of your site or app are up to.&lt;/p&gt;
&lt;div style="clear: both; height: 11px;" class="d_itc_f"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;</description><pubDate>Thu, 08 Jul 2010 13:22:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086353/Heatmaps-iRules-Style-Part2.aspx#Comments</comments><slash:comments>1</slash:comments><dc:creator>Colin</dc:creator></item><item><title>DevCentral Weekly Podcast 139 &amp;ndash; Plugging Into VMware vSphere</title><link>http://devcentral.f5.com/weblogs/dcpodcast/archive/2010/07/08/devcentral-weekly-podcast-139-ndash-plugging-into-vmware-vsphere.aspx</link><description>&lt;a href="http://devcentral.f5.com/media/audio/20100708-F5DevCentralPodcast-139.mp3"&gt; &lt;/a&gt;   &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" align="center"&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="320" height="260" id="utv439958" name="utv_n_681934"&gt;&lt;param name="flashvars" value="autoplay=false" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="src" value="http://www.ustream.tv/flash/video/8154158" /&gt;&lt;embed flashvars="autoplay=false" width="320" height="260" allowfullscreen="true" allowscriptaccess="always" id="utv439958" name="utv_n_681934" src="http://www.ustream.tv/flash/video/8154158" type="application/x-shockwave-flash" /&gt;&lt;/object&gt;&lt;/td&gt;        &lt;td&gt;   &lt;/td&gt;        &lt;td valign="top"&gt;&lt;img align="right" src="http://devcentral.f5.com/podcast/DC4-Podcast.jpg" width="90" height="90" /&gt;Welcome to the one hundred and thirty ninth edition of the DevCentral Weekly Roundtable Podcast!  A weekly recap of the interesting things that have been going on within the DevCentral community.           &lt;br /&gt;          &lt;br /&gt;Hosts: &lt;a href="http://devcentral.f5.com/weblogs/cwalker"&gt;Colin Walker&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/jason"&gt;Jason Rahm&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/joe"&gt;Joe Pruitt&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/scott"&gt;Scott Koon,&lt;/a&gt; and special guest Charlie Cano.          &lt;p&gt;In this weeks podcast we invited F5’s Charlie Cano on to talk about our new &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/2002/Default.aspx"&gt;F5 Management Plug-In for VMware vSphere&lt;/a&gt;.  We finished things up with some discussions on &lt;a href="http://devcentral.f5.com/Forums/tabid/1082223/asg/50/showtab/groupforums/aff/5/aft/1174072/afv/topic/Default.aspx"&gt;binary content from iRules&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/Forums/tabid/1082223/asg/51/showtab/groupforums/aff/1/aft/1172696/afv/topic/Default.aspx"&gt;partitions with iControl&lt;/a&gt;, updates in the &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/2/aft/1172123/afv/topic/aff/2106/showtab/groupforums/Default.aspx"&gt;iControl Assemblies&lt;/a&gt;, and Colin discussion his &lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084382/Heatmaps-iRules-Style-Part-1.aspx"&gt;two&lt;/a&gt; &lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086353/Heatmaps-iRules-Style-Part2.aspx"&gt;posts&lt;/a&gt; on &lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086353/Heatmaps-iRules-Style-Part2.aspx"&gt;Heatmaps with iRules&lt;/a&gt;.&lt;/p&gt;          &lt;p&gt;All of the links from this recording can be found with the &lt;a href="http://delicious.com/devcentral/dcpodcast139"&gt;dcpodcast139&lt;/a&gt; tag at Delicious.com.  You can also watch the video recording from our &lt;a href="http://www.ustream.tv/channel/dcpodcast"&gt;UStream.TV channel&lt;/a&gt;: &lt;a href="http://www.ustream.tv/recorded/8154158"&gt;DevCentral Podcast 139&lt;/a&gt;.&lt;/p&gt;          &lt;div id="dcpc139player" align="center" width="100%"&gt;&lt;a href="http://www.macromedia.com/go/getflashplayer"&gt;Get the Flash Player&lt;/a&gt; to see this player. &lt;/div&gt;          &lt;div align="center" width="100%"&gt;&lt;script language="javascript"&gt;&lt;!--

generateMP3Player("dcpc139player", "20100708-F5DevCentralPodcast-139.mp3");
//--&gt;&lt;/script&gt;&lt;/div&gt;          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:3703a5d2-78db-4806-9cb3-53bbb0962356" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VMware" rel="tag"&gt;VMware&lt;/a&gt;,&lt;a href="http://technorati.com/tags/vSphere" rel="tag"&gt;vSphere&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/partitions" rel="tag"&gt;partitions&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iControl" rel="tag"&gt;iControl&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Heatmaps" rel="tag"&gt;Heatmaps&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin+Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jason+Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Joe+Pruitt" rel="tag"&gt;Joe Pruitt&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Scott+Koon" rel="tag"&gt;Scott Koon&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Charlie+Cano" rel="tag"&gt;Charlie Cano&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/dcpodcast/aggbug/1090156.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 08 Jul 2010 06:08:32 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dcpodcast/archive/2010/07/08/devcentral-weekly-podcast-139-ndash-plugging-into-vmware-vsphere.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral Weekly Podcast</dc:creator></item><item><title>Heatmaps, iRules Style: Part 1</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084382/Heatmaps-iRules-Style-Part-1.aspx</link><description>&lt;p&gt;When working with any type of traffic, metrics play an important role.&amp;#160; Whether you’re dealing with web traffic, custom TCP application traffic, DNS requests…pretty much anything traveling over the wire, chances are at some point someone in your organization is going to want to know more than just “Yep, the traffic is flowing.”.&amp;#160; This is where metrics come in.&amp;#160; You’ll report on, well, something. Uptime, requests per x time period, utilization, or some other thing will need to be rolled up and reported to those interested parties so that they can make sure things are running properly, show off the great stats in presentations, or check the “metrics gathered” box off their quarterly objectives scorecard.&amp;#160; Regardless, it’ll be up to you to gather that info.&lt;/p&gt;
&lt;p&gt;I’ve been tinkering with a way to allow iRules to make that easier, and to allow those interested parties to see some usage statistics in a visually interesting, real-time manner, without adding much heavy lifting for you or your application.&amp;#160; The idea is simple, create a heat map view of your HTTP requests, mapped to the locations around the United States (to start with).&amp;#160; This will give you an idea which areas are most highly utilizing your application in a very easy on the eyes fashion.&amp;#160; Best of all, of course, is that we’re going to generate this 100% with iRules.&amp;#160; When all is said and done, you should end up with something that looks about like this.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://chart.apis.google.com/chart?cht=t&amp;amp;chd=&amp;amp;chs=440x220&amp;amp;chtm=usa&amp;amp;chd=t:10,11,9,9,77,20,11,13,18,14,3,16,6,7,1,5,28,18,5,15,15,1,27,21,2,5,23,9,12,6,11,6,4,2,3,10,3,9,8,9,2,20,15,4,13,3,1,8,4,1,4,3,3,4,2,1,1,5,1,5,3,5,5,3,4,1,5,1,5,1,2,3,2,1,2,2,8,2,1,2,1,4,3,1,2,2,1,2,2,1,1,1,1,1,1,1,1,1,1,1&amp;amp;chld=05291312CADCMI1702A8AZVA0610B5274011NC22NJ87NYTX21WI0732ILMA01AL25B93319LAON23INH2OH04BC09MO90FLWAE1ORARMD2878A7KSGAB32647COPA72142408TN30MN1637OKH8IAI203KYN218C3SC158334UT45E7ABA5L5K7R3MTSD9985466581&amp;amp;chco=f5f5f5,edf0d4,6c9642,365e24,13390a" style="display: block; float: none; margin: 0px auto 20px;" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;This is possible for a couple reasons. First of all, iRules is awesome, and allows for all sorts of programmatic magic while processing traffic which we’ll get into below. Second though, and equally as important for this task is the somewhat new and completely amazing Quova database that iRules has access to.&amp;#160; By issuing a single, simple command via iRules I’m able to easily look up the originating location of any IP address.&amp;#160; I make great use of that in this example, and it wouldn’t be possible without their data.&lt;/p&gt;
&lt;p&gt;Okay, on to the solution. We need to be able to keep a counter in memory and increment it. We naturally want to be able to do this in the most efficient way possible to minimize drag on your LTM. So we need something that is “permanent”, global (not scoped to a given session), highly efficient, easily counted or incremented…hmm. If you’re like me, and running 10.1 or later, tables should be leaping to mind right about now.&amp;#160; So let’s take a look at a relatively simple counter mechanism using tables:&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="courier new"&gt;when HTTP_REQUEST {        &lt;br /&gt;
&amp;#160; set loc [whereis ]IP::client_addr[ abbrev]         &lt;br /&gt;
&amp;#160; if {$loc eq ""} {         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; set ip [expr { int(rand()*255) }].[expr { int(rand()*255) }].[expr { int(rand()*255) }].[expr { int(rand()*255) }]         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; set loc [whereis $ip abbrev]         &lt;br /&gt;
&amp;#160; }         &lt;br /&gt;
&amp;#160; if {[table incr -subtable states -mustexist $loc] eq ""} {         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; table set -subtable states $loc 1 indefinite indefinite         &lt;br /&gt;
&amp;#160; }&amp;#160; &lt;br /&gt;
}&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So above we have a relatively simple block that looks up the location of every inbound IP address using the whereis command.&amp;#160; For testing and demonstration purposes it’s then setting a random IP address in case you can’t look up the incoming IP (all of my requests were on an internal network so none resolved and I wanted to test the functionality. You’ll want to remove that set ip set loc section if you aren’t looking for random IP info once you’re out of the testing or demo phase. It then increments a subtable entry for the state returned in the lookup.&amp;#160; It’s setting the subtable entry to have an indefinite timeout and lifetime the first time a request for that state comes in, otherwise just incrementing it by 1.&lt;/p&gt;
&lt;p&gt;That works great and all, but now we have this indefinite lifetime entry, many of them probably, with data building up. We need some mechanism to reset the tables to 0, but I don’t want those to occur on a given lifetime or timeout, since I want it to be manual. I.E. I want the data to collect until you push the button to say “reset data”, effectively.&amp;#160; So now we need another section to reset things on demand.&amp;#160; What we’ll want to do is get a list of all the entries we’ve created and delete them. Fortunately, since we’ve been using a subtable, that’s trivial. We’ll just get a list of the keys in the subtable and delete each one. That would look something like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="courier new"&gt;if {[HTTP::uri] starts_with "/resetmap"} {        &lt;br /&gt;
&amp;#160; foreach state [table keys -subtable states] {         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; table delete -subtable states $state         &lt;br /&gt;
&amp;#160; }         &lt;br /&gt;
}&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now that we have a table counting every request that comes in, and a way to reset those tables as needed, we’re well on our way. All that’s left now is to actually output the heatmap that shows the visual representation of the compiled data we’re storing in the table shown above. To do that, we’ll query the table and get a list of all of the state abbreviation codes, along with their respective number of requests so far, and we’ll format that into a URL that is a call to Google’s charting API, using the chld and chd variables.&amp;#160; Lastly, for presentation, we’ll wrap the whole mess in some very basic HTML (forgive me web-designers, for I am not one of you) that makes it feel a bit like an interface, as well as tweaking the default mapping color gradients a bit. The whole thing, when put together, looks like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="courier new"&gt;when HTTP_REQUEST {        &lt;br /&gt;
&amp;#160; if {[HTTP::uri] starts_with "/heatmap"} {         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; set chld ""&amp;#160; &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; set chd ""         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; foreach state [table keys -subtable states] {         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; append chld $state         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; append chd "[table lookup -subtable states $state],"         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; set chd [string trimright $chd ","]         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; HTTP::respond 200 content "&amp;lt;HTML&amp;gt;&amp;lt;center&amp;gt;&amp;lt;font size=5&amp;gt;Here is your site's usage by state:&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;img src='&lt;/font&gt;&lt;font face="courier new"&gt;http://chart.apis.google.com/chart?cht=t&amp;amp;chd=&amp;amp;chs=440x220&amp;amp;chtm=usa&amp;amp;chd=t:&lt;/font&gt;&lt;font face="courier new"&gt;$chd&amp;amp;chld=$chld&amp;amp;chco=f5f5f5,edf0d4,6c9642,365e24,13390a' border='0'&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;a href='/resetmap'&amp;gt;Reset Map&amp;lt;/a&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/HTML&amp;gt;"        &lt;br /&gt;
&amp;#160; } elseif {[HTTP::uri] starts_with "/resetmap"} {         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; foreach state [table keys -subtable states] {         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; table delete -subtable states $state         &lt;br /&gt;
&amp;#160; }         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; HTTP::respond 200 Content "&amp;lt;HTML&amp;gt;&amp;lt;center&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Table Cleared.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &amp;lt;a href='/heatmap'&amp;gt;Return to Map&amp;lt;/a&amp;gt;&amp;lt;/HTML&amp;gt;"         &lt;br /&gt;
&amp;#160; } else {         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; set loc [whereis ]IP::client_addr[ abbrev]         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; if {$loc eq ""} {         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set ip [expr { int(rand()*255) }].[expr { int(rand()*255) }].[expr { int(rand()*255) }].[expr { int(rand()*255) }]         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set loc [whereis $ip abbrev]         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; if {[table incr -subtable states -mustexist $loc] eq ""} {         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; table set -subtable states $loc 1 indefinite indefinite         &lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;
&amp;#160; }&amp;#160; &lt;br /&gt;
} &lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There you have it, a fully functioning heatmapping application built entirely in iRules, with some much appreciated assistance from Quova and Google’s charting API. This is, of course, an amazingly basic look at what this type of functionality can do. In Part 2 of this series I’ll be showing you how you can make this even more powerful and granular to give you a look at not just overall usage information but some more specific bits that will likely prove even more useful. Many thanks to Matt Cauthorn, one of the many truly outstanding engineers here at F5, for getting the juices flowing on this one and riffing on it with me to come up with the idea and start the planning.&lt;/p&gt;
&lt;div style="clear: both; height: 11px;" class="d_itc_f"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;</description><pubDate>Tue, 29 Jun 2010 15:41:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084382/Heatmaps-iRules-Style-Part-1.aspx#Comments</comments><slash:comments>1</slash:comments><dc:creator>Colin</dc:creator></item><item><title>iRules 101 - #17 &amp;ndash; Mapping Protocol Fields with the Binary Scan Command</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084381/iRules-101--17-ndash-Mapping-Protocol-Fields-with-the-Binary-Scan-Command.aspx</link><description>&lt;script type="text/javascript" src="/DesktopModules/itcMetaPost/js/ca0c21fbdc85f6a1597417732d450607.ashx?hs=1"&gt;&lt;/script&gt;&lt;h3&gt;Introduction&lt;/h3&gt;  &lt;p&gt;An iRule is a powerful and flexible feature of BIG-IP devices based on F5's exclusive TMOS architecture.&amp;#160; iRules provide you with unprecedented control to directly manipulate and manage any IP application traffic.&amp;#160; iRules utilizes an easy to learn scripting syntax and enables you to customize how you intercept, inspect, transform, and direct inbound or outbound application traffic.&amp;#160; In this series of tech tips, we'll talk about the TCL language, its usage and control structures, as well as iRule extensions to the TCL language.&lt;/p&gt;  &lt;h3&gt;The Binary Scan Command&lt;/h3&gt;  &lt;p&gt;The &lt;strong&gt;binary scan&lt;/strong&gt; command, &lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2346/iRules-101--16--Parsing-Strings-with-the-TCL-Scan-Command.aspx" target="_blank"&gt;like the &lt;strong&gt;scan command&lt;/strong&gt; covered in the last entry in this series&lt;/a&gt;, parses strings.&amp;#160; Only, as the adjective indicates, it parses binary strings.&amp;#160; In this article, I’ll highlight the command syntax and a few of the format string options below.&amp;#160; Check the &lt;a href="http://tmml.sourceforge.net/doc/tcl/binary.html" target="_blank"&gt;man page&lt;/a&gt; for the complete list of format options.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;binary scan&lt;/strong&gt; &lt;em&gt;&lt;strong&gt;string formatString ?varName varName … ?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;c&lt;/strong&gt; - The data is turned into count 8-bit signed integers and stored in the corresponding variable as a list. If count is *, then all of the remaining bytes in string will be scanned. If count is omitted, then one 8-bit integer will be scanned.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;S&lt;/strong&gt; - The data is interpreted as &lt;i&gt;count&lt;/i&gt; 16-bit signed integers represented in big-endian byte order. The integers are stored in the corresponding variable as a list. If &lt;i&gt;count&lt;/i&gt; is &lt;b&gt;*&lt;/b&gt;, then all of the remaining bytes in &lt;i&gt;string&lt;/i&gt; will be scanned. If &lt;i&gt;count&lt;/i&gt; is omitted, then one 16-bit integer will be scanned.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;H&lt;/strong&gt; - The data is turned into a string of &lt;i&gt;count&lt;/i&gt; hexadecimal digits in high-to-low order represented as a sequence of characters in the set &amp;quot;0123456789abcdef&amp;quot;. The data bytes are scanned in first to last order with the hex digits being taken in high-to-low order within each byte. Any extra bits in the last byte are ignored. If &lt;i&gt;count&lt;/i&gt; is &lt;b&gt;*&lt;/b&gt;, then all of the remaining hex digits in &lt;i&gt;string&lt;/i&gt; will be scanned. If &lt;i&gt;count&lt;/i&gt; is omitted, then one hex digit will be scanned. &lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;Do the Research First!&lt;/h3&gt;  &lt;p&gt;Before you can start mapping fields, you need to know where the delimiters are, and that takes a little research.&amp;#160; In this example, I want to list out the cipher suites presented to the BIG-IP LTM by the browser (more on that later), so I’m going to decode the fields in an SSLv3/TLSv1 client hello message.&amp;#160; I took a capture with &lt;a href="http://www.wireshark.org/" target="_blank"&gt;Wireshark&lt;/a&gt; to find the field delineations, but you could also pull this information from &lt;a href="http://www.ietf.org/rfc/rfc2246.txt" target="_blank"&gt;RFC 2246&lt;/a&gt; if you are so inclined.&amp;#160; Table 1 below shows the fields I’ll extract or skip over in the course of the iRule code.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:64218e53-9687-479c-9aaa-b9e8fff2fecc" class="wlWriterEditableSmartContent"&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/citizen_elah/2010/Jun/WLW-iRules10117MappingProtocolFieldswiththeB_DAF0-sslv3-8x6.png" title="Table 1" rel="thumbnail"  class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'2d46d26a'})" &gt;&lt;img border="0" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2010/Jun/WLW-iRules10117MappingProtocolFieldswiththeB_DAF0-sslv3_4.png" width="760" height="486" /&gt;&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;So why do I want to look at the cipher suites?&amp;#160; I was contacted by a friend who wanted to increase security to 256-bit ciphers for those browsers that supported it, but would still allow users that don’t to connect as well so they could be redirected to an error page requesting they upgrade.&amp;#160; With the cipher settings as they were, the unsupported browser (in this case, IE6) could connect, but the newer browsers connected at 128-bit as well instead of 256-bit.&amp;#160; I later learned (courtesy of none other than hoolio) that I could use &lt;a href="http://195.30.6.166/docs/apps/ciphers.html" target="_blank"&gt;@STRENGTH in my cipher settings&lt;/a&gt; to force the capable browsers up, but for the benefit of demonstrating the use the binary string command, I’ll proceed with the iRule.&lt;/p&gt;  &lt;h3&gt;Standard Behaviors&lt;/h3&gt;  &lt;p&gt;I set up a clientssl profile with these cipher settings: “DEFAULT:!ADH:!EXPORT40:!EXP:!LOW”.&amp;#160; Those settings result in my test browsers (Chrome 5, FF 3.6.4, IE 8) all using the RC4-SHA 128-bit cipher.&amp;#160; I used a simple iRule to display the information back to the client:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;/p&gt;   &lt;fieldset style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px"&gt;&lt;legend&gt;SSL Cipher in Use&lt;/legend&gt;      &lt;p&gt;&lt;/p&gt;      &lt;pre&gt;when HTTP_REQUEST {
  set cipher_info &amp;quot;[SSL::cipher name]:[SSL::cipher bits]&amp;quot;
  HTTP::respond 200 content &amp;quot;&lt;html&gt;$cipher_info&amp;quot;
}&lt;/pre&gt;
  &lt;/fieldset&gt; 

  &lt;p&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Again, the easy (and better) fix here is to add strength to the cipher settings in the SSL profile like so: “DEFAULT:!ADH:!EXPORT40:!EXP:!LOW:@STRENGTH”, but instead I created an additional clientssl profile, adding not medium to the settings: “DEFAULT:!ADH:!EXPORT40:!EXP:!LOW:!MEDIUM”.&amp;#160; Once I had that profile in place, work on the iRule could begin.&lt;/p&gt;

&lt;h3&gt;Using Binary Scan&lt;/h3&gt;

&lt;p&gt;Enough prep talk already, let me get to the good stuff!&amp;#160; The iRule starts in CLIENT_ACCEPTED, disabling SSL and doing a TCP collect:&lt;/p&gt;

&lt;blockquote&gt;&lt;fieldset style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px"&gt;&lt;legend&gt;Binary Scans&lt;/legend&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre&gt;when CLIENT_ACCEPTED {
  set lsec 0
  SSL::disable
  TCP::collect
}
when CLIENT_DATA {
  if { ! [info exists rlen] } {
		
  &lt;strong&gt;binary scan [TCP::payload] cSS rtype sslver rlen&lt;/strong&gt;
  #log local0. &amp;quot;SSL Record Type $rtype, Version: $sslver, Record Length: $rlen&amp;quot;
		
  # SSLv3 / TLSv1.0
  if { $sslver &amp;gt; 767 &amp;amp;&amp;amp; $sslver &amp;lt; 770 } {
    if { $rtype != 22 } {
      log local0. &amp;quot;Client-Hello expected, Rejecting.  \
                        Src: [IP::client_addr]:[TCP::remote_port] -&amp;gt; \
                        Dst: [IP::local_addr]:[TCP::local_port]&amp;quot;
      reject
      return
    }&lt;/pre&gt;
  &lt;/fieldset&gt;&lt;/blockquote&gt;

&lt;p&gt;As shown in the binary scan syntax, “c” grabs one byte and returns a signed integer, and “S” grabs two-bytes and returns a signed integer.&amp;#160; The rest of the payload is thrown away.&amp;#160; From table 1, we know the first three fields of SSLv3/TLSv1 client hello’s are one-byte, two-byte, two-byte, so a format string of cSS followed by three variable names takes care of the parsing.&amp;#160; The clientssl profile doesn’t yet support TLS 1.1 or 1.2, so I’m only testing for SSLv3/TLSv1.&amp;#160; The SSLv2 and earlier record format is different altogether, so the initial fields wouldn’t map this way anyway.&amp;#160; This is true of IE6, which by default issues a SSLv2 client hello but supports SSLv3/TLSv1.&amp;#160; Confused yet?&amp;#160; Anyway, once the test for SSLv3/TLSv1 is complete, I then make sure the record type is a client hello, if not, no reason to continue.&lt;/p&gt;

&lt;p&gt;Once the verification is complete that this really is a client hello, there is a string (pun intended!) of binary scans to sort the rest of the details out:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;fieldset style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px"&gt;&lt;legend&gt;Binary Scans&lt;/legend&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre&gt;  #Collect rest of the record if necessary
  if { [TCP::payload length] &amp;lt; $rlen } {
    TCP::collect $rlen
    #log local0. &amp;quot;Length is $len&amp;quot;
  }  
  #skip record header and random data
  set field_offset 43

  #set the offset
  &lt;strong&gt;binary scan [TCP::payload] @${field_offset}c sessID_len&lt;/strong&gt;
  set field_offset [expr {$field_offset + 1 + $sessID_len}]

  #Get cipherlist length
  &lt;strong&gt;binary scan [TCP::payload] @${field_offset}S cipherList_len&lt;/strong&gt;
  #log local0. &amp;quot;Cipher list length: $cipherList_len&amp;quot;

  #Get ciphers, separate into a list of elements
  set field_offset [expr {$field_offset + 2}]
  set cipherList_len [expr {$cipherList_len * 2}]
  &lt;strong&gt;binary scan [TCP::payload] @${field_offset}H${cipherList_len} cipherlist&lt;/strong&gt;
  #log local0. &amp;quot;Cipher list: $cipherlist&amp;quot;&lt;/pre&gt;
  &lt;/fieldset&gt; 

  &lt;p&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’m using the “@” symbol to skip bytes in the binary string.&amp;#160; Also, the curly brackets are necessary to surround the variable name to distinguish your variable from the significance of the format string characters.&amp;#160; In the first binary scan above, I’m skipping the record header and all the random data as I don’t need that information, but I do need the session ID length so I can set my offset properly to get to the cipher list.&amp;#160; In the second binary scan, again I’m skipping (from original payload) the new offset and then storing another two-byte signed integer that tells me how long the cipher list is.&amp;#160; From that information, I set a new offset, set the cipher list length (number of ciphers * 2, each cipher is two-bytes) and then perform the final binary scan to store the entire cipher list (in hex high-&amp;gt;low characters, hence the “H” in the string format).&lt;/p&gt;

&lt;p&gt;The rest of the rule is processing that cipher list (thanks to Colin for some tcl-fu in the for loop below), and sending users to a different clientssl profile if any of the ciphers in the client hello list match the ciphers in a string datagroup you define, in this case, accepted_ciphers (values were four hex character pairs, like c005, 0088, etc).&amp;#160; For browsers incapable of the higher security profile, they would be redirected to an error page instructing them to upgrade.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;fieldset style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px"&gt;&lt;legend&gt;Rule Conclusion&lt;/legend&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre&gt;  set profile_select 0
  for { set x 0 } { $x &amp;lt; $cipherList_len } { incr x 4 } {
    set start $x
    set end [expr {$x+3}]
    #Check cipher against 256-bit ciphers in accepted_ciphers data group
    if { [matchclass ]string range $cipherlist $start $end[ equals accepted_ciphers] } {
      #If 256-bit capable, select High Security profile
      set profile_select &amp;quot;SSL::profile clientssl_highSecurity&amp;quot;
      break
    }
  }
				
  #Set New Profile with eval since SSL::profile errors in CLIENT_ACCEPTED event
  if { $profile_select != 0 } {
    eval $profile_select
    #log local0. &amp;quot;Profile changed to High Security&amp;quot;
  } else { set lsec 1 }
			
      event CLIENT_DATA disable
      SSL::enable
      TCP::release
  } else {
      set lsec 1
      event CLIENT_DATA disable
      SSL::enable
      TCP::release
  }
}
}&lt;/pre&gt;
  &lt;/fieldset&gt; 

  &lt;p&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;The rule is useless in production, but is a good teaching example on the use of binary scan.&amp;#160; There are a few more good examples in the wiki.&amp;#160; Check out this &lt;a href="/wiki/default.aspx/iRules/DNS_no_more_non_existent_domain.html" target="_blank"&gt;DNS modification example&lt;/a&gt; and this &lt;a href="/wiki/default.aspx/iRules/TFTP_Server_as_iRule.html" target="_blank"&gt;tftp file server iRule&lt;/a&gt; (companion article for the tftp iRule &lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/343/TFTP-Server-via-iRules.aspx" target="_blank"&gt;here&lt;/a&gt;).&amp;#160; That one throws in a binary format to boot.&amp;#160; Happy coding!&lt;/p&gt;&lt;div class="d_itc_f" style="clear:both;height:11px;"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;</description><pubDate>Thu, 24 Jun 2010 13:35:05 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084381/iRules-101--17-ndash-Mapping-Protocol-Fields-with-the-Binary-Scan-Command.aspx#Comments</comments><slash:comments>1</slash:comments><dc:creator>citizen_elah</dc:creator></item><item><title>DevCentral Weekly Podcast 137 &amp;ndash; Next Week Will Be HOT</title><link>http://devcentral.f5.com/weblogs/dcpodcast/archive/2010/06/24/devcentral-weekly-podcast-137-ndash-next-week-will-be-hot.aspx</link><description>&lt;a href="http://devcentral.f5.com/media/audio/20100624-F5DevCentralPodcast-137.mp3"&gt; &lt;/a&gt;   &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" align="center"&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="320" height="260" id="utv290117" name="utv_n_847807"&gt;&lt;param name="flashvars" value="autoplay=false" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="src" value="http://www.ustream.tv/flash/video/7871511" /&gt;&lt;embed flashvars="autoplay=false" width="320" height="260" allowfullscreen="true" allowscriptaccess="always" id="utv290117" name="utv_n_847807" src="http://www.ustream.tv/flash/video/7871511" type="application/x-shockwave-flash" /&gt;&lt;/object&gt;&lt;/td&gt;        &lt;td&gt;   &lt;/td&gt;        &lt;td valign="top"&gt;&lt;img align="right" src="http://devcentral.f5.com/podcast/DC4-Podcast.jpg" width="90" height="90" /&gt;Welcome to the one hundred and thirty seventh edition of the DevCentral Weekly Roundtable Podcast!  A weekly recap of the interesting things that have been going on within the DevCentral community.           &lt;br /&gt;          &lt;br /&gt;Hosts: &lt;a href="http://devcentral.f5.com/weblogs/cwalker"&gt;Colin Walker&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/jason"&gt;Jason Rahm&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/joe"&gt;Joe Pruitt&lt;/a&gt;, and &lt;a href="http://devcentral.f5.com/weblogs/scott"&gt;Scott Koon&lt;/a&gt;.           &lt;p&gt;In this weeks podcast we discussed &lt;a href="http://devcentral.f5.com/wiki/default.aspx/iRules/NAT64_DNS64_v2.html"&gt;IPv6 to IPv4 DNS handling&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/50/afv/topic/aft/1172653/aff/5/showtab/groupforums/Default.aspx"&gt;Switch Statement Conditions&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084381/iRules-101--17-ndash-Mapping-Protocol-Fields-with-the-Binary-Scan-Command.aspx"&gt;Mapping Protocol Fields With Binary Scan&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/51/afv/topic/aft/1172647/aff/1/showtab/groupforums/Default.aspx"&gt;pyControl with GTM&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/50/afv/topic/aft/1172681/aff/5/showtab/groupforums/Default.aspx"&gt;Optimizing if statement conditions&lt;/a&gt;, and a preview of next weeks hotness.&lt;/p&gt;          &lt;p&gt;All of the links from this recording can be found with the &lt;a href="http://delicious.com/devcentral/dcpodcast137"&gt;dcpodcast137&lt;/a&gt; tag at Delicious.com.  You can also watch the video recording from our &lt;a href="http://www.ustream.tv/channel/dcpodcast"&gt;UStream.TV channel&lt;/a&gt;: &lt;a href="http://www.ustream.tv/recorded/7871511"&gt;DevCentral Podcast 137&lt;/a&gt;.&lt;/p&gt;          &lt;div id="dcpc137player" align="center" width="100%"&gt;&lt;a href="http://www.macromedia.com/go/getflashplayer"&gt;Get the Flash Player&lt;/a&gt; to see this player. &lt;/div&gt;          &lt;div align="center" width="100%"&gt;&lt;script language="javascript"&gt;&lt;!--

generateMP3Player("dcpc137player", "20100624-F5DevCentralPodcast-137.mp3");
//--&gt;&lt;/script&gt;&lt;/div&gt;          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5db41a73-2672-4fb5-aa33-3ba166b51e50" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/IPv6" rel="tag"&gt;IPv6&lt;/a&gt;,&lt;a href="http://technorati.com/tags/IPv4" rel="tag"&gt;IPv4&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DNS" rel="tag"&gt;DNS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Binary" rel="tag"&gt;Binary&lt;/a&gt;,&lt;a href="http://technorati.com/tags/pyControl" rel="tag"&gt;pyControl&lt;/a&gt;,&lt;a href="http://technorati.com/tags/GTM" rel="tag"&gt;GTM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin+Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jason+Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Joe+Pruitt" rel="tag"&gt;Joe Pruitt&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Scott+Koon" rel="tag"&gt;Scott Koon&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/dcpodcast/aggbug/1088348.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 24 Jun 2010 06:13:32 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dcpodcast/archive/2010/06/24/devcentral-weekly-podcast-137-ndash-next-week-will-be-hot.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral Weekly Podcast</dc:creator></item><item><title>DevCentral Weekly Podcast 136 &amp;ndash; How To Keep The Giant At Bay</title><link>http://devcentral.f5.com/weblogs/dcpodcast/archive/2010/06/17/devcentral-weekly-podcast-136-ndash-how-to-keep-the-giant.aspx</link><description>&lt;a href="http://devcentral.f5.com/media/audio/20100617-F5DevCentralPodcast-136.mp3"&gt; &lt;/a&gt;   &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" align="center"&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="320" height="260" id="utv820879" name="utv_n_840645"&gt;&lt;param name="flashvars" value="autoplay=false" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="src" value="http://www.ustream.tv/flash/video/7725054" /&gt;&lt;embed flashvars="autoplay=false" width="320" height="260" allowfullscreen="true" allowscriptaccess="always" id="utv820879" name="utv_n_840645" src="http://www.ustream.tv/flash/video/7725054" type="application/x-shockwave-flash" /&gt;&lt;/object&gt;&lt;/td&gt;        &lt;td&gt;   &lt;/td&gt;        &lt;td valign="top"&gt;&lt;img align="right" src="http://devcentral.f5.com/podcast/DC4-Podcast.jpg" width="90" height="90" /&gt;Welcome to the one hundred and thirty sixth edition of the DevCentral Weekly Roundtable Podcast!  A weekly recap of the interesting things that have been going on within the DevCentral community.           &lt;br /&gt;          &lt;br /&gt;Hosts: &lt;a href="http://devcentral.f5.com/weblogs/cwalker"&gt;Colin Walker&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/george"&gt;George Watkins&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/jason"&gt;Jason Rahm&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/joe"&gt;Joe Pruitt&lt;/a&gt;, and &lt;a href="http://devcentral.f5.com/weblogs/scott"&gt;Scott Koon&lt;/a&gt;.           &lt;p&gt;In this weeks podcast we welcomed George Watkins to the DevCentral team!  We discussed &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/52/afv/topic/aft/1172615/aff/31/showtab/groupforums/Default.aspx"&gt;Migration to GTM,&lt;/a&gt; &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/3/afv/topic/aft/1172459/aff/2089/showtab/groupforums/Default.aspx"&gt;Query iRule Priority Numbers&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/interviews/archive/2010/06/15/cio-conversation-john-matthews-on-intelligent-file-management.aspx"&gt;CIO Conversation with John Matthews&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/50/afv/topic/aft/1172621/aff/5/showtab/groupforums/Default.aspx"&gt;Correlation Numbers in iRules&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/50/afv/topic/aft/1172620/aff/5/showtab/groupforums/Default.aspx"&gt;iRule logging&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/Forums/tabid/1082223/asg/1/showtab/groupforums/aff/22/aft/1172286/afv/topic/Default.aspx"&gt;a fix in the iRule Editor&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/06/17/what-is-a-strategic-point-of-control-anyway.aspx"&gt;Strategic Points of Control&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/50/afv/topic/aft/1172601/aff/5/showtab/groupforums/Default.aspx"&gt;iRule Parsing Tricks&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/50/afv/topic/aft/1172237/aff/5/showtab/groupforums/Default.aspx"&gt;Cookie Based Connection Limiting&lt;/a&gt;, &lt;a href="http://blog.techstacks.com/2010/06/scanning-for-unsafe-urls.html"&gt;Scanning for Unsafe URLs&lt;/a&gt;, &lt;a href="http://www.linux-mag.com/id/7804"&gt;Firefox Losing Foothold&lt;/a&gt;, and &lt;a href="http://nerdtwilight.wordpress.com/2010/06/15/learning-from-f5s-success-against-cisco/"&gt;Learning from F5’s Success&lt;/a&gt;.&lt;/p&gt;          &lt;p&gt;All of the links from this recording can be found with the &lt;a href="http://delicious.com/devcentral/dcpodcast136"&gt;dcpodcast136&lt;/a&gt; tag at Delicious.com.  You can also watch the video recording from our &lt;a href="http://www.ustream.tv/channel/dcpodcast"&gt;UStream.TV channel&lt;/a&gt;: &lt;a href="http://www.ustream.tv/recorded/7725054"&gt;DevCentral Podcast 136&lt;/a&gt;.&lt;/p&gt;          &lt;div id="dcpc136player" align="center" width="100%"&gt;&lt;a href="http://www.macromedia.com/go/getflashplayer"&gt;Get the Flash Player&lt;/a&gt; to see this player. &lt;/div&gt;          &lt;div align="center" width="100%"&gt;&lt;script language="javascript"&gt;&lt;!--

generateMP3Player("dcpc136player", "20100617-F5DevCentralPodcast-136.mp3");
//--&gt;&lt;/script&gt;&lt;/div&gt;          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7fcb3d9d-c1d8-4fd8-8a81-9ef77f3f0b40" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/GTM" rel="tag"&gt;GTM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/CIO" rel="tag"&gt;CIO&lt;/a&gt;,&lt;a href="http://technorati.com/tags/John+Matthews" rel="tag"&gt;John Matthews&lt;/a&gt;,&lt;a href="http://technorati.com/tags/logging" rel="tag"&gt;logging&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRule+Editor" rel="tag"&gt;iRule Editor&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Cookies" rel="tag"&gt;Cookies&lt;/a&gt;,&lt;a href="http://technorati.com/tags/URLs" rel="tag"&gt;URLs&lt;/a&gt;,&lt;a href="http://technorati.com/tags/FireFox" rel="tag"&gt;FireFox&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin+Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;,&lt;a href="http://technorati.com/tags/George+Watkins" rel="tag"&gt;George Watkins&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jason+Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Joe+Pruitt" rel="tag"&gt;Joe Pruitt&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Scott+Koon" rel="tag"&gt;Scott Koon&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/dcpodcast/aggbug/1088332.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 17 Jun 2010 06:14:18 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dcpodcast/archive/2010/06/17/devcentral-weekly-podcast-136-ndash-how-to-keep-the-giant.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral Weekly Podcast</dc:creator></item><item><title>CIO Conversation &amp;ndash; John Matthews On Intelligent File Management</title><link>http://devcentral.f5.com/weblogs/interviews/archive/2010/06/15/cio-conversation-john-matthews-on-intelligent-file-management.aspx</link><description>&lt;a href="http://devcentral.f5.com/media/audio/20100615-JohnMatthewsARXPodcast.mp3"&gt; &lt;/a&gt;
&lt;table cellspacing="0" cellpadding="0" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td align="center" valign="top"&gt;&lt;img height="300" border="0" width="300" src="http://devcentral.f5.com/podcast/DC4-Interviews.jpg" alt="" /&gt;&lt;/td&gt;
            &lt;td&gt;   &lt;/td&gt;
            &lt;td valign="top"&gt;
            &lt;p&gt;IT organizations in every industry face a common set of challenges as they work to keep the business up and running. Like many companies, F5 Networks was experiencing a host of problems related to the rapid growth of unstructured file data. Spending on storage was rising quarterly, routine management tasks required frequent user interruptions and backups were taking 96 hours to complete.&lt;/p&gt;
            &lt;p&gt;After adding the ARX technology to its product portfolio via an acquisition, F5 put the solution to work in its own environment. Listen to this podcast to hear F5 CIO and Vice President of IT John Matthews explain how the ARX solution enabled the company to dramatically reduce storage costs, even as data storage continued to grow. Through the use of intelligent file management, the IT team slashed backup times to just 4 hours. Downtime is a rare occurrence instead of a regular event, and the IT organization was able to introduce vendor diversity into its environment. The icing on the cake for a CIO? An ROI of less than 4 months. &lt;/p&gt;
            &lt;p&gt; &lt;/p&gt;
            &lt;center&gt;
            &lt;div align="center" width="100%" id="dci56player"&gt;&lt;a href="http://www.macromedia.com/go/getflashplayer"&gt;Get the Flash Player&lt;/a&gt; to see this player. &lt;/div&gt;
            &lt;script language="javascript"&gt;&lt;!--
generateMP3Player("dci56player", "20100615-JohnMatthewsARXPodcast.mp3");
//--&gt;&lt;/script&gt;&lt;/center&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:af68a479-d51b-4f26-b0cd-7143dae4bf0a" style="padding: 0px; margin: 0px; display: inline; float: none;"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/F5"&gt;F5&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/DevCentral"&gt;DevCentral&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/ARX"&gt;ARX&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/File+Virtualization"&gt;File Virtualization&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Storage"&gt;Storage&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/John+Matthews"&gt;John Matthews&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/interviews/aggbug/1090141.aspx" width="1" height="1" /&gt;</description><pubDate>Tue, 15 Jun 2010 06:06:52 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/interviews/archive/2010/06/15/cio-conversation-john-matthews-on-intelligent-file-management.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral Interview</dc:creator></item><item><title>DevCentral Weekly Podcast 135 &amp;ndash; Sweating in Nola</title><link>http://devcentral.f5.com/weblogs/dcpodcast/archive/2010/06/10/devcentral-weekly-podcast-135-ndash-sweating-in-nola.aspx</link><description>&lt;a href="http://devcentral.f5.com/media/audio/20100610-F5DevCentralPodcast-135.mp3"&gt; &lt;/a&gt;   &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" align="center"&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="320" height="260" id="utv950716" name="utv_n_309748"&gt;&lt;param name="flashvars" value="autoplay=false" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="src" value="http://www.ustream.tv/flash/video/7570610" /&gt;&lt;embed flashvars="autoplay=false" width="320" height="260" allowfullscreen="true" allowscriptaccess="always" id="utv950716" name="utv_n_309748" src="http://www.ustream.tv/flash/video/7570610" type="application/x-shockwave-flash" /&gt;&lt;/object&gt;&lt;/td&gt;        &lt;td&gt;   &lt;/td&gt;        &lt;td valign="top"&gt;&lt;img align="right" src="http://devcentral.f5.com/podcast/DC4-Podcast.jpg" width="90" height="90" /&gt;Welcome to the one hundred and thirty fifth edition of the DevCentral Weekly Roundtable Podcast!  A weekly recap of the interesting things that have been going on within the DevCentral community.           &lt;br /&gt;          &lt;br /&gt;Hosts: &lt;a href="http://devcentral.f5.com/weblogs/cwalker"&gt;Colin Walker&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/jason"&gt;Jason Rahm&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/joe"&gt;Joe Pruitt&lt;/a&gt;, and &lt;a href="http://devcentral.f5.com/weblogs/scott"&gt;Scott Koon&lt;/a&gt;.           &lt;p&gt;In this weeks podcast we discussed Jason’s &lt;a href="http://devcentral.f5.com/weblogs/jason/archive/2010/06/08/live-from-microsoft-tech-ed-day-two.aspx"&gt;first&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/jason/archive/2010/06/10/live-from-microsoft-tech-ed-final-day.aspx"&gt;conference&lt;/a&gt; as an F5 employee at TechEd New Orleans, &lt;a href="http://devcentral.f5.com/weblogs/rkorock/archive/2010/06/08/1088316.aspx"&gt;a blog post&lt;/a&gt; about our &lt;a href="http://devcentral.f5.com/wiki/default.aspx/iRules/MicrosoftBranchCacheHashOffload.html"&gt;Microsoft BranchCache iRule&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084379/Automated-Gomez-Performance-Monitoring-Part-2-ndash-DataCenter-Identification.aspx"&gt;Gomez Automated Perfomance Monitoring with Datacenter Identification&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/Forums/tabid/1082223/asg/50/showtab/groupforums/aff/5/aft/1172558/afv/topic/Default.aspx"&gt;Stream expressions from Data Groups&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/2/afv/topic/aft/1172535/aff/2087/showtab/groupforums/Default.aspx"&gt;Java iControl Sources&lt;/a&gt;, and our &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/69/afv/topic/aft/1172577/aff/2281/showtab/groupforums/Default.aspx"&gt;new F5 Careers topic group&lt;/a&gt;.&lt;/p&gt;          &lt;p&gt;All of the links from this recording can be found with the &lt;a href="http://delicious.com/devcentral/dcpodcast135"&gt;dcpodcast135&lt;/a&gt; tag at Delicious.com.  You can also watch the video recording from our &lt;a href="http://www.ustream.tv/channel/dcpodcast"&gt;UStream.TV channel&lt;/a&gt;: &lt;a href="http://www.ustream.tv/recorded/7570610"&gt;DevCentral Podcast 135&lt;/a&gt;.&lt;/p&gt;          &lt;div id="dcpc135player" align="center" width="100%"&gt;&lt;a href="http://www.macromedia.com/go/getflashplayer"&gt;Get the Flash Player&lt;/a&gt; to see this player. &lt;/div&gt;          &lt;div align="center" width="100%"&gt;&lt;script language="javascript"&gt;&lt;!--

generateMP3Player("dcpc135player", "20100610-F5DevCentralPodcast-135.mp3");
//--&gt;&lt;/script&gt;&lt;/div&gt;          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:01cac399-f282-453a-80d2-22cbbfd0e88f" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TechEd" rel="tag"&gt;TechEd&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/BranchCache" rel="tag"&gt;BranchCache&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Gomez" rel="tag"&gt;Gomez&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Datacenter" rel="tag"&gt;Datacenter&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Stream+Profile" rel="tag"&gt;Stream Profile&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Data+Groups" rel="tag"&gt;Data Groups&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Java" rel="tag"&gt;Java&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iControl" rel="tag"&gt;iControl&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Careers" rel="tag"&gt;Careers&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin+Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jason+Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Joe+Pruitt" rel="tag"&gt;Joe Pruitt&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Scott+Koon" rel="tag"&gt;Scott Koon&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/dcpodcast/aggbug/1090139.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 10 Jun 2010 06:03:45 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dcpodcast/archive/2010/06/10/devcentral-weekly-podcast-135-ndash-sweating-in-nola.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral Weekly Podcast</dc:creator></item><item><title>Automated Gomez Performance Monitoring Part 2 &amp;ndash; DataCenter Identification</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084379/Automated-Gomez-Performance-Monitoring-Part-2-ndash-DataCenter-Identification.aspx</link><description>&lt;script type="text/javascript" src="/DesktopModules/itcMetaPost/js/ca0c21fbdc85f6a1597417732d450607.ashx?hs=1"&gt;&lt;/script&gt;&lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/Joe/2010/Jun/WLW-AutomatedGomezPerformanceMonitoringPart2_BEA4-gomez_solutions_2.jpg"  class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'ea029a1c'})" &gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 10px 10px; display: inline; border-top: 0px; border-right: 0px" title="gomez_solutions" border="0" alt="gomez_solutions" title="gomez_solutions" align="right" src="/Portals/0/images/metapost/News-Articles/Joe/2010/Jun/WLW-AutomatedGomezPerformanceMonitoringPart2_BEA4-gomez_solutions_thumb.jpg" width="244" height="162" /&gt;&lt;/a&gt; In my previous article titled “&lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084373/Automated-Gomez-Performance-Monitoring.aspx"&gt;Automated Gomez Performance Monitoring&lt;/a&gt;”, I gave an overview of &lt;a href="http://gomez.com/"&gt;Gomez&lt;/a&gt; and the partnership between F5 Networks and Gomez to assist users of both technologies to integrate the two together.&amp;#160; &lt;/p&gt;  &lt;p&gt;In that article, I illustrated how to use iRules to serve up the Gomez bootstrap JavaScript code eliminating the need to install in on a backend web server. The iRule is also used to automatically inject the client side JavaScript into the response stream for your webpages.&amp;#160; &lt;/p&gt;  &lt;p&gt;The iRule is completely standalone and requires no knowledge of how your web applications are configured or where they are located.&amp;#160; You simply apply the iRule to the virtual server fronting your applications and Gomez takes care of the rest by organizing the requests by the URLs of your pages.&amp;#160; The Gomez JavaScript looked like this:&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &amp;lt;SCRIPT LANGUAGE=&lt;span style="color: #006080"&gt;&amp;quot;JavaScript&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;!--&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; var gomez={gs: new Date().getTime(), acctId:&lt;span style="color: #006080"&gt;'XXXXXX'&lt;/span&gt;, pgId:&lt;span style="color: #006080"&gt;''&lt;/span&gt;, &lt;strong&gt;grpId:&lt;span style="color: #006080"&gt;''&lt;/span&gt;&lt;/strong&gt;};&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color: #008000"&gt;//--&amp;gt;&amp;lt;/SCRIPT&amp;gt; &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; &amp;lt;script src=&lt;span style="color: #006080"&gt;&amp;quot;/js/axfTag.js&amp;quot;&lt;/span&gt; type=&lt;span style="color: #006080"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The only configuration change needed in the iRule was to set the Gomez Account Id in the “acctId” parameter.&amp;#160; But, you may notice there are two additional parameters in there that I didn’t use.&amp;#160; The first one is the Page Identifier (pgId) which I will discuss in a future article.&amp;#160; What I will discuss here is the Group Identifier (grpId).&amp;#160; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Group Identifer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On problem with performance testing when you are running a multi-datacenter infrastructure using the same domain name, like we are here at devcentral.f5.com, is that when you look at your reports, all application requests will show up on the same graph.&amp;#160; If you are having a datacenter specific issue, it is not easy to narrow down where the bottleneck occurs as the reports will treat all requests as a single application.&lt;/p&gt;

&lt;p&gt;The Group Identifier property allows you to give one additional search criteria to the Gomez reporting system.&amp;#160; It would make perfect sense to use this feature to mark the application request to a given datacenter, or even to a given virtual server and that is exactly what we did on our implementation.&amp;#160; We run DevCentral.f5.com out of multiple data centers for redundancy.&amp;#160; And top top that off, within the datacenters, we have multiple virtual servers running the application.&amp;#160; We have production virtuals with WebAccelerator and development virtuals without the web optimization features enabled.&amp;#160; Since the iRule is running in the network layer and has information about the client side of the connection, it was very straightforward to build a lookup table that mapped the client side address to a specific virtual server.&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; GOMEZ_GROUPID_LIST [&lt;span style="color: #0000ff"&gt;list&lt;/span&gt; \&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;   &lt;span style="color: #006080"&gt;&amp;quot;xxx.xxx.xxx.1 DC_PRD_DC1&amp;quot;&lt;/span&gt; \&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;   &lt;span style="color: #006080"&gt;&amp;quot;xxx.xxx.xxx.2 DC_PRD_DC2_C1&amp;quot;&lt;/span&gt; \&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;   &lt;span style="color: #006080"&gt;&amp;quot;xxx.xxx.xxx.3 DC_PRD_DC2_C2&amp;quot;&lt;/span&gt; \&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;   &lt;span style="color: #006080"&gt;&amp;quot;xxx.xxx.xxx.4 DC_PRD_DC2_C2_NO_WAM&amp;quot;&lt;/span&gt; \&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;   &lt;span style="color: #006080"&gt;&amp;quot;xxx.xxx.xxx.5 DC_PRD_DC3&amp;quot;&lt;/span&gt; \&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;   &lt;span style="color: #006080"&gt;&amp;quot;xxx.xxx.xxx.6 DC_DEV_DC1&amp;quot;&lt;/span&gt; \&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;   &lt;span style="color: #006080"&gt;&amp;quot;xxx.xxx.xxx.8 DC_DEV_DC2&amp;quot;&lt;/span&gt; \&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;   &lt;span style="color: #006080"&gt;&amp;quot;xxx.xxx.xxx.9 DC_STG_DC1&amp;quot;&lt;/span&gt; \&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt; ];&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; gomez_group_id [&lt;span style="color: #0000ff"&gt;findclass&lt;/span&gt; ]&lt;span style="color: #0000ff"&gt;IP::local_addr&lt;/span&gt;[ $::GOMEZ_GROUPID_LIST &lt;span style="color: #006080"&gt;&amp;quot; &amp;quot;&lt;/span&gt;]&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;In addition to targeting production virtuals, we were also able to target internal development systems so that they run the Gomez injection tests and then be excluded from the final reports.&lt;/p&gt;

&lt;p&gt;The above code builds a lookup table (replace xxx.xxx.xxx.xxx with your local ip addresses for your given virtual servers).&amp;#160; Then the findclass method is used to lookup the address and return a user friendly name for the data center.&lt;/p&gt;

&lt;p&gt;Once the user friendly group name is found, it can be included with the above JavaScript by the following code:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; gomez_client [&lt;span style="color: #0000ff"&gt;subst&lt;/span&gt; {&amp;lt;SCRIPT LANGUAGE=&lt;span style="color: #006080"&gt;&amp;quot;JavaScript&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;!--&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; var gomez={gs: new Date().getTime(), acctId:&lt;span style="color: #006080"&gt;'XXXXXX'&lt;/span&gt;, pgId:&lt;span style="color: #006080"&gt;''&lt;/span&gt;, grpId:&lt;span style="color: #006080"&gt;'$gomez_group_id'&lt;/span&gt;};&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color: #008000"&gt;//--&amp;gt;&amp;lt;/SCRIPT&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; &amp;lt;script src=&lt;span style="color: #006080"&gt;&amp;quot;/js/axfTag.js&amp;quot;&lt;/span&gt; type=&lt;span style="color: #006080"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; } ];&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;You’ll notice I had to throw a “subst” command around the code snippet so that TCL would correctly replace the value of the $gomez_group_id variable in the gomez_client variable.&amp;#160; After this, the iRule is the same as in &lt;a href="/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084373/Automated-Gomez-Performance-Monitoring.aspx"&gt;the previous example&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you are running a multi-datacenter environment and would like to enable Gomez performance monitoring to your applications, this iRule be all you need to help you target down datacenter specific issues with your application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Download&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can download the full script in the &lt;a href="/Wiki/default.aspx/iRules.CodeShare"&gt;iRules CodeShare&lt;/a&gt; under &lt;a href="/wiki/default.aspx/iRules/GomezInjectionWithGroupId.html"&gt;GomezInjectionWithGroupId&lt;/a&gt;.&lt;/p&gt;&lt;div class="d_itc_f" style="clear:both;height:11px;"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;</description><pubDate>Mon, 07 Jun 2010 13:34:22 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084379/Automated-Gomez-Performance-Monitoring-Part-2-ndash-DataCenter-Identification.aspx#Comments</comments><slash:comments>1</slash:comments><dc:creator>Joe</dc:creator></item><item><title>DevCentral Weekly Roundup Episode 134 &amp;ndash; Blogizing The Tutorials</title><link>http://devcentral.f5.com/weblogs/dcpodcast/archive/2010/06/03/devcentral-weekly-roundup-episode-134-ndash-blogizing-the-tutorials.aspx</link><description>&lt;a href="http://devcentral.f5.com/media/audio/20100603-F5DevCentralPodcast-134.mp3"&gt; &lt;/a&gt;   &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" align="center"&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="320" height="260" id="utv354808" name="utv_n_694258"&gt;&lt;param name="flashvars" value="autoplay=false" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="src" value="http://www.ustream.tv/flash/video/7420511" /&gt;&lt;embed flashvars="autoplay=false" width="320" height="260" allowfullscreen="true" allowscriptaccess="always" id="utv354808" name="utv_n_694258" src="http://www.ustream.tv/flash/video/7420511" type="application/x-shockwave-flash" /&gt;&lt;/object&gt;&lt;/td&gt;        &lt;td&gt;   &lt;/td&gt;        &lt;td valign="top"&gt;&lt;img align="right" src="http://devcentral.f5.com/podcast/DC4-Podcast.jpg" width="90" height="90" /&gt;Welcome to the one hundred and thirty forth edition of the DevCentral Weekly Roundtable Podcast!  A weekly recap of the interesting things that have been going on within the DevCentral community.           &lt;br /&gt;          &lt;br /&gt;Hosts: &lt;a href="http://devcentral.f5.com/weblogs/cwalker"&gt;Colin Walker&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/jason"&gt;Jason Rahm&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/jeffb"&gt;Jeff Browning&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/joe"&gt;Joe Pruitt&lt;/a&gt;, and &lt;a href="http://devcentral.f5.com/weblogs/scott"&gt;Scott Koon&lt;/a&gt;.           &lt;p&gt;In this weeks podcast we discussed &lt;a href="http://devcentral.f5.com/weblogs/tutorials/Default.aspx"&gt;Blogizing The Tutorials&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/05/28/f5-friday-i-found-the-infrastructure-beef.aspx"&gt;The Infrastructure Beef&lt;/a&gt;, &lt;a href="http://www.f5.com/pdf/solution-center/f5-microsoft-virtualization-guide.pdf"&gt;F5 Microsoft Virtualization Guide&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2010/05/27/the-problem-with-storage-growth-is-that-no-one-is.aspx"&gt;The Problem with Storage Growth&lt;/a&gt;, a few posts by &lt;a href="http://www.thef5guy.com/"&gt;The F5 Guy&lt;/a&gt; on &lt;a href="http://www.thef5guy.com/blog/2010/04/f5-networks-asm-10-x-training/"&gt;ASM Training&lt;/a&gt;, and &lt;a href="http://www.thef5guy.com/blog/2010/03/f5-networks-the-box-of-awesomenes/"&gt;The Box of Awesomeness&lt;/a&gt;, &lt;a href="http://devcentral.f5.com/wiki/default.aspx/iControl/f5poolmgr.html"&gt;f5poolmgr&lt;/a&gt;, iControl SDK 10.2 &lt;a href="http://devcentral.f5.com/wiki/default.aspx/iControl/F5Downloads.html"&gt;downloads&lt;/a&gt; and &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/2/aff/2106/afv/topicsview/showtab/groupforums/Default.aspx"&gt;.NET Assembly&lt;/a&gt;, and a &lt;a href="http://docs.cacti.net/usertemplate:host:f5:bigip"&gt;new Cacti Template for F5&lt;/a&gt;.&lt;/p&gt;          &lt;p&gt;Oh, and stop by the F5 Booth at &lt;a href="http://www.microsoft.com/events/techednorthamerica/"&gt;Microsoft TechEd 2010&lt;/a&gt; in New Orleans 6/7-10 and say hi to &lt;a href="http://devcentral.f5.com/weblogs/jason"&gt;Jason&lt;/a&gt;!&lt;/p&gt;          &lt;p&gt;All of the links from this recording can be found with the &lt;a href="http://delicious.com/devcentral/dcpodcast134"&gt;dcpodcast134&lt;/a&gt; tag at Delicious.com.  You can also watch the video recording from our &lt;a href="http://www.ustream.tv/channel/dcpodcast"&gt;UStream.TV channel&lt;/a&gt;: &lt;a href="http://www.ustream.tv/recorded/7420511"&gt;DevCentral Podcast 134&lt;/a&gt;.&lt;/p&gt;          &lt;div id="dcpc134player" align="center" width="100%"&gt;&lt;a href="http://www.macromedia.com/go/getflashplayer"&gt;Get the Flash Player&lt;/a&gt; to see this player. &lt;/div&gt;          &lt;div align="center" width="100%"&gt;&lt;script language="javascript"&gt;&lt;!--

generateMP3Player("dcpc134player", "20100603-F5DevCentralPodcast-134.mp3");
//--&gt;&lt;/script&gt;&lt;/div&gt;          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4a42725f-8764-4fee-8c95-fb7dfc085e6e" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Tutorials" rel="tag"&gt;Tutorials&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Infrastructure" rel="tag"&gt;Infrastructure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Virtualization" rel="tag"&gt;Virtualization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Storage" rel="tag"&gt;Storage&lt;/a&gt;,&lt;a href="http://technorati.com/tags/The+F5+Guy" rel="tag"&gt;The F5 Guy&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ASM" rel="tag"&gt;ASM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iControl" rel="tag"&gt;iControl&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Cacti" rel="tag"&gt;Cacti&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin+Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jason+Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jeff+Browning" rel="tag"&gt;Jeff Browning&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Joe+Pruitt" rel="tag"&gt;Joe Pruitt&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Scott+Koon" rel="tag"&gt;Scott Koon&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/dcpodcast/aggbug/1088309.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 03 Jun 2010 06:09:02 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/dcpodcast/archive/2010/06/03/devcentral-weekly-roundup-episode-134-ndash-blogizing-the-tutorials.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral Weekly Podcast</dc:creator></item><item><title>Tutorial: Remove iRules from Virtual Servers with Tmsh</title><link>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-remove-irules-from-virtual-servers-with-tmsh.aspx</link><description>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/OHWGukAttSI&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/OHWGukAttSI&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385" /&gt;&lt;/object&gt;  &lt;p&gt;The companion article for this video &lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084374/Rapid-iRule-Removal-via-Tmsh-Script.aspx" target="_blank"&gt;can be found here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/Tutorials/aggbug/1088300.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 31 May 2010 21:42:07 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-remove-irules-from-virtual-servers-with-tmsh.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral</dc:creator></item><item><title>Tutorial: Site Navigation Overview</title><link>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-site-navigation-overview.aspx</link><description>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/kMrUbOyBfCo&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/kMrUbOyBfCo&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385" /&gt;&lt;/object&gt;&lt;img src="http://devcentral.f5.com/weblogs/Tutorials/aggbug/1088299.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 31 May 2010 21:39:43 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-site-navigation-overview.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral</dc:creator></item><item><title>Tutorial: Vim iRule Editor Customizations</title><link>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-vim-irule-editor-customizations.aspx</link><description>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/2YstOSowWn4&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/2YstOSowWn4&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385" /&gt;&lt;/object&gt;&lt;img src="http://devcentral.f5.com/weblogs/Tutorials/aggbug/1088298.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 31 May 2010 21:38:35 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-vim-irule-editor-customizations.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral</dc:creator></item><item><title>Tutorial: Where Did the Forums Go?</title><link>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-where-did-the-forums-go.aspx</link><description>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/OY1F012lDww&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/OY1F012lDww&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385" /&gt;&lt;/object&gt;&lt;img src="http://devcentral.f5.com/weblogs/Tutorials/aggbug/1088297.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 31 May 2010 21:37:21 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-where-did-the-forums-go.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral</dc:creator></item><item><title>Tutorial: Where are the Lab Projects?</title><link>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-where-are-the-lab-projects.aspx</link><description>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ox2e_qbjYEo&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/ox2e_qbjYEo&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385" /&gt;&lt;/object&gt;&lt;img src="http://devcentral.f5.com/weblogs/Tutorials/aggbug/1088296.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 31 May 2010 21:36:37 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-where-are-the-lab-projects.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral</dc:creator></item><item><title>Tutorial: Posting to the Forums</title><link>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-posting-to-the-forums.aspx</link><description>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/xlGkwa3vkNs&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/xlGkwa3vkNs&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385" /&gt;&lt;/object&gt;&lt;img src="http://devcentral.f5.com/weblogs/Tutorials/aggbug/1088295.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 31 May 2010 21:34:58 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-posting-to-the-forums.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral</dc:creator></item><item><title>Tutorial: Vim iRule Editor Ubuntu Installation</title><link>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-vim-irule-editor-ubuntu-installation.aspx</link><description>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/1t8FxHRWGsw&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/1t8FxHRWGsw&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385" /&gt;&lt;/object&gt;&lt;img src="http://devcentral.f5.com/weblogs/Tutorials/aggbug/1088294.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 31 May 2010 21:32:58 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-vim-irule-editor-ubuntu-installation.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral</dc:creator></item><item><title>Tutorial: Providing Feedback</title><link>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-providing-feedback.aspx</link><description>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/NuvCr4RBq5M&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/NuvCr4RBq5M&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385" /&gt;&lt;/object&gt;&lt;img src="http://devcentral.f5.com/weblogs/Tutorials/aggbug/1088293.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 31 May 2010 21:31:38 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-providing-feedback.aspx#comment</comments><slash:comments>2</slash:comments><dc:creator>DevCentral</dc:creator></item><item><title>Tutorial: Vim iRule Editor Usage</title><link>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-vim-irule-editor-usage.aspx</link><description>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/AqU0xkPcgXc&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/AqU0xkPcgXc&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385" /&gt;&lt;/object&gt;&lt;img src="http://devcentral.f5.com/weblogs/Tutorials/aggbug/1088292.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 31 May 2010 21:30:44 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-vim-irule-editor-usage.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral</dc:creator></item><item><title>Tutorial: Configuring Jing Pro for Screencast Contributions to DevCentral</title><link>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-configuring-jing-pro-for-screencast-contributions-to-devcentral.aspx</link><description>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/TcG5a20R7jI&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/TcG5a20R7jI&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385" /&gt;&lt;/object&gt;&lt;img src="http://devcentral.f5.com/weblogs/Tutorials/aggbug/1088291.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 31 May 2010 21:28:56 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-configuring-jing-pro-for-screencast-contributions-to-devcentral.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral</dc:creator></item><item><title>Tutorial: Configuring Windows Live Writer for Tech Tips</title><link>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-configuring-windows-live-writer-for-tech-tips.aspx</link><description>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/doIf1VxK0fs&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/doIf1VxK0fs&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385" /&gt;&lt;/object&gt;&lt;img src="http://devcentral.f5.com/weblogs/Tutorials/aggbug/1088290.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 31 May 2010 21:26:40 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-configuring-windows-live-writer-for-tech-tips.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral</dc:creator></item><item><title>Tutorial: Contributing a Tech Tip</title><link>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-contributing-a-tech-tip.aspx</link><description>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/doIf1VxK0fs&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/doIf1VxK0fs&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385" /&gt;&lt;/object&gt;&lt;img src="http://devcentral.f5.com/weblogs/Tutorials/aggbug/1088289.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 31 May 2010 21:25:56 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-contributing-a-tech-tip.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral</dc:creator></item><item><title>Tutorial: Group Social Features</title><link>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-group-social-features.aspx</link><description>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/7vXYkAkapq0&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/7vXYkAkapq0&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385" /&gt;&lt;/object&gt;&lt;img src="http://devcentral.f5.com/weblogs/Tutorials/aggbug/1088288.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 31 May 2010 21:24:45 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-group-social-features.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral</dc:creator></item><item><title>Tutorial: Finding Groups</title><link>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-finding-groups.aspx</link><description>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/TRXvzK4lBv8&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/TRXvzK4lBv8&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385" /&gt;&lt;/object&gt;&lt;img src="http://devcentral.f5.com/weblogs/Tutorials/aggbug/1088287.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 31 May 2010 21:23:26 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-finding-groups.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral</dc:creator></item><item><title>Tutorial: What&amp;rsquo;s a Group?</title><link>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-whatrsquos-a-group.aspx</link><description>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/8kqM0uwIjGs&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/8kqM0uwIjGs&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385" /&gt;&lt;/object&gt;&lt;img src="http://devcentral.f5.com/weblogs/Tutorials/aggbug/1088286.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 31 May 2010 21:22:11 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-whatrsquos-a-group.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral</dc:creator></item><item><title>Tutorial: Customizing your Forum Experience</title><link>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-customizing-your-forum-experience.aspx</link><description>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/aJAgZUZVCBU&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/aJAgZUZVCBU&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385" /&gt;&lt;/object&gt;&lt;img src="http://devcentral.f5.com/weblogs/Tutorials/aggbug/1088285.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 31 May 2010 21:21:03 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/tutorial-customizing-your-forum-experience.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral</dc:creator></item><item><title>The DevCentral Homepage</title><link>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/the-devcentral-homepage.aspx</link><description>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/YzEW87pbqXU&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/YzEW87pbqXU&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385" /&gt;&lt;/object&gt;&lt;img src="http://devcentral.f5.com/weblogs/Tutorials/aggbug/1088284.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 31 May 2010 21:20:00 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/the-devcentral-homepage.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral</dc:creator></item><item><title>DevCentral Top Contributors</title><link>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/devcentral-top-contributors.aspx</link><description>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/f-RAEKrOD14&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/f-RAEKrOD14&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385" /&gt;&lt;/object&gt;&lt;img src="http://devcentral.f5.com/weblogs/Tutorials/aggbug/1088283.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 31 May 2010 21:18:47 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/devcentral-top-contributors.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral</dc:creator></item><item><title>5-Minute iRules Tutorial: Variables</title><link>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/5-minute-irules-tutorial-variables.aspx</link><description>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/IZEodVdqSNQ&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/IZEodVdqSNQ&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385" /&gt;&lt;/object&gt;&lt;img src="http://devcentral.f5.com/weblogs/Tutorials/aggbug/1088282.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 31 May 2010 21:17:06 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/Tutorials/archive/2010/06/01/5-minute-irules-tutorial-variables.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>DevCentral</dc:creator></item><item><title>Writing to and rotating custom log files</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084377/Writing-to-and-rotating-custom-log-files.aspx</link><description>&lt;p&gt;&lt;font size="2"&gt;Sometimes I need to log information from iRules to debug something. So I add a simple log statement, like this:&lt;/font&gt;&lt;/p&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;strong&gt;&lt;font color="#ff0000" size="2"&gt;when HTTP_REQUEST {&lt;br /&gt;
&amp;#160; if { [HTTP::uri] equals "/secure" } {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; log local0. "[IP::remote_addr] attempted to access /secure"&lt;br /&gt;
&amp;#160; }&lt;br /&gt;
}&lt;/font&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;br /&gt;
&lt;font size="2"&gt;This is fine, but it clutters up the &lt;i&gt;/var/log/ltm&lt;/i&gt; log file. Ideally I want to log this information into a separate log file. To accomplish this, I first change the log statement to incorporate a custom string - I chose the string "##":&lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;strong&gt;&lt;font color="#ff0000" size="2"&gt;when HTTP_REQUEST {&lt;br /&gt;
&amp;#160; if { [HTTP::uri] equals "/secure" } {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; log local0. "##[IP::remote_addr] attempted to access /secure"&lt;br /&gt;
&amp;#160; }&lt;br /&gt;
}&lt;/font&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;br /&gt;
&lt;font size="2"&gt;Now I have to customize syslog to catch this string, and send it somewhere other than &lt;i&gt;/var/log/ltm&lt;/i&gt;. I do this by customizing syslog with an include statement:&lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;font color="#ff0000" size="2"&gt;&lt;strong&gt;tmsh modify sys syslog include '"&lt;br /&gt;
filter f_local0 {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; facility(local0) and not match(\": ##\");&lt;br /&gt;
};&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;font color="#ff0000" size="2"&gt;&lt;strong&gt;filter f_local0_customlog {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; facility(local0) and match(\": ##\");&lt;br /&gt;
};&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;font color="#ff0000" size="2"&gt;&lt;strong&gt;destination d_customlog {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; file(\"/var/log/customlog\" create_dirs(yes));&lt;br /&gt;
};&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;strong&gt;&lt;font color="#ff0000" size="2"&gt;log {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; source(local);&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; filter(f_local0_customlog);&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; destination(d_customlog);&lt;br /&gt;
};&lt;br /&gt;
"'&lt;/font&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;save the configuration change:&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;strong&gt;&lt;font size="2"&gt;&lt;font color="#ff0000"&gt;tmsh save / sys config&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;and restarting the syslog-ng service:&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;strong&gt;&lt;font size="2"&gt;&lt;font color="#ff0000"&gt;tmsh restart sys service syslog-ng&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;The included "&lt;i&gt;f_local0&lt;/i&gt;" filter overrides the built-in "&lt;i&gt;f_local0&lt;/i&gt;" syslog-ng filter, since the &lt;i&gt;include&lt;/i&gt; statement will be the last one to load. The "&lt;i&gt;not match&lt;/i&gt;" statement is regex which will prevent any statement containing a “##” string from being written to the &lt;i&gt;/var/log/ltm&lt;/i&gt; log. The next filter,&amp;#160;"&lt;i&gt;f_local0_customlog&lt;/i&gt;", catches the "##" log statement and the remaining &lt;i&gt;include&lt;/i&gt; statements handle the job of sending them to a new destination which is a file I chose to name "&lt;i&gt;/var/log/customlog&lt;/i&gt;".&lt;br /&gt;
&lt;br /&gt;
You may be asking yourself why I chose to match the string ": ##" instead of just "##". It turns out that specifying just "##" also catches AUDIT log entries which (in my configuration) are written every time an iRule with the string "##" is modified. But only the log statement from the actual iRule itself will contain the ": ##" string. This slight tweak keeps those two entries separated from each other. &lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;br /&gt;
&lt;font size="2"&gt;So now I have a way to force my iRule logging statements to a custom log file. This is great, but how do I incorporate this custom log file into the log rotation scheme like most other log files? The answer is with a logrotate include statement:&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;br /&gt;
&lt;strong&gt;&lt;font color="#ff0000" size="2"&gt;tmsh modify sys log-rotate syslog-include '"&lt;br /&gt;
/var/log/customlog {&lt;br /&gt;
&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; compress&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; missingok&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; notifempty&lt;br /&gt;
}"'&lt;/span&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;and save the configuration change:&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;strong&gt;&lt;font color="#ff0000" size="2"&gt;tmsh save / sys config&lt;/font&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;Logrotate is kicked off by cron, and the change should get picked up the next time it is scheduled to run.&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;And that's it. I now have a way to force iRule log statements to a custom log file which is rotated just like every other log file. It’s important to note that you must save the configuration with "&lt;strong&gt;&lt;font color="#ff0000"&gt;tmsh save / sys config&lt;/font&gt;&lt;/strong&gt;" whenever you execute an include statement. If you don't, your changes will be lost then next time your configuration is loaded. That's why I think this solution is so great - it's visible in the bigip_sys.conf file -&amp;#160;not like customizing configuration files directly. And it's portable.&lt;/font&gt;&lt;/div&gt;</description><pubDate>Thu, 27 May 2010 11:27:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084377/Writing-to-and-rotating-custom-log-files.aspx#Comments</comments><slash:comments>2</slash:comments><dc:creator>smp</dc:creator></item><item><title>Problems Overcome During a Major LTM Software/Hardware Upgrade</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084376/Problems-Overcome-During-a-Major-LTM-SoftwareHardware-Upgrade.aspx</link><description>&lt;p&gt;&lt;font size="2"&gt;I recently completed a successful major LTM hardware and software migration which accomplished two high-level goals:&lt;/font&gt;&amp;#160;&lt;/p&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in"&gt;&lt;span&gt;&lt;font size="2"&gt;·&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;font size="2"&gt;Software upgrade from v9.3.1HF8 to v10.1.0HF1&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in"&gt;&lt;span&gt;&lt;font size="2"&gt;·&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;font size="2"&gt;Hardware platform migration from 6400 to 6900&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;I encountered several problems during the migration event that would have stopped me in my tracks&amp;#160;had I not (in most cases) encountered them already during my testing. This is a list of those issues and what I did to address them. While I may not have all the documentation about these problems or even fully understand all the details, the bottom line is that they worked. My hope is that someone else will benefit from it when it counts the most (and you know what I&amp;#160;mean).&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;b&gt;&lt;font size="2"&gt;Problem #1 – Unable to Access the Configuration Utility (admin GUI)&lt;/font&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;The first issue I had to resolve was apparent immediately after the upgrade finished. When I tried to access the Configuration utility, I was denied:&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;Access forbidden!&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;You don't have permission to access the requested object.&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;Error 403&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;I happened to find the resolution in &lt;b&gt;SOL7448: Restricting access to the Configuration utility by source IP address&lt;/b&gt;. The SOL refers to &lt;i&gt;bigpipe&lt;/i&gt; commands, which is what I used initially:&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;bigpipe httpd allow all add&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;bigpipe save&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;Since then, I’ve developed the corresponding TMSH commands, which is F5’s long-term direction toward managing the system:&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;b&gt;&amp;#160;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;tmsh modify sys httpd allow replace-all-with {all}&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;tmsh save / sys config&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;b&gt;&lt;font size="2"&gt;Problem #2 – Incompatible Profile&lt;/font&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;I encountered the second issue after the upgraded configuration was loaded for the first time:&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;b&gt;&amp;#160;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;[root@bigip2:INOPERATIVE] config # BIGpipe unknown operation error: 01070752:3: Virtual server vs_0_0_0_0_22 (forwarding type) has an incompatible profile.&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;By reviewing the &lt;i&gt;/config/bigip.conf&lt;/i&gt; file, I found that my forwarding virtual servers had a TCP profile applied:&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;b&gt;&amp;#160;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;virtual vs_0_0_0_0_22 {&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;&amp;#160;destination any:22&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;&amp;#160;ip forward&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;&amp;#160;ip protocol tcp&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;&amp;#160;translate service disable&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;&amp;#160;&lt;/font&gt;&lt;u&gt;&lt;font size="2"&gt;profile custom_tcp&lt;/font&gt;&lt;/u&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;Apparently v9 did not care about this, but v10 would not load until I manually removed these TCP profile references&amp;#160;from all of my forwarding virtual servers.&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;b&gt;&lt;font size="2"&gt;Problem #3 – BIGpipe parsing error&lt;/font&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;Then I encountered a second problem while attempting to load the configuration for the first time:&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;b&gt;&amp;#160;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;font size="2"&gt;&lt;b&gt;&lt;span style="color: red"&gt;BIGpipe parsing error (/config/bigip.conf Line 6870): 012e0022:3: The requested value (x.x.x.x:3d-nfsd {) is invalid (show | &amp;lt;pool member list&amp;gt; | none) [add | delete]) for 'members' in 'pool'&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;While examining this error, I noticed that the port number was translated into a service name – “&lt;i&gt;3d-nfsd&lt;/i&gt;”. Fortunately during my initial v10 research, I came across &lt;b&gt;SOL11293 - The default /etc/services file in BIG-IP version 10.1.0 contains service names that may cause a configuration load failure&lt;/b&gt;. While I had added a step in my upgrade process to prevent the LTM from service translation, it was not&amp;#160;scheduled until after the configuration had been successfully loaded on the new hardware. Instead I had to move this step up in the overall process flow:&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;b&gt;&amp;#160;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;bigpipe cli service number&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;font size="2"&gt;&lt;b&gt;&lt;span style="color: red"&gt;b save&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;The corresponding TMSH commands are:&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;b&gt;&amp;#160;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;tmsh modify cli global-settings service number&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;tmsh save / sys config&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;b&gt;Problem #4 – C&lt;/b&gt;&lt;/font&gt;&lt;strong&gt;&lt;font size="2"&gt;ommand is not valid in current event context&lt;/font&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;This was the final error we encountered when trying to load the upgraded configuration for the first time:&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;b&gt;&amp;#160;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;BIGpipe rule creation error:&amp;#160;01070151:3: Rule [www.mycompany.com] error: line 28: [command is not valid in current event context (HTTP_RESPONSE)] [HTTP::host]&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;While reviewing the iRule it was obvious that we had a statement which didn’t make any sense, since there is no Host header in an HTTP response. Apparently it didn’t bother v9, but v10 didn’t like it:&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;when HTTP_RESPONSE {&lt;br /&gt;
&amp;#160;switch -glob&amp;#160;[string tolower ]HTTP::host[] {&lt;br /&gt;
&lt;i&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;do some stuff&amp;gt;&lt;/i&gt;&lt;br /&gt;
&amp;#160;}&lt;br /&gt;
}&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;We simply removed that event from the iRule.&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;b&gt;&lt;font size="2"&gt;Problem #5: Failed Log Rotation&lt;/font&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;After I finished my first migration, I found myself in a situation where none of the logs in the &lt;i&gt;/var/log&lt;/i&gt; directory were not being rotated. The &lt;i&gt;/var/log/secure&lt;/i&gt; log file held the best clue about the underlying issue:&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;b&gt;&amp;#160;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 40px"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;warning crond[7634]: Deprecated pam_stack module called from service "crond"&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;I had to open a case with F5, who found that the PAM crond configuration file (&lt;i&gt;/config/bigip/auth/pam.d/crond&lt;/i&gt;) had been pulled from the old unit:&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;#&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;# The PAM configuration file for the cron daemon&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;#&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;#&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;auth&amp;#160;&amp;#160;&amp;#160; sufficient&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pam_rootok.so&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;auth&amp;#160;&amp;#160;&amp;#160; required&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pam_stack.so service=system-auth&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;auth&amp;#160;&amp;#160;&amp;#160; required&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pam_env.so&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;account required&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pam_stack.so service=system-auth&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;session required&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pam_limits.so&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;b&gt;&lt;span style="color: red"&gt;&lt;font size="2"&gt;#session&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; optional&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pam_krb5.so&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;I had to update the file from a clean unit (which I was fortunate enough to have at my disposal):&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;font color="#ff0000" size="2"&gt;&lt;strong&gt;#&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;font color="#ff0000" size="2"&gt;&lt;strong&gt;# The PAM configuration file for the cron daemon&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;font color="#ff0000" size="2"&gt;&lt;strong&gt;#&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;font color="#ff0000" size="2"&gt;&lt;strong&gt;#&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;font color="#ff0000" size="2"&gt;&lt;strong&gt;auth&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sufficient pam_rootok.so&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;font color="#ff0000" size="2"&gt;&lt;strong&gt;auth&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; required&amp;#160;&amp;#160; pam_env.so&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;font color="#ff0000" size="2"&gt;&lt;strong&gt;auth&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; include&amp;#160;&amp;#160;&amp;#160; system-auth&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;font color="#ff0000" size="2"&gt;&lt;strong&gt;account&amp;#160;&amp;#160;&amp;#160; required&amp;#160;&amp;#160; pam_access.so&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;font color="#ff0000" size="2"&gt;&lt;strong&gt;account&amp;#160;&amp;#160;&amp;#160; sufficient pam_permit.so&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;font color="#ff0000" size="2"&gt;&lt;strong&gt;account&amp;#160;&amp;#160;&amp;#160; include&amp;#160;&amp;#160;&amp;#160; system-auth&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;font color="#ff0000" size="2"&gt;&lt;strong&gt;session&amp;#160;&amp;#160;&amp;#160; required&amp;#160;&amp;#160; pam_loginuid.so&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;strong&gt;&lt;font color="#ff0000" size="2"&gt;session&amp;#160;&amp;#160;&amp;#160; include&amp;#160;&amp;#160;&amp;#160; system-auth&lt;/font&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;and restart crond:&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;strong&gt;&lt;font color="#ff0000" size="2"&gt;bigstart restart crond&lt;/font&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;or in the v10 world:&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt 0.5in"&gt;&lt;strong&gt;&lt;font color="#ff0000" size="2"&gt;tmsh restart sys service crond&lt;/font&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;p&gt;&lt;span style="font-size: 10pt; line-height: 115%"&gt;&lt;br clear="all" /&gt;
&lt;/span&gt;&lt;b&gt;&lt;font size="2"&gt;Problem #6: LTM/GTM SSL Communication Failure&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;This particular issue is the sole reason that my most recent migration process took 10 hours instead of four. Even if you do have a GTM, you are not likely to encounter it since it was a result of our own configuration. But I thought I’d include it since it isn’t something you’ll see documented by F5. One of the steps in my migration plan was to validate successful LTM/GTM communication with &lt;em&gt;iqdump&lt;/em&gt;. When I got to this point in the migration process, I found that &lt;em&gt;iqdump &lt;/em&gt;was failing in both directions because of SSL certificate verification despite having installed the new Trusted Server Certificate on the GTM, and Trusted Device Certificates on both the LTM and GTM. After several hours of troubleshooting,&amp;#160; I decided to perform a &lt;em&gt;tcpdump &lt;/em&gt;to see if I could gain any insight based on what was happening on the wire. I didn’t notice it at first, but when I looked at the trace again later I noticed the hostname on the certificate that the LTM was presenting was not correct. It was a very small detail that could have easily been missed, but was the key in identifying the root cause.&lt;/font&gt;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&amp;#160;&lt;/div&gt;
&lt;div style="margin: 0in 0in 0pt"&gt;&lt;font size="2"&gt;Having dealt with Device Certificates in the past, I knew that the Device Certificate file was &lt;i&gt;/config/httpd/conf/ssl.crt/server.crt. &lt;/i&gt;When I looked in that directory on the filesystem, there I found a number of certificates (and subsequently, private keys in &lt;i&gt;/config/httpd/conf/ssl.key)&lt;/i&gt; that should not have been there. I also found that these certificates and keys were pulled from the configuration on the old hardware. So I removed the extraneous certificates and keys from these directories and restarted the httpd service (“&lt;strong&gt;&lt;font color="#ff0000"&gt;bigstart restart httpd&lt;/font&gt;&lt;/strong&gt;”, or “&lt;strong&gt;&lt;font color="#ff0000"&gt;tmsh restart sys service crond&lt;/font&gt;&lt;/strong&gt;”). After I did that, the LTM presented the correct Device Certificate and LTM/GTM communication was restored. I'm still not sure to this day how those certificates got there in the first place...&lt;/font&gt;&lt;/div&gt;</description><pubDate>Thu, 27 May 2010 10:06:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084376/Problems-Overcome-During-a-Major-LTM-SoftwareHardware-Upgrade.aspx#Comments</comments><slash:comments>1</slash:comments><dc:creator>smp</dc:creator></item><item><title>Investigating Efficiencies in iRules: Handling Wildcards in Hostnames</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084375/Investigating-Efficiencies-in-iRules-Handling-Wildcards-in-Hostnames.aspx</link><description>&lt;script type="text/javascript" src="/DesktopModules/itcMetaPost/js/ca0c21fbdc85f6a1597417732d450607.ashx?hs=1"&gt;&lt;/script&gt;
&lt;p&gt;This isn’t the first time I’ve looked at optimization techniques with iRules. I’ve blogged about &lt;a href="/weblogs/jason/archive/2009/05/05/when-optimization-techniques-fail----why-testing-is-so-important.aspx" target="_blank"&gt;why testing matters&lt;/a&gt;, and &lt;a href="/weblogs/jason/archive/2009/05/20/optimize-this-contest-1.aspx" target="_blank"&gt;hosted a small contest&lt;/a&gt; as a result of that testing (hmm, I think I still owe natty76 a t-shirt…) to give other iRulers out there an opportunity to find efficiencies.&amp;#160; Well, every now and then a post catches my eye and I start to think about the fundamental differences in approach to a problem.&amp;#160; A thread in the Adv Design/Config General Discussion forum, &lt;a href="/Community/GroupDetails/tabid/1082223/asg/52/afv/topic/aft/1172329/aff/31/showtab/groupforums/Default.aspx" target="_blank"&gt;Bypassing a VIP based on destination address&lt;/a&gt;, was searching for a way to match a host that had a wildcard in the middle: webmail.&amp;lt;something&amp;gt;.server.com.&amp;#160; Hamish, one of our MVPs, suggested using the &lt;a href="/wiki/default.aspx/iRules/matches_glob.html" target="_blank"&gt;matches_glob&lt;/a&gt; operator.&amp;#160; (Note: the html tags in the HTTP::respond content section were removed for clarity.&amp;#160; The editor wasn’t displaying them properly.)&lt;/p&gt;
&lt;h3&gt;iRule Solutions&lt;/h3&gt;
&lt;blockquote&gt;&lt;fieldset style="padding: 5px;"&gt;&lt;legend&gt;matches_glob&lt;/legend&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;pre&gt;
when HTTP_REQUEST {
  if { [HTTP::host] matches_glob "webmail.*.server.com" } {
    HTTP::respond 200 content {
		OK
    }
  }
}&lt;/pre&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;/fieldset&gt; &lt;/blockquote&gt;
&lt;p&gt;I came up with a couple more alternatives, one utilizing nested if conditionals and the other using the &lt;a href="http://www.astro.princeton.edu/~rhl/Tcl-Tk_docs/tcl/string.n.html" target="_blank"&gt;string match&lt;/a&gt; command.&lt;/p&gt;
&lt;blockquote&gt;&lt;fieldset style="padding: 5px;"&gt;&lt;legend&gt;nested conditional &amp;amp; string match&lt;/legend&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;pre&gt;
when HTTP_REQUEST {
  if { [llength ]split [HTTP::host] "."[] == 4 } {
    if { [HTTP::host] starts_with "webmail" } {
      if { [HTTP::host] ends_with "server.com" } {
		HTTP::respond 200 content {
			OK
	}
      }
    }
  }
}


**********

when HTTP_REQUEST {
  if { [string match -nocase webmail.*.server.com ]HTTP::host[] } {
    HTTP::respond 200 content {
		OK
    }
  }
}&lt;/pre&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;/fieldset&gt; &lt;/blockquote&gt;
&lt;p&gt;After reaching out to unRuleY with some testing results (more on that later), he proposed a couple more options, both the same approach, but one using the &lt;a href="/wiki/default.aspx/iRules/domain.html" target="_blank"&gt;domain&lt;/a&gt; command and the other using &lt;a href="/wiki/default.aspx/iRules/getfield.html" target="_blank"&gt;getfield&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;&lt;fieldset style="padding: 5px;"&gt;&lt;legend&gt;domain &amp;amp; getfield&lt;/legend&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;pre&gt;
when HTTP_REQUEST {
    if { ([domain ]HTTP::host[ 4] eq [HTTP::host]) &amp;amp;&amp;amp; \
	     ([HTTP::host] starts_with "webmail.") &amp;amp;&amp;amp; \
		 ([HTTP::host] ends_with ".server.com") } {
		HTTP::respond 200 content {
				OK
		}
    }
}

**********

when HTTP_REQUEST {
    if { ([getfield ]HTTP::host[ "." 5] eq "") &amp;amp;&amp;amp; \
	     ([HTTP::host] starts_with "webmail.") &amp;amp;&amp;amp; \
		 ([HTTP::host] ends_with ".server.com") } {
		HTTP::respond 200 content {
				OK
		}
    }
} &lt;/pre&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;/fieldset&gt; &lt;/blockquote&gt;
&lt;p&gt;If you’re counting, that’s five iRule solutions to one problem.&amp;#160; Three unique solutions, really.&amp;#160; If I were to classify these, I’d make the nested conditional one solution, matches_glob/string match another solution, and domain/getfield the final solution.&amp;#160; So how do all these iRules stack up against one another?&lt;/p&gt;
&lt;h3&gt;Testing Methodology&lt;/h3&gt;
&lt;p&gt;Testing was performed on a BIG-IP 3600 platform running the 10.2 release.&amp;#160; The device under test had no other traffic flowing during testing (except a control ssh session and iControl sessions from the editor) and only the rule under test applied to the virtual server.&amp;#160; Three runs of 10,000 requests from &lt;a href="http://httpd.apache.org/docs/2.0/programs/ab.html" target="_blank"&gt;apachebench&lt;/a&gt; were averaged together for each iRule solution.&amp;#160; The iRules themselves were devoid of any logic not necessary for the solution other than the HTTP::respond to confirm the rule was working.&lt;/p&gt;
&lt;h3&gt;Results&lt;/h3&gt;
&lt;div style="padding: 0px; margin: 0px; display: inline; float: right;" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:c8391c6d-55ca-4073-9499-845c7ccc7652" class="wlWriterEditableSmartContent"&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/citizen_elah/2010/May/WLW-CommandBattlestringmatchversusmatches_gl_E2BA-cpu_cycle_comparison-8x6.png" title="Figure 1" rel="thumbnail" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'36b1b3a4'})"&gt;&lt;img height="504" border="0" width="700" alt="" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2010/May/WLW-CommandBattlestringmatchversusmatches_gl_E2BA-cpu_cycle_comparison_11.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;If you’re the pretty picture type, the results are shown in Figure 1 to the right.&amp;#160; So it’s safe to say that my idea of the nested conditional was not the best.&amp;#160; It works, but it is not efficient.&amp;#160; The matches_glob and string match solution results are the most efficient, and performance is really&lt;em&gt; &lt;/em&gt;close, so close that I reached out to get some insight on this one.&amp;#160; Straight from unRuleY:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/citizen_elah/2010/May/WLW-CommandBattlestringmatchversusmatches_gl_E2BA-blockquote_thumb_1_2.gif" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'36b1b3a4'})"&gt;&lt;img height="28" border="0" width="46" style="border: 0px none; display: inline;" alt="blockquote_thumb_1" title="blockquote_thumb_1" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2010/May/WLW-CommandBattlestringmatchversusmatches_gl_E2BA-blockquote_thumb_1_thumb.gif" /&gt;&lt;/a&gt; The reason is that operators are compiled directly into byte-code and hence no further parsing is necessary when the iRule is evaluated.&amp;#160; In the [string match] command case, the string command can’t be completely compiled into byte-code.&amp;#160; Instead, the string command function is invoked.&amp;#160; This function then also has to determine which arguments are options.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The second grouping of solutions, domain &amp;amp; getfield, are even closer in relation to each other, though significantly less efficient (as a group) than the first.&amp;#160; The differences in domain and getfield are most likely due to the fact that the domain command has a built in split function (on “.”), whereas with the getfield command, it must be supplied as an argument and evaluated.&amp;#160; Actual numbers and efficiencies in relation to the other solutions are shown in the table below.&amp;#160; Note that the percentages are in relation to the left column, so the matches_glob solution is 4.25% more efficient than the string match solution, and the domain solution is 10.55% less efficient than the matches_glob solution.&lt;/p&gt;
&lt;div align="center"&gt;
&lt;table cellspacing="0" cellpadding="0" border="2"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="125" style="text-align: center;"&gt;Approach&lt;/td&gt;
            &lt;td width="131" style="text-align: center;"&gt;Average CPU Cycles&lt;/td&gt;
            &lt;td width="96" style="text-align: center;"&gt;matches_glob&lt;/td&gt;
            &lt;td width="96" style="text-align: center;"&gt;string match&lt;/td&gt;
            &lt;td width="96" style="text-align: center;"&gt;domain&lt;/td&gt;
            &lt;td width="96" style="text-align: center;"&gt;getfield&lt;/td&gt;
            &lt;td width="96" style="text-align: center;"&gt;nested conditional&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;p align="left"&gt;matches_glob&lt;/p&gt;
            &lt;/td&gt;
            &lt;td style="text-align: center;"&gt;31116&lt;/td&gt;
            &lt;td bgcolor="#999999"&gt;&amp;#160;&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;4.25%&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;9.55%&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;10.89%&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;16.84%&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;p align="left"&gt;string match&lt;/p&gt;
            &lt;/td&gt;
            &lt;td style="text-align: center;"&gt;32496&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;-4.44%&lt;/td&gt;
            &lt;td bgcolor="#999999"&gt;&amp;#160;&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;5.53%&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;6.94%&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;13.15%&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;p align="left"&gt;domain&lt;/p&gt;
            &lt;/td&gt;
            &lt;td style="text-align: center;"&gt;34400&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;-10.55%&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;-5.86%&lt;/td&gt;
            &lt;td bgcolor="#999999"&gt;&amp;#160;&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;1.49%&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;8.06%&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;p align="left"&gt;getfield&lt;/p&gt;
            &lt;/td&gt;
            &lt;td style="text-align: center;"&gt;34919&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;-12.22%&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;-7.46%&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;-1.51%&lt;/td&gt;
            &lt;td bgcolor="#999999"&gt;&amp;#160;&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;6.67%&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;p style="text-align: left;"&gt;nested conditional&lt;/p&gt;
            &lt;/td&gt;
            &lt;td style="text-align: center;"&gt;37416&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;-20.25%&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;-15.14%&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;-8.77%&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;-7.15%&lt;/td&gt;
            &lt;td bgcolor="#999999"&gt;&amp;#160;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Be considerate of the weapons you have at your disposal in the iRules arsenal.&amp;#160; Get the solution working, then comb every line and event looking for efficiencies.&amp;#160; For example, I had never considered using the domain command to find an empty string.&amp;#160; Test everything.&amp;#160; Not only will you find efficiencies, you just might learn something as well.&lt;/p&gt;
&lt;div class="d_itc_f" style="clear: both; height: 11px;"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;</description><pubDate>Tue, 25 May 2010 09:57:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084375/Investigating-Efficiencies-in-iRules-Handling-Wildcards-in-Hostnames.aspx#Comments</comments><slash:comments>0</slash:comments><dc:creator>citizen_elah</dc:creator></item><item><title>Rapid iRule Removal via Tmsh Script</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084374/Rapid-iRule-Removal-via-Tmsh-Script.aspx</link><description>&lt;script type="text/javascript" src="/DesktopModules/itcMetaPost/js/ca0c21fbdc85f6a1597417732d450607.ashx?hs=1"&gt;&lt;/script&gt;
&lt;p&gt;The BIG-IP GUI is pretty slick and there have been massive improvements in function and efficiency since my first exposure in version 4.2.&amp;#160; As good as it is, however, some tasks are just better suited to the CLI.&amp;#160; Take maintenance, for example.&amp;#160; How long will it take you to remove an iRule from a virtual server?&amp;#160; A quick attempt from login to removal was about 14 seconds.&amp;#160; While already logged in, it took me about nine seconds.&amp;#160; So assuming you know exactly what virtuals an iRule needs to be removed from, and that you can stay on top of which you’ve pulled from without duplicating effort, you can see how efficiency flies right out the window if you have 20, or 30, or maybe 300 virtuals to touch, right?&lt;/p&gt;
&lt;p&gt;Enter scripting.&amp;#160; This scenario is why scripts exist.&amp;#160; It takes a mundane manual task and automates it, taking not only less time, but removing the human error element as well (assuming you don’t design the errors into your script!)&amp;#160; In this tech tip, I’m going to look at using tmsh scripting to evaluate all the virtual servers on the BIG-IP and if an iRule called “x” is present, remove it.&amp;#160;&lt;/p&gt;
&lt;h3&gt;Why remove iRules?&amp;#160; They Rock, right?&lt;/h3&gt;
&lt;p&gt;Well, yes, they do!&amp;#160; But, there are differently purposed iRules deployed.&amp;#160; Some are critical to site functionality—remove them, and the site is down hard.&amp;#160; Other rules are present for logging, d&lt;/p&gt;
&lt;div id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:a977eb08-efa1-4978-b722-f72ebbe33352" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px"&gt;&lt;a class="itcexpando" title="Figure 1" rel="thumbnail" onclick="return mp.expand(this,{slideshowGroup:'406b8013'})" href="/Portals/0/images/metapost/News-Articles/citizen_elah/2010/May/WLW-RapidiRuleRemovalviaTmshScript_935D-remrule_flowchart-8x6.png"&gt;&lt;img border="0" width="420" height="611" alt="" src="/Portals/0/images/metapost/News-Articles/citizen_elah/2010/May/WLW-RapidiRuleRemovalviaTmshScript_935D-remrule_flowchart_9.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;ebugging, injecting content, etc.&amp;#160; These aren’t necessary, and during times of troubleshooting or resource concerns, could be removed.&amp;#160; As indicated above, this is trivial from a standpoint of procedure, but it’s the time involved that counts.&amp;#160; So scripting it is.&amp;#160; The problem now is what kind of script to go with?&amp;#160; The options are a shell script, a perl script, a tmsh script, or an iControl script.&amp;#160; The first two are certainly possible, but must utilize raw BIG-IP configuration data and then parse it into objects for manipulation.&amp;#160; For the latter two, the data is already presented as objects, so the complexity of the script is reduced dramatically.&amp;#160; iControl gets the stage all the time, so I chose tmsh for this job.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;h3&gt;A Little Planning Goes a Long Way&lt;/h3&gt;
&lt;p&gt;Sometimes I get ahead of myself and start scripting immediately.&amp;#160; This is more fun, but always results in rewriting something as I’ve certainly made logic errors and assumptions that don’t pan out.&amp;#160; So let’s start with the high level approach, and then work our way into code.&lt;/p&gt;
&lt;p&gt;Consider this virtual server configuration:&lt;/p&gt;
&lt;blockquote&gt;&lt;fieldset style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px"&gt;&lt;legend&gt;Virtual Server Configuration&lt;/legend&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;pre&gt;
ltm virtual tmshtest10 {
    destination 10.10.20.159:http
    ip-protocol tcp
    mask 255.255.255.255
    pool att_rtr
    profiles {
        http { }
        stream { }
        tcp { }
    }
    rules {
        filler1
        filler3
        filler4
        filler5
    }
}&lt;/pre&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;/fieldset&gt; &lt;/blockquote&gt;
&lt;p&gt;Each of these keywords and values can be accessed in tmsh as an object.&amp;#160; I don’t really care about any of the keywords in a virtual except &lt;strong&gt;rules&lt;/strong&gt;, since it’s only a specific iRule I want to remove.&amp;#160; So that’s the first test in the script.&amp;#160; After collecting all the vips into a variable, I want to loop through that list and test for the presence of that keyword.&amp;#160; If it is not defined, I can move on to the next virtual.&amp;#160; Once I’ve verified the keyword is present, however, I next need to see if the iRule I want to remove is defined within the rules keyword.&amp;#160; If it is, then I want to take action on this virtual server.&amp;#160; Since there is no remove action associated with iRules, I need to test how many iRules are currently applied.&amp;#160; If the iRule I want to remove is the only one, I can just modify the virtual server with the &lt;strong&gt;rules none &lt;/strong&gt;attributes.&amp;#160; However, if there are more than one, I need to “pop” the specific rule from the list, then re-apply the iRules that will remain.&amp;#160; Finally, I’ll wrap all the looping and modification into a transaction, so if there are any failures in the script the desired actions will not be committed.&amp;#160; If you are a visual learner, the approach I’ve just described is presented in a workflow diagram in Figure 1.&lt;/p&gt;
&lt;h3&gt;The Code&lt;/h3&gt;
&lt;p&gt;Every tmsh script requires the &lt;strong&gt;&lt;a target="_blank" href="/wiki/default.aspx/tmsh/script__run.html"&gt;script::run&lt;/a&gt;&lt;/strong&gt; procedure.&amp;#160; I start with a conditional to make sure the rule name has been supplied as an argument (the only argument).&amp;#160; I then store the rule name and the virtual server configurations in a couple variables, and set a couple other variables for use in the loop.&amp;#160; The first two conditionals in the for loop test for presence of rules and then the specific rule.&amp;#160; If either conditional fails, that instance of the loop is terminated and the loop moves on to the next virtual.&amp;#160; I originally had a little more “logic” in there on both conditionals, but a second set of eyes from Mark Crosland, the author of tmsh, cleaned it up significantly, taking advantage of the zero return from &lt;a target="_blank" href="/wiki/default.aspx/tmsh/tmsh__get_field_value.html"&gt;tmsh::get_field_value&lt;/a&gt; in the absence of the keyword.&amp;#160; The third conditional evaluates the number of rules present.&amp;#160; If only one, the script utilizes the none attribute for rules.&amp;#160; If more than that, the rule must be removed from the list, which is done with &lt;a target="_blank" href="http://www.tcl.tk/man/tcl8.4/TclCmd/lreplace.htm"&gt;lreplace&lt;/a&gt;.&amp;#160; The lappend action is just for printing the actions the script took on the active configuration.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;fieldset style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px"&gt;&lt;legend&gt;tmsh script&lt;/legend&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;pre&gt;
proc script::run {} {
    if { $tmsh::argc != 2 } {
        puts "A single rule name must be provided"
        exit
    }
    set rulename [lindex $tmsh::argv 1]
    set rules ""
    set vips [tmsh::get_config /ltm virtual]
    set vips_in_play ""

    tmsh::begin_transaction

    foreach vip $vips {
        if { [tmsh::get_field_value $vip "rules" rules] == 0 } {
            continue
        }
        if { [lsearch -exact $rules $rulename] == -1 } {
            continue
        }
        if { [llength $rules] &amp;lt; 2 } {
            tmsh::modify /ltm virtual [tmsh::get_name $vip] rules none
            lappend vips_in_play $vip
        } else {
            set id [lsearch -exact $rules $rulename]
            set keepers [lreplace $rules $id $id]
            tmsh::modify /ltm virtual [tmsh::get_name $vip] rules "{ $keepers }"
            lappend vips_in_play $vip
        }
    }

    tmsh::commit_transaction

    puts "The $rulename iRule was removed from the following virtuals: "
    foreach x $vips_in_play {
        puts "\t[tmsh::get_name $x]"
    }
}&lt;/pre&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;/fieldset&gt;
&lt;h3&gt;The Demo&lt;/h3&gt;
&lt;p&gt;For a quick walkthrough of the process involved in removing an iRule, and a demonstration of the script, check out the video below, which is also viewable in the Monitoring &amp;amp; Management section of the &lt;a target="_blank" href="/Tutorials/tabid/1082208/Default.aspx"&gt;Tutorials Page&lt;/a&gt;.&amp;#160; The script above is posted in the &lt;a target="_blank" href="/wiki/default.aspx/tmsh.HomePage"&gt;tmsh wiki&lt;/a&gt;.&lt;/p&gt;
&lt;object height="340" width="560"&gt;
&lt;param value="http://www.youtube.com/v/OHWGukAttSI&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" name="movie" /&gt;
&lt;param value="true" name="allowFullScreen" /&gt;
&lt;param value="always" name="allowscriptaccess" /&gt;&lt;embed type="application/x-shockwave-flash" height="340" width="560" allowfullscreen="true" allowscriptaccess="always" src="http://www.youtube.com/v/OHWGukAttSI&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;div class="d_itc_f" style="height: 11px; clear: both"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;</description><pubDate>Fri, 14 May 2010 10:55:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084374/Rapid-iRule-Removal-via-Tmsh-Script.aspx#Comments</comments><slash:comments>2</slash:comments><dc:creator>citizen_elah</dc:creator></item><item><title>Automated Gomez Performance Monitoring</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084373/Automated-Gomez-Performance-Monitoring.aspx</link><description>&lt;script type="text/javascript" src="/DesktopModules/itcMetaPost/js/ca0c21fbdc85f6a1597417732d450607.ashx?hs=1"&gt;&lt;/script&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'ea27e501'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Joe/2010/May/WLW-AutomatedGomezPerformanceMonitoring_C109-gomez_solutions_2.jpg"&gt;&lt;img height="195" border="0" align="right" width="296" src="/Portals/0/images/metapost/News-Articles/Joe/2010/May/WLW-AutomatedGomezPerformanceMonitoring_C109-gomez_solutions_thumb.jpg" title="gomez_solutions" alt="gomez_solutions" style="border-width: 0px; display: inline; margin-left: 0px; margin-right: 0px;" /&gt;&lt;/a&gt;&lt;a href="http://www.gomez.com"&gt;Gomez&lt;/a&gt; provides an on-demand platform that you use to optimize the performance, availability and quality of your Web and mobile applications. It identifies business-impacting issues by testing and measuring Web applications from the “outside-in” — across your users, browsers, mobile devices and geographies — using a global network of 100,000+ locations, including the industry’s only true Last Mile.&lt;/p&gt;
&lt;p&gt;F5 and Gomez have partnered to provide a users of both technologies an easy way to integrate the two together.&amp;#160; In this article I will focus on the Web Performance Management component of the Gomez Platform.&amp;#160; Key features of their Web Performance Management solution include&lt;/p&gt;
&lt;ul class="ArrowList"&gt;
    &lt;li&gt;Rapidly detect and troubleshoot problems that directly impact your customers.
    &lt;ul class="ArrowList"&gt;
        &lt;li&gt;Identify the root cause of issues using real-user passive monitoring.&lt;/li&gt;
        &lt;li&gt;Ensure web application availability and performance for key user segments.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Optimize web application performance
    &lt;ul class="ArrowList"&gt;
        &lt;li&gt;Improve web experiences across mobile, streaming, and web applications.&lt;/li&gt;
        &lt;li&gt;Reduce downtime and response times with detailed object-level, page, connection, and host data across multiple browsers.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Make smart technology investments and manage service providers effectively
    &lt;ul class="ArrowList"&gt;
        &lt;li&gt;Quantify the benefits of technology investments such as Content Delivery Networks (CDNs), virtualization, and infrastructure changes.&lt;/li&gt;
        &lt;li&gt;Ensure service level agreement compliance&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All of these features can be possible by simply inserting a small section of client side JavaScript code into your web page requests.&amp;#160; Now, for a small site with only a couple of pages, this is fairly simple to do, but for sites like DevCentral with many 1000’s of pages, it is very cumbersome and requires developer support for integration.&amp;#160; In addition to that, application level changes typically require a testing cycle before being deployed into production.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Client-side Script&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Gomez script looks something like this:&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div id="codeSnippet" style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum1" style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &amp;lt;SCRIPT LANGUAGE=&lt;span style="color: rgb(0, 96, 128);"&gt;"JavaScript"&lt;/span&gt;&amp;gt;&amp;lt;!--&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum2" style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; gomez={gs: &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Date().getTime(), acctId:&lt;span style="color: rgb(0, 96, 128);"&gt;'XXXXXX'&lt;/span&gt;, pgId:&lt;span style="color: rgb(0, 96, 128);"&gt;''&lt;/span&gt;, grpId:&lt;span style="color: rgb(0, 96, 128);"&gt;''&lt;/span&gt;};&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum3" style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//--&amp;gt;&amp;lt;/SCRIPT&amp;gt; &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum4" style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt; &amp;lt;script src=&lt;span style="color: rgb(0, 96, 128);"&gt;"/js/axfTag.js"&lt;/span&gt; type=&lt;span style="color: rgb(0, 96, 128);"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The key configuration components are the following variables&lt;/p&gt;
&lt;ul class="ArrowList"&gt;
    &lt;li&gt;acctId – Your Gomez Application id to link client page request to your Gomez Account&lt;/li&gt;
    &lt;li&gt;pgId – An optional page identifier that allows you to give a page, or set of pages, a unique user friendly name in the reporting.&lt;/li&gt;
    &lt;li&gt;grpId – An optional group identifier that you can use to further identify your page views.&amp;#160; This is highly useful in multi-datacenter deployments when you would like to differentiate the servers serving up your applications.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Enter iRules&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With our embedded scripting technology iRules on the BIG-IP, deploying this client script code across all of your application becomes very simple.&amp;#160; Since all of your application traffic is traveling through the BIG-IP, it makes perfect sense to “inject” this code at the network layer.&amp;#160; That is exactly what I’m going to do with this solution.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prerequsites&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Make sure your Virtual Server is configured as follows:&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;ul class="ArrowList"&gt;
    &lt;li&gt;Ensure that your Virtual Server has the default (or custom) “stream” profile assigned in it’s configuration.&lt;/li&gt;
    &lt;li&gt;Your Virtual Server must also have an associated HTTP Profile with the “Response Chunking” property set to “Rechunk”.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Handling The Request&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You’ll notice I utilized the ability to serve up content directly from the iRule to eliminate the need to deploy the Gomez bootstrap code to a separate server.&amp;#160; Also, by implementing it this way instead of injecting the code directly into the page response, allows the browser to cache that data and reduce the size of your page request.&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div id="codeSnippet" style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum1" style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt; &lt;span style="color: rgb(204, 102, 51);"&gt;HTTP_REQUEST&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum2" style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum3" style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;   &lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt; GOMEZ_APP_ID &lt;span style="color: rgb(0, 96, 128);"&gt;"XXXXXX"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum4" style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;   &lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt; GOMEZ_DEBUG 0;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum5" style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;   &lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt; gws_luri [&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; tolower ]&lt;span style="color: rgb(0, 0, 255);"&gt;HTTP::uri&lt;/span&gt;[]&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum6" style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;   &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum7" style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;   &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; { $gws_luri eq &lt;span style="color: rgb(0, 96, 128);"&gt;"/js/axftag.js"&lt;/span&gt; } {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum8" style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;     &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum9" style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;     &lt;span style="color: rgb(0, 128, 0);"&gt;# -----------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum10" style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;     &lt;span style="color: rgb(0, 128, 0);"&gt;# Serve up Gomez bootstrap javascript&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum11" style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;     &lt;span style="color: rgb(0, 128, 0);"&gt;# -----------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum12" style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;HTTP::respond&lt;/span&gt; 200 content [&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; map {LBR \{ RBR \}} {/*Gomez ...}] &lt;span style="color: rgb(0, 96, 128);"&gt;"Content-Type"&lt;/span&gt; &lt;span style="color: rgb(0, 96, 128);"&gt;"application/x-javascript"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum13" style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum14" style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt;   } &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum15" style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt;     &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum16" style="color: rgb(96, 96, 96);"&gt;  16:&lt;/span&gt;     &lt;span style="color: rgb(0, 128, 0);"&gt;# ---------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum17" style="color: rgb(96, 96, 96);"&gt;  17:&lt;/span&gt;     &lt;span style="color: rgb(0, 128, 0);"&gt;# Don't allow response data to be chunked&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum18" style="color: rgb(96, 96, 96);"&gt;  18:&lt;/span&gt;     &lt;span style="color: rgb(0, 128, 0);"&gt;# ---------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum19" style="color: rgb(96, 96, 96);"&gt;  19:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; { [&lt;span style="color: rgb(0, 0, 255);"&gt;HTTP::version&lt;/span&gt;] eq &lt;span style="color: rgb(0, 96, 128);"&gt;"1.1"&lt;/span&gt; } {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum20" style="color: rgb(96, 96, 96);"&gt;  20:&lt;/span&gt;       &lt;span style="color: rgb(0, 128, 0);"&gt;# -------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum21" style="color: rgb(96, 96, 96);"&gt;  21:&lt;/span&gt;       &lt;span style="color: rgb(0, 128, 0);"&gt;# Force downgrade to HTTP 1.0, but still allow keep-alive connections.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum22" style="color: rgb(96, 96, 96);"&gt;  22:&lt;/span&gt;       &lt;span style="color: rgb(0, 128, 0);"&gt;# Since HTTP 1.1 is keep-alive by default, and 1.0 isn't,&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum23" style="color: rgb(96, 96, 96);"&gt;  23:&lt;/span&gt;       &lt;span style="color: rgb(0, 128, 0);"&gt;# we need make sure the headers reflect the keep-alive status.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum24" style="color: rgb(96, 96, 96);"&gt;  24:&lt;/span&gt;       &lt;span style="color: rgb(0, 128, 0);"&gt;# -------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum25" style="color: rgb(96, 96, 96);"&gt;  25:&lt;/span&gt;       &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; { [&lt;span style="color: rgb(0, 0, 255);"&gt;HTTP::header&lt;/span&gt; is_keepalive] } {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum26" style="color: rgb(96, 96, 96);"&gt;  26:&lt;/span&gt;         &lt;span style="color: rgb(0, 0, 255);"&gt;HTTP::header&lt;/span&gt; replace &lt;span style="color: rgb(0, 96, 128);"&gt;"Connection"&lt;/span&gt; &lt;span style="color: rgb(0, 96, 128);"&gt;"Keep-Alive"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum27" style="color: rgb(96, 96, 96);"&gt;  27:&lt;/span&gt;       }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum28" style="color: rgb(96, 96, 96);"&gt;  28:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum29" style="color: rgb(96, 96, 96);"&gt;  29:&lt;/span&gt;   }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum30" style="color: rgb(96, 96, 96);"&gt;  30:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;So, for request for the Gomez Bootstrap code (“/js/axftag.js”), the iRule will serve it up.&amp;#160; Otherwise, it will allow the request to pass through to the backend server.&lt;/p&gt;
&lt;p&gt;Also, you will need to update your GOMEZ_APP_ID variable with your personal Application Id supplied to you from your Gomez account.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Injecting The Client-Side JavaScript&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now that the request has gone through to the backend application, we are ready to handle the response from the servers.&amp;#160; We are going to utilize the Stream profile to do the actual content replacement.&amp;#160; It’s fast and very easy to configure.&amp;#160;&lt;/p&gt;
&lt;p&gt;Since we only want to inject the client code in valid web page responses, I’ve added a check for Content-Type “text/html” as well as a success HTTP Response code (200).&amp;#160; Then we’ll create a variable for the Gomez client code with the embedded Application Id and set the Stream expression for the Stream Filter to insert it right before the end of the Head element (or Body element if the Head element doesn’t exist in the response).&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div id="codeSnippet" style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum1" style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt; &lt;span style="color: rgb(204, 102, 51);"&gt;HTTP_RESPONSE&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum2" style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt;   &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum3" style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;  &lt;span style="color: rgb(0, 128, 0);"&gt;# -------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum4" style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;  &lt;span style="color: rgb(0, 128, 0);"&gt;# Stream filter is disabled by default&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum5" style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;  &lt;span style="color: rgb(0, 128, 0);"&gt;# -------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum6" style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;STREAM::disable&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum7" style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;   &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum8" style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;  &lt;span style="color: rgb(0, 128, 0);"&gt;# -------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum9" style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;  &lt;span style="color: rgb(0, 128, 0);"&gt;# Only process stream replacement for a valid response and content type is html.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum10" style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;  &lt;span style="color: rgb(0, 128, 0);"&gt;# -------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum11" style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; { ([&lt;span style="color: rgb(0, 0, 255);"&gt;HTTP::header&lt;/span&gt; Content-Type] &lt;span style="color: rgb(0, 0, 255);"&gt;starts_with&lt;/span&gt; &lt;span style="color: rgb(0, 96, 128);"&gt;"text/html"&lt;/span&gt;) &amp;amp;&amp;amp; ([&lt;span style="color: rgb(0, 0, 255);"&gt;HTTP::status&lt;/span&gt;] == 200) } {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum12" style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;    &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum13" style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt; gomez_client [&lt;span style="color: rgb(0, 0, 255);"&gt;subst&lt;/span&gt; {&amp;lt;SCRIPT LANGUAGE=&lt;span style="color: rgb(0, 96, 128);"&gt;"JavaScript"&lt;/span&gt;&amp;gt;&amp;lt;!--&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum14" style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt; ar gomez={gs: new Date().getTime(), acctId:&lt;span style="color: rgb(0, 96, 128);"&gt;'$::GOMEZ_APP_ID'&lt;/span&gt;, pgId:&lt;span style="color: rgb(0, 96, 128);"&gt;''&lt;/span&gt;, grpId:&lt;span style="color: rgb(0, 96, 128);"&gt;''&lt;/span&gt;};&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum15" style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt; /--&amp;gt;&amp;lt;/SCRIPT&amp;gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum16" style="color: rgb(96, 96, 96);"&gt;  16:&lt;/span&gt; script src=&lt;span style="color: rgb(0, 96, 128);"&gt;"/js/axfTag.js"&lt;/span&gt; type=&lt;span style="color: rgb(0, 96, 128);"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum17" style="color: rgb(96, 96, 96);"&gt;  17:&lt;/span&gt;  ];&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum18" style="color: rgb(96, 96, 96);"&gt;  18:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum19" style="color: rgb(96, 96, 96);"&gt;  19:&lt;/span&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; { $::GOMEZ_DEBUG &amp;gt; 1 } { &lt;span style="color: rgb(0, 0, 255);"&gt;log&lt;/span&gt; local0. &lt;span style="color: rgb(0, 96, 128);"&gt;"Adding Gomez JavaScript"&lt;/span&gt;; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum20" style="color: rgb(96, 96, 96);"&gt;  20:&lt;/span&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; { $::GOMEZ_DEBUG &amp;gt; 2 } { &lt;span style="color: rgb(0, 0, 255);"&gt;log&lt;/span&gt; local0. &lt;span style="color: rgb(0, 96, 128);"&gt;"$gomez_client"&lt;/span&gt;; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum21" style="color: rgb(96, 96, 96);"&gt;  21:&lt;/span&gt;    &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum22" style="color: rgb(96, 96, 96);"&gt;  22:&lt;/span&gt;    &lt;span style="color: rgb(0, 128, 0);"&gt;# -----------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum23" style="color: rgb(96, 96, 96);"&gt;  23:&lt;/span&gt;    &lt;span style="color: rgb(0, 128, 0);"&gt;# Set the stream replacement expression&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum24" style="color: rgb(96, 96, 96);"&gt;  24:&lt;/span&gt;    &lt;span style="color: rgb(0, 128, 0);"&gt;# -----------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum25" style="color: rgb(96, 96, 96);"&gt;  25:&lt;/span&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt; stream_expression &lt;span style="color: rgb(0, 96, 128);"&gt;"@&amp;lt;/\[Hh]\[Ee]\[Aa]\[Dd]&amp;gt;@$gomez_client&amp;lt;/head&amp;gt;@@&amp;lt;\[Bb]\[Oo]\[Dd]\[Yy]&amp;gt;@$gomez_client&amp;lt;body&amp;gt;@"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum26" style="color: rgb(96, 96, 96);"&gt;  26:&lt;/span&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;STREAM::expression&lt;/span&gt; $stream_expression;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum27" style="color: rgb(96, 96, 96);"&gt;  27:&lt;/span&gt;     &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum28" style="color: rgb(96, 96, 96);"&gt;  28:&lt;/span&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; { $::GOMEZ_DEBUG &amp;gt; 2 } { &lt;span style="color: rgb(0, 0, 255);"&gt;log&lt;/span&gt; local0. &lt;span style="color: rgb(0, 96, 128);"&gt;"Current Stream Expression: $stream_expression"&lt;/span&gt;; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum29" style="color: rgb(96, 96, 96);"&gt;  29:&lt;/span&gt;     &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum30" style="color: rgb(96, 96, 96);"&gt;  30:&lt;/span&gt;    &lt;span style="color: rgb(0, 128, 0);"&gt;# -----------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum31" style="color: rgb(96, 96, 96);"&gt;  31:&lt;/span&gt;    &lt;span style="color: rgb(0, 128, 0);"&gt;# Enable the stream filter for this request.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum32" style="color: rgb(96, 96, 96);"&gt;  32:&lt;/span&gt;    &lt;span style="color: rgb(0, 128, 0);"&gt;# -----------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum33" style="color: rgb(96, 96, 96);"&gt;  33:&lt;/span&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;STREAM::enable&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum34" style="color: rgb(96, 96, 96);"&gt;  34:&lt;/span&gt;    &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum35" style="color: rgb(96, 96, 96);"&gt;  35:&lt;/span&gt;  } &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum36" style="color: rgb(96, 96, 96);"&gt;  36:&lt;/span&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; { $::GOMEZ_DEBUG &amp;gt; 1 } { &lt;span style="color: rgb(0, 0, 255);"&gt;log&lt;/span&gt; local0. &lt;span style="color: rgb(0, 96, 128);"&gt;"Ignoring response with content type [HTTP::header Content-Type], status = [HTTP::status]"&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum37" style="color: rgb(96, 96, 96);"&gt;  37:&lt;/span&gt;  }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum38" style="color: rgb(96, 96, 96);"&gt;  38:&lt;/span&gt;    &lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;I’ve included the STREAM_MATCHED event in the case that the Stream profile finds multiple matches.&amp;#160; After the first match, the Stream profile is disabled so that only one replacement occurs.&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div id="codeSnippet" style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum1" style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt; &lt;span style="color: rgb(204, 102, 51);"&gt;STREAM_MATCHED&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum2" style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt;   &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; { $::GOMEZ_DEBUG &amp;gt; 0 } { &lt;span style="color: rgb(0, 0, 255);"&gt;log&lt;/span&gt; local0. &lt;span style="color: rgb(0, 96, 128);"&gt;"URI: $gws_luri matched [STREAM::match]"&lt;/span&gt;; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum3" style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum4" style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;   &lt;span style="color: rgb(0, 128, 0);"&gt;# -------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum5" style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;   &lt;span style="color: rgb(0, 128, 0);"&gt;# We've found a match, so disable the stream profile for all subsequent&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum6" style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;   &lt;span style="color: rgb(0, 128, 0);"&gt;# matches in the response.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum7" style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;   &lt;span style="color: rgb(0, 128, 0);"&gt;# -------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum8" style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;   &lt;span style="color: rgb(0, 0, 255);"&gt;STREAM::disable&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum9" style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With this simple iRule, you can now inject the Gomez client side JavaScript code in all of your applications without effecting your application teams.&amp;#160; In a future article, I will discuss how you can further customize this iRule by adding support for their Page and Group identifiers so if you want a little more granularity in the reporting, stay tuned.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Download&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can download the full script in the &lt;a href="/wiki/default.aspx/iRules/CodeShare.html"&gt;iRules CodeShare&lt;/a&gt; under &lt;a href="/wiki/default.aspx/iRules/GomezInjection.html"&gt;GomezInjection&lt;/a&gt;&lt;/p&gt;
&lt;div style="clear: both; height: 11px;" class="d_itc_f"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;</description><pubDate>Thu, 13 May 2010 13:44:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084373/Automated-Gomez-Performance-Monitoring.aspx#Comments</comments><slash:comments>2</slash:comments><dc:creator>Joe</dc:creator></item><item><title>New Performance Statistics in the F5 Management Pack v2.1.0.43</title><link>http://devcentral.f5.com/weblogs/jhendrickson/archive/2010/05/13/new-performance-statistics-in-the-f5-management-pack-v2.1.0.43.aspx</link><description>&lt;p&gt;We’ve almost doubled the total number of statistics that are gathered in this latest version of the F5 Management Pack with the addition of 100 new http and client SSL profile statistics. &lt;/p&gt;  &lt;p&gt;As with all of the statistics, there are several built in Performance reports you can use to graph them over time and drill down into details. You can also generate alerts and recovery actions based on configurable thresholds.&lt;/p&gt;  &lt;p&gt;The full list of statistics and monitors comprising the BIG-IP health model can be found on our &lt;a href="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/BigIPHealthModel.html"&gt;documentation site&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;New HTTP profile statistics (* means only available in BIG-IP 10.1+)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Set-Cookie header insertions (avg/sec)   &lt;br /&gt;Successful Responses (avg/sec)    &lt;br /&gt;Redirection Responses (avg/sec)    &lt;br /&gt;Client Error Responses (avg/sec)    &lt;br /&gt;Server Error Responses (avg/sec)    &lt;br /&gt;Requests (avg/sec)    &lt;br /&gt;Get Requests (avg/sec)    &lt;br /&gt;Post Requests (avg/sec)    &lt;br /&gt;Version 0.9 Requests (avg/sec)    &lt;br /&gt;Version 1.0 Requests (avg/sec)    &lt;br /&gt;Version 1.1 Requests (avg/sec)    &lt;br /&gt;Version 0.9 Responses (avg/sec)    &lt;br /&gt;Version 1.0 Responses (avg/sec)    &lt;br /&gt;Version 1.1 Responses (avg/sec)    &lt;br /&gt;Max Requests    &lt;br /&gt;Responses (00-01 Kilobytes) (avg/sec)    &lt;br /&gt;Responses (01-04 Kilobytes) (avg/sec)    &lt;br /&gt;Responses (04-16 Kilobytes) (avg/sec)    &lt;br /&gt;Responses (16-32 Kilobytes) (avg/sec)    &lt;br /&gt;Responses (32-64 Kilobytes) (avg/sec)    &lt;br /&gt;Responses (64-128 Kilobytes) (avg/sec)    &lt;br /&gt;* Responses (128-512 Kilobytes) (avg/sec)    &lt;br /&gt;* Responses (512K-2 Megabytes) (avg/sec)    &lt;br /&gt;* Responses (Over 2 Megabytes) (avg/sec)    &lt;br /&gt;Idle Connection Splices (avg/sec)    &lt;br /&gt;Idle Connections (avg/sec)    &lt;br /&gt;Pre-compression Bytes (avg/sec)    &lt;br /&gt;Post-compression Bytes (avg/sec)    &lt;br /&gt;NULL-compression Bytes (avg/sec)    &lt;br /&gt;HTML Pre-compression Bytes (avg/sec)    &lt;br /&gt;HTML Post-compression Bytes (avg/sec)    &lt;br /&gt;CSS Pre-compression Bytes (avg/sec)    &lt;br /&gt;CSS Post-compression Bytes (avg/sec)    &lt;br /&gt;JS Pre-compression Bytes (avg/sec)    &lt;br /&gt;JS Post-compression Bytes (avg/sec)    &lt;br /&gt;XML Pre-compression Bytes (avg/sec)    &lt;br /&gt;XML Post-compression Bytes (avg/sec)    &lt;br /&gt;SGML Pre-compression Bytes (avg/sec)    &lt;br /&gt;SGML Post-compression Bytes (avg/sec)    &lt;br /&gt;Plain Pre-compression Bytes (avg/sec)    &lt;br /&gt;Plain Post-compression Bytes (avg/sec)    &lt;br /&gt;Octet Pre-compression Bytes (avg/sec)    &lt;br /&gt;Octet Post-compression Bytes (avg/sec)    &lt;br /&gt;Image Pre-compression Bytes (avg/sec)    &lt;br /&gt;Image Post-compression Bytes (avg/sec)    &lt;br /&gt;Video Pre-compression Bytes (avg/sec)    &lt;br /&gt;Video Post-compression Bytes (avg/sec)    &lt;br /&gt;Audio Pre-compression Bytes (avg/sec)    &lt;br /&gt;Audio Post-compression Bytes (avg/sec)    &lt;br /&gt;Other Pre-compression Bytes (avg/sec)    &lt;br /&gt;Other Post-compression Bytes (avg/sec)    &lt;br /&gt;RAM Cache Hits (avg/sec)    &lt;br /&gt;RAM Cache Misses (Cacheable) (avg/sec)    &lt;br /&gt;RAM Cache Misses (Uncacheable) (avg/sec)    &lt;br /&gt;RAM Cache Hits (Bytes) (avg/sec)    &lt;br /&gt;RAM Cache Misses (Bytes) (Cacheable) (avg/sec)    &lt;br /&gt;RAM Cache Misses (Bytes) (Uncacheable) (avg/sec)    &lt;br /&gt;RAM Cache Size    &lt;br /&gt;RAM Cache Count (avg/sec)    &lt;br /&gt;RAM Cache Evictions (avg/sec)    &lt;br /&gt;* RAM Cache Inter-Stripe Hit Count (avg/sec)    &lt;br /&gt;* RAM Cache Inter-Stripe Miss Count (avg/sec)    &lt;br /&gt;* RAM Cache Inter-Stripe Hit Byte Count (avg/sec)    &lt;br /&gt;* RAM Cache Inter-Stripe Cache Size (Bytes)    &lt;br /&gt;* RAM Cache Inter-Stripe Cache Entity Count    &lt;br /&gt;* RAM Cache Inter-Stripe Cache Evictions (avg/sec)    &lt;br /&gt;* RAM Cache Remote Hit Count (avg/sec)    &lt;br /&gt;* RAM Cache Remote Miss Count (avg/sec)    &lt;br /&gt;* RAM Cache remote Hit Byte Count (avg/sec)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;New Client SSL profile statistics:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Bad Records (avg/sec)   &lt;br /&gt;Current Compat-mode Connections    &lt;br /&gt;Current Connections    &lt;br /&gt;Current Native Connections    &lt;br /&gt;Decrypted Bytes In (avg/sec)    &lt;br /&gt;Decrypted Bytes Out (avg/sec)    &lt;br /&gt;Encrypted Bytes In (avg/sec)    &lt;br /&gt;Encrypted Bytes Out (avg/sec)    &lt;br /&gt;Fatal Alerts (avg/sec)    &lt;br /&gt;Offloaded Connections (avg/sec)    &lt;br /&gt;Non-SSL Greeting Failures (avg/sec)    &lt;br /&gt;Handshake Failures (avg/sec)    &lt;br /&gt;Max Compat-mode Connections    &lt;br /&gt;Max Connections    &lt;br /&gt;Max Native Connections    &lt;br /&gt;Mid-connection Handshakes (avg/sec)    &lt;br /&gt;Software Connections (avg/sec)    &lt;br /&gt;Assisted Connections (avg/sec)    &lt;br /&gt;Invalid Certificates (avg/sec)    &lt;br /&gt;Connections Without Certificates (avg/sec)    &lt;br /&gt;Valid Certificates (avg/sec)    &lt;br /&gt;Unclean Shutdowns (avg/sec)    &lt;br /&gt;Records Received (avg/sec)    &lt;br /&gt;Records Transmitted (avg/sec)    &lt;br /&gt;Session Cache Entries (avg/sec)    &lt;br /&gt;Session Cache Hits (avg/sec)    &lt;br /&gt;Session Cache Invalidations (avg/sec)    &lt;br /&gt;Session Cache Lookups (avg/sec)    &lt;br /&gt;Session Cache Overflows (avg/sec)    &lt;br /&gt;Compat-mode Connections (avg/sec)    &lt;br /&gt;Native Connections (avg/sec)&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/jhendrickson/aggbug/1088230.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 13 May 2010 07:44:17 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/jhendrickson/archive/2010/05/13/new-performance-statistics-in-the-f5-management-pack-v2.1.0.43.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>F5 Networks Management Pack welcomes Microsoft SharePoint 2010 to the world</title><link>http://devcentral.f5.com/weblogs/sfisher/archive/2010/05/13/f5-networks-management-pack-welcomes-microsoft-sharepoint-2010-to-the.aspx</link><description>&lt;p&gt;To celebrate &lt;a href="http://www.the2010event.com/" target="_blank"&gt;today’s global launch of Microsoft Office and SharePoint 2010&lt;/a&gt;, F5 Networks has popped the cork off a bottle of L7 Champagne with our &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/aff/2301/aft/1172369/afv/topic/asg/54/Default.aspx" target="_blank"&gt;new version of the Management Pack, version 2.1&lt;/a&gt;… which includes Distributed Application Designer support for SharePoint 2010.&lt;/p&gt;  &lt;p&gt;With this latest Distributed Application Designer, your data center administrator can quickly and easily deploy Microsoft SharePoint 2010 into their data center. As with all of our Distributed Application Designers, the SP 2010 Designer integrates System Center application and network monitoring, health and alerting, along with automatic discovery and automatic-configuration of existing F5 Networks BIG-IP infrastructure.&lt;/p&gt;  &lt;p&gt;We’re particularly excited about the new release of the &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=5c73415d-97ba-4bdc-8e92-2c4ea4507f91" target="_blank"&gt;Microsoft SharePoint 2010 Management Pack for System Center Operations Manager&lt;/a&gt;, as it includes a much richer set of health and performance objects, which we can link directly against the F5 Networks Local Traffic Manager for real-time capacity and health-based load balancing.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/druddell/archive/2010/05/13/f5-management-pack-v2.1.0.43-released-with-app-designer-support-for.aspx" target="_blank"&gt;David Ruddell, an engineer on the F5 MPk development team, has posted a blog with more info and a video tutorial on the SharePoint 2010 integration&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;This latest release of the Management Pack also includes over a 100 new network performance statistics and thresholds, covering http, ssl, and device level statistics.&lt;/p&gt;  &lt;p&gt;As always, our releases include rolled-up maintenance fixes, in-place upgrade, support via the &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/54/showtab/groupforums/Default.aspx" target="_blank"&gt;F5 DevCentral Management Pack Forums&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Look for more blog posts and videos describing and detailing the features in the latest release.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Thank you,   &lt;br /&gt;Stephen Fisher    &lt;br /&gt;Product Development Manager, F5 Networks Management Pack and Data Center Orchestration&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/sfisher/aggbug/1088228.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 13 May 2010 04:53:41 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/sfisher/archive/2010/05/13/f5-networks-management-pack-welcomes-microsoft-sharepoint-2010-to-the.aspx#comment</comments><slash:comments>1</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>F5 Management Pack v2.1.0.43 Released with App Designer Support for SharePoint 2010</title><link>http://devcentral.f5.com/weblogs/druddell/archive/2010/05/13/f5-management-pack-v2.1.0.43-released-with-app-designer-support-for.aspx</link><description>&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/druddell/WindowsLiveWriter/F5M.43ReleasedwithAppDesignerSupportforS_C1D8/spanner-tool_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Clip Art Graphic of a Red Guy Character " border="0" alt="Clip Art Graphic of a Red Guy Character " align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/druddell/WindowsLiveWriter/F5M.43ReleasedwithAppDesignerSupportforS_C1D8/spanner-tool_thumb.jpg" width="86" height="86" /&gt;&lt;/a&gt; In conjunction with the release of &lt;a href="http://sharepoint.microsoft.com/en-us/Pages/default.aspx" target="_blank"&gt;Microsoft SharePoint 2010&lt;/a&gt;, the F5 Management Pack team has released v2.1.0.43 of our Management Pack.  Along side this release we are introducing the F5 Application Designer for SharePoint 2010.  This new application designer is actually very similar to the SharePoint 2007 Application Designer released last month, but with the &lt;a href="http://pinpoint.microsoft.com/en-US/PartnerDetails.aspx?PartnerId=4297702754&amp;amp;ProductId=12884905232&amp;amp;CurrentTab=1" target="_blank"&gt;SharePoint 2010 Management Pack&lt;/a&gt; helping run the show, a whole new level of visibility and capabilities have become available to the user surrounding a SharePoint deployment.&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/druddell/WindowsLiveWriter/F5M.43ReleasedwithAppDesignerSupportforS_C1D8/F5.AppDesigner.SharePoint2010.Details_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="F5.AppDesigner.SharePoint2010.Details" border="0" alt="F5.AppDesigner.SharePoint2010.Details" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/druddell/WindowsLiveWriter/F5M.43ReleasedwithAppDesignerSupportforS_C1D8/F5.AppDesigner.SharePoint2010.Details_thumb.jpg" width="244" height="161" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The Application Designer for SharePoint 2010 has a lot of the same objects and features as the SharePoint 2007 designer, but with the new capabilities of the SharePoint Foundation 2010 Management Pack, we are really able to get the application specific objects we require to make the most sense out of the whole picture.  On the right is a sample diagram of a single SharePoint Server farm with the basic elements of the designer discovered: F5 LTM Virtual Server, F5 LTM Pool Member, SharePoint Server, Operating System, Website, SharePoint Web Application, and the SQL Content Database for the Website and SharePoint Web Application in the diagram.  There is also an object for Hyper-V Virtual Machine if the server discovered is running under Hyper-V and you have the Virtual Machine Manager Management Pack installed. &lt;/p&gt;  &lt;p&gt;If you have your SharePoint 2010 deployment up and running and are ready to dive into the wonderful world of F5 Application Designers, then you may find the following fairly useful.  First we have the &lt;a href="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/ApplicationDesigner.html" target="_blank"&gt;Wiki documentation for all of our App Designers&lt;/a&gt;, but if you scroll down, you will find the SharePoint 2010 specific deployment guide.  Along with the documentation, I have made up a somewhat lengthy tutorial video to help show you how to get things working, as well as walk you through downloading, installing, and modifying the scripts necessary to successfully run our SharePoint designer.  That video can be located here:&lt;/p&gt;  &lt;p&gt; &lt;a title="http://vimeo.com/11721129" href="http://vimeo.com/11721129"&gt;Working with the F5 Application Designer for SharePoint 2010&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you have any additional questions or concerns, feel free to visit our &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/54/Default.aspx" target="_blank"&gt;F5 Management Pack Group&lt;/a&gt; and post in our &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/54/showtab/groupforums/Default.aspx" target="_blank"&gt;forums&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/druddell/aggbug/1088227.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 13 May 2010 04:48:02 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/druddell/archive/2010/05/13/f5-management-pack-v2.1.0.43-released-with-app-designer-support-for.aspx#comment</comments><slash:comments>2</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>ARX: Getting through the Interview Wizard</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084356/ARX-Getting-through-the-Interview-Wizard.aspx</link><description>&lt;script type="text/javascript" src="/DesktopModules/itcMetaPost/js/ca0c21fbdc85f6a1597417732d450607.ashx?hs=1"&gt;&lt;/script&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;So you have gotten your fancy new shiny ARX devices racked and powered as you admire the really nifty red glowing F5 Logo on the front you think "Now what?" The next step is to connect a console cable to the device and run through the interview wizard. Here is where I will step you through the wizard to get your devices ready for an implementation.&lt;/p&gt;
&lt;h4&gt;Step 1: Console Cable&lt;/h4&gt;
&lt;p&gt;What's that you ask? It's the Cable that is usually Powder Blue with a DB9 connector on one end and a RJ 45 connector on the other. It's also called a roll over cable ( not sure why).&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;a onclick="return mp.expand(this,{slideshowGroup:'5ebb0e49'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/MichaelAghajanian/2010/Apr/WLW-GettingthroughtheInterviewWizard_1363F-console%20cable_2.jpg"&gt;&lt;img height="120" border="0" width="244" src="/Portals/0/images/metapost/News-Articles/MichaelAghajanian/2010/Apr/WLW-GettingthroughtheInterviewWizard_1363F-console%20cable_thumb.jpg" title="console cable" alt="console cable" style="border: 0px none; display: inline; margin-left: 0px; margin-right: 0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;h4&gt;Step 2: Terminal&lt;/h4&gt;
&lt;p&gt;You need a program to open a connection through the serial port to the ARX. You can use windows HyperTerm or something that is more user friendly and free like PuTTY &lt;a href="http://www.chiark.greenend.org.uk/%7Esgtatham/putty/download.html"&gt;Download Here&lt;/a&gt;. After you install the program of your choice you will have to open the COM Port the serial cable is attached to and set the correct communication settings. If you have a physical serial port in your laptop ( new models after late 2009 do not anymore) it will be COM1 most likely if you have a USB to Serial it will be a higher number. Mine is COM8.&lt;/p&gt;
&lt;p&gt;After you find what COM port the settings are Baud Rate: 9600, Data Bits 8, Parity None, Stop Bits 1.&lt;/p&gt;
&lt;p&gt;Next open the session! If you don't see anything hit a key. If that doesn't work check your settings. You should see:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;Press &amp;lt;Enter&amp;gt; to start the Switch Configuration Wizard.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;After you hit enter sit back with a cup of coffee and enjoy reading the &lt;strong&gt;LICENSE AGREEMENT.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;h4&gt;Step 3: The Wizard!&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;font face="Courier New"&gt;2. Enter 'yes' to accept these terms and conditions         &lt;br /&gt;
&amp;#160;&amp;#160; in the format 'yes' or 'no'. # &lt;font color="#ff0000"&gt;&lt;strong&gt;yes&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;The switch's management port requires an IP address and mask.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;3. Enter the management port IP address&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;&amp;#160;&amp;#160; in the format nnn.nnn.nnn.nnn or 'none'. # &lt;font color="#ff0000"&gt;&lt;strong&gt;172.30.71.10&amp;#160; &amp;lt;- Out of Band IP, needs to be on a different network than any other IP on the box to include the storage, proxy IP etc. or you can type ‘none’ if you do not want to use one.&lt;/strong&gt;&lt;/font&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;4. Enter the management port subnet mask&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;&amp;#160;&amp;#160; in the format nnn.nnn.nnn.nnn.(default=255.255.0.0) # &lt;font color="#ff0000"&gt;&lt;strong&gt;255.255.255.0&lt;/strong&gt;&lt;/font&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;The switch's management port requires a gateway IP address.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;5. Enter the gateway IP address for the management interface&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;&amp;#160;&amp;#160; in the format nnn.nnn.nnn.nnn or 'none'. # &lt;font color="#ff0000"&gt;&lt;strong&gt;172.30.71.1&lt;/strong&gt;&lt;/font&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;A switch replacement requires additional configuration questions.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;6. Are you doing a switch replacement?&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;&amp;#160;&amp;#160; in the format 'yes' or 'no'.(default=no) # &lt;font color="#ff0000"&gt;&lt;strong&gt;no&lt;/strong&gt;&lt;/font&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;The crypto-officer is the most privileged user in the system.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;7. Enter the crypto-officer username&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;&amp;#160;&amp;#160; in the format text (1-28 characters). # admin &lt;font color="#ff0000"&gt;&lt;strong&gt;&amp;lt;- We use admin&lt;/strong&gt;&lt;/font&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;8. Enter the crypto-officer password&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;&amp;#160;&amp;#160; in the format text (6-28 characters). # ****** &lt;font color="#ff0000"&gt;&lt;strong&gt;&amp;lt;- We use acopia&lt;/strong&gt;&lt;/font&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Confirm the crypto-officer password # ******&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;A system password is required for access to the master key.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;9. Enter a system password&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;&amp;#160;&amp;#160; in the format text (12-28 characters). # ************** &lt;font color="#ff0000"&gt;&lt;strong&gt;&amp;lt;- We use Acopia01Acopia&lt;/strong&gt;&lt;/font&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Confirm the system password # **************&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;The master key is used to encrypt critical security parameters.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;10. Enter the master key&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;&amp;#160;&amp;#160; in the format base64-encoded key or keyword 'generate'.(default=generate) # &lt;font color="#ff0000"&gt;&lt;strong&gt;&amp;lt;- When installing the first box generate this. When we are installing the second box you will need the key generated from the first box to be pasted in here. To find out the master key that was generated issue this command when you log into the first box you installed enter these commands “switch&amp;gt; en” then “switch# sho master-key”.&lt;/strong&gt;&lt;/font&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;Configuration Summary&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160; Management IP Address&amp;#160;&amp;#160;&amp;#160; 172.30.71.10&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160; Management IP Mask&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 255.255.255.0&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160; Management Gateway&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 172.30.71.1&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160; Private IP Subnet&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 169.254.253.0&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160; Private IP Mask&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 255.255.255.192&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160; Private VLAN&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1002&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160; Chassis GUID&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2af5da5e-fe5b-11dc-a435-2bfb40b0a892&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160; Switch Password&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #######&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160; Switch Master Key&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; generate&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160; Crypto-officer Username&amp;#160; admin&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160; Crypto-officer Password&amp;#160; #######&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;em&gt;Enter 'yes' to load configuration or 'r' to restart #&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Repeat this for the second switch. Do not worry about any other configuration. After the switches are configured, if the Out of Band I is configured you can try to ping the gateway and the management ports to make sure they can be accessed. We will configure the HA pair when I remote in.&lt;/p&gt;
&lt;p&gt;Enjoy! Any problems don’t hesitate to call us up!&lt;/p&gt;
&lt;div style="clear: both; height: 11px;" class="d_itc_f"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;</description><pubDate>Thu, 29 Apr 2010 10:30:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084356/ARX-Getting-through-the-Interview-Wizard.aspx#Comments</comments><slash:comments>1</slash:comments><dc:creator>MichaelAghajanian</dc:creator></item><item><title>ARX: Common Helpful Troubleshooting CLI Commands</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084357/ARX-Common-Helpful-Troubleshooting-CLI-Commands.aspx</link><description>&lt;p&gt;&lt;strong&gt;&lt;font color="#008040"&gt;Show Health&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160; Quick view if there are any active alarms the ARX is sending out that the admin needs to be aware of.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#008040"&gt;Show Health Time-Skew&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160; Will show the health of the time-skew between ARX's in HA and domain controllers and the backend filers. Great for troubleshooting Kerberos if there is a time skew.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#008040"&gt;Show cifs-service user-sessions&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160; Shows what CIFS users are connecting to the ARX. &lt;a href="mailto:user@domain.com"&gt;user@domain.com&lt;/a&gt; are Kerberos connections and domain/user are NTLM&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#008040"&gt;Show redundancy&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160; Show the status of the redundancy and which switch is active. The * is the active switch.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#008040"&gt;Show redundancy his&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160; Shows the history of the redundancy connection. Great for troubleshooting&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#008040"&gt;Show running-config&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160; Shows the running config&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#008040"&gt;Show global-config&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160; Shows the global config where all the namespaces, volumes, shares etc.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#008040"&gt;Tail logs syslog&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160; Good for immediate troubleshooting. Shows the last 25 lines of the syslog. You can also see the syslog in the GUI, but the file can get large.&lt;/p&gt;
&lt;p&gt;&amp;#160; Log format:&lt;/p&gt;
&lt;p&gt;&amp;#160; utc.uuu‐tz:switch:slot‐proc‐board‐pid:cmp‐ins‐sev‐id:: msg&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;utc is the time in UTC.&lt;/li&gt;
    &lt;li&gt;uuu is the millisecond time fraction.&lt;/li&gt;
    &lt;li&gt;tz is the hours off UTC (+nnnn or -nnnn).&lt;/li&gt;
    &lt;li&gt;switch is the switch name.&lt;/li&gt;
    &lt;li&gt;slot-proc-board is the chassis slot, processor number, and board type (ACM, ASM, SCM, or NSM). Use the show processors&lt;/li&gt;
    &lt;li&gt;pid is the Process ID (PID).&lt;/li&gt;
    &lt;li&gt;cmp is the log-component name. Refer to Log Components, above.&lt;/li&gt;
    &lt;li&gt;ins is the process’s instance number.&lt;/li&gt;
    &lt;li&gt;sev indicates the message severity: DBG (debug) is the least severe, followed by INFO, NOTE, WARN, ERR, and CRIT (critical).&lt;/li&gt;
    &lt;li&gt;id is the message-catalog ID, a unique ID for each log message. MSGn is an ID for an uncatologued message. The n is the severity of the message, from 7 (debug) down to 2 (critical). Refer to the&lt;/li&gt;
    &lt;li&gt;msg is the message text itself.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#008040"&gt;Show Chassis&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160; Shows the status of the hardware. Can also see this in the GUI&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#008040"&gt;Show ntlm-auth-server status&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160; Great for trouble shooting NTLM connections. This will show you if the ARX is connecting to the NTLM secure agent.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#008040"&gt;Show ron tunnel&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160; Good to see if the RON tunnels are connected to the other switches. When running Shadow Copies to a remote site this is a good command to use to troubleshoot if the copies are not working&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#008040"&gt;Show ip route&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160; Troubleshoot network issues&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#008040"&gt;Show arp&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160; Troubleshoot network issues&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#008040"&gt;Show system tasks&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160; Shows all running process and cpu utilization&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#008040"&gt;Ping ip‐address from slot.processor [count number]&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160; Ping from a specific processor. Great for troubleshooting network issues from specific processors.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#008040"&gt;Show statistics namespace fastpath&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160; Shows statistics of shares.&lt;/p&gt;
&lt;div style="clear: both; height: 11px;" class="d_itc_f"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;</description><pubDate>Thu, 29 Apr 2010 10:00:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084357/ARX-Common-Helpful-Troubleshooting-CLI-Commands.aspx#Comments</comments><slash:comments>1</slash:comments><dc:creator>MichaelAghajanian</dc:creator></item><item><title>BIG-IP LTM and Live Meeting Portal Server</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084364/BIG-IP-LTM-and-Live-Meeting-Portal-Server.aspx</link><description>&lt;script type="text/javascript" src="/DesktopModules/itcMetaPost/js/ca0c21fbdc85f6a1597417732d450607.ashx?hs=1"&gt;&lt;/script&gt;&lt;p&gt;&lt;b&gt;BIG-IP LTM and Live Meeting Portal Server&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;I setup Live Meeting Portal Server in a production environment the other day and wanted to share a few things that are not mentioned in Microsoft’s documentation.&amp;#160; The BIG-IP portion of this configuration is super easy, but it is understanding how both the application and the BIG-IP work together that can be the hardest part of any deployment.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Prerequisites:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Please consult the Live Meeting Portal Server documentation and ensure that your servers meet all the perquisites before installation. All the examples in this guide are setup so that you will end up with a website at this URL: &lt;a href="https://livemeeting.mycompany.com/lmportal"&gt;https://livemeeting.mycompany.com/lmportal&lt;/a&gt;. Please feel free to substitute your company’s name for “mycompany”.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;IIS Setup:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;1. Download the latest version of Office Live Meeting Service Portal. As of 4/20/2010 that can be found here: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=429bb528-fd1b-45b7-af2b-cbbf4a8e65ff&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=429bb528-fd1b-45b7-af2b-cbbf4a8e65ff&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. Create a basic website in IIS and name it Live Meeting. This empty shell of a website will be used by the Live Meeting installer and will basically be taken over by it after you run through the installation.&lt;/p&gt;  &lt;p&gt;3. Create a folder named “Livemeeting” in the directory of your choice. In this example we will use ”E:\web\content\”&lt;/p&gt;  &lt;p&gt;4. Double click the lmportal.exe to begin the installation and choose custom when the option appears. Then select the directory you created above so the files will be placed in your normal custom web content location.&lt;/p&gt;  &lt;p&gt;5. Remote Desktop (RDP) to the web server and open IIS. DO NOT USE THE IIS CONSOLE ON YOUR LOCAL MACHINE as you will not have access to everything that you need.&lt;/p&gt;  &lt;p&gt;6. The screenshots below will help guide you through the configuration of the web site in IIS. Things that do need to be changed:&lt;/p&gt;  &lt;p&gt;a. Add 443 to the SSL port and select the unique IP address for the site to use. We will be terminating SSL on the F5 BIG-IP and then re-encrypting before sending it back on to the server.&lt;/p&gt;  &lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/naladar/2010/Apr/WLW-BIGIPLTMandLiveMeetingPortalServer_A44E-clip_image002_2.jpg"  class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'1abba890'})" &gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" title="clip_image002" src="/Portals/0/images/metapost/News-Articles/naladar/2010/Apr/WLW-BIGIPLTMandLiveMeetingPortalServer_A44E-clip_image002_thumb.jpg" width="244" height="236" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;b. Allow Scripts and Executables under execute permissions. Verify application pool is set to Live Meeting Intranet Portal AppPool.&lt;/p&gt;  &lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/naladar/2010/Apr/WLW-BIGIPLTMandLiveMeetingPortalServer_A44E-clip_image004_2.jpg"  class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'1abba890'})" &gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image004" border="0" alt="clip_image004" title="clip_image004" src="/Portals/0/images/metapost/News-Articles/naladar/2010/Apr/WLW-BIGIPLTMandLiveMeetingPortalServer_A44E-clip_image004_thumb.jpg" width="244" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;c. Verify that ASP.NET is set to version 1.1.4.322&lt;/p&gt;  &lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/naladar/2010/Apr/WLW-BIGIPLTMandLiveMeetingPortalServer_A44E-clip_image006_2.jpg"  class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'1abba890'})" &gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image006" border="0" alt="clip_image006" title="clip_image006" src="/Portals/0/images/metapost/News-Articles/naladar/2010/Apr/WLW-BIGIPLTMandLiveMeetingPortalServer_A44E-clip_image006_thumb.jpg" width="244" height="239" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;d. Under Directory Security, click Edit and make sure there is a check mark on the “Enable anonymous access” and “Integrated Windows authentication” box.&lt;/p&gt;  &lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/naladar/2010/Apr/WLW-BIGIPLTMandLiveMeetingPortalServer_A44E-clip_image008_2.jpg"  class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'1abba890'})" &gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image008" border="0" alt="clip_image008" title="clip_image008" src="/Portals/0/images/metapost/News-Articles/naladar/2010/Apr/WLW-BIGIPLTMandLiveMeetingPortalServer_A44E-clip_image008_thumb.jpg" width="205" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;e. Go to the application pool, right click and go to properties. Click the Health tab and uncheck “Enable Rapid-Fail protection”. Not including a screenshot of this one.&lt;/p&gt;  &lt;p&gt;7. Navigate to “E:\web\content\Livemeeting\Portal” on the server. Then find the file named “Portal.config”, right-click it and click the Security tab. Click Add and then add the “Network Service” user account and give it full control. You have to do this or you cannot modify the configuration settings from the GUI.&lt;/p&gt;  &lt;p&gt;8. Do the same thing listed in step 7 for the “PortalExport” folder located in the directory you should currently be in: “E:\web\content\Livemeeting\Portal”&lt;/p&gt;  &lt;p&gt;9. Now you have to import the SSL certificate that you are going to use into IIS website that you just set up. You will need to obtain the .crt file for the SSL certificate and the .key file for that certificate. We terminate our SSL on the BIG-IP so these can both be obtained from there. I will skip the steps regarding purchasing an SSL certificate for a site if you do not already have one. It kind of falls outside the scope of this guide.&lt;/p&gt;  &lt;p&gt;10. Use a search engine and search for OpenSSL. You should find their homepage at: &lt;a href="http://www.openssl.org/"&gt;http://www.openssl.org/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;11. Download OpenSSL and install it on your Local machine. I don’t recommend installing it on the server for a wide variety of reasons. I installed my copy of OpenSSL into “C:\OpenSSL”.&lt;/p&gt;  &lt;p&gt;12. Take the .key file and the .crt file and put them into OpenSSL’s “bin” directory. It’s just a folder inside of your OpenSSL folder called bin.&lt;/p&gt;  &lt;p&gt;13. Open a command line and change directory over to C:\OpenSSL\bin. The example I am going to provide is for a fictitious company named “MyCompany” that is using a wildcard ssl certificate on a few of their websites.&lt;/p&gt;  &lt;p&gt;14. Then type in the following command:&lt;/p&gt;  &lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/naladar/2010/Apr/WLW-BIGIPLTMandLiveMeetingPortalServer_A44E-clip_image010_2.jpg"  class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'1abba890'})" &gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image010" border="0" alt="clip_image010" title="clip_image010" src="/Portals/0/images/metapost/News-Articles/naladar/2010/Apr/WLW-BIGIPLTMandLiveMeetingPortalServer_A44E-clip_image010_thumb.jpg" width="244" height="33" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This all needs to be on one line. Spaces are ok, but no carriage returns or anything like that. This command is modeled after this example for future reference:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;openssl pkcs12 -export -out&lt;/b&gt; &lt;u&gt;certificate.pfx&lt;/u&gt; &lt;b&gt;-inkey&lt;/b&gt; &lt;u&gt;privateKey.key&lt;/u&gt; &lt;b&gt;-in&lt;/b&gt; &lt;u&gt;certificate.crt&lt;/u&gt; &lt;b&gt;-certfile&lt;/b&gt; &lt;u&gt;CACert.crt&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;certificate.pfx&lt;/b&gt; = the name of the new .pfx file you want to create&lt;/p&gt;  &lt;p&gt;&lt;b&gt;privateKey.key&lt;/b&gt; = the private key you got off of the F5 BIG-IP&lt;/p&gt;  &lt;p&gt;&lt;b&gt;certificate.crt&lt;/b&gt; = the crt file that you got off the F5 BIG-IP&lt;/p&gt;  &lt;p&gt;&lt;b&gt;CACert.crt&lt;/b&gt; = the crt file that you got off the F5 BIG-IP&lt;/p&gt;  &lt;p&gt;15. After you type the command and hit enter, you will be prompted for a password. You can use any password that you like but you will need to remember it because IIS asks you for the same password when you go to import it.&lt;/p&gt;  &lt;p&gt;16. OpenSSL will compile a new .pfx file for you in the C:/OpenSSL/bin directory. Take that SSL certificate and copy it over to your web server.&lt;/p&gt;  &lt;p&gt;17. RDP over to the server and open IIS. Again here is the disclaimer, DO NOT USE THE IIS CONSOLE ON YOUR LOCAL MACHINE. Right-click on the Live Meeting web site that you created and click on the Directory Security tab. Under “Secure Communications”, click the “Server Certificate…” button.&lt;/p&gt;  &lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/naladar/2010/Apr/WLW-BIGIPLTMandLiveMeetingPortalServer_A44E-clip_image012_2.jpg"  class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'1abba890'})" &gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image012" border="0" alt="clip_image012" title="clip_image012" src="/Portals/0/images/metapost/News-Articles/naladar/2010/Apr/WLW-BIGIPLTMandLiveMeetingPortalServer_A44E-clip_image012_thumb.jpg" width="244" height="237" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;18. Click Next and then click the “Import a certificate from a .pfx file” radio button and click next. Browse to the .pfx file that you uploaded to the web server. Click next and enter your password information that you used when you created the certificate. Then finish clicking through the wizard. Then restart IIS on the server and delete the certificate off of your local machine. This completes the IIS setup. Now move on to the Live Meeting Portal setup.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Live Meeting Portal Setup&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;19. Navigate to the URL:&lt;/p&gt;  &lt;p&gt;&lt;a href="https://livemeeting.mycompany.com/LMPortal/settings.aspx"&gt;https://livemeeting.mycompany.com/LMPortal/settings.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Where livemeeting.mycompany.com is the name of the website you setup. The screen will look like the one shown on the next page. This is the Settings-Portal Configuration page. You will want to use the following settings which are also pictured in the screenshot on the next page.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Conference Center URL&lt;/b&gt; = https://www.livemeeting.com/cc/mycompany&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Conference Center Administrator&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;User Id = &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Password = &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Email address for escalation = &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Enabled Portal Services = &lt;/b&gt;Check the Account Create, Account Login, Account Update and Web Method Calls&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Ticket Timeout = &lt;/b&gt;300 Seconds&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Directory Service Parameters =&lt;/b&gt; AccountNamePolicy=LogonUsername&lt;/p&gt;  &lt;p&gt;20. Then click Save. If you receive an error at this point, refer back to step #7.&lt;/p&gt;  &lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/naladar/2010/Apr/WLW-BIGIPLTMandLiveMeetingPortalServer_A44E-clip_image014_2.jpg"  class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'1abba890'})" &gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image014" border="0" alt="clip_image014" title="clip_image014" src="/Portals/0/images/metapost/News-Articles/naladar/2010/Apr/WLW-BIGIPLTMandLiveMeetingPortalServer_A44E-clip_image014_thumb.jpg" width="244" height="157" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;21. Click on the Roles link on the left side of the page. This will take you to the Roles-Portal Configuration page. Under “Live Meeting Administrators” add the users who will be the Live Meeting Administrators. Use domain\name format. IE: mydomain\username&lt;/p&gt;  &lt;p&gt;22. Then under the “Live Meeting Organizers” settings I recommend adding the “Domain Users” from the varies domains on your network. So if you have three domains on you network named ABC, 123 and XYZ you would list ABC\Domain Users, 123\Domain Users and XYZ\Domain Users.&lt;/p&gt;  &lt;p&gt;23. Then click the “Export Configurations Settings” link on the left hand side of the page. This is not really labeled right because what it actually does is back up your configuration. If you mess something up in the running configuration, simply click on the “Import Configuration Settings” to restore the last configuration that you exported.&lt;/p&gt;  &lt;p&gt;24. Then click on the “Events” link on the left side of the page. Change the log file directory to a directory that you want to have all the logs written into. In this example I chose the E: drive of the server I was working on. Whether you create a new one or use an existing one you must make sure that the “Network Service” account has permissions on that folder to Read, Write and Modify. Otherwise you will receive a nasty .NET error when you go to save the changes you just made. Click Save.&lt;/p&gt;  &lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/naladar/2010/Apr/WLW-BIGIPLTMandLiveMeetingPortalServer_A44E-clip_image016_2.jpg"  class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'1abba890'})" &gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image016" border="0" alt="clip_image016" title="clip_image016" src="/Portals/0/images/metapost/News-Articles/naladar/2010/Apr/WLW-BIGIPLTMandLiveMeetingPortalServer_A44E-clip_image016_thumb.jpg" width="244" height="20" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Live Meeting Portal Server BIG-IP LTM Setup&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The BIG-IP LTM set up for this is very easy to configure. You will need to create nodes for each of your web servers, assign them to a pool named “Live_Meeting_Pool” and then create a Virtual Server for the application. I named my virtual server “Live Meeting” in the example pictured below. You may need to customize it to match your environment, but the basic settings are:&lt;/p&gt;  &lt;p&gt;Service Port: 443&lt;/p&gt;  &lt;p&gt;Type: Standard&lt;/p&gt;  &lt;p&gt;Protocol: TCP&lt;/p&gt;  &lt;p&gt;Protocol Profile (Client): tcp&lt;/p&gt;  &lt;p&gt;HTTP Profile: http&lt;/p&gt;  &lt;p&gt;SSL Profile (Client): wildcard&lt;/p&gt;  &lt;p&gt;SSL Profile (Server): serverssl&lt;/p&gt;  &lt;p&gt;I also assigned the Live_Meeting_Pool to the Virtual Server, set the Default Persistence Profile to “Cookie” and Fallback Persistence Profile to source address.&lt;/p&gt;  &lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/naladar/2010/Apr/WLW-BIGIPLTMandLiveMeetingPortalServer_A44E-clip_image018_2.jpg"  class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'1abba890'})" &gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image018" border="0" alt="clip_image018" title="clip_image018" src="/Portals/0/images/metapost/News-Articles/naladar/2010/Apr/WLW-BIGIPLTMandLiveMeetingPortalServer_A44E-clip_image018_thumb.jpg" width="139" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;-naladar&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.TheF5Guy.com"&gt;www.TheF5Guy.com&lt;/a&gt;&lt;/p&gt;&lt;div class="d_itc_f" style="clear:both;height:11px;"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;</description><pubDate>Tue, 27 Apr 2010 14:34:38 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084364/BIG-IP-LTM-and-Live-Meeting-Portal-Server.aspx#Comments</comments><slash:comments>1</slash:comments><dc:creator>naladar</dc:creator></item><item><title>Holistic Monitoring and Auto Configuration using the F5 Management Pack and IIS 7</title><link>http://devcentral.f5.com/weblogs/jhendrickson/archive/2010/04/23/holistic-monitoring-and-auto-configuration-using-the-f5-management-pack.aspx</link><description>&lt;p&gt;I think we're all aware that the overall health of anything but a very simple application depends on all of the various components’ health, such as the web server, the overall operating system, the BIG-IP pool members, and potentially the virtual machine that the web server runs on. The traditional way of taking all of these components into account is to periodically test the end result: Is the site responding to pings? Is anyone complaining?&lt;/p&gt;  &lt;p&gt;The Application Designer for IIS 7 is an extension to the F5 Management Pack that enables a more comprehensive, holistic view of your application's health in Operations Manager:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/HolisticMonitoringandAutoConfigurationus_A406/main_4.gif"&gt;&lt;img title="main" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="514" alt="main" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/HolisticMonitoringandAutoConfigurationus_A406/main_thumb_1.gif" width="1066" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In the diagram above (annotations in red text), each BIG-IP pool member is paired with it's related components, and together represent an 'Application Instance'. The health of the App Instance by default represents the worst health of any of it's member components. In turn, the overall application's health depends on at least one of the App Instances being healthy as well as the health of the virtual server.&lt;/p&gt;  &lt;p&gt;This has some great practical uses beyond just the pretty diagram. For example:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Your BIG-IP pool member may healthy because the HTTP monitor on the BIG-IP is succeeding, but one of the other components may have detected a serious problem such as dangerously low memory or compromised security. In this case, the app instance will go into a critical state and can be configured to fire an alert or take remedial action such as disabling the BIG-IP pool member.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;If the BIG-IP’s monitor indicates that the web site is down, many of possibly culprits of the outage are quickly in view for root cause analysis.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Statistics from the various components are all available and can be aggregated to gain a much better idea of how your application is responding and whether it needs to be scaled up      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Monitoring on the BIG-IP can be replaced by the monitoring included in this pack, reducing load on the BIG-IP &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This application designer has two primary uses cases:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;BIG-IP Auto-Configuration: &lt;/strong&gt;You have the option of creating applications where the BIG-IP has not yet been configured with any pool members, pools, or virtual servers. Here is an example of a newly created application that targets a BIG-IP whose LTM configuration is blank:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/HolisticMonitoringandAutoConfigurationus_A406/AfterAppCreate_edited_2.gif"&gt;&lt;img title="AfterAppCreate_edited" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="500" alt="AfterAppCreate_edited" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/HolisticMonitoringandAutoConfigurationus_A406/AfterAppCreate_edited_thumb.gif" width="831" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;As you can see, there is no virtual server and there are no pool members shown. The application and the applications instances are red, in this case meaning that the BIG-IP objects need to be configured. Here are the related alerts:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/HolisticMonitoringandAutoConfigurationus_A406/AlertsAfterAppCreate_edited_2.gif"&gt;&lt;img title="AlertsAfterAppCreate_edited" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="171" alt="AlertsAfterAppCreate_edited" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/HolisticMonitoringandAutoConfigurationus_A406/AlertsAfterAppCreate_edited_thumb.gif" width="675" border="0" /&gt;&lt;/a&gt;  &lt;br /&gt;&lt;/p&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p&gt;Tasks are available for each of these alerts that create the VIP, pool, and pool members on the BIG-IP according to best practices for IIS websites including configuring profiles for optimal performance.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Application Monitoring: &lt;/strong&gt;If your BIG-IP is already configured or you would like to manually configure it, you can opt to simply discover your existing configuration. When you discover an existing configuration, the diagram looks like the first screenshot in this post right out of the box.&lt;/p&gt;  &lt;p&gt;I hope that you’ll find this extension brings the dream of a “single pane of glass” closer to a reality. Here are some resources on this pack – watch for more to emerge in the near future:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=217"&gt;Download the extension pack&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Video Tutorials:      &lt;ul&gt;       &lt;li&gt;&lt;a href="http://vimeo.com/11061750"&gt;App Designer for IIS Part I: Auto-Configuring a BIG-IP&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://vimeo.com/11061725"&gt;App Designer for IIS Part II: Discovering an Existing App&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://vimeo.com/11061630"&gt;App Designer for IIS Part III: Modifying Mapping Scripts&lt;/a&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/ApplicationDesigner.html"&gt;F5 Management Pack Application Designer Wiki Documentation&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://vimeo.com/11143789"&gt; &lt;/a&gt;&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/jhendrickson/aggbug/1088175.aspx" width="1" height="1" /&gt;</description><pubDate>Fri, 23 Apr 2010 03:29:23 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/jhendrickson/archive/2010/04/23/holistic-monitoring-and-auto-configuration-using-the-f5-management-pack.aspx#comment</comments><slash:comments>3</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>Building a Microsoft SharePoint Server Application with the F5 Networks Management Pack</title><link>http://devcentral.f5.com/weblogs/druddell/archive/2010/04/23/building-a-microsoft-sharepoint-server-application-with-the-f5-networks.aspx</link><description>&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/druddell/WindowsLiveWriter/BuildingaMicrosoftSharePointServerApplic_AD42/girder_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Clip Art Graphic of a Red Guy Character " border="0" alt="Clip Art Graphic of a Red Guy Character " align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/druddell/WindowsLiveWriter/BuildingaMicrosoftSharePointServerApplic_AD42/girder_thumb.jpg" width="150" height="150" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Shipping along side the F5 Application Designer Packs, there are two typical application extensions as well.  One of these happens to be targeted at Microsoft SharePoint Server 2007.  With this extension pack, it is easy to deploy and monitor your entire SharePoint application including the important pieces of the Big-IP configuration as well.  This Application Designer profile brings together the key components of your SharePoint deployment, including the SharePoint Server objects, SharePoint Application objects, associated websites as well as any Virtual Machines or SQL Server databases you may be using.&lt;/p&gt;  &lt;p&gt;Want more? You got it! Not only will this extension pack help you detect and monitor your SharePoint application, it will also walk you through configuring of your Big-IP from scratch.  This even includes creating all of the SharePoint specific profiles, LTM Virtual Server, Pool and Pool Members settings designed to work with your SharePoint deployment.  With minimal effort, you can have your SharePoint app up and running in no time.  The configuration that we deploy for you is based on the &lt;a href="http://www.f5.com/pdf/deployment-guides/f5-sharepoint07-dg.pdf" target="_blank"&gt;Big-IP v9.x and Microsoft Office SharePoint 2007 Deployment Guide&lt;/a&gt;.  This guide and others can be found here: &lt;a href="http://www.f5.com/solutions/resources/deployment-guides/" target="_blank"&gt;F5 Networks Deployment Guides&lt;/a&gt;.  Keep in mind that the configuration we deploy is the very basic configuration to get you up and running.  If you wish to tweak the settings to use your Web Accelerator or other Big-IP Modules, you will have to finish those steps manually through the devices Configuration Utility.  &lt;/p&gt;  &lt;p&gt;Below are three videos to demonstrate how easy it can be to discover and configure the F5 SharePoint Application Designer.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://vimeo.com/11143085" href="http://vimeo.com/11143085" target="_blank"&gt;Demonstration of the F5 Application Designer SharePoint 2007 Pack&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://vimeo.com/11143335" href="http://vimeo.com/11143335" target="_blank"&gt;Demonstration of the F5 Application Designer SharePoint 2007 Pack With No Big-IP Configuration&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://vimeo.com/11143789" href="http://vimeo.com/11143789" target="_blank"&gt;How to Setup and Configure the F5 Application Designer SharePoint 2007 Pack&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;For further information, please visit our Wiki documentation from the following link:  &lt;a title="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/ApplicationDesigner.html" href="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/ApplicationDesigner.html"&gt;F5 Management Pack Application Designer Wiki Documentation&lt;/a&gt;&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/druddell/aggbug/1088173.aspx" width="1" height="1" /&gt;</description><pubDate>Fri, 23 Apr 2010 01:55:30 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/druddell/archive/2010/04/23/building-a-microsoft-sharepoint-server-application-with-the-f5-networks.aspx#comment</comments><slash:comments>5</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>Announcing the 2.0 Wave of the F5 Management Pack and Data Center Orchestration</title><link>http://devcentral.f5.com/weblogs/sfisher/archive/2010/04/19/announcing-the-2.0-wave-of-the-f5-management-pack-and.aspx</link><description>&lt;p&gt;I’m excited to announce the next wave of the &lt;a href="http://devcentral.f5.com/mpack"&gt;F5 Management Pack and related Data Center Orchestration technologies&lt;/a&gt;. Some of the scenarios that we are enabling in this release include It’s no coincidence that this week is also the annual &lt;a href="http://www.mms-2010.com/" target="_blank"&gt;Microsoft Management Summit&lt;/a&gt;, currently being held in Las Vegas, Nevada.&lt;/p&gt;  &lt;p&gt;New and Updated &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=217"&gt;F5 Management Pack downloads available in the 2.0 release&lt;/a&gt; include:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Core F5 Management Pack (x86 and x64): &lt;/strong&gt;Improved support for GTM Virtual Server health, more graceful and transparent handling of discovery and configuration update errors, centralized Orchestration logging configuration.&lt;/p&gt;    &lt;p&gt; &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;PRO-Enabled F5 Management Pack for System Center Virtual Machine Manager:&lt;/strong&gt; Improved PRO Tip diagnostics and recovery information&lt;/p&gt;    &lt;p&gt; &lt;/p&gt;    &lt;h3&gt;Network Application Designers&lt;/h3&gt;    &lt;p&gt;Tools and views that enable Data Center Administrators to quickly and easily model, configure, and optimize their network applications. The Designers provide alerts, tasks, and views for &lt;strong&gt;&lt;em&gt;automatically discovering application servers&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;one-step configuring of the BIG-IP tailored to each application&lt;/em&gt;&lt;/strong&gt; (e.g. Microsoft SharePoint 2007, Microsoft IIS 2008, etc.).&lt;/p&gt;    &lt;p&gt;With the newly integrated network application designers, the F5 Management Pack enables &lt;em&gt;&lt;strong&gt;significant improvements to application-based load balancing&lt;/strong&gt;&lt;/em&gt;. For example, your BIG-IP LTM will now receive direct diagnostic and performance information from the F5 MPk about application availability, failure analysis, and application server performance.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;For example, your Data Center Administrator will now be able to reprovision Application Server hardware and software resources, and the BIG-IP LTM will automatically be fed the updated server capacity information to rebalance traffic appropriately. In virtualized and heterogenous hardware environments, this will save configuration costs, streamline process communication, and reduce traffic bottleneck issues due to misaligned capacity.&lt;/p&gt;    &lt;p&gt;With the Designer’s automatic discovery and configuration framework, your Data Center Administrator can add and remove application servers from service pools, and the BIG-IP can be quickly, directly, and more easily configured.&lt;/p&gt;    &lt;p&gt;Finally, with a single pane of glass to model and view your service front end and the application server and network objects, you can more directly identify issues on a per instance basis, separate server from network issues, while monitoring, aligning and synchronizing all of the health and configuration for each instance.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Throughout the week, the F5 Management Pack and Data Center Orchestration team will be posting more blogs and videos explaining all of the new features, easy how-to-videos on enabling and configuring the new features, and updates to the F5 DevCentral Management Pack wiki.&lt;/p&gt;  &lt;p&gt;We’re not only excited to releasing a tremendous amount of innovative technology bridging the application and network. We’re really excited to help you better leverage your existing application server and BIG-IP investments, simplify your administration tasks, and save you time and resources.&lt;/p&gt;  &lt;p&gt;Thank you,&lt;/p&gt;  &lt;p&gt;Stephen Fisher&lt;/p&gt;  &lt;p&gt;Product Development Manager, F5 Management Pack &amp;amp; Data Center Orchestration Technologies&lt;/p&gt;  &lt;p&gt;F5 Networks&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/sfisher/aggbug/1088159.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 19 Apr 2010 03:42:08 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/sfisher/archive/2010/04/19/announcing-the-2.0-wave-of-the-f5-management-pack-and.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>Working with High-Availability Pairs and the F5 Networks Management Pack</title><link>http://devcentral.f5.com/weblogs/druddell/archive/2010/04/16/working-with-high-availability-pairs-and-the-f5-networks-management-pack.aspx</link><description>&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/druddell/WindowsLiveWriter/WorkingwithHighAvailabilityPairsandtheF5_834A/doctor_2.jpg"&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Clip Art Graphic of a Red Guy Character " border="0" alt="Clip Art Graphic of a Red Guy Character " align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/druddell/WindowsLiveWriter/WorkingwithHighAvailabilityPairsandtheF5_834A/doctor_thumb.jpg" width="150" height="148" /&gt;&lt;/a&gt;With our latest release of the &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=214" target="_blank"&gt;F5 Networks Management Pack&lt;/a&gt;, health visibility and configuration of failover conditions has never been better.  The release includes updates to the existing failover health model which not only allows you to see what your failover peer is, but also allows for synchronization of configuration between the devices and the configuration of software triggered failover.  What does this mean for you?  Well now you have the ability to configure when a device fails over strictly based on the health of the device in question.  Not only that, but with the availability of the peer address property on the device, users now have the flexibility to write their own custom scripts, alerts and failover scenarios based on the health of the failover peer as well.&lt;/p&gt;  &lt;p&gt;Health-based failover gives users the ability to choose when a device will automatically fail over to its peer based on a specifically chosen statistic and threshold.  For instance, say the hard drive on your Big-IP is filling up do to enormous log sizes.  Place a threshold value at 15 GB and when the drive space usage breaches the 15 GB mark, the device will automatically fail over to its peer.  &lt;/p&gt;  &lt;p&gt;Another new feature in this release is better config-sync handling.  By default, if device redundancy is detected, any configuration changes made on one device will set a warning flag on the peer device, letting you know that the devices may be out of sync.  You can manually reset the state of this monitor or run one of the Synchronize Configuration tasks.  Keep in mind that this only applies to changes made through Operations Manager, not changes made through the built-in Configuration Utility on the Big-IP itself.  This monitor can be turned off if you wish not to receive the warning state for out-of-sync devices.&lt;/p&gt;  &lt;p&gt;Here are some video links to demonstrate the new features:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://vimeo.com/10984371" href="http://vimeo.com/10984371" target="_blank"&gt;Demonstration of Software Triggered Failover&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://vimeo.com/10984632" href="http://vimeo.com/10984632" target="_blank"&gt;Demonstration of Object Level Sync&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Along with videos showing how to set up and configure the new features to work in your deployment:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://vimeo.com/10984470" href="http://vimeo.com/10984470" target="_blank"&gt;Configuring the F5 Management Pack for Software Triggered Failover&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://vimeo.com/10984739" href="http://vimeo.com/10984739" target="_blank"&gt;Configuring the F5 Management Pack for Object Level Sync&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Basic configuration and documentation of these features is also available on our &lt;a href="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/HomePage.html" target="_blank"&gt;Management Pack Wiki&lt;/a&gt; page.&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/druddell/aggbug/1088157.aspx" width="1" height="1" /&gt;</description><pubDate>Fri, 16 Apr 2010 04:19:37 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/druddell/archive/2010/04/16/working-with-high-availability-pairs-and-the-f5-networks-management-pack.aspx#comment</comments><slash:comments>12</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>iControl Development with BIG-IP LTM VE - Part 2</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084349/iControl-Development-with-BIG-IP-LTM-VE--Part-2.aspx</link><description>&lt;p&gt;So now that we've got a vLTM installed and running, what can we do with it... There's a lot of examples out there of perl, python and Java. But not a lot of C...&lt;br /&gt;
&amp;#160;&lt;/p&gt;
&lt;p&gt;I've also got an iPhone... Sadly we can't use my favourite SOAP programming language on the iPhone. In case you're wondering that's perl. Why perl? Well, mainly I'm a bit lazy, and perl does everything for you... Obviously you're more productive when that's the case, and the SOAP::Lite module has spoiled me for years I'm afraid, but it's time to do some hacking (And in the early days it gets quite ugly) in what I'd consider to be a rather obscure variant of C. Yes, it's Objective-C...&lt;/p&gt;
&lt;p&gt;Like I've mentioned, the network map is a cool feature. One page showing your BigIP status. Virtual Servers, Default Pools, iRules, PoolMembers etc... Wouldn't that be nice on your iPhone? (Or better yet, your iPad). Obviously some things need to be altered a bit, the iPhone screen isn't exactly the best for viewing a lot of information at once, but it's nice to be able to pull it out of your pocket and quickly check the status when in a meeting...&lt;/p&gt;
&lt;p&gt;But this isn't about iPhone programming. It's about getting your iPhone to talk to BigIP. And for that we use iControl. The F5 SOAP API to monitor and control an F5 appliance.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;font size="4"&gt;&lt;span style="font-size: 14px;"&gt;Opening a connection&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;First off. How to talk to the F5... Well, iControl is a SOAP interface. And this is based upon HTTP. Basically we open an HTTPS connection to the iControl server and send it a few pages of XML that tell it what we want it to do. Then it sends us several more pages of XML to tell us the 4 or so lines we wanted to know... (In case you get the opinion I think SOAP and XML are a wee bit excessive, you're probably right).&lt;/p&gt;
&lt;p&gt;In objective-C we do something like this&lt;/p&gt;
&lt;p style="font: 11px Menlo;"&gt;&lt;font face="'Courier New'"&gt;-(&lt;/font&gt;&lt;span style="color: rgb(67, 131, 136);"&gt;&lt;font face="'Courier New'"&gt;XMLNode&lt;/font&gt;&lt;/span&gt; &lt;font face="'Courier New'"&gt;*)queryF5:(&lt;/font&gt;&lt;span style="color: rgb(125, 26, 173);"&gt;&lt;font face="'Courier New'"&gt;NSString&lt;/font&gt;&lt;/span&gt; &lt;font face="'Courier New'"&gt;*)operation namespace:(&lt;/font&gt;&lt;span style="color: rgb(125, 26, 173);"&gt;&lt;font face="'Courier New'"&gt;NSString&lt;/font&gt;&lt;/span&gt; &lt;font face="'Courier New'"&gt;*)namespace params:(&lt;/font&gt;&lt;span style="color: rgb(125, 26, 173);"&gt;&lt;font face="'Courier New'"&gt;NSMutableDictionary&lt;/font&gt;&lt;/span&gt; &lt;font face="'Courier New'"&gt;*)params {&lt;/font&gt;&lt;/p&gt;
&lt;p style="font: 11px Menlo;"&gt;&lt;span style="color: rgb(223, 0, 14);"&gt;&lt;span style="color: rgb(125, 26, 173);"&gt;&lt;font face="'Courier New'"&gt;NSString&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;*targetURL = [&lt;/font&gt;&lt;/span&gt;&lt;span style="color: rgb(125, 26, 173);"&gt;&lt;font face="'Courier New'"&gt;NSString&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(73, 0, 132);"&gt;&lt;font face="'Courier New'"&gt;stringWithFormat&lt;/font&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;:&lt;/font&gt;&lt;/span&gt; &lt;font face="'Courier New'"&gt;@"https://%@:%@@%@:443/iControl/iControlPortal.cgi"&lt;/font&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;,&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(67, 131, 136);"&gt;&lt;font face="'Courier New'"&gt;adminUser&lt;/font&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;,&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(67, 131, 136);"&gt;&lt;font face="'Courier New'"&gt;adminPass&lt;/font&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;,&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(67, 131, 136);"&gt;&lt;font face="'Courier New'"&gt;managementHost&lt;/font&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;];&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="min-height: 13px; font: 11px Menlo;"&gt;&amp;#160;&lt;/p&gt;
&lt;p style="font: 11px Menlo; color: rgb(223, 0, 14);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(125, 26, 173);"&gt;&lt;font face="'Courier New'"&gt;NSMutableURLRequest&lt;/font&gt;&lt;/span&gt; &lt;font face="'Courier New'"&gt;*req = [&lt;/font&gt;&lt;span style="color: rgb(67, 131, 136);"&gt;&lt;font face="'Courier New'"&gt;SOAPRequest&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(39, 90, 94);"&gt;&lt;font face="'Courier New'"&gt;requestForOperation&lt;/font&gt;&lt;/span&gt;&lt;font face="'Courier New'"&gt;:operation&lt;/font&gt;&lt;/span&gt;&lt;font face="'Courier New'"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p style="font: 11px Menlo;"&gt;&lt;span style="color: rgb(39, 90, 94);"&gt;&lt;font face="'Courier New'"&gt;atURL&lt;/font&gt;&lt;/span&gt;&lt;font face="'Courier New'"&gt;:]&lt;/font&gt;&lt;span style="color: rgb(125, 26, 173);"&gt;&lt;font face="'Courier New'"&gt;NSURL&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(73, 0, 132);"&gt;&lt;font face="'Courier New'"&gt;URLWithString&lt;/font&gt;&lt;/span&gt;&lt;font face="'Courier New'"&gt;: targetURL[&lt;/font&gt;&lt;/p&gt;
&lt;p style="font: 11px Menlo;"&gt;&lt;span style="color: rgb(39, 90, 94);"&gt;&lt;font face="'Courier New'"&gt;withNamespace&lt;/font&gt;&lt;/span&gt;&lt;font face="'Courier New'"&gt;:namespace&lt;/font&gt;&lt;/p&gt;
&lt;p style="font: 11px Menlo;"&gt;&lt;span style="color: rgb(39, 90, 94);"&gt;&lt;font face="'Courier New'"&gt;withParameters&lt;/font&gt;&lt;/span&gt;&lt;font face="'Courier New'"&gt;:params];&lt;/font&gt;&lt;/p&gt;
&lt;p style="font: 11px Menlo; color: rgb(73, 0, 132);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;[req&lt;/font&gt;&lt;/span&gt; &lt;font face="'Courier New'"&gt;setTimeoutInterval&lt;/font&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;span style="color: rgb(70, 0, 221);"&gt;&lt;font face="'Courier New'"&gt;10&lt;/font&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="min-height: 13px; font: 11px Menlo;"&gt;&amp;#160;&lt;/p&gt;
&lt;p style="font: 11px Menlo; color: rgb(0, 140, 0);"&gt;&lt;span style="color: rgb(125, 26, 173);"&gt;&lt;font face="'Courier New'"&gt;NSURLResponse&lt;/font&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;*resp;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="'Courier New'"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p style="font: 11px Menlo; color: rgb(73, 0, 132);"&gt;&lt;span style="color: rgb(125, 26, 173);"&gt;&lt;font face="'Courier New'"&gt;NSData&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;*respData = [&lt;/font&gt;&lt;/span&gt;&lt;span style="color: rgb(125, 26, 173);"&gt;&lt;font face="'Courier New'"&gt;NSURLConnection&lt;/font&gt;&lt;/span&gt; &lt;font face="'Courier New'"&gt;sendSynchronousRequest&lt;/font&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;:req&lt;/font&gt;&lt;/span&gt; &lt;font face="'Courier New'"&gt;returningResponse&lt;/font&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;:&amp;amp;resp&lt;/font&gt;&lt;/span&gt; &lt;font face="'Courier New'"&gt;error&lt;/font&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;span style="color: rgb(202, 0, 165);"&gt;&lt;font face="'Courier New'"&gt;nil&lt;/font&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="font: 11px Menlo; color: rgb(73, 0, 132);"&gt;&lt;span style="color: rgb(125, 26, 173);"&gt;&lt;font face="'Courier New'"&gt;NSString&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;*debugString = []&lt;/font&gt;&lt;/span&gt;&lt;span style="color: rgb(125, 26, 173);"&gt;&lt;font face="'Courier New'"&gt;NSString&lt;/font&gt;&lt;/span&gt; &lt;font face="'Courier New'"&gt;alloc&lt;/font&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;[&lt;/font&gt;&lt;/span&gt; &lt;font face="'Courier New'"&gt;initWithData&lt;/font&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;:respData&lt;/font&gt;&lt;/span&gt; &lt;font face="'Courier New'"&gt;encoding&lt;/font&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;font face="'Courier New'"&gt;NSUTF8StringEncoding&lt;/font&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;];&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="font: 11px Menlo; color: rgb(223, 0, 14);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(202, 0, 165);"&gt;&lt;font face="'Courier New'"&gt;if&lt;/font&gt;&lt;/span&gt; &lt;font face="'Courier New'"&gt;(respData ==&lt;/font&gt; &lt;span style="color: rgb(202, 0, 165);"&gt;&lt;font face="'Courier New'"&gt;nil&lt;/font&gt;&lt;/span&gt;&lt;font face="'Courier New'"&gt;) {&lt;/font&gt;&lt;/span&gt;&lt;font face="'Courier New'"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p style="font: 11px Menlo; color: rgb(223, 0, 14);"&gt;&lt;font color="#490084"&gt;&lt;font face="'Courier New'"&gt;//&lt;/font&gt;&lt;/font&gt; &lt;font face="'Courier New'"&gt;Error while sending SOAP request"&lt;/font&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;);&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="font: 11px Menlo; color: rgb(202, 0, 165);"&gt;&lt;font face="'Courier New'"&gt;return nil&lt;/font&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="font: 11px Menlo;"&gt;&lt;font face="'Courier New'"&gt;}&lt;/font&gt;&lt;/p&gt;
&lt;p style="font: 11px Menlo; color: rgb(223, 0, 14);"&gt;&lt;span style="color: rgb(73, 0, 132);"&gt;&lt;font face="'Courier New'"&gt;//&lt;/font&gt;&lt;/span&gt; &lt;font face="'Courier New'"&gt;Successfully sent SOAP request, getting response&lt;/font&gt;&lt;/p&gt;
&lt;p style="font: 11px Menlo;"&gt;&lt;span style="color: rgb(67, 131, 136);"&gt;&lt;font face="'Courier New'"&gt;XMLNode&lt;/font&gt;&lt;/span&gt; &lt;font face="'Courier New'"&gt;*response = [&lt;/font&gt;&lt;span style="color: rgb(67, 131, 136);"&gt;&lt;font face="'Courier New'"&gt;SOAPResponse&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(39, 90, 94);"&gt;&lt;font face="'Courier New'"&gt;responseWi&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="font: 11px Menlo;"&gt;&lt;span style="color: rgb(202, 0, 165);"&gt;&lt;font face="'Courier New'"&gt;return&lt;/font&gt;&lt;/span&gt; &lt;font face="'Courier New'"&gt;response;&lt;/font&gt;&lt;/p&gt;
&lt;p style="font: 11px Menlo;"&gt;&lt;font face="'Courier New'"&gt;}&lt;/font&gt;&lt;/p&gt;
&lt;p style="min-height: 13px; font: 11px Menlo;"&gt;&lt;font face="Helvetica"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p style="min-height: 13px; font: 11px Menlo;"&gt;&lt;font face="Helvetica"&gt;&lt;font size="3"&gt;&lt;span style="font-size: 12px;"&gt;What does this do? Well, ignoring the fact that some of the variables are seemingly appearing out of thin air (They're not really, they are class member variables. e.g. the adminUser, adminPass etc). First we setup the URL we want to talk to. That's the string&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="min-height: 13px; font: 11px Menlo;"&gt;&lt;font size="3" face="Helvetica"&gt;&lt;span style="font-size: 12px;"&gt;&lt;span style="font-family: 'Courier New'; color: rgb(223, 0, 14); font-size: 11px;"&gt;"https://%@:%@@%@:443/iControl/iControlPortal.cgi"&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="min-height: 13px; font: 11px Menlo;"&gt;&lt;font size="3" face="Helvetica"&gt;&lt;span style="font-size: 12px;"&gt;and we replace all those %@'s with the adminUser, adminPassword and ManagementHost respectively. I'll leave the discussion of what those variables actually are to their descriptive names. But basically we're accessing a URL using (semi) standard URL format. Note that the semi-standard nature of this format is due to the fact that the user:password@host is not actually a part of the HTTP standards. It's an extension made popular by usage only. And luckily the F5's recognise and respond to it.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="min-height: 13px; font: 11px Menlo;"&gt;&lt;font size="3" face="Helvetica"&gt;&lt;span style="font-size: 12px;"&gt;Even though I said this wasn't about iPhone programming, in iPhone world, there is one extra piece of work we have to do. By default an F5 uses a self-signed cert for the HTTPS connection we're using for iControl. And by default an iPhone the iPhone wants to verify the cert trust. Which of course it can't. So we need to over-ride the check. That's done with a piece of code I found on the net...&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="min-height: 13px; font: 11px Menlo;"&gt;&lt;font size="3" face="Helvetica"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p style="min-height: 13px; font: 11px Menlo;"&gt;&amp;#160;&lt;/p&gt;
&lt;p style="font: 11px Menlo;"&gt;&lt;font size="3" face="Helvetica"&gt;&lt;span style="font-size: 12px;"&gt;&lt;span style="color: rgb(202, 0, 165);"&gt;&lt;font face="'Courier New'"&gt;@implementation&lt;/font&gt;&lt;/span&gt; &lt;font face="'Courier New'"&gt;NSURLRequest(DataController)&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="font: 11px Menlo;"&gt;&lt;font size="3" face="Helvetica"&gt;&lt;font face="'Courier New'"&gt;+ (&lt;/font&gt;&lt;span style="color: rgb(202, 0, 165);"&gt;&lt;font face="'Courier New'"&gt;BOOL&lt;/font&gt;&lt;/span&gt;&lt;font face="'Courier New'"&gt;)allowsAnyHTTPSCertificateForHost:(&lt;/font&gt;&lt;span style="color: rgb(125, 26, 173);"&gt;&lt;font face="'Courier New'"&gt;NSString&lt;/font&gt;&lt;/span&gt; &lt;font face="'Courier New'"&gt;*)host&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="font: 11px Menlo;"&gt;&lt;font size="3" face="Helvetica"&gt;&lt;font face="'Courier New'"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="font: 11px Menlo; color: rgb(0, 140, 0);"&gt;&lt;font size="3" face="Helvetica"&gt;&lt;span style="color: rgb(202, 0, 165);"&gt;&lt;font face="'Courier New'"&gt;return&lt;/font&gt;&lt;/span&gt; &lt;span style="color: rgb(202, 0, 165);"&gt;&lt;font face="'Courier New'"&gt;YES&lt;/font&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;font face="'Courier New'"&gt;;&lt;/font&gt;&lt;/span&gt; &lt;font face="'Courier New'"&gt;// Should probably return YES only for a specific host&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="font: 11px Menlo;"&gt;&lt;font face="'Courier New'"&gt;}&lt;/font&gt;&lt;/p&gt;
&lt;p style="font: 11px Menlo; color: rgb(202, 0, 165);"&gt;&lt;font face="'Courier New'"&gt;@end&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3" face="Menlo" color="#ca00a5"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p style="min-height: 13px; font: 11px Menlo;"&gt;&lt;font size="3" face="Helvetica"&gt;&lt;span style="font-size: 12px;"&gt;Which over-rides the certificate check for the NSURLRequest class we're using to make a SOAP request.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="min-height: 13px; font: 11px Menlo;"&gt;&lt;font size="3" face="Helvetica"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p style="min-height: 13px; font: 11px Menlo;"&gt;&lt;b&gt;&lt;font size="4" face="Helvetica"&gt;&lt;span style="font-size: 14px;"&gt;Next Time&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style="min-height: 13px; font: 11px Menlo;"&gt;&lt;font size="3" face="Helvetica"&gt;&lt;span style="font-size: 12px;"&gt;Well. Next time I'll show an actual request and response. And the work that goes into decoding an XML response from a SOAP server. I'd doit in perl, but that's so easy, it's only worth a few lines of code and saying go for it... Doing it in C (Or objective-C in this case) is a fairly surprising piece of work.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="min-height: 13px; font: 11px Menlo;"&gt;&lt;font size="3" face="Helvetica"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Other Random Notes&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Static IP's... Normally you'd run an LTM with either a full-blown DHCP/DDNS architecture, or with a static IP. Most likely a static IP. However in the vLTM world, we're presented with a DHCP configuration on the vLTM and an environment (IN VMWare Fusion) that doesn't really do DDNS, and has a nasty habit of allocating a new IP everytime you suspend your laptop... There are plenty of reasons that I like to run static IP's on my LTM's, but vLTM seems remarkably resistant to allowing this (It may be a bug?). The result is to configure a static IP I had to resort to the command line config utility... I haven't used that since v4...&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="height: 11px; clear: both;" class="d_itc_f"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;]</description><pubDate>Mon, 12 Apr 2010 02:00:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084349/iControl-Development-with-BIG-IP-LTM-VE--Part-2.aspx#Comments</comments><slash:comments>0</slash:comments><dc:creator>hamish@travellingkiwi.com</dc:creator></item><item><title>BIG-IP Logging and Reporting Toolkit &amp;ndash; part four</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084353/BIG-IP-Logging-and-Reporting-Toolkit-ndash-part-four.aspx</link><description>&lt;script type="text/javascript" src="/DesktopModules/itcMetaPost/js/ca0c21fbdc85f6a1597417732d450607.ashx?hs=1"&gt;&lt;/script&gt;
&lt;p&gt;So far we’ve covered the initial problem, the players involved and one in-depth analysis of one of the options (splunk). Next let’s dig into Q1labs’ Qradar offering.&amp;#160; The first thing you’ll need to do, just like last time, is make sure your BIG-IP to pass syslog traffic off the box.&amp;#160; Here’s a simple example of how you can get that done in your config file.&amp;#160; These are the same as last time, so nothing shockingly new here, though this bit is important.&lt;/p&gt;
&lt;p&gt;-&lt;strong&gt; Bigip v9 &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;syslog {&lt;/p&gt;
&lt;p&gt;&amp;#160; remote server 10.10.200.31&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;- &lt;strong&gt;Bigip v10&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;syslog {&lt;/p&gt;
&lt;p&gt;&amp;#160; remote server {&lt;/p&gt;
&lt;p&gt;&amp;#160;&amp;#160; qradar {&lt;/p&gt;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; host 10.11.100.31&lt;/p&gt;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;
&lt;p&gt;&amp;#160; }&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;This will send all syslog messages from the BIG-IP to the QRadar system; both BIG-IP system messages and any messages from iRules. If you’re interested in having iRules log to the QRadar system directly you can use the HSL statements or the log statements with a destination host defined. Ex) RULE_INIT has set ::QRadarHost “10.10.200.31” and then in the iRules event you’re interested in you assemble $log_message and then sent it to the log with log $::QRadarHost $log_message . A good practice would be to also record it locally on something like local0 incase the message doesn’t make it to the QRadar system. In my testing I used a single QRadar system running the log collector and event processor. If you’re using a more sophisticated deployment you’ll need to use the Deployment Manager to ensure that the QRadar log collectors are forwarding messages onto the Event Processor you’re going to work with. My QRadar system was already setup to receive syslog messages on port 514, so there wasn’t anything more to do to get messages flowing. The key to working with QRadar is defining regular expressions to extract the message data you’re interested in – once you have that done most things are done using the same process. In this section I’ll walk through all the tasks needed to extract custom data through build a report for the w3c case. Then I’ll show a summary using NEDS and dashboard data.&lt;/p&gt;
&lt;p&gt;Here are my regexes for QRadar for w3c, NEDS and the dashboard data script:&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;
&lt;table cellspacing="0" cellpadding="0" border="0" width="1187"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;&lt;b&gt;&lt;u&gt;message source&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;&lt;b&gt;&lt;u&gt;attribute name&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;&lt;b&gt;&lt;u&gt;regex&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;&lt;b&gt;&lt;u&gt;capture group&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;&lt;b&gt;&lt;u&gt;sample message&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;dashboard script&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;Compression Deflate uses&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;deflate\.out\.uses='(\d+)'&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in dc post&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;dashboard script&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;Compression LZO uses&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;lzo\.out\.uses='(\d+)'&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in dc post&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;dashboard script&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;Compression Null uses&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;null\.out\.uses='(\d+)'&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in dc post&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;dashboard script&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;Dashboard-messageType&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;message_type='(.+?)'&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in dc post&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;dashboard script&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;Dashboard-reportingSystem&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;HostName='(.+?)'&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in dc post&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;dashboard script&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;Dashboard-routingEnabled&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;routing='(.+?)'&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in dc post&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-Flow-clientside-http&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;"(neds\.f5\.conn\.start\.v1)",(\"[\w\.resp\.v1]+\"\,)+\"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}\-\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}@\d+\.\d+)\"&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-clientIPaddress&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;"(neds\.f5\.conn\.start\.v1","[\w\.]+)","(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;2&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-clientPort&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;"(neds\.f5\.conn\.start\.v1","[\w\.]+)","(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:)(\d{1,5})&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;3&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-clientCloseBytesIn&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;(neds\.f5\.conn\.end\.v1)","([\w\.]+)","(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5}-\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5}@\d+\.\d+)",(\d+.\d+),(\d+),(\d+),(\d+)&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;7&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-clientCloseBytesOut&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;(neds\.f5\.conn\.end\.v1)","([\w\.]+)","(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5}-\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5}@\d+\.\d+)",(\d+.\d+),(\d+),(\d+),(\d+),(\d+)&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;8&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-clientClosePktsIn&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;(neds\.f5\.conn\.end\.v1)","([\w\.]+)","(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5}-\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5}@\d+\.\d+)",(\d+.\d+),(\d+),&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;5&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-clientClosePktsOut&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;(neds\.f5\.conn\.end\.v1)","([\w\.]+)","(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5}-\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5}@\d+\.\d+)",(\d+.\d+),(\d+),(\d+)&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;6&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-clientCloseTimestamp&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;(neds\.f5\.conn\.end\.v1)","([\w\.]+)","(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5}-\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5}@\d+\.\d+)",(\d+.\d+),&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;4&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-clientConnectionIngressVlan&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;(neds[\w\.]+start\.v1\",\"[\w\.]+",")(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}-\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}@\d+\.\d+)\",(\d+\.\d+)\,"(\w+)"&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;4&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-clientConnectionPolicyName&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;(neds[\w\.]+start\.v1\",\"[\w\.]+",")(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}-\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}@\d+\.\d+)\",(\d+\.\d+)\,"(\w+)"\,(\d+),(\d+),(\d+),\"([\w\.]+)\"&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;8&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-clientConnectionStartTimestamp&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;(neds[\w\.]+start\.v1\",\"[\w\.]+",")(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}-\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}@\d+\.\d+)\",(\d+\.\d+)&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;3&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-clientIPProtocol&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;(neds[\w\.]+start\.v1\",\"[\w\.]+",")(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}-\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}@\d+\.\d+)\",(\d+\.\d+)\,"(\w+)",(\d+),&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;5&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-httpRequestHost&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;(neds\.f5\.http\.req\.v1)",("[\w\.\"\:\-\@]+)","([\w\.\:\-\@]+)",(\d+\.\d+,\d+),"([\w\.\_\-]+)&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;5&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-httpRequestServerPort&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;(neds\.f5\.http\.resp\.v1)","([\w\.]+)","([\d\.:]+)-([\d\.]+):(\d{1,5})&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;5&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-httpRequestTCPReplyNumber&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;(neds\.f5\.http\.req\.v1)",("[\w\.\"\:\-\@]+)","([\w\.\:\-\@]+)",(\d+\.\d+),(\d+)&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;5&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-httpRequestUserAgent&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;(neds\.f5\.http\.req\.v1)",("[\w\.\"\,\:\-\@]+)","([\w/\._\%\@]+)",("[\w\@\.]*?"),"([\w/\.\s(;\-\:\)]+)&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;5&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-httpResponseContentLength&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;(neds\.f5\.http\.resp\.v1)","([\w\."\,\:\-\@]+)","([\w\/\;\s\=\-]+)","(\d+)&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;4&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-httpResponseContentType&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;(neds\.f5\.http\.resp\.v1)","([\w\."\,\:\-\@]+)","([\w\/\;\s\=\-]+)&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;3&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-httpResponseLBTarget&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;(neds\.f5\.http\.resp\.v1)","([\w\.\,:\-@/;\s\="]+),"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5})"&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;3&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-reportingSystem&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;(\"neds.+[\w]\.v1\"),\"([\w.]+)\"&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;2&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-responseHTTPContentLength&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;(neds[\w\.]+resp\.v1\",\"[\w\.]+",")(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}-\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}@\d+\.\d+)\",(\d+\.\d+),(\d+),"(\d{3})","([\w\/]+)","(\d+)"&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;7&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;NEDS iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;NEDSv1-responseHTTPServerResponseCode&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;(neds[\w\.]+resp\.v1\",\"[\w\.]+",")(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}-\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}@\d+\.\d+)\",(\d+\.\d+),(\d+),"(\d{3})"&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;5&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in NEDS Spec&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;w3c iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;W3C Client IP address&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;client_ip=(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in dc post&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;w3c iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;W3C Client Port&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;client_port=(\d{1,5})&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in dc post&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;w3c iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;W3C Client username&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;username=([\w]+)&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in dc post&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;w3c iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;W3C Content Length&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;content_length=(\d+)&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in dc post&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;w3c iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;W3C HTTP Request&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;request="(.*)"\ss&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in dc post&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;w3c iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;W3C HTTP version&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;HTTP/(\d\.\d)"&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in dc post&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;w3c iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;W3C Host header&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;host=(.+?)&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in dc post&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;w3c iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;W3C Member server&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;lb_server=(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}:\d{1,5})&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in dc post&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;w3c iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;W3C Server Response Code&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;server_status=(\d{3})&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in dc post&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;w3c iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;W3C User Agent&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;user_agent="(.*)"&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in dc post&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;w3c iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;W3C VIrtual Server name&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;virtual=(.*?)\s&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in dc post&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;w3c iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;w3c Server Port&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;lb_server=\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:(\d{1,5})&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in dc post&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;w3c iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;w3c referer&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;referer=([\w\./\:\-]+)&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in dc post&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="136" valign="bottom"&gt;
            &lt;p&gt;w3c iRule&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="295" valign="bottom"&gt;
            &lt;p&gt;w3c resp_time&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="482" valign="bottom"&gt;
            &lt;p&gt;resp_time=(\d+)&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="111" valign="bottom"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="161" valign="bottom"&gt;
            &lt;p&gt;in dc post&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;font size="4"&gt;W3C offload case&lt;/font&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Now that BIG-IP is setup to send messages to the QRadar system double check to see that you’ve installed the w3c-client-logging iRule on a vip and we’ll see what it looks like when everything is put together. Login to your QRadar management console and navigate to the Events tab. You should see events streaming into QRadar if everything is configured correctly. If you can’t find what you’re looking for in the normalized events view change it to the raw view – I also opted to have my console autorefresh every minute.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image002_2.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'2a44aa6b'})"&gt;&lt;img height="263" border="0" width="917" style="border-width: 0px; display: inline;" alt="clip_image002" title="clip_image002" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image002_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There last message is the one I’m looking for. If you find a similar message and double click on it we can start to extract data from the message and build up some searches and reports. I’ve not fully customized my QRadar deployment, so I’m ignoring the fact that the Log Source for the iRule messages has been identified by the system’s FastIronDsm. After your screen is showing the Event Viewer click on the Extract Property button in the button bar. This will launch the Custom Event Property Definition tool, which will allow you to categorize event elements and write the regex for extracting the information you’re interested in. Right now, I’m interested in the HTTP server status codes.&lt;/p&gt;
&lt;p&gt;For your custom field extractions, here’s a sample message from the W3C iRule:&lt;/p&gt;
&lt;p&gt;Feb 9 14:23:21 tmm tmm[5088]: Rule w3c-client-logging : virtual=www.f5demo.com_http client_ip=65.197.145.92 client_port=37227 lb_server=10.10.200.1:80 host=www.f5demo.com username= request="GET /compression HTTP/1.0" server_status=301 content_length=322 resp_time=1 user_agent="check_http/1.96 (nagios-plugins 1.4.5)[" referer=&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image004_2.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'2a44aa6b'})"&gt;&lt;img height="606" border="0" width="932" style="border-width: 0px; display: inline;" alt="clip_image004" title="clip_image004" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image004_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The regular expressions for key value pairings are pretty easy to create. In this window you can see that the regex has located the item in the log message I’m interested in – it’s highlighted in yellow. Save the regex extraction and you’ll be returned to the Event Viewer and look for the new property listed on the page.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image006_2.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'2a44aa6b'})"&gt;&lt;img height="809" border="0" width="820" style="border-width: 0px; display: inline;" alt="clip_image006" title="clip_image006" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image006_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now the attribute shows up on the Event list page, down at the bottom. I’ve already entered several regular expressions for the NEDS data, and since I’ve assigned them all to the same Device Support Module (DSM) they’re showing up on this page; and this isn’t a NEDS message so they’re not applicable to this stream. With the extraction we just assigned to this DSM and log source we can return to the Event List and build a search. After the search is built it can be used to filter the events list, and we can build a report from it. In the Event Viewer Click on the Search button and select the New Event Search option.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image008_2.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'2a44aa6b'})"&gt;&lt;img height="644" border="0" width="823" style="border-width: 0px; display: inline;" alt="clip_image008" title="clip_image008" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image008_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I’ve also added extractions to my system for response time, and member server. This helps to further illustrate what’s happening in my environment – I can see what hosts are sending which response codes and get a rough idea on what the client and server performance is. Pick the fields you’re interested in including in the search and click on the ‘Filter’ button. QRadar composes the search and saves it to the list of defined searches. I could also add a regex to extract the BIG-IP name from the message and group by that attribute to get an idea of what’s happening across the various BIG-IPs in my environment. Now the search runs – and I find that in the last 6 hours there have been 147 HTTP 304 response codes recorded by the system. Here’s my search result:&lt;/p&gt;
&lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image010_2.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'2a44aa6b'})"&gt;&lt;img height="342" border="0" width="828" style="border-width: 0px; display: inline;" alt="clip_image010" title="clip_image010" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image010_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I see that in the last 6 hours there have been 147 HTTP 304’s recorded by the system. To turn this search into a report or make it available to the dashboard, click on the Save Criteria button in the toolbar. I’ve found that it helps to group searches together, so I’ve created a group called BIG-IP for all my BIG-IP related searches. For this search to appear on your dashboard you’ll also need to click the “Add item…” button on the dashboard and locate your search.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image012_2.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'2a44aa6b'})"&gt;&lt;img height="281" border="0" width="620" style="border-width: 0px; display: inline;" alt="clip_image012" title="clip_image012" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image012_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To generate the report, click the Reports tab and find the Actions dropdown in the tool bar – select Create. I’m building a manual report for this step. My report uses a single frame and Events/Logs as the information source.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image014_2.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'2a44aa6b'})"&gt;&lt;img height="436" border="0" width="457" style="border-width: 0px; display: inline;" alt="clip_image014" title="clip_image014" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image014_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And here’s my report:&lt;/p&gt;
&lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image016_2.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'2a44aa6b'})"&gt;&lt;img height="546" border="0" width="798" style="border-width: 0px; display: inline;" alt="clip_image016" title="clip_image016" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image016_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Accounting for the date format, there were a lot of 304’s returned to clients on March 5&lt;sup&gt;th&lt;/sup&gt; and I probably have data missing from March 10&lt;sup&gt;th&lt;/sup&gt; onwards because my BIG-IP was sending log messages somewhere else.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;font size="4"&gt;NEDS case&lt;/font&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;While the w3c offload case used an iRule with key/value tuples NEDS uses a comma delimited string to convey information in the message. I spent some time with the specification and wrote several regular expressions to extract the data. The process is identical to what’s outlined in the w3c case, so I’ll save the screen real estate and skip the screen shots of the process. You can find my regular expressions here – I’m fairly new to regular expressions, so I’m sure that there are improvements that can be made to make mine more efficient/maintainable. After defining the custom attributes here’s what I get when viewing a NEDS message in the Event Viewer. To syslog, A NEDS message looks like&lt;/p&gt;
&lt;p&gt;Mar 30 10:44:59 tmm tmm]5088[: Rule networkEventDataStream &amp;lt;HTTP_RESPONSE&amp;gt;: "neds.f5.http.resp.v1","bigip9.f5demo.com","65.197.145.92:42709-65.197.145.93:80@1269971099.951082",1269971099.952527,1,"301","text/html; charset=iso-8859-1","322","10.10.200.1:80","65.197.145.92:42709-10.10.200.1:80"&lt;/p&gt;
&lt;p&gt;Here’s the detailed view using the regular expressions for http response, client close, http request and client accepted messages.
&lt;table cellspacing="0" cellpadding="0" border="1"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="420" valign="top"&gt;
            &lt;p&gt;HTTP Response&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="360" valign="top"&gt;
            &lt;p&gt;Client close&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="466" valign="top"&gt;
            &lt;p&gt;HTTP Request&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="598" valign="top"&gt;
            &lt;p&gt;Client Accepted&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="420" valign="top"&gt;
            &lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image018_2.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'2a44aa6b'})"&gt;&lt;img height="590" border="0" width="322" style="border-width: 0px; display: inline;" alt="clip_image018" title="clip_image018" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image018_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="360" valign="top"&gt;
            &lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image020_2.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'2a44aa6b'})"&gt;&lt;img height="609" border="0" width="286" style="border-width: 0px; display: inline;" alt="clip_image020" title="clip_image020" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image020_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="466" valign="top"&gt;
            &lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image022_2.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'2a44aa6b'})"&gt;&lt;img height="519" border="0" width="316" style="border-width: 0px; display: inline;" alt="clip_image022" title="clip_image022" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image022_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="598" valign="top"&gt;
            &lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image024_2.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'2a44aa6b'})"&gt;&lt;img height="463" border="0" width="363" style="border-width: 0px; display: inline;" alt="clip_image024" title="clip_image024" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image024_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;Here’s a select result of a search I composed for the connection close data. The clientCloseBytesOut is not N/A filters out all the non-client-close NEDS messages.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image026_2.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:'2a44aa6b'})"&gt;&lt;img height="404" border="0" width="962" style="border-width: 0px; display: inline;" alt="clip_image026" title="clip_image026" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Apr/WLW-f343570c69f8_C96B-clip_image026_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The process to generate a report for NEDS data mirrors the process for the W3C case:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;1. Save the search&lt;/p&gt;
&lt;p&gt;2. Create a report template&lt;/p&gt;
&lt;p&gt;3. Add the search to the report template&lt;/p&gt;
&lt;p&gt;4. Save the template&lt;/p&gt;
&lt;p&gt;5. Run the report&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;font size="4"&gt;Dashboard data case&lt;/font&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;To get the dashboard data streaming into QRadar, I had to modify my base script to send the messages via syslog, instead of just printing the string. In addition to the QRadar and BIG-IP systems, you’ll need another host with the requisite Perl modules installed to relay the data from the BIG-IP to the QRadar.&lt;/p&gt;
&lt;p&gt;Here’s the script:&lt;/p&gt;
&lt;p&gt;&lt;a href="/downloads/techtips/dashboard-syslog.pl " target="_blank"&gt;http://devcentral.f5.com/downloads/techtips/dashboard-syslog.pl&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;To use it you’ll need to:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;1. On line 66 configure the username the script should use to access the dashboard interface&lt;/p&gt;
&lt;p&gt;2. On line 67 configure the password for the username from step 1&lt;/p&gt;
&lt;p&gt;3. On line 48 configure the IP address or name that for the QRadar event collector&lt;/p&gt;
&lt;p&gt;4. Schedule the script to run periodically on your relay host – cron would do nicely.&lt;/p&gt;
&lt;p&gt;Once you’ve got the data into QRadar you’ll need to:&lt;/p&gt;
&lt;p&gt;1. Find the endpoint-isession-stat data log message and write your regular expressions for the data you’re interested in&lt;/p&gt;
&lt;p&gt;2. Find the remote endpoint log message you’re interested in and write your regular expressions for the data you’re interested in&lt;/p&gt;
&lt;p&gt;3. Build and save your searches&lt;/p&gt;
&lt;p&gt;4. Build and run your report template&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here’s a sample endpoint-isession-stat data log message in syslog:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Mar 15 17:05:46 127.0.0.1 10.11.100.73: device_timestamp='Wed Mar 15 00:05:46 2010 GMT' HostName='bigip3900c.demo.f5demo.com' version.version='10.1.0' message_type='endpoint_isession_stat' name='_tunnel_ctrl_10.20.50.103' peer_ref='00:00:00:00:00:00:00:00:00:00:ff:ff:0a:14:32:67' null.in.uses='292670' null.in.errors='0' null.in.bytes_opt='31371493' null.in.bytes_raw='29030133' null.out.uses='292670' null.out.errors='0' null.out.bytes_opt='31371493' null.out.bytes_raw='29030133' lzo.in.uses='1250' lzo.in.errors='0' lzo.in.bytes_opt='139167' lzo.in.bytes_raw='124178' lzo.out.uses='1250' lzo.out.errors='0' lzo.out.bytes_opt='139166' lzo.out.bytes_raw='124177' deflate.in.uses='0' deflate.in.errors='0' deflate.in.bytes_opt='0' deflate.in.bytes_raw='0' deflate.out.uses='0' deflate.out.errors='0' deflate.out.bytes_opt='0' deflate.out.bytes_raw='0' dedup.in.uses='0' dedup.in.errors='0' dedup.in.bytes_opt='0' dedup.in.bytes_raw='0' dedup.out.uses='0' dedup.out.errors='0' dedup.out.bytes_opt='0' dedup.out.bytes_raw='0' dedup_in.hit_bytes='0' dedup_in.hits='0' dedup_in.hit_hist.bucket_1k='0' dedup_in.hit_hist.bucket_2k='0' dedup_in.hit_hist.bucket_4k='0' dedup_in.hit_hist.bucket_8k='0' dedup_in.hit_hist.bucket_16k='0' dedup_in.hit_hist.bucket_32k='0' dedup_in.hit_hist.bucket_64k='0' dedup_in.hit_hist.bucket_128k='0' dedup_in.hit_hist.bucket_256k='0' dedup_in.hit_hist.bucket_512k='0' dedup_in.hit_hist.bucket_1m='0' dedup_in.hit_hist.bucket_large='0' dedup_in.miss_bytes='0' dedup_in.misses='0' dedup_in.miss_hist.bucket_1k='0' dedup_in.miss_hist.bucket_2k='0' dedup_in.miss_hist.bucket_4k='0' dedup_in.miss_hist.bucket_8k='0' dedup_in.miss_hist.bucket_16k='0' dedup_in.miss_hist.bucket_32k='0' dedup_in.miss_hist.bucket_64k='0' dedup_in.miss_hist.bucket_128k='0' dedup_in.miss_hist.bucket_256k='0' dedup_in.miss_hist.bucket_512k='0' dedup_in.miss_hist.bucket_1m='0' dedup_in.miss_hist.bucket_large='0' dedup_out.hit_bytes='0' dedup_out.hits='0' dedup_out.hit_hist.bucket_1k='0' dedup_out.hit_hist.bucket_2k='0' dedup_out.hit_hist.bucket_4k='0' dedup_out.hit_hist.bucket_8k='0' dedup_out.hit_hist.bucket_16k='0' dedup_out.hit_hist.bucket_32k='0' dedup_out.hit_hist.bucket_64k='0' dedup_out.hit_hist.bucket_128k='0' dedup_out.hit_hist.bucket_256k='0' dedup_out.hit_hist.bucket_512k='0' dedup_out.hit_hist.bucket_1m='0' dedup_out.hit_hist.bucket_large='0' dedup_out.miss_bytes='0' dedup_out.misses='0' dedup_out.miss_hist.bucket_1k='0' dedup_out.miss_hist.bucket_2k='0' dedup_out.miss_hist.bucket_4k='0' dedup_out.miss_hist.bucket_8k='0' dedup_out.miss_hist.bucket_16k='0' dedup_out.miss_hist.bucket_32k='0' dedup_out.miss_hist.bucket_64k='0' dedup_out.miss_hist.bucket_128k='0' dedup_out.miss_hist.bucket_256k='0' dedup_out.miss_hist.bucket_512k='0' dedup_out.miss_hist.bucket_1m='0' dedup_out.miss_hist.bucket_large='0' outgoing.conns_idle_cur='0' outgoing.conns_idle_max='0' outgoing.conns_idle_tot='0' outgoing.conns_active_cur='2' outgoing.conns_active_max='3' outgoing.conns_active_tot='3' outgoing.conns_errors='0' outgoing.conns_passthru_tot='0' incoming.conns_idle_cur='0' incoming.conns_idle_max='0' incoming.conns_idle_tot='0' incoming.conns_active_cur='2' incoming.conns_active_max='6' incoming.conns_active_tot='127' incoming.conns_errors='0' incoming.conns_passthru_tot='0' dedup_status_array='cccc '&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here’s a sample remote endpoint log message in syslog:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Mar 15 17:05:50 127.0.0.1 10.11.100.73: device_timestamp='Wed Mar 15 00:05:46 2010 GMT' HostName='bigip3900c.demo.f5demo.com' version.version='10.1.0' message_type='woc_peer' peer_ref='10.20.50.103' name='bigip3900b.demo.f5demo.com' UUID='cd18:4840:f9e0:' mgmt_addr='10.11.100.72' version='10.1.0' dedup_cache='203588' dedup_action='DEDUP_ACTION_NONE' dedup_cache_refresh_flag='false' dedup_cache_refresh_count='0' state='WOC_PEER_STATE_READY' is_enabled='true' origin='MCP_ORIGIN_CONFIGURED' profile_serverssl='' tunnel_encrypt_data='true' tunnel_port='443' behind_nat='false' source_address='WOC_PEER_NAT_SOURCE_ADDRESS_NONE' config_status='none' routing='true' addr_list=''&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;And lastly&lt;/u&gt;&lt;/b&gt; if you’re an ASM or APM user there’s an F5 Networks DSM that will recognize your ASM logs; all you need to do is define the hostname or IP address of your QRadar system on your ASM logging profile.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; Logging and Reporting Toolkit Series: &lt;/strong&gt; &lt;a href="/Default.aspx?tabid=63&amp;amp;articleType=ArticleView&amp;amp;articleId=1082334"&gt;Part One&lt;/a&gt; | &lt;a href="/Default.aspx?tabid=63&amp;amp;articleType=ArticleView&amp;amp;articleId=1084341" target="_blank"&gt;Part Two&lt;/a&gt; | &lt;a href="/Default.aspx?tabid=63&amp;amp;articleType=ArticleView&amp;amp;articleId=1084350"&gt;Part Three&lt;/a&gt;&lt;/p&gt;
&lt;div class="d_itc_f" style="clear: both; height: 11px;"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;]</description><pubDate>Tue, 06 Apr 2010 15:45:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084353/BIG-IP-Logging-and-Reporting-Toolkit-ndash-part-four.aspx#Comments</comments><slash:comments>0</slash:comments><dc:creator>Colin</dc:creator></item><item><title>pyControl v2 &amp;ndash; Understanding the TypeFactory</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084352/pyControl-v2-ndash-Understanding-the-TypeFactory.aspx</link><description>&lt;p&gt;I admit it—I’ve been away from pyControl working on some other hot stove projects.  When pyControl v2 launched in December, I ported some of the lighter scripts I’d written, but I put aside the scripts that required creating objects on the BIG-IP via iControl.  After receiving a request to create a region in GTM via pyControl, I figured it was time to spend some energy learning the new techniques.&lt;/p&gt;</description><pubDate>Thu, 01 Apr 2010 12:28:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084352/pyControl-v2-ndash-Understanding-the-TypeFactory.aspx#Comments</comments><slash:comments>1</slash:comments><dc:creator>citizen_elah</dc:creator></item><item><title>BIG-IP Logging and Reporting Toolkit &amp;ndash; part three</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084350/BIG-IP-Logging-and-Reporting-Toolkit-ndash-part-three.aspx</link><description>&lt;script type="text/javascript" src="/DesktopModules/itcMetaPost/js/ca0c21fbdc85f6a1597417732d450607.ashx?hs=1"&gt;&lt;/script&gt;
&lt;p&gt;In the first couple installments of this series we’ve talked about what we’re trying to accomplish, the vendor options we have available to us, their offerings, some strengths and weaknesses of each, etc. In this installment, we’re actually going to roll up our sleeves and get to getting.&amp;#160; We’ll look at how to get things working in a couple different use cases including scripts, screenshots and config goodies.&amp;#160; Before we get too far ahead of ourselves though, first things first – get the BIG-IP to send messages to syslog.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="courier new"&gt;-&lt;/font&gt;&lt;strong&gt;&lt;font face="courier new"&gt; Bigip v9&lt;/font&gt; &lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;  &lt;blockquote&gt;
&lt;p&gt;&lt;font face="courier new"&gt;syslog {&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;&amp;#160; remote server 10.10.200.30&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;- &lt;strong&gt;Bigip v10&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;syslog {&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;&amp;#160; remote server {&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;&amp;#160;&amp;#160;&amp;#160; splunk {&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; host 10.11.100.30&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;&amp;#160; }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;}&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This will send all syslog messages from the BIG-IP to the Splunk server; both BIG-IP system messages and any messages from iRules. If you’re interested in having iRules log to the Splunk server directly you can use the HSL statements or the log statements with a destination host defined. Ex) RULE_INIT has set ::SplunkHost “10.10.200.30” and then in the iRules event you’re interested in you assemble $log_message and then sent it to the log with log $::SplunkHost $log_message . A good practice would be to also record it locally on something like local0 incase the message doesn’t make it to the Splunk host.&lt;/p&gt;
&lt;p&gt;For Splunk to receive the message you have to create a Data Input on udp:514 for the log statement. To cover HSL and log statements I’d recommend creating tcp:514 and udp:514 data inputs on Splunk. &lt;a href="http://www.splunk.com/base/Documentation/4.0.2/Admin/Monitornetworkports"&gt;http://www.splunk.com/base/Documentation/4.0.2/Admin/Monitornetworkports&lt;/a&gt; covers this.&lt;/p&gt;
&lt;p&gt;We’ll get to the scripts part in a bit, first…&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;W3C offload case&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Now that BIG-IP is setup to send messages to Splunk and Splunk is setup to listen to them, let’s see what it looks like when put together. Open the Splunk Search application and enter ‘w3c-client-logging sourcetype=udp:514’ into the search bar. Here’s one of the things that makes Splunk really easy to work with: it recognized the key-value pairings in the log message without any configuration needed on my part. Next, I opened the Pick fields box and selected user_agent and added it to the list of fields I’m interested in; and now it shows up in alongside the log message and I can now build a report on it by clicking on the arrow.&lt;/p&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'68663eb7'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Colin/2010/Mar/WLW-cd610f40ce85_CBDD-clip_image002_2.jpg"&gt;&lt;img height="550" border="0" width="683" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Mar/WLW-cd610f40ce85_CBDD-clip_image002_thumb.jpg" title="clip_image002" alt="clip_image002" style="border: 0px none; display: inline;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The engineer in us wants to use technical terms to accurately convey the precise information we want to distribute. Splunk makes it easy to bridge the gap from technical terms to terms that are meaningful to non-engineers. So, for example a BIG-IP admin knows what this iRule is and what it’s called (in this case w3c-client-logging) – but those could be foreign concepts to folks in the Creative Service department that only want to know what browsers people are using to access a website. So, let’s employ some natural language too. The w3c-client-logging rule records a message when an HTTP transaction completes; a request and a response. So, let’s call it what it is.&lt;/p&gt;
&lt;p&gt;On your Splunk system open up the $SPLUNKHOME/etc/system/local/eventtypes.conf file and add this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="courier new"&gt;[httpTransaction]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;search = “Rule w3c-client-logging”&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You might need to restart Splunk for this change to take effect.&lt;/p&gt;
&lt;p&gt;Now, let’s go back to the search console and try out our new event type.&lt;/p&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'68663eb7'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Colin/2010/Mar/WLW-cd610f40ce85_CBDD-clip_image004_2.jpg"&gt;&lt;img height="449" border="0" width="776" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Mar/WLW-cd610f40ce85_CBDD-clip_image004_thumb.jpg" title="clip_image004" alt="clip_image004" style="border: 0px none; display: inline;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is a basic usage of event types in Splunk, you can learn more here: &lt;a href="http://www.splunk.com/base/Documentation/4.0.2/Admin/Eventtypesconf"&gt;http://www.splunk.com/base/Documentation/4.0.2/Admin/Eventtypesconf&lt;/a&gt; . With transforms.conf and props.conf you can also effectively rename the attributes so, lb_server could be called webServer instead.&lt;/p&gt;
&lt;p&gt;Now that we have a custom event based off our search string, all we have to do is click the dropdown arrow next to userAgent (in this case) and select the report option from the dropdown. Here's the output we'd see:&lt;/p&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'68663eb7'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Colin/2010/Mar/WLW-cd610f40ce85_CBDD-clip_image006_2.jpg"&gt;&lt;img height="560" border="0" width="660" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Mar/WLW-cd610f40ce85_CBDD-clip_image006_thumb.jpg" title="clip_image006" alt="clip_image006" style="border: 0px none; display: inline;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Heh – lookit’ that; nagios is the most frequent visitor…&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;Network Event Data Stream Case&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Now that we've seen the W3C example, let's take a look at another example that's much more rich (comma delineated). With no keys, just values, this changes things considerably. Let’s look at the Network Event Data Stream specification and see how it’s been implemented as an iRule.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;b&gt;iRule - &lt;/b&gt;&lt;a href="/wiki/default.aspx/iRules/NEDSRule.html"&gt;http://devcentral.f5.com/wiki/default.aspx/iRules/NEDSRule.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Doc – &lt;/b&gt;&lt;a href="/downloads/techtips/NedsF5v1.doc"&gt;http://devcentral.f5.com/downloads/techtips/NedsF5v1.doc&lt;/a&gt;&lt;b&gt; &lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Since this is an information rich data source, conveyed from the BIG-IP to the Splunk server using comma separated values it takes a few more simple steps for Splunk to be able to extract out the fields just like it did for the key-value pairs.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Open up $SPLUNKHOME/etc/system/local/transforms.conf and insert this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;[extract_neds.f5.conn.start.v1_csv]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;DELIMS = ","&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;FIELDS = "EventID","Device","Flow","DateTimeSecs","IngressInterface","Protocol",”DiffServ","TTL","PolicyName","Direction"&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;[extract_neds.f5.conn.end.v1_csv]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;DELIMS = ","&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;FIELDS = "EventID","Device","Flow","DateTimeSecs","PktsIn","PktsOut","BytesIn","BytesOut"&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;[extract_neds.f5.http.req.v1_csv]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;DELIMS = ","&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;FIELDS = "EventID","Device","Flow","DateTimeSecs","Request","Host","URI","UserName","UserAgent"&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;[extract_neds.f5.http.resp.v1_csv]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;DELIMS = ","&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;FIELDS = "EventID","Device","Flow","DateTimeSecs","Reply","ResponseCode","ContentType","ContentLength","LoadBalanceTarget","ServerFlow"&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;This names each list of information we’re interested in, indicates that the fields in the message are comma delimited and names the fields. You can name the fields for what’s appropriate for your environment.&lt;/p&gt;
&lt;p&gt;Save the file. Next, open $SPLUNKHOME/etc/system/local/props.conf and insert this:&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="courier new"&gt;[eventtype::F5connectionStartEvent]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;REPORT-extrac = extract_neds.f5.conn.start.v1_csv&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;[eventtype::F5connectionEndEvent]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;REPORT-extrac = extract_neds.f5.conn.end.v1_csv&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;[eventtype::F5httpRequestEvent]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;REPORT-extrac = extract_neds.f5.http.req.v1_csv&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;[eventtype::F5httpResponseEvent]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;REPORT-extrac = extract_neds.f5.http.resp.v1_csv&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;This instructs the Splunk system to extract the information from the named fields.&lt;/p&gt;
&lt;p&gt;Save the file. Next, open SPLUNKHOME/etc/system/local/eventtypes.conf and insert this (the ‘sourcetype=udp:514’ part is optional – set it up for your environment or omit the search term):&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="courier new"&gt;[F5connectionStartEvent]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;search = neds.f5.conn.start.v1 sourcetype=udp:514&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;[F5connectionEndEvent]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;search = neds.f5.conn.end.v1 sourcetype=udp:514&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;[F5httpRequestEvent]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;search = neds.f5.http.req.v1 sourcetype=udp:514&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;[F5httpResponseEvent]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="courier new"&gt;search = neds.f5.http.resp.v1 sourcetype=udp:514&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Lastly, this defines the event to extract the data from.&lt;/p&gt;
&lt;p&gt;Save the file, and restart Splunkd. There are a few processes you can restart to avoid a complete Splunkd restart, but my environment is a lab so I just restarted the whole thing. While Splunkd is restarting you should attach the NEDS iRule to a BIG-IP virtual server you want to receive data from and send some traffic though the VIP so your Splunk servers will get some data.&lt;/p&gt;
&lt;p&gt;Now let’s navigate back to the Search app in the web ui. In the search bar, enter eventtype=F5connectionEndEvent . I opened the Pick fields box and selected BytesIn, BytesOut, Device, PktsIn and PktsOut .&lt;/p&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'68663eb7'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Colin/2010/Mar/WLW-cd610f40ce85_CBDD-clip_image008_2.jpg"&gt;&lt;img height="379" border="0" width="790" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Mar/WLW-cd610f40ce85_CBDD-clip_image008_thumb.jpg" title="clip_image008" alt="clip_image008" style="border: 0px none; display: inline;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As another way to use the Splunk search to report on traffic transiting a BIG-IP enter eventtype=F5connectionEndEvent |timechart avg(PktsOut) avg(BytesOut) into the search bar. This will generate a table for you listing the average number of packets transmitted from the VIP and the average number of bytes transmitted by the VIP for the default 10s time period.&lt;/p&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'68663eb7'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Colin/2010/Mar/WLW-cd610f40ce85_CBDD-clip_image010_2.jpg"&gt;&lt;img height="452" border="0" width="791" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Mar/WLW-cd610f40ce85_CBDD-clip_image010_thumb.jpg" title="clip_image010" alt="clip_image010" style="border: 0px none; display: inline;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I mentioned more to come about the script input at the top of the message. F5 recently added dashboards for WAN optimization and Access Policy management. One thing that I wish the dashboards provided is a historic view of the data so I can see how my infrastructure is changing over time as I upgrade applications and add more traffic to my network. Full disclosure: this BIG-IP interface isn’t a supported interface for anything other than the dashboard. Using BIG-IP 10.1 with a full WAN Optimization license, Perl and Splunk, here’s how I did it.&lt;/p&gt;
&lt;p&gt;1) Place this script &lt;b&gt;(&lt;/b&gt;&lt;a href="/downloads/techtips/text-dashboard-log.pl"&gt;http://devcentral.f5.com/downloads/techtips/text-dashboard-log.pl&lt;/a&gt;) somewhere on your Splunk system and mark it executable – I put mine in $SPLUNKHOME/bin/scripts&lt;/p&gt;
&lt;p&gt;2) Ensure you have the proper Perl modules installed for the script to work&lt;/p&gt;
&lt;p&gt;3) Add BIG-IP logon data to lines 58 and 59 – the user must be able to access the dashboard&lt;/p&gt;
&lt;p&gt;4) Configure a data input for the Splunk server to get the dashboard data. My Splunk system retrieves a data set every 2 minutes. I’ve added in 2 collectors, one for each side of my WOM iSession tunnel.&lt;/p&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'68663eb7'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Colin/2010/Mar/WLW-cd610f40ce85_CBDD-clip_image012_2.jpg"&gt;&lt;img height="330" border="0" width="660" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Mar/WLW-cd610f40ce85_CBDD-clip_image012_thumb.jpg" title="clip_image012" alt="clip_image012" style="border: 0px none; display: inline;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After getting all this setup and letting it run for a while, if you navigate back to your Search console you should see a new Sourcetype show up called BIG-IP_Acceleration_Dashboard.&lt;/p&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'68663eb7'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Colin/2010/Mar/WLW-cd610f40ce85_CBDD-clip_image014_2.jpg"&gt;&lt;img height="366" border="0" width="822" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Mar/WLW-cd610f40ce85_CBDD-clip_image014_thumb.jpg" title="clip_image014" alt="clip_image014" style="border: 0px none; display: inline;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Clicking on the BIG-IP_Acceleration_Dashboard sourcetype displays the log entries sent to the Splunk system. Splunk recognizes the key-value pairings and has automatically extracted the data and created entries in the Pick fields list.&lt;/p&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'68663eb7'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Colin/2010/Mar/WLW-cd610f40ce85_CBDD-clip_image016_2.jpg"&gt;&lt;img height="669" border="0" width="808" src="/Portals/0/images/metapost/News-Articles/Colin/2010/Mar/WLW-cd610f40ce85_CBDD-clip_image016_thumb.jpg" title="clip_image016" alt="clip_image016" style="border: 0px none; display: inline;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;That’s a lot of data! Basically it’s the contents of the endpoint_isession_stat table and the endpoint data – you can get this on the CLI via ‘tmctl endpoint_isession_stat’ and ‘b endpoint remote’ . Now I can easily see that from basically March 8 until now my WOM tunnels were only down for about 4 minutes. Another interesting report I’ve built from here from here is the efficacy of adaptive compression for the data transiting my simulated WAN by charting lzo_out_uses, deflate_out_uses and null_out_uses over time.&lt;/p&gt;
&lt;p&gt;Last, but certainly not least – there’s the Splunk for F5 Networks application available via &lt;a href="http://www.splunk.com/wiki/Apps:Splunk_for_F5"&gt;http://www.splunk.com/wiki/Apps:Splunk_for_F5&lt;/a&gt;. You should definitely install it if you’re an ASM or PSM user.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Logging and Reporting Toolkit Series:&lt;/strong&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=63&amp;amp;articleType=ArticleView&amp;amp;articleId=1082334"&gt;Part One&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;|&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=63&amp;amp;articleType=ArticleView&amp;amp;articleId=1084341"&gt;Part Two&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;div style="clear: both; height: 11px;" class="d_itc_f"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;</description><pubDate>Fri, 26 Mar 2010 14:38:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084350/BIG-IP-Logging-and-Reporting-Toolkit-ndash-part-three.aspx#Comments</comments><slash:comments>0</slash:comments><dc:creator>Colin</dc:creator></item><item><title>iControl Development with BIG-IP LTM VE &amp;ndash; Part 1</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084345/iControl-Development-with-BIG-IP-LTM-VE-ndash-Part-1.aspx</link><description>&lt;p&gt;The LTM VE is a lifesaver when it comes to developing applications that use the iControl interface, or for development of iRules. My main (personal) use of it so far is the development of applications that use the iControl interface. Although a real LTM appliance has until now been the obvious choice of development target, the sheer cost of dedicated hardware is a big barrier to independent developers. In this respect the LTM VE comes into its own as an easy to use anywhere device.&lt;/p&gt;</description><pubDate>Mon, 15 Mar 2010 08:06:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084345/iControl-Development-with-BIG-IP-LTM-VE-ndash-Part-1.aspx#Comments</comments><slash:comments>1</slash:comments><dc:creator>hamish</dc:creator></item><item><title>Configuring a multi-server Testing Environment with VMWare Teams and BIG-IP LTM VE</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084344/Configuring-a-multi-server-Testing-Environment-with-VMWare-Teams-and-BIG-IP-LTM-VE.aspx</link><description>&lt;script type="text/javascript" src="/DesktopModules/itcMetaPost/js/ca0c21fbdc85f6a1597417732d450607.ashx?hs=1"&gt;&lt;/script&gt;
&lt;p&gt;Having LTM-VE is nice, but setting things up so that you can actually use it for something is a different matter. There is a lot of information floating around out there about configuration ranging from &lt;a href="/Default.aspx?tabid=63&amp;amp;articleType=ArticleView&amp;amp;articleId=1082333"&gt;Joe's Tech Tip&lt;/a&gt; to &lt;a href="http://www.f5.com/pdf/white-papers/hybrid-adn-architecture.pdf"&gt;Lori's Architecture Reference&lt;/a&gt; to deployment guides. This article focuses on setting up a &lt;a href="http://www.vmware.com"&gt;VMWare &lt;/a&gt;team that includes your BIG-IP and some test servers.&lt;/p&gt;
&lt;p&gt;Since I wanted this to be something you can re-create, all of the servers utilized in this Tech Tip are clones of a straight-forward &lt;a href="http://www.centos.org/"&gt;CENT-OS&lt;/a&gt; install. I toyed with a large number of OSS operating systems, and decided of all the OS's I installed, this was the one most suited to enterprise use, so cloned it a couple of times and changed the IP configuration. All of this will be documented below, the goal is to set you up so you can easily copy this environment. If for some reason you cannot, drop me an email and we can arrange for some way to get the files to you.&lt;/p&gt;
&lt;p&gt;One thing to remember throughout an install of LTM-VE is that in the end it is just a BIG-IP. Sure, it's in an odd environment that offers some challenges of its own, but from an administration perspective it is just another BIG-IP. In terms of throughput and configuration it is different because of the environment, but in terms of day-to-day administration, it has nodes, pools, virtuals, iRules, etc. that are all accessed and managed in the same manner as you would if this was a physical BIG-IP.&lt;/p&gt;
&lt;p&gt;I placed my BIG-IP and the three server instances into a single VMWare team, meaning I have single-button turn-on/turn-off for the entire test environment. For my purposes, my desktop (the VMWare host) is sufficient for representing clients, but I'll point out how and where you would add clients below.&lt;/p&gt;
&lt;p&gt;And last caveat, this entire Tech Tip is done in VMWare Workstation. If you are running one of the server versions, some dialogs/etc will be slightly different.&lt;/p&gt;
&lt;p&gt;First off, download and open the BIG-IP vmx file. A link to the vmx can be found on the &lt;a href="/Default.aspx?tabid=2250"&gt;DevCentral VE page&lt;/a&gt;. Once you&amp;#160; have LTM-VE opened, you're ready to start your team-building exercise. Download CENT-OS from the link above, or some other OS that you are familiar with. Windows works just fine, I only excluded it from this solution because I can't be offering to give you copies of an OS that charges per-copy, and I did say if you had problems to drop me a line.&lt;/p&gt;
&lt;p&gt;You'll need to install CENT-OS into a new VM, but VMWare makes that so easy that even if you've never done it you should have no problems. Just choose New|VM and tell it where to find the ISO images you downloaded.&lt;/p&gt;
&lt;p&gt;Once the BIG-IP is loaded - and you can start it and play with it if you like, the default management address will be in the output of an ifconfig on the BIG-IP command line as eth0-mgmt. From your host OS's web browser you can navigate to that address and start licensing and configuration as explained in the release notes.&lt;/p&gt;
&lt;p&gt;Next you'll want to create the team though. From the VMWare menu, select File|New|Team like this...&lt;/p&gt;
&lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/dmacvittie/2010/Mar/WLW-ConfiguringamultiserverTestingEnvironmen_12C40-vADC.NewTeam.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:&amp;#39;a058e3d4&amp;#39;})"&gt;&lt;img height="159" width="441" border="0" style="border-width: 0px; display: inline;" alt="vADC.NewTeam" title="vADC.NewTeam" src="http://devcentral.f5.com/Portals/0/images/metapost/News-Articles/dmacvittie/2010/Mar/WLW-ConfiguringamultiserverTestingEnvironmen_12C40-vADC.NewTeam_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Give it a name and check the directory it will save to...&lt;/p&gt;
&lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/dmacvittie/2010/Mar/WLW-ConfiguringamultiserverTestingEnvironmen_12C40-vADC.NewTeamDialog.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:&amp;#39;a058e3d4&amp;#39;})"&gt;&lt;img height="304" width="345" border="0" style="border-width: 0px; display: inline;" alt="vADC.NewTeamDialog" title="vADC.NewTeamDialog" src="http://devcentral.f5.com/Portals/0/images/metapost/News-Articles/dmacvittie/2010/Mar/WLW-ConfiguringamultiserverTestingEnvironmen_12C40-vADC.NewTeamDialog_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then add VMs to the team. Choosing "existing VM" will move a VM into the team, choosing "Clone of a VM" will copy a VM into the team. I basically configured one copy of CENT-OS and then added clones of that one to the VM. I used the same process with &lt;a href="http://www.f5.com/products/big-ip/" target="_blank"&gt;BIG-IP&lt;/a&gt; LTM VE.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/dmacvittie/2010/Mar/WLW-ConfiguringamultiserverTestingEnvironmen_12C40-vADC.NewTeamAddVMs.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:&amp;#39;a058e3d4&amp;#39;})"&gt;&lt;img height="303" width="346" border="0" style="border-width: 0px; display: inline;" alt="vADC.NewTeamAddVMs" title="vADC.NewTeamAddVMs" src="http://devcentral.f5.com/Portals/0/images/metapost/News-Articles/dmacvittie/2010/Mar/WLW-ConfiguringamultiserverTestingEnvironmen_12C40-vADC.NewTeamAddVMs_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Finally, add network segments to the team if you are going to model an existing network with your team.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/dmacvittie/2010/Mar/WLW-ConfiguringamultiserverTestingEnvironmen_12C40-vADC.NewTeamAddNet.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:&amp;#39;a058e3d4&amp;#39;})"&gt;&lt;img height="303" width="347" border="0" style="border-width: 0px; display: inline;" alt="vADC.NewTeamAddNet" title="vADC.NewTeamAddNet" src="http://devcentral.f5.com/Portals/0/images/metapost/News-Articles/dmacvittie/2010/Mar/WLW-ConfiguringamultiserverTestingEnvironmen_12C40-vADC.NewTeamAddNet_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the case that we're exploring here, I did not add any network segments to the team, but rather relied upon VMWare's DHCP capability to assign me networks that I then utilized when configuring the servers to use static IPs (as they would in most environments).&lt;/p&gt;
&lt;p&gt;So the first thing you need to do after you’ve built your team is set your servers to use static IPs. They will default to DHCP, but that’s not the greatest solution for a load-balancing environment, since any change to the IP addresses of these servers will have an impact on the BIG-IP’s ability to load-balance. Note, if you are terribly lazy you probably don’t &lt;i&gt;have&lt;/i&gt; to give them static IPs, because you control what goes in and out of the network, if you don’t add any servers to a segment, you should get the same IPs each time you boot. But boy, I just cannot recommend assuming a given server will always get the same address, that’s asking for trouble.&lt;/p&gt;
&lt;p&gt;One last thing to check, go into the Connections tab of the Team Settings dialog. We started with each of our three servers set to NAT, and eventually had to switch them to Host Only during config. If you can’t ping across the VLANs (there should be an implied route between them), this is something worth checking.&lt;/p&gt;
&lt;p&gt;And that covers creating the team. In short, the benefits of a team in our case are these:&lt;/p&gt;
&lt;p&gt;-&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Single button power on/off&lt;/p&gt;
&lt;p&gt;-&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Contained environment with everything you need to test in one VM&lt;/p&gt;
&lt;p&gt;-&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; The ability to add network segments to emulate your production environment&lt;/p&gt;
&lt;p&gt;As I mentioned above, I put nothing but Virtuals directly on the external network because I planned on testing with just my host OS, but you may well want to add clients to the external interface.&lt;/p&gt;
&lt;p&gt;Next, you’ll have to configure the BIG-IP. You need to create an internal VLAN with the internal network (the one the servers are on) in it, and an external network that faces the outside world. The BIG-IP Management interface on first boot will be DHCP’d on your local network, you can change that setting through the browser on your client OS (we made it static on the local network). All of this is detailed in the release notes availabe on the VE page of DevCentral.&lt;/p&gt;
&lt;p&gt;After your VLANs are set, then you need to go into the client OS’s and set the route to point at the BIG-IP address on the internal VLAN. Bing! At that point you should be able to ping the world. If you can, then you can create the nodes, pools, virtuals in the BIG-IP and start routing traffic!&lt;/p&gt;
&lt;p&gt;I won’t go into a ton of detail here, since this article is running long already, but here are some screenshots of BIG-IP LTM VE with everything configured.&lt;/p&gt;
&lt;p&gt;Here’s the list of nodes as-we-added them…    &lt;br /&gt;
&lt;a href="/Portals/0/images/metapost/News-Articles/dmacvittie/2010/Mar/WLW-ConfiguringamultiserverTestingEnvironmen_12C40-vADC.Nodes.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:&amp;#39;a058e3d4&amp;#39;})"&gt;&lt;img height="308" width="451" border="0" style="border-width: 0px; display: inline;" alt="vADC.Nodes" title="vADC.Nodes" src="http://devcentral.f5.com/Portals/0/images/metapost/News-Articles/dmacvittie/2010/Mar/WLW-ConfiguringamultiserverTestingEnvironmen_12C40-vADC.Nodes_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And the shots of the pool, showing it using these nodes…&lt;/p&gt;
&lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/dmacvittie/2010/Mar/WLW-ConfiguringamultiserverTestingEnvironmen_12C40-vADC.PoolList.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:&amp;#39;a058e3d4&amp;#39;})"&gt;&lt;img height="319" width="457" border="0" style="border-width: 0px; display: inline;" alt="vADC.PoolList" title="vADC.PoolList" src="http://devcentral.f5.com/Portals/0/images/metapost/News-Articles/dmacvittie/2010/Mar/WLW-ConfiguringamultiserverTestingEnvironmen_12C40-vADC.PoolList_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/dmacvittie/2010/Mar/WLW-ConfiguringamultiserverTestingEnvironmen_12C40-vADC.Pool.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:&amp;#39;a058e3d4&amp;#39;})"&gt;&lt;img height="309" width="458" border="0" style="border-width: 0px; display: inline;" alt="vADC.Pool" title="vADC.Pool" src="http://devcentral.f5.com/Portals/0/images/metapost/News-Articles/dmacvittie/2010/Mar/WLW-ConfiguringamultiserverTestingEnvironmen_12C40-vADC.Pool_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And the VS, showing it using the pool. All is set, the VS is listening on 192.168.42.110.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Portals/0/images/metapost/News-Articles/dmacvittie/2010/Mar/WLW-ConfiguringamultiserverTestingEnvironmen_12C40-vADC.VSPool.jpg" class="itcexpando" onclick="return mp.expand(this,{slideshowGroup:&amp;#39;a058e3d4&amp;#39;})"&gt;&lt;img height="253" width="464" border="0" style="border-width: 0px; display: inline;" alt="vADC.VSPool" title="vADC.VSPool" src="http://devcentral.f5.com/Portals/0/images/metapost/News-Articles/dmacvittie/2010/Mar/WLW-ConfiguringamultiserverTestingEnvironmen_12C40-vADC.VSPool_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There’s more I’d like to show you, but I’m not only out of room, this is longer than I’d wanted. So go forth and play, and I’ll circle back with some fun stuff like setting up iRules and such.&lt;/p&gt;
&lt;div style="height: 11px; clear: both;" class="d_itc_f"&gt;&lt;script src="http://devcentral.f5.com/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;</description><pubDate>Thu, 11 Mar 2010 21:23:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084344/Configuring-a-multi-server-Testing-Environment-with-VMWare-Teams-and-BIG-IP-LTM-VE.aspx#Comments</comments><slash:comments>2</slash:comments><dc:creator>dmacvittie</dc:creator></item><item><title>BIG-IP Logging and Reporting Toolkit - part two</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084341/BIG-IP-Logging-and-Reporting-Toolkit--part-two.aspx</link><description>&lt;p&gt;In this second offering from Joe Malek’s delve into some advanced configuration concepts, and more specifically the logging and reporting world, we take a look at the vendors that he investigated, what they offer, and how they integrate with F5 products.&amp;#160; He discusses some of the capabilities of each, their strengths and weaknesses and some of the things you might use each for. If you’ve been wondering what your options are for more in-depth log analysis and reporting, take a look to see what his thoughts are on a couple of the leading solutions.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;&lt;span style="font-size: medium;"&gt;&lt;font color="#000000"&gt;Vendor descriptions&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size: medium;"&gt;:&lt;/span&gt;&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;h4&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;&lt;font color="#000000"&gt;Splunk&lt;/font&gt; &lt;/strong&gt;&lt;/span&gt;- &lt;a href="http://www.splunk.com/" title="http://www.splunk.com/"&gt;&lt;span style="font-size: small;"&gt;http://www.splunk.com/&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;“IT Search” is Splunk’s self identified core functionality. Splunk’s software contains multiple ways to obtain data from IT systems, indexes the data and reports on the data using a web interface. Splunk has invested in creating a &lt;a href="http://www.splunk.com/wiki/Apps:Splunk_for_F5" target="_blank"&gt;Splunk for F5 application&lt;/a&gt;&amp;#160; containing dashboard style views into log data for F5 products. Currently included in the application are LTM, GTM, ASM, APM and FirePass. The application is able to consume log messages sent to Splunk servers via syslog – and by extension iRules using &lt;a href="/wiki/default.aspx/iRules.HSL" target="_blank"&gt;High Speed Logging&lt;/a&gt;. Splunk is &lt;a href="http://www.splunk.com/download" target="_blank"&gt;deployed as software&lt;/a&gt; to be installed on a customer provided system. Windows, Mac OS, Linux, AIX, and BSD variants are all supported host operating systems.&amp;#160; Splunk can receive messages via files, syslog, SNMP, SCP, SFTP, FTP, generic network ports, FIFO queues, directory crawling and scripting. Splunk has a very intuitive and “Google like” interface allowing users to easily navigate and report on data in the system. Users are able to define reports, indices, dashboards and applications to present data as an organization requires. Upon receipt of data, Splunk can process the data according to in-built training or according to a user constructed taxonomy.&lt;/p&gt;
&lt;h5&gt;&amp;#160;&lt;/h5&gt;
&lt;h4&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;&lt;span style="font-size: medium;"&gt;Q1 Labs&lt;/span&gt;&lt;/strong&gt; &lt;/span&gt;- &lt;a href="http://www.q1labs.com/" title="http://www.q1labs.com/"&gt;&lt;span style="font-size: small;"&gt;http://www.q1labs.com&lt;/span&gt;&lt;font size="2"&gt;/&lt;/font&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Q1 Labs brings a product called QRadar to market. QRadar combines functionality commonly found in SIEM, log management and network behavior analysis products. Q1 products are able to consume event messages as well as record information on a network connection basis. QRadar is available as a pay-for appliance and a &lt;a href="http://www.q1labs.com/products/175" target="_blank"&gt;no-charge edition in a virtual machine&lt;/a&gt;. Differences between the two editions are the &lt;a href="http://en.wikipedia.org/wiki/Security_event_manager" target="_blank"&gt;SIEM&lt;/a&gt; and advanced correlation functionality. The no-charge edition is a log management tool only.&lt;/p&gt;
&lt;p&gt;QRadar can receive messages via syslog SNMP, JDBC connectors, SFTP, FTP, SCP, and SDEE. Additionally QRadar con obtain network flow information in a port mirror/span mode. Customizing data views and report building are based on regular expressions. Customers can create their own regular expressions and build upon pre-configured expressions for reporting. In the SIEM module, QRadar includes approximately 250 events that can be sequenced together into complex “Offenses” in a manner similar to building a rule in Microsoft Outlook. “Universal Device Support Modules” can be created and shared among Q1 Labs customers.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;PresiNET&lt;/strong&gt;&lt;/span&gt; – &lt;a href="http://www.presinet.com/"&gt;http://www.presinet.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Whereas tcpdump is like an x-ray for your network, Total View One is like an MRI.&amp;#160; Total View One enables customers to maximize the use of infrastructure resources and network performance.&amp;#160; Total View One sensors collect protocol state information by tracking connections through a network.&amp;#160; This is commonly done out-of-line from traffic streams via port mirroring or network tap technologies.&amp;#160; Currently PresiNET has implemented the NEDS specification which enables Total View One to receive messages from BIG-IP products to process them as if they’d come from a PresiNET sensor.&amp;#160; This integration started with the NEDS iRule and specification and from this PresiNET created their own parser.&amp;#160; PresiNET products are delivered as appliances in both a central unit and sensor unit mode. Optionally one may subscribe to PresiNET on a managed service basis.&amp;#160;&amp;#160;&amp;#160; After you install a Total View One product in your network you get access to extensive views of available state information – with little or no additional work.&amp;#160; If the included reporting capabilities aren’t&amp;#160; enough, you can export data from the system as a CSV file.&lt;br /&gt;
&amp;#160;&lt;/p&gt;
&lt;h5&gt;&amp;#160;&lt;/h5&gt;
&lt;h4&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;&lt;span style="font-size: medium;"&gt;What’s Next?&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Now that you know who the players are and what they can do, be sure to check back next week to look at how the F5 products generate logs, how these technologies deal with them, and some testing results.&amp;#160; To give you more of an idea of what’s to come, I’ll leave you with a look at the facts that will be delivered to the reporting systems from the F5 device(s) to see how they’re handled:&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Virtual server accessed, client IP address, client port, LB decision results, http host, http username, user-agent string, content encoding, requested URI, requested path, content type, content length, request time, server string, server port, status code, device identifier, referrer, host header, response time, VLAN id, IP protocol, IP type of service, connection end time, packets, bytes, anything sent to a dashboard, firewall messages, client source geography, extended application log data, health information for back end filers, audit logs, SNMP trap information, dedup efficacy, compression codec efficacy, wom error counters, link characteristics as known, system state&lt;/p&gt;
&lt;div style="clear: both; height: 11px;" class="d_itc_f"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&amp;#160;Logging and Reporting Toolkit Series:&amp;#160;&lt;/strong&gt; &lt;a href="/Default.aspx?tabid=63&amp;amp;articleType=ArticleView&amp;amp;articleId=1082334"&gt;Part One&lt;/a&gt; | &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=63&amp;amp;articleType=ArticleView&amp;amp;articleId=1084350"&gt;Part Three&lt;/a&gt;&lt;/p&gt;</description><pubDate>Wed, 10 Mar 2010 11:10:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1084341/BIG-IP-Logging-and-Reporting-Toolkit--part-two.aspx#Comments</comments><slash:comments>0</slash:comments><dc:creator>Colin</dc:creator></item><item><title>Maintenance Mode Rules for the F5 Networks Management Pack</title><link>http://devcentral.f5.com/weblogs/druddell/archive/2010/03/05/maintenance-mode-rules-for-the-f5-networks-management-pack.aspx</link><description>&lt;p&gt;&lt;a href="http://vimeo.com/9950832" target="_blank"&gt;&lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/druddell/WindowsLiveWriter/MaintenanceModeRulesfortheF5NetworksMana_E29E/go_and_stop_signs_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 20px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="Clip Art Graphic of a Red Guy Character " border="0" alt="Clip Art Graphic of a Red Guy Character " align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/druddell/WindowsLiveWriter/MaintenanceModeRulesfortheF5NetworksMana_E29E/go_and_stop_signs_thumb.jpg" width="138" height="138" /&gt;&lt;/a&gt;A few releases ago we included a couple of new rules and new tasks to go with them.  These rules and tasks will help you keep your Pool Members (LTM and GTM) in sync with your applications.  These new rules are disabled by default, but we highly  recommend enabling and integrating them into your deployment and existing distributed applications.  Here is a short tutorial video on how to turn these rules on:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://vimeo.com/9950832" target="_blank"&gt;Enabling Maintenance Mode&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;For reference, the rules are named&lt;strong&gt; F5.Rules.DCO.MaintenanceModeSyncLtmPoolMember&lt;/strong&gt; and &lt;strong&gt;F5.Rules.DCO.MaintenanceModeSyncGtmPoolVirtualServer&lt;/strong&gt; and can be located under the F5 Device Type in the Rules area of the Authoring section of Operations Manager.  By enabling these rules, any time an LTM Pool Member or GTM Pool Member (Virtual Server) is put into maintenance mode, it will also disable the Pool Member within the interval specified in the overrides of the rule.  This is very important if you want to perform maintenance on either the Big-IP or the web server instance and do not want traffic to be sent.  It should also be noted that once you stop maintenance mode, the Pool Members will &lt;em&gt;&lt;strong&gt;not&lt;/strong&gt;&lt;/em&gt; be re-enabled automatically.  There are some technical reasons for this, but it boils down to the fact that a Pool Member may have been disabled before maintenance mode was started and we do not want to enable it if it was taken offline for another reason.  &lt;/p&gt;  &lt;p&gt;Now with these two new rules, there are also two Tasks associated with the device.  They are named &lt;strong&gt;Sync LTM Pool Members Maintenance Mode&lt;/strong&gt; and &lt;strong&gt;Sync GTM Pool Virtual Servers Maintenance Mode&lt;/strong&gt;.  If you do not want to enable the rules to automatically disable the Pool Members, you can still manually disable any Pool Member in maintenance mode on a device by running the appropriate task.  &lt;/p&gt;  &lt;p&gt;The ultimate reason behind including these rules and tasks it to allow greater flexibility with your applications.  By enabling these rules, you can be assured that any Distributed Applications you have created that reference GTM or LTM Pool Members will behave more efficiently.  Perhaps you have an IIS Distributed App that includes the related Virtual Server.  By putting the entire application into maintenance mode, you will also ensure that traffic is not being sent to these servers, potentially causing more headache than necessary.  If you have any questions regarding this feature, feel free to visit the forums &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;afgroup=26" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/druddell/aggbug/1088068.aspx" width="1" height="1" /&gt;</description><pubDate>Fri, 05 Mar 2010 16:07:46 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/druddell/archive/2010/03/05/maintenance-mode-rules-for-the-f5-networks-management-pack.aspx#comment</comments><slash:comments>10</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>Announcing the F5 Management Pack 1.7.0: iRules-based object health events</title><link>http://devcentral.f5.com/weblogs/sfisher/archive/2010/03/05/announcing-the-f5-management-pack-1.7.0-irules-based-object-health-events.aspx</link><description>&lt;p&gt;The F5 Management Pack team has just released another version of our core Management Pack, which includes a new iRules feature and a variety of product improvements.&lt;/p&gt;  &lt;p&gt;Our newest feature allows you to connect your iRules to the F5 Management Pack, and influence object health (e.g. LTM Virtual Server, Pool Members, Nodes, etc.) via events. We’ve also included support for 4 new PowerShell CmdLets allowing you to upload and remove iRules to your F5 BIG-IP device, and register and unregister iRules with LTM Virtual Servers. We’re really excited about the potential for iRules integration, which should enable a host of interesting diagnostic, monitoring, and orchestration scenarios into and beyond L2-L4. Our team will be posting more information online, including samples and videos around the iRules integration.&lt;/p&gt;  &lt;p&gt;This new release also includes some improvements to setup, licensing, and clustered RMS support.&lt;/p&gt;  &lt;p&gt;I’d like to thank all of you, our customers and partners, for providing great feedback on the product, reporting issues with detailed info, and working with the new features as we release them.&lt;/p&gt;  &lt;p&gt;You can always find the latest F5 Management Pack and extensions at our DevCentral Download site: &lt;a title="http://devcentral.f5.com/Default.aspx?tabid=217" href="http://devcentral.f5.com/Default.aspx?tabid=217"&gt;http://devcentral.f5.com/Default.aspx?tabid=217&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you have questions, ideas for new features, or need support, we welcome you to join and post at our DevCentral Forums: &lt;a title="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;afgroup=26" href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;afgroup=26"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;afgroup=26&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Thank you,&lt;/p&gt;  &lt;p&gt;Stephen Fisher&lt;/p&gt;  &lt;p&gt;F5 Management Pack, Product Development Manager&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/sfisher/aggbug/1088066.aspx" width="1" height="1" /&gt;</description><pubDate>Fri, 05 Mar 2010 11:24:08 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/sfisher/archive/2010/03/05/announcing-the-f5-management-pack-1.7.0-irules-based-object-health-events.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>iRules and the F5 Management Pack</title><link>http://devcentral.f5.com/weblogs/jbalog/archive/2010/03/05/irules-and-the-f5-management-pack.aspx</link><description>&lt;p&gt;Starting with v1.7.0.390 the F5 Management Pack (F5 MP) has some built-in diagnostic capabilities based on iRules. Messages logged within iRules could be sent directly to the F5 Monitoring Service that now has an asynchronous TCP listener specifically designed to receive and process iRule messages, and based on these messages the F5 MP can write events into the Microsoft's System Center Operations Manager  (SCOM) event data source, against the F5 device monitoring objects discovered. Putting it simply, you can mark an F5 monitoring object state in SCOM, as up and down or in warning state, directly from iRules.&lt;/p&gt;
&lt;p&gt;A typical use case scenario that I'll be presenting to describe this feature would be an iRule created for detecting a possible Distributed Denial of Service (DDoS) attack. Examples of such iRules can be found on F5 DevCentral iRules &lt;a href="http://devcentral.f5.com/wiki/default.aspx/iRules/CodeShare.html"&gt;CodeShare&lt;/a&gt;. I'll just choose a simple one &lt;a href="http://devcentral.f5.com/wiki/default.aspx/iRules/Simple_DDOS_protection_for_HTTP_Requests.html"&gt;here&lt;/a&gt;, as a way to detect and avoid a location specific DDoS attack through HTTP requests. In this example we are trying to detect a Layer 7 DDoS attack and there's always a certain possibility for false positives, so we would like to notify the SCOM administrator by marking the state of the appropriate LTM Pool Member object to 'Warning' or 'Critical' while attempting to deflect the attack. This way further actions can be immediately taken by the network administrators to address the attack.&lt;/p&gt;
&lt;p&gt;We'll slightly change the iRule to accommodate our use-case and log a well-formatted message that will be sent to the F5 MP, which would parse and write it into the SCOM event data source against the F5 LTM Pool Member object being affected. So basically, the attack is being detected in the HTTP_REQUEST iRule event and then in the LB_SELECTED event the log message is sent out.&lt;/p&gt;
&lt;pre&gt;when RULE_INIT {&lt;br /&gt;    # state tracking: 0=idle; 1=normal; 2=under attack;&lt;br /&gt;&lt;br /&gt;    set ::state 0&lt;br /&gt;    set ::health "Healthy"&lt;br /&gt;    set ::message "OK."&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;when LB_SELECTED {&lt;br /&gt;    switch $::state {&lt;br /&gt;        2 {&lt;br /&gt;            set ::health "Critical" &lt;br /&gt;            set ::message "Under attack."&lt;br /&gt;          }&lt;br /&gt;       default {&lt;br /&gt;            set ::health "Healthy"&lt;br /&gt;            set ::message "OK."&lt;br /&gt;          }&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     # when not idle, log the state&lt;br /&gt;     if { $::state != 0 } {&lt;br /&gt;        log local0. "&lt;br /&gt;        &amp;lt;config_event&amp;gt;&lt;br /&gt;            &amp;lt;time&amp;gt;[clock seconds]&amp;lt;/time&amp;gt;&lt;br /&gt;            &amp;lt;type&amp;gt;pool_member&amp;lt;/type&amp;gt;&lt;br /&gt;            &amp;lt;name&amp;gt;[LB::server pool]&amp;lt;/name&amp;gt;&lt;br /&gt;            &amp;lt;ip&amp;gt;[LB::server addr]&amp;lt;/ip&amp;gt;&lt;br /&gt;            &amp;lt;port&amp;gt;[LB::server port]&amp;lt;/port&amp;gt;&lt;br /&gt;            &amp;lt;health&amp;gt;$::health&amp;lt;/health&amp;gt;&lt;br /&gt;            &amp;lt;message&amp;gt;$::message&amp;lt;/message&amp;gt;&lt;br /&gt;        &amp;lt;/config_event&amp;gt;"&lt;br /&gt;     }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;when HTTP_REQUEST {&lt;br /&gt;  if {[string tolower [HTTP::header "Accept-Language"]] contains "ru"} {&lt;br /&gt;    set ::state 2&lt;br /&gt;  } else {&lt;br /&gt;    # more evolved logic should go here...&lt;br /&gt;    ...&lt;br /&gt;    set ::state 0&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;
&lt;p&gt;In our example we used the local0 facility to log to, and for this the following syslog-ng configuration (/etc/syslog-ng/syslog-ng.conf) has been created on the BIG-IP, for logging to a remote host (TCP listener), where the F5 Monitoring Service is listening:&lt;/p&gt;
&lt;pre&gt;# Log to a remote host&lt;br /&gt;destination d_loghost {&lt;br /&gt;    tcp("172.27.155.129" port(3939));&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;filter f_iRules {&lt;br /&gt;    match("config_event");&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;log {&lt;br /&gt;    source(s_syslog_pipe);&lt;br /&gt;    filter(f_iRules);&lt;br /&gt;    destination(d_loghost);&lt;br /&gt;};&lt;/pre&gt;
&lt;p&gt;By default the F5 Monitoring Service will listen on port 999 for incoming iRule messages. In our example we set the port to 3939. The F5 Monitoring Service configuration file (&lt;strong&gt;f5mpsvc.exe.config&lt;/strong&gt;) should contain the following configuration entry within the &amp;lt;appSettings&amp;gt; section:&lt;/p&gt;
&lt;pre&gt;&amp;lt;appSettings&amp;gt;&lt;br /&gt;    ...&lt;br /&gt;    &amp;lt;add key="iRulesCustomHealthConfigurationPort" value="3939" /&amp;gt;&lt;br /&gt;    ...&lt;br /&gt;&amp;lt;/appSettings&amp;gt;&lt;/pre&gt;
&lt;p&gt;In a real world deployment, it is recommended to use a different logging facility on the BIG-IP (rather then local0), to avoid sending too much traffic to the F5 Monitoring Service, or the usage of log filters on the BIG-IP (such as &lt;strong&gt;f_iRules&lt;/strong&gt; in our configuration example above) which would also affect performance.&lt;/p&gt;
&lt;p&gt;Using this implementation, when the DDoS condition occurs, the iRules message is sent to the F5 Monitoring Service, which will process the message and will mark the state of the LTM Pool Member object to "Critical". Keep in mind that the F5 MP will only accept well-known messages logged from iRules, which should have the following format:&lt;/p&gt;
&lt;pre&gt;&amp;lt;config_event&amp;gt;&lt;br /&gt;    &amp;lt;time&amp;gt;&amp;lt;/time&amp;gt;&lt;br /&gt;    &amp;lt;type&amp;gt;&amp;lt;/type&amp;gt;&lt;br /&gt;    &amp;lt;name&amp;gt;&amp;lt;/name&amp;gt;&lt;br /&gt;    &amp;lt;ip&amp;gt;&amp;lt;/ip&amp;gt;&lt;br /&gt;    &amp;lt;port&amp;gt;&amp;lt;/port&amp;gt;&lt;br /&gt;    &amp;lt;health&amp;gt;&amp;lt;/health&amp;gt;&lt;br /&gt;    &amp;lt;message&amp;gt;&amp;lt;/message&amp;gt;&lt;br /&gt;&amp;lt;/config_event&amp;gt;&lt;/pre&gt;
&lt;p&gt;Most of the elements in the XML snippet above would require a value to be specified and the possible values for the &amp;lt;health&amp;gt; element would be: &lt;strong&gt;Healthy&lt;/strong&gt;, &lt;strong&gt;Critical&lt;/strong&gt;, &lt;strong&gt;Warning&lt;/strong&gt;. As soon as the F5 MP writes the related event into the SCOM event data source, the corresponding LTM Pool member specified in the log message (see the LB_SELECTED event in the iRule implementation) will change its state to Critical. SCOM administrator can configure alerts against the state-change event triggered by the iRule and get notified about the possibility of the DDoS attack.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/iRulesandtheF5ManagementPack_8775/iRules-f5mp_2.jpg"&gt;&lt;img width="660" height="500" border="0" style="border-width: 0px;" alt="iRules-f5mp" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/iRulesandtheF5ManagementPack_8775/iRules-f5mp_thumb.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 1&lt;/strong&gt;: Sending iRule messages from BIG-IP to the F5 MP and SCOM&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/jbalog/aggbug/1088065.aspx" width="1" height="1" /&gt;</description><pubDate>Fri, 05 Mar 2010 09:49:41 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/jbalog/archive/2010/03/05/irules-and-the-f5-management-pack.aspx#comment</comments><slash:comments>1</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>Installing the F5 Management Pack in a SCOM 2007 RMS Cluster with Distributed Management Servers</title><link>http://devcentral.f5.com/weblogs/jbalog/archive/2010/03/01/installing-the-f5-management-pack-in-a-scom-2007-rms.aspx</link><description>&lt;p&gt;In a previous &lt;a target="_blank" href="http://devcentral.f5.com/weblogs/jbalog/archive/2010/01/18/clustering-the-f5-management-pack-with-scom-2007-rms-cluster.aspx"&gt;article&lt;/a&gt; I've documented the way the F5 Management Pack should be installed and configured to run in a SCOM 2007 RMS Cluster environment. In this article I will extend the clustered deployment scenario with SCOM 2007 when additional management servers are being used.&lt;/p&gt;
&lt;p&gt;Following Microsoft's best practices deployment guidance for a SCOM 2007 distributed management server (DMS) environment, when installed in such a deployment, the F5 Management Pack (F5 MP) will only have the F5 Monitoring Service enabled and running on the Management Servers, while being disabled on the Root Management Server (RMS). This would also apply in a clustered RMS configuration, when the F5 MP setup wizard will automatically disable the F5 Monitoring Service on the RMS cluster nodes. This means that under normal circumstances, there's no need to cluster the F5 Monitoring Service inside an RMS cluster with DMS, since the F5 device discovery and management tasks are being executed on the Management Servers rather then the RMS cluster nodes.&lt;/p&gt;
&lt;p&gt;Still, the F5 Monitoring Service could be enabled on the RMS cluster nodes within a DMS environment with RMS-clustering, in which case the configuration steps described in the RMS clustering &lt;a target="_blank" href="http://devcentral.f5.com/weblogs/jbalog/archive/2010/01/18/clustering-the-f5-management-pack-with-scom-2007-rms-cluster.aspx"&gt;article&lt;/a&gt; would be followed. In the following section I'll be focusing on DMS-specific issues regarding the F5 MP deployment in an RMS-cluster, regardless of the fact that the F5 Monitoring service is enabled or disabled on the RMS cluster nodes.&lt;/p&gt;
&lt;p&gt;First of all, there is no special requirement needed for deploying the F5 MP on a DMS, other than having the F5 MP being already installed on the RMS, or at least one of the RMS cluster nodes. Again, the installation of the F5 MP on the RMS cluster node will disable by default the F5 Monitoring Service, but will install the management pack and related data source components.&lt;/p&gt;
&lt;p&gt;There is one verification step worth taking for good measure, prior to attempting to run F5 device discovery and management tasks from the (distributed) management server and this is related to one of the most common issues encountered with deploying the F5 MP in a SCOM DMS environment with RMS-clustering:&lt;/p&gt;
&lt;p&gt;Making sure the Security Principal Name (SPN) is properly set up for the account running the SCOM SDK service. Although this is mostly a SCOM 2007 deployment related issue and has no specific ties into the F5 MP deployment, we've seen it occurring often in clustered RMS with DMS. One way to quickly check if the SPN settings are valid is to run the:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;SetSPN -L &amp;lt;account&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;command, where the &amp;lt;account&amp;gt; is domain account running the SCOM SDK service. The expected output should be similar to:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Registered ServicePrincipalNames for CN=&amp;lt;name&amp;gt;, CN=Users, DC=&amp;lt;domain&amp;gt; ..:&lt;/strong&gt;&lt;/em&gt;&lt;em&gt;      &lt;br /&gt;
&lt;strong&gt;        MSOMSdkSvc/&amp;lt;rms-cluster-node1&amp;gt;        &lt;br /&gt;
        MSOMSdkSvc/&amp;lt;rms-cluster-node1&amp;gt;.&amp;lt;domain&amp;gt;         &lt;br /&gt;
        MSOMSdkSvc/&amp;lt;rms-cluster-node2&amp;gt;         &lt;br /&gt;
        MSOMSdkSvc/&amp;lt;rms-cluster-node2&amp;gt;.&amp;lt;domain&amp;gt;         &lt;br /&gt;
        MSOMSdkSvc/&amp;lt;mgmt-server&amp;gt;         &lt;br /&gt;
        MSOMSdkSvc/&amp;lt;mgmt-server&amp;gt;.&amp;lt;domain&amp;gt;&lt;/strong&gt;&lt;/em&gt;    &lt;br /&gt;
        ... &lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;Similarly, running the:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;SetSPN -L &amp;lt;mgmt-server&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;command on the Management Server (or RMS cluster node) should produce a similar output with:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Registered ServicePrincipalNames for CN=&amp;lt;mgmt-server&amp;gt;, CN=Computers, DC=&amp;lt;domain&amp;gt; ..:&lt;/strong&gt;&lt;/em&gt;&lt;em&gt;      &lt;br /&gt;
&lt;strong&gt;        MSOMSdkSvc/&amp;lt;mgmt-server&amp;gt;        &lt;br /&gt;
        MSOMSdkSvc/&amp;lt;mgmt-server&amp;gt;.&amp;lt;domain&amp;gt;         &lt;br /&gt;
        MSOMHSvc/&amp;lt;mgmt-server&amp;gt;         &lt;br /&gt;
        MSOMHSvc/&amp;lt;mgm_server&amp;gt;.&amp;lt;domain&amp;gt;  &lt;br /&gt;
        ... &lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Basically we have to make sure the SPN entries are correctly mapped to the hosts running the SCOM SDK and Health services: on the RMS cluster nodes and distributed management servers involved. In our example above these are &lt;strong&gt;&amp;lt;rms-cluster-node1&amp;gt;&lt;/strong&gt;, &lt;strong&gt;&amp;lt;rms-cluster-node2&amp;gt;&lt;/strong&gt; and &amp;lt;&lt;strong&gt;mgmt-server&amp;gt;&lt;/strong&gt;, the latter one being the actual [distributed] management server that we're considering for deploying the F5 MP on.&lt;/p&gt;
&lt;p&gt;On a last note, when using multiple management servers for discovering multiple F5 devices, keep in mind that each F5 device discovered will be "owned" by (or linked to) the Health Service on the management server where the F5 device has been discovered on. This means that subsequent management tasks related to the F5 device (such as device rediscovery or removal) should be initiated on the same management server for the given device.&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/jbalog/aggbug/6313.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 01 Mar 2010 13:00:48 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/jbalog/archive/2010/03/01/installing-the-f5-management-pack-in-a-scom-2007-rms.aspx#comment</comments><slash:comments>3</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>Citrix XenApp 5.0 Implementation Tips</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1082335/Citrix-XenApp-50-Implementation-Tips.aspx</link><description>&lt;p&gt;I recently had the pleasure of working on a Citrix 5.0 implementation and I wanted to share a few things that I learned during that setup.&amp;#160; As many of you know, there are two deployment guides that have been made available by F5 Networks in regards to setting up Citrix Presentation Server 4.5 in TMOS versions 9.x and 10.x.&amp;#160; They are excellent guides and the best thing about them is that you can utilize those guides to assist you in deploying Citrix XenApp 5.0, with a few exceptions of course.&amp;#160; Those exceptions are what I will be covering in this tech tip.&lt;/p&gt;
&lt;p&gt;Both of the previously mentioned deployment guides discuss editing files on the Citrix farms Web Interface servers so that it looks for the client IP address in the X-Forwarded-For HTTP header.&amp;#160; Otherwise, every connection will appear to be originating from the BIG-IP LTM and not from its true IP.&amp;#160; After reading both guides and looking at my current environment I was dismayed to find that the files and locations mentioned were no longer valid.&amp;#160; I then turned to my top three resources on the web in the search for an answer: &lt;a href="https://support.f5.com/kb/en-us.html" target="_blank"&gt;AskF5&lt;/a&gt;, &lt;a href="/" target="_blank"&gt;DevCentral&lt;/a&gt; and Google.&amp;#160;&lt;/p&gt;
&lt;p&gt;I struck out on the first two (which seldom happens) but my Google search did turn up some interesting results on the Citrix Forums.&amp;#160; I finally found some code posted by Sam Jacobs back in August 2009 that modifies the way the Citrix farm looks up the client IP address.&amp;#160; His method allows for the use of the X-Forwarded-For header.&lt;/p&gt;
&lt;p&gt;The first file that you will want to find and edit is the Include.java file.&amp;#160; You will want to locate and change this file on every Web Interface XenApp server in the farm.&amp;#160; Speaking from experience, save a copy of the original file to a safe location such as your desktop or flash drive.&amp;#160; DO NOT copy the file and rename the original to Include.old and leave it on the server.&amp;#160; It may sound crazy, but doing that will not work.&amp;#160; I’m not a programmer, so I cannot tell you why that will not work, but I can tell you I know for a fact it will not.&amp;#160; That being said, here is the file path for the Include.java file:&lt;/p&gt;
&lt;p&gt;“\Inetpub\wwwroot\Citrix\XenApp\app_code\PagesJava\com\citrix\wi\pageutils\Include.java”&lt;/p&gt;
&lt;p&gt;Now that you have found the file, open it up with a text editor (I use Textpad) and find the Java routine named “getClientAddress”.&amp;#160; Replace the code for that routine with the code listed below.&lt;/p&gt;
&lt;p&gt;&lt;font color="#008040"&gt;public static String getClientAddress(WIContext wiContext) {      &lt;br /&gt;
String ageClientAddress = AGEUtilities.getAGEClientIPAddress(wiContext);       &lt;br /&gt;
String userIPAddress = wiContext.getWebAbstraction().getRequestHeader("X-FORWARDED-FOR");       &lt;br /&gt;
if (userIPAddress == null) {       &lt;br /&gt;
userIPAddress = wiContext.getWebAbstraction().getUserHostAddress();       &lt;br /&gt;
}       &lt;br /&gt;
return (ageClientAddress != null ? ageClientAddress : userIPAddress);       &lt;br /&gt;
}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Save the file and wash/rinse/repeat this step on every Web Interface server in the farm.&amp;#160; The next thing that you will want to do is to modify the login page so that it displays the client IP address being obtained from the X-Forwarded-For header.&amp;#160; The file you will want to edit is called “loginView.ascx” and can be found in the following file path on your Web Interface Servers:&lt;/p&gt;
&lt;p&gt;”\inetpub\wwwroot\Citrix\XenApp\app_data\include\loginView.ascx”&lt;/p&gt;
&lt;p&gt;The code you will want to add is:&lt;/p&gt;
&lt;p&gt;&lt;font color="#008040"&gt;Client IP: &amp;lt;%= com.citrix.wi.pageutils.Include.getClientAddress(wiContext) %&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;I added the code directly below the LoginPageControl viewControl line and it works well for me.&amp;#160; Save the file and repeat this step on every Web Interface server in the farm and reboot each Web Interface Server after you are done.&amp;#160;&lt;/p&gt;
&lt;p&gt;That’s it!&amp;#160; Well, you do have to complete the other setup steps listed in the deployment guide that you are using, but after that your farm will be ready for business!&amp;#160; I am aiming to develop some custom monitors for the Web Interface Server and for the XML Broker Servers over the next few weeks.&amp;#160; Once I have those done I will put them out in the forums for the community enjoy.&lt;/p&gt;
&lt;p&gt;-naladar&lt;/p&gt;
&lt;div class="d_itc_f" style="clear: both; height: 11px;"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;</description><pubDate>Fri, 26 Feb 2010 14:13:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1082335/Citrix-XenApp-50-Implementation-Tips.aspx#Comments</comments><slash:comments>4</slash:comments><dc:creator>naladar</dc:creator></item><item><title>BIG-IP Logging and Reporting Toolkit - part one</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1082334/BIG-IP-Logging-and-Reporting-Toolkit--part-one.aspx</link><description>&lt;p&gt;Joe Malek, one of the many awesome engineers here at F5, took it upon himself to delve deeply into a very interesting but often unsung part of the BIG-IP advanced configuration world: logging and reporting. It’s my great pleasure to get to share with you his awesome study and the findings therein, along with (eventually) a toolkit to help you get started in the world of custom log manipulation. If you’ve ever questioned or been curious about your options when it comes to information gathering and reporting, this is definitely something you should read. There will be multiple parts, so stay tuned. This one is just the intro.&lt;/p&gt;
&lt;h4&gt;&amp;#160;&lt;/h4&gt;
&lt;h4&gt;&lt;a name="_Toc251856049"&gt;&lt;span style="font-size: large;"&gt;Description&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;F5 products occupy critical positions in application delivery infrastructure. They serve as gateways, proxies, accelerators and traffic flow arbiters. In these roles customer expectations vary for the degree and amount of event information recorded. Several opportunities exist within our current product capabilities for our customers and partners to produce and consume log messages from and via F5 products. Efforts to date include &lt;a href="/wiki/default.aspx/iRules/Custom_Apache_style_logging_for_Java_based_applications.html" target="_blank"&gt;generating W3C style log messages&amp;#160; on LTM via iRules&lt;/a&gt;, close integration with leading vendors and &lt;a href="https://support.f5.com/kb/en-us/solutions/public/9000/400/sol9435.html" target="_blank"&gt;ASM&lt;/a&gt; (requires askf5 login), and creating relationships with leading vendors to best serve our customers. Significant capabilities exist for customers and partners to create their own logging and reporting solutions.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;h4&gt;&lt;a name="_Toc251856050"&gt;&lt;span style="font-size: large;"&gt;Problems and opportunity&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;In the many products offered by F5, there exists a variety of logging structures. The common log protocols used to emit messages by F5 products are &lt;a href="https://support.f5.com/kb/en-us/solutions/public/8000/200/sol8260.html" target="_blank"&gt;Syslog&lt;/a&gt; (requires askf5 login) and &lt;a href="https://support.f5.com/kb/en-us/solutions/public/3000/700/sol3727.html" target="_blank"&gt;SNMP&lt;/a&gt; (requires askf5 login), along with built-in &lt;a href="/wiki/default.aspx/iRules.HSL" target="_blank"&gt;iRules&lt;/a&gt;&amp;#160;&lt;a href="/wiki/default.aspx/iRules/log.html" target="_blank"&gt;capabilities&lt;/a&gt;. Though syslog-ng is commonplace, software components tend to vary in transport, verbosity, message formatting and sometimes syslog facility. This can result in a high degree of data density in our logs, and messages our systems emit can vary from version to version.&lt;a href="#_edn1" name="_ednref1"&gt;[i]&lt;/a&gt; The combination of these factors results in a challenge that requires a coordinated solution for customers who are compelled by regulation, industry practice, or by business process, to maintain log management infrastructure that consumes messages from F5 devices.&lt;a href="#_edn2" name="_ednref2"&gt;[ii]&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;By utilizing the unique product architecture TMOS employs by sharing its knowledge about networks and applications as well as capabilities built into iRules, TMOS can provide much of this information to log management infrastructure in a simple and knowledgeable manner. In effect, we can emit messages about appliance state and offload many message logging tasks from application servers. Based on our connection knowledge we can also improve the utility and value of information obtained from vendor provided log management infrastructure.&lt;a href="#_edn3" name="_ednref3"&gt;[iii]&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;h4&gt;&lt;a name="_Toc251856053"&gt;&lt;span style="font-size: large;"&gt;Objectives and success criteria&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;The success criteria for including an item in the toolkit is:&lt;/p&gt;
&lt;p&gt;1. A capability to deliver reports on select items using the leading platforms without requiring core development work on an F5 product.&lt;/p&gt;
&lt;p&gt;2. An identified extensibility capability for future customization and report building.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;h4&gt;&lt;a name="_Toc251856055"&gt;&lt;span style="font-size: large;"&gt;Assumptions and dependencies&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;ol&gt;
    &lt;li&gt;Vendors to include in the toolkit are Splunk, Q1Labs and PresiNET&lt;/li&gt;
    &lt;li&gt;ASM logging and reporting is sufficient and does not need further explanation&lt;/li&gt;
    &lt;li&gt;Information to be included in sample reports should begin to assist in diagnostic activities, demonstrate ROI by including ROI in an infrastructure and advise on when F5 devices are nearing capacity&lt;/li&gt;
    &lt;li&gt;Vendor products must be able to accept event data emitted by F5 products. This means that some vendors might have more comprehensive support than others.&lt;/li&gt;
    &lt;li&gt;Products currently supported but not in active development are not eligible for inclusion in the toolkit. Examples are older versions of BIG-IP and FirePass, and all WANJet releases.&lt;/li&gt;
    &lt;li&gt;Some vendor products will require code modifications on the vendor’s side to understand the data F5 products send them.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr size="1" align="left" width="33%" /&gt;
&lt;p&gt;&lt;a href="#_ednref1" name="_edn1"&gt;[i]&lt;/a&gt; As a piece of customer evidence, Microsoft implemented several logging practices around version 9.1. When they upgraded to version 9.4 their log volume increased several-fold because F5 added log messages and changed existing messages. As a result existing message taxonomy needed to be deprecated and we caused them to need to redesign filters, reports and create a new set of logging practices.&lt;/p&gt;
&lt;p&gt;&lt;a href="#_ednref2" name="_edn2"&gt;[ii]&lt;/a&gt; Regulations such as the Sarbanes-Oxley Act, Gramm Leach Blyley Act, Federal Information Security Management Act, PCI DSS, and HIPPA.&lt;/p&gt;
&lt;p&gt;&lt;a href="#_ednref3" name="_edn3"&gt;[iii]&lt;/a&gt; It is common for F5 products to manipulate connections via OneConnect, NATs and SNATs. These operations are unknown to external log collectors, and pose a challenge when assembling a complete view of the network connections between a client and a server via an F5 device for a single application transaction.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;h4&gt;&amp;#160;&lt;span style="font-size: large;"&gt;What’s Next?&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;In the next installment we’ll get into the details of the different vendors in question, their offerings, how they work and integrate with BIG-IP, and more.&lt;/p&gt;
&lt;div class="d_itc_f" style="clear: both; height: 11px;"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&amp;#160;Logging and Reporting Toolkit Series:&lt;/strong&gt;&amp;#160; &lt;a href="/Default.aspx?tabid=63&amp;amp;articleType=ArticleView&amp;amp;articleId=1084341"&gt;Part Two&lt;/a&gt; | &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=63&amp;amp;articleType=ArticleView&amp;amp;articleId=1084350"&gt;Part Three&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 25 Feb 2010 12:01:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1082334/BIG-IP-Logging-and-Reporting-Toolkit--part-one.aspx#Comments</comments><slash:comments>0</slash:comments><dc:creator>Colin</dc:creator></item><item><title>Laptop Load Balancing For The Developer With BIG-IP LTM VE</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1082333/Laptop-Load-Balancing-For-The-Developer-With-BIG-IP-LTM-VE.aspx</link><description>&lt;script type="text/javascript" src="/DesktopModules/itcMetaPost/js/ca0c21fbdc85f6a1597417732d450607.ashx?hs=1"&gt;&lt;/script&gt;
&lt;h2&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'5d134575'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningLaptop.jpg"&gt;&lt;img height="208" width="240" border="0" align="right" src="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningLaptop_thumb.jpg" title="DevProvisioningLaptop" alt="DevProvisioningLaptop" style="border: 0px none; display: inline; margin-left: 0px; margin-right: 0px;" /&gt;&lt;/a&gt;Introduction&lt;/h2&gt;
&lt;p&gt;So, you've probably read all about the BIG-IP LTM VE.&amp;#160; You've gone through the download process and got the thing configured and running in VMWare.&amp;#160; You've even gone through the initial configuration steps to get the management port configured and got the thing licensed up.&amp;#160; Now what?&amp;#160; Well, we've got a bunch of examples of firing up separate VM instances of host operating systems so that you can test creating pools of servers with those other VM instances.&amp;#160; The problem there is that running those VM's is costly in RAM and CPU.&lt;/p&gt;
&lt;p&gt;Being a developer, my first thought was how I could make use of my existing development environment with Visual Studio and IIS on the laptop that is hosting the LTM VE virtual machine.&amp;#160; Why should I have to create a new VM instance of Windows and incur the overhead of running that extra VM?&amp;#160; Well, you don't!&amp;#160;&lt;/p&gt;
&lt;p&gt;In this article, I'm going to show you how to build a full client-server environment utilizing only the laptop's host operating system and a single LTM VE instance.&lt;/p&gt;
&lt;h2&gt;Configuring IIS&lt;/h2&gt;
&lt;p&gt;The first step is to configure a web application.&amp;#160; You could use any web server you desire (apache, tomcat, etc) but I'll use IIS since I'm already using it to debug applications I've written with Microsoft Visual Studio .NET.&amp;#160; Below is the IIS 7 admin console running under Windows 7.&amp;#160; The main trick here, is to make sure that the site bindings for your app will accept all ip addresses.&amp;#160; That way requests coming from the internal VMWare interface will be able to handle the requests.&lt;/p&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'5d134575'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningIIS.jpg"&gt;&lt;img height="252" width="404" border="0" src="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningIIS_thumb.jpg" title="DevProvisioningIIS" alt="DevProvisioningIIS" style="border: 0px none; display: block; float: none; margin-left: auto; margin-right: auto;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;The Web Application&lt;/h2&gt;
&lt;p&gt;For this example, I'm going to go old school and write a simple .asp (HTML) page with no server side processing.&amp;#160; Requests to the Default Web Site in IIS will return the contents of this file.&lt;/p&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'5d134575'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningWebpage.jpg"&gt;&lt;img height="131" width="335" border="0" src="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningWebpage_thumb.jpg" title="DevProvisioningWebpage" alt="DevProvisioningWebpage" style="border: 0px none; display: block; float: none; margin-left: auto; margin-right: auto;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Creating your VM&lt;/h2&gt;
&lt;p&gt;I'm going to assume for this article, that you already have VMWare Workstation or Server installed and that you have got your BIG-IP LTM-VE fired up and licensed.&amp;#160; If you don't, there are several walkthroughs here on DevCentral that will help you get going.&lt;/p&gt;
&lt;p&gt;VMWare sets up several network adapters.&amp;#160; We are going to make use of two of those interfaces to act as the external and internal networks for the LTM.&amp;#160; By configuring IIS to handle requests from all addresses, this means we can create a pool member pointing to the internal network here.&amp;#160; In this example 192.168.239.1 is my external network and 192.168.41.1 is my internal network address that will act as a pool member.&lt;/p&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'5d134575'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningIPConfig.jpg"&gt;&lt;img height="188" width="542" border="0" src="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningIPConfig_thumb.jpg" title="DevProvisioningIPConfig" alt="DevProvisioningIPConfig" style="border: 0px none; display: block; float: none; margin-left: auto; margin-right: auto;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Provisioning your LTM-VE&lt;/h2&gt;
&lt;p&gt;Now, I could go and document all of the steps needed to create the objects on the LTM needed to successfully deploy the application but that wouldn't be any fun, plus it wouldn't let me show off my iControl PowerShell integration.&lt;/p&gt;
&lt;p&gt;I've written a deployment iControl PowerShell script that will go through the process of configuring VLANs and SelfIPs, creating a pool with the internal host NIC as a pool member with it's associated health monitors, creating the Virtual Server, and, just for fun, an iRule that will modify the response content from IIS back to the browser.&lt;/p&gt;
&lt;p&gt;Here's the output of the script.&amp;#160; I'll describe the pieces below.&lt;/p&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'5d134575'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningPowerShell.jpg"&gt;&lt;img height="226" width="681" border="0" src="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningPowerShell_thumb.jpg" title="DevProvisioningPowerShell" alt="DevProvisioningPowerShell" style="border: 0px none; display: block; float: none; margin-left: auto; margin-right: auto;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Create VLANs&lt;/h3&gt;
&lt;p&gt;A default LTM-VE configuration has no objects created so the first step is configuring VLAN for the external and internal networks.&amp;#160; The code below can be used to create the "external" and "internal" VLANs.&amp;#160; In my example the external VLAN is configured with the 1.1 interface as untagged (corresponding to the external VMWare NIC) and the internal VLAN using interface 1.2 (corresponding to the internal VMWare NIC).&lt;/p&gt;
&lt;blockquote&gt;
&lt;div&gt;
&lt;div id="codeSnippet" style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum1" style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; function Create-VLAN()&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum2" style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum3" style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;   param([&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;]$name, [&lt;span style="color: rgb(0, 0, 255);"&gt;long&lt;/span&gt;]$id, [&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;]$member_name);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum4" style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;   &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum5" style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;   # Create VLAN&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum6" style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;   $vlans = (, $name);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum7" style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;   $vlan_ids = (, $id);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum8" style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;   $member = New-Object -TypeName iControl.NetworkingVLANMemberEntry;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum9" style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;   $member.member_name = $member_name&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum10" style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;   $member.member_type = &lt;span style="color: rgb(0, 96, 128);"&gt;"MEMBER_INTERFACE"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum11" style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;   $member.tag_state = &lt;span style="color: rgb(0, 96, 128);"&gt;"MEMBER_UNTAGGED"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum12" style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;   $memberA = (, $member);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum13" style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;   $memberAofA = (, $memberA);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum14" style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt;   $failsafe_states = (, &lt;span style="color: rgb(0, 96, 128);"&gt;"STATE_DISABLED"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum15" style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt;   $timeouts = (, 1500);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum16" style="color: rgb(96, 96, 96);"&gt;  16:&lt;/span&gt;   $mac_masquerade = (, &lt;span style="color: rgb(0, 96, 128);"&gt;""&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum17" style="color: rgb(96, 96, 96);"&gt;  17:&lt;/span&gt;   &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum18" style="color: rgb(96, 96, 96);"&gt;  18:&lt;/span&gt;   (Get-F5.iControl).NetworkingVLAN.create(&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum19" style="color: rgb(96, 96, 96);"&gt;  19:&lt;/span&gt;     $vlans, $vlan_ids, $memberAofA,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum20" style="color: rgb(96, 96, 96);"&gt;  20:&lt;/span&gt;     $failsafe_states, $timeouts, $mac_masquerade);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum21" style="color: rgb(96, 96, 96);"&gt;  21:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;Looking in the BIG-IP GUI, the following VLANs were created.&lt;/p&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'5d134575'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningVlans.jpg"&gt;&lt;img height="86" width="706" border="0" src="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningVlans_thumb.jpg" title="DevProvisioningVlans" alt="DevProvisioningVlans" style="border: 0px none; display: block; float: none; margin-left: auto; margin-right: auto;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Create SelfIPs&lt;/h3&gt;
&lt;p&gt;Now that the VLANs have been created, Self IP Addresses must be configured for those VLANs so that the LTM can communicate with the laptop network interfaces.&amp;#160; The following code is used to create two SelfIPs (192.168.42.2 for the internal VLAN, and 192.168.239.2 for the external VLAN).&lt;/p&gt;
&lt;blockquote&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div id="codeSnippet" style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum1" style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; function Create-SelfIP()&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum2" style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum3" style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;   param([&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;]$address, [&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;]$vlan);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum4" style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;     &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum5" style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;   $self_ips = (, $address);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum6" style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;   $vlan_names = (, $vlan);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum7" style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;   $netmasks = (, &lt;span style="color: rgb(0, 96, 128);"&gt;"255.255.255.0"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum8" style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;   $unit_ids = (, 0);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum9" style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;   $floating_states = (, &lt;span style="color: rgb(0, 96, 128);"&gt;"STATE_DISABLED"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum10" style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;   (Get-F5.iControl).NetworkingSelfIP.create(&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum11" style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;     $self_ips, $vlan_names, $netmasks,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum12" style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;     $unit_ids, $floating_states&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum13" style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;   );&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum14" style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;And again, the BIG-IP GUI shows the two Self IPs for the two VLANs.&lt;/p&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'5d134575'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningSelfIPs.jpg"&gt;&lt;img height="86" width="707" border="0" src="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningSelfIPs_thumb.jpg" title="DevProvisioningSelfIPs" alt="DevProvisioningSelfIPs" style="border: 0px none; display: block; float: none; margin-left: auto; margin-right: auto;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Create Pool&lt;/h3&gt;
&lt;p&gt;The previous two steps were to ensure the lower networking layer was in place to allow connections from the upcoming generated Virtual Server as well as the defined pool members.&amp;#160; The next step is to create a pool with a pool member of the internal VMWare NIC address (192.168.41.1).&amp;#160; In this code, the pool is created and I've associated two health check monitors on the pool member.&amp;#160; In this case I'm using the standard http and gateway_icmp monitors.&amp;#160; You can modify these to suit your taste.&lt;/p&gt;
&lt;blockquote&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div id="codeSnippet" style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum1" style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; function Create-Pool()&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum2" style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum3" style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;   param([&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;]$name, [&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;]$member_ip, [&lt;span style="color: rgb(0, 0, 255);"&gt;long&lt;/span&gt;]$member_port);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum4" style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;   &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum5" style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;   $pool_list = (Get-F5.iControl).LocalLBPool.get_list();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum6" style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;   &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; ( -not (Is-InList -search $name -list $pool_list) )&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum7" style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;   {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum8" style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;     $pool_names = (, $name);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum9" style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;     $lb_methods = (, &lt;span style="color: rgb(0, 96, 128);"&gt;"LB_METHOD_ROUND_ROBIN"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum10" style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;     $member = New-Object -TypeName iControl.CommonIPPortDefinition;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum11" style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;     $member.address = $member_ip;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum12" style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;     $member.port = $member_port;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum13" style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;     $memberA = (, $member);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum14" style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt;     $memberAofA = (, $memberA);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum15" style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt;     &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum16" style="color: rgb(96, 96, 96);"&gt;  16:&lt;/span&gt;     Write-Host &lt;span style="color: rgb(0, 96, 128);"&gt;"Creating Pool `"&lt;/span&gt;$name`&lt;span style="color: rgb(0, 96, 128);"&gt;"..."&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum17" style="color: rgb(96, 96, 96);"&gt;  17:&lt;/span&gt;     (Get-F5.iControl).LocalLBPool.create($pool_names, $lb_methods, $memberAofA);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum18" style="color: rgb(96, 96, 96);"&gt;  18:&lt;/span&gt;     &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum19" style="color: rgb(96, 96, 96);"&gt;  19:&lt;/span&gt;     $monitor_association = New-Object -TypeName iControl.LocalLBPoolMonitorAssociation;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum20" style="color: rgb(96, 96, 96);"&gt;  20:&lt;/span&gt;     $monitor_association.pool_name = $name;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum21" style="color: rgb(96, 96, 96);"&gt;  21:&lt;/span&gt;     $monitor_association.monitor_rule = New-Object -TypeName iControl.LocalLBMonitorRule;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum22" style="color: rgb(96, 96, 96);"&gt;  22:&lt;/span&gt;     $monitor_association.monitor_rule.type = &lt;span style="color: rgb(0, 96, 128);"&gt;"MONITOR_RULE_TYPE_AND_LIST"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum23" style="color: rgb(96, 96, 96);"&gt;  23:&lt;/span&gt;     $monitor_association.monitor_rule.quorum = 1;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum24" style="color: rgb(96, 96, 96);"&gt;  24:&lt;/span&gt;     $monitor_association.monitor_rule.monitor_templates = (&lt;span style="color: rgb(0, 96, 128);"&gt;"http"&lt;/span&gt;, &lt;span style="color: rgb(0, 96, 128);"&gt;"gateway_icmp"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum25" style="color: rgb(96, 96, 96);"&gt;  25:&lt;/span&gt;     $monitor_associations = (, $monitor_association);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum26" style="color: rgb(96, 96, 96);"&gt;  26:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum27" style="color: rgb(96, 96, 96);"&gt;  27:&lt;/span&gt;     Write-Host &lt;span style="color: rgb(0, 96, 128);"&gt;"Assigning monitors to Pool `"&lt;/span&gt;$name`&lt;span style="color: rgb(0, 96, 128);"&gt;"..."&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum28" style="color: rgb(96, 96, 96);"&gt;  28:&lt;/span&gt;     (Get-F5.iControl).LocalLBPool.set_monitor_association($monitor_associations);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum29" style="color: rgb(96, 96, 96);"&gt;  29:&lt;/span&gt;   }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum30" style="color: rgb(96, 96, 96);"&gt;  30:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;And again, the BIG-IP GUI shows the generated Pool with the single defined member.&amp;#160; Oh, and as a bonus, we have a Green Circle status which means the health checks succeeded and we're ready to go!&lt;/p&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'5d134575'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningPool.jpg"&gt;&lt;img height="57" width="705" border="0" src="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningPool_thumb.jpg" title="DevProvisioningPool" alt="DevProvisioningPool" style="border: 0px none; display: block; float: none; margin-left: auto; margin-right: auto;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Create Virtual Server&lt;/h3&gt;
&lt;p&gt;Now that the application pool is created, the virtual server is configured to give an IP address you can use to test the IIS application.&amp;#160; The Virtual Server creation process involves specifying virtual server configuration as well as a list of profiles to associate with the virtual.&amp;#160; In this example, I'm using the stock "http" profile and as an added bonus, I've added in the "stream" profile so that my upcoming iRule will be able to do some content replacement.&lt;/p&gt;
&lt;blockquote&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div id="codeSnippet" style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum1" style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; function Create-Virtual()&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum2" style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum3" style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;   param([&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;]$name, [&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;]$ip, [&lt;span style="color: rgb(0, 0, 255);"&gt;long&lt;/span&gt;]$port, [&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;]$pool);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum4" style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;   $vs_list = (Get-F5.iControl).LocalLBVirtualServer.get_list();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum5" style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;   &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; ( -not (Is-InList -search $name -list $vs_list) )&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum6" style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;   {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum7" style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;     $definition = New-Object -TypeName iControl.CommonVirtualServerDefinition;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum8" style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;     $definition.name = $name;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum9" style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;     $definition.address = $ip;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum10" style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;     $definition.port = $port;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum11" style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;     $definition.protocol = &lt;span style="color: rgb(0, 96, 128);"&gt;"PROTOCOL_TCP"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum12" style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;     $definitions = (, $definition);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum13" style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;     $wildmasks = (, &lt;span style="color: rgb(0, 96, 128);"&gt;"255.255.255.255"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum14" style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt;     $resource = New-Object -TypeName iControl.LocalLBVirtualServerVirtualServerResource;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum15" style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt;     $resource.type = &lt;span style="color: rgb(0, 96, 128);"&gt;"RESOURCE_TYPE_POOL"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum16" style="color: rgb(96, 96, 96);"&gt;  16:&lt;/span&gt;     $resource.default_pool_name = $pool;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum17" style="color: rgb(96, 96, 96);"&gt;  17:&lt;/span&gt;     $resources = (, $resource);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum18" style="color: rgb(96, 96, 96);"&gt;  18:&lt;/span&gt;     $profile = New-Object -TypeName iControl.LocalLBVirtualServerVirtualServerProfile;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum19" style="color: rgb(96, 96, 96);"&gt;  19:&lt;/span&gt;     $profile.profile_context = &lt;span style="color: rgb(0, 96, 128);"&gt;"PROFILE_CONTEXT_TYPE_ALL"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum20" style="color: rgb(96, 96, 96);"&gt;  20:&lt;/span&gt;     $profile.profile_name = &lt;span style="color: rgb(0, 96, 128);"&gt;"http"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum21" style="color: rgb(96, 96, 96);"&gt;  21:&lt;/span&gt;     $profile2 = New-Object -TypeName iControl.LocalLBVirtualServerVirtualServerProfile;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum22" style="color: rgb(96, 96, 96);"&gt;  22:&lt;/span&gt;     $profile2.profile_context = &lt;span style="color: rgb(0, 96, 128);"&gt;"PROFILE_CONTEXT_TYPE_ALL"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum23" style="color: rgb(96, 96, 96);"&gt;  23:&lt;/span&gt;     $profile2.profile_name = &lt;span style="color: rgb(0, 96, 128);"&gt;"stream"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum24" style="color: rgb(96, 96, 96);"&gt;  24:&lt;/span&gt;     $profileA = ($profile2, $profile);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum25" style="color: rgb(96, 96, 96);"&gt;  25:&lt;/span&gt;     $profileAofA = (, $profileA);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum26" style="color: rgb(96, 96, 96);"&gt;  26:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum27" style="color: rgb(96, 96, 96);"&gt;  27:&lt;/span&gt;     Write-Host &lt;span style="color: rgb(0, 96, 128);"&gt;"Creating Virtual Server `"&lt;/span&gt;$name`&lt;span style="color: rgb(0, 96, 128);"&gt;"..."&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum28" style="color: rgb(96, 96, 96);"&gt;  28:&lt;/span&gt;     &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum29" style="color: rgb(96, 96, 96);"&gt;  29:&lt;/span&gt;     (Get-F5.iControl).LocalLBVirtualServer.create($definitions, $wildmasks, $resources, $profileAofA);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum30" style="color: rgb(96, 96, 96);"&gt;  30:&lt;/span&gt;     &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum31" style="color: rgb(96, 96, 96);"&gt;  31:&lt;/span&gt;     Write-Host &lt;span style="color: rgb(0, 96, 128);"&gt;"Enabling SNAT Automap on Virtual Server `"&lt;/span&gt;$name`&lt;span style="color: rgb(0, 96, 128);"&gt;"..."&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum32" style="color: rgb(96, 96, 96);"&gt;  32:&lt;/span&gt;     (Get-F5.iControl).LocalLBVirtualServer.set_snat_automap( (, $name) );&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum33" style="color: rgb(96, 96, 96);"&gt;  33:&lt;/span&gt;   }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum34" style="color: rgb(96, 96, 96);"&gt;  34:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;You'll see the Virtual Server has been created with a destination address of 192.168.239.3 which coincides with the "external" VLAN and external VMWare NIC.&lt;/p&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'5d134575'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningVirtualServer.jpg"&gt;&lt;img height="58" width="706" border="0" src="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningVirtualServer_thumb.jpg" title="DevProvisioningVirtualServer" alt="DevProvisioningVirtualServer" style="border: 0px none; display: block; float: none; margin-left: auto; margin-right: auto;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Create iRules&lt;/h3&gt;
&lt;p&gt;Now, this isn't necessarily needed for this deployment but I figured I'd throw something in to prove that traffic is actually going through the LTM and get you an iRule to start with.&amp;#160; The follow code will create an iRule that does a stream replacement in the HTTP response from IIS.&amp;#160; It converts all occurrences of "Test" with "Test (Modified by iRule)".&amp;#160; This way we can tell from our client testing that the iRule is getting processed.&lt;/p&gt;
&lt;p&gt;After the iRule is created, it is assigned to the Virtual Server with the LocalLB.VirtualServer.add_rule method.&lt;/p&gt;
&lt;blockquote&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div id="codeSnippet" style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum1" style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; function Create-iRule()&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum2" style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum3" style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt;   param([&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;]$&lt;span style="color: rgb(0, 0, 255);"&gt;virtual&lt;/span&gt;, [&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;]$rule_name);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum4" style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt;   &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum5" style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt;   $rule_list = (Get-F5.iControl).LocalLBRule.get_list();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum6" style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;   &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; ( -not (Is-InList -search $rule_name -list $rule_list) )&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum7" style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;   {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum8" style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;     $rule = New-Object -TypeName iControl.LocalLBRuleRuleDefinition;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum9" style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;     $rule.rule_name = $rule_name;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum10" style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;     $rule.rule_definition = &lt;span style="color: rgb(0, 96, 128);"&gt;@"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum11" style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt; when HTTP_REQUEST {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum12" style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;   log local0. "Request &lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt; URI: [HTTP::uri]&lt;span style="color: rgb(0, 96, 128);"&gt;";&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum13" style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum14" style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt; when HTTP_RESPONSE {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum15" style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt;   log local0. "Response [HTTP::status]&lt;span style="color: rgb(0, 96, 128);"&gt;";&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum16" style="color: rgb(96, 96, 96);"&gt;  16:&lt;/span&gt;   STREAM::expression "@Test@Test (Modified by iRule)&lt;span style="color: rgb(0, 96, 128);"&gt;@";&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum17" style="color: rgb(96, 96, 96);"&gt;  17:&lt;/span&gt;   STREAM::enable;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum18" style="color: rgb(96, 96, 96);"&gt;  18:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum19" style="color: rgb(96, 96, 96);"&gt;  19:&lt;/span&gt; "@;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum20" style="color: rgb(96, 96, 96);"&gt;  20:&lt;/span&gt;     Write-Host &lt;span style="color: rgb(0, 96, 128);"&gt;"Creating iRule `"&lt;/span&gt;$rule_name`&lt;span style="color: rgb(0, 96, 128);"&gt;"..."&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum21" style="color: rgb(96, 96, 96);"&gt;  21:&lt;/span&gt;     (Get-F5.iControl).LocalLBRule.create( (, $rule) );&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum22" style="color: rgb(96, 96, 96);"&gt;  22:&lt;/span&gt;   }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum23" style="color: rgb(96, 96, 96);"&gt;  23:&lt;/span&gt;   &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum24" style="color: rgb(96, 96, 96);"&gt;  24:&lt;/span&gt;   # Assign iRule to Virtual Server&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum25" style="color: rgb(96, 96, 96);"&gt;  25:&lt;/span&gt;   $vs_rules = (Get-F5.iControl).LocalLBVirtualServer.get_rule( (, $&lt;span style="color: rgb(0, 0, 255);"&gt;virtual&lt;/span&gt;) );&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum26" style="color: rgb(96, 96, 96);"&gt;  26:&lt;/span&gt;   $found = $&lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum27" style="color: rgb(96, 96, 96);"&gt;  27:&lt;/span&gt;   &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; ($vs_rule &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; $vs_rules[0])&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum28" style="color: rgb(96, 96, 96);"&gt;  28:&lt;/span&gt;   {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum29" style="color: rgb(96, 96, 96);"&gt;  29:&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; ( $rule_name.Equals($vs_rule.rule_name) ) { $found = $&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum30" style="color: rgb(96, 96, 96);"&gt;  30:&lt;/span&gt;   }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum31" style="color: rgb(96, 96, 96);"&gt;  31:&lt;/span&gt;   &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; ( -not $found )&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum32" style="color: rgb(96, 96, 96);"&gt;  32:&lt;/span&gt;   {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum33" style="color: rgb(96, 96, 96);"&gt;  33:&lt;/span&gt;     $virtual_servers = (, $&lt;span style="color: rgb(0, 0, 255);"&gt;virtual&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum34" style="color: rgb(96, 96, 96);"&gt;  34:&lt;/span&gt;     $rule = New-Object -TypeName iControl.LocalLBVirtualServerVirtualServerRule;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum35" style="color: rgb(96, 96, 96);"&gt;  35:&lt;/span&gt;     $rule.rule_name = $rule_name;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum36" style="color: rgb(96, 96, 96);"&gt;  36:&lt;/span&gt;     $rule.priority = 500;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum37" style="color: rgb(96, 96, 96);"&gt;  37:&lt;/span&gt;     $rules = (, $rule);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum38" style="color: rgb(96, 96, 96);"&gt;  38:&lt;/span&gt;     Write-Host &lt;span style="color: rgb(0, 96, 128);"&gt;"Assigning iRule `"&lt;/span&gt;$rule_name`&lt;span style="color: rgb(0, 96, 128);"&gt;" to virtual `"&lt;/span&gt;$&lt;span style="color: rgb(0, 0, 255);"&gt;virtual&lt;/span&gt;`&lt;span style="color: rgb(0, 96, 128);"&gt;"..."&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum39" style="color: rgb(96, 96, 96);"&gt;  39:&lt;/span&gt;     (Get-F5.iControl).LocalLBVirtualServer.add_rule($virtual_servers, $rules);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum40" style="color: rgb(96, 96, 96);"&gt;  40:&lt;/span&gt;   }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span id="lnum41" style="color: rgb(96, 96, 96);"&gt;  41:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;And there is the iRule in the BIG-IP GUI.&lt;/p&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'5d134575'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningiRule.jpg"&gt;&lt;img height="135" width="705" border="0" src="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningiRule_thumb.jpg" title="DevProvisioningiRule" alt="DevProvisioningiRule" style="border: 0px none; display: block; float: none; margin-left: auto; margin-right: auto;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Testing Your Application&lt;/h2&gt;
&lt;p&gt;Now that the VLANs, SelfIPs, Pool, and VirtualServer are configured and functioning, it's time to test out the application.&amp;#160; Here, I opened up a browser and typed in the address of the new Virtual Server (192.168.239.3) and you'll see the response came back.&amp;#160; And, you'll also notice that the iRule did it's magic and modified the response content from the IIS application.&lt;/p&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'5d134575'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningClientBrowser.jpg"&gt;&lt;img height="339" width="573" border="0" src="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningClientBrowser_thumb.jpg" title="DevProvisioningClientBrowser" alt="DevProvisioningClientBrowser" style="border: 0px none; display: block; float: none; margin-left: auto; margin-right: auto;" /&gt;&lt;/a&gt; If a browser is too much work for you, curl works just as well.&lt;/p&gt;
&lt;p&gt;&lt;a onclick="return mp.expand(this,{slideshowGroup:'5d134575'})" class="itcexpando" href="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningClientCurl.jpg"&gt;&lt;img height="116" width="378" border="0" src="/Portals/0/images/metapost/News-Articles/Joe/2010/Feb/DevProvisioningClientCurl_thumb.jpg" title="DevProvisioningClientCurl" alt="DevProvisioningClientCurl" style="border: 0px none; display: block; float: none; margin-left: auto; margin-right: auto;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I've shown in this example how you can build and test a fully functional web application with a single host operating system (in my case Windows 7) and a single instance of BIG-IP LTM VE.&amp;#160; This will greatly reduce the complexity for developers who want to test applications they are currently debugging in the host operating system.&lt;/p&gt;
&lt;h2&gt;Downloads&lt;/h2&gt;
&lt;p&gt;The provisioning script used in this article can be found in the iControl CodeShare under &lt;a href="/wiki/default.aspx/iControl/PsProvisionVEForLocalDev.html"&gt;PsProvisionVEForLocalDev&lt;/a&gt;&lt;/p&gt;
&lt;div style="clear: both; height: 11px;" class="d_itc_f"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;</description><pubDate>Wed, 24 Feb 2010 15:20:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1082333/Laptop-Load-Balancing-For-The-Developer-With-BIG-IP-LTM-VE.aspx#Comments</comments><slash:comments>3</slash:comments><dc:creator>Joe</dc:creator></item><item><title>Whaddya Mean LTM VE Only Has Two Interfaces?</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1082331/Whaddya-Mean-LTM-VE-Only-Has-Two-Interfaces.aspx</link><description>&lt;p&gt;Last week we covered the basics on &lt;a href="/weblogs/jason/archive/2010/02/16/if-you-havent-yet-downloaded-the-big-ip-ltm-ve.aspx" target="_blank"&gt;network configuration for BIG-IP LTM VE&lt;/a&gt; on the VMware Workstation/player hypervisors and the ESX/ESXi hypervisors.&amp;#160; This week we’ll cover a couple more options at your disposal.&lt;/p&gt;</description><pubDate>Wed, 24 Feb 2010 02:00:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1082331/Whaddya-Mean-LTM-VE-Only-Has-Two-Interfaces.aspx#Comments</comments><slash:comments>1</slash:comments><dc:creator>citizen_elah</dc:creator></item><item><title>Announcing the F5 Management Pack 1.6.2 and a few others</title><link>http://devcentral.f5.com/weblogs/sfisher/archive/2010/02/20/announcing-the-f5-management-pack-1.6.2-and-a-few-others.aspx</link><description>&lt;p&gt;F5 Networks has been releasing versions of our Management Pack to DevCentral monthly for quite awhile, and I’d like to provide a bit more context around our last few releases (1.6.0, 1.6.1, and 1.6.2). If you’re always up to date with the earlier releases, feel free to skip right to the 1.6.2 release at the bottom of this post.&lt;/p&gt;  &lt;p&gt;Or if you’d like to obtain the latest release, you can jump straight to our &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=217"&gt;F5 Management Pack DevCentral download site&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Versioning notes&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In general, we increment the minor version when we do health model or major feature updates, while bug fixes and maintenance releases result in the revision number be incremented.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Version 1.6.0&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The 1.6.0 version introduced support for a &lt;strong&gt;data center orchestration scenario: virtualized app migration&lt;/strong&gt;. Specifically, the extension management pack enables migrating a virtualized application (hosted inside Microsoft Virtual Machine Manager) to a different hardware host with the LTM configuration being updated in parallel and transparently. The administrator is only required to specify the virtual machine instance identifiers, the source host address and device, and the target host address and device. The F5 Management Pack will then make the appropriate updates to the BIG-IP, including creation of pool members, deletion of old pool members, and draining connections from the old server, if necessary. The F5 MP will also use the fastest available virtual machine migration algorithm available, whether that is a Hyper-V live migration [including network stack and live memory] or quick-migration. You can &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=217"&gt;download the app migration extension at the F5 Management Pack Extensions download site&lt;/a&gt; as “Virtual App Migration Pack”.&lt;/p&gt;  &lt;p&gt;In the 1.6.0 version, we also provided tasks and PowerShell APIs to enable and disable GTM Pool Virtual Servers for distributed application and wide-area configuration changes.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Version 1.6.1&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Our next release was primarily focused around maintenance fixes and targeted customer issues.&lt;/p&gt;  &lt;p&gt;We made some &lt;strong&gt;performance improvements to discovery&lt;/strong&gt; which should show an order of magnitude improved to configuration discovery and updates. In the past, we’ve seen BIG-IP configurations with about 500-1,000 objects take anywhere from 5-10 minutes, depending on hardware and database configuration. With the performance improvements, we have simulated BIG-IP configurations with 1,000-15,000 objects being discovered in the same amount of time. I should note that a variety of factors affect configuration discovery, update and counter throughput, beyond simply duration. We’ll be posting more information on hardware, database, and System Center configuration guidance in the near future.&lt;/p&gt;  &lt;p&gt;We also made some fixes to &lt;strong&gt;support case-sensitive collisions between BIG-IP configuration objects&lt;/strong&gt;. For example, prior to version 1.6.1 if your BIG-IP had a pool member named “Foo” and another named “foo”, the F5 Management Pack may have encountered issues reporting the correct health of those objects, or updates to their configuration.&lt;/p&gt;  &lt;p&gt;Version 1.6.1 also added &lt;strong&gt;support for more frequent device performance counter collection&lt;/strong&gt;. While the interface to this work will be mostly transparent to Management Pack users, since the changes were made to the device network protocol, we have written an &lt;a href="http://devcentral.f5.com/weblogs/jbalog/archive/2010/01/19/increasing-the-f5-management-packs-responsiveness-for-statistics-collection.aspx"&gt;article that helps explain some scenarios and methods to increase F5 BIG-IP performance counter frequency&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Finally, we added &lt;strong&gt;support for clustered System Center Management Servers&lt;/strong&gt;, which allows for pairing Root Management Servers, the F5 Management Pack monitoring service, and improving reliability for your network and application monitoring framework. Julian Balog, the F5 Networks engineer who implemented the majority of our clustering support, wrote a detailed article on &lt;a href="http://devcentral.f5.com/weblogs/jbalog/archive/2010/01/18/clustering-the-f5-management-pack-with-scom-2007-rms-cluster.aspx"&gt;F5 Management Pack clustering configuration and support&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Version 1.6.2&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In our latest release, we have &lt;strong&gt;added support for BIG-IP device partitions&lt;/strong&gt;. Notably, we have worked to enable our existing PowerShell BIG-IP device configuration APIs to continue working without needing to modify your existing PowerShell scripts.&lt;/p&gt;  &lt;p&gt;We have also added &lt;strong&gt;support for synchronizing System Center Operations Manager “maintenance mode” with the state of the F5 BIG-IP LTM pool member and GTM Pool Virtual Server objects&lt;/strong&gt;. For example, if you create a distributed application in System Center and put the application or portions of the infrastructure into “maintenance mode”, then you can enable “maintenance mode” sync to simultaneously disable the pool member or virtual server. We intentionally only support a one-way sync with maintenance mode, since our belief is that it should be an explicit action to re-add the application for traffic load balancing. For example, if a network application or pool member is disabled, but it isn’t officially in “maintenance mode” ~ e.g. the app server has crashed, we want to ensure the load balancer does not restart sending traffic to the crashed server.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;We have also made a number of less visible reliability and user experience improvements over the last couple months. We have some really exciting features coming in our next few monthly releases, and I’ll post more information as they release.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;And as always, if you have questions, ideas, feedback, or need support for the F5 Management Pack, we encourage you to visit our &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;afgroup=26"&gt;F5 Management Pack DevCentral Forums&lt;/a&gt;. We review every post, and these Forums are your most efficient avenue to support and feedback.\&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Thank you,&lt;/p&gt;  &lt;p&gt;Stephen Fisher&lt;/p&gt;  &lt;p&gt;Product Development Manager - F5 Management Pack&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/sfisher/aggbug/1086036.aspx" width="1" height="1" /&gt;</description><pubDate>Sat, 20 Feb 2010 19:52:07 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/sfisher/archive/2010/02/20/announcing-the-f5-management-pack-1.6.2-and-a-few-others.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>New Geolocation Capabilities in v10.1</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1082330/New-Geolocation-Capabilities-in-v101.aspx</link><description>&lt;p&gt;With the BIG-IP GTM and 3-DNS products, location-based service has existed in the form of topology-based load balancing. The possibilities grow exponentially in v10.1, as you now have the capabilities in GTM and LTM. In this tech tip, we’ll discuss the iRules command access, the update procedures for keeping your data current, and some use cases for consideration.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/media/audio/20100219_Geolocation.mp3"&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Fri, 19 Feb 2010 11:00:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1082330/New-Geolocation-Capabilities-in-v101.aspx#Comments</comments><slash:comments>5</slash:comments><dc:creator>citizen_elah</dc:creator></item><item><title>BIG-IP LTM VE: What is it? Where do I start? Why is everyone so excited?</title><link>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1082329/BIG-IP-LTM-VE-What-is-it-Where-do-I-start-Why-is-everyone-so-excited.aspx</link><description>&lt;p&gt;The already impressive flexibility and power of the BIG-IP takes a giant leap forward with the announcement of the BIG-IP LTM VE. This Virtual Edition of LTM not only allows for extremely easy trial of the technology and an easily attainable resource for local development or testing, but it also shows that no matter how many tricks LTM might have, there's likely one more around the corner.&lt;/p&gt;
&lt;p&gt;If you're like me then you're already an F5 user. I use F5 gear just about every day while writing code and content for DevCentral, which I'm sure isn't a shock to anyone. If you're like me then you're also someone that's been looking for a few things for a while now. You've been looking for a way to edit your iRules on the road. You've been looking for a way to test configuration changes &amp;amp; profile tweaks without disrupting your current production (or staging, or test) environment(s). You've been wondering how to try out 10.1 without having to do a full upgrade on your currently running system. If you're like me, you're really, really excited about BIG-IP LTM VE. If any of these scenarios sound familiar, and you're not excited yet, then you should be.&lt;/p&gt;
&lt;p&gt;The LTM VE release is a fully functioning BIG-IP LTM that you can run from VMware. All you need is a system running VMware and some free disk space, and you're set. Grab a copy of the files, unpack them, get a free trial license from f5.com, and in just a few minutes you'll be up and running with a fully functional LTM to poke at until your heart's content. It's rate limited to 1Mb/s but that's more than enough for just about any test case I could come up with short of full load traffic shaping tests and the like.&lt;/p&gt;
&lt;p&gt;We've had so many requests over the years for exactly this kind of product that I'm extremely excited to be able to talk about it and share just how awesome it is. The PD guys have done a fantastic job making this easy to get started using and approachable. There are good docs to get you started, and even a step by step video walkthrough if you want to follow along from download to passing traffic. While this is some very cool news for all of you current F5 users that have been looking for a new test or dev setup, I'm equally as excited to see what everyone else is going to do with this. This is the first time that anyone that wants it will be able to have access to a BIG-IP device to see just how cool these things are, and I think that's something that shouldn't be overlooked. Suddenly everyone that wants to be able to dig in and see what this technology is all about, what we mean when we talk about ADCs and how powerful they are, how they can help shape your deployments with some pretty incredible business logic on the network, will be able to see it for themselves first hand, with only a small investment in time to do some setup and testing.&lt;/p&gt;
&lt;p&gt;All of this is just the beginning, though. There is already talk of more to come. A trial is a fantastic first step but already the masses are clamoring for a more permanent solution. They want to be able to set up their test environments permanently and with less restrictions. Well that just might be coming too. I can't say when or give any details, but rest assured that the BIG-IP LTM VE concept will go far beyond just a free trial for people to play with. While a virtual edition of LTM doesn't offer nearly the same performance or some of the perks of having a full-blown hardware system, there are definitely places where a virtual LTM makes sense, and plans are already in the works to make sure that those needs can be met at some point down the road. Now is the time to get your hands on the LTM VE and get started.&lt;/p&gt;
&lt;p&gt;So you're saying, "That's fantastic, but where do I start?". Here's what you'll need to do to get yourself going:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;First&lt;/b&gt;, download the trial. - &lt;a href="https://www.f5.com/trial/"&gt;https://www.f5.com/trial/&lt;/a&gt;     &lt;br /&gt;
This will require you to log in, so get registered if you're not already. Once you log in you'll be able to select the trial version you want (there's only one for now) and download it.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Next&lt;/b&gt;, generate a license. - &lt;a href="https://www.f5.com/trial/secure/generate-eval-key.php"&gt;https://www.f5.com/trial/secure/generate-eval-key.php&lt;/a&gt;     &lt;br /&gt;
You won't be able to do anything with the shiny new image you just downloaded until you get it licensed, so make sure you go get yourself a trial license so you can make the blinky lights blink and the bits flow. This license will get you access to the core LTM functionality in the trial, so you'll have access to all sorts of cool toys like iControl and iRules.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;After that&lt;/b&gt;, you'll need to get your new BIG-IP LTM VE system configured just like you normally would configure a BIG-IP. You'll need self IPs and VLANs and all that. If you're not familiar with setting up BIG-IP then check out one or both of these:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;- Randy Reichenbach's (F5 PD) easy to follow &lt;a href="/weblogs/dctv/archive/2010/02/16/big-ip-ltm-ve-get-started-with-a-walkthrough-from-pd.aspx"&gt;"Getting the LTM VE Trial Running" walkthrough video.&lt;/a&gt;       &lt;br /&gt;
In this video Randy walks you through the setup process all the way from downloading the image to licensing to configuring the BIG-IP itself to passing traffic. This is a great place to start for anyone, whether you're a beginner or a pro looking for a refresher. Things move kind of fast so if you have any questions or don't catch something in the video, the best place to go first is the release notes.&lt;/p&gt;
&lt;p&gt;- The &lt;a href="https://support.f5.com/kb/en-us/products/big-ip_ve/releasenotes/product/relnotes_ve_10_1_0.html"&gt;BIG-IP Virtual Edition Trial Release Notes.&lt;/a&gt;       &lt;br /&gt;
The release notes have just about all the information you could want about the VE. What platforms it runs on, what the restrictions of the trial version are, what to do to get it configured, known issues, etc. This is a one stop shop of useful information that everyone downloading the trial should check out. If you've got questions about how to get started, what this thing can do or just about anything having to do with the trial, I'd check here first.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Once you've got things up and running, you've got your own personal BIG-IP playground. Now it's time to see what it can do, and I can't recommend a better place for finding cool things to try out than DevCentral. Test out some iRules, play with a custom monitor or two, write some TMSH scripts...whatever it is you've been eager to play with but were afraid to try on your production system (or maybe you didn't have a system at all), now's the time.&lt;/p&gt;
&lt;p&gt;Be sure to check back with the &lt;a href="/Default.aspx?tabid=2250"&gt;BIG-IP LTM VE section on DevCentral&lt;/a&gt; often to keep up with updates. There's a forum here for discussing and sharing ideas, tips or problems with the trial. It will hopefully be a great place to see what other people are up to and figure out issues if you're having them, or even just to share feedback of your LTM VE experience. Heck, there has already been some interesting info from some users there talking about how, even though it's not technically supported, they've gotten the LTM VE running in virtualbox, VMware Player, fusion, etc. So there's already some interesting talk there that you won't want to miss out on. There will also be a steady stream of content showing off some of the things you can do with the trial, both from the DevCentral team and other folks inside F5 who are eager to show off what they're up to with this exciting new release. Be sure to let us know what you think about the trial VE or what you're up to with it, the more we hear back from the people using it the better we can make the next one.&lt;/p&gt;
&lt;div style="clear: both; height: 11px;" class="d_itc_f"&gt;&lt;script src="/DesktopModules/itcMetaPost/js/m.js" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;</description><pubDate>Wed, 17 Feb 2010 08:45:00 GMT</pubDate><comments>http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1082329/BIG-IP-LTM-VE-What-is-it-Where-do-I-start-Why-is-everyone-so-excited.aspx#Comments</comments><slash:comments>3</slash:comments><dc:creator>Colin</dc:creator></item><item><title>Increasing the F5 Management Pack's Responsiveness for Statistics Collection</title><link>http://devcentral.f5.com/weblogs/jbalog/archive/2010/01/19/increasing-the-f5-management-packs-responsiveness-for-statistics-collection.aspx</link><description>&lt;p&gt;With the recent release (v1.6.1.212), the F5 Management Pack has an improved responsiveness to device statistics collection. By default, the timer interval for collecting stats is set to 30 seconds, but this value now can be easily overwritten in the (SCOM 2007) F5 Management Pack, as a rule override. The lowest value the timer interval could be set, theoretically, is 3 seconds. There is an internal safeguard in the F5 device (Big-IP) against lowering this threshold and putting unnecessary load on the device CPU, for collecting stats. In the real world stats would come, on average, every 5-10 seconds, even with the 3 second interval setting.&lt;/p&gt;
&lt;p&gt;You may probably ask why would we even want to go that low timer interval for collecting statistics, normally, from an F5 device. One possible answer would come from the perspective of a relatively recent data center orchestration (DCO) scenario, that F5 Networks performed, of migrating a live application (web server) in a distributed Big-IP GTM/LTM environment. A simplified view of the scenario would be the following: Big-IP/GTM "A" handles high traffic in the middle of a hot summer in TX, where power plan / consumption / usage is extremely taxing. During these hot days, Data Center needs to migrate live applications to Big-IP/GTM "B" across geographical zone, to a better power plan. Big-IP-B will spin-up real-time virtual pool members to host the live app and handle/persist client connections, while Big-IP-A monitors existing client connections (for bleed-out) and retires the pool members ASAP, for reducing power consumption. The counter responsiveness improvement would play a big role in the bleed-out monitoring scenario, when the triggers for disabling pool members on Big-IP-A as soon as possible, should act immediately.&lt;/p&gt;
&lt;p&gt;So, here are the steps for creating the rule overrides for the statistics collection interval, in the F5 Management Pack (we will use the "Device CPU Temperature" collection rule as an example):&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stage One:&lt;/strong&gt; Find the collection rule we need to collect:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;In the SCOM 2007 Management Console enter the &lt;strong&gt;Authoring&lt;/strong&gt; view by selecting the &lt;strong&gt;Authoring&lt;/strong&gt; link. &lt;/li&gt;
    &lt;li&gt;Select &lt;strong&gt;Authoring&lt;/strong&gt; &amp;gt; &lt;strong&gt;Management Pack Objects&lt;/strong&gt; &amp;gt; &lt;strong&gt;Rules&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;In the &lt;strong&gt;Look for&lt;/strong&gt; text box, enter “&lt;strong&gt;F5&lt;/strong&gt;” and click &lt;strong&gt;Find Now&lt;/strong&gt;: the F5 rules installed by the F5 Management Pack will appear, where we can further search for the rule we need to override. &lt;/li&gt;
    &lt;li&gt;To search specifically for the &lt;strong&gt;Device CPU Temperature&lt;/strong&gt; rule, in the &lt;strong&gt;Look for&lt;/strong&gt; text box enter a more specific search expression, such as "&lt;strong&gt;CPU Temp&lt;/strong&gt;" (if the &lt;strong&gt;Clear&lt;/strong&gt; button has not been pushed yet, the search would further on narrow the scope of the items looked for, compared to previous searches). &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Stage Two:&lt;/strong&gt; Enable the collection rule (if it's not enabled by default):&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Select the &lt;strong&gt;Device CPU Temperature&lt;/strong&gt; rule, right-click and select &lt;strong&gt;Overrides&lt;/strong&gt; &amp;gt; &lt;strong&gt;Override the Rule&lt;/strong&gt; &amp;gt; &lt;strong&gt;For all objects of type: F5 Management Pack Monitoring Service&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;In the &lt;strong&gt;Override Properties&lt;/strong&gt; window choose to create a new Management Pack for targeting the overrides (if not already created), by clicking the &lt;strong&gt;New&lt;/strong&gt; button near the bottom of the screen. The &lt;strong&gt;Create a Management Pack&lt;/strong&gt; window will appear. &lt;/li&gt;
    &lt;li&gt;Enter the name “&lt;strong&gt;F5.Override.ManagementPack&lt;/strong&gt;”, click &lt;strong&gt;Next&lt;/strong&gt;, then &lt;strong&gt;Create&lt;/strong&gt; to finish creating the new management pack for the overrides. &lt;/li&gt;
    &lt;li&gt;In the &lt;strong&gt;Override Properties&lt;/strong&gt; window examine the parameters listed. We have two override parameters. Check the &lt;strong&gt;Override&lt;/strong&gt; property for the &lt;strong&gt;Enabled&lt;/strong&gt; parameter and make sure its &lt;strong&gt;Override Setting&lt;/strong&gt; value is set to &lt;strong&gt;True&lt;/strong&gt; (compare it against the &lt;strong&gt;Effective Value&lt;/strong&gt;, which may be &lt;strong&gt;False&lt;/strong&gt;). &lt;/li&gt;
    &lt;li&gt;Under &lt;strong&gt;Select the destination management pack&lt;/strong&gt;, choose the management pack you just created (i.e. &lt;strong&gt;F5.Override.ManagementPack&lt;/strong&gt;). &lt;/li&gt;
    &lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt;. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Stage Three:&lt;/strong&gt; Overriding the &lt;strong&gt;Interval&lt;/strong&gt; parameter for the collection rule:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Select the &lt;strong&gt;Device CPU Temperature&lt;/strong&gt; rule, right-click and select &lt;strong&gt;Overrides&lt;/strong&gt; &amp;gt; &lt;strong&gt;Override the Rule&lt;/strong&gt; &amp;gt; &lt;strong&gt;For all objects of another type...&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;In the &lt;strong&gt;Select a Target Type&lt;/strong&gt; window, select the &lt;strong&gt;View all targets&lt;/strong&gt; radio-button and in the &lt;strong&gt;Look for&lt;/strong&gt; text box type "&lt;strong&gt;F5&lt;/strong&gt;" to have all F5-related target entity types listed and from the target list choose &lt;strong&gt;F5 Device CPU&lt;/strong&gt;, for example (or we could use any other F5 entity that is derived from the &lt;strong&gt;F5 Object&lt;/strong&gt; type, such as &lt;strong&gt;F5 Device&lt;/strong&gt;). Click &lt;strong&gt;OK&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;In the &lt;strong&gt;Override Properties&lt;/strong&gt; window choose to create a new Management Pack for targeting the overrides (if not already created), by clicking the &lt;strong&gt;New&lt;/strong&gt; button near the bottom of the screen. The &lt;strong&gt;Create a Management Pack&lt;/strong&gt; window will appear. &lt;/li&gt;
    &lt;li&gt;Enter the name “&lt;strong&gt;F5.Override.ManagementPack&lt;/strong&gt;”, click &lt;strong&gt;Next&lt;/strong&gt;, then &lt;strong&gt;Create&lt;/strong&gt; to finish creating the new management pack for the overrides. &lt;/li&gt;
    &lt;li&gt;In the &lt;strong&gt;Override Properties&lt;/strong&gt; window examine the parameters listed. We have two override parameters. Leave the &lt;strong&gt;Override&lt;/strong&gt; property for the &lt;strong&gt;Enabled&lt;/strong&gt; parameter unchecked. Check the "Override" property for the &lt;strong&gt;Interval&lt;/strong&gt; parameter and set the &lt;strong&gt;Override Setting&lt;/strong&gt; property to &lt;strong&gt;10&lt;/strong&gt; seconds (this will have the collection of the device CPU temperature running every 10 seconds). &lt;/li&gt;
    &lt;li&gt;Under &lt;strong&gt;Select the destination management pack&lt;/strong&gt;, choose the management pack you just created (i.e. &lt;strong&gt;F5.Override.ManagementPack&lt;/strong&gt;). &lt;/li&gt;
    &lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt;. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;a name="Remarks"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;It is generally not a good idea to save the rule overrides to the default management pack because it creates dependency problems during un-installation. As a good practice, make sure you do not apply any overrides to the default management pack. The &lt;strong&gt;Enforced&lt;/strong&gt; checkbox in the &lt;strong&gt;Override Properties&lt;/strong&gt; window is used partially to raise the priority of an override rule over other similar override rules.&lt;/em&gt; &lt;/p&gt;
&lt;p&gt;We can review, edit, or delete the override for the rule. Right-click the rule in the &lt;strong&gt;Authoring&lt;/strong&gt; view and select &lt;strong&gt;Overrides Summary&lt;/strong&gt;, then &lt;strong&gt;Edit&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Once the rule overrides have been created the F5 Management Pack will propagate them to the F5 device in a matter of minutes. The F5 Management Pack crawls for changes in the rule overrides configuration every 5 minutes. To speed up the counters subscription, we can force the F5 Management Pack to recalculate them and force the rules to the target F5 devices (Big-IP). To do either of the following procedures:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Using the command prompt&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Open up a command prompt and type the following:&lt;/p&gt;
&lt;pre&gt;cd "%ProgramFiles%\F5 Networks\Management Pack"&lt;/pre&gt;
&lt;p&gt;Then force the F5 Management Pack to refresh the rules:&lt;/p&gt;
&lt;pre&gt;f5mpcmd.exe /RefreshCollectionRules&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;2. &lt;strong&gt;Running the Refresh Collection Rules action&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the SCOM 2007 Management Console navigate to &lt;strong&gt;Monitoring &amp;gt; F5 Networks &amp;gt; F5 Actions&lt;/strong&gt;. In the Actions pane on the right, click on &lt;strong&gt;Refresh F5 Device Collection Rules&lt;/strong&gt; action and run the related task.&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/jbalog/aggbug/6281.aspx" width="1" height="1" /&gt;</description><pubDate>Tue, 19 Jan 2010 12:14:46 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/jbalog/archive/2010/01/19/increasing-the-f5-management-packs-responsiveness-for-statistics-collection.aspx#comment</comments><slash:comments>0</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>Clustering the F5 Management Pack with a SCOM 2007 RMS Cluster</title><link>http://devcentral.f5.com/weblogs/jbalog/archive/2010/01/18/clustering-the-f5-management-pack-with-scom-2007-rms-cluster.aspx</link><description>&lt;p&gt;Starting with version 1.6.1.212, the F5 Management Pack supports clustered Root Management Server (RMS) configurations with SCOM 2007 (including SCOM 2007 R2), This article will describe the step-by-step procedure of installing and configuring the F5 Management Pack with a SCOM 2007 R2 RMS cluster, running on a Windows Server 2008 R2 platform with Microsoft Cluster Service (MSCS).   &lt;br /&gt;
For the purpose of this article we'll assume the following system configuration ready, for integrating the F5 Management Pack with the SCOM 2007 RMS cluster:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Windows Server 2008 R2 fail-over cluster with 2 cluster nodes&lt;/li&gt;
    &lt;li&gt;System Center Operations Manager 2007 R2, configured as RMS cluster&lt;/li&gt;
    &lt;li&gt;Cluster shared storage with at least one active (online) NTFS partition&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;1. Installing the F5 Management Pack in a SCOM 2007 RMS Cluster&lt;/h2&gt;
&lt;p&gt;Figure 1 illustrates the SCOM 2007 R2 RMS fail-over cluster on Windows Server 2008 R2, prior to configuring the F5 Management Pack to integrate with the RMS cluster:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;MP-LAB-CLUSTER: the fail-over cluster server&lt;/li&gt;
    &lt;li&gt;MP-LAB-RMS: the SCOM 2007 R2 RMS cluster group&lt;/li&gt;
    &lt;li&gt;MP-LAB-CN1, MP-LAB-CN2: the fail-over cluster nodes, each running SCOM 2007 R2 as Root Management Servers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/ClusteringtheF5ManagementPackwithSCOM200_A640/rms-cluster-01_2.jpg"&gt;&lt;img width="644" height="456" border="0" style="border: 0px none ;" alt="rms-cluster-01" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/ClusteringtheF5ManagementPackwithSCOM200_A640/rms-cluster-01_thumb.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 1&lt;/strong&gt;: SCOM 2007 R2 RMS fail-over cluster on Windows Server 2008 R2&lt;/p&gt;
&lt;p&gt;Keep in mind that for each cluster node in the RMS cluster, where you plan to deploy the F5 Management Pack, you will need a separate F5 Management Pack license.&lt;/p&gt;
&lt;p&gt;Here are the steps of installing and configuring the F5 Management Pack with the SCOM 2007 RMS cluster:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Install the F5 Management Pack on the primary cluster node (the one owning the SCOM 2007 RMS cluster group), in our case MP-LAB-CN1 (see Figure 1).&lt;/li&gt;
    &lt;li&gt;Install the F5 Management Pack on the secondary cluster nodes (there's no need to fail-over to the other nodes when installing the F5 Management Pack).&lt;/li&gt;
    &lt;li&gt;Using the Failover Cluster Manager management console, add the F5 Monitoring Service to the SCOM 2007 RMS cluster group, as a new cluster resource (generic service): right click on the SCOM 2007 RMS cluster group (MP-LAB-RMS) &amp;gt; Add a resource &amp;gt; 4 - Generic Service &amp;gt; and select the F5 Monitoring Service.&lt;/li&gt;
    &lt;li&gt;Make sure the F5 Monitoring Service shows up "Offline" in the "Other Resources" section of the SCOM 2007 RMS cluster group (see Figure 2).&lt;/li&gt;
    &lt;li&gt;Set the cluster resource dependencies for the F5 Monitoring Service (see Figure 3): right click on the F5 Monitoring Service cluster resource &amp;gt; Properties &amp;gt; Dependencies &amp;gt; set the dependency on the SCOM 2007 RMS cluster group AND the "System Center Management" service (the SCOM 2007 R2 Health Service).&lt;/li&gt;
    &lt;li&gt;Set the cluster node owners for the F5 Monitoring Service cluster resource (see Figure 4): right click on the F5 Monitoring Service cluster resource &amp;gt; Properties &amp;gt; Advanced Policies &amp;gt; check the cluster nodes owning the F5 Monitoring Service (basically the cluster nodes that have the F5 Monitoring Service installed, through Step 1 and 2).&lt;/li&gt;
    &lt;li&gt;Bring the F5 Monitoring Service cluster resource online: right click on the F5 Monitoring Service cluster resource &amp;gt; Bring this resource online.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/ClusteringtheF5ManagementPackwithSCOM200_A640/rms-cluster-02_2.jpg"&gt;&lt;img width="644" height="459" border="0" style="border: 0px none ;" alt="rms-cluster-02" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/ClusteringtheF5ManagementPackwithSCOM200_A640/rms-cluster-02_thumb.jpg" /&gt;&lt;/a&gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Figure 2&lt;/strong&gt;: Adding the F5 Monitoring Service as a generic service cluster resource to the SCOM 2007 RMS cluster group&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/ClusteringtheF5ManagementPackwithSCOM200_A640/rms-cluster-03_2.jpg"&gt;&lt;img width="393" height="484" border="0" style="border: 0px none ;" alt="rms-cluster-03" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/ClusteringtheF5ManagementPackwithSCOM200_A640/rms-cluster-03_thumb.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 3&lt;/strong&gt;: Setting the dependencies for the F5 Monitoring Service cluster resource&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/ClusteringtheF5ManagementPackwithSCOM200_A640/rms-cluster-04_2.jpg"&gt;&lt;img width="393" height="484" border="0" style="border: 0px none ;" alt="rms-cluster-04" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/ClusteringtheF5ManagementPackwithSCOM200_A640/rms-cluster-04_thumb.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 4&lt;/strong&gt;: Setting the owner cluster nodes for the F5 Monitoring Service cluster resource&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/ClusteringtheF5ManagementPackwithSCOM200_A640/rms-cluster-05_2.jpg"&gt;&lt;img width="644" height="459" border="0" style="border: 0px none ;" alt="rms-cluster-05" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/ClusteringtheF5ManagementPackwithSCOM200_A640/rms-cluster-05_thumb.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 5&lt;/strong&gt;: The F5 Monitoring Service running within the SCOM 2007 RMS cluster group&lt;/p&gt;
&lt;h2&gt;2. Managing the F5 Management Pack in a SCOM 2007 RMS Cluster&lt;/h2&gt;
&lt;p&gt;Once the F5 Management Pack is installed and configured within the SCOM 2007 RMS cluster, discovering and managing F5 devices through the F5 Management Pack works exactly the same way, as in a standalone SCOM 2007 RMS environment. Always use the active cluster node (the one owning the RMS cluster group) to perform F5 Management Pack specific tasks. Needless to say, the SCOM 2007 Management Console should be configured to connect to the SCOM 2007 RMS cluster group, rather than the individual cluster nodes (Figure 6).&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/ClusteringtheF5ManagementPackwithSCOM200_A640/rms-cluster-06_2.jpg"&gt;&lt;img width="644" height="484" border="0" style="border: 0px none ;" alt="rms-cluster-06" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/ClusteringtheF5ManagementPackwithSCOM200_A640/rms-cluster-06_thumb.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 6&lt;/strong&gt;: Connecting the SCOM 2007 Management Console to the RMS cluster group&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/jbalog/aggbug/6276.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 18 Jan 2010 11:50:09 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/jbalog/archive/2010/01/18/clustering-the-f5-management-pack-with-scom-2007-rms-cluster.aspx#comment</comments><slash:comments>5</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>Operations Manager Debugging Part II: Workflows</title><link>http://devcentral.f5.com/weblogs/jhendrickson/archive/2009/11/13/operations-manager-debugging-part-ii-workflows.aspx</link><description>&lt;p&gt;Workflows are the fundamental mechanism by which Operations Manager gets things done. Workflows, in essence, are individual pieces of code (modules) that are chained together. For a primer on workflows and modules, I recommend the AuthorMPs &lt;a href="http://www.authormps.com/dnn/Concepts/WorkflowBasics/tabid/114/Default.aspx"&gt;site&lt;/a&gt;. Workflows remind me of Powershell pipelines or to a lesser extent, linux command piping. Individual commandlets (the equivalent of OpsMgr modules) can be mixed together in different ways to accomplish a more complex task (the equivalent of an OpsMgr workflow) by piping output from one to another. As long as the output from one commandlet can be processed by the next commandlet in the pipeline, you can chain them together.&lt;/p&gt;  &lt;p&gt;One big difference between developing pipeline-aware commandlets and developing OpsMgr modules and workflows is the potential for debugging. With Powershell, you can use the full debugging power of Visual Studio (or whatever editor you use) by simply setting breakpoints in your commandlet and attaching to the host running powershell (usually powershell.exe). Workflow debugging is certainly possible but not nearly as easy. There are several reasons for this:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;If you’re not using custom-made modules, the running code is a black box. If the module does not already have the ability to output tracing information, there is no way to add it. &lt;/li&gt;    &lt;li&gt;You can’t just run a workflow from a debugger. OpsMgr is complete control of when it starts and ends, so you must do this indirectly. &lt;/li&gt;    &lt;li&gt;If you are using custom-made modules, you need to find the OpsMgr process that they get loaded into in order to debug them. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;One of the most common problems in developing workflows is trying to figure why (or why not) a data item is making it through certain parts of the workflow such as condition detection modules. In order to avoid “trial and error” development, you need some way to debug the workflows. I’ll outline a few options below for troubleshooting this kind of scenario below.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Option 1: Attach a Debugger&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you’ve developed a custom module, you can step through the code by doing the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Get OpsMgr to start running your workflow. For example if you are debugging a monitor, make sure the monitor is enabled and it’s datasource is receiving data. &lt;/li&gt;    &lt;li&gt;Open the code in your debugger (Visual Studio in this example) &lt;/li&gt;    &lt;li&gt;Attach to the OpsMgr process running your workflow. This is the tricky step. The process is MonitoringHost.exe, but there may be several. You want the one that is running managed code (see the Type column in screenshot below) with the credentials of the Operations Manager action account. If it is still not obvious which process to attach to, you’ll have to attach to each one and see if your DLL module is loaded. Use the module window (Ctrl+Alt+U) to list the DLLs once you attach to the process. Once you see your DLL, you’re read to debug! &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/OperationsManagerDebuggingPartIIWorkflow_9051/debug_2.gif"&gt;&lt;img title="debug" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="553" alt="debug" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/OperationsManagerDebuggingPartIIWorkflow_9051/debug_thumb.gif" width="889" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;On a side note, I (or one of our team members) may do a blog post in the future on creating managed code modules.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Option 2: Use the Operations Manager Trace Files&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Honestly I would leave this as a last resort, but the trace files can be useful beyond workflow debugging (such as script debugging). See #8 on my &lt;a href="http://devcentral.f5.com/weblogs/jhendrickson/archive/2009/11/04/operations-manager-debugging-part-i-top-10-tools-for-developing.aspx"&gt;top 10 list&lt;/a&gt; for instructions and comments on this.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Option 3: Use the F5 Workflow Tracer&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Inspired by the workflow tracer that was #6 in my top 10 list, our team has built a debugging module that can be used to trace the output of any module in your workflows. We used the same configuration elements as the workflow tracer and added support for data item batching, robust acknowledgements, and other minor improvements. &lt;/p&gt;  &lt;p&gt;The module can be placed after any module in your workflows, and reports on the data item that come out of that module. Here is an example from the F5 Monitoring Log:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Element: F5.PRO.PerformanceMonitorType (&lt;em&gt;note: this tells me which workflow is being traced&lt;/em&gt;)       &lt;br /&gt;Stage: After COUNTER TYPE detection (&lt;em&gt;note: this tells me which module is being traced&lt;/em&gt;)       &lt;br /&gt;Target: {4447e45e-9f65-e01d-2c17-24dee61fb1d9}&lt;/p&gt;    &lt;p&gt;&amp;lt;?xml version="1.0" encoding="utf-16"?&amp;gt;      &lt;br /&gt;&amp;lt;DataItem type="System.Performance.LinkedData" time="2009-11-12T12:32:46Z" sourceHealthServiceId="fa056941-2b22-7d8e-a34d-7604e1347f99"&amp;gt;       &lt;br /&gt;  &amp;lt;ObjectName&amp;gt;LTM Pool Member&amp;lt;/ObjectName&amp;gt;       &lt;br /&gt;  &amp;lt;CounterName&amp;gt;Server - Current Connections&amp;lt;/CounterName&amp;gt;       &lt;br /&gt;  &amp;lt;InstanceName /&amp;gt;       &lt;br /&gt;  &amp;lt;IsNull&amp;gt;false&amp;lt;/IsNull&amp;gt;       &lt;br /&gt;  &amp;lt;Value&amp;gt;0&amp;lt;/Value&amp;gt;       &lt;br /&gt;  &amp;lt;ManagedEntityId&amp;gt;{29c7fc90-0f44-b70c-9f88-5a7ee6d13a40}&amp;lt;/ManagedEntityId&amp;gt;       &lt;br /&gt;  &amp;lt;RuleId&amp;gt;{0e799c3d-b8d0-bce0-259b-f9025d507996}&amp;lt;/RuleId&amp;gt;       &lt;br /&gt;&amp;lt;/DataItem&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This module can be downloaded &lt;a href="http://devcentral.f5.com/LinkClick.aspx?link=http%3a%2f%2fdevcentral.f5.com%2fdownloads%2fMgmtPack%2fF5Networks.ManagementPack.Modules.Debugging-1.5.1.309-x64.zip+&amp;amp;tabid=73&amp;amp;mid=3221"&gt;here&lt;/a&gt;. You’ll need to import the included MP into OpsMgr and place the included DLL in the Operations Manager program files folder. Instructions for installation and configuration are the same as the &lt;a href="http://scomnivore.wordpress.com/special-series/workflow-tracer-1-of-4-workflow-primer/"&gt;original workflow tracer&lt;/a&gt;, except with our MP and DLL.&lt;/p&gt;  &lt;p&gt;Another barrier to debugging OpsMgr becomes apparent if you want to use this module to debug a sealed workflow (one that’s in a sealed MP and is not marked public). There is no way to simply insert a module of your own in such a workflow since you cannot change a sealed MP. The workaround goes like this:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create an override for the workflow that disables it &lt;/li&gt;    &lt;li&gt;Export the MP that the workflow is in to XML format (use the #1 tool on my top 10 list). &lt;/li&gt;    &lt;li&gt;Get the XML for the workflow from the exported pack and create a copy of it in your own, new, MP. If the workflow references other elements marked “internal” to the MP, you will have to create copies of those as well. &lt;/li&gt;    &lt;li&gt;Insert the debugging module wherever you’d like in your new workflow. &lt;/li&gt;    &lt;li&gt;Import your new pack &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Simple as that ! :)&lt;/p&gt;  &lt;p&gt;To help understand this process, I’ve created an &lt;a href="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/DebugPack.html"&gt;override pack&lt;/a&gt; for our own F5 PRO-Enabled Management Pack that replaces one of our monitors with one that includes the debugging module between each module in the workflow. I realize the pack looks strange as formatted in our wiki – just copy and paste from the &amp;lt;xml&amp;gt; element on down to &amp;lt;/ManagementPack&amp;gt;. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Option 4: Use the Operations Manager Workflow Analyzer&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I was both elated and saddened by the brand new workflow analyzer included in the new &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9104af8b-ff87-45a1-81cd-b73e6f6b51f0&amp;amp;displaylang=en"&gt;authoring console&lt;/a&gt;. Elated because this tool rocks, and saddened because it really would have helped to have it earlier :). This tool does the following things:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Shows you all the workflows registered in OpsMgr as well as their state      &lt;ul&gt;       &lt;li&gt;Technical note: Internally this is basically running the “Show Running Rules and Monitors” task that is already available via the UI &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/OperationsManagerDebuggingPartIIWorkflow_9051/screen1_4.gif"&gt;&lt;img title="screen1" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="491" alt="screen1" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/OperationsManagerDebuggingPartIIWorkflow_9051/screen1_thumb_1.gif" width="622" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Allows you trace any of the workflows      &lt;ul&gt;       &lt;li&gt;Technical note: Internally this is overriding the TraceEnabled property on the workflow and hooking into OpsMgr’s built in tracing capabilities. I’ve looked for a way to override this property through the UI, and it does not seem possible. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/OperationsManagerDebuggingPartIIWorkflow_9051/trace2_4.gif"&gt;&lt;img title="trace2" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="720" alt="trace2" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/OperationsManagerDebuggingPartIIWorkflow_9051/trace2_thumb_1.gif" width="768" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Allows you do an ‘analysis’ of the workflow. This was not very interesting to me – just shows you some basic properties and running instances. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You can increase the amount of information printed out in the trace if you turn on verbose logging (see Option 2 above).&lt;/p&gt;  &lt;p&gt;The main drawback of this tool is that it’s hooking into trace calls made by the OpsMgr modules so you’re not going to get this level of detail if you’re trying to debug a custom-built module. It may be possible to write to the same mechanism, but I have not looked into that yet.&lt;/p&gt;  &lt;p&gt;Happy Debugging!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/jhendrickson/archive/2009/11/04/operations-manager-debugging-part-i-top-10-tools-for-developing.aspx"&gt;&amp;lt;&amp;lt; Back to Part I&lt;/a&gt;&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/jhendrickson/aggbug/6207.aspx" width="1" height="1" /&gt;</description><pubDate>Fri, 13 Nov 2009 14:38:29 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/jhendrickson/archive/2009/11/13/operations-manager-debugging-part-ii-workflows.aspx#comment</comments><slash:comments>5</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>Operations Manager Debugging Part I: Top 10 Tools for Developing and Debugging Management Packs</title><link>http://devcentral.f5.com/weblogs/jhendrickson/archive/2009/11/04/operations-manager-debugging-part-i-top-10-tools-for-developing.aspx</link><description>&lt;p&gt;During that last year and a half that I’ve been on the F5 Management Pack team, we’ve had to do quite a bit of Systems Center Operations Manager debugging. I think it is certainly possible to develop management packs without needing to delve into Operations Manager internals at all, but much of what our pack does is outside the norm. For example:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;We have a custom-built agent on the Big-IP LTM box that our management pack talks to using a proprietary protocol &lt;/li&gt;    &lt;li&gt;We’ve built custom OpsMgr workflow modules in order to meet our performance objectives &lt;/li&gt;    &lt;li&gt;We just released a PRO pack which is fairly cutting-edge technology so there is very little documentation to go on &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In this series of posts, I’ll share some of the techniques we’ve used for debugging and developing management packs. So, without further adieu, I present part I – the top 10 most useful tools.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="2"&gt;10. &lt;/font&gt;&lt;a href="http://blogs.msdn.com/mariussutara/archive/2009/06/03/tool-opsmgr-2007-runtimehealthexplorer.aspx"&gt;&lt;font size="2"&gt;Runtime Health Explorer&lt;/font&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Troubleshooting state change problems can be tricky. There are several ways to view health and monitor states of your discovered instances, but not all in one place. This tool does just that, and has a synchronization feature as well.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;9. &lt;a href="http://www.computerhope.com/dirhlp.htm"&gt;DIR&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Yes, the lowly DIR command. Simple, yet powerful. &lt;/p&gt;    &lt;p&gt;Try running this command:&lt;/p&gt;    &lt;pre style="border-right: #999999 1px dashed; padding-right: 5px; border-top: #999999 1px dashed; padding-left: 5px; font-size: 12px; padding-bottom: 5px; overflow: auto; border-left: #999999 1px dashed; width: 100%; color: #000000; line-height: 14px; padding-top: 5px; border-bottom: #999999 1px dashed; font-family: andale mono, lucida console, monaco, fixed, monospace; background-color: #eee"&gt;&lt;code&gt;c:\Program Files\System Center Operations Manager 2007\Health Service State\&amp;gt;dir *.PS1 /s /b
&lt;/code&gt;&lt;/pre&gt;

  &lt;p&gt;If you have scripts included in your management pack, they will be placed in a subfolder of this directory before they are executed. Looking at these scripts can help troubleshoot selectors and script caching. A great explanation of this technique can be found &lt;a href="http://myitforum.com/cs2/blogs/vdipippo/archive/2008/07/05/opsmgr-scripting-wywinnwyg.aspx"&gt;here&lt;/a&gt;. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;8. &lt;a href="http://blogs.msdn.com/mariussutara/archive/2008/01/21/operations-manager-2007-sp1-tracing.aspx"&gt;Operations Manager Tracing Configuration Scripts&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;By turning verbose logging on, you can see an amazing amount of detail around what OpsMgr is doing. I have found this technique most useful when debugging scripts, especially ones using the new powershell module. For example, you may have an error in your script because you forgot to add a snapin and the normal task window will not show you what the problem is. The TracingGuidsScript.log file will show the error.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;7. &lt;a href="http://blogs.msdn.com/boris_yanushpolsky/archive/2008/06/18/module-explorer-v2.aspx"&gt;Module Explorer&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;It is critical to understand what modules are available to you when developing new workflows. This tool shows you all the modules available in your current OpsMgr environment.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;6. &lt;a href="http://scomnivore.wordpress.com/special-series/workflow-tracer-1-of-4-workflow-primer/"&gt;Workflow Tracer&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If you have a workflow with several ConditionDetection modules and you’re losing data items somewhere, this tool is extremely useful. This module can be inserted in any of your workflows (between each module in a workflow is the best for debugging) and it will log the data items that are passing through. This is also useful for understanding what the raw data items look like. &lt;/p&gt;

  &lt;p&gt;Part II of this series will be a further exploration and extension of this concept.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;5. &lt;a href="http://myitforum.com/cs2/blogs/vdipippo/archive/2008/07/05/build-316-of-lineage-explorer.aspx"&gt;Lineage Explorer&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Much thanks to &lt;a href="http://scomnivore.wordpress.com/"&gt;SCOMNIVORE&lt;/a&gt; for three of the tools on this list, including this one. This tool is similar to the Module Explorer but allows you to view class and relationship type lineage as well as module lineage.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;4. &lt;a href="http://www.red-gate.com/products/reflector/"&gt;Reflector&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Operations Manager is not open source, but there is an enormous amount of .NET code that can be decompiled and examined. One of the posts in this series (#3 I think) will cover this topic. However, I’ll leave you with this little snippet from Microsoft.EnterpriseManagement.HealthService.DLL:&lt;/p&gt;

  &lt;pre&gt;public enum &lt;b&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Microsoft.EnterpriseManagement.HealthService:6.0.4900.0:31bf3856ad364e35/Microsoft.EnterpriseManagement.HealthService.ModuleType"&gt;ModuleType&lt;/a&gt;&lt;/b&gt;
{
    &lt;b&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Microsoft.EnterpriseManagement.HealthService:6.0.4900.0:31bf3856ad364e35/Microsoft.EnterpriseManagement.HealthService.ModuleType/DataSource"&gt;DataSource&lt;/a&gt;&lt;/b&gt;,
    &lt;b&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Microsoft.EnterpriseManagement.HealthService:6.0.4900.0:31bf3856ad364e35/Microsoft.EnterpriseManagement.HealthService.ModuleType/Condition"&gt;Condition&lt;/a&gt;&lt;/b&gt;,
    &lt;b&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Microsoft.EnterpriseManagement.HealthService:6.0.4900.0:31bf3856ad364e35/Microsoft.EnterpriseManagement.HealthService.ModuleType/ReadAction"&gt;ReadAction&lt;/a&gt;&lt;/b&gt;,
    &lt;b&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://Microsoft.EnterpriseManagement.HealthService:6.0.4900.0:31bf3856ad364e35/Microsoft.EnterpriseManagement.HealthService.ModuleType/WriteAction"&gt;WriteAction&lt;/a&gt;&lt;/b&gt;
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;3. &lt;a href="http://msdn.microsoft.com/en-us/library/aa216945(SQL.80).aspx"&gt;SQL Server Query Analyzer&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;A good understanding of the OperationsManager and OperationsManagerDW databases goes a long way when troubleshooting MP issues. There are also an enormous number useful OpsMgr SQL queries available out there. &lt;a href="http://blogs.technet.com/kevinholman/archive/2007/10/18/useful-operations-manager-2007-sql-queries.aspx"&gt;This guy&lt;/a&gt; covers a couple dozen in just one post and our own Julian Balog just &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;forumid=59&amp;amp;postid=85649&amp;amp;view=topic"&gt;posted a couple queries&lt;/a&gt; for troubleshooting statistics.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;2. &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9104af8b-ff87-45a1-81cd-b73e6f6b51f0&amp;amp;displaylang=en"&gt;System Center Operations Manager 2007 R2 Authoring Resource Kit (Authoring Console)&lt;/a&gt; &lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I wasn’t incredibly impressed with the original authoring console, but the just-released new version looks great. It also includes several new tools for debugging. This is the best (only?) tool that targets the beginner to intermediate level MP author. I’ve used the console several times to author a module and then save it to XML to learn about the XML schema and how things are supposed to be put together.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;1. &lt;a href="http://blogs.technet.com/cliveeastwood/archive/2007/05/25/tool-to-dump-all-mp-s-as-xml-unsealed-to-a-folder-of-your-choice.aspx"&gt;MP to XML Dumper&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;This simple tool is #1 because the best way to learn and debug MPs in my experience is to look through other MPs, especially the built-in OpsMgr ones. This can also be done with a powershell one-liner from the OpsMgr powershell console:&lt;/p&gt;

  &lt;pre style="border-right: #999999 1px dashed; padding-right: 5px; border-top: #999999 1px dashed; padding-left: 5px; font-size: 12px; padding-bottom: 5px; overflow: auto; border-left: #999999 1px dashed; width: 100%; color: #000000; line-height: 14px; padding-top: 5px; border-bottom: #999999 1px dashed; font-family: andale mono, lucida console, monaco, fixed, monospace; background-color: #eee"&gt;&lt;code&gt;Get-ManagementPack | Export-ManagementPack –Path “C:\packs\”
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Honorable Mention:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://blogs.msdn.com/boris_yanushpolsky/archive/2008/06/25/mpviewer-1-7-now-works-with-latest-e12-mp.aspx"&gt;MP Viewer&lt;/a&gt;: This didn’t make the list because the authoring console has all the same features and much more. The one nice thing about this tool however is that you can open a XML or MP file directly without needing to connect to OpsMgr, resolve references, etc. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have a great tool that is not on this list, please post a comment. I’ll make it “Top 11” if there’s something really good that I missed!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/jhendrickson/archive/2009/11/13/operations-manager-debugging-part-ii-workflows.aspx"&gt;&amp;gt;&amp;gt; Part II: WorkFlows&lt;/a&gt;&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/jhendrickson/aggbug/6182.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 04 Nov 2009 11:42:28 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/jhendrickson/archive/2009/11/04/operations-manager-debugging-part-i-top-10-tools-for-developing.aspx#comment</comments><slash:comments>8</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>Licensing Feature Added to the F5 Networks Management Pack</title><link>http://devcentral.f5.com/weblogs/druddell/archive/2009/11/02/licensing-feature-added-to-the-f5-networks-management-pack.aspx</link><description>&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="F5 Management Pack Licensing" border="0" alt="F5 Management Pack Licensing" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/druddell/WindowsLiveWriter/LicensingFeatureAddedtotheF5NetworksMana_10D12/0033-0812-1118-1867_clip_art_graphic_of_a_red_guy_character_holding_up_a_big_key_7.jpg" width="150" height="150" /&gt; Licensing and registration has been officially added to the process for downloading and activating the F5 Networks Management Pack software package. While we realize the process may create a minor inconvenience for some people, it will go a long way in helping us support you, the loyal customer, in the future. The information we collect through the process will help give us a clearer picture of the Microsoft Systems Center (Operations Manager, Virtual Machine Manager, etc) environment in which the Management Pack is being installed. &lt;/p&gt;  &lt;p&gt;Along with this release, there is new documentation available here: &lt;a title="http://devcentral.f5.com/Wiki/default.aspx/MgmtPack/LicensingTheF5ManagementPack.html" href="http://devcentral.f5.com/Wiki/default.aspx/MgmtPack/LicensingTheF5ManagementPack.html"&gt;Licensing The F5 Management Pack&lt;/a&gt;.  Along with this documentation is a tutorial video on how to proceed through registration and activation: &lt;a title="http://vimeo.com/7419230" href="http://vimeo.com/7419230"&gt;Registration and Licensing of the F5 Networks Management Pack&lt;/a&gt; (temporary link).&lt;/p&gt;  &lt;p&gt;I highly recommend you follow the instruction on that page and download the latest version of our Management Pack.  If you have any questions, feel free to comment on this blog or &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;afgroup=26"&gt;visit our forums&lt;/a&gt;.  &lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/druddell/aggbug/6176.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 02 Nov 2009 19:08:44 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/druddell/archive/2009/11/02/licensing-feature-added-to-the-f5-networks-management-pack.aspx#comment</comments><slash:comments>1</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>Authoring an F5 Management Pack PowerShell Agent Task in SCOM 2007 R2</title><link>http://devcentral.f5.com/weblogs/jbalog/archive/2009/10/28/authoring-an-f5-management-pack-powershell-server-task-in-scom.aspx</link><description>&lt;h2&gt;1. Overview&lt;/h2&gt;
&lt;p&gt;This article describes a step-by-step procedure on authoring a custom PowerShell agent task targeting the F5 Management Pack in System Center Operations Manager (SCOM) 2007 R2. I will use the Authoring Console shipped with the System Center Operations Manager 2007 R2 Authoring Resource Kit (downloadable &lt;a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?familyid=9104AF8B-FF87-45A1-81CD-B73E6F6B51F0&amp;amp;displaylang=en"&gt;here&lt;/a&gt;) to create the override management pack defining the agent task. The procedure for authoring an agent task with SCOM 2007 SP1 would be similar, with the difference that the authoring tool would be the Authoring Console supporting SCOM 2007 SP1 (downloadable &lt;a target="_blank" href="http://www.microsoft.com/DownLoads/details.aspx?FamilyID=6c8911c3-c495-4a03-96df-9731c37aa6d7&amp;amp;displaylang=en"&gt;here&lt;/a&gt;) and some of the module types targeted by the agent task would be different.&lt;/p&gt;
&lt;p&gt;The agent task that we’re going to create here for the F5 Management Pack as an example, will create an array of LTM Pool Member objects for an F5 device, using PowerShell. The same authoring concept can be extended to any generic scenario for creating a PowerShell agent task in SCOM 2007 R2.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;2. Preliminary Steps&lt;/h2&gt;
&lt;p&gt;Make sure the F5 Management Pack is correctly installed on the SCOM 2007 R2 Root Management Server. In addition, you'll need to have the System Center Operations Manager 2007 R2 installed on the management server where you plan to author the override management pack described in this article, for implementing the custom agent task. For testing purposes it is also recommended to have at least one F5 device discovered, in order to run the custom agent task that we're creating.&lt;/p&gt;
&lt;p&gt;Also, for a good understanding of the agent task implementation described in this article, some minimal SCOM Management Pack authoring skills are required as well as basic PowerShell programming skills. Since the agent task is targeting an F5 device and attempts to change the device configuration, by adding LTM Pool Members, make sure you have the necessary rights to perform this action on the F5 device.&lt;/p&gt;
&lt;p&gt;For more information on F5 Management Pack related topics visit the &lt;strong&gt;F5 Management Pack Solution&lt;/strong&gt; page &lt;a target="_blank" href="http://devcentral.f5.com/Default.aspx?tabid=214"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;3. Authoring the Agent Task&lt;/h2&gt;
&lt;p&gt;At a high level here are the basic steps for creating the PowerShell agent task for adding an array of LTM Pool Members:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Create an override management pack (&lt;strong&gt;F5.Override.ManagementPack&lt;/strong&gt;) referencing the F5 Management Pack. This override management pack will implement the custom PowerShell agent task. &lt;/li&gt;
    &lt;li&gt;Create a WriteAction Module Type (&lt;strong&gt;F5.WriteActionModuleType.AddLtmPoolMembers&lt;/strong&gt;) containing the PowerShell script and override parameters needed for the agent task. &lt;/li&gt;
    &lt;li&gt;Create an Agent Task (&lt;strong&gt;F5.Task.AddLtmPoolMembers&lt;/strong&gt;) as the actual task that would target the &lt;strong&gt;F5 LTM Pool&lt;/strong&gt; object (for creating the &lt;strong&gt;LTM Pool Members&lt;/strong&gt; in). This agent task will use (implement) the &lt;strong&gt;F5.WriteActionModuleType.AddLtmPoolMembers&lt;/strong&gt; write-action module. &lt;/li&gt;
    &lt;li&gt;Save the &lt;strong&gt;F5.Override.ManagementPack&lt;/strong&gt; and import it in SCOM 2007 R2. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following sections will describe the step-by-step procedure for authoring the override management pack implementing the custom agent task for adding an array of LTM Pool Members.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;3.1. Creating the Override Management Pack&lt;/h3&gt;
&lt;ul&gt;
    &lt;li&gt;Open the &lt;strong&gt;SCOM 2007 R2 Authoring Console&lt;/strong&gt; and go to &lt;strong&gt;File&lt;/strong&gt; &amp;gt; &lt;strong&gt;New...&lt;/strong&gt; to create a new override management pack. Or you can open an existing override management pack if you already have one, referencing the F5 Management Pack. For the purpose of this article we'll just create a new override management pack. &lt;/li&gt;
    &lt;li&gt;In the &lt;strong&gt;New Management Pack&lt;/strong&gt; window select &lt;strong&gt;Empty Management Pack&lt;/strong&gt; and name the management pack &lt;strong&gt;F5.Override.ManagementPack&lt;/strong&gt;, for example. Click &lt;strong&gt;Next&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;Enter a display name (such as &lt;strong&gt;F5 Override Management Pack&lt;/strong&gt;) and a description (optional) for the override management pack. Click &lt;strong&gt;Create&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;In the &lt;strong&gt;SCOM 2007 R2 Authoring Console&lt;/strong&gt; go to &lt;strong&gt;File&lt;/strong&gt; &amp;gt; &lt;strong&gt;Management Pack Properties&lt;/strong&gt; and choose the &lt;strong&gt;References&lt;/strong&gt; tab. Click &lt;strong&gt;Add Reference...&lt;/strong&gt; and browse to the location of the F5 Management Pack file(&lt;strong&gt;F5_ManagementPack.mp&lt;/strong&gt;) located in the F5 Management Pack deployment folder (which by default is &lt;strong&gt;%Program Files%\F5 Networks\Management Pack&lt;/strong&gt;). Select &lt;strong&gt;F5_ManagementPack.mp&lt;/strong&gt; and click &lt;strong&gt;Open&lt;/strong&gt;. Click &lt;strong&gt;OK&lt;/strong&gt; in the override management pack window properties, when done. &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Figure 1 &lt;/strong&gt;shows the references required by the override management pack. All of them should be created by default except the &lt;strong&gt;F5_ManagementPack&lt;/strong&gt;, which we just added in the previous step. &lt;/li&gt;
    &lt;li&gt;In the &lt;strong&gt;SCOM 2007 R2 Authoring Console&lt;/strong&gt; save the changes by going to &lt;strong&gt;File&lt;/strong&gt; &amp;gt; &lt;strong&gt;Save&lt;/strong&gt; (or clicking the &lt;strong&gt;Save&lt;/strong&gt; icon in the toolbar), and save the override management pack to the desired location (in our case we're going to save it in the same location where the &lt;strong&gt;F5_ManagementPack.mp&lt;/strong&gt; file is located). &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/override-mp-properties.jpg"&gt;&lt;img width="510" height="512" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/override-mp-properties_thumb.jpg" alt="override-mp-properties" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 1&lt;/strong&gt; - The override management pack references&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;3.2. Creating the WriteAction Module Type for the Agent Task&lt;/h3&gt;
&lt;ol&gt;
    &lt;li&gt;In the &lt;strong&gt;SCOM 2007 R2 Authoring Console&lt;/strong&gt; select the &lt;strong&gt;Type Library&lt;/strong&gt; section and under&lt;strong&gt; Module Types&lt;/strong&gt; select &lt;strong&gt;Write Actions&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;In the &lt;strong&gt;Write Actions&lt;/strong&gt; panel &lt;strong&gt;right click&lt;/strong&gt; &amp;gt; &lt;strong&gt;New...&lt;/strong&gt; &amp;gt; &lt;strong&gt;Composite Write Action&lt;/strong&gt;... and choose a unique identifier for the Write Action. We'll name this &lt;strong&gt;F5.WriteActionModuleType.AddLtmPoolMember&lt;/strong&gt;. Click &lt;strong&gt;OK&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;In the &lt;strong&gt;General&lt;/strong&gt; tab enter the &lt;strong&gt;name&lt;/strong&gt; for the module type ("LTM Pool Member Write Action Module Type") and &lt;strong&gt;description&lt;/strong&gt; (optional) - see Figure 2. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/write-action-module-type-general.jpg"&gt;&lt;img width="510" height="484" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/write-action-module-type-general_thumb.jpg" alt="write-action-module-type-general" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 2&lt;/strong&gt; - The Id, Name and Description of the Write Action Module Type&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;In the &lt;strong&gt;Member Modules&lt;/strong&gt; tab click &lt;strong&gt;Add...&lt;/strong&gt; and in the &lt;strong&gt;Choose Module Type&lt;/strong&gt; window's list-view locate and select the &lt;strong&gt;Microsoft.Windows.PowerShellWriteAction&lt;/strong&gt; type. In the &lt;strong&gt;Module ID&lt;/strong&gt; text box enter &lt;strong&gt;F5.WriteAction.AddLtmPoolMembers&lt;/strong&gt;. Click &lt;strong&gt;OK&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;In the &lt;strong&gt;Member Modules&lt;/strong&gt; tab select the &lt;strong&gt;F5.WriteActionModuleType.AddLtmPoolMembers&lt;/strong&gt; and click &lt;strong&gt;Edit&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;In the &lt;strong&gt;Configuration&lt;/strong&gt; window enter &lt;strong&gt;AddLtmPoolMembers.ps1&lt;/strong&gt; for the &lt;strong&gt;ScriptName&lt;/strong&gt; value and &lt;strong&gt;60&lt;/strong&gt; for the &lt;strong&gt;TimeoutSeconds&lt;/strong&gt; value. &lt;/li&gt;
    &lt;li&gt;In the &lt;strong&gt;Configuration&lt;/strong&gt; window select &lt;strong&gt;ScriptBody&lt;/strong&gt; and click &lt;strong&gt;Edit...&lt;/strong&gt; An external editor window will open (&lt;strong&gt;Notepad&lt;/strong&gt;) and inside the &lt;strong&gt;&amp;lt;ScriptBody&amp;gt;&amp;lt;/ScriptBody&amp;gt;&lt;/strong&gt; tags copy/paste the PowerShell code shown in &lt;strong&gt;Code Snippet 1&lt;/strong&gt;. This is the PowerShell script referenced by &lt;strong&gt;AddLtmPoolMembers.ps1&lt;/strong&gt; and we’ll refer to this script in the following sections simply as &lt;strong&gt;AddLtmPoolMembers.ps1&lt;/strong&gt;.  This is the PowerShell script that eventually gets executed when the “&lt;strong&gt;Add LTM Pool Members&lt;/strong&gt;” task will run. &lt;/li&gt;
&lt;/ul&gt;
&lt;div id="codeSnippetWrapper" style="border: 1px solid silver; text-align: left; padding: 4px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 20px 0px 10px; width: 1024px; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text;"&gt;
&lt;div id="codeSnippet" style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;param&lt;/span&gt;($mgmtAddress, $poolName, $targetAddresses);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;# validate input parameters&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; ([String]::IsNullOrEmpty($mgmtAddress)) { &lt;span style="color: rgb(0, 0, 255);"&gt;throw&lt;/span&gt; &lt;span style="color: rgb(0, 96, 128);"&gt;"Management address required."&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; ([String]::IsNullOrEmpty($poolName)) { &lt;span style="color: rgb(0, 0, 255);"&gt;throw&lt;/span&gt; &lt;span style="color: rgb(0, 96, 128);"&gt;"Pool name required."&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; ([String]::IsNullOrEmpty($targetAddresses)) { &lt;span style="color: rgb(0, 0, 255);"&gt;throw&lt;/span&gt; &lt;span style="color: rgb(0, 96, 128);"&gt;"Target addresses required."&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;# trap and re-throw exceptions (if any), to correctly reflect task status on errors&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;trap&lt;/span&gt; [Exception] { &lt;span style="color: rgb(0, 0, 255);"&gt;throw&lt;/span&gt; $_; }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;# get the F5 device connection info&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;$token = Get-F5.DeviceConfigurationToken $mgmtAddress;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;# make sure we have a valid device configuration token&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; ([String]::IsNullOrEmpty($token))&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;throw&lt;/span&gt; &lt;span style="color: rgb(0, 96, 128);"&gt;"Invalid device configuration token. Run the Set-F5.DeviceConfigurationToken task and try again."&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;# split the comma separated value string into an array of items&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;$targetAddresses = $targetAddresses.Split(&lt;span style="color: rgb(0, 96, 128);"&gt;"`,"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; ($member &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; $targetAddresses)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;{    &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;    Write-Host &lt;span style="color: rgb(0, 96, 128);"&gt;"Adding LTM Pool Member $member to LTM Pool $poolName..."&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;    &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;    &lt;span style="color: rgb(0, 128, 0);"&gt;# add the LTM pool member&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;    &lt;span style="color: rgb(0, 128, 0);"&gt;#Add-F5.LTMPoolMember -DeviceIP $mgmtAddress -Pool $poolName -Member $member -Token $token;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;    &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;    Write-Host &lt;span style="color: rgb(0, 96, 128);"&gt;"LTM Pool Member $member has been successfully added to the LTM Pool $poolName."&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Code Snippet 1&lt;/strong&gt; - The PowerShell script within the &amp;lt;ScriptBody&amp;gt; tags of the write action module type (&lt;strong&gt;AddLtmPoolMembers.ps1&lt;/strong&gt; )&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;In the same external editor window (&lt;strong&gt;Notepad&lt;/strong&gt;), immediately after the closing&lt;strong&gt; &amp;lt;/ScriptBody&amp;gt;&lt;/strong&gt; tag (the order is very important!) add the XML code describing the PowerShell snap-ins required by the script (see &lt;strong&gt;Code Snippet 2&lt;/strong&gt;). These snap-ins are &lt;strong&gt;F5.Networks.ManagementPack&lt;/strong&gt; and &lt;strong&gt;F5.Networks.iControl&lt;/strong&gt; and are installed with the&lt;strong&gt; F5 Management Pack&lt;/strong&gt;. &lt;/li&gt;
&lt;/ul&gt;
&lt;div id="codeSnippetWrapper" style="border: 1px solid silver; text-align: left; padding: 4px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 20px 0px 10px; width: 1024px; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text;"&gt;
&lt;div id="codeSnippet" style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;SnapIns&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;SnapIn&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;F5.Networks.ManagementPack&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;SnapIn&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;SnapIn&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;F5.Networks.iControl&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;SnapIn&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;SnapIns&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Code Snippet 2&lt;/strong&gt; – The PowerShell snap-ins required by the &lt;strong&gt;AddLtmPoolMembers.ps1&lt;/strong&gt; script&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;in the same external editor window (&lt;strong&gt;Notepad&lt;/strong&gt;), immediately after the closing &lt;strong&gt;&amp;lt;/SnapIn&amp;gt;&lt;/strong&gt; tag (the order is very important!) add the XML code describing the parameters needed by the script (see &lt;strong&gt;Code Snippet 3&lt;/strong&gt;). &lt;/li&gt;
&lt;/ul&gt;
&lt;div id="codeSnippetWrapper" style="border: 1px solid silver; text-align: left; padding: 4px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 20px 0px 10px; width: 1024px; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text;"&gt;
&lt;div id="codeSnippet" style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Parameters&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Parameter&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;mgmtAddress&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Value&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;$Config/mgmtAddress$&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Value&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Parameter&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Parameter&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;poolName&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Value&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;$Config/poolName$&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Value&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Parameter&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Parameter&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;targetAddresses&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Value&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;$Config/targetAddresses$&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Value&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Parameter&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Parameters&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Code Snippet 3&lt;/strong&gt; – The parameters required by the &lt;strong&gt;AddLtmPoolMembers.ps1&lt;/strong&gt; script&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;close the external editor window (&lt;strong&gt;Notepad&lt;/strong&gt;) when done and save the content when prompted. &lt;/li&gt;
    &lt;li&gt;back in the &lt;strong&gt;Member Modules&lt;/strong&gt; tab of the &lt;strong&gt;Write Action Module Types&lt;/strong&gt; property window select the&lt;strong&gt; F5.WriteActionsModuleType.AddLtmPoolMembers&lt;/strong&gt; and set the &lt;strong&gt;NextModule&lt;/strong&gt; field to &lt;strong&gt;Module Output&lt;/strong&gt;. The settings on the &lt;strong&gt;Member Modules&lt;/strong&gt; tab should look similar to the ones shown in &lt;strong&gt;Figure 3&lt;/strong&gt;. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/write-action-module-type-member-modules.jpg"&gt;&lt;img width="510" height="484" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/write-action-module-type-member-modules_thumb.jpg" alt="write-action-module-type-member-modules" style="border-width: 0px;" /&gt;&lt;/a&gt;  &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 3&lt;/strong&gt; - The Write Action Member Module settings&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Go to the &lt;strong&gt;Configuration Schema&lt;/strong&gt; tab and add the parameters of the Write Action Module Type, as shown in &lt;strong&gt;Figure 4&lt;/strong&gt;. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/write-action-module-type-config-schema.jpg"&gt;&lt;img width="510" height="484" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/write-action-module-type-config-schema_thumb.jpg" alt="write-action-module-type-config-schema" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 4&lt;/strong&gt; - The parameters of the Write Action Module Type configuration schema&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Go to the &lt;strong&gt;Overridable Parameters&lt;/strong&gt; tab and add the overridable parameters of the Write Action Module Type, as shown in &lt;strong&gt;Figure 5&lt;/strong&gt;. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/write-action-module-type-overridable-params.jpg"&gt;&lt;img width="510" height="484" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/write-action-module-type-overridable-params_thumb.jpg" alt="write-action-module-type-overridable-params" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 5 &lt;/strong&gt;- The overridable parameters of the Write Action Module Type configuration schema&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Go to the &lt;strong&gt;Data Types&lt;/strong&gt; tab, check the &lt;strong&gt;This module outputs data&lt;/strong&gt; checkbox and set the &lt;strong&gt;Data Type&lt;/strong&gt; to &lt;strong&gt;System.BaseData&lt;/strong&gt; (see &lt;strong&gt;Figure 6&lt;/strong&gt;). &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/write-action-module-type-data-types.jpg"&gt;&lt;img width="510" height="484" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/write-action-module-type-data-types_thumb.jpg" alt="write-action-module-type-data-types" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 6&lt;/strong&gt; - The Output Data type of the Write Action Module Type&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Go to the &lt;strong&gt;Options&lt;/strong&gt; tab and set the execution options for the Write Action Module Type as shown in &lt;strong&gt;Figure 7&lt;/strong&gt;. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/write-action-module-type-options.jpg"&gt;&lt;img width="510" height="484" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/write-action-module-type-options_thumb.jpg" alt="write-action-module-type-options" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 7&lt;/strong&gt; - Execution options for the Write Action Module Type&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;3.3. Creating the Agent Task&lt;/h3&gt;
&lt;ul&gt;
    &lt;li&gt;In the &lt;strong&gt;SCOM 2007 R2 Authoring Console&lt;/strong&gt; select the &lt;strong&gt;Health Model &lt;/strong&gt;section and under&lt;strong&gt; Tasks &lt;/strong&gt;select &lt;strong&gt;Agent Tasks&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;In the &lt;strong&gt;Agent Tasks&lt;/strong&gt; pane &lt;strong&gt;right click&lt;/strong&gt; &amp;gt; &lt;strong&gt;New&lt;/strong&gt; &amp;gt; &lt;strong&gt;Custom Task...&lt;/strong&gt; and choose a unique ID for the agent task, for example &lt;strong&gt;F5.Task.AddLtmPoolMembers&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;In the Agent Task Properties window select the &lt;strong&gt;General&lt;/strong&gt; tab and enter a name for the agent task ("&lt;strong&gt;Add LTM Pool Members"&lt;/strong&gt;) and a description (optional), see &lt;strong&gt;Figure 8&lt;/strong&gt;). Set the &lt;strong&gt;Target&lt;/strong&gt; of the Agent Task to &lt;strong&gt;F5.LTM.Pool&lt;/strong&gt; (see &lt;strong&gt;Figure 9)&lt;/strong&gt;. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/agent-task-general.jpg"&gt;&lt;img width="510" height="505" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/agent-task-general_thumb.jpg" alt="agent-task-general" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 8&lt;/strong&gt; - Agent Task general properties&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/agent-task-target.jpg"&gt;&lt;img width="510" height="433" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/agent-task-target_thumb.jpg" alt="agent-task-target" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 9&lt;/strong&gt; - Setting the &lt;strong&gt;Target&lt;/strong&gt; for the Agent Task to &lt;strong&gt;F5.LTM.Pool&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;In the &lt;strong&gt;Configuration&lt;/strong&gt; tab click on the &lt;strong&gt;Browse for type...&lt;/strong&gt; hyperlink and in the &lt;strong&gt;Choose module type&lt;/strong&gt; window look for the &lt;strong&gt;F5.WriteActionModuleType.AddLtmPoolMembers&lt;/strong&gt;, defined in the previous section (see &lt;strong&gt;3.2. Creating the WriteAction Module Type for the Agent Task&lt;/strong&gt;). In the &lt;strong&gt;Module ID&lt;/strong&gt; text box enter a module identifier, for example &lt;strong&gt;F5.WriteAction.AddLtmPoolMembers&lt;/strong&gt; (see &lt;strong&gt;Figure 10&lt;/strong&gt;). Click &lt;strong&gt;OK&lt;/strong&gt;. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/agent-task-module-type.jpg"&gt;&lt;img width="510" height="433" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/agent-task-module-type_thumb.jpg" alt="agent-task-module-type" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 10&lt;/strong&gt; - Setting the &lt;strong&gt;Module Type &lt;/strong&gt;for the Agent Task to &lt;strong&gt;F5.WriteActionModuleType.AddLtmPoolMembers&lt;/strong&gt; (see section &lt;strong&gt;3.2&lt;/strong&gt;)&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;In the &lt;strong&gt;Configuration&lt;/strong&gt; tab verify that the parameters defined for the &lt;strong&gt;F5.WriteActionModuleType.AddLtmPoolMembers&lt;/strong&gt; are correctly shown. Set the following values for the parameters (see &lt;strong&gt;Figure 11&lt;/strong&gt;).: &lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;mgmtAddress = &lt;strong&gt;$Target/Host/Property[Type="F5_ManagementPack!F5.Device"]/MgmtAddress$&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;poolName = &lt;strong&gt;$Target/Property[Type="F5_ManagementPack!F5.LTM.Pool"]/PoolName$&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;timeoutSeconds = &lt;strong&gt;60&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
    &lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt; to save the Agent Task and conclude the configuration. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At this point the custom agent task should be properly set up. Save the &lt;strong&gt;F5.Override.ManagementPack&lt;/strong&gt; (&lt;strong&gt;File&lt;/strong&gt; &amp;gt; &lt;strong&gt;Save&lt;/strong&gt; in the &lt;strong&gt;SCOM 2007 R3 Authoring Console&lt;/strong&gt;). The last step would be to import the &lt;strong&gt;F5.Override.ManagementPack&lt;/strong&gt; in SCOM 2007 R2. Open the &lt;strong&gt;SCOM 2007 R2 Management Console&lt;/strong&gt;, go to the &lt;strong&gt;Administration&lt;/strong&gt; section, select &lt;strong&gt;Management Packs&lt;/strong&gt;, &lt;strong&gt;right click&lt;/strong&gt; &amp;gt; &lt;strong&gt;Import Management Packs&lt;/strong&gt; &amp;gt; &lt;strong&gt;Add&lt;/strong&gt; &amp;gt; &lt;strong&gt;Add from disk...&lt;/strong&gt; and browse to the location where the override management pack is saved, select and click &lt;strong&gt;Install&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;h2&gt;5. Running the Agent Task&lt;/h2&gt;
&lt;p&gt;When running F5 device related agent tasks in SCOM 2007, we need to have an appropriate device configuration token created (or cached) for the specific device, in order to have a successful task run. This behavior ties into the "Authorization Roles and Groups" model of the F5 Management Pack, i.e. supporting various authorization roles and groups via Microsoft SCOM 2007, Active Directory, and F5 BIG-IP’s user authentication model. The F5 Management Pack includes built-in roles for discovery and device configuration and Microsoft Windows and Active Directory accounts can be correlated with BIG-IP user accounts via a one time device authentication (performed through an F5 Management Pack agent task action).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/task-set-device-config-token.jpg"&gt;&lt;img width="510" height="624" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/task-set-device-config-token_thumb.jpg" alt="task-set-device-config-token" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 11&lt;/strong&gt; - Running the &lt;strong&gt;Set F5 Device Configuration Token&lt;/strong&gt; agent task&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;In other words, prior to run any configuration related agent task against an F5 device (such as Rediscovery, Enable/Disable LTM Virtual Server, Enable/Disable LTM Pool Member, etc.) we have to make sure we have a valid device configuration token. This is accomplished by running the "&lt;strong&gt;Set F5 Device Configuration Token&lt;/strong&gt;" agent task. In the F5 Device diagram view, select the &lt;strong&gt;F5 device&lt;/strong&gt; &amp;gt;&lt;strong&gt; right click&lt;/strong&gt; &amp;gt;&lt;strong&gt; F5 Device Tasks&lt;/strong&gt; &amp;gt; &lt;strong&gt;Set F5 Device Configuration Token&lt;/strong&gt;), where we’ll have to provide the device authentication credentials for the appropriate overrides (see &lt;strong&gt;Figure 11&lt;/strong&gt;). These credentials will be mapped to the account running the agent task(s), making up a 'device configuration token'. This is a one-time deal and we don't have to set the device configuration token with every agent-task run, assuming that we will use the same (Windows/Active Directory) account running the agent task(s). If the device configuration token has been set up successfully, we should get an output similar to &lt;strong&gt;Figure 12&lt;/strong&gt;, at the end of the &lt;strong&gt;Set F5 Device Configuration Token&lt;/strong&gt; task run.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/task-set-device-config-token-done.jpg"&gt;&lt;img width="510" height="447" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/task-set-device-config-token-done_thumb.jpg" alt="task-set-device-config-token-done" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 12&lt;/strong&gt; - The output for a successful run of the &lt;strong&gt;Set F5 Device Configuration Token&lt;/strong&gt; agent task&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Once we have the device configuration token (credentials) cached, we can finally run the Add LTM Pool Members agent task: in the F5 Device diagram view, expand the F5 device hierarchy and navigate to the desired LTM Pool, &lt;strong&gt;right click&lt;/strong&gt; &amp;gt; &lt;strong&gt;F5 LTM Pool Tasks&lt;/strong&gt; &amp;gt; &lt;strong&gt;Add LTM Pool Members&lt;/strong&gt;. In the agent task property window set the appropriate override values (see &lt;strong&gt;Figure 13&lt;/strong&gt;). The target LTM Pool Member addresses should be entered as a comma-separated value string, e.g. similar to &lt;strong&gt;“10.10.10.1:80, 10.10.10.2:80”&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/task-add-ltm-pool-members.jpg"&gt;&lt;img width="510" height="624" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/task-add-ltm-pool-members_thumb.jpg" alt="task-add-ltm-pool-members" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 13&lt;/strong&gt; - Running the &lt;strong&gt;Add LTM Pool Member &lt;/strong&gt;agent task&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;For a successful run of the &lt;strong&gt;Add LTM Pool Members&lt;/strong&gt; task we should get an output similar to &lt;strong&gt;Figure 14&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/task-add-ltm-pool-members-done.jpg"&gt;&lt;img width="510" height="457" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/task-add-ltm-pool-members-done_thumb.jpg" alt="task-add-ltm-pool-members-done" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 14&lt;/strong&gt; - The output for a successful run of the &lt;strong&gt;Add LTM Pool Members &lt;/strong&gt;agent task&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;6. Conclusion&lt;/h2&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;Creating a custom PowerShell agent task in SCOM 2007 R2 is not a trivial procedure, but it’s definitely made possible by the SCOM 2007 R2 Authoring Console with an acceptable degree of flexibility. Scripting the agent task PowerShell script, targeting F5 Management Pack objects (such as LTM Pool Members, LTM Virtual Servers, etc.) would require a couple of PowerShell snap-ins shipped with the F5 Management Pack: &lt;strong&gt;F5.Networks.ManagementPack&lt;/strong&gt; and &lt;strong&gt;F5.Networks.iControl&lt;/strong&gt;. These snap-ins allow to some extent a native API interaction (wrapped around iControl), programming against the F5 Device objects (LTM Pool Members, LTM Virtual Servers, etc.).&lt;/p&gt;
&lt;p&gt;You download the override management pack discurssed in this article here: &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:bf6d3349-891d-40cc-acc8-032d7f062feb" style="padding: 0px; margin: 0px; display: inline; float: none;"&gt;
&lt;p&gt; &lt;a target="_blank" href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/AuthoringanF5ManagementPackPowerShellSer_C11A/F5.Override.ManagementPack.xml"&gt;F5.Override.ManagementPack&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/jbalog/aggbug/6167.aspx" width="1" height="1" /&gt;</description><pubDate>Tue, 27 Oct 2009 18:46:51 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/jbalog/archive/2009/10/28/authoring-an-f5-management-pack-powershell-server-task-in-scom.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>A First Look at the F5 PRO-Enabled Management Pack for Microsoft Virtual Machine Manager 2008</title><link>http://devcentral.f5.com/weblogs/jhendrickson/archive/2009/10/27/a-first-look-at-the-f5-pro-enabled-management-pack-for.aspx</link><description>&lt;p&gt;The new PRO-Enabled management pack enables integration with Virtual Machine Manager (VMM) via PRO-Tips. This integration enables scenarios in which statistics and health events collected from Big-IPs by the core management pack are used to trigger actions by VMM. &lt;/p&gt;  &lt;p&gt;One example of this kind of scenario is to use VMM to start up virtual machines when a traffic spike starts overwhelming your existing pool of servers. The same virtual machines can be suspended or stopped when the traffic load returns to normal. We’ve shown how the management pack can be used to enable these scenarios in a &lt;a href="http://vimeo.com/6211860"&gt;series of data orchestration videos&lt;/a&gt;. The new PRO-Enabled management gives the VMM administrator control and auditing of the actions that VMM is instructed to take.&lt;/p&gt;  &lt;p&gt;When the PRO pack is installed, a new folder installed into Systems Center Operations Manager:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/AFirstLookatthePROEnabledF5ManagementPac_E67E/views_2.gif"&gt;&lt;img title="views" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="222" alt="views" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/AFirstLookatthePROEnabledF5ManagementPac_E67E/views_thumb.gif" width="627" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The new views available are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;F5 PRO Actions:&lt;/strong&gt; Clicking on this view causes available PRO actions to show up in the actions pane. Currently the only action is “Discover PRO Pool Members” &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;F5 PRO Alerts&lt;/strong&gt;: Any PRO alerts that you enable will be shown here. These alerts cause VMM to generate PRO tips. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;F5 PRO Monitored Pool Members:&lt;/strong&gt; This view shows all pool members that have PRO alerts enabled. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;After the PRO Pack is installed, the PRO monitors need to be enabled and configured in order to start functioning. The configuration page for the “Add Server Resource” monitor is shown below:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/AFirstLookatthePROEnabledF5ManagementPac_E67E/overrides_2.gif"&gt;&lt;img title="overrides" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="413" alt="overrides" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/AFirstLookatthePROEnabledF5ManagementPac_E67E/overrides_thumb.gif" width="513" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;By default, the configuration of the monitor is as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The monitor is disabled &lt;/li&gt;    &lt;li&gt;The Big-IP statistic that it monitors is LTM Pool Member Server Current Connections &lt;/li&gt;    &lt;li&gt;The monitor is in a healthy state when current connections are less than or equal to zero &lt;/li&gt;    &lt;li&gt;The monitor is in a critical state when the current connections are greater than zero &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The monitor goes to a critical state when it detects incoming connections because the pool member that is being monitored has been set up on the Big-IP to receive connections only when the primary pool is overwhelmed. The &lt;a href="http://vimeo.com/6211860"&gt;data orchestration videos&lt;/a&gt; go into more detail on this setup.&lt;/p&gt;  &lt;p&gt;When the monitor goes into a critical state it creates a PRO alert and causes VMM to generate a PRO Tip which can be viewed from the PRO Tip window:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/AFirstLookatthePROEnabledF5ManagementPac_E67E/protip_2.gif"&gt;&lt;img title="protip" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="542" alt="protip" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/AFirstLookatthePROEnabledF5ManagementPac_E67E/protip_thumb.gif" width="674" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The VMM administrator can then choose to implement the tip or dismiss the tip. Implementing the tip will cause new server resources to spin up. Some details of what the tip actually does can be configured from within Systems Center. &lt;/p&gt;  &lt;p&gt;The VMM administrator can also set options that govern how all PRO tips are handled:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/AFirstLookatthePROEnabledF5ManagementPac_E67E/tipconfig_2.gif"&gt;&lt;img title="tipconfig" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="398" alt="tipconfig" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/AFirstLookatthePROEnabledF5ManagementPac_E67E/tipconfig_thumb.gif" width="451" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;PRO tips can be enabled/disabled by severity level &lt;/li&gt;    &lt;li&gt;Tips can be configured to automatically run by severity level &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Once the action has taken place, the Jobs windows from within VMM can be used to view the audit trail of the actions that were taken by implementing the PRO tip:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/AFirstLookatthePROEnabledF5ManagementPac_E67E/Picture1_2.gif"&gt;&lt;img title="Picture1" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="141" alt="Picture1" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/AFirstLookatthePROEnabledF5ManagementPac_E67E/Picture1_thumb.gif" width="442" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Please visit the &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=217"&gt;F5 Management Pack downloads&lt;/a&gt; page to download the new PRO pack. In the coming weeks we’ll have more in-depth coverage of what you can do with the PRO pack, so stay tuned!&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/jhendrickson/aggbug/6164.aspx" width="1" height="1" /&gt;</description><pubDate>Tue, 27 Oct 2009 00:05:51 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/jhendrickson/archive/2009/10/27/a-first-look-at-the-f5-pro-enabled-management-pack-for.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Introducing the F5 PRO-Enabled Management Pack for Microsoft Virtual Machine Manager 2008</title><link>http://devcentral.f5.com/weblogs/sfisher/archive/2009/10/26/introducing-the-f5-pro-enabled-management-pack-for-microsoft-virtual-machine.aspx</link><description>&lt;p&gt;I am proud to announce we have just released our latest addition to the F5 Management Pack, the &lt;strong&gt;F5 PRO-Enabled Management Pack for Microsoft Virtual Machine Manager 2008&lt;/strong&gt; (MS VMM). If you haven’t heard MS VMM is a member of the Microsoft System Center family that enables a host of different technologies and scenarios including Hyper-V management, VMWare instance integration, optimization of virtualized resources (PRO), and monitoring integration with System Center Operations Manager.&lt;/p&gt;  &lt;p&gt;Building on &lt;strong&gt;F5 Networks’ BIG-IP Management Pack for System Center Operations 2008 R2&lt;/strong&gt;, we’re excited to offer a rapidly deployable virtualization solution that will help you dynamically increase and decrease your hardware and software resources, based on network health and activity.&lt;/p&gt;  &lt;p&gt;If you’ve been following our blog posts over the last few months, we’ve provided a set of videos and documentation explaining how to use the F5 Management Pack to add and remove pool members based on traffic through a pool or virtual server.&lt;/p&gt;  &lt;p&gt;With the F5 PRO-Enabled MP, these scenarios are built into the Virtual Machine Manager console, along with PRO-Tip authorization to implement the resolution policy.&lt;/p&gt;  &lt;p&gt;We’re also updating our base Management Pack (version 1.5.0) to address a number of key customer fixes, and improve reliability.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;You can find the latest F5 Management Pack and F5 PRO-Enabled Management Pack Extension at our DevCentral download portal: &lt;a title="http://devcentral.f5.com/Default.aspx?tabid=217" href="http://devcentral.f5.com/Default.aspx?tabid=217"&gt;http://devcentral.f5.com/Default.aspx?tabid=217&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;For questions and support issues, we continue to host direct support via the DevCentral Forums at: &lt;a title="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;afgroup=26" href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;afgroup=26"&gt;http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;afgroup=26&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Specifically, you can use the “Support Issues” Forum for bugs and issues, in any of our Management Pack products.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;I’d love to hear your feedback on our data center orchestration products.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Thank you for your continued support,&lt;/p&gt;  &lt;p&gt;Stephen Fisher&lt;/p&gt;  &lt;p&gt;Manager, Product Development&lt;/p&gt;  &lt;p&gt;F5 Networks&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/sfisher/aggbug/6162.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 26 Oct 2009 10:43:05 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/sfisher/archive/2009/10/26/introducing-the-f5-pro-enabled-management-pack-for-microsoft-virtual-machine.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Windows Installer XML and Managed Custom Actions</title><link>http://devcentral.f5.com/weblogs/druddell/archive/2009/10/12/windows-installer-xml-and-managed-custom-actions.aspx</link><description>&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/druddell/WindowsLiveWriter/WindowsInstallerXMLandManagedCustomActio_C37C/0033-0812-1118-2126_clip_art_graphic_of_a_red_guy_character_holding_a_light_bulb_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Clip Art Graphic of a Red Guy Character " border="0" alt="Clip Art Graphic of a Red Guy Character " align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/druddell/WindowsLiveWriter/WindowsInstallerXMLandManagedCustomActio_C37C/0033-0812-1118-2126_clip_art_graphic_of_a_red_guy_character_holding_a_light_bulb_thumb.jpg" width="149" height="150" /&gt;&lt;/a&gt; For those of you who have every worked with any installer technologies, you probably know how cumbersome it can be to do anything non-conventional.  A lot of the higher ticket installer packages like InstallShield or WISE offer a robust set of options, but still lack the granularity that some installations may require, aside from costing money.  There are a number of decent free options available such as Nullsoft Scriptable Install System (NCSIS), Inno Setup, and &lt;a href="http://wix.sourceforge.net/" target="_blank"&gt;Windows Installer XML (WiX)&lt;/a&gt;.  A lot of simple installations can rely on these free technologies, or even the built in Windows Installer support provided with Visual Studio.  With the F5 Networks Management Pack there are a lot of post installation steps.  This is where WiX came in to save the day.  Without having to learn a new scripting language, or abide by the constraints of the Visual Studio MSI builder, WiX gives us the flexibility to perform all needed post installation steps, while staying in the comfortable setting of XML.  WiX is also built on top of standard MSI technology, which is well documented and supported by the community, and that makes understanding exactly how everything works a lot easier.&lt;/p&gt;  &lt;p&gt;I’m not going to go into the basics of &lt;a href="http://wix.sourceforge.net/" target="_blank"&gt;WiX&lt;/a&gt; because there is already plenty of &lt;a href="http://www.tramontana.co.hu/wix/" target="_blank"&gt;good documentation&lt;/a&gt; on how to get an installer off the ground.  What really interests me ( and unfortunately has very little documentation) is the proper way to set up managed custom actions, and more so, how to cover all of your all installation scenarios and schedule custom actions in sequence with proper rollback.  José Almeida has written a &lt;a href="http://blogs.msdn.com/josealmeida/archive/2004/11/08/wix-managed-custom-actions.aspx" target="_blank"&gt;very useful blog&lt;/a&gt;, which will actually cover a lot of the same material I am going to cover, so my recommendation is to read through that first, as it is very useful and will cover a large percentage of custom action scenarios you may wish to implement.  Now actually getting a managed Custom Action working in WiX is not too hard.  In fact, it only requires a few lines of XML.  That being said, there is a right way and a wrong way, so while it’s easy, it can also be very complex.  If you plan to have a a large scale installer (20+ components), I’d recommend fragmenting your script at this point into several WiX files so that you can more easily manage your installer down the road.  One such fragment should be your custom actions and as well as the &lt;a href="http://msdn.microsoft.com/en-us/library/aa372038(VS.85).aspx" target="_blank"&gt;InstallExecuteSequence&lt;/a&gt;.  &lt;/p&gt;  &lt;h4&gt;&lt;font color="#800000"&gt;Creating the Custom Actions&lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;In Jose’s blog post, he uses the installUtilLib as the binary in which to run as the Custom Action.  The reality is that you can use just about any binary.  You may want to embed the binary or perhaps use an executable that is included with the installation package itself.  For the sake of this post, I’m going to ignore a few unwritten rules and go ahead and show you how to perform a custom action using a freshly installed binary.  If you do choose to use an executable, the best way to do this is to implement it as a Quiet Execution Custom Action.  If you are going to use a Quiet CA, you MUST add the following line to your wxs file:&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;font color="#800000"&gt;Binary&lt;/font&gt; &lt;font color="#ff0000"&gt;Id&lt;/font&gt;=”wixca” &lt;font color="#ff0000"&gt;SourceFile&lt;/font&gt;=”wixca.dll” /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;This line will add the WiX Custom Action binary library so that you can use it as an entry point for your Custom Actions because we want to run our binary quietly, otherwise we will get a cmd window popping up in the middle of install.  So for the sake of this example, we are going to say that there is a binary file being dropped by the installer called ConfigurationManager.exe.  By itself, this executable does not do anything, but with the proper command line arguments, it will actually run the custom actions.  So for one complete custom action we will have something that looks like this:&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;font color="#800000"&gt;CustomAction&lt;/font&gt;&lt;font color="#ff0000"&gt; Id&lt;/font&gt;="CAWriteConfigurationFile.Install" &lt;font color="#ff0000"&gt;Return&lt;/font&gt;="check" &lt;font color="#ff0000"&gt;Execute&lt;/font&gt;="deferred"&lt;font color="#ff0000"&gt; BinaryKey&lt;/font&gt;="wixca" &lt;font color="#ff0000"&gt;DllEntry&lt;/font&gt;="CAQuietExec" /&amp;gt;&lt;/font&gt;     &lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;font color="#800000"&gt;CustomAction&lt;/font&gt; &lt;font color="#ff0000"&gt;Id&lt;/font&gt;="CAWriteConfigurationFile.Install.Command" &lt;font color="#ff0000"&gt;Property&lt;/font&gt;="CAWriteConfigurationFile.Install" &lt;font color="#ff0000"&gt;Return&lt;/font&gt;="check" &lt;font color="#ff0000"&gt;Value&lt;/font&gt;=’&lt;font color="#008000"&gt;&lt;font color="#000000"&gt;”&lt;/font&gt;[INSTALLDIR]ConfigurationManager.exe” Action=”WriteConfigFile” Type=”Install&lt;/font&gt;”’ /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;font color="#800000"&gt;CustomAction&lt;/font&gt;&lt;font color="#ff0000"&gt; Id&lt;/font&gt;="CAWriteConfigurationFile.Install.Rollback" &lt;font color="#ff0000"&gt;Return&lt;/font&gt;="check"&lt;font color="#ff0000"&gt; Execute&lt;/font&gt;="Rollback"&lt;font color="#ff0000"&gt; BinaryKey&lt;/font&gt;="wixca"&lt;font color="#ff0000"&gt; DllEntry&lt;/font&gt;="CAQuietExec" /&amp;gt;&lt;/font&gt;     &lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;font color="#800000"&gt;CustomAction&lt;/font&gt; &lt;font color="#ff0000"&gt;Id&lt;/font&gt;="CAWriteConfigurationFile.Install.Rollback.Command"&lt;font color="#ff0000"&gt; Property&lt;/font&gt;="CAWriteConfigurationFile.Install" &lt;font color="#ff0000"&gt;Return&lt;/font&gt;="check" &lt;font color="#ff0000"&gt;Value&lt;/font&gt;=’”&lt;font color="#008000"&gt;[INSTALLDIR]ConfigurationManager.exe” Action=”WriteConfigFile” Type=”Install.Rollback&lt;/font&gt;”’ /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt; &lt;font color="#0000ff"&gt;&amp;lt;&lt;font color="#800000"&gt;CustomAction&lt;/font&gt;&lt;font color="#ff0000"&gt; Id&lt;/font&gt;="CAWriteConfigurationFile.Uninstall" &lt;font color="#ff0000"&gt;Return&lt;/font&gt;="check" &lt;font color="#ff0000"&gt;Execute&lt;/font&gt;="deferred" &lt;font color="#ff0000"&gt;BinaryKey&lt;/font&gt;="wixca" &lt;font color="#ff0000"&gt;DllEntry&lt;/font&gt;="CAQuietExec" /&amp;gt;&lt;/font&gt;     &lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;font color="#800000"&gt;CustomAction&lt;/font&gt;&lt;font color="#ff0000"&gt; Id&lt;/font&gt;="CAWriteConfigurationFile.Uninstall.Command"&lt;font color="#ff0000"&gt; Property&lt;/font&gt;="CAWriteConfigurationFile.Uninstall"&lt;font color="#ff0000"&gt; Return&lt;/font&gt;="check" &lt;font color="#ff0000"&gt;Value&lt;/font&gt;=’”&lt;font color="#008000"&gt;[INSTALLDIR]ConfigurationManager.exe” Action=”WriteConfigFile” Type=”Uninstall&lt;/font&gt;”’ /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;font color="#800000"&gt;CustomAction&lt;/font&gt;&lt;font color="#ff0000"&gt; Id&lt;/font&gt;="CAWriteConfigurationFile.Uninstall.Rollback" &lt;font color="#ff0000"&gt;Return&lt;/font&gt;="check" &lt;font color="#ff0000"&gt;Execute&lt;/font&gt;="Rollback" &lt;font color="#ff0000"&gt;BinaryKey&lt;/font&gt;="wixca"&lt;font color="#ff0000"&gt; DllEntry&lt;/font&gt;="CAQuietExec" /&amp;gt;&lt;/font&gt;     &lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;font color="#800000"&gt;CustomAction&lt;/font&gt; &lt;font color="#ff0000"&gt;Id&lt;/font&gt;="CAWriteConfigurationFile.Uninstall.Rollback.Command"&lt;font color="#ff0000"&gt; Property&lt;/font&gt;="CAWriteConfigurationFile.Uninstall.Rollback"&lt;font color="#ff0000"&gt; Return&lt;/font&gt;="check" &lt;font color="#ff0000"&gt;Value&lt;/font&gt;=’”&lt;font color="#008000"&gt;[INSTALLDIR]ConfigurationManager.exe” Action=”WriteConfigFile” Type=”Uninstall.Rollback&lt;/font&gt;”’ /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000" /&gt;    &lt;/p&gt;&lt;p&gt;These are the very basic actions you need to implement in order to make this all work properly.  Each pair above represents one piece of the whole custom action, but I will briefly dissect one pair to help give you a better understanding of what is going on. In the first line we have the Id of the Custom Action, which you should name something that makes reading it easier.  Next we have Return, which is set to check so that if the action fails, we know to rollback. Then we have Execute, which is set to deferred, which I will explain in a moment.  The last 2 pieces are the BinaryKey and DllEntry, which are explained on plenty of pages, but basically it’s telling the WiX compiler to use the WiX Custom Action library and call the function CAQuietExec, which will execute the next line’s Value property, which was also purposefully named with a .Command at the end. So in the second line, we have the actual command that CAQuietExec will run.  The Property field MUST be named the same as the Id field of the previous line.  This is important, as it tells the .Command which Custom Action to ‘link’ to.  The last piece of the second line is the Value property, which contains the actual command to run.  In this case, we are running ConfigurationManager.exe and passing it options for Action and Type, which tell it what to do.  It’s useful to handle the executable this way, as it gives us a framework in which to properly implement the Custom Action in all scenarios.  The last note to make is that the Execute property on the Rollback actions are set to Rollback.  This ensures that these commands ONLY run when Rollback has been initiated.&lt;/p&gt;   &lt;h4&gt;&lt;font color="#800000"&gt;Sequencing the Custom Actions&lt;/font&gt;&lt;/h4&gt; &lt;font color="#000000"&gt;   &lt;p&gt;Moving forward from here, the most important thing to remember is that the actual Custom Actions are not wrapped in the same type of transaction as the rest of the installer, which means it is imperative that you take care of any rollback on your own.  If you do not do this, you could leave the system in a potentially bad state.  That being said, other scenarios you might want to consider are Upgrade and Reinstall/Repair.  If your Install action is the same for upgrade and repair, you just need to adjust the conditional in the next section; however, if they are different, you will have to create a set for each one like the ones listed above.  Once you have laid out the Custom Actions you wish to run, the next piece of the puzzle is to lay out the InstallExecuteSequence.  I personally like to keep things in the proper sequence, as it is easier to read and maintain later, so we will actually start with the Uninstall Sequence. For the actions listed above, it will look something like this:&lt;/p&gt; &lt;/font&gt;  &lt;p&gt;&lt;font color="#008000"&gt;&amp;lt;!-- Uninstall Action Sequence –&amp;gt;&lt;/font&gt;     &lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAWriteConfigurationFile.Uninstall.Rollback.Command" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’InstallInitialize’&amp;gt;&lt;font color="#ff00ff"&gt;Installed and REMOVE="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;       &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAWriteConfigurationFile.Uninstall.Rollback" &lt;font color="#ff0000"&gt;After&lt;/font&gt;='CAWriteConfigurationFile.Uninstall.Rollback.Command'&amp;gt;&lt;font color="#ff00ff"&gt;Installed and REMOVE="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;       &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAWriteConfigurationFile.Uninstall.Command" &lt;font color="#ff0000"&gt;After&lt;/font&gt;='CAWriteConfigurationFile.Uninstall.Rollback'&amp;gt;&lt;font color="#ff00ff"&gt;Installed and REMOVE="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;       &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAWriteConfigurationFile.Uninstall" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CAWriteConfigurationFile.Uninstall.Command’&amp;gt;&lt;font color="#ff00ff"&gt;Installed and REMOVE="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;font color="#000000"&gt;   &lt;p&gt;In the section above, you will notice that the Rollback is scheduled before the actual command.  This is very important, as it ensures that the Rollback action gets scheduled before we run the actual command.  Otherwise, if the command fails, the Rollback action was never scheduled and any changes made by the command will not be undone.  This can leave the system in an unstable state, so it is important you make sure to put these in the correct order.  You will also notice in the first line that we are scheduling the Uninstall Sequence to basically start after InstallInitialize.  We can actually schedule these actions to run after ProcessComponents, but it must be scheduled before UnpublishComponents if you plan to use an executable dropped by the installer, as UnpublishComponents will make the binary unavailable to use for the Custom Actions.  So now that we have the Uninstall Sequence set up, we will look at the Install Sequence:&lt;/p&gt; &lt;/font&gt;  &lt;p&gt;&lt;font color="#008000"&gt;&amp;lt;!-- Install Action Sequence –&amp;gt;&lt;/font&gt;     &lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAWriteConfigurationFile.Install.Rollback.Command" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’PublishProduct’&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;       &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAWriteConfigurationFile.Install.Rollback" &lt;font color="#ff0000"&gt;After&lt;/font&gt;='CAWriteConfigurationFile.Install.Rollback.Command'&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;       &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAWriteConfigurationFile.Install.Command" &lt;font color="#ff0000"&gt;After&lt;/font&gt;='CAWriteConfigurationFile.Install.Rollback'&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;       &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAWriteConfigurationFile.Install" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CAWriteConfigurationFile.Install.Command’&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Just as in the Uninstall Sequence, we schedule the Rollback action directly before the command itself to ensure proper rollback.  You will also notice that the first part of the Install Sequence happens after PublishProduct, which ensures that the binary we wish to use is available for the Custom Action. &lt;/p&gt;  &lt;h4&gt;&lt;font color="#800000"&gt;Multiple Managed Custom Actions&lt;/font&gt;&lt;/h4&gt; &lt;font color="#000000"&gt;   &lt;p&gt;The information before this point can actually be found in pieces around the internet, but what I’m about to show you is not.  Assume for a moment that we had not one, but 3 or 4 Custom Actions we wish to run using our ConfigurationManager.exe tool.  Not only that, but they require us to run them in a particular order.  Now we have an interesting case in which to look at.  Creating the Custom Actions themselves is simple enough.  Following the pattern above will get you on the right path in a few minutes, but to ensuring proper scheduling can be tricky.  Let’s say we have 4 actions called CAUpdateVirtualMachineDatabase, CARegisterNonGacComponents, CARegisterNewVirtualizationSnapIn, and CAImportCustomDataCenterManagementPack.  Including the CAWriteConfigurationFile action, we have have five, which must run in this order: CARegisterNonGacComponents, CAWriteConfigurationFile,  CAUpdateVirtualMachineDatabase, CARegisterNewVirtualizationSnapin, and finally CAImportCustomDataCenterManagementPack, which relies on each of the previous 4 actions in some way.  The Install Action Sequence would look something like this:&lt;/p&gt; &lt;/font&gt;  &lt;p&gt;&lt;font color="#008000"&gt;&amp;lt;!-- Install Action Sequence –&amp;gt;&lt;/font&gt;     &lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CARegisterNonGacComponents.Install.Rollback.Command" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’PublishProduct’&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;       &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CARegisterNonGacComponents.Install.Rollback" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CARegisterNonGacComponents.Install.Rollback.Command'&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;       &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CARegisterNonGacComponents.Install.Command" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CARegisterNonGacComponents.Install.Rollback'&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;       &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CARegisterNonGacComponents.Install" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CARegisterNonGacComponents.Install.Command’&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;font color="#0000ff"&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAWriteConfigurationFile.Install.Rollback.Command" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CARegisterNonGacComponents.Install’&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;     &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAWriteConfigurationFile.Install.Rollback" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CAWriteConfigurationFile.Install.Rollback.Command'&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;     &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAWriteConfigurationFile.Install.Command" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CAWriteConfigurationFile.Install.Rollback'&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;     &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAWriteConfigurationFile.Install" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CAWriteConfigurationFile.Install.Command’&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;&lt;/font&gt;   &lt;p /&gt; &lt;font color="#0000ff"&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAUpdateVirtualMachineDatabase.Install.Rollback.Command" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CAWriteConfigurationFile.Install’&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;     &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAUpdateVirtualMachineDatabase.Install.Rollback" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CAUpdateVirtualMachineDatabase.Install.Rollback.Command'&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;     &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAUpdateVirtualMachineDatabase.Install.Command" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CAUpdateVirtualMachineDatabase.Install.Rollback'&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;     &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAUpdateVirtualMachineDatabase.Install" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CAUpdateVirtualMachineDatabase.Install.Command’&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;&lt;/font&gt;   &lt;p /&gt; &lt;font color="#0000ff"&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CARegisterNewVirtualizationSnapin.Install.Rollback.Command" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CAUpdateVirtualMachineDatabase.Install’&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;     &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CARegisterNewVirtualizationSnapin.Install.Rollback" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CARegisterNewVirtualizationSnapin.Install.Rollback.Command'&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;     &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CARegisterNewVirtualizationSnapin.Install.Command" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CARegisterNewVirtualizationSnapin.Install.Rollback'&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;     &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CARegisterNewVirtualizationSnapin.Install" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CARegisterNewVirtualizationSnapin.Install.Command’&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;&lt;/font&gt;   &lt;p /&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAImportCustomDataCenterManagementPack.Install.Rollback.Command" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CARegisterNewVirtualizationSnapin.Install’&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;       &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAImportCustomDataCenterManagementPack.Install.Rollback" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CAImportCustomDataCenterManagementPack.Install.Rollback.Command'&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;       &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAImportCustomDataCenterManagementPack.Install.Command" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CAImportCustomDataCenterManagementPack.Install.Rollback'&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;       &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAImportCustomDataCenterManagementPack.Install" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CAImportCustomDataCenterManagementPack.Install.Command’&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL"&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;font color="#000000"&gt;   &lt;p&gt;So after looking at the XML above, the problem might seem a little easier to handle.  There is one other small issue we need to address: What happens when one of the above acts differently upon repair or upgrade.  So let us look at the upgrade scenario, specifically the Database related custom action.  If a database is updated, typically we do not want to destroy the data, so we will want to ‘upgrade’ the database with the new fields or tables, etc.  The Custom Action blob itself will look exactly like one in the previous section.  The above blob will actually look different. We’ll call the upgrade CA CAUpgradeVMDatabase.  Here’s how I would fit it in the existing Install Action Sequence:&lt;/p&gt; &lt;/font&gt;  &lt;p /&gt; &lt;font color="#0000ff"&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAUpgradeVMDatabase.Upgrade.Rollback.Command" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CAWriteConfigurationFile.Install’&amp;gt;&lt;font color="#ff00ff"&gt;Installed and REINSTALL="ALL" and UPGRADEPATH&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;     &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAUpgradeVMDatabase.Upgrade.Rollback" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CAUpgradeVMDatabase.Upgrade.Rollback.Command'&amp;gt;&lt;font color="#ff00ff"&gt;Installed and REINSTALL="ALL" and UPGRADEPATH&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;     &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAUpgradeVMDatabase.Upgrade.Command" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CAUpgradeVMDatabase.Upgrade.Rollback'&amp;gt;&lt;font color="#ff00ff"&gt;Installed and REINSTALL="ALL" and UPGRADEPATH&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;     &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAUpgradeVMDatabase.Upgrade" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CAUpgradeVMDatabase.Upgrade.Command’&amp;gt;&lt;font color="#ff00ff"&gt;Installed and REINSTALL="ALL" and UPGRADEPATH&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;&lt;/font&gt;   &lt;p /&gt; &lt;font color="#0000ff"&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAUpdateVirtualMachineDatabase.Install.Rollback.Command" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CAUpgradeVMDatabase.Upgrade’&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL" and NOT UPGRADEPATH&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;     &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAUpdateVirtualMachineDatabase.Install.Rollback" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CAUpdateVirtualMachineDatabase.Install.Rollback.Command'&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL" and NOT UPGRADEPATH&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;     &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAUpdateVirtualMachineDatabase.Install.Command" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CAUpdateVirtualMachineDatabase.Install.Rollback'&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL" and NOT UPGRADEPATH&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;     &lt;br /&gt;&amp;lt;&lt;font color="#800000"&gt;Custom&lt;/font&gt; &lt;font color="#ff0000"&gt;Action&lt;/font&gt;="CAUpdateVirtualMachineDatabase.Install" &lt;font color="#ff0000"&gt;After&lt;/font&gt;=’CAUpdateVirtualMachineDatabase.Install.Command’&amp;gt;&lt;font color="#ff00ff"&gt;NOT Installed or REINSTALL="ALL" and NOT UPGRADEPATH&lt;/font&gt;&amp;lt;/&lt;font color="#800000"&gt;Custom&lt;/font&gt;&amp;gt;&lt;/font&gt; &lt;font color="#000000"&gt;   &lt;p&gt;Dissecting what we have above, you’ll notice that the big difference between the two is the conditions in which they run.  The Upgrade CA requires the product to be installed and the REINSTALL and UPGRADEPATH flags to be set.  We do this so that we can schedule this single CA in the middle of the installation sequence.  Not only does this make it easier to read, but if we only have the one CA that is affected by a major upgrade it doesn’t make much sense to write 4 more Custom Actions for the rest of the install Custom Actions when we can ensure it gets run in the right sequence with the rest of them.  On a side note, the UPGRADEPATH property is actually set by a piece of WiX that looks something like this:&lt;/p&gt; &lt;/font&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;font color="#800000"&gt;Upgrade&lt;/font&gt; &lt;font color="#ff0000"&gt;Id&lt;/font&gt;='XXXXXXXX-XXX-XXXX-XXXX-XXXXXXXXXXXX'&amp;gt;&amp;lt;&lt;font color="#800000"&gt;UpgradeVersion&lt;/font&gt; &lt;font color="#ff0000"&gt;OnlyDetect&lt;/font&gt;='no' &lt;font color="#ff0000"&gt;Property&lt;/font&gt;='UPGRADEPATH' &lt;font color="#ff0000"&gt;Minimum&lt;/font&gt;="5.6.1" &lt;font color="#ff0000"&gt;IncludeMinimum&lt;/font&gt;='yes' &lt;font color="#ff0000"&gt;Maximum&lt;/font&gt;='9.5.0' &lt;font color="#ff0000"&gt;IncludeMaximum&lt;/font&gt;='no' /&amp;gt;&amp;lt;/&lt;font color="#800000"&gt;Upgrade&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;font color="#000000"&gt;   &lt;p&gt;This will tell the Custom Action CAUpgradeVMDatabase to run when we are installing on top of a minimum version of 5.6.1. With that being said, you should have all the information you now need to build sequenced managed Custom Actions using WiX.  If there is anything I missed, feel free to leave comments or criticisms. Also keep in mind that there are a handful of individuals out there who will recommend against doing what I just showed you, but if you follow the few guidelines I set up, and don’t forget your rollback/uninstall/upgrade/repair actions, you should be able to safely run your managed Custom Actions.&lt;/p&gt; &lt;/font&gt;&lt;img src="http://devcentral.f5.com/weblogs/druddell/aggbug/6138.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 12 Oct 2009 01:03:22 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/druddell/archive/2009/10/12/windows-installer-xml-and-managed-custom-actions.aspx#comment</comments><slash:comments>6</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>Overriding Alert (Monitor) Messages with SCOM 2007 and the F5 Management Pack</title><link>http://devcentral.f5.com/weblogs/jbalog/archive/2009/10/08/overriding-alert-monitor-messages-in-the-f5-management-pack.aspx</link><description>&lt;p&gt;In this blog post I’ll describe a way to override alert messages (for health state monitors and alerts) using Microsoft System Center Operations Manager (SCOM) 2007 R2 and the F5 Management Pack. The topic covered in this article is rooted in several requests from the field, where there’s been a need for creating custom alert messages for monitors and alerts related to F5 devices.&lt;/p&gt;
&lt;p&gt;I will focus on describing a common use case: monitoring an LTM Pool Member using the LTM Pool Member Aggregate Monitor defined in the F5 Management Pack. The code samples, XML authoring and implementation, and ultimately the tests have all been done using SCOM 2007 R2 and F5 Management Pack v.1.4.1.251, but they should be applicable to earlier and possibly future versions as well.&lt;/p&gt;
&lt;p&gt;From the beginning I need to highlight the fact that we’re discussing more than a trivial override for health state alerts and monitors here. As you would probably guess, the alerts and monitors defined in the F5 Management Pack are public, so they can be accessed from other (or override) management packs, but certain properties on these objects cannot be overwritten (through overrides) using the SCOM 2007 Management Console user interface, and also there are other limitations on performing overrides, as the F5 Management Pack is a sealed management pack.&lt;/p&gt;
&lt;p&gt;The alert and monitor messages / descriptions fall into this category. They simply cannot be overwritten using the SCOM UI. One way to override the alert messages is through XML authoring and override packs. The following implementation will assume that you are familiar with XML and SCOM management pack authoring, and also would require a tiny bit of SQL Server query skills.&lt;/p&gt;
&lt;p&gt;And I will start by scoping out the major steps involved in creating the alert message override, for an LTM Pool Member Aggregate Monitor:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Create an override for the &lt;strong&gt;LTM Pool Member Aggregate Monitor&lt;/strong&gt; targeting an override management pack (&lt;strong&gt;F5.Override.ManagementPack&lt;/strong&gt;). &lt;/li&gt;
    &lt;li&gt;Export the override management pack into an XML file: &lt;strong&gt;F5.Override.ManagementPack.xml&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;Edit the &lt;strong&gt;F5.Override.ManagementPack.xml&lt;/strong&gt; file for adding the required string resources for the override alert message. &lt;/li&gt;
    &lt;li&gt;Re-import the updated override management pack (from &lt;strong&gt;F5.Override.ManagementPack.xml&lt;/strong&gt;)  (Phase 1). &lt;/li&gt;
    &lt;li&gt;Query the &lt;strong&gt;OperationsManager&lt;/strong&gt; SQL database for the ID (GUID) of the override alert message string resource (added in step 3). &lt;/li&gt;
    &lt;li&gt;Edit the &lt;strong&gt;F5.Override.ManagementPack.xml&lt;/strong&gt; file again to add the alert message related monitor property overrides referencing the ID found above. &lt;/li&gt;
    &lt;li&gt;Re-import again the updated &lt;strong&gt;F5.Override.ManagementPack.xml&lt;/strong&gt; file (Phase 2). &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I will describe in detail each of these steps in the following paragraphs.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;Step 1: Override the LTM Pool Member Aggregate Monitor&lt;/h3&gt;
&lt;p&gt;I will briefly go through the steps to create an override for the LTM Pool Member Aggregate Monitor, targeting a certain pool member (in our example 172.27.155.29:80), and you can see the final results in Figure 1:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;open the &lt;strong&gt;Health Explorer&lt;/strong&gt; for the given pool member (you can right click in the diagram view of the F5 device &amp;gt; Health Explorer). &lt;/li&gt;
    &lt;li&gt;in the &lt;strong&gt;Health Explorer&lt;/strong&gt; browse to &lt;strong&gt;Entity Health&lt;/strong&gt; &amp;gt; &lt;strong&gt;Availability&lt;/strong&gt; &amp;gt; &lt;strong&gt;Monitor State&lt;/strong&gt; and right click. &lt;/li&gt;
    &lt;li&gt;in the&lt;strong&gt; Monitor State&lt;/strong&gt; context menu choose &lt;strong&gt;Monitor Properties…&lt;/strong&gt; and go to the &lt;strong&gt;Overrides&lt;/strong&gt; tab. &lt;/li&gt;
    &lt;li&gt;in the &lt;strong&gt;Overrides&lt;/strong&gt; window click the &lt;strong&gt;Override…&lt;/strong&gt; button and select the &lt;strong&gt;For the object: &amp;lt;ip_address:port&amp;gt;&lt;/strong&gt; menu item. &lt;/li&gt;
    &lt;li&gt;select a new management pack and name it to something like &lt;strong&gt;F5.Override.ManagementPack&lt;/strong&gt; for the destination management pack. &lt;/li&gt;
    &lt;li&gt;set up the overrides to something like the ones shown in Figure 1. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/OverridingAlertMonitorMessagesintheF5Man_15CB/01.jpg"&gt;&lt;img height="244" border="0" width="239" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/OverridingAlertMonitorMessagesintheF5Man_15CB/01_thumb.jpg" alt="01" title="01" style="border-width: 0px; display: inline;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 1&lt;/strong&gt;: The LTM Pool Member Aggregate Monitor Overrides&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;Step 2: Export the Override Management Pack (F5.Override.ManagementPack.xml)&lt;/h3&gt;
&lt;ul&gt;
    &lt;li&gt;in the SCOM Management Console navigate to &lt;strong&gt;Administration&lt;/strong&gt; and choose &lt;strong&gt;Management Packs&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;in the right panel select the override management pack (&lt;strong&gt;F5.Override.ManagementPack&lt;/strong&gt;), right click &amp;gt; &lt;strong&gt;Export Management Pack…&lt;/strong&gt; &lt;/li&gt;
    &lt;li&gt;save the management pack to a folder where you can access it. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;If you named the override management pack as suggested here (F5.Override.ManagementPack), the export to the XML file would slightly change the name of the file to F.Override.ManagementPack.xml. You can stay with this name or you can change it to&lt;strong&gt; F5.Override.ManagementPack.xml&lt;/strong&gt;, but then make sure that in the file you change the override management pack &lt;strong&gt;&amp;lt;Name&amp;gt;&lt;/strong&gt; and &lt;strong&gt;&amp;lt;ID&amp;gt;&lt;/strong&gt; attributes as well, to match &lt;strong&gt;F5.Override.ManagementPack&lt;/strong&gt; (see Figure 2).&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 1024px; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text;"&gt;
&lt;pre id="codeSnippet" style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&amp;lt;Identity&amp;gt;&lt;br /&gt;  &amp;lt;ID&amp;gt;F5.OverrideManagementPack&amp;lt;/ID&amp;gt;&lt;br /&gt;  &amp;lt;Version&amp;gt;1.0.0.0&amp;lt;/Version&amp;gt;&lt;br /&gt;&amp;lt;/Identity&amp;gt;&lt;br /&gt;&amp;lt;Name&amp;gt;F5.Override.ManagementPack&amp;lt;/Name&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Figure 2&lt;/strong&gt;: Make sure the override management pack file name and ID are matching.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;Step 3: Add the Alert Message String Resources to the Override Management Pack&lt;/h3&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;open the &lt;strong&gt;F5.Override.ManagementPack.xml&lt;/strong&gt; file for editing and locate the &lt;strong&gt;&amp;lt;Presentation&amp;gt;&lt;/strong&gt; section. Add the following XML code inside &lt;strong&gt;&amp;lt;Presentation&amp;gt;&lt;/strong&gt; section: &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 1024px; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text;"&gt;
&lt;pre id="codeSnippet" style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&amp;lt;Presentation&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;StringResources&amp;gt;&lt;br /&gt;      &amp;lt;StringResource ID=&lt;span style="color: rgb(0, 96, 128);"&gt;"F5.LTM.PoolMember.Monitor.AggregateMonitor_Override_AlertMessageResourceID"&lt;/span&gt; /&amp;gt;&lt;br /&gt;  &amp;lt;/StringResources&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/Presentation&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 3&lt;/strong&gt;: Adding the string resource for the allert message, to the override management pack&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;continue by locating the &lt;strong&gt;&amp;lt;LanguagePacks&amp;gt;&lt;/strong&gt; section and then add the following XML code inside the &lt;strong&gt;&amp;lt;LanguagePack&amp;gt;&lt;/strong&gt; section: &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 1024px; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text;"&gt;
&lt;pre id="codeSnippet" style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&amp;lt;DisplayString ElementID=&lt;span style="color: rgb(0, 96, 128);"&gt;"F5.LTM.PoolMember.Monitor.AggregateMonitor_Override_AlertMessageResourceID"&lt;/span&gt;&amp;gt;&lt;br /&gt;  &amp;lt;Name&amp;gt;Override Alert Message&amp;lt;/Name&amp;gt;&lt;br /&gt;  &amp;lt;Description&amp;gt;{0}: {1}.&amp;lt;/Description&amp;gt;&lt;br /&gt;&amp;lt;/DisplayString&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 4&lt;/strong&gt;: Adding the display string for the alert message&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;save the updated &lt;strong&gt;F5.Override.ManagementPack.xml&lt;/strong&gt; file. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As you can see, the display string consists of two placeholders in our example: &lt;strong&gt;{0}&lt;/strong&gt; and &lt;strong&gt;{1}&lt;/strong&gt;. That’s because we aim for the following alert message: &lt;strong&gt;&amp;lt;pool_member&amp;gt;: &amp;lt;status&amp;gt;&lt;/strong&gt;. The two placeholders correspond to the pool member name and status parameters, respectively, which will be loaded dynamically at runtime.&lt;/p&gt;
&lt;h3&gt;Step 4: Re-import the Updated Override Management Pack (Phase 1)&lt;/h3&gt;
&lt;ul&gt;
    &lt;li&gt;in the &lt;strong&gt;SCOM Management Console&lt;/strong&gt; navigate to &lt;strong&gt;Administration&lt;/strong&gt; and choose &lt;strong&gt;Management Packs&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;delete the “old” override management pack first: in the right panel select the override management pack (&lt;strong&gt;F5.Override.ManagementPack&lt;/strong&gt;), right click &amp;gt; &lt;strong&gt;Delete…&lt;/strong&gt; &lt;/li&gt;
    &lt;li&gt;clear the health service state cache related to the override management pack: open &lt;strong&gt;Windows Explorer &amp;gt; Program Files\System Center Operations Manager 2007\Health Service State\Management Packs&lt;/strong&gt; and delete the override management pack XML file (named as something like F5.OverrideManagementPack.{E0E8B7BC-E4B3-4E37-B1D5-67873CC877E6}.{743C1DA1-5328-7BE1-3681-482DE7E7133B}.xml) &lt;/li&gt;
    &lt;li&gt;import the updated override management pack: &lt;strong&gt;SCOM Management Console &amp;gt; Administration &amp;gt; Management Packs &amp;gt;&lt;/strong&gt; right click &lt;strong&gt;&amp;gt; Import Management Packs &amp;gt;&lt;/strong&gt; select the updated override management pack XML file (&lt;strong&gt;F5.Override.ManagementPack.xml&lt;/strong&gt;). &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;h3&gt;Step 5: Query the SCOM Database for the override alert message resource ID&lt;/h3&gt;
&lt;ul&gt;
    &lt;li&gt;open &lt;strong&gt;SQL Management Studio&lt;/strong&gt; and connect to the SQL Server hosting the SCOM 2007 &lt;strong&gt;OperationsManager&lt;/strong&gt; database. &lt;/li&gt;
    &lt;li&gt;select the &lt;strong&gt;OperationsManager&lt;/strong&gt; database (to run the query against) &lt;/li&gt;
    &lt;li&gt;open a new query window and type in the following SQL query: &lt;/li&gt;
&lt;/ul&gt;
&lt;div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 1024px; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text;"&gt;
&lt;pre id="codeSnippet" style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;SELECT * FROM StringResource&lt;br /&gt;    WHERE StringResourceName = &lt;span style="color: rgb(0, 96, 128);"&gt;'F5.LTM.PoolMember.Monitor.AggregateMonitor_Override_AlertMessageResourceID'&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Figure 5&lt;/strong&gt;: Querying the SCOM database for the override alert message resource ID&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;execute the query and copy the ID (GUID) value returned by the query. In our example this value is: 7E58A9E2-87C8-409A-DF1E-034BAF832B0C, but this is a globally unique identifier and it’s different in your environment. Make sure you get the value returned by the query (&lt;strong&gt;don’t copy / paste the one given in this example&lt;/strong&gt;). &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;Step 6: Update the Override Management Pack with the Monitor Property Overrides&lt;/h3&gt;
&lt;ul&gt;
    &lt;li&gt;open the &lt;strong&gt;F5.Override.ManagementPack.xml&lt;/strong&gt; file and locate the &lt;strong&gt;&amp;lt;Override&amp;gt;&lt;/strong&gt; section. &lt;/li&gt;
    &lt;li&gt;copy and paste the XML code snippet shown in Figure 6, preferably at the beginning of the &lt;strong&gt;&amp;lt;Override&amp;gt;&lt;/strong&gt; section: &lt;strong&gt;make sure to put the appropriate value for the GUID&lt;/strong&gt; of the alert message resource ID for the &lt;strong&gt;MonitorPropertyOverrideAlertMessage&lt;/strong&gt; property: &lt;/li&gt;
&lt;/ul&gt;
&lt;div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 1024px; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text;"&gt;
&lt;pre id="codeSnippet" style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&amp;lt;MonitorPropertyOverride ID=&lt;span style="color: rgb(0, 96, 128);"&gt;"MonitorPropertyOverrideAlertMessage"&lt;/span&gt; Context=&lt;span style="color: rgb(0, 96, 128);"&gt;"F5_ManagementPack!F5.LTM.PoolMember"&lt;/span&gt; Enforced=&lt;span style="color: rgb(0, 96, 128);"&gt;"false"&lt;/span&gt; Monitor=&lt;span style="color: rgb(0, 96, 128);"&gt;"F5_ManagementPack!F5.LTM.PoolMember.Monitor.AggregateMonitor"&lt;/span&gt; Property=&lt;span style="color: rgb(0, 96, 128);"&gt;"AlertMessage"&lt;/span&gt;&amp;gt;&lt;br /&gt;    &amp;lt;Value&amp;gt;&lt;strong&gt;7E58A9E2-87C8-409A-DF1E-034BAF832B0C&lt;/strong&gt;&amp;lt;/Value&amp;gt;&lt;br /&gt;&amp;lt;/MonitorPropertyOverride&amp;gt;&lt;br /&gt;&amp;lt;MonitorPropertyOverride ID=&lt;span style="color: rgb(0, 96, 128);"&gt;"MonitorPropertyOverrideAlertParameter1"&lt;/span&gt; Context=&lt;span style="color: rgb(0, 96, 128);"&gt;"F5_ManagementPack!F5.LTM.PoolMember"&lt;/span&gt; Enforced=&lt;span style="color: rgb(0, 96, 128);"&gt;"false"&lt;/span&gt; Monitor=&lt;span style="color: rgb(0, 96, 128);"&gt;"F5_ManagementPack!F5.LTM.PoolMember.Monitor.AggregateMonitor"&lt;/span&gt; Property=&lt;span style="color: rgb(0, 96, 128);"&gt;"AlertParameter1"&lt;/span&gt;&amp;gt;&lt;br /&gt;    &amp;lt;Value&amp;gt;$Data/Context/DataItem/LoggingComputer$&amp;lt;/Value&amp;gt;&lt;br /&gt;&amp;lt;/MonitorPropertyOverride&amp;gt;&lt;br /&gt;&amp;lt;MonitorPropertyOverride ID=&lt;span style="color: rgb(0, 96, 128);"&gt;"MonitorPropertyOverrideAlertParameter2"&lt;/span&gt; Context=&lt;span style="color: rgb(0, 96, 128);"&gt;"F5_ManagementPack!F5.LTM.PoolMember"&lt;/span&gt; Enforced=&lt;span style="color: rgb(0, 96, 128);"&gt;"false"&lt;/span&gt; Monitor=&lt;span style="color: rgb(0, 96, 128);"&gt;"F5_ManagementPack!F5.LTM.PoolMember.Monitor.AggregateMonitor"&lt;/span&gt; Property=&lt;span style="color: rgb(0, 96, 128);"&gt;"AlertParameter2"&lt;/span&gt;&amp;gt;&lt;br /&gt;    &amp;lt;Value&amp;gt;$Data/Context/DataItem/EventDescription$&amp;lt;/Value&amp;gt;&lt;br /&gt;&amp;lt;/MonitorPropertyOverride&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Figure 6&lt;/strong&gt;: Adding the monitor property overrides to the override management pack&lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;the two alert parameters featured in the code snippet above (&lt;strong&gt;MonitorPropertyOverrideAlertParameter1&lt;/strong&gt; and &lt;strong&gt;MonitorPropertyOverrideAlertParameter1&lt;/strong&gt;) are the ones filling up the placeholders in the alert message (as described at the end of &lt;strong&gt;Step 3&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;keep in mind that within the &lt;strong&gt;&amp;lt;Value&amp;gt;&lt;/strong&gt; tags we can only get &lt;strong&gt;$Data&lt;/strong&gt; value types (&lt;strong&gt;$Target&lt;/strong&gt; value types would not render correctly); you can choose to have multiple alert parameters, which you can find inside the context of the aggregate monitor (see the code snippet in Figure 7) &lt;/li&gt;
&lt;/ul&gt;
&lt;div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 1024px; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text;"&gt;
&lt;pre id="codeSnippet" style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&amp;lt; DataItem type =&lt;span style="color: rgb(0, 96, 128);"&gt;" System.Event.LinkedData "&lt;/span&gt; time =&lt;span style="color: rgb(0, 96, 128);"&gt;" 2009-10-08T08:11:13.6860686Z "&lt;/span&gt; sourceHealthServiceId =&lt;span style="color: rgb(0, 96, 128);"&gt;" ff2ffa3e-2b0c-803f-af44-328e9b517423 "&lt;/span&gt; &amp;gt; &lt;br /&gt;  &amp;lt; EventOriginId &amp;gt; {6bbefb8c-0b90-49d2-8e0c-2d2430a247a7} &amp;lt;/ EventOriginId &amp;gt; &lt;br /&gt;  &amp;lt; PublisherId &amp;gt; {26bf7cd6-0137-5f29-b3f6-2e4000000000} &amp;lt;/ PublisherId &amp;gt; &lt;br /&gt;  &amp;lt; PublisherName &amp;gt; F5 Networks &amp;lt;/ PublisherName &amp;gt; &lt;br /&gt;  &amp;lt; EventSourceName &amp;gt; F5 Networks &amp;lt;/ EventSourceName &amp;gt; &lt;br /&gt;  &amp;lt; Channel &amp;gt; F5 Networks &amp;lt;/ Channel &amp;gt; &lt;br /&gt;  &amp;lt; LoggingComputer &amp;gt; 172.27.155.129:80 &amp;lt;/ LoggingComputer &amp;gt; &lt;br /&gt;  &amp;lt; EventNumber &amp;gt; 311 &amp;lt;/ EventNumber &amp;gt; &lt;br /&gt;  &amp;lt; EventCategory &amp;gt; 1 &amp;lt;/ EventCategory &amp;gt; &lt;br /&gt;  &amp;lt; EventLevel &amp;gt; 1 &amp;lt;/ EventLevel &amp;gt; &lt;br /&gt;  &amp;lt; UserName &amp;gt; F5 Networks &amp;lt;/ UserName &amp;gt; &lt;br /&gt;  &amp;lt; RawDescription &amp;gt; Monitor associated with configuration &lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;is&lt;/span&gt; down &amp;lt;/ RawDescription &amp;gt; &lt;br /&gt;  &amp;lt; LCID &amp;gt; 127 &amp;lt;/ LCID &amp;gt; &lt;br /&gt;  &amp;lt; CollectDescription &amp;gt; True &amp;lt;/ CollectDescription &amp;gt; &lt;br /&gt;  &amp;lt; Params /&amp;gt; &lt;br /&gt;&amp;lt; EventData &amp;gt; &lt;br /&gt;  &amp;lt; Data /&amp;gt; &lt;br /&gt;  &amp;lt;/ EventData &amp;gt; &lt;br /&gt;  &amp;lt; EventDisplayNumber &amp;gt; 311 &amp;lt;/ EventDisplayNumber &amp;gt; &lt;br /&gt;  &amp;lt; EventDescription &amp;gt; Monitor associated with configuration &lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;is&lt;/span&gt; down &amp;lt;/ EventDescription &amp;gt; &lt;br /&gt;  &amp;lt; ManagedEntityId &amp;gt; {ce5bf975-3a68-7283-ff41-2a7f0e7e40b4} &amp;lt;/ ManagedEntityId &amp;gt; &lt;br /&gt;  &amp;lt; RuleId &amp;gt; {91a47fc4-a084-20c9-2c91-367e7f4a3524} &amp;lt;/ RuleId &amp;gt; &lt;br /&gt;  &amp;lt;/ DataItem &amp;gt; &lt;/pre&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Figure 7&lt;/strong&gt;: The context data for the LTM Pool Member Aggregate Monitor&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;save the updated &lt;strong&gt;F5.Override.ManagementPack.xml&lt;/strong&gt; file. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that the context data may serve for choosing the appropriate name for other custom parameters to be featured inside the override alert message.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;Step 7: Re-import the Updated Override Management Pack (Phase 2). Done!&lt;/h3&gt;
&lt;ul&gt;
    &lt;li&gt;in the &lt;strong&gt;SCOM Management Console&lt;/strong&gt; navigate to &lt;strong&gt;Administration&lt;/strong&gt; and choose &lt;strong&gt;Management Packs&lt;/strong&gt;. &lt;/li&gt;
    &lt;li&gt;delete the “old” override management pack first: in the right panel select the override management pack (&lt;strong&gt;F5.Override.ManagementPack&lt;/strong&gt;), right click &amp;gt; &lt;strong&gt;Delete…&lt;/strong&gt; &lt;/li&gt;
    &lt;li&gt;clear the health service state cache related to the override management pack: open &lt;strong&gt;Windows Explorer &amp;gt; Program Files\System Center Operations Manager 2007\Health Service State\Management Packs&lt;/strong&gt; and delete the override management pack XML file (named as something like F5.OverrideManagementPack.{E0E8B7BC-E4B3-4E37-B1D5-67873CC877E6}.{743C1DA1-5328-7BE1-3681-482DE7E7133B}.xml) &lt;/li&gt;
    &lt;li&gt;import the updated override management pack: &lt;strong&gt;SCOM Management Console &amp;gt; Administration &amp;gt; Management Packs &amp;gt;&lt;/strong&gt; right click &lt;strong&gt;&amp;gt; Import Management Packs &amp;gt;&lt;/strong&gt; select the updated override management pack XML file (&lt;strong&gt;F5.Override.ManagementPack.xml&lt;/strong&gt;). &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;If you test the LTM Pool Member Aggregate Monitor at this time (stopping the IIS service on it for example), you should get an alert message similar to the one shown in Figure 8.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/OverridingAlertMonitorMessagesintheF5Man_15CB/02.jpg"&gt;&lt;img height="193" border="0" width="244" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/OverridingAlertMonitorMessagesintheF5Man_15CB/02_thumb.jpg" alt="02" title="02" style="border-width: 0px; display: inline;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure 8&lt;/strong&gt;: The custom alert message for the LTM Pool Member Aggregate Monitor override&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;In this article we went through the non-trivial task of creating an alert override featuring a custom alert message. The example presented here can be easily adapted / extended to other monitors and alerts inside SCOM 2007 and the F5 Management Pack, or other management packs. I hope you’ll find the article useful, and if you have any questions or suggestions please feel free to post them here.&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:8eb9d37f-1541-4f29-b6f4-1eea890d4876:f0ec7093-8e0d-4b4a-bacc-1eec6088fa39" style="margin: 0px; padding: 0px; display: inline; float: none;"&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div&gt;You can download the override management pack shown as an example, here: &lt;a target="_self" href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jbalog/WindowsLiveWriter/OverridingAlertMonitorMessagesintheF5Man_15CB/F5.OverrideManagementPack.xml"&gt;F5.OverrideManagementPack.xml&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/jbalog/aggbug/8051.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 07 Oct 2009 16:34:50 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/jbalog/archive/2009/10/08/overriding-alert-monitor-messages-in-the-f5-management-pack.aspx#comment</comments><slash:comments>4</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>Installing the F5 Management Pack Using the Command Line</title><link>http://devcentral.f5.com/weblogs/druddell/archive/2009/10/07/installing-the-f5-management-pack-using-the-command-line.aspx</link><description>&lt;p&gt;To start with, the F5 Networks Management Pack has been able to run from a command prompt since it’s first release.  All of the options available through the pretty user interface are actually all available using command line switches/options.  There are also a few extra options not available through the standard GUI.  I will go a little more in depth with those options, as they will be new to most of you.  &lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/druddell/WindowsLiveWriter/InstallingtheF5ManagementPackUsingtheCom_CE3C/F5MPCLI2SCOM_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 20px 10px 0px; display: inline; border-top: 0px; border-right: 0px" title="F5MPCLI2SCOM" border="0" alt="F5MPCLI2SCOM" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/druddell/WindowsLiveWriter/InstallingtheF5ManagementPackUsingtheCom_CE3C/F5MPCLI2SCOM_thumb.jpg" width="232" height="168" /&gt;&lt;/a&gt;First of all, if you open a standard command prompt in Windows, make sure you are running as a local administrator.  In Windows 2008, the easiest way to do this is by right-clicking on the “Command Prompt” icon and finding the little blue and yellow shield that says “Run as administrator” (note: you may be prompted for credentials).  From here you will want to find and run the F5Networks.ManagementPack.Setup.exe file.  My recommendation is to just drag-n-drop the downloaded file directly into the Command Prompt window, where it should automatically drop in the correct path and filename for you.  Now you are ready to add your command line options.&lt;/p&gt;  &lt;p&gt;You can find a list of all of our supported command line options by visiting our &lt;a href="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/InstallingTheF5ManagementPackFromTheCommandLine.html" target="_blank"&gt;Wiki documentation&lt;/a&gt;. The ‘new’ options you should be most interested in are the /logfile, /debuglogging, /passive and /quiet switches.  The rest of the options in the table are available through the standard user interface for the installer.  Note that if you run setup from the command prompt without the /passive or /quiet flags set, the GUI will still pop up, but now all of the fields will be populated for you to review as you step through the wizard.  The &lt;a href="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/InstallingTheF5ManagementPackFromTheCommandLine.html" target="_blank"&gt;Wiki documentation&lt;/a&gt; also has a few examples for you to follow for best results.  I personally recommend using the /passive option, as it will still give you a visual cue that installation is happening and notify you when it has completed, whereas the /quiet will run asynchronously on the system with no UI or messages of any kind.  &lt;/p&gt;  &lt;p&gt;The /logfile and /debuglogging options are very useful if you are having problems with setup and wish to troubleshoot why our software package will not install properly.  We also would need these logs if we were to help you troubleshoot, so it  is a good habit to get into.  If you have any problems trying to run setup from a command prompt, feel free to drop by the &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;afgroup=26" target="_blank"&gt;F5 Management Pack Forums&lt;/a&gt; and ask for assistance.&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/druddell/aggbug/8049.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 07 Oct 2009 05:40:37 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/druddell/archive/2009/10/07/installing-the-f5-management-pack-using-the-command-line.aspx#comment</comments><slash:comments>2</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>F5 Management Pack v1.4.1.93 Released: Globalization Support!</title><link>http://devcentral.f5.com/weblogs/druddell/archive/2009/09/30/f5-management-pack-v1.4.1.93-released-globalization-support.aspx</link><description>&lt;p&gt;Greetings everyone.  I would like to announce that the latest release of the F5 Networks Management Pack is now available on the &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=217"&gt;downloads page&lt;/a&gt;.  Direct links are available below:&lt;/p&gt;
&lt;p&gt;&lt;a title="Download x64 Version Now" href="http://devcentral.f5.com/LinkClick.aspx?link=http://devcentral.f5.com/downloads/MgmtPack/Setup/F5Networks.ManagementPack.Setup-1.4.1.93-x64.zip&amp;amp;tabid=73&amp;amp;mid=3221"&gt;Download F5 Networks Management Pack v1.4.1.93 x64 Version Now&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title="Download x86 Version Now" href="http://devcentral.f5.com/LinkClick.aspx?link=http://devcentral.f5.com/downloads/MgmtPack/Setup/F5Networks.ManagementPack.Setup-1.4.1.93-x86.zip&amp;amp;tabid=73&amp;amp;mid=3221"&gt;Download F5 Networks Management Pack v1.4.1.93 x86 Version Now&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;With this latest release of the Management Pack, we have added globalization support to our software, which allows us to support localized copies of Windows Server 2003 &amp;amp; 2008 R2, SQL Server 2005 SP2 &amp;amp; 2008, and Systems Center Operations Manager 2007 SP1 &amp;amp; R2.  While our software support installation into these localized environments, we still do not have a language pack or localized resources.  This just means that all dialogs and information will still be in English.&lt;/p&gt;
&lt;p&gt;If you have any questions or complaints, feel free to visit our support forum &lt;font face="Arial"&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;view=topics&amp;amp;forumid=59"&gt;here.&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/druddell/aggbug/8036.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 30 Sep 2009 07:23:03 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/druddell/archive/2009/09/30/f5-management-pack-v1.4.1.93-released-globalization-support.aspx#comment</comments><slash:comments>2</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>Statistics Collection and Management Pack Scalability</title><link>http://devcentral.f5.com/weblogs/jhendrickson/archive/2009/09/18/statistics-collection-and-management-pack-scalability.aspx</link><description>&lt;p&gt;We’ve had several folks ask about how the Management Pack scales and how to determine what kind of hardware is needed when monitoring large numbers of Big-IPs. This article will outline how to tune statistics collection in the Management Pack to best suite your needs and available hardware.&lt;/p&gt;  &lt;p&gt;Keep in mind that Operations Manager and SQL Server have countless ways to optimize performance and that those options should be reviewed first as they potentially will make much more of a difference that just tuning the F5 Management Pack. One example is that your Data Warehouse should be running on a separate server that is optimized for SQL Server (such as having data and logs on separate disks).&lt;/p&gt;  &lt;p&gt;Once your general infrastructure is optimized, it’s time to consider which performance metrics you’d like to gather. By default only the global (device level) stats are collected but you can turn on collection for CPUs, Nodes, Pool Members, etc. Please see the &lt;a href="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/PerformanceCollectionAndMonitoring.html"&gt;Performance Collecting and Monitoring topic&lt;/a&gt; for exactly how to turn on statistics collections. &lt;/p&gt;  &lt;p&gt;In our testing we’ve found that a single Operations Manager management server running on a Dell 2950 can handle up to 250 statistics/sec from monitoring Big-IPs. I would recommend trying to shoot for a lower number than that so that you have some CPU cycles left for monitoring other types of objects in your network and handling non-OpsMgr tasks.&lt;/p&gt;  &lt;p&gt;So let’s assume that we don’t want to go above 150 stats/sec for each management server. You can use the following table to calculate how many stats/sec you will generate by turning on the various categories of statistics:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="0" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td width="178"&gt;&lt;strong&gt;Type of Statistic&lt;/strong&gt;&lt;/td&gt;        &lt;td width="93"&gt;&lt;strong&gt;# of Stats&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;Global (Device)&lt;/td&gt;        &lt;td&gt;49&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;CPU&lt;/td&gt;        &lt;td&gt;3&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;Chassis&lt;/td&gt;        &lt;td&gt;1&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;Partition&lt;/td&gt;        &lt;td&gt;5&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;Trunk&lt;/td&gt;        &lt;td&gt;9&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;Interface&lt;/td&gt;        &lt;td&gt;9&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;LtmNode&lt;/td&gt;        &lt;td&gt;7&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;LtmVirtualServer&lt;/td&gt;        &lt;td&gt;7&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;LtmPool&lt;/td&gt;        &lt;td&gt;7&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;LtmPoolMember&lt;/td&gt;        &lt;td&gt;7&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;GtmDataCenter&lt;/td&gt;        &lt;td&gt;7&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;GtmServer&lt;/td&gt;        &lt;td&gt;7&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;GtmVirtualServer&lt;/td&gt;        &lt;td&gt;7&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;GtmWideIP&lt;/td&gt;        &lt;td&gt;4&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;GtmPool&lt;/td&gt;        &lt;td&gt;3&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;GtmPoolVirtualServer&lt;/td&gt;        &lt;td&gt;3&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;As I mentioned only the Global stats are turned on by default and are collected every 2 minutes, so out-of-the-box stats/sec when monitoring 2 Big-IPs can be calculated  as such:&lt;/p&gt;  &lt;p&gt;((2 Big-IP * 49 stats) / 120 seconds) = .8 stats/sec&lt;/p&gt;  &lt;p&gt;Now let’s suppose you want to turn on stats for Pool Members, and each Big-IP has 20 pool members. The additional stat load would be the following:&lt;/p&gt;  &lt;p&gt;(2 Big-IP * 20 Pool Members Each * 7 stats per pool member) / 120 seconds = 23 stats/sec&lt;/p&gt;  &lt;p&gt;We now would be collecting a grand total of 23.8 stats/sec – still lots of room to grow! Armed with this methodology for calculating load, you can now balance your need for each kind of statistic against the load it will put  on the management server. &lt;/p&gt;  &lt;p&gt;One way to determine for sure how many stats/sec are currently being generated is to view the various F5 counters that are installed in the Windows Performance Monitor. &lt;/p&gt;  &lt;p&gt;For more detailed information on which stats are collected, please see the &lt;a href="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/BigIPHealthModel.html"&gt;health model wiki page&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/jhendrickson/aggbug/6120.aspx" width="1" height="1" /&gt;</description><pubDate>Fri, 18 Sep 2009 08:12:35 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/jhendrickson/archive/2009/09/18/statistics-collection-and-management-pack-scalability.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Create F5 Management Pack Rule Overrides with PowerShell</title><link>http://devcentral.f5.com/weblogs/jbalog/archive/2009/09/14/create-f5-management-pack-rule-overrides-with-powershell.aspx</link><description>&lt;p&gt;With this article we'll initiate a series of PowerShell automation topics focused on the F5 Management Pack and Microsoft System Center Operations Manager 2007.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;strong&gt;1. Overview&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In this blog I will write about creating rule overrides in System Center Operations Manager (SCOM) 2007, using Windows Powershell. Although the code samples specifically target creating rule overrides defined within the F5 Management Pack, you can easily adapt the implementation with minimal changes, for targeting rule overrides within any SCOM 2007 management pack. The code was implemented using PowerShell 1.0 and the samples have been tested with SCOM 2007 SP1 and R2.&lt;/p&gt;
&lt;p&gt;Before we go into the details, make sure you get familiar with the way rule overrides are created within the F5 Management Pack, following the F5 DevCentral article about &lt;a href="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/PerformanceCollectionAndMonitoring.html"&gt;Performance Collection and Monitoring&lt;/a&gt;. Attached to this blog you’ll find a small PowerShell utility library which you’ll need to download in order to test with the code samples described in this article.&lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;The code samples presented in this article assume that you have installed Microsoft System Center Operations Manager 2007 (SP1 or R2) and the F5 Management Pack on your system.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Implementation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Bellow is the source code of the PowerShell utility library implementing the functionality for creating rule overrides, described in this post. You can copy / paste this code "as-is" into a PowerShell library file. This file would be referenced in any script using the functions defined in this library. Let's name this file F5MpUtils.ps1for our reference here, in this article.&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 1024px; cursor: text; direction: ltr; height: 200px; line-height: 12pt; font-family: 'Courier New',courier,monospace; background-color: rgb(244, 244, 244); text-align: left;"&gt;
&lt;pre id="codeSnippet" style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; direction: ltr; line-height: 12pt; font-family: 'Courier New',courier,monospace; background-color: rgb(244, 244, 244); text-align: left;"&gt;# ***********************************************************************************&lt;br /&gt;# * F5 Management Pack PowerShell Utility Library 1.0&lt;br /&gt;# *&lt;br /&gt;# * System requirements:&lt;br /&gt;# *     SCOM 2007 SP1 or later&lt;br /&gt;# *     F5 Management Pack&lt;br /&gt;# ***********************************************************************************&lt;br /&gt;Add-PSSnapin &lt;span style="color: rgb(0, 96, 128);"&gt;"Microsoft.EnterpriseManagement.OperationsManager.Client"&lt;/span&gt; -ErrorAction SilentlyContinue&lt;br /&gt;Add-PSSnapin &lt;span style="color: rgb(0, 96, 128);"&gt;"F5.Networks.ManagementPack"&lt;/span&gt; -ErrorAction SilentlyContinue&lt;br /&gt;Add-PSSnapin &lt;span style="color: rgb(0, 96, 128);"&gt;"F5.Networks.iControl"&lt;/span&gt; -ErrorAction SilentlyContinue&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 51);"&gt;#region&lt;/span&gt; Private Constants&lt;br /&gt;&lt;br /&gt;# the ID of the F5 Management Pack &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; SCOM&lt;br /&gt;$F5ManagementPackName = &lt;span style="color: rgb(0, 96, 128);"&gt;"F5_ManagementPack"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;# F5 &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; management pack&lt;br /&gt;$F5OverrideMpName = &lt;span style="color: rgb(0, 96, 128);"&gt;"F5_Override_ManagementPack"&lt;/span&gt;;&lt;br /&gt;$F5OverrideMpDisplayName = &lt;span style="color: rgb(0, 96, 128);"&gt;"F5 Override Management Pack"&lt;/span&gt;;&lt;br /&gt;$F5OverrideMpDescription = &lt;span style="color: rgb(0, 96, 128);"&gt;"Hosts various overrides for the F5 Management Pack"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# F5 Management Pack classes&lt;br /&gt;$F5MonitoringServiceClass = &lt;span style="color: rgb(0, 96, 128);"&gt;"F5.MonitoringService"&lt;/span&gt;;&lt;br /&gt;$F5DeviceClass = &lt;span style="color: rgb(0, 96, 128);"&gt;"F5.Device"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;# &lt;span style="color: rgb(0, 0, 255);"&gt;default&lt;/span&gt; language code used &lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt; the &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; management pack&lt;br /&gt;$DefaultLanguageCode = &lt;span style="color: rgb(0, 96, 128);"&gt;"ENU"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 51);"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 51);"&gt;#region&lt;/span&gt; Private Fields&lt;br /&gt;&lt;br /&gt;# the F5 Management Pack &lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt;&lt;br /&gt;[Microsoft.EnterpriseManagement.Configuration.ManagementPack] $&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt;:f5Mp;&lt;br /&gt;&lt;br /&gt;# the SCOM Management Group&lt;br /&gt;[Microsoft.EnterpriseManagement.ManagementGroup] $&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt;:mgmtGroup;&lt;br /&gt;&lt;br /&gt;# SCOM installation folder&lt;br /&gt;[&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;] $&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt;:scomInstallDir;&lt;br /&gt;&lt;br /&gt;# SCOM SDK host&lt;br /&gt;[&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;] $&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt;:scomSdkHost;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 51);"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 51);"&gt;#region&lt;/span&gt; Private Helper Functions&lt;br /&gt;&lt;br /&gt;# ***********************************************************************************&lt;br /&gt;# Initializes various fields needed by &lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt; utility library.&lt;br /&gt;# ***********************************************************************************&lt;br /&gt;function Initialize()&lt;br /&gt;{&lt;br /&gt;    # get the SCOM installation folder from the registry&lt;br /&gt;    $script:scomInstallDir = $(Get-ItemProperty &lt;span style="color: rgb(0, 96, 128);"&gt;"HKLM:\SOFTWARE\Microsoft\Microsoft Operations Manager\3.0\Setup"&lt;/span&gt;).InstallDirectory;&lt;br /&gt;    &lt;br /&gt;    # get the SCOM SDK host from the registry&lt;br /&gt;    $script:scomSdkHost = $(Get-ItemProperty &lt;span style="color: rgb(0, 96, 128);"&gt;"HKLM:\SOFTWARE\Microsoft\Microsoft Operations Manager\3.0\Machine Settings"&lt;/span&gt;).DefaultSDKServiceMachine;&lt;br /&gt;    &lt;br /&gt;    # get the Management Group Connection (&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; any) to the SDK service&lt;br /&gt;    $mgc = Get-ManagementGroupConnection | Where-Object {$_.ManagementServerName -eq $scomSdkHost};&lt;br /&gt;    &lt;br /&gt;    # &lt;span style="color: rgb(0, 0, 255);"&gt;do&lt;/span&gt; we have a valide Management Group Connection?&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; ($mgc -eq $&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;)&lt;br /&gt;    {&lt;br /&gt;        # create a &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Management Group Connection&lt;br /&gt;        New-ManagementGroupConnection $scomSdkHost -ErrorAction SilentlyContinue -ErrorVariable Err;&lt;br /&gt;&lt;br /&gt;        # check &lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt; errors&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; ($Err) { $(&lt;span style="color: rgb(0, 0, 255);"&gt;throw&lt;/span&gt; Write-Host $Err); }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    # get the Management Group from the Management Group connection&lt;br /&gt;    $mg = $mgc.ManagementGroup;&lt;br /&gt;    &lt;br /&gt;    # get the F5 Management Pack&lt;br /&gt;    $script:f5Mp = GetManagementPack($F5ManagementPackName);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# ***********************************************************************************&lt;br /&gt;# Creates a SCOM Management Pack by name.&lt;br /&gt;#    $name = the name of the Management Pack.&lt;br /&gt;#    $displayName = the friendly name of the Management Pack.&lt;br /&gt;# ***********************************************************************************&lt;br /&gt;function CreateManagementPack([&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;] $name, [&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;] $displayName)&lt;br /&gt;{&lt;br /&gt;    # attempt to get the Management Pack&lt;br /&gt;    $mp = GetManagementPack($name);&lt;br /&gt;&lt;br /&gt;    # check &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; the management pack exists&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; ($mp -eq $&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;)&lt;br /&gt;    {&lt;br /&gt;        $mpStore = New-Object Microsoft.EnterpriseManagement.Configuration.IO.ManagementPackFileStore;&lt;br /&gt;        $mpStore.AddDirectory($scomInstallDir);&lt;br /&gt;        &lt;br /&gt;        $mp = New-Object Microsoft.EnterpriseManagement.Configuration.ManagementPack($name, $displayName, (New-Object Version(1, 0, 0)), $mpStore);&lt;br /&gt;        $mgmtGroup.ImportManagementPack($mp);&lt;br /&gt;        &lt;br /&gt;        $mpXmlWriter = New-Object Microsoft.EnterpriseManagement.Configuration.IO.ManagementPackXmlWriter($scomInstallDir);&lt;br /&gt;        &lt;br /&gt;        # write the management pack xml file and make sure to clear any output before returning&lt;br /&gt;        $mpXmlWriter.WriteManagementPack($mp) | Out-Null;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    $mp;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# ***********************************************************************************&lt;br /&gt;# Gets a SCOM Management Pack by name.&lt;br /&gt;#    $name = the name of the Management Pack.&lt;br /&gt;# ***********************************************************************************&lt;br /&gt;function GetManagementPack([&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;] $name, [&lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;] $force = $&lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;       # make sure the Management Group &lt;span style="color: rgb(0, 0, 255);"&gt;is&lt;/span&gt; still connected&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (!$mgmtGroup.IsConnected)&lt;br /&gt;       {&lt;br /&gt;        $mgmtGroup.Reconnect();&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;    $criteria = [&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;]::Format(&lt;span style="color: rgb(0, 96, 128);"&gt;"Name = '{0}'"&lt;/span&gt;, $name);&lt;br /&gt;    $mpCriteria = New-Object Microsoft.EnterpriseManagement.Configuration.ManagementPackCriteria($criteria);&lt;br /&gt;       $mgc = Get-ManagementGroupConnection;&lt;br /&gt;       $script:mgmtGroup = (Get-ManagementGroupConnection).ManagementGroup;&lt;br /&gt;&lt;br /&gt;       $mp = $mgmtGroup.GetManagementPacks($mpCriteria)[0];&lt;br /&gt;    &lt;br /&gt;       &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; $mp;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# ***********************************************************************************&lt;br /&gt;# * Creates a rule &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt;.&lt;br /&gt;# *        $name = the name of the rule to &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt;&lt;br /&gt;# *        $sourceClass = the monitoring &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt; of to the rule to be overriden&lt;br /&gt;# *        $targetClass = the monitoring &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt; / context of the rule &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt;&lt;br /&gt;# *        $parameters = the parameters to &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; (hashtable)&lt;br /&gt;# *        $enforce = flags the forced state of the rule &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt;&lt;br /&gt;# *     $languageCode = the language code used &lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt; the &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; management pack&lt;br /&gt;# ***********************************************************************************&lt;br /&gt;function CreateRuleOverride(&lt;br /&gt;    [&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;] $name,&lt;br /&gt;    [&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;] $sourceClass = $F5MonitoringServiceClass,&lt;br /&gt;    [&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;] $targetClass,&lt;br /&gt;    [hashtable] $parameters,&lt;br /&gt;    [&lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;] $enforce = $&lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;,&lt;br /&gt;    [&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;] $languageCode = $DefaultLanguageCode)&lt;br /&gt;{&lt;br /&gt;    # validate parameters&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (($parameters -eq $&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;) -or ($parameters.Count -eq 0))&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;throw&lt;/span&gt; &lt;span style="color: rgb(0, 96, 128);"&gt;"Enter a hashtable with the override rule parameters."&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    # create the &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; management pack (&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; necessary)&lt;br /&gt;    $f5OverrideMp = CreateManagementPack -name $F5OverrideMpName -displayName $F5OverrideMpDisplayName;&lt;br /&gt;&lt;br /&gt;    # create the criterias to search &lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt;&lt;br /&gt;    $sourceClassCriteria = New-Object Microsoft.EnterpriseManagement.Configuration.MonitoringClassCriteria($(&lt;span style="color: rgb(0, 96, 128);"&gt;"Name='{0}'"&lt;/span&gt; -f $sourceClass));&lt;br /&gt;    $targetClassCriteria = New-Object Microsoft.EnterpriseManagement.Configuration.MonitoringClassCriteria($(&lt;span style="color: rgb(0, 96, 128);"&gt;"Name='{0}'"&lt;/span&gt; -f $targetClass));&lt;br /&gt;    &lt;br /&gt;    # get the monitoring classes featured by the rule &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt;&lt;br /&gt;    $sourceMonitoringClass = $mgmtGroup.GetMonitoringClasses($sourceClassCriteria)[0];&lt;br /&gt;    $targetMonitoringClass = $mgmtGroup.GetMonitoringClasses($targetClassCriteria)[0];&lt;br /&gt;&lt;br /&gt;    # create the rule criteria based on display name&lt;br /&gt;    $ruleCriteria = New-Object Microsoft.EnterpriseManagement.Configuration.MonitoringRuleCriteria($(&lt;span style="color: rgb(0, 96, 128);"&gt;"DisplayName='{0}'"&lt;/span&gt; -f $name));&lt;br /&gt;    &lt;br /&gt;    # get the rule to &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt;&lt;br /&gt;    $rule = $sourceMonitoringClass.GetMonitoringRules($ruleCriteria)[0];&lt;br /&gt;    &lt;br /&gt;    # cast some of the generic types needed by the rule &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; properties &lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt; reflection (::op_Implicit())&lt;br /&gt;    # (&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;is&lt;/span&gt; apparently the only way to perform valid casts on types implementing the &lt;span style="color: rgb(0, 0, 255);"&gt;implicit&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;operator&lt;/span&gt;)&lt;br /&gt;    $rule = [Microsoft.EnterpriseManagement.Configuration.ManagementPackElementReference``1[Microsoft.EnterpriseManagement.Configuration.ManagementPackRule]]::op_Implicit($rule);&lt;br /&gt;    $sourceMonitoringClass = [Microsoft.EnterpriseManagement.Configuration.ManagementPackElementReference``1[Microsoft.EnterpriseManagement.Configuration.ManagementPackClass]]::op_Implicit($sourceMonitoringClass);&lt;br /&gt;    $targetMonitoringClass = [Microsoft.EnterpriseManagement.Configuration.ManagementPackElementReference``1[Microsoft.EnterpriseManagement.Configuration.ManagementPackClass]]::op_Implicit($targetMonitoringClass);&lt;br /&gt;    &lt;br /&gt;    # look &lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt; the &lt;span style="color: rgb(0, 96, 128);"&gt;"Enabled"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; parameter (&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; any)&lt;br /&gt;    $enabled = $parameters[&lt;span style="color: rgb(0, 96, 128);"&gt;"Enabled"&lt;/span&gt;];&lt;br /&gt;    &lt;br /&gt;    # &lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt; the &lt;span style="color: rgb(0, 96, 128);"&gt;"Enabled"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; parameter we create a rule property &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (($enabled -ne $&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;) -and ($enabled.ToString().ToLower() -eq &lt;span style="color: rgb(0, 96, 128);"&gt;"true"&lt;/span&gt;))&lt;br /&gt;    {&lt;br /&gt;        # create the rule property &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt;&lt;br /&gt;        $ruleOverrideDisplayName = $(&lt;span style="color: rgb(0, 96, 128);"&gt;"{0} Property Override"&lt;/span&gt; -f $name);&lt;br /&gt;        $ruleOverrideName = $ruleOverrideDisplayName.Replace(&lt;span style="color: rgb(0, 96, 128);"&gt;" "&lt;/span&gt;, [String]::Empty);&lt;br /&gt;        $ruleOverride = New-Object Microsoft.EnterpriseManagement.Configuration.ManagementPackRulePropertyOverride($f5OverrideMp, $ruleOverrideName);&lt;br /&gt;        &lt;br /&gt;        # set the rule &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; parameters&lt;br /&gt;        $ruleOverride.Rule = $rule;&lt;br /&gt;        $ruleOverride.Property = [Microsoft.EnterpriseManagement.Configuration.ManagementPackWorkflowProperty]::Enabled;&lt;br /&gt;        $ruleOverride.Value = $enable.ToString().ToLower();&lt;br /&gt;        $ruleOverride.Context = $sourceMonitoringClass;&lt;br /&gt;        $ruleOverride.LanguageCode = $languageCode;&lt;br /&gt;        $ruleOverride.Enforced = $enforce.ToString().ToLower();&lt;br /&gt;        $ruleOverride.DisplayName = $ruleOverrideDisplayName;&lt;br /&gt;        &lt;br /&gt;        # remove the &lt;span style="color: rgb(0, 96, 128);"&gt;"Enabled"&lt;/span&gt; parameter from our hashtable &lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt; further processing&lt;br /&gt;        $parameters.Remove(&lt;span style="color: rgb(0, 96, 128);"&gt;"Enabled"&lt;/span&gt;);&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    # &lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt; the rest of the rule &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; parameters create a rule configuration &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; ($parameters.Count -gt 0)&lt;br /&gt;    {&lt;br /&gt;        # create the rule configuration &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt;&lt;br /&gt;        $ruleConfigOverrideDisplayName = $(&lt;span style="color: rgb(0, 96, 128);"&gt;"{0} Configuration Override"&lt;/span&gt; -f $name);&lt;br /&gt;        $ruleConfigOverrideName = $ruleConfigOverrideDisplayName.Replace(&lt;span style="color: rgb(0, 96, 128);"&gt;" "&lt;/span&gt;, [String]::Empty);&lt;br /&gt;        $ruleConfigOverride = New-Object Microsoft.EnterpriseManagement.Configuration.ManagementPackRuleConfigurationOverride($f5OverrideMp, $ruleConfigOverrideName);&lt;br /&gt;        &lt;br /&gt;        # set the rule configuration &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; parameters&lt;br /&gt;        $ruleConfigOverride.Rule = $rule;&lt;br /&gt;    &lt;br /&gt;        # iterate through the parameter hashtable to set &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; parameters / values&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; ($key &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; $parameters.Keys)&lt;br /&gt;        {&lt;br /&gt;            $ruleConfigOverride.Parameter = $key;&lt;br /&gt;            $ruleConfigOverride.Value = $parameters[$key];&lt;br /&gt;        }&lt;br /&gt;    &lt;br /&gt;        $ruleConfigOverride.Module = &lt;span style="color: rgb(0, 96, 128);"&gt;"DataSource"&lt;/span&gt;;&lt;br /&gt;        $ruleConfigOverride.Context = $targetMonitoringClass;&lt;br /&gt;        $ruleConfigOverride.LanguageCode = $languageCode;&lt;br /&gt;        $ruleConfigOverride.Enforced = $enforce.ToString().ToLower();&lt;br /&gt;        $ruleConfigOverride.DisplayName = $ruleConfigOverrideDisplayName;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    # verify the changes &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; the &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; management pack&lt;br /&gt;    $f5OverrideMp.Verify();&lt;br /&gt;    &lt;br /&gt;    # save the changes into the &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; management pack&lt;br /&gt;    $f5OverrideMp.AcceptChanges();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 51);"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 51);"&gt;#region&lt;/span&gt; Script Run&lt;br /&gt;&lt;br /&gt;# initialize library&lt;br /&gt;Initialize&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 51);"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;p&gt;The function responsible for implementing the rule override functionality has the prototype shown in the code snippet bellow:&lt;br /&gt;
&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 1024px; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; font-family: 'Courier New',courier,monospace; background-color: rgb(244, 244, 244); text-align: left;"&gt;
&lt;pre id="codeSnippet" style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; direction: ltr; line-height: 12pt; font-family: 'Courier New',courier,monospace; background-color: rgb(244, 244, 244); text-align: left;"&gt;function CreateRuleOverride(&lt;br /&gt;    [&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;] $name,&lt;br /&gt;    [&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;] $sourceClass = $F5MonitoringServiceClass,&lt;br /&gt;    [&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;] $targetClass,&lt;br /&gt;    [hashtable] $parameters,&lt;br /&gt;    [&lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;] $enforce = $&lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;,&lt;br /&gt;    [&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;] $languageCode = $DefaultLanguageCode)&lt;/pre&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;p&gt;As you can see, the rule override gets created based on:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;the name of the rule to be overriden ($name);&lt;/li&gt;
    &lt;li&gt;the monitoring class associated with the rule to be overriden ($sourceClass);&lt;/li&gt;
    &lt;li&gt;the target monitoring class / context of the rule override ($targetClass);&lt;/li&gt;
    &lt;li&gt;the parameters of the rule to be overriden, as a hashtable ($parameters).&lt;/li&gt;
&lt;/ul&gt;
All of the F5 Management Pack rules are associated with the &lt;span style="font-weight: bold;"&gt;F5.MonitoringService&lt;/span&gt; monitoring class. Rule overrides for the F5 Management Pack would usually target the &lt;span style="font-weight: bold;"&gt;F5.Device&lt;/span&gt; monitoring class (as most of the objects defined within the F5 Management Pack are derived from &lt;span style="font-weight: bold;"&gt;F5.Device&lt;/span&gt;).&lt;br /&gt;
&lt;br /&gt;
The implementation of the &lt;span style="font-weight: bold;"&gt;CreateRuleOverride()&lt;/span&gt; function is relatively simple, and goes by creating the override management pack (for hosting the rule overrides), if it's not already created. We named this override management pack F5_Override_ManagementPack, but you can name it any way you like (by changing the &lt;span style="font-weight: bold;"&gt;$F5OverrideMpName&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;$F5OverrideMpDisplayName&lt;/span&gt; constants in the library script).
&lt;div style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 1024px; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; font-family: 'Courier New',Courier,Monospace; background-color: rgb(244, 244, 244); text-align: left;" id="codeSnippetWrapper"&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; direction: ltr; line-height: 12pt; font-family: 'Courier New',Courier,Monospace; background-color: rgb(244, 244, 244); text-align: left;" id="codeSnippet"&gt;# create the &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; management pack (&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; necessary)&lt;br /&gt;$f5OverrideMp = CreateManagementPack -name $F5OverrideMpName -displayName $F5OverrideMpDisplayName;&lt;br /&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;/div&gt;
The next step is to get the rule we need to override. This is done by creating a criteria based on the name of the rule (&lt;span style="font-weight: bold;"&gt;$ruleCriteria&lt;/span&gt;) and filter the monitoring classes on the local management group based on this criteria.&lt;br /&gt;
&lt;div style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 1024px; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; font-family: 'Courier New',Courier,Monospace; background-color: rgb(244, 244, 244); text-align: left;" id="codeSnippetWrapper"&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; direction: ltr; line-height: 12pt; font-family: 'Courier New',Courier,Monospace; background-color: rgb(244, 244, 244); text-align: left;" id="codeSnippet"&gt;# get the rule to &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt;&lt;br /&gt;$rule = $sourceMonitoringClass.GetMonitoringRules($ruleCriteria)[0];&lt;br /&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;/div&gt;
The only challenging part in implementing the PowerShell script for creating the rule override was to correctly cast the rule and rule override context objects, which are defined as generic types inside SCOM derived from the &lt;span style="font-weight: bold;"&gt;Management PackElementReference&amp;lt;T&amp;gt;&lt;/span&gt; object, which also has an implicit operator. The code snippet bellow illustrates the class definition for the &lt;span style="font-weight: bold;"&gt;ManagementPackElementReference&amp;lt;T&amp;gt;&lt;/span&gt; object in .NET (as C# code):&lt;br /&gt;
&lt;div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 1024px; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; font-family: 'Courier New',Courier,Monospace; background-color: rgb(244, 244, 244); text-align: left;"&gt;
&lt;pre id="codeSnippet" style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; direction: ltr; line-height: 12pt; font-family: 'Courier New',Courier,Monospace; background-color: rgb(244, 244, 244); text-align: left;"&gt;[Serializable]&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt; ManagementPackElementReference&amp;lt;T&amp;gt; &lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt; T : Microsoft.EnterpriseManagement.Configuration.ManagementPackElement&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;implicit&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;operator&lt;/span&gt; ManagementPackElementReference&amp;lt;T&amp;gt;(T t);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; Guid Id { get; }&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; Name { get; }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt; Equals(&lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt; obj);&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; T GetElement();&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; GetHashCode();&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; ToString();&lt;br /&gt;}&lt;/pre&gt;
&lt;/div&gt;
The difficulty using this type of object in PowerShell comes when tyring to perform either an implicit or explicit cast on the object, trying to match the exact type we're using it for, in particular when assigning the rule and context objects (follow the code snippets bellow). Because of the implicit operator, PowerShell is not able to find the appropriate cast, and throws an "invalid cast" exception.&lt;br /&gt;
&lt;br /&gt;
The code snippet bellow uses .NET reflection to call the &lt;span style="font-weight: bold;"&gt;op_implicit()&lt;/span&gt; method (the equivalent of the implicit operator declaration) on the generic type we need to cast:&lt;br /&gt;
&lt;div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 1024px; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; font-family: 'Courier New',Courier,Monospace; background-color: rgb(244, 244, 244); text-align: left;"&gt;
&lt;pre id="codeSnippet" style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; direction: ltr; line-height: 12pt; font-family: 'Courier New',Courier,Monospace; background-color: rgb(244, 244, 244); text-align: left;"&gt;# cast some of the generic types needed by the rule &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; properties &lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt; reflection (::op_Implicit())&lt;br /&gt;# (&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;is&lt;/span&gt; apparently the only way to perform valid casts on types implementing the &lt;span style="color: rgb(0, 0, 255);"&gt;implicit&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;operator&lt;/span&gt;)&lt;br /&gt;$rule = [Microsoft.EnterpriseManagement.Configuration.ManagementPackElementReference``1[Microsoft.EnterpriseManagement.Configuration.ManagementPackRule]]::op_Implicit($rule);&lt;br /&gt;$sourceMonitoringClass = [Microsoft.EnterpriseManagement.Configuration.ManagementPackElementReference``1[Microsoft.EnterpriseManagement.Configuration.ManagementPackClass]]::op_Implicit($sourceMonitoringClass);&lt;br /&gt;$targetMonitoringClass = [Microsoft.EnterpriseManagement.Configuration.ManagementPackElementReference``1[Microsoft.EnterpriseManagement.Configuration.ManagementPackClass]]::op_Implicit($targetMonitoringClass);&lt;br /&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
This way assigning the override rule properties to the appropriate type would succeed:&lt;br /&gt;
&lt;div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 1024px; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; font-family: 'Courier New',Courier,Monospace; background-color: rgb(244, 244, 244); text-align: left;"&gt;
&lt;pre id="codeSnippet" style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; direction: ltr; line-height: 12pt; font-family: 'Courier New',Courier,Monospace; background-color: rgb(244, 244, 244); text-align: left;"&gt;# set the rule &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; parameters&lt;br /&gt;&lt;span style="font-weight: bold; background-color: rgb(255, 255, 153);"&gt;$ruleOverride.Rule = $rule;&lt;/span&gt;&lt;br /&gt;$ruleOverride.Property = [Microsoft.EnterpriseManagement.Configuration.ManagementPackWorkflowProperty]::Enabled;&lt;br /&gt;$ruleOverride.Value = $enable.ToString().ToLower();&lt;br /&gt;&lt;span style="font-weight: bold; background-color: rgb(255, 255, 153);"&gt;$ruleOverride.Context = $sourceMonitoringClass;&lt;/span&gt;&lt;br /&gt;$ruleOverride.LanguageCode = $languageCode;&lt;br /&gt;$ruleOverride.Enforced = $enforce.ToString().ToLower();&lt;br /&gt;$ruleOverride.DisplayName = $ruleOverrideDisplayName;&lt;br /&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;/div&gt;
Finally, we verify and seal the changes made in the override management pack:&lt;br /&gt;
&lt;div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 1024px; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; font-family: 'Courier New',Courier,Monospace; background-color: rgb(244, 244, 244); text-align: left;"&gt;
&lt;pre id="codeSnippet" style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; direction: ltr; line-height: 12pt; font-family: 'Courier New',Courier,Monospace; background-color: rgb(244, 244, 244); text-align: left;"&gt;# verify the changes &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; the &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; management pack&lt;br /&gt;$f5OverrideMp.Verify();&lt;br /&gt;&lt;br /&gt;# save the changes into the &lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt; management pack&lt;br /&gt;$f5OverrideMp.AcceptChanges();&lt;/pre&gt;
&lt;br /&gt;
&lt;/div&gt;
Keep in mind that the implementation of creating the rule override, closely follows the article about the rule overrides mentioned in &lt;a href="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/PerformanceCollectionAndMonitoring.html"&gt;Performance Collection and Monitoring&lt;/a&gt;.
&lt;p&gt;&lt;strong&gt;3. Usage&lt;/strong&gt;&lt;/p&gt;
In the following example we create a rule override for the "LTM Virtual Server Client Current Connections" rule in the F5 Management Pack. This rule is not enabled by default and it represents a statistics collection rule. The rule override will enable this rule and will set the collection interval to 120 seconds.&lt;br /&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 1024px; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; font-family: 'Courier New',courier,monospace; background-color: rgb(244, 244, 244); text-align: left;"&gt;
&lt;pre id="codeSnippet" style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; direction: ltr; line-height: 12pt; font-family: 'Courier New',courier,monospace; background-color: rgb(244, 244, 244); text-align: left;"&gt;# add a reference to the utility library&lt;br /&gt;. C:\Samples\F5MpUtils.ps1&lt;br /&gt;&lt;br /&gt;CreateRuleOverride -name &lt;span style="color: rgb(0, 96, 128);"&gt;"LTM Virtual Server Client Current Connections"&lt;/span&gt; -targetClass &lt;span style="color: rgb(0, 96, 128);"&gt;"F5.Device"&lt;/span&gt; -parameters @{&lt;span style="color: rgb(0, 96, 128);"&gt;"Enabled"&lt;/span&gt; = &lt;span style="color: rgb(0, 96, 128);"&gt;"true"&lt;/span&gt;; &lt;span style="color: rgb(0, 96, 128);"&gt;"Interval"&lt;/span&gt; = &lt;span style="color: rgb(0, 96, 128);"&gt;"120"&lt;/span&gt;};&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;4. Conclusion&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The F5 Management Pack supports full automation using PowerShell for managing F5 devices using Microsoft System Center Operations Manager (SCOM) 2007. Most of the functionality exposed through the SCOM SDK can be mirrored through PowerShell when implementing various administrative and maintenance tasks. Some challenge in implementing / translating the various APIs in PowerShell may rise when dealing with special types (such as generics, or types defined by implicit operators), but .NET reflection would come to the rescue.&lt;br /&gt;
&lt;br /&gt;
We'll be continuing our series with posting articles on F5 Management Pack and SCOM 2007 integration with PowerShell and any feedback related to this topic is greatly appreciated.&lt;br /&gt;
&lt;br /&gt;
A special thanks goes to Marc Cauchy who assisted with some fine details in authoring the PowerShell scripts presented in this post.&lt;img src="http://devcentral.f5.com/weblogs/jbalog/aggbug/6109.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 14 Sep 2009 09:15:01 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/jbalog/archive/2009/09/14/create-f5-management-pack-rule-overrides-with-powershell.aspx#comment</comments><slash:comments>8</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>Datacenter Orchestration Scenarios Now Available</title><link>http://devcentral.f5.com/weblogs/druddell/archive/2009/08/28/data-center-orchestration-scenarios-now-available.aspx</link><description>&lt;p&gt;For the past couple of months, fellow developer &lt;a href="http://devcentral.f5.com/weblogs/jhendrickson"&gt;Joel Hendrickson&lt;/a&gt; has been working on some fairly impressive data center orchestration demonstration scenarios.  These automated demos really show the true potential of the &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=214"&gt;F5 Networks Management Pack&lt;/a&gt; when combined with &lt;a href="http://www.microsoft.com/systemcenter/operationsmanager/en/us/default.aspx"&gt;Systems Center Operations Manager&lt;/a&gt; (SCOM) and &lt;a href="http://www.microsoft.com/systemcenter/virtualmachinemanager/en/us/default.aspx"&gt;Virtual Machine Manager&lt;/a&gt; (VMM).&lt;/p&gt;  &lt;p&gt;Joel has combined the technologies above into a series of scripts and recovery actions that automate the process of spinning up and down resources such as web servers, disabling and enabling pool members when put into maintenance mode inside of Ops Manager, and failing over the active member of a redundant F5 pair based on health or statistics, as opposed to network or hardware failure.&lt;/p&gt;  &lt;p&gt;Here are the scenarios:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Add / Remove Resource:&lt;/strong&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/DCOAddRemoveResourcesScenario.html"&gt;Documentation&lt;/a&gt; | &lt;a href="http://vimeo.com/6211860"&gt;Add Video&lt;/a&gt; | &lt;a href="http://vimeo.com/6211932"&gt;Remove Video&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/DCOAddRemoveResourcesHowTo.html"&gt;How-To&lt;/a&gt; | &lt;a href="http://vimeo.com/6215540"&gt;How-To Video&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;&lt;strong&gt;Maintenance Mode:&lt;/strong&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/DCOMaintenanceModeScenario.html"&gt;Documentation&lt;/a&gt; | &lt;a href="http://vimeo.com/6211947"&gt;Video&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/DCOMaintenanceModeHowTo.html"&gt;How-To&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;&lt;strong&gt;Fail-over:&lt;/strong&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/DCOFailoverScenario.html"&gt;Documentation&lt;/a&gt; | &lt;a href="http://vimeo.com/6212018"&gt;Video&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a title="How To" href="http://devcentral.f5.com/wiki/default.aspx/MgmtPack/DCOFailoverHowTo.html"&gt;How To&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;Documentation on the scenarios themselves, along with videos and ‘How-To’ tutorials are now available and will continue to be expanded upon in the &lt;a href="http://devcentral.f5.com/LinkClick.aspx?link=http%3a%2f%2fdevcentral.f5.com%2fwiki%2fDefault.aspx%2fMgmtPack.HomePage&amp;amp;tabid=214&amp;amp;mid=1364"&gt;documentation section&lt;/a&gt; of the &lt;a href="http://devcentral.f5.com/Default.aspx?tabid=214"&gt;F5 Networks Management Pack area&lt;/a&gt;.  &lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/druddell/aggbug/6079.aspx" width="1" height="1" /&gt;</description><pubDate>Fri, 28 Aug 2009 07:33:01 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/druddell/archive/2009/08/28/data-center-orchestration-scenarios-now-available.aspx#comment</comments><slash:comments>2</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>Announcing F5 Management Pack 1.4 for Microsoft System Center Operations Manager 2007</title><link>http://devcentral.f5.com/weblogs/sfisher/archive/2009/08/25/announcing-f5-management-pack-1.4-for-microsoft-system-center-operations.aspx</link><description>&lt;p&gt;The Management Pack product team is proud to announce the immediate release of version 1.4, which includes cumulative support for new platforms, features related to data center orchestration, and a numerous stability and user experience improvements.&lt;/p&gt;  &lt;p&gt;This new version includes support for the following platforms:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;All versions of F5 BIG-IP LTM and F5 BIG-IP GTM starting with 9.2, including the latest hardware release Viprion and 10.0.1 &lt;/li&gt;    &lt;li&gt;Microsoft Windows Server 2003 x86 and x64, Windows Server 2008 x64 &lt;/li&gt;    &lt;li&gt;Microsoft SQL Server 2003 and 2008 &lt;/li&gt;    &lt;li&gt;Microsoft System Center Operations Manager 2007 and R2 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;We have also worked to include key technology pieces to enable custom data center orchestration of network applications utilizing both F5 BIG-IP. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Distributed Data Centers:&lt;/strong&gt;       &lt;ul&gt;       &lt;li&gt;Support for Distributed Management Servers (SCOM gateway servers), allowing for monitoring and managing up to 20 F5 devices, in a distributed global environment &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Authorization&lt;/strong&gt;       &lt;ul&gt;       &lt;li&gt;Support for Authorization roles and groups via Microsoft SCOM, Active Directory, and F5 BIG-IP’s user authentication model &lt;/li&gt;        &lt;li&gt;The Management Pack includes built-in roles for discovery and device configuration &lt;/li&gt;        &lt;li&gt;Microsoft Windows and Active Directory accounts can be correlated with BIG-IP user accounts via a one time device authentication Management Pack action &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Device Configuration&lt;/strong&gt;       &lt;ul&gt;       &lt;li&gt;Support for key network and data center administrator device configuration tasks, including device failover, virtual server and pool member configuration &lt;/li&gt;        &lt;li&gt;Fully PowerShell scriptable device configuration API, integrated directly into the SCOM configuration hierarchy &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;We know your network applications are high-availability, business-critical, and distributed across your company. With these new features, we hope to dramatically increase the efficiency for your organization to quickly and easily adapt to changing network conditions.&lt;/p&gt;  &lt;p&gt;Finally, we have heard you loud and clear about the pain points around upgrading between releases of the Management Pack, and starting with 1.4, the setup utility includes built-in upgrade. We will support upgrading from 1.3 to 1.4 with this release. Also, all future releases of the Management Pack are being designed to ensure the best upgrade experience. That means persistence of your BIG-IP device database, Management Pack overrides (for perf counter and threshold rules), and all compatible BIG-IP configuration data.&lt;/p&gt;  &lt;p&gt;You can find the software download on F5’s DevCentral Management Pack website:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://devcentral.f5.com/LinkClick.aspx?link=http%3a%2f%2fdevcentral.f5.com%2fdownloads%2fMgmtPack%2fSetup%2fF5Networks.ManagementPack.Setup-1.4.0.765-x86.zip&amp;amp;tabid=73&amp;amp;mid=3221"&gt;x86 Download for Windows Server 2003 and Windows Server 2008&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://devcentral.f5.com/LinkClick.aspx?link=http%3a%2f%2fdevcentral.f5.com%2fdownloads%2fMgmtPack%2fSetup%2fF5Networks.ManagementPack.Setup-1.4.0.765-x64.zip&amp;amp;tabid=73&amp;amp;mid=3221"&gt;x64 Download for Windows Server 2003 and Windows Server 2008&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;F5 Networks is currently provided product support through the DevCentral Forums:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;view=topics&amp;amp;forumid=59"&gt;Support Issues and Filing Bug Reports&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The documentation can be found at: &lt;a href="http://devcentral.f5.com/wiki/Default.aspx/MgmtPack.HomePage"&gt;http://devcentral.f5.com/wiki/Default.aspx/MgmtPack.HomePage&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We appreciate your patience over the last few months as we’ve integrated the breadth of features. We look forward to hearing your feedback, including critical feedback and concerns. We have lots of exciting new work to bring you to ease the management of your network applications, and ensure you get the best value for your current and future network investments.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Thanks,    &lt;br /&gt;Stephen     &lt;br /&gt;F5 Management Pack - Product Development Manager&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/sfisher/aggbug/6069.aspx" width="1" height="1" /&gt;</description><pubDate>Tue, 25 Aug 2009 04:44:35 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/sfisher/archive/2009/08/25/announcing-f5-management-pack-1.4-for-microsoft-system-center-operations.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>F5 Management Pack v1.3.0.715 Featuring Integrated PowerShell Support is Now Available for Download</title><link>http://devcentral.f5.com/weblogs/jhendrickson/archive/2009/08/19/f5-management-pack-v1.3.0.715-featuring-integrated-powershell-support-is-now.aspx</link><description>&lt;p&gt;The Management Pack team is very excited to present this release which features an expanded set of PowerShell APIs and server tasks. The PowerShell API has been integrated with the Operations Manager PowerShell API as well as with the BIG-IP security model. These new features enable some very compelling scenarios, especially in the arena of Data Center Orchestration. You’ll hear more from us on that topic soon, but for now here’s an overview of the new features. &lt;/p&gt;  &lt;p&gt;For more in-depth information on these topics including tutorial videos, visit the &lt;a href="http://devcentral.f5.com/mpack"&gt;ManagementPack Home&lt;/a&gt; page and the &lt;a href="http://vimeo.com/mpack/videos"&gt;Management Pack Video&lt;/a&gt; site.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;BIG-IP Security Model Integration&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;We’ve added the ability to associate Windows NT accounts with BIG-IP accounts. Once you set up this mapping, any server task or PowerShell commandlet that needs to talk to a BIG-IP will log into the BIG-IP under the account that maps to whichever NT account is performing the operation. &lt;/p&gt;  &lt;p&gt;As an example, let’s say I’m currently logged in as DOMAIN\joelh. I can map my account to the “admin” account using a new server task or using the following PowerShell command. Note that a secure dialog box will prompt me for the BIG-IP password: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier" size="2"&gt;Set-F5.DeviceConfigurationToken –DeviceIp 172.27.25.235 –UserName pooladmin&lt;/font&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Now, when I run the “Disable Pool Member” server task, the task will only succeed if the “pooladmin” user has permissions on the BIG-IP to disable this particular pool member: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/F5M.688FeaturingIntegratedPowershellSupp_BA0B/tasks_1_4.gif"&gt;&lt;img title="tasks_1" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="346" alt="tasks_1" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/F5M.688FeaturingIntegratedPowershellSupp_BA0B/tasks_1_thumb_1.gif" width="497" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The security model also applies when using any of the F5 MP commandlets: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier" size="2"&gt;$token = Get-F5.DeviceConfigurationToken 172.27.25.235 // retrieves token that is mapped to current NT account        &lt;br /&gt;Disable-PoolMember –Token $token –Member 10.10.10.10:80 &lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Operations Manager PowerShell Integration&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;This piece of integration essentially means that you can pass Operations Manager PowerShell objects into any of the the F5 Management Pack commandlets. This allows you to leverage the full power of the Operations Manager command shell when administering BIG-IPs. Here is a quick example that disables any pool members that have been put into Maintenance Mode: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier" size="2"&gt;$pmsNeedingDisable = @(Get-MonitoringObject -MonitoringClass $f5LTMPoolMemberClass -Criteria "EnabledState =`'Enabled`' and (InMaintenanceMode = 1)")        &lt;br /&gt;$pmsNeedingDisable | Disable-F5.LTMPoolMember -Token $token&lt;/font&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;An even quicker way to take advantage of this capability is by opening the Operations Manager Shell from within the context of a discovered object. An example of the power of this capability is shown below. I right-click an LTM pool in the Operations Manager diagram view and open the Operations Manager Shell from the context menu. I can then type a simple command to disable all pool members in the pool:&lt;/p&gt;  &lt;p&gt;. &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/F5M.688FeaturingIntegratedPowershellSupp_BA0B/shell_2_2.gif"&gt;&lt;img title="shell_2" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="470" alt="shell_2" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/F5M.688FeaturingIntegratedPowershellSupp_BA0B/shell_2_thumb.gif" width="420" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/F5M.688FeaturingIntegratedPowershellSupp_BA0B/shell_3_2.gif"&gt;&lt;img title="shell_3" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="165" alt="shell_3" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jhendrickson/WindowsLiveWriter/F5M.688FeaturingIntegratedPowershellSupp_BA0B/shell_3_thumb.gif" width="403" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Other Additions&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;There are many more additions in this release including &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;New server tasks such as Create Pool Member and Force Pool Member Offline &lt;/li&gt;    &lt;li&gt;10 new commandlets &lt;/li&gt;    &lt;li&gt;Lots of bug fixes and performance improvements &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Visit the &lt;a href="http://devcentral.f5.com/mpack"&gt;Management Pack Home&lt;/a&gt; page for the download.&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/jhendrickson/aggbug/8016.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 19 Aug 2009 04:36:20 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/jhendrickson/archive/2009/08/19/f5-management-pack-v1.3.0.715-featuring-integrated-powershell-support-is-now.aspx#comment</comments><slash:comments>1</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>F5 Management Pack v1.0.0.527 with Support for Viprion is Now Available for Download</title><link>http://devcentral.f5.com/weblogs/jhendrickson/archive/2009/06/30/f5-management-pack-v1.0.0.527-with-support-for-viprion-is-now.aspx</link><description>&lt;p&gt;F5 Management Pack v1.0.0.527 adds support for discovering and managing Viprion devices. This includes discovery of CPUs on each blade with an added Slot ID property in Operations Manager to differentiate them. Additional monitor states are also available in the Viprion health model.&lt;/p&gt;  &lt;p&gt;There are many other fixes and additions in this release including:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Improved support for Big-IPs running version TMOS version 10.x &lt;/li&gt;    &lt;li&gt;Improved reliability when running on Windows Server 2008 &lt;/li&gt;    &lt;li&gt;Support for management of up to 20 devices across multiple management servers &lt;/li&gt;    &lt;li&gt;An updated big3d agent (10.0.1.600) that includes scalability improvements &lt;/li&gt;    &lt;li&gt;Relationship types defined in the F5 Management Pack are now public, enabling creation dependency monitors that reference F5 monitors &lt;/li&gt;    &lt;li&gt;Rules that generate alerts now have Alert Suppression enabled &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You can find the free downloads as well as documentation, videos, and the support forums on the &lt;a href="http://devcentral.f5.com/mpack"&gt;F5 Management Pack home page&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/jhendrickson/aggbug/4255.aspx" width="1" height="1" /&gt;</description><pubDate>Tue, 30 Jun 2009 07:46:17 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/jhendrickson/archive/2009/06/30/f5-management-pack-v1.0.0.527-with-support-for-viprion-is-now.aspx#comment</comments><slash:comments>3</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>Real IT Episode 10, And we&amp;rsquo;re live</title><link>http://devcentral.f5.com/weblogs/realit/archive/2009/05/07/real-it-episode-10-and-wersquore-live.aspx</link><description>&lt;p&gt;In the final episode of Real IT the team re-caps what has been done so far, gets a surprise addition to their launch plans, and finally sees the project through the live launch in China.&lt;/p&gt; &lt;a href="http://devcentral.f5.com/media/videos/20090507-RealIT-Episode10.mp4"&gt; &lt;/a&gt;   &lt;p&gt; &lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090507-RealIT-Episode10");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:fcbe0ecc-2d04-4c17-b56a-d95b7aaca5e7" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Real+IT" rel="tag"&gt;Real IT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ECC10" rel="tag"&gt;ECC10&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit/aggbug/5981.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 07 May 2009 08:44:52 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit/archive/2009/05/07/real-it-episode-10-and-wersquore-live.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Episode 9, Here we go...</title><link>http://devcentral.f5.com/weblogs/realit/archive/2009/04/29/episode-9-here-we-go.aspx</link><description>&lt;p&gt;It's finally time! This week, we push the button and go live with our symmetric Web Accelerator deployment. Our users get to see the benefits first-hand, we get some real world results, and we get to hammer out any last minute problems that arise with just about any deployment.&lt;/p&gt; &lt;a href="http://devcentral.f5.com/media/videos/20090429-RealIT-Episode9.mp4"&gt; &lt;/a&gt;   &lt;p&gt; &lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090429-RealIT-Episode9");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2e7a3f15-ca60-4526-9ff2-ccaa15c7c317" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/RealIT" rel="tag"&gt;RealIT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Real+IT" rel="tag"&gt;Real IT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ECC9" rel="tag"&gt;ECC9&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit/aggbug/5963.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 29 Apr 2009 04:31:44 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit/archive/2009/04/29/episode-9-here-we-go.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Announcing the Release of the F5 Management Pack for Microsoft System Center Operations Manager 2007</title><link>http://devcentral.f5.com/weblogs/sfisher/archive/2009/04/28/announcing-the-release-of-the-f5-management-pack-for-microsoft.aspx</link><description>&lt;p&gt;My name is Stephen Fisher, and as Product Development Manager, I’m proud to introduce the F5 Management Pack for Big-IP LTM and GTM.&lt;/p&gt;  &lt;p&gt;The F5 Management Pack is a software plug-in module for System Center Operations Manager that gives you a comprehensive range of F5 device health data as well as virtual server, pool, and pool member data.  You can use this critical information for trending and analysis of your application delivery architecture in order to optimize resource utilization and effectively manage your infrastructure growth.&lt;/p&gt;  &lt;p&gt;You can find the software download ~ a free download! on F5’s DevCentral website:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://devcentral.f5.com/LinkClick.aspx?link=http%3a%2f%2fdevcentral.f5.com%2fdownloads%2fMgmtPack%2fSetup%2fF5ManagementPackSetup-1.0.0.231-x86.zip&amp;amp;tabid=73&amp;amp;mid=3221"&gt;x86 Download for Windows Server 2003 and Windows Server 2008&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://devcentral.f5.com/LinkClick.aspx?link=http%3a%2f%2fdevcentral.f5.com%2fdownloads%2fMgmtPack%2fSetup%2fF5ManagementPackSetup-1.0.0.231-x64.zip&amp;amp;tabid=73&amp;amp;mid=3221"&gt;x64 Download for Windows Server 2003 and Windows Server 2008&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;F5 Networks is currently provided product support through the DevCentral Forums:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;view=topics&amp;amp;forumid=59"&gt;Support Issues and Filing Bug Reports&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The documentation can be found at: &lt;a title="http://devcentral.f5.com/wiki/Default.aspx/MgmtPack.HomePage" href="http://devcentral.f5.com/wiki/Default.aspx/MgmtPack.HomePage"&gt;http://devcentral.f5.com/wiki/Default.aspx/MgmtPack.HomePage&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Video tutorials are also available at: &lt;a title="http://devcentral.f5.com/Default.aspx?tabid=2187" href="http://devcentral.f5.com/Default.aspx?tabid=2187"&gt;http://devcentral.f5.com/Default.aspx?tabid=2187&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Thanks,&lt;/p&gt;  &lt;p&gt;Stephen Fisher&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/sfisher/aggbug/5954.aspx" width="1" height="1" /&gt;</description><pubDate>Tue, 28 Apr 2009 01:06:35 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/sfisher/archive/2009/04/28/announcing-the-release-of-the-f5-management-pack-for-microsoft.aspx#comment</comments><slash:comments>7</slash:comments><dc:creator>Blog Author</dc:creator></item><item><title>Real IT Episode 8, We're almost live</title><link>http://devcentral.f5.com/weblogs/realit/archive/2009/04/22/real-it-episode-8-were-almost-live.aspx</link><description>&lt;p&gt;This week we talked with IT a couple of times. First we met to give them the go-ahead to fire up the symmetric Web Accelerator solution behind the scenes so we could start testing in the real world. Next, we met to discuss what steps were left before launch. We're almost ready to go live!&lt;/p&gt; &lt;a href="http://devcentral.f5.com/media/videos/20090422-RealIT-Episode8.mp4"&gt; &lt;/a&gt;   &lt;p&gt; &lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090422-RealIT-Episode8");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0d2d89f3-fe79-4383-9194-a4d919b9203b" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DCC%20E8" rel="tag"&gt;DCC E8&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit/aggbug/4177.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 22 Apr 2009 05:46:49 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit/archive/2009/04/22/real-it-episode-8-were-almost-live.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Video Blog - Don thinks it all rocks</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/04/17/real-it-video-blog---don-thinks-it-all-rocks.aspx</link><description>&lt;p&gt;Don takes a shot at expressing the wonder that is today's technology. With a hat tip to Louis CK.&lt;a href="http://devcentral.f5.com/media/videos/20090417-EP7-vlog-Don.mp4"&gt; &lt;/a&gt;&lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--

HDMediaPlayer("20090417-EP7-vlog-Don");

//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8f662869-4d31-464a-bb7e-2034306c7c49" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/RealIT" rel="tag"&gt;RealIT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Louis%20CK" rel="tag"&gt;Louis CK&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Don%20Mac%20Vittie" rel="tag"&gt;Don Mac Vittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ECC%207" rel="tag"&gt;ECC 7&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4163.aspx" width="1" height="1" /&gt;</description><pubDate>Fri, 17 Apr 2009 08:01:32 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/04/17/real-it-video-blog---don-thinks-it-all-rocks.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Interview - Jason Talks Network Management</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/04/17/real-it-interview---jason-talks-network-management.aspx</link><description>&lt;p&gt;Jason discusses his background and experiences with Network Management projects and associated tools.&lt;a href="http://devcentral.f5.com/media/videos/20090417-EP7-Jason-Interview.mp4"&gt; &lt;/a&gt;&lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--

HDMediaPlayer("20090417-EP7-Jason-Interview");

//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:25b9cfa8-63e3-4b39-bd4a-ad3a1db1072b" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;, &lt;a href="http://technorati.com/tags/RealIT" rel="tag"&gt;RealIT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Real+IT" rel="tag"&gt;Real IT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DCC+E7" rel="tag"&gt;DCC E7&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Network+Management" rel="tag"&gt;Network Management&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Jason+Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4159.aspx" width="1" height="1" /&gt;</description><pubDate>Fri, 17 Apr 2009 02:18:32 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/04/17/real-it-interview---jason-talks-network-management.aspx#comment</comments><slash:comments>1</slash:comments></item><item><title>Real IT Episode 7, All systems...go?</title><link>http://devcentral.f5.com/weblogs/realit/archive/2009/04/15/real-it-episode-7-all-systems.go.aspx</link><description>&lt;p&gt;In this episode of Real IT, Jason delves into the management side of things with IT, the content is reviewed by the China folks, and the DevCentral team makes the call on whether or not to roll the acceleration solution out into the wild for some real world testing.&lt;/p&gt; &lt;a href="http://devcentral.f5.com/media/videos/20090415-RealIT-Episode7.mp4"&gt; &lt;/a&gt;   &lt;p&gt;&lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090415-RealIT-Episode7");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ec4708ac-090f-487b-a80f-5bb0f6ee9beb" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DCC%20E7" rel="tag"&gt;DCC E7&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit/aggbug/4152.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 15 Apr 2009 07:02:59 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit/archive/2009/04/15/real-it-episode-7-all-systems.go.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Video Blog - Joe Goes Over Performance Results.</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/04/08/real-it-video-blog---joe-goes-over-performance-results.aspx</link><description>&lt;p&gt;In this video blog, Joe comments on the tech center results and how small optimizations can yeild big results.&lt;a href="http://devcentral.f5.com/media/videos/20090330-EP6-Vlog-Joe.mp4"&gt; &lt;/a&gt;&lt;/p&gt;
&lt;table align="center"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--

HDMediaPlayer("20090330-EP6-Vlog-Joe");

//--&gt;&lt;/script&gt;&lt;/td&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:45edae2e-9a27-48f1-b2b2-3f0e8898940a" style="margin: 0px; padding: 0px; display: inline;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;, &lt;a href="http://technorati.com/tags/RealIT" rel="tag"&gt;RealIT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/ViewState" rel="tag"&gt;ViewState&lt;/a&gt;, &lt;a href="http://technorati.com/tags/ASP.Net" rel="tag"&gt;ASP.Net&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Acceleration" rel="tag"&gt;Acceleration&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Joe%20Pruitt" rel="tag"&gt;Joe Pruitt&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/5925.aspx" width="1" height="1" /&gt;</description><pubDate>Tue, 07 Apr 2009 23:41:50 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/04/08/real-it-video-blog---joe-goes-over-performance-results.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Video Blog - Jason Tackles Multitasking</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/04/06/real-it-video-blog---jason-tackles-multitasking.aspx</link><description>&lt;p&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;In this video blog, Jason discusses how he load balances project tasks.  His algorithm isn't nearly as clean or effective as Big-IP's are, however.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table align="center"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090403-EP6-vlog-Jason");
//--&gt;&lt;/script&gt;&lt;/td&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:582b0f05-5614-4cfa-b1ec-1cfab294564c" style="PADDING-RIGHT: 0px; DISPLAY: inline"&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:582b0f05-5614-4cfa-b1ec-1cfab294564c" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/F5"&gt;F5&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/DevCentral"&gt;DevCentral&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/RealIT"&gt;RealIT&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Real%20IT"&gt;Real IT&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Jason%20Rahm"&gt;Jason Rahm&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4144.aspx" width="1" height="1" /&gt;</description><pubDate>Sun, 05 Apr 2009 20:02:45 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/04/06/real-it-video-blog---jason-tackles-multitasking.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Episode 6, Results and Planning</title><link>http://devcentral.f5.com/weblogs/realit/archive/2009/04/01/real-it-episode-6-results-and-planning.aspx</link><description>&lt;p&gt;The next episode of the series has the team talking with Dan in the Tech Center about the results of their testing. Armed with these results they then go to form a plan of what's to come next with IT.&lt;a href="http://devcentral.f5.com/media/videos/20090401-RealIT-Episode6.mp4"&gt; &lt;/a&gt;&lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090401-RealIT-Episode6");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2e9d2d52-c359-4f0b-9799-864c1e5b7d0f" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DCC%20E6" rel="tag"&gt;DCC E6&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit/aggbug/4134.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 01 Apr 2009 06:50:26 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit/archive/2009/04/01/real-it-episode-6-results-and-planning.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Interview - Nojan talks CDNs with Jeff</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/04/01/real-it-interview---nojan-talks-cdns-with-jeff.aspx</link><description>&lt;p&gt;Jeff got a few minutes to sit down with Nojan, one of our engineers here at F5, and talk about Content Delivery Networks.  They recapped what they are and how they work, as well as delving into some of the pros and cons and some other alternatives.  Nojan's experience dealing with CDNs in the past is interesting and quite valuable to the team.&lt;/p&gt; &lt;a href="http://devcentral.f5.com/media/videos/20090331-EP6-Interviews-Nojan"&gt;&lt;/a&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090331-EP6-Interviews-Nojan");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0e369141-0972-4488-9ae2-4a1a739bcf6a" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DCC%20E6" rel="tag"&gt;DCC E6&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Interview" rel="tag"&gt;Interview&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jeff%20Browning" rel="tag"&gt;Jeff Browning&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4133.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 01 Apr 2009 01:00:58 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/04/01/real-it-interview---nojan-talks-cdns-with-jeff.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Video Blog - Colin awaits test results</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/04/01/real-it-video-blog---colin-awaits-test-results.aspx</link><description>&lt;p&gt;&lt;font size="2"&gt;Colin takes a minute to talk some more about testing and his anticipation for the results that Dan's team has gotten from the initial testing in the Tech center. He also discusses his experiences with application tuning and his expectations vs. his hopes for what kind of results they'll see from Web Accelerator in front of DevCentral.&lt;/font&gt;&lt;/p&gt; &lt;a href="http://devcentral.f5.com/media/videos/20090331-EP6-vlog-Colin.mp4"&gt;&lt;/a&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090331-EP6-vlog-Colin");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e0100abe-310b-4d64-b7dd-7ac49bee4246" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DCC%20E6" rel="tag"&gt;DCC E6&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin%20Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4132.aspx" width="1" height="1" /&gt;</description><pubDate>Tue, 31 Mar 2009 22:15:47 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/04/01/real-it-video-blog---colin-awaits-test-results.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Video Blog - Jason Shifts Focus</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/30/real-it-video-blog---jason-shifts-focus.aspx</link><description>&lt;p&gt;&lt;font size="2"&gt;In this video blog, Jason shifts focus away from acceleration to the point of the project: creating a Chinese version of DevCentral.&lt;/font&gt;&lt;/p&gt;
&lt;a href="http://devcentral.f5.com/media/videos/20090325-EP5-vlog-Jason2.mp4"&gt;&lt;/a&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table align="center"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090325-EP5-vlog-Jason2");
//--&gt;&lt;/script&gt;&lt;/td&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:582b0f05-5614-4cfa-b1ec-1cfab294564c" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/F5"&gt;F5&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/DevCentral"&gt;DevCentral&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/RealIT"&gt;RealIT&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Real%20IT"&gt;Real IT&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Jason%20Rahm"&gt;Jason Rahm&lt;/a&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4125.aspx" width="1" height="1" /&gt;</description><pubDate>Sun, 29 Mar 2009 22:09:31 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/30/real-it-video-blog---jason-shifts-focus.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Video Blog - Don ponders Betas</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/27/real-it-video-blog---don-ponders-betas.aspx</link><description>&lt;p&gt;Pondering the team's decision not to use a beta product, Don talks about the criteria and implications of using any vendors' beta code in your project - and why we chose not to.&lt;/p&gt; &lt;a href="http://devcentral.f5.com/media/videos/20090327-EP5-vlog-Don.mp4"&gt;&lt;/a&gt;  &lt;p&gt; &lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090327-EP5-vlog-Don");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ac70fbce-313b-4baa-b686-971402cad3d0" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Episode%205" rel="tag"&gt;Episode 5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Beta" rel="tag"&gt;Beta&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Don%20MacVittie" rel="tag"&gt;Don MacVittie&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4121.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 26 Mar 2009 22:40:20 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/27/real-it-video-blog---don-ponders-betas.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Interview - Joe Hicks Talks About Best Practices With Enterprise CDNs</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/26/real-it-interview---joe-hicks-talks-about-best-practices.aspx</link><description>&lt;p&gt;In this interview, F5 Senior Product Manager for Acceleration Joe Hicks talks about best practices when designing Enterprise Content Delivery Networks (ECDNs). He covers problems with web application delivery for foreign countries.&lt;a href="http://devcentral.f5.com/media/videos/20090326-EP5-Interviews-JoeHicks.mp4"&gt; &lt;/a&gt;&lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--

HDMediaPlayer("20090326-EP5-Interviews-JoeHicks");

//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c167a0d2-cc37-4a2f-bbdb-13118478dccb" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;, &lt;a href="http://technorati.com/tags/RealIT" rel="tag"&gt;RealIT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Interview" rel="tag"&gt;Interview&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Acceleration" rel="tag"&gt;Acceleration&lt;/a&gt;, &lt;a href="http://technorati.com/tags/ECDN" rel="tag"&gt;ECDN&lt;/a&gt;, &lt;a href="http://technorati.com/tags/CDN" rel="tag"&gt;CDN&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Joe%20Hicks" rel="tag"&gt;Joe Hicks&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4105.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 26 Mar 2009 03:03:21 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/26/real-it-interview---joe-hicks-talks-about-best-practices.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Video Blog - Joe Discusses A Workaround For Testing ASP Logins</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/26/real-it-video-blog---joe-discusses-a-workaround-for.aspx</link><description>&lt;p&gt;After meeting with Dan Wright and learning how the stress testing application we were using in the Tech Center couldn't handle a special character in the login sequence of the DevCentral application, a unique solution is discovered that didn't require changes to the client application or the server code.&lt;a href="http://devcentral.f5.com/media/videos/20090326-EP5-Vlog-Joe.mp4"&gt; &lt;/a&gt;&lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090326-EP5-Vlog-Joe");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e185ff5b-b4de-44ca-91e2-c3b93e5c8a22" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;, &lt;a href="http://technorati.com/tags/RealIT" rel="tag"&gt;RealIT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DCC%20E5" rel="tag"&gt;DCC E5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Videoblogs" rel="tag"&gt;Videoblogs&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Joe%20Pruitt" rel="tag"&gt;Joe Pruitt&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4104.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 26 Mar 2009 02:57:21 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/26/real-it-video-blog---joe-discusses-a-workaround-for.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Video Blog - Jason Confronts Roadblocks</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/26/real-it-video-blog---jason-confronts-roadblocks.aspx</link><description>&lt;p&gt;&lt;font size="2"&gt;In this video blog, Jason takes a minute to d&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: " new="New"&gt;iscuss inevitable roadblocks encountered during a project and the necessity of effective communication in overcoming them.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;a href="http://devcentral.f5.com/media/videos/20090325-EP5-vlog-Jason1.mp4"&gt;&lt;/a&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table align="center"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090325-EP5-vlog-Jason1");
//--&gt;&lt;/script&gt;&lt;/td&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:582b0f05-5614-4cfa-b1ec-1cfab294564c" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/F5"&gt;F5&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/DevCentral"&gt;DevCentral&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/RealIT"&gt;RealIT&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Real%20IT"&gt;Real IT&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Jason%20Rahm"&gt;Jason Rahm&lt;/a&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4101.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 25 Mar 2009 20:09:35 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/26/real-it-video-blog---jason-confronts-roadblocks.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Video Blog - Colin talks testing</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/25/real-it-video-blog---colin-talks-testing.aspx</link><description>&lt;p&gt;Colin takes a second to comment on where the team is at with testing. He mentions the importance of this step of the process as well as how it feels to be on the side that's pushing for the app to get out sooner, rather than the side telling those people to hold on so they can make the code "perfect".&lt;/p&gt; &lt;a href="http://devcentral.f5.com/media/videos/20090325-EP5-vlog-Colin1.mp4"&gt;&lt;/a&gt;  &lt;p&gt; &lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090325-EP5-vlog-Colin1");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:152f2488-967a-4ef3-b10b-e21e312a72c6" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/DevCentral%20RealIT" rel="tag"&gt;DevCentral RealIT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Testing" rel="tag"&gt;Testing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Tech%20Center" rel="tag"&gt;Tech Center&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Colin%20Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4098.aspx" width="1" height="1" /&gt;</description><pubDate>Tue, 24 Mar 2009 23:58:05 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/25/real-it-video-blog---colin-talks-testing.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Episode 5, Bugs, Build-out, and Bungled Shipping</title><link>http://devcentral.f5.com/weblogs/realit/archive/2009/03/25/real-it-episode-5-bugs-build-out-and-bungled-shipping.aspx</link><description>&lt;p&gt;In this episode, the team finds testing errors, starts building the site, and discovers that the hardware for the China side was shipped... Twice!  Special guest appearances by Dan Wright and the IT gurus.&lt;a href="http://devcentral.f5.com/media/videos/20090325-RealIT-Episode-5.mp4"&gt; &lt;/a&gt;&lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090325-RealIT-Episode-5");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b179cb24-9209-4a81-805e-d883882c6782" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;, &lt;a href="http://technorati.com/tags/RealIT" rel="tag"&gt;RealIT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DCC%20E5" rel="tag"&gt;DCC E5&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit/aggbug/4097.aspx" width="1" height="1" /&gt;</description><pubDate>Tue, 24 Mar 2009 23:35:11 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit/archive/2009/03/25/real-it-episode-5-bugs-build-out-and-bungled-shipping.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Video Blog - Jason Talks Data Access And Ownership</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/20/real-it-video-blog---jason-talks-data-access-and.aspx</link><description>&lt;p&gt;In this video blog, Jason goes over his concerns about access and ownership to data when dealing with multiple departments within an organization.&lt;a href="http://devcentral.f5.com/media/videos/20090320-EP4-Vlog-Jason-2.mp4"&gt; &lt;/a&gt;&lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090320-EP4-Vlog-Jason-2");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:582b0f05-5614-4cfa-b1ec-1cfab294564c" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;, &lt;a href="http://technorati.com/tags/RealIT" rel="tag"&gt;RealIT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Jason%20Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4089.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 19 Mar 2009 21:59:19 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/20/real-it-video-blog---jason-talks-data-access-and.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Video Blog - Jason Ponders Technology Reuse</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/19/real-it-video-blog---jason-ponders-technology-reuse.aspx</link><description>&lt;p&gt;The DevCentral China project is driving the investment in acceleration technologies but sharing technology across business units benefits the organization as a whole.&lt;a href="http://devcentral.f5.com/media/videos/20090319-EP4-Vlog-Jason.mp4"&gt; &lt;/a&gt;&lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090319-EP4-Vlog-Jason");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0c263f14-bbce-43f1-9ff3-15c744819352" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;, &lt;a href="http://technorati.com/tags/RealIT" rel="tag"&gt;RealIT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DCC%20E4" rel="tag"&gt;DCC E4&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Jason%20Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4086.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 18 Mar 2009 23:49:11 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/19/real-it-video-blog---jason-ponders-technology-reuse.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Episode 4, Colos And Testing</title><link>http://devcentral.f5.com/weblogs/realit/archive/2009/03/18/real-it-episode-4-colos-and-testing.aspx</link><description>&lt;p&gt;In this episode, the team explores co-location sites in China and reviews results, while talking with IT about other possible solutions to the problem of hardware placement in China.  Guest appearances by Marty Fagan, Paul Petersen, Dan Wright, and the DC China Team.&lt;a href="http://devcentral.f5.com/media/videos/20090318-RealIT-Episode-4.mp4"&gt; &lt;/a&gt;&lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090318-RealIT-Episode-4");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:857cb65c-8d5c-43dd-a3c1-290af9ea64b0" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;, &lt;a href="http://technorati.com/tags/RealIT" rel="tag"&gt;RealIT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DCC%20E4" rel="tag"&gt;DCC E4&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Co-location" rel="tag"&gt;Co-location&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Testing" rel="tag"&gt;Testing&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit/aggbug/4083.aspx" width="1" height="1" /&gt;</description><pubDate>Tue, 17 Mar 2009 22:58:21 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit/archive/2009/03/18/real-it-episode-4-colos-and-testing.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Video Blog - Joe Talks Code Deployment</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/17/real-it-video-blog---joe-talks-code-deployment.aspx</link><description>&lt;p&gt;In this video blog, Joe talks about the reality of running and deploying code into multiple locations.&lt;a href="http://devcentral.f5.com/media/videos/20090317-EP4-Vlog-Joe.mp4"&gt; &lt;/a&gt;&lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090317-EP4-Vlog-Joe");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f1681db1-636b-41b1-956d-a9afbdcc0bfc" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;, &lt;a href="http://technorati.com/tags/RealIT" rel="tag"&gt;RealIT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DCC%20E4" rel="tag"&gt;DCC E4&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Joe%20Pruitt" rel="tag"&gt;Joe Pruitt&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4080.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 16 Mar 2009 23:15:47 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/17/real-it-video-blog---joe-talks-code-deployment.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Video Blog - Jeff Discusses Localized Sites</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/16/real-it-video-blog---jeff-discusses-localized-sites.aspx</link><description>&lt;p&gt;In this video blog, Jeff reflects on the role of localized sites with a focus on our rollout of DevCentral Japan.&lt;a href="http://devcentral.f5.com/media/videos/20090316-EP4-vlog-Jeff-localized-sites.mp4"&gt; &lt;/a&gt;&lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090316-EP4-vlog-Jeff-localized-sites");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:56d560f6-721e-444e-9cac-3f35efecd078" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;, &lt;a href="http://technorati.com/tags/RealIT" rel="tag"&gt;RealIT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DCC%20E4" rel="tag"&gt;DCC E4&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Jeff%20Browning" rel="tag"&gt;Jeff Browning&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4077.aspx" width="1" height="1" /&gt;</description><pubDate>Sun, 15 Mar 2009 22:49:47 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/16/real-it-video-blog---jeff-discusses-localized-sites.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Video Blog - Jason Reflects On GTM Topology</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/13/real-it-video-blog---jason-reflects-on-gtm-topology.aspx</link><description>&lt;p&gt;Jason reflects on making use of GTM and geolocation and it's influence on topology and the tuning needed to make it all work.&lt;a href="http://devcentral.f5.com/media/videos/20090313-EP3-Vlog-Jason2.mp4"&gt; &lt;/a&gt; &lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090313-EP3-Vlog-Jason2");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:09b34d49-c0ce-4d1b-9cb6-2fdd39de0cb9" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;, &lt;a href="http://technorati.com/tags/RealIT" rel="tag"&gt;RealIT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Jason%20Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4073.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 12 Mar 2009 23:47:24 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/13/real-it-video-blog---jason-reflects-on-gtm-topology.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Video Blog - Don Considers Big Projects</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/13/real-it-video-blog---don-considers-big-projects.aspx</link><description>&lt;p&gt;Don comments on the ups and downs of working on big projects with geographically dispersed teams.&lt;a href="http://devcentral.f5.com/media/videos/20090313-EP3-Vlog-Don-BigProjects.mp4"&gt; &lt;/a&gt; &lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090313-EP3-Vlog-Don-BigProjects");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:49a8b7e7-25b4-4541-93ee-7e5f90e3d60a" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;, &lt;a href="http://technorati.com/tags/RealIT" rel="tag"&gt;RealIT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DCC%20E3" rel="tag"&gt;DCC E3&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Don%20Mac%20Vittie" rel="tag"&gt;Don Mac Vittie&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4072.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 12 Mar 2009 23:28:24 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/13/real-it-video-blog---don-considers-big-projects.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Video Blog - Colin Talks About Using The Tech Center</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/13/real-it-video-blog---colin-talks-about-using-the.aspx</link><description>&lt;p&gt;After getting an OK from Dan, Colin considers the steps needed to get all the pieces in place to start testing in the Tech Center.&lt;a href="http://devcentral.f5.com/media/videos/20090313-EP3-Vlog-Colin.mp4"&gt; &lt;/a&gt; &lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090313-EP3-Vlog-Colin");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2c72abbb-a6e8-43ef-acea-3d46abaf4fc4" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;, &lt;a href="http://technorati.com/tags/RealIT" rel="tag"&gt;RealIT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DCC%20E3" rel="tag"&gt;DCC E3&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Colin%20Walker" rel="tag"&gt;Colin Walker&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4071.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 12 Mar 2009 23:22:54 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/13/real-it-video-blog---colin-talks-about-using-the.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Video Blog - Jason Covers The Deployment Framework</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/12/real-it-video-blog---jason-covers-the-deployment-framework.aspx</link><description>&lt;p&gt;Jason talks about the decisions we've made regarding the framework of our acceleration solution.&lt;a href="http://devcentral.f5.com/media/videos/20090312-EP3-Vlog-Jason.mp4"&gt; &lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090312-EP3-Vlog-Jason");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:46052172-36cf-421f-85ce-66c66bff0e8d" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;, &lt;a href="http://technorati.com/tags/RealIT" rel="tag"&gt;RealIT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DCC%20E3" rel="tag"&gt;DCC E3&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Jason%20Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4067.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 12 Mar 2009 00:23:58 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/12/real-it-video-blog---jason-covers-the-deployment-framework.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Interview - Dan Wright Shows Off F5's Tech Center</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/12/real-it-interview---dan-wright-shows-off-f5s-tech.aspx</link><description>&lt;p&gt;Dan Wright gives us a tour of F5's Tech Center.&lt;a href="http://devcentral.f5.com/media/videos/20090312-EP3-Interview-Dan-TechCenter.mp4"&gt; &lt;/a&gt; &lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090312-EP3-Interview-Dan-TechCenter");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:68423065-4a5c-46a6-8546-86f2e061717d" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;, &lt;a href="http://technorati.com/tags/RealIT" rel="tag"&gt;RealIT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DCC%20E3" rel="tag"&gt;DCC E3&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Dan%20Wright" rel="tag"&gt;Dan Wright&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4066.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 12 Mar 2009 00:15:01 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/12/real-it-interview---dan-wright-shows-off-f5s-tech.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Episode 3, The Extended Team - Part 2</title><link>http://devcentral.f5.com/weblogs/realit/archive/2009/03/12/real-it-episode-3-the-extended-team---part-2.aspx</link><description>Episode 3, The Extended Team:  This week the team checks in with all of the people they depend upon to complete the project in a timely manner, discussing the issues created by "on the fly" projects and fitting them into the schedule with a priority.  Guest appearances by Dan Wright, Paul Petersen, Steve Wong, Bob Tacon, Erik Holcomb, and the APAC team..&lt;a href="http://devcentral.f5.com/media/videos/20090312-RealIT-Episode-3-2.mp4"&gt; &lt;/a&gt;   &lt;br /&gt;&lt;center&gt;   &lt;table&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090312-RealIT-Episode-3-2");
//--&gt;&lt;/script&gt;&lt;/td&gt;          &lt;td&gt; &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/center&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c8252744-bc98-493b-acd6-3efc8642e447" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;, &lt;a href="http://technorati.com/tags/RealIT" rel="tag"&gt;RealIT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DCC%20E3" rel="tag"&gt;DCC E3&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit/aggbug/4065.aspx" width="1" height="1" /&gt;</description><pubDate>Wed, 11 Mar 2009 23:58:53 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit/archive/2009/03/12/real-it-episode-3-the-extended-team---part-2.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Inteview - Joe Talks VMs</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/11/real-it-inteview---joe-talks-vms.aspx</link><description>&lt;p&gt;Joe discusses the ins and outs of running simulated data centers in a virtual machine environment.&lt;a href="http://devcentral.f5.com/media/videos/20090311-EP3-Interview-Joe-VMs.mp4"&gt; &lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;table align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090311-EP3-Interview-Joe-VMs");
//--&gt;&lt;/script&gt;&lt;/td&gt;        &lt;td&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:671bfaf6-d985-401a-811b-9e811ff6b597" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/RealIT" rel="tag"&gt;RealIT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DCC%20E3" rel="tag"&gt;DCC E3&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Virtualization" rel="tag"&gt;Virtualization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Joe%20Pruitt" rel="tag"&gt;Joe Pruitt&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4056.aspx" width="1" height="1" /&gt;</description><pubDate>Tue, 10 Mar 2009 23:33:28 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/11/real-it-inteview---joe-talks-vms.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Video Blog - Jason Talks Acceleration</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/10/real-it-video-blog---jason.aspx</link><description>&lt;p&gt;After Colin's talk with Dawn, Jason ponders the acceleration design and talks about some concerns he sees that the team should be aware of.&lt;a href="http://devcentral.f5.com/media/videos/20090310-EP2-Vlog-Jason2.mp4"&gt; &lt;/a&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table align="center"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090310-EP2-Vlog-Jason2");
//--&gt;&lt;/script&gt;&lt;/td&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;div style="margin: 0px; padding: 0px; display: inline;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2e388e4e-b768-46cf-82e1-caec76e1d877" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/F5"&gt;F5&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/DevCentral"&gt;DevCentral&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Real%20IT"&gt;Real IT&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/DCC%20E2"&gt;DCC E2&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Jason%20Rahm"&gt;Jason Rahm&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4053.aspx" width="1" height="1" /&gt;</description><pubDate>Tue, 10 Mar 2009 02:28:23 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/10/real-it-video-blog---jason.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Episode 3, The Extended Team - Part 1</title><link>http://devcentral.f5.com/weblogs/realit/archive/2009/03/10/real-it-episode-3-the-extended-team---part-1.aspx</link><description>Episode 3, The Extended Team:  This week the team checks in with all of the people they depend upon to complete the project in a timely manner, discussing the issues created by "on the fly" projects and fitting them into the schedule with a priority.  Guest appearances by Dan Wright, Paul Petersen, Steve Wong, Bob Tacon, Erik Holcomb, and the APAC team..&lt;a href="http://devcentral.f5.com/media/videos/20090310-RealIT-Episode-3-1.mp4"&gt; &lt;/a&gt;   &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;&lt;center&gt;   &lt;table&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090310-RealIT-Episode-3-1");
//--&gt;&lt;/script&gt;&lt;/td&gt;          &lt;td&gt; &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/center&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e9edb85d-dca0-4ab1-a79b-be86bf38f9ac" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5" rel="tag"&gt;F5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DevCentral" rel="tag"&gt;DevCentral&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Real%20IT" rel="tag"&gt;Real IT&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DCC%20E3" rel="tag"&gt;DCC E3&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit/aggbug/4052.aspx" width="1" height="1" /&gt;</description><pubDate>Tue, 10 Mar 2009 00:23:12 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit/archive/2009/03/10/real-it-episode-3-the-extended-team---part-1.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Video Blog - Joe Reflects On Page Size and Caching In Dev</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/09/realit-video-blog---joe-reflects-on-page-size-and.aspx</link><description>&lt;p&gt;Joe reflects on his thoughts about the page load size for DevCentral and then gets into the effects of caching with regards to development testing.&lt;/p&gt;
&lt;a href="http://devcentral.f5.com/media/videos/20090309-EP3-Vlog-Joe.mp4"&gt;&lt;/a&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table align="center"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090309-EP3-Vlog-Joe");
//--&gt;&lt;/script&gt;&lt;/td&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div style="margin: 0px; padding: 0px; display: inline; float: none;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d36176cd-9922-4ba1-82f7-c04fead8d068" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/F5"&gt;F5&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/DevCentral"&gt;DevCentral&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/RealIT"&gt;RealIT&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/DCC%20E3"&gt;DCC E3&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/VideoBlog"&gt;VideoBlog&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/VideoBlogs"&gt;VideoBlogs&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Caching"&gt;Caching&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Joe%20Pruitt"&gt;Joe Pruitt&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4050.aspx" width="1" height="1" /&gt;</description><pubDate>Mon, 09 Mar 2009 00:25:39 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/09/realit-video-blog---joe-reflects-on-page-size-and.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Interview - Paul's Introduction</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/06/realit-interview---pauls-introduction.aspx</link><description>&lt;p&gt;Paul gives us a rundown on his role as manager of the Network Engineering team and touches a bit on things that come up on a day to day basis for his team.&lt;/p&gt;
&lt;a href="http://devcentral.f5.com/media/videos/20090306-EP2-Interview-Paul.mp4"&gt;&lt;/a&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table align="center"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090306-EP2-Interview-Paul");
//--&gt;&lt;/script&gt;&lt;/td&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;   &lt;/p&gt;
&lt;div style="margin: 0px; padding: 0px; display: inline;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e0d1a999-7c44-4339-ab03-089368aca0ab" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/F5"&gt;F5&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/DevCentral"&gt;DevCentral&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/DCC%20E2"&gt;DCC E2&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/Interview"&gt;Interview&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4047.aspx" width="1" height="1" /&gt;</description><pubDate>Fri, 06 Mar 2009 11:43:39 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/06/realit-interview---pauls-introduction.aspx#comment</comments><slash:comments>0</slash:comments></item><item><title>Real IT Video Blog - Don talks new projects</title><link>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/05/real-it-video-blog---don-talks-new-projects.aspx</link><description>&lt;p&gt;Don discusses the choices you have at the start of your projects. Encouraging everyone to look into the things that may have been shelved, he talks about how and why this part of projects is the most fun and the right time to get creative.&lt;/p&gt;
&lt;a href="http://devcentral.f5.com/media/videos/20090305-EP2-Vlogs-Don.mp4"&gt;&lt;/a&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table align="center"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;script language="JavaScript"&gt;&lt;!--
HDMediaPlayer("20090305-EP2-Vlogs-Don");
//--&gt;&lt;/script&gt;&lt;/td&gt;
            &lt;td&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;div style="margin: 0px; padding: 0px; display: inline; float: none;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:df9322e2-cb96-49f8-86ea-ffa5d8f78071" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/F5"&gt;F5&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/DevCentral"&gt;DevCentral&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/DCC%20E2"&gt;DCC E2&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/VideoBlogs"&gt;VideoBlogs&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Don%20MacVittie"&gt;Don MacVittie&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/realit_extras/aggbug/4044.aspx" width="1" height="1" /&gt;</description><pubDate>Thu, 05 Mar 2009 11:54:59 GMT</pubDate><comments>http://devcentral.f5.com/weblogs/realit_extras/archive/2009/03/05/real-it-video-blog---don-talks-new-projects.aspx#comment</comments><slash:comments>0</slash:comments></item></channel></rss>