Bandwidth
Bandwidth is the amount of data that can
be passed along a communications channel in a given period of time.
Specifically, each message that is exchanged between two nodes communicating on
a network requires that some network capacity, or bandwidth, be available to
allow the movement of information between the two nodes.
In a LAN environment where nodes are
connected to the same switch or in a campus network where nodes are connected
within proximity to one another, available bandwidth is generally much higher
than that required by the two communicating nodes. However, as nodes become
spread across a larger, more complex internetwork, network oversubscription
might be encountered, or points of aggregation within the network might be
encountered. These two factors have a significant impact on application
performance, because the point of oversubscription or point of aggregation must
effectively throttle transmission from attached networks and negotiate access
from the higher-capacity network to the lower-speed, oversubscribed network.
Figure 2-3 shows multiple layers of oversubscription. Assuming
each node is connected with the same data-link interface type and speed (for
this example, assume 100-Mbps Fast Ethernet), the four client workstations
contend for the available capacity between the access switch and the
distribution switch. The three access switches must contend for available
capacity between the distribution switch and the server. All 12 of the client
workstations must contend through these oversubscribed links for access to the
server itself.
Assuming
fairness between equally prioritized connections, each client would receive only
approximately 8 percent of the server's network capacity, and this does not take
into consideration the overhead associated with application, transport, or
network layer mechanics.
This problem is compounded in WAN
environments where the oversubscription or aggregation might be dramatically
higher. In the case of a WAN, not only do multiple network nodes contend for
access to available bandwidth, but the available bandwidth is many orders
smaller than that by which the node is communicated to the LAN. In this way, not
only does the network element need to manage access to the smaller bandwidth
link, but it must also handle the pacing of traffic onto the node through
queuing.
Figure 2-4 shows multiple locations each with multiple client
workstations. These client workstations are connected by the same data-link
interface type and speed as the servers and switches (for this example, assume
100-Mbps Fast Ethernet). The routers in this example connect to the LAN in each
location and also a point-to-point T1 (1.544 Mbps) circuit. Not only do the
client workstations in each of the remote offices have to contend with 4:1
oversubscription to the router, but the bandwidth disparity in the network also
introduces another layer of oversubscription: 67:1 (100 Mbps / 1.544
Mbps).
Assuming fairness between equally
prioritized connections, each client would receive only approximately 25 percent
of the WAN capacity, which equates to 384 Kbps, or roughly 1/260, of the link
speed to which the client is attached to the LAN. This also assumes that there
is no overhead associated with the application protocol, transport protocol, and
network protocols being used.
The performance challenges
created by bandwidth disparity, oversubscription, and aggregation can quickly
degrade application performance. Not only are each of the communicating nodes
strangled because their flows are negotiated onto a lower-speed link, but the
flows themselves remain strangled even when returning to a higher-capacity link,
as shown in Figure 2-5. From the perspective of the server, each of the clients
is only sending small amounts of data at a time (due to network oversubscription
and bandwidth disparity). The overall application performance is throttled
because the server can then only respond to the requests as they are being
received.

When the server responds to the client,
the same challenges are encountered, as shown in Figure 2-6. Potentially large
amounts of data can be sent from the server when it services a user request.
This data, when set in flight, encounters the neighboring router, which is
managing the bandwidth disparity, and the data is trickled over the network
based on the capacity available to the flow. From the perspective of the client, the server is
only sending small amounts of data at a time (due to network oversubscription
and bandwidth disparity).

The prior examples assume a perfect
world where everything works as advertised and overhead is unheard of. The
reality is that application protocols add overhead to message exchanges.
Transport protocols add overhead in the form of segmenting, window management,
and acknowledgment for guaranteed delivery. Network and data link protocols add
overhead due to packetization and framing. Each of these consumes a noticeable
amount of network capacity and can be classified as control information that
only serves the purpose of helping data reach the distant node, reassembling
data in the correct order, and informing the application on the distant node of
the process that is being attempted.
This process of exchanging
application data using a transport protocol over an internetwork with
potentially many segments between communicating nodes directly follows the Open
System Interconnection (OSI) reference model, which is outlined in Table 2-1.
Table 2-1. Open System Interconnection Reference
Model
| OSI Layer |
Description |
| Application (7) |
Provides services directly to user applications.
Because of the potentially wide variety of applications, this layer must provide
a wealth of services, including establishing privacy mechanisms, authenticating
the intended communication partners, and determining if adequate resources are
present. This layer is also responsible for the client-to-server or peer-to-peer
exchanges of information that are necessary from the application
perspective. |
| Presentation (6) |
Provides
data transformation and assimilation guidelines to provide a common interface
for user applications, including services such as reformatting, data
compression, and encryption. The presentation layer is responsible for the
structure and format of data being exchanged between two application
processes. |
| Session (5) |
Establishes, manages, and maintains connections between two
nodes and manages the interaction between end systems. The session layer is not
always implemented but is commonly helpful in environments where structured
communications are necessary, including web conferencing, collaboration over the
network, and environments that leverage remote procedure calls or named
pipes. |
| Transport (4) |
Insulates the upper three layers—5–7— (commonly
bundled together as an "application layer") from the complexities of Layers 1–3
(commonly bundled together as a "network layer"). The transport layer is
responsible for the exchange of datagrams between nodes over an internetwork.
The transport protocol commonly implements either a connection-oriented
transmission protocol that provides guaranteed delivery (such as TCP) or a
connectionless protocol that does not provide guaranteed delivery
(UDP). |
| Network (3) |
Establishes, maintains, and terminates network
connections. Among other functions, standards define how data routing and
relaying are handled. Packets are exchanged between two nodes that are attached
to an internetwork when each has an internetwork address that can be reached
directly or through a routed infrastructure. |
| Data link (2) |
Ensures the
reliability of the physical link established at Layer 1. Standards define how
data frames are recognized and provide necessary flow control and error handling
at the frame level. Frames are exchanged between two nodes that are on a common
shared medium. |
| Physical
(1) |
Controls
transmission of the raw bitstream over the transmission medium. Standards for
this layer define such parameters as the amount of signal voltage swing, the
duration of voltages (bits), and so on. |
The application
reads and writes blocks of data to a socket interface, which abstracts the
transport protocol itself from the application. The blocks of data vary in size
based on the application and the amount of memory allocated to the socket
buffers. Application data blocks are generally 1 KB to 64 KB in size, and in
some cases can be larger or smaller. Notice that an application data block is
measured in bytes and not bits, as from the perspective of an application it is
simply reading or writing block data to or from a buffer in memory.
The transport protocol is then
responsible for draining data from the socket buffer into the network layer.
When the data is written to the socket buffer by the application layer, the
socket interacts with the transport protocol to segment data into datagrams.
These datagrams are sized with the knowledge of the network transmission
capacity (based on a search, discovery, or predefined parameter if using
rate-based transmission protocols). For connection-oriented transmission
protocols such as TCP, control information such as source and destination ports
is attached along with other information, including cyclic redundancy check
(CRC)/checksum information, segment length, offset, sequence number,
acknowledgment number, and other flags. Most other transport protocols, reliable
or not, provide additional data that helps to identify the application process
on the local and distant nodes, along with checksum information to provide some
means of guaranteeing data integrity and correctness, as well as other
flow-control parameters.
The transport protocol manages both
the drainage of data written to socket buffers into segments of data exchanged
on the network and the extraction of data received from the network into socket
buffers to be read by a local application. When data has been read from the
socket buffer and processed by TCP (it is ready to be handled by the network
layer), it is packetized by the network protocol (in this case, IP), where a
header and trailer are added denoting the source and destination network address
on the internetwork. Other information might be included such as version, header
length, type of service, fragment identification, header checksums, protocol,
options, and other flags.
The network protocol (generally IP)
then sends the packet to be framed at the data link layer (generally Ethernet),
where yet another header and trailer are added denoting the source and
destination address of the next adjacent recipient on the subnet (router) and
other flags. Each of these layers commonly adds checksum or CRC data to ensure
correctness of data.
Figure 2-7 shows the
overhead associated with application data traversing the OSI model.
When the distant node receives the
packets, the reverse process begins in order to reassemble the application data
block. In many cases, as much as 20 percent or more of network bandwidth can be
consumed by forwarding, routing, segmentation, and delivery guarantee-related
overheads. To put it simply, the WAN, which introduces a massive bandwidth
disparity, coupled with the overhead just described in this section, is not an
environment conducive to high levels of application performance.