throbber
(12) United States Patent
`Chandran et al.
`
`(10) Patent No.:
`(45) Date of Patent:
`
`US 7,392.279 B1
`Jun. 24, 2008
`
`US007392279B1
`
`(54) NETWORK TRAFFIC SHAPING USING
`TIME-BASED QUEUES
`
`(75) Inventors: Kartik S. Chandran, Sunnyvale, CA
`(US); Guenter Roeck, San Jose, CA
`S. Sunil Khaunte, Santa Clara, CA
`
`(73) Assignee: Cisco Technology, Inc., San Jose, CA
`(US)
`
`c
`
`- r
`
`(*) Notice:
`
`6,404.737 B1 * 6/2002 Novicket al. ............ 370,235.1
`6,438,134 B1* 8/2002 Chow et al. ................. 370,412
`6,526,062 B1* 2/2003 Milliken et al. ........ 370/395.42
`6,621,792 B1* 9/2003 Petty .........
`... 370,230.1
`6,724,767 B1 * 4/2004 Chong et al. ................ 370,412
`OTHER PUBLICATIONS
`R. Ladner, “CSE 326: Data Structures'. Spring 1998, Lecture
`Overheads: Lecture 19, Calendarqueues.
`Randy Brown, "Calendar Queues: A Fast 0(1) Priority Queue Imple
`mentation For the Simulation Even Set Problem', Oct. 1988. vol. 31,
`Communications of the ACM.
`LSI Logic Corporation, "LSI Logic's L64364 ATMizer II+ ATM
`SAR Chip Technical Manual” Chapter 7, Nov. 16, 1998.
`R. Ladner, “CSE 326: Data Structures'. Spring 1998, Lecture
`Overheads: Lecture 19, Calendardueues, month unknown.
`* cited by examiner
`Primary Examiner Dustin Nguyen
`(74) Attorney, Agent, or Firm Weaver Austin Villeneuve &
`Sampson LLP
`ABSTRACT
`(7)
`A time-based buffering system buffers databased upon how
`long the data should be held in order to comply with a traffic
`shaping policy. The data's source or destination need not be
`considered in determining where to buffer the data. The time
`based buffering system includes a collection of time-based
`queues, each of which has a different time to dequeue. The
`system controlling traffic shaping determines how long a
`particular piece of data should be buffered (a “traffic shaping
`delay') until it can be put on the network. Then, based upon
`that length of time, the system chooses one of the time-based
`of queues in which to buffer the data. That chosen queue has
`adequeuing time that matches the traffic shaping delay. After
`the chosen queue dequeues its contents (at the specified time),
`it assumes a new dequeing time and is free to buffer new data
`that must be delayed by a time matching the new dequeuing
`time.
`
`29 Claims, 11 Drawing Sheets
`
`tO E. distic th SMR tly
`Sibi
`pp ls.
`e 1 s d justed under
`M
`YW-
`(b) by
`ayS.
`(21) Appl. No.: 09/276.917
`ppl. No.:
`9
`Mar 26, 1999
`a 20.
`
`22) Filed:
`(22) File
`(51) Int. Cl.
`(2006.01)
`G06F 5/16
`(52) U.S. Cl. ..................... 709/200; 370/230.1; 370/235;
`370,365.4.370,412,719,314.78/102
`(58) Field of Classification Search ................. 717/153:
`370/412, 60,229, 230,395, 235, 429, 236.1,
`370/395 42. 709/240
`See application file for complete search history.
`References Cited
`
`(56)
`
`U.S. PATENT DOCUMENTS
`
`4,435,753
`5,231,633
`5,317,562
`5,463,620
`5,754,530
`5,838,915
`6,052.375
`6,104,700
`6, 195,333
`6,247,061
`6,259,699
`6,389,019
`
`A * 3/1984 RiZZi .......................... 364,200
`A * 7, 1993 Hluchy et al. .............. 370,429
`A
`5, 1994 Nardin et al.
`A * 10, 1995 Sriram ........................ 370/60
`A
`5, 1998 Awdeh et al. ............ 370,236.1
`A 11/1998 Klausmeier et al. .... 395/200.45
`A * 4/2000 Bass et al. .................. 370,412
`A
`8/2000 Haddocket al. ............ 370,235
`B1
`2/2001 Wise .......................... 370,235
`B1
`6, 2001 Douceur et al.
`B1* 7/2001 Opalka et al.
`B1
`5/2002 Fan et al. ............... 370,395.42
`
`201
`
`203
`
`RECEIWEWALUES OF TIME
`NCREMENTANDMAX
`SEAPNGDELAY
`
`--
`-205
`PROVIDETIMEBASE
`QUEUING STRUCTURE
`
`AWAITNEXTRACKET
`
`y
`RECEIVEPACKET FROM
`NETWORK
`
`211
`
`207
`
`209
`
`23
`ENQUEUE
`PACKETFOR
`TRANSMISSION
`
`LL TRAFFICRATE
`IMIT BEEXCEEE
`ly
`DETERMINE SEAPING
`DELAY
`
`DROP
`PACKET
`
`ARING DELAYS
`MAX. SHAPNG
`DELAY?
`
`
`
`25
`
`27
`
`ETERMINEBUCKETN
`TIME-BASED QUEUING
`STRUCTURE
`
`BUFFERRACKETAND
`DEQUEUETIMED-OUT
`BUCKETS
`
`22
`
`223
`
`GUEST TEK EXHIBIT 1005
`Guest Tek v. Nomadix, IPR2019-00253
`
`

`

`U.S. Patent
`
`Jun. 24, 2008
`
`Sheet 1 of 11
`
`US 7,392.279 B1
`
`12
`
`Packet
`
`10
`
`RATE
`Transmit -- -
`POLICER
`
`
`
`
`
`
`
`Buffer
`
`16
`
`20
`
`WAKE-UP
`PROCESS
`
`

`

`U.S. Patent
`
`Jun. 24, 2008
`
`Sheet 2 of 11
`
`US 7,392.279 B1
`
`201
`
`RECEIVE VALUES OF TIME
`INCREMENT AND MAX
`SHAPNG DELAY
`
`203
`
`
`
`PROVIDE TIME BASED
`QUEUING STRUCTURE
`
`205
`
`
`
`207
`
`AWAITNEXT PACKET
`
`RECEIVE PACKET FROM
`NETWORK
`
`WILL TRAFFIC RATE
`IMIT BE EXCEEDED2
`
`213
`
`ENQUEUE
`PACKET FOR
`TRANSMISSION
`
`DROP
`PACKET
`
`HAPNG DELAYS
`MAX. SHAPING
`DELAYP
`
`DETERMINE BUCKET IN
`TIME-BASED QUEUING
`STRUCTURE
`
`BUFFER PACKET AND
`DEQUEUE TIMED-OUT
`BUCKETS
`
`
`
`221
`
`223
`
`Figure 2
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`

`

`U.S. Patent
`
`Jun. 24, 2008
`
`Sheet 3 of 11
`
`US 7,392.279 B1
`
`223
`
`
`
`ARE THERE ANY
`BUCKETS THAT HAVE
`TIMED-OUT2
`
`302
`
`
`
`
`
`
`
`
`
`DEQUEUE PACKETS FROM
`ALL BUCKETS THAT HAVE
`TIMED-OUT
`
`304
`
`ENQUEUE PACKETS FROM 306
`BUCKETS FOR
`TRANSMISSION
`
`BUFFERPACKET IN TIME-
`BASED QUEUING
`STRUCTURE
`
`308
`
`Figure 3
`
`

`

`U.S. Patent
`
`Jun. 24, 2008
`
`Sheet 4 of 11
`
`US 7,392.279 B1
`
`40
`
`1.
`
`WAIT FORWAKE-UP
`PERIOD TO EXPIRE
`
`403
`
`RECEIVE WAKE-UP
`NOTIFICATION
`
`405
`
`DEQUEUE PACKETS FROM
`ALL BUCKETS THAT HAVE
`TIMED-OUT
`
`407
`
`ENQUEUE PACKETS FROM
`BUCKETS FOR
`TRANSMISSION
`
`409
`
`Figure 4
`
`
`
`
`
`
`
`

`

`U.S. Patent
`U.S. Patent
`
`Jun. 24, 2008
`Jun.24,2008
`
`Sheet 5 of 11
`Sheet50f11
`
`US 7,392.279 B1
`US 7,392,279 B1
`
`
`
`028?:
`mmoHSwE
`
`
`
`
`
`
`
`
`
`
`
`
`

`

`U.S. Patent
`US. Patent
`
`Jun. 24, 2008
`Jun. 24, 2008
`
`Sheet 6 of 11
`Sheet 6 of 11
`
`US 7,392.279 B1
`US 7,392,279 B1
`
`
`
`540
`
`S
`542
`
`544
`
`i
`548
`
`i
`546
`
`Figure5B
`
`

`

`U.S. Patent
`
`Jun. 24, 2008
`
`Sheet 7 of 11
`
`US 7,392.279 B1
`
`601
`
`RECEIVE VALUES OF TIME
`INCREMENT AND MAX
`SHAPING DELAY
`
`603
`
`PROVIDE TIME BASED
`QUEUING STRUCTURE
`
`605
`
`607
`
`AWAIT NEXT BANDWIDTH
`REQUEST
`
`RECEIVE A BAND WIDTH
`REQUEST FROM A MODEM
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Y
`
`613
`
`SCHEDULE A
`GRANT FOR THE
`BANDWIDTH
`REQUEST
`
`
`
`
`
`
`DETERMINE SHAPING
`DELAY FOR GRANT
`
`615
`
`617
`
`DROP
`BANDWIDTH
`REQUEST
`
`
`
`HAPING DELAYS
`MAX. SHAPING
`DELAY?
`
`
`
`
`
`DETERMINE BUCKET IN
`TIME-BASED QUEUING
`STRUCTURE
`
`BUFFER GRANT AND
`DEQUEUE TIMED-OUT
`BUCKETS
`
`62
`
`623
`
`Figure 6
`
`

`

`U.S. Patent
`
`Jun. 24, 2008
`
`Sheet 8 of 11
`
`US 7,392.279 B1
`
`623
`
`ARE THERE ANY
`BUCKETS THAT HAVE
`TIMED-OUT2
`
`702
`
`DEQUEUE GRANTS FROM
`ALL BUCKETS THAT HAVE
`TIMED-OUT
`
`704
`
`SCHEDULE TIMESLOTS FOR 706
`DEQUEUED GRANTS
`
`
`
`
`
`
`
`BUFFER GRANT IN
`SELECTED BUCKET OF
`TIME-BASED QUEUING
`STRUCTURE
`
`708
`
`
`
`N / WAS BUCKETEMPTY
`PRIOR TO ENOUEUING?
`
`
`
`710
`
`CHAIN SELECTED
`BUFFER IN LIST OF
`PENDING BUCKETS
`
`
`
`712
`
`
`
`
`
`
`
`
`
`
`
`Figure 7
`
`

`

`U.S. Patent
`
`Jun. 24, 2008
`
`Sheet 9 of 11
`
`US 7,392.279 B1
`
`801
`
`803
`
`805
`
`807
`
`WAIT FOR MAP
`INTERRUPT
`
`RECEIVE MAP INTERRUPT
`
`
`
`INSERT GRANTS IN MAP
`
`IS PENDING BUCKET LIS
`EMPTY?
`
`DEQUEUE GRANTS FROM
`BUCKETS THAT HAVE
`TIMED-OUT
`
`811
`
`SCHEDULE TIMESLOTS FOR
`DEQUEUED GRANTS
`
`PUT PENDING GRANTS FOR
`PENDING BUCKETS IN MAP
`
`815
`
`817
`
`Figure 8
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`

`

`U.S. Patent
`
`11f001teehS
`
`US 7,392,279 B1
`
`EmaJEwobmqgofl
`n...BEEESHx8332uEEm831602
`
`
`
`
`3mWEmHmOOQmHmUOQ
`
`com3m9%
`
`
`
`
`
`
`Na03M«auwmTtilanAI8waE3993IYWAH995032VM5th€9,302
`
`
`........................................................................................................................................................................................
`
`
`
`
`
`0088:33momWAOMHZOO2,mmmoo<Mmom
`
`43sz8&wa
`
`SESUQEQ
`
`HoZoowmwas
`
`
`
`
`
`
`
`
`
`5mm
`
`I.—
`
`3
`
`
`
`
`
`

`

`U.S. Patent
`
`Jun. 24, 2008
`
`Sheet 11 of 11
`
`US 7,392.279 B1
`
`1010
`\ 1068
`
`
`
`INTERFAES
`
`Figure 10
`
`

`

`US 7,392.279 B1
`
`1.
`NETWORK TRAFFIC SHAPING USING
`TIME-BASED QUEUES
`
`BACKGROUND OF THE INVENTION
`
`10
`
`15
`
`25
`
`30
`
`This invention relates to systems and methods for control
`ling traffic to particular destinations (“data flows') on a net
`work. The invention accomplishes this using a time-based
`queuing system comprising a series of queues, each of which
`buffers packets for a defined length of time.
`Traffic shaping involves limiting the rate at which data is
`transmitted to particular locations on a network (e.g., to net
`work interfaces or network destinations). This may be
`employed to prevent congestion on a particular network seg
`ment or to limit a network entity to the amount of bandwidth
`that it has paid for. A network employs a “policing algorithm
`to determine when traffic to or from a particular network user
`should be limited.
`If a policing algorithm determines that the network inter
`face is at a maximum usage rate, it may limit the flow of
`network traffic accordingly. Typically, traffic flow is limited
`by simply discarding or dropping packets to or from a net
`work interface. This means that the discarded packets must be
`retransmitted at a later time when the network flow is not at
`the maximum level allowed by the policing algorithm.
`Administration of the retransmissions is handled by TCP or
`other relatively high level network protocol. Putting this bur
`den on TCP often places too much responsibility on the
`protocol (which plays many other roles in administering net
`work traffic) and thereby greatly reduces the network perfor
`mance. This may be manifest by short periods of very bursty
`traffic followed by extended quiet periods.
`One potential solution to this difficulty employs separate
`queues for each individual interface or destination that
`requires flow control. Unfortunately, this solution does not
`scale well for systems having many destinations. Each new
`network destination requires a new and separate queue. And
`each new separate queue requires its own additional memory
`and its own additional CPU resources (overhead to identify
`the appropriate queue, etc.). If a system needs to service 5000
`destinations, then it also needs to provide and service 5000
`distinct queues.
`What is needed, therefore, is an improved technique for
`traffic shaping on a per-destination basis. The technique
`should not unnecessarily discard packets when a maximum
`45
`flow rate is exceeded and should not rely on a single queue for
`each destination under consideration.
`
`35
`
`40
`
`SUMMARY OF THE INVENTION
`
`The present invention provides a time-based buffering sys
`tem that buffers network data (e.g., packets) based upon how
`long the data should be held in order to comply with a traffic
`shaping policy. The data's source or destination need not be
`considered—although it can be in determining how and
`where to buffer the data. Typically the time-based buffering
`system includes a collection of time-based queues (some
`times referred to as “buckets'), each of which is scheduled for
`a different time to dequeue. The system controlling traffic
`shaping may determine how long a particular piece of data
`should be buffered (a “traffic shaping delay') until it can be
`put on the network. Then, based upon that length of time, the
`system chooses one of the time-based queues in which to
`buffer the data. That chosen queue has a dequeuing time that
`matches the traffic shaping delay. Queue identifications may
`be recycled, so that after a chosen queue dequeues its contents
`(at the specified time), it is rescheduled for a new dequeing
`
`50
`
`55
`
`60
`
`65
`
`2
`time. It is then available to buffer new data that must be
`delayed by a time matching the new dequeuing time. Prefer
`ably, a given time-based queue can simultaneously buffer
`data associated with different nodes. Preferably, it can also
`buffer network data packets of varying sizes.
`One aspect of the invention relates to a method of control
`ling data flow through a network. The method may be char
`acterized by the following sequence: (1) determining that
`transmitting additional data to or from a particular network
`node will or will likely exceed a maximum allowed data flow
`for the network node; (2) selecting one of a group of time
`based queues; and (3) buffering the additional data in the
`selected time-based queue. Together, the time-based queues
`define a period of time. Each time-based queue defines a
`separate increment of time within the time period, and each
`time-based queue is set to dequeue its contents at a separate
`time. For example, a group of three time-based queues may
`each have 40 millisecond increments of time. Together they
`may define a period of time of 120 milliseconds. Initially, a
`first of these queues may be set to dequeue in 40 milliseconds,
`a second to dequeue in 80 milliseconds, and a third to dequeue
`in 120 milliseconds. At 40 milliseconds, the first queue
`dequeues its contents and it may be set with a new dequeue
`time of 120 milliseconds. At that time, the second queue's
`time to dequeue is 40 milliseconds and the third queue's time
`to dequeue is 80 milliseconds in the future.
`In a specific embodiment, the increments of time defined
`by the time-based queues are each between about 1 and 50
`milliseconds, and the total period of time defined by the group
`of time-based queues is between about 100 and 500 millisec
`onds.
`Typically, the system will have to calculate a time to trans
`mit the additional data (the traffic shaping delay). This calcu
`lation may be based upon traffic shaping criteria Such as those
`provided in a conventional policing algorithm. It can involve,
`for example, calculating an amount of network capacity that
`would be used by the network node if the additional data were
`to be transmitted. After calculating the traffic shaping delay
`for the additional data, the system selects the time-based
`queue having a time to dequeue that matches the calculated
`traffic shaping delay. Then, when that queue dequeues the
`additional data, the network can transmit that data without
`exceeding the maximum allowed data flow for the network.
`Note that if the system determines that transmitting the
`additional data under consideration will not exceed the maxi
`mum allowed data flow for the associated network node, it
`may transmit that data without buffering. In this case, the
`system need not use the time-based queues. At the other
`extreme, the system may determine that the traffic shaping
`delay is so long that the new data should be discarded without
`buffering in the time-based queues. In that case, as well, the
`system will not need to use the time-based queues. Typically,
`this will occur when the traffic shaping delay is greater than a
`maximum shaping delay (e.g., the total period of time defined
`by the group of individual time-based queues (e.g., 120 mil
`liseconds in the above example)).
`In the discussion so far, the system has considered the
`effect of transmitting actual network data (e.g., packets) that
`it has received. There are other situations that may employ the
`time-based buffering of this invention. One notable example
`involves allocating 'grants to transmit additional data in
`networks such as cable modem plants. The system may buffer
`these grants to transmit in time-based queues in the same
`manner that it buffers simple data. When the time-based
`queue dequeues its grant(s) to transmit, the node receiving the
`
`

`

`3
`grant may transmit actual data at the time specified by the
`grant. That time should conform to the system's traffic shap
`ing criteria.
`Another aspect of the invention provides a computer pro
`gram product having program instructions stored on a
`machine-readable medium (e.g., memory in a router or other
`network device or a separate and portable CD-ROM). The
`program instructions may specify one or more of the method
`sequences described above.
`Another aspect of the invention provides an apparatus for
`controlling data flow through a network. The apparatus may
`be characterized by the following features: (1) one or more
`processors; (2) memory coupled to at least one of the one or
`more processors; (3) and a plurality of time-based queues, as
`described above, logically configured on the memory. The
`processors are configured or designed to direct (i) data or (ii)
`grants to transmit data to particular time-based queues based
`upon the requirements of a network traffic shaping policy
`prescribed for the data or grants to transmit the data. Prefer
`ably the apparatus is a router or a Switch. It may be a cable
`modem termination system.
`The one or more processors may have additional roles. For
`example, they may determine the network traffic shaping
`delay required for the data or grant to transmit data. And,
`based upon the delay, the one or more processors may discard
`data or a request to grant transmission of data if the delay is
`greater than the maximum traffic shaping delay (e.g., the
`period of time defined by the plurality of time-based queues).
`Further, the one or more processors can be configured or
`designed to transmit, without buffering in a time-based
`queue, the data or grants to transmit data if there is no network
`traffic shaping delay.
`As Suggested above, a processor (or the apparatus gener
`ally) may direct network packets of varying sizes to the time
`based queues. Still further, a single time-based queue may
`simultaneously buffer data or grants to transmit data from or
`to different network nodes. In other words, the time-based
`queue is not dedicated to a particular network node. This
`overcomes the above-described difficulties associated with
`destination-based queuing for traffic shaping.
`These and other features and advantages of the present
`invention will be described below with reference to the asso
`ciated drawings.
`
`10
`
`15
`
`25
`
`30
`
`35
`
`40
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`45
`
`FIG. 1 is a block diagram illustrating the logical elements
`of a time-based queuing system implemented on a network
`device or devices, in accordance with an embodiment of this
`invention.
`FIG. 2 is a process flow diagram illustrating a method of
`implementing the time-based queuing system of this inven
`tion for downstream transmission of data items.
`FIG. 3 is a process flow diagram illustrating how the data
`items handled by the method of FIG.2 may be enqueued.
`FIG. 4 is a process flow diagram depicting an interrupt
`based method for dequeuing data items from a collection of
`time-based queues.
`FIG. 5A is a schematic illustration of a cable modem plant
`that may be used with the present invention.
`FIG. 5B is a block diagram depicting the structure of a
`MAP message suitable for use with the present invention.
`FIG. 6 is a process flow diagram depicting a time-based
`queuing method of this invention as applied to granting band
`width requests to cable modems or other network entities.
`
`50
`
`55
`
`60
`
`65
`
`US 7,392.279 B1
`
`4
`FIG. 7 is a process flow diagram depicting a method for
`enqueuing bandwidth requests handled in accordance with
`the method depicted in FIG. 6.
`FIG. 8 is a process flow diagram depicting a MAP-interrupt
`method for dequeuing bandwidth grants in accordance with
`one embodiment of this invention.
`FIG. 9 is a block diagram of a cable modem termination
`system that may be employed to implement the present inven
`tion.
`FIG. 10 is a block diagram of a router that may be used in
`conjunction with the methods of the present invention.
`
`DETAILED DESCRIPTION OF THE PREFERRED
`EMBODIMENTS
`
`As mentioned, this invention pertains to buffering data in
`time-based queues. A time-based queue is a queue that
`dequeues its contents (i.e., items that it is buffering) at Sched
`uled times. In most embodiments described herein, a time
`based queue will dequeue all of its contents at the scheduled
`time. However, there may be alternative embodiments in
`which it is desirable to dequeue only a portion of a time-based
`queue's buffered data. A time-based queue will typically be
`implemented with a plurality of like queues concatenated in
`time. The first of these queues may dequeue after a particular
`increment of time has elapsed. Thereafter, after that same
`increment of time has elapsed a second time, the second
`time-based queue dequeues its contents. Then, after yet
`another such increment of time elapses, a third queue
`dequeues its contents and so on. In this manner, every so many
`milliseconds, one of the time-based queues dequeues its con
`tentS.
`This approach to queueing network data is very easy to
`implement and scales very well with additional destinations.
`The network interface or other system managing the time
`based queues need only keep track of the increment of
`dequeuing time associated with the concatenated time-based
`queues. It need not keep track of the data destinations.
`Time-Based Queuing Systems
`One approach to time-based queuing of network data is
`depicted in FIG.1. As shown there, a network interface 10 or
`other network entity initially receives a packet 12. Possibly,
`interface 10 connects a local network (e.g., a LAN or cable
`plant) to an outside network. Packet 12 may have arrived from
`either a local node interior to the interface or a source exterior
`to the interface (e.g., an Internet source).
`Interface 10 must control traffic to or from particular net
`work nodes for which it is responsible. Those nodes may have
`limitations in (1) the rate that they can send traffic over a
`network, (2) the rate that they can receive traffic from the
`network, or (3) the total rate that they can send and receive
`traffic over the network. Thus, interface may have to shape
`traffic addressed to a particular network node and/or shape
`traffic sent by that node.
`Within interface 10, packet 12 is considered by a policing
`block (or policer) 14, which implements a policing algorithm.
`That may be implemented as hardware, firmware, or software
`executed on one or more processors. Policing block 14 deter
`mines whether the packet should be transmitted, dropped, or
`buffered in a time-based queue. Policing block 14 imple
`ments a policing policy specifying the criteria for transmit
`ting, dropping and buffering. Many Such policing algorithms
`may be employed. Examples include “token bucket' and
`“leaky bucket' algorithms.
`In one example, block 14 first determines whether the
`packet destination (or Source) has exceeded an allowed
`amount of traffic on the network. If not, block 14 transmits
`
`

`

`US 7,392.279 B1
`
`5
`packet 12 to its destination. If, on the other hand, the amount
`of traffic allowed to the destination or source has been
`exceeded, block 14 must determine whether to drop or buffer
`packet 12. The details of this procedure will be explained
`below. If the packet is dropped, a high level service such as
`TCP must recognize this and retransmit packet 12 at a later
`time.
`Assuming that block 14 determines that packet 12 should
`be buffered, it passes that packet to a traffic-shaping block 16.
`That block then determines where to buffer packet 12. It will
`buffer the packet in one of the time-based queues comprising
`a time-based queuing structure 18. Note that the individual
`time-based queues in structure 18 are sometimes referred to
`herein as “buckets. Each queue is a chain of buffers—each
`buffer is a queue element. The data (packet 12) is actually
`stored in a buffer.
`At any given time, queuing structure 18 may have its time
`based queues populated with a variety of different packets
`having different sources and different destinations. These
`packets may also vary widely in size. Every few milliseconds,
`one of the time-based queues dequeues its contents. In the
`example depicted, time-based queue B is currently dequeu
`ing its contents 22. These contents are then forwarded to their
`respective destinations on the network. In the embodiment
`shown, a wake-up process 20 instructs structure 18 to
`dequeue the contents of the next scheduled bucket. It does so
`every time that the specified increment of time elapses. This is
`the increment of time associated with each time-based queue
`(bucket).
`Note that whenever interface 10 allows packets to be trans
`mitted (whether by having rate policer 14 determine that no
`traffic shaping delay is appropriate or by having structure 18
`dequeue a bucket), appropriate packets are provided to the
`destination network. When on the network, these packets find
`their way to the intended destination by whatever mechanism
`the destination network uses (e.g., broadcast or multicast).
`As mentioned, rate policer 14 must determine whether to
`transmit, drop, or buffer packet 12. It may accomplish this in
`two steps. First, it determines whether the policy for the
`destination would be breached by immediately transmitting
`the packet. For example, a destination may be allotted a
`bandwidth of 1 megabits per second but only be currently
`using 512 kilobits per second. Because the destination is
`using less than its allotted bandwidth (a maximum allowed
`data flow), rate policer 14 will typically determine that that
`packet should be transmitted without delay.
`If, however, immediate transmission of the packet would
`violate a policy implemented on policer 14, it cannot transmit
`the packet. It must then determine whether to drop or buffer
`the packet. Typically, this is accomplished by first calculating
`a traffic shaping delay required before the packet can be
`transmitted without violating the policy. If that delay is
`greater than Some "maximum shaping delay' such as 500
`milliseconds, block 14 will drop the packet. Often this maxi
`mum shaping delay corresponds to the aggregate length of
`time for all time-based queues in structure 18. This size is
`sometimes referred to as the “period of time' for all the
`time-based queues in structure 18.
`Assuming that the traffic shaping delay is less than the
`maximum shaping delay, block 14 forwards the packet to
`traffic shaper 16. It is now the job of traffic shaper 16 to
`determine which of the buckets of structure 18 should be used
`to buffer the packet under consideration. It may accomplish
`this by finding a bucket that is scheduled to dequeue its
`contents at or near the time when the calculated traffic shap
`
`40
`
`45
`
`6
`ing delay is up. Typically, it will choose the first bucket
`scheduled to dequeue its contents after the traffic shaping
`delay has passed.
`The specific functional blocks presented herein such as
`policer block 14 and traffic shaper block 16 may be blocks of
`program code that, when executed, perform the functions
`ascribed to them. Thus, these functional blocks typically
`require the concerted action of one or more processors,
`memory, and program instructions that selectively configure
`processor(s) and memory. Of course, any of these functional
`blocks may be provided, in whole or in part, on hardware
`specially designed to perform at least some part of the
`described functions.
`In a preferred embodiment, time-based queuing structure
`18 is designed or configured with two parameters: a bucket
`width or “time increment, b and a maximum shaping delay
`or “period of time' M*b. M is the number of buckets in
`structure 18. The choice of a particular bucket within struc
`ture 18 in which to buffer a given packet may be identified by
`the following expression.
`B = B+(d(i); b) Mod M.
`In this expression, B is the bucket identified for buffering
`the current packet (e.g., bucket B). It may be any one of the
`buckets within time-based queuing structure 18 (e.g., Bo. B
`... B.
`). B
`is the next bucket in structure 18 currently
`scheduled for dequeuing. The parameter d(i) is the traffic
`shaping delay calculated for the current packet in traffic flow
`i. Thus the value d(i)/b restates the traffic shaping delay in
`terms of the number buckets that must be dequeued before the
`packet can be transmitted. That is, d(i)/b identifies how many
`buckets in advance of the current bucket that the packet must
`be enqueued. Of course, simply Summing B
`with the
`number of buckets to advance may give a value greater than
`B . Therefore, it is necessary to take the modulo of B+
`d(i)/b with respect to the total number ofbuckets instructure
`18, M.
`In a preferred embodiment, the maximum shaping delay,
`M*b, is between about 100 and 500 milliseconds. Of course,
`the invention is not limited to this range. Generally, the value
`of this parameter will be chosen by the available memory and
`maximum per packet delay. The larger the value of M*b, the
`more packets that would need to be buffered by the shaper. A
`large value of M*b can potentially mean a larger per packet
`delay, as more time would be spent by the packet in the shaper.
`A very large delay would make shaping useless, as the source
`of packets might timeout and assume the packets have been
`dropped, leading to retransmissions, which is exactly what
`the shaper seeks to avoid in the first place. The value of b
`(termed the bucket’s “width.” “time increment,” or “granu
`larity') is chosen based upon the competing concerns of
`finding a bucket that precisely matches a packet's calculated
`delay and requiring only minimal system overhead to trigger
`the periodic dequeuing of buffered data. In one preferred
`embodiment, the value of b is between about 1 and 50 milli
`seconds.
`In the embodiment shown in FIG. 1, wake-up process 20
`regularly triggers dequeuing of Successive time-based
`queues. This typically requires that the system issue inter
`rupts, a fairly expensive procedure. Thus, from the perspec
`tive of system overhead, the value of b is preferably large.
`Unfortunately, this causes many packets to be queued for
`significantly longer periods of time than are required by the
`calculated traffic shaping delay values.
`In an alternative embodiment, the system overhead asso
`ciated with the queuing is reduced, thereby allowing Smaller
`values of “b.” In this embodiment, the system requires two
`
`5
`
`10
`
`15
`
`25
`
`30
`
`35
`
`50
`
`55
`
`60
`
`65
`
`

`

`7
`separate dequeuing parameters: "b' and a “wake-up incre
`ment.” The wake-up increment specifies the time that will
`elapse between Successive interrupts from the system to trig
`ger dequeuing. This may be set to a relatively large number
`such as 40 milliseconds. The value of “b' may be a much 5
`Smaller value Such as, for example, 1 millisecond. In this
`embodiment, dequeuing is triggered by either of two separate
`mechanisms. First, whenevera new piece of data is enqueued,
`the system may dequeue the contents of all buckets that have
`“timed-out' (i.e., passed their scheduled dequeuing time 10
`based on the value of “b”). Second, whenever a wake-up
`interrupt occurs all timed-out buckets are dequeued.
`Note that if two separate engueuing events occur within a
`single time increment, b, only a single time-based queue will
`be dequeued during these two events. However, if the next 15
`enqueuing event occurs after the time increment “b' has
`elapsed, the next scheduled bucket in time-based queuing
`structure 18 will be dequeued. In the case where two enqueu
`ing events are separated in time by more than one time incre
`ment, b, when the second enqueuing event takes place, all 20
`time-based queues up to the current point will be dequeued.
`And, whenever the wake-up interrupt occurs, all time-based
`queues scheduled for dequeuing since the last engueuing
`event will dequeued.
`Note that the time-based queuing mechanism may take on 25
`a number of formats. It may, as described above, have a
`number of time-based queues that serve to both buffer various
`data items and maintain a scheduled dequeuing time. Other
`embodiments also group data items based upon timing rather
`than source or destination. These approaches are within the 30
`Scope of this invention. The general structures and methods
`used for such embodiments will be apparent to those of skill
`in the art. Two general approaches are described in Randy
`Brown, “Calendar Queues: A Fast O(1) Priority Queue Imple
`mehtation For the Simulation Event Set Problem, October 35
`1988, Volume 31, Communications of the ACM and “LSI
`Logic's L64364 ATMizer II+ATM-SAR Chip Technical
`Manual Chapter 7, Nov. 16, 1998, for example. Both of these
`references are incorporated herein by reference for all pur
`poses.
`Methods of Implementing Time-Based Queuing
`FIG. 2 presents a process flow diagram for one method of
`traffic shaping in accordance with this invention. The
`depicted method bases the shaping process upon the destina
`tion of network traffic. The figures are presented from the 45
`perspective of a network device (or devices) that receives a
`packet and is responsible for controlling the transmission of
`that packet based upon a traffic shaping policy. Generally,

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