<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>iRules</title>
        <link>http://devcentral.f5.com/weblogs/macvittie/category/100.aspx</link>
        <description>All things iRules</description>
        <language>en-US</language>
        <copyright>Lori MacVittie</copyright>
        <generator>Subtext Version 2.1.1.1</generator>
        <item>
            <title>The Potential Ramifications of Platform-Based Vulnerabilities on Cloud Computing</title>
            <link>http://devcentral.f5.com/weblogs/macvittie/archive/2012/02/08/the-potential-ramifications-of-platform-based-vulnerabilities-on-cloud-computing.aspx</link>
            <description>&lt;p&gt;#infosec #adcfw #cloud &lt;em&gt;Alternate title: How to take out an entire PaaS cloud with one vulnerability &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/The-Potential-Ramifications-of-Platform-_2EF5/chess%20king_2.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="chess king" border="0" alt="chess king" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/The-Potential-Ramifications-of-Platform-_2EF5/chess%20king_thumb.jpg" width="240" height="190" /&gt;&lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/08/26/f5-friday-zero-day-apache-exploit-zero-problem.aspx"&gt;Apache Killer&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/david/archive/2012/01/09/vu903934-ndash-post-of-doom.aspx"&gt;Post of Doom&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;What do these two vulnerabilities have in common? Right, they’re &lt;em&gt;platform-&lt;/em&gt;based vulnerabilities. Meaning they are vulnerabilities peculiar to the web or application server platform upon which applications are deployed. Mitigations for such vulnerabilities generally point to changes in configuration of the platform – limit post size, header value sizes, turn off some value in the associated configuration. &lt;/p&gt;  &lt;p&gt;But they also have something else in common – risk. And not just risk in general, but risk to cloud providers whose primary value is in offering not just a virtual server but an entire, pre-integrated and pre-configured application deployment stack. Think LAMP, as an example, and providers like Microsoft (Azure) and VMware (CloudFoundry), more commonly adopting the moniker of PaaS. It’s an operational dream to have a virtual server pre-configured and ready to go with the exact application deployment stack needed and offers a great deal of value in terms of efficiency and overall operational investment, but it is – or should be – a security professional’s nightmare. It’s not unlike the &lt;a href="http://autos.yahoo.com/blogs/motoramic/gm-recalling-chevy-volts-prevent-battery-fires-164320241.html"&gt;recent recall of Chevy Volts&lt;/a&gt; – a defect in the platform needs to be mitigated. The only way to do it, for car owners, is to effectively shut down their ability to drive while a patch is applied. It’s disruptive, it’s expensive (you still have to get to work, after all), and it’s frustrating for the consumer. For the provider, it’s bad PR and negatively impacts the brand. Neither of which is appealing. &lt;/p&gt;  &lt;p&gt;A vulnerability in the application stack, in the web or application server, can be operationally devastating to the provider – and potentially disruptive to the consumer whether the vulnerability is exploited or not. &lt;/p&gt;  &lt;h4&gt;&lt;font color="#c0504d"&gt;&lt;font style="font-weight: bold"&gt;STANDARDIZATION is a DOUBLE-EDGED SWORD &lt;/font&gt;&lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;Assume a homogeneous cloud environment offering an application stack based on Microsoft ASP. Assume now an exploit, oh say like Post of Doom, is discovered whose primary mitigation lies in modifying the configuration of each and every instance. Virtualization of any kind provides a solution, of course, but introduces the possibility of disruption in the impact to consumer applications from the configuration change. A primary mitigation for the Post of Doom is to limit the size of data in a POST to under 8MB. Depending on the application, this has to potential to “break” application functionality, particularly those for which uploading big data is a focus. Images, video, documents, etc… These all may be impacted negatively, disrupting applications and angering consumers. &lt;/p&gt;  &lt;p&gt;Patching, of course, is preferred, as it eliminates the underlying vulnerability without potentially breaking applications. But patching takes time – time to develop, time to test, time to deploy. The actual delivery of such patches in a PaaS environment is a delicate operation. You can’t just shut the whole cloud down and restart it after the patches are applied to the base images, can you? Do you wait, quiesce the vulnerable images and only force the patched ones when new instances are provisioned? A configuration-based mitigation, too, has these same issues. You can’t just shut down the whole cloud, apply the change, and reboot. &lt;/p&gt;  &lt;p&gt;It’s a delicate balance of security versus availability that must struck for the provider, and certainly their position in such cases is one not to be envied. Damned if they do, damned if they don’t. &lt;/p&gt;  &lt;p&gt;Then there is the risk of exploitation &lt;em&gt;before &lt;/em&gt;any mitigation is applied. If I want to wreak havoc on a PaaS, I may be able to accomplish simply by finding one with the appropriate platform vulnerable to a given exploit, and attack. Cycling through applications deployed in that environment (easily identified at the network layer by the IP ranges assigned to the provider) should result in a wealth of chaos being wrought. The right vulnerability could take out a significant enough portion of the environment to garner attention from the outages caused. &lt;/p&gt;  &lt;p&gt;Enterprise organizations that think they are immune from such issues should think again, as even a cloud provider is often not as standardized on a single application platform as an enterprise is, and it is that standardization that is at the root of the potential risk from platform-based vulnerabilities. Standardization, commoditization, these are good things in terms of many financial and operational benefits, but they can also cause operational risk to increase. &lt;/p&gt;  &lt;h4&gt;&lt;font color="#c0504d"&gt;&lt;font style="font-weight: bold"&gt;MITIGATE in the MIDDLE &lt;/font&gt;&lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;There is a better solution, a better strategy, a better operational means of mitigating platform-based risks. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/The-Potential-Ramifications-of-Platform-_2EF5/chess-queen-protected_2.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="chess-queen-protected" border="0" alt="chess-queen-protected" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/The-Potential-Ramifications-of-Platform-_2EF5/chess-queen-protected_thumb.jpg" width="240" height="180" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is where the role of a flexible, broad-spectrum layer of security applies. One that enables security professionals to broadly apply security policies to quickly mitigate potentially disastrous vulnerabilities. Without disrupting a single running instance, an organization can deploy a mitigating solution that detects and prevents the effects of such vulnerabilities. Applying security policies that mitigate such vulnerabilities &lt;em&gt;before &lt;/em&gt;they reach the platform is critical to preventing a disaster of epic (and newsworthy) proportions. &lt;/p&gt;  &lt;p&gt;Whether stop gap or a permanent solution, by leveraging the &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/11/16/at-the-intersection-of-cloud-and-controlhellip.aspx"&gt;application delivery tier&lt;/a&gt; of any data center – enterprise or cloud provider – such vulnerabilities can be addressed without imposing harsh penalties on applications and application owners, such as requiring complete shutdown and reboots. &lt;/p&gt;  &lt;p&gt;Leveraging such a flexible data center tier insulates the platform from exploitation while insulating customers from the disruption required to mitigate immediately on the platform layer, allowing time to redress through patches or, at least, understand the potential implication to the application from the platform configuration changes required to mitigate the vulnerability. &lt;/p&gt;  &lt;p&gt;In today’s data center, time is perhaps the biggest benefit afforded to IT by any solution, and yet the one least likely to be provided. A flexible application delivery tier capable of mitigating threats across the network and application stack without disruption is one of the few solutions available that offers the elusive and very valuable benefit of time. Providers and enterprises alike need to consider their current data center architecture and whether it supports the notion of such a dynamic tier. If not, it’s time to re-evaluate and determine whether a strategic change of direction is necessary to ensure the ability of operations and security teams to address operational risk as quickly and efficiently as possible. &lt;/p&gt;  &lt;hr color="#fdeef4" width="100%" noshade="noshade" /&gt;&lt;center&gt;   &lt;table border="0" cellspacing="0" cellpadding="2" width="324"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="168"&gt;Connect with Lori: &lt;/td&gt;          &lt;td valign="top" width="154"&gt;Connect with &lt;a title="F5 Networks" href="http://www.f5.com/" rel="" target="_blank"&gt;F5&lt;/a&gt;: &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="168"&gt;&lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_linkedin[1]" border="0" alt="o_linkedin[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_linkedin.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="https://plus.google.com/110169987847611210070"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="google " border="0" alt="google " src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Why-Cant-We-Have-Nice-Things-Too_37AC/google+_3.jpg" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/f5/macv"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_rss[1]" border="0" alt="o_rss[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_rss.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_facebook[1]" border="0" alt="o_facebook[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_facebook.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_twitter[1]" border="0" alt="o_twitter[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_twitter.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;/td&gt;          &lt;td valign="top" width="154"&gt; &lt;a href="http://bitly.com/nIsT1z?r=bb"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_facebook[1]" border="0" alt="o_facebook[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_facebook.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/ne6W2R?r=bb"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_twitter[1]" border="0" alt="o_twitter[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_twitter.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/nx3XV1?r=bb/"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_slideshare[1]" border="0" alt="o_slideshare[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_slideshare.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/reFTmf?r=bb"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_youtube[1]" border="0" alt="o_youtube[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_youtube.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://links.f5.com/f5gplus"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="google " border="0" alt="google " src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Why-Cant-We-Have-Nice-Things-Too_37AC/google+_3.jpg" width="24" height="24" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/center&gt;  &lt;p&gt;Related blogs &amp;amp; articles: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/11/16/at-the-intersection-of-cloud-and-controlhellip.aspx"&gt;At the Intersection of Cloud and Control…&lt;/a&gt;  &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/11/21/the-full-proxy-data-center-architecture.aspx"&gt;The Full-Proxy Data Center Architecture&lt;/a&gt;  &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/11/23/the-pythagorean-theorem-of-operational-risk.aspx"&gt;The Pythagorean Theorem of Operational Risk&lt;/a&gt;  &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/10/31/the-future-of-cloud-infrastructure-as-a-platform.aspx"&gt;The Future of Cloud: Infrastructure as a Platform&lt;/a&gt;  &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/10/12/infrastructure-architecture-whitelisting-with-json-and-api-keys.aspx"&gt;Infrastructure Architecture: Whitelisting with JSON and API Keys&lt;/a&gt;  &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/05/09/if-security-in-the-cloud-were-handled-like-car-accidents.aspx"&gt;If Security in the Cloud Were Handled Like Car Accidents&lt;/a&gt;  &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/david/archive/2012/01/09/vu903934-ndash-post-of-doom.aspx"&gt;VU#903934 – Post of Doom&lt;/a&gt;  &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/08/26/f5-friday-zero-day-apache-exploit-zero-problem.aspx"&gt;F5 Friday: Zero-Day Apache Exploit? Zero-Problem&lt;/a&gt;  &lt;/li&gt; &lt;/ul&gt;  &lt;hr color="#fdeef4" 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:77c821f9-a904-4f71-94b4-44b3f525047c" 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/MacVittie" rel="tag"&gt;MacVittie&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/architecture" rel="tag"&gt;architecture&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/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;a href="http://technorati.com/tags/threat+mitigation" rel="tag"&gt;threat mitigation&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application+delivery" rel="tag"&gt;application delivery&lt;/a&gt;,&lt;a href="http://technorati.com/tags/blog" rel="tag"&gt;blog&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1102508.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lori MacVittie</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/macvittie/archive/2012/02/08/the-potential-ramifications-of-platform-based-vulnerabilities-on-cloud-computing.aspx</guid>
            <pubDate>Wed, 08 Feb 2012 13:26:00 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/1102508.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/macvittie/archive/2012/02/08/the-potential-ramifications-of-platform-based-vulnerabilities-on-cloud-computing.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/1102508.aspx</wfw:commentRss>
            <trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/1102508.aspx</trackback:ping>
        </item>
        <item>
            <title>Mobile versus Mobile: An Identity Crisis</title>
            <link>http://devcentral.f5.com/weblogs/macvittie/archive/2012/01/16/mobile-versus-mobile-an-identity-crisis.aspx</link>
            <description>&lt;p&gt;#mobile&lt;em&gt;The expansive options consumers revel in creates an identity crisis for IT that is best resolved via context-aware mobile mediation. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Are-Tablets-Mobile-or-Not_234E/mobile%20vs%20mobile_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 5px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="mobile vs mobile" border="0" alt="mobile vs mobile" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Are-Tablets-Mobile-or-Not_234E/mobile%20vs%20mobile_thumb.png" width="284" height="155" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Back in the days of the browser wars, when standards were still largely ignored and the battle for the desktop was highly competitive, developers had to make choices and compromises. They could either write extensive client-side scripts to detect the user’s browser and address the peculiarities of that environment or they could simply ignore them with a disclaimer that “this site (works best when viewed in | was written for) browser X.” &lt;/p&gt;  &lt;p&gt;As time went by, developers were able to discontinue this annoying practice as browser features converged and a common, standardized platform emerged upon which all applications were able to be delivered to any popular browser without concern. &lt;/p&gt;  &lt;p&gt;Then mobile phones appeared, and the user experience degraded again, this time driven by the relatively feeble processing power of the platform. Small screens aside, the memory and processing power available on a mobile phone was such that – when combined with a constrained networking environment – the delivery of increasingly chunky, graphic heavy, interactive applications to mobile phones was simply a bad idea for both organizations and its visitors. &lt;/p&gt;  &lt;p&gt;Developers and web ops returned to the inspection of HTTP headers to determine whether or not a visitor was using a mobile platform, and began writing leaner, more compact interfaces specifically for those platforms. &lt;/p&gt;  &lt;p&gt;Enter tablets. Neither desktop nor phone, these admittedly mobile platforms are compact but nearly as powerful as their overweight tethered cousins without sacrificing the mobility of their anorexic form-factor brethren. &lt;/p&gt;  &lt;h4&gt;&lt;font color="#d16349"&gt;&lt;a href="http://stackoverflow.com/questions/5341637/how-do-detect-android-tablets-in-general-useragent"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="mobile-vs-mobile" border="0" alt="mobile-vs-mobile" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Are-Tablets-Mobile-or-Not_234E/mobile-vs-mobile_3.png" width="522" height="298" /&gt;&lt;/a&gt;COMMON GROUND: MOBILE OPERATING SYSTEM &lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;Tablets are certainly able to take advantage of emerging web application standards such as HTML5 to deliver a full, rich interactive desktop-style experience on a mobile platform, but are rarely offered it. They are by default offered up a mobile experience because of a common element: the operating system. Even if the operating system was masked, still they’ll find out by checking a second, lesser known HTTP header: &lt;strong&gt;HTTP_X_WAP_PROFILE. &lt;/strong&gt;And if not there, then potentially in &lt;strong&gt;HTTP_PROFILE. &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Unfortunately, this is not necessarily the fault of the developer. There are no standards prescribing what should or should not identity a mobile device, and thus manufacturers are left to their own devices (pun only somewhat intended). &lt;/p&gt;  &lt;p&gt;There is no reliable way, today, to identify a mobile device accurately. Developers are left writing complex scripts that strip apart user agents, profile strings and whatever other contextual data they can extract from HTTP headers to determine how best to serve up content. &lt;/p&gt;  &lt;p&gt;That often means visitors are served content that is not wholly appropriate for their device. Even if they could, the market is so volatile at this point that it’s a sure bet that a new device will enter soon that requires modification to the application yet again. More code, more string manipulation, more latency in processing. &lt;/p&gt;  &lt;h4&gt;&lt;font color="#d16349"&gt;CONTEXT-AWARE MOBILE MEDIATION  &lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;It would be nice if developers could simply receive accurate inbound HTTP headers. Headers that clearly identify the device not only from an operating system perspective, but from a form-factor and network perspective in a standard way. But there are no standards, yet, and may never be. Thus a solution may be found in imposing standards upon inbound requests specifically for developers to better address the disparities in resolution, functionality, and performance between the various mobile device types. &lt;/p&gt;  &lt;p&gt;This requires some amount of pre-planning. Design, if you will, or architecture up front. It requires that developers and devops sit down together and determine a standard means of communicating information between infrastructure and the applications it supports. Consider the possibility of two custom HTTP headers, one identifying the network type and one specifying form-factor and device: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;HTTP_X_NETWORK&lt;/strong&gt; = “WIFI | MOBILE | LAN” &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;HTTP_X_DEVICE&lt;/strong&gt;  = “TABLET | PHONE | DESKTOP” &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Are-Tablets-Mobile-or-Not_234E/context-aware-mobile-mediation_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="context-aware-mobile-mediation" border="0" alt="context-aware-mobile-mediation" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Are-Tablets-Mobile-or-Not_234E/context-aware-mobile-mediation_thumb.png" width="386" height="262" /&gt;&lt;/a&gt;If developers could rely on these two custom HTTP headers to exist for every inbound request, they could then develop applications based upon these characteristics that were more appropriate for the given device and network over which the device connected. Implementation requires only minimal inspection and insertion on a context-aware mediating device such as a &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; capable &lt;a title="I CAN HAZ DEFINISHUN of SoftADC and vADC? " href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/11/soft-adc-vadc-definition.aspx" rel="" target="_blank"&gt;application delivery controller&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Because the application delivery controller is topologically positioned in a strategic point of control, it has visibility into the network, client, and server-side environments. This gives it the ability to better interpret and execute policies that govern the delivery of applications to optimize performance and assure availability, but it also provides the ability to extract and share pertinent data with applications and other infrastructure. This data can be shared in a number of ways, including modification of the payload, of the headers, insertion of new headers, removal of old headers, etc… &lt;/p&gt;  &lt;p&gt;The flexibility inherent in network-side scripting solutions, particularly those capable of side-band connectivity, allows devops and developers to design and develop a solution that works for them – in their environment. &lt;/p&gt;  &lt;p&gt;The advantage to such a solution lies not only in more accurate, actionable data to share with applications, but in its ability to easily be modified without negatively impacting the application. A second advantage is the ability of developers to also take into consideration the network characteristics of the mobile device, data generally not available or, if available, generally inaccurate. A mobile device today may be accessing an application via WiFi or a mobile network, and that piece of information is quite pertinent as the performance and capabilities of each network are quite different and have a significant impact on the end-user experience from a delivery perspective. &lt;/p&gt;  &lt;p&gt;Yet this data is not available by default to developers and it cannot reliably be inferred from device type. By leveraging a context-aware mediating solution, however, it becomes possible to share this data with developers such that they are able to take that information into consideration when putting together a response to a given request. &lt;/p&gt;  &lt;p&gt;While not a panacea, such a solution certainly provides a more consistent and overall accurate environment in which to deliver applications to the increasingly broad and diverse spectrum of mobile devices. &lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;&lt;center&gt;   &lt;table border="0" cellspacing="0" cellpadding="2" width="324"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="168"&gt;Connect with Lori: &lt;/td&gt;          &lt;td valign="top" width="154"&gt;Connect with &lt;a title="F5 Networks" href="http://www.f5.com/" rel="" target="_blank"&gt;F5&lt;/a&gt;: &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="168"&gt;&lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_linkedin[1]" border="0" alt="o_linkedin[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_linkedin.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="https://plus.google.com/110169987847611210070"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="google " border="0" alt="google " src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Why-Cant-We-Have-Nice-Things-Too_37AC/google+_3.jpg" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/f5/macv"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_rss[1]" border="0" alt="o_rss[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_rss.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_facebook[1]" border="0" alt="o_facebook[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_facebook.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_twitter[1]" border="0" alt="o_twitter[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_twitter.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;/td&gt;          &lt;td valign="top" width="154"&gt; &lt;a href="http://bitly.com/nIsT1z?r=bb"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_facebook[1]" border="0" alt="o_facebook[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_facebook.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/ne6W2R?r=bb"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_twitter[1]" border="0" alt="o_twitter[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_twitter.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/nx3XV1?r=bb/"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_slideshare[1]" border="0" alt="o_slideshare[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_slideshare.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/reFTmf?r=bb"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_youtube[1]" border="0" alt="o_youtube[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_youtube.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://links.f5.com/f5gplus"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="google " border="0" alt="google " src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Why-Cant-We-Have-Nice-Things-Too_37AC/google+_3.jpg" width="24" height="24" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/center&gt;  &lt;p&gt;Related blogs &amp;amp; articles: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/12/02/grokking-the-goodness-of-mapreduce-and-spdy.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Fire-and-Ice-Silk-and-Chrome-SPDY-and-HT_5751/Document-icon_b8df144b-2165-4daf-a947-a55ac66bed5a.png" width="16" height="16" /&gt; &lt;/a&gt;Stack Overflow: &lt;a href="http://stackoverflow.com/questions/5341637/how-do-detect-android-tablets-in-general-useragent"&gt;How do detect Android Tablets in general. Useragent?&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/12/02/grokking-the-goodness-of-mapreduce-and-spdy.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Fire-and-Ice-Silk-and-Chrome-SPDY-and-HT_5751/Document-icon_b8df144b-2165-4daf-a947-a55ac66bed5a.png" width="16" height="16" /&gt; &lt;/a&gt;&lt;a href="http://news.cnet.com/8301-30685_3-57350968-264/mobile-browsing-reaches-all-time-high/"&gt;Mobile Browsing Reaches All Time High&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/12/02/grokking-the-goodness-of-mapreduce-and-spdy.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Fire-and-Ice-Silk-and-Chrome-SPDY-and-HT_5751/Document-icon_b8df144b-2165-4daf-a947-a55ac66bed5a.png" width="16" height="16" /&gt; &lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/12/20/the-magic-of-mobile-cloud.aspx"&gt;The Magic of Mobile Cloud&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/12/02/grokking-the-goodness-of-mapreduce-and-spdy.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Fire-and-Ice-Silk-and-Chrome-SPDY-and-HT_5751/Document-icon_b8df144b-2165-4daf-a947-a55ac66bed5a.png" width="16" height="16" /&gt; &lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/10/31/understanding-network-side-scripting.aspx"&gt;Understanding network-side scripting&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/12/02/grokking-the-goodness-of-mapreduce-and-spdy.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Fire-and-Ice-Silk-and-Chrome-SPDY-and-HT_5751/Document-icon_b8df144b-2165-4daf-a947-a55ac66bed5a.png" width="16" height="16" /&gt; &lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/11/16/at-the-intersection-of-cloud-and-controlhellip.aspx"&gt;At the Intersection of Cloud and Control…&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/12/02/grokking-the-goodness-of-mapreduce-and-spdy.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Fire-and-Ice-Silk-and-Chrome-SPDY-and-HT_5751/Document-icon_b8df144b-2165-4daf-a947-a55ac66bed5a.png" width="16" height="16" /&gt; &lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/02/09/cloud-tiered-architectural-models-are-bad-except-when-they-arenrsquot.aspx"&gt;Cloud-Tiered Architectural Models are Bad Except When They Aren’t&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/12/02/grokking-the-goodness-of-mapreduce-and-spdy.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Fire-and-Ice-Silk-and-Chrome-SPDY-and-HT_5751/Document-icon_b8df144b-2165-4daf-a947-a55ac66bed5a.png" width="16" height="16" /&gt; &lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/12/05/wils-wpo-versus-feo.aspx"&gt;WILS: WPO versus FEO&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/12/02/grokking-the-goodness-of-mapreduce-and-spdy.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Fire-and-Ice-Silk-and-Chrome-SPDY-and-HT_5751/Document-icon_b8df144b-2165-4daf-a947-a55ac66bed5a.png" width="16" height="16" /&gt; &lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/10/10/fire-and-ice-silk-and-chrome-spdy-and-http.aspx"&gt;Fire and Ice, Silk and Chrome, SPDY and HTTP&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/12/02/grokking-the-goodness-of-mapreduce-and-spdy.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Fire-and-Ice-Silk-and-Chrome-SPDY-and-HT_5751/Document-icon_b8df144b-2165-4daf-a947-a55ac66bed5a.png" width="16" height="16" /&gt; Grokking the Goodness of MapReduce and SPDY&lt;/a&gt;&lt;/li&gt; &lt;/ul&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:f0e87343-9bf6-413b-bb9f-5042482040a2" 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/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/mobile" rel="tag"&gt;mobile&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HTML5" rel="tag"&gt;HTML5&lt;/a&gt;,&lt;a href="http://technorati.com/tags/tablet" rel="tag"&gt;tablet&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/performance" rel="tag"&gt;performance&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/network-side+scripting" rel="tag"&gt;network-side scripting&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/strategic+point+of+control" rel="tag"&gt;strategic point of control&lt;/a&gt;,&lt;a href="http://technorati.com/tags/blog" rel="tag"&gt;blog&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1102502.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lori MacVittie</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/macvittie/archive/2012/01/16/mobile-versus-mobile-an-identity-crisis.aspx</guid>
            <pubDate>Mon, 16 Jan 2012 13:00:00 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/1102502.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/macvittie/archive/2012/01/16/mobile-versus-mobile-an-identity-crisis.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/1102502.aspx</wfw:commentRss>
            <trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/1102502.aspx</trackback:ping>
        </item>
        <item>
            <title>F5 Friday: Creating a DNS Blackhole. On Purpose</title>
            <link>http://devcentral.f5.com/weblogs/macvittie/archive/2012/01/06/dns-blackhole-irules-solution.aspx</link>
            <description>&lt;p&gt;#infosec #DNS #v11 &lt;em&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/01/24/dns-is-like-your-mom.aspx"&gt;DNS is like your mom&lt;/a&gt;, remember? Sometimes she knows better.&lt;/em&gt; &lt;em&gt; &lt;/em&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-DNS-Blackhole_4A65/f5friday_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="f5friday" border="0" alt="f5friday" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-DNS-Blackhole_4A65/f5friday_thumb.png" width="240" height="86" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Generally speaking, blackhole routing is a problem, not a solution. A route to nowhere is not exactly a good thing, after all. But in some cases it’s an approved and even recommended solution, usually implemented as a means to filter out bad packets at the routing level that might be malformed or are otherwise dangerous to pass around inside the data center. &lt;/p&gt;  &lt;p&gt;This technique is also used at the DNS layer as a means to prevent responding to queries with known infected or otherwise malicious sites. Generally speaking, DNS does nothing more than act like a phone book; you ask for an address, it gives it to you. That may have been acceptable through the last decade, but it is increasingly undesirable as it often unwittingly serves as part of the distribution network for malware and other malicious intent. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-DNS-Blackhole_4A65/quotation-marks_2.jpg"&gt;&lt;em&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="quotation-marks" border="0" alt="quotation-marks" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-DNS-Blackhole_4A65/quotation-marks_thumb.jpg" width="115" height="86" /&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;In &lt;/em&gt;&lt;a href="http://en.wikipedia.org/wiki/Computer_networking"&gt;&lt;em&gt;networking&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, &lt;b&gt;black holes&lt;/b&gt; refer to places in the network where incoming &lt;/em&gt;&lt;a href="http://en.wikipedia.org/wiki/Internet_traffic"&gt;&lt;em&gt;traffic&lt;/em&gt;&lt;/a&gt;&lt;em&gt; is silently discarded (or "dropped"), without informing the source that the data did not reach its intended recipient.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;When examining the &lt;/em&gt;&lt;a href="http://en.wikipedia.org/wiki/Network_topology"&gt;&lt;em&gt;topology of the network&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, the black holes themselves are invisible, and can only be detected by monitoring the lost traffic; hence the name.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;(&lt;a href="http://en.wikipedia.org/wiki/Black_hole_(networking"&gt;http://en.wikipedia.org/wiki/Black_hole_(networking)&lt;/a&gt;) &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;What we’d like to do is prevent DNS servers from returning addresses for sites which we know – or are at least pretty darn sure –  are infected. While we can’t provide such safeguards for everyone (unless you’re the authoritative server for such sites) we can at least better protect the corporate network and users from such sites by ensuring such queries are not answered with the infected addresses. &lt;/p&gt;  &lt;p&gt;Such a solution requires the implementation of a DNS blackhole – a filtering of queries at the DNS level. This can be done using &lt;a href="http://devcentral.f5.com/iRules"&gt;F5 iRules&lt;/a&gt; to inspect queries against a list of known bad sites and returning an internal address for those that match. What’s cool about using iRules to perform this function is the ability to leverage external lookups to perform the inspection. &lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086484/v11-iRules-Intro-to-Sideband-Connections.aspx"&gt;Sideband connections&lt;/a&gt; were introduced in BIG-IP v11 and these connections allow external, i.e. off device, lookups for solutions like this. Such a solution is similar to the way in which you’d want to look up the IP address and/or domain of the sender during an e-mail exchange, to validate the sender is not on the “bad spammer” lists maintained by a variety of organizations and offered as a service.  &lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-DNS-Blackhole_4A65/dns%20blackhole_4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="dns blackhole" border="0" alt="dns blackhole" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-DNS-Blackhole_4A65/dns%20blackhole_thumb_1.png" width="846" height="388" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Jason Rahm &lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086519/v111-DNS-Blackhole-with-iRules.aspx"&gt;recently detailed this solution as architected by Hugh O’Donnel&lt;/a&gt;, complete with iRules, in a DevCentral Tech Tip. You can find a more comprehensive description of the solution as well as the iRules to implement in the tech tip. &lt;/p&gt;  &lt;h4&gt;&lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086519/v111-DNS-Blackhole-with-iRules.aspx"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="techtipicon" border="0" alt="techtipicon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-DNS-Blackhole_4A65/techtipicon_e3a902e0-7127-42f5-a0d5-04f61998d3a1.png" width="22" height="25" /&gt;&lt;/a&gt;&lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1086519/v111-DNS-Blackhole-with-iRules.aspx"&gt;v11.1: DNS Blackhole with iRules&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;Happy (DNS) Routing! &lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;&lt;center&gt;   &lt;table border="0" cellspacing="0" cellpadding="2" width="324"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="168"&gt;Connect with Lori: &lt;/td&gt;          &lt;td valign="top" width="154"&gt;Connect with &lt;a title="F5 Networks" href="http://www.f5.com/" rel="" target="_blank"&gt;F5&lt;/a&gt;: &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="168"&gt;&lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_linkedin[1]" border="0" alt="o_linkedin[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_linkedin.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="https://plus.google.com/110169987847611210070"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="google " border="0" alt="google " src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Why-Cant-We-Have-Nice-Things-Too_37AC/google+_3.jpg" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/f5/macv"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_rss[1]" border="0" alt="o_rss[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_rss.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_facebook[1]" border="0" alt="o_facebook[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_facebook.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_twitter[1]" border="0" alt="o_twitter[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_twitter.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;/td&gt;          &lt;td valign="top" width="154"&gt; &lt;a href="http://bitly.com/nIsT1z?r=bb"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_facebook[1]" border="0" alt="o_facebook[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_facebook.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/ne6W2R?r=bb"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_twitter[1]" border="0" alt="o_twitter[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_twitter.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/nx3XV1?r=bb/"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_slideshare[1]" border="0" alt="o_slideshare[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_slideshare.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/reFTmf?r=bb"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_youtube[1]" border="0" alt="o_youtube[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_youtube.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://links.f5.com/f5gplus"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="google " border="0" alt="google " src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Why-Cant-We-Have-Nice-Things-Too_37AC/google+_3.jpg" width="24" height="24" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/center&gt;  &lt;p&gt;Related blogs &amp;amp; articles: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/01/06/attacks-cannot-be-prevented.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/a879db3b4ed8_7A53/Document-icon_c67c4eab-b6d0-4229-8d51-3c3c75fa1861.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/09/02/f5-friday-no-dns-no-hellip-anything.aspx"&gt;F5 Friday: No DNS? No … Anything.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/a879db3b4ed8_7A53/f5-red-125_2.jpg"&gt;&lt;img title="f5-red-125" border="0" alt="f5-red-125" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/a879db3b4ed8_7A53/f5-red-125_thumb.jpg" width="16" height="15" /&gt;&lt;/a&gt; &lt;a href="http://www.f5.com/products/big-ip/v11.html"&gt;BIG-IP v11 Information&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2011/08/24/audio-white-paper-high-performance-dns-services-in-big-ip-version.aspx"&gt;&lt;img title="webcast" border="0" alt="webcast" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/a879db3b4ed8_7A53/webcast_d232491a-b98d-4fd0-9bac-24bb966c165f.png" width="16" height="16" /&gt; High-Performance DNS Services in BIG-IP Version 11&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/01/06/attacks-cannot-be-prevented.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/a879db3b4ed8_7A53/Document-icon_bc80b84e-3c1f-422f-b3ad-00fcae7a1446.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/01/24/dns-is-like-your-mom.aspx"&gt;DNS is Like Your Mom&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/01/06/attacks-cannot-be-prevented.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/a879db3b4ed8_7A53/Document-icon_be4fc764-a3e0-4bca-b7f7-a8027efb141c.png" width="16" height="16" /&gt; &lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/12/17/f5-friday-multi-layer-security-for-multi-layer-attacks.aspx"&gt;F5 Friday: Multi-Layer Security for Multi-Layer Attacks&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/01/06/attacks-cannot-be-prevented.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/a879db3b4ed8_7A53/Document-icon_1bbd4102-de89-4678-a98d-fa120cb89c3d.png" width="16" height="16" /&gt; &lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/12/16/the-many-faces-of-ddos-variations-on-a-theme-or.aspx"&gt;The Many Faces of DDoS: Variations on a Theme or Two&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/a879db3b4ed8_7A53/pdf-icon_7.png"&gt;&lt;img title="pdf-icon" border="0" alt="pdf-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/a879db3b4ed8_7A53/pdf-icon_thumb_2.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://www.f5.com/pdf/white-papers/dns-services-big-ip-v11-wp.pdf"&gt;High-Performance DNS Services in BIG-IP Version 11&lt;/a&gt; &lt;/li&gt; &lt;/ul&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:44b8c11c-5469-4112-a9f6-595cab752a64" 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/F5+Friday" rel="tag"&gt;F5 Friday&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&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/routing" rel="tag"&gt;routing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/blackhole" rel="tag"&gt;blackhole&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/iRules" rel="tag"&gt;iRules&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/security" rel="tag"&gt;security&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/blog" rel="tag"&gt;blog&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1102500.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lori MacVittie</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/macvittie/archive/2012/01/06/dns-blackhole-irules-solution.aspx</guid>
            <pubDate>Fri, 06 Jan 2012 12:32:00 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/1102500.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/macvittie/archive/2012/01/06/dns-blackhole-irules-solution.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/1102500.aspx</wfw:commentRss>
            <trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/1102500.aspx</trackback:ping>
        </item>
        <item>
            <title>F5 Friday: Load Balancing MySQL with F5 BIG-IP</title>
            <link>http://devcentral.f5.com/weblogs/macvittie/archive/2011/12/09/f5-friday-load-balancing-mysql-with-f5-big-ip.aspx</link>
            <description>&lt;p&gt;&lt;em&gt;Scaling MySQL just got a whole lot easier  &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/7f7bdae668c3_29E2/f5friday_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="f5friday" border="0" alt="f5friday" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/7f7bdae668c3_29E2/f5friday_thumb.png" width="240" height="86" /&gt;&lt;/a&gt;&lt;a title="" href="http://www.f5.com/glossary/load-balancing.html" rel=""&gt;load balancing&lt;/a&gt; MySQL – any database, really – is not a trivial task. Generally speaking one does not simply round robin your way through a cluster of MySQL databases as a means to achieve scalability. It is databases, in fact, that have driven a wide variety of scalability patterns such as sharding and partitioning to achieve the ultimate goal of high-performance and scalability simultaneously. &lt;/p&gt;  &lt;p&gt;Unfortunately, most folks don’t architect their applications with scalability in mind. A single database is all that’s necessary at first, and because of the way in which the application interacts with the database, it doesn’t make sense to code in support for multiple database instances, such as is often implemented with a MySQL master-slave cluster. That’s because the application has to actually open a connection to the database in question. If you’re only starting with one database, you really can’t code in a connection to a separate instance. &lt;/p&gt;  &lt;p&gt;Eventually that application’s usage grows and the demands  upon the database require a more scalable approach. Enter the MySQL master/slave relationship. A typical configuration is to maintain the master as the “write” database, i.e. all updates and/or inserts must use the master, while the slave instance is used as a “read only” instance. &lt;/p&gt;  &lt;p&gt;Obviously this means the application code must be changed to support this kind of functional sharding. Unless you leverage network server virtualization from a load balancing service capable of acting as a &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/11/21/the-full-proxy-data-center-architecture.aspx"&gt;full-proxy&lt;/a&gt; at layer 7 (application) like BIG-IP. &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/macvittie/Windows-Live-Writer/7f7bdae668c3_29E2/database%20load%20balancing_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="database load balancing" border="0" alt="database load balancing" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/7f7bdae668c3_29E2/database%20load%20balancing_thumb.png" width="803" height="425" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This solution leverages iRules to implement database load balancing. While this specific example is designed to perform the common functional sharding pattern of read-write separation for a master-slave MySQL cluster, the flexibility of iRules is such that other architectural solutions can easily be designed using the same basic functions. Location based sharding is another popular means of scaling databases, and using the GeoLocation capabilities of BIG-IP along with iRules to inspect and route database requests, it should be a fairly trivial architectural task to implement. &lt;/p&gt;  &lt;p&gt;The ability to further extend sharding or other distribution methodologies for scaling databases without modifying the application itself is a huge bonus for both developers and operations. By decoupling the application from the database, it provides a more flexibility set of scalability domains in which technology targeted scalability strategies can  be leveraged independent of the other layers. This is an important facet of agile infrastructure architecture and should not be underestimated as a benefit of network server virtualization. &lt;/p&gt;  &lt;p&gt;MySQL Load Balancing Resources: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://devcentral.f5.com/wiki/iRules.MySQL-Proxy.ashx"&gt;       &lt;p&gt;&lt;a href="http://devcentral.f5.com/wiki/iRules.MySQL-Proxy.ashx"&gt;MySQL Proxy iRule&lt;/a&gt; &lt;/p&gt;     &lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;p&gt;&lt;a href="http://devcentral.f5.com/wiki/iApp.MySQL-Proxy-iApp.ashx"&gt;MySQL Proxy iApp&lt;/a&gt; (deployment package for BIG-IP v11) &lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;&lt;center&gt;   &lt;table border="0" cellspacing="0" cellpadding="2" width="324"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="168"&gt;Connect with Lori: &lt;/td&gt;          &lt;td valign="top" width="154"&gt;Connect with &lt;a title="F5 Networks" href="http://www.f5.com/" rel="" target="_blank"&gt;F5&lt;/a&gt;: &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="168"&gt;&lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_linkedin[1]" border="0" alt="o_linkedin[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_linkedin.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="https://plus.google.com/110169987847611210070"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="google " border="0" alt="google " src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Why-Cant-We-Have-Nice-Things-Too_37AC/google+_3.jpg" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/f5/macv"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_rss[1]" border="0" alt="o_rss[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_rss.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_facebook[1]" border="0" alt="o_facebook[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_facebook.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_twitter[1]" border="0" alt="o_twitter[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_twitter.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;/td&gt;          &lt;td valign="top" width="154"&gt; &lt;a href="http://bitly.com/nIsT1z?r=bb"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_facebook[1]" border="0" alt="o_facebook[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_facebook.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/ne6W2R?r=bb"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_twitter[1]" border="0" alt="o_twitter[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_twitter.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/nx3XV1?r=bb/"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_slideshare[1]" border="0" alt="o_slideshare[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_slideshare.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/reFTmf?r=bb"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_youtube[1]" border="0" alt="o_youtube[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_youtube.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://links.f5.com/f5gplus"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="google " border="0" alt="google " src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Why-Cant-We-Have-Nice-Things-Too_37AC/google+_3.jpg" width="24" height="24" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/center&gt;  &lt;p&gt;Related blogs &amp;amp; articles: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_29.png"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_thumb_9.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/11/21/the-full-proxy-data-center-architecture.aspx"&gt;The Full-Proxy Data Center Architecture&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_29.png"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_thumb_9.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/07/08/infrastructure-scalability-pattern-sharding-streams.aspx"&gt;Infrastructure Scalability Pattern: Sharding Streams&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;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Load-Balancing-Fu-Beware-the-Algorithm-a_30F5/Document-icon_3da35ae1-c9f8-4fab-a0f2-6c9f5071336b.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/11/01/infrastructure-scalability-pattern-sharding-sessions.aspx"&gt;Infrastructure Scalability Pattern: Sharding Sessions&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;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Load-Balancing-Fu-Beware-the-Algorithm-a_30F5/Document-icon_23d56711-5fac-4ebf-901b-e616786852e0.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/10/04/infrastructure-scalability-pattern-partition-by-function-or-type.aspx"&gt;Infrastructure Scalability Pattern: Partition by Function or Type&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;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Load-Balancing-Fu-Beware-the-Algorithm-a_30F5/Document-icon_3da35ae1-c9f8-4fab-a0f2-6c9f5071336b.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/06/13/it-as-a-service-a-stateless-infrastructure-architecture-model.aspx"&gt;IT as a Service: A Stateless Infrastructure Architecture Model&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_29.png"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_thumb_9.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/11/18/f5-friday-platform-versus-product.aspx"&gt;F5 Friday: Platform versus Product&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_29.png"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_thumb_9.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/11/16/at-the-intersection-of-cloud-and-controlhellip.aspx"&gt;At the Intersection of Cloud and Control…&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_29.png"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_thumb_9.png" width="16" height="16" /&gt;&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; 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/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_29.png"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_thumb_9.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/category/1084420.aspx"&gt;All F5 Friday Posts on DevCentral&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_29.png"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_thumb_9.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/10/25/why-single-stack-infrastructure-sucks.aspx"&gt;Why Single-Stack Infrastructure Sucks&lt;/a&gt;&lt;/li&gt; &lt;/ul&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:9eca205e-85a9-41ac-b09b-87cb2f46e6f4" 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/F5+Friday" rel="tag"&gt;F5 Friday&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MySQL" rel="tag"&gt;MySQL&lt;/a&gt;,&lt;a href="http://technorati.com/tags/sharding" rel="tag"&gt;sharding&lt;/a&gt;,&lt;a href="http://technorati.com/tags/database" rel="tag"&gt;database&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/application+delivery+tier" rel="tag"&gt;application delivery tier&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/architecture" rel="tag"&gt;architecture&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iApp" rel="tag"&gt;iApp&lt;/a&gt;,&lt;a href="http://technorati.com/tags/v11" rel="tag"&gt;v11&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1102436.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lori MacVittie</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/macvittie/archive/2011/12/09/f5-friday-load-balancing-mysql-with-f5-big-ip.aspx</guid>
            <pubDate>Fri, 09 Dec 2011 13:41:00 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/1102436.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/macvittie/archive/2011/12/09/f5-friday-load-balancing-mysql-with-f5-big-ip.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/1102436.aspx</wfw:commentRss>
            <trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/1102436.aspx</trackback:ping>
        </item>
        <item>
            <title>F5 Friday: Platform versus Product</title>
            <link>http://devcentral.f5.com/weblogs/macvittie/archive/2011/11/18/f5-friday-platform-versus-product.aspx</link>
            <description>&lt;p&gt;&lt;em&gt;There’s a significant difference between a platform and a product, especially when it comes to architecting a dynamic data center &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/0f5b6cfb4679_8D2E/f5friday_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="f5friday" border="0" alt="f5friday" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/0f5b6cfb4679_8D2E/f5friday_thumb.png" width="240" height="86" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In the course of nearly a thousand blogs it’s quite likely you’ve seen BIG-IP referenced as a platform, and almost never as a product. There’s a reason for that, and it’s one that is increasingly becoming important as organizations begin to look at some major transformations to their data center architecture. &lt;/p&gt;  &lt;p&gt;It’s not that BIG-IP isn’t a product. Ultimately, of course, it is in the traditional sense of the word. But it’s also a platform, an infrastructure platform, designed specifically to allow the deployment of application delivery-related services in a modular fashion. In the most general way, modern browsers are products &lt;em&gt;and &lt;/em&gt;platforms, as they provide an application framework through which additional plug-ins (modules) can be deployed. BIG-IP is similar to this model with the noted exception that its internal application framework is intended for use by &lt;a title="F5 Networks" href="http://www.f5.com/" rel="" target="_blank"&gt;F5&lt;/a&gt; engineers to develop new and integrate existing functionality as “plug-ins” within the core architectural framework we call TMOS™. &lt;/p&gt;  &lt;p&gt;There are myriad reasons why this distinction is important. Primarily among them is a unified internal architecture implies internal, high-speed interconnects that allow inbound and &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/0f5b6cfb4679_8D2E/zero-copy-theory_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 10px 0px 0px 10px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="zero-copy-theory" border="0" alt="zero-copy-theory" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/0f5b6cfb4679_8D2E/zero-copy-theory_thumb.png" width="210" height="240" /&gt;&lt;/a&gt;outbound data to be shared across modules (plug-ins) without incurring the overhead of network-layer communication. Many developers can explain the importance of zero-copy operations as it relates to performance. Those that can’t will still likely be able to describe the difference between &lt;em&gt;pass by reference&lt;/em&gt; and &lt;em&gt;pass by value&lt;/em&gt; which, in many respects, has similar performance implications as the former simply passes a pointer to a memory location and the latter makes a copy. It’s similar to the difference between collaborative editing in Google Docs and tracking revisions in Word via e-mail – the former acts on a single, shared copy while the latter passes around the entire document. &lt;/p&gt;  &lt;p&gt;Obviously, working on the same document at the same time is more efficient and ultimately faster than the alternative of passing around a complete copy and waiting for it to return, marked up with changes. &lt;/p&gt;  &lt;h4&gt;&lt;font color="#c0504d"&gt;FROM THEORY to PRACTICE &lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;This theory translates well to the architectural principles behind TMOS and the &lt;a href="http://www.f5.com/products/big-ip/"&gt;BIG-IP&lt;/a&gt; platform: inbound and outbound data is shared across modules (plug-ins) in order to reduce the overhead associated with traditional network-based architectures that chain multiple products together. While the end-result may be similar, performance will certainly suffer and the loss of context incurred by architectural chaining may negatively impact the effectiveness (not to mention capabilities) of security-related functions. &lt;/p&gt;  &lt;p&gt;The second piece of the platform puzzle are programmatic interfaces for external, i.e. third-party, development. This is the piece of the puzzle that makes a platform &lt;em&gt;extensible&lt;/em&gt;. F5 TMOS provides for this with &lt;a href="http://devcentral.f5.com/iRules"&gt;iRules&lt;/a&gt;, a programmatic scripting language that can be used to do, well, just about anything you want to do to inbound and outbound traffic. Whether it’s manipulating HTML, JSON, or HTTP headers or inspecting and modifying IP packets (disclaimer: we are not responsible for the anger of your security and/or network team for doing this without their involvement), iRules allows you to deploy unique functionality for just about any situation you can think of. Most often these capabilities are used to mitigate emergent threats – such as the &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/10/28/f5-friday-mitigating-the-thc-ssl-dos-threat.aspx"&gt;THC SSL Renegotiation vulnerability&lt;/a&gt; – but they are also used to perform a variety of operational and application-specific tasks, such as redirection and holistic error-handling. And of course, who could forget my favorite, the &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/05/05/your-load-balancer-wants-to-take-a-level-of-fighter.aspx"&gt;random dice roll iRule&lt;/a&gt;. While certainly not of value to most organizations, such efforts can be good for learning. (That’s my story and I’m sticking to it.) &lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/0f5b6cfb4679_8D2E/tmos2_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="tmos2" border="0" alt="tmos2" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/0f5b6cfb4679_8D2E/tmos2_thumb.png" width="438" height="245" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;TMOS is a full proxy, and is unique in its ability to inspect and control entire application conversations. This enables F5 to offer an integrated, operationally consistent solution that can act based on the real time context of the user, network, and application across a variety of security, performance, and availability concerns. &lt;/p&gt;  &lt;p&gt;That means access control and application security as well as &lt;a title="" href="http://www.f5.com/glossary/load-balancing.html" rel=""&gt;load balancing&lt;/a&gt; and DNS services leverage the same operational model, the same types of policies, the same environment across all services regardless of location or form-factor. iRules can simultaneously interact with DNS and WAF policies, assuming both &lt;a href="http://www.f5.com/products/big-ip/global-traffic-manager.html"&gt;BIG-IP GTM&lt;/a&gt; and &lt;a href="http://www.f5.com/products/big-ip/application-security-manager.html"&gt;BIG-IP ASM&lt;/a&gt; are deployed on the same instance. The zero-copy nature of the high-speed bus that acts as the interconnect between the switching backplane and the individual modules insures the highest levels of performance without requiring a traversal of the network. &lt;/p&gt;  &lt;p&gt;Because of the lack of topological control in &lt;a title="" href="http://www.f5.com/solutions/cloud-computing" rel=""&gt;cloud computing &lt;/a&gt; environments – public and private – the need for an application delivery platform is increasing. The volatility in IP topology is true for not only server and storage infrastructure, but increasingly for the network as well, making the architecture of a holistic application delivery network using individually chained components more and more difficult, if not impossible. &lt;/p&gt;  &lt;p&gt;A platform with the ability to scale out and across both physical and virtual instances while simultaneously sharing configuration to ensure operational consistency is a key component to a successful, cloud-based initiative whether its private, public, or a combination of both. A platform provides the flexibility and extensibility required to meet head on the challenges of highly dynamic environments while ensuring the ability to enforce policies that directly address and mitigate &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/02/21/operational-risk-comprises-more-than-just-security.aspx"&gt;operational risk (security, performance, availability)&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;A product, without the extensibility and programmatic nature of a platform, is unable to meet these same challenges. Context is lost in the traversal of the network and performance is always negatively impacted when multiple network-based connections must be made. A platform maintains context and performance while allowing the broadest measure of flexibility in deploying the right solutions at the right time. &lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;&lt;center&gt;   &lt;table border="0" cellspacing="0" cellpadding="2" width="324"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="168"&gt;Connect with Lori: &lt;/td&gt;          &lt;td valign="top" width="154"&gt;Connect with F5: &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="168"&gt;&lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_linkedin[1]" border="0" alt="o_linkedin[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_linkedin.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="https://plus.google.com/110169987847611210070"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="google " border="0" alt="google " src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Why-Cant-We-Have-Nice-Things-Too_37AC/google+_3.jpg" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/f5/macv"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_rss[1]" border="0" alt="o_rss[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_rss.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_facebook[1]" border="0" alt="o_facebook[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_facebook.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_twitter[1]" border="0" alt="o_twitter[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_twitter.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;/td&gt;          &lt;td valign="top" width="154"&gt; &lt;a href="http://bitly.com/nIsT1z?r=bb"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_facebook[1]" border="0" alt="o_facebook[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_facebook.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/ne6W2R?r=bb"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_twitter[1]" border="0" alt="o_twitter[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_twitter.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/nx3XV1?r=bb/"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_slideshare[1]" border="0" alt="o_slideshare[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_slideshare.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/reFTmf?r=bb"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_youtube[1]" border="0" alt="o_youtube[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_youtube.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://links.f5.com/f5gplus"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="google " border="0" alt="google " src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Why-Cant-We-Have-Nice-Things-Too_37AC/google+_3.jpg" width="24" height="24" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/center&gt;  &lt;p&gt;Related blogs &amp;amp; articles: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_29.png"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_thumb_9.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/11/16/at-the-intersection-of-cloud-and-controlhellip.aspx"&gt;At the Intersection of Cloud and Control…&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_29.png"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_thumb_9.png" width="16" height="16" /&gt;&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; 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/12/17/f5-friday-multi-layer-security-for-multi-layer-attacks.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday_410F/Document-icon_4f143618-c263-437a-b8ba-b8dbc66c4d5d.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/06/24/f5-friday-performance-throughput-and-dps.aspx"&gt;F5 Friday: Performance, Throughput and DPS&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_29.png"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_thumb_9.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/10/05/cloud-computing-architectural-limbo.aspx"&gt;Cloud Computing: Architectural Limbo&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_29.png"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_thumb_9.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/02/21/operational-risk-comprises-more-than-just-security.aspx"&gt;Operational Risk Comprises More Than Just Security&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_29.png"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_thumb_9.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/category/1084420.aspx"&gt;All F5 Friday Posts on DevCentral&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_29.png"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_thumb_9.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/10/25/why-single-stack-infrastructure-sucks.aspx"&gt;Why Single-Stack Infrastructure Sucks&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_29.png"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/c6f51bacf689_E392/Document-icon_thumb_9.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/05/05/your-load-balancer-wants-to-take-a-level-of-fighter.aspx"&gt;Your load balancer wants to take a level of fighter and wizard&lt;/a&gt; &lt;/li&gt; &lt;/ul&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:875361c6-cefc-4417-9e96-5f758ecc2ebb" 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/F5+Friday" rel="tag"&gt;F5 Friday&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MacVittie" rel="tag"&gt;MacVittie&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/infrastructure" rel="tag"&gt;infrastructure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application+delivery" rel="tag"&gt;application delivery&lt;/a&gt;,&lt;a href="http://technorati.com/tags/platform" rel="tag"&gt;platform&lt;/a&gt;,&lt;a href="http://technorati.com/tags/operational+risk" rel="tag"&gt;operational risk&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;a href="http://technorati.com/tags/blog" rel="tag"&gt;blog&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1100435.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lori MacVittie</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/macvittie/archive/2011/11/18/f5-friday-platform-versus-product.aspx</guid>
            <pubDate>Fri, 18 Nov 2011 12:16:28 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/1100435.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/macvittie/archive/2011/11/18/f5-friday-platform-versus-product.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/1100435.aspx</wfw:commentRss>
            <trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/1100435.aspx</trackback:ping>
        </item>
        <item>
            <title>F5 Friday: Mitigating the THC SSL DoS Threat</title>
            <link>http://devcentral.f5.com/weblogs/macvittie/archive/2011/10/28/f5-friday-mitigating-the-thc-ssl-dos-threat.aspx</link>
            <description>&lt;p&gt;&lt;em&gt;The THC #SSL #DoS tool exploits the rapid resource consumption nature of the handshake required to establish a secure session using SSL. &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/daee66212032_3576/f5friday_2.png"&gt;&lt;img width="240" height="86" border="0" align="left" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="f5friday" alt="f5friday" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/daee66212032_3576/f5friday_thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A new attack tool was announced this week and continues to follow in the footsteps of resource exhaustion as a means to achieve a DoS against target sites. &lt;/p&gt;
&lt;p&gt;Recent trends in attacks show an increasing interest in maximizing effect while minimizing effort. This means a move away from traditional denial of service attacks that focus on overwhelming sites with traffic and toward attacks that focus on rapidly consuming resources, instead. Both have the same ultimate goal: overwhelming infrastructure, whether server or router or &lt;strong&gt;&amp;lt;&lt;/strong&gt;insert infrastructure component of choice&lt;strong&gt;&amp;gt;&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;The latest SSL-based attack falls into the modern category of denial of service attacks in that it’s not an attempt to overwhelm with traffic, but rather to consume resources on servers such that capacity and the ability to respond to legitimate requests is eliminated. &lt;/p&gt;
&lt;p&gt;The blog post announcing the exploit tools explains: &lt;/p&gt;
&lt;blockquote style="border-left: gray 3px solid; padding-bottom: 5px; padding-left: 15px; padding-right: 5px; margin-left: 10px; padding-top: 5px"&gt;
&lt;p&gt;Establishing a secure SSL connection requires 15x more processing power on the server than on the client.&lt;/p&gt;
&lt;p&gt;THC-SSL-DOS exploits this asymmetric property by overloading the server and knocking it off the Internet.&lt;/p&gt;
&lt;p&gt;This problem affects all SSL implementations today. The vendors are aware of this problem since 2003 and the topic has been widely discussed.&lt;/p&gt;
&lt;p&gt;This attack further exploits the SSL secure Renegotiation feature to trigger thousands of renegotiations via single TCP connection. &lt;/p&gt;
&lt;p&gt;-- &lt;a href="http://blog.insecure.in/?p=1005"&gt;THC SSL DOS Tool Released&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As the blog points out, there is no resolution to this exploit. Common mitigation techniques include the use of an SSL accelerator, i.e. a reverse-proxy capable device with specialized hardware designed to improve the processing capability of SSL and associated cryptographic functions. Modern application delivery controllers like &lt;a href="http://www.f5.com/products/big-ip/"&gt;BIG-IP&lt;/a&gt; include such hardware by default and make use of its performance and capacity-enhancing abilities to offset the operational costs of supporting SSL-secured communication. &lt;/p&gt;
&lt;h4&gt;&lt;font color="#c0504d"&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/daee66212032_3576/ssl%20adc%20mitigation_2.png"&gt;&lt;img width="407" height="346" border="0" align="left" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="ssl adc mitigation" alt="ssl adc mitigation" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/daee66212032_3576/ssl%20adc%20mitigation_thumb.png" /&gt;&lt;/a&gt;BIG-IP MITIGATION &lt;/font&gt;&lt;/h4&gt;
&lt;p&gt;There are actually several ways in which BIG-IP can mitigate the potential impact of this kind of attack. First and foremost is simply its higher capacity for connections and processing of SSL / RSA operations. BIG-IP can manage myriad more connections – secure or not – than a typical web server and thus it may be, depending on the hardware platform on which BIG-IP is deployed, that the mitigation rests merely on having a BIG-IP in the path of the attack. &lt;/p&gt;
&lt;p&gt;In the case that it is not, or if organizations desire a more proactive approach to mitigation, there are two additional options: &lt;/p&gt;
&lt;p&gt;1. SSL renegotiation, which is in part the basis for the attack (it’s what allows a relatively few clients to force the server to consume more and more resources), can be disabled in BIG-IP v11 and v10.2.3. This may break some applications and/or clients so this option may want to be left as a “last resort” or the risks carefully weighed before deploying such a configuration. &lt;/p&gt;
&lt;p&gt;2. An iRule that drops connections over which a client attempts to renegotiate more than five times in a given 60-second interval can be deployed. As noted by David Holmes and the iRule author, Jason Rahm, “By silently dropping the client connection, the iRule causes the attack tool to stall for long periods of time, fully negating the attack.  There should be no false-positives dropped, either, as there are very few valid use cases for renegotiating more than once a minute.”  &lt;/p&gt;
&lt;p&gt;The full details and code for the &lt;a href="http://devcentral.f5.com/iRules"&gt;iRule&lt;/a&gt; can be found in the &lt;a href="http://devcentral.f5.com/"&gt;DevCentral&lt;/a&gt; article “&lt;a href="http://devcentral.f5.com/weblogs/david/archive/2011/05/03/ssl-renegotiation-dos-attack-ndash-an-irule-countermeasure.aspx"&gt;SSL Renegotiation DOS attack – an iRule Countermeasure&lt;/a&gt;” &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight: bold; background-color: rgb(255, 255, 0);"&gt;UPDATE 11/1/2011&lt;/span&gt;: David Holmes has included an optimized version of the iRule in his latest blog, &lt;a href="http://devcentral.f5.com/weblogs/david/archive/2011/10/27/the-ssl-renegotiation-attack-is-back.aspx"&gt;"The SSL Renegotation Attack is Back."&lt;/a&gt; His version uses the normal flow key (instead of a random key), adds a log message, and optimizes memory consumption.  &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Regardless of the mitigating technique used, BIG-IP can provide the operational security necessary to prevent such consumption-leeching attacks from negatively impacting applications by defeating the attack before it reaches application infrastructure.    &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Stay safe!&lt;/p&gt;
&lt;hr width="100%" noshade="noshade" color="#808080" /&gt;
&lt;center&gt;
&lt;table width="308" cellspacing="0" cellpadding="2" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="168" valign="top"&gt;Connect with Lori: &lt;/td&gt;
            &lt;td width="138" valign="top"&gt;Connect with &lt;a title="F5 Networks" href="http://www.f5.com/" rel="" target="_blank"&gt;F5&lt;/a&gt;: &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="168" valign="top"&gt;&lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img width="24" height="24" border="0" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_linkedin[1]" alt="o_linkedin[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_linkedin.png" /&gt;&lt;/a&gt; &lt;a href="https://plus.google.com/110169987847611210070"&gt;&lt;img width="24" height="24" border="0" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="google " alt="google " src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Why-Cant-We-Have-Nice-Things-Too_37AC/google+_3.jpg" /&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/f5/macv"&gt;&lt;img width="24" height="24" border="0" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_rss[1]" alt="o_rss[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_rss.png" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img width="24" height="24" border="0" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_facebook[1]" alt="o_facebook[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_facebook.png" /&gt;&lt;/a&gt; &lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img width="24" height="24" border="0" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_twitter[1]" alt="o_twitter[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_twitter.png" /&gt;&lt;/a&gt; &lt;/td&gt;
            &lt;td width="138" valign="top"&gt; &lt;a href="http://bitly.com/nIsT1z?r=bb"&gt;&lt;img width="24" height="24" border="0" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_facebook[1]" alt="o_facebook[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_facebook.png" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/ne6W2R?r=bb"&gt;&lt;img width="24" height="24" border="0" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_twitter[1]" alt="o_twitter[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_twitter.png" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/nx3XV1?r=bb/"&gt;&lt;img width="24" height="24" border="0" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_slideshare[1]" alt="o_slideshare[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_slideshare.png" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/reFTmf?r=bb"&gt;&lt;img width="24" height="24" border="0" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_youtube[1]" alt="o_youtube[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_youtube.png" /&gt;&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;h5&gt;Related blogs &amp;amp; articles: &lt;/h5&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://apache.slashdot.org/story/11/08/24/2213201/Apache-Warns-Web-Server-Admins-of-DoS-Attack-Tool"&gt;&lt;img width="16" height="16" border="0" title="Document-icon" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/Document-icon_8a00298e-d99f-45f7-a25d-15933165a7be.png" /&gt; &lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/david/archive/2011/05/03/ssl-renegotiation-dos-attack-ndash-an-irule-countermeasure.aspx"&gt;SSL Renegotiation DOS attack – an iRule Countermeasure&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://apache.slashdot.org/story/11/08/24/2213201/Apache-Warns-Web-Server-Admins-of-DoS-Attack-Tool"&gt;&lt;img width="16" height="16" border="0" title="Document-icon" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/Document-icon_8a00298e-d99f-45f7-a25d-15933165a7be.png" /&gt; &lt;/a&gt;&lt;a href="http://seclists.org/fulldisclosure/2011/Oct/779"&gt;Full Disclosure: &lt;em&gt;THC SSL DOS&lt;/em&gt; tool released&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://apache.slashdot.org/story/11/08/24/2213201/Apache-Warns-Web-Server-Admins-of-DoS-Attack-Tool"&gt;&lt;img width="16" height="16" border="0" title="Document-icon" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/Document-icon_8a00298e-d99f-45f7-a25d-15933165a7be.png" /&gt; &lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/08/26/f5-friday-zero-day-apache-exploit-zero-problem.aspx"&gt;F5 Friday: Zero-Day Apache Exploit? Zero-Problem&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/aft/1184542/asg/50/Default.aspx"&gt;&lt;img width="16" height="16" border="0" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="User-Group-icon" alt="User-Group-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/daee66212032_3576/User-Group-icon_48b4a312-efe2-42ce-b9ba-b3aac085498a.png" /&gt; Apache Killer - DevCentral Groups  &lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://apache.slashdot.org/story/11/08/24/2213201/Apache-Warns-Web-Server-Admins-of-DoS-Attack-Tool"&gt;&lt;img width="16" height="16" border="0" title="Document-icon" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/Document-icon_8a00298e-d99f-45f7-a25d-15933165a7be.png" /&gt; &lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/12/16/the-many-faces-of-ddos-variations-on-a-theme-or.aspx"&gt;The Many Faces of DDoS: Variations on a Theme or Two&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://apache.slashdot.org/story/11/08/24/2213201/Apache-Warns-Web-Server-Admins-of-DoS-Attack-Tool"&gt;&lt;img width="16" height="16" border="0" title="Document-icon" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/Document-icon_e4501fd1-5bb3-48fb-bd94-bc8d7c089a9c.png" /&gt; &lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/12/17/f5-friday-multi-layer-security-for-multi-layer-attacks.aspx"&gt;F5 Friday: Multi-Layer Security for Multi-Layer Attacks&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://apache.slashdot.org/story/11/08/24/2213201/Apache-Warns-Web-Server-Admins-of-DoS-Attack-Tool"&gt;&lt;img width="16" height="16" border="0" title="Document-icon" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/Document-icon_f91fcd8d-d0e4-4274-ab4c-213465dbccf3.png" /&gt; &lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/10/01/f5-friday-mitigating-the-lsquopadding-oraclersquo-exploit-for-asp.net.aspx"&gt;F5 Friday: Mitigating the ‘Padding Oracle’ Exploit for ASP.NET&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://apache.slashdot.org/story/11/08/24/2213201/Apache-Warns-Web-Server-Admins-of-DoS-Attack-Tool"&gt;&lt;img width="16" height="16" border="0" title="Document-icon" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/Document-icon_223b14eb-7ebc-4156-8e00-9a7185d5b9e1.png" /&gt; &lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/04/01/f5-friday-the-art-of-efficient-defense.aspx"&gt;F5 Friday: The Art of Efficient Defense&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;   &lt;/p&gt;
&lt;hr width="100%" noshade="noshade" color="#808080" /&gt;
&lt;p&gt; &lt;/p&gt;
&lt;font face="Tahoma"&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:751fceb5-53a3-471a-874c-4029a7238b2b" 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/BIG-IP" rel="tag"&gt;BIG-IP&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/SSL" rel="tag"&gt;SSL&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DoS" rel="tag"&gt;DoS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/THC" rel="tag"&gt;THC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/renegotiation" rel="tag"&gt;renegotiation&lt;/a&gt;,&lt;a href="http://technorati.com/tags/cryptography" rel="tag"&gt;cryptography&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/mitigation" rel="tag"&gt;mitigation&lt;/a&gt;&lt;/div&gt;
&lt;/font&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1100411.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lori MacVittie</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/macvittie/archive/2011/10/28/f5-friday-mitigating-the-thc-ssl-dos-threat.aspx</guid>
            <pubDate>Fri, 28 Oct 2011 12:33:00 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/1100411.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/macvittie/archive/2011/10/28/f5-friday-mitigating-the-thc-ssl-dos-threat.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/1100411.aspx</wfw:commentRss>
            <trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/1100411.aspx</trackback:ping>
        </item>
        <item>
            <title>Infrastructure Architecture: Whitelisting with JSON and API Keys</title>
            <link>http://devcentral.f5.com/weblogs/macvittie/archive/2011/10/12/infrastructure-architecture-whitelisting-with-json-and-api-keys.aspx</link>
            <description>&lt;p&gt;&lt;em&gt;Application delivery infrastructure can be a valuable partner in architecting solutions …. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;AJAX and JSON have changed the way in which we architect applications, especially with respect to their ascendancy to rule the realm of integration, i.e. the API. Policies are generally focused on the URI, which has effectively become the exposed interface to any given application function. It’s REST-ful, it’s service-oriented, and it works well. &lt;/p&gt;  &lt;p&gt;Because we’ve taken to leveraging the URI as a basic building block, as the entry-point into an application, it affords the opportunity to optimize architectures and make more efficient the use of compute power available for processing. This is an increasingly important point, as capacity has become a focal point around which cost and efficiency is measured. By offloading functions to other systems when possible, we are able to increase the useful processing capacity of an given application instance and ensure a higher ratio of valuable processing to resources is achieved. &lt;/p&gt;  &lt;p&gt;The ability of application delivery infrastructure to intercept, inspect, and manipulate the exchange of data between client and server should not be underestimated. A full-proxy based infrastructure component can provide valuable services to the application architect that can enhance the performance and reliability of applications while abstracting functionality in a way that alleviates the need to modify applications to support new initiatives. &lt;/p&gt;  &lt;h4&gt;&lt;font color="#c0504d"&gt;AN EXAMPLE &lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;Consider, for example, a business requirement specifying that only certain authorized partners (in the integration sense) are allowed to retrieve certain dynamic content via an exposed application API. There are myriad ways in which such a requirement could be implemented, including requiring authentication and subsequent tokens to authorize access – likely the most common means of providing such access management in conjunction with an API. Most of these options require several steps, however, and interaction directly with the application to examine credentials and determine authorization to requested resources. This consumes valuable compute that could otherwise be used to serve requests. &lt;/p&gt;  &lt;p&gt;An alternative approach would be to provide authorized consumers with a more standards-based method of access that includes, in the request, the very means by which authorization can be determined. Taking a lesson from the credit card industry, for example, an algorithm can be used to determine the validity of a particular customer ID or authorization token. An API key, if you will, that is not stored in a database (and thus requires a lookup) but rather is algorithmic and therefore able to be verified as valid without needing a specific lookup at run-time. Assuming such a token or API key were embedded in the URI, the application delivery service can then extract the key, verify its authenticity using an algorithm, and subsequently allow or deny access based on the result. &lt;/p&gt;  &lt;p&gt;This architecture is based on the premise that the application delivery service is capable of responding with the appropriate JSON in the event that the API key is determined to be invalid. Such a service must therefore be network-side scripting capable. Assuming such a platform exists, one can easily implement this architecture and enjoy the improved capacity and resulting performance boost from the offload of &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Infrastructure-Architecture-Whitelisting_87B5/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Infrastructure-Architecture-Whitelisting_87B5/image_thumb.png" width="381" height="329" /&gt;&lt;/a&gt;authorization and access management functions to the infrastructure. &lt;/p&gt;    &lt;p&gt;1. A request is received by the application delivery service. &lt;/p&gt;  &lt;p&gt;2. The application delivery service extracts the API key from the URI and determines validity. &lt;/p&gt;  &lt;p&gt;3. If the API key is not legitimate, a JSON-encoded response is returned. &lt;/p&gt;  &lt;p&gt;4. If the API key is valid, the request is passed on to the appropriate web/application server for processing. &lt;/p&gt;  &lt;p&gt;Such an approach can also be used to enable or disable functionality within an application, including live-streams. Assume a site that serves up streaming content, but only to authorized (registered) users. When requests for that content arrive, the application delivery service can dynamically determine, using an embedded key or some portion of the URI, whether to serve up the content or not. If it deems the request invalid, it can return a JSON response that effectively “turns off” the streaming content, thereby eliminating the ability of non-registered (or non-paying) customers to access live content. &lt;/p&gt;  &lt;p&gt;Such an approach could also be useful in the event of a service failure; if content is not available, the application delivery service can easily turn off and/or respond to the request, providing feedback to the user that is valuable in reducing their frustration with AJAX-enabled sites that too often simply “stop working” without any kind of feedback or message to the end user. &lt;/p&gt;  &lt;p&gt;The application delivery service could, of course, perform other actions based on the in/validity of the request, such as directing the request be fulfilled by a service generating older or non-dynamic streaming content, using its ability to perform application level routing. &lt;/p&gt;  &lt;p&gt;The possibilities are quite extensive and implementation depends entirely on goals and requirements to be met. &lt;/p&gt;  &lt;p&gt;Such features become more appealing when they are, through their capabilities, able to intelligently make use of resources in various locations. Cloud-hosted services may be more or less desirable for use in an application, and thus leveraging application delivery services to either enable or reduce the traffic sent to such services may be financially and operationally beneficial. &lt;/p&gt;  &lt;h4&gt;&lt;font color="#c0504d"&gt;ARCHITECTURE is KEY &lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;The core principle to remember here is that ultimately infrastructure architecture plays (or can and should play) a vital role in designing and deploying applications today. With the increasing interest and use of &lt;a title="" href="http://www.f5.com/solutions/cloud-computing" rel=""&gt;cloud computing &lt;/a&gt; and APIs, it is rapidly becoming necessary to leverage resources and services external to the application as a means to rapidly deploy new functionality and support for new features. The abstraction offered by application delivery services provides an effective, cross-site and cross-application means of enabling what were once application-only services within the infrastructure. This abstraction and service-oriented approach reduces the burden on the application as well as its developers. &lt;/p&gt;  &lt;p&gt;The application delivery service is almost always the first service in the oft-times lengthy chain of services required to respond to a client’s request. Leveraging its capabilities to inspect and manipulate as well as route and respond to those requests allows architects to formulate new strategies and ways to provide their own services, as well as  leveraging existing and integrated resources for maximum efficiency, with minimal effort. &lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;&lt;center&gt;   &lt;table border="0" cellspacing="0" cellpadding="2" width="308"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="168"&gt;Connect with Lori: &lt;/td&gt;          &lt;td valign="top" width="138"&gt;Connect with &lt;a title="F5 Networks" href="http://www.f5.com/" rel="" target="_blank"&gt;F5&lt;/a&gt;: &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="168"&gt;&lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_linkedin[1]" border="0" alt="o_linkedin[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_linkedin.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="https://plus.google.com/110169987847611210070"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="google " border="0" alt="google " src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Why-Cant-We-Have-Nice-Things-Too_37AC/google+_3.jpg" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/f5/macv"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_rss[1]" border="0" alt="o_rss[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_rss.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_facebook[1]" border="0" alt="o_facebook[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_facebook.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_twitter[1]" border="0" alt="o_twitter[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_twitter.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;/td&gt;          &lt;td valign="top" width="138"&gt; &lt;a href="http://bitly.com/nIsT1z?r=bb"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_facebook[1]" border="0" alt="o_facebook[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_facebook.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/ne6W2R?r=bb"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_twitter[1]" border="0" alt="o_twitter[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_twitter.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/nx3XV1?r=bb/"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_slideshare[1]" border="0" alt="o_slideshare[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_slideshare.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/reFTmf?r=bb"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_youtube[1]" border="0" alt="o_youtube[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_youtube.png" width="24" height="24" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/center&gt;  &lt;h5&gt;&lt;strong&gt;Related blogs &amp;amp; articles: &lt;/strong&gt;&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/08/18/the-inevitable-eventual-consistency-of-cloud-computing.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/e911749ccdec_929B/Document-icon_887463e5-cd11-4f42-a5c5-28bdb2b60f94.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/08/15/html5-going-like-gangbusters-but-will-anyone-notice.aspx"&gt;HTML5 Going Like Gangbusters But Will Anyone Notice?&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/08/18/the-inevitable-eventual-consistency-of-cloud-computing.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/e911749ccdec_929B/Document-icon_887463e5-cd11-4f42-a5c5-28bdb2b60f94.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/07/26/web-2-and-cloud-make-paas-middleware-obsolete.aspx"&gt;Web 2.0 Killed the Middleware Star&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/08/18/the-inevitable-eventual-consistency-of-cloud-computing.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/e911749ccdec_929B/Document-icon_887463e5-cd11-4f42-a5c5-28bdb2b60f94.png" width="16" height="16" /&gt; The Inevitable Eventual Consistency of Cloud Computing&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/08/18/the-inevitable-eventual-consistency-of-cloud-computing.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/e911749ccdec_929B/Document-icon_a4be0173-3333-4395-b6e2-92c59b65c00f.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/21/paas-is-just-soa-for-platforms-without-the-baggage.aspx"&gt;Let’s Face It: PaaS is Just SOA for Platforms Without the Baggage&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/08/18/the-inevitable-eventual-consistency-of-cloud-computing.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/e911749ccdec_929B/Document-icon_30330ee1-1885-4c4b-9f2f-ea07030282e5.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/02/09/cloud-tiered-architectural-models-are-bad-except-when-they-arenrsquot.aspx"&gt;Cloud-Tiered Architectural Models are Bad Except When They Aren’t&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/08/18/the-inevitable-eventual-consistency-of-cloud-computing.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/e911749ccdec_929B/Document-icon_bc4b1586-4cba-44b9-8e71-e84a3955b223.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/12/01/the-database-tier-is-not-elastic.aspx"&gt;The Database Tier is Not Elastic&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/08/18/the-inevitable-eventual-consistency-of-cloud-computing.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/e911749ccdec_929B/Document-icon_49f296a9-4318-4656-b243-ab8e28d75382.png" width="16" height="16" /&gt;&lt;/a&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;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/08/18/the-inevitable-eventual-consistency-of-cloud-computing.aspx"&gt;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/e911749ccdec_929B/Document-icon_dbe3554a-80d3-4666-adea-274d632826e8.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/09/22/sessions-sessions-everywhere.aspx"&gt;Sessions, Sessions Everywhere&lt;/a&gt;&lt;/li&gt; &lt;/ul&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:90f1e098-bf23-45cf-95df-e76ce63e4f35" 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/MacVittie" rel="tag"&gt;MacVittie&lt;/a&gt;,&lt;a href="http://technorati.com/tags/JSON" rel="tag"&gt;JSON&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/architecture" rel="tag"&gt;architecture&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/application+delivery" rel="tag"&gt;application delivery&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/devops" rel="tag"&gt;devops&lt;/a&gt;,&lt;a href="http://technorati.com/tags/network-side+scripting" rel="tag"&gt;network-side scripting&lt;/a&gt;,&lt;a href="http://technorati.com/tags/dynamic+infrastructure" rel="tag"&gt;dynamic infrastructure&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1098418.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lori MacVittie</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/macvittie/archive/2011/10/12/infrastructure-architecture-whitelisting-with-json-and-api-keys.aspx</guid>
            <pubDate>Wed, 12 Oct 2011 11:31:00 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/1098418.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/macvittie/archive/2011/10/12/infrastructure-architecture-whitelisting-with-json-and-api-keys.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/1098418.aspx</wfw:commentRss>
            <trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/1098418.aspx</trackback:ping>
        </item>
        <item>
            <title>F5 Friday: Zero-Day Apache Exploit? Zero-Problem</title>
            <link>http://devcentral.f5.com/weblogs/macvittie/archive/2011/08/26/f5-friday-zero-day-apache-exploit-zero-problem.aspx</link>
            <description>&lt;p&gt;#infosec A recently discovered 0-day Apache exploit is no problem for &lt;a href="http://www.f5.com/products/big-ip/"&gt;BIG-IP&lt;/a&gt;. Here’s a couple of different options using &lt;a target="_blank" rel="" href="http://www.f5.com/" title="F5 Networks"&gt;F5&lt;/a&gt; solutions to secure your site against it. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/f5friday_2.png"&gt;&lt;img width="240" height="86" border="0" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/f5friday_thumb.png" alt="f5friday" title="f5friday" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It’s called “Apache Killer” and it’s yet another example of exploiting not a vulnerability, but a protocol’s behavior.  &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight: bold;"&gt;UPDATE &lt;/span&gt;(8/26/2011) &lt;span style="background-color: rgb(255, 255, 0);"&gt;We're hearing that other Range-* HTTP headers are &lt;/span&gt;&lt;a href="http://lwn.net/Articles/456513/" style="background-color: rgb(255, 255, 0);"&gt;also vulnerable.&lt;/a&gt;&lt;span style="background-color: rgb(255, 255, 0);"&gt; Take care to secure against these potential attack vectors as well!&lt;/span&gt; &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;In this case, the target is Apache and the “vulnerability” is in the way multiple ranges are handled by the Apache HTTPD server. The RANGE HTTP header is used to request one or more sub-ranges of the response, instead of the entire response entity. Ranges are sometimes used by thin clients (an example given was an eReader) that are memory constrained and may want to display just portions of the web page.  Generally speaking, multiple byte ranges are not used very often.&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/image_2.png"&gt;&lt;img width="300" height="199" border="0" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/image_thumb.png" alt="image" title="image" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35"&gt;RFC 2616 Section 14.35.2&lt;/a&gt; (Range retrieval request) explains: &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_start_quote_rb.gif"&gt;&lt;img width="24" height="13" border="0" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_start_quote_rb.gif" alt="quote-badge" title="quote-badge" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt; HTTP retrieval requests using conditional or unconditional GET methods MAY request one or more sub-ranges of the entity, instead of the entire entity, using the Range request header, which applies to the entity returned as the result of the request:&lt;/p&gt;
&lt;pre&gt;      Range = "Range" ":" ranges-specifier&lt;/pre&gt;
&lt;p&gt;A server MAY ignore the Range header. However, HTTP/1.1 origin servers and intermediate caches ought to support byte ranges when possible, since Range supports efficient recovery from partially failed transfers, and supports efficient partial retrieval of large entities.&lt;img src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/125/o_end_quote_rb.gif" alt="" /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The attack is simple. It’s a simple HTTP request with lots – and lots – of ranges. While this example uses the HEAD method, it can also be used with a GET. &lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;  HEAD / HTTP/1.1 Host:xxxx  Range:bytes=0-,5-1,5-2,5-3,…&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;According to researchers testing the vulnerability, a successful attack requires a “modest” number of requests. &lt;/p&gt;
&lt;h3&gt;&lt;font color="#c0504d"&gt;&lt;font style="font-weight: bold"&gt;BIG-IP SOLUTIONS &lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;There are several options to prevent this attack using BIG-IP solutions. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/1_2.jpg"&gt;&lt;img width="50" height="68" border="0" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/1_thumb.jpg" alt="1" title="1" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;&lt;font style="font-weight: bold"&gt;HEADER SANITIZATION &lt;/font&gt;&lt;/h4&gt;
&lt;p&gt;First, you can modify the HTTP profile to simply remove the Range header. HTTP header removal – and replacement – is a common means of manipulating request and response headers as a means to “fix” broken applications, clients, or enable other functionality. This is a form of header sanitization, used typically to remove non-compliant header values that may or may not be malicious, but are undesirable. The Apache suggestion is to remove any Range header with 5 or more values. &lt;/p&gt;
&lt;p&gt;Note that this could itself break clients whose functionality expects a specific data set as specified by the RANGE header. As it is a rarely used header it is unlikely to impact clients adversely, but caution is always advised. Collaborate with developers and understand the implications before arbitrarily removing HTTP headers that may be necessary to application functionality. &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/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/2_2.jpg"&gt;&lt;img width="50" height="63" border="0" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/2_thumb.jpg" alt="2" title="2" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;&lt;font style="font-weight: bold"&gt;HEADER VALUE SCRUBBING &lt;/font&gt;&lt;/h4&gt;
&lt;p&gt;You can also use an &lt;a href="http://devcentral.f5.com/iRules"&gt;iRule&lt;/a&gt; to scrub the headers. By inspecting and thus detecting large numbers of ranges in the RANGE header, you can subsequently handle the request based on your specific needs. Possible reactions include removal of the header, rejection of the request, redirection to a honey pot, or replacement of the header. &lt;/p&gt;
&lt;p&gt;Sample iRule code (always test before deploying into production!) &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;when HTTP_REQUEST {&lt;/p&gt;
&lt;p&gt;    # remove Range requests for CVE-2011-3192 if more than 5 ranges are requested&lt;/p&gt;
&lt;p&gt;    if { [HTTP::header "Range"] matches_regex {bytes=(([0-9\- ])+,){5,}} } { &lt;/p&gt;
&lt;p&gt;        HTTP::header remove Range&lt;/p&gt;
&lt;p&gt;    }&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Again, changing an HTTP header may have negative consequences on the functionality of the application and/or client, so tread carefully. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/3_4.jpg"&gt;&lt;img width="50" height="62" border="0" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/3_thumb_1.jpg" alt="3" title="3" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;&lt;font style="font-weight: bold"&gt;BIG-IP ASM ATTACK SIGNATURE &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/clip_image002_2.jpg"&gt;&lt;img width="533" height="304" border="0" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/clip_image002_thumb.jpg" alt="clip_image002" title="clip_image002" style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 5px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/h4&gt;
&lt;p&gt;Another method of mitigation using BIG-IP solutions is to use a &lt;a href="http://www.f5.com/products/big-ip/application-security-manager.html"&gt;BIG-IP Application Security Manager (ASM)&lt;/a&gt; attack signature to detect and act upon an attack using this technique. The signature to add looks like: &lt;/p&gt;
&lt;p&gt;&lt;em&gt;pcre:"/Range:[\t ]*bytes=(([0-9\- ])+,){5,}/Hi"; &lt;/em&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;It is important to be aware of this exploit and how it works, as it is likely that once it is widely mitigated, attacks will begin (if they already are not) to explore the ways in which this header can be exploited. There are multiple “range” style headers, any of which may be vulnerable to similar exploitation, so it may be time to consider your current security strategy and determine whether the field of potential exploitable headers is such that a more negative approach (default deny unless specifically allowed) may be required to secure against future DoS attacks targeting HTTP headers. &lt;/p&gt;
&lt;p&gt;There are also alternative solutions available already, including &lt;a href="http://blog.spiderlabs.com/2011/08/mitigation-of-apache-range-header-dos-attack.html"&gt;this writeup from SpiderLabs&lt;/a&gt; with a link to an OWASP mod_security rule file for mitigations. &lt;/p&gt;
&lt;p&gt;Stay safe out there! &lt;/p&gt;
&lt;hr width="100%" noshade="noshade" color="#808080" /&gt;
&lt;center&gt;
&lt;table width="308" cellspacing="0" cellpadding="2" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="168" valign="top"&gt;Connect with Lori: &lt;/td&gt;
            &lt;td width="138" valign="top"&gt;Connect with F5: &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="168" valign="top"&gt;&lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img width="24" height="24" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_linkedin.png" alt="o_linkedin[1]" title="o_linkedin[1]" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt; &lt;a href="https://plus.google.com/110169987847611210070"&gt;&lt;img width="24" height="24" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Why-Cant-We-Have-Nice-Things-Too_37AC/google+_3.jpg" alt="google " title="google " style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/f5/macv"&gt;&lt;img width="24" height="24" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_rss.png" alt="o_rss[1]" title="o_rss[1]" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img width="24" height="24" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_facebook.png" alt="o_facebook[1]" title="o_facebook[1]" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt; &lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img width="24" height="24" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_twitter.png" alt="o_twitter[1]" title="o_twitter[1]" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt; &lt;/td&gt;
            &lt;td width="138" valign="top"&gt; &lt;a href="http://bitly.com/nIsT1z?r=bb"&gt;&lt;img width="24" height="24" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_facebook.png" alt="o_facebook[1]" title="o_facebook[1]" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/ne6W2R?r=bb"&gt;&lt;img width="24" height="24" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_twitter.png" alt="o_twitter[1]" title="o_twitter[1]" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/nx3XV1?r=bb/"&gt;&lt;img width="24" height="24" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_slideshare.png" alt="o_slideshare[1]" title="o_slideshare[1]" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt; &lt;a href="http://bitly.com/reFTmf?r=bb"&gt;&lt;img width="24" height="24" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_youtube.png" alt="o_youtube[1]" title="o_youtube[1]" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /&gt;&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;p align="center"&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 width="125" height="18" border="0" 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 width="125" height="18" border="0" src="http://s9.addthis.com/button1-share.gif" alt="Bookmark and Share" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Related blogs &amp;amp; articles: &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://apache.slashdot.org/story/11/08/24/2213201/Apache-Warns-Web-Server-Admins-of-DoS-Attack-Tool"&gt;&lt;img width="16" height="16" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/Document-icon_14ef5da3-a793-4c36-a1a0-37ba096bf0a0.png" alt="Document-icon" title="Document-icon" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt; Apache Warns Web Server Admins of DoS Attack Tool&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://apache.slashdot.org/story/11/08/24/2213201/Apache-Warns-Web-Server-Admins-of-DoS-Attack-Tool"&gt;&lt;img width="16" height="16" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/Document-icon_8a00298e-d99f-45f7-a25d-15933165a7be.png" alt="Document-icon" title="Document-icon" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt; &lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/12/16/the-many-faces-of-ddos-variations-on-a-theme-or.aspx"&gt;The Many Faces of DDoS: Variations on a Theme or Two&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://apache.slashdot.org/story/11/08/24/2213201/Apache-Warns-Web-Server-Admins-of-DoS-Attack-Tool"&gt;&lt;img width="16" height="16" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/Document-icon_246d913e-7d06-46ae-aa03-cf6c6f73e32a.png" alt="Document-icon" title="Document-icon" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt; &lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/12/27/how-to-limit-uri-length-without-recompiling-apache.aspx"&gt;How To Limit URI Length Without Recompiling Apache&lt;/a&gt;  &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://apache.slashdot.org/story/11/08/24/2213201/Apache-Warns-Web-Server-Admins-of-DoS-Attack-Tool"&gt;&lt;img width="16" height="16" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/Document-icon_e4501fd1-5bb3-48fb-bd94-bc8d7c089a9c.png" alt="Document-icon" title="Document-icon" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt; &lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/12/17/f5-friday-multi-layer-security-for-multi-layer-attacks.aspx"&gt;F5 Friday: Multi-Layer Security for Multi-Layer Attacks&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://apache.slashdot.org/story/11/08/24/2213201/Apache-Warns-Web-Server-Admins-of-DoS-Attack-Tool"&gt;&lt;img width="16" height="16" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/Document-icon_f91fcd8d-d0e4-4274-ab4c-213465dbccf3.png" alt="Document-icon" title="Document-icon" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt; &lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/10/01/f5-friday-mitigating-the-lsquopadding-oraclersquo-exploit-for-asp.net.aspx"&gt;F5 Friday: Mitigating the ‘Padding Oracle’ Exploit for ASP.NET&lt;/a&gt;  &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://apache.slashdot.org/story/11/08/24/2213201/Apache-Warns-Web-Server-Admins-of-DoS-Attack-Tool"&gt;&lt;img width="16" height="16" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/Document-icon_223b14eb-7ebc-4156-8e00-9a7185d5b9e1.png" alt="Document-icon" title="Document-icon" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt; &lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/04/01/f5-friday-the-art-of-efficient-defense.aspx"&gt;F5 Friday: The Art of Efficient Defense&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://apache.slashdot.org/story/11/08/24/2213201/Apache-Warns-Web-Server-Admins-of-DoS-Attack-Tool"&gt;&lt;img width="16" height="16" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/Document-icon_4320e964-dc3c-4348-9431-848947d5fde5.png" alt="Document-icon" title="Document-icon" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt; &lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/08/22/dynamic-infrastructure-security.aspx"&gt;The Infrastructure 2.0–Security Connection&lt;/a&gt;  &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://apache.slashdot.org/story/11/08/24/2213201/Apache-Warns-Web-Server-Admins-of-DoS-Attack-Tool"&gt;&lt;img width="16" height="16" border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/F5-Friday-Zero-Day-Apache-Exploit-Zero-_2994/Document-icon_c6961b5b-5838-4d77-955c-3eadb4fba7be.png" alt="Document-icon" title="Document-icon" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt; &lt;/a&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/07/01/f5-friday-eliminating-the-blind-spot-in-your-data-center.aspx"&gt;F5 Friday: Eliminating the Blind Spot in Your Data Center Security Strategy&lt;/a&gt;  &lt;/li&gt;
&lt;/ul&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:09293d72-fb3e-4660-a608-033a4743f503" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; 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/F5+Friday"&gt;F5 Friday&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/MacVittie"&gt;MacVittie&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Apache"&gt;Apache&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/exploit"&gt;exploit&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Range"&gt;Range&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/HTTP"&gt;HTTP&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/security"&gt;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/BIG-IP+ASM"&gt;BIG-IP ASM&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/iRules"&gt;iRules&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1096369.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lori MacVittie</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/macvittie/archive/2011/08/26/f5-friday-zero-day-apache-exploit-zero-problem.aspx</guid>
            <pubDate>Fri, 26 Aug 2011 15:21:32 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/1096369.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/macvittie/archive/2011/08/26/f5-friday-zero-day-apache-exploit-zero-problem.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/1096369.aspx</wfw:commentRss>
            <trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/1096369.aspx</trackback:ping>
        </item>
        <item>
            <title>Infrastructure Scalability Pattern: Sharding Streams</title>
            <link>http://devcentral.f5.com/weblogs/macvittie/archive/2011/07/08/infrastructure-scalability-pattern-sharding-streams.aspx</link>
            <description>&lt;p&gt;&lt;em&gt;JSON Activity Streams offers some interesting new scalability pattern possibilities via layer 7 (application) switching. &lt;/em&gt;&lt;/p&gt;  &lt;h3&gt;One of the most interesting aspects of deploying applications is figuring out how to scale them. There’s many options, from simple scale out and scale up to more advanced architectural designs that take advantage of external, application switching services. &lt;/h3&gt;  &lt;p&gt;The flexibility in the latter has become more obvious with the advent of not just &lt;a title="" href="http://www.f5.com/solutions/cloud-computing" rel=""&gt;cloud computing &lt;/a&gt;, but its underlying virtualized auto-scaling technologies. Combined with more targeted scalability strategies, infrastructure services provide a more operationally and financially efficient means of scaling applications on-demand with little to no human intervention. &lt;/p&gt;  &lt;p&gt;Sharding streams is a variation on a more general theme of sharding at the application layer. It involves an architectural design based on the JSON Activity Streams 1.0 specification that separates and scales individually (hyper-local scaling) services based on a particular facet of the “activity”.  &lt;/p&gt;  &lt;h3&gt;&lt;font color="#c0504d"&gt;&lt;font style="font-weight: bold"&gt;SHARDING ACTIVITY STREAMS &lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Infrastructure-Scalability-Pattern-Shard_3D19/image_4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Infrastructure-Scalability-Pattern-Shard_3D19/image_thumb_1.png" width="493" height="341" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Let’s first take a look at an example of an Activity Stream. You’ll note there are quite a few descriptors – verb, target, object – any of which might be a good choice on which to base a scalability domain. &lt;/h3&gt;  &lt;div id="codeSnippetWrapper"&gt;The key to determining how to shard a stream is recognizing what particular objects may be separated out and delivery platforms optimized specifically for that object type. This is usually very intimately related to content type: audio, video, image, etc… These types of categorization make it much easier to optimize a particular platform to process and deliver such types of content with less overhead as tweaking time outs, session configuration and connection parameters can be accomplished with no impact on other processing. Specialization is, oddly enough, a benefit of &lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Infrastructure-Scalability-Pattern-Shard_3D19/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 0px 10px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Infrastructure-Scalability-Pattern-Shard_3D19/image_thumb.png" width="529" height="348" /&gt;&lt;/a&gt;commoditization and virtualization. &lt;/div&gt;  &lt;div&gt; &lt;/div&gt;  &lt;div&gt;One can imagine that specialized scalability domains based on object (content) type is but one architectural option. Leveraging verb-based specialization is also possible, and provides the means by which a read-write separation at the database layers can be used to improve scalability and performance. Alternatively, it may be possible to dissect a stream based on “id” – using specific tags to perform different types of processing and distribution or even as the means to trigger specific operational policies or processes. &lt;/div&gt;  &lt;div&gt; &lt;/div&gt;  &lt;div&gt;What we want to do is leverage the context-aware capabilities of an &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/11/soft-adc-vadc-definition.aspx"&gt;application delivery controller&lt;/a&gt; (a really smart &lt;a href="http://www.f5.com/glossary/load-balancer.html"&gt;load balancer&lt;/a&gt;, if you will) to inspect requests and ensure that users are routed to the appropriate pool of application servers based on the processing profile required by the specific request, as determined by “verb” or “target” or “object”. This also requires that the &lt;a title="I CAN HAZ DEFINISHUN of SoftADC and vADC? " href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/03/11/soft-adc-vadc-definition.aspx" rel="" target="_blank"&gt;application delivery controller&lt;/a&gt; be capable of &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/10/25/why-single-stack-infrastructure-sucks.aspx"&gt;full-proxy inspection&lt;/a&gt; and routing of every request. This can be accomplished using the inspection capabilities and a set of &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/10/31/understanding-network-side-scripting.aspx"&gt;network-side scripts&lt;/a&gt; that intercept, inspect, and then conditionally route each request based on the determination of which pool of resources is designated as the processor for the type of stream. &lt;/div&gt;  &lt;div&gt; &lt;/div&gt;  &lt;div&gt;There are myriad ways to slice and dice the data to design a highly-scalable and efficient architecture. The key is understanding the data and designing an architecture to take advantage of its natural separation of type or action as to maximize the utilization of available resources. &lt;/div&gt;  &lt;div&gt; &lt;/div&gt;  &lt;h3&gt;&lt;font color="#c0504d"&gt;&lt;font style="font-weight: bold"&gt;TRANSFORMATION of IT &lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;h3&gt;The power of virtualization and cloud computing to “transform” the data center is not just organizational and cultural, but architectural. &lt;/h3&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Infrastructure-Scalability-Pattern-Shard_3D19/image_6.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Infrastructure-Scalability-Pattern-Shard_3D19/image_thumb_2.png" width="240" height="239" /&gt;&lt;/a&gt;We’re finally moving beyond the simplistic methods of scalability and availability and security into a new realm where intelligent, actionable data is leveraged to make smarter, more efficient decisions regarding processing. Not only does this improve performance, a key goal, but it increases efficiency and allows IT to do more with less. We can work smarter, not harder, to achieve our operational and business goals if we start leveraging the power of architectural solutions. &lt;/p&gt;  &lt;div&gt;It’s no longer enough to simply scale an application, &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/06/27/intercloud-are-you-moving-applications-or-architectures.aspx"&gt;you have to scale an entire architecture&lt;/a&gt;. And to do that you need an architecture that incorporates a deep understanding not just of infrastructure but of the applications it delivers. Ops has to dig into the data applications exchange and recognize the unique processing demands required by that data and then architect solutions that exploit the ability to optimize platforms or processing or provisioning of resources based on function or type. Highly disruptive technologies like virtualization and cloud computing afford IT opportunities to change the precepts upon which the data center is designed. It allows &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/10/28/to-take-advantage-of-cloud-computing-you-must-unlearn.aspx"&gt;IT to take stock of what it has been doing and make changes&lt;/a&gt; that enable a more seamless transition toward where it is going: a dynamic data center. Architecture is key and IT must be approached as a reusable and flexible architecture, not just a set of interconnected technologies. &lt;/div&gt;  &lt;p&gt;Infrastructure scalability patterns are architectural artifacts, designed to bridge the gap between operations and applications and provide the means by which architecture can impact performance and scalability in a positive way, while remaining as efficient as possible. The divide between operations and applications must be addressed in order to realize the benefits of architectural solutions, and that requires a new breed of data center professionals: devops. Folks who have a firm grasp of both infrastructure and applications and understand how to marry the two in an architectural solution that is fast, secure and available. Folks who recognize that web applications today may be developed as a single entity, but have different processing needs not only based on the application’s characteristics, but the characteristics of the users and devices from which the applications are used. &lt;/p&gt;  &lt;p&gt;Infrastructure components are no longer discrete entities with a single purpose, they are highly complex, flexible platforms upon which the infrastructure services necessary to enable a truly dynamic data center can be deployed. Architectures aren’t just for applications anymore, they’re for the data center. Successful IT organizations will recognize and exploit the capabilities of modern infrastructure components and services as part of a more flexible, intelligent delivery architecture. &lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;&lt;center&gt;   &lt;table border="0" cellspacing="0" cellpadding="2" width="263"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="129"&gt;Connect with Lori: &lt;/td&gt;          &lt;td valign="top" width="132"&gt;Connect with &lt;a title="F5 Networks" href="http://www.f5.com/" rel="" target="_blank"&gt;F5&lt;/a&gt;: &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="129"&gt;&lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_linkedin[1]" border="0" alt="o_linkedin[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_linkedin.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_rss[1]" border="0" alt="o_rss[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_rss.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_facebook[1]" border="0" alt="o_facebook[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_facebook.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_twitter[1]" border="0" alt="o_twitter[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_twitter.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;/td&gt;          &lt;td valign="top" width="132"&gt; &lt;a href="http://www.facebook.com/f5networksinc"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_facebook[1]" border="0" alt="o_facebook[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_facebook.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://twitter.com/f5networks"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_twitter[1]" border="0" alt="o_twitter[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_twitter.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://www.slideshare.net/f5dotcom/"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_slideshare[1]" border="0" alt="o_slideshare[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_slideshare.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://www.youtube.com/f5networksinc"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_youtube[1]" border="0" alt="o_youtube[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_youtube.png" width="24" height="24" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/center&gt;  &lt;p align="center"&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;/p&gt;  &lt;p&gt;Related blogs &amp;amp; articles: &lt;/p&gt;  &lt;ul&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;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Load-Balancing-Fu-Beware-the-Algorithm-a_30F5/Document-icon_3da35ae1-c9f8-4fab-a0f2-6c9f5071336b.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/06/13/it-as-a-service-a-stateless-infrastructure-architecture-model.aspx"&gt;IT as a Service: A Stateless Infrastructure Architecture Model&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;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Load-Balancing-Fu-Beware-the-Algorithm-a_30F5/Document-icon_3da35ae1-c9f8-4fab-a0f2-6c9f5071336b.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/11/01/infrastructure-scalability-pattern-sharding-sessions.aspx"&gt;Infrastructure Scalability Pattern: Sharding Sessions&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;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Load-Balancing-Fu-Beware-the-Algorithm-a_30F5/Document-icon_23d56711-5fac-4ebf-901b-e616786852e0.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/10/04/infrastructure-scalability-pattern-partition-by-function-or-type.aspx"&gt;Infrastructure Scalability Pattern: Partition by Function or Type&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;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Load-Balancing-Fu-Beware-the-Algorithm-a_30F5/Document-icon_3da35ae1-c9f8-4fab-a0f2-6c9f5071336b.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/06/08/data-center-optimization-is-like-nascar-without-the-beer.aspx"&gt;Data Center Optimization is Like NASCAR without the Beer&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;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Load-Balancing-Fu-Beware-the-Algorithm-a_30F5/Document-icon_3da35ae1-c9f8-4fab-a0f2-6c9f5071336b.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/05/18/the-consumerization-of-it-the-opsstore.aspx"&gt;The Consumerization of IT: The OpsStore&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;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Load-Balancing-Fu-Beware-the-Algorithm-a_30F5/Document-icon_3da35ae1-c9f8-4fab-a0f2-6c9f5071336b.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/05/11/donrsquot-let-automation-water-down-your-data-center.aspx"&gt;Don’t Let Automation Water Down Your 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;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Load-Balancing-Fu-Beware-the-Algorithm-a_30F5/Document-icon_3da35ae1-c9f8-4fab-a0f2-6c9f5071336b.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/11/01/infrastructure-scalability-pattern-sharding-sessions.aspx"&gt;Infrastructure Scalability Pattern: Sharding Sessions&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;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Load-Balancing-Fu-Beware-the-Algorithm-a_30F5/Document-icon_3da35ae1-c9f8-4fab-a0f2-6c9f5071336b.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/dmacvittie/archive/2011/07/07/architecturally-is-there-such-a-thing-as-too-scalable.aspx"&gt;Architecturally, Is There Such A Thing As Too Scalable?&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;&lt;img title="Document-icon" border="0" alt="Document-icon" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Load-Balancing-Fu-Beware-the-Algorithm-a_30F5/Document-icon_3da35ae1-c9f8-4fab-a0f2-6c9f5071336b.png" width="16" height="16" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/07/06/forget-hyper-scale.-think-hyper-local-scale.aspx"&gt;Forget Hyper-Scale. Think Hyper-Local Scale.&lt;/a&gt;  &lt;/li&gt; &lt;/ul&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:43bd399b-e70a-4b96-afa8-f5b186836a4f" 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/MacVittie" rel="tag"&gt;MacVittie&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/architecture" rel="tag"&gt;architecture&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/sharding" rel="tag"&gt;sharding&lt;/a&gt;,&lt;a href="http://technorati.com/tags/JSON" rel="tag"&gt;JSON&lt;/a&gt;,&lt;a href="http://technorati.com/tags/enterprise" rel="tag"&gt;enterprise&lt;/a&gt;,&lt;a href="http://technorati.com/tags/application+delivery" rel="tag"&gt;application delivery&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/1094523.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lori MacVittie</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/macvittie/archive/2011/07/08/infrastructure-scalability-pattern-sharding-streams.aspx</guid>
            <pubDate>Fri, 08 Jul 2011 12:44:25 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/1094523.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/macvittie/archive/2011/07/08/infrastructure-scalability-pattern-sharding-streams.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/1094523.aspx</wfw:commentRss>
            <trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/1094523.aspx</trackback:ping>
        </item>
        <item>
            <title>Gaming the System: The $23,698,655.93 per hour Cloud Computing Instance?</title>
            <link>http://devcentral.f5.com/weblogs/macvittie/archive/2011/05/02/gaming-the-cloud-the-24-million-per-hour-instance.aspx</link>
            <description>&lt;p&gt;&lt;em&gt;An interesting look at how automation combined with &lt;a title="" href="http://www.f5.com/solutions/cloud-computing" rel=""&gt;cloud computing &lt;/a&gt; resource brokering could go very, very wrong &lt;/em&gt;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Gaming-the-System-T.56-per-hour-Instance_8652/dominos_2.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="dominos" border="0" alt="dominos" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Gaming-the-System-T.56-per-hour-Instance_8652/dominos_thumb.jpg" width="240" height="180" /&gt;&lt;/a&gt;Automation is not a new concept. People – regular old people – have been using it for years for tasks that require specific timing or reaction to other actions, like bidding on eBay or other auction-focused sites. &lt;/h3&gt;  &lt;p&gt;The general concept is pretty simple as it’s just an event-driven system that automatically performs an action when the specified trigger occurs. Usually, at least when money is concerned, there’s an upper limit. The action can’t be completed if the resulting total would be above a specified maximum amount. &lt;/p&gt;  &lt;p&gt;Sometimes, however, things go horribly wrong. &lt;/p&gt;  &lt;h3&gt;&lt;font color="#d16349"&gt;&lt;font style="font-weight: bold"&gt;THE MOST EXPENSIVE BOOK IN HISTORY &lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;h3&gt;I was out trolling Facebook and happened to see a link to &lt;a href="http://www.michaeleisen.org/blog/?p=358"&gt;an article claiming a book was actually listed on Amazon for – wait for it, wait for it - $23,698,655.93&lt;/a&gt;. Seriously, it was listed for that much for a short period of time. &lt;/h3&gt;  &lt;p&gt;There’s a lengthy explanation of why and it turns out that an automated “pricing war” of sorts was to blame. Two competing sellers tried to keep their prices within specific percentages – one slightly below 100% of the other while the other tried to stay slightly above 100% of the other. The mathematically astute can figure out what happens when the differences were not equal – specifically the seller keeping his price higher used a higher percentage off 100% than the seller trying to stay below the other guy. Stair-step increases over time ultimately resulted in the price hitting over $23 million dollars before someone noticed what was going on. &lt;/p&gt;  &lt;p&gt;Needless to say neither seller found a buyer at that price, mores the pity for them. &lt;/p&gt;  &lt;h3&gt;&lt;font color="#c0504d"&gt;&lt;font style="font-weight: bold"&gt;THE POTENTIAL DANGER for CLOUD BROKERS&lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;h3&gt;The concept of cloud brokers, services that provide competitive bidding and essentially auctioning of cloud resources, is one that plays well into the demesne of commoditized resource services. &lt;/h3&gt;  &lt;p&gt;Commoditization, after all, engenders an environment in which the consumer indicates the value and therefore price they will pay for a resource, and generally providers of that resource respond. Allowing consumers to “bid” on the resource allows the market to determine the value in a very agile manner. Seasonal or event-driven spikes in capacity needs, for example, could allow those resources that are most valuable in those moments to rise in price, while at other times it may drive the price downward. While making it difficult, perhaps, to budget properly across a financial reporting period, such volatility can be positive as it also indicates to the market the price consumers will bear in general. &lt;/p&gt;  &lt;p&gt;But assume that, like the Amazon marketplace, two such brokers begin setting prices based on each other rather than through market participation. Two brokers that wish to remain competitive, each with different value propositions such that one sets its price slightly lower than other, automatically, while the other sets the pricing of instances slightly higher than the other, automatically. &lt;/p&gt;  &lt;p&gt;Indeed, you could arrive at the nearly $24 million dollar per hour cloud computing instance. Or nearly $24 million dollar block storage, or gigabit per second of bandwidth or whatever resource the two brokers are offering. &lt;/p&gt;  &lt;h3&gt;&lt;font color="#c0504d"&gt;&lt;font style="font-weight: bold"&gt;THE POTENTITIAL DANGER for DATA CENTERS &lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Gaming-the-System-T.56-per-hour-Instance_8652/dynamic%20equilibrium_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="dynamic equilibrium" border="0" alt="dynamic equilibrium" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/Gaming-the-System-T.56-per-hour-Instance_8652/dynamic%20equilibrium_thumb.png" width="233" height="239" /&gt;&lt;/a&gt;Now certainly this is an extreme – and unlikely - scenario. But if we apply the same concept to a dynamic, integrated infrastructure tasked with delivering applications based on certain business and operational parameters, you might see that the same scenario could become reality with slightly different impacts to the data center and the business it serves. &lt;/h3&gt;  &lt;p&gt;While not directly related to pricing, it is other policies regarding the security, availability and performance of a applications that could be impacted and problems compounded if controls and limitations are not clearly set upon automated responses to conditions within the data center. Policies that govern network speeds and feeds, for example, could impose limitations on users or applications based on prioritization or capacity. Other policies regarding performance might react to the initiation of &lt;em&gt;those &lt;/em&gt;policies in an attempt to counter a degradation of performance, which again triggers a tightening of network consumption, which again triggers… You get the picture. Circular references – whether in a book or cloud computing resource market or internal to the data center infrastructure – can cascade such that the inevitable result is a negative impact on availability and performance. &lt;/p&gt;  &lt;p&gt;Limitations, thresholds, and clear controls are necessary in any automated system. In programming we use the term “terminal condition” to indicate at what point a piece of given code should terminate, or exit, a potentially infinite loop. Such terminal conditions &lt;em&gt;must &lt;/em&gt;be present in data center automation as a means to combat a potentially infinite loop between two or more pieces of infrastructure that control the flow of application data. Collaboration, not just integration, is critical. While Infrastructure 2.0 enables the integration necessary to support a context-aware data center architecture capable of adapting on-demand to conditions as a means of ensuring availability, security and performance goals are met, that integration requires collaboration across people – across architects and devops and admins – who can recognize such potential infinite loops and address them by implementing the proper terminal conditions in those processes. &lt;/p&gt;  &lt;h3&gt;&lt;font color="#c0504d"&gt;&lt;font style="font-weight: bold"&gt;COLLABORATION without CONTROL is BAD, M’KAY?&lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;Whether the implementation is focusing on automating a pricing process or the enablement of a security or performance policy in the data center, careful attention to controls is necessary to avoid an infinite regression of policies that counteract one another. Terminal conditions, limitations, thresholds. These are necessary implements to ensure that the efficiencies gained through automation do not negatively impact application delivery. The slow but steady increase of a book beyond a “normal” price should have been recognized as being out of bounds in context – the context of the market, of activity, of other similar book pricing. IN the data center, the same contextual-awareness is necessary to understand why more capacity may be needed or why performance may be degrading. Is it &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/12/15/what-we-learned-from-anonymous-ddos-is-now-3dos.aspx"&gt;a multi-layer (modern) attack&lt;/a&gt;? Is it a legitimate flash crowd of traffic? These questions must be able to be answered in order to properly adjust policies and ensure the right folks are notified in the event that changes in the volume being handled by the data center may be &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/10/16/putting-a-price-on-uptime.aspx"&gt;detrimental to not only the security but the budget of the data center&lt;/a&gt; and applications it is delivering. &lt;/p&gt;  &lt;p&gt;Collaboration and integration go hand in hand, as do automation and control. &lt;/p&gt;  &lt;hr color="#808080" width="100%" noshade="noshade" /&gt;&lt;center&gt;   &lt;table border="0" cellspacing="0" cellpadding="2" width="263"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="129"&gt;Connect with Lori: &lt;/td&gt;          &lt;td valign="top" width="132"&gt;Connect with &lt;a title="F5 Networks" href="http://www.f5.com/" rel="" target="_blank"&gt;F5&lt;/a&gt;: &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="129"&gt;&lt;a href="http://www.linkedin.com/in/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_linkedin[1]" border="0" alt="o_linkedin[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_linkedin.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/Rss.aspx"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_rss[1]" border="0" alt="o_rss[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_rss.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://www.facebook.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_facebook[1]" border="0" alt="o_facebook[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_facebook.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://twitter.com/lmacvittie"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_twitter[1]" border="0" alt="o_twitter[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_twitter.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;/td&gt;          &lt;td valign="top" width="132"&gt; &lt;a href="http://www.facebook.com/f5networksinc"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_facebook[1]" border="0" alt="o_facebook[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_facebook.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://twitter.com/f5networks"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_twitter[1]" border="0" alt="o_twitter[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_twitter.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://www.slideshare.net/f5dotcom/"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_slideshare[1]" border="0" alt="o_slideshare[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_slideshare.png" width="24" height="24" /&gt;&lt;/a&gt; &lt;a href="http://www.youtube.com/f5networksinc"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="o_youtube[1]" border="0" alt="o_youtube[1]" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/1086440/o_youtube.png" width="24" height="24" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/center&gt;  &lt;p align="center"&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;p&gt; &lt;/p&gt;  &lt;p&gt;Related blogs &amp;amp; articles: &lt;/p&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;&lt;img title="icon-html" border="0" alt="icon-html" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/ca9389d9b281_7A33/icon-html_4853f8a2-cc9f-45ed-ac8e-b73c17de52f0.gif" width="14" height="14" /&gt;&lt;/a&gt; &lt;a href="http://www.michaeleisen.org/blog/?p=358"&gt;Amazon’s $23,698,655.93 book about flies&lt;/a&gt;  &lt;/li&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;&lt;img title="icon-html" border="0" alt="icon-html" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/ca9389d9b281_7A33/icon-html_4853f8a2-cc9f-45ed-ac8e-b73c17de52f0.gif" width="14" height="14" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/04/11/solutions-are-strategic.-technology-is-tactical.aspx"&gt;Solutions are Strategic. Technology is Tactical.&lt;/a&gt; &lt;/li&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;&lt;img title="icon-html" border="0" alt="icon-html" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/ca9389d9b281_7A33/icon-html_4853f8a2-cc9f-45ed-ac8e-b73c17de52f0.gif" width="14" height="14" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/03/28/what-cios-can-learn-from-the-spartans.aspx"&gt;What CIOs Can Learn from the Spartans&lt;/a&gt;  &lt;/li&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;&lt;img title="icon-html" border="0" alt="icon-html" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/ca9389d9b281_7A33/icon-html_4853f8a2-cc9f-45ed-ac8e-b73c17de52f0.gif" width="14" height="14" /&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/06/17/what-is-a-strategic-point-of-control-anyway.aspx"&gt;&lt;img title="icon-html" border="0" alt="icon-html" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/ca9389d9b281_7A33/icon-html_181c8fc9-5455-408c-b470-385f673c8d98.gif" width="14" height="14" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/03/09/cloud-is-the-how-not-the-what.aspx"&gt;Cloud is the How not the What&lt;/a&gt; &lt;/li&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;&lt;img title="icon-html" border="0" alt="icon-html" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/ca9389d9b281_7A33/icon-html_9ecb052e-d299-4038-94e5-2bcccc5dfcb7.gif" width="14" height="14" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/03/07/cloud-computing-control-does-not-always-mean-do-it-yourself.aspx"&gt;Cloud Control Does Not Always Mean ‘Do it yourself’&lt;/a&gt; &lt;/li&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;&lt;img title="icon-html" border="0" alt="icon-html" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/ca9389d9b281_7A33/icon-html_f7180c60-44dc-4be0-ad07-571303c49a5d.gif" width="14" height="14" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/02/14/the-strategy-not-taken.aspx"&gt;The Strategy Not Taken: Broken Doesn’t Mean What You Think It Means&lt;/a&gt; &lt;/li&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;&lt;img title="icon-html" border="0" alt="icon-html" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/ca9389d9b281_7A33/icon-html_99c50d49-2c4e-4593-83b7-2f5dfca64a64.gif" width="14" height="14" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2011/01/19/subway-cloud-computing-and-application-delivery.aspx"&gt;Data Center Feng Shui: Process Equally Important as Preparation&lt;/a&gt; &lt;/li&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;&lt;img title="icon-html" border="0" alt="icon-html" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/ca9389d9b281_7A33/icon-html_539b0044-24f5-44ef-894b-eeb76e484a39.gif" width="14" height="14" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/11/15/some-services-are-more-equal-than-others.aspx"&gt;Some Services are More Equal than Others&lt;/a&gt; &lt;/li&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;&lt;img title="icon-html" border="0" alt="icon-html" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/macvittie/Windows-Live-Writer/ca9389d9b281_7A33/icon-html_d48c6652-c721-4b0c-8c7e-317a4240dfb5.gif" width="14" height="14" /&gt;&lt;/a&gt; &lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2010/07/26/the-battle-of-economy-of-scale-versus-control-and-flexibility.aspx"&gt;The Battle of Economy of Scale versus Control and Flexibility&lt;/a&gt; &lt;/li&gt; &lt;/ul&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:e582321e-a3ba-4426-9e65-7769530999fb" 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/collaboration" rel="tag"&gt;collaboration&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/dynamic+infrastructure" rel="tag"&gt;dynamic 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/devops" rel="tag"&gt;devops&lt;/a&gt;,&lt;a href="http://technorati.com/tags/automation" rel="tag"&gt;automation&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/macvittie/aggbug/1094373.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Lori MacVittie</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/macvittie/archive/2011/05/02/gaming-the-cloud-the-24-million-per-hour-instance.aspx</guid>
            <pubDate>Mon, 02 May 2011 15:12:01 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/macvittie/comments/1094373.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/macvittie/archive/2011/05/02/gaming-the-cloud-the-24-million-per-hour-instance.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/macvittie/comments/commentRss/1094373.aspx</wfw:commentRss>
            <trackback:ping>http://devcentral.f5.com/weblogs/macvittie/services/trackbacks/1094373.aspx</trackback:ping>
        </item>
    </channel>
</rss>
