Friday, August 04, 2006

Citrix Netscaler NS9000 :: DSR mode server selection based on first packet

it is somewhat crazy for a content switch or application switch or any modern web traffic director to make decision based on first request packet. A content switching load balancer definitely needs to get at least all the headers for a HTTP or SMTP request.

It is my experience that there are quite some proxy servers out there who inserted all these non-sense headers, which push the required and essential HOST header for a HTTP/1.1 request to the very bottom of the header section. For one thing, http request from a Blackberry with BIS or BES account will have a huge Accept-type HTTP header, which pushed the Host: header to the very bottom and outside of first packet for a simple HTTP request. As a result, the Host header shows up in second packet or later. In turn, the server selection based on first packet treats this as no an empty Host header and fails, with the client traffic wrongly directed.

It is problematic with anything other than waiting for all headers or at least till the HOST header shows up or till the all HEADERS you have defined to switch directions against. The latter is not fool-proof, since HTTP doesn't prevent you to have the same header over and over again.

Of course, it'd be even crazier if Citrix Netscaler under non-DSR mode does the same thing. I'll report back.

No comments: