Resource Reservation
Being able to regulate the shape of the offered traffic is a
good start to guaranteeing the quality of service. However, effectively using
this information implicitly means requiring all the packets of a flow to follow
the same route. Spraying them over routers at random makes it hard to guarantee
anything. As a consequence, something similar to a virtual circuit has to be set
up from the source to the destination, and all the packets that belong to the
flow must follow this route.
Once we have a specific route for a flow, it becomes possible
to reserve resources along that route to make sure the needed capacity is
available. Three different kinds of resources can potentially be
reserved:
-
Bandwidth.
-
Buffer space.
-
CPU cycles.
The first one, bandwidth, is the most obvious. If a flow
requires 1 Mbps and the outgoing line has a capacity of 2 Mbps, trying to direct
three flows through that line is not going to work. Thus, reserving bandwidth
means not oversubscribing any output line.
A second resource that is often in short supply is buffer
space. When a packet arrives, it is usually deposited on the network interface
card by the hardware itself. The router software then has to copy it to a buffer
in RAM and queue that buffer for transmission on the chosen outgoing line. If no
buffer is available, the packet has to be discarded since there is no place to
put it. For a good quality of service, some buffers can be reserved for a
specific flow so that flow does not have to compete for buffers with other
flows. There will always be a buffer available when the flow needs one, up to
some maximum.
Finally, CPU cycles are also a scarce resource. It takes router
CPU time to process a packet, so a router can process only a certain number of
packets per second. Making sure that the CPU is not overloaded is needed to
ensure timely processing of each packet.
At first glance, it might appear that if it takes, say, 1 µsec
to process a packet, a router can process 1 million packets/sec. This
observation is not true because there will always be idle periods due to
statistical fluctuations in the load. If the CPU needs every single cycle to get
its work done, losing even a few cycles due to occasional idleness creates a
backlog it can never get rid of.
However, even with a load slightly below the theoretical
capacity, queues can build up and delays can occur. Consider a situation in
which packets arrive at random with a mean arrival rate of l packets/sec. The CPU time required by each one is also
random, with a mean processing capacity of µ packets/sec. Under the assumption
that both the arrival and service distributions are Poisson distributions, it
can be proven using queueing theory that the mean delay experienced by a packet,
T, is
where r = l/µ is the CPU utilization.
The first factor, 1/µ, is what the service time
would be in the absence of competition. The second factor is the slowdown due to
competition with other flows. For example, if l =
950,000 packets/sec and µ = 1,000,000 packets/sec, then r = 0.95 and the mean delay experienced by each packet will
be 20 µsec instead of 1 µsec. This time accounts for both the queueing time and
the service time, as can be seen when the load is very low (l/µ 0). If there are, say, 30 routers along the flow's route, queueing
delay alone will account for 600 µsec of delay.
Admission Control
Now we are at the point where the incoming traffic from some
flow is well shaped and can potentially follow a single route in which capacity
can be reserved in advance on the routers along the path. When such a flow is
offered to a router, it has to decide, based on its capacity and how many
commitments it has already made for other flows, whether to admit or reject the
flow.
The decision to accept or reject a flow is not a simple matter
of comparing the (bandwidth, buffers, cycles) requested by the flow with the
router's excess capacity in those three dimensions. It is a little more
complicated than that. To start with, although some applications may know about
their bandwidth requirements, few know about buffers or CPU cycles, so at the
minimum, a different way is needed to describe flows. Next, some applications
are far more tolerant of an occasional missed deadline than others. Finally,
some applications may be willing to haggle about the flow parameters and others
may not. For example, a movie viewer that normally runs at 30 frames/sec may be
willing to drop back to 25 frames/sec if there is not enough free bandwidth to
support 30 frames/sec. Similarly, the number of pixels per frame, audio
bandwidth, and other properties may be adjustable.
Because many parties may be involved in the flow negotiation
(the sender, the receiver, and all the routers along the path between them),
flows must be described accurately in terms of specific parameters that can be
negotiated. A set of such parameters is called a flow
specification. Typically, the sender (e.g., the video server) produces a
flow specification proposing the parameters it would like to use. As the
specification propagates along the route, each router examines it and modifies
the parameters as need be. The modifications can only reduce the flow, not
increase it (e.g., a lower data rate, not a higher one). When it gets to the
other end, the parameters can be established.
As an example of what can be in a flow specification, consider
the example of Fig. 5-35, which is based
on RFCs 2210 and 2211. It has five parameters, the first of which, the Token bucket rate, is the number of bytes per second
that are put into the bucket. This is the maximum sustained rate the sender may
transmit, averaged over a long time interval.
Figure 5-35. An example flow specification.
The second parameter is the size of the bucket in bytes. If,
for example, the Token bucket rate is 1 Mbps and
the Token bucket size is 500 KB, the bucket can
fill continuously for 4 sec before it fills up (in the absence of any
transmissions). Any tokens sent after that are lost.
The third parameter, the Peak data
rate, is the maximum tolerated transmission rate, even for brief time
intervals. The sender must never exceed this rate.
The last two parameters specify the minimum and maximum packet
sizes, including the transport and network layer headers (e.g., TCP and IP). The
minimum size is important because processing each packet takes some fixed time,
no matter how short. A router may be prepared to handle 10,000 packets/sec of 1
KB each, but not be prepared to handle 100,000 packets/sec of 50 bytes each,
even though this represents a lower data rate. The maximum packet size is
important due to internal network limitations that may not be exceeded. For
example, if part of the path goes over an Ethernet, the maximum packet size will
be restricted to no more than 1500 bytes no matter what the rest of the network
can handle.
An interesting question is how a router turns a flow
specification into a set of specific resource reservations. That mapping is
implementation specific and is not standardized. Suppose that a router can
process 100,000 packets/sec. If it is offered a flow of 1 MB/sec with minimum
and maximum packet sizes of 512 bytes, the router can calculate that it might
get 2048 packets/sec from that flow. In that case, it must reserve 2% of its CPU
for that flow, preferably more to avoid long queueing delays. If a router's
policy is never to allocate more than 50% of its CPU (which implies a factor of
two delay, and it is already 49% full, then this flow must be rejected. Similar
calculations are needed for the other resources.
The tighter the flow specification, the more useful it is to
the routers. If a flow specification states that it needs a Token bucket rate of 5 MB/sec but packets can vary from
50 bytes to 1500 bytes, then the packet rate will vary from about 3500
packets/sec to 105,000 packets/sec. The router may panic at the latter number
and reject the flow, whereas with a minimum packet size of 1000 bytes, the 5
MB/sec flow might have been accepted.
No comments:
Post a Comment
silahkan membaca dan berkomentar