<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--Web 2.0 Content Powered by MyST Blogsite® (http://blogsite.com)-->
<!--A service of MyST Technology Partners, Inc. (http://myst-technology.com)-->
<?xml-stylesheet href="http://blogsite.com/public/styles/etc/object.xsl" type="text/xsl"?>

<?myst-baseUrl http://blogsite.com/public/?>

<MySmartChannels Public="true" UserID="76091" dT="75" t0="1212579937122">
     <GetChannelItem_Result>
      <Item>
       <Resource>
        <ObjectID>178941</ObjectID>
        <ObjectClass>Resource</ObjectClass>
        <OwnerID ObjectClass="Domain" Title="[Weblog] Blogsite News">76096</OwnerID>
        <CreatedByID ObjectClass="User" Title="aseidl">21</CreatedByID>
        <ModifiedByID ObjectClass="User" Title="aseidl">21</ModifiedByID>
        <CreateTime Title="2007-08-11 15:01:38 EDT">1186858898411</CreateTime>
        <ModifyTime Title="2007-08-12 09:37:48 EDT">1186925868728</ModifyTime>
        <SecurityModel>Controlled</SecurityModel>
        <Name>Fighting Back Against Big, Hungry, Orange Alligators</Name>
        <Summary>Overly aggressive RSS feed aggregators can cause server performance problems; MyST Blogsite introduces new technology to detect (and reject) egregious offenders.</Summary>
        <Description>&lt;h3&gt;The Problem&lt;/h3&gt;&lt;p&gt;More than three years ago, MyST co-founder Bill French and I started referring to overly aggressive RSS feed readers as &lt;i&gt;&lt;a target="_blank" href="http://myst-technology.com/mysmartchannels/public/item/28885" title="First blog post: Big, Hungry, Orange RSS Alligators "&gt;orange alligators&lt;/a&gt;&lt;/i&gt;.&amp;nbsp; It was a pun that combined the color of the already ubiquitous RSS icons and the closeness of the words &amp;quot;aggregator&amp;quot; and &amp;quot;alligator&amp;quot;.&amp;nbsp; The idea was that these alligators seemed insatiably hungry for our server bandwidth.&amp;nbsp; We lamented that while most RSS clients were well behaved (i.e., they used conditional requests, reasonable polling frequencies, identifiable user agent names, etc.), some were very &lt;i&gt;poorly&lt;/i&gt; behaved and could [and did] cause serious server loading issues.&lt;/p&gt;&lt;div style="border: 1px solid rgb(204, 204, 204); padding: 6px; float: right; margin-bottom: 8px; margin-left: 8px; width: 181px;"&gt;&lt;img width="169" vspace="0" hspace="0" height="85" border="0" src="http://blogsite.com/styles/blogsite/Blogsite/content/orange-aligator.jpg" alt="Big, Hungry, Orange  Alligators" /&gt; &lt;div style="font-weight: bold; font-size: 9pt; text-align: center;"&gt;Overly Aggressive&lt;br /&gt;Feed Readers&lt;/div&gt;&lt;/div&gt;&lt;p&gt;What do I mean by &amp;quot;poorly behaved&amp;quot;?&amp;nbsp; For example, imagine a feed reader polling each of twelve feeds in a large blogsite every 30 seconds; further imagine the reader using unconditional requests and requesting cache refresh, thereby forcing the feed to be re-delivered, in its entirety, for each request.&amp;nbsp; This translates into 24 full-content requests per minute (that's a request every 2.5 seconds) just to service a single client!&amp;nbsp; Depending on the nature of the channel content, this can mean serving up many megabytes per minute of the same, comparatively slowly changing, content, over and over&amp;mdash;big, hungry, orange alligators eating bandwidth sandwiches.&amp;nbsp; And it can be worse than just wasting bandwidth.&amp;nbsp; In the case of dynamic content, making unconditional, cache-refreshing requests is actually asking the server to &lt;i&gt;recreate&lt;/i&gt; the dynamic content for each request.&amp;nbsp; This can lead to server overload conditions where the server simply can't satisfy the alligator's appetite, resulting in poor server performance for everybody, not just the alligator.&lt;/p&gt;&lt;h3&gt;The Solution&lt;/h3&gt;&lt;p&gt;We knew that the day would come when it was necessary to introduce server-side technology to detect and manage alligators.&amp;nbsp; For MyST Blogsite&lt;sup&gt;&amp;reg;&lt;/sup&gt; servers, that day has come.&amp;nbsp; A little over two years ago, we introduced MyST SlimeGate&amp;trade;, a server-side technology that protects our servers against attacks by hackers and spammers.&amp;nbsp; Yesterday we introduced, to all MyST Blogsite servers, our new MyST AlliGate&amp;trade; technology that protects against overly aggressive content consumers, most of which are poorly behaved RSS feed readers but could also include other types of web clients.&lt;/p&gt;&lt;p&gt;AlliGate monitors server requests watching for alligators.&amp;nbsp; AlliGate uses a variety of heuristics to identify alligators, but once an alligator is identified, its IP address is submitted to SlimeGate for &amp;quot;management&amp;quot;.&amp;nbsp; Managed addresses may be dynamically blocked at the network firewall, preventing them from &lt;i&gt;any&lt;/i&gt; communication with the server for a short period of time.&amp;nbsp; Once access is restored, the client may again access the server.&amp;nbsp; However, a subsequent offense by an managed IP address results in another firewall lockout, but this time for twice as long as the time before.&amp;nbsp; Also, once access is restored, if a managed IP goes for a while (currently 30 days) without further offense, the IP is completely forgiven.&lt;/p&gt;&lt;p&gt;While the heuristics used to detect alligators are somewhat complex, here are some recommendations that, if followed, will ensure that you never trigger AlliGate to &amp;quot;manage&amp;quot; your access:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Do not poll a given feed more that five times per hour.&amp;nbsp; (Blogsite content is not more &amp;quot;real-time&amp;quot; than that anyway&amp;mdash;in most cases, checking once per hour is perfectly adequate.)&lt;/li&gt;&lt;li&gt;Use web clients (e.g., RSS readers, browsers, etc.) that make conditional requests.&lt;/li&gt;&lt;li&gt;Do not force cache refresh on all requests.&amp;nbsp; (Refreshing cache occasionally is okay, but it should not be standard operating procedure.)&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;The Benefits&lt;/h3&gt;&lt;p&gt;Today, all MyST Blogsite servers are protected against hackers, referrer spammers, and now, orange alligators.&amp;nbsp; Our experience managing nefarious requests to hundreds of commercial blogsites is reflected in technologies like MyST SlimeGate and MyST AlliGate that ultimately benefit all of our clients.&amp;nbsp; This is another example of why our clients turn to us to manage and host their corporate blogsite.&amp;nbsp; Rather than &amp;quot;going it alone&amp;quot; and fending off hackers, spammers, and alligators, our clients leave the nitty-gritty logistics of operating a high-visibility blogsite to us.&amp;nbsp; This lets them wisely focus their attention, resources, and expertise on creating the best possible content for their site.&amp;nbsp; Its a partnership that just makes sense.&lt;/p&gt;</Description>
        <ResourceTypeID ObjectClass="ResourceType" Title="Item:Link">9</ResourceTypeID>
        <ContentType>application/xml</ContentType>
        <ContentDocument>
         <ItemProperties>
               <CommonProperties>
                <Hidden>false</Hidden>

                <Keywords>
                 <Keyword>aggressive aggregators</Keyword>

                 <Keyword>aggressive feed readers</Keyword>

                 <Keyword>MyST AlliGate</Keyword>

                 <Keyword>MyST SlimeGate</Keyword>

                 <Keyword>orange alligators</Keyword>

                 <Keyword>referrer spam</Keyword>

                 <Keyword>RSS adoption</Keyword>

       </Keywords>

                <Links>
                 <Link>
                  <Title>Big, Hungry, Orange RSS Alligators</Title>

                  <Synopsis>Imagine a swamp that stretches to the horizon...</Synopsis>

                  <URL>http://myst-technology.com/mysmartchannels/public/item/28885</URL>

        </Link>

                 <Link>
                  <Title>RSS Adoption Train--Next Stop: Mainstream</Title>

                  <Synopsis>The RSS Adoption train is picking up speed; if you're not already on board, it's time to buy a ticket.</Synopsis>

                  <URL>http://myst-technology.com/mysmartchannels/public/item/56043</URL>

        </Link>

       </Links>

      </CommonProperties>

               <RemoteInfo>
                <UserAgent>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5</UserAgent>

                <RemoteHost>127.0.0.1</RemoteHost>

                <RemoteAddr>127.0.0.1</RemoteAddr>

                <RemoteUser>aseidl</RemoteUser>

      </RemoteInfo>

     </ItemProperties>
        </ContentDocument>
       </Resource>
       <Shares/>
       <Subjects/>
       <UserPermissions>
        <CanDelete>false</CanDelete>
        <CanDiscover>true</CanDiscover>
        <CanEdit>false</CanEdit>
        <CanEditPermissions>false</CanEditPermissions>
        <CanRead>true</CanRead>
       </UserPermissions>
       <CommentInfo>
        <CommentChannelRef AllowAnonymous="true" Inherited="true">
         <ChannelID ObjectClass="Channel" Title="[Public] Public Comments">174050</ChannelID>
         <UserPermissions>
          <CanCreateChannelItem>false</CanCreateChannelItem>
          <CanDelete>false</CanDelete>
          <CanDiscover>true</CanDiscover>
          <CanEdit>false</CanEdit>
          <CanEditPermissions>false</CanEditPermissions>
          <CanPublish>false</CanPublish>
          <CanRead>true</CanRead>
         </UserPermissions>
        </CommentChannelRef>
        <Comments>
         <Comment>
          <Item>
           <Resource>
            <ObjectID>179103</ObjectID>
            <ObjectClass>Resource</ObjectClass>
            <OwnerID ObjectClass="Domain" Title="[Public] Public Comments">174050</OwnerID>
            <CreatedByID ObjectClass="User" Title="$Anonymous">173239</CreatedByID>
            <ModifiedByID ObjectClass="User" Title="aseidl">21</ModifiedByID>
            <CreateTime Title="2007-08-13 21:25:53 EDT">1187054753522</CreateTime>
            <ModifyTime Title="2008-03-30 08:39:53 EST">1206884393953</ModifyTime>
            <SecurityModel>Controlled</SecurityModel>
            <Name>Brilliant!</Name>
            <Summary/>
            <Description/>
            <ResourceTypeID ObjectClass="ResourceType" Title="Item:Content">10</ResourceTypeID>
            <ContentType>application/xml</ContentType>
            <ContentDocument>
             <ItemProperties>
                   <CommonProperties>
                    <Hidden>false</Hidden>

                    <Keywords>
                     <Keyword>xlint:ignore</Keyword>

       </Keywords>

      </CommonProperties>

                   <ns3:Details xmlns="urn:MyST-Technology.Structured.Details" xmlns:ns3="urn:MyST-Technology.Structured.Details">
                    <ns3:Collection name="Chris Frerecks" type="urn:MyST-Technology.Structured.Collection.Contact">
                     <ns3:Attribute name="EMail" type="email" value="chris@realestateblogsites.com "/>

                     <ns3:Attribute name="Web" type="url"/>

       </ns3:Collection>

      </ns3:Details>

                   <RemoteInfo>
                    <UserAgent>Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)</UserAgent>

                    <RemoteHost>127.0.0.1</RemoteHost>

                    <RemoteAddr>127.0.0.1</RemoteAddr>

                    <RemoteUser>aseidl</RemoteUser>

                    <ForwardedFor>68.40.167.222</ForwardedFor>

      </RemoteInfo>

     </ItemProperties>
            </ContentDocument>
           </Resource>
           <UserPermissions>
            <CanDelete>false</CanDelete>
            <CanDiscover>true</CanDiscover>
            <CanEdit>false</CanEdit>
            <CanEditPermissions>false</CanEditPermissions>
            <CanRead>true</CanRead>
           </UserPermissions>
           <CommentInfo>
            <CommentChannelRef>
             <ChannelID/>
            </CommentChannelRef>
            <Comments/>
           </CommentInfo>
          </Item>
         </Comment>
        </Comments>
       </CommentInfo>
       <Views>
        <SourceID ObjectClass="Channel" Title="[Weblog] Blogsite News">76096</SourceID>

               <View>
                <Name>blog</Name>

                <Model>blogsite/Blogsite/web</Model>

                <Style/>

                <Scheme/>

       </View>

               <View>
                <Name>edit-item</Name>

                <Model>blogsite/Blogsite/right-content</Model>

                <Style/>

                <Scheme/>

       </View>

               <View>
                <Name>left</Name>

                <Model>blogsite/Blogsite/left-content</Model>

                <Style/>

                <Scheme/>

       </View>

               <View>
                <Name>right</Name>

                <Model>blogsite/Blogsite/right-content</Model>

                <Style/>

                <Scheme/>

       </View>

               <View>
                <Name>wide</Name>

                <Model>blogsite/Blogsite/wide-content</Model>

                <Style/>

                <Scheme/>

       </View>

      </Views>
        <Views>
         <SourceID ObjectClass="Channel" Shared="true" Title="[Public] What's New">102736</SourceID>

                <View>
                 <Name>blog</Name>

                 <Model>blogsite/Blogsite/my-whatsnew</Model>

                 <Style/>

                 <Scheme/>

       </View>

                <View>
                 <Name>edit-item</Name>

                 <Model>blogsite/Blogsite/right-content</Model>

                 <Style/>

                 <Scheme/>

       </View>

                <View>
                 <Name>left</Name>

                 <Model>blogsite/Blogsite/left-content</Model>

                 <Style/>

                 <Scheme/>

       </View>

                <View>
                 <Name>right</Name>

                 <Model>blogsite/Blogsite/right-content</Model>

                 <Style/>

                 <Scheme/>

       </View>

                <View>
                 <Name>wide</Name>

                 <Model>blogsite/Blogsite/wide-content</Model>

                 <Style/>

                 <Scheme/>

       </View>

      </Views>
        </Item>
       </GetChannelItem_Result>
      </MySmartChannels>
