Forum Discussion

Taner_90262's avatar
Taner_90262
Icon for Nimbostratus rankNimbostratus
Dec 29, 2009

Can we uncompress request data?

Hello,

 

 

Some http request is compressed. Can we uncompress http_body before deliver to servers?

 

 

Is there any iRule about it?

 

 

Regards

 

Taner
  • hoolio's avatar
    hoolio
    Icon for Cirrostratus rankCirrostratus
    Hi Taner,

     

     

    I don't believe any browser supports sending compressed data in a request. I'm not sure there is a way in HTTP 1.1 for a client to check if a server would support compressed data. Are you testing with a custom client that you control? If so, can you provide a sample request including the headers and payload?

     

     

    On a related note, there isn't a way for LTM to decompress response data that is compressed. The best option I've seen for this is to remove the Accept-Encoding request header before sending the request to the pool member. This prevents the server from sending compressed data.

     

     

    Aaron
  •  

    Our client is custom client. Two way traffic data (client->f5->server & server->f5->client ) are compressed.

     

     

    If http request header "request-zipped: true" than server uncomress

     

    : Content-Encoding: gzip

     

    : request-zipped: true

     

     

    If http response header "request-zipped: true" than client uncomress

     

    : response-zipped: true

     

    : Content-Encoding: gzip

     

     

    If we can uncompress request data at LTM servers cpu usage will be decrease.

     

     

    Sample request is below which is copy from ethereal.

     

     

    POST /PLM/PLMServlet HTTP/1.1

     

     

    Cookie: AlteonP=1629049098.20480.0000; path=/

     

     

    user-agent: FRE

     

     

    Content-Encoding: gzip

     

     

    request-zipped: true

     

     

    response-zipped: true

     

     

    encoding: iso-8859-9

     

     

    Cache-Control: no-cache

     

     

    Pragma: no-cache

     

     

    Host: cbtst

     

     

    Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2

     

     

    Connection: keep-alive

     

     

    Content-type: application/x-www-form-urlencoded

     

     

    Content-Length: 389

     

     

     

     

    ...........S.R.@......f.%...q$,...xIM.ZT..Hb.....%.ji.q.{..~..{.,

     

    Z&......d'.g.Y.p.q_...0....=.S.Rm.`.k,..

     

    .>... .~.S. ........:..U{.5I.%B.1..i...q..........Vt..H..$.H....KZe.......q.F......i..Rz..].d........g...

     

    .C/.i..U...

     

    ..7@'.N..9.

     

    2.,..S?:"..'.7.B.t.5?.;Bl..D5.,%._..E.]w....fz.Ru...n ..;"..Y.g...r..%...........!...6...R4........x.

     

    [u|....?lU.b.b..[^...?*3...HTTP/1.1 200 OK

     

     

    Date: Tue, 02 Sep 2008 07:58:58 GMT

     

     

    Server: IBM_HTTP_Server

     

     

    encoding: iso-8859-9

     

     

    response-zipped: true

     

     

    Keep-Alive: timeout=10, max=100

     

     

    Connection: Keep-Alive

     

     

    Transfer-Encoding: chunked

     

     

    Content-Type: text/plain

     

     

    Content-Encoding: gzip

     

     

    Content-Language: tr-TR

     

     

     

     

    7e

     

     

    ............A

     

    .0.EW?...3AcfiC...

     

    ....E.1U\..fx.y.........u....K.<.X...b.S.OTE.. .....Q.rr...X...F\......u....!W.H...Y.........

     

     

    0

     

     

     

    Regards

     

    Taner
  • hoolio's avatar
    hoolio
    Icon for Cirrostratus rankCirrostratus
    Interesting. I don't think there is a way with LTM to decompress request or response content (though there is functionality to do this with ASM).

     

     

    You might try opening a case with F5 Support and ask about this. If they don't have any ideas for how to do this, you could ask them to create a request for enhancement. If you do this, could you reply back here with the Change Request number? Another person was interested in similar functionality (Click here).

     

     

    Aaron