Forum Discussion

Ed_Hammond_2611's avatar
Ed_Hammond_2611
Icon for Nimbostratus rankNimbostratus
Sep 26, 2008

LTM - Need TCP "write to client" time on every transaction

On some systems I am looking to replace with an BIG-IP LTM frontend, I am trying to find a way to get detailed “write to client” statistics. With the old system’s APIs I have direct visibility to the TCP socket layer and can measure how long (in microseconds) it takes for the buffer transfers to occur. Specifically, the code grabs the hrtime before the TCP send call is made, then the time after it returns, and I report that data back in logs, etc. to get a measure of the client connection speeds, etc. Currently I measure & report both send and receive.

 

 

I’ve looked through the iRules and can’t seem to find any methods that can return data at that level of precision, let alone a method for getting a hrtime value.

 

 

Does anyone know of any on-box APIs or iRule tricks I can use to get that level of detail from the TCP stack?

 

 

Of course, this must be highly reliable, efficient, etc. etc. as the old system is a critical system for the customer. It is also a deal breaker if I can't find a solution.

 

  • hoolio's avatar
    hoolio
    Icon for Cirrostratus rankCirrostratus
    iRules are event driven. You can only run code at the specific points which have an event. I don't think you'll be able to get stats using an iRule for the low level TCP events you've listed. You can check the wiki page for events for what's possible (Click here).

     

     

    Maybe someone has other ideas for automated performance monitoring at this level?

     

     

    Aaron
  • I've checked the Wiki up & down & would agree that getting such data at a iRule level would be difficult. Thus my question about an API or something I could hook into the TMM runtime with.

     

     

    I have an official case with Support asking this question, but they are telling me this is the avenue to get an official response.

     

     

    Am I to take it that BIG-IP LTM is unable to provide the write to client time such that we can determine the speeds & feeds of the client connections?
  • hoolio's avatar
    hoolio
    Icon for Cirrostratus rankCirrostratus
    I think iRules are as low level as you'll get. There is iControl which is an API that replicates the functionality you have via the management GUI, but again, I don't think there are any metrics collected with as much detail or as low level as what you're looking for.

     

     

    If you have a goal for reporting, which wouldn't necessarily require using iRules, Support should be able to tell you whether the product is capable of providing the functionality. If they determine it isn't possible now, they should offer to create a request for enhancement which would allow you to make an official request for a change to the product.

     

     

    Aaron
  • Paul_Szabo_9016's avatar
    Paul_Szabo_9016
    Historic F5 Account
    I'd like to clarify the requirements here.

     

     

    Are you trying to measure the latency through our proxy?

     

    - if so we can provide you statistics. We're a cut-through proxy except when there are things like SSL records that have to be encrypted or long HTTP headers that have to be examined.

     

     

    Are you trying to measure Time To Last Byte" (TTLB) for clients of your service? (or Time to First Byte)?

     

    - then you might want to look into a service like gomez or a tool like sflow.

     

     

    do you want a detailed report for each connection, a sample, or summary statistics like min/max/median/average?

     

    - sflow might be a useful to gather these statistics. And I've heard this feature request many times. Let me know if you want to be added to the list. For now you should check, there are several routers that support sflow or its proprietary equivalents.

     

     

    Paul

     

  • Just trying to replicate existing functions available in the web browser.

     

     

    The current system uses Netscape Enterprise web server with several "Custom Server Application Functions" where the SAF is looking directly at the TCP connection and reporting on the observations on the connection. This has been measured and reported on every transaction for 10+ years so the need is pretty entrenched. The "write-to-client" time is a popular indicator and without such an indicator from the F5, the migration to F5 will no go very far.

     

     

    Don't have budget or desire to obtain/install/support additional components. Just want to get the visibility into the client side connection from the TCP stack on the F5, for every transaction that flows through the box.

     

     

    Are there any hidden [TCP::methods] that can return client side TCP connection statistics?

     

    Are there any ways to enable such capture/reporting?

     

     

    The RFE request was kicked back "... you will need to pursue it through a CSR ..."

     

     

    I am taking it that I am out of luck. The LTM does not now nor are there plans to offer runtime statistics on client connections, either via iRules or an API. True?