CIFS
CIFS sessions between a client and
file server can be used for many functions, including remote drive mapping,
simple file copy operations, or interactive file access. CIFS operations perform
very well in a LAN environment. However, given that CIFS was designed to emulate
the control aspects of a shared local file system via a network interface, it
requires a high degree of control and status message exchanges prior to and
during the exchange of useful data. This overhead, which is really due to how
robust the protocol is, can be a barrier to application performance as latency
increases.
As an example, accessing a 1.5-MB file over
the network that resides on a Windows file server requires well over 1000
messages to be exchanged between the client and the server. This is directly
related to the fact that CIFS requires the user to be authenticated and
authorized, the file needs to be found within the directory structure,
information about the file needs to be queried, the user permissions need to be
verified, file open requests must be managed, lock requests must be handled, and
data must be read from various points within the file (most likely noncontiguous
sections).
CIFS is a protocol that has a high
degree of application layer chatter; that is, a large number of messages must be
exchanged to accomplish an arbitrary task. With protocols such as CIFS that are
chatty, as latency increases, performance decreases. The combination of chatty
applications and high-latency networks becomes a significant obstacle to
performance in WAN environments because a large number of messages that are sent
in a serial fashion (one at a time) must each traverse a high-latency
network.
Although TCP/IP is a reliable transport mechanism for CIFS to
ride on top of, latency that is introduced in the network will have a greater
impact on CIFS performance, because the CIFS protocol is providing, through the
network as opposed to being wholly contained within a computer, all of the
semantics that a local file system would provide.
CIFS does support some built-in
optimization techniques through message batching and opportunistic locks, which
includes local caching, read-ahead, and write-behind. These optimizations are
meant to grant a client the authority necessary to manage his own state based on
the information provided by the server. In essence, the server will notify the
user that they are the only user working with a particular object. In this way,
the CIFS redirector, which is responsible for transmission of CIFS messages over
the network, can respond to its own requests to provide the client with higher
levels of performance while offloading the server. Although these techniques do
provide value in that fewer messages must be handled by the origin server, the
value in a WAN environment is nullified due to the extreme amounts of latency
that exist in the network.