throbber
(12) United States Patent
`Lu
`
`111111
`
`1111111111111111111111111111111111111111111111111111111111111
`US006480911Bl
`US 6,480,911 B1
`Nov. 12, 2002
`
`(10) Patent No.:
`(45) Date of Patent:
`
`(54) GROUPING CLASS SENSITIVE QUEUES
`
`(75)
`
`Inventor: Xiaolin Lu, Middletown, NJ (US)
`
`(73) Assignee: AT&T Corp., New York, NY (US)
`
`( *) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 0 days.
`
`(21) Appl. No.: 09/404,290
`
`(22) Filed:
`
`Sep. 23, 1999
`
`(51)
`
`Int. Cl? ......................... G06F 3/00; G06F 15/173;
`H04L 12/54
`(52) U.S. Cl. ......................... 710/54; 370/429; 370/329;
`709/240; 709/242; 710/52
`(58) Field of Search ................................. 370/329, 395,
`370/399, 429; 710/52, 54, 56; 709/240,
`227
`
`(56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`5,923,656 A * 7/1999 Duan et a!. ................. 370/395
`5,974,467 A * 10/1999 Haddock et a!. ............ 709/240
`6,072,800 A * 6/2000 Lee ............................ 370/412
`6,075,791 A * 6/2000 Chiussi eta!. .............. 370/412
`6,101,193 A * 8/2000 Ohba
`......................... 370/429
`6,205,150 B1 * 3/2001 Ruszczyk ................... 370/412
`6,219,351 B1 * 4/2001 Kilkki ........................ 370/412
`6,229,795 B1 * 5/2001 Pankaj eta!. ............... 370/329
`6,259,698 B1 * 7/2001 Shin eta!. .................. 370/395
`6,262,986 B1 * 7/2001 Oba et a!. ................... 370/399
`6,262,989 B1 * 7/2001 Gemar eta!. ............... 370/412
`6,295,295 B1 * 9/2001 Wicklund ................... 370/392
`
`6,304,906 B1 * 10/2001 Bhatti et a!. ................ 709/227
`6,317,416 B1 * 11/2001 Giroux eta!. .............. 370/232
`6,330,223 B1 * 12/2001 Shimonishi ................. 370/230
`
`FOREIGN PATENT DOCUMENTS
`403101443 A * 4/1991
`410191455 A * 7/1998
`411032050 A * 2/1999
`
`JP
`JP
`JP
`
`* cited by examiner
`
`Primary Examiner-Thomas Lee
`Assistant Examiner---Chun Cao
`(74) Attorney, Agent, or Firm---Oliff & Berridge, PLC
`
`(57)
`
`ABSTRACT
`
`This invention provides a class queuing system where data
`is placed in queues distinguished by class. The class queuing
`system distinguishes one class from another based on
`desired characteristics of a host process such as a network
`process. The class queuing system groups the class queues
`into groups based on output ports, for example. Each of the
`groups is separated into logical or physical multiple levels
`that extend from an input to an output. Input data is queued
`in a lowest level queue and the data is moved from level to
`level until the data is placed in an output queue and
`transferred via a respective output port. Data movement
`between levels of the class queues is controlled by weight
`sets where the weights of the weight sets are determined
`based on the desired characteristics that distinguish the
`classes. In this way, classes having greater bandwidth, for
`example, are moved through the class queues at a faster rate
`than classes having lower bandwidth specifications.
`
`12 Claims, 11 Drawing Sheets
`
`3002
`
`SOFT
`
`NO
`
`NO
`
`

`
`U.S. Patent
`
`Nov. 12, 2002
`
`Sheet 1 of 11
`
`US 6,480,911 B1
`
`108
`(
`END(cid:173)
`USER
`
`106
`
`END(cid:173)
`USER
`
`FIG. 1
`
`102
`
`NETWORK
`
`104
`
`END(cid:173)
`USER
`
`I
`
`100
`
`102
`
`202
`
`214,215
`
`208,
`209
`
`104
`
`END(cid:173)
`USER
`
`END(cid:173)
`USER
`
`108
`
`FIG. 2
`
`END(cid:173)
`USER
`
`106
`
`

`
`U.S. Patent
`
`Nov. 12, 2002
`
`Sheet 2 of 11
`
`US 6,480,911 B1
`
`r-209
`
`r--211
`
`r--213
`
`r-----215
`
`NETWORK
`UNIT
`
`...--_. 202
`
`208 ,.--..
`
`210--
`
`212--
`
`214--
`
`FIG. 3
`
`

`
`211
`
`314
`' I
`r OUTPUT- -,...----J._____,
`QUEUE
`
`338
`
`316
`--- 213
`' I
`r - ' - - - - - - - - - - -
`OUTPUT
`QUEUE
`
`r- 348
`
`328
`
`1
`
`d •
`\Jl
`•
`
`215
`
`,...----J'-----,
`
`358
`
`318
`' I
`r _, ___ _
`OUTPUT
`QUEUE
`
`:
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I I
`I I
`
`' I
`~ OUTPUT- ,----'~
`1 QUEUE
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`
`•
`
`c_ _____ f _____ _
`320 322 324 326
`
`330 332 334 336
`
`340 342 344 346
`
`_____ T ______ c_ _____ T _____ _
`
`350 352 354 356
`
`(
`310
`
`t
`
`SWITCH
`
`t
`
`INPUT
`QUEUE
`
`INPUT
`QUEUE
`
`INPUT
`QUEUE
`
`INPUT
`QUEUE
`
`(
`302
`
`(
`304
`
`(
`306
`
`(
`308
`
`r--208
`
`---210
`
`~212
`
`~214
`
`\
`
`202
`
`FIG. 4
`
`

`
`FIG. 5
`
`209-----
`
`328~ DESTINATION
`OUTPUT QUEUE
`
`442l MEDIUM I
`
`d •
`\Jl .
`
`LEVEL3
`
`LEVEL2
`
`LEVEL1
`
`416
`
`418
`
`420
`
`422
`
`424
`
`426
`
`428
`
`430
`
`432
`
`434
`
`436
`
`438
`
`DESTINATION
`INPUT QUEUE
`
`DESTINATION
`INPUT QUEUE
`
`DESTINATION
`INPUT QUEUE
`
`DESTINATION
`INPUT QUEUE
`
`LEVELO
`
`I
`320
`
`I
`322
`
`I
`324
`
`I
`326
`
`

`
`U.S. Patent
`
`Nov. 12, 2002
`
`Sheet 5 of 11
`
`US 6,480,911 B1
`
`a+1
`a+2
`a+3
`a+4
`a+5
`a+6
`a+?
`a+8
`a+9
`a+ 10
`a+ 11
`a+ 12
`a+ 13
`a+ 14
`a+ 15
`
`\
`I
`I
`I
`jl
`
`1\
`,--" 602
`l
`~
`~
`
`lJ
`R I
`
`I
`I
`I
`
`• • •
`
`LOW
`MEDIUM
`MEDIUM
`LOW
`LOW
`LOW
`HIGH
`LOW
`MEDIUM
`HIGH
`MEDIUM
`MEDIUM
`LOW
`HIGH
`LOW
`
`•
`•
`•
`
`a+m
`
`MEDIUM
`
`I
`
`600
`
`FIG. 6
`
`

`
`U.S. Patent
`
`Nov. 12, 2002
`
`Sheet 6 of 11
`
`US 6,480,911 B1
`
`622
`
`624
`
`IDENTIFICATION I LENGTH I •••
`CLASS I
`•••
`
`•
`•
`•
`
`CRC
`
`I
`
`•••
`
`I
`
`LINK
`
`DATA
`
`FIG. 7
`
`I
`
`620
`
`

`
`FIG. 8
`
`209~
`
`328--
`
`DESTINATION
`OUTPUT QUEUE
`
`452 -=CisECOND WEIGHT SET
`
`4448
`4428
`~i:]
`450 -li FIRST WEIGHT SET li- 450
`
`d •
`\Jl
`•
`
`LEVEL3
`
`LEVEL2
`
`LEVEL1
`
`416
`
`418
`
`420
`
`422
`
`424
`
`426
`
`428
`
`430
`
`432
`
`434
`
`436
`
`438
`
`DESTINATION
`INPUT QUEUE
`I
`320
`
`DESTINATION
`INPUT QUEUE
`
`DESTINATION
`INPUT QUEUE
`
`DESTINATION
`INPUT QUEUE
`
`LEVELO
`
`I
`322
`
`I
`324
`
`I
`326
`
`

`
`U.S. Patent
`
`Nov. 12, 2002
`
`Sheet 8 of 11
`
`US 6,480,911 B1
`
`504--- MEMORY
`
`502---- CONTROLLER
`
`(
`512
`
`NETWORK
`INTERFACE
`(
`506
`
`•••
`
`NETWORK
`INTERFACE
`(
`508
`
`DATABASE
`INTERFACE
`(
`510
`
`FIG. 9
`
`

`
`U.S. Patent
`
`Nov. 12, 2002
`
`Sheet 9 of 11
`
`US 6,480,911 B1
`
`START
`
`COLLECT SUBSCRIBER VOLUME DATA
`
`1000
`
`NO
`
`NO
`
`1002
`
`GENERATE NEW WEIGHTS
`AND THRESHOLDS
`
`1004
`
`APPLY NEW WEIGHTS
`AND THRESHOLDS
`
`1006
`
`1008
`
`YES
`
`END
`
`1010
`
`FIG. 10
`
`

`
`START
`
`NO
`
`2000
`
`PLACE IN DESTINATION
`INPUT QUEUE
`
`2004
`
`YES
`
`LINK NEXT PACKET IN
`DESTINATION INPUT QUEUE
`
`2008
`
`YES
`
`END
`
`2012
`
`NO
`
`FIG. 11
`
`d •
`\Jl
`•
`~
`~ ......
`=
`~
`......
`
`z
`0
`~
`'"""'
`~N
`N c c
`
`N
`
`'JJ. =-~
`~ .....
`c
`'"""'
`0 ......,
`'"""'
`'"""'
`
`e
`
`rJ'l
`0'1
`'l.
`00
`Q
`\o
`1--"
`1--"
`~
`1--"
`
`

`
`d •
`\Jl
`•
`
`NO
`
`3002
`
`YES
`
`END
`
`3008
`
`MOVE HEAD PACKET
`IN SELECTED QUEUE
`TO NEXT LEVEL
`
`3010
`
`HARD
`
`SOFT
`
`NO
`
`YES
`
`FIG. 12
`
`REQUEST WEIGHT
`AND THRESHOLD
`UPDATE
`
`3016
`
`

`
`US 6,480,911 Bl
`
`1
`GROUPING CLASS SENSITIVE QUEUES
`
`BACKGROUND OF THE INVENTION
`1. Field of Invention
`This invention relates to methods and apparatus for class
`sensitive queuing.
`2. Description of Related Art
`Data transmitted in a network is often placed in a serial
`queue for routing and forwarding. The order that the data is
`queued is irrespective of the subscribers' subscription rela(cid:173)
`tionship with the network service provider. Thus, there are
`no provisions in the network routing and forwarding pro(cid:173)
`cesses for making distinctions based on subscribers' sub-
`scription requirements. In fact, queuing techniques in gen(cid:173)
`eral do not address subscription related issues. Accordingly,
`new technology is needed.
`
`5
`
`10
`
`15
`
`2
`The class queuing system may use a weight based sched(cid:173)
`uling scheme to control transfer of data packets among
`queues. The weight sets may specify the data throughput for
`a queue during each cycle of the weight based scheduling so
`that appropriate transfer rates corresponding to the desired
`characteristics of each class may be achieved.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`The invention is described in detail with reference to the
`following figures, wherein like numerals reference like
`elements, and wherein:
`FIG. 1 is an exemplary diagram of a communication
`network;
`FIG. 2 is an exemplary diagram of the network in FIG. 1
`with further detail;
`FIG. 3 is an exemplary block diagram of a network unit;
`FIG. 4 is an exemplary queuing structure;
`FIG. 5 is an exemplary queue organization;
`FIG. 6 is an example of a destination input queue;
`FIG. 7 is an exemplary diagram for a data packet;
`FIG. 8 is an exemplary diagram showing control of data
`movement by first and second weight sets;
`FIG. 9 is an exemplary block diagram of a queue proces(cid:173)
`sor of the network unit that performs queue processing;
`FIG. 10 is an exemplary flowchart for a subscriber volume
`collection process of the queue processor;
`FIG. 11 shows an exemplary flowchart for a destination
`input queue process of the queue processor; and
`FIG. 12 is an exemplary flowchart for class queue process
`of the queue processor.
`
`DETAILED DESCRIPTION OF PREFERRED
`EMBODIMENTS
`
`This invention provides a class queuing system that
`processes data transmitted by a subscriber based on a class
`subscribed to by the subscriber. For example, in a network
`environment having high, medium, and low classes, each of
`the classes may be guaranteed a minimum bound relative to
`one or more network characteristics. The network charac(cid:173)
`teristics may be qualities such as transmission capacity
`expressed in terms of bandwidth (bw), quality of service
`such as video display quality, multimedia capability, or
`end-to-end transmission delay, for example. Based on a
`specific selection of class specification parameters, the
`resulting bandwidth/line quality/error rate, etc. may be
`determined and applied as appropriate.
`If network capacity serves as a class discriminator, a high
`capacity class may be guaranteed a bandwidth minimum
`bound of bw H so that data of high class subscribers may be
`transmitted through the network using a bandwidth of at
`least bw H· Correspondingly, data of medium class subscrib(cid:173)
`ers may be guaranteed transmission at a bandwidth of at
`least a bw M' and data of low class subscribers may be
`guaranteed data transmission at a bandwidth of at least bwL.
`Maximum bounds of bandwidth may also be applied so that
`each class may be bounded by both maximum and minimum
`bounds. For ease of description, only minimum bounds are
`discussed.
`The class queuing system may provide class
`independence, i.e., the volume of data in one class may be
`prevented from affecting the data transmission in other
`classes. For example, congestion in the low class may affect
`only low class throughput and quality. Medium and high
`class data transmissions may reach peak performances while
`
`30
`
`20
`
`25
`
`SUMMARY OF THE INVENTION
`This invention provides a class queuing system where
`data is placed in queues distinguished by class. The class
`queuing system distinguishes one class from another based
`on desired characteristics of a host process such as a network
`process. For example, in a network environment, the desired
`characteristics may be expressed in network parameters such
`as transmission capacity (bandwidth), transmission
`throughput, end-to-end delay, quality of transmission or
`error rate, for example. Classes may be distinguished from
`each other by specifying minimum bounds of the above
`parameters so that data transmission for each of the classes
`may be guaranteed performance above the specified mini(cid:173)
`mum bounds.
`The class queuing system establishes groups of class
`queues which may be implemented using a single or mul- 35
`tiple memories. Physical grouping of the class queues is not
`required because the complete class queuing system may be
`implemented via memory mapping, for example. However,
`for ease of visualization and discussion, related figures
`illustrate the group concept to show the functions of the 40
`invention.
`Each of the groups corresponds to one output port that is
`coupled to a network link. A group is separated into multiple
`levels (logical or physical) that extend from input ports to
`output ports. Again, physical levels are not required but 45
`illustrated in the related figures for clarity only. Input data is
`first queued in a lowest level queue, and then the data is
`moved from level to level until the data is placed in an output
`queue for transmission or output via one of the output ports.
`Data movement between levels of the class queues is 50
`controlled by a respective weight set where weights of the
`weight set are determined based on the desired characteris(cid:173)
`tics that distinguish the classes. In this way, data of classes
`requiring greater bandwidth, for example, is moved through
`the class queues at a faster rate than data of classes having 55
`lower bandwidth requirements.
`Each of the class queues may also be associated with
`buffer thresholds. The buffer thresholds specify a maximum
`size of a queue or a warning condition so that when an
`amount of data that is queued exceeds the buffer thresholds, 60
`either portions of the data may be dropped from the queue
`based on a data drop scheme or other queue management
`processes may be applied to adjust the queuing system. For
`example, the newest piece of data to be placed in the queue
`may be dropped or the weight set may be changed to account 65
`for the volume of data in the queue (e.g., by increasing queue
`throughput).
`
`

`
`US 6,480,911 Bl
`
`10
`
`15
`
`20
`
`3
`low class data transmission may experience transmission
`degradation. However, if desired, the class queuing system
`may take advantage of lower traffic conditions in one of the
`class queues to assist data transmission of another more
`congested class.
`The class queuing system may organize input queues into
`groups and a queue for each group may be separated into
`multiple levels (logical or physical). Data movement
`between queues at different levels of a group may be
`controlled based on weight sets.
`For example, for high, medium and low classes, the input
`queue for any network unit, such as a router, may be grouped
`according to output ports (e.g., a physical network connec(cid:173)
`tion to another network unit) and organized into logical or
`physical multiple levels. The queues may progress from a
`lowest level queue that receives data from data input sources
`and ending in one output queue per output port.
`A weight set may be assigned to queues at each level. The
`weight set regulates data movement from queues at one level
`to queues at a next level. In this way, data from different
`class subscribers may be controlled to partition a bandwidth
`of the output port to support the minimum bounds of the
`subscriber classes.
`In the following discussion, the classifications of high,
`medium, and low capacities are used as an example and two 25
`weight sets of capacity and subscriber volumes are described
`for supporting the three classes. Other types and numbers of
`weight sets based on different network parameters or char(cid:173)
`acteristics may also be used such as end-to-end delay, video
`quality, or error rate, for example.
`FIG. 1 shows an exemplary diagram of a communications
`system 100 that includes a network 102 and end-users
`104--108. The network 102 may be a telecommunication
`network, a data network or any of a variety of intra or
`internets that facilitates communication among end-users. 35
`The end-users 104-108 may be a terminal, a telephone
`station (wire or wireless) or other communication systems
`such as PBXs, for example.
`When end-users 104-108 desire to communicate, each of
`the end-users 104-108 sends communication signals 40
`through the network 102 in the form of data packets, for
`example. Data packets are not required but are convenient
`for discussion purposes. Each of the data packets are
`received by the network 102 and placed into queues await(cid:173)
`ing available network resources to complete the communi- 45
`cation.
`FIG. 2 shows an exemplary diagram of the network 102
`which includes network units 202-206. The network unit
`202 is coupled to the end-user 104 via communication links
`208 and 209; the end-user 108 via communication links 210
`and 211; network unit 204 via communication link 214 and
`215; and network unit 206 via communication links 212 and
`213. The communication links 208, 210, 212 and 214 are
`input into the network unit 202, and the communication
`links 209, 211, 213 and 215 are output from the network unit
`202. From the perspective of the network unit 202, data
`packets are received from the communication links 208,
`210, 212 and 214 and each of the received data packets is
`destined to one of the end-users 104 and 108 and the
`network units 204 and 206.
`As an example, the network unit 202 is illustrated in FIG.
`3, where the links 208, 210, 213 and 214 are input into the
`network unit 202, and the links 209, 211, 213 and 215 are
`output from the network unit 202. Data packets that are sent
`via the communication links 209, 211, 213 and 215 are
`destined for the end-users 104 and 108 and the network units
`204 and 206, respectively.
`
`4
`The network unit 202 places data packets received from
`the links 208, 210, 212 and 214 into input queues so that a
`switch, for example, within the network unit 202 may route
`each of the data packets to the proper destinations corre-
`5 sponding to the links 209, 211, 213 and 215. Each of the
`links 209, 211, 213 and 215 are provided with output queues
`that receive the data packets from the input queues for
`outputting to the respective end-users 104 and 108 and the
`network units 204 and 206.
`FIG. 4 shows an exemplary block diagram of the queues
`within the network unit 202. The input queues 302-308
`receives data packets from the links 208, 210, 212 and 214.
`A switch 310 receives data packets from the input queues
`302-308 and routes each of the data packets to one of output
`queues 312-318 corresponding to an appropriate destination
`of the data packet. While FIG. 4 shows the switch 310, there
`are many other known methods for routing the data packets
`from the input queues 302-308 to the output queues
`312-318. For example, a bus may couple the input queues
`and the output queues together and a controller may simply
`read the data packets from the input queues 302-308 and
`write them into the output queues 312-318.
`The class queuing system organizes each of the output
`queues 312-318 with destination input queues 320-356 and
`destination output queues 328-358. Each of the destination
`input queues 320-356 corresponds to one of the input
`queues 302-308. For example, the data packets that origi(cid:173)
`nated from the input queue 302 may be placed in one of the
`destination input queues 320, 330, 340 and 350; the data
`30 packets of the input queue 304 may be placed in one of the
`destination input queues 322, 332, 342 and 352; the data
`packets of the input queue 306 may be placed in one of the
`destination input queues 324, 334, 344 and 354; and the data
`packets of the input queue 308 may be placed in one of the
`destination input queues 326, 336, 346 and 356. The class
`queuing system moves the data packets in the destination
`input queues 320 -326 to the destination output queues 328
`based on network parameters such as the capacity for each
`class and the subscriber volume within each class.
`FIG. 5 shows a more detailed exemplary diagram of the
`output queue 312 that supports high, medium and low
`classes. FIG. 5 illustrates functions that may be implemented
`in many ways such as memory mapping, application specific
`integrated circuits (ASICs), computer programs, etc. The
`destination input queues 320-326 form level zero queues;
`initial class queues 416-438 form level one queues; final
`class queues 440--444 form level two queues; and the
`destination output queue 328 forms a level three queue. The
`data packets within each of the destination input queues
`50 320-326 may be organized into separate level one queues
`corresponding to each of the high, medium and low classes.
`The class queuing system moves data packets from the level
`one initial class queues 416-438 to the level two final class
`queues 440-444 based on a first weight set, and the data
`55 packets in the final class level two queues 440--444 into the
`destination output queue 328 based on a second weight set.
`The first and second weight sets may be determined using
`the capacity minimum bounds corresponding to each of the
`classes and the subscriber volumes of each of the classes, as
`60 described in detail below.
`Capacity may be one of the parameters that determines
`either the first or the second weight set. For example,
`capacity may be defined in terms of a kilobits per second
`(KBPS) unit. Assuming that high capacity subscribers have
`65 a minimum bound bandwidth of 128 KBPS, medium capac(cid:173)
`ity subscribers have a minimum bound bandwidth of 64
`KBPS, and low capacity subscribers have a minimum bound
`
`

`
`US 6,480,911 Bl
`
`5
`bandwidth of 8 KBPS, then capacity weights for high,
`medium, and low capacity classes may be in a ratio of
`128:64:8 or 16:8:1 when common factors are removed.
`Thus, the capacity weight for the high class is 16, for the
`medium class is 8 and for the low class is 1.
`The subscriber volume of each of the classes may be
`another parameter for determining the value of the first
`and/or second weight sets. If the subscriber volume nHr is
`the total high class data volume and the subscriber volume
`nH; is the high class data volume that are currently being
`received at the ith destination input queue where i=1, 2, 3
`and 4 for destination input queues 320, 322, 324 and 326,
`respectively, then a subscriber volume based weight for the
`high class may be nH;/nHr· Similarly, the medium and low
`class subscriber volume based weights may be nM;/nMr and
`nL;/nLr, respectively. Data packets may be transferred
`between the level one initial class queues 416-438 to the
`level two final class queues 440-444 and between the level
`two final class queues 440-444 to the level three destination
`output queue 328 based on the above definition of capacity
`and subscriber volume based weight sets.
`The subscriber volume may also be based on the number
`of subscribers of each class that are currently communicat(cid:173)
`ing. In this case, the subscriber volume nHr is the total
`number of high class subscribers that are currently commu(cid:173)
`nicating via the network unit 102 and the subscriber volume 25
`nH; is the total number of high class subscribers for the ith
`destination input queue. The subscriber volume may also be
`based on both the data volume and the number of subscribers
`for each class. For example, the subscriber volume may be
`the data volume divided by the number of subscribers for 30
`each class at a network unit 102 or for each of the destination
`input queues.
`The class queuing system may move data packets from
`the level 0 destination input queues 320-326 to the level 1
`initial class queues 416-438 by simply linking data packets 35
`within each of the destination input queues 320-326
`together in a chronological order (time of arrival) for each of
`the classes. FIG. 6 shows an example of a level 0 destination
`input queue 600 that has received data packets from all three
`high, medium and low classes, for example. The data 40
`packets at address a+1 was received before the data packet
`at address a+2. The data packets within the level 0 destina(cid:173)
`tion input queue 600 may be converted into level 1 initial
`class queues by linking data packets of respective classes
`together.
`For example, all the data packets of the low class may be
`linked together by placing a parameter in a header portion of
`each of the low class data packets indicating where the next
`(in time) low class data packet may be found. Such linking
`is indicated in FIG. 6 by the set of arrows 602 which links 50
`the low class data packet at a+1 with the low class data
`packet at a+4 which in turn links to the low class data packet
`at a+S and so on. If the medium and high class data packets
`are similarly linked, the destination input queue 600 would
`be separated into three initial class queues for high, medium 55
`and low classes.
`FIG. 7 shows an example of a data packet 620 that
`includes a header portion 622 and a data portion 624. The
`header portion 622 may include information relating to
`control and identification of the data packet 620 such as an 60
`identification field, a length field, a class field, a cyclical
`redundancy code (CRC) field and a link field. The class field
`may indicate the class of the data packet 620 and the link
`field may indicate the address of the next data packet of the
`same class. Thus, the data packets are linked together in the 65
`order of arrival at each of the destination input queues
`320--326.
`
`6
`Other methods may be used to move data packets from the
`level 0 destination input queues 320-326 to the level1 initial
`class queues 416-438. For example, all the data packets of
`the same class may be transferred to a dedicated area in a
`5 memory specifically allocated for data packets of that class.
`Thus, the above example is provided for illustration pur(cid:173)
`poses only and not intended to be limiting in any way.
`FIG. 8 shows that data packets from the initial class
`queues 416-438 may be moved into the final class queues
`10 440-444 based on the first weight set as indicated by arrow
`450 and data packets from the final class queues 440--444
`may be moved into the destination output queue 328 based
`on the second weight set as shown by arrow 452. Thus, the
`rate at which the data packets of each class move from the
`15 destination input queues 320-326 to the destination output
`queue 328 is based on a product of a weight of the first
`weight set times a weight of the second weight set.
`The first and second weight sets may control a data packet
`transfer process based on a specific data packet transfer
`20 technique such as a weight based scheduling technique. In
`this technique, each weight set may specify how often data
`packets from a queue is transferred to a next level queue.
`For a weight based scheduling scheme, head data packets
`from each of the initial class queues are transferred in
`sequence based on the weight set. A head data packet is a
`data packet that is waiting to be transferred ahead of all other
`data packets in a queue. After the head data packet is
`transferred, the next data packet (in time) in the queue
`becomes the head data packet and so on. In this way, the data
`packets in a queue is sequentially moved out of the queue.
`A weight based scheduling scheme may operate in cycles
`where for each cycle a number of data packets is selected for
`transfer based on the weights of the weight set. For example,
`assume that the first weight set is 4, 3, 2, 1 corresponding to
`high class initial class queues 420, 426, 432 and 438
`associated with destination input queues 320-326, respec(cid:173)
`tively. Then four data packets from the initial class queue
`420 is transferred to the high class final class queue 444 for
`three data packets from the initial class queue 426, two data
`packets from the initial class queue 432 and one data packet
`from the initial class queue 438.
`If the second weight set is: high class=S; medium class=2;
`and low class=1, then five data packets from the high class
`45 final class queue 444 is transferred to the destination output
`queue 328 for two data packets of the medium class final
`class queue 442 and for one data packet of the low class final
`queue 440. The data packet transfers corresponding to the
`second weight set are illustrated in Table 1 below where
`columns are labeled with the final class queues 440-444 and
`the rows are labeled in the first column by cycles and the
`second column by class.
`
`TABLE 1
`
`High
`444
`
`1-5
`
`9-13
`
`17-21
`
`25-29
`
`Medium
`442
`
`Low
`440
`
`6-7
`
`14-15
`
`22-23
`
`30-31
`
`8
`
`16
`
`24
`
`High
`Medium
`Low
`High
`Medium
`Low
`High
`Medium
`Low
`High
`Medium
`
`2
`
`3
`
`4
`
`

`
`US 6,480,911 Bl
`
`7
`
`TABLE 1-continued
`
`High
`444
`
`Medium
`442
`
`Low
`440
`
`32
`
`Low
`
`5
`
`8
`communication. For example, if the data packets represent
`digitized voice, it may be advantageous to drop data packets
`that are evenly spread across time. In such a case, when
`transferring a data packet that caused the total number of
`5 data packets of a queue to exceed the hard buffer threshold,
`a voice data packet of the same communication already
`stored in the final class queue may be dropped. However,
`such schemes may be too complex because it may be
`difficult to determine the relationship among data packets
`10 relative to a specific communication among parties, for
`example. Thus, if data packets arrive at a particular network
`unit 202-206 in a random manner, dropping either the latest
`transfer data packet or the head data packet may be the
`simplest procedure.
`Data packet dropping may be an indication that network
`resources need to be increased. The number of data packets
`dropped, the time at which data packet dropping occurs and
`the location where data packet dropping occurs may be
`flagged as data dropping occurs and later collected. By
`20 analyzing the above types of collected data, network
`improvements and expansion may be made to achieve high
`quality of service in a controlled manner with high efficiency
`and low cost.
`A soft buffer threshold is a buffer threshold that is less
`25 than a hard buffer threshold. When soft buffer thresholds are
`exceeded, the class queuing system is alerted to take some
`recovery action such as changing the weights to realign data
`throughput to adapt to current subscriber volume conditions
`of the different classes.
`As discussed above, a set of capacity weights may be
`related to a minimum bound bandwidth assigned to each
`class. For the example, the weight set may be 16:8:1
`corresponding to the high, medium and low classes. Weights
`that are determined based on subscriber volume (data
`35 volume/number of subscribers/combination of data volume
`and number of subscribers) are called subscriber weights
`and may be set based on current subscriber volume of a
`particular destination input queue 320-326 n; divided by a
`total current subscriber volume of a particular class nr. For
`40 example, the subscriber weight for high class subscribers
`may be expressed as nH;/nHr· Thus, the subscriber weights
`dynamically tracks the current usage or congestion of the
`network. Depending on how the first and second weight sets
`and the buffer thresholds are determined, all of these param-
`45 eters may be adapted to a specific congestion condition.
`Three examples for setting the first and second weight sets
`and the buffer thresholds are listed in Table 2 and described
`below.
`
`For the first cycle, five data packets numbered 1-5 are
`transferred from the high class final class queue 444; two
`data packets 6 and 7 are transferred from the medium class
`final class queue 442; and one data packet 8 is transferred
`from the low class final class queue 440. Table 1 shows that 15
`the queues of each class is selected in a circular fashion, as
`an example. Other selection schemes are also possible such
`as transferring all the data packets from one of the queues for
`each cycle, selecting the queue having the largest number of
`data packets, or more complex techniques of transferring
`data packets oldest in time first.
`In a second cycle, five data packets 9-13 are transferred
`from the high class final class queue 444; two data packets
`14 and 15 are transferred from the medium class final class
`queue 442; and one data packet 16 is transferred from the
`low class final class queue 440. In cycle 3 another five data
`packets 17-21 are transferred from the high class final class
`queue 444; two data packets 22 and 23 are transferred from
`medium class final class queue 442; and one data packet 24
`is transferred from the low class final class queue 440. 30
`Finally, in cycle 4, five data packets 25-26 are transferred
`from the high class final class queue 444; two data packets
`30 and 31 are transferred from the medium class final class
`queue 442; and one data packet 32 is transferred from the
`low class final class queue 440.
`As can be seen from Table 1, a number of data packets
`determined by the weight is transferred from a particular
`class queue in a circular manner for each cycle. In this way,
`the weights control the rate at which data packets are moved
`through each of the queues 444-440. Data is transferred
`through the high, medium and low class queues 420, 426,
`432, 438; 418, 424, 430, 436; and 416, 422, 428, 434
`independently of other class queues. Thus, congestion
`occurring in one of the class queues does not affect the
`throughput in other class queues.
`A similar process, as described above, may be applied

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket