Forum Discussion

N_67263's avatar
N_67263
Icon for Nimbostratus rankNimbostratus
Nov 14, 2013

HTTP/1.0 and HTTP/1.1 request.

Folks,

 

We have some application layer HTTP request which fails when done on the http/1.0 protocol. However, when this request is made on the http/1.1 protocol it works.

 

I am assuming that probably when the http/1.1 request is made to the virtual IP the virtual IP at the backend does a http/1.0 request to the real servers which fails. Is there any way I can force the virtual IP to make a http/1.0 request?

 

Also, how can I verify that indeed the virtual IP is making a http/1.0 request to the real servers?

 

any debug method which can be used here?

 

Thanks!! Nik

 

  • Fred_Slater_856's avatar
    Fred_Slater_856
    Historic F5 Account

    A BIG-IP virtual server would not normally convert HTTP/1.1 to HTTP/1.0, but you can always verify what is going on using Wireshark or tcpdump.

     

  • Hi Nik, I'm experiencing similar behaviour - it seems like big ip is convering some of the http/1.1 requests into http/1.0 request (mainly GET requests). Did you find a way to prevent this from happening or get an explanation from f5?
  • Fred_Slater_856's avatar
    Fred_Slater_856
    Historic F5 Account
    Stefan- Once you get past basic local troubleshooting, it is best to open a support case with F5 to resolve this type of problem so that your issue is tracked to resolution and any product deficiencies are recorded and acted upon in a timely fashion. -Fred
  • Night_67217's avatar
    Night_67217
    Historic F5 Account

    So, if you have Caching enabled on that virtual server, then the behaviour is explainable: "When the Cache Setting feature (referred to as RAM Cache in BIG-IP versions prior to 11.0.0) is enabled on a virtual server, all server-side requests generated by that virtual server will use the HTTP/1.0 protocol. This also applies to server-side requests derived from an HTTP/1.1 client-side request; all HTTP/1.1 requests are rewritten to HTTP/1.0. A Connection: Keepalive header will be added to allow persistent server connections." http://support.f5.com/kb/en-us/solutions/public/10000/400/sol10480.html?sr=34761170

     

    "Also, how can I verify that indeed the virtual IP is making a http/1.0 request to the real servers?" Tcpdump of something like: If you have SNAT:

     

    -- tcpdump -nni 0.0:nnn -s0 '(host ClientIP and host VirtServIP) or (host SNAT_IP and host PoolMember)' -w /var/tmp/capture.pcap

     

    If you don't have SNAT

     

    -- tcpdump -nni 0.0:nnn -s0 host ClientIP -w /var/tmp/capture.pcap

     

    After that, open the capture file in wireshark and you should be able to see the request on ClientSide and ServerSide of the BIGIP (since it's a full proxy) and see how the client behaves.

     

    If you don't have caching and the client is coming on HTTP/1.0 and you want to switch it, see this discussion: https://devcentral.f5.com/questions/disable-http-10

     

  • transformation from HTTP/1.1 to HTTP/1.0 is done, if cache is enabled (described in stefan's threat). transformation from HTTP/1.0 to HTTP/1.1 is done, if oneconnect is enabled.