KR100475783B1 - Hierarchical prioritized round robin(hprr) scheduling - Google Patents
Hierarchical prioritized round robin(hprr) scheduling Download PDFInfo
- Publication number
- KR100475783B1 KR100475783B1 KR10-2002-7003875A KR20027003875A KR100475783B1 KR 100475783 B1 KR100475783 B1 KR 100475783B1 KR 20027003875 A KR20027003875 A KR 20027003875A KR 100475783 B1 KR100475783 B1 KR 100475783B1
- Authority
- KR
- South Korea
- Prior art keywords
- class
- flow
- packets
- queue
- bandwidth
- Prior art date
Links
- 241001522296 Erithacus rubecula Species 0.000 title claims description 13
- 238000000034 method Methods 0.000 claims abstract description 131
- 238000004422 calculation algorithm Methods 0.000 claims description 35
- 230000005540 biological transmission Effects 0.000 claims description 24
- 230000008569 process Effects 0.000 claims description 17
- 230000006735 deficit Effects 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 7
- FGUUSXIOTUKUDN-IBGZPJMESA-N C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 Chemical compound C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 FGUUSXIOTUKUDN-IBGZPJMESA-N 0.000 claims 2
- 238000010187 selection method Methods 0.000 claims 1
- 239000000470 constituent Substances 0.000 abstract description 2
- 238000012545 processing Methods 0.000 description 14
- 238000012913 prioritisation Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 239000010931 gold Substances 0.000 description 3
- 229910052737 gold Inorganic materials 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000001105 regulatory effect Effects 0.000 description 3
- 238000003339 best practice Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 241000238876 Acari Species 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 150000002343 gold Chemical class 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007616 round robin method Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000037351 starvation Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/58—Changing or combining different scheduling modes, e.g. multimode scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6275—Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
HPRR 방법은 각 개별 패킷이 흐름을 위한 트래픽 사양에 부합하는지 아닌지로서 표시하기 위해 토큰 버킷 레이트 분류기들을 사용한다(흐름별 큐들 1, 2, 3, 4). 흐름들은 단일 서비스 클래스(클래스 A, B, D)내에 있는 것으로 간주된다. 하나의 이러한 클래스는 디폴트 "최선형" 서비스 클래스(D)로서 구분된다. 각 서비스 클래스는 모든 클래스들이 활성화중일 때 클래스에 승인된 대역폭의 부분에 대응하는 가중이 할당된다. HPRR 방법은 흐름으로부터의 패킷이 두가지 방식 중 하나, 즉, 그 클래스의 할당된 대역폭의 부분이나 최선형 대역폭의 부분으로서 포워딩될 수 있게 한다. 그 패킷들을 전송하기 위해 흐름에 대하여 항상 두 개의 경로들을 제공함으로써, 흐름에는 두가지 상이한 클래스들, 즉, 그 일차 또는 구성 클래스와, 최선형 클래스의 그 공정한 몫이 항상 주어진다. The HPRR method uses token bucket rate classifiers to indicate whether each individual packet meets the traffic specification for the flow (queues per flow 1, 2, 3, 4). Flows are considered to be in a single service class (classes A, B, and D). One such class is identified as the default "best" service class (D). Each service class is assigned a weighting corresponding to the portion of the bandwidth approved for the class when all classes are active. The HPRR method allows a packet from a flow to be forwarded in one of two ways, either as part of the allocated bandwidth of that class or as part of the best bandwidth. By always providing two paths to the flow to send the packets, the flow is always given two different classes, its primary or constituent class and its fair share of the best-in-class class.
Description
관련 출원에 대한 상호 참조Cross Reference to Related Application
본 출원은 본 출원인에 의해 1999년 9월 25일자로 출원된 발명의 명칭이 "계층적 우선 순위화 라운드 로빈(HPRR) 스케쥴링"인 미국 가출원 제 60/156,123 호를 우선권으로 주장한다.This application claims priority to US Provisional Application No. 60 / 156,123, entitled "hierarchical prioritization round robin (HPRR) scheduling", filed September 25, 1999 by Applicant.
발명의 분야Field of invention
본 발명은 일반적으로 컴퓨터 네트워크에 관한 것이며, 보다 구체적으로는, 데이터 트래픽을 데이터 전송 링크상으로 스케줄링하는 것에 관한 것이다.FIELD OF THE INVENTION The present invention generally relates to computer networks and, more particularly, to scheduling data traffic over data transmission links.
링크 공유를 위한 한가지 요건은 다수의 조직(organization)들 사이의 링크상에서 대역폭을 공유하는 것이며, 이때, 각 조직은 폭주(congestion) 동안 링크 대역폭의 보증된 몫을 수신하기를 원하지만, 하나의 조직에 의해 사용되고 있지 않는 대역폭은 그 링크를 공유하는 다른 조직들에게 사용가능해야 한다. 그 대표적인 예는 트랜스 아틀랜틱 FAT 파이프를 공유하면서, 단일 ISDN 회선을 공유하는 개체들에 대한 비용들 중 고정된 몫을 각각 지불하고 있는 다수의 중계사들이다. 링크 공유의 다른 예는 상이한 프로토콜 패밀리들(예컨대, IP 및 SNA) 사이의 링크상의 공유된 대역폭이며, 이때, 폭주에 대해 상이한 프로토콜 패밀리들이 상이한 응답을 가지기 때문에, 링크 공유의 제어가 필요하다. 링크 공유의 세 번째 예는 텔넷, ftp 또는 실시간 오디오 및 비디오 같은 상이한 트래픽 형태들 사이의 링크상의 대역폭을 공유하는 것이다. One requirement for link sharing is to share bandwidth on a link between multiple organizations, where each organization wants to receive a guaranteed share of link bandwidth during congestion, but one organization Bandwidth that is not in use by the system must be available to other organizations sharing the link. A representative example is a number of relays sharing a trans Atlantic FAT pipe, each paying a fixed share of the costs for entities sharing a single ISDN circuit. Another example of link sharing is shared bandwidth on a link between different protocol families (eg, IP and SNA), where control of link sharing is needed because different protocol families have different responses to congestion. A third example of link sharing is sharing bandwidth on a link between different traffic types such as telnet, ftp or real time audio and video.
네트워크 자원의 제어는 접속당 단대단 요건(per-connection end-to-end requirements)의 고려뿐만 아니라, 사용에 대한 로컬 결정(local decisions)을 수반한다. 링크 공유 메카니즘의 한가지 기능은 순수한 로컬 요구에 응답하여 로컬 링크들상의 대역폭의 분배를 제어하도록 게이트웨이를 이네이블하는 것이다.Control of network resources involves local decisions about usage, as well as consideration of per-connection end-to-end requirements. One function of the link sharing mechanism is to enable the gateway to control the distribution of bandwidth on local links in response to pure local requests.
공유된 링크들상의 실시간 서비스들을 포함하는 상이한 트래픽 유형들을 수반하는 것에 대한 요구는 트래픽의 클래스들을 가진 계층적 링크 공유에 대한 요구를 초래한다. 링크 공유 서비스들과, 실시간 서비스들은 게이트웨이에서 만족되어야할 구속들의 등시성 세트들을 수반한다. 또한, 링크 공유 요건들을 충족시키는 동시에, 보다 높은 우선 순위를 가진 트래픽의 요구들을 만족시키면서, 보다 낮은 우선 순위의 트래픽의 기아상태(starvation)를 방지하는 것에 대한 요구도 존재한다.The need to involve different traffic types, including real-time services on shared links, leads to the need for hierarchical link sharing with classes of traffic. Link sharing services and real time services involve isochronous sets of constraints to be satisfied at the gateway. There is also a need to prevent starvation of lower priority traffic while satisfying link sharing requirements while at the same time meeting the needs of higher priority traffic.
현재의 스케쥴링 방법들은 우선 순위화 클래스별 큐잉(CBQ; Class Based Queuing) 또는 가중 공정 큐잉(WFQ; Weighted Fair Queuing) 방식의 변형을 사용하는 차별화된 서비스 품질(QOS)을 지원한다. 종래 기술의 CBQ와 WFQ 방법은 두가지 중요한 팩터들, 즉, 1) 오버리미트 트래픽, 즉, 흐름의 보증 트래픽 레이트 사양을 초과하는 흐름으로부터의 트래픽과, 2) 대역폭 및 딜레이의 보장된 보증이 아닌 통계학적 보증을 제공하기 위한 흐름들의 고의적 초과 예약(deliberate overbooking)을 무시한다. 흐름의 초과 예약은 모든 흐름들이 동시에 활성화될 때, 그 대역폭을 제공하기에 용량이 불충분하다 해도, 예약된 최소 대역폭 요건들을 가진 흐름이 허용된다는 것을 의미한다. Current scheduling methods support differentiated quality of service (QOS) using a variant of Prioritized Class Based Queuing (CBQ) or Weighted Fair Queuing (WFQ). The prior art CBQ and WFQ methods have two important factors: 1) overlimit traffic, i.e. traffic from a flow that exceeds the guaranteed traffic rate specification of the flow, and 2) statistics that are not guaranteed guarantees of bandwidth and delay. Ignore deliberate overbooking of flows to provide scientific guarantees. Overbooking of flows means that when all flows are active at the same time, flows with the reserved minimum bandwidth requirements are allowed, even if the capacity is insufficient to provide that bandwidth.
CBQ 알고리즘은 활성화 흐름들을 급속하게 변화시키는 환경이 아닌 항상 활성 상태인 것으로 간주되는 고정된 흐름들의 세트에 의존한다. 상기 CBQ 알고리즘은 오버리미트로서 이를 분류하기 위해 서행성 흐름당 평균 레이트(slow-acting average rate per flow)를 사용한다. 상기 CBQ 알고리즘은 클래스가 트래픽 한계를 초과하는지 미만인지를 결정하기 위해 산출된 클래스 평균 레이트에 의존하기 때문에, 비교적 느리게 동작한다. 그것은 클래스 오버리미트를 표시하기 위해 서행성 흐름(또는 클래스)당 평균 레이트에 의존하며, 그리고 오버리미트 클래스에 대해 어떤 공정 대역폭을 할당해야 하는지를 결정하기 위한 비교적 복잡한 알고리즘에 의존한다. 결국, 이는 클래스내의 흐름의 초과 예약을 위해 어떠한 대책도 없게 만든다. 즉, 보증된 최소 서비스 레이트들을 가진 흐름이 고의로 과허용되는 경우에, 통계학적으로 소수의 허용된 흐름들이 동시에 백로그(backlogged)되게 된다. CBQ 알고리즘은 초과 예약의 존재시 클래스 대역폭 강조를 검토하지 않는다.The CBQ algorithm relies on a fixed set of flows that are always considered to be active, not an environment that changes the activation flows rapidly. The CBQ algorithm uses a slow-acting average rate per flow to classify it as an overlimit. The CBQ algorithm operates relatively slowly because it relies on the calculated class average rate to determine whether the class exceeds or falls below the traffic limit. It depends on the average rate per slow flow (or class) to indicate class overlimit, and on a relatively complex algorithm to determine what process bandwidth should be allocated for the overlimit class. In the end, this makes no countermeasure for overbooking the flow in the class. That is, if flows with guaranteed minimum service rates are deliberately over-licensed, statistically a small number of allowed flows will be backlogged at the same time. The CBQ algorithm does not consider class bandwidth emphasis in the presence of overbooking.
CBQ 알고리즘에서는, 각 클래스는 그 할당된 평균 대역폭에 한정될 수 있지만, 언더리미트 클래스들에 대한 순간적 대역폭 손실에 대해서는 어떠한 보호조치도 없다. 이것은 상술한 바와 같은 CBQ 알고리즘이 클래스가 오버리미트인지 아닌지를 결정하기 위해 비교적 느리게 변화하는 평균 레이트에 의존하기 때문이다.In the CBQ algorithm, each class can be limited to its allocated average bandwidth, but there is no protection against instantaneous bandwidth loss for underlimit classes. This is because the CBQ algorithm as described above relies on a relatively slow changing average rate to determine whether the class is overlimit or not.
신호 레벨 WFQ 방법은 초과 예약된 흐름들의 세트가 독단적으로 대역폭의 큰 부분을 점유할 수 있기 때문에, 초과 예약의 문제점을 가지고 있다. 각 흐름은 그 수가 너무 많은 경우에도 그들이 그 공정한 몫을 소모한다. 초과 예약의 문제점은 WFQ 스케쥴러의 계층의 개념에 의해 완화된다. 그러나, WFQ 알고리즘은 각 흐름이 그 트래픽 사양을 준수하는 것으로 가정하며, 상술된 알고리즘은 트래픽 사양 한계를 초과하는 개별 흐름들에 대한 어떠한 대책도 없다. 하나의 클래스 내의 흐름을 위한 계층적 WFQ 방법에는 최선형 클래스(best effort class)로 대역폭을 공유하기 위한 어떠한 개념도 존재하지 않는다. 보다 높은 레벨의 하나의 흐름이 오버리미트인 경우, 이는 그 클래스에 할당된 대역폭에 그 자체를 담아야만 하며, 디폴트 클래스내의 다른 최선형 흐름들을 완성할 수는 없다. 예로서, 대역폭 중 50%를 할당받은 보증된 클래스내에, 각각 대역폭의 10%를 할당받는 5개의 흐름이 있고, 대역폭의 50%가 할당된 디폴트 클래스내에 단 하나의 흐름이 존재하는 경우를 고려한다. 하나의 디폴트 흐름은 지속적으로 백로그되고, 그래서, 대역폭의 50%를 취득한다. 보증된 흐름들 중 하나가 갑자기 가능한 많은 대역폭을 필요로하게 될 때, 이는 링크 대역폭의 단 10%, 즉 계층적 WFQ를 사용하는 보증된 클래스에 할당된 50% 중 1/5만을 계속 받게된다. The signal level WFQ method has the problem of overbooking because a set of overbooked flows can arbitrarily occupy a large portion of the bandwidth. Each flow consumes its fair share even if the number is too large. The problem of overbooking is mitigated by the concept of hierarchy in the WFQ scheduler. However, the WFQ algorithm assumes that each flow conforms to its traffic specification, and the algorithm described above has no countermeasures for individual flows that exceed the traffic specification limit. In the hierarchical WFQ method for flow in one class, there is no concept for sharing bandwidth in the best effort class. If a higher level flow is overlimit, it must contain itself in the bandwidth allocated to that class, and cannot complete other best-in-class flows in the default class. As an example, consider the case where there are five flows in the guaranteed class assigned 50% of the bandwidth, each with 10% of the bandwidth allocated, and only one flow in the default class assigned 50% of the bandwidth. . One default flow is constantly backlogged, thus acquiring 50% of the bandwidth. When one of the guaranteed flows suddenly needs as much bandwidth as possible, it will continue to receive only 10% of the link bandwidth, ie only one fifth of the 50% allocated to the guaranteed class using hierarchical WFQ.
WFQ 스케쥴링 알고리즘에서, 초과 예약된 흐름들은 대역폭 중 그 가중의 가치를 계속 사용하게 되며, 실제로, 현저한 예약 초과 상태에서 독단적으로 상기 대역폭의 큰 부분들을 소모할 수 있다. 상기 WFQ 알고리즘은 흐름들의 클래스를 대역폭의 비율에 대해 한정하고, 초과 예약의 존재시에도 그 대역폭을 집행하기 위한 어떠한 대책도 제공하지 않는다. 초과 예약은 상업적 대역폭 공급자들에게 중요한 경제적 요건이다. WFQ 알고리즘은 디피싯 라운드 로빈(deficit round robin; DRR) 알고리즘보다 더 양호한 최악의 경우에서의 딜레이를 제공하는 반면에, 또한, 다수의 연산적 복잡성을 가지고 있다. 주요한 문제점들은 패킷의 종결 시간을 산출하기 위한 분할 작업과, 종결 시간에 기초하여 배열된 큐을 유지하는 것이 복잡하다는 것이다. 이들 복잡성들은 일반적으로 N 개의 가능 흐름들에 대하여 O(log N)의 수준인 것으로 고려된다.In the WFQ scheduling algorithm, overbooked flows continue to use the weighted value of the bandwidth, and indeed can consume large portions of the bandwidth arbitrarily at significant overbooking conditions. The WFQ algorithm limits the class of flows to the ratio of bandwidths and does not provide any measure for enforcing that bandwidth in the presence of excess reservation. Overbooking is an important economic requirement for commercial bandwidth providers. WFQ algorithms provide better worst case delays than deficit round robin (DRR) algorithms, while also having a number of computational complexity. The main problems are the complexity of calculating the packet termination time and maintaining the queues arranged based on the termination time. These complexities are generally considered to be at the level of O (log N) for the N possible flows.
도 1은 본 발명의 원리에 따른 계층적 우선 순위화 라운드 로빈(HPRR) 스케쥴링의 부분 개략 흐름도.1 is a partial schematic flow diagram of hierarchical prioritized round robin (HPRR) scheduling in accordance with the principles of the present invention;
도 2는 도 1의 시스템 및 HPRR 방법에 의해 사용되는 데이터 구조들의 블록 다이어그램.2 is a block diagram of data structures used by the system and HPRR method of FIG.
도 3은 도 2의 데이터 구조의 일 예시적 상태의 블록 다이어그램.3 is a block diagram of one exemplary state of the data structure of FIG.
도 4 및 도 5는 도 1의 방법 및 시스템에 따라 새로운 패킷을 수신하는 프로세스의 동작의 흐름도.4 and 5 are flow charts of the operation of the process of receiving new packets in accordance with the method and system of FIG.
도 6, 7, 8, 9 및 10은 도 1의 방법 및 시스템에 따른 전송 대상 패킷들의 스케쥴링의 흐름도.6, 7, 8, 9 and 10 are flowcharts of the scheduling of packets to be transmitted according to the method and system of FIG.
패킷들을 데이터 전송 링크에 스케쥴링하는 것의 문제점들은 계층적 우선 순위화 라운드 로빈 스케쥴링의 본 발명에 의해 해결된다.The problems of scheduling packets on a data transmission link are solved by the present invention of hierarchical prioritized round robin scheduling.
데이터 네트워킹 장치에서 차별화된 서비스 품질(QOS)을 제공하기 위한 중요한 콤포넌트는 아웃고잉 전송 인터페이스로 라우팅된 패킷들을 위한 스케쥴링 방법이다. 본 발명은 트래픽의 상이한 클래스들에 할당된 대역폭을 제공하는 전송 인터페이스상에 패킷들을 스케쥴링하기 위한 방법이며, 여기서, 각 클래스는 다수의 흐름들로 구성된다. 이는 초과 예약된 흐름들, 즉, 허용된 흐름들의 트래픽 레이트들의 합이 흐름들의 클래스들을 위한 할당된 용량을 초과하는 경우의 효과적이고 공정한 취급을 제공한다. 본 발명은 각 클래스의 대역폭을 용량의 할당된 부분으로 한정하기 위한 DRR 메카니즘을 유지하면서, 각 클래스를 위한 우선 순위의 개념을 가진 패킷들의 우선 순위화된 포워딩을 제공하도록 디피싯 라운드 로빈(DRR) 알고리즘을 강화하는 것을 포함한다. 본 발명의 핵심 특성은 하나의 클래스를 디폴트 클래스로서 식별하는 것이며, 여기서, 그 클래스의 트래픽 레이트를 초과하는 흐름들은 여전히 디폴트 클래스의 할당된 대역폭내의 패킷들을 포워딩할 수 있다.An important component for providing differentiated quality of service (QOS) in data networking devices is the scheduling method for packets routed to the outgoing transport interface. The present invention is a method for scheduling packets on a transport interface that provides bandwidth allocated to different classes of traffic, where each class consists of multiple flows. This provides effective and fair handling when overbooked flows, ie the sum of the traffic rates of allowed flows, exceed the allocated capacity for the classes of flows. The present invention maintains a DRR mechanism for limiting the bandwidth of each class to an allocated portion of capacity, while providing a dedicated round robin (DRR) to provide prioritized forwarding of packets with the concept of priority for each class. This includes enhancing the algorithm. A key feature of the present invention is to identify one class as the default class, where flows that exceed the traffic rate of that class can still forward packets within the allocated bandwidth of the default class.
HPRR에서, 전자의 예의 버스팅 보증 클래스 흐름은 총 35%의 대역폭에 대하여, 그 10% 보증 부분에 최선형 대역폭(25%)의 1/2를 더한 것을 취득하게 된다. HPRR 방법은 그 트래픽 사양 한계를 초과하는 소정의 차별화된 클래스 흐름들에 대하여 효율적이고 용이하게 디폴트 또는 최선형 대역폭을 할당한다.In HPRR, the first example bursting assurance class flow will acquire a total of 35% of the bandwidth plus one half of the best bandwidth (25%) to that 10% guarantee. The HPRR method allocates a default or best effort bandwidth efficiently and easily for certain differentiated class flows that exceed its traffic specification limit.
HPRR 방법은 각 개별 패킷을 흐름을 위한 트래픽 사양에 부합하는 또는 부합하지 않는 것으로서 표시하기 위해 즉시 정확한 토큰 버킷 레이트 분류기를 사용한다. 본 발명의 핵심은 흐름이 두 상이한 클래스들, 즉, 흐름의 할당된 클래스와 디폴트 또는 최선형 클래스의 부분으로 고려된다는 것이다. HPRR 방법은 흐름으로부터의 패킷이 두가지 방식들 중 하나, 즉, 그 클래스의 할당된 대역폭의 일부 또는 최선형 대역폭의 일부 중 어느 한쪽으로서 포워딩되게 하는 것이다. CBQ와는 달리, HPRR 방법은 오버리미트인지 아닌지로서 클래스들을 표시하거나, 오버리미트 클래스들이 그 패킷들을 차단 또는 포워딩하도록 허가되었는지 아닌지를 결정하려고 시도하지 않는다는 것이다. 모든 피어(peer) 클래스들의 오버리미트 또는 언더리미트를 시험하는 소정의 알고리즘을 처리할 필요가 없다. 대신, 하나의 흐름에 대하여 그 패킷들을 전송하기 위해서, 항상 두 개의 경로들을 제공함으로써, 하나의 흐름에는 두 개의 상이한 클래스들, 즉, 그 일차 또는 구성된 클래스와 최선형 클래스 중 그의 공정한 몫이 항상 주어지게 된다. The HPRR method immediately uses the correct token bucket rate classifier to mark each individual packet as compliant or inconsistent with the traffic specification for the flow. The essence of the invention is that the flow is considered part of two different classes, namely the assigned class of the flow and the default or best effort class. The HPRR method allows a packet from a flow to be forwarded in one of two ways, either as part of the allocated bandwidth of that class or as part of the best bandwidth. Unlike CBQ, the HPRR method does not mark the classes as overlimit or not, or attempt to determine whether the overlimit classes are allowed to block or forward the packets. There is no need to deal with any algorithm that tests for over or under limit of all peer classes. Instead, by always providing two paths in order to send the packets for one flow, one flow is always given its fair share of two different classes, that is, its primary or composed class and the best class. do.
HPRR 방법은 초과 예약된 클래스들을 취급하기에 단순하면서 효과적인 알고리즘이다. 초과 예약된 클래스는 상기 클래스에 할당된 불충분한 대역폭에 비견하는 그 각각의 흐름들을 갖지만, 각각의 흐름이 최선형 대역폭을 사용할 수 있기 때문에, 다른 클래스들이 비활성 상태일 때 클래스들의 대역폭 보증을 허용하는 대역폭의 공정한 몫을 취득할 수 있다.The HPRR method is a simple and effective algorithm for handling overbooked classes. An overbooked class has its own flows compared to the insufficient bandwidth allocated to that class, but because each flow can use the best bandwidth, bandwidth that allows bandwidth guarantees for classes when other classes are inactive You can get a fair share of.
HPRR 방법은 패킷 자체가 트래픽 레이트 토큰 버킷에 부합하는지 아닌지를 패킷 단위로 결정한다. 흐름의 트래픽 사양 토큰 버킷에 부합하지 않는 유지된 패킷들은 흐름의 클래스 대역폭을 경유하여 포워딩하기에 부적절하지만, 디폴트 클래스 대역폭을 경유하여 포워딩하기에는 여전히 적합하다. HPRR 방법은 신규한 우선 순위화 DRR 방법을 사용함으로써, 보다 높은 최악의 경우의 딜레이 한계의 허용 대가로, 분할 작업들 및 배열된 큐의 O(log N) 메인테넌스를 회피한다. The HPRR method determines on a packet-by-packet basis whether the packet itself matches the traffic rate token bucket. Remaining packets that do not meet the flow specification token bucket of the flow are inadequate for forwarding via the flow's class bandwidth, but are still suitable for forwarding over the default class bandwidth. The HPRR method uses a new prioritized DRR method to avoid partitioning operations and O (log N) maintenance of the arranged queue at the expense of a higher worst case delay limit.
정의Justice
일반적 스케쥴러 : 링크 공유 가이드라인에 무관한 리프 클래스들로부터 패킷들을 스케쥴링함.Generic scheduler: schedules packets from leaf classes that are not related to link sharing guidelines.
링크 공유 스케쥴러 : 폭주시 링크 공유 할당들을 초과하는 일부 리프 클래스들로부터 패킷들을 스케쥴링함.Link sharing scheduler: schedules packets from some leaf classes that exceed link sharing allocations during congestion.
규제 클래스 : 그 클래스로부터의 패킷들이 게이트웨이에서 링크 공유 스케쥴러에 의해 스케쥴링되는 경우.Regulatory class: When packets from that class are scheduled by the link sharing scheduler at the gateway.
비규제 클래스 : 그 클래스로부터의 트래픽이 일반적 스케쥴러에 의해 스케쥴링되는 경우.Unregulated Class: When traffic from that class is scheduled by the generic scheduler.
오버리미트, 언더리미트, 엣리미트(at-limit) : 클래스가 최근 그 할당된 링크 공유 대역폭(특정 시간 간격에 걸쳐 평균화됨, bytes/sec)보다 더 많이 사용된 경우 그 클래스를 오버리미트라 지칭하고, 그 링크 공유 대역폭의 특정 부분보다 작게 사용되는 경우를 언더리미트라하며, 그 이외의 경우를 엣리미트라함.Overlimit, Underlimit, at-limit: If a class has been used more than its recently allocated link-sharing bandwidth (averaged over a certain time interval, bytes / sec), the class is referred to as overlimit. In other words, when used less than a certain portion of the link share bandwidth, it is called an under limit, otherwise it is called an edge limit.
도면에 예시된 본 발명의 실시예에 대한 하기의 상세한 설명으로부터 상술한 바 및 다른 장점들과 함께 본 발명을 더욱 명확하게 이해할 수 있을 것이다.The invention will be more clearly understood with the foregoing and other advantages from the following detailed description of the embodiments of the invention illustrated in the drawings.
도 1은 본 발명의 원리에 따른 계층적 우선 순위화 라운드 로빈 스케쥴링 방법의 부분 개략 흐름도이다. 본 발명은 데이터 전송 링크상으로 패킷들의 전송을 스케쥴링하기 위한 장치 및 방법을 포함한다. 전송 링크상에서 전송되는 패킷들은 스케쥴러에 주어지고, 상기 스케쥴러는 상기 패킷들을 큐에 넣고, 사전설정된 조건들에 부합되어야할 필요가 있는 경우에는 상기 패킷들을 재배열한다.1 is a partial schematic flow diagram of a hierarchical prioritized round robin scheduling method in accordance with the principles of the present invention. The present invention includes an apparatus and method for scheduling the transmission of packets on a data transmission link. Packets transmitted on the transmission link are given to a scheduler, which queues the packets and rearranges the packets if necessary to meet predetermined conditions.
본 명세서에 설명된 스케쥴링 방법 및 장치(스케쥴러라 칭함)는 우선 순위 레벨 기반별 대역폭 분할과 각 우선 순위 레벨에서의 최대 버스트(burst) 양자 모두를 제한하는, 흐름별 큐잉(per-flow queuing)과 우선 순위화 서비스의 조합을 수반한다. 본 발명은 가중 공정 큐잉(WFQ)과 클래스별 큐잉(CBQ) 패킷 스케쥴링 방법 양자 모두의 핵심 특성들을 조합한다. 부가적으로, 개선된 디피싯 라운드 로빈 서비스 방법이 본 스케쥴링 방법 및 장치에 포함된다. 개선된 디피싯 라운드 로빈 서비스 방법은 우선 순위화 큐의 복잡성과, SFQ 종료 시간 계산의 분할 작업을 회피한다.The scheduling methods and apparatus described herein (called schedulers) include per-flow queuing, which limits both priority level based bandwidth division and maximum burst at each priority level. It involves a combination of prioritization services. The present invention combines the key features of both weighted process queuing (WFQ) and class-specific queuing (CBQ) packet scheduling methods. In addition, an improved depth round robin service method is included in the present scheduling method and apparatus. The improved depth round robin service method avoids the complexity of prioritization queues and the splitting of SFQ end time calculations.
도 1을 참조하면, 본 발명의 스케쥴러는 상기 스케쥴러내의 다수의 단계에서 패킷들을 프로세싱한다.Referring to Figure 1, the scheduler of the present invention processes packets at a number of stages within the scheduler.
1. 패킷들은 먼저 흐름들로 분류된다. 인터넷 프로토콜(IP)에 대해, 흐름 분류는 패킷들의 소스 및 착신 IP 어드레스들, IP 프로토콜 유형 및 사용자 데이터그램 프로토콜(UDP) 또는 패킷내의 전송 제어 프로토콜(TCP) 포트 번호의 함수인 것이 적합하다. 스케쥴러에서, 패킷들은 먼저 흐름별 큐로 집어넣어진다. 각 흐름은 그 위에 큐잉될 수 있는 최대 버퍼수를 가지는 것이 적합하다. 흐름 분류의 예로서, IP 전화법(즉, 캡슐화된 음성)은 흐름 번호 1로서 분류되고, 모든 다른 패킷들은 흐름 번호 4(디폴트 흐름 클래스)로서 분류될 수 있다.1. Packets are first classified into flows. For the Internet Protocol (IP), the flow classification is suitably a function of the source and destination IP addresses of the packets, the IP protocol type and the User Datagram Protocol (UDP) or Transmission Control Protocol (TCP) port number in the packet. In the scheduler, packets are first put into a per-flow queue. Each flow preferably has a maximum number of buffers that can be queued thereon. As an example of flow classification, IP telephony (ie, encapsulated voice) is classified as flow number 1, and all other packets may be classified as flow number 4 (default flow class).
각각의 흐름은 흐름에 제공된 데이터 포워딩 서비스의 세트를 기술하는 단일 서비스 클래스의 멤버인 것으로 간주된다.Each flow is considered to be a member of a single service class that describes the set of data forwarding services provided for the flow.
2. 그후, 패킷들은 최대 레이트 토큰 버킷 리미터를 통과하여야만 하며, 상기 리미터는 흐름별로 포워딩 레이트를 제한한다. 패킷들이 그 최대 레이트 리미터를 통과하고나면, 이들은 두 개의 클래스들, 즉, 흐름의 구성 클래스 또는 디폴트 클래스 중 어느 한쪽의 포워딩에 적합하다.2. The packets must then pass through the maximum rate token bucket limiter, which limits the forwarding rate on a per flow basis. Once the packets have passed their maximum rate limiter, they are suitable for forwarding either of two classes, the flow's constituent class or the default class.
3. 그후, 패킷들은 그 논리적 클래스별 큐로의 포워딩을 위해 적합해지도록 트래픽 레이트 토큰 버킷 리미터를 통과하여야만 한다. 트래픽 레이트는 흐름 소스가 네트워크내로 트래픽을 주입하는 데 동의하는 최대 레이트이다. 네트워크와 트래픽 소스 사이의 서비스 계약은 상기 트래픽 레이트 보다 적게 전송된 패킷들만이 네트워크에 의한 차별화된 서비스를 받게 되도록 되어 있다. 프레임 릴레이 네트워크들에서 제공되는 것 같은 규정 정보 전송 속도(CIR; Committed Information Rate) 서비스에 대하여, 트래픽 레이트는 CIR 레이트에 대응한다. 네트워크가 트래픽 레이트보다 빠르게 패킷들을 받지만, 이들은 단지 최선형에 맞게만 포워딩하게되는 것이 적합하다. 본 발명의 양호한 실시예의 스케쥴러에서, 트래픽 레이트 보다 빠르게 도달한 패킷들은 그 서비스 클래스에 할당된 대역폭의 일부로서 포워딩되는 것이 저지되며, 디폴트 클래스에 할당된 대역폭의 일부로서만 포워딩될 수 있다. 3. The packets must then pass through a traffic rate token bucket limiter to be suitable for forwarding to that logical class-specific queue. The traffic rate is the maximum rate at which the flow source agrees to inject traffic into the network. The service contract between the network and the traffic source is such that only packets transmitted at less than the traffic rate will receive differentiated service by the network. For a Committed Information Rate (CIR) service as provided in frame relay networks, the traffic rate corresponds to the CIR rate. Although the network receives packets faster than the traffic rate, it is appropriate that they will only forward at their best. In the scheduler of the preferred embodiment of the present invention, packets arriving faster than the traffic rate are prevented from being forwarded as part of the bandwidth allocated to that class of service and can only be forwarded as part of the bandwidth allocated to the default class.
4. 언제든, 클래스는 순간적으로 초과 예약될 수 있으며, 이는 클래스에 할당된 전송 채널의 구성 용량을 초과한 도입 대상 트래픽 레이트를 가진 흐름들이 허용되었다는 것을 의미한다. 이 상태에서, 스케쥴러는 흐름들이 그 클래스의 대역폭에 추가하여 디폴트 클래스 대역폭을 사용하여 패킷들을 포워딩하도록 허용한다.4. At any time, a class can be instantaneously overbooked, which means that flows with an incoming traffic rate that exceed the configured capacity of the transport channel assigned to the class are allowed. In this state, the scheduler allows flows to forward packets using the default class bandwidth in addition to that class's bandwidth.
5. 트래픽 레이트 리미터를 통과한 패킷들은 동일 클래스내의 모든 흐름들을 위해 패킷들을 유지하는 클래스별 큐상으로 스케쥴링된다.5. Packets passing through the traffic rate limiter are scheduled on a class-specific queue that holds packets for all flows within the same class.
패킷들은 단지 흐름별 큐상으로만 물리적으로 들어가게 된다. 도 1의 클래스별 큐은 본 발명의 방법의 동작을 설명하기 위해 사용되는 가상 큐이다. 또한, 흐름의 최대 레이트 토큰 버킷 리미터에 부합하는 모든 패킷들은 클래스의 대역폭과 디폴트 클래스 대역폭 양자 모두로부터의 포워딩에 적합하다.Packets are only physically pushed onto the flow queue. The class-specific queue of FIG. 1 is a virtual queue used to describe the operation of the method of the present invention. In addition, all packets that meet the flow's maximum rate token bucket limiter are suitable for forwarding from both the class's bandwidth and the default class bandwidth.
실제 흐름별 큐들은 개념적으로 흐름들의 할당된 서비스 클래스들을 위한 클래스별 큐를 공급한다. 동일 클래스내의 흐름들로부터의 패킷들이 클래스별 큐로 포워딩되는 방식은 본 발명과 무관하지만, 그러나, 디피싯 라운드 로빈 스케쥴링 같은 공정 큐잉 알고리즘의 형태인 것이 적합하다.Actual flow-specific queues conceptually provide class-specific queues for assigned service classes of flows. The manner in which packets from flows within the same class are forwarded to the class-specific queue is irrelevant to the present invention, however, however, it is appropriate in the form of a process queuing algorithm such as depth round robin scheduling.
각 흐름은 스케쥴러내의 최대 레이트 리미터를 사용하여 구축되며, 그래서, 흐름을 위해 구축된 최대 레이트를 초과하는 경우 패킷을 포워딩하지 않는다. 버퍼 관리는 흐름별로 수행되며, 클래스별로 수행되지 않는다. Each flow is built using the maximum rate limiter in the scheduler, so it does not forward the packet if it exceeds the maximum rate established for the flow. Buffer management is performed flow by flow, not class.
또한, 각 흐름은 흐름의 트래픽 레이트를 초과하는 패킷들을 그 서비스 클래스 큐상으로 포워딩하는 것을 방지하는 트래픽 레이트 리미터를 구비하고 있다. 각 흐름은 그 흐름 클래스에 할당된 대역폭을 수신하기 위해서 부합되어야한하는 트래픽 레이트 리미터를 사용하여 구축되어야만 한다. 흐름은 트래픽 레이트보다 빨리 데이터를 보낼 수 있도록 허용되지만, 그것은 흐름별 큐상에서 뒤로 유지되며, 디폴트 클래스에 할당된 대역폭의 일부로서만 포워딩될 수 있다. Each flow also has a traffic rate limiter that prevents forwarding packets above the traffic rate of the flow onto its class of service queue. Each flow must be built using a traffic rate limiter that must be matched to receive the bandwidth allocated to that flow class. The flow is allowed to send data faster than the traffic rate, but it stays back on the per-flow queue and can only be forwarded as part of the bandwidth allocated to the default class.
스케쥴러는 흐름 큐들로부터 패킷들을 스름의 서비스 클래스를 위한 가상 큐로 포워딩한다. 이는 클래스별 큐잉을 위한 물리적 큐잉(예로서, 링크된 리스트)을 실행할 필요가 없기 때문에, 가상 큐이다. 대신, 상기 스케쥴러는 단지 클래스별 리스트상의 상단 흐름 큐에 대한 포인터를 유지하기만 하면 된다. 가상 우선 순위 큐로부터의 상단 패킷 또는 패킷들은 큐로부터 빠져나오는 경우에, 이들은 (실제)흐름 큐로부터 제거되며, 클래스 큐의 다음 상단이 그 클래스내의 활성 흐름 큐을 스캐닝함으로써 결정된다. 상기 스케쥴러는 정렬되지 소정의 소정의 단일 큐내의 패킷들을 포워딩하지 않는 것이 적합하다.The scheduler forwards packets from the flow queues to the virtual queue for the class of service. This is a virtual queue because there is no need to perform physical queuing (eg, linked lists) for per-class queuing. Instead, the scheduler only needs to maintain a pointer to the top flow queue on the class-specific list. When the top packet or packets from the virtual priority queue exit the queue, they are removed from the (real) flow queue and the next top of the class queue is determined by scanning the active flow queue in that class. The scheduler preferably does not forward packets in any given single queue that are not aligned.
각 서비스 클래스는 스케쥴링 우선 순위가 할당된다. 클래스별 큐들은 우선 순위 순서로 서비스되며, 대역폭 제한을 받는다. 유리하게는, 디피싯 라운드 로빈(DRR) 알고리즘이 각 클래스로부터 패킷들을 스케쥴링하기 위해 사용될 수도 있다. 본 발명은 우선 순위화 스케쥴링을 구현하기 위해 DRR 알고리즘에 대한 개선을 포함한다. 가장 높은 우선 순위 클래스 큐는 그 퀀텀이 소진될때까지 서비스되며, 이때, 다음번의 보다 높은 우선 순위 클래스가 스캔된다. 모든 클래스들이 그 퀀텀이 소진되었을 때, 새로운 DRR 라운드가 시작된다.Each service class is assigned a scheduling priority. Class-specific queues are serviced in order of priority, and are subject to bandwidth limitations. Advantageously, a depisit round robin (DRR) algorithm may be used to schedule packets from each class. The present invention includes improvements to the DRR algorithm to implement prioritized scheduling. The highest priority class queue is served until the quantum is exhausted, at which time the next higher priority class is scanned. When all classes have exhausted their quantum, a new DRR round begins.
그 우선 순위 DRR 알고리즘을 위한 클래스의 퀀텀은 클래스를 위해 구축된 최대 할당 대역폭(MAB)에 기초하여 스케쥴러에 의해 산출된다. 상기 MAB는 본 발명의 범주내에서 다른 방법들이 사용될 수도 있지만, 1 내지 100의 범위의 정수 백분율 포인트들의 단위로 표현되는 것이 편리하다. The quantum of the class for that priority DRR algorithm is calculated by the scheduler based on the maximum allocated bandwidth (MAB) built for the class. The MAB is conveniently expressed in units of integer percentage points ranging from 1 to 100, although other methods may be used within the scope of the present invention.
클래스에 할당된 MAB들은 각 클래스들 위한 퀀텀들의 비율이 각 클래스를 위한 MAB들의 비율과 동일해지도록 DRR 목적을 위한 그 퀀텀을 결정한다. MAB로부터 퀀텀을 연산하는 한가지 알고리즘이 하기에 설명된다. 가장 높은 MAB를 가진 클래스가 시스템내에서 허용된 최대 패킷 사이즈인 최대 퀀텀을 부여받는다. IP 라우팅 프로토콜에 대하여, 적절한 최대치는 1600 바이트의 형상이며, 이는 이더넷 로컬 에리어 네트워크들(LANs)을 위한 IP 최대 전송 유니트(MTU)를 초과한다. 다른 클래스들은 최고 MAB에 대한 그 MAB의 비율에 기초한 퀀텀이 할당된다. 예로서, 최고 MAB가 50%인 것으로 가정하면, 이는 1600의 클래스 퀀텀이 할당된다. 10%의 MAB를 가진 클래스는 10/50*1600 또는 320 바이트의 퀀텀을 받는다. 이 퀀텀 할당 알고리즘을 사용하여, 예약된 레이트들의 동적 범위는 1500 내지 1로 한정된다. 이상적으로, 1600 바이트 디피싯을 누산하기 위해 필요한 라운드들의 수를 한정하기 위해서, 상기 동적 범위는 약 100 내지 1로 한정되어야만 한다. The MABs assigned to a class determine that quantum for DRR purposes so that the ratio of quantums for each class is equal to the ratio of MABs for each class. One algorithm for computing the quantum from the MAB is described below. The class with the highest MAB is given the maximum quantum, which is the maximum packet size allowed in the system. For the IP routing protocol, the appropriate maximum is 1600 bytes in shape, which exceeds the IP Maximum Transmission Unit (MTU) for Ethernet local area networks (LANs). The other classes are assigned a quantum based on the ratio of that MAB to the highest MAB. As an example, assuming that the highest MAB is 50%, it is assigned a class quantum of 1600. A class with 10% MAB receives a quantum of 10/50 * 1600 or 320 bytes. Using this quantum allocation algorithm, the dynamic range of reserved rates is limited to 1500-1. Ideally, to limit the number of rounds needed to accumulate 1600 byte depths, the dynamic range should be limited to about 100-1.
본 발명의 스케쥴러의 중요한 개념은 모든 0이 아닌 우선 순위의 흐름들이 두 번, 즉, 한번은 그 우선 순위 큐 스케쥴러에 의해, 그리고, 한번은 최선형(BE) 우선 순위 레벨 0 DRR 스케쥴러에 의해 스캐닝된다는 것이다. 이것의 목적은 최선형 대역폭에 대해서도 우선 순위화 흐름들에 대해 대역폭을 보증하는 것이다. 예로서, 10kbps 트래픽 레이트를 가진 5개의 우선 순위화 흐름들과, 500kbps 채널을 공유하는 1개의 최선형 흐름을 고려한다. 우선 순위화 흐름들은 가용한 500kbps 중 단지 50kbps만을 예약하지만, 이들은 최선형을 위해 남겨진 450kbps를 공유하기 위한 소정의 메카니즘이 필요하다. 상기 흐름들을 상술한 바와 같이 두 번 스캐닝하는 것은 이 목적을 달성한다.An important concept of the scheduler of the present invention is that all non-zero priority flows are scanned twice, ie once by its priority queue scheduler and once by the best-of-breed (BE) priority level 0 DRR scheduler. The purpose of this is to guarantee bandwidth for prioritization flows even for the best bandwidth. As an example, consider five prioritized flows with a 10 kbps traffic rate and one best flow sharing a 500 kbps channel. Prioritization flows reserve only 50 kbps of available 500 kbps, but they require some mechanism to share the 450 kbps left for best practice. Scanning the flows twice as described above achieves this purpose.
계속적으로 백로그되는 흐름들의 기간 동안 수신된 흐름의 실제 대역폭은 두 개의 레이트들의 합이다.The actual bandwidth of the received flow over the period of continuously backlogged flows is the sum of the two rates.
1. 흐름의 클래스의 우선 순위 레벨에서 전송되는 흐름의 공시 트래픽 레이트, 및1. the published traffic rate of a flow transmitted at the priority level of the class of flow, and
2. 잔여 최선형 용량의 흐름의 몫.2. Share of flow of residual best capacity.
IP 네트워킹에서, 대부분의 식별된 흐름들은 버스트 상태이며, 대부분의 흐름들은 임의의 주어진 순간에 아이들 상태이다. 소정의 주어진 흐름의 서비스 몫은 모든 할당된 흐름들의 퀀텀들의 합으로 그 퀀텀을 나눈 것이 아니며, 그 퀀텀을 활성 흐름들의 퀀텀들의 합으로 나눈 것이다. "할당된"이라는 용어는 스펙트럼 관리가 특정 RF 채널에 모뎀을 할당할 때, 채널에 할당된 흐름을 지칭하는 것이다. 흐름은 그 흐름당 큐상에 큐 상태가 된 패킷들을 가지거나(즉, 상태가 되거나) 실제 전송되는 패킷을 가질 때만 활성 상태인 것으로 간주된다.In IP networking, most identified flows are bursted, and most flows are idle at any given moment. The service share of a given flow is not the quantum divided by the sum of the quantums of all assigned flows, but the quantum divided by the sum of the quantums of active flows. The term "assigned" refers to the flow assigned to a channel when spectrum management assigns a modem to a particular RF channel. A flow is considered to be active only when it has packets queued (i.e., it is in the state) on the queue per flow or actually has packets transmitted.
예로서, 채널에 할당된 최선형 또는 우선 순위 0 레벨에 100개의 흐름들이 존재하는 것으로 가정한다. 각각은 1500바이트의 흐름 퀀텀이 주어져 있다. 주어진 폭주 기간(즉, 하나 이상의 패킷이 큐상태가 되는 경우)에 걸쳐, 모뎀들 중 단지 10개만이 소정의 데이터를 전송했다. 단지 10개의 모뎀들만이 활성상태이기 때문에, 활성 퀀텀들의 합은 15000이며, 각 모뎀은 대역폭의 1500/15000 또는 우선 순위 0(최하) 트래픽을 위해 가용화된 대역폭 중 10%를 전송하기 위한 기회를 받는다.As an example, assume that there are 100 flows at the best or priority 0 level assigned to a channel. Each is given a flow quantum of 1500 bytes. Over a given congestion period (ie, when one or more packets were queued), only 10 of the modems sent certain data. Since only 10 modems are active, the sum of the active quantums is 15000, and each modem is given the opportunity to transmit 10% of the bandwidth available for 1500/15000 of bandwidth or priority 0 (lowest) traffic. .
초과 예약시 본 발명 스케쥴러의 동작은 중요하다. 초과 예약은 전송 링크에 도입된 트래픽 레이트가 흐름들의 클래스에 할당된 링크의 할당된 용량을 초과할 때 발생한다. 각 클래스는 독립적으로 스케쥴링되고, 어떠한 클래스도 그 평균 레이트를 초과하는 것이 허용되지 않는다(클래스별 스케쥴링 레벨에 DRR이 사용될 때 퀀텀 할당에 의해 결정되는 바와 같이). 본 발명의 대안적인 실시예에서, 클래스당 스케쥴링 스텝은 WFQ를 사용할 수도 있으며, 이 경우에, 각 클래스도 대역폭의 그 할당된 몫보다 많이 사용하는 것이 차단된다. The operation of the scheduler of the present invention in overbooking is important. Overbooking occurs when the traffic rate introduced on the transmission link exceeds the allocated capacity of the link assigned to the class of flows. Each class is scheduled independently, and no class is allowed to exceed its average rate (as determined by quantum assignment when DRR is used for the class-specific scheduling level). In an alternative embodiment of the invention, the per-class scheduling step may use WFQ, in which case each class is also blocked from using more than its allocated share of bandwidth.
본 발명의 변형된 디피싯 라운드 로빈 방법은 우선 순위화 포워딩을 제공한다. 우선 순위화 DRR 방법은 본 발명의 스케쥴러의 최종 클래스별 스케쥴링 단계에서 사용되는 것이 적합하다. 종래 기술의 DRR은 각 스케쥴링된 클래스를 위해 할당된 퀀텀의 개념에 의존하며, 라운드 로빈 방식으로 각 클래스를 방문한다. 본 발명에서는, 각 클래스가 우선 순위를 부여 받는다. 본 발명의 우선 순위화 DRR 방법은 우선 순위의 순서로 각 클래스를 방문하며, 동일한 우선 순위에 있는 클래스들에 대해서는 특정 순서가 없다. 최고 우선 순위 클래스는 그 클래스별 큐상의 모든 패킷들을 포워딩하거나, 그 디피싯 카운트를 소진할때까지 서비스된다. 이 시점에서, 다음의 최고 우선 순위 클래스가 서비스된다. 모든 클래스들이 그 클래스별 큐이 비워지거나, 그 디피싯이 소진되었을 때, 새로운 DRR 라운드가 시작, 즉, 모든 백로그 상태의 클래스들이 새로운 퀀텀을 부여받는다. DRR 알고리즘에서와 마찬가지로, 퀀텀 할당의 비율은 클래스에 할당된 전송 링크 대역폭의 장기 비율(long-term ratio)을 결정한다. The modified deficit round robin method of the present invention provides prioritized forwarding. The prioritized DRR method is suitably used in the final class-specific scheduling step of the scheduler of the present invention. Prior art DRRs rely on the concept of quantums assigned for each scheduled class and visit each class in a round robin fashion. In the present invention, each class is given priority. The prioritized DRR method of the present invention visits each class in order of priority, and there is no specific order for classes having the same priority. The highest priority class is serviced until all packets on that class-specific queue are forwarded or until the depth count is exhausted. At this point, the next highest priority class is serviced. When all classes have their class queues empty or their depths exhausted, a new DRR round begins, that is, the classes in all backlog states are given a new quantum. As in the DRR algorithm, the ratio of quantum assignments determines the long-term ratio of the transmission link bandwidth allocated to the class.
본 발명의 양호한 실시예에서, 흐름들은 초과 예약의 구축된 레벨에 기초하여 전송 채널로 도입된다. 한가지 접근 방식은 서비스 클래스내에 가정 비율 활성 흐름들을 구축하는 것이다. 예로서, 단지 10%의 흐름들만이 동시에 활성화될 것으로 기대되는 경우에, 이 경우를 위한 구축 활성율(CAP) 구축은 10%이다.In a preferred embodiment of the invention, flows are introduced into the transport channel based on the established level of excess reservation. One approach is to build household rate active flows within a service class. As an example, if only 10% of the flows are expected to be activated at the same time, the build activity rate (CAP) build for this case is 10%.
각 흐름은 트래픽 레이트 토큰 버킷을 위한 트래픽 레이트 및 트래픽 버스트 파라미터들을 제공하는 식별 트래픽 사양을 가진다. 상기 흐름으로부터의 패킷들이 트래픽 사양에 정합되는지 비정합되는지가 결정된다. 각 클래스는 이와 연계된 최소 예약 대역폭을 가진다. 이는 ATM 네트워크를 위한 최소 셀 레이트의 프레임 릴레이 네트워크들의 규정 정보 전송 속도와 유사하다. 최소 예약 레이트는 본 발명의 방법의 트래픽 레이트 토큰 버킷을 위한 트래픽 사양으로서 사용된다.Each flow has an identifying traffic specification that provides traffic rate and traffic burst parameters for the traffic rate token bucket. It is determined whether packets from the flow match the traffic specification or not. Each class has a minimum reserved bandwidth associated with it. This is similar to the regulatory information transmission rate of frame relay networks of minimum cell rate for ATM networks. The minimum reservation rate is used as the traffic specification for the traffic rate token bucket of the method of the present invention.
그후, 초과 예약 도입 제어 방법은 채널상의 클래스를 위해 배치된 MAB 백분율보다 도입된 흐름의 예약 레이트들의 합과 CAP 백분율의 곱이 작도록 흐름들을 도입시킨다. 예로서, CAP가 10%로 설정되는 경우에, 클래스는 1Mbps 채널의 50%의 MAB를 갖도록 구축되며, 상기 클래스는 100 Kbps의 예약 트래픽 레이트를 가지며, 도입된 흐름의 수는 하기와 같다.The excess reservation introduction control method then introduces flows such that the sum of the reservation rates of the introduced flow and the CAP percentage is less than the MAB percentage placed for the class on the channel. For example, when the CAP is set to 10%, the class is constructed to have a MAB of 50% of the 1 Mbps channel, the class has a reserved traffic rate of 100 Kbps, and the number of introduced flows is as follows.
도입된 흐름들의 수Number of flows introduced
(MAB*용량)/CAP*예약 대역폭)(MAB * capacity) / CAP * reserved bandwidth)
= 0.50*1,000,000/(0.10*100, 000)= 0.50 * 1,000,000 / (0.10 * 100, 000)
=50 도입된 흐름들Introduced Flows
흐름들이 예약 초과상황에서 도입될 때, CAP 기대 활성 흐름들의 수 보다 많은 흐름들이 실제로 활성화될 수 있다. 본 발명의 스케쥴링 방법은 각각 그 대역폭의 "규정된" 레이트 보다 작게 수신하도록, 그리고, 어떠한 다른 클래스도 영향을 받지 않도록 초과예약된 도입 흐름들 모두들 사이에서 균등하게 상기 클래스를 위한 구축 용량을 분할한다. 모든 흐름들은 최선형 대역폭을 사용하게 되지만, 그러나, 다른 최선형 흐름들이 비활성화된 경우에, 흐름들이 그 규정된 대역폭을 받는 것이 여전히 가능하다. 또한, 그 클래스에 대해 초과 예약된 상황을 발견하기 위해, 즉, 흐름들의 CAP 구축 활성 백분율이 동시에 지연될때를 발견하기 위해 시스템내로 도달되는 패킷들의 수를 보고하는 것이 바람직하다. 이는 CAP 파라미터를 설정하는 방식에 대한 지침을 제공하며, 서비스 레벨 계약의 기초로서 사용될 수 있다.When flows are introduced in a reserved excess, more flows may actually be activated than the number of CAP expected active flows. The scheduling method of the present invention divides the construction capacity for the class evenly among all of the overbooked introductory flows so that each receives less than the “defined” rate of its bandwidth, and so that no other class is affected. do. All flows will use the best bandwidth, but if other best flows are disabled, it is still possible for the flows to receive the prescribed bandwidth. It is also desirable to report the number of packets arriving into the system to find an overbooked situation for that class, i.e., when the CAP establishment activity percentage of flows is delayed at the same time. It provides guidance on how to set the CAP parameters and can be used as the basis for service level agreements.
트래픽 사양과 도입 정책을 변경함으로써, 대부분의 QOS 서비스 개념이 본 발명을 사용하여 구현될 수 있다. By changing the traffic specification and the introduction policy, most of the QOS service concept can be implemented using the present invention.
보증된 서비스는 0이 아닌 트래픽 버킷과 0의 초과 예약을 가진(즉, 100%의 CAP가 동시에 활성화되는) 최고 우선 순위를 가지는 클래스를 제공할 수 있다. 이 조합은 최소 딜레이들과 최대 대역폭들을 보증할 수 있다. The guaranteed service can provide a class with the highest priority with a non-zero traffic bucket and zero overbooking (i.e. 100% of the CAP is active at the same time). This combination can guarantee minimum delays and maximum bandwidths.
규정 정보 전송 속도(CIR) 서비스 클래스는 0이 아닌 트래픽 레이트와, 보증된 클래스 보다 낮은 우선 순위 및 허용된 초과 예약으로 구현될 수 있다. 초과 예약을 허용함으로써, 통상적인 데이터 통신의 버스트형 트래픽이 높은 링크 활용도를 유지하면서 통계학적으로 보증된 서비스를 받을 수 있다.The Regulatory Information Transmission Rate (CIR) service class may be implemented with a non-zero traffic rate, lower priority than the guaranteed class, and allowed overbooking. By allowing overbooking, the bursty traffic of conventional data communications can receive statistically guaranteed service while maintaining high link utilization.
우선 순위화 최선형 서비스 클래스는 무한 트래픽 레이트 버킷과 무한 초과 예약(CAP=0)과, CIR 클래스 보다 낮지만 디폴트 서비스 클래스 보다 양호한 클래스 우선 순위로 제공될 수 있다.Prioritized best service classes may be provided with an infinite traffic rate bucket and infinite overbooking (CAP = 0), and with a class priority lower than the CIR class but better than the default service class.
디폴트 서비스 클래스는 무제한 트래픽 레이트 버킷과, 무제한 초과 예약 및 우선 순위화 최선형 클래스 보다 낮은 우선 순위를 가질 수 있다. The default service class may have an unlimited traffic rate bucket and a lower priority than the unlimited overbooking and prioritization best class.
벌크 또는 낮은 저순위 서비스 클래스는 무제한 트래픽 레이트와 무제한 초과 예약을 가지며, 디폴트 클래스 보다 낮은 우선 순위를 가진다.Bulk or low priority service classes have unlimited traffic rates and unlimited overbooking, and have a lower priority than the default class.
도 2는 본 발명의 상술한 실시예에서 사용된 핵심 FLOW 구조들을 도시하고 있다. FLOW 구조(100)는 패킷들의 단일 흐름와 연계된 모든 정보를 포함하고 있다. 각 흐름은 PacketQ로 명명된 큐 구조를 포함하며, 상기 PacketQ는 전송 대상 패킷들의 큐의 시작과 종료에 대한 포인터들을 포함한다.Figure 2 illustrates the key flow structures used in the above embodiment of the present invention. FLOW structure 100 contains all the information associated with a single flow of packets. Each flow includes a queue structure named PacketQ, which contains pointers to the start and end of the queue of packets to be transmitted.
QITEM 구조(110)는 그를 포함하는 구조들이 이중 링크식 리스트에 링크되는 것을 허용한다. QUEUE 구조(120)는 그 리스트내의 아이템들의 카운트와 함께, 주어진 리스트의 헤드 및 테일 QITEM들에 대한 포인터들을 포함하고 있다. QITEM structure 110 allows structures containing it to be linked to a dual linked list. The QUEUE structure 120 contains pointers to the head and tail QITEMs of a given list, along with a count of the items in that list.
SLICONF 구조(130)는 특정 인터페이스(Intf 150)상에서 동작할 때 특정 서비스 클래스(SCLASS 140)의 동작을 위해 구축되는 것으로 간주되는 파라미터들을 포함한다. 이는 예로서 파라미터 초과 예약을 포함하며, 상기 파라미터 초과예약은 용량을 초과하는 예약 레이트들을 가진 인터페이스에 대해 실제 대역폭의 몇배수가 도입된 흐름들에 의해 초과 예약될 수 있는지를 나타낸다. The SLICONF structure 130 includes parameters that are considered to be built for operation of a particular service class (SCLASS 140) when operating on a particular interface Intf 150. This includes, for example, overparameter reservation, which indicates how many times the actual bandwidth can be overbooked by introduced flows for an interface with reservation rates exceeding capacity.
DRRITEM 구조(160)는 디피싯 라운드 로빈(DRR) 알고리즘을 사용하여 흐름(또는 서비스 클래스)을 스케쥴링하는데 소요되는 파라미터들을 포함한다. DRR 알고리즘은 초기에 각 아이템에 고정된 퀀텀을 할당함으로써 동작한다. 흐름들은 그 퀀텀 할당의 상대 비율에 따라 대역폭이 할당된다. 퀀텀 할당은 각 흐름에 대하여 고정되며, 흐름이 생성될 때 결정된다.The DRRITEM structure 160 includes parameters required for scheduling flow (or class of service) using the Deficit Round Robin (DRR) algorithm. The DRR algorithm works by initially assigning a fixed quantum to each item. Flows are allocated bandwidth according to the relative ratio of their quantum assignments. Quantum assignment is fixed for each flow and is determined when the flow is created.
흐름을 위한 퀀텀은 DRRITEM의 U32 퀀텀 필드(162)에 저장된다. 소정의 주어진 시점에서, 흐름이 그 DRRITEM의 디피싯 카운트에 저장된 바이트들의 양을 전송하게 된다. DRR 큐의 각 DRR 라운드의 시작시, 그 큐내의 모든 DRRITEM은 그 퀀텀의 양만큼 그 디피싯 카운트가 증가된다. 각 DRRITEM이 처리될때(도 6 내지 10에 관하여 설명된 NextBurst 방법에 의해), 그 디피싯값이 그 흐름을 위한 다음 패킷에 의해 보내질 바이트들의 수에 대하여 비교된다. 디피싯 카운트내의 바이트들의 카운트가 불충분한 경우에, 흐름은 그 DRR 큐의 끝으로 이동되어 그 디피싯이 증분되게 되는 다음 DRR 라운드를 기다린다. 디피싯에 충분한 바이트들이 존재하는 경우에, 패킷이 송신되고, 디피싯 카운트가 보내진 바이트들의 수만큼 감소된다. 장시간의 구동에 걸쳐, DRR 알고리즘은 그 퀀텀 할당들의 비율에 기반하여, DRR 큐내의 모든 흐름들에 공정하게 대역폭을 제공한다. 이는 통상적인 단일 전송 큐의 선입 선수행(FCFS) 서비스보다 공정하며, 그 이유는 보다 적고 보다 작은 패킷들을 가진 흐름들이 많고 큰 패킷들을 가진 흐름들의 패킷 뒤에서 백로그하지 않아도 되기 때문이다.The quantum for the flow is stored in the U32 quantum field 162 of the DRRITEM. At any given point in time, the flow will send the amount of bytes stored in the depth count of that DRRITEM. At the beginning of each DRR round of the DRR queue, all DRRITEMs in that queue are incremented by their depth count by the amount of their quantum. When each DRRITEM is processed (by the NextBurst method described with respect to FIGS. 6-10), its depth value is compared against the number of bytes to be sent by the next packet for that flow. If the count of bytes in the deficit count is insufficient, the flow moves to the end of the DRR queue and waits for the next DRR round for the deficit to be incremented. If there are enough bytes in the deficit, the packet is transmitted and the deficit count is reduced by the number of bytes sent. Over a long run, the DRR algorithm provides a fair bandwidth to all flows in the DRR queue, based on the ratio of its quantum assignments. This is fairer than a typical single forward queue first-class forwarding (FCFS) service, because there are fewer flows with fewer and smaller packets and no need to backlog behind packets of flows with large packets.
서비스 레벨 인터페이스(SLI) 구조(170)는 상기 스케쥴링을 제어하며, 단일 인터페이스(Intf)상에서 동작하는 단일 서비스 클래스(SCLASS)의 동작의 통계치들을 포함한다. 본 발명의 스케쥴링 방법은 SLI를 위해 구축된 가중에 따라 각 SLI에 대한 인터페이스의 대역폭의 부분들을 논리적으로 제공하는 것을 요구한다. 그 할당된 대역폭내에서, 상기 실시예는 동일 서비스 클래스내의 모든 활성 흐름들에 대해 균등 가중 부분들을 제공한다.The service level interface (SLI) structure 170 controls the scheduling and includes statistics of the operation of a single service class (SCLASS) operating on a single interface (Intf). The scheduling method of the present invention requires logically providing portions of the bandwidth of the interface for each SLI in accordance with the weighting established for the SLI. Within that allocated bandwidth, the embodiment provides equal weighted portions for all active flows within the same class of service.
SLI들은 서비스 클래스(SCLASS 140)의 우선 순위 필드에 관하여 배열되어 있는 것으로 간주된다. INTF 구조(150)의 p_classes 필드는 SLI 구조들(170)의 링크된 리스트를 이끌며, SLI내에 있는 우선 순위라 명명된 QITEM 구조(110)를 통해 링크되어 있다.SLIs are considered to be arranged with respect to the priority field of the service class (SCLASS 140). The p_classes field of INTF structure 150 leads a linked list of SLI structures 170 and is linked through a QITEM structure 110 named priority in SLI.
본 발명은 세 개의 분리된 DRR 큐들을 사용한다.The present invention uses three separate DRR queues.
흐름 우선 순위 DRR 큐 : 흐름 구조(100)는 동일 서비스 클래스에(그리고, 따라서, 동일 우선 순위 레벨에) 속하는 모든 흐름들을 링크하는 pq라 지칭되는 DRRITEM을 포함한다. 이 큐의 헤드 및 테일은 SLI 구조(170)내에서 흐름 리스트라 명명된 QUEUE 구조(120)이다.Flow Priority DRR Queue: Flow structure 100 includes a DRRITEM called pq that links all flows belonging to the same class of service (and thus at the same priority level). The head and tail of this queue is a QUEUE structure 120 named flow list within SLI structure 170.
흐름 최선형 DRR 큐 : 흐름 구조(100)는 인터페이스상의 모든 활성 흐름들을 링크하는 bq라 지칭되는 DRRITEM(160)을 포함한다. 인터페이스 구조(Inft 150)는 흐름들의 링크된 리스트의 헤드와 테일을 제공하는 QUEUE 구조(120)를 포함한다. Flow Best Practice DRR Queue: Flow structure 100 includes a DRRITEM 160 called bq that links all active flows on the interface. Interface structure Inft 150 includes a QUEUE structure 120 that provides the head and tail of a linked list of flows.
클래스 DRR 큐 : 인터페이스상에서 활성 상태인 서비스 레벨 인터페이스(SLI) 구조(170)는 SLI 자체의 DRR 큐의 일부가 되는 것으로 간주된다. 스케쥴링의 이 클래스 레벨을 위한 상기 DRRITEM(160)은 SLI(170)의 cq 오브젝트내에 저장된다.Class DRR Queue: A Service Level Interface (SLI) structure 170 that is active on an interface is considered to be part of the SRR's own DRR queue. The DRRITEM 160 for this class level of scheduling is stored in the cq object of the SLI 170.
TOKBKT 구조(180)는 흐름들이 그 서비스 클래스 대역폭을 사용하도록 허용될 때를 결정하도록 사용되는 트래픽 레이트 토큰 버킷과, 흐름 최대 허용 포워딩 레이트 보다 빠르게 도달할 때 그 흐름 큐상에 흐름 패킷들을 유지하도록 사용되는 최대 레이트 토큰 버킷 양자 모두를 설명한다.The TOKBKT structure 180 is used to maintain a flow rate token bucket used to determine when flows are allowed to use its class of service bandwidth, and to keep flow packets on the flow queue when it arrives faster than the flow maximum allowed forwarding rate. Both maximum rate token buckets are described.
도 3은 도 2의 구조들의 예시적 상태를 도시하고 있다. 상기 구조들 중 관련 필드들 만이 도시되어 있다. 데이터 통신 디바이스의 특정 전송 인터페이스에 대하여, 단일 Intf 구조는 우선 순위 순서가 감소하는 SLI의 링크된 리스트들을 이끄는 QUEUE 구조를 포함한다. 예로서, 두 개의 서비스 클래스들, 즉, 골드, SCLASS = "gold" 구조(200)와, 디폴트 서비스 클래스 구조(260)를 위한 디폴트, SCLASS = "default" 구조(210)가 존재한다. 디폴트 서비스 클래스를 위한 SLI 구조가 항상 존재한다.3 shows an exemplary state of the structures of FIG. 2. Only relevant fields of the above structures are shown. For a particular transport interface of a data communication device, a single Intf structure includes a QUEUE structure that leads linked lists of SLI in decreasing order of priority. By way of example, there are two service classes, namely gold, SCLASS = "gold" structure 200, and a default, SCLASS = "default" structure 210 for the default service class structure 260. There is always an SLI structure for the default service class.
1. 흐름 1(220)은 골드 SCLASS내의 두 개의 활성 흐름들 중 하나이다. 모든 활성 흐름들과 마찬가지로, 이는 흐름상으로 보내기 위한 패킷들(224, 226)의 링크된 리스트를 이끄는 PacketQ(222)라 명명된 QUEUE 구조를 가진다. 본 발명의 스케쥴링 방법은 항상 동일한 흐름으로부터의 패킷들을 순서대로 송신한다. 도 3에서, 단지 흐름 1만이 그 PacketQ상에 패킷들을 갖는 것으로 도시되어 있지만, 본 실시예에서, 모든 활성 흐름들은 이런 패킷들을 가진다. PacketQ와 패킷들은 간략화를 위해 다른 흐름들에는 도시되어 있지 않다.1. Flow 1 220 is one of two active flows in the Gold SCLASS. As with all active flows, it has a QUEUE structure named PacketQ 222 that leads a linked list of packets 224, 226 to send on the flow. The scheduling method of the present invention always transmits packets from the same flow in order. In FIG. 3, only flow 1 is shown as having packets on that PacketQ, but in this embodiment all active flows have such packets. PacketQ and packets are not shown in other flows for simplicity.
흐름 1(220)은 두 개의 DRR 큐들상에 존재하는 것으로 간주된다. 흐름 우선 순위 큐는 이 인터페이스상의 골드 클래스를 위한 SLI(230)내의 플로우리스트(FlowList)라 명명된 QUEUE 구조에 의해 인도된다. 흐름 1내의 pq라 명명된 DRRITEM은 그 SLI 플로우리스트상의 다른 흐름, 즉, 흐름 2(235)에 대한 링크를 포함한다. 또한, 흐름 1은 최선형 DRR 큐상에 있는 것으로 간주되며, 상기 최선형 DRR 큐은 Intf 인터페이스 구조(240)내의 beq라 명명된 QUEUE 구조에 의해 인도된다. 최선형 DRR 큐상의 모든 흐름들은 흐름 구조내의 "bq"라 명명된 DRRITEM을 경유하여 링크된다. 도 3의 모든 흐름들(220, 235, 245, 250)은 Intf.beq(240)에 의해 인도되는 링크된 리스트상에 존재하며, 그 bq DRRITEM 구조들을 경유하여 링크되어 있다는 것을 주목하여야 한다.Flow 1 220 is considered to be on two DRR queues. The flow priority queue is guided by a QUEUE structure named FlowList (FlowList) in SLI 230 for the Gold class on this interface. The DRRITEM, named pq in flow 1, contains a link to another flow on its SLI flowlist, flow 2 235. Flow 1 is also considered to be on the best-in-class DRR queue, which is guided by a QUEUE structure named beq in Intf interface structure 240. All flows on the best effort DRR queue are linked via a DRRITEM named "bq" in the flow structure. It should be noted that all the flows 220, 235, 245, 250 of FIG. 3 exist on the linked list led by Intf.beq 240 and are linked via their bq DRRITEM structures.
2. 흐름 2(235)는 흐름 1과 함께 활성화되는 골드 서비스 클래스내의 다른 흐름이다. 활성화라는 용어는 흐름 또는 SLI에 적용될 때 전송 대기 패킷을 가지는 것을 의미한다.2. Flow 2 235 is another flow in the Gold Service Class that is activated with Flow 1. The term activation means having a packet waiting to be transmitted when applied to a flow or SLI.
3. 흐름 3(245)은 최선형 흐름이다. 비록 이들이 도시되어 있지는 않지만, 이는 송신하기 위한 패킷들을 가진 PacketQ를 포함하며, 디폴트 서비스 클래스(미도시)의 동작을 위해 SLI에 대한 후위를 지시하는 sli 포인터를 포함한다. 도 3은 그 pq DRRITEM을 사용하지 않으며, 이는 bq DRRITEM을 사용하며, 최선형 DRR 큐상에만 존재하는 것으로 간주된다.3. Flow 3 245 is the best flow. Although they are not shown, this includes PacketQ with packets to transmit, and includes a sli pointer that indicates the back to SLI for the operation of the default class of service (not shown). 3 does not use its pq DRRITEM, which uses bq DRRITEM and is considered to exist only on the best-in-class DRR queue.
4. 흐름 4(250)는 흐름 3(245)과 유사하다. 이는 디폴트 서비스 클래스하에서만 스케쥴링된 대역폭인 최선형 흐름이다.4. Flow 4 250 is similar to flow 3 245. This is the best-in-class flow, which is bandwidth scheduled only under the default class of service.
각 흐름은 그들이 분류되는 서비스 클래스(SCLASS) 구조를 지시하는 S255라 명명된 포인터를 가진다. 모든 흐름들은 하나의 클래스내에 있는 것으로 고려된다. 디폴트 클래스는 분류되지 않은 흐름들을 포함한다.Each flow has a pointer named S255 that indicates the SCLASS structure in which they are classified. All flows are considered to be in one class. The default class contains unclassified flows.
디폴트 서비스 클래스(210)에 속하는 것으로 간주되는 흐름(흐름 3(245) 및 흐름 4(250))은 pq DRRITEM을 경유하여 링크되지 않는다. 대신, 디폴트 클래스 SLI가 NextBurst 절차에 의해 대역폭이 제공될 때, 그 위의 흐름들은 디폴트 클래스 SLI(260)의 플로우리스트 QUEUE가 아닌 Inft 구조(240)의 beq 리스트 오프로부터 얻어진다. Flows that are considered to belong to the default service class 210 (flows 3245 and 4250) are not linked via pq DRRITEM. Instead, when the default class SLI is provided bandwidth by the NextBurst procedure, the flows above it are obtained from the beq list off of the Inft structure 240 rather than the flow list QUEUE of the default class SLI 260.
또한, 모든 흐름들은 인터페이스상의 그 동작을 제어하는 SLI 구조를 지시하는 포인터 sli를 포함한다. 도 3에서는, 간략화를 위해, 흐름 2(235)를 위한 sli 백 포인터만이 도시되어 있다. In addition, all flows contain a pointer sli that points to an SLI structure that controls its operation on the interface. In FIG. 3, for simplicity, only the sli back pointer for flow 2 235 is shown.
도 4 및 도 5는 본 발명의 스케쥴링 방법에 대한 새로운 패킷의 도착을 프로세싱하기 위한 절차의 동작을 도시한다. 도 4의 단계들은 도 2에 설명된 바와 같은 필드들을 사용하여 C 컴퓨터 언어의 선언들로 표현되어 있지만, 본 발명이 이 컴퓨터 언어에 한정되는 것은 아니다.4 and 5 illustrate the operation of a procedure for processing the arrival of a new packet for the scheduling method of the present invention. Although the steps of FIG. 4 are represented by declarations of the C computer language using the fields as described in FIG. 2, the invention is not limited to this computer language.
도 4를 참조하면, 데이터 통신 장치가 인터페이스의 스케쥴러에 대한 패킷의 도달을 프로세싱할 때, 이는 스텝 300에서 처리 PktArrival()을 호출한다.Referring to FIG. 4, when the data communication device processes the arrival of a packet to the scheduler of the interface, it calls processing PktArrival () at step 300.
Pkt는 패킷의 포인터와 길이를 포함하는 송신 대상 패킷이다. Pkt is a transmission target packet including a pointer and a length of the packet.
F는 패킷이 분류된 FLOW 구조에 대한 포인터이다.F is a pointer to the FLOW structure in which the packet is classified.
I는 패킷이 송신되도록 그 위로 라우팅되는 INTF 구조에 대한 포인터이다.I is a pointer to an INTF structure that is routed over to send the packet.
스텝 305에서, 상기 방법은 흐름 F의 패킷상의 큐된 패킷들의 수가 흐름 F의 서비스 클래스를 위해 허용된 최대 버퍼수를 초과하는지를 체크한다. 그런 경우에는, 스텝 310에서 증분되고, 상기 패킷은 스텝 315에서 버려진다. In step 305, the method checks whether the number of queued packets on packets of flow F exceeds the maximum number of buffers allowed for the service class of flow F. In such a case, it is incremented in step 310 and the packet is discarded in step 315.
그렇지 않은 경우에는 스텝 320에서, 새로 도달된 패킷이 흐름 F의 PacketQ 큐상에 큐된다. 본 방법의 q_enq() 함수는 그 제 2 독립 변수로서 QITEM에 대한 포인터를 취한다. 스텝 320의 경우에, Pkt 구조는 그 제 1 엘리먼트로서 QITEM을 가지는 것으로 가정한다. Otherwise, at step 320, the newly arrived packet is queued on the PacketQ queue of flow F. The q_enq () function of the method takes a pointer to QITEM as its second independent variable. In the case of step 320, it is assumed that the Pkt structure has QITEM as its first element.
스텝 325에서, 흐름 F의 bActive boolean이 체크된다. 흐름이 이미 활성 상태로 표시된 경우에, 패킷 도착시 어떠한 부가적인 처리도 필요하지 않으며, 처리는 스텝 380(도 5)으로 건너뛴다. 그렇지 않은 경우에, 흐름은 활성 상태로 만들어질 필요가 있으며, 스텝 330에서 도 3과 유사한 데이터 구조내로 도입되게 된다.In step 325, the bActive boolean of the flow F is checked. If the flow is already marked active, no additional processing is required upon packet arrival, and processing skips to step 380 (FIG. 5). Otherwise, the flow needs to be made active and is introduced into a data structure similar to FIG. 3 at step 330.
도 5를 참조하면, 스텝 335에서, 흐름이 디폴트 서비스 클래스에 속하는지가 체크된다. 그렇지 않으면, 상기 방법은 스텝 340으로 진행하며, 그곳에서, 흐름이 그 (비디폴트, 우선 순위화) SLI의 플로우리스트 QUEUE상에 큐된다. 상기 흐름의 pq DRRITEM내의 QITEM이 동일 SLI의 흐름들을 함께 링크하도록 사용되는 경우에, 우선 순위화 SLI도 스텝 345에서 활성 상태로 표시되며, 활성 흐름들의 카운트(SLI 구조 170의 nflow 필드)가 증분된다.Referring to FIG. 5, at step 335 it is checked whether the flow belongs to the default service class. Otherwise, the method proceeds to step 340, where the flow is queued on the flowlist QUEUE of that (non-default, prioritized) SLI. If the QITEM in pq DRRITEM of the flow is used to link the flows of the same SLI together, the prioritized SLI is also marked as active in step 345, and the count of active flows (nflow field of SLI structure 170) is incremented. .
스텝 345에 이어서, 스텝 350, 355 및 360에서, 상기 방법은 새로 흐름을 활성화시키는 것이 서비스 클래스의 초과예약 상태가 되게 하는지를 체크한다. 각 흐름은 초당 비트들로 표시되는 정규화된 예약 레이트(nrr)와 연계된다. 이는 흐름을 위해 예약된 대역폭이다. 상기 방법은 조작자가 초과 예약, 즉, 도입 흐름 예약 레이트들의 합이 상기 서비스 클래스에 할당된 용량을 초과하는 상태의 흐름들을 구축 및 도입시킬 수 있게 한다. 상기 용량은 백분율로 서비스 클래스별로 할당된다. 서비스 클래스를 위해 할당된 초당 비트들은 SLI의 필드내의 정규화된 최대 할당 레이트 또는 nmar에 저장된다. 소정의 주어진 시점에, 활성 흐름들의 예약 레이트들의 합이 스텝 350에서 SLI의 sumrev 필드에 저장된다. 이것이 스텝 355에서 상기 클래스(nmar)를 위해 할당된 레이트를 초과할 때 스텝 360에서 상기 SLI가 초과예약 상태인 것으로 표시된다. 동작은 스텝 365에서 재시작된다.Subsequent to step 345, in steps 350, 355, and 360, the method checks whether the newly activating flow is in the overbooked state of the service class. Each flow is associated with a normalized reservation rate (nrr) expressed in bits per second. This is the bandwidth reserved for the flow. The method allows the operator to build and introduce flows in a state where excess reservation, i.e., the sum of introduction flow reservation rates exceeds the capacity allocated to the class of service. The capacity is allocated by service class as a percentage. The bits per second allocated for a class of service are stored at the normalized maximum allocation rate or nmar in the field of the SLI. At any given point in time, the sum of the reservation rates of active flows is stored in the sumrev field of the SLI at step 350. When this exceeds the rate allocated for the class nmar in step 355, the SLI is indicated as being in an overbooked state in step 360. The operation is restarted at step 365.
흐름을 새로이 활성화시키는 것이 pq DRR 큐상에서 이루어지든 아니든, 처리는 스텝 365로 진행하며, 그곳에서, 상기 흐름은 Intf I의 beq QUEUE 구조에 의해 인도되는 최선형 큐상에 큐된다. 흐름의 bq DRRITEM내의 QITEM은 최선형 흐름 리스트상의 흐름들을 링크시키도록 사용된다.Whether new activation of the flow is done on the pq DRR queue or not, processing proceeds to step 365, where the flow is queued on the best queue guided by the beq QUEUE structure of Intf I. QITEM in the bq DRRITEM of the flow is used to link the flows on the best effort flow list.
스텝 370에서, 흐름은 그 디피싯 세트가 퀀텀이 할당된 흐름과 동일한 상태로 현재 DRR 라운드내에서 그 점유를 시작한다. 본 실시예에서, bq(최선형 큐)내의 모든 흐름들과, pq(우선 순위 큐)내의 모든 흐름들은 동일한 퀀텀을 갖는 것으로 간주된다. 예로서, 적합한 퀀텀은 512바이트일 수 있다. 상기 퀀텀은 최대 에터넷 패킷 레이트(1500바이트)보다 작게 선택되어야만 하지만, 패킷의 사이즈에 대한 디피싯을 증분시키기 위해 과도한 수의 DRR 라운드들이 필요하지 않도록 너무 작아서는 안된다. 우선 순위화 SLI들내의 흐름은 두 개의 상이한 DRR 큐들, 즉, 그 자체 클래스 우선 순위화 큐(pq를 경유하여 링크됨)와 최선형 DRR 큐(bq를 경유하여 링크됨)내에 있는 것으로 간주된다는 것을 주목하여야 한다. DR 큐들 양자 모두를 위한 디피싯이 초기화된다.In step 370, the flow starts its occupancy within the current DRR round with its depth set equal to the flow to which the quantum is assigned. In this embodiment, all flows in bq (best queue) and all flows in pq (priority queue) are considered to have the same quantum. By way of example, a suitable quantum may be 512 bytes. The quantum should be chosen smaller than the maximum ethernet packet rate (1500 bytes), but not too small so that an excessive number of DRR rounds are not needed to increment the depth for the size of the packet. Note that the flow within prioritized SLIs is considered to be in two different DRR queues, namely, its own class prioritization queue (linked via pq) and the best-in-class DRR queue (linked via bq). shall. Depisit for both DR queues is initialized.
스텝 375에서, 디폴트(SLI)는 흐름이 최선형 흐름 리스트에 추가되었기 때문에 활성상태인 것으로 표시된다. 디폴트(SLI)상의 활성 흐름들의 카운트가 증분된다.In step 375, the default SLI is marked as active because the flow was added to the best effort flow list. The count of active flows on the default SLI is incremented.
스텝 380에서, 흐름이 초과 예약 상태에 있는지가 체크된다. 흐름이 활성화되고, 그곳에 이미 그 예약된 레이트들이 그 서비스 클래스를 위한 링크의 할당된 용량을 초과하는 흐름 서비스 클래스내의 다른 활성 흐름들이 존재할 때, 흐름은 초과 예약 상태에 있게 된다. 본 발명의 방법은 이런 흐름들의 초과예약 상태를 유지하고, 초과 예약 상태에서 패킷들의 도착들을 계수한단느 점에서 특유하다.In step 380, it is checked whether the flow is in an overbooked state. When a flow is activated and there are other active flows in the flow service class that already have their reserved rates exceeding the link's allocated capacity for that service class, the flow is in an overbooked state. The method of the present invention is unique in that it maintains the overbooked state of these flows and counts the arrivals of packets in the overbooked state.
서비스 클래스들이 초과 예약 상태에 있는지를 발견하기 위해 도착한 패킷은 스텝 30에서 "초과 예약 패킷 도착"의 카운트가 증분되게 한다.A packet that arrives to discover if service classes are in an overbooked state causes the count of "Overbooked packet arrivals" to be incremented in step 30.
스텝 395는 패킷 도착 프로세싱을 종결한다.Step 395 terminates packet arrival processing.
패킷이 분류되는 흐름은 이제 도 3에 예시된 데이터 구조로 삽입된다.The flow in which the packet is classified is now inserted into the data structure illustrated in FIG.
도 6, 7, 8, 9 및 10은 송신될 패킷들 또는 바이트들의 NextBurst의 스케쥴링 방법을 도시하고 있다. NextBurst 작업은 하나 이상의 패킷들의 송신이 완료되고, 데이터 통신 송신기가 다음 패킷 또는 패킷들의 그룹을 선택하도록 스케쥴러를 요청할 때, 시동된다. 알고리즘은 NextBurst의 호출자가 전송될 바이트들의 최대수(maxBurst) 또는 송신될 패킷들의 최대수(maxPkts)를 특정지을수 있도록 표현된다. 이들 두 파라미터들은 다음 버스트가 송신될 INTF 인터페이스에 대한 포인터와 함께 NextBurst 작업(400)에 대한 파라미터들을 형성한다. 6, 7, 8, 9 and 10 illustrate a method of scheduling NextBurst of packets or bytes to be transmitted. The NextBurst task is initiated when the transmission of one or more packets is complete and the data communication transmitter requests the scheduler to select the next packet or group of packets. The algorithm is expressed such that the caller of NextBurst can specify the maximum number of bytes to be transmitted (maxBurst) or the maximum number of packets to be transmitted (maxPkts). These two parameters form the parameters for NextBurst operation 400 with a pointer to the INTF interface to which the next burst will be sent.
NextBurst 루틴은 다수의 로컬 변수들을 가지고 있다.The NextBurst routine has a number of local variables.
active_classes는 활성 상태인 SLI들의 수의 카운트이다.active_classes is a count of the number of SLIs that are active.
overlimit_classes는 "오버리미트"인 SLI들의 수의 카운트이다. 오버리미트 SLI는 모든 흐름들이 "오버리미트"인 것이다. 오버리미트 흐름은 초과된 그 트래픽 토큰 버킷을 가지는 것이다. 트래픽 토큰 버킷은 흐름이 그 예약 최소 레이트를 초과하는지를 측정한다. overlimit_classes is a count of the number of SLIs that are "overlimit". Overlimit SLI is that all flows are "overlimit". Overlimit flow is to have that traffic token bucket exceeded. The traffic token bucket measures whether the flow exceeds its reservation minimum rate.
nover은 특정 서비스 클래스내의 오버리미트 흐름들의 수의 카운트이다.nover is a count of the number of overlimit flows in a particular service class.
bReturn은 상기 방법이 NextBurst 루틴이 리턴되어야만 한다는 것을 결정할 때, TRUE(즉, 1로 설정되는) 제어 플래그이다.bReturn is a TRUE (ie set to 1) control flag when the method determines that the NextBurst routine should be returned.
P는 대역폭을 제공받는 현 SLI 구조에 대한 포인터이다.P is a pointer to the current SLI structure that receives the bandwidth.
F는 대역폭을 제공받는 현 흐름(P 내에서)에 대한 포인터이다.F is a pointer to the current flow (within P) that is provided with bandwidth.
Pkt는 시험되는 F의 현 패킷에 대한 포인터이다.Pkt is a pointer to the current packet of F being tested.
스텝 405에서, 상기 방법은 로컬 변수들을 초기화하고, 모든 SLI들을 통해 스캔하며(INTF내의 p_classes QUEUE를 경유하여), 상기 클래스의 bOverlimit 비트를 0(즉, FALSE)으로 설정한다.In step 405, the method initializes local variables, scans through all SLIs (via p_classes QUEUE in INTF), and sets the bOverlimit bit of the class to 0 (ie, FALSE).
스텝 410은 "우선 순위 DRR 큐"의 다음 DRR 라운드를 시작한다. 이는 로컬 SLI 포인터(P)를 INTF의 p_classes 큐의 헤드로 설정한다. "q_head(QUEUE)" 작업은 큐의 헤드에 대한 포인터를 반환하지만, 이를 상기 큐로부터 제거하지는 않는다는 것을 주목하여야 한다.Step 410 begins the next DRR round of the "Priority DRR Queue". This sets the local SLI pointer (P) to the head of the p_classes queue of INTF. Note that the "q_head (QUEUE)" operation returns a pointer to the head of the queue but does not remove it from the queue.
스텝 415는 모든 클래스들이 현재의 우선 순위 클래스 DRR 라운드에서 대역폭을 제공받았는지를 체크한다. 그런 경우에, P 포인터는 0이되며, 다음 클래스 DRR 라운드가 스텝 420에서 시작된다. 이 스텝에서, 스텝 425가 상기 인터페이스내의 각 클래스(즉, bExhausted==1인 INTF 구조의 P-classes QUEUE를 경유하여 링크된 모든 SLI들)에 대해 실행된다. 이는 이들이 그 클래스 DRR 디피싯을 소진한다는 것을 의미한다. 그 디피싯은 스텝 430에서 전용 퀀텀에 의해 증가되며, bExhausted 플래그는 다음 클래스 DRR 라운드를 위한 SLI를 준비하도록 클리어된다. Step 415 checks whether all classes have been provided with bandwidth in the current priority class DRR round. In such a case, the P pointer becomes zero and the next class DRR round begins at step 420. In this step, step 425 is executed for each class in the interface (i.e. all SLIs linked via the P-classes QUEUE of the INTF structure with bExhausted == 1). This means that they run out of class DRR depths. The depth is incremented by the dedicated quantum at step 430, and the bExhausted flag is cleared to prepare the SLI for the next class DRR round.
바로 완료된 라운드, "오버리미트" 클래스들의 수는 로컬 카운터 "overlimit_classes"에서 누산되었다. 이들은 흐름들 중 소정의 것을 패킷을 포워딩하기에 적합하게 하기 위해 NextBurst에 대한 추후 호출까지 기다려야만 하는 클래스들이다. 스텝 435에서, 이 overlimit_classes카운트가 활성 클래스들의 수와 비교되며, 모든 클래스들이 오버리미트인 경우에, NextBurst는 어떠한 패킷도 포워딩할 수 없으며, 스텝 445에서 sent==0으로 복귀한다. Immediately completed round, the number of "overlimit" classes was accumulated in the local counter "overlimit_classes". These are classes that must wait until a later call to NextBurst to make certain of the flows suitable for forwarding the packet. In step 435, this overlimit_classes count is compared to the number of active classes, and if all classes are overlimit, NextBurst cannot forward any packets and returns to sent == 0 in step 445.
스텝 440에서, 마지막 클래스 DRR 라운드가 더 이상 어떠한 활성 클래스들도 없도록 모든 큐된 패킷들을 비워버린 경우에, NextBurst도 스텝 445로 복귀한다. 그러나, 여전히 활성 클래스들이 존재하는 경우에, 스텝 410으로 다시 천이함으로써 새로운 클래스 DRR 라운드가 시작한다.In step 440, if the last class DRR round has emptied all the queued packets such that there are no longer any active classes, NextBurst also returns to step 445. However, if there are still active classes, a new class DRR round begins by transitioning back to step 410.
다시 스텝 415에서, 현 클래스 DRR 라운드가 끝나지 않은 경우, 처리는 스텝 450으로 진행한다. 스텝 450에서, 현 SLI가 활성 상태로 표시되지 않은 경우, 이는 활성 상태인 흐름을 갖지 않는다는 것을 의미하며, 생략될 수 있다는 것을 의미한다. 이 경우에, 상기 방법은 스텝 455로 진행하여 인터페이스의 p_classes 큐상의 다음 하위 우선 순위 SLI를 취하며, 그후, 스텝 415로 후행한다.Again in step 415, if the current class DRR round has not ended, processing proceeds to step 450. In step 450, if the current SLI is not marked as active, it means that it does not have an active flow, which means that it can be omitted. In this case, the method proceeds to step 455 to take the next lower priority SLI on the p_classes queue of the interface, and then to step 415.
현 SLI(P로 어드레스됨)가 활성 상태인 경우, 상기 방법은 스텝 450으로 이행하며, 그곳에서, active_classes의 수가 1만큼 증분된다.If the current SLI (addressed to P) is active, the method proceeds to step 450, where the number of active_classes is incremented by one.
후속하는 스텝 460에서, SLI는 현 우선 순위 DRR 라운드내의 그 디피싯이 소진되었는지가 체크된다. 상기 P->bExhaysted 플래그가 이 목적을 위해 사용된다. 이런 경우에, 이 SLI는 현 우선 순위 DRR 라운드에서 대역폭을 받을 수 없으며, 다음 SLI가 스텝 455에서 체크되어야만 한다.In a subsequent step 460, the SLI checks to see if the deficits in the current priority DRR round are exhausted. The P-> bExhaysted flag above is used for this purpose. In this case, this SLI cannot receive bandwidth in the current priority DRR round and the next SLI must be checked in step 455.
그렇지 않은 경우에, 상기 방법은 스텝 470으로 이어지고, 그곳에서, 현 SLI의 bOverlimit 플래그가 체크된다. 이 플래그는 SLI의 모든 흐름들이 오버리미트일 때 설정된다. 이 경우에, 우선 순위 SLI에 대역폭이 주어지지 않으며, 다음 SLI가 스텝 455를 통해 체크되어야만 한다.If not, the method continues to step 470, where the bOverlimit flag of the current SLI is checked. This flag is set when all flows in the SLI are overlimit. In this case, no bandwidth is given to the priority SLI, and the next SLI must be checked through step 455.
그렇지 않은 경우에, 상기 방법은 스텝 475, 480 및 485로 이어지고, 그곳에서, 현 클래스가 "디폴트" 클래스인지 아닌지에 따라 로컬 변수 "FlowQP"가 설정되게 된다. 현 CLI(P)가 디폴트인 경우에, 대역폭이 제공될 흐름들의 관련 큐은 흐름의 I->beq "최선형" 큐이다. 현 CLI(P)가 우선 순위 큐인 경우에, 그때, 적합한 흐름들만이 상기 CLI의 플로우리스트 큐로부터 링크된 것들이다. FlowQP는 전용 QUEUE 구조에 대한 포인터로 설정된다.Otherwise, the method continues to steps 475, 480, and 485, where a local variable "FlowQP" is set depending on whether the current class is a "default" class or not. If the current CLI (P) is the default, then the relevant queue of flows for which bandwidth is to be provided is the I-> beq "best" queue of flows. If the current CLI (P) is a priority queue, then only the appropriate flows are those linked from the CLI's flowlist queue. FlowQP is set to a pointer to a dedicated QUEUE structure.
어느 한쪽의 경우에, 상기 방법은 스텝 490으로 이어지며, 그곳에서, 현 클래스내의 오버리미트 흐름들의 수(nover)가 0으로 초기화된다.In either case, the method continues to step 490, where the number of overlimit flows in the current class is initialized to zero.
스텝 495는 현 서비스 클래스의 "Next Flow"에 대해 대역폭을 제공하기 위해 공통 프로세싱 포인트를 표시한다. "Next Flow"로 라벨링된 오프시트 커넥터 오브젝트(off-sheet connector object) "505"가 도 6으로부터 참조된다. 스텝 495에서, 로컬 포인터 F는 FlowQP 큐의 헤드로 설정된다(그러나, 상기 흐름은 큐 해지되지 않는다).Step 495 indicates common processing points to provide bandwidth for the "Next Flow" of the current class of service. An off-sheet connector object "505" labeled "Next Flow" is referenced from FIG. In step 495, the local pointer F is set to the head of the FlowQP queue (but the flow is not queued).
다음에, 상기 방법은 스텝 500에서 현 SLI의 모든 흐름들이 그 패킷들이 비워졌는지, 즉, F가 눌(null)인지를 체크한다. 그렇지 않으면, 상기 방법은 도 7의 스텝 525로 이어진다.Next, the method checks at step 500 that all flows of the current SLI have their packets emptied, ie F is null. Otherwise, the method continues to step 525 of FIG. 7.
스텝 500에서, 주어진 서비스 클래스의 모든 흐름들이 소진 것으로 결정된 경우에(즉, F==0), 상기 서비스 클래스는 스텝 510에서 비활성 상태로 표시되며, 활성 서비스 클래스들의 총수가 감소된다. 스텝 515에서, 상기 방법은 NextBurst 방법의 현재의 시도가 패킷들의 양호한 최대수를 송신하였을 때 스텝 795에서 설정된 bReturn 플래그를 체크한다. 만약 그런 경우에, NextBurst 방법은 스텝 520에서 종결된다. 그렇지 않으면, 다음 서비스 클래스의 처리가 스텝 455에서 이어진다.In step 500, if all flows of a given service class are determined to be exhausted (ie, F == 0), the service class is marked as inactive in step 510, and the total number of active service classes is reduced. In step 515, the method checks the bReturn flag set in step 795 when the current attempt of the NextBurst method has sent a good maximum number of packets. If so, the NextBurst method ends at step 520. Otherwise, processing of the next service class continues at step 455.
스텝 525에서, 상기 방법은 현 서비스 클래스내의 모든 흐름들이 오버리미트인지를 체크한다. 그런 경우에, 상기 방법은 스텝 530으로 이행하고, 그곳에서, 상기 클래스 자체가 오버리미트로 표시되며, 다음 서비스 클래스들을 체크하기 위한 스텝 455로의 NextBurst 방법의 이 시도의 이행을 위해 오버리미트 클래스들의 수가 검출된다.In step 525, the method checks whether all flows in the current service class are overlimit. In such a case, the method proceeds to step 530, where the class itself is marked as overlimit, and the number of overlimit classes for the implementation of this attempt of the NextBurst method to step 455 to check the next service classes Is detected.
클래스 자체가 오버리미트가 아닌 경우에, 상기 방법은 스텝 525로부터 스텝 535로 이행한다. 이는 현 흐름상의 다음 패킷의 "Next Packet 처리를 시작한다. 로컬 포인터 Pkt가 현 흐름의 패킷 큐(PacketQ)의 헤드로 설정되지만, 패킷 자체는 큐로부터 제거되지 않는다. If the class itself is not overlimit, the method proceeds from step 525 to step 535. This starts processing the "Next Packet" of the next packet on the current flow. The local pointer Pkt is set to the head of the packet queue of the current flow, but the packet itself is not removed from the queue.
후속 단계 545에서, Pkt 포인터가 체크된다. 이것이 NULL인 경우, 현 흐름내의 모든 패킷들이 송신되고, 상기 방법은 스텝 585로 이행한다. 스텝 585는 흐름이 비활성 상태가 될 때 상기 케이스를 위해 도 2의 데이터 구조와 통계치들을 갱신한다. 상기 흐름은 우선 순위 DRR 큐(즉, SLI 플로우리스트 QUEUE)와 최선형 DRR 큐(INTF의 "beq" QUEUE로부터) 양자 모두로부터 제거된다. 또한, 스텝 585는 클래스내의 모든 활성 흐름들의 예약 레이트들의 합의 카운트, 즉, "P->sumresv" 카운트를 감소시킨다. 스텝 590에서, P->sumrev가 "정규화된 최대 할당 레이트(P->nmar)" 아래로 떨어지는 경우에, 상기 클래스는 더 이상 초과 예약 상태에 있는 것으로 간주되지 않는다. 이 경우에, P->Overbooked 플래그는 스텝 595에서 클리어된다. 각 경우에, 스텝 590에서의 체크 이후, 상기 방법은 스텝 495에서 현 SLI내의 다음 흐름으로 이어진다.In a subsequent step 545, the Pkt pointer is checked. If this is NULL, all packets in the current flow are transmitted and the method proceeds to step 585. Step 585 updates the data structure and statistics of FIG. 2 for the case when the flow becomes inactive. The flow is removed from both the priority DRR queue (ie, SLI flowlist QUEUE) and the best-in-class DRR queue (from the "beq" QUEUE of INTF). Step 585 also decreases the sum of the sum of the reservation rates of all active flows in the class, i. In step 590, if P-> sumrev falls below the "normalized maximum allocation rate (P-> nmar)", the class is no longer considered to be in an overbooked state. In this case, the P-> Overbooked flag is cleared in step 595. In each case, after the check in step 590, the method continues to the next flow in the current SLI in step 495.
다시 스텝 545에서, 현 Pkt 포인터가 눌이 아닌 경우에, 상기 방법은 스텝 550으로 이행한다. 이 스텝에서, bReturn 플래그가 스텝 765에 의해 설정되었는지가 체크되며, 이 경우에, 상기 방법은 스텝 560으로 복귀된다. bReturn 플래그가 아직 설정되지 않은 경우에, 처리는 스텝 555로 이어진다.Again in step 545, if the current Pkt pointer is not pressed, the method proceeds to step 550. In this step, it is checked whether the bReturn flag is set by step 765, in which case the method returns to step 560. If the bReturn flag has not yet been set, processing continues to step 555.
스텝 555는 패킷을 전송하는 것이 상기 NextBurst 루틴이 NextBurst 루틴 호출에서 허용된 최대 바이트수를 초과하게 만드는지를 체크한다. 현재 실행중인 송신된 총 바이트들은 "sent" 로컬 변수로 유지된다. 이 경우에, 현 패킷을 송신하지 않고 NextBurst는 스텝 560으로 리턴한다.Step 555 checks whether sending the packet causes the NextBurst routine to exceed the maximum number of bytes allowed in the NextBurst routine call. The total bytes sent currently being executed are kept in the "sent" local variable. In this case, NextBurst returns to step 560 without transmitting the current packet.
스텝 555가 루틴 호출당 최대 버스트가 초과되지 않은 것을 검출하지 못하는 경우에, 상기 방법은 스텝 565로 이어지며, 여기서, 우선 순위 DRR 큐 "디피싯"가 체크된다. 패킷 길이가 우선 순위 "클래스" DRR 아이템의 디피싯 카운트(즉, P->cq. 디피싯)를 초과하는 경우에, 현 클래스는 본 우선 순위 DRR 라운드에서 그 허용된 전송이 소진된다. 이 경우에, 서비스 클래스는 bExhausted 플래그가 1(참)로 설정된 상태로 표시되며, 상기 방법은 스텝 455에서 다음 서비스 클래스를 체크하도록 진행한다.If step 555 does not detect that the maximum burst per routine call has not been exceeded, the method continues to step 565 where the priority DRR queue "depitst" is checked. If the packet length exceeds the depth count of the priority "class" DRR item (i.e., P-> cq. Depth), the current class is exhausted its allowed transmissions in this priority DRR round. In this case, the service class is displayed with the bExhausted flag set to 1 (true), and the method proceeds to step 455 to check the next service class.
그러나, 서비스 클래스 DRR 디피싯이 스텝 565에서 소진되지 않은 경우에, 상기 방법은 스텝 575에서 다시 시작하며, 여기서, 상기 흐름을 위한 최대 레이트 토큰 버킷이 갱신된다. 토큰 버킷을 갱신시키기 위한 처리(tokbkt_update())는 그 최근 갱신으로부터 경과된 CPU 프로세서 틱들(ticks)의 두에 기초하여 토큰 버킷 카운트에 토큰들의 적절한 수를 가산한다. 토큰 버킷내의 각 "토큰"은 일 바이트를 전송하기 위한 권리를 부여한다.However, if the service class DRR depth is not exhausted in step 565, the method begins again in step 575, where the maximum rate token bucket for the flow is updated. The process for updating the token bucket (tokbkt_update ()) adds the appropriate number of tokens to the token bucket count based on two of the CPU processor ticks that have elapsed from the last update. Each "token" in the token bucket grants the right to send one byte.
스텝 580에서, 상기 방법은 패킷 길이를 바로 갱신된 최대 레이트 토큰 버킷내의 토큰들의 수(F->maxBkt)와 비교한다. 토큰들이 불충분한 경우에, 상기 방법은 스텝 600으로 이행한다. 여기에서, 상기 방법은 이런 "overMaximum" 패킷 스케쥴링 시도의 카운트를 증분하고, 현 서비스 클래스내의 "오버리미트" 흐름들의 수(로컬 변수 "nover")를 증분한다. 스텝 605에서, 작업 "MoveFlowToEnd()"가 상기 오버리미트 흐름을 그 현 흐름 큐의 끝으로 이동시키기 위해 시도된다. 상기 흐름은 그 최대 레이트 토큰 버킷에 보다 많은 토큰들을 추가하기 위해 충분한 시간이 경과될 수 있는 NextBurst에 대한 후속하는 호출까지 패킷들을 전송하는 것이 허용되지 않는다. 상기 방법은 스텝 605로부터 스텝 495에서 현 클래스내의 다음 흐름을 취급하도록 이행된다.In step 580, the method compares the packet length with the number of tokens in the updated maximum rate token bucket (F-> maxBkt). If the tokens are insufficient, the method proceeds to step 600. Here, the method increments the count of such "overMaximum" packet scheduling attempts and increments the number of "overlimit" flows (local variable "nover") in the current service class. In step 605, a task "MoveFlowToEnd ()" is attempted to move the overlimit flow to the end of its current flow queue. The flow is not allowed to send packets until a subsequent call to NextBurst where enough time may elapse to add more tokens to its maximum rate token bucket. The method transitions from step 605 to step 495 to handle the next flow in the current class.
상기 방법이 스텝 580에서 최대 레이트 토큰 버킷 리미터를 통과하는 경우에, 이는 스텝 610으로 이어지고, 이는 도 8 및 도 9의 NextBurst 처리로 이어지는 커넥터이다.If the method passes the maximum rate token bucket limiter at step 580, this continues to step 610, which is the connector that leads to the NextBurst process of FIGS. 8 and 9.
스텝 620은 도 7로부터의 NextBurst 처리의 연속이다.Step 620 is a continuation of NextBurst processing from FIG.
도 625는 대역폭을 제공받은 현 클래스가 디폴트 클래스인지를 체크한다. 그렇지 않은 경우에, 스텝 630은 흐름을 위한 예약 레이트 "트래픽" 토큰 버킷을 갱신하고, 스텝 635는 상기 흐름이 현재 그 예약 레이트 아래인지를 체크한다. 그렇지 않은 경우에, 상기 방법은 스텝 640에서 상기 패킷이 그 트래픽 레이트를 초과한 것으로 표시하고, 상기 흐름을 스텝 645의 그 우선 순위 DRR 리스트의 끈으로 이동시켜, 스텝 700 내지 720에서 설명한 바와 같은 MoveFlowToEnd() 하위 방법을 시도한다. 상기 흐름은 그 우선 순위화 서비스 클래스에 제공된 대역폭내의 그 트래픽 레이트 토큰 버킷을 초과하는 트래픽을 전송하는 것이 허용되지 않는다. 이는 상기 대역폭이 디폴트 서비스 클래스에 제공될 때에만 전송할 수 있다. 상기 흐름을 그 CLI의 플로우리스트의 끝으로 이동시킨 이후에, 스텝 650은 현 클래스내의 다음 흐름을 처리하기 위해 스텝 495로 이행한다.625 checks whether the current class provided with the bandwidth is the default class. If not, step 630 updates the reservation rate "traffic" token bucket for the flow, and step 635 checks if the flow is currently below its reservation rate. Otherwise, the method indicates at step 640 that the packet has exceeded its traffic rate and moves the flow to the string of its priority DRR list at step 645, moving MoveToToEnd as described in steps 700 to 720. Try the sub () method. The flow is not allowed to transmit traffic in excess of its traffic rate token bucket within the bandwidth provided for its prioritized service class. This can only be transmitted when the bandwidth is provided to a default class of service. After moving the flow to the end of the flow list of the CLI, step 650 proceeds to step 495 to process the next flow in the current class.
스텝 635가 상기 흐름이 그 예약 트래픽 레이트 한계를 초과하지 않은 것으로 결정한 경우, 이는 스텝 655로 이행한다. 이 스텝은 상기 흐름을 위한 현 패킷이 흐름별 DRR 라운드를 위한 디피싯, 즉, F->pq.deficit를 초과하는지를 체크한다. 그런 경우에, 상기 흐름이 다음 흐름별 DRR 라운드까지 백로그되어야만 하기 때문에, 상기 루틴은 스텝 660으로 이행한다. 스텝 660에서, 상기 흐름의 "pq"DRR 아이템 디피싯은 퀀텀 만큼 증가된다. 스텝 665에서, MoveFlowToEnd 하위 방법이 시도되어 상기 흐름을 현 클래스의 플로우리스트의 전방으로부터 후방으로 이동시키며, 처리는 스텝 495에서 다음 흐름으로 이어진다.If step 635 determines that the flow does not exceed its reserved traffic rate limit, it proceeds to step 655. This step checks whether the current packet for the flow exceeds the depth for the flow-specific DRR round, i.e., F-> pq.deficit. In such a case, the routine proceeds to step 660 because the flow must be backlogged until the next flow-specific DRR round. In step 660, the "pq" DRR item depth of the flow is increased by quantum. In step 665, the MoveFlowToEnd sub-method is attempted to move the flow from front to back of the flow list of the current class, and processing continues to the next flow in step 495.
스텝 625에서, 대역폭을 제공받는 현 클래스가 실제 디폴트 클래스인 경우에, 상기 방법은 스텝 675로 이어진다. 스텝 675 내지 690은 비 디폴트 클래스에 대해 사용된 방법과 유사하다. 스텝 675는 상기 패킷의 길이를 상기 최선형 DRR 리스트상의 흐름의 디피싯(F->bq.deficit)과 비교한다. 패킷 길이가 흐름의 디피싯 보다 작은 경우에, 상기 방법은 스텝 725로 이어진다. 그러나, 다음 패킷의 길이가 최선형 DRR 디피싯을 초과하는 경우에, 상기 방법은 스텝 680으로 이어진다. 스텝 680에서, 상기 흐름의 최선형 DRR 디피싯은 흐름의 최선형 DRR 퀀텀(F->bq.quantum)만큼 증가된다. 스텝 685에서, 흐름은 스텝 700 내지 720에서 설명된 바와 같이, MoveFlowToEnd 방법을 시도함으로써, 상기 클래스의 흐름 리스트의 끝으로 이동된다. 스텝 685 이후에, 상기 방법은 스텝 495에서 다음 흐름을 처리하기 위해 "Next Flow" 라벨 505를 경유하여 복귀된다.In step 625, if the current class provided with bandwidth is the actual default class, then the method continues to step 675. Steps 675 to 690 are similar to the method used for non-default classes. Step 675 compares the length of the packet with the depth of the flow on the best-in-class DRR list (F-> bq.deficit). If the packet length is less than the depth of flow, the method continues to step 725. However, if the length of the next packet exceeds the best-in-class DRR depth, the method continues to step 680. In step 680, the best DRR depth of the flow is increased by the best DRR quantum of the flow (F-> bq.quantum). In step 685, the flow is moved to the end of the flow list of the class by attempting the MoveFlowToEnd method, as described in steps 700-720. After step 685, the method returns via “Next Flow” label 505 to process the next flow in step 495.
스텝 700은 위의 스텝 605, 645, 665 및 695에 의해 시도된 MoveFlowToEnd 하위 방법의 시작이다. MoveFlowToEnd 방법은 특정 흐름(F)에 대하여, 그리고, 특정 DRR 큐 FlowPQ에 대하여 시도된다. 흐름이 두 개의 상이한 DRR 큐들의 일원일 수 있으며, 마찬가지로, 두 개의 상이한 DRRITEM들(160, F->pq 및 F->bq)을 가진다는 것을 상기하기 바란다. MoveFlowToEnd 방법은 단순히 변경될 적절한 DRRITEM을 선택한다. 스텝 705에서, DRR 큐 포인터 FlowPQ가 그것이 최선형 큐인지를 검사하기 위해 체크된다. 그런 경우에, 상기 방법은 스텝 715로 이행하며, 그곳에서, 상기 흐름은 먼저 최선형 DRR 큐의 시작으로부터 큐 해제되고(q_remove(FlowPQ, &P->bq)), 그후, 그 DRR 큐의 테일에 큐 상태가 된다(q_enq(FlowPQ, &P->bq)). 상기 MoveFlowToEnd 하위 방법은 그후 스텝 720에서 종결된다. 스텝 705가 우선 순위 DRR 큐이 최선형 DRR 큐 대신 변경된 것을 걸정하는 경우에, 상기 방법은 스텝 710으로 이행하며, 그곳에서, 상기 흐름은 먼저 우선 순위 DRR 큐의 헤드로부터 제거되고, 그후 테일에 다시 큐 상태가 된다.Step 700 is the beginning of the MoveFlowToEnd submethod attempted by steps 605, 645, 665 and 695 above. The MoveFlowToEnd method is tried for a specific flow F and for a specific DRR queue FlowPQ. Recall that a flow can be a member of two different DRR queues and likewise have two different DRRITEMs 160, F-> pq and F-> bq. The MoveFlowToEnd method simply selects the appropriate DRRITEM to be changed. In step 705, the DRR queue pointer FlowPQ is checked to see if it is the best queue. In that case, the method proceeds to step 715, where the flow is first dequeued from the beginning of the best-in-class DRR queue (q_remove (FlowPQ, & P-> bq)) and then queued to the tail of that DRR queue. State (q_enq (FlowPQ, & P-> bq)). The MoveFlowToEnd sub method then terminates at step 720. If step 705 determines that the priority DRR queue has changed instead of the best-in-class DRR queue, the method proceeds to step 710, where the flow is first removed from the head of the priority DRR queue and then queued back to the tail. Becomes
이제, MextBurst 방법의 도10을 참조하면, 스텝 655 또는 스텝 675가 상기 흐름이 현 패킷을 송신하기 위해 상기 현 흐름 DRR 라운드내에 충분한 디피싯을 가지고 있는 것으로 결정한 경우에, 제어는 스텝 725(도 9)로 이행한다. 상기 패킷은 실제로 스텝 725에서 상기 흐름 패킷 큐의 헤드로부터 큐 해제되게 된다.Referring now to FIG. 10 of the MextBurst method, if step 655 or 675 determines that the flow has sufficient depth in the current flow DRR round to transmit the current packet, then control is passed to step 725 (FIG. 9). To. The packet is actually dequeued from the head of the flow packet queue in step 725.
스텝 730은 실제로 상기 패킷을 전송 링크상으로 전송하기 위해 작업 "send()"를 시도한다. 상기 로컬 변수 sent는 상기 "send()" 작업을 경유하여 송신된 바이트들의 수를 누산한다.Step 730 actually attempts an operation "send ()" to send the packet over the transmission link. The local variable sent accumulates the number of bytes sent via the "send ()" operation.
스텝 735, 740, 745 및 750은 전용 DRRITEM의 "디피싯" 카운트로부터 바로 송신된 패킷 길이를 결정함으로써 전용 흐름 DRR 큐을 갱신한다. 디폴트 클래스에 대하여, 이는 F->bq(스텝 740)이며, 비디폴트 클래스의 경우에, 이는 F-pq이다. 어느쪽의 경우든지, 처리는 스텝 750에서 재개되며, 클래스 레벨 DRR 큐을 위한 DRR 디피싯(P->cq)가 상기 패킷 길이만큼 감소된다.Steps 735, 740, 745, and 750 update the dedicated flow DRR queue by determining the packet length sent directly from the "depitsit" count of the dedicated DRRITEM. For the default class, this is F-> bq (step 740), and for non-default classes this is F-pq. In either case, processing resumes at step 750, where the DRR depth (P-> cq) for the class level DRR queue is reduced by the packet length.
스텝 755에서, 통계치들의 수가 갱신된다. 상기 흐름의 트래픽 레이트와 최대 레이트 토큰 버킷들은 각 전송된 바이트에 대해 하나의 제거된 토큰을 갖는다. 간격을 더하는 현 통계치들이 흐름별 통계치들 및 클래스별 통계치들 양자 모두에 대하여 증분된다.In step 755, the number of statistics is updated. The traffic rate and maximum rate token buckets of the flow have one removed token for each transmitted byte. The current statistics, plus the interval, are incremented for both flow-specific and class-specific statistics.
스텝 760은 NextBurst의 이 시도에서 송신된 패킷들의 카운트(sentpkts)를 증분한다. 이것이 송신 요청된 최대 패킷 수(파라미터 maxPackets) 보다 낮은 경우에, 프로세스는 현 흐름에서 다음 패킷에서 재개되며, 이는 스텝 535에 대한 "NextPacket" 커넥터를 경유하여 표시된다. maxPackets 카운트가 도달되는 경우에, 스텝 765에서, 제어 플래그 "bReturn"가 TRUE로 설정된다. 상기 방법의 동작은 그후 스텝 540으로 복귀되어 다음 패킷을 고려한다. 스텝 765내의 "bReturn" 플래그 세트는, 바로 송신된 패킷이 활성 서비스 클래스의 마지막 패킷일 때, 상기 방법이 도 2의 데이터 구조들을 적절하게 갱신한 이후에, 상기 경우에 대하여 시험된다.Step 760 increments the count (sentpkts) of packets transmitted in this attempt of NextBurst. If this is lower than the maximum number of packets requested for transmission (parameter maxPackets), the process resumes at the next packet in the current flow, which is indicated via the "NextPacket" connector for step 535. If the maxPackets count is reached, in step 765 the control flag "bReturn" is set to TRUE. Operation of the method then returns to step 540 to consider the next packet. The " bReturn " flag set in step 765 is tested for this case after the method properly updates the data structures of FIG. 2 when the packet just sent is the last packet of the active class of service.
상술한 실시예들은 단순히 본 발명의 원리를 예시하는 것이라는 것을 명심하여야 한다. 본 기술 분야의 숙련자들은 본 발명의 원리를 구체화하면서 본 발명의 범위와 개념내에 속하는 다양한 다른 변화들 및 변경들을 구현할 수 있다.It should be noted that the above-described embodiments are merely illustrative of the principles of the present invention. Those skilled in the art can implement various other changes and modifications within the scope and concept of the invention while embodying the principles of the invention.
Claims (21)
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US60/156,123 | 1999-09-25 | ||
US15612300P | 2000-09-25 | 2000-09-25 | |
PCT/US2000/026312 WO2001024428A1 (en) | 1999-09-25 | 2000-09-25 | Hierarchical prioritized round robin (hprr) scheduling |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20020059596A KR20020059596A (en) | 2002-07-13 |
KR100475783B1 true KR100475783B1 (en) | 2005-03-10 |
Family
ID=49237755
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2002-7003875A KR100475783B1 (en) | 2000-09-25 | 2000-09-25 | Hierarchical prioritized round robin(hprr) scheduling |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100475783B1 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100545793B1 (en) * | 2003-12-18 | 2006-01-24 | 한국전자통신연구원 | Scheduling Method and Device in Dynamic Multichannel Environment |
KR100582907B1 (en) * | 2004-10-13 | 2006-05-25 | 한국전자통신연구원 | Effective Bandwidth Allocation System and its Method According to Traffic Quality Requirements |
KR100780396B1 (en) * | 2007-06-18 | 2007-11-28 | 주식회사 셀런 | Traffic Control Method of IPTV Service |
-
2000
- 2000-09-25 KR KR10-2002-7003875A patent/KR100475783B1/en not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR20020059596A (en) | 2002-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7457313B2 (en) | Hierarchical prioritized round robin (HPRR) scheduling | |
US6859438B2 (en) | Policy based quality of service | |
US6188698B1 (en) | Multiple-criteria queueing and transmission scheduling system for multimedia networks | |
US6104700A (en) | Policy based quality of service | |
US8638664B2 (en) | Shared weighted fair queuing (WFQ) shaper | |
US7006437B2 (en) | Scheduling mechanisms for use in mobile ad hoc wireless networks for achieving a differentiated services per-hop behavior | |
US7263063B2 (en) | Per hop behavior for differentiated services in mobile ad hoc wireless networks | |
US7680139B1 (en) | Systems and methods for queue management in packet-switched networks | |
US7382727B2 (en) | System and method for asymmetrical bandwidth management | |
EP2174450B1 (en) | Application data flow management in an ip network | |
US20040073694A1 (en) | Network resource allocation and monitoring system | |
KR20040000336A (en) | Packet transmitting apparatus, packet transmitting method, traffic conditioner, priority controlling mechanism, and packet shaper | |
WO2001024428A1 (en) | Hierarchical prioritized round robin (hprr) scheduling | |
US8547846B1 (en) | Method and apparatus providing precedence drop quality of service (PDQoS) with class-based latency differentiation | |
GB2339371A (en) | Rate guarantees through buffer management | |
Homg et al. | An adaptive approach to weighted fair queue with QoS enhanced on IP network | |
US20100195492A1 (en) | Controlling Traffic in a Packet Switched Communications Network | |
US20050068798A1 (en) | Committed access rate (CAR) system architecture | |
CA2462793C (en) | Distributed transmission of traffic streams in communication networks | |
KR20020079904A (en) | Unified algorithm for frame scheduling and buffer management in differentiated services networks | |
KR100475783B1 (en) | Hierarchical prioritized round robin(hprr) scheduling | |
Astuti | Packet handling | |
Cisco | Policing and Shaping Overview | |
Cisco | QC: Quality of Service Overview | |
Bodamer | A scheduling algorithm for relative delay differentiation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0105 | International application |
Patent event date: 20020325 Patent event code: PA01051R01D Comment text: International Patent Application |
|
A201 | Request for examination | ||
PA0201 | Request for examination |
Patent event code: PA02012R01D Patent event date: 20020326 Comment text: Request for Examination of Application |
|
PG1501 | Laying open of application | ||
E902 | Notification of reason for refusal | ||
PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20031103 Patent event code: PE09021S01D |
|
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20041111 |
|
GRNT | Written decision to grant | ||
PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20050302 Patent event code: PR07011E01D |
|
PR1002 | Payment of registration fee |
Payment date: 20050303 End annual number: 3 Start annual number: 1 |
|
PG1601 | Publication of registration | ||
G170 | Re-publication after modification of scope of protection [patent] | ||
PG1701 | Publication of correction |
Patent event code: PG17011E01I Patent event date: 20050412 Comment text: Request for Publication of Correction |
|
LAPS | Lapse due to unpaid annual fee | ||
PC1903 | Unpaid annual fee |