Latency Optimization is a WAN optimization method where the optimization is happening on the application protocol transported on top of the TCP layer.
Latency Optimization is based on the behaviour seen between the client and the server, to enable the Steelhead appliance to act on behalf of the server or the client to improve the response time for the client.
Latency Optimization is often controlled by the client-side Steelhead appliance, the capabilities are limited to the features available on both the client-side and server-side Steelhead appliance.
For network file system related protocols, like CIFS, SMBv2, SMBv3 and NFS, the following improvements can be made:
Directory content prefetching, where the full contents of a directory and its meta-data is pre-read by the client-side Steelhead appliance when the client asks for the first directory entry.
Read-ahead on read operations, where the next blocks of a file are read in advance by the client-side Steelhead appliance when the client asks for the first block of the file.
Early acknowledgement on write operations, where the client-side Steelhead will acknowledge the writing of a block once it has transmitted the request over the wire but before the file server has remotely acknowledged it.
There is no real protocol improvements, the only thing the FTP latency optimization does do is keep track of the FTP data channel to make sure that the traffic statistics are marked as such.
This is only for the database access as provided by MS-Access 2000.
For email related protocols, like MAPI and Lotus Notes, the following improvements can be made:
Data store warming on attachments, where the client-side Steelhead appliance will read the attachment in advance of the request of the client.
Read-ahead on attachments, where the client-side Steelhead appliance will read the next block of the attachment in advance of the request of the client.
Write-behind on attachments, where the client-side Steelhead appliance will acknowledge the writing of the block of an attachment on behalf of the server.
For HTTP related protocols, the following improvements can be made:
Caching of objects where the client-side Steelhead appliance will keep static objects in its objects cache for as long as specified by the HTTP server.
Pre-acking of non-changed objects, where the client-side Steelhead appliance will answer requests for static objects based as long as specified by the HTTP server.
Prefetching of static objects based on the HTML code returned in the response from the server.
Unlike TCP Optimization where the protocol is well documented, vendor neutral and compatibility towards other TCP stacks is a priority, latency optimization is done on protocols which are vendor specific protocol, with client and server behaviour not always well known, and with compatibility layers towards older versions of the protocol.
Latency optimization is done for specific server and specific client actions and capabilities, based on the behaviour observed for certain client-side actions. This behaviour can differ between different versions of the protocol and even between different versions of the client and server software.
Moving away from the versions of the clients and servers supported by the version of RiOS running on the Steelhead appliances could cause problems in the latency optimization because of yet unsupported changes in the client and server behaviour.
Possible issues which can go wrong:
New versions of the protocol which implement new features which are not compatible with the current protocol.
New versions of the protocol which cannot fallback to earlier versions. For example, some SMB version 2 clients can fallback to the CIFS version 1 protocol.
Servers which do not implement the protocol as expected, for example by returning statuses which could be considered valid for the client but are considered fatal for the latency optimization.
Before doing upgrades of the client and the server software for protocols on which latency optimization is performed, please make sure that the new protocols are supported by the software versions running on Steelhead appliances.