throbber
(12) United States Patent
`Tzeng
`
`(10) Patent N0.:
`(45) Date of Patent:
`
`US 6,438,135 B1
`Aug. 20, 2002
`
`US006438135B1
`
`6,157,654 A * 12/2000 Davis ....................... .. 370/412
`6,198,723 B1 *
`3/2001 Parruck et al.
`........ .. 370/230
`6,260,073 B1 *
`7/2001 VValker et al.
`370/412
`
`
`
`370/232
`.............. .. 370/230
`
`(54) DYNANIIC WEIGHTED ROUND ROBIN
`QUEUING
`
`(75)
`
`Inventor: Shrjie Tzeng’ Fremont, CA (US)
`
`6,317,416 B1 * 11/2001 Giroux et al.
`6,385,168 B1 *
`5/2002 Davis ct al.
`
`(73) Assignee: Advanced Micro Devices, Inc.,
`Sunnyvale, CA (US)
`
`*
`
`.t d b
`C1 e
`
`.
`y exammer
`
`(' * ) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`USC. 154(1)) by 0 days.
`
`Pri’WrY E""”’i’?er_KWang Bin Yao
`.
`Asslsmm Exammer—Prene1.l JOHCS
`(74) Attorney, Agent, or Ftrm—Renner, Otto, Boisselle &
`Sklar, LLP
`
`(21) Appl. No.2 09/422,591
`
`(57)
`
`ABSTRACT
`
`0915- 21: 1999
`(22) Filed:
`(51)
`Int. Cl? .............................................. .. H04L 12/28
`(59) U S C]
`370/412
`(58) Field of Search ............................... .. 370/412, 455,
`370/230-232, 392-104, 422-430, 911,
`389, 13, 360; 710/40-44, 72, 310, 455/525;
`709/249, 224
`
`(56)
`
`References Cited
`U.S. PATENT DOCUMENTS
`
`5,487,061 A *
`578709629 A *
`5,917,822 A
`5,926,459 A
`
`1/1996 Bray ......................... .. 370/'13
`2/1999 Borden et 81.
`370/412
`6/1999 Lyles et al.
`7/1999 Lyles et al.
`
`Amethod for transmitting a plurality of data packets through
`3 "e‘W°“<- Each data Pack“ is aSSig"ed *0 “"6 Of 3 P‘u”1“‘Y
`of priority queues and each priority queue has a service
`We1gh[' A pnomy Welght 15 asslgned [0 each of the data
`packets and each priority weight has a value. Data packets
`are delivered from one of the priority queues until a service
`satisfied condition is met. The service satisfied condition is
`met When a combination of the values of the priority Weights
`for each of the delivered datapackets is equal to or is greater
`than the service Weight assigned to the priority queue. A
`queuing switch for implementing this method is also dis-
`cussed. The queuing switch includes an incoming data
`k
`d
`1
`1.
`f
`.
`.
`pac et processor an
`a p ura ity 0 priority queues.
`
`15 Claims, 4 Drawing Sheets
`
`
`
`
`
`I
`
`Low Priority Queue
`(Service Weight
`2 —> 8)
`
`
`
`Normal/Low
`Ir - hlormal/Hig_h
`High Priority
`:
`Start
`: Queue (Service
`:
`I
`Priority Queue
`Priority Queue
`
`,
`Weight 16)
`_/Ir_12
`I (Service Weight 8) '
`(Service Weight 8)
`
`56 32 I
`4
`Packet 1
`:
`Packet 1
`I
`3
`
`Packet 2 /F
`{
`Packet 2
`2
`Packet 2
`
`1
`Packet 3 ‘
`I
`4
`Packet 3
`4
`Packet 4
`E
`7 packet 4
`2
`4
`Packet 5
`:
`4
`Packet 5
`4
`Packet 6
`i
`? Packet 6
`'
`I
`I 4
`‘3 n:
`3
`Packet 7
`L
`1
`Packet 7
`:
`CC
`I
`<: E
`4
`Packet 8
`4
`packet 3
`I
`I j T 8 D
`:
`4
`Packet 9
`i
`4
`Packet 10
`I
`I —I
`.
`I
`0
`I

`
`
`
`
`I
`
`
`
`I
`
`I
`
`I
`
`’
`
`|
`
`'
`1
`:
`1
`
`L
`
`3
`4
`
`Packet 9
`Packet 10
`O
`0
`0
`
`I
`
`,
`
`T _ _ _ _ _ _ _ _ _ _
`
`55
`

`Packet V
`
`1
`I
`— - ‘ ‘ ‘ “ ‘ ' ‘ — — —'
`
`1
`I
`
`Packet H
`
`'
`I
`
`Packet 2
`
`ERICSSON EXHIBIT 1005
`
`

`
`U.S. Patent
`
`Aug. 20, 2002
`
`Sheet 1 of4
`
`US 6,438,135 B1
`
`8
`
`
`
`oo_>mn_vcooww
`
`
`
`mm..mv_omn_E0930
`
`Bmmoooi
`
`N_\
`
`\IIIIIIIIIIIL
`
`_..0_n_
`
`
`
`>Eo_.n_5030..
`
`osmzd
`
`
`
`>Eo__n_mgm_nmE.mE_
`
`Awvwzmso
`
`
`
`>505.$._m_:
`
`mzmsd
`
`I-
`
`I I I
`
`/II
`
`
`
`umv_omn_mc_Eoo:_
`
`_ommmoo.n_
`
`E.
`
`
`
`mo_>wn_..m._u_
`
`
`
`
`
`
`
`
`
`

`
`U.S. Patent
`
`Aug. 20, 2002
`
`Sheet 2 of4
`
`US 6,438,135 B1
`
`N_.
`
`(\l
`
`_.mm
`,\om
`
`_.mv_omn_98
`
`
`
`Em_w>>EmEcm_mm<
`
`om
`
`N_\mmonN_\mm
`
`om
`
`:!'E\lN N
`Q§_om.n_$8
`mu®v_omn_Ema
`
`o§_omn_9.3I\_m>%.wUzMosxoma£8ESSmcmQmmcmaA!
`
`N.0_u_
`
`momN.‘mmom
`
`Nwmomw_‘
`
`_<Egan.EmaF:91__<BxomaEma
`
`88
`
`mmom
`
`
`
`

`
`U.S. Patent
`
`Aug. 20, 2002
`
`Sheet 3 of4
`
`US 6,438,135 B1
`
`mm
`
`9.
`
`
`
`E9258_amwEm
`
`
`
`E950mo_Ewm.
`
`
`
`wsmzd>Eo_._n_
`
`3
`
`EV
`
`Qmxomm
`
`/\ w_\
`
`wo_Zmw
`
`mw>
`
`:_
`
`$03030
`
`ozEm_m>>
`
`so:
`
`oz
`
`we
`
`am;
`
`ow
`
`caz9__2_;m
`
`
`
`@3030>Eo__n_
`
`¢.O_n_
`
`mm
`
`3
`
`omm>:®Q
`
`
`
`#9_omn_Ema03$-40
`
`M.0_n_
`
`
`
`_8_E§w5260
`
`co:m_.Eo.E_
`
`..mxomn_EGO_m>__wQ
`
`m>>>>o2mc_Eo8<
`
`
`
`
`
`
`
`

`
`U.S. Patent
`
`Aug. 20, 2002
`
`Sheet 4 of4
`
`US 6,438,135 B1
`
`__________________.________
`
`26303:0212,3
`
`7IIIIIIIIIIT
`
`___.____
`
`
`
`
`
`>Eo:n__8Em_m>>.8EmwV_mzmzo
`
`26._\_m::oz“
`
`._g_.=_m§oz
`
`
`
`msmso>Eo:n_
`
`
`
`3Em_m>>8_aomV
`
`E
`
`\,_____
`
`3A-NEm_m>>853
`
`v...mvW.uImn_I
`
`mEgan.
`
`N§_omn_
`
`w.\wv_omn_
`
`mE03
`
`COCS§_omn_
`
`_.........m.0_..._
`
`NEgan.
`
`V#mv_omn_
`
`m§_omn_
`
`HEI/V\G
`
`8|'lUI1UOQ
`
`mEOE
`
`mHmxoma
`
`
`
`0....wv_omn_
`
`VEOE
`
`N..wv_omn_
`
`m§_omn_
`
`TIIIIIIIIIII
`
`
`
` §Em_o>>"mo_>L_mwv96:0_tflm
`>Eo:n_:9:H
`
`
`
`
`
`
`
`
`
`
`
`
`

`
`US 6,438,135 B1
`
`1
`DYNAMIC WEIGHTED ROUND ROBIN
`QUEUING
`TECHNICAL FIELD
`
`The present invention generally relates to network com-
`munications a11d, more particularly,
`to a method for the
`prioritized delivery of data packets from a queuing switch.
`BACKGROUND ART
`
`There is an ever present demand for the efficient delivery
`of data packets over computer networks and communication
`ietworks to establish a variety of quality of service (QOS)
`objectives. One QOS objective is to deliver high priority
`data packets either before or more efliciently than normal
`and low priority data packets. To achieve this goal, packet
`raffic shaping techniques and prioritization schemes have
`Jeen developed.
`Transport layer switches, or layer 4 switches, are typically
`used to implement most prioritization schemes. One com-
`non prioritization scheme is round robin (RR) queuing. In
`ound robin queuing, a set of queues, or buffers, are estab-
`lished for temporarily holding data packets while the data
`jackets await delivery. As an example, [our queues may be
`established, including a high priority queue, a normal/high
`ariority queue, a normal/low priority queue and a low
`Jriority queue. Each data packet is assigned to one of the
`queues based on a predetermined algorithm. The switch
`delivers messages from the queues based on a round robin
`approach. The round robin approach entails delivering a
`aredetermined number of data packets from one of the
`queues, then delivering the same number of data packets
`from each of the other queues in descending order of priority
`3efore returning to the initial queue and repeating the
`arocess. Since the same number of packets are sent from
`each queue, the service ratio between queues is 1:1. This
`neans that the high priority queue may not be serviced
`enough to deliver all the high priority packets while meeting
`QOS expectations.
`Another common prioritization scheme is weighted round
`obin (WRR) queuing. Weighted round robin queuing uses
`he same basic structure as round robin queuing, but services
`he higher priority queues more frequently than the lower
`ariority queues. A common implementation of WRR is to
`send a greater number of data packets from the higher
`riority queues than are sent from the lower priority queues
`for each round through the priority queues. It is common to
`iave a service ratio between the high priority queue and the
`low priority queue of the foregoing round robin example to
`3e set to 4:1, meaning that four packets are sent from the
`iigh priority queue for each packet sent from the low
`ariority queue. However,
`in most actual data network
`environments, high priority data packets may constitute only
`about 20% of all data packets. The remaining 80% of the
`data packets have lower priorities. The result is that high
`ariority data packets in this example are serviced with a
`ariority which is effectively 16 times the priority of low
`ariority packets. As a result, the lower priority queues are not
`serviced enough and the lower priority data packets may
`experience significant delay before being delivered. This
`means that QOS expectations for the lower priority data
`Jackets are not met.
`
`Round robin and weighted round robin queuing schemes
`are usually implemented using hardware having a fixed
`rocedure for delivering packets. Therefore, round robin and
`weighted round robin techniques are not able to adapt to any
`one particular network to optimize the packet delivery
`efficiency of the network.
`
`2
`SUMMARY OF THE INVENTION
`
`The present invention provides a method for transmitting
`a plurality of data packets through a network. Each data
`packet is assigned to one of a plurality of priority queues and
`each priority queue has a service weight. A priority weight
`is assigned to each of the data packets and each priority
`weight has a value. Data packets are delivered from one of
`the priority queues until a service satisfied condition is met.
`The service satisfied condition is met when a combination of
`
`the values of the priority weights for each of the delivered
`data packets is equal to or is greater than the service weight
`assigned to the priority queue.
`In accordance with another aspect of the invention, a
`queuing switch is provided. The queuing switch includes an
`incoming data packet processor which derives a queue
`assignment and a priority weight for each of a plurality of
`incoming data packets. Each priority weight has a value. The
`queuing switch also includes a plurality of priority queues
`and each priority queue has a service weight. The incoming
`data packet processor directs each data packet to one of the
`priority queues based on the queue assignment for each data
`packet. Data packets are delivered from a first one of the
`priority queues until a service satisfied condition is met. The
`service satisfied condition is met when a combination of the
`
`values of the priority weights for each of the delivered data
`packets is equal to or is greater than the service weight
`assigned to the first priority queue.
`
`BRIEF DESCRIPTION OF DRAWINGS
`
`FIG. 1 is a block diagram of a queuing switch according
`to the present invention.
`FIG. 2 is a schematic representation of a data packet and
`associated equation identifier according to the present inven-
`tion.
`
`FIG. 3 is a data packet flow chart according to the present
`invention.
`
`FIG. 4 is a dynamic weighted round robin flow chart
`according to the present invention.
`FIG. 5 is a schematic representation of an example queue
`structure controlled by a dynamic weighted round robin
`queuing method according to the present invention.
`DISCLOSURE OF INVENTION
`
`Referring to FIG. 1, a block diagram of a queuing switch
`10 having a switch fabric for implementing a dynamic
`weighted round robin (DWRR) queuing method is illus-
`trated. The method and queuing switch 10 are directed to
`prioritizing data packets 12 for delivery and may be adapted
`for use in data, computer, telecommunication or multimedia
`networks, or in any other type of network where packets of
`data requiring prioritization are transmitted from a
`transmitting, or a first device 14, to a receiving, or a second
`device 16. As used herein,
`the term data packet 12 is
`intended to mean any packet, frame, message, or the like,
`that is transmitted through the network. The prioritization
`scheme discussed herein is adaptable to networks such as
`asynchronous transfer mode (ATM) networks and Ethernets.
`The queuing switch 10 is preferably part of a programmable
`hardware switch used to carry out data packet 12 transmis-
`sion. For example, the switch 10 could be used to implement
`the network layer of an open systems interconnect (OSI)
`protocol stack, or layer 3 switch such as a router, or a switch
`used to implement the OSI transport layer, or layer 4 switch.
`However, one skilled in the art will appreciate that the
`queuing switch 10 and method according to the invention
`
`10
`
`15
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`

`
`US 6,438,135 B1
`
`3
`can be implemented with other hardware devices or with
`software alone.
`
`The queuing switch 10 is provided with an incoming
`packet processor 18, a series of priority queues 20 and an
`outgoing packet processor 22. Generally,
`the incoming
`packet processor 18 receives data packets 12 that are sent
`from the first device 14 to the second device 16. The priority
`queues 20 range in priority from highest to lowest and are
`implemented with conventional software or hardware data
`packet buifers for temporarily storing data packets as they
`await delivery. The outgoing packet processor 22 sends data
`packets 12 from the priority queues 20 to the second device
`16. As one skilled in the art will appreciate, the queuing
`switch 10 may be a part of the first device 14 or located in
`a separate message transmitting device. Other higher or
`lower order data packet switching devices, such as routers or
`bridges, may used as needed. The queuing switch 10 is
`preferably also provided with a counter 24 for collecting
`statistical information regarding data packet 12 throughput
`and priority queue 20 usage, for one or more of the priority
`queues 20.
`With additional reference to FIG. 2, the incoming packet
`jrocessor 18 creates an equation identifier (EID) 26 for each
`incoming data packet 12. The EID does not become a part
`of the data packet, but is logically associated with the data
`Jacket. Alternatively, the EID can be appended to the data
`aacket as a header which is later stripped before transmis-
`sion by the outgoing packet processor 22. The EID for each
`data packet is derived from a combination of factors related
`0 the data packet (step 28 in FIG. 3). Example factors
`include the hardware device generating the data packet, the
`identity of the person using the hardware device generating
`he data packet, choices made by the person using the
`iardware device generating the data packet, the general type
`of information contained in the data packet, the specific
`content of the data packet, the destination device of the data
`aacket, and/or the destination person of the data packet. In
`an example embodiment, the EID is a six bit binary word
`which represents the end step solution, or equation result, to
`an EID derivation algorithm. The EID derivation algorithm
`accounts for the selected combination of factors. In this
`
`example, the six bit EID has sixty four possible values. In
`addition to one of these values, additional prioritization data
`can be associated with each data packet. For example, the
`network can use IEEE Std. 802.1Q for prioritization of
`Ethernet traflic where a three bit field allows each user to set
`
`up to eight user priorities for time-critical information.
`The EID 26 serves two functions. The functions are
`
`assigning each data packet to a priority queue 20, or queue
`assignment 30, and assigning a priority weight 32 to each
`packet. Accordingly, the EID is preferably a binary word of
`a predetermined number of bits. The EID is preferably two
`to eight bits long, but could be longer if needed. The upper
`bits of the EID, or a first segment of the EID, represents the
`priority queue assignment 30 and the lower bits of the EID,
`or a second segment of the EID, represents the priority
`weight 32. The priority weight is preferably an integer
`number. FIG. 2 illustrates a generic EID associated with a
`data packet and, as an example, FIG. 2 also illustrates a set
`of four data packets 12 each having a four bit EID, where the
`first two bits represent
`the queue assignment 30 for the
`associated data packet 12 and the last two bits represent the
`priority weight 32 for the associated data packet 12.
`With additional reference to FIG. 3, once the incoming
`packet processor has associated each incoming data packet
`with an EID, the data packet is sent to the priority queue
`matching the priority queue assignment (step 34). It is noted
`
`10
`
`15
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`4
`the EID for each data packet may alternatively be
`that
`generated before the data packet reaches the queuing switch
`10. In that event, the incoming packet processor 18 will not
`be responsible for generating the EID, but will only be
`responsible for reading the priority queue assignment and
`sending the data packet to the priority queue 20 matching the
`priority queue assignment. Once each data packet reaches its
`proper priority queue 20, it is buffered along with other data
`packets assigned to the same priority queue 20.
`With additional reference to FIG. 4, each priority queue
`20 is assigned a service weight (step 36). The service weight
`is preferably an integer number greater than zero. The value
`of the service weight for each priority queue 20 is prede-
`termined by either a default setting or by a network admin-
`istrator. As will be more fiilly described below, the service
`weight can be changed by the network administrator with
`the assistance of the statistical information collected by the
`counter 24. The service weight for each priority queue 20
`indirectly represents how many data packets should be sent
`from each priority queue 20 before the switch fabric of the
`queuing switch 20 begins sending data packets from the next
`priority queue 20. The service weight is preferably not a one
`for one count of how many data packets are sent from each
`priority queue 20 when the switch fabric services the cur-
`rently serviced priority queue 20. Rather, the service weight
`is satisfied when the sum of the priority weights 32 for each
`data packet 12 sent from the priority queue 20 being serviced
`is equal to or is greater than (i.e., meets or exceeds) the
`assigned integer number value of the service weight. As
`described herein, the priority weights 32 and the service
`weights 30 are numerical integers. However, one skilled in
`the art will appreciate that the values for the priority weights
`and the service weights can be any type of symbolic repre-
`sentation. As will be discussed in more detail below, the
`switch fabric will change which priority queue is being
`serviced when either the service weight is satisfied for the
`currently serviced queue or when there are no packets in the
`currently serviced queue.
`Generally, the switch fabric will service (i.e., deliver data
`packets 12, step 38) the priority queues 20 one after another
`(steps 40 and 42) and then return to the first serviced queue
`to repeat the process in dynamic weighted round robin
`queuing fashion to cyclically deliver data packets from each
`of the priority queues 20. Preferably, the highest priority
`queue is serviced first, followed by the other priority queues
`20 in descending order of priority. After the lowest priority
`queue is serviced, the queuing switch will again service the
`highest priority queue.
`The queuing switch 10 will change the priority queue 20
`being serviced when either of two service satisfied condi-
`tions is met. The first service satisfied condition is met when
`the service weight of the priority queue 20 being serviced is
`satisfied (step 44). This means that
`the number of data
`packets 12 sent from each priority queue 20 during one
`round of the dynamic weight round robin queuing method is
`dependent on the priority weight of the data packets l2 and
`the service weight of the priority queue 20. Therefore, on
`average, more data packets can be sent from a particular
`priority queue before the service weight is satisfied and the
`next queue is serviced if the average value of the priority
`weights sent through that priority queue is low. If the first
`service satisfied condition is met the switch will service the
`next priority queue to be serviced, step 42. If the service
`weight is not satisfied in step 44, the switch 10 will check
`whether the second service satisfied condition is met (step
`45). The second service satisfied condition is met when there
`are no data packets 12 awaiting delivery in the priority queue
`
`

`
`US 6,438,135 B1
`
`5
`20 being serviced. If there are no data packets waiting to be
`delivery in the queue being serviced, the switch 10 will
`service the next priority queue to be serviced, step 42. If
`there are data packets waiting to be delivered in the queue
`being serviced, the switch will deliver the next data packet
`(step 40).
`Each priority queue 20 preferably transmits data packets
`12 based on a first-in-first-out (FIFO) basis. IIowever, other
`queuing methods can be employed depending on network
`requirements. Example alternative queuing methods include
`last-in-first-out (LIFO) and highest-priority-first-out. If a
`highest-priority-first-out method is used, the data packets
`with the lowest priority weight value will be transmitted
`before data packets with a higher priority weight value.
`The outgoing data packet processor 22 manages the
`delivery of data packets 12 from each of the priority queues
`20 to the second device 16 or any intermediate transmission
`devices. The outgoing data packet processor 22 is tasked
`with keeping track of the sum of the priority weights for the
`data packets 12 delivered by the priority queue 20 being
`serviced and switching between priority queues 20, if either
`of the foregoing service satisfied conditions are met.
`Alternatively, the outgoing data packet processor 22 can be
`eliminated and either a queuing switch 10 controller or each
`individual priority queue 20 can be responsible for the tasks
`of the outgoing data packet processor 22.
`As indicated above, conventional RR and WRR switches
`deliver data packets based on a fixed algorithm which is
`programmed into the hardware and cannot be changed by a
`person or through software modifications. The present
`invention provides a switch 10 having changeable param-
`eters. More specifically, the service weights for each priority
`queue 20 and the EID for each data packet 12 is changeable
`to enhance performance of the queuing switch 10. These
`variables can be set depending on the nature of the network
`and can be adjusted in response to future changes in the
`network traffic pattern. The counter 24 collects statistical
`information to assist the network administrator in deciding
`what changes to make (step 46 in FIG. 3). These decisions
`include whether to raise, lower or keep the service weight
`for each priority queue 20 the same, whether to change
`which priority queue 20 certain data packets 12 are sent to,
`and whether to change the priority weight for certain data
`packets 12. Accordingly, the counter 24 tracks information
`such as how many data packets 12 of each priority weight
`are sent through each of the priority queues 20 and how long
`the data packets 12 Wait in the priority queues 20 before
`being delivered. This information, as recorded by the
`counter 24, can be polled by a host computer programmed
`with network management software and a GUI interface.
`The host computer presents the collected information in an
`organized format to the user, with or without programmed
`suggestions directed to enhancing performance of the queu-
`ing switch 10 or suggestions directed to establishing full
`utilization of all of the queuing switch 10 priority queues 20.
`The network administrator then can provide commands or
`information to the switch 10 to change or reconfigure the
`service weights of the priority queues 20 or the priority
`weights 32 of the data packets 12.
`
`EXAMPLE
`
`In order to further describe the dynamic weighted round
`robin method of the present
`invention,
`the following
`example is provided. Referring now to FIG. 5, an example
`queuing switch 10 is provided with four priority queues 20,
`including a high priority queue 48, a normal/high priority
`
`10
`
`15
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`queue 50, a normal/low priority queue 52 and a low priority
`queue 54. The high priority queue 48 is assigned a service
`weight of 16 and can store up to 11 number of packets, the
`normal/high priority queue 50 is assigned a service weight
`of 8 and can store up to x number of packets, the normal/low
`priority queue 52 is assigned a service weight of 8 and can
`store up to y number of packets and the low priority queue
`54 is assigned a service weight of two and can store up to z
`number of packets. In this example, each data packet 12 can
`have a priority weight of 1, 2, 3 or 4. For illustrative
`purposes, FIG. 5 shows each priority queue populated with
`a series of data packets 12. The high priority queue 48
`contains packets 1 through 10,
`the normal/high priority
`queue 50 contains packets 1 through 3,
`the normal/low
`priority queue 52 contains packets 1 through 5, and a low
`priority queue 54 contains packets 1 through 10. The priority
`weight portion of the EID for each of these data packets is
`shown next to the data packet in FIG. 5. For simplicity, the
`queue assignment portion of the EID for each data packet is
`omitted in FIG. 5.
`
`The switch fabric will start sending data packets from the
`high priority queue 48 (arrow 56). Data packets 1, 2, 3 and
`so forth will be sent until the sum of the values of the priority
`weight for each data packet sent is equal to or is greater than
`the service weight, thereby satisfying the first service satis-
`fied condition. In the example, the first five packets will be
`sent since the sum of the values of the priority weights for
`the first five data packets totals 16. Then the switching queue
`10 will start sending packets from the normal/high priority
`queue 50 (arrow 58). In the example, only three data packets
`are in the normal/high priority queue 50 and the sum of the
`packets’ priority weights does not exceed the service weight.
`However, after the three packets are sent the normal/high
`priority queue 50 will have no data packet entries and the
`second service satisfied condition will be met for the normal/
`high priority queue 50. Therefore, the three data packets will
`be sent and the queuing switch 10 will start sending packets
`from the normal/low priority queue 52 (arrow 60) until
`either the first service satisfied or the second service satisfied
`
`condition is met for the normal/low priority queue 52. In the
`example, the first two data packets in the normal/low priority
`queue 52 have priority weight values totaling seven, which
`does not meet or exceed the queues service weight. The
`third data packet has a priority weight value of four. The sum
`of the priority weight values of the first three data packets
`exceeds the queue’s service weight, thereby satisfying one
`of the service satisfied conditions for the normal/low priority
`queue 52.
`The switching fabric will then start to send data packets
`from the low priority queue 54 under the same operating
`procedure (arrow 62). Since the priority weight of the first
`data packet in the low priority queue 54 exceeds the service
`weight of that queue, the first service satisfied conditions is
`met for the low priority queue 54 and the switch fabric will
`return to servicing the high priority queue 48 (arrow 64). The
`foregoing dynamic weighted round robin procedure is the
`repeated (arrow 66). However, as illustrated, the low priority
`queue 54 will develop a backlog of data packets to send
`under such a low service weight. As the dynamic weighted
`round robin process continues, the counter 24 will collect
`information regarding the number of data packets 12 pro-
`cessed and how long the data packets 12 stayed in the
`priority queues 20 while awaiting delivery. The user admin-
`istrating the network can use this information to change the
`EID for selected types of data packets and adjust the service
`weight of the priority queues 20,
`thereby enhancing the
`performance and queue utilization of the queuing switch 10.
`
`

`
`US 6,438,135 B1
`
`7
`The switch 10 can also be programmed to alert the admin-
`istrator if data packets are not being delivered within a
`specified time. In addition, if the administrator is aware of a
`condition which may change network usage, such as the
`addition of a new network user or other network pattern
`change, then appropriate changes to the EIDs and service
`weights can also be made. With this in mind, if the backlog
`of data packets in the low priority queue 54 persists, the
`administrator can take counteractive actions. For example,
`the administrator can raise the service weight of the low
`priority queue 54 to a higher value, such as 8. The admin-
`istrator can also lower the priority weight of selected types
`of data packets being delivered through the low priority
`queue 54 and change the queue through which selected types
`of data packets are sent by modifying the queue assignment.
`Although particular embodiments of the invention have
`been described in detail, it is understood that the invention
`is not limited correspondingly in scope, but includes all
`changes, modifications and equivalents coming within the
`spirit and terms of the claims appended hereto.
`What is claimed is:
`
`1. A method of transmitting a plurality of data packets
`through a network, comprising the steps of:
`assigning each data packet to one of a plurality of priority
`queues, each priority queue having a numerical service
`weight;
`assigning a priority weight to each of the data packets,
`each priority weight having a numerical value; and
`servicing each of the priority queues in round robin order
`by delivering data packets from one of the priority
`queues and transitioning to deliver data packets from a
`subsequent priority queue in the round robin order
`when a service satisfied condition is met for the priority
`queue being serviced, the service satisfied condition
`being met when a combination of the numerical values
`of the priority weights for each of the data packets
`delivered from the priority queue being serviced is
`equal to or is greater than the numerical service weight
`assigned to the priority queue being serviced.
`2. The method of transmitting data pac<ets according to
`claim 1, further comprising the step of collecting statistical
`information regarding data packet througiput and priority
`queue usage.
`3. The method of transmitting data pac<ets according to
`claim 1, wherein the service satisfied cone ition is met if no
`data packets are currently assigned to the one of the priority
`queues.
`4. The method of transmitting data pac<ets according to
`claim 1, further comprising the step of chaiging the priority
`queue assignment of an incoming data packet.
`5. The method of transmitting data pacgets according to
`claim 1, further comprising the step of chaiging the priority
`weight of an incoming data packet.
`
`8
`6. The method of transmitting data packets according to
`claim 1, further comprising the step of changing the service
`weight of one of the priority queues.
`7. The method of transmitting data packets according to
`claim 1, wherein data packets are delivered from each queue
`on a first-in-first-out basis.
`
`8. A queuing switch, comprising:
`the incoming data
`an incoming data packet processor,
`packet processor deriving a queue assignment for each
`of a plurality of incoming data packets and assigning a
`numerical priority weight to each data packet;
`a plurality of priority queues, each priority queue having
`a numerical service weight, wherein the incoming data
`packet processor directs each data packet to one of the
`priority queues based on the queue assignment for each
`data packet; and
`the outgoing data
`an outgoing data packet processor,
`packet processor servicing each priority queue in round
`robin order by delivering data packets from each of the
`priority queues towards a receiving device, the outgo-
`ing data packet processor transitioning from one pri-
`ority queue to a subsequent priority queue in the round
`robin order when a service satisfied condition is met for
`
`the priority queue being serviced, the service satisfied
`condition being met when a combination of the numeri-
`cal values of the priority weights for each of the data
`packets delivered from the priority queue being ser-
`viced is equal to or is greater than the numerical service
`weight assigned to the priority queue being serviced.
`9. The queuing switch according to claim 8, wherein the
`outgoing data packet processor combines the priority
`weights of each of the sent data pac <ets.
`10. The queuing switch according to claim 8, further
`comprising a counter, the counter col ecting statistical infor-
`mation regarding data packet throughput and priority queue
`usage.
`11. The queuing switch according o claim 8, wherein the
`service satisfied condition is met i no data packets are
`currently assigned to the priority queue being serviced.
`12. The queuing switch according o claim 8, wherein the
`priority queue assignment of an incoming data packet is
`changeable.
`o claim 8, wherein the
`13. The queuing switch according
`priority weight of an incoming data packet is changeable.
`14. The queuing switch according o claim 8, wherein the
`service weight of each of the priority queues is changeable.
`15. The queuing switch according to claim 8, wherein data
`packets are delivered from each queue on a first-in-first-out
`basis.
`
`10
`
`15
`
`30
`
`35
`
`40
`
`45
`
`SO

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