SlideShare a Scribd company logo
1 of 15
Download to read offline
c12) United States Patent 
Lavian et al. 
(54) DYNAMIC ASSIGNMENT OF TRAFFIC 
CLASSES TO A PRIORITY QUEUE IN A 
PACKET FORWARDING DEVICE 
(75) Inventors: Tal I. Lavian, Sunnyvale, CA (US); 
Stephen Lau, Milpitas, CA (US) 
(73) Assignee: Rockstar Consortium US LP, Plano, 
TX (US) 
( *) Notice: Subject to any disclaimer, the term of this 
patent is extended or adjusted under 35 
U.S.C. 154(b) by 2616 days. 
(21) Appl. No.: 09/747,296 
(22) Filed: Dec. 22, 2000 
(65) 
(60) 
(51) 
Prior Publication Data 
US 2002/0021701 Al Feb. 21, 2002 
Related U.S. Application Data 
Provisional application No. 60/226,787, filed on Aug. 
21,2000. 
Int. Cl. 
H04L 12128 (2006.01) 
(52) U.S. Cl. 
USPC ........... 370/401; 370/252; 370/255; 370/352; 
370/400; 370/522 
(58) Field of Classification Search 
USPC ......... 370/229, 412, 428, 429, 252-257, 352, 
370/400, 522, 395.2, 295.2 
See application file for complete search history. 
(56) References Cited 
U.S. PATENT DOCUMENTS 
2,775,280 A * 12/1956 Kasdan 150/110 
5,515,376 A * 5/1996 Murthy eta!. ................ 370/402 
111111 1111111111111111111111111111111111111111111111111111111111111 
DONE 
US008619793B2 
(10) Patent No.: US 8,619, 793 B2 
(45) Date of Patent: Dec. 31, 2013 
5,898,687 A * 
5,926,463 A * 
5,953,335 A * 
6,094,435 A * 
6,104,700 A * 
6,111,874 A * 
6,185,215 B1 * 
6,246,680 B1 * 
6,292,489 B1 * 
6,295,532 B1 * 
6,335,935 B2 * 
6,405,258 B1 * 
6,427,132 B1 * 
6,430,188 B1 * 
6,430,616 B1 * 
6,463,067 B1 * 
6,515,993 B1 * 
6,577,636 B1 * 
6,611,522 B1 * 
6,611,867 B1 * 
6,633,835 B1 * 
6,687,247 B1 * 
6,707,817 B1 * 
6,728,213 B1 * 
6,731,601 B1 * 
4/1999 Harriman eta!. ............. 370/390 
7/1999 Ahearn eta!. ................ 370/254 
9/1999 Erimli et al ................... 370/390 
7/2000 Hoffman eta!. .............. 370/414 
8/2000 Haddock et al ............... 370/235 
8/2000 Kerstein ........................ 370/389 
2/2001 Aho .............................. 370/402 
6/2001 Muller eta!. ................. 370/389 
9/2001 Fukushima eta!. .......... 370/401 
9/2001 Hawkinson ....................... 707/4 
1/2002 Kadambi et al ............... 370/396 
6/2002 Erimli et al ................... 709/235 
7/2002 Bowman-Amuah ............ 703/22 
8/2002 Kadambi et al ............... 370/398 
8/2002 Brinnand eta!. ............. 709/224 
10/2002 Hebb et al ..................... 370/413 
2/2003 Williams eta!. ......... 370/395.53 
6/2003 Sang eta!. ................. 370/395.7 
8/2003 Zheng et al .............. 370/395.21 
8/2003 Bowman-Amuah .......... 709/224 
10/2003 Moran eta!. .................. 702/190 
2/2004 Wilford et al ................. 370/392 
3/2004 Kadambi et al ............... 370/390 
4/2004 Tzeng et al ................... 370/235 
5/2004 Krishna eta!. ................ 370/230 
(Continued) 
Primary Examiner- Andrew Lai 
Assistant Examiner- Andrew C Lee 
(74) Attorney, Agent, or Firm- Anderson Gorecki & 
Rouille LLP 
(57) ABSTRACT 
An apparatus and method for dynamic assignment of classes 
of traffic to a priority queue. Bandwidth consumption by one 
or more types of packet traffic received in the packet forward­ing 
device is monitored to determine whether the bandwidth 
consumption exceeds a threshold. If the bandwidth consump­tion 
exceeds the threshold, assignment of at least one type of 
packet traffic of the one or more types of packet traffic is 
changed from a queue having a first priority to a queue having 
a second priority. 
21 Claims, 6 Drawing Sheets
(56) References Cited 
US 8,619,793 B2 
Page 2 
6,980,515 B1* 
6,996,099 B1 * 
U.S. PATENT DOCUMENTS 7,009,968 B2 * 
7,016,365 B1* 
6,735,198 B1 * 5/2004 Edsall eta!. .................. 370/389 7,020,697 B1 * 
6,760,776 B1 * 7/2004 Gallo et al . ................... 709/238 7,116,679 B1 * 
6,778,525 B1* 8/2004 Baumetal. ................... 370/351 7,184,441 B1* 
6,788,681 B1* 9/2004 Hurren eta!. ................. 370/389 7,197,044 B1 * 
6,798,788 B1 * 9/2004 Viswanath et al . ........... 370/469 7,464,180 B1 * 
6,804,234 B1 * 10/2004 Chow ............................ 370/389 8,040,901 B1* 
6,850,521 B1* 2/2005 Kadambi et al. .............. 370/389 200110043611 A1 * 
6,868,065 B1* 3/2005 Kloth et al. ................... 370/236 2005/0152369 A1 * 
6,870,840 B1 * 3/2005 Hill eta!. ...................... 370/389 2005/0201387 A1 * 
6,912,232 B1 * 6/2005 Duffield et al . ............... 370/468 2006/0007859 A1 * 
6,940,814 B1 * 9/2005 Hoffman ....................... 370/235 
6,963,566 B1 * 1112005 Kaniz eta!. ................... 370/392 * cited by examiner 
12/2005 Schunk eta!. ............. 370/230.1 
2/2006 Kadambi et al . .............. 370/389 
3/2006 Ambe eta!. .................. 370/389 
3/2006 Grow et al . ................... 370/413 
3/2006 Goodman et a!. ............ 709/223 
10/2006 Ghahremani ................. 370/463 
2/2007 Kadambi et al . .............. 370/400 
3/2007 Kadambi et al . .............. 370/418 
12/2008 Jacobs eta!. .................. 709/240 
10/2011 Kompella et al . ........ 370/395.71 
1112001 Kadambi et al. .. ............ 370/429 
7/2005 Ambe eta!. .................. 370/392 
9/2005 Willis ...................... 370/395.52 
112006 Kadambi et al . .............. 370/229
Switching Fabric 
12 
·o--·------_r:Ja,-------------------:., ':)o : :: "'-._ ' '.. •J i26 : '-...--......... '~8 29 • '-....,..._ L. 
j 
0 ~' 
!ARUL__ 0!0. -·-!Memory 
~ l6A • 18A 
Au-·£ <v'j£;; 
QMAL 
14A 
······ 1!0 Unit ·1 
J 
1'1 
••• 
FIG. 1 
_ ~xJ26 ,,,,,,,,, ~~ ,,,,,,,,,,,,,,,,,,,,,,,~~~~. 
~~~~~ .. ~ MemcHy 
J.B.S 
2·1 8-.. I 228'. 
QMAL 
14B 
238" i 248'. 9' 
P30 
n ·;~ u-----·---J 
.,,,,~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~. 
Procnssor 
3J 
......... ::~=:.:::::::::-r::.::.::.: .. 
Res !Memory 
3-:, ! 32 _::2. ! _. - 
Processing 
Unit 10 
---- l/0 Unit 16 
~ 
00 
• 
~ 
~ 
~ 
~ = ~ 
c ('D 
~ 
(...H.. ~ 
N 
0.. .. 
(.H 
rFJ =­(' 
D 
(..'..D... .. 
0... .. 
0 
d 
rJl 
00 
0.., 
""C""' 
~ 
C w = N
U.S. Patent Dec. 31, 2013 
FIG. 2A 
Queue Fill 
Logic 
Identify Queue 
Entry Associated 
With Cell Header 
Reassemb!e Cell 
With Precedinq Cell 
In Queue Er1try 
I /z _/69 
·' '. 
/Packet"' No 
Done 
? 
-- 65 
rvlark 
._P_a_c_kP_.t_R_e_a_d~_',~ .... 71 
Sheet 2 of 6 
Get Next Cell 
From Switch Fabric 
57 _:,_ ___________ :'! __Y____e___s___ __ AHocate 
Entry In 
Priority 
Queue 
59, J 
Associate 
Entry New 
Cell Header 
I 
I 
US 8,619,793 B2 
-63 / 
! • Associate I Entry With I Cell Header 
Queue Drain Logic 
FIG. 28 io r /'""""-( ::) ./~~ /81 
.. /-·Packet"" 
//Pac~:e~ ~ No No Rdy · Rdy 
Pri. G. B.L Q. 
'> ""' l Yes J Yes 
Transmit -77 Transmit --83 
Packet Packet 
t 
Dea!locates ---· 79 Deal!ocates ---- 85 
Entry In Entry !n Best 
Priority Queue Effort Queue
U.S. Patent Dec. 31, 2013 Sheet 3 of 6 
·-·91 
No I Priority B~t --·- 95 
I~se~~~~atle 
/99 97, Yes 
........................................................................................................................................( ................ .... .................................................................................................................................................................................... .. 
I 
Segment Packet 
Into Cells Having 
Prioritv Bit Cleared 
In Ce!i Header 
Segment Packet 
Into Cells Having 
Priority Bit Cleared 
In Cell Header 
~-- 
US 8,619,793 B2 
Packet 
Ingress 
.......................... - ........... r·····-· ................ . 
==========~,=========== S'Vitch Fabric 
Prior1ty 
Queue 
103 
.-----Y,_e_s -1 Prioritv s---N_o------. -1 v Bit. l... ........... . s;t L...... ......... I 1 Best Effort 
, Queue > Packet 
1 1 fl5 Egress 
t ·~~~~:~~~~ 
101 
FIGx 3
U.S. Patent Dec. 31, 2013 Sheet 4 of 6 
StoreAR 
Table Entry ............... -............... -......... . 
--------------~-------------J·---------------~------------- 
1•15 -.... Receive Forwarding L_ 
Information From 
Processing Unlt --------- 
117- Store For.varding 
Yes 
Yes 
Information !n 
AR Table Entry 
// ............... . /125 
// -<........_ 
,~ ____ v_,'e_.s_· -</ IP Flow -...... 
"" PRI? 
Set Priority 
Bit In AR 
Table Entry 
No 
US 8,619,793 B2 
Physical Port 
MAC Address 
VLAN!D 
lPAddress 
IP Port 
IP Protocol 
I 
110 
l FIG. 4 
DONE
.1'-- 
Switch / 
Software '-, 
.,_ 
Device 
Management 
Code (native) 
.:L4.I 
Device 
Drivers 
J45 
JAVA Client -- 160 
-~-----../. ______ ___ 
(  
~~~ 
./"'-----, 
App!et 
Dovvnload 
----....... 
«t---~ Applet '-....., 
(monitor) .,_~JAVA 
{ App!et 
){policy) 
.,. 1 f 1':Jehvork 
JAVA 
Native 
Insurance 
.l~J 
/ ~ /, ..- ----------.-.....(" ~-""""T'"---, 
1 Java ) Data 
._.( Applet Com I JAVA 
Library 
(config) ~~~;.;n _1_ _5 _ 5 
,JAVA Virtual 
rll1achine 
149 
Operating 
System 
14J 
Svvitch Hardvvare JAJ. 
 
1.7 
NehNork 
fvlanagernEHit 
Server 
170 
FIG. 5 
~ 
00 
• 
~ 
~ 
~ 
~ = ~ 
c ('D 
~ 
(...H.. ~ 
N 
0.. .. 
(.H 
rFJ =­(' 
D 
(.'.D.. . 
Ul 
0... .. 
0 
d 
rJl 
00 
0.., 
""C""' 
~ 
C w = N
MONlTOF~: 
FOREVER 
f 
,, READ_DEST 3v1AC_UT!L %(PORTI,MAC ADDR A) 
READ __ DEST _ MACJJTiL'%(PORTUv1AG ADDR B) 
DELAY iOM.S I- - 178 
POLICY ENFORCEMENT: 
A%: LINE UTILIZATION% MACADDHA 
8%: LINE UTILIZ,4TION % MAC ADDR B 
QA_S: QUEUE ASSIGNMENT OF SERVER MP1C ADDR TRAFFIC 
OA __ A: QUEUE ASSIGNMENT OF MAC ADDR A TRAFFIC 
QA_B: QUEUE ASSIGNMENT Oi= MAC ADDR B TRAFFiC 
DELTA= 5% 
OAS;;; OA J:;;: Q.A. _8"' PRI.Q 
FOREVER. 
( 
GET A.%, 8% FROM MONITOR 
181 
{ IF (QA_A = PRI.Q AND QA_B = PRLQ) AND 
((A%+8%)>80%_,) 
· QA A=BEQ r IF (QA A= B.E.Q AND QA B = PRI.O) AND 
1831 ((NY;+B% )<(80%-DEL TA)) 
· QA A= PRI.Q 
• c: r IF (QAA = B.E.O AND QAB = PRI.Q) AND 
• 8 ~1 (8%>80"/o) 
~ OA_B =B.E.Q 
. J IF (QA_B = B.E.Q)AND 
18?l (8~'o<(80'Yo·DELTA)) 
QA ___ B =PRI.Q 
DELAY 5MS liS 
S'vVITCH A l ! SVviTCH 8 FIG. 6 
I ! • • • ! I 
2 3l L L. ..... ~ L_ ____________________ _j 
175 
SERVER 
MAC ADDR: N: 34: 3G: AC: BL: CC 
CONFIGUf~ATION: 
QA_A: QUEUE ASSIGNMENT OF MAC ADDR A TRAFFIC 
QA_B: QUEUE ASSIGNMENT OF MAC ADDR 8 TRAFFIC 
LAST. .. OA .... A: Q.A. _ A H!STORY 
LAST QA_B: Qf_8 HISTORY 
LA-ST Q.A_A"' LAST_OA_B"' PRI.Q 
FOREVER 
( GET OA_A QA_ _ B FfOM POLICY ENFORCEMENT 
_IF (QA_Ai co: lJIST_QA_A) 
 
MOVE_VIRTUP..L QUEUE (PORTl, M.A,C ADDR A. QA_A) 
LtST QA_A = QA_A 
!F {Qf /1::: LAST QA A) ( ' - - - ' 
MOVE_ VIRTUAL QUEUE (PORTl, MAC ADDR A. OA_A) 
., LAST __ QA _ _A::: QA _ A 
) 
DELAY 2.5MS 18D 
~ 
00 
• 
~ 
~ 
~ 
~ = ~ 
c ('D 
~ 
(...H.. ~ 
N 
0.. .. 
(.H 
rFJ =­(' 
D 
(.'.D.. . 
0 
0... .. 
0 
d 
rJl 
00 
0.., 
""C""' 
~ 
C w = N
US 8,619,793 B2 
1 2 
DYNAMIC ASSIGNMENT OF TRAFFIC 
CLASSES TO A PRIORITY QUEUE IN A 
PACKET FORWARDING DEVICE 
CROSS-REFERENCE TO RELATED 
APPLICATION 
FIG. 1 illustrates a packet forwarding device that can be 
used to implement embodiments of the present invention; 
FIG. 2A illustrates queue fill logic implemented by a queue 
manager in a quad interface device, and FIG. 2B illustrates 
5 queue drain logic according to one embodiment; 
The present application claims priority under 35 U.S.C. 
§119(e) from provisional application Ser. No. 60/226,787 
filed Aug. 21, 2000, and is related to U.S. patent application 10 
Ser. No. 09/227,389, both applications being incorporated 
herein by reference. 
FIELD OF THE INVENTION 
The present invention relates to the field of telecommuni­cations, 
and more particularly to dynamic assignment of traf­fic 
classes to queues having different priority levels. 
15 
FIG. 3 illustrates the flow of a packet within the switch of 
FIG.1; 
FIG. 4 illustrates storage of an entry in an address resolu­tion 
table managed by an address resolution unit; 
FIG. 5 is a diagram of the software architecture of the 
switch of FIG. 1 according to one embodiment; and 
FIG. 6 illustrates an example of dynamic assignment of 
traffic classes to a priority queue. 
DETAILED DESCRIPTION OF THE PRESENTLY 
PREFERRED EXEMPLARY EMBODIMENTS 
A packet forwarding device in which selected classes of 
network traffic may be dynamically assigned for priority 
BACKGROUND OF THE INVENTION 
The flow of packets through packet-switched networks is 
controlled by switches and routers that forward packets based 
on destination information included in the packets them­selves. 
A typical switch or router includes a number of input/ 
output (I/0) modules connected to a switching fabric, such as 
20 queuing is disclosed. In one embodiment, the packet forward­ing 
device includes a Java virtual machine for executing user­coded 
Java applets received from a network management 
server (NMS). A Java-to-native interface (JNI) is provided to 
allow the Java applets to obtain error information and traffic 
25 statistics from the device hardware and to allow the Java 
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/0 modules so that the 30 
switching fabric may deliver packets to an I/0 module faster 
than the I/0 module can output them to the network transmis­sion 
medium. In these devices, packets are usually queued in 
the I/0 module to await transmission. 
One problem that may occur when packets are queued in 35 
the I/0 module or elsewhere in a switch or router is that the 
applets to write configuration information to the device hard­ware, 
including information that indicates which classes of 
traffic should be queued in priority queues. The Java applets 
implement user-specified traffic management policies based 
on real-time evaluation of the error information and traffic 
statistics to provide dynamic control of the priority queuing 
assignments. These and other aspects and advantages of the 
present invention are described below. 
It should be noted that the use of the Java language is not a 
requirement for practicing the present invention. Although 
Java provides a number of advantages when used to imple­ment 
the present invention, e.g., dynamic on-demand use, 
other programming languages such as C may be used in its 
place. 
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 con-queuing 
delay per packet varies depending on the amount of 
traffic 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 40 
between successive packets in the stream convey the sam­pling 
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. 
45 trol (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 
SUMMARY OF THE INVENTION address switching and IP address routing. The techniques and 
A method and apparatus for dynamic assignment of classes 
of traffic to a priority queue are disclosed. Bandwidth con­sumption 
by one or more types of packet traffic received in a 
packet forwarding device is monitored. The queue assign­ment 
of at least one type of packet traffic is automatically 
changed from a queue having a first priority to a queue having 
a second priority if the bandwidth consumption exceeds the 
threshold. 
50 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 
fixed-length cell, a variable length frame or any other infor­mation 
structure that is self-contained as to its destination 
55 address. 
Other features and advantages of the invention will be 
apparent from the accompanying drawings and from the 60 
detailed description that follows below. 
BRIEF DESCRIPTION OF THE DRAWINGS 
The present invention is illustrated by way of example and 65 
not limitation in the figures of the accompanying drawings in 
which like references indicate similar elements and in which: 
The switch 17 includes a switching fabric 12 coupled to a 
plurality of I/0 units (only I/0 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/0 unit 1,16 includes 
four physical ports P1-P4 coupled to a quad media access 
controller (QMAC) 14A, 14B via respective transceiver inter­face 
units 21A-24A, 21B-24B. Each I/0 unit 1,16 also 
includes a quad interface device (QID) 16A, 16B, an address 
resolution unit (ARU) 15A, 15B and a memory ISA, 18B, 
interconnected as shown in FIG. 1. Preferably, the switch 17
US 8,619,793 B2 
3 
is modular with at least the I/0 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 a given number of I/0 units and therefore 
supports a corresponding number of physical ports. The 5 
switch backplane includes slots for a given number of port 
cards, so that the switch 17 can be scaled according to cus­tomer 
needs to support a number of physical ports as con­trolled 
by the number of port cards. In alternate embodiments, 
each I/0 unit 1,16 may support more or fewer physical ports, 10 
each port card may support more or fewer I/0 units 1,16 and 
the switch 17 may support more or fewer port cards. For 
example, the I/0 unit 1 shown in FIG. 1 may be used to 
support 10 base T transmission lines (i.e., 10 Mbps (mega-bit 
per second), twisted-pair) or 100 base T transmission lines 15 
(100 Mbps, fiber optic), while a different I/0 unit (not shown) 
may be used to support a 1000 base T transmission line (1 000 
Mbps, fiber optic). Nothing disclosed herein should be con­strued 
as limiting embodiments of the present invention to use 
with a particular transmission medium, I/0 unit, port card or 20 
chassis configuration. 
Still referring to FIG. 1, when a packet 25 is received on 
physical port PI, it is supplied to the corresponding physical 
transceiver 21A which performs any necessary signal condi­tioning 
(e.g, optical to electrical signal conversion) and then 25 
forwards the packet 25 to the QMAC 14A. The QMAC 14A 
buffers packets received from the physical transceivers 21A- 
24A as necessary, forwarding one packet at a time to the QID 
16A. Receive logic within the QE) 16A notifies the ARU 15A 
that the packet 25 has been received. The ARU computes a 30 
table index based on the destination MAC address within the 
4 
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 pri­ority 
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 respec-tive 
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. 
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 deliv-ered 
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 ofl/0 unit 16. 
FIG. 2A illustrates queue fill logic implemented by the 
queue manager in the QDD. Starting at block 51, a cell is 
received in the QID from the switching fabric. The beginning 
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 
packet 25 and uses the index to identify an entry in a forward­ing 
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. 
According to one embodiment, the forwarding table entry 
identified 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 physi- 
35 and the priority queue entry is associated with the portion of 
the cell header that identifies 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 asso- 
40 cia ted with the portion of the cell header that identifies the cell 
as a constituent of a particular packet at block 63. 
cal ports (a port-based VLAN).) The forwarding table entry 45 
further indicates whether the packet 25 is to be queued in a 
priority queue in the I/0 unit that contains the destination 
port. As discussed below, priority queuing may be specified 
based on a number of conditions, including, but not limited to, 
whether the packet is part of a particular IP flow, or whether 50 
the packet is destined for a particular port, VLAN or MAC 
address. 
According to one embodiment, the QID 16A, 16B seg­ments 
the packet 25 into a plurality of fixed-length cells 26 for 
transmission through the switching fabric 12. Each cell 55 
includes a header 28 that identifies it as a constituent of the 
packet 25 and that identifies 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 begin­ning 
cell of a packet and also a bit 30 indicating whether the 60 
packet 25 to which the cell belongs is to be queued in a 
priority queue or a best effort queue on the destined I/0 unit. 
The switching fabric 12 forwards each cell to the I/0 unit 
indicated by the cell header 28. In the exemplary data flow 
shown in FIG. 1, the constituent cells 26 of the packet 25 are 65 
assumed to be forwarded to I/0 unit 16 where they are deliv­ered 
to transmit logic within the QID 16B. The transmit logic 
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 identified at block 65. The association 
between the cell header and the queue entry identified at block 
65 was established earlier in either block 59 or block 63. Also, 
identification of the queue entry in block 65 may include 
inspection of the priority bit in the cell to narrow the identi­fication 
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 flag 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 embodiments. 
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 transmitted 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
US 8,619,793 B2 
5 
effort queue, it is transmitted at block 83 and the correspond­ing 
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 10 
effort queue. 
FIG. 3 illustrates the flow 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 (AR) table at block 93. At decision block 15 
95, a priority bit in the AR table entry is inspected to deter­mine 
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 
6 
been selected for priority queuing, then at decision block 121 
the MAC address stored in the AR table entry is compared 
against the priority configuration 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 identifier stored in the 
AR table entry (if present) is compared against the priority 
configuration information 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 flow identi­fied 
by the IP address, IP port and IP protocol in the AR table 
is compared against the priority configuration information to 
determine if packets that form part of the IP flow 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 and 
the process of setting the priority bit is completed. Yet other 
criteria may be considered in assigning priority queuing in 
alternate embodiments. For example, priority queuing may 
be specified for a particular IP Protocol (e.g., FTP, HTTP). 
Also, the ingress port, source MAC address or source VLAN 
set in their headers in block 97. If the priority bit is not set, the 20 
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/0 unit by the switch­ing 
fabric. In the egress I/0 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. 
25 of a packet may also be used to determine whether to queue 
the packet in the priority egress packet. More specifically, in 
one embodiment, priority or best effort queuing of unicast 
traffic is determined based on destination parameters (e.g., 
FIG. 4 illustrates storage of an entry in the address resolu­egress 
port, destination MAC address or destination IP 
tion (AR) table managed bytheARU. In one embodiment, 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­specific 
integrated circuit (ASIC) that includes the ARU. 
Generally, theARU stores an entry in theAR table in response 
to packet forwarding information from the processing unit. 
The processing unit supplies packet forwarding information 
30 address), while priority or best effort queuing of multicast 
traffic is determined based on source parameters (e.g., ingress 
port, source MAC address or source IP address). 
FIG. 5 is a diagram of the software architecture of the 
switch 17 of FIG. 1 according to one embodiment. An oper- 
35 ating system 143 and device drivers 145 are provided to 
interface with the device hardware 141. For example, device 
drivers are provided to write configuration information and 
AR storage entries to the ARU s in respective I/0 units. Also, 
the operating system 143 performs memory management 
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 embodiment, an address-to-port asso­ciation 
is learned by transmitting a packet that has an 
unknown egress port assigmnent 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 45 
port and the destination address, the processing unit issues 
forwarding information that includes, for example, an iden­tifier 
of the newly associated egress port, the destination 
MAC address, an identifier of the VLAN associated with the 
MAC address (if any), an identifier 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 protocol (UDP) or other IP port) and the IP 
protocol (e.g., HTTP, FTP or otheriP protocol). The source IP 
address, source IP port and source IP protocol may also be 
supplied to fully identifY an end-to-end IP flow. 
40 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-specific operations. 
The device management code 147 is executed by the pro-cessing 
unit (e.g., element 10 of FIG. 1) to perform system 
level functions, including management of-forwarding entries 
in the distributed AR tables and management of forwarding 
entries in a master forwarding table maintained in the 
50 memory of the processing unit. The device management code 
147 also includes routines for invoking device driver services, 
for example, to query the ARU for traffic statistics and error 
information, or to write updated configuration information to 
the ARUs, including priority queuing information. Further, 
55 the device management code 147 includes routines for writ­ing 
updated configuration information to the ARUs, as dis­cussed 
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 instruc- 
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 identi­fier 
stored in the AR table entry is compared against priority 
configuration 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 
60 tions that can be executed directly by a processor in the 
processing unit to carry out the device management func­tions. 
In one embodiment, the device management code 147 sup­ports 
the operation of a Java client 160 that includes a number 
65 of Java applets, including a monitor applet 157, a policy 
enforcement applet 159 and configuration applet 161. A Java 
applet is an instantiation of a Java class that includes one or
US 8,619,793 B2 
7 8 
FIG. 6 illustrates an example of dynamic assignment traffic 
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 pro­vided 
by ensuring that at least 20% of the egress capacity of 
switch B, port 1 is reserved for traffic destined to the MAC 
more methods for self initialization (e.g., a constructor 
method called "AppletQ"), 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 con­trolling 
application for the monitor, policy enforcement and 
configuration 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. 
As above, it should be noted that the use of Java is not 
essential to the present invention and is used for purposes of 
illustration and explanation. Other programming languages 
may be used in its place. 
10 address of the server 175. One way to ensure that 20% egress 
capacity is reserved to traffic 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 
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/0 unit coupled to the NMS 170. 
After authenticating the HTTP data stream, the DCI applica­tion 
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 
methodofthe applet and causing the Java virtual machine 149 
15 traffic, it also may result in unnecessarily high bandwidth 
allocation to the server 175, potentially starving other impor­tant 
traffic or causing other important traffic to become bottle­necked 
behind less important traffic in the best effort queue. 
For example, suppose that there are at least two other MAC 
20 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 traffic is 
available. In that case, it would be desirable to dynamically 
configure the MAC address A and MAC address B traffic to be 
25 queued in either the priority queue or the best effort queue 
according to existing traffic conditions, hi at least one 
embodiment, this is accomplished using monitor, policy 
enforcement and configuration applets that have been down­loaded 
to switch Band which are executed in a Java client in 
to begin execution of the applet code. Program code defining 30 switch B as described above in reference to FIG. 5. 
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 proces­sor 
within the processing unit. According to one embodiment, 
the monitor applet 157, policy enforcement applet 159 and 35 
configuration applet 161 communicate with the device man­agement 
code 147 through a Java-native interface (JNI) 151. 
The JNI 151 is essentially an application programming inter­face 
(API) and provides a set of methods that can be invoked 
by the Java applets 157, 159, 161 to send messages and 40 
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 45 
by which the configuration applet 161 can request the device 
management code 147 to write configuration information to 
the device hardware 141. More specifically, the JNI 151 
includes a method by which the configuration applet 161 can 
indicate that priority queuing should be performed for speci- 50 
fied classes of traffic, including, but not limited to, the classes 
of traffic discussed above in reference to FIG. 4. In this way, 
FIG. 6 includes exemplary pseudocode listings of monitor, 
policy enforcement and configuration 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 traffic destined to 
the server 175, but without unnecessarily denying priority 
queuing assignment to traffic destined for MAC addresses A 
and B. After initialization, the monitor applet 178 repeatedly 
measures of the port 1line utilization from the device hard­ware. 
In one embodiment, the ARU in the I/0 unit that man­ages 
port 1 keeps a count of the number of packets destined 
for particular egress ports, packets destined for particular 
MAC addresses, packets destined for particular VLANS, 
packets that form part of a particular IP flow, packets having 
a particular IP protocol, and so forth. TheARU also tracks the 
nnmber of errors associated with these different classes of 
traffic, the number of packets from each class of traffic 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/0 unit or the overall switch. 
Error rates and packet drop rates may also be generated. 
In one embodiment, the monitor applet 178 measures line 
utilization by invoking methods in the JNI to read the port 1 
line utilization resulting from traffic destined for MAC 
address A and for MAC address B on a periodic basis, e.g., 
every 10 milliseconds. 
The policy enforcement applet 179 includes variables to 
hold the line utilization percentage of traffic destined for 
MAC address A (A % ), the line utilization percentage of 
a user-coded configuration applet 161 may be executed by the 
Java virtual machine 149 within the switch 17 to invoke a 
method in the JN1 151 to request the device management 55 
code 147 to write information that assigns selected classes of 
traffic to be queued in the priority egress queue. In effect, the 
configuration applet 161 assigns virtual queues defined by the 
selected classes of traffic to feed into the priority egress 
queue. 60 traffic destined for MAC address B (B %),the queue assign­ment 
(i.e., priority or best effort) of traffic destined for the 
server MAC address (QA_S), the queue assignment of traffic 
destined for MAC address A (QA_A) and the queue assign­ment 
of traffic destined for MAC address B. Also, a constant, 
As noted above, 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 configuration functions in alternate 
embodiments. 
65 DELTA, is defined to be 5% and the queue assignments for the 
MAC address A, MAC address B and server MAC address 
traffic are initially set to the priority queue.
US 8,619,793 B2 
9 
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 assigmnents QA_A and QA_B. 
If the MAC address A traffic and the MAC address B traffic 
are both assigned to the priority queue (the initial configura­tion) 
and the sum of the line utilization percentages A % and 
B %exceeds 80%, then less than 20% line utilization remains 
for the server-destined traffic, hi 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 
traffic is assigned to the priority queue, then the MAC address 
A traffic 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 assigument. 
If the MAC address A traffic is assigned to the best effort 
queue and the MAC address B traffic is assigned to the pri­ority 
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 traffic is 
assigned to the best effort queue and the line utilization per­centage 
B % drops below 80% less DELTA, then the MAC 
address B traffic is reassigned to the priority queue (code 
statement 187). Although not specifically provided for in the 
exemplary pseudocode listing of FIG. 6, the policy enforce­ment 
applet 179 may treat the traffic destined for the MAC A 
and MAC B addresses more symmetrically by including addi­tiona! 
statements to conditionally assign traffic destined for 
MAC address A to the priority queue, but not traffic destined 
for MAC address B. In the exemplary pseudocode listing of 
FIG. 6, the policy enforcement applet 179 delays for 5 milli­seconds 
at the end of each pass through the forever loop 
before repeating. 
The configuration applet 180 includes variables, QA_A 
and QA_B, to hold the queue assigmnents of the traffic des­tined 
for the MAC addresses A 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 
addresses A and B is assigned to the priority queue. 
Like the monitor and policy enforcement applets 178,179, 
the configuration applet 180 includes a forever loop in which 
10 
the monitor and policy enforcement applets 178, 179, traffic 
destined for the MAC addresses A and B is dynamically 
assigned to the priority queue according to real-time evalua­tions 
of the traffic conditions in the switch. 
Although a three-applet implementation is illustrated in 
FIG. 6, more or fewer applets may be used in an alternate 
embodiment. For example, the functions of the monitor, 
policy enforcement and configuration applets 178, 179, 180 
may be implemented in a single applet. Alternatively, mul- 
10 tiple applets may be provided to perform policy enforcement 
or other functions using different queue assignment criteria. 
For example, one policy enforcement applet may make pri­ority 
queue assigmnents based on destination MAC 
addresses, while another policy enforcement applet makes 
15 priority queue assignments based on error rates or line utili­zation 
of higher level protocols. Multiple monitor applets or 
configuration applets may similarly be provided. 
Although queue assignment policy based on destination 
MAC address is illustrated in FIG. 6, myriad different queue 
20 assignment criteria may be used in other embodiments. For 
example, instead of monitoring and updating queue assign­ment 
based on traffic to destination MAC addresses, queue 
assignments may be updated on other traffic patterns, includ­ing 
traffic to specified destination ports, traffic from specified 
25 source ports, traffic from specified source MAC addresses, 
traffic that forms part of a specified IP flow, traffic that is 
transmitted using a specified protocol (e.g., HTTP, FTP or 
other protocols) and so forth. Also, queue assignments may 
be updated based on environmental conditions such as time of 
30 day, changes in network configuration (e.g., due to failure or 
congestion at other network nodes), error rates, packet drop 
rates and so forth. Monitoring, policy enforcement and con­figuration 
applets that combine many or all of the above­described 
criteria may be implemented to provide sophisti- 
35 cated traffic handling capability in a packet forwarding 
device. 
Although dynamic assignment of traffic classes to a prior­ity 
egress queue has been emphasized, the methods and appa­ratuses 
described herein may alternatively be used to assign 
40 traffic classes to a hierarchical set of queues anywhere in a 
packet forwarding device including, but not limited to, 
ingress queues and queues associated with delivering and 
receiving packets from the switching fabric. Further, 
although the queue assignment of traffic classes has been 
45 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. 
a code sequence is executed followed by a delay, in the 
exemplary listing of FIG. 6, the first operation performed by 50 
the configuration applet 180 within the forever loop is to 
obtain the queue assigmnents QA_A and QA_B from the 
policy enforcement applet 179. If the queue assigmnent indi­cated 
by QA_A is different from the queue assignment indi­cated 
by LAST_QA_A, then a JNI method is invoked to 55 
request the device code to reconfigure the queue assignment 
Further, although the modification of various queues in this 
way has been described herein, the invention is not so limited 
and other embodiments also exist. For example, traffic can be 
filtered based on its type-source (e.g., source MAC address 
or source VLAN), ingress port, destination (e.g., destination 
MAC address or destination IP address), egress port, protocol 
(e.g., FTP, HTTP) or other hardware-supported filters. In one 
embodiment, filtering of unicast traffic is determined based 
of the traffic 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 subsequent queue assign­ment 
changes are detected. If the queue assigmnent indicated 60 
by QA_B is different from the queue assignment indicated by 
LAST_QA_B, then a JNI method is invoked to request the 
device code to reconfigure the queue assignment of the traffic 
destined for MAC address B according to the new QA_B 
value. The new QA_B value is then copied into the 65 
LAST_QA_B variable so that subsequent queue assignment 
changes are detected. By this operation, and the operation of 
on destination parameters such as egress port, destination 
MAC address or IP address, while filtering of multicast traffic 
is determined based on source parameters such as ingress 
port, source MAC address or source IP address. Filtering may 
be based on environmental conditions, such as time of day, 
changes in network configuration (e.g., due to failure or con­gestion 
at other network nodes), error rates, packet drop rates, 
line utilization of higher-level protocols. It may be based on 
traffic patterns such as traffic from specified source ports, 
traffic to specified destination ports, traffic from specified 
source MAC addresses or traffic that forms part of a specified
US 8,619,793 B2 
11 
IP flow. Various other hardware counters, monitors and 
dynamic values can be read from the hardware. 
Still further, dynamic filtering decisions may be made on 
how to process packets other than choosing whether they 
should go to a priority or best effort queue; for example, they 
may be dropped or copied, or traffic of a specific type as 
described above may be diverted. Packet headers may be 
modified, and use of differentiated services (DS), quality of 
service (QoS), TOS, TTL, destination and the like is possible 
as long as it is supported by the hardware. The configurability 10 
of filtering and subsequent processing in the invention is, in 
fact, limited only by the hardware and numerous possibilities 
for filtering and subsequent processing of traffic other than 
those described herein will be readily apparent to those 
skilled in the art after reading and understanding this appli- 15 
cation. 
As an example, consider the routing of multimedia traffic. 
Such traffic might be sent by three or more separated streams 
defined by, e.g., virtual port number. This traffic could be 
filtered and processed to dynamically add or drop specific 20 
streams. Based on such dynamic adaptation, active network 
applications on nodes between the source and destination can 
negotiate and dynamically set different adaptation mecha­nisms. 
As described above, the invention is of course not 
limited to this example, and in fact is intended to cover such 25 
filtering and processing using future hardware platforms 
which provide new capabilities and which afford new ways of 
using and controlling such functionality. 
In the foregoing specification, the invention has been 
described with reference to specific exemplary embodiments 30 
thereof. It will, however, be evident that various modifica­tions 
and changes may be made to the specific exemplary 
embodiments without departing from the broader spirit and 
scope of the invention as set forth in the appended claims. 
Accordingly, the specification and drawings are to be 35 
regarded in an illustrative rather than a restrictive sense. 
What is claimed is: 
12 
5. The method of claim 4, wherein the destination param­eter 
includes a destination MAC address. 
6. The method of claim 1, wherein the type of packet traffic 
is associated with its egress port. 
7. The method of claim 1, wherein the type of traffic is 
based on its protocol, and including selectively modifying the 
priority of the traffic in response to its protocol. 
8. The method of claim 7, wherein the protocol of traffic 
includes FTP. 
9. The method of claim 7, wherein the protocol of traffic 
includes HTTP. 
10. In a packet forwarding device, a method comprising: 
monitoring environmental conditions of reception of 
packet traffic in the packet forwarding device; 
determining whether environmental conditions associated 
with reception of packet traffic in the packet forwarding 
device meet predetermined criteria; 
when the environmental conditions meet the predeter­mined 
criteria, determining whether a type of packet 
traffic received in the packet forwarding device is a 
unicast type or a multicast type; 
when the type of packet traffic is unicast type, selectively 
modifYing a priority of the traffic in response to a desti­nation 
parameter of a plurality of destination parameters 
including destination IP address, destination VLAN and 
egress port of the packet traffic; and 
when the type of packet traffic is multicast type, selectively 
modifYing the priority of the traffic in response to a 
source parameter of a plurality of source parameters 
including source IP address, source VLAN and ingress 
port of the packet traffic, 
and 
wherein modifYing includes automatically performing at 
least one of changing assignment of packet traffic from 
a queue having a first priority to a queue having a second 
priority, dropping packets in the packet traffic, copying 
packets in the packet traffic, and diverting packets in the 
packet traffic. 
1. In a packet forwarding device, a method comprising: 
monitoring types of packet traffic received in the packet 
forwarding device; 
11. The method of claim 10, wherein the environmental 
40 conditions meeting the predetermined criteria include time of 
day. 
determining whether a type of packet traffic received in the 
packet forwarding device is a unicast type or a multicast 
type; 
when the type of packet traffic is unicast type, selectively 45 
modifYing a priority of the traffic in response to a desti­nation 
parameter of a plurality of destination parameters 
including IP address, destination VLAN and egress port 
12. The method of claim 10, wherein the environmental 
conditions meeting the predetermined criteria include net­work 
configuration changes. 
13. The method of claim 12, wherein the network configu­ration 
changes include network failures. 
14. The method of claim 12, wherein the network configu­ration 
changes include network congestion. 
of the packet traffic; and 
when the type of packet traffic is multicast type, selectively 
modifYing the priority of the traffic in response to a 
source parameter of a plurality of source parameters 
including IP address, source VLAN and ingress port of 
the packet traffic, 
15. The method of claim 10, wherein the environmental 
50 conditions meeting the predetermined criteria include net­work 
error rates. 
wherein selectively modifying the priority includes per- 55 
forming at least one of changing assignment of the 
packet traffic from a queue having a first priority to a 
queue having a second priority, dropping packets of the 
packet traffic, copying packets of the packet traffic, and 
diverting packets of the predetermined type in the packet 60 
traffic. 
2. The method of claim 1, wherein the source parameter 
includes a source MAC address. 
3. The method of claim 1, wherein the type of packet traffic 
is associated with its ingress port. 
4. The method of claim 1, wherein the type of packet traffic 
is based on its destination. 
65 
16. The method of claim 10, wherein the environmental 
conditions meeting the predetermined criteria include line 
use of high level protocols. 
17. In a packet forwarding device, a method comprising: 
monitoring traffic patterns of packet traffic received in the 
packet forwarding device; 
determining whether traffic patterns of packet traffic in the 
packet forwarding device meet predetermined criteria; 
and 
when the traffic patterns of packet traffic meet the prede­termined 
criteria, determining whether a type of packet 
traffic received in the packet forwarding device is a 
unicast type or a multicast type; 
when the type of packet traffic is unicast type, selectively 
modifYing a priority of the traffic in response to a desti­nation 
parameter of a plurality of destination parameters
US 8,619,793 B2 
13 
including destination IP address, destination VLAN and 
egress port of the packet traffic; and 
when the type of packet traffic is multicast type, selectively 
modifYing the priority of the traffic in response to a 
source parameter of a plurality of source parameters 5 
including source IP address, source VLAN and ingress 
port of the packet traffic, 
and wherein selectively modifYing includes automatically 
performing at least one of changing assignment of at least one 
type of packet traffic from a queue having a first priority to a 10 
queue having a second priority, dropping packets in the 
packet traffic, copying packets in the packet traffic, and 
diverting packets in the packet traffic. 
18. The method of claim 17, wherein at least some of the 
traffic patterns are based on specified source ports. 15 
19. The method of claim 17, wherein at least some of the 
traffic patterns are based on specified destination ports. 
20. The method of claim 17, wherein at least some of the 
traffic patterns are based on specified source MAC addresses. 
21. The method of claim 17, wherein at least some of the 20 
traffic patterns are based on specified IP flows. 
* * * * * 
14

More Related Content

What's hot

Artcle for kathmandu
Artcle for kathmanduArtcle for kathmandu
Artcle for kathmandukhamdhak
 
Fundraising 2.0 - Wirkliche soziale Netzwerke
Fundraising 2.0 - Wirkliche soziale NetzwerkeFundraising 2.0 - Wirkliche soziale Netzwerke
Fundraising 2.0 - Wirkliche soziale NetzwerkeThilo Reichenbach
 
Implification
ImplificationImplification
Implificationkhamdhak
 
Respostas-do-livro-motgomery-1
Respostas-do-livro-motgomery-1Respostas-do-livro-motgomery-1
Respostas-do-livro-motgomery-1Rogerio Blaquez
 
What is paragraph
What is paragraphWhat is paragraph
What is paragraphkhamdhak
 
Waterpilot FMX21
Waterpilot FMX21 Waterpilot FMX21
Waterpilot FMX21 Arve
 
9555 apostila__legislacao_sus_com_exercicios__saude__professor_paulo_prieto
9555  apostila__legislacao_sus_com_exercicios__saude__professor_paulo_prieto9555  apostila__legislacao_sus_com_exercicios__saude__professor_paulo_prieto
9555 apostila__legislacao_sus_com_exercicios__saude__professor_paulo_prietoEdna Araujo
 
TNPSC Group II Examination Answer Key
TNPSC Group II Examination Answer Key TNPSC Group II Examination Answer Key
TNPSC Group II Examination Answer Key Velicham Pages
 
TNPSC Group II Examination Answer Key - General Study (degree)
TNPSC Group II Examination Answer Key - General Study (degree)TNPSC Group II Examination Answer Key - General Study (degree)
TNPSC Group II Examination Answer Key - General Study (degree)Velicham Pages
 
Factores que intervienne
Factores que intervienneFactores que intervienne
Factores que intervienneYannina Rojas
 
Daily Deals White Paper
Daily Deals White PaperDaily Deals White Paper
Daily Deals White Papereeliason
 
Questões Matematica Fuvest 2002
Questões Matematica Fuvest 2002Questões Matematica Fuvest 2002
Questões Matematica Fuvest 2002Marcelo Trylesinski
 

What's hot (20)

Tese aço 1045
Tese aço 1045Tese aço 1045
Tese aço 1045
 
Artcle for kathmandu
Artcle for kathmanduArtcle for kathmandu
Artcle for kathmandu
 
Fundraising 2.0 - Wirkliche soziale Netzwerke
Fundraising 2.0 - Wirkliche soziale NetzwerkeFundraising 2.0 - Wirkliche soziale Netzwerke
Fundraising 2.0 - Wirkliche soziale Netzwerke
 
Edital jaboatão
Edital jaboatãoEdital jaboatão
Edital jaboatão
 
Animal hostel gujarati
Animal hostel gujaratiAnimal hostel gujarati
Animal hostel gujarati
 
Implification
ImplificationImplification
Implification
 
Respostas-do-livro-motgomery-1
Respostas-do-livro-motgomery-1Respostas-do-livro-motgomery-1
Respostas-do-livro-motgomery-1
 
What is paragraph
What is paragraphWhat is paragraph
What is paragraph
 
Waterpilot FMX21
Waterpilot FMX21 Waterpilot FMX21
Waterpilot FMX21
 
Torta de soya
Torta de soyaTorta de soya
Torta de soya
 
9555 apostila__legislacao_sus_com_exercicios__saude__professor_paulo_prieto
9555  apostila__legislacao_sus_com_exercicios__saude__professor_paulo_prieto9555  apostila__legislacao_sus_com_exercicios__saude__professor_paulo_prieto
9555 apostila__legislacao_sus_com_exercicios__saude__professor_paulo_prieto
 
Ambaji ppt
Ambaji pptAmbaji ppt
Ambaji ppt
 
TNPSC Group II Examination Answer Key
TNPSC Group II Examination Answer Key TNPSC Group II Examination Answer Key
TNPSC Group II Examination Answer Key
 
TNPSC Group II Examination Answer Key - General Study (degree)
TNPSC Group II Examination Answer Key - General Study (degree)TNPSC Group II Examination Answer Key - General Study (degree)
TNPSC Group II Examination Answer Key - General Study (degree)
 
T Peri1
T Peri1T Peri1
T Peri1
 
Factores que intervienne
Factores que intervienneFactores que intervienne
Factores que intervienne
 
Daily Deals White Paper
Daily Deals White PaperDaily Deals White Paper
Daily Deals White Paper
 
Questões Matematica Fuvest 2002
Questões Matematica Fuvest 2002Questões Matematica Fuvest 2002
Questões Matematica Fuvest 2002
 
Faure requiem fs_pml
Faure requiem fs_pmlFaure requiem fs_pml
Faure requiem fs_pml
 
oke
okeoke
oke
 

Viewers also liked

RUBRIKA : TE FAMSHEM ...ALBERT AJNSHTANJ
 RUBRIKA :  TE  FAMSHEM ...ALBERT AJNSHTANJ  RUBRIKA :  TE  FAMSHEM ...ALBERT AJNSHTANJ
RUBRIKA : TE FAMSHEM ...ALBERT AJNSHTANJ #MesueseAurela Elezaj
 
Planifikimi tre mujor
Planifikimi tre mujorPlanifikimi tre mujor
Planifikimi tre mujorVieni Dapaj
 
Udhëzuesi i fushës kurrikulare shkencat e natyrës
Udhëzuesi i fushës kurrikulare shkencat e natyrësUdhëzuesi i fushës kurrikulare shkencat e natyrës
Udhëzuesi i fushës kurrikulare shkencat e natyrësQendresaa Sejdiu
 
Arsimi fillor programi i trajnimit
Arsimi fillor programi i trajnimit Arsimi fillor programi i trajnimit
Arsimi fillor programi i trajnimit shkelqimcakoni
 
Programi i zhvillimit te brendshem profesional 2015- 2016
Programi i zhvillimit te brendshem profesional 2015- 2016 Programi i zhvillimit te brendshem profesional 2015- 2016
Programi i zhvillimit te brendshem profesional 2015- 2016 Valbona Imeraj
 
Vleresimi me baze kompetencat
Vleresimi me baze kompetencatVleresimi me baze kompetencat
Vleresimi me baze kompetencatValbona Imeraj
 
EVIDENCË PËR VLERËSIMIN E VAZHDUESHËM PËRMES VËZHGIMEVE
EVIDENCË PËR VLERËSIMIN E VAZHDUESHËM PËRMES VËZHGIMEVEEVIDENCË PËR VLERËSIMIN E VAZHDUESHËM PËRMES VËZHGIMEVE
EVIDENCË PËR VLERËSIMIN E VAZHDUESHËM PËRMES VËZHGIMEVE#MesueseAurela Elezaj
 

Viewers also liked (9)

RUBRIKA : TE FAMSHEM ...ALBERT AJNSHTANJ
 RUBRIKA :  TE  FAMSHEM ...ALBERT AJNSHTANJ  RUBRIKA :  TE  FAMSHEM ...ALBERT AJNSHTANJ
RUBRIKA : TE FAMSHEM ...ALBERT AJNSHTANJ
 
PORTOFOLI I PROJEKTIT ...GAUSI
PORTOFOLI I  PROJEKTIT  ...GAUSI PORTOFOLI I  PROJEKTIT  ...GAUSI
PORTOFOLI I PROJEKTIT ...GAUSI
 
Planifikimi tre mujor
Planifikimi tre mujorPlanifikimi tre mujor
Planifikimi tre mujor
 
Udhëzuesi i fushës kurrikulare shkencat e natyrës
Udhëzuesi i fushës kurrikulare shkencat e natyrësUdhëzuesi i fushës kurrikulare shkencat e natyrës
Udhëzuesi i fushës kurrikulare shkencat e natyrës
 
Arsimi fillor programi i trajnimit
Arsimi fillor programi i trajnimit Arsimi fillor programi i trajnimit
Arsimi fillor programi i trajnimit
 
VLERËSIMI PËRMBLEDHËS !!!
VLERËSIMI PËRMBLEDHËS !!!VLERËSIMI PËRMBLEDHËS !!!
VLERËSIMI PËRMBLEDHËS !!!
 
Programi i zhvillimit te brendshem profesional 2015- 2016
Programi i zhvillimit te brendshem profesional 2015- 2016 Programi i zhvillimit te brendshem profesional 2015- 2016
Programi i zhvillimit te brendshem profesional 2015- 2016
 
Vleresimi me baze kompetencat
Vleresimi me baze kompetencatVleresimi me baze kompetencat
Vleresimi me baze kompetencat
 
EVIDENCË PËR VLERËSIMIN E VAZHDUESHËM PËRMES VËZHGIMEVE
EVIDENCË PËR VLERËSIMIN E VAZHDUESHËM PËRMES VËZHGIMEVEEVIDENCË PËR VLERËSIMIN E VAZHDUESHËM PËRMES VËZHGIMEVE
EVIDENCË PËR VLERËSIMIN E VAZHDUESHËM PËRMES VËZHGIMEVE
 

Similar to Dynamic traffic class assignment to priority queue

93 jan-roger linna - 7137383 - capillary fuel injector with metering valve ...
93   jan-roger linna - 7137383 - capillary fuel injector with metering valve ...93   jan-roger linna - 7137383 - capillary fuel injector with metering valve ...
93 jan-roger linna - 7137383 - capillary fuel injector with metering valve ...Mello_Patent_Registry
 
81 roberto o. pellizzari - 6913004 - fuel system for an internal combustion...
81   roberto o. pellizzari - 6913004 - fuel system for an internal combustion...81   roberto o. pellizzari - 6913004 - fuel system for an internal combustion...
81 roberto o. pellizzari - 6913004 - fuel system for an internal combustion...Mello_Patent_Registry
 
101 mimmo elia - 7357124 - multiple capillary fuel injector for an internal...
101   mimmo elia - 7357124 - multiple capillary fuel injector for an internal...101   mimmo elia - 7357124 - multiple capillary fuel injector for an internal...
101 mimmo elia - 7357124 - multiple capillary fuel injector for an internal...Mello_Patent_Registry
 
76 roberto o. pellizzari - 6820598 - capillary fuel injector with metering ...
76   roberto o. pellizzari - 6820598 - capillary fuel injector with metering ...76   roberto o. pellizzari - 6820598 - capillary fuel injector with metering ...
76 roberto o. pellizzari - 6820598 - capillary fuel injector with metering ...Mello_Patent_Registry
 
99 mimmo elia - 7337768 - multiple capillary fuel injector for an internal ...
99   mimmo elia - 7337768 - multiple capillary fuel injector for an internal ...99   mimmo elia - 7337768 - multiple capillary fuel injector for an internal ...
99 mimmo elia - 7337768 - multiple capillary fuel injector for an internal ...Mello_Patent_Registry
 
Radio SCR 609 / 610. TM 11-615.
Radio SCR 609 / 610. TM 11-615.Radio SCR 609 / 610. TM 11-615.
Radio SCR 609 / 610. TM 11-615.blancaisabelcig
 
Longitudinal static stability of boeing 737 max 8
Longitudinal static stability of boeing 737 max 8Longitudinal static stability of boeing 737 max 8
Longitudinal static stability of boeing 737 max 8Lahiru Dilshan
 
96 roberto o. pellizzari - 7249596 - fuel system for an internal combustion...
96   roberto o. pellizzari - 7249596 - fuel system for an internal combustion...96   roberto o. pellizzari - 7249596 - fuel system for an internal combustion...
96 roberto o. pellizzari - 7249596 - fuel system for an internal combustion...Mello_Patent_Registry
 
Great plains parts manual center pivot hitch cph-12, cph-15, chp-20
Great plains parts manual center pivot hitch cph-12, cph-15, chp-20Great plains parts manual center pivot hitch cph-12, cph-15, chp-20
Great plains parts manual center pivot hitch cph-12, cph-15, chp-20PartCatalogs Net
 
0000017581PINOUT conectores internat.pdf
0000017581PINOUT conectores internat.pdf0000017581PINOUT conectores internat.pdf
0000017581PINOUT conectores internat.pdfRonaldYucraCadena
 
Brl arpa doploc satellite detection complex
Brl arpa doploc satellite detection complexBrl arpa doploc satellite detection complex
Brl arpa doploc satellite detection complexClifford Stone
 
nw col transcripts Sept 2011
nw col transcripts Sept 2011nw col transcripts Sept 2011
nw col transcripts Sept 2011Nathan Wicke
 
2003 polaris 800 rmk 159 f0 snowmobile service repair manual
2003 polaris 800 rmk 159 f0 snowmobile service repair manual2003 polaris 800 rmk 159 f0 snowmobile service repair manual
2003 polaris 800 rmk 159 f0 snowmobile service repair manualfjjfyjsekdmme
 
2003 polaris 800 rmk 151 f0 snowmobile service repair manual
2003 polaris 800 rmk 151 f0 snowmobile service repair manual2003 polaris 800 rmk 151 f0 snowmobile service repair manual
2003 polaris 800 rmk 151 f0 snowmobile service repair manualfjskemdzaqmme
 
OHAUS SERVICE MANUAL - 11017-xx.pdf
OHAUS SERVICE MANUAL - 11017-xx.pdfOHAUS SERVICE MANUAL - 11017-xx.pdf
OHAUS SERVICE MANUAL - 11017-xx.pdfJosCastroValentn
 
Free UK UFO National Archives Documents
Free UK UFO National Archives DocumentsFree UK UFO National Archives Documents
Free UK UFO National Archives Documentsalienuforesearch
 
Free UK UFO National Archives Documents
Free UK UFO National Archives DocumentsFree UK UFO National Archives Documents
Free UK UFO National Archives Documentsalienuforesearch
 

Similar to Dynamic traffic class assignment to priority queue (20)

93 jan-roger linna - 7137383 - capillary fuel injector with metering valve ...
93   jan-roger linna - 7137383 - capillary fuel injector with metering valve ...93   jan-roger linna - 7137383 - capillary fuel injector with metering valve ...
93 jan-roger linna - 7137383 - capillary fuel injector with metering valve ...
 
81 roberto o. pellizzari - 6913004 - fuel system for an internal combustion...
81   roberto o. pellizzari - 6913004 - fuel system for an internal combustion...81   roberto o. pellizzari - 6913004 - fuel system for an internal combustion...
81 roberto o. pellizzari - 6913004 - fuel system for an internal combustion...
 
101 mimmo elia - 7357124 - multiple capillary fuel injector for an internal...
101   mimmo elia - 7357124 - multiple capillary fuel injector for an internal...101   mimmo elia - 7357124 - multiple capillary fuel injector for an internal...
101 mimmo elia - 7357124 - multiple capillary fuel injector for an internal...
 
76 roberto o. pellizzari - 6820598 - capillary fuel injector with metering ...
76   roberto o. pellizzari - 6820598 - capillary fuel injector with metering ...76   roberto o. pellizzari - 6820598 - capillary fuel injector with metering ...
76 roberto o. pellizzari - 6820598 - capillary fuel injector with metering ...
 
99 mimmo elia - 7337768 - multiple capillary fuel injector for an internal ...
99   mimmo elia - 7337768 - multiple capillary fuel injector for an internal ...99   mimmo elia - 7337768 - multiple capillary fuel injector for an internal ...
99 mimmo elia - 7337768 - multiple capillary fuel injector for an internal ...
 
Radio SCR 609 / 610. TM 11-615.
Radio SCR 609 / 610. TM 11-615.Radio SCR 609 / 610. TM 11-615.
Radio SCR 609 / 610. TM 11-615.
 
Us8406863 b2
Us8406863 b2Us8406863 b2
Us8406863 b2
 
Longitudinal static stability of boeing 737 max 8
Longitudinal static stability of boeing 737 max 8Longitudinal static stability of boeing 737 max 8
Longitudinal static stability of boeing 737 max 8
 
96 roberto o. pellizzari - 7249596 - fuel system for an internal combustion...
96   roberto o. pellizzari - 7249596 - fuel system for an internal combustion...96   roberto o. pellizzari - 7249596 - fuel system for an internal combustion...
96 roberto o. pellizzari - 7249596 - fuel system for an internal combustion...
 
Great plains parts manual center pivot hitch cph-12, cph-15, chp-20
Great plains parts manual center pivot hitch cph-12, cph-15, chp-20Great plains parts manual center pivot hitch cph-12, cph-15, chp-20
Great plains parts manual center pivot hitch cph-12, cph-15, chp-20
 
0000017581PINOUT conectores internat.pdf
0000017581PINOUT conectores internat.pdf0000017581PINOUT conectores internat.pdf
0000017581PINOUT conectores internat.pdf
 
Tabla de asme 2015
Tabla de asme 2015Tabla de asme 2015
Tabla de asme 2015
 
Brl arpa doploc satellite detection complex
Brl arpa doploc satellite detection complexBrl arpa doploc satellite detection complex
Brl arpa doploc satellite detection complex
 
Kikusui general catalogue 2021 part 1
Kikusui general catalogue 2021 part 1Kikusui general catalogue 2021 part 1
Kikusui general catalogue 2021 part 1
 
nw col transcripts Sept 2011
nw col transcripts Sept 2011nw col transcripts Sept 2011
nw col transcripts Sept 2011
 
2003 polaris 800 rmk 159 f0 snowmobile service repair manual
2003 polaris 800 rmk 159 f0 snowmobile service repair manual2003 polaris 800 rmk 159 f0 snowmobile service repair manual
2003 polaris 800 rmk 159 f0 snowmobile service repair manual
 
2003 polaris 800 rmk 151 f0 snowmobile service repair manual
2003 polaris 800 rmk 151 f0 snowmobile service repair manual2003 polaris 800 rmk 151 f0 snowmobile service repair manual
2003 polaris 800 rmk 151 f0 snowmobile service repair manual
 
OHAUS SERVICE MANUAL - 11017-xx.pdf
OHAUS SERVICE MANUAL - 11017-xx.pdfOHAUS SERVICE MANUAL - 11017-xx.pdf
OHAUS SERVICE MANUAL - 11017-xx.pdf
 
Free UK UFO National Archives Documents
Free UK UFO National Archives DocumentsFree UK UFO National Archives Documents
Free UK UFO National Archives Documents
 
Free UK UFO National Archives Documents
Free UK UFO National Archives DocumentsFree UK UFO National Archives Documents
Free UK UFO National Archives Documents
 

More from Tal Lavian Ph.D.

Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerTal Lavian Ph.D.
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerTal Lavian Ph.D.
 
Photonic line sharing for high-speed routers
Photonic line sharing for high-speed routersPhotonic line sharing for high-speed routers
Photonic line sharing for high-speed routersTal Lavian Ph.D.
 
Systems and methods to support sharing and exchanging in a network
Systems and methods to support sharing and exchanging in a networkSystems and methods to support sharing and exchanging in a network
Systems and methods to support sharing and exchanging in a networkTal Lavian Ph.D.
 
Systems and methods for visual presentation and selection of IVR menu
Systems and methods for visual presentation and selection of IVR menuSystems and methods for visual presentation and selection of IVR menu
Systems and methods for visual presentation and selection of IVR menuTal Lavian Ph.D.
 
Grid proxy architecture for network resources
Grid proxy architecture for network resourcesGrid proxy architecture for network resources
Grid proxy architecture for network resourcesTal Lavian Ph.D.
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerTal Lavian Ph.D.
 
Systems and methods for electronic communications
Systems and methods for electronic communicationsSystems and methods for electronic communications
Systems and methods for electronic communicationsTal Lavian Ph.D.
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerTal Lavian Ph.D.
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerTal Lavian Ph.D.
 
Radar target detection system for autonomous vehicles with ultra-low phase no...
Radar target detection system for autonomous vehicles with ultra-low phase no...Radar target detection system for autonomous vehicles with ultra-low phase no...
Radar target detection system for autonomous vehicles with ultra-low phase no...Tal Lavian Ph.D.
 
Grid proxy architecture for network resources
Grid proxy architecture for network resourcesGrid proxy architecture for network resources
Grid proxy architecture for network resourcesTal Lavian Ph.D.
 
Method and apparatus for scheduling resources on a switched underlay network
Method and apparatus for scheduling resources on a switched underlay networkMethod and apparatus for scheduling resources on a switched underlay network
Method and apparatus for scheduling resources on a switched underlay networkTal Lavian Ph.D.
 
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...
Dynamic assignment of traffic classes to a priority queue in a packet forward...Tal Lavian Ph.D.
 
Method and apparatus for using a command design pattern to access and configu...
Method and apparatus for using a command design pattern to access and configu...Method and apparatus for using a command design pattern to access and configu...
Method and apparatus for using a command design pattern to access and configu...Tal Lavian Ph.D.
 
Reliable rating system and method thereof
Reliable rating system and method thereofReliable rating system and method thereof
Reliable rating system and method thereofTal Lavian Ph.D.
 
Time variant rating system and method thereof
Time variant rating system and method thereofTime variant rating system and method thereof
Time variant rating system and method thereofTal Lavian Ph.D.
 
Systems and methods for visual presentation and selection of ivr menu
Systems and methods for visual presentation and selection of ivr menuSystems and methods for visual presentation and selection of ivr menu
Systems and methods for visual presentation and selection of ivr menuTal Lavian Ph.D.
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerTal Lavian Ph.D.
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerTal Lavian Ph.D.
 

More from Tal Lavian Ph.D. (20)

Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
 
Photonic line sharing for high-speed routers
Photonic line sharing for high-speed routersPhotonic line sharing for high-speed routers
Photonic line sharing for high-speed routers
 
Systems and methods to support sharing and exchanging in a network
Systems and methods to support sharing and exchanging in a networkSystems and methods to support sharing and exchanging in a network
Systems and methods to support sharing and exchanging in a network
 
Systems and methods for visual presentation and selection of IVR menu
Systems and methods for visual presentation and selection of IVR menuSystems and methods for visual presentation and selection of IVR menu
Systems and methods for visual presentation and selection of IVR menu
 
Grid proxy architecture for network resources
Grid proxy architecture for network resourcesGrid proxy architecture for network resources
Grid proxy architecture for network resources
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
 
Systems and methods for electronic communications
Systems and methods for electronic communicationsSystems and methods for electronic communications
Systems and methods for electronic communications
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
 
Radar target detection system for autonomous vehicles with ultra-low phase no...
Radar target detection system for autonomous vehicles with ultra-low phase no...Radar target detection system for autonomous vehicles with ultra-low phase no...
Radar target detection system for autonomous vehicles with ultra-low phase no...
 
Grid proxy architecture for network resources
Grid proxy architecture for network resourcesGrid proxy architecture for network resources
Grid proxy architecture for network resources
 
Method and apparatus for scheduling resources on a switched underlay network
Method and apparatus for scheduling resources on a switched underlay networkMethod and apparatus for scheduling resources on a switched underlay network
Method and apparatus for scheduling resources on a switched underlay network
 
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...
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...
Method and apparatus for using a command design pattern to access and configu...Method and apparatus for using a command design pattern to access and configu...
Method and apparatus for using a command design pattern to access and configu...
 
Reliable rating system and method thereof
Reliable rating system and method thereofReliable rating system and method thereof
Reliable rating system and method thereof
 
Time variant rating system and method thereof
Time variant rating system and method thereofTime variant rating system and method thereof
Time variant rating system and method thereof
 
Systems and methods for visual presentation and selection of ivr menu
Systems and methods for visual presentation and selection of ivr menuSystems and methods for visual presentation and selection of ivr menu
Systems and methods for visual presentation and selection of ivr menu
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
 
Ultra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizerUltra low phase noise frequency synthesizer
Ultra low phase noise frequency synthesizer
 

Recently uploaded

Gaya Call Girls #9907093804 Contact Number Escorts Service Gaya
Gaya Call Girls #9907093804 Contact Number Escorts Service GayaGaya Call Girls #9907093804 Contact Number Escorts Service Gaya
Gaya Call Girls #9907093804 Contact Number Escorts Service Gayasrsj9000
 
VIP Call Girl Saharanpur Aashi 8250192130 Independent Escort Service Saharanpur
VIP Call Girl Saharanpur Aashi 8250192130 Independent Escort Service SaharanpurVIP Call Girl Saharanpur Aashi 8250192130 Independent Escort Service Saharanpur
VIP Call Girl Saharanpur Aashi 8250192130 Independent Escort Service SaharanpurSuhani Kapoor
 
(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escortsranjana rawat
 
Call Girls Service Kolkata Aishwarya 🤌 8250192130 🚀 Vip Call Girls Kolkata
Call Girls Service Kolkata Aishwarya 🤌  8250192130 🚀 Vip Call Girls KolkataCall Girls Service Kolkata Aishwarya 🤌  8250192130 🚀 Vip Call Girls Kolkata
Call Girls Service Kolkata Aishwarya 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
如何办理伦敦大学伯贝克学院毕业证(BBK毕业证) 成绩单留信学历认证原版一比一
如何办理伦敦大学伯贝克学院毕业证(BBK毕业证) 成绩单留信学历认证原版一比一如何办理伦敦大学伯贝克学院毕业证(BBK毕业证) 成绩单留信学历认证原版一比一
如何办理伦敦大学伯贝克学院毕业证(BBK毕业证) 成绩单留信学历认证原版一比一ga6c6bdl
 
Call Girls in Nagpur Bhavna Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Bhavna Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Bhavna Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Bhavna Call 7001035870 Meet With Nagpur Escortsranjana rawat
 
定制宾州州立大学毕业证(PSU毕业证) 成绩单留信学历认证原版一比一
定制宾州州立大学毕业证(PSU毕业证) 成绩单留信学历认证原版一比一定制宾州州立大学毕业证(PSU毕业证) 成绩单留信学历认证原版一比一
定制宾州州立大学毕业证(PSU毕业证) 成绩单留信学历认证原版一比一ga6c6bdl
 
萨斯喀彻温大学毕业证学位证成绩单-购买流程
萨斯喀彻温大学毕业证学位证成绩单-购买流程萨斯喀彻温大学毕业证学位证成绩单-购买流程
萨斯喀彻温大学毕业证学位证成绩单-购买流程1k98h0e1
 
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Serviceranjana rawat
 
定制(USF学位证)旧金山大学毕业证成绩单原版一比一
定制(USF学位证)旧金山大学毕业证成绩单原版一比一定制(USF学位证)旧金山大学毕业证成绩单原版一比一
定制(USF学位证)旧金山大学毕业证成绩单原版一比一ss ss
 
Beautiful Sapna Call Girls CP 9711199012 ☎ Call /Whatsapps
Beautiful Sapna Call Girls CP 9711199012 ☎ Call /WhatsappsBeautiful Sapna Call Girls CP 9711199012 ☎ Call /Whatsapps
Beautiful Sapna Call Girls CP 9711199012 ☎ Call /Whatsappssapnasaifi408
 
Real Sure (Call Girl) in I.G.I. Airport 8377087607 Hot Call Girls In Delhi NCR
Real Sure (Call Girl) in I.G.I. Airport 8377087607 Hot Call Girls In Delhi NCRReal Sure (Call Girl) in I.G.I. Airport 8377087607 Hot Call Girls In Delhi NCR
Real Sure (Call Girl) in I.G.I. Airport 8377087607 Hot Call Girls In Delhi NCRdollysharma2066
 
Pallawi 9167673311 Call Girls in Thane , Independent Escort Service Thane
Pallawi 9167673311  Call Girls in Thane , Independent Escort Service ThanePallawi 9167673311  Call Girls in Thane , Independent Escort Service Thane
Pallawi 9167673311 Call Girls in Thane , Independent Escort Service ThanePooja Nehwal
 
如何办理(Adelaide毕业证)阿德莱德大学毕业证成绩单Adelaide学历认证真实可查
如何办理(Adelaide毕业证)阿德莱德大学毕业证成绩单Adelaide学历认证真实可查如何办理(Adelaide毕业证)阿德莱德大学毕业证成绩单Adelaide学历认证真实可查
如何办理(Adelaide毕业证)阿德莱德大学毕业证成绩单Adelaide学历认证真实可查awo24iot
 
定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一
定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一
定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一zul5vf0pq
 
Russian Call Girls In South Delhi Delhi 9711199012 💋✔💕😘 Independent Escorts D...
Russian Call Girls In South Delhi Delhi 9711199012 💋✔💕😘 Independent Escorts D...Russian Call Girls In South Delhi Delhi 9711199012 💋✔💕😘 Independent Escorts D...
Russian Call Girls In South Delhi Delhi 9711199012 💋✔💕😘 Independent Escorts D...nagunakhan
 
Papular No 1 Online Istikhara Amil Baba Pakistan Amil Baba In Karachi Amil B...
Papular No 1 Online Istikhara Amil Baba Pakistan  Amil Baba In Karachi Amil B...Papular No 1 Online Istikhara Amil Baba Pakistan  Amil Baba In Karachi Amil B...
Papular No 1 Online Istikhara Amil Baba Pakistan Amil Baba In Karachi Amil B...Authentic No 1 Amil Baba In Pakistan
 
NO1 Qualified Best Black Magic Specialist Near Me Spiritual Healer Powerful L...
NO1 Qualified Best Black Magic Specialist Near Me Spiritual Healer Powerful L...NO1 Qualified Best Black Magic Specialist Near Me Spiritual Healer Powerful L...
NO1 Qualified Best Black Magic Specialist Near Me Spiritual Healer Powerful L...Amil baba
 

Recently uploaded (20)

Gaya Call Girls #9907093804 Contact Number Escorts Service Gaya
Gaya Call Girls #9907093804 Contact Number Escorts Service GayaGaya Call Girls #9907093804 Contact Number Escorts Service Gaya
Gaya Call Girls #9907093804 Contact Number Escorts Service Gaya
 
VIP Call Girl Saharanpur Aashi 8250192130 Independent Escort Service Saharanpur
VIP Call Girl Saharanpur Aashi 8250192130 Independent Escort Service SaharanpurVIP Call Girl Saharanpur Aashi 8250192130 Independent Escort Service Saharanpur
VIP Call Girl Saharanpur Aashi 8250192130 Independent Escort Service Saharanpur
 
(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(PARI) Alandi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
 
Call Girls Service Kolkata Aishwarya 🤌 8250192130 🚀 Vip Call Girls Kolkata
Call Girls Service Kolkata Aishwarya 🤌  8250192130 🚀 Vip Call Girls KolkataCall Girls Service Kolkata Aishwarya 🤌  8250192130 🚀 Vip Call Girls Kolkata
Call Girls Service Kolkata Aishwarya 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
如何办理伦敦大学伯贝克学院毕业证(BBK毕业证) 成绩单留信学历认证原版一比一
如何办理伦敦大学伯贝克学院毕业证(BBK毕业证) 成绩单留信学历认证原版一比一如何办理伦敦大学伯贝克学院毕业证(BBK毕业证) 成绩单留信学历认证原版一比一
如何办理伦敦大学伯贝克学院毕业证(BBK毕业证) 成绩单留信学历认证原版一比一
 
Call Girls in Nagpur Bhavna Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Bhavna Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Bhavna Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Bhavna Call 7001035870 Meet With Nagpur Escorts
 
定制宾州州立大学毕业证(PSU毕业证) 成绩单留信学历认证原版一比一
定制宾州州立大学毕业证(PSU毕业证) 成绩单留信学历认证原版一比一定制宾州州立大学毕业证(PSU毕业证) 成绩单留信学历认证原版一比一
定制宾州州立大学毕业证(PSU毕业证) 成绩单留信学历认证原版一比一
 
Low rate Call girls in Delhi Justdial | 9953330565
Low rate Call girls in Delhi Justdial | 9953330565Low rate Call girls in Delhi Justdial | 9953330565
Low rate Call girls in Delhi Justdial | 9953330565
 
萨斯喀彻温大学毕业证学位证成绩单-购买流程
萨斯喀彻温大学毕业证学位证成绩单-购买流程萨斯喀彻温大学毕业证学位证成绩单-购买流程
萨斯喀彻温大学毕业证学位证成绩单-购买流程
 
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service
(ZARA) Call Girls Jejuri ( 7001035870 ) HI-Fi Pune Escorts Service
 
定制(USF学位证)旧金山大学毕业证成绩单原版一比一
定制(USF学位证)旧金山大学毕业证成绩单原版一比一定制(USF学位证)旧金山大学毕业证成绩单原版一比一
定制(USF学位证)旧金山大学毕业证成绩单原版一比一
 
CIVIL ENGINEERING
CIVIL ENGINEERINGCIVIL ENGINEERING
CIVIL ENGINEERING
 
Beautiful Sapna Call Girls CP 9711199012 ☎ Call /Whatsapps
Beautiful Sapna Call Girls CP 9711199012 ☎ Call /WhatsappsBeautiful Sapna Call Girls CP 9711199012 ☎ Call /Whatsapps
Beautiful Sapna Call Girls CP 9711199012 ☎ Call /Whatsapps
 
Real Sure (Call Girl) in I.G.I. Airport 8377087607 Hot Call Girls In Delhi NCR
Real Sure (Call Girl) in I.G.I. Airport 8377087607 Hot Call Girls In Delhi NCRReal Sure (Call Girl) in I.G.I. Airport 8377087607 Hot Call Girls In Delhi NCR
Real Sure (Call Girl) in I.G.I. Airport 8377087607 Hot Call Girls In Delhi NCR
 
Pallawi 9167673311 Call Girls in Thane , Independent Escort Service Thane
Pallawi 9167673311  Call Girls in Thane , Independent Escort Service ThanePallawi 9167673311  Call Girls in Thane , Independent Escort Service Thane
Pallawi 9167673311 Call Girls in Thane , Independent Escort Service Thane
 
如何办理(Adelaide毕业证)阿德莱德大学毕业证成绩单Adelaide学历认证真实可查
如何办理(Adelaide毕业证)阿德莱德大学毕业证成绩单Adelaide学历认证真实可查如何办理(Adelaide毕业证)阿德莱德大学毕业证成绩单Adelaide学历认证真实可查
如何办理(Adelaide毕业证)阿德莱德大学毕业证成绩单Adelaide学历认证真实可查
 
定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一
定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一
定制加拿大滑铁卢大学毕业证(Waterloo毕业证书)成绩单(文凭)原版一比一
 
Russian Call Girls In South Delhi Delhi 9711199012 💋✔💕😘 Independent Escorts D...
Russian Call Girls In South Delhi Delhi 9711199012 💋✔💕😘 Independent Escorts D...Russian Call Girls In South Delhi Delhi 9711199012 💋✔💕😘 Independent Escorts D...
Russian Call Girls In South Delhi Delhi 9711199012 💋✔💕😘 Independent Escorts D...
 
Papular No 1 Online Istikhara Amil Baba Pakistan Amil Baba In Karachi Amil B...
Papular No 1 Online Istikhara Amil Baba Pakistan  Amil Baba In Karachi Amil B...Papular No 1 Online Istikhara Amil Baba Pakistan  Amil Baba In Karachi Amil B...
Papular No 1 Online Istikhara Amil Baba Pakistan Amil Baba In Karachi Amil B...
 
NO1 Qualified Best Black Magic Specialist Near Me Spiritual Healer Powerful L...
NO1 Qualified Best Black Magic Specialist Near Me Spiritual Healer Powerful L...NO1 Qualified Best Black Magic Specialist Near Me Spiritual Healer Powerful L...
NO1 Qualified Best Black Magic Specialist Near Me Spiritual Healer Powerful L...
 

Dynamic traffic class assignment to priority queue

  • 1. c12) United States Patent Lavian et al. (54) DYNAMIC ASSIGNMENT OF TRAFFIC CLASSES TO A PRIORITY QUEUE IN A PACKET FORWARDING DEVICE (75) Inventors: Tal I. Lavian, Sunnyvale, CA (US); Stephen Lau, Milpitas, CA (US) (73) Assignee: Rockstar Consortium US LP, Plano, TX (US) ( *) Notice: Subject to any disclaimer, the term of this patent is extended or adjusted under 35 U.S.C. 154(b) by 2616 days. (21) Appl. No.: 09/747,296 (22) Filed: Dec. 22, 2000 (65) (60) (51) Prior Publication Data US 2002/0021701 Al Feb. 21, 2002 Related U.S. Application Data Provisional application No. 60/226,787, filed on Aug. 21,2000. Int. Cl. H04L 12128 (2006.01) (52) U.S. Cl. USPC ........... 370/401; 370/252; 370/255; 370/352; 370/400; 370/522 (58) Field of Classification Search USPC ......... 370/229, 412, 428, 429, 252-257, 352, 370/400, 522, 395.2, 295.2 See application file for complete search history. (56) References Cited U.S. PATENT DOCUMENTS 2,775,280 A * 12/1956 Kasdan 150/110 5,515,376 A * 5/1996 Murthy eta!. ................ 370/402 111111 1111111111111111111111111111111111111111111111111111111111111 DONE US008619793B2 (10) Patent No.: US 8,619, 793 B2 (45) Date of Patent: Dec. 31, 2013 5,898,687 A * 5,926,463 A * 5,953,335 A * 6,094,435 A * 6,104,700 A * 6,111,874 A * 6,185,215 B1 * 6,246,680 B1 * 6,292,489 B1 * 6,295,532 B1 * 6,335,935 B2 * 6,405,258 B1 * 6,427,132 B1 * 6,430,188 B1 * 6,430,616 B1 * 6,463,067 B1 * 6,515,993 B1 * 6,577,636 B1 * 6,611,522 B1 * 6,611,867 B1 * 6,633,835 B1 * 6,687,247 B1 * 6,707,817 B1 * 6,728,213 B1 * 6,731,601 B1 * 4/1999 Harriman eta!. ............. 370/390 7/1999 Ahearn eta!. ................ 370/254 9/1999 Erimli et al ................... 370/390 7/2000 Hoffman eta!. .............. 370/414 8/2000 Haddock et al ............... 370/235 8/2000 Kerstein ........................ 370/389 2/2001 Aho .............................. 370/402 6/2001 Muller eta!. ................. 370/389 9/2001 Fukushima eta!. .......... 370/401 9/2001 Hawkinson ....................... 707/4 1/2002 Kadambi et al ............... 370/396 6/2002 Erimli et al ................... 709/235 7/2002 Bowman-Amuah ............ 703/22 8/2002 Kadambi et al ............... 370/398 8/2002 Brinnand eta!. ............. 709/224 10/2002 Hebb et al ..................... 370/413 2/2003 Williams eta!. ......... 370/395.53 6/2003 Sang eta!. ................. 370/395.7 8/2003 Zheng et al .............. 370/395.21 8/2003 Bowman-Amuah .......... 709/224 10/2003 Moran eta!. .................. 702/190 2/2004 Wilford et al ................. 370/392 3/2004 Kadambi et al ............... 370/390 4/2004 Tzeng et al ................... 370/235 5/2004 Krishna eta!. ................ 370/230 (Continued) Primary Examiner- Andrew Lai Assistant Examiner- Andrew C Lee (74) Attorney, Agent, or Firm- Anderson Gorecki & Rouille LLP (57) ABSTRACT An apparatus and method for dynamic assignment of classes of traffic to a priority queue. Bandwidth consumption by one or more types of packet traffic received in the packet forward­ing device is monitored to determine whether the bandwidth consumption exceeds a threshold. If the bandwidth consump­tion exceeds the threshold, assignment of at least one type of packet traffic of the one or more types of packet traffic is changed from a queue having a first priority to a queue having a second priority. 21 Claims, 6 Drawing Sheets
  • 2. (56) References Cited US 8,619,793 B2 Page 2 6,980,515 B1* 6,996,099 B1 * U.S. PATENT DOCUMENTS 7,009,968 B2 * 7,016,365 B1* 6,735,198 B1 * 5/2004 Edsall eta!. .................. 370/389 7,020,697 B1 * 6,760,776 B1 * 7/2004 Gallo et al . ................... 709/238 7,116,679 B1 * 6,778,525 B1* 8/2004 Baumetal. ................... 370/351 7,184,441 B1* 6,788,681 B1* 9/2004 Hurren eta!. ................. 370/389 7,197,044 B1 * 6,798,788 B1 * 9/2004 Viswanath et al . ........... 370/469 7,464,180 B1 * 6,804,234 B1 * 10/2004 Chow ............................ 370/389 8,040,901 B1* 6,850,521 B1* 2/2005 Kadambi et al. .............. 370/389 200110043611 A1 * 6,868,065 B1* 3/2005 Kloth et al. ................... 370/236 2005/0152369 A1 * 6,870,840 B1 * 3/2005 Hill eta!. ...................... 370/389 2005/0201387 A1 * 6,912,232 B1 * 6/2005 Duffield et al . ............... 370/468 2006/0007859 A1 * 6,940,814 B1 * 9/2005 Hoffman ....................... 370/235 6,963,566 B1 * 1112005 Kaniz eta!. ................... 370/392 * cited by examiner 12/2005 Schunk eta!. ............. 370/230.1 2/2006 Kadambi et al . .............. 370/389 3/2006 Ambe eta!. .................. 370/389 3/2006 Grow et al . ................... 370/413 3/2006 Goodman et a!. ............ 709/223 10/2006 Ghahremani ................. 370/463 2/2007 Kadambi et al . .............. 370/400 3/2007 Kadambi et al . .............. 370/418 12/2008 Jacobs eta!. .................. 709/240 10/2011 Kompella et al . ........ 370/395.71 1112001 Kadambi et al. .. ............ 370/429 7/2005 Ambe eta!. .................. 370/392 9/2005 Willis ...................... 370/395.52 112006 Kadambi et al . .............. 370/229
  • 3. Switching Fabric 12 ·o--·------_r:Ja,-------------------:., ':)o : :: "'-._ ' '.. •J i26 : '-...--......... '~8 29 • '-....,..._ L. j 0 ~' !ARUL__ 0!0. -·-!Memory ~ l6A • 18A Au-·£ <v'j£;; QMAL 14A ······ 1!0 Unit ·1 J 1'1 ••• FIG. 1 _ ~xJ26 ,,,,,,,,, ~~ ,,,,,,,,,,,,,,,,,,,,,,,~~~~. ~~~~~ .. ~ MemcHy J.B.S 2·1 8-.. I 228'. QMAL 14B 238" i 248'. 9' P30 n ·;~ u-----·---J .,,,,~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~. Procnssor 3J ......... ::~=:.:::::::::-r::.::.::.: .. Res !Memory 3-:, ! 32 _::2. ! _. - Processing Unit 10 ---- l/0 Unit 16 ~ 00 • ~ ~ ~ ~ = ~ c ('D ~ (...H.. ~ N 0.. .. (.H rFJ =­(' D (..'..D... .. 0... .. 0 d rJl 00 0.., ""C""' ~ C w = N
  • 4. U.S. Patent Dec. 31, 2013 FIG. 2A Queue Fill Logic Identify Queue Entry Associated With Cell Header Reassemb!e Cell With Precedinq Cell In Queue Er1try I /z _/69 ·' '. /Packet"' No Done ? -- 65 rvlark ._P_a_c_kP_.t_R_e_a_d~_',~ .... 71 Sheet 2 of 6 Get Next Cell From Switch Fabric 57 _:,_ ___________ :'! __Y____e___s___ __ AHocate Entry In Priority Queue 59, J Associate Entry New Cell Header I I US 8,619,793 B2 -63 / ! • Associate I Entry With I Cell Header Queue Drain Logic FIG. 28 io r /'""""-( ::) ./~~ /81 .. /-·Packet"" //Pac~:e~ ~ No No Rdy · Rdy Pri. G. B.L Q. '> ""' l Yes J Yes Transmit -77 Transmit --83 Packet Packet t Dea!locates ---· 79 Deal!ocates ---- 85 Entry In Entry !n Best Priority Queue Effort Queue
  • 5. U.S. Patent Dec. 31, 2013 Sheet 3 of 6 ·-·91 No I Priority B~t --·- 95 I~se~~~~atle /99 97, Yes ........................................................................................................................................( ................ .... .................................................................................................................................................................................... .. I Segment Packet Into Cells Having Prioritv Bit Cleared In Ce!i Header Segment Packet Into Cells Having Priority Bit Cleared In Cell Header ~-- US 8,619,793 B2 Packet Ingress .......................... - ........... r·····-· ................ . ==========~,=========== S'Vitch Fabric Prior1ty Queue 103 .-----Y,_e_s -1 Prioritv s---N_o------. -1 v Bit. l... ........... . s;t L...... ......... I 1 Best Effort , Queue > Packet 1 1 fl5 Egress t ·~~~~:~~~~ 101 FIGx 3
  • 6. U.S. Patent Dec. 31, 2013 Sheet 4 of 6 StoreAR Table Entry ............... -............... -......... . --------------~-------------J·---------------~------------- 1•15 -.... Receive Forwarding L_ Information From Processing Unlt --------- 117- Store For.varding Yes Yes Information !n AR Table Entry // ............... . /125 // -<........_ ,~ ____ v_,'e_.s_· -</ IP Flow -...... "" PRI? Set Priority Bit In AR Table Entry No US 8,619,793 B2 Physical Port MAC Address VLAN!D lPAddress IP Port IP Protocol I 110 l FIG. 4 DONE
  • 7. .1'-- Switch / Software '-, .,_ Device Management Code (native) .:L4.I Device Drivers J45 JAVA Client -- 160 -~-----../. ______ ___ ( ~~~ ./"'-----, App!et Dovvnload ----....... «t---~ Applet '-....., (monitor) .,_~JAVA { App!et ){policy) .,. 1 f 1':Jehvork JAVA Native Insurance .l~J / ~ /, ..- ----------.-.....(" ~-""""T'"---, 1 Java ) Data ._.( Applet Com I JAVA Library (config) ~~~;.;n _1_ _5 _ 5 ,JAVA Virtual rll1achine 149 Operating System 14J Svvitch Hardvvare JAJ. 1.7 NehNork fvlanagernEHit Server 170 FIG. 5 ~ 00 • ~ ~ ~ ~ = ~ c ('D ~ (...H.. ~ N 0.. .. (.H rFJ =­(' D (.'.D.. . Ul 0... .. 0 d rJl 00 0.., ""C""' ~ C w = N
  • 8. MONlTOF~: FOREVER f ,, READ_DEST 3v1AC_UT!L %(PORTI,MAC ADDR A) READ __ DEST _ MACJJTiL'%(PORTUv1AG ADDR B) DELAY iOM.S I- - 178 POLICY ENFORCEMENT: A%: LINE UTILIZATION% MACADDHA 8%: LINE UTILIZ,4TION % MAC ADDR B QA_S: QUEUE ASSIGNMENT OF SERVER MP1C ADDR TRAFFIC OA __ A: QUEUE ASSIGNMENT OF MAC ADDR A TRAFFIC QA_B: QUEUE ASSIGNMENT Oi= MAC ADDR B TRAFFiC DELTA= 5% OAS;;; OA J:;;: Q.A. _8"' PRI.Q FOREVER. ( GET A.%, 8% FROM MONITOR 181 { IF (QA_A = PRI.Q AND QA_B = PRLQ) AND ((A%+8%)>80%_,) · QA A=BEQ r IF (QA A= B.E.Q AND QA B = PRI.O) AND 1831 ((NY;+B% )<(80%-DEL TA)) · QA A= PRI.Q • c: r IF (QAA = B.E.O AND QAB = PRI.Q) AND • 8 ~1 (8%>80"/o) ~ OA_B =B.E.Q . J IF (QA_B = B.E.Q)AND 18?l (8~'o<(80'Yo·DELTA)) QA ___ B =PRI.Q DELAY 5MS liS S'vVITCH A l ! SVviTCH 8 FIG. 6 I ! • • • ! I 2 3l L L. ..... ~ L_ ____________________ _j 175 SERVER MAC ADDR: N: 34: 3G: AC: BL: CC CONFIGUf~ATION: QA_A: QUEUE ASSIGNMENT OF MAC ADDR A TRAFFIC QA_B: QUEUE ASSIGNMENT OF MAC ADDR 8 TRAFFIC LAST. .. OA .... A: Q.A. _ A H!STORY LAST QA_B: Qf_8 HISTORY LA-ST Q.A_A"' LAST_OA_B"' PRI.Q FOREVER ( GET OA_A QA_ _ B FfOM POLICY ENFORCEMENT _IF (QA_Ai co: lJIST_QA_A) MOVE_VIRTUP..L QUEUE (PORTl, M.A,C ADDR A. QA_A) LtST QA_A = QA_A !F {Qf /1::: LAST QA A) ( ' - - - ' MOVE_ VIRTUAL QUEUE (PORTl, MAC ADDR A. OA_A) ., LAST __ QA _ _A::: QA _ A ) DELAY 2.5MS 18D ~ 00 • ~ ~ ~ ~ = ~ c ('D ~ (...H.. ~ N 0.. .. (.H rFJ =­(' D (.'.D.. . 0 0... .. 0 d rJl 00 0.., ""C""' ~ C w = N
  • 9. US 8,619,793 B2 1 2 DYNAMIC ASSIGNMENT OF TRAFFIC CLASSES TO A PRIORITY QUEUE IN A PACKET FORWARDING DEVICE CROSS-REFERENCE TO RELATED APPLICATION FIG. 1 illustrates a packet forwarding device that can be used to implement embodiments of the present invention; FIG. 2A illustrates queue fill logic implemented by a queue manager in a quad interface device, and FIG. 2B illustrates 5 queue drain logic according to one embodiment; The present application claims priority under 35 U.S.C. §119(e) from provisional application Ser. No. 60/226,787 filed Aug. 21, 2000, and is related to U.S. patent application 10 Ser. No. 09/227,389, both applications being incorporated herein by reference. FIELD OF THE INVENTION The present invention relates to the field of telecommuni­cations, and more particularly to dynamic assignment of traf­fic classes to queues having different priority levels. 15 FIG. 3 illustrates the flow of a packet within the switch of FIG.1; FIG. 4 illustrates storage of an entry in an address resolu­tion table managed by an address resolution unit; FIG. 5 is a diagram of the software architecture of the switch of FIG. 1 according to one embodiment; and FIG. 6 illustrates an example of dynamic assignment of traffic classes to a priority queue. DETAILED DESCRIPTION OF THE PRESENTLY PREFERRED EXEMPLARY EMBODIMENTS A packet forwarding device in which selected classes of network traffic may be dynamically assigned for priority BACKGROUND OF THE INVENTION The flow of packets through packet-switched networks is controlled by switches and routers that forward packets based on destination information included in the packets them­selves. A typical switch or router includes a number of input/ output (I/0) modules connected to a switching fabric, such as 20 queuing is disclosed. In one embodiment, the packet forward­ing device includes a Java virtual machine for executing user­coded Java applets received from a network management server (NMS). A Java-to-native interface (JNI) is provided to allow the Java applets to obtain error information and traffic 25 statistics from the device hardware and to allow the Java 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/0 modules so that the 30 switching fabric may deliver packets to an I/0 module faster than the I/0 module can output them to the network transmis­sion medium. In these devices, packets are usually queued in the I/0 module to await transmission. One problem that may occur when packets are queued in 35 the I/0 module or elsewhere in a switch or router is that the applets to write configuration information to the device hard­ware, including information that indicates which classes of traffic should be queued in priority queues. The Java applets implement user-specified traffic management policies based on real-time evaluation of the error information and traffic statistics to provide dynamic control of the priority queuing assignments. These and other aspects and advantages of the present invention are described below. It should be noted that the use of the Java language is not a requirement for practicing the present invention. Although Java provides a number of advantages when used to imple­ment the present invention, e.g., dynamic on-demand use, other programming languages such as C may be used in its place. 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 con-queuing delay per packet varies depending on the amount of traffic 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 40 between successive packets in the stream convey the sam­pling 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. 45 trol (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 SUMMARY OF THE INVENTION address switching and IP address routing. The techniques and A method and apparatus for dynamic assignment of classes of traffic to a priority queue are disclosed. Bandwidth con­sumption by one or more types of packet traffic received in a packet forwarding device is monitored. The queue assign­ment of at least one type of packet traffic is automatically changed from a queue having a first priority to a queue having a second priority if the bandwidth consumption exceeds the threshold. 50 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 fixed-length cell, a variable length frame or any other infor­mation structure that is self-contained as to its destination 55 address. Other features and advantages of the invention will be apparent from the accompanying drawings and from the 60 detailed description that follows below. BRIEF DESCRIPTION OF THE DRAWINGS The present invention is illustrated by way of example and 65 not limitation in the figures of the accompanying drawings in which like references indicate similar elements and in which: The switch 17 includes a switching fabric 12 coupled to a plurality of I/0 units (only I/0 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/0 unit 1,16 includes four physical ports P1-P4 coupled to a quad media access controller (QMAC) 14A, 14B via respective transceiver inter­face units 21A-24A, 21B-24B. Each I/0 unit 1,16 also includes a quad interface device (QID) 16A, 16B, an address resolution unit (ARU) 15A, 15B and a memory ISA, 18B, interconnected as shown in FIG. 1. Preferably, the switch 17
  • 10. US 8,619,793 B2 3 is modular with at least the I/0 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 a given number of I/0 units and therefore supports a corresponding number of physical ports. The 5 switch backplane includes slots for a given number of port cards, so that the switch 17 can be scaled according to cus­tomer needs to support a number of physical ports as con­trolled by the number of port cards. In alternate embodiments, each I/0 unit 1,16 may support more or fewer physical ports, 10 each port card may support more or fewer I/0 units 1,16 and the switch 17 may support more or fewer port cards. For example, the I/0 unit 1 shown in FIG. 1 may be used to support 10 base T transmission lines (i.e., 10 Mbps (mega-bit per second), twisted-pair) or 100 base T transmission lines 15 (100 Mbps, fiber optic), while a different I/0 unit (not shown) may be used to support a 1000 base T transmission line (1 000 Mbps, fiber optic). Nothing disclosed herein should be con­strued as limiting embodiments of the present invention to use with a particular transmission medium, I/0 unit, port card or 20 chassis configuration. Still referring to FIG. 1, when a packet 25 is received on physical port PI, it is supplied to the corresponding physical transceiver 21A which performs any necessary signal condi­tioning (e.g, optical to electrical signal conversion) and then 25 forwards the packet 25 to the QMAC 14A. The QMAC 14A buffers packets received from the physical transceivers 21A- 24A as necessary, forwarding one packet at a time to the QID 16A. Receive logic within the QE) 16A notifies the ARU 15A that the packet 25 has been received. The ARU computes a 30 table index based on the destination MAC address within the 4 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 pri­ority 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 respec-tive 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. 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 deliv-ered 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 ofl/0 unit 16. FIG. 2A illustrates queue fill logic implemented by the queue manager in the QDD. Starting at block 51, a cell is received in the QID from the switching fabric. The beginning 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 packet 25 and uses the index to identify an entry in a forward­ing 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. According to one embodiment, the forwarding table entry identified 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 physi- 35 and the priority queue entry is associated with the portion of the cell header that identifies 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 asso- 40 cia ted with the portion of the cell header that identifies the cell as a constituent of a particular packet at block 63. cal ports (a port-based VLAN).) The forwarding table entry 45 further indicates whether the packet 25 is to be queued in a priority queue in the I/0 unit that contains the destination port. As discussed below, priority queuing may be specified based on a number of conditions, including, but not limited to, whether the packet is part of a particular IP flow, or whether 50 the packet is destined for a particular port, VLAN or MAC address. According to one embodiment, the QID 16A, 16B seg­ments the packet 25 into a plurality of fixed-length cells 26 for transmission through the switching fabric 12. Each cell 55 includes a header 28 that identifies it as a constituent of the packet 25 and that identifies 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 begin­ning cell of a packet and also a bit 30 indicating whether the 60 packet 25 to which the cell belongs is to be queued in a priority queue or a best effort queue on the destined I/0 unit. The switching fabric 12 forwards each cell to the I/0 unit indicated by the cell header 28. In the exemplary data flow shown in FIG. 1, the constituent cells 26 of the packet 25 are 65 assumed to be forwarded to I/0 unit 16 where they are deliv­ered to transmit logic within the QID 16B. The transmit logic 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 identified at block 65. The association between the cell header and the queue entry identified at block 65 was established earlier in either block 59 or block 63. Also, identification of the queue entry in block 65 may include inspection of the priority bit in the cell to narrow the identi­fication 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 flag 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 embodiments. 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 transmitted 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
  • 11. US 8,619,793 B2 5 effort queue, it is transmitted at block 83 and the correspond­ing 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 10 effort queue. FIG. 3 illustrates the flow 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 (AR) table at block 93. At decision block 15 95, a priority bit in the AR table entry is inspected to deter­mine 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 6 been selected for priority queuing, then at decision block 121 the MAC address stored in the AR table entry is compared against the priority configuration 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 identifier stored in the AR table entry (if present) is compared against the priority configuration information 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 flow identi­fied by the IP address, IP port and IP protocol in the AR table is compared against the priority configuration information to determine if packets that form part of the IP flow 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 and the process of setting the priority bit is completed. Yet other criteria may be considered in assigning priority queuing in alternate embodiments. For example, priority queuing may be specified for a particular IP Protocol (e.g., FTP, HTTP). Also, the ingress port, source MAC address or source VLAN set in their headers in block 97. If the priority bit is not set, the 20 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/0 unit by the switch­ing fabric. In the egress I/0 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. 25 of a packet may also be used to determine whether to queue the packet in the priority egress packet. More specifically, in one embodiment, priority or best effort queuing of unicast traffic is determined based on destination parameters (e.g., FIG. 4 illustrates storage of an entry in the address resolu­egress port, destination MAC address or destination IP tion (AR) table managed bytheARU. In one embodiment, 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­specific integrated circuit (ASIC) that includes the ARU. Generally, theARU stores an entry in theAR table in response to packet forwarding information from the processing unit. The processing unit supplies packet forwarding information 30 address), while priority or best effort queuing of multicast traffic is determined based on source parameters (e.g., ingress port, source MAC address or source IP address). FIG. 5 is a diagram of the software architecture of the switch 17 of FIG. 1 according to one embodiment. An oper- 35 ating system 143 and device drivers 145 are provided to interface with the device hardware 141. For example, device drivers are provided to write configuration information and AR storage entries to the ARU s in respective I/0 units. Also, the operating system 143 performs memory management 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 embodiment, an address-to-port asso­ciation is learned by transmitting a packet that has an unknown egress port assigmnent 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 45 port and the destination address, the processing unit issues forwarding information that includes, for example, an iden­tifier of the newly associated egress port, the destination MAC address, an identifier of the VLAN associated with the MAC address (if any), an identifier 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 protocol (UDP) or other IP port) and the IP protocol (e.g., HTTP, FTP or otheriP protocol). The source IP address, source IP port and source IP protocol may also be supplied to fully identifY an end-to-end IP flow. 40 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-specific operations. The device management code 147 is executed by the pro-cessing unit (e.g., element 10 of FIG. 1) to perform system level functions, including management of-forwarding entries in the distributed AR tables and management of forwarding entries in a master forwarding table maintained in the 50 memory of the processing unit. The device management code 147 also includes routines for invoking device driver services, for example, to query the ARU for traffic statistics and error information, or to write updated configuration information to the ARUs, including priority queuing information. Further, 55 the device management code 147 includes routines for writ­ing updated configuration information to the ARUs, as dis­cussed 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 instruc- 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 identi­fier stored in the AR table entry is compared against priority configuration 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 60 tions that can be executed directly by a processor in the processing unit to carry out the device management func­tions. In one embodiment, the device management code 147 sup­ports the operation of a Java client 160 that includes a number 65 of Java applets, including a monitor applet 157, a policy enforcement applet 159 and configuration applet 161. A Java applet is an instantiation of a Java class that includes one or
  • 12. US 8,619,793 B2 7 8 FIG. 6 illustrates an example of dynamic assignment traffic 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 pro­vided by ensuring that at least 20% of the egress capacity of switch B, port 1 is reserved for traffic destined to the MAC more methods for self initialization (e.g., a constructor method called "AppletQ"), 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 con­trolling application for the monitor, policy enforcement and configuration 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. As above, it should be noted that the use of Java is not essential to the present invention and is used for purposes of illustration and explanation. Other programming languages may be used in its place. 10 address of the server 175. One way to ensure that 20% egress capacity is reserved to traffic 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 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/0 unit coupled to the NMS 170. After authenticating the HTTP data stream, the DCI applica­tion 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 methodofthe applet and causing the Java virtual machine 149 15 traffic, it also may result in unnecessarily high bandwidth allocation to the server 175, potentially starving other impor­tant traffic or causing other important traffic to become bottle­necked behind less important traffic in the best effort queue. For example, suppose that there are at least two other MAC 20 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 traffic is available. In that case, it would be desirable to dynamically configure the MAC address A and MAC address B traffic to be 25 queued in either the priority queue or the best effort queue according to existing traffic conditions, hi at least one embodiment, this is accomplished using monitor, policy enforcement and configuration applets that have been down­loaded to switch Band which are executed in a Java client in to begin execution of the applet code. Program code defining 30 switch B as described above in reference to FIG. 5. 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 proces­sor within the processing unit. According to one embodiment, the monitor applet 157, policy enforcement applet 159 and 35 configuration applet 161 communicate with the device man­agement code 147 through a Java-native interface (JNI) 151. The JNI 151 is essentially an application programming inter­face (API) and provides a set of methods that can be invoked by the Java applets 157, 159, 161 to send messages and 40 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 45 by which the configuration applet 161 can request the device management code 147 to write configuration information to the device hardware 141. More specifically, the JNI 151 includes a method by which the configuration applet 161 can indicate that priority queuing should be performed for speci- 50 fied classes of traffic, including, but not limited to, the classes of traffic discussed above in reference to FIG. 4. In this way, FIG. 6 includes exemplary pseudocode listings of monitor, policy enforcement and configuration 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 traffic destined to the server 175, but without unnecessarily denying priority queuing assignment to traffic destined for MAC addresses A and B. After initialization, the monitor applet 178 repeatedly measures of the port 1line utilization from the device hard­ware. In one embodiment, the ARU in the I/0 unit that man­ages port 1 keeps a count of the number of packets destined for particular egress ports, packets destined for particular MAC addresses, packets destined for particular VLANS, packets that form part of a particular IP flow, packets having a particular IP protocol, and so forth. TheARU also tracks the nnmber of errors associated with these different classes of traffic, the number of packets from each class of traffic 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/0 unit or the overall switch. Error rates and packet drop rates may also be generated. In one embodiment, the monitor applet 178 measures line utilization by invoking methods in the JNI to read the port 1 line utilization resulting from traffic destined for MAC address A and for MAC address B on a periodic basis, e.g., every 10 milliseconds. The policy enforcement applet 179 includes variables to hold the line utilization percentage of traffic destined for MAC address A (A % ), the line utilization percentage of a user-coded configuration applet 161 may be executed by the Java virtual machine 149 within the switch 17 to invoke a method in the JN1 151 to request the device management 55 code 147 to write information that assigns selected classes of traffic to be queued in the priority egress queue. In effect, the configuration applet 161 assigns virtual queues defined by the selected classes of traffic to feed into the priority egress queue. 60 traffic destined for MAC address B (B %),the queue assign­ment (i.e., priority or best effort) of traffic destined for the server MAC address (QA_S), the queue assignment of traffic destined for MAC address A (QA_A) and the queue assign­ment of traffic destined for MAC address B. Also, a constant, As noted above, 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 configuration functions in alternate embodiments. 65 DELTA, is defined to be 5% and the queue assignments for the MAC address A, MAC address B and server MAC address traffic are initially set to the priority queue.
  • 13. US 8,619,793 B2 9 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 assigmnents QA_A and QA_B. If the MAC address A traffic and the MAC address B traffic are both assigned to the priority queue (the initial configura­tion) and the sum of the line utilization percentages A % and B %exceeds 80%, then less than 20% line utilization remains for the server-destined traffic, hi 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 traffic is assigned to the priority queue, then the MAC address A traffic 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 assigument. If the MAC address A traffic is assigned to the best effort queue and the MAC address B traffic is assigned to the pri­ority 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 traffic is assigned to the best effort queue and the line utilization per­centage B % drops below 80% less DELTA, then the MAC address B traffic is reassigned to the priority queue (code statement 187). Although not specifically provided for in the exemplary pseudocode listing of FIG. 6, the policy enforce­ment applet 179 may treat the traffic destined for the MAC A and MAC B addresses more symmetrically by including addi­tiona! statements to conditionally assign traffic destined for MAC address A to the priority queue, but not traffic destined for MAC address B. In the exemplary pseudocode listing of FIG. 6, the policy enforcement applet 179 delays for 5 milli­seconds at the end of each pass through the forever loop before repeating. The configuration applet 180 includes variables, QA_A and QA_B, to hold the queue assigmnents of the traffic des­tined for the MAC addresses A 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 addresses A and B is assigned to the priority queue. Like the monitor and policy enforcement applets 178,179, the configuration applet 180 includes a forever loop in which 10 the monitor and policy enforcement applets 178, 179, traffic destined for the MAC addresses A and B is dynamically assigned to the priority queue according to real-time evalua­tions of the traffic conditions in the switch. Although a three-applet implementation is illustrated in FIG. 6, more or fewer applets may be used in an alternate embodiment. For example, the functions of the monitor, policy enforcement and configuration applets 178, 179, 180 may be implemented in a single applet. Alternatively, mul- 10 tiple applets may be provided to perform policy enforcement or other functions using different queue assignment criteria. For example, one policy enforcement applet may make pri­ority queue assigmnents based on destination MAC addresses, while another policy enforcement applet makes 15 priority queue assignments based on error rates or line utili­zation of higher level protocols. Multiple monitor applets or configuration applets may similarly be provided. Although queue assignment policy based on destination MAC address is illustrated in FIG. 6, myriad different queue 20 assignment criteria may be used in other embodiments. For example, instead of monitoring and updating queue assign­ment based on traffic to destination MAC addresses, queue assignments may be updated on other traffic patterns, includ­ing traffic to specified destination ports, traffic from specified 25 source ports, traffic from specified source MAC addresses, traffic that forms part of a specified IP flow, traffic that is transmitted using a specified protocol (e.g., HTTP, FTP or other protocols) and so forth. Also, queue assignments may be updated based on environmental conditions such as time of 30 day, changes in network configuration (e.g., due to failure or congestion at other network nodes), error rates, packet drop rates and so forth. Monitoring, policy enforcement and con­figuration applets that combine many or all of the above­described criteria may be implemented to provide sophisti- 35 cated traffic handling capability in a packet forwarding device. Although dynamic assignment of traffic classes to a prior­ity egress queue has been emphasized, the methods and appa­ratuses described herein may alternatively be used to assign 40 traffic classes to a hierarchical set of queues anywhere in a packet forwarding device including, but not limited to, ingress queues and queues associated with delivering and receiving packets from the switching fabric. Further, although the queue assignment of traffic classes has been 45 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. a code sequence is executed followed by a delay, in the exemplary listing of FIG. 6, the first operation performed by 50 the configuration applet 180 within the forever loop is to obtain the queue assigmnents QA_A and QA_B from the policy enforcement applet 179. If the queue assigmnent indi­cated by QA_A is different from the queue assignment indi­cated by LAST_QA_A, then a JNI method is invoked to 55 request the device code to reconfigure the queue assignment Further, although the modification of various queues in this way has been described herein, the invention is not so limited and other embodiments also exist. For example, traffic can be filtered based on its type-source (e.g., source MAC address or source VLAN), ingress port, destination (e.g., destination MAC address or destination IP address), egress port, protocol (e.g., FTP, HTTP) or other hardware-supported filters. In one embodiment, filtering of unicast traffic is determined based of the traffic 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 subsequent queue assign­ment changes are detected. If the queue assigmnent indicated 60 by QA_B is different from the queue assignment indicated by LAST_QA_B, then a JNI method is invoked to request the device code to reconfigure the queue assignment of the traffic destined for MAC address B according to the new QA_B value. The new QA_B value is then copied into the 65 LAST_QA_B variable so that subsequent queue assignment changes are detected. By this operation, and the operation of on destination parameters such as egress port, destination MAC address or IP address, while filtering of multicast traffic is determined based on source parameters such as ingress port, source MAC address or source IP address. Filtering may be based on environmental conditions, such as time of day, changes in network configuration (e.g., due to failure or con­gestion at other network nodes), error rates, packet drop rates, line utilization of higher-level protocols. It may be based on traffic patterns such as traffic from specified source ports, traffic to specified destination ports, traffic from specified source MAC addresses or traffic that forms part of a specified
  • 14. US 8,619,793 B2 11 IP flow. Various other hardware counters, monitors and dynamic values can be read from the hardware. Still further, dynamic filtering decisions may be made on how to process packets other than choosing whether they should go to a priority or best effort queue; for example, they may be dropped or copied, or traffic of a specific type as described above may be diverted. Packet headers may be modified, and use of differentiated services (DS), quality of service (QoS), TOS, TTL, destination and the like is possible as long as it is supported by the hardware. The configurability 10 of filtering and subsequent processing in the invention is, in fact, limited only by the hardware and numerous possibilities for filtering and subsequent processing of traffic other than those described herein will be readily apparent to those skilled in the art after reading and understanding this appli- 15 cation. As an example, consider the routing of multimedia traffic. Such traffic might be sent by three or more separated streams defined by, e.g., virtual port number. This traffic could be filtered and processed to dynamically add or drop specific 20 streams. Based on such dynamic adaptation, active network applications on nodes between the source and destination can negotiate and dynamically set different adaptation mecha­nisms. As described above, the invention is of course not limited to this example, and in fact is intended to cover such 25 filtering and processing using future hardware platforms which provide new capabilities and which afford new ways of using and controlling such functionality. In the foregoing specification, the invention has been described with reference to specific exemplary embodiments 30 thereof. It will, however, be evident that various modifica­tions and changes may be made to the specific exemplary embodiments without departing from the broader spirit and scope of the invention as set forth in the appended claims. Accordingly, the specification and drawings are to be 35 regarded in an illustrative rather than a restrictive sense. What is claimed is: 12 5. The method of claim 4, wherein the destination param­eter includes a destination MAC address. 6. The method of claim 1, wherein the type of packet traffic is associated with its egress port. 7. The method of claim 1, wherein the type of traffic is based on its protocol, and including selectively modifying the priority of the traffic in response to its protocol. 8. The method of claim 7, wherein the protocol of traffic includes FTP. 9. The method of claim 7, wherein the protocol of traffic includes HTTP. 10. In a packet forwarding device, a method comprising: monitoring environmental conditions of reception of packet traffic in the packet forwarding device; determining whether environmental conditions associated with reception of packet traffic in the packet forwarding device meet predetermined criteria; when the environmental conditions meet the predeter­mined criteria, determining whether a type of packet traffic received in the packet forwarding device is a unicast type or a multicast type; when the type of packet traffic is unicast type, selectively modifYing a priority of the traffic in response to a desti­nation parameter of a plurality of destination parameters including destination IP address, destination VLAN and egress port of the packet traffic; and when the type of packet traffic is multicast type, selectively modifYing the priority of the traffic in response to a source parameter of a plurality of source parameters including source IP address, source VLAN and ingress port of the packet traffic, and wherein modifYing includes automatically performing at least one of changing assignment of packet traffic from a queue having a first priority to a queue having a second priority, dropping packets in the packet traffic, copying packets in the packet traffic, and diverting packets in the packet traffic. 1. In a packet forwarding device, a method comprising: monitoring types of packet traffic received in the packet forwarding device; 11. The method of claim 10, wherein the environmental 40 conditions meeting the predetermined criteria include time of day. determining whether a type of packet traffic received in the packet forwarding device is a unicast type or a multicast type; when the type of packet traffic is unicast type, selectively 45 modifYing a priority of the traffic in response to a desti­nation parameter of a plurality of destination parameters including IP address, destination VLAN and egress port 12. The method of claim 10, wherein the environmental conditions meeting the predetermined criteria include net­work configuration changes. 13. The method of claim 12, wherein the network configu­ration changes include network failures. 14. The method of claim 12, wherein the network configu­ration changes include network congestion. of the packet traffic; and when the type of packet traffic is multicast type, selectively modifYing the priority of the traffic in response to a source parameter of a plurality of source parameters including IP address, source VLAN and ingress port of the packet traffic, 15. The method of claim 10, wherein the environmental 50 conditions meeting the predetermined criteria include net­work error rates. wherein selectively modifying the priority includes per- 55 forming at least one of changing assignment of the packet traffic from a queue having a first priority to a queue having a second priority, dropping packets of the packet traffic, copying packets of the packet traffic, and diverting packets of the predetermined type in the packet 60 traffic. 2. The method of claim 1, wherein the source parameter includes a source MAC address. 3. The method of claim 1, wherein the type of packet traffic is associated with its ingress port. 4. The method of claim 1, wherein the type of packet traffic is based on its destination. 65 16. The method of claim 10, wherein the environmental conditions meeting the predetermined criteria include line use of high level protocols. 17. In a packet forwarding device, a method comprising: monitoring traffic patterns of packet traffic received in the packet forwarding device; determining whether traffic patterns of packet traffic in the packet forwarding device meet predetermined criteria; and when the traffic patterns of packet traffic meet the prede­termined criteria, determining whether a type of packet traffic received in the packet forwarding device is a unicast type or a multicast type; when the type of packet traffic is unicast type, selectively modifYing a priority of the traffic in response to a desti­nation parameter of a plurality of destination parameters
  • 15. US 8,619,793 B2 13 including destination IP address, destination VLAN and egress port of the packet traffic; and when the type of packet traffic is multicast type, selectively modifYing the priority of the traffic in response to a source parameter of a plurality of source parameters 5 including source IP address, source VLAN and ingress port of the packet traffic, and wherein selectively modifYing includes automatically performing at least one of changing assignment of at least one type of packet traffic from a queue having a first priority to a 10 queue having a second priority, dropping packets in the packet traffic, copying packets in the packet traffic, and diverting packets in the packet traffic. 18. The method of claim 17, wherein at least some of the traffic patterns are based on specified source ports. 15 19. The method of claim 17, wherein at least some of the traffic patterns are based on specified destination ports. 20. The method of claim 17, wherein at least some of the traffic patterns are based on specified source MAC addresses. 21. The method of claim 17, wherein at least some of the 20 traffic patterns are based on specified IP flows. * * * * * 14