Brad Fitzpatrick (bradfitz) wrote in lj_dev,
Brad Fitzpatrick
bradfitz
lj_dev

partial ack tcp corruption bug

Thanks to all your bug reports and especially the tcpdumps, F5's been able to find and fix (in only 3 hours!) the TCP corruption issues you've all seen.

The new code is running now and should fix the problems you've been seeing.

Please report any problems that happen past this point. And with pcap files, ideally... thanks!

(FYI: we're running some pre-release BIG-IP code because we do some bizarre HTTP and load balancing stuff and they wanted us to test it...)

But it's totally worth it. We can do things like:
rule web_request {
    when HTTP_REQUEST {
        set ramcache_enable 0
        if { [matchclass [HTTP::header Host] equals $::spec_hosts] } {
            if { [HTTP::header Host] starts_with "stat" } {
                set ramcache_enable 1
                use pool web_stat
            }
            elseif { .... }
                  .......
            }
        }
        elseif { [HTTP::uri] starts_with "/userpic/" } {
            if { [HTTP::header If-Modified-Since] contains ":" } {
                HTTP::respond 304
            } else {
                use pool web_proxy
            }
        }
        elseif { [HTTP::uri] starts_with "/directory.bml" } {
            use pool web_directory
        }
        elseif { [matchclass [HTTP::uri] starts_with $::static_dirs] } {
            set ramcache_enable 1
            use pool web_static
        } else {
            use pool web_proxy
        }
    }
    when CACHE_REQUEST {
        if { $ramcache_enable == 0 } {
            CACHE::disable
        }
    }
}


That HTTP::respond 304 line alone eliminates 1/3 of our HTTP requests from ever hitting Perlbal or Apache. Fun stuff.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 21 comments