SlideShare a Scribd company logo
US 20040076161A1 
(19) United States 
(12) Patent Application Publication (10) Pub. No.: US 2004/0076161 A1 
Lavian et al. (43) Pub. Date: Apr. 22, 2004 
(54) DYNAMIC ASSIGNMENT OF TRAFFIC 
CLASSES TO A PRIORITY QUEUE IN A 
PACKET FORWARDING DEVICE 
(76) Inventors: Tal I. Lavian, Sunnyvale, CA (US); 
Stephen Lau, Milpitas, CA (US) 
Correspondence Address: 
BLAKELY SOKOLOFF TAYLOR & ZAFMAN 
12400 WILSHIRE BOULEVARD, SEVENTH 
FLOOR 
LOS ANGELES, CA 90025 (US) 
(21) Appl. No.: 10/685,947 
(22) Filed: Oct. 15, 2003 
Related US. Application Data 
(63) Continuation of application No. 09/227,389, ?led on 
Jan. 8, 1999. 
Publication Classi?cation 
5 1 I nt. C] . 7 ..................................................... .. H04L 1/00 
(52) US. Cl. ............. .. 370/395.41; 370/395.21; 370/230 
(57) ABSTRACT 
An apparatus and method for dynamic assignment of classes 
of traf?c to a priority queue. Bandwidth consumption by one 
or more types of packet traffic received in the packet 
forwarding device is monitored to determine whether the 
bandwidth consumption exceeds a threshold. If the band 
width consumption exceeds the threshold, assignment of at 
least one type of packet traffic of the one or more types of 
packet traf?c is changed from a queue having a ?rst priority 
to a queue having a second priority.
Dynamic assignment of traffic classes to a priority queue in a packet forwarding device
Patent Application Publication Apr. 22, 2004 Sheet 2 0f 6 US 2004/0076161 A1 
QUEVE "I LL 
Locum. (>21 men can» 
9mm 5 “aux FAQQKL 
S  
Win‘ LEL; HLAOEQ 
Kw Guava EH'ULK 
i$SOLS)-RE' Asaouxs, 
MLQK 
I 
I Wok“ (2:04))‘ 
Ylcl as 
- ‘I F - 
pmmm pkcmF-T 
GM EUG- BEST swam - 
. Gwwa V16. '2- B i
Dynamic assignment of traffic classes to a priority queue in a packet forwarding device
Patent Application Publication Apr. 22, 2004 Sheet 4 0f 6 US 2004/0076161 A1 
I P koaracn 
’ ‘ (Jo-'2" iTomE. Enummwc, IP ‘
Dynamic assignment of traffic classes to a priority queue in a packet forwarding device
Patent Application Publication Apr. 22, 2004 Sheet 6 0f 6 US 2004/0076161 A1 
UZOEuQMDUEZOU
US 2004/0076161 A1 
DYNAMIC ASSIGNMENT OF TRAFFIC CLASSES 
TO A PRIORITY QUEUE IN A PACKET 
FORWARDING DEVICE 
FIELD OF THE INVENTION 
[0001] The present invention relates to the ?eld of tele 
communications, and more particularly to dynamic assign 
ment of traf?c classes to queues having different priority 
levels. 
BACKGROUND OF THE INVENTION 
[0002] The How of packets through packet-switched net 
Works is controlled by sWitches and routers that forWard 
packets based on destination information included in the 
packets themselves. A typical sWitch or router includes a 
number of input/output (I/ O) modules connected to a sWitch 
ing fabric, such as a crossbar or shared memory sWitch. In 
some sWitches and routers, the sWitching fabric is operated 
at a higher frequency than the transmission frequency of the 
I/O modules so that the sWitching fabric may deliver packets 
to an I/O module faster than the I/O module can output them 
to the netWork transmission medium. In these devices, 
packets are usually queued in the I/O module to aWait 
transmission. 
[0003] One problem that may occur When packets are 
queued in the I/O module or elseWhere in a sWitch or router 
is that the queuing delay per packet varies depending on the 
amount of traf?c being handled by the sWitch. Variable 
queuing delays tend to degrade data streams produced by 
real-time sampling (e.g., audio and video) because the 
original time delays betWeen successive packets in the 
stream convey the sampling interval and are therefore 
needed to faithfully reproduce the source information. 
Another problem that results from queuing packets in a 
sWitch or router is that data from a relatively important 
source, such as a shared server, may be impeded by data 
from less important sources, resulting in bottlenecks. 
SUMMARY OF THE INVENTION 
[0004] Amethod and apparatus for dynamic assignment of 
classes of traffic to a priority queue are disclosed. BandWidth 
consumption by one or more types of packet traf?c received 
in a packet forWarding device is monitored. The queue 
assignment of at least one type of packet traf?c is automati 
cally changed from a queue having a ?rst priority to a queue 
having a second priority if the bandWidth consumption 
eXceeds the threshold. 
[0005] Other features and advantages of the invention Will 
be apparent from the accompanying draWings and from the 
detailed description that folloWs beloW. 
BRIEF DESCRIPTION OF THE DRAWINGS 
[0006] The present invention is illustrated by Way of 
eXample and not limitation in the ?gures of the accompa 
nying draWings in Which like references indicate similar 
elements and in Which: 
[0007] FIG. 1 illustrates a packet forWarding device that 
can be used to implement embodiments of the present 
invention; 
[0008] FIG. 2A illustrates queue ?ll logic implemented by 
a queue manager in a quad interface device; 
Apr. 22, 2004 
[0009] FIG. 2B illustrates queue drain logic according to 
one embodiment; 
[0010] FIG. 3 illustrates the How of a packet Within the 
sWitch of FIG. 1; 
[0011] FIG. 4 illustrates storage of an entry in an address 
resolution table managed by an address resolution unit; 
[0012] FIG. 5 is a diagram of the softWare architecture of 
the sWitch of FIG. 1 according to one embodiment; and 
[0013] FIG. 6 illustrates an eXample of dynamic assign 
ment of traffic classes to a priority queue. 
DETAILED DESCRIPTION 
[0014] A packet forWarding device in Which selected 
classes of netWork traffic may be dynamically assigned for 
priority queuing is disclosed. In one embodiment, the packet 
forWarding device includes a Java virtual machine for 
executing user-coded Java applets received from a netWork 
management server (NMS). AJava-to-native interface (JNI) 
is provided to alloW the Java applets to obtain error infor 
mation and traf?c statistics from the device hardWare and to 
alloW the Java applets to Write con?guration information to 
the device hardWare, including information that indicates 
Which classes of traf?c should be queued in priority queues. 
The Java applets implement user-speci?ed traf?c manage 
ment policies based on real-time evaluation of the error 
information and traf?c statistics to provide dynamic control 
of the priority queuing assignments. These and other aspects 
and advantages of the present invention are described beloW. 
[0015] FIG. 1 illustrates a packet forWarding device 17 
that can be used to implement embodiments of the present 
invention. For the purposes of the present description, the 
packet forWarding device 17 is assumed to be a sWitch that 
sWitches packets betWeen ingress and egress ports based on 
media access control (MAC) addresses Within the packets. 
In an alternate embodiment, the packet forWarding device 17 
may be a router that routes packets according to destination 
internet protocol (IP) addresses or a routing sWitch that 
performs both MAC address sWitching and IP address 
routing. The techniques and structures disclosed herein are 
applicable generally to a device that forWards packets in a 
packet sWitching netWork. Also, the term packet is used 
broadly herein to refer to a ?xed-length cell, a variable 
length frame or any other information structure that is 
self-contained as to its destination address. 
[0016] The sWitch 17 includes a sWitching fabric 12 
coupled to a plurality of I/O units (only I/O units 1 and 16 
are depicted) and to a processing unit 10. The processing 
unit includes at least a processor 31 (Which may be a 
microprocessor, digital signal processor or microcontroller) 
coupled to a memory 32 via a bus 33. In one embodiment, 
each I/O unit 1, 16 includes four physical ports P1-P4 
coupled to a quad media access controller (QMAC) 14A, 
14B via respective transceiver interface units 21A-24A, 
21B-24B. Each I/O unit 1, 16 also includes a quad interface 
device (QID) 16A, 16B, an address resolution unit (ARU) 
15A, 15B and a memory 18A, 18B, interconnected as shoWn 
in FIG. 1. Preferably, the sWitch 17 is modular With at least 
the I/O units 1, 16 being implemented on port cards (not 
shoWn) that can be installed in a backplane (not shoWn) of 
the sWitch 17. In one implementation, each port card 
includes four I/O units and therefore supports up to 16
US 2004/0076161 A1 
physical ports. The switch backplane includes slots for up to 
six port cards, so that the sWitch 17 can be scaled according 
to customer needs to support betWeen 16 and 96 physical 
ports. In alternate embodiments, each I/O unit 1, 16 may 
support more or feWer physical ports, each port card may 
support more or feWer I/O units 1, 16 and the sWitch 17 may 
support more or feWer port cards. For example, the I/O unit 
1 shoWn in FIG. 1 may be used to support four 10baseT 
transmission lines (i.e., 10 Mbps (mega-bit per second), 
tWisted-pair) or four 100baseF transmission lines (100 
Mbps, ?ber optic), While a different I/O unit (not shoWn) 
may be used to support a single 1000baseF transmission line 
(1000 Mbps, ?ber optic). Nothing disclosed herein should be 
construed as limiting embodiments of the present invention 
to use With a particular transmission medium, I/O unit, port 
card or chassis con?guration. 
[0017] Still referring to FIG. 1, When a packet 25 is 
received on physical port P1, it is supplied to the corre 
sponding physical transceiver 21A Which performs any 
necessary signal conditioning (e.g., optical to electrical 
signal conversion) and then forWards the packet 25 to the 
QMAC 14A. The QMAC 14A buffers packets received from 
the four physical transceivers 21A-24A as necessary, for 
Warding one packet at a time to the QID 16A. Receive logic 
Within the QID 16A noti?es the ARU 15A that the packet 25 
has been received. The ARU computes a table index based 
on the destination MAC address Within the packet 25 and 
uses the index to identify an entry in a forWarding table that 
corresponds to the destination MAC address. In packet 
forwarding devices that operate on different protocol layers 
of the packet (e.g., routers), a forWarding table may be 
indexed based on other destination information contained 
Within the packet. 
[0018] According to one embodiment, the forWarding 
table entry identi?ed based on the destination MAC address 
indicates the sWitch egress port to Which the packet 25 is 
destined and also Whether the packet is part of a MAC 
address based virtual local area netWork (VLAN), or a 
port-based VLAN. (As an aside, a VLAN is a logical 
grouping of MAC addresses (a MAC-address-based VLAN) 
or a logical grouping of physical ports (a port-based 
VLAN).) The forWarding table entry further indicates 
Whether the packet 25 is to be queued in a priority queue in 
the I/O unit that contains the destination port. As discussed 
beloW, priority queuing may be speci?ed based on a number 
of conditions, including, but not limited to, Whether the 
packet is part of a particular IP ?oW, or Whether the packet 
is destined for a particular port, VLAN or MAC address. 
[0019] According to one embodiment, the QID 16A, 16B 
segments the packet 25 into a plurality of ?xed-length cells 
26 for transmission through the sWitching fabric 12. Each 
cell includes a header 28 that identi?es it as a constituent of 
the packet 25 and that identi?es the destination port for the 
cell (and therefore for the packet 25). The header 28 of each 
cell also includes a bit 29 indicating Whether the cell is the 
beginning cell of a packet and also a bit 30 indicating 
Whether the packet 25 to Which the cell belongs is to be 
queued in a priority queue or a best effort queue on the 
destined I/O unit. 
[0020] The sWitching fabric 12 forWards each cell to the 
I/O unit indicated by the cell header 28. In the exemplary 
data How shoWn in FIG. 1, the constituent cells 26 of the 
Apr. 22, 2004 
packet 25 are assumed to be forWarded to I/O unit 16 Where 
they are delivered to transmit logic Within the QID 16B. The 
transmit logic in the QID 16B includes a queue manager (not 
shoWn) that maintains a priority queue and a best effort 
queue in the memory 18B. In one embodiment, the memory 
18B is resolved into a pool of buffers, each large enough to 
hold a complete packet. When the beginning cell of the 
packet 25 is delivered to the QID 16B, the queue manager 
obtains a buffer from the pool and appends the buffer to 
either the priority queue or the best effort queue according 
to Whether the priority bit 30 is set in the beginning cell. In 
one embodiment, the priority queue and the best effort queue 
are each implemented by a linked list, With the queue 
manager maintaining respective pointers to the head and tail 
of each linked list. Entries are added to the tail of the queue 
list by advancing the tail pointer to point to a neWly allocated 
buffer that has been appended to the linked list, and entries 
are popped off the head of the queue by advancing the head 
pointer to point to the next buffer in the linked list and 
returning the spent buffer to the pool. 
[0021] After a buffer is appended to either the priority 
queue or the best effort queue, the beginning cell and 
subsequent cells are used to reassemble the packet 25 Within 
the buffer. Eventually the packet 25 is popped off the head 
of the queue and delivered to an egress port via the QMAC 
14B and the physical transceiver (e.g., 23B) in an egress 
operation. This is shoWn by Way of example in FIG. 1 by the 
egress of packet 25 from physical port P3 of I/O unit 16. 
[0022] FIG. 2A illustrates queue ?ll logic implemented by 
the queue manager in the QID. Starting at block 51, a cell is 
received in the QID from the sWitching fabric. The begin 
ning cell bit in the cell header is inspected at decision block 
53 to determine if the cell is the beginning cell of a packet. 
If so, the priority bit in the cell header is inspected at 
decision block 55 to determine Whether to allocate an entry 
in the priority queue or the best effort queue for packet 
reassembly. If the priority bit is set, an entry in the priority 
queue is allocated at block 57 and the priority queue entry 
is associated With the portion of the cell header that identi?es 
the cell as a constituent of a particular packet at block 59. If 
the priority bit in the cell header is not set, then an entry in 
the best effort queue is allocated at block 61 and the best 
effort queue entry is associated With the portion of the cell 
header that identi?es the cell as a constituent of a particular 
packet at block 63. 
[0023] Returning to decision block 53, if the beginning 
cell bit in the cell header is not set, then the queue entry 
associated With the cell header is identi?ed at block 65. The 
association betWeen the cell header and the queue entry 
identi?ed at block 65 Was established earlier in either block 
59 or block 63. Also, identi?cation of the queue entry in 
block 65 may include inspection of the priority bit in the cell 
to narroW the identi?cation effort to either the priority queue 
or the best effort queue. In block 67, the cell is combined 
With the preceding cell in the queue entry in a packet 
reassembly operation. If the reassembly operation in block 
67 results in a completed packet (decision block 69), then 
the packet is marked as ready for transmission in block 71. 
In one embodiment, the packet is marked by setting a ?ag 
associated With the queue entry in Which the packet has been 
reassembled. Other techniques for indicating that a packet is 
ready for transmission may be used in alternate embodi 
ments.
US 2004/0076161 A1 
[0024] FIG. 2B illustrates queue drain logic according to 
one embodiment. At decision block 75, the entry at the head 
of the priority queue is inspected to determine if it contains 
a packet ready for transmission. If so, the packet is trans 
mitted at block 77 and the corresponding priority queue 
entry is popped off the head of the priority queue and 
deallocated at block 79. If a ready packet is not present at the 
head of the priority queue, then the entry at the head of the 
best effort queue is inspected at decision block 81. If a 
packet is ready at the head of the best effort queue, it is 
transmitted at block 83 and the corresponding best effort 
queue entry is popped off the head of the best effort queue 
and deallocated in block 85. Note that, in the embodiment 
illustrated in FIG. 2B, packets are drained from the best 
effort queue only after the priority queue has been emptied. 
In alternate embodiments, a timer, counter or similar logic 
element may be used to ensure that the best effort queue 105 
is serviced at least every so often or at least after every N 
number of packets are transmitted from the priority queue, 
thereby ensuring at least a threshold level of service to best 
effort queue. 
[0025] FIG. 3 illustrates the How of a packet Within the 
sWitch 17 of FIG. 1. A packet is received in the sWitch at 
block 91 and used to identify an entry in a forWarding table 
called the address resolution table at block 93. At 
decision block 95, a priority bit in the AR table entry is 
inspected to determine Whether the packet belongs to a class 
of traffic that has been selected for priority queuing. If the 
priority bit is set, the packet is segmented into cells having 
respective priority bits set in their headers in block 97. If the 
priority bit is not set, the packet is segmented into cells 
having respective priority bits cleared their cell headers in 
block 99. The constituent cells of each packet are forWarded 
to an egress I/O unit by the sWitching fabric. In the egress 
I/O unit, the priority bit of each cell is inspected (decision 
block 101) and used to direct the cell to an entry in either the 
priority queue 103 or the best effort queue 105 Where it is 
combined With other cells to reassemble the packet. 
[0026] FIG. 4 illustrates storage of an entry in the address 
resolution table managed by the ARU. In one embodi 
ment, the AR table is maintained in a high speed static 
random access memory (SRAM) coupled to the ARU. 
Alternatively, the AR table may be included in a memory 
Within an application-speci?c integrated circuit (ASIC) that 
includes the ARU. Generally, the ARU stores an entry in the 
AR table in response to packet forWarding information from 
the processing unit. The processing unit supplies packet 
forWarding information to be stored in each AR table in the 
sWitch Whenever a neW association betWeen a destination 
address and a sWitch egress port is learned. In one embodi 
ment, an address-to-port association is learned by transmit 
ting a packet that has an unknoWn egress port assignment on 
each of the egress ports of the sWitch and associating the 
destination address of the packet With the egress port at 
Which an acknowledgment is received. Upon learning the 
association betWeen the egress port and the destination 
address, the processing unit issues forWarding information 
that includes, for eXample, an identi?er of the neWly asso 
ciated egress port, the destination MAC address, an identi 
?er of the VLAN associated With the MAC address (if any), 
an identi?er of the VLAN associated With the egress port (if 
any), the destination IP address, the destination IP port (e.g., 
transmission control protocol (TCP), universal device pro 
tocol (UDP) or other IP port) and the IP protocol (e.g., 
Apr. 22, 2004 
HTTP, FTP or other IP protocol). The source IP address, 
source IP port and source IP protocol may also be supplied 
to fully identify an end-to-end IP ?oW. 
[0027] Referring to FIG. 4, forWarding information 110 is 
received from the processing unit at block 115. At block 117, 
the ARU stores the forWarding information in an AR table 
entry. At decision block 119, the physical egress port iden 
ti?er stored in the AR table entry is compared against 
priority con?guration information to determine if packets 
destined for the egress port have been selected for priority 
egress queuing. If so, the priority bit is set in the AR table 
entry in block 127. Thereafter, incoming packets that indeX 
the neWly stored table entry Will be queued in the priority 
queue to aWait transmission. If packets destined for the 
egress port have not been selected for priority queuing, then 
at decision block 121 the MAC address stored in the AR 
table entry is compared against the priority con?guration 
information to determine if packets destined for the MAC 
address have been selected for priority egress queuing. If so, 
the priority bit is set in the AR table entry in block 127. If 
packets destined for the MAC address have not been 
selected for priority egress queuing, then at decision block 
123 the VLAN identi?er stored in the AR table entry (if 
present) is compared against the priority con?guration infor 
mation to determine if packets destined for the VLAN have 
been selected for priority egress queuing. If so, the priority 
bit is set in the AR table entry in block 127. If packets 
destined for the VLAN have not been selected for priority 
egress queuing, then at block 125 the IP ?oW identi?ed by 
the IP address, IP port and IP protocol in the AR table is 
compared against the priority con?guration information to 
determine if packets that form part of the IP How have been 
selected for priority egress queuing. If so, the priority bit is 
set in the AR table entry, otherWise the priority bit is not set. 
Yet other criteria may be considered in assigning priority 
queuing in alternate embodiments. For example, priority 
queuing may be speci?ed for a particular IP protocol (e.g., 
FTP, HTTP). Also, the ingress port, source MAC address or 
source VLAN of a packet may also be used to determine 
Whether to queue the packet in the priority egress packet. 
More speci?cally, in one embodiment, priority or best effort 
queuing of unicast traf?c is determined based on destination 
parameters (e.g., egress port, destination MAC address or 
destination IP address), While priority or best effort queuing 
of multicast traf?c is determined based on source parameters 
(e.g., ingress port, source MAC address or source IP 
address). 
[0028] FIG. 5 is a diagram of the softWare architecture of 
the sWitch 17 of FIG. 1 according to one embodiment. An 
operating system 143 and device drivers 145 are provided to 
interface With the device hardWare 141. For eXample, device 
drivers are provided to Write con?guration information and 
AR storage entries to the ARUs in respective I/ O units. Also, 
the operating system 143 performs memory management 
functions and other system services in response to requests 
from higher level softWare. Generally, the device drivers 145 
eXtend the services provided by the operating system and are 
invoked in response to requests for operating system service 
that involve device-speci?c operations. 
[0029] The device management code 147 is eXecuted by 
the processing unit (e.g., element 10 of FIG. 1) to perform 
system level functions, including management of forWard 
ing entries in the distributed AR tables and management of
US 2004/0076161 A1 
forwarding entries in a master forwarding table maintained 
in the memory of the processing unit. The device manage 
ment code 147 also includes routines for invoking device 
driver services, for example, to query the ARU for traf?c 
statistics and error information, or to Write updated con?gu 
ration information to the ARUs, including priority queuing 
information. Further, the device management code 147 
includes routines for Writing updated con?guration informa 
tion to the ARUs, as discussed beloW in reference to FIG. 6. 
In one implementation, the device management code 147 is 
native code, meaning that the device management code 147 
is a compiled set of instructions that can be executed directly 
by a processor in the processing unit to carry out the device 
management functions. 
[0030] In one embodiment, the device management code 
147 supports the operation of a Java client 160 that includes 
a number of Java applets, including a monitor applet 157, a 
policy enforcement applet 159 and a con?guration applet 
161. A Java applet is an instantiation of a Java class that 
includes one or more methods for self initialiZation (e.g., a 
constructor method called “Applet( )”), and one or more 
methods for communicating With a controlling application. 
Typically the controlling application for a Java applet is a 
Web broWser executed on a general purpose computer. In the 
softWare architecture shoWn in FIG. 5, hoWever, a Java 
application called Data Communication Interface (DCI) 153 
is the controlling application for the monitor, policy enforce 
ment and con?guration applets 157, 159, 161. The DCI 
application 153 is executed by a Java virtual machine 149 to 
manage the doWnload of Java applets from a netWork 
management server (NMS) 170. A library of Java objects 
155 is provided for use by the Java applets 157, 159, 161 and 
the DCI application 153. 
[0031] In one implementation, the NMS 170 supplies Java 
applets to the sWitch 17 in a hyper-text transfer protocol 
(HTTP) data stream. Other protocols may also be used. The 
constituent packets of the HTTP data stream are addressed 
to the IP address of the sWitch and are directed to the 
processing unit after being received by the I/O unit coupled 
to the NMS 170. After authenticating the HTIT data stream, 
the DCI application 153 stores the Java applets provided in 
the data stream in the memory of the processing unit and 
executes a method to invoke each applet. An applet is 
invoked by supplying the Java virtual machine 149 With the 
address of the constructor method of the applet and causing 
the Java virtual machine 149 to begin execution of the applet 
code. Program code de?ning the Java virtual machine 149 is 
executed to interpret the platform independent byte codes of 
the Java applets 157, 159, 161 into native instructions that 
can be executed by a processor Within the processing unit. 
[0032] According to one embodiment, the monitor applet 
157, policy enforcement applet 159 and con?guration applet 
161 communicate With the device management code 147 
through a Java-native interface (JNI) 151. The JNI 151 is 
essentially an application programming interface (API) and 
provides a set of methods that can be invoked by the Java 
applets 157, 159, 161 to send messages and receive 
responses from the device management code 147. In one 
implementation, the JNI 151 includes methods by Which the 
monitor applet 157 can request the device management code 
147 to gather error information and traffic statistics from the 
device hardWare 141. The JNI 151 also includes methods by 
Which the con?guration applet 161 can request the device 
Apr. 22, 2004 
management code 147 to Write con?guration information to 
the device hardWare 141. More speci?cally, the JNI 151 
includes a method by Which the con?guration applet 161 can 
indicate that priority queuing should be performed for 
speci?ed classes of traf?c, including, but not limited to, the 
classes of traf?c discussed above in reference to FIG. 4. In 
this Way, a user-coded con?guration applet 161 may be 
executed by the Java virtual machine 149 Within the sWitch 
17 to invoke a method in the JNI 151 to request the device 
management code 147 to Write information that assigns 
selected classes of traf?c to be queued in the priority egress 
queue. In effect, the con?guration applet 161 assigns virtual 
queues de?ned by the selected classes of traf?c to feed into 
the priority egress queue. 
[0033] Although a Java virtual machine 149 and Java 
applets 157, 159, 161 have been described, other virtual 
machines, interpreters and scripting languages may be used 
in alternate embodiments. Also, as discussed beloW, more or 
feWer Java applets may be used to perform the monitoring, 
policy enforcement and con?guration functions in alternate 
embodiments. 
[0034] FIG. 6 illustrates an example of dynamic assign 
ment traf?c classes to a priority queue. An exemplary 
netWork includes sWitches A and B coupled together at 
physical ports 32 and 1, respectively. Suppose that a netWork 
administrator or other user determines that an important 
server 175 on port 2 of sWitch A requires a relatively high 
quality of service (QoS), and that, at least in sWitch B, the 
required QoS can be provided by ensuring that at least 20% 
of the egress capacity of sWitch B, port 1 is reserved for 
traffic destined to the MAC address of the server 175. One 
Way to ensure that 20% egress capacity is reserved to traf?c 
destined for the server 175 is to assign priority queuing for 
packets destined to the MAC address of the server 175, but 
not for other traffic. While such an assignment Would ensure 
priority egress to the server traf?c, it also may result in 
unnecessarily high bandWidth allocation to the server 175, 
potentially starving other important traf?c or causing other 
important traf?c to become bottlenecked behind less impor 
tant traf?c in the best effort queue. For example, suppose that 
there are at least tWo other MAC address destinations, MAC 
address A and MAC address B, to Which the user desires to 
assign priority queuing, so long as the egress capacity 
required by the server-destined traf?c is available. In that 
case, it Would be desirable to dynamically con?gure the 
MAC address A and MAC address B traf?c to be queued in 
either the priority queue or the best effort queue according 
to existing traf?c conditions. In at least one embodiment, this 
is accomplished using monitor, policy enforcement and 
con?guration applets that have been doWnloaded to sWitch 
B and Which are executed in a Java client in sWitch B as 
described above in reference to FIG. 5. 
[0035] FIG. 6 includes exemplary pseudocode listings of 
monitor, policy enforcement and con?guration applets 178, 
179, 180 that can be used to ensure that at least 20% of the 
egress capacity of sWitch B, port 1 is reserved for traf?c 
destined to the server 175, but Without unnecessarily deny 
ing priority queuing assignment to traffic destined for MAC 
addresses A and B. After initialiZation, the monitor applet 
178 repeatedly measures of the port 1 line utiliZation from 
the device hardWare. In one embodiment, the ARU in the I/O 
unit that manages port 1 keeps a count of the number of 
packets destined for particular egress ports, packets destined
US 2004/0076161 A1 
for particular MAC addresses, packets destined for particu 
lar VLANS, packets that form part of a particular IP ?oW, 
packets having a particular IP protocol, and so forth. The 
ARU also tracks the number of errors associated With these 
different classes of traf?c, the number of packets from each 
class of traf?c that are dropped, and other statistics. By 
determining the change in these different statistics per unit 
time, a utiliZation factor may be generated that represents the 
percent utiliZation of the capacity of an egress port, an I/O 
unit or the overall sWitch. Error rates and packet drop rates 
may also be generated. 
[0036] In one embodiment, the monitor applet 178 mea 
sures line utiliZation by invoking methods in the JNI to read 
the port 1 line utiliZation resulting from traf?c destined for 
MAC address A and for MAC address B every 10 millisec 
onds. 
[0037] The policy enforcement applet 179 includes vari 
ables to hold the line utiliZation percentage of traf?c destined 
for MAC address A (A%), the line utiliZation percentage of 
traf?c destined for MAC address B (B%), the queue assign 
ment (i.e., priority or best effort) of traf?c destined for the 
server MAC address (QA_S), the queue assignment of traf?c 
destined for MAC address A (QA_A) and the queue assign 
ment of traf?c destined for MAC address B. Also, a constant, 
DELTA, is de?ned to be 5% and the queue assignments for 
the MAC address A, MAC address B and server MAC 
address traf?c are initially set to the priority queue. 
[0038] The policy enforcement applet 179 also includes a 
forever loop in Which the line utiliZation percentages A% 
and B% are obtained from the monitor applet 178 and used 
to determine Whether to change the queue assignments 
QA_A and QA_B. If the MAC address A traf?c and the 
MAC address B traf?c are both assigned to the priority 
queue (the initial con?guration) and the sum of the line 
utiliZation percentages A% and B% eXceeds 80%, then less 
than 20% line utiliZation remains for the server-destined 
traf?c. In that event, the MAC address A traffic is reassigned 
from the priority queue to the best effort queue (code 
statement 181). If the MAC address A traffic is assigned to 
the best effort queue and the MAC address B traf?c is 
assigned to the priority queue, then the MAC address A 
traf?c is reassigned to the priority queue if the sum of the 
line utiliZation percentages A% and B% drops beloW 80% 
less DELTA (code statement 183). The DELTA parameter 
provides a deadband to prevent rapid changing of priority 
queue assignment. 
[0039] If the MAC address Atraf?c is assigned to the best 
effort queue and the MAC address B traffic is assigned to the 
priority queue and the line utiliZation percentage B% 
eXceeds 80%, then less than 20% line utiliZation remains for 
the server-destined traffic. Consequently, the MAC address 
B traffic is reassigned from the priority queue to the best 
effort queue (code statement 185). If the MAC address B 
traf?c is assigned to the best effort queue and the line 
utiliZation percentage B% drops beloW 80% less DELTA, 
then the MAC address B traf?c is reassigned to the priority 
queue (code statement 187). Although not speci?cally pro 
vided for in the exemplary pseudocode listing of FIG. 6, the 
policy enforcement applet 179 may treat the traf?c destined 
for the MAC A and MAC B addresses more symmetrically 
by including additional statements to conditionally assign 
traf?c destined for MAC address A to the priority queue, but 
Apr. 22, 2004 
not traf?c destined for MAC address B. In the eXemplary 
pseudocode listing of FIG. 6, the policy enforcement applet 
179 delays for 5 milliseconds at the end of each pass through 
the forever loop before repeating. 
[0040] The con?guration applet 180 includes variables, 
QA_A and QA_B, to hold the queue assignments of the 
traffic destined for the MAC addressesA and B, respectively. 
Variables LAST_QA_A and LAST_QA_B are also provided 
to record the history (i.e., most recent values) of the QA_A 
and QA_B values. The LAST_QA_A and LAST_QA_B 
variables are initialiZed to indicate that traffic destined for 
the MAC addressesAand B is assigned to the priority queue. 
[0041] Like the monitor and policy enforcement applets 
178,179, the con?guration applet 180 includes a forever 
loop in Which a code sequence is eXecuted folloWed by a 
delay. In the eXemplary listing of FIG. 6, the ?rst operation 
performed by the con?guration applet 180 Within the forever 
loop is to obtain the queue assignments QA_A and QA_B 
from the policy enforcement applet 179. If the queue assign 
ment indicated by QAA is different from the queue assign 
ment indicated by LAST_QA_A, then a JNI method is 
invoked to request the device code to recon?gure the queue 
assignment of the traf?c destined for MAC address A 
according to the neW QA_A value. The neW QA_A value is 
then copied into the LAST_QA_A variable so that subse 
quent queue assignment changes are detected. If the queue 
assignment indicated by QA_B is different from the queue 
assignment indicated by LAST_QA_B, then a J NI method is 
invoked to request the device code to recon?gure the queue 
assignment of the traf?c destined for MAC address B 
according to the neW QA_B value. The neW QA_B value is 
then copied into the LAST_QA_B variable so that subse 
quent queue assignment changes are detected. By this opera 
tion, and the operation of the monitor and policy enforce 
ment applets 178, 179, traffic destined for the MAC 
addresses A and B is dynamically assigned to the priority 
queue according to real-time evaluations of the traffic con 
ditions in the sWitch. 
[0042] Although a three-applet implementation is illus 
trated in FIG. 6, more or feWer applets may be used in an 
alternate embodiment. For eXample, the functions of the 
monitor, policy enforcement and con?guration applets 178, 
179, 180 may be implemented in a single applet. Alterna 
tively, multiple applets may be provided to perform policy 
enforcement or other functions using different queue assign 
ment criteria. For eXample, one policy enforcement applet 
may make priority queue assignments based on destination 
MAC addresses, While another policy enforcement applet 
makes priority queue assignments based on error rates or 
line utiliZation of higher level protocols. Multiple monitor 
applets or con?guration applets may similarly be provided. 
[0043] Although queue assignment policy based on des 
tination MAC address is illustrated in FIG. 6, myriad 
different queue assignment criteria may be used in other 
embodiments. For eXample, instead of monitoring and 
updating queue assignment based on traf?c to destination 
MAC addresses, queue assignments may be updated on 
other traf?c patterns, including traf?c to speci?ed destination 
ports, traf?c from speci?ed source ports, traf?c from speci 
?ed source MAC addresses, traf?c that forms part of a 
speci?ed IP ?oW, traf?c that is transmitted using a speci?ed 
protocol (e.g., HTTP, FTP or other protocols) and so forth.
US 2004/0076161 A1 
Also, queue assignments may be updated based on environ 
mental conditions such as time of day, changes in network 
con?guration (e.g., due to failure or congestion at other 
netWork nodes), error rates, packet drop rates and so forth. 
Monitoring, policy enforcement and con?guration applets 
that combine many or all of the above-described criteria may 
be implemented to provide sophisticated traf?c handling 
capability in a packet forWarding device. 
[0044] Although dynamic assignment of traf?c classes to 
a priority egress queue has been emphasiZed, the methods 
and apparatuses described herein may alternatively be used 
to assign traf?c classes to a hierarchical set of queues 
anyWhere in a packet forWarding device including, but not 
limited to, ingress queues and queues associated With deliv 
ering and receiving packets from the sWitching fabric. 
Further, although the queue assignment of traf?c classes has 
been described in terms of a pair of queues (priority and best 
effort), additional queues in a prioritiZation hierarchy may be 
used Without departing from the spirit and scope of the 
present invention. 
[0045] In the foregoing speci?cation, the invention has 
been described With reference to speci?c exemplary embodi 
ments thereof. It Will, hoWever, be evident that various 
modi?cations and changes may be made to the speci?c 
exemplary embodiments Without departing from the broader 
spirit and scope of the invention as set forth in the appended 
claims. Accordingly, the speci?cation and draWings are to be 
regarded in an illustrative rather than a restrictive sense. 
What is claimed is: 
1. In a packet forWarding device, a method comprising: 
monitoring bandWidth consumption by one or more types 
of packet traf?c received in the packet forWarding 
device; 
determining Whether the bandWidth consumption by the 
one or more types of packet traf?c exceeds a threshold; 
and 
automatically changing assignment of at least one type of 
packet traf?c of the one or more types of packet traf?c 
from a queue having a ?rst priority to a queue having 
a second priority if the bandWidth consumption exceeds 
the threshold. 
2. The method of claim 1 further comprising receiving 
program code in the packet forWarding device after instal 
lation of the packet forWarding device in a packet commu 
nications netWork and Wherein said monitoring, determining 
and automatically changing is implemented by the executing 
program code. 
3. The method of claim 2 Wherein receiving the program 
code comprises receiving a sequence of virtual machine 
instructions and Wherein executing the program code com 
prises executing the sequence of virtual machine instructions 
using a virtual machine included in the packet forWarding 
device. 
4. The method of claim 3 Wherein receiving the sequence 
of virtual machine instructions comprises receiving a 
sequence of Java byte codes and Wherein executing the 
sequence of virtual machine instructions using a virtual 
machine comprises executing the sequence of Java byte 
codes in a Java virtual machine included in the packet 
forWarding device. 
Apr. 22, 2004 
5. The method of claim 1 Wherein monitoring bandWidth 
consumption by one or more types of packet traf?c received 
in the packet forWarding device comprises determining a 
measure of bandWidth consumption in the packet forWarding 
device due to traf?c associated With a physical port on the 
forWarding device. 
6. The method of claim 1 Wherein monitoring bandWidth 
consumption by one or more types of packet traf?c received 
in the packet forWarding device comprises determining a 
measure of bandWidth consumption in the packet forWarding 
device due to traf?c associated With a particular netWork 
address. 
7. The method of claim 6 Wherein determining a measure 
of bandWidth consumption in the packet forWarding device 
due to traf?c associated With the particular netWork address 
comprises determining a measure of bandWidth consump 
tion due to traf?c associated With a particular media access 
control (MAC) address. 
8. The method of claim 1 Wherein monitoring bandWidth 
consumption by one or more types of packet traf?c received 
in the packet forWarding device comprises determining a 
measure of bandWidth consumption in the packet forWarding 
device due to traffic associated With a particular communi 
cations protocol. 
9. The method of claim 8 Wherein determining a measure 
of bandWidth consumption in the packet forWarding device 
due to traf?c associated With the particular communications 
protocol comprises determining a measure of bandWidth 
consumption in the packet forWarding device due to traf?c 
associated With at least one of the folloWing protocols: ?le 
transfer protocol (FTP), hyper-text transfer protocol 
(HTTP), transmission control protocol/internet protocol 
(TCP/IP). 
10. A packet forWarding apparatus comprising: 
a plurality of input/output (I/O) ports to transmit and 
receive packets of information; 
?rst and second queues to buffer the packets prior to 
transmission via one or more of the I/O ports, packets 
buffered in the ?rst queue having higher transmission 
priority than packets buffered in the second queue; 
queue assignment logic to assign the packets to be buff 
ered in either the ?rst queue or the second queue 
according to a packet type associated With each packet, 
each of the packets being associated With at least one of 
a plurality of packet types; and 
one or more agents to monitor bandWidth consumption by 
packets associated With a ?rst packet type of the 
plurality of packet types and to automatically change 
assignment of packets associated With the ?rst packet 
type from the ?rst queue to the second queue if band 
Width consumption of packets associated With the ?rst 
packet type exceeds a threshold. 
11. The apparatus of claim 10 further comprising: 
a processing unit coupled to the plurality of I/O ports, the 
processing unit including a memory and a processor; 
and 
a data communications interface to receive program code 
in the memory of processing unit after installation of 
the packet forWarding apparatus in a packet communi 
cations netWork and Wherein the one or more agents are
US 2004/0076161 A1 
implemented by execution of the program code in the 
processor of the processing unit. 
12. The apparatus of claim 11 Wherein the packet for 
Warding apparatus further comprises program code that, 
When executed by the processing unit, implements a virtual 
machine, and Wherein the program code received via the 
data communications interface comprises a sequence of 
instructions that is executed by the virtual machine to 
implement one or more agents. 
13. The apparatus of claim 12 Wherein the program code 
received via the data communications interface includes a 
sequence of Java byte codes and Wherein the virtual machine 
is a Java virtual machine. 
14. The apparatus of claim 10 Wherein the ?rst packet type 
comprises packets associated With a particular one of the I/O 
ports. 
15. The apparatus of claim 10 Wherein the ?rst packet type 
comprises packets comprises packets associated With a 
particular netWork address. 
16. The apparatus of claim 15 Wherein the particular 
netWork address is a particular media access control (MAC) 
address. 
17. The apparatus of claim 10 Wherein the ?rst packet type 
comprises packets comprises packets associated With a 
particular communications protocol. 
18. The apparatus of claim 17 Wherein the particular 
communications protocol is a hyper-text transfer protocol 
(HTTP). 
19. The apparatus of claim 17 Wherein the particular 
communications protocol is a ?le transfer protocol (FTP). 
20. A communications netWork comprising a packet for 
Warding device, the packet forWarding device including: 
a plurality of input/output (I/O) ports to transmit and 
receive packets of information from one or more other 
devices in the communications netWork 
?rst and second queues to buffer the packets prior to 
transmission via one or more of the I/O ports, packets 
buffered in the ?rst queue having higher transmission 
priority than packets buffered in the second queue; 
queue assignment logic to assign the packets to be buff 
ered in either the ?rst queue or the second queue 
Apr. 22, 2004 
according to a packet type associated With each packet, 
each of the packets being associated With at least one of 
a plurality of packet types; and 
one or more agents to monitor bandWidth consumption by 
packets associated With a ?rst packet type of the 
plurality of packet types and to automatically change 
assignment of packets associated With the ?rst packet 
type from the ?rst queue to the second queue if band 
Width consumption of packets associated With the ?rst 
packet type exceeds a threshold. 
21. The communications netWork of claim 20 Wherein the 
packet forWarding device further includes: 
a processing unit coupled to the plurality of I/O ports, the 
processing unit including a memory and a processor; 
and 
a data communications interface to receive program code 
in the memory of processing unit after installation of 
the packet forWarding device in the communications 
netWork and Wherein the one or more agents are 
implemented by execution of the program code in the 
processor of the processing unit. 
22. The communications netWork of claim 21 Wherein the 
packet forWarding device further includes program code 
that, When executed by the processing unit, implements a 
virtual machine, and Wherein the program code received via 
the data communications interface includes a sequence of 
instructions that is executed by the virtual machine to 
implement one or more agents. 
23. In a packet forWarding device, a method comprising: 
monitoring an error rate associated With one or more types 
of packet traf?c received in the packet forWarding 
device; 
determining Whether the error rate associated With the one 
or more types of packet traf?c exceeds a threshold; and 
automatically changing assignment of at least one type of 
packet traffic of the one or more types of packet traf?c 
from a queue having a ?rst priority to a queue having 
a second priority if the error rate exceeds the threshold. 
* * * * *

More Related Content

PDF
Dynamic assignment of traffic classes to a priority queue in a packet forward...
PDF
Dynamic assignment of traffic classes to a priority queue in a packet forward...
PDF
Dynamic assignment of traffic classes to a priority queue in a packet forward...
PDF
1 cm72 1e
PDF
S0 p1 faisal_ghazaleh
PDF
Hsdpa call scenarios
PDF
Fast detection of number of antenna ports in lte system
PDF
3GPP LTE-MAC
Dynamic assignment of traffic classes to a priority queue in a packet forward...
Dynamic assignment of traffic classes to a priority queue in a packet forward...
Dynamic assignment of traffic classes to a priority queue in a packet forward...
1 cm72 1e
S0 p1 faisal_ghazaleh
Hsdpa call scenarios
Fast detection of number of antenna ports in lte system
3GPP LTE-MAC

What's hot (20)

PDF
Architecture of the lte air interface
PDF
Umts call-flows
PDF
Xcap post processing tool
PDF
PPT
Gsm fundamental-uku
PPT
Chap10 edge 03_kh
PDF
Mpeg 101 demyst analysis & picture symptoms 20110808 opt
DOC
RACH procedure in LTE
PPT
Pdh and sdh1
PDF
Chap 3. e nb hardware description stc_ed01_0901
PPT
29422920 overview-of-ng-sdh
PPTX
Sharing session huawei network optimization january 2015 ver3
PPT
Wimax 4
PDF
SYNHRONOUS TRANSMISSION OFC
DOCX
40G 100G gigabit ethernet technology overview
PDF
3 gpp lte-pdcp
PPT
SDH Principle - Huawei
PPT
Chap09 phys rlc_03 _kh
PPT
Generic framing procedure
Architecture of the lte air interface
Umts call-flows
Xcap post processing tool
Gsm fundamental-uku
Chap10 edge 03_kh
Mpeg 101 demyst analysis & picture symptoms 20110808 opt
RACH procedure in LTE
Pdh and sdh1
Chap 3. e nb hardware description stc_ed01_0901
29422920 overview-of-ng-sdh
Sharing session huawei network optimization january 2015 ver3
Wimax 4
SYNHRONOUS TRANSMISSION OFC
40G 100G gigabit ethernet technology overview
3 gpp lte-pdcp
SDH Principle - Huawei
Chap09 phys rlc_03 _kh
Generic framing procedure
Ad

Similar to Dynamic assignment of traffic classes to a priority queue in a packet forwarding device (20)

PDF
Dynamic assignment of traffic classes to a priority queue in a packet forward...
PDF
Dynamic Assignment of Traffic Classes to a Priority Queue in a Packet Forward...
PDF
Us3997874 time divided switching and concentration apparatus
PDF
Content-aware dynamic network resource allocation
PDF
Sample patent invalidity report analyst oserve
PDF
Distributed computation in network devices
PDF
Method and apparatus for transporting parcels of data using network elements ...
PDF
Performance Improved Network on Chip Router for Low Power Applications
PPT
Lte protocols
PDF
Wireless Patents under the PTAB’s IPR & CBM Scrutiny
PDF
Performance evaluation of Frame Slotted.pdf
PDF
A efficacy of different buffer size on latency of network on chip (NoC)
PDF
Improved data efficiency of programmable arbiter based on chip permutation ne...
DOCX
Virtual
PDF
US7522774
PDF
Routing architecture including a compute plane configured for high-speed proc...
PPT
PDF
US20090263030
PDF
Single-phase binary phase-shift keying, quadrature phase shift keying demodul...
PDF
huawei-ce7850-32q-ei-b-brochure-datasheet.pdf
Dynamic assignment of traffic classes to a priority queue in a packet forward...
Dynamic Assignment of Traffic Classes to a Priority Queue in a Packet Forward...
Us3997874 time divided switching and concentration apparatus
Content-aware dynamic network resource allocation
Sample patent invalidity report analyst oserve
Distributed computation in network devices
Method and apparatus for transporting parcels of data using network elements ...
Performance Improved Network on Chip Router for Low Power Applications
Lte protocols
Wireless Patents under the PTAB’s IPR & CBM Scrutiny
Performance evaluation of Frame Slotted.pdf
A efficacy of different buffer size on latency of network on chip (NoC)
Improved data efficiency of programmable arbiter based on chip permutation ne...
Virtual
US7522774
Routing architecture including a compute plane configured for high-speed proc...
US20090263030
Single-phase binary phase-shift keying, quadrature phase shift keying demodul...
huawei-ce7850-32q-ei-b-brochure-datasheet.pdf
Ad

More from Tal Lavian Ph.D. (20)

PDF
Ultra low phase noise frequency synthesizer
PDF
Ultra low phase noise frequency synthesizer
PDF
Photonic line sharing for high-speed routers
PDF
Systems and methods to support sharing and exchanging in a network
PDF
Systems and methods for visual presentation and selection of IVR menu
PDF
Grid proxy architecture for network resources
PDF
Ultra low phase noise frequency synthesizer
PDF
Systems and methods for electronic communications
PDF
Ultra low phase noise frequency synthesizer
PDF
Ultra low phase noise frequency synthesizer
PDF
Radar target detection system for autonomous vehicles with ultra-low phase no...
PDF
Grid proxy architecture for network resources
PDF
Method and apparatus for scheduling resources on a switched underlay network
PDF
Dynamic assignment of traffic classes to a priority queue in a packet forward...
PDF
Method and apparatus for using a command design pattern to access and configu...
PDF
Reliable rating system and method thereof
PDF
Time variant rating system and method thereof
PDF
Systems and methods for visual presentation and selection of ivr menu
PDF
Ultra low phase noise frequency synthesizer
PDF
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
Photonic line sharing for high-speed routers
Systems and methods to support sharing and exchanging in a network
Systems and methods for visual presentation and selection of IVR menu
Grid proxy architecture for network resources
Ultra low phase noise frequency synthesizer
Systems and methods for electronic communications
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
Radar target detection system for autonomous vehicles with ultra-low phase no...
Grid proxy architecture for network resources
Method and apparatus for scheduling resources on a switched underlay network
Dynamic assignment of traffic classes to a priority queue in a packet forward...
Method and apparatus for using a command design pattern to access and configu...
Reliable rating system and method thereof
Time variant rating system and method thereof
Systems and methods for visual presentation and selection of ivr menu
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer

Recently uploaded (20)

PPTX
Embedded for Artificial Intelligence 1.pptx
PPTX
unit1d-communitypharmacy-240815170017-d032dce8.pptx
PDF
Dozuki_Solution-hardware minimalization.
PPTX
02fdgfhfhfhghghhhhhhhhhhhhhhhhhhhhh.pptx
PPTX
Lecture 3b C Library _ ESP32.pptxjfjfjffkkfkfk
PPTX
Fundamentals of Computer.pptx Computer BSC
PPTX
title _yeOPC_Poisoning_Presentation.pptx
PPTX
Prograce_Present.....ggation_Simple.pptx
PPTX
PROGRAMMING-QUARTER-2-PYTHON.pptxnsnsndn
PPTX
Embeded System for Artificial intelligence 2.pptx
PPTX
Entre CHtzyshshshshshshshzhhzzhhz 4MSt.pptx
PPT
Hypersensitivity Namisha1111111111-WPS.ppt
PPTX
Computers and mobile device: Evaluating options for home and work
PPTX
Lecture-3-Computer-programming for BS InfoTech
PPTX
material for studying about lift elevators escalation
PPTX
Wireless and Mobile Backhaul Market.pptx
DOCX
A PROPOSAL ON IoT climate sensor 2.docx
PPTX
PLC ANALOGUE DONE BY KISMEC KULIM TD 5 .0
PPTX
"Fundamentals of Digital Image Processing: A Visual Approach"
DOCX
fsdffdghjjgfxfdghjvhjvgfdfcbchghgghgcbjghf
Embedded for Artificial Intelligence 1.pptx
unit1d-communitypharmacy-240815170017-d032dce8.pptx
Dozuki_Solution-hardware minimalization.
02fdgfhfhfhghghhhhhhhhhhhhhhhhhhhhh.pptx
Lecture 3b C Library _ ESP32.pptxjfjfjffkkfkfk
Fundamentals of Computer.pptx Computer BSC
title _yeOPC_Poisoning_Presentation.pptx
Prograce_Present.....ggation_Simple.pptx
PROGRAMMING-QUARTER-2-PYTHON.pptxnsnsndn
Embeded System for Artificial intelligence 2.pptx
Entre CHtzyshshshshshshshzhhzzhhz 4MSt.pptx
Hypersensitivity Namisha1111111111-WPS.ppt
Computers and mobile device: Evaluating options for home and work
Lecture-3-Computer-programming for BS InfoTech
material for studying about lift elevators escalation
Wireless and Mobile Backhaul Market.pptx
A PROPOSAL ON IoT climate sensor 2.docx
PLC ANALOGUE DONE BY KISMEC KULIM TD 5 .0
"Fundamentals of Digital Image Processing: A Visual Approach"
fsdffdghjjgfxfdghjvhjvgfdfcbchghgghgcbjghf

Dynamic assignment of traffic classes to a priority queue in a packet forwarding device

  • 1. US 20040076161A1 (19) United States (12) Patent Application Publication (10) Pub. No.: US 2004/0076161 A1 Lavian et al. (43) Pub. Date: Apr. 22, 2004 (54) DYNAMIC ASSIGNMENT OF TRAFFIC CLASSES TO A PRIORITY QUEUE IN A PACKET FORWARDING DEVICE (76) Inventors: Tal I. Lavian, Sunnyvale, CA (US); Stephen Lau, Milpitas, CA (US) Correspondence Address: BLAKELY SOKOLOFF TAYLOR & ZAFMAN 12400 WILSHIRE BOULEVARD, SEVENTH FLOOR LOS ANGELES, CA 90025 (US) (21) Appl. No.: 10/685,947 (22) Filed: Oct. 15, 2003 Related US. Application Data (63) Continuation of application No. 09/227,389, ?led on Jan. 8, 1999. Publication Classi?cation 5 1 I nt. C] . 7 ..................................................... .. H04L 1/00 (52) US. Cl. ............. .. 370/395.41; 370/395.21; 370/230 (57) ABSTRACT An apparatus and method for dynamic assignment of classes of traf?c to a priority queue. Bandwidth consumption by one or more types of packet traffic received in the packet forwarding device is monitored to determine whether the bandwidth consumption exceeds a threshold. If the band width consumption exceeds the threshold, assignment of at least one type of packet traffic of the one or more types of packet traf?c is changed from a queue having a ?rst priority to a queue having a second priority.
  • 3. Patent Application Publication Apr. 22, 2004 Sheet 2 0f 6 US 2004/0076161 A1 QUEVE "I LL Locum. (>21 men can» 9mm 5 “aux FAQQKL S Win‘ LEL; HLAOEQ Kw Guava EH'ULK i$SOLS)-RE' Asaouxs, MLQK I I Wok“ (2:04))‘ Ylcl as - ‘I F - pmmm pkcmF-T GM EUG- BEST swam - . Gwwa V16. '2- B i
  • 5. Patent Application Publication Apr. 22, 2004 Sheet 4 0f 6 US 2004/0076161 A1 I P koaracn ’ ‘ (Jo-'2" iTomE. Enummwc, IP ‘
  • 7. Patent Application Publication Apr. 22, 2004 Sheet 6 0f 6 US 2004/0076161 A1 UZOEuQMDUEZOU
  • 8. US 2004/0076161 A1 DYNAMIC ASSIGNMENT OF TRAFFIC CLASSES TO A PRIORITY QUEUE IN A PACKET FORWARDING DEVICE FIELD OF THE INVENTION [0001] The present invention relates to the ?eld of tele communications, and more particularly to dynamic assign ment of traf?c classes to queues having different priority levels. BACKGROUND OF THE INVENTION [0002] The How of packets through packet-switched net Works is controlled by sWitches and routers that forWard packets based on destination information included in the packets themselves. A typical sWitch or router includes a number of input/output (I/ O) modules connected to a sWitch ing fabric, such as a crossbar or shared memory sWitch. In some sWitches and routers, the sWitching fabric is operated at a higher frequency than the transmission frequency of the I/O modules so that the sWitching fabric may deliver packets to an I/O module faster than the I/O module can output them to the netWork transmission medium. In these devices, packets are usually queued in the I/O module to aWait transmission. [0003] One problem that may occur When packets are queued in the I/O module or elseWhere in a sWitch or router is that the queuing delay per packet varies depending on the amount of traf?c being handled by the sWitch. Variable queuing delays tend to degrade data streams produced by real-time sampling (e.g., audio and video) because the original time delays betWeen successive packets in the stream convey the sampling interval and are therefore needed to faithfully reproduce the source information. Another problem that results from queuing packets in a sWitch or router is that data from a relatively important source, such as a shared server, may be impeded by data from less important sources, resulting in bottlenecks. SUMMARY OF THE INVENTION [0004] Amethod and apparatus for dynamic assignment of classes of traffic to a priority queue are disclosed. BandWidth consumption by one or more types of packet traf?c received in a packet forWarding device is monitored. The queue assignment of at least one type of packet traf?c is automati cally changed from a queue having a ?rst priority to a queue having a second priority if the bandWidth consumption eXceeds the threshold. [0005] Other features and advantages of the invention Will be apparent from the accompanying draWings and from the detailed description that folloWs beloW. BRIEF DESCRIPTION OF THE DRAWINGS [0006] The present invention is illustrated by Way of eXample and not limitation in the ?gures of the accompa nying draWings in Which like references indicate similar elements and in Which: [0007] FIG. 1 illustrates a packet forWarding device that can be used to implement embodiments of the present invention; [0008] FIG. 2A illustrates queue ?ll logic implemented by a queue manager in a quad interface device; Apr. 22, 2004 [0009] FIG. 2B illustrates queue drain logic according to one embodiment; [0010] FIG. 3 illustrates the How of a packet Within the sWitch of FIG. 1; [0011] FIG. 4 illustrates storage of an entry in an address resolution table managed by an address resolution unit; [0012] FIG. 5 is a diagram of the softWare architecture of the sWitch of FIG. 1 according to one embodiment; and [0013] FIG. 6 illustrates an eXample of dynamic assign ment of traffic classes to a priority queue. DETAILED DESCRIPTION [0014] A packet forWarding device in Which selected classes of netWork traffic may be dynamically assigned for priority queuing is disclosed. In one embodiment, the packet forWarding device includes a Java virtual machine for executing user-coded Java applets received from a netWork management server (NMS). AJava-to-native interface (JNI) is provided to alloW the Java applets to obtain error infor mation and traf?c statistics from the device hardWare and to alloW the Java applets to Write con?guration information to the device hardWare, including information that indicates Which classes of traf?c should be queued in priority queues. The Java applets implement user-speci?ed traf?c manage ment policies based on real-time evaluation of the error information and traf?c statistics to provide dynamic control of the priority queuing assignments. These and other aspects and advantages of the present invention are described beloW. [0015] FIG. 1 illustrates a packet forWarding device 17 that can be used to implement embodiments of the present invention. For the purposes of the present description, the packet forWarding device 17 is assumed to be a sWitch that sWitches packets betWeen ingress and egress ports based on media access control (MAC) addresses Within the packets. In an alternate embodiment, the packet forWarding device 17 may be a router that routes packets according to destination internet protocol (IP) addresses or a routing sWitch that performs both MAC address sWitching and IP address routing. The techniques and structures disclosed herein are applicable generally to a device that forWards packets in a packet sWitching netWork. Also, the term packet is used broadly herein to refer to a ?xed-length cell, a variable length frame or any other information structure that is self-contained as to its destination address. [0016] The sWitch 17 includes a sWitching fabric 12 coupled to a plurality of I/O units (only I/O units 1 and 16 are depicted) and to a processing unit 10. The processing unit includes at least a processor 31 (Which may be a microprocessor, digital signal processor or microcontroller) coupled to a memory 32 via a bus 33. In one embodiment, each I/O unit 1, 16 includes four physical ports P1-P4 coupled to a quad media access controller (QMAC) 14A, 14B via respective transceiver interface units 21A-24A, 21B-24B. Each I/O unit 1, 16 also includes a quad interface device (QID) 16A, 16B, an address resolution unit (ARU) 15A, 15B and a memory 18A, 18B, interconnected as shoWn in FIG. 1. Preferably, the sWitch 17 is modular With at least the I/O units 1, 16 being implemented on port cards (not shoWn) that can be installed in a backplane (not shoWn) of the sWitch 17. In one implementation, each port card includes four I/O units and therefore supports up to 16
  • 9. US 2004/0076161 A1 physical ports. The switch backplane includes slots for up to six port cards, so that the sWitch 17 can be scaled according to customer needs to support betWeen 16 and 96 physical ports. In alternate embodiments, each I/O unit 1, 16 may support more or feWer physical ports, each port card may support more or feWer I/O units 1, 16 and the sWitch 17 may support more or feWer port cards. For example, the I/O unit 1 shoWn in FIG. 1 may be used to support four 10baseT transmission lines (i.e., 10 Mbps (mega-bit per second), tWisted-pair) or four 100baseF transmission lines (100 Mbps, ?ber optic), While a different I/O unit (not shoWn) may be used to support a single 1000baseF transmission line (1000 Mbps, ?ber optic). Nothing disclosed herein should be construed as limiting embodiments of the present invention to use With a particular transmission medium, I/O unit, port card or chassis con?guration. [0017] Still referring to FIG. 1, When a packet 25 is received on physical port P1, it is supplied to the corre sponding physical transceiver 21A Which performs any necessary signal conditioning (e.g., optical to electrical signal conversion) and then forWards the packet 25 to the QMAC 14A. The QMAC 14A buffers packets received from the four physical transceivers 21A-24A as necessary, for Warding one packet at a time to the QID 16A. Receive logic Within the QID 16A noti?es the ARU 15A that the packet 25 has been received. The ARU computes a table index based on the destination MAC address Within the packet 25 and uses the index to identify an entry in a forWarding table that corresponds to the destination MAC address. In packet forwarding devices that operate on different protocol layers of the packet (e.g., routers), a forWarding table may be indexed based on other destination information contained Within the packet. [0018] According to one embodiment, the forWarding table entry identi?ed based on the destination MAC address indicates the sWitch egress port to Which the packet 25 is destined and also Whether the packet is part of a MAC address based virtual local area netWork (VLAN), or a port-based VLAN. (As an aside, a VLAN is a logical grouping of MAC addresses (a MAC-address-based VLAN) or a logical grouping of physical ports (a port-based VLAN).) The forWarding table entry further indicates Whether the packet 25 is to be queued in a priority queue in the I/O unit that contains the destination port. As discussed beloW, priority queuing may be speci?ed based on a number of conditions, including, but not limited to, Whether the packet is part of a particular IP ?oW, or Whether the packet is destined for a particular port, VLAN or MAC address. [0019] According to one embodiment, the QID 16A, 16B segments the packet 25 into a plurality of ?xed-length cells 26 for transmission through the sWitching fabric 12. Each cell includes a header 28 that identi?es it as a constituent of the packet 25 and that identi?es the destination port for the cell (and therefore for the packet 25). The header 28 of each cell also includes a bit 29 indicating Whether the cell is the beginning cell of a packet and also a bit 30 indicating Whether the packet 25 to Which the cell belongs is to be queued in a priority queue or a best effort queue on the destined I/O unit. [0020] The sWitching fabric 12 forWards each cell to the I/O unit indicated by the cell header 28. In the exemplary data How shoWn in FIG. 1, the constituent cells 26 of the Apr. 22, 2004 packet 25 are assumed to be forWarded to I/O unit 16 Where they are delivered to transmit logic Within the QID 16B. The transmit logic in the QID 16B includes a queue manager (not shoWn) that maintains a priority queue and a best effort queue in the memory 18B. In one embodiment, the memory 18B is resolved into a pool of buffers, each large enough to hold a complete packet. When the beginning cell of the packet 25 is delivered to the QID 16B, the queue manager obtains a buffer from the pool and appends the buffer to either the priority queue or the best effort queue according to Whether the priority bit 30 is set in the beginning cell. In one embodiment, the priority queue and the best effort queue are each implemented by a linked list, With the queue manager maintaining respective pointers to the head and tail of each linked list. Entries are added to the tail of the queue list by advancing the tail pointer to point to a neWly allocated buffer that has been appended to the linked list, and entries are popped off the head of the queue by advancing the head pointer to point to the next buffer in the linked list and returning the spent buffer to the pool. [0021] After a buffer is appended to either the priority queue or the best effort queue, the beginning cell and subsequent cells are used to reassemble the packet 25 Within the buffer. Eventually the packet 25 is popped off the head of the queue and delivered to an egress port via the QMAC 14B and the physical transceiver (e.g., 23B) in an egress operation. This is shoWn by Way of example in FIG. 1 by the egress of packet 25 from physical port P3 of I/O unit 16. [0022] FIG. 2A illustrates queue ?ll logic implemented by the queue manager in the QID. Starting at block 51, a cell is received in the QID from the sWitching fabric. The begin ning cell bit in the cell header is inspected at decision block 53 to determine if the cell is the beginning cell of a packet. If so, the priority bit in the cell header is inspected at decision block 55 to determine Whether to allocate an entry in the priority queue or the best effort queue for packet reassembly. If the priority bit is set, an entry in the priority queue is allocated at block 57 and the priority queue entry is associated With the portion of the cell header that identi?es the cell as a constituent of a particular packet at block 59. If the priority bit in the cell header is not set, then an entry in the best effort queue is allocated at block 61 and the best effort queue entry is associated With the portion of the cell header that identi?es the cell as a constituent of a particular packet at block 63. [0023] Returning to decision block 53, if the beginning cell bit in the cell header is not set, then the queue entry associated With the cell header is identi?ed at block 65. The association betWeen the cell header and the queue entry identi?ed at block 65 Was established earlier in either block 59 or block 63. Also, identi?cation of the queue entry in block 65 may include inspection of the priority bit in the cell to narroW the identi?cation effort to either the priority queue or the best effort queue. In block 67, the cell is combined With the preceding cell in the queue entry in a packet reassembly operation. If the reassembly operation in block 67 results in a completed packet (decision block 69), then the packet is marked as ready for transmission in block 71. In one embodiment, the packet is marked by setting a ?ag associated With the queue entry in Which the packet has been reassembled. Other techniques for indicating that a packet is ready for transmission may be used in alternate embodi ments.
  • 10. US 2004/0076161 A1 [0024] FIG. 2B illustrates queue drain logic according to one embodiment. At decision block 75, the entry at the head of the priority queue is inspected to determine if it contains a packet ready for transmission. If so, the packet is trans mitted at block 77 and the corresponding priority queue entry is popped off the head of the priority queue and deallocated at block 79. If a ready packet is not present at the head of the priority queue, then the entry at the head of the best effort queue is inspected at decision block 81. If a packet is ready at the head of the best effort queue, it is transmitted at block 83 and the corresponding best effort queue entry is popped off the head of the best effort queue and deallocated in block 85. Note that, in the embodiment illustrated in FIG. 2B, packets are drained from the best effort queue only after the priority queue has been emptied. In alternate embodiments, a timer, counter or similar logic element may be used to ensure that the best effort queue 105 is serviced at least every so often or at least after every N number of packets are transmitted from the priority queue, thereby ensuring at least a threshold level of service to best effort queue. [0025] FIG. 3 illustrates the How of a packet Within the sWitch 17 of FIG. 1. A packet is received in the sWitch at block 91 and used to identify an entry in a forWarding table called the address resolution table at block 93. At decision block 95, a priority bit in the AR table entry is inspected to determine Whether the packet belongs to a class of traffic that has been selected for priority queuing. If the priority bit is set, the packet is segmented into cells having respective priority bits set in their headers in block 97. If the priority bit is not set, the packet is segmented into cells having respective priority bits cleared their cell headers in block 99. The constituent cells of each packet are forWarded to an egress I/O unit by the sWitching fabric. In the egress I/O unit, the priority bit of each cell is inspected (decision block 101) and used to direct the cell to an entry in either the priority queue 103 or the best effort queue 105 Where it is combined With other cells to reassemble the packet. [0026] FIG. 4 illustrates storage of an entry in the address resolution table managed by the ARU. In one embodi ment, the AR table is maintained in a high speed static random access memory (SRAM) coupled to the ARU. Alternatively, the AR table may be included in a memory Within an application-speci?c integrated circuit (ASIC) that includes the ARU. Generally, the ARU stores an entry in the AR table in response to packet forWarding information from the processing unit. The processing unit supplies packet forWarding information to be stored in each AR table in the sWitch Whenever a neW association betWeen a destination address and a sWitch egress port is learned. In one embodi ment, an address-to-port association is learned by transmit ting a packet that has an unknoWn egress port assignment on each of the egress ports of the sWitch and associating the destination address of the packet With the egress port at Which an acknowledgment is received. Upon learning the association betWeen the egress port and the destination address, the processing unit issues forWarding information that includes, for eXample, an identi?er of the neWly asso ciated egress port, the destination MAC address, an identi ?er of the VLAN associated With the MAC address (if any), an identi?er of the VLAN associated With the egress port (if any), the destination IP address, the destination IP port (e.g., transmission control protocol (TCP), universal device pro tocol (UDP) or other IP port) and the IP protocol (e.g., Apr. 22, 2004 HTTP, FTP or other IP protocol). The source IP address, source IP port and source IP protocol may also be supplied to fully identify an end-to-end IP ?oW. [0027] Referring to FIG. 4, forWarding information 110 is received from the processing unit at block 115. At block 117, the ARU stores the forWarding information in an AR table entry. At decision block 119, the physical egress port iden ti?er stored in the AR table entry is compared against priority con?guration information to determine if packets destined for the egress port have been selected for priority egress queuing. If so, the priority bit is set in the AR table entry in block 127. Thereafter, incoming packets that indeX the neWly stored table entry Will be queued in the priority queue to aWait transmission. If packets destined for the egress port have not been selected for priority queuing, then at decision block 121 the MAC address stored in the AR table entry is compared against the priority con?guration information to determine if packets destined for the MAC address have been selected for priority egress queuing. If so, the priority bit is set in the AR table entry in block 127. If packets destined for the MAC address have not been selected for priority egress queuing, then at decision block 123 the VLAN identi?er stored in the AR table entry (if present) is compared against the priority con?guration infor mation to determine if packets destined for the VLAN have been selected for priority egress queuing. If so, the priority bit is set in the AR table entry in block 127. If packets destined for the VLAN have not been selected for priority egress queuing, then at block 125 the IP ?oW identi?ed by the IP address, IP port and IP protocol in the AR table is compared against the priority con?guration information to determine if packets that form part of the IP How have been selected for priority egress queuing. If so, the priority bit is set in the AR table entry, otherWise the priority bit is not set. Yet other criteria may be considered in assigning priority queuing in alternate embodiments. For example, priority queuing may be speci?ed for a particular IP protocol (e.g., FTP, HTTP). Also, the ingress port, source MAC address or source VLAN of a packet may also be used to determine Whether to queue the packet in the priority egress packet. More speci?cally, in one embodiment, priority or best effort queuing of unicast traf?c is determined based on destination parameters (e.g., egress port, destination MAC address or destination IP address), While priority or best effort queuing of multicast traf?c is determined based on source parameters (e.g., ingress port, source MAC address or source IP address). [0028] FIG. 5 is a diagram of the softWare architecture of the sWitch 17 of FIG. 1 according to one embodiment. An operating system 143 and device drivers 145 are provided to interface With the device hardWare 141. For eXample, device drivers are provided to Write con?guration information and AR storage entries to the ARUs in respective I/ O units. Also, the operating system 143 performs memory management functions and other system services in response to requests from higher level softWare. Generally, the device drivers 145 eXtend the services provided by the operating system and are invoked in response to requests for operating system service that involve device-speci?c operations. [0029] The device management code 147 is eXecuted by the processing unit (e.g., element 10 of FIG. 1) to perform system level functions, including management of forWard ing entries in the distributed AR tables and management of
  • 11. US 2004/0076161 A1 forwarding entries in a master forwarding table maintained in the memory of the processing unit. The device manage ment code 147 also includes routines for invoking device driver services, for example, to query the ARU for traf?c statistics and error information, or to Write updated con?gu ration information to the ARUs, including priority queuing information. Further, the device management code 147 includes routines for Writing updated con?guration informa tion to the ARUs, as discussed beloW in reference to FIG. 6. In one implementation, the device management code 147 is native code, meaning that the device management code 147 is a compiled set of instructions that can be executed directly by a processor in the processing unit to carry out the device management functions. [0030] In one embodiment, the device management code 147 supports the operation of a Java client 160 that includes a number of Java applets, including a monitor applet 157, a policy enforcement applet 159 and a con?guration applet 161. A Java applet is an instantiation of a Java class that includes one or more methods for self initialiZation (e.g., a constructor method called “Applet( )”), and one or more methods for communicating With a controlling application. Typically the controlling application for a Java applet is a Web broWser executed on a general purpose computer. In the softWare architecture shoWn in FIG. 5, hoWever, a Java application called Data Communication Interface (DCI) 153 is the controlling application for the monitor, policy enforce ment and con?guration applets 157, 159, 161. The DCI application 153 is executed by a Java virtual machine 149 to manage the doWnload of Java applets from a netWork management server (NMS) 170. A library of Java objects 155 is provided for use by the Java applets 157, 159, 161 and the DCI application 153. [0031] In one implementation, the NMS 170 supplies Java applets to the sWitch 17 in a hyper-text transfer protocol (HTTP) data stream. Other protocols may also be used. The constituent packets of the HTTP data stream are addressed to the IP address of the sWitch and are directed to the processing unit after being received by the I/O unit coupled to the NMS 170. After authenticating the HTIT data stream, the DCI application 153 stores the Java applets provided in the data stream in the memory of the processing unit and executes a method to invoke each applet. An applet is invoked by supplying the Java virtual machine 149 With the address of the constructor method of the applet and causing the Java virtual machine 149 to begin execution of the applet code. Program code de?ning the Java virtual machine 149 is executed to interpret the platform independent byte codes of the Java applets 157, 159, 161 into native instructions that can be executed by a processor Within the processing unit. [0032] According to one embodiment, the monitor applet 157, policy enforcement applet 159 and con?guration applet 161 communicate With the device management code 147 through a Java-native interface (JNI) 151. The JNI 151 is essentially an application programming interface (API) and provides a set of methods that can be invoked by the Java applets 157, 159, 161 to send messages and receive responses from the device management code 147. In one implementation, the JNI 151 includes methods by Which the monitor applet 157 can request the device management code 147 to gather error information and traffic statistics from the device hardWare 141. The JNI 151 also includes methods by Which the con?guration applet 161 can request the device Apr. 22, 2004 management code 147 to Write con?guration information to the device hardWare 141. More speci?cally, the JNI 151 includes a method by Which the con?guration applet 161 can indicate that priority queuing should be performed for speci?ed classes of traf?c, including, but not limited to, the classes of traf?c discussed above in reference to FIG. 4. In this Way, a user-coded con?guration applet 161 may be executed by the Java virtual machine 149 Within the sWitch 17 to invoke a method in the JNI 151 to request the device management code 147 to Write information that assigns selected classes of traf?c to be queued in the priority egress queue. In effect, the con?guration applet 161 assigns virtual queues de?ned by the selected classes of traf?c to feed into the priority egress queue. [0033] Although a Java virtual machine 149 and Java applets 157, 159, 161 have been described, other virtual machines, interpreters and scripting languages may be used in alternate embodiments. Also, as discussed beloW, more or feWer Java applets may be used to perform the monitoring, policy enforcement and con?guration functions in alternate embodiments. [0034] FIG. 6 illustrates an example of dynamic assign ment traf?c classes to a priority queue. An exemplary netWork includes sWitches A and B coupled together at physical ports 32 and 1, respectively. Suppose that a netWork administrator or other user determines that an important server 175 on port 2 of sWitch A requires a relatively high quality of service (QoS), and that, at least in sWitch B, the required QoS can be provided by ensuring that at least 20% of the egress capacity of sWitch B, port 1 is reserved for traffic destined to the MAC address of the server 175. One Way to ensure that 20% egress capacity is reserved to traf?c destined for the server 175 is to assign priority queuing for packets destined to the MAC address of the server 175, but not for other traffic. While such an assignment Would ensure priority egress to the server traf?c, it also may result in unnecessarily high bandWidth allocation to the server 175, potentially starving other important traf?c or causing other important traf?c to become bottlenecked behind less impor tant traf?c in the best effort queue. For example, suppose that there are at least tWo other MAC address destinations, MAC address A and MAC address B, to Which the user desires to assign priority queuing, so long as the egress capacity required by the server-destined traf?c is available. In that case, it Would be desirable to dynamically con?gure the MAC address A and MAC address B traf?c to be queued in either the priority queue or the best effort queue according to existing traf?c conditions. In at least one embodiment, this is accomplished using monitor, policy enforcement and con?guration applets that have been doWnloaded to sWitch B and Which are executed in a Java client in sWitch B as described above in reference to FIG. 5. [0035] FIG. 6 includes exemplary pseudocode listings of monitor, policy enforcement and con?guration applets 178, 179, 180 that can be used to ensure that at least 20% of the egress capacity of sWitch B, port 1 is reserved for traf?c destined to the server 175, but Without unnecessarily deny ing priority queuing assignment to traffic destined for MAC addresses A and B. After initialiZation, the monitor applet 178 repeatedly measures of the port 1 line utiliZation from the device hardWare. In one embodiment, the ARU in the I/O unit that manages port 1 keeps a count of the number of packets destined for particular egress ports, packets destined
  • 12. US 2004/0076161 A1 for particular MAC addresses, packets destined for particu lar VLANS, packets that form part of a particular IP ?oW, packets having a particular IP protocol, and so forth. The ARU also tracks the number of errors associated With these different classes of traf?c, the number of packets from each class of traf?c that are dropped, and other statistics. By determining the change in these different statistics per unit time, a utiliZation factor may be generated that represents the percent utiliZation of the capacity of an egress port, an I/O unit or the overall sWitch. Error rates and packet drop rates may also be generated. [0036] In one embodiment, the monitor applet 178 mea sures line utiliZation by invoking methods in the JNI to read the port 1 line utiliZation resulting from traf?c destined for MAC address A and for MAC address B every 10 millisec onds. [0037] The policy enforcement applet 179 includes vari ables to hold the line utiliZation percentage of traf?c destined for MAC address A (A%), the line utiliZation percentage of traf?c destined for MAC address B (B%), the queue assign ment (i.e., priority or best effort) of traf?c destined for the server MAC address (QA_S), the queue assignment of traf?c destined for MAC address A (QA_A) and the queue assign ment of traf?c destined for MAC address B. Also, a constant, DELTA, is de?ned to be 5% and the queue assignments for the MAC address A, MAC address B and server MAC address traf?c are initially set to the priority queue. [0038] The policy enforcement applet 179 also includes a forever loop in Which the line utiliZation percentages A% and B% are obtained from the monitor applet 178 and used to determine Whether to change the queue assignments QA_A and QA_B. If the MAC address A traf?c and the MAC address B traf?c are both assigned to the priority queue (the initial con?guration) and the sum of the line utiliZation percentages A% and B% eXceeds 80%, then less than 20% line utiliZation remains for the server-destined traf?c. In that event, the MAC address A traffic is reassigned from the priority queue to the best effort queue (code statement 181). If the MAC address A traffic is assigned to the best effort queue and the MAC address B traf?c is assigned to the priority queue, then the MAC address A traf?c is reassigned to the priority queue if the sum of the line utiliZation percentages A% and B% drops beloW 80% less DELTA (code statement 183). The DELTA parameter provides a deadband to prevent rapid changing of priority queue assignment. [0039] If the MAC address Atraf?c is assigned to the best effort queue and the MAC address B traffic is assigned to the priority queue and the line utiliZation percentage B% eXceeds 80%, then less than 20% line utiliZation remains for the server-destined traffic. Consequently, the MAC address B traffic is reassigned from the priority queue to the best effort queue (code statement 185). If the MAC address B traf?c is assigned to the best effort queue and the line utiliZation percentage B% drops beloW 80% less DELTA, then the MAC address B traf?c is reassigned to the priority queue (code statement 187). Although not speci?cally pro vided for in the exemplary pseudocode listing of FIG. 6, the policy enforcement applet 179 may treat the traf?c destined for the MAC A and MAC B addresses more symmetrically by including additional statements to conditionally assign traf?c destined for MAC address A to the priority queue, but Apr. 22, 2004 not traf?c destined for MAC address B. In the eXemplary pseudocode listing of FIG. 6, the policy enforcement applet 179 delays for 5 milliseconds at the end of each pass through the forever loop before repeating. [0040] The con?guration applet 180 includes variables, QA_A and QA_B, to hold the queue assignments of the traffic destined for the MAC addressesA and B, respectively. Variables LAST_QA_A and LAST_QA_B are also provided to record the history (i.e., most recent values) of the QA_A and QA_B values. The LAST_QA_A and LAST_QA_B variables are initialiZed to indicate that traffic destined for the MAC addressesAand B is assigned to the priority queue. [0041] Like the monitor and policy enforcement applets 178,179, the con?guration applet 180 includes a forever loop in Which a code sequence is eXecuted folloWed by a delay. In the eXemplary listing of FIG. 6, the ?rst operation performed by the con?guration applet 180 Within the forever loop is to obtain the queue assignments QA_A and QA_B from the policy enforcement applet 179. If the queue assign ment indicated by QAA is different from the queue assign ment indicated by LAST_QA_A, then a JNI method is invoked to request the device code to recon?gure the queue assignment of the traf?c destined for MAC address A according to the neW QA_A value. The neW QA_A value is then copied into the LAST_QA_A variable so that subse quent queue assignment changes are detected. If the queue assignment indicated by QA_B is different from the queue assignment indicated by LAST_QA_B, then a J NI method is invoked to request the device code to recon?gure the queue assignment of the traf?c destined for MAC address B according to the neW QA_B value. The neW QA_B value is then copied into the LAST_QA_B variable so that subse quent queue assignment changes are detected. By this opera tion, and the operation of the monitor and policy enforce ment applets 178, 179, traffic destined for the MAC addresses A and B is dynamically assigned to the priority queue according to real-time evaluations of the traffic con ditions in the sWitch. [0042] Although a three-applet implementation is illus trated in FIG. 6, more or feWer applets may be used in an alternate embodiment. For eXample, the functions of the monitor, policy enforcement and con?guration applets 178, 179, 180 may be implemented in a single applet. Alterna tively, multiple applets may be provided to perform policy enforcement or other functions using different queue assign ment criteria. For eXample, one policy enforcement applet may make priority queue assignments based on destination MAC addresses, While another policy enforcement applet makes priority queue assignments based on error rates or line utiliZation of higher level protocols. Multiple monitor applets or con?guration applets may similarly be provided. [0043] Although queue assignment policy based on des tination MAC address is illustrated in FIG. 6, myriad different queue assignment criteria may be used in other embodiments. For eXample, instead of monitoring and updating queue assignment based on traf?c to destination MAC addresses, queue assignments may be updated on other traf?c patterns, including traf?c to speci?ed destination ports, traf?c from speci?ed source ports, traf?c from speci ?ed source MAC addresses, traf?c that forms part of a speci?ed IP ?oW, traf?c that is transmitted using a speci?ed protocol (e.g., HTTP, FTP or other protocols) and so forth.
  • 13. US 2004/0076161 A1 Also, queue assignments may be updated based on environ mental conditions such as time of day, changes in network con?guration (e.g., due to failure or congestion at other netWork nodes), error rates, packet drop rates and so forth. Monitoring, policy enforcement and con?guration applets that combine many or all of the above-described criteria may be implemented to provide sophisticated traf?c handling capability in a packet forWarding device. [0044] Although dynamic assignment of traf?c classes to a priority egress queue has been emphasiZed, the methods and apparatuses described herein may alternatively be used to assign traf?c classes to a hierarchical set of queues anyWhere in a packet forWarding device including, but not limited to, ingress queues and queues associated With deliv ering and receiving packets from the sWitching fabric. Further, although the queue assignment of traf?c classes has been described in terms of a pair of queues (priority and best effort), additional queues in a prioritiZation hierarchy may be used Without departing from the spirit and scope of the present invention. [0045] In the foregoing speci?cation, the invention has been described With reference to speci?c exemplary embodi ments thereof. It Will, hoWever, be evident that various modi?cations and changes may be made to the speci?c exemplary embodiments Without departing from the broader spirit and scope of the invention as set forth in the appended claims. Accordingly, the speci?cation and draWings are to be regarded in an illustrative rather than a restrictive sense. What is claimed is: 1. In a packet forWarding device, a method comprising: monitoring bandWidth consumption by one or more types of packet traf?c received in the packet forWarding device; determining Whether the bandWidth consumption by the one or more types of packet traf?c exceeds a threshold; and automatically changing assignment of at least one type of packet traf?c of the one or more types of packet traf?c from a queue having a ?rst priority to a queue having a second priority if the bandWidth consumption exceeds the threshold. 2. The method of claim 1 further comprising receiving program code in the packet forWarding device after instal lation of the packet forWarding device in a packet commu nications netWork and Wherein said monitoring, determining and automatically changing is implemented by the executing program code. 3. The method of claim 2 Wherein receiving the program code comprises receiving a sequence of virtual machine instructions and Wherein executing the program code com prises executing the sequence of virtual machine instructions using a virtual machine included in the packet forWarding device. 4. The method of claim 3 Wherein receiving the sequence of virtual machine instructions comprises receiving a sequence of Java byte codes and Wherein executing the sequence of virtual machine instructions using a virtual machine comprises executing the sequence of Java byte codes in a Java virtual machine included in the packet forWarding device. Apr. 22, 2004 5. The method of claim 1 Wherein monitoring bandWidth consumption by one or more types of packet traf?c received in the packet forWarding device comprises determining a measure of bandWidth consumption in the packet forWarding device due to traf?c associated With a physical port on the forWarding device. 6. The method of claim 1 Wherein monitoring bandWidth consumption by one or more types of packet traf?c received in the packet forWarding device comprises determining a measure of bandWidth consumption in the packet forWarding device due to traf?c associated With a particular netWork address. 7. The method of claim 6 Wherein determining a measure of bandWidth consumption in the packet forWarding device due to traf?c associated With the particular netWork address comprises determining a measure of bandWidth consump tion due to traf?c associated With a particular media access control (MAC) address. 8. The method of claim 1 Wherein monitoring bandWidth consumption by one or more types of packet traf?c received in the packet forWarding device comprises determining a measure of bandWidth consumption in the packet forWarding device due to traffic associated With a particular communi cations protocol. 9. The method of claim 8 Wherein determining a measure of bandWidth consumption in the packet forWarding device due to traf?c associated With the particular communications protocol comprises determining a measure of bandWidth consumption in the packet forWarding device due to traf?c associated With at least one of the folloWing protocols: ?le transfer protocol (FTP), hyper-text transfer protocol (HTTP), transmission control protocol/internet protocol (TCP/IP). 10. A packet forWarding apparatus comprising: a plurality of input/output (I/O) ports to transmit and receive packets of information; ?rst and second queues to buffer the packets prior to transmission via one or more of the I/O ports, packets buffered in the ?rst queue having higher transmission priority than packets buffered in the second queue; queue assignment logic to assign the packets to be buff ered in either the ?rst queue or the second queue according to a packet type associated With each packet, each of the packets being associated With at least one of a plurality of packet types; and one or more agents to monitor bandWidth consumption by packets associated With a ?rst packet type of the plurality of packet types and to automatically change assignment of packets associated With the ?rst packet type from the ?rst queue to the second queue if band Width consumption of packets associated With the ?rst packet type exceeds a threshold. 11. The apparatus of claim 10 further comprising: a processing unit coupled to the plurality of I/O ports, the processing unit including a memory and a processor; and a data communications interface to receive program code in the memory of processing unit after installation of the packet forWarding apparatus in a packet communi cations netWork and Wherein the one or more agents are
  • 14. US 2004/0076161 A1 implemented by execution of the program code in the processor of the processing unit. 12. The apparatus of claim 11 Wherein the packet for Warding apparatus further comprises program code that, When executed by the processing unit, implements a virtual machine, and Wherein the program code received via the data communications interface comprises a sequence of instructions that is executed by the virtual machine to implement one or more agents. 13. The apparatus of claim 12 Wherein the program code received via the data communications interface includes a sequence of Java byte codes and Wherein the virtual machine is a Java virtual machine. 14. The apparatus of claim 10 Wherein the ?rst packet type comprises packets associated With a particular one of the I/O ports. 15. The apparatus of claim 10 Wherein the ?rst packet type comprises packets comprises packets associated With a particular netWork address. 16. The apparatus of claim 15 Wherein the particular netWork address is a particular media access control (MAC) address. 17. The apparatus of claim 10 Wherein the ?rst packet type comprises packets comprises packets associated With a particular communications protocol. 18. The apparatus of claim 17 Wherein the particular communications protocol is a hyper-text transfer protocol (HTTP). 19. The apparatus of claim 17 Wherein the particular communications protocol is a ?le transfer protocol (FTP). 20. A communications netWork comprising a packet for Warding device, the packet forWarding device including: a plurality of input/output (I/O) ports to transmit and receive packets of information from one or more other devices in the communications netWork ?rst and second queues to buffer the packets prior to transmission via one or more of the I/O ports, packets buffered in the ?rst queue having higher transmission priority than packets buffered in the second queue; queue assignment logic to assign the packets to be buff ered in either the ?rst queue or the second queue Apr. 22, 2004 according to a packet type associated With each packet, each of the packets being associated With at least one of a plurality of packet types; and one or more agents to monitor bandWidth consumption by packets associated With a ?rst packet type of the plurality of packet types and to automatically change assignment of packets associated With the ?rst packet type from the ?rst queue to the second queue if band Width consumption of packets associated With the ?rst packet type exceeds a threshold. 21. The communications netWork of claim 20 Wherein the packet forWarding device further includes: a processing unit coupled to the plurality of I/O ports, the processing unit including a memory and a processor; and a data communications interface to receive program code in the memory of processing unit after installation of the packet forWarding device in the communications netWork and Wherein the one or more agents are implemented by execution of the program code in the processor of the processing unit. 22. The communications netWork of claim 21 Wherein the packet forWarding device further includes program code that, When executed by the processing unit, implements a virtual machine, and Wherein the program code received via the data communications interface includes a sequence of instructions that is executed by the virtual machine to implement one or more agents. 23. In a packet forWarding device, a method comprising: monitoring an error rate associated With one or more types of packet traf?c received in the packet forWarding device; determining Whether the error rate associated With the one or more types of packet traf?c exceeds a threshold; and automatically changing assignment of at least one type of packet traffic of the one or more types of packet traf?c from a queue having a ?rst priority to a queue having a second priority if the error rate exceeds the threshold. * * * * *