Proportional Routing
Most routing algorithms try to find the best path for each
destination and send all traffic to that destination over the best path. A
different approach that has been proposed to provide a higher quality of service
is to split the traffic for each destination over multiple paths. Since routers
generally do not have a complete overview of network-wide traffic, the only
feasible way to split traffic over multiple routes is to use locally-available
information. A simple method is to divide the traffic equally or in proportion
to the capacity of the outgoing links. However, more sophisticated algorithms
are also available (Nelakuditi and Zhang, 2002).
Packet Scheduling
If a router is handling multiple flows, there is a danger that
one flow will hog too much of its capacity and starve all the other flows.
Processing packets in the order of their arrival means that an aggressive sender
can capture most of the capacity of the routers its packets traverse, reducing
the quality of service for others. To thwart such attempts, various packet
scheduling algorithms have been devised (Bhatti and Crowcroft, 2000).
One of the first ones was the fair
queueing algorithm (Nagle, 1987). The essence of the algorithm is that
routers have separate queues for each output line, one for each flow. When a
line becomes idle, the router scans the queues round robin, taking the first
packet on the next queue. In this way, with n
hosts competing for a given output line, each host gets to send one out of every
n packets. Sending more packets will not improve
this fraction.
Although a start, the algorithm has a problem: it gives more
bandwidth to hosts that use large packets than to hosts that use small packets.
Demers et al. (1990) suggested an improvement in which the round robin is done
in such a way as to simulate a byte-by-byte round robin, instead of a
packet-by-packet round robin. In effect, it scans the queues repeatedly,
byte-for-byte, until it finds the tick on which each packet will be finished.
The packets are then sorted in order of their finishing and sent in that order.
The algorithm is illustrated in Fig.
5-36.
Figure 5-36. (a) A router with five packets queued for line O. (b) Finishing times for the five packets.
In Fig. 5-36(a) we see
packets of length 2 to 6 bytes. At (virtual) clock tick 1, the first byte of the
packet on line A is sent. Then goes the first
byte of the packet on line B, and so on. The
first packet to finish is C, after eight ticks.
The sorted order is given in Fig.
5-36(b). In the absence of new arrivals, the packets will be sent in the
order listed, from C to A.
One problem with this algorithm is that it gives all hosts the
same priority. In many situations, it is desirable to give video servers more
bandwidth than regular file servers so that they can be given two or more bytes
per tick. This modified algorithm is called weighted
fair queueing and is widely used. Sometimes the weight is equal to the
number of flows coming out of a machine, so each process gets equal bandwidth.
An efficient implementation of the algorithm is discussed in (Shreedhar and
Varghese, 1995). Increasingly, the actual forwarding of packets through a router
or switch is being done in hardware (Elhanany et al., 2001).
No comments:
Post a Comment
silahkan membaca dan berkomentar