KR100933917B1 - 네트워크 스위치에서의 대역폭 보장 및 과부하 보호 방법및 장치 - Google Patents
네트워크 스위치에서의 대역폭 보장 및 과부하 보호 방법및 장치 Download PDFInfo
- Publication number
- KR100933917B1 KR100933917B1 KR1020067002981A KR20067002981A KR100933917B1 KR 100933917 B1 KR100933917 B1 KR 100933917B1 KR 1020067002981 A KR1020067002981 A KR 1020067002981A KR 20067002981 A KR20067002981 A KR 20067002981A KR 100933917 B1 KR100933917 B1 KR 100933917B1
- Authority
- KR
- South Korea
- Prior art keywords
- queue
- queues
- tier
- egress
- ingress
- Prior art date
Links
Images
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/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/39—Credit based
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/43—Assembling or disassembling of packets, e.g. segmentation and reassembly [SAR]
-
- 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
-
- 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/52—Queue scheduling by attributing bandwidth to queues
-
- 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/6215—Individual queue per QOS, rate or priority
-
- 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/6255—Queue scheduling characterised by scheduling criteria for service slots or service orders queue load conditions, e.g. longest queue first
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
- H04L49/253—Routing or path finding in a switch fabric using establishment or release of connections between ports
- H04L49/254—Centralised controller, i.e. arbitration or scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3045—Virtual queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/101—Packet switching elements characterised by the switching fabric construction using crossbar or matrix
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
본 발명은 공유 링크 상에서 서비스를 위한 대기열의 선택 방법에 관계한다. 본 발명의 방법은 복수의 인그레스 내의 대기열의 그룹 내의 각 대기열을 "N" 개의 티어들(tiers) 중의 하나의 티어로 분류하는 단계를 포함한다. 수 "N"은 2 보다 크거나 같다. 할당된 대역폭에 대한 정보는 대기열들 중 적어도 일부를 티어들로 분류하는데 이용될 수 있다. 각 티어에는 서로 다른 우선순위가 할당된다. 본 발명의 방법은 낮은 우선순위를 갖는 티어 내에 분류된 대기열들의 매치에 앞서 높은 우선순위를 갖는 티어 내에 분류된 대기열들을 매치함으로써 대기열들을 이용가능한 이그레스에 매치시키는 단계도 포함한다.
네트워크, 대역폭 할당, 과부하 보호, 인그레스, 이그레스, 우선순위, 크레디트 값, 티어
Description
본 발명은 공유 네트워크상에서의 대역폭 할당 방법 및 장치에 관한 것으로, 더욱 상세하게는 프로토콜 처리를 단순화하고 서비스 품질 보장을 유지하는 방법 및 장치에 관한 것이다.
도 1은 네트워크 백본 상에서 패킷 형태의 트래픽을 관리하는 전형적인 교환 시스템(10)을 도시한 것이다. 상기 시스템은 하나 이상의 인그레스(ingresses)(I1, I2, I3), 하나 이상의 출력 이그레스 (egresses) (E1, E2, E3) 및 스위치 또는 크로스바(12)를 포함한다. 상기 인그레스(I1, I2, I3)는 스위치, 라우터, 컴퓨터 또는 그것을 통해서 패킷들이 교환 시스템(10)으로 들어오는 다른 장치들이다. 마찬가지로, 이그레스 (E1, E2, E3)는 컴퓨터, 스위치, 라우터, 또는 그것을 통해서 패킷들이 교환 시스템(10)에서 나가는 기타의 장치들이다. 세 개의 인그레스들(I1, I2, I3) 및 세 개의 이그레스(E1, E2, E3)들이 도 1에 도시되었으나, 다른 임의의 수의 인그레스 및 이그레스들이 교환 시스템(10)에 접속될 수 있다. 데이터의 패킷들은 트래픽 소스(14)를 통해서 인그레스(I1, I2, I3)로 들어오고 트래픽 출구(16)를 통해서 이그레스(E1, E2, E3)로부터 빠져나간다. 전형적인 작동에서, 교환 시스템(10)은 크로스바 또는 스위치(12)를 통해서, 인그레스와 이그레스 사이에 일-대-일 매핑을 형성하기 위해, 주어진 인그레스를 주어진 이그레스에 접속하거나, 인그레스와 이그레스 사이에 일-대-다 (one-to-many) 매핑을 형성하기 위해 주어진 인그레스를 하나 이상의 이그레스들에 접속시킨다. 즉, 교환 시스템(10)을 통한 데이터의 전송을 위한 모든 시간 슬롯들에 대해서, 각 이그레스는 하나의 인그레스로부터의 데이터만을 수신할 수 있다. 그러나 인그레스는 다수의 이그레스에 데이터를 전송할 수 있다. 더욱이, 각각의 인그레스(I1, I2, I3)는 데이터 패킷을 저장하기 위한 다수의 대기열들(queues)을 가지고 있고, 각각의 이그레스(E1, E2, E3)는 다수의 버퍼 FIFO들(First-In-First-Out)을 가지고 있다. 각각의 시간 슬롯에 대해서, 각 인그레스의 단일의 대기열이 하나 이상의 이그레스 내의 하나 이상의 포트들에 접속될 수 있다. 예를 들어, 주어진 시간 슬롯 동안에, 인그레스 I1의 대기열 Q2가 이그레스 E3의 버퍼 FIF01에 접속될 수 있고, 인그레스 I2의 대기열 Q1이 이그레스 E1의 버퍼 FIF01에 접속될 수 있고, 인그레스 I3의 대기열 Q1이 이그레스 E2의 버퍼 FIF03에 접속될 수 있다.
일반적으로, 도 1의 시스템 (10)과 같은 교환 시스템(10)의 하나의 목적은 그의 귀중한 대역폭(소위 부족한 자원)을 효율적으로 이용하기 위하여 스위치 또는 크로스바(12)의 이용률을 최대화하는 것이다. 교환 시스템의 두 번째 목적은 서 비스 품질 보증에 기초하여 소비자에게 패킷 서비스를 제공하는 것이다. 교환 시스템의 다른 목적은 시스템(10)을 통해서 전송되기 이전에 허용불가능한 긴 기간 동안 특정 패킷이 교환 시스템에서 대기되지 않도록 방지하는 것이다. 이러한 모든 목적들을 달성하기 위하여 개량된 방법 및 시스템의 개발이 요구되고 있다.
도 1의 교환 시스템(10)에서 스위치 또는 크로스바(12)를 통한 데이터 전송을 위한 시간 슬롯의 사이즈는 대개 단일 시간 슬롯으로 보낼 수 있는 데이터의 양을 결정한다. 도 1의 시스템(10)과 같은 현재 구현된 교환 시스템에서 데이터 전송을 위한 시간 슬롯의 사이즈를 선택하는데 두 가지 방법이 일반적으로 사용되는데, 이러한 방법에서 패킷 사이즈는 상당히 다양하다. 첫 번째 방법은 대기열 내의 정보의 모든 패킷들이 주어진 시간 슬롯 동안 스위치 또는 크로스바(12)를 통해서 전송될 수 있을 정도로 충분히 큰 사이즈의 시간 슬롯을 이용하는 것이다. 그러나 이러한 방법에서는 시스템 (10)의 이용률이 낮은 문제점이 있다. 각 시간 슬롯들의 일부분들은 채워지지 않아서, 대개는 비용이 발생하는, 이용가능한 대역폭이 이용되지 못할 것이다.
두 번째 방법은 첫 번째 방법에서 이용된 것보다 적은 사이즈의 시간 슬롯을 이용하는 것이다. 그러나 시간 슬롯보다 큰 패킷들은 교환 시스템을 통해서 하나의 시간 슬롯으로 전송되기에 적합한 하나 이상의 세그멘트들로 분할되어야 한다. 이러한 두 번째 방법은 상술한 바와 같은 시스템의 낮은 이용률과 관련된 문제를 감소시킬 것이다. 그러나 두 번째 방법에서는 인그레스 (I1, I2, I3)에서 패킷이 다수의 세그멘트들로 분할 (세분화)되어야 하고 이그레스 (E1, E2, E3)에서 재구성(재결합) 되어야만 한다. 이러한 세분화 및 재결합은 교환 시스템(10)의 성능을 제한할 수 있다.
대역폭의 이용을 최대화하도록 대역폭을 적절하게 할당하고, 서비스 품질을 보장하며 교환 시스템에서 패킷들이 무한정 대기되지 않도록 하면서도 방법 및 시스템이 "공정한 방식 (fair manner)"으로 동작하도록 하는 링크 상에서의 대역폭할당 방법 및 시스템의 개발이 요구되고 있다. 최종적으로, 세분화 및 재결합을 거치지 않고 데이터 전송을 위한 시간 슬롯의 이용을 최대화할 수 있는 방법 및 시스템이 요구되고 있다.
[발명의 개요]
본 발명의 하나의 양상은 공유 링크(shared link) 상에서 전송을 위한 패킷의 선택 방법에 관계한다. 이러한 실시예에서 상기 방법은 복수의 인그레스 각각의 복수의 대기열 내의 선출력 패킷(first-out packet)에 대한 우선순위를 결정하는 단계; 특정한 이그레스로 예정되어 있는 각 인그레스의 대기열들 내의 선출력 패킷(first-out packet)의 각 그룹에 대해서, 제 1 우선순위를 갖는 선출력 패킷을 선택하는 단계; 제 1 우선순위를 갖고 특정한 이그레스로 예정되어 있는 선택된 선출력 패킷들의 각각의 서브셋들에 대해서, 제 2 우선순위를 갖는 선출력 패킷을 선택하는 단계; 공유 네트워크를 통해서 각 인그레스로부터 제 2 우선순위를 갖는 선택된 선출력-패킷을 전송하는 단계.
본 발명의 다른 양상은 마이크로프로세서에게 다음의 동작들을 지시하는 명령들을 저장하는 컴퓨터-판독가능한 기록매체이다: 복수의 인그레스 내의 각각의 대기열에 대해 우선순위를 결정하는 동작으로서, 여기서 상기 우선순위는 데이터 전송을 위해 주어진 시간 슬롯에 대해 순시값(instantaneous)인 동작, 특정한 이그레스로 예정되어 있는 패킷들을 갖는 각 인그레스 내의 대기열들의 각 그룹에 대해, 제 1 우선순위를 갖는 대기열을 선택하는 동작, 제 1 우선순위를 갖고 특정한 이그레스로 예정되어 있는 패킷을 갖는 선택된 대기열들의 각각의 서브셋에 대해서, 제 2 우선순위를 갖는 대기열을 선택하는 단계, 및 주어진 시간 슬롯 중에 공유 링크를 통해서 각 서브셋에 대해 제 2 우선순위를 갖는 선택된 대기열을 서비스하는 단계.
본 발명의 다른 양상은 공유 링크를 통해서 서비스하기 위해 대기열을 선택하는 시스템에 관계한다. 이러한 실시예에서 상기 시스템은 복수의 인그레스 각각의 복수의 대기열들 각각 중에서 선출력 패킷(first-out packet)을 위한 우선순위를 결정하는 수단; 특정한 이그레스로 예정되어 있는 각 인그레스의 대기열들 내의 선출력 패킷(first-out packet)의 각 그룹에 대해서, 제 1 우선순위를 갖는 선출력 패킷을 선택하는 수단; 제 1 우선순위를 갖고 특정한 이그레스로 예정되어 있는 선택된 대기열들의 각각의 서브셋에 대해서 제 2 우선순위를 갖는 대기열을 선택하는 수단; 및 주어진 시간 슬롯 중에 공유 네트워크를 통해서 각 서브셋에 대해서 제 2 우선순위를 갖는 대기열을 서비스하는 수단.
본 발명의 또 다른 양상은 공유 링크를 통해 서비스하기 위해 대기열을 선택하는 방법이다. 첫째로 상기 방법은 복수의 인그레스 내의 하나의 그룹의 대기열들로부터 각 대기열을 "N" 개의 티어(tier) 중에서 하나의 티어로 분류한다. 각각의 시간 슬롯으로 또는 시간 슬롯들의 서브셋에서, 각 인그레스 가상 출력 대기열 (virtual output queue:VOQ)의 현재 상태 (따라서 각 인그레스의 현재 상태)를 하나의 티어(tier)에 매핑시킨다. 즉, 대기열을 대기열들의 티어에 할당하기 위해 각 대기열의 특성이 이용된다. 티어들의 개수 "N"은 2 보다 크거나 같다. 각 티어에는 다른 우선순위가 할당된다. 둘째로, 상기 방법은 낮은 우선순위를 갖는 티어들 내에 분류된 대기열들에 앞서 높은 우선순위를 갖는 티어들 내에 분류된 대기열들을 매치시킴으로써 대기열들을 이용가능한 이그레스에 매치시키는 단계를 포함한다. 각 시간 슬롯에서, 대기열들의 티어들의 세트가 주어질 경우, 본 발명의 이러한 실시예는 퍼-티어 최대 매치(per-tier maximal matching)을 제공한다. 즉, "N" 티어들이 존재하는 경우에, 본 발명의 실시예는 최고 티어에서 시작해서 그러한 티어에 있는 VOQ들만을 고려해서 인그레스들과 인그레스들 사이의 최대 매치를 제공한다. 이어서 매치되지 않은 나머지 인그레스-이그레스 VOQs로부터, 이러한 실시예는 다음으로 낮은 티어에 대한 최대 매치를 제공한다.
도 1은 종래 기술에 의한 교환 시스템의 블록도이다.
도 2는 본 발명의 일실시예에 의한 시스템의 블록도이다.
도 3a는 본 발명의 일실시예에 의한 아비터 칩(arbiter chip), 인그레스 칩 및 대기열 매니저의 블록도이다.
도 3b는 인그레스의 대기열 내의 데이터의 패킷의 블록도이다.
도 4a는 본 발명의 일실시예에 의한 방법의 흐름도이다.
도 4b는 본 발명의 일실시예에 의한 방법을 도 4a 보다 상세하게 나타낸 흐름도이다.
도 5는 세 가지 다른 타입의 대역폭 할당을 위한 대역폭 속도(bandwidth rate)의 계산을 위한 일실시예를 나타낸 흐름도이다.
도 6a는 단일의 이그레스에서의 대역폭 할당의 일실시예의 블럭도이다.
도 6b는 단일의 이그레스에서의 대역폭 할당의 제 2 실시예의 블럭도이다.
도 7a는 단일의 인그레스에서의 대역폭 할당의 일실시예의 블럭도이다.
도 7b는 하나의 그룹의 대기열에 대한 대역폭 할당의 제 2 실시예의 블럭도이다.
도 8은 본 발명의 일실시예에서 대역폭 할당을 위해 사용된 크레디트 값의 조정을 보여주는 흐름도이다.
도 9는 본 발명의 대기열 선택 스킴의 일실시예를 나타낸 블럭도이다.
도 10은 대기열 선택 방법의 제 2 실시예를 도시한 블럭도이다.
도 11은 대기열 선택 방법의 다른 실시예를 도시한 블럭도이다.
도 12는 도시된 인그레스들이 도시된 이그레스들 중 특정한 이그레스에 보낼 데이터를 가진 예의 시나리오를 도시한 블럭도이다.
도 13은 동적 퍼-티어 최대 매치(dynamic per-tier maximal matching)을 이용하는 본 발명의 다른 실시예의 흐름도이다.
도 14는 대기열 리스트의 최대 매치의 일실시예의 흐름도이다.
도 15는 도 13의 본 발명의 일실시예에 따라서 다양한 특성에 기초하여 대기열들을 5개의 티어들로 분류하는 테이블이다.
A. 개요
본 발명의 하나의 실시예는 데이터 전송을 위한 서비스 품질(QoS) 보장을 구현하고 주어진 시간 슬롯에서 서비스해야 할 대기열을 공정하게 결정하는데 이용될 수 있는 구성가능한, 가중, 분산 스케줄링 방법 및 시스템(configurable, weighted, and distributed scheduling methods and systems)을 제공한다.
1. 시스템 아키텍처
도 2는 본 발명의 일실시예에 의한 시스템(100)의 블럭도이다. 도 2의 시스템(100)은 다수의 모듈화된 구성요소들을 포함하는데, 이들은 하나의 실시예에서 칩들(chips)이다. 도 2의 시스템(100)은 하나 이상의 인그레스 칩들(102), 하나 이상의 이그레스 칩들(104), 아비터 칩들(106), 및 파이프라인들(110)을 이용해서 임의의 인그레스(102)를 임의의 이그레스(104)에 접속시킬 수 있는 공유 스위치 또는 크로스바 칩 또는 링크(108)를 포함한다. 또한, 각각의 인그레스(102)는 인그레스에 연결되어 있는 포워딩 엔진(forwarding engine) 또는 대기열 매니저(queue manager)(112)를 가질 수 있다. 데이터 패킷들은 트래픽 소스(traffic source: 114)로부터 인그레스들(102)로 진입하고 이그레스들(104)을 나와서 트래픽 출력쪽으로 빠져나간다. 복수의 인그레스들(102)은 공유 링크(108) 상에서 복수의 이그레스들에게 링크될 수 있다. 예를 들어, 하나의 실시예에서, 64-인그레스들(102)이 공유 링크(108) 상에서 64-이그레스들에게 링크될 수 있다.
후술하는 실시예는 공유 링크 시스템(shared link system) 상에서 동작하는데, 공유 링크 시스템은 하나 이상의 인그레스들(102)을 하나의 상의 이그레스들(104)에 접속하는 공유 링크(108)를 구비하는 시스템이다. 시스템(100)을 통해서 데이터 전송하기 위한 매 시간 슬롯에 대해서, 각 이그레스(104)는 단일의 인그레스(102)에만 접속될 수 있으나, 단일의 인그레스(102)는 하나 이상의 이그레스들(104)에 접속될 수 있다. 따라서 본 명세서에서 "공유 링크 시스템"이라 함은 주어진 시간 슬롯 동안 데이터 전송을 위해서 그러한 시스템을 통해서 하나 이상의 이그레스들이 단일의 인그레스에 접속될 수 있는 시스템을 의미하는 것으로 사용된다. 마찬가지로 "공유 링크"라는 용어는 명세서 전반에서 데이터 전송을 위한 각 시간 슬롯에 대해 구성가능하고 하나 이상의 이그레스들을 하나 이상의 인그레스들에 접속하기 위해 공유 링크 시스템에서 사용되는 링크 장치, 스위치, 또는 크로스바를 의미하는 용어로 사용될 것이다.
본 발명의 모듈화된 구성요소로서 칩들을 이용하는 하나의 실시예에서, 각 칩은 하나의 프로세스 유니트와 인터페이스 유니트를 구비하는 집적회로 칩이 될 수 있다. 신호처리 유니트는 본원에 기술된 동작을 수행하는데 충분한 임의의 속도로 동작할 수 있다. 하나의 실시예에서, 예를 들어, 1GHz 프로세서가 아비터 칩(106)에 이용될 수 있다. 본 발명의 각 모듈의 기능들은 소프트웨어 또는 하드웨어에 의해 수행될 수 있다. 도 3a는 레지스터 파일들(register files:158)을 가지는 인그레스 칩(102)을 도시한 것으로, 이러한 인그레스 칩(102)은 본 발명의 기능을 수행하기 위해 그 안에 하드웨어 또는 펌웨어 모듈을 구비할 수 있다.
각 인그레스(102)에 접속된 각각의 트래픽 소스(114)와 각 이그레스(104)에 접속된 트래픽 출력(116)은 10 Gbps와 같은 관련 대역폭 속도(associated bandwidth rate)를 가진다. 하나의 실시예에서, 인그레스(102) 또는 이그레스(104)를 공유 링크(108)에 접속하는 각 파이프라인(110)은 트래픽 소스 (114) 대역폭 속도 또는 트래픽 출력(116) 대역폭 속도 보다 큰 관련 대역폭 속도를 가진다. 따라서 파이프라인(110)은 고속 링크(high-speed link)일 수 있다. 예를 들어, 인그레스(102)로의 트래픽 소스(114)의 대역폭 속도가 10 Gbps라면, 공유 링크에 접속하기 위해 그것에 연결된 파이프라인은 10-20 Gbps의 대역폭 속도를 가진다. 이러한 실시예에서, 본 발명의 시스템(100)은 인그레스(102) 내로 진입하거나 이그레스(104)로부터 나가는 대역폭 속도에 비해 링크(108) 내로 들어가고 나오는 빠른 파이프라인으로 인해서 공유 링크(108) 상에서 대역폭 보장을 할 수 있다. 다른 실시예에서, 파이프라인들(110)은 트래픽 소스(114) 또는 트래픽 출력(116) 대역폭 속도와 동일한 대역폭 속도를 가진다.
도 3a는 본 발명의 일실시예에 의한 단일 아비터 칩(single arbiter chip), 인그레스 칩 및 포워딩 엔진 또는 대기열 매니저의 블록도이다. 하나의 실시예에서 아비터 칩(106)은 대역폭 할당 모듈(150)과 조정 모듈(152)를 포함한다. 도 3a에서, 인그레스(102) 내에 도시된 것은 우선순위 계산 모듈(156), 레지스터 파일(158), 미터링 업데이트 모듈(160) 및 대기열 길이 모듈(162)을 포함하는 미터링 모듈(metering module: 154)이다. 하나의 실시예에서, 대역폭 할당 모듈(150)과 조정 모듈(152)은 대기열 매니저(112)로서 인그레스(102) 내에 존재한다. 도 2의 시스템(100)과 같은 공유 링크(108)에 접속된 다수의 인그레스들(102)을 구비하는 시스템에서는 하나의 아비터 칩(106)이 복수의 인그레스들(102)을 서비스하는데 이용될 수 있도록 대역폭 할당 모듈(150)과 조정 모듈(152)을 별도의 아비터 칩(106)에 두는 것이 바람직할 수 있다. 이하에서 각 모듈의 기능에 대해서 설명한다.
도 3a의 실시예는 단일 인그레스 (102) 및 단일 아비터 칩(106)을 도시하고 있다. 그러나 더욱 전형적으로 도 2의 시스템 100과 같이 단일의 아비터 칩(106)이 다수의 인그레스들(102)을 가지는 시스템에서 이용된다.
시스템(100)의 각각의 인그레스(102)는 복수의 버퍼 대기열들을 가지고 있다. 임의의 수의 대기열들이 각 인그레스 내에 있을 수 있지만, 도 2는 각각 4 개의 대기열 (Q1, Q2, Q3, Q4)을 가지는 인그레스들(102)을 도시하고 있다. 하나의 실시예에서, 인그레스 칩(102)은 1024 대기열들을 포함한다. 각 대기열에 관련된 것은 그러한 대기열에 대한 서비스의 클래스(COS: Class of Service)이다. 각 COS는 그러한 COS와 관련된 대기열 내의 패킷에 대한 서비스의 서로 상이한 레벨을 의미한다. 예를 들어, 도 2의 인그레스(102)의 대기열 Q1은 COS1을 가지고 대기열 Q2는 COS2를 가지고, 대기열 Q3은 COS3를 가지며, 대기열 Q4는 COS4를 가진다. COS1는 초당 1 기가바이트(Gbps)의 대역폭 속도를 가지고, COS2는 0.25 Gbps의 대역폭 속도를 가지는 식으로 해서, 서로 상이한 COS를 갖는 대기열 내의 패킷들은 서로 다른 속도로 서비스된다. 데이터의 패킷들이 각 인그레스(102)로 들어옴에 따라서 패킷들은 그러한 패킷에 대한 COS에 해당하는 적당한 대기열로 버퍼링된다. 보다 나은(즉, 높은) COS를 가진 대기열의 패킷들은 나쁜(즉, 낮은) COS를 갖는 대기열 내의 패킷들에 비해 빨리 서비스될 필요가 있다. 대기열 내의 각 패킷은 특정한 이그레스로 예정되지만(즉, 패킷이 그러한 이그레스로 전송되는 것을 원한다는 것을 가리키는 데이터를 포함한다), 반드시 모두 같을 필요는 없다. 각 이그레스(104)에 연결된 포워딩 엔진(111)은 인그레스(102)로 들어오는 데이터의 패킷들을 인그레스(102) 내의 적당한 대기열로 라우팅시킬 수 있다.
시스템(100)의 각 이그레스(103)는 일반적으로 공유 링크(108)를 통해서 수신한 패킷들을 트래픽 출력(116)을 통해서 송출하기 이전에 버퍼링하기 위해, 다수의 FIFO (First-In- First-Out) 버퍼들 또는 포트들을 포함한다. 본 발명의 하나의 실시예에서는, 단일 칩이 인그레스(102)와 이그레스(104) 중 어느 하나로 기능할 수 있다. 그러한 칩은 후술하는 바와 같은 인그레스(102)의 기능을 수행할 수 있는 인그레스 사이드와 이그레스(104)의 기능을 수행하는 FIFO들을 갖는 이그레스 사이드를 포함할 것이다.
도 3b는 인그레스(102)의 대기열들 내의 패킷들을 상세하게 도시한 것이다. 상술한 바와 같이, 많은 수의 대기열들이 하나의 인그레스(102) 내에 있을 수 있지만, 도 3b는 세 개의 대기열들 (Q1, Q2 및 Q3)을 갖는 단일의 인그레스(102)를 도시하고 있다. 도 3b에 도시된 바와 같이, 각 대기열 (Q1, Q2, Q3)은 대기열 내에 버퍼링된 다수의 패킷을 가지고 있다. 예를 들어, 대기열 Q1은 패킷들 170, 172 및 173를 가지고, 대기열 Q2는 패킷들 174,176, 178 및 180을 포함하며, 대기열 Q3은 패킷들 182, 184, 186, 188, 190 및 192를 포함한다. 대기열 Q1의 헤드에는 패킷 170이 있고, 대기열 Q2의 헤드에는 패킷 174가 있고, 대기열 Q3의 헤드에는 패킷 182가 있다. 본 발명의 하나의 양상에 따라서, 데이터가 본 발명의 시스템(100)의 공유 링크(108)를 통해서 전송될 각 시간 슬롯에서, 하나의 시간 슬롯에 맞는 각 대기열의 헤드에 있는 패킷 또는 패킷들만(선출력 패킷 또는 패킷들: first-out packet)이 공유 링크(108)에 액세스하기 위해 경쟁할 자격이 있다. 따라서 도 3b에 도시된 다음 시간 슬롯에 대해서는, 단지 패킷 170, 174 및 182만이 공유 링크(108)에 액세스하기 위해 경쟁할 수 있다. 시간 슬롯은 정해진 시간 단위로 각 시간 슬롯 중에 공유 링크(108)는 데이터 전송을 위해 구성될 수 있다. 하나의 실시예에서, 시간 슬롯은 약 200-650 나노초로 세팅될 수 있는데, 시간 슬롯의 사이즈는 서로 상이한 실시예에서 서로 달라질 수 있다. 도시된 실시예에서 약 460-1,500 바이트의 데이터가 공유 링크(108)를 통해서 200-650 나노초 시간 슬롯으로 전송될 수 있다.
도 3b는 인그레스(102)의 대기열들 내의 패킷들이 다양한 사이즈를 가질 수 있고 인그레스(102) 내의 대기열들의 사이즈도 달라질 수 있다는 것을 블록 형태로 도시하고 있다. 예를 들어, 대기열 Q1 내의 패킷 170은 대기열 Q2의 패킷 174 보다 큰 패킷 사이즈를 갖고 대기열 Q3 내의 패킷 182 보다도 크다. 또한, 대기열 Q3 내의 패킷 182는 대기열 Q2 내의 패킷 174 보다도 사이즈가 크다. 이러한 패킷 사이즈는 바이트 또는 비트로 측정될 수 있다. 도 3b는 이러한 실시예에서 공유 링크(108)를 통해서 데이터 전송하기 위한 하나의 시간 슬롯의 사이즈를 보여준다. 패킷 170은 하나의 시간 슬롯보다 사이즈가 큰 반면에, 패킷 174 및 패킷 182는 하나의 시간 슬롯의 사이즈보다 작거나 같다. 끝으로 도 3b는 인그레스(102) 내에서 특정한 순간에서의 대기열의 사이즈 (Qlength)를 도시한다. 예를 들어, 대기열 Ql은 대기열 Q2에 대한 QlengthQ2 보다 크지만, 대기열 Q3에 대한 QlengthQ3 보다는 작은 QlengthQl를 가진다. 도 3b는 각 대기열 안에 적은 수의 패킷만이 존재하는 인그레스(102)의 단순화된 형태를 도시하고 있으나, Qlength의 개념은 도시하고 있다. Qlength는 주어진 대기열에서 시간상 특정 순간에 저장된 데이터의 사이즈의 척도로, 바이트 단위로 측정될 수 있다. 도 3b에 도시된 실시예에서, 각 대기열은 패킷의 버퍼링을 위해 이용가능한 동일한 총 길이(용량)을 갖지만, 다른 구현에서는 이러한 길이는 달라질 수 있다는 점을 유의해야만 한다.
2. 시스템 동작의 개관
도 4a는 본 발명의 동작의 일실시예를 보여주는 흐름도이다. 일반적으로, 본 발명은 대기열에 대한 대기열 메트릭 정보(queue metric informationm)에 기초하여 각 대기열에 대한 보증 속도(guaranteed rate)를 계산하는 단계 (블록 200), 대기열에 대한 보증 속도에 기초하여 주어진 시간 슬롯 동안의 각 대기열에 대한 우선순위를 계산하는 단계 (블록 202), 및 각 대기열에 대한 우선순위에 기초하여 주어진 시간 슬롯 동안에 서비스할 대기열을 결정하는 단계 (블록 204)를 포함한다.
본원에서 사용되는 경우에 "보증 속도"란 일반적으로 시스템에서 대역폭 할당을 위해 이용되는 대기열에 대한 업데이트 속도(update rate)를 의미한다. 이러한 보증 속도의 단위는 예를 들어, Gbps가 될 수 있다. 보증 속도는 각 대기열에 대해 이용가능한 대역폭을 제어하는데, 보증 속도가 각 대기열에 관련된 크레디트 값 (credit value)이 시간에 따라서 증가하는 속도를 결정하는데 이용되기 때문이다. 각 인그레스의 각 대기열은 그와 관련된 크레디트 값을 가지고, 각 대기열에 대한 보증 속도는 주어진 시간 슬롯 동안에 대기열이 서비스되지 않는 경우에 대기열에 대한 크레디트 값을 증가시키는데 이용될 수 있다. 이어서 크레디트 값은 시스템에서 각 대기열에 대한 우선순위를 업데이트하는데 이용될 수 있다. 본원 명세서에서 "우선순위(priority)"란 데이터 전송을 위한 시간 슬롯 동안 주어진 이그레스와 통신하고자 하는 주어진 대기열의 희망(desire)을 나타낸다. 따라서 일반적으로 각 시간 슬롯 동안 서비스될 대기열은 각 시간 슬롯 동안 각 대기열에 대해서 산출된 우선순위에 기초해서 결정된다. 주어진 이그레스와 통신하기 위한 높은 우선순위를 갖는 대기열들은 예컨대, 동일한 이그레스와 통신하기 위한 낮은 우선순위를 갖는 대기열들에 비해 먼저 서비스될 것이다. 도 2의 공유 링크(108)는 인그레스와 이그레스 사이의 일-대-일 매핑을 지정하기 위한 우선순위에 기초해서 각 시간 슬롯에 대해 재구성된다. 따라서 보증 속도는 각 대기열들이 얼마나 자주 서비스되어야 하는지, 아니면 얼마나 자주 대기열들의 서브셋이 서비스되어야 하는지를 직접 제어한다.
대역폭 할당 모듈(150)은 이러한 실시예에서 시스템(100)의 각 대기열에 대한 보증 속도를 계산하기 위해 이용된다(도 4a의 블록 200). 보증 속도는 대기열 길이 모듈(162) 또는 대기열 매니저(112)로부터 수신된 일부 대기열 메트릭 정보를 이용하여 많은 방법에 따라서 계산될 수 있다. 보증 속도의 계산에 이용되는 대기열 메트릭 정보는 대기열의 Qlength (즉, 바이트 수) 또는 대기열에 대한 데이터의 도착 속도(즉, 초당 바이트 수)와 같은 대기열에 관한 정보이지만, 반드시 이들로 제한되는 것은 아니다. 대기열 매니저 (112)는 대기열에 대한 데이터의 도착 속도 정보를 계산하거나 추적할 수 있고 대기열 길이 모듈(162)은 대기열의 현재의 길이 또는 사이즈를 계산할 수 있다. 보증 속도의 몇 가지 계산방법에 대해서 이하에서 도 5-7b를 참고하여 상세하게 설명한다. 일반적으로, 보증 속도를 계산하기 위해서는, 도 3의 대기열 길이 모듈(162) (또는 대기열 매니저 112)이 대응하는 인그레스(102)의 각 대기열에 대한 대기열 메트릭 정보를 측정해서 대역폭 할당 모듈(150)로 전송한다. 도 3a는 예를 들어, 대역폭 할당 모듈(150)로 전송될 대기열들에 대한 Qlengths (50)를 도시한다. 후술하는 대역폭 할당 방법을 이용하여, 대역폭 할당 모듈(150)은 시스템(100)의 각 인그레스(102)의 각 대기열에 대한 보증 속도를 계산해서 보증 속도(52)를 대응하는 인그레스(102)로 전송한다. 이들 보증 속도들은 주기적으로(즉, 반드시 각 시간 슬롯에 대해 계산되는 것은 아니다) 계산되어 대응되는 인그레스(102)에 주기적으로 통신된다.
본 실시예에서 각 인그레스(102)의 미터링 모듈(154)의 미터 업데이트 모듈 (meter update module: 160)은 이어서 보증 속도를 이용하여 인그레스 내의 각 대기열의 크레디트 값을 업데이트한다. 하나의 실시예에서 미터 업데이트 모듈 (160)은 공유 링크(108)를 통한 데이터 전송을 위한 매 시간 슬롯 동안에 각 대기열에 대한 크레디트 값을 업데이트한다. 도 3a는 레지스터 파일들(158)을 통해서 대역폭 할당 모듈(150)로부터 보증 속도(52)를 수신해서 레지스터 파일들(158)에 대해 업데이트된 크레디트 값을 전송하는 미터 업데이트 모듈 (160)을 도시한 것이다. 대기열의 크레디트 값 또는 기타의 정보들은 본 실시예에서 각 대기열의 서비스 우선순위를 계산하는데 이용된다. 크레디트 값은 여러 가지 방법에 의해 미터 업데이트 모듈 (160)에서 업데이트될 수 있다. 일반적으로, 주어진 대기열의 크레디트 값은 각 시간 슬롯 다음의 대기열이라면 증가된다. 크레디트 값의 증가는 대기열에 대한 우선순위를 증가시켜, 대기열이 종국적으로 서비스될 수 있도록 다수의 시간 슬롯들에 대한 대기열의 우선순위를 증가시킨다. 이러한 실시예에서, 대기열이 주어진 시간 슬롯 동안에 서비스된다면, 대기열에 대한 크레디트 값은 공유 링크(108)에 대한 접속이 무한정 지속되지 않도록 감소된다(즉, 대기열에 대한 우선순위가 감소한다). 다수의 방법이 대기열에 대한 크레디트 값의 업테이트에 이용될 수 있고, 이러한 방법 가운데 하나를 이하에서 도 8을 참고하여 상세하게 설명한다.
이러한 실시예에서, 인그레스(102)의 미터링 모듈(154)의 우선순위 계산 모듈(156)은 크레디트 값 또는 대기열에 대한 다른 정보를 이용하여 각 대기열들이 공유 링크(108) 상에서 서비스받고자 원하는 우선순위를 계산한다(도 4a의 블록 202). 도 3a를 참고하면, 우선순위 계산 모듈(156)은 레지스터 파일들 (158)로부터 인그레스의 대기열들에 대한 크레디트 값들(54)을 수신하여 우선순위들(56)을 아비터 모듈(152)로 전송한다. 각 대기열들에 대한 우선순위는 하나의 실시예에서 각 대기열에 대한 크레디트 값과 동일한 값일 수 있다. 그러나 다른 실시예에서는 우선순위는 각 대기열에 대한 크레디트 값에 대해 스케일된 버전(scaled version)이고, 우선순위는 후술되는 바와 같이 다른 특성에 따라서 단순 스케일링 이상으로 변경될 수 있다.
주어진 인그레스(102)로부터의 특정 우선순위들(56)은 도 3a에 도시된 바와 같은 실시예에서는 조정 모듈(152)로 전송된다. 또한, 각 이그레스(104)는 그의 FIFOs의 채움 상태(fullness state)에 대한 정보를 조정 모듈(152)로 전송한다. 이어서 조정 모듈(152)은 주어진 시간 슬롯 동안 각 이그레스(104)에 접속될 인그레스(102)를 결정한다 (도 4a의 블록 204). 조정 모듈 (152)은 도 3a에 도시된 바와 같이, 출력(158)을 우선순위 계산 모듈로 반송한다. 출력 58은 단순히 주어진 시간 슬롯 동안에 어떤 이그레스가 인그레스에 의해 액세스될지를 결정하는 표시일 수 있다. 이어서 미터링 모듈(154)은 시간 슬롯 동안에 인그레스(102)가 액세스되는 이그레스(104)에 기초하여 인그레스 내의 어느 대기열이 서비스될지를 결정할 수 있다.
조정 모듈(152)에서 각 이그레스(104)에 대한 인그레스(102)의 선택은 우선순위에 기초해서 이루어지고, 이러한 선택 과정을 조정(arbitration)이라 칭할 수 있다. 일반적으로, 우선순위들(56)은 주어진 시간 슬롯에서 어느 인그레스(102)가 어느 이그레스(104)에 접속되는지를 결정하고, 그러한 시간 슬롯 동안에 인그레스 내의 어느 대기열이 서비스될지를 결정한다. 하나의 실시예에서, 최고의 우선순위를 갖는 이그레스(104)를 원하는 대기열을 갖는 인그레스(102)가 시간 슬롯 동안 이그레스(104)에 접속되기 위해 선택된다. 또한, 이그레스(104)를 희망하고 최고의 우선순위를 갖는 선택된 인그레스(102) 내의 대기열이 시간 슬롯 동안에 서비스되는 인그레스(102) 내의 대기열이다. 본 발명의 다양한 실시예 가운데 대기열 선택에 사용되는 몇 가지 방법에 대해서 이하에서 도 9-11을 참고하여 설명할 것이다. 어떠한 경우라도, 조정 후에는 인그레스 (102) 대 이그레스(104) 매핑에 따른 시간 슬롯을 위한 공유 링크(108)의 구성이 이어진다. 따라서 공유 링크 (108)가 형성해야 하는 인그레스와 이그레스 사이의 매핑을 나타내는 명령을 포함한 메시지들 (도면에는 도시하지 않음)은 주어진 시간 슬롯 동안 공유 링크 (108)로 전송된다. 이어서 공유 링크 (108)는 그러한 명령에 따라서 시간 슬롯 동안에 인그레스와 이그레스 사이의 접속을 확립한다.
본 발명의 하나의 실시예에서, 최대 우선순위 레벨 (maximum priority level)은 단일 시간 슬롯보다 큰 패킷을 포함하는 대기열을 위해 예비된다. 도 3b에서, 예를 들어, 패킷 170은 주어진 시간 슬롯보다 큰 사이즈를 갖는다. 본 발명의 하나의 실시예에서 시스템(100)의 공유 링크(108)를 통한 접속은 단일 시간 슬롯보다 큰 전체 패킷이 방해를 받지 않고 공유 링크(108)를 통해서 지속적으로 전송될 수 있도록 충분한 기간 동안 유지된다. 이렇게 유지되는 접속은 인그레스에서 패킷이 여러 개의 패킷으로 분할되고 나서 모든 세그멘트들이 공유 링크(108)를 통해서 전송된 후에 이그레스(104)에서 재결합될 필요가 없게 만든다. 이러한 시스템은 시간 슬롯의 사이즈를 적당한 시간 길이로 세팅할 수 있게 함으로써 공유 링크(108)의 이용률을 최대화한다. 즉, 데이터 전송을 위한 시간 슬롯은 공유 링크(108)의 이용률이 높을 수 있을 만큼 충분히 낮게 세팅된다. 그러나 본 발명의 이러한 방법은 단일 시간 슬롯보다 큰 패킷을 전송하기 위해 공유 링크 (108)를 통한 단일 또는 다수의 접속을 유지함으로써 세그멘테이션 및 재결합의 문제를 극복할 수 있다.
부분 패킷 변수 (partial packet variable)가 그러한 패킷이 단일 시간 슬롯으로 공유 링크(108)를 통해서 전송하기에는 너무 크다는 것을 나타내기 위해 본 발명의 시스템에 의해 이용될 수 있다. 그러한 부분 패킷 변수는 대기열에서 서비스되어야 하는 현재의 패킷이 단일 시간 슬롯으로 전송하기에는 너무 사이즈가 ㅋ크기 때문에, 전체 패킷을 모두 전송하기 위해 충분한 수의 시간 슬롯들 동안 공유 링크 (108) 상의 접속이 유지되어야 함을 가리킨다. 따라서 이러한 부분 패킷 변수가 주어진 시간에 대기열에 관련되어 있다면 그러한 대기열에 대해 최대 우선순위 레벨이 할당될 수 있다.
도 3a의 대기열 매니저 (112)는 일반적으로 대기열들을 서비스하고 주어진 시간 슬롯 동안에 일어나는 이벤트에 따라서 대기열들의 상태에 관하여 업데이트된 메시지를 전송한다. 예를 들어, 대기열 매니저 (112)는 패킷이 대기열로부터 전송되는 경우에는 미터 업테이트 모듈(160)에 디큐 통지 (dequeue notification :64)를 보낸다. 이것은 디큐 이벤트 (dequeue event)이다. 대기열 매니저 (112)는 패킷이 수신되어 주이진 대기열 내에 버퍼링되는 경우에는 미터 업테이트 모듈(160)에 엔큐 통지 (enqueue notification :62)를 보낸다. 이것은 엔큐 이벤트 (enqueue event)이다. 도 3a을 참고하면 우선순위 계산 모듈(156)로부터 대기열 매니저 (112)로 디큐 요청 (dequeue request: 60)이 전송된다. 이러한 디큐 요청(60)은 조정 과정에 기초해서 주어진 시간 슬롯에 서비스되어야 하는 대기열을 가리킨다. 대기열 매니저 (112)는 따라서 디큐 요청(60)에 따라서 대기열들을 서비스할 수 있다.
대기열 매니저 (112)에 의해 생성된 이벤트는 따라서 상술한 일련의 계산 과정을 개시시켜 크레디트 값의 업데이트 및 대기열에 대한 Qlength의 업데이트를 초래한다. 이어서 각 대기열에 대한 우선순위는 크레디트 값 또는 대기열에 관련된 부분 패킷 변수와 같은 다른 정보에 기초해서 결정된다. 각 인그레스들이 각 이그레스를 원하는 우선순위는 우선순위 계산 모듈 (156) 및 조정 모듈 (152)을 이용하여 산출된다. 이러한 우선순위들은 일반적으로 주어진 시간 슬롯 동안에 각 이그레스에 대해 접속되어야 하는 인그레스를 결정한다.
미터링 모듈 (154)과 대기열 매니저(112)의 기능이 하드웨어에 의해 수행되는 실시예에서는, 상술한 기능들의 타이밍은 약 200 나노초의 시간 슬롯 사이즈에 대해 다음과 같이 될 수 있다. 조정과 링크(108)의 구성은 모두 고정된 시간 슬롯에 기초해서 수행된다. 그러나 조정은 바람직하게 시스템 내에서의 지연 때문에 몇 개의 시간 슬롯만큼 링크(108)의 구성에 선행된다. 따라서 조정 모듈(152)은 시간 슬롯의 처음 약 100 나노초 동안 조정을 수행할 수 있고, 이어서 메시지 전송 후 약 300-500 나노초 정도 될 수 있는 특정 시간 슬롯 동안 인그레스가 함께 통신하게 될 이그레스 (104)를 가리키는 메시지가 인그레스(102)로 전송될 수 있다. 이어서 각 인그레스 (104)는 업데이트된 우선순위 정보를 갖고 있는 아비터 칩 (106)에 반응한다. 또한, 각 이그레스(104)는 FIFOs의 채움 상태에 대한 정보를 보낼 수 있다. 도 2는, 예를 들어, 이러한 채움 상태 정보가 송신될 수 있는 이그레스(104)와 아비터 칩(106) 사이의 접속을 도시한다. 따라서 링크(108)의 실제의 구성 및 패킷의 전송이 인그레스에 대한 이그레스를 포함하는 메시지가 인그레스(102)에 의해 수신된 후 조금 지나서(본 실시예에서는 300-500 나노초) 일어난다.
본 발명의 하나의 실시예에서, 각 대기열에 대한 우선순위는 매 시간 슬롯마다 갱신되고, 각 대기열에 대한 보증 속도는 덜 자주 업데이트된다. 예를 들어, 보증 속도는 매 100 시간 슬롯마다 업데이트될 수 있다. 시스템에 대한 OoS 보증은 하나 이상의 시간 슬롯으로 구성되는 약간의 식별가능한 기간에 걸쳐서 결정되ㅁ므로, 보증 속도를 이용하여 결정되는 대역폭 할당은 하나의 또는 심지어 몇 개의 시간 슬롯들에 대한 것이 아니고 주어진 복수의 시간 슬롯들에 대해 평균적으로 적절하게 될 필요가 있다.
도 3a는 본 발명의 하나의 실시예에 따른 동작중 시스템(100)의 모듈들 사이에 교환되는 데이터를 도시한 것이다. 데이터는 상술한 정보를 나타내는 메시지 또는 신호일 수 있다. 상술한 바와 같이 모듈들 사이에서 전송되는 메시지들은 이전의 시간 슬롯에서 전송된 정보로부터의 업데이트된 정보만을 포함하므로, 이중 데이터 전송(duplicate data transfers)을 배제하고 모듈들 사이에 전송되는 정보의 양을 줄인다. 또한, 도 3a에 도시된 바와 같이 별개의 메시지들로서가 아니라, Qlengths(50)와 우선순위 (56)를 포함하는 하나의 메시지가 인그레스로부터 아비터 칩 (106)으로 전송될 것이다. 또한, 도 3a에 도시된 바와 같은 별개의 메시지들로서가 아니라, 출력 이그레스(output egress: 58) 및 업데이트된 보증 속도 (52)를 포함하는 하나의 메시지가 아비터 칩(106)으로부터 인그레서(102)로 전송될 수 있다.
검토를 위해, 도 4b는 도 4a 보다 더욱 상세하게 본 발명의 동작의 하나의 실시예를 도시한 흐름도이다. 이러한 실시예에서, 대역폭 할당기 (150)는 블록 402에서 Qlength 정보를 수신한다. 블록 404에서, 대역폭 할당기 (150)는 대기열에 대한 보증 속도를 결정해서 이러한 보증 속도들을 인그레스 칩(102)으로 전송한다. 본 실시예에서 각 대기열에 대한 보증 속도는 대역폭 할당기 (150)에서 계산될 수 있고 매 100 시간 슬롯마다 한 번씩 인그레스 칩(102)으로 전송될 수 있다. 블록 406에서, 미터 업데이트 모듈 (meter update module: 160)은 각 대기열에 대한 보증 속도를 이용하여 대기열에 대해 크레디트 값을 업데이트한다. 크레디트 값의 이러한 갱신은 본 실시예에서는 매 시간 슬롯마다 일어난다. 블록 408에서, 우선순위 계산 모듈(156)은 크레디트 값과 부분 패킷의 존재 여부와 같은 다른 정보에 기초하여 우선순위를 계산한다. 이러한 우선순위 계산은 매 시간 슬롯마다 진행된다. 블록 410에서, 우선순위 계산 모듈(156)은 인그레스가 통신하기를 원하는 시스템의 이그레스의 우선순위를 결정하고, 다른 실시예에서 우선순위 계산 모듈(156)은 각 이그레스에 대해 최고의 우선순위를 갖는 복수의 대기열들을 선택한다. 양자의 실시예에서 이들 우선순위를 나타내는 정보는 조정 모듈(152)로 전송된다. 이러한 동작은 매 시간 슬롯마다 진행될 수 있다. 블록 412에서, 조정 모듈(512)은 우선순위를 이용해서 각 이그레스에 대한 인그레스를 결정하고, 이러한 결정은 매 시간 슬롯마다 수행된다. 블록 414에서, 우선순위 계산 모듈(156)은 인그레스에 대해서 선택된 이그레스에 따라서 매 시간 슬롯마다 대기열 매니저(112)에게 디큐 요청을 전송하고, 대기열 매니저는 적당한 대기열을 서비스한다. 블록 416에서 대기열 매니저(112)는 미터 업데이트 모듈(160)에 엔큐/디큐 정보를 보내고나서 블록 402에서 시작하는 과정을 반복한다.
B. 보증 속도 (
guaranteed
rate
)의 계산 방법
시스템(100)의 인그레스들 (102)의 대기열들에 대해서 보증 속도를 계산하기 위해 다수의 방법이 본 발명의 범위 내에서 이용될 수 있다. 일반적으로, 보증 속도는 대역폭 할당에 이용되어 서비스 품질(QoS) 보증을 유지한다. 본원에서는 대역폭을 보증하기 위한 네 가지 방법을 설명한다: (1) 단일 대기열에 대해 대역폭 보증, (2) 이그레스에 대해 대역폭 보증, (3) 인그레스에 대해 대역폭 보증, 및 (4) 대기열의 그룹에 대해 대역폭 보증. 도 5는 이들 방법들 중 처음 세 가지의 대역폭 보증 방법을 도시한 것이다.
1.
대기열
대역폭 보증 (
Guaranteeing
Queue
Bandwidth
)
인그레스 내의 특정 대기열 Q에 대한 대역폭을 보장하기 위해서 대기열에 대한 보증 속도는 적당한 값(gq)으로 설정되는데, 이러한 값은 다수의 시간 슬롯 동안에 일정하게 유지될 수 있다. 이러한 일정한 값(gq)은 대기열 내로의 흐름이 적어도 gq인 도착 속도(arriaval rate)를 갖는다면 임의의 적당히 긴 기간에 걸쳐서 대기열이 얻게 되는 평균 대역폭이 gq임을 보증한다. 하나의 실시예에서, 예를 들어, 값 (gq)은 임의의 적당히 긴 기간에 걸쳐서 0.25 Gbps의 대역폭 속도를 할당하기 위해서 0.25 Gbps의 값으로 설정될 수 있다. 도 5에서 블록 502는 값 gq을 설정하는 동작을 도시한 것이다.
보증 속도를 하드웨어로 계산하는 하나의 실시예에서 대역폭 할당기(150)는 임의의 주진 대기열에 대해 대역폭을 보장하기 위해 속도 레지스터(rate registers)에 적당한 값을 세팅한다. 대역폭 할당기(150)는 gq 값이 특정 대기열에 대한 도착 속도를 초과하지 않도록 제한할 수 있는데, 이것은 유휴 대기열(idle queue)이 불합리하게 큰 크레디트를 쌓아서 불필요하게 대역폭이 낭비되지 않도록 한다.
2.
이그레스에서의
대역폭 보장(
Guaranteeing
Bandwidth
at
an
Egress
)
도 6a는 특정한 이그레스 E1에 대하여 대역폭을 보장하는 하나의 실시예를 도시한 것이다. 이러한 실시예에서, 단일의 이그레스 E1에 대한 대역폭은 임의의 하나 이상의 인그레스들(I1, I2)로부터의 패킷들이 이그레스 E1로 전송될 수 있도록 보장된다. 도 6a의 인그레스 I1은 세 개의 대기열들, 대기열들 Q1, Q2, Q3을 포함하는데, 각각의 대기열은 주어진 COS 및 주어진 이그레스와 관련되어 있다. 예를 들어, 이러한 실시예에서 패킷들은 패킷에 대한 COS에 기초할 뿐만 아니라 패킷이 전송예정되어 있는 이그레스에 기초해서도 대기열 내에 버퍼링된다. 도 6a의 대기열 Q1은 예컨대 이그레스 E1과 관련되고 COS1를 가진다. 대기열 Q2는 이그레스 E2와 관련되고 COS2를 가지고, 대기열 Q3은 이그레스 E3과 관련되고 COS3을 가진다. 인그레스 I2 및 I3는 인그레스 I1 내의 대기열들과 동일한 연관성을 가지는 세 개의 대기열들 Q1, Q2, Q3에 의해 설정된다.
본 발명의 이러한 실시예에서 보증 속도를 계산하기 위해서, 동일한 이그레스 E1에 연관되고 동일한 COS를 갖는 대기열들이 Qlengths를 대역폭 할당 모듈 (150)로 전송한다. 도 6a에서 예를 들어, 인그레스 I1, I2 및 I3 내의 대기열 Q1은 각각 Qlengths를 대역폭 할당 모듈 (150)로 전송한다. 이들 대기열들에 대한 보증 속도가 단일의 서브셋 또는 그룹으로 결정된다. 대기열에 대해서 보증 속도를 결정하기 위해, 이그레스 j (즉, 이그레스 E1, E2 또는 E3)로 예정된 인그레스 i (즉, 인그레스 I1, I2 및 I3)내의 대기열 Q 에 대한 보증 속도는 gi j ,q로 표기한다. 이러한 속도 gi j ,q는 시간에 따라서 변할 수 있다. 상기 방법은 일정한 기간에 걸쳐서 평균화된 일부 이그레스 (j)에 대한 대역폭 이퀄링 (bandwidth equaling) Fj ,q = ∑i: inputs gi j .q(t)을 보증함으로써 이그레스 링크에 대해서 대역폭을 보증할 수 있다. 이러한 예에서, i는 이그레스 전체에 대해서 또는 이그레스의 서브셋에 대해서 변화될 수 있다. 각 gi j ,q(t)는 이그레서 j로 예정되어 있고 각각의 인그레스 i 내에, 있다면 각 대기열 Q를 포함하는 데이터를 갖는 관련 대기열 Q에 대해서 시간 t에 할당된 대역폭에 해당한다. 시스템은 주어진 시간에서 이그레스 대역폭의 Fj ,q 가치(worth)가 서로 상이한 인그레스들에 배분되는 것을 보장한다 (즉, 각 인그레스 내의 대기열들에게 할당).
이그레스 j로 예정된, 인그레스 i의 대기열 Q에 대한 Qlength를 Li j,q(t)로 표기한다. 이들 Qlength의 값들은 대역폭 할당 모듈(150)에 주기적으로 전송된다. 만약 Fj,q가 대기열 Q에 대응되는 COS에 대한 이그레스 j에서 보장된 대역폭이라면, 보증 속도 gi j,q(t)는 초기에는 Fj,q/N으로 설정될 수 있는데, 여기서 N은 이러한 대기열 Q를 가지는 인그레스의 수(본 실시예에서는 이그레스로 예정되고 COS를 가지는 각 인그레스내에는 하나의 대기열이 있는데, 다른 실시예에서는 이그레스로 예정되고 COS를 갖는 인그레스 내에 하나 이상의 대기열들이 있을 수 있다)이다. 보증 속도 gi j,q(t)는 다음과 같이 후속 시간 슬롯에서 측정된 Qlengths Li j,q (t)에 기초하여 재설정되거나 재산출될 수 있다:
이러한 예에서 입력들은 인그레스들이 수, N이다. 만약 ∑k: inputs Lk j ,q(t)는 0 (즉, 모든 대기열들이 비어있다)이면, 보증 속도 gi j ,q(t)는 대기열 Q를 가지는 모든 인그레스들 (i)에 대해서 Fj ,q/N로 설정된다. 이어서 각각의 업데이트된 보증 속도 gi j ,q(t)가 대응되는 인그레스로 회송된다. 하드웨어 실시예에서, 대기열 Q에 대한 속도 레지스터들이 업데이트된다. 소프트웨어 실시예에서는, 대기열 Q에 대한 보증 속도변수들 gi j ,q(t)이 업데이트된다.
도 6a의 실시예를 이용한 특별한 실시예로서, 인그레스 I1 내의 대기열 Q1에 대한 Qlength Li j ,q(t)가 200 바이트라고 가정하면, 이그레스에 대한 대역폭 속도 Fj,q은 0.2 Gbps이고, 따라서 총 Qlength ∑k: inputs Lk j ,q(t)가 2000 바이트인 대기열들을 갖는 세 개의 인그레스들이 존재한다. 이러한 예에서, 대기열 Q1에 대한 보증 속도 gi j ,q(t)는 다음과 같다:
도 5를 참고하면, 블록 504에서 시험한 결과 ∑k: inputs Lk j ,q(t)가 0이라면 각각의 인그레스에 대해 보증 속도를 블록 506에서와 동일한 값으로 설정한다. 블록 508에서는 ∑k: inputs Lk j ,q(t)가 0이 아닌 경우에 각 인그레스에 대해 개별적으로 산출된 값으로 보증 속도를 설정한다.
다른 실시예에서는 도 6b에 도시한 바와 같이, 인그레스 내의 하나 이상의 대기열들이 주어진 COS를 갖고 동일한 이그레스로 향하는 데이터를 갖는다. 예를 들어, 도 6b의 대기열, Q1은 이그레스 E1과 연관되고 COS1을 가진다. 대기열 Q5는 E1과 연관되고 COS1을 가지는 인그레스 I1내의 제 2의 대기열이다. 인그레스 I2는 마찬가지로 인그레스 I1 내의 대기열들과 동일한 연관을 가지는 5개의 대기열들 Ql, Q2, Q3, Q4, Q5로 구성되어 있다. 이러한 경우에, 수 N은 주어진 COS를 갖고 동일한 이그레스로 향하는 대기열들의 수가 될 것이다. 예컨대, 도 6b에서, 4개의 대기열들이 COS1을 갖고 E1으로 향한다 (두 개는 인그레스 I1내에 그리고 두 개는 인그레스 I2 내에). 이러한 실시예에서, N=4 (원하는 파라미터를 갖는 대기열들의 수)이고, N=2 (인그레스들의 수)가 아니다.
도 6b는 인그레스 I1, 12가 동일한 이그레스로 향하지만 서로 상이한 COS를 가지는 패킷을 갖는 대기열을 가질 수 있음을 보여준다. 도 6b는 예를 들어, 대기열 Q1 및 대기열 Q2가 모두 이그레스 E1으로 향하지만(이그레스 E1으로 전송될 패킷을 가지지만) 서로 상이한 COS들, 즉, 대기열 Q1에 대해서는 COS1 그리고 대기열 Q2에 대해서는 COS2를 갖는 것으로 가정한다. 단지 동일한 COS를 갖는 대기열들로부터의 정보만을 상기 계산에 이용한다. 따라서, 도 6b에서 COS1을 갖는 이그레스 E1으로 예정된 대기열들에 대한 상기 계산 (∑k: inputs Lk j ,q(t))에서 입력의 수 N은 4이다--즉, 각각의 인그레스들 I1 및 I2에서 대기열들 Q1 및 Q5. 각 인그레스 I1 및 I2 내의 대기열 Q2는 COS가 다르기 때문에 상기 계산에 이용되지 않는다. 이그레스 출력 대역폭 Fj ,p는 COS1하고도 연관되고, 다른 별도의 이그레스 출력 대역폭 양은 COS2와 연관될 수 있다.
상술한 방법은 보증 속도를 산출하기 위해 Qlength를 이용하였다. 보증 속도 산출에는 도착 속도(arrival rate)도 이용될 수 있다는 것을 유의해야 한다. 그러한 실시예에서는, 보증 속도를 계산하기 위해 Qlength 변수 대신에 도착 속도 변수 (arrival rate variables)들이 상기 식에 대입되어 계산될 것이다. 이러한 실시예에서 도착 속도 정보는 대기열 매니저(112)(도 3a)로부터 아비터 칩(106)으로 전송될 수 있다.
3.
인그레스에서의
대역폭 보장 (
Guaranteeing
Bandwidth
at
an
Ingress
)
도 7a는 특정한 인그레스 I1에 대한 대역폭을 보장하기 위한 실시예를 도시한 것이다. 이러한 실시예에서, 인그레스 I1내의 대기열들로부터의 패킷들이 이그레스들 E1, E2, E3 중 임의의 하나와 통신할 수 있도록, 단일의 인그레스 I1에 대한 대역폭이 보장된다. 도 7a의 인그레스 I1은 6개의 대기열들, 대기열 Q1, Q2, Q3, Q4, Q5, Q6를 가지고 각 대기열은 주어진 COS와 연관된다. 도 7a의 대기열 Q1은, 이를테면 COS 1과 연관된다. 대기열 Q2는 COS2와 연관되고 기타등등 이런 식으로 연관된다. 대역폭을 보장하는 이러한 실시예에서, 각각의 인그레스 I1, 12, I3의 대기열들 Q1, Q2, Q3은 하나의 이그레스와 접속될 필요는 없다. 이를테면 COS1를 가지는 대기열 Q1은 시스템의 임의의 이그레스로 예정되는 패킷을 가질 수 있다. 도 7a는 이그레스 E1으로 예정된 대기열 Ql내의 패킷을 도시한 것이지만, 대기열 Q1 내의 다른 패킷은 다른 이그레스로 예정될 수 있다. 그러나 다른 실시예에서, 대기열 Q는 대기열 Q 안에 버퍼링된 모든 패킷들이 주어진 이그레스로 예정되도록 하기 위하여 하나의 주어진 이그레스와 연관될 수 있다.
이러한 실시예에서, 시스템 및 방법은 특정 인그레스에 대한 대역폭을 보장한다. 이러한 경우에, 얼마만큼의 시간(t)에 대해서 평균된 대역폭 이퀄링(badwidth equaling) Ei q = Ej : outputs gi j ,q(t)이 인그레스 i (즉, 주어진 COS를 갖는 인그레스 내의 대기열들의 서브셋)에 대해서 보장된다. 이러한 실시예에서, 대역폭 이퀄링 Ei q 은 인그레스에 대해서 보장되고 이러한 대역폭 Ei q 은 상이한 이그레스들 j 사이에 균일하게 또는 불균일하게 배분될 수 있다. 대응하는 대기열들에 대한 보증 속도 gi j ,q(t)는 Ei q를 합한 상수가 될 수 없는데, 임의의 주어진 시간에서 특정 대기열이 하나의 이그레스로 전송 예정된 패킷을 갖거나 갖지 않을 수 있기 때문이다. 도 7a에서 모두 COS1를 가지는 대기열들 Q1, Q3 및 Q5는 Qlengths를 대역폭 할당기 모듈 (150)로 전송하고, 이들 대기열들에 대한 속도를 그룹으로 또는 서브셋으로 결정하여 인그레스 I1으로 다시 보낸다.
이러한 실시예에서, 보증 속도는 이그레스 대역폭 실시예에서와 마찬가지로 Qlengths에 기초하여 결정된다. Qlength Li j,q(t)는 주어진 인그레스 I1에서 이그레스 j에 대응되는 주어진 COS를 갖는 각각의 대기열 Q에 대해서 결정된다. 이러한 실시예에서, 각각의 이들 Li j,q(t)는 이그레스 대역폭 보장 방법에서와 달리, 단일의 인그레스 내에서 국부적으로 이용할 수 있다. 보증 속도 gi j,q(t)는 Ei q/M로 초기화될 수 있는데, 여기서 M은 주어진 COS를 갖는 대기열들의 수이다. 하나의 실시예에서, 주어진 이그레스와 연관되어 있고 주어진 COS를 갖는 단일의 인그레스 내의 다수의 대기열들이 존재할 수 있다. 다른 실시예에서는, 단지 단일의 대기열 Q만이 주어진 이그레스와 연관되어 있고 주어진 COS를 갖는 인그레스 내에 존재할 수 있다. 또 다른 실시예에서, 인그레스 내의 대기열들은 각각 연관된 COS를 가질 수 있으나, 대기열들은 특정한 이그레스와 연관될 수는 없다. 어떠한 경우라도, 보증 속도 gi j,q(t)는 다음과 같이 후속 시간 슬롯 내의 Qlength Li j,q (t)에 기초하여 재설정되고 계산될 수 있다:
만약 ∑k: outputs Lk j ,q(t)는 0이면, 보증 속도 gi j ,q(t)는 모든 대기열들에 대해서 Ei j ,q/M으로 설정된다. 이어서 각각의 업데이트된 보증 속도 gi j ,q(t)가 대응되는 인그레스(i)로 회송된다. 하드웨어 실시예에서, 대기열 Q에 대한 속도 레지스터들이 업데이트된다. 소프트웨어 실시예에서는, 대기열 Q에 대한 보증 속도변수들 gi j ,q(t)이 업데이트된다.
도 7a의 실시예를 이용한 특별한 실시예로서, Qlength Li j ,q(t)가 100 바이트이고, 인그레스에 대한 대역폭 속도가 0.5 Gbps이며, 인그레스 I1내의 COS1을 갖는 세 개의 대기열들이 총 Qlength ∑k: inputs Lk q(t)가 1000 바이트인 대기열들을 갖는다고 가정한다. 이러한 예에서, 대기열 Q1에 대한 보증 속도 gi j ,q (t)는 다음과 같다:
도 7a에 도시된 실시예에서, 비록 각각의 대기열들 Q1, Q3 및 Q5가 상이한 이그레스에 연관된다고 해도, 인그레스 I1은 COS1을 갖는 세 개의 대기열들 Q1, Q3 및 Q5를 가진다. 예를 들어, 대기열 Q1은 이그레스 E1과 연관되고, 대기열 Q3은 이그레스 E2와 연관된다. 다른 실시예에서, 그러나 인그레스 I1은 동일한 COS를 갖는 다수의 대기열들을 가질 수 있고 동일한 이그레스에 연관될 수도 있다. 또 다른 실시예에서는, 인그레스 I1 내의 대기열들이 특정한 이그레스와 연관되지는 않아도 관련된 COS를 가질 수 있다.
도 5는 블록 510에서 시험한 결과 ∑k: outputs Lk j ,q(t)가 0이라면 각각의 이그레스에 대해 보증 속도를 블록 512에서와 동일한 값으로 설정하는 동작을 도시한 것이다. 블록 514에서, ∑k: outputs Lk j ,q(t)가 0이 아닌 경우에는, 보증 속도를 각 대기열에 대해 개별적으로 산출된 값으로 설정한다.
상술한 방법은 보증 속도를 산출하기 위해 Qlength를 이용하였다. 보증 속도 산출에는 도착 속도도 이용될 수 있다는 것을 유의해야 한다. 그러한 실시예에서는, 보증 속도를 계산하기 위해 Qlength 변수 대신에 도착 속도 변수 (arrival rate variables)들이 상기 식에 대입되어 계산될 것이다. 이러한 실시예에서 도착 속도 정보는 대기열 매니저(112)(도 3a)로부터 아비터 칩(106)으로 전송될 수 있다.
4.
대기열들의
그룹에 대한 대역폭 보장 (
Guaranteeing
Bandwidth
for
a Group
of
Queues
)
도 7b는 대기열들의 임의의 그룹(arbitray group)이 될 수 있는, 대기열들의 그룹에 대한 대역폭을 보장하기 위한 실시예를 도시한 것이다. 이러한 실시예에서, 대역폭은 대기열들의 그룹에 대해서 보장될 수 있고, 여기서 대기열들은 서로 상이한 인그레스에 속할 수 있고, 서로 상이한 이그레스들로 예정된 패킷들을 가질 수 있다. 또한, 그룹 내의 대기열들은 동일한 COS를 갖거나 상이한 COS를 가질 수 있다. 총 대역폭 양(total bandwidth amount)은 대기열들의 Qlengths에 기초해서 대기열들에게 배분될 수 있고, 다른 실시예에서는 대기열들의 도착 속도 (arrival rate)에 기초해서 배분될 수 있다.
본 발명의 하나의 실시예로서 도 7b를 참고하면, 대역폭이 보장되는 대기열들의 하나의 그룹은 인그레스 I1 내의 대기열들 Q1 및 Q3를 포함하고 인그레스 I2 내의 대기열들 Q1, Q4 및 Q6을 포함한다. 이러한 그룹의 대기열들은 동일한 이그레스로 향하지만, 동일한 COS를 갖지는 않는다. 인그레스 I1내의 대기열 Ql은 예를 들어, 이그레스 E1의 포트 1로 향하는 데이터를 포함하고 COS1을 가지고, 인그레스 I1내의 대기열 Q3은 이그레스 E2의 포트 1로 향하는 데이터를 포함하고 COS3을 가진다. 인그레스 I2내의 대기열 Q1은 이그레스 E1의 포트 1로 향하는 데이터를 포함하고 COS1을 가진다. 인그레스 I2내의 대기열 Q4 및 Q6은 대기열들의 그룹에 속하고 이러한 실시예에서 임의 특성(arbitrary characteristics)을 갖는다.
본 발명의 이러한 실시예에서 보증 속도를 계산하기 위해서, 대기열들의 임의 그룹과 연관된 대기열들은 Qlengths를 대역폭 할당기 모듈 (150)로 전송한다. 도 7b에서, 예를 들어, 인그레스 I1 내의 대기열들 Q1 및 Q3과 인그레스 I2 내의 대기열들 Q1, Q4 및 Q6은 각각 Qlengths를 대역폭 할당기 모듈(150)로 전송한다. 이러한 5 개의 대기열들에 대한 보증 속도는 하나의 서브셋 또는 그룹으로 결정된다. 각 대기열에 대해서 보증 속도를 산출하기 위해, N 대기열들의 그룹 내의 대기열 Q를 gi q로 표기한다. 이러한 속도 gi q는 시간에 따라서 변할 수 있다. 상기 방법은 일정 기간에 대해 평균된 대역폭 이퀄링 FARB = ∑i: inputs gi q(t)을 보장함으로써 대기열들의 그룹에 대한 대역폭을 보장할 수 있다. 이러한 실시예에서, i는 N 대기열들의 그룹 내의 각 대기열들에 대해서 달라진다. 각각의 gi q는 연관된 대기열 Q에 대해 시간 t에 할당된 대역폭에 해당한다. 시스템은 대역폭의 FARB 가치를 보장하는데, 이는 임의의 주어진 시간에서 N개의 대기열들의 그룹 내의 상이한 대기열들 사이에 배분될 것이다.
N개의 대기열들의 그룹 내의 대기열 Q에 대한 Qlength를 Li q(t)로 표기한다. 이들 Qlength의 값들은 대역폭 할당 모듈(150)에 주기적으로 전송된다. 만약 FARB가 N 대기열들의 그룹에 대해 보장된 대역폭이라면, 보증 속도 gi q(t)는 초기에는 FARB/N으로 설정될 수 있는데, 여기서 N은 대기열들의 그룹 내의 대기열들의 수이다. 보증 속도 gi q(t)는 다음과 같이 후속 시간 슬롯에서 측정된 Qlengths Li q(t)에 기초하여 재설정되거나 재산출될 수 있다:
이러한 예에서 입력들은 그룹내의 대기열들의 수 N에 따라서 달라진다. 만약 ∑i: inputs Lk q(t)가 0 (즉, 그룹내의 모든 대기열들이 비어 있다)이면, 보증 속도 gi q(t)는 그룹 내의 모든 대기열에 대해서 FARB/N으로 설정된다. 이어서 도 7b에 도시된 바와 같이, 각각의 업데이트된 보증 속도 gi q(t)가 대응되는 인그레스로 회송된다. 하드웨어 실시예에서는, 대기열 Q에 대한 속도 레지스터들이 업데이트된다. 소프트웨어 실시예에서는, 대기열 Q에 대한 보증 속도 변수들 gi q(t)이 업데이트된다.
도 7b의 실시예를 이용한 특별한 실시예로서, 인그레스 I1 내의 대기열 Q1에 대한 Qlength Li q(t)가 800 바이트이고, 대기열들의 그룹에 대한 대역폭 속도 FARB가 0.8 Gbps이며, 총 Qlength ∑i: inputs Lk q(t)가 2000 바이트인 그룹내의 5개의 대기열들이 있다고 가정한다. 이러한 예에서, 대기열 Q1에 대한 보증 속도 gi q(t)는 다음과 같다:
상술한 방법은 보증 속도를 산출하기 위해 Qlength를 이용하였다. 보증 속도 산출에는 도착 속도도 이용될 수 있다는 것을 유의해야 한다. 그러한 실시예에서는, 보증 속도를 계산하기 위해 Qlength 변수 대신에 도착 속도 변수 (arrival rate variables)들이 상기 식에 대입되어 계산될 것이다. 이러한 실시예에서 도착 속도 정보는 대기열 매니저(112)(도 3a)로부터 아비터 칩(106)으로 전송될 수 있다.
C. 크레디트 값
업데이트
방법 (
Methods
for
Updating
Credit
Values
)
본 발명의 하나의 실시예에 의한 주어진 대기열에 대한 크레디트 값의 업데이트 방법을 도 8에 도시하였다. 상술한 바와 같이, 크레디트 값은 일반적으로 각 시간 슬롯 이후에 서비스되지 않은 대기열에 대해서 증가되므로, 이들 대기열들에 대한 우선순위가 증가한다. 마찬가지로, 서비스된 대기열은 그러한 대기열에 대한 우선순위가 감소되도록 서비스되는 시간 슬롯 이후에 감소된 연관된 크레디트 값을 가진다. 하나의 실시예에서, 각 크레디트 값의 초기값은 본 발명의 동작 이전에는 0이 될 수 있다. 인그레스의 각 대기열에 대한 크레디트 값은 일반적으로 매 시간 슬롯에서 업데이트된다. 따라서 대기열이 서비스되고나서, 크레디트 값은 현재의 값보다 감소될 수 있다 (초기에는 0이나, 동작 개시 후에는 크레디트 값의 현재 값은 큰 양수가 되거나 큰 음수가 될 수 있다). 크레디트 값은 대역폭 할당기 모듈(150)로부터 수신한 대기열들의 보증 속도(52)를 이용하여 미터링 모듈(154)의 미터 업데이트 모듈(160)에서 업데이트될 수 있다. 정상 상태 시스템(steady-state system)에서, 모든 대기열들에 대한 크레디트 값은 0까지 가산될 수 있는데, 이는 대기열들이 평균적으로 원하는 대역폭 속도를 받는다는 것을 가리킨다.
도 8은 인그레스 내의 단일의 대기열에 대한 주어진 시간 슬롯 동안에 본 발명의 하나의 실시예에서 일어날 수 있는 세 가지 이벤트를 도시한 것이다. 엔큐 이벤트 (enqueue event)가 일어날 수 있는데, 이는 데이터 패킷이 대기열로 들어가는 것을 의미한다. 디큐 이벤트 (dequeue event)가 일어날 수 있는데, 이는 대기열이 서비스되고 패킷이 대기열로부터 공유 링크로 전송되었음을 의미한다. 세 번째 이벤트는 증분 이벤트(increment event)로, 이는 이러한 실시예에서 매 시간 슬롯 동안에 일어날 수 있다. 하나의 시간 슬롯 동안에, 도 8의 세 개의 이벤트 각각은 하나의 대기열에 대해서 일어난다. 이러한 실시예에서 증분 이벤트의 경우에, 크레디트 값은 도 8에서 블록 802로 표시된 바와 같이, 현재의 크레디트 값에 대기열에 대한 보증 속도를 더함으로써 증분된다. 블록 804 및 806로 도시한 바와 같이, 새로운 크레디트 값은 대기열에 대한 상한(대기열에 대한 COS에 기초할 수 있다)보다 크다면, 크레디트 값은 대기열에 대한 상한(maximum limit)으로 재설정된다. 하나의 실시예에서 증분 이벤트는 매 시간 슬롯마다 진행되어 각 대기열이 각 시간 슬롯 이후에 그의 연관된 크레디트 값만큼 증분된다.
대기열들에 대한 크레디트 값에 대한 상한들은 낮은 COS를 갖는 대기열들에 대한 크레디트 값이 너무 커지는 것을 예방한다. 따라서 이들 대기열들에 대한 우선순위는 캐핑(capping)될 수 있다. 이것은 낮은 COS를 갖는 대기열들이 높은 COS를 갖는 대기열들과 동일한 속도로 서비스되지 않도록 보장한다.
이러한 실시예에서 이벤트가 디큐 이벤트라면, 도 8에 블록 810으로 도시한 바와 같이, 대기열들에 대한 Qlength는 작아지고, 따라서 대기열들에 대한 Qlength가 업데이트된다. 새로운 패킷 또는 패킷들은 서비스되기 위한 대기열의 헤드에 놓이지 않고, 패킷 또는 패킷들의 사이즈는 블록 812에 도시된 바와 같이 업데이트될 수 있다. 새로운 패킷이 주어진 시간 슬롯보다 큰 경우에는, 블록 814로 도시된 바와 같이 부분 패킷 변수가 업데이트될 것이다. 부분 패킷 변수는 일단 시작되면, 하나의 시간 슬롯보다 큰 패킷이 방해를 받지 않고 공유 링크(108)를 통해서 전송될 수 있도록 해당 대기열에 대해 공유 링크(108)에 대한 통신이 유지되어야 함을 나타낸다. 이어서 대기열에 대한 크레디트 값이 블록 816에 도시한 바와 같이 감소된다. 하나의 실시예에서 크레디트 값은 전송된 시간 슬롯 동안 전송된 패킷의 수(즉, 시간 슬롯 동안 하나 이상의 패킷이 전송)의 함수 또는 바이트의 함수로 감소된다. 다른 실시예에서, 크레디트 값은 하나의 시간 슬롯을 통해서 전송될 수 있는 데이터의 양(즉, 바이트 수 또는 비트 수)만큼 감소될 수 있다. 이와 같이, 크레디트 값은 적절하게 감소되어 다른 대기열에 대해서 대역폭이 재할당될 수 있다. 이러한 실시예에서, 증분 이벤트는 시간 슬롯 이후에 진행되어, 크레디트 값이 디큐 이벤트에 대해서 단일의 시간 슬롯 동안 전송될 수 있는 바이트의 수 만큼 감소되고나서(예를 들어), 증분 이벤트에 대해 대기열에 대한 보증 속도만큼 증가된다. 업데이트된 크레디트 값이 블록 818에서 시험된 바와 같이, 대기열에 대한 COS에 기초할 수 있는 대기열에 대한 하한보다 작다면, 크레디트 값은 블록 820에서 대기열에 대한 하한으로 재설정된다.
최소 크레디트 값은 특정한 COS를 갖는 대기열에 대한 우선순위가 너무 작아지지 않도록 보장하기 위해 이용된다. 이것은 대기열이 충분히 자주 서비스되지 않는 것을 예방한다.
이벤트가 엔큐 이벤트(enqueue event)라면, 대기열에 대한 Qlength가 0인 것으로 표시되었는지 판단한다(블록 830). 현재의 Qlength가 0이라면, 이전의 시간 슬롯 동안에 대기열 내에 패킷이 존재하지 않았음을 의미한다. 엔큐 이벤트 동안에 패킷이 대기열로 들어갔기 때문에, 대기열에 대한 패킷 사이즈가 대기열에 대한 부분 패킷 변수에 따라서 업데이트될 필요가 있다(블록 832 및 834). 만약 Qlength가 0이 아니라면, 패킷이 대기열의 헤드(및 이전이 시간 슬롯에서도 존재했던)에 존재하고, 패킷 사이즈 및 부분 패킷 변수는 이미 이전의 시간 슬롯 동안에 설정되었다. 도 8의 블록 836은 데이터의 엔큐된 패킷에 기초하여 Qlength를 업데이트하는 동작을 나타낸 것이다. 증분 이벤트는 디큐 이벤트에서와 같이 엔큐 이벤트와 동일한 타이슬롯 동안에 진행될 수 있다.
D. 대기열 우선순위 결정 방법
대기열에 대해서 크레디트 값이 업데이트된 후, 이그레스에 접속할 필요가 있음을 나타내는 각 인그레스 내의 각 대기열에 대한 우선순위가 결정될 수 있다. 위에서 설명하고 아래에서도 설명되는 바와 같이, 이러한 우선순위들은 인그레스들과 이그레스들 사이의 공유 링크(108)의 매핑(mapping)을 계산하는데 이용될 수 있다.
하나의 실시예에서, 대기열들에 대한 우선순위는 0과 15 사이의 16 포인트 레벨로 등급화될 수 있다. 이러한 실시예에서, 대기열들에 대한 우선순위는 이러한 등급화된 레벨에 기초해서 대기열들에 대한 크레디트 값으로부터 결정될 수 있다. 예를 들어, 주어진 대기열에 대한 크레디트 값이 1 Gbps를 얻게 된다면, 대기열들에 대한 우선순위는 레벨 5로 설정될 수 있고, 주어진 대기열에 대한 크레디트 값이 2 Gbps를 얻게 된다면, 대기열들에 대한 우선순위는 레벨 10으로 설정될 수 있다. 이러한 실시예에서 0 또는 1과 같은 낮은 우선순위에 대해서는 음의 크레디트 값이 설정될 것이다. 이러한 실시예에서, 최고 우선순위를 갖는 대기열이 주어진 시간 슬롯 동안 서비스될 대기열이다. 크레디트 값들의 우선순위로의 변환은 인그레스(102)로부터 아비터 칩(106)으로 전송되어야 하는 데이터의 양을 최소화할 수 있다. 예를 들어, 크레디트 값이 사이즈 상 1,000, 000,000을 넘을 수 있으나, 이러한 크레디트 값에 대한 대응 우선순위는 10일 수 있다. 우선순위가 16 포인트 레벨로 등급화된다면, 하드웨어 실시예에서는 우선순위를 위해 4-비트 레지스터가 이용될 수 있다.
크레디트 값의 업데이트와 관련하여 상술한 바와 같이, 특정 대기열에 대한 크레디트 값은 대기열에 대한 COS에 따라서 제한될 수 있다. 예를 들어, COS1을 갖는 대기열은 16 포인트 스케일 상에서 최소 우선순위 레벨 5에 해당할 수 있는 특정한 최소 크레디트 값으로 제한될 수 있다. 마찬가지로, COS8을 갖는 대기열은 16 포인트 스케일 상에서 최소 우선순위 레벨 12에 해당할 수 있는 특정한 최소 크레디트 값으로 제한될 수 있다.
0부터 15까지의 16 포인트 우선순위 스케일을 이용하는 실시예에서, 0의 우선순위는 비어 있어 공유 링크(108)를 통해서 전송할 패킷이 없는 대기열을 위해 예비된다. 마찬가지로, 15의 최고 우선순위는 부분 패킷을 위해 예비될 수 있다. 위에서 설명한 바와 같이, 패킷이 공유 링크(108) 상에서 하나의 시간 슬롯으로 전송되기에 너무 큰 경우에는, 부분 패킷 변수가 대기열에 결합된다. 패킷을 갖는 대기열이 궁극적으로 공유 링크(108)에 접속되면, 다음 시간 슬롯에서 그러한 대기열에 대해서 최고 우선순위가 설정되고 대기열이 지속적으로 공유 링크(108)에 접속되어 세그멘테이션 및 재결합 없이 패킷이 공유 링크(108)를 통해서 지속적으로 전송될 수 있게 된다.
표 1은 대기열에 대한 크레디트 값을 우선순위로 변환하는 다른 실시예를 나타낸 것이다. 이러한 실시예에서, 대기열에 대한 크레디트 값으로부터 우선순위로의 변환은 크레디트 값으로부터 우선순위로의 단순 스케일링 이상의 과정을 포함할 수 있다. 대기열이 비어있는지 여부 및 대기열이 너무 많이 서비스되었는지와 같은 다른 대기열 정보가 고려될 수 있다. 따라서 표 1은 그러한 조건이 부합된다면 대기열에 대해서 할당될 수 있는 우선순위와 다수의 조건들을 포함한다. 이러한 실시예에서, 각 대기열은 상술한 바와 같이 그와 연관된 크레디트 값 C(q)을 가진다. 스케일링 인자(scaling factor) S는 큰 크레디트 값을 작은 우선순위들로 등급화하는데 이용되는 상수이다.
조건 | 대기열에 대한 우선순위 |
1. 만약 패킷이 이전 시간 슬롯으로부터의 부분 패킷이면(즉, 대기열이 그에 결합된 부분 패킷 변수를 가진다면) | MAXPRI |
2. 대기열이 급송 대기열이고 대기열에 대한 크레디트 값 C(q)이 0보다 크면 | MAXPRI-1 |
3. 대기열이 급송 대기열이 아니고 대기열에 대한 크레디트 값 C(q)이 0 보다 크다면 | MIN[[(C(q)/S), MAXPRI-1] |
4. 대기열이 비어 있지 않고 아래의 조건이 충족되지 않는다면, 최소 우선순위가 설정될 수 있다(즉, 우선순위는 위에서 결정된 것보다 더 커질 수 있다) | 1 |
5. 대기열이 비어 있거나 크레디트 값 C(q) <Slimit | 0 |
표 1에서 조건 1이 가리키는 바와 같이, 본 실시예에서, 만약 패킷이 이전 시간 슬롯으로부터의 부분 패킷이면, 대기열에 대한 우선순위는 MAXPRI로 설정된다. 0부터 15까지의 16 포인트 스케일 상, MAXPRI는 15이다. MAXPRI가 할당된 이러한 부분 패킷은, 하나의 실시예에서, 그에 연관된 부분 패킷 변수를 가진다. 역으로, 비어 있는 대기열은, 표 1에서 조건 5와 같이 0의 우선순위를 할당받는다. 이것은 0의 우선순위를 갖는 대기열이 주어진 시간 슬롯 동안 서비스되지 않도록 보장하는 최소 우선순위이다.
표 1에서 조건 5는 제 2의 조건을 갖는데, 만약 충족된다면 우선순위를 0(즉, 최소 우선순위)으로 설정한다. 크레디트 값 C(q)이 대기열에 대한 shaping limit (Slimit) 보다 적다면, 우선순위는 0으로 설정될 것이다. shaping limit (Slimit)는 대기열이 일정 기간에 걸쳐서 너무 많은 대역폭을 받지 않도록 우선순위를 등급화하는데 이용되는 변수이다. 이를테면 보증 속도는 대기열이 수신되어야 하는 최소 속도(Fmin)이다. 즉, 최소 속도(Fmin)는 대기열이 수신해야 하는 최대 속도일 수 있다. 물론 단일의 시간 슬롯보다 큰 구별가능한 길이의 시간에 걸쳐서 수신된 대역폭이 이러한 속도가 달성되었는지 확인하기 위해 측정되어야만 한다. 이를테면, 50 마이크로 초의 기간은 그러한 기간에 걸쳐서 최소 속도(Fmin)가 달성되어야 하고 최고 속도(Fmax)가 초과하여서는 안 되는 기간이 될 수 있다. 50 마이크로 초의 기간은 각 500 나노초인 100개의 시간 슬롯과 동일할 수 있다. 이러한 실시예에서, shaping limit (Slimit)은 다음과 같이 설정될 수 있다:
Slimit = (Fmin - Fmax)*기간
Fmin이 Fmax보다 적을 것이므로, shaping limit (Slimit)는 일반적으로 음수가 될 것이다. 크레디트 값은 그의 대기열이 최근에 서비스되고 따라서 대기열이 그 시점에서 그의 보증 속도 이상을 받은 경우에만 음수가 된다. 음수 크레디트 값의 크기가 커질수록, 대응되는 대기열이 더 많이 서비스되었고, 그의 보증 속도를 초과한 대기열들이 많아진다. 이러한 경우에, 대기열에 대한 우선순위는 표 1에 조건 5로 기재한 바와 같이, shaping limit (Slimit)를 이용하여 0으로 강제되어야 한다. 기간당 바이트(bytes per time period)로 변환된 크레디트 값 (Cq)이 shaping limit (Slimit) 미만이면 우선순위는 0으로 설정되어, 다음 시간 슬롯에서 대기열이 서비스되지 않도록 보장한다. 변환된 크레디트 값 (Cq)이 shaping limit (Slimit) 미만이면, 대기열이 그 기간에 걸쳐서 허용되는 최대 대역폭을 이미 초과하여, 우선순위가 0으로 설정될 것이다. 이러한 방식으로, 대기열에 대해서 수득될 수 있는 최대 대역폭은 특정 기간에 걸쳐서 제한된다. 그러나 만약 대기열이 일정 기간에 걸쳐서 최대 대역폭을 초과하는 것이 필요한 경우에는, 크기가 큰 음의 크레디트 값의 대기열이 자주 서비스되지 않도록 하기 위하여 대기열에 대한 크레디트 값은 주기적으로 0으로 설정되어 한다.
표 1의 조건 2와 관련하여, 인그레스는 급송 대기열(expedite forwarding queue)인 대기열로 설정될 수 있다. 이러한 대기열은 크레디트 값에 무관하게 인그레스 내의 다른 대기열들에 우선하여 서비스되는 대기열이다. 급송 대기열은 특정 패킷을 최대한 빨리 전송하기 위해 인그레스 내에서 이용될 수 있다. 이러한 경우에, 패킷은 급송 대기열 내에 버퍼링될 것이다. 표 1에서 조건 2에 대해 도시된 바와 같이, 대기열이 패킷을 포함한다면(즉, 대기열이 비어 있지 않다면) MAXPRO-1의 우선순위가 이러한 급송 대기열에 대해서 설정된다. MAXPRO-1의 우선순위는 MAXPRI의 우선순위를 갖는 동일한 이그레스를 원하는 대기열이 없는 한 해당 대기열이 서비스되도록 보장한다. 마찬가지로 두 개의 대기열들이 MAXPRO-1의 우선순위를 가질 수 있는데, 이 경우에 두 개의 대기열들 사이의 타이를 후술하는 바와 같이 깨는 것이 필요하다. 0부터 15까지의 16 포인트 스케일에서, MAXPRO-1는 14이다.
표 1에서 조건 3은 크레디트 값이 우선순위로 등급 매겨지는 전형적인 조건을 가리킨다. 일반적으로, 대기열이 부분 패킷을 갖지 않고, 대기열이 급송 대기열이 아니고, 대기열에 대한 크레디트 값 C(q)이 음수가 아니면, 대기열에 대한 우선순위는 대기열에 대한 크레디트 값 C(q)을 스케일링 인자 S로 나누어 산출할 수 있다. 우선순위는 대기열에 대한 크레디트 값 C(q)을 스케일링 인자 S로 나누어 반올림한 값일 수 있어, 6.4의 숫자는 우선순위 6으로 반올림된다. 스케일링 인자(S)의 이용은 선형 스케일링을 포함한다. 그러나 스케일링은 반드시 선형일 필요는 없고 비선형일 수도 있다. 또한, 룩-업 테이블 또는 일련의 "조건문(if, then)" 결정이 크레디트 값에 기초해서 우선순위를 결정하는데 이용될 수 있다. 정해진 스케일(0부터 15까지의 스케일과 같은) 내에 우선순위가 자리하도록 하기 위해 대기열에 대한 우선순위는 대기열이 부분 패킷을 포함하지 않으면 MAXPRI-1의 최고 수준으로 설정될 수 있다. 표 1에서 조건 3은 따라서 그러한 대기열에 대한 우선순위에 대해서 MAXPRI-1 또는 C(q)/S 중에서 작은 것을 취할 수 있다.
표 1에서 조건 4는 대기열이 비어 있지 않고 조건 5가 적용되지 않는다면(즉, 크레디트 값 C(q)이 shaping limit Slimit 보다 작지 않다면), 대기열에 대한 우선순위는 최소 우선순위가 된다는 것을 보여준다. 표 1은 이러한 최소 우선순위는 1이 됨을 가리킨다. 대기열에 대한 우선순위는, 조건 3으로 나타낸 바와 같이, 크레디트 값 C(q)이 양의 값인 경우에 더 클 수 있다. 대기열이 비어 있지 않고 조건 5가 충족되지 않는다면 조건 4는 최소 우선순위가 설정됨을 가리킨다.
대기열의 크레디트 값은 많이 달라질 수 있다. 그것은 억만큼 크거나 절대값이 1억 정도인 음의 값일 수도 있다. 크레디트 값으로부터 우선순위로의 변환의 예로서, 대기열에 대한 보증 속도가 0.0005 Gbps 또는 500,000 bps가 된다고 가정한다. 대기열이 서비스되는 각각의 시간 슬롯의 경과에 따라서 대기열에 연관된 크레디트 값도 500,000 bps 만큼 증가한다. 이러한 실시예에서 스케일링 인자 S는 1,000,000이다. 대기열에 대한 크레디트 값이 12,000,000의 값으로 증가하면, 따라서, 대기열에 대한 우선순위가 12로 설정될 것이다 (대기열이 급송 대기열이 아니고, 대기열이 부분 패킷을 갖지 않는다고 가정할 때). 대기열에 대한 크레디트 값이 5,000,000이면, 대기열에 대한 우선순위는 1로 설정될 것이다 (표 1의 조건 1, 2 또는 5가 적용되지 않을 경우)
E. 대기열 서비스 선택 방법
각각의 대기열에 대한 우선순위가 결정되고 나서, 시간 슬롯 동안 인그레스와 이그레스 사이의 공유 링크(108)를 통한 매핑을 계산하는데 복수의 우선순위들이 이용된다. 도 9는 주어진 시간 슬롯 동안 서비스하기 위해 대기열을 선택하는 방법의 간단한 예를 도시한 것이다. 도 9는 각각 4 대기열들을 포함하는 두 개의 인그레스들 11, 12을 도시하고 있다. 각각의 대기열 Ql, Q2, Q3, Q4 내에 도시된 것은 대기열에 대한 COS, 대기열의 헤드의 패킷이다. 대기열들의 헤드에 있는 각각의 패킷들은 임의의 주어진 시간 슬롯 동안에 공유 링크(108)에 액세스하려고 경쟁한다. 도 9에서, 예를 들어, E1으로 예정된 패킷은 각 대기열 Q1의 헤드에 있고, E1으로 예정된 패킷은 각 대기열 Q2의 헤드에도 있고, E2로 예정된 패킷은 각 대기열 Q3 및 Q4의 헤드에 있다.
도 9를 참고하면, 각 대기열들 Ql, Q2, Q3, Q4에 대해서 우선순위들 P1l, P12, P21 및 P22이 계산되었다. 하나의 실시예에서, 우선순위 계산과 대기열 선택은 매 시간 슬롯마다 일어난다. 임의의 주어진 순간에, 따라서, 대기열의 헤드에 있는 패킷(또는 패킷들)에 대한 우선순위는 대기열 자체에 대한 우선순위와 유사한데, 대기열의 헤드에 있는 패킷 또는 패킷들만이 주어진 시간 슬롯 동안 공유 링크(108)에 액세스하기 위해 경쟁하기 때문이다. 따라서 명세서 전반에서 대기열에 대한 순시 우선순위 (instantaneous priority)는 대기열의 헤드에 있는 패킷(또는 패킷들)의 우선순위와 상동성인 것으로 간주된다. 또한, "순시"라고 언급되는 우선순위는 약간의 유한한 기간을 갖는 시간상 순간인 주어진 시간 슬롯의 우선순위를 의미하고, 이러한 우선순위는 주어진 시간 슬롯 다음의 시간 슬롯에서 변하거나 변하지 않을 수 있다.
도 9에서, 각각 4 개의 대기열들(Q1, Q2, Q3, Q4)을 갖는 두 개의 인그레스들(Il 및 I2)이 공유 링크(108)를 통해서 이그레스들(E1 및 E2)에 접속가능한 것을 보여준다. 인그레스와 이그레스 사이의 매핑을 위한 2-레벨 프로세스가 다음과 같이 이용될 수 있다. 첫 번째 레벨에서, 특정한 이그레스로 향하는 각 인그레스 내의 대기열들의 각 그룹에 대해서 제 1 순시 우선순위(first instantaneous priority)가 선택된다. 이러한 선택의 제 1 레벨은 우선순위 계산 모듈에 의해 인그레스 내에서 행해질 수 있다 (도 3a). 도 9에서 인그레스 Il의 경우에, 예를 들어, 대기열 Q1 및 대기열 Q2는 모두 이그레스 E1으로 향하는 패킷들을 포함하고있다. 두 개의 대기열들 Ql, Q2의 우선순위에 기초하여, 이들 대기열들 중 제 1 우선순위를 갖는 하나가 선택된다. 하나의 실시예에 있어서, 이를테면, 그와 관련된 높은 우선순위를 갖는 대기열이 선택된다. 마찬가지로 인그레스 I2에서, 대기열들 Q1 및 Q2는 모두 이그레스 E1로 향하는 패킷들을 포함하고, 제 1 우선순위를 갖는 대기열이 선택된다. 대기열 선택에서 대기열에 대한 COS가 무시될 수 있다는 것도 유의할 만한 가치가 있다. 대기열에 대한 COS는 이미 대기열에 대한 우선순위 결정에 이용되었다. 도 9는 각 인그레스 I1, I2 내에서의 이그레스 E2로 향하는 패킷을 갖는 대기열(제 1 우선순위를 갖는)의 선택을 보여준다. 제 1 레벨에서 제 1 우선순위를 갖는 각각의 선택된 대기열에 대한 대기열 수, 인그레스 수 및 우선순위는 도 9에 도시된 바와 같이, 아비터 칩(106)의 조정 모듈(152)로 전송된다.
2-레벨 프로세스에서 대기열 선택의 제 2 레벨은 조정 모듈(152) 내에서 일어난다. 제 2 레벨에서, 제 2 우선순위를 갖는 대기열이 인그레스들 I1, I2로부터 수신된 제 1 우선순위들을 갖는 대기열들의 서브셋으로부터 선택된다. 이러한 제 2 레벨 선택은 각 인그레스가 각 이그레스와 접속하기를 원하는 우선순위를 검토해서 각 인그레스에 대한 이그레스를 선택한다. 도 9를 이용하여, 예로서 대기열 Q1이 인그레스 I1에서 우선순위 P11= 12를 갖고 이그레스 E1에 대한 선택의 제 1 레벨에서 인그레스 Il내에서 선택되었다고 가정하자. 마찬가지로 대기열 Q2가 인그레스 I2에서 우선순위 P12= 7을 갖고 이그레스 E1에 대한 선택의 제 1 레벨에서 인그레스 I2 내에서 선택되었다고 가정하자. 이들 두 개의 대기열들, 우선순위들 및 원하는 이그레스들은 조정 모듈(152)로 전송된다. 대기열 선택의 제 2 레벨에서, 조정 모듈(152)은 이들 대기열들 (모두 이그레스 E1으로 예정된 패킷들을 포함)로부터 제 2 우선순위를 갖는 대기열을 선택한다. 하나의 실시예에서, 이를테면 최고 우선순위를 갖는 대기열이 이그레스에 대해서 선택된다. 이러한 예에서, 이를테면 인그레스 I1으로부터의 대기열 Q1은 E1에 대해서 인그레스 I2로부터의 대기열 Q2가 가지는 것보다 더 높은 우선순위를 가진다(즉, 7의 우선순위보다 높은 우선순위 12). 따라서 제 2 레벨은 주어진 시간 슬롯 동안 각 인그레스가 접속될 이그레스를 결정한다.
따라서 우선순위들의 NxM 매트릭스가 조정 모듈(152)에서 이용되는데, 여기서 N은 인그레스들의 수이고 M은 이그레스들의 수이다. 이를테면 조정 모듈(152)은 제 1 레벨 선택에서와 마찬가지로 각 인그레스로부터 인그레스가 각 이그레스를 원하는 최대 우선순위를 수신할 수 있다. 이어서 이들 우선순위들을 제 2 레벨 선택에서 인그레스가 각 이그레스에 대해서 선택될 수 있도록 NxM 매트릭스를 채운다. 도 9에 도시된 바와 같이, 시간 슬롯 동안에 액세스하게 될 이그레스(있다면)를 인그레스에게 알리는 메시지가 각 인그레스에 전송된다. 이어서 인그레스는 결정된 이그레스에 대해 그것이 선택한 대기열을 패킷 전송을 위해 공유 링크(108)에 접속한다.
대기열 선택의 제 2 레벨 중에, 단일의 대기열이 서로 상이한 이그레스로 예정된 패킷들을 갖는 하나 이상의 대기열을 포함할 수 있고, 그러한 이그레스에 대해서 최고 우선순위를 갖는다는 것을 유의해야 한다. 몇몇 실시예에서, 하나의 인그레스의 하나의 대기열만이 시간 슬롯 동안 하나의 이그레스에 접속될 수 있기 때문에(본 발명의 실시예의 물리적인 제한), 이들 대기열들 각각이 공유 링크(108)에 액세스하기 위해 선택되지 않을 것이다. 이러한 경우에 최고 우선순위를 갖는 대기열은 인그레스 내의 대기열들로부터 선택되고 그러한 대기열에 대한 이그레스는 그러한 높은 우선순위에 따라서 선택된다. 이어서 인그레스는 다른 이그레스들에게 접속하기 위한 시간 슬롯 동안만큼은 이용될 수 없고, 그러한 인그레스로부터의 우선순위는 이러한 시간 슬롯 동안 제 2 레벨 선택에서 나머지 대기열 선택 중에 무시될 수 있다. 도 9의 예로서, 인그레스 I1으로부터의 대기열 Q1이 우선순위 P11= 12를 갖고 조정 모듈(152) 내의 모든 인그레스들에 대해서 최고의 우선순위를 갖는다고 가정한다. 더욱이, 인그레스 I1으로부터의 대기열 Q3이 우선순위 P21= 10를 갖고 모든 인그레스들 중에서 이그레스 E2에 대해 최고의 우선순위를 갖는다고 가정한다. 이러한 예에서, 인그레스 I1으로부터의 대기열 Q1은 인그레스 I1으로부터의 대기열 Q3에 비해 큰 우선순위를 갖고(12는 10 보다 크다), 따라서 인그레스 I1으로부터의 대기열 Q1이 이그레스 E1에 대해서 선택될 것이다. 인그레스 I1으로부터의 나머지 대기열들은 주어진 시간 슬롯 동안 공유 링크(108)에 접속하기 위해 이용가능하지 않을 것이다. 인그레스 I1으로부터의 대기열 Q3은 따라서 주어진 시간 슬롯 동안 사용가능하지 않게 되고 상이한 인그레스로부터의 상이한 대기열이 이그레스 E2에 대해 선택될 것이다.
두 개 이상의 우선순위들이 양자의 인그레스 내에서 또는 조정 모듈(152) 내에서 동일한 경우에 타이-브레이킹 방법(tie-breaking method)이 필요하다. 이러한 타이-브레이킹은 무작위 선택, 라운드 로빈 선택, 가장 적게 서비스된 대기열을 이용하는 기타의 방법을 이용하여 행해질 수 있다. 도 9를 이용하여, 예로서 인그레스 I1 내의 대기열 Q1이 이그레스 E1에 대해 우선순위 P11= 10를 갖고, 인그레스 I1으로부터의 대기열 Q2가 이그레스 E1에 대해 우선순위 P12= 10을 가진다고 가정한다. 최근 가장 적게 서비스된 대기열을 이용하는 타이-브레이킹 방법에서, 최근 가장 적게 서비스된 대기열 Q1 또는 Q2가 선택된다. 이그레스에 대한 인그레스로부터의 우선순위의 타이-브레이킹을 위해서 조정 모듈(152) 내에서 유사한 과정이 이어질 수 있다. 이러한 경우에, 이를테면, 이그레스에 최근 가장 적게 접속되었던 인그레스가 서비스되거나 다른 실시예에서는, 최근에 가장 적게 서비스된 양자의 인그레스들로부터의 대기열이 선택될 것이다.
도 9는 라인 110a를 통해서 아비터 칩(106)에 전송될 각 이그레스 (E1, E2) 내의 FIFOs의 상태를 포함하는 메시지를 도시한 것이다. 이그레스의 FIFOs가 얼마나 찼는지(full)를 나타내는 FIFOs의 상태가 인그레스와 이그레스를 매핑하기 위해 조정 모듈(152)에서 이용될 수 있다. 대기열에 대한 우선순위는 대기열이 통신하고자 하는 이그레스 내의 FIFO가 찼다면 감소될 수 있다. 즉, 이그레스의 FIFO가 찼다면 그 FIFO로는 패킷이 전송되지 않을 것이고, 이그레스의 모든 FIFO들이 찼다면 그 시간 슬롯 중에는 이그레스로 패킷이 전송되지 않을 것이고, 다음 시간 슬롯 중에는 대기열이 공유 링크(108)에 다시 액세스하지 않도록 그러한 이그레스를 원하는 패킷을 갖는 대기열의 우선순위는 상응하게 감소될 것이다. 다른 실시예에서는 FIFO 상태가 인그레스로 전송될 수도 있으나, 이러한 실시예에서는 찬 FIFO들(full FIFOs)을 갖는 이그레스를 향하는 대기열들에 대한 우선순위는 조정 모듈(152) 내에서 감소될 수 있다. 다른 실시예에서, 우선순위들은 찬 FIFO들을 갖는 이그레스를 향하는 대기열들에 대해서 실제로 감소되지 않지만, 그 대신에 이그레스의 FIFO들이 차 있는 동안에는 이그레스로 패킷이 전송되지 않도록 하기 위해 FIFO 상태가 이용된다. 다시 말해서, FIFO들이 차 있는 이그레스는 무시되고, 차 있는 이그레스의 FIFO 포트도 무시된다. 이러한 실시예에서, 어떠한 인그레스도 주어진 시간 슬롯 동안에 FIFOs가 차 있는 이그레스에 액세스할 수 없게 된다.
서비스하기 위한 대기열을 선택하는 다른 방법은 인그레스와 이그레스 사이의 매핑의 선택을 위한 3-레벨 방법을 포함한다. 대기열 선택의 3-레벨 방법은 데이터 패킷이 이그레스 및 접속하고자 하는 이그레스 내의 포트를 지정하는 경우에 이용될 수 있다. 도 9는 이를테면 각 인그레스 E1 및 E2 내의 포트 FIFO1 및 FIF02를 도시한 것이다. 인그레스 내의 데이터 패킷들은 특정한 이그레스를 지정할 수 있고 통신하고자 하는 이그레스 내의 특정 포트도 지정할 수 있다.
도 10은 대기열 선택의 3-레벨 방법에서 선택 레벨을 도시한 결정 트리 블록도이다(decision tree block diagram)이다. 대기열 선택의 3-레벨 방법에서, 선택의 제 1 레벨은 각 인그레스 내에서, 대기열들의 그룹에서 특정 이그레스의 특정 포트로 향하는 대기열을 선택하는 과정을 포함한다. 다시 말해서, 제 1 우선순위를 갖는 대기열이 동일한 이그레스의 동일한 포트로 향하는 인그레스 내의 그러한 대기열들 중에서 선택되고, 제 1 우선순위는 대기열 그룹에 대한 최고 우선순위가 될 수 있다. 이러한 선택은 상이한 COS를 갖는 대기열들 사이의 선택일 수 있다.
도 10은 각각 4개의 대기열을 갖는 두 개의 인그레스들 I1, I2을 도시한 것으로, 각 대기열은 동일한 이그레스로 향하는 패킷을 갖는다. 예를 들어, 인그레스 I1 내에서, 블록 1002는 대기열 Q1이 우선순위 P1을 가지고, 이그레스 E1의 포트 1과 통신하고자 하는 것을 가리킨다. 마찬가지로 블록 1004는 대기열 Q2가 우선순위 P2를 가지고, 이그레스 E1의 포트 1과 통신하고자 하는 것을 가리킨다. 대기열들 Q1 및 Q2는 상이한 COS를 가질 수 있다. 도 10은, 이를테면 대기열 Q1에 대한 COS1와 대기열 Q2에 대한 COS2를 나타낸다. 이러한 예에서, 대기열 Q1 또는 대기열 Q2 (모두 동일한 이그레스의 동일한 포트로 향하는)는 블록 1018에 도시된 선택의 제 1 레벨에서 선택된다. 구체적으로, 이러한 실시예에서, 최고 우선순위를 갖는 대기열이 이러한 제 1 레벨에서 선택된다.- 도 10에서 대기열 Ql (블록 1026은 이러한 선택을 도시한다). 도 10은 블록 1028에서 모두 동일한 이그레스의 포트 2와 통신하고자 하는 대기열 Q3 및 대기열 Q4 (블록 1020)로부터 인그레스 I1의 대기열 Q4가 선택되는 유사한 결정 트리를 도시한다. 도 10에는 유사한 결정 트리가 인그레스 I2내에 도시되어 있다. 구체적으로, 인그레스 내에서 제 1 레벨에서 대기열 Q2 및 대기열 Q3이 블록 1030 및 1032에서 선택된다.
3-레벨 방법의 선택의 제 2 레벨은 각각의 인그레스 내에서 또는 조정 모듈(152) 내에서, 제 1 레벨에서 선택된 대기열(즉, 제 1 우선순위를 갖는 대기열들) 중에 제 2 우선순위를 갖는 대기열이 선택된다. 즉, 제 2 레벨은 동일한 이그레스의 상이한 포트와 통신하고자 하는 그러한 대기열들 중에서 각 인그레스에 대해 대기열을 선택하는 과정을 포함한다. 이러한 제 2 레벨이 조정 모듈(152) 내에서 수행되면, 차 있는 FIFO와 접속하고자 하는 대기열이 선택되지 않도록 FIFOs의 채움 상태가 이용될 수 있다. 도 10은 인그레스 I1에 대해서 동일한 이그레스의 포트 1로 향하는 대기열 Q1 (블록 1026) 및 포트 2로 향하는 대기열 Q4 (블록 1028)의 제 1 레벨에서의 선택을 도시한 것이다. 이어서 시스템은 이들 대기열들의 우선순위에 기초해서 블록 1034에서 제 2 레벨에서 두 개의 대기열들 가운데 선택하고, 도 10은 블록 1038에서 제 2 레벨에서 포트 1로 향하는 대기열 Q1의 선택을 보여준다. 구체적으로, 대기열 Q1에 대한 우선순위 P1이 대기열 Q에 대한 우선순위 P4 보다 높기 때문에 대기열 Q1이 선택된다. 마찬가지로 블록 1036에서 대기열 Q2과 대기열 Q3 사이의 비교로부터 제 2 레벨에서 블록 1040에서 인그레스 I2 내의 대기열 Q3이 선택된다.
3-레벨 방법의 마지막 제 3 레벨은 이그레스가 하나 이상의 인그레스에 접속되지 않도록 하기 위해 각 이그레스에 대한 인그레스(제 2 우선순위를 갖는 대기열들로부터)를 선택하는 과정을 포함한다. 이러한 제 3 레벨은 조정 모듈(152)에서 수행되고 인그레스가 이그레스를 원하는 우선순위가 존재할 수 있도록 인그레스 내에서는 수행되지 않는다. 즉, 제 2 우선순위를 갖고 특정 이그레스로 향하는 각각의 대기열들의 각각의 그룹에 대해, 각 이그레스가 단지 하나의 인그레스에 대해서만 접속되도록 대기열이 선택된다. 하나의 실시예에서, 최고 우선순위를 갖는 대기열이 선택된다.
도 10을 참고하면, 블록 1038 및 1040에서 인그레스 I1 내의 대기열 Q1과 인그레스 I2 내의 대기열 Q3이 선택되었다. 블록 1042에서 선택은 이들 두 개의 대기열들 사이의 우선순위(우선순위 P1 및 우선순위 P3)의 비교에 기초하여 이루어진다. 도 10에서, 블록 1044의 제 3 레벨에서 대기열 Q3이 선택되었다. 인그레스 I2 내의 대기열 Q3이 이러한 실시예에서 이그레스에 접속되므로, 대기열 Q3이 서비스되는 대기열이다. 도 10은 단지 두 개의 인그레스들만이 존재하고 도시된 모든 대기열들이 동일한 이그레스로 향하는 단순한 과정을 도시하였다. 더욱 일반적으로, 선택의 제 3 레벨에서, 이를테면 인그레스들은 복수의 이그레스들 중 각각에 대해 선택된다. 또한, 하나의 인그레스가 두 개 또는 그 이상의 이그레스들에 대해 높은 우선순위를 갖는 두 개 또는 그 이상의 대기열들을 가질 수 있기 때문에, 높은 우선순위를 갖는 이러한 인그레스들의 대기열들이 이그레스와의 통신을 위해 선택되고, 그러한 인그레스 내의 다른 대기열들은 다음 시간 슬롯에서 통신을 위해 서로 경쟁하게 될 것이다.
도 10은 선택의 세 가지 레벨 중 어느 하나에서 타이를 깨는데 이용될 수 있는 정보를 도시한 것이다. 도 10의 각 대기열은 그와 연관된 최근 가장 적게 사용된 수 (least recently used (LRU) number)를 가진다. LRU 수는 대기열이 마지막으로 서비스된 이후의 시간의 길이를 나타내는 변수이고, 대기열이 서비스되고 나서 얼마나 오랫동안 경과했는지를 나타내는 스케일링된 수이다. LRU 수는 대기열들의 전체 순서에서의 위치를 나타낼 수도 있는데, 여기서 순서는 대기열이 마지막으로 서비스되었기 때문에 증가하는 시간의 길이에 기초한다. 예를 들어, 인그레스 I1 내의 대기열 Q1은 LRU1 (블록 1002)를 가지고 대기열 Q2는 LRU2 (블록 1004)를 가진다. 블록 1018에서 대기열 Q1의 우선순위 P1이 대기열 Q2의 우선순위 P2와 동일하다면, LRU 수가 그러한 선택 단계에서 타이를 깨기 위해 이용될 수 있다. 따라서 블록 1018에서 대기열 Q1으로부터의 LRU1과 대기열 Q2로부터의 LRU2 사이의 비교는 대기열 Q1이 서비스된지 더 오래되어, 대기열 Q1이 선택의 제 1 레벨에서 선택될 것을 의미한다. 조정 모듈(152)에서 LRU 정보를 이용하여 타이를 깰 수 있도록 LRU 수도 인그레스로부터 제 2 레벨에서 선택된 각 대기열 및 우선순위와 함께 조정 모듈(152)로 전송될 수 있다. 조정 모듈(152)은 어느 이그레스 포트가 선택되었는지를 그리고 어느 인그레스가 각 이그레스에 접속되었는지를 나타내는 자신의 LRU 정보를 저장할 수도 있다.
도 11은 본 발명의 하나의 실시예에 따라서 시스템(100)의 블록도를 이용한 대기열 선택 과정의 다른 실시예를 도시한 것이다. 본 발명의 이러한 실시예에서, 인그레스 내의 대기열은 하나 이상의 이그레스로 향하는 패킷들을 위해 예약될 수 있다. 이러한 패킷들을 본원에서는 "멀티캐스트" 패킷이라 하고 이들 패킷들을 포함하는 대기열들을 "멀티캐스트" 대기열이라고 한다. 도 11에서 각 인그레스들 I1, I2 및 I3의 대기열 Q2는 예를 들어 이그레스 E1, E2 및 E3로 향해진다. 대기열 Q2에 대기되는 패킷들은 따라서 이그레스들 E1, E2 및 E3 중의 두 개 이상의 이그레스들로 향하게 될 것이다. 대기열 Q2 내의 하나의 패킷은 이그레스 E1, E2 및 E3로 향하게 되는 반면에, 대기열 Q2의 다른 패킷은 이그레스 E1 및 E3로 향하게 될 수 있다. 도 11의 실시예에서, 하나 이상의 이그레스로 향하게 되는 패킷을 갖는 대기열이 공유 링크 (108)에서의 통신을 위해 선택된다면, 그러한 대기열은 단일의 시간 슬롯 동안 하나 이상의 이그레스들에 접속될 수 있다. 따라서 이러한 실시예에서 공유 링크(108)는 시간 슬롯 중에 단일의 인그레스를 하나 이상의 이그레스들에 매핑시킬 수 있다. 인그레스들의 수가 이그레스들의 수와 동일하다면 인그레스들 중 적어도 하나는 그 시간 슬롯에서 공유 링크(108)에 접속되지 않을 것이다.
멀티캐스트 대기열이 이용되면 선택 방법이 달라질 수 있다. 하나의 실시예에서, 멀티캐스트 패킷을 갖는 인그레스 내의 대기열은 대기열이 멀티캐스트 대기열과 연관된 각 이그레스에 대한 최대 우선순위를 갖는 경우에만 공유 링크(1080 상에서의 통신을 위해 선택될 수 있다. 이러한 실시예에서, 예를 들어, 도 11의 인그레스 I1의 대기열 Q2는 인그레스 E1 및 E2에 대해 최대 우선순위를 가질 수 있지만, 대기열 Q2가 이그레스 E3에 대해 최대 우선순위를 갖지 않기 때문에 여전히 공유 링크(108) 상에서의 통신을 위해 선택되지 않는다. 다른 실시예에서, 대기열의 헤드에 있는 패킷만이 인그레스를 이그레스에 매핑시키기 위해 검토된다. 예를 들어, 도 11의 인그레스 I1의 대기열 Q2가 단지 이그레스 E1 및 E2로 향하는 대기열의 헤드에 있는 패킷을 포함한다면, 대기열 Q2는 이그레스 E3에 대한 대기열 Q2가 최대 우선순위를 갖는지 여부에 상관없이, 대기열 Q2가 이그레스 E1 및 E2에 대해 최대 우선순위를 갖는다면 선택될 것이다. 다른 실시예에서는 멀티캐스트 대기열이 하나의 이그레스에 대해서만 최대 우선순위를 갖는다면 정보 전송을 위해 그러한 멀티캐스트 대기열이 선택될 수 있다. 그러나 이러한 실시예는 각 이그레스에 대해서 최대 우선순위를 갖지 않는 다수의 이그레스들에 대해 대기열이 선택되므로 대역폭을 효율적으로 이용할 수 없다.
도 11을 참고하면, 멀티캐스트 패킷을 이용하는 대기열 선택 스킴의 일례를 설명한다. 도 11에서, 도 9 및 10과 관련하여 설명된 바와 같이 2 또는 3회의 선택이 이용될 수 있다. 3-레벨 선택 스킴에서, 선택의 제 1 레벨은 각 인그레스 내에서 진행될 수 있고, 제 2 레벨은 각 인그레스 내 또는 조정 모듈(152) 내에서 수행될 수 있으며, 선택의 제 3 레벨은 조정 모듈(152) 내에서 수행될 수 있다. 도 11에서 각각의 인그레스 I1, I2, I3는 동일한 타입의 대기열들을 포함한다. 각각의 인그레스 내에서, 선택의 제 1 레벨은 특정한 이그레스의 특정한 포트로 향하는 각 대기열들의 그룹으로부터 대기열을 선택할 수 있다. 조정 모듈(152) 내에서, 선택의 2 레벨은 동일한 이그레스의 상이한 포트들과 통신하고자 하는 그러한 대기열들로부터의 각 인그레스에 대한 대기열을 선택할 수 있다. 선택의 마지막 제 3 레벨은 조정 모듈(152) 내에서 수행되고 각 이그레스에 대한 인그레스의 선택을 포함한다.
도 11은 2-레벨 선택 스킴을 도시한 것이다. 도 11의 인그레스 I1의 경우에, 대기열들 Q1, Q2 및 Q3은 각각 이그레스 E1로 향하는 패킷들을 포함할 수 있다. 따라서 최대 우선순위를 갖는 대기열이 이들 세 대기열로부터 선택된다. 마찬가지로, 대기열들 Q2, Q3 및 Q4는 이그레스 E2로 향하는 패킷들을 포함할 수 있어, 이들 대기열들로부터 최대 우선순위를 갖는 대기열이 선택된다. 또한 대기열들 Q3 및 Q5는 이그레스 E3으로 예정된 패킷들을 포함하여 이들 대기열들로부터 최대 우선순위가 선택된다. 유사한 선택이 인그레스들 I2 및 I3에 대해서 각각 행해진다. 이어서 조정 모듈(152)은 각 이그레스에 대한 인그레스를 선택할 수 있다. 하나의 실시예에서, 이를테면 인그레스 I1이 각각의 이그레스 E1, E2 및 E3에 대해 선택될 수 있다. 이 경우에, 인그레스들 I1 및 I2는 주어진 시간 슬롯 동안 유휴로 있을 것이다. 인그레스 I1 내의 대기열 Q2 및 Q3은 이그레스들 E1, E2 및 E3 각각에 접속될 수 있다. 두 번째 실시예에서, 주어진 시간 슬롯 동안 인그레스 Il은 이그레스들 E1 및 E2에 접속될 수 있고, 인그레스 I2는 유휴로 있을 수 있고 인그레스 I3은 이그레스 E3에 접속될 수 있다.
하나의 실시예에서, 멀티캐스트 대기열은 패킷 또는 패킷들이 각각의 이그레스로 예정되었는지와 무관하게, 멀티캐스트 대기열이 통신을 위해 선택되는 경우에 패킷 또는 패킷들을 그와 연관된 각 대기열로 보낸다. 예컨대, 도 11에서 인그레스 I2의 대기열 Q3이 이그레스들 E1, E2 및 E3에 대한 정보전송을 위해 선택될 수 있다. 그러나 인그레스 I3의 대기열 Q3의 하나의 패킷은 이그레스 E1 및 E2 중 어느 하나로만 향할 수 있다. 하나의 실시예에서, 이러한 패킷은 세 개의 이그레스들 E1, E2 및 E3 각각에 전송되고, 이어서 그 패킷이 그것이 이그레스 E3에 속한다고 하는 것을 가리키는 헤더 정보를 포함하고 있지 않기 때문에 이그레스 E3이 그 패킷을 무시할 것이다.
F. 대역폭 보증 및 과부하 보호의 제공
1. 개요
본 발명의 다른 실시예는 충족되어야 하는 대역폭 할당 형태로 서비스 품질(QoS) 보증 요구를 제공하는 방식으로 공유 링크 상에서 이그레스에 대한 인그레스의 접속을 효율적으로 스케줄링하는 방법 및 장치에 관계한다. 본 발명의 이러한 양상은 대역폭을 보장하면서도 과부하 보호(overload protection)를 제공할 수 있다.
도 1에 도시된 바와 같은 교환 시스템에서 각각의 인그레스 및 이그레스는, 패킷이 교환 시스템에 도착되고 송출되는 최대 속도를 결정하는 관련된 라인 속도(associated line rate)를 가진다. 효율적인 교환 스케줄링에서 하나의 문제는 이그레스 경쟁(egress contention)에 의해 발생된다. 즉, 다수의 패킷이 상이한 인그레스에 동일한 시간 슬롯에 도착할 수 있고, 이들은 모두 동일한 이그레스로 전송되어야 한다. 그러나 크로스바 제약 (crossbar constraint) 때문에, 패킷들 중 기껏해야 하나의 패킷만이 임의의 주어진 시간 슬롯 동안에 공통적으로 원하는 이그레스로 전송될 수 있다. 따라서 일어날 수 있는 패킷 손실을 피하기 위해 주의를 기울여야 한다.
실제 동작에서, 특히 고속 동작에서, 스위칭 조정 기능은 몇 가지 목표를 달성하는 것이 바람직하다. 첫째로 인그레스와 이그레스를 최대한 빨리 매치시킬 수 있는 신속성을 필요로 한다. 둘째로, 링크 대역폭의 낭비를 막기 위해 임의의 시간 슬롯에서 인그레스-이그레스 페어의 수가 많아야 한다. 세 째, 데이터 도착이 스위치의 특수한 링크의 능력에 과부하를 준다고 해도 시스템에 대해 형성된 임의의 서비스 품질 보장(QoS)을 확보해야 한다. 도 1에서 보증 속도의 예로서, 이그레스 E1으로 향하는 인그레스 I1으로부터의 패킷들은 8 Gbps의 보증 속도를 갖고, 이그레스 E3에 대한 인그레스 I2의 패킷들은 2 Gbps의 보증 속도를 가지며, 이그레스 E2에 대한 인그레스 I3의 패킷들은 4 Gbps의 보증 속도를 가지며, 이그레스 E3에 대한 인그레스 I3의 패킷들은 5 Gbps의 보증 속도를 가진다. 이들은 각각의 인그레스 및 이그레스들이 가능한 최대 속도인 10 Gbps를 가지는 구성에서의 보증 속도일 수 있다. 본 발명의 이러한 실시예는 이들 목표들을 달성하는데 이용될 수 있다.
따라서 본 발명의 이러한 실시예는 대역폭 보증 형태의 서비스 품질 보증(QoS)을 달성하기 위해 이용될 수 있다. 대역폭은 대기열들의 그룹에 대해서는 물론 각각의 대기열에 대해서도 보증될 수 있다. 또한, 본 발명의 이러한 실시예는 과부하에 대한 보호를 제공하기 위해서도 이용될 수 있다. 스위치가 심각한 트래픽 과부하 상태에서도 잘 작동하고 대역폭 보장을 충족시키는 것이 바람직하다. 이러한 트래픽 과부하는 예컨대, 공중 서비스에 대한 갑작스러운 서비스 거부 (denial-of-service (DoS)) 공격, 웜-개시 트래픽 집중 (worm-triggered traffic floods) 및 트래픽 플래시 크라우드 (traffic flash crowds)로 인해서 발생할 수 있다.
패킷 손실의 발생을 줄이면서 이러한 문제를 해결하기 위해서 두 가지 방법이 제안도었다. 첫째, 패킷 손실을 피하기 위해 패킷들을 인그레스에서 버퍼링하고 각 시간 슬롯에서 버퍼링된 패킷들을 갖는 인그레스의 세트들이 이그레스에 액세스 하기 위해 경쟁하는 것이다. 둘째, 스위치는 스피드업(speedup)을 채용할 수 있다. 스피드업 S를 갖는 스위치는 동일한 시간 슬롯 동안 하나의 인그레스와 하나 이상의 이그레스 사이에서 비트 값의 S 배까지 전송되도록 허용한다. 많은 시스템은 스피드업 2를 가지는데, 즉 스위치를 통해서 패킷이 흘러갈 수 있는 속도가 전송로 속도의 2배이다. 패브릭 스피드업(Fabric speedup)은 정수일 필요는 없고, 1.5일 수도 있다. 후술하는 본 발명의 실시예들은 1 보다 크거나 같은 스피드업에 대해서 과부하 존재하에서의 속도 보장을 제공하는데 이용될 수 있다.
전형적으로, 상이한 이그레스들로 예정된 패킷들에 대해 각 인그레스에는 퍼-이그레스 대기열들(per-egress queues)이 있다. 이것은 하나의 이그레스로 예정된 패킷이 동일한 대기열 내의 다른 패킷의 전송을 "차단"할 경우에 발생하는 "헤드-오브-라인 블로킹 (HOL: head of line blocking) 문제를 피할 수 있다. 가상 출력 대기 (Virtual output queueing (VOQ))는 인그레스들이 퍼-이그레스 대기열들을 갖도록 세팅하기 위해 주어지는 명칭이다. 예를 들어, 시스템에 세 개의 이그레스들이 있다면, 각 인그레스는 각 대기열이 세 개의 이그레스들 중 어느 하나로만 향하는 패킷들을 포함하는 세 개의 대기열들을 가질 수 있다. 각 인그레스에는 동일한 이그레스로 향하는 패킷들을 포함하는 몇 개의 상이한 대기열들이 존재할 수도 있다. 이것은 QoS 에서 상이한 서비스의 클래스를 구현하는데 유용하다. 여기서 동일한 이그레스에 대한 패킷들을 갖는 각각의 대기열은 주어진 트래픽 클래스의 패킷들을 포함한다.
전체 라우터 비용 및 전력 소모를 산정하는데 있어서 한 가지 중요한 ㅇ요용요인은 패킷 버퍼링을 위한 메모리 용량과 대역폭 요구이다. 패킷 버퍼 용량은 전형적으로 링크 속도가 증가함에 따라 선형적으로 증가한다--멀티 기가비트 속도에서 몇 기가바이트의 오더가 링크에 대해 요구된다. 데이터 네트워크에서의 네트워크 스위치의 가장 최근의 설계는 몇 가지 형태의 복합 입력/출력 대기열(combined input/output queueing:CIOQ)를 이용한다. 전통적인 CIOQ 스위치들은 인그레스 및 이그레스 라인 카드에 대형 패킷 버퍼를 구비한다. 2 단계의 버퍼링은 비용을 상승시키고 전력소모를 증가시키며, 일 단계의 버퍼링만을 하는 라우터에 비해 전송 지연이 증가된다.
2. 대역폭 보증 및 과부하 보호 제공 실시예
본 발명의 이러한 실시예는 종래의 CIOQ 스위치들에 비해 더욱 현명하게 스위치 크로스바를 스케줄링하기 위해서 네트워크 스위치에서 대역폭 보증 및 과부하 보호를 제공하는 것에 관계한다. 대역폭 요구에 관계없이 크로스바를 스케줄링하는 대신에, 대기열들이 할당받은 대역폭 속도를 받았는지에 대한 정보가 검토된다. 또한, 동적 티어 최대 매치 전략 (dynamic tiered maximal matching strategy)이 인그레스들을 이그레스들에 매치하기 위해 이용된다. 이러한 실시예는 대역폭 할당을 위한 우선순위를 이용하여 입력 대기열들의 우선순위를 결정하는 방법 및 시스템이다.
일반적으로, 본 발명의 이러한 실시예는 두 가지 부분을 포함한다. 첫째, 각 시간 슬롯에서 또는 시간 슬롯의 서브셋에 대해 각각의 인그레스 VOQ의 현재 상태 (따라서 각각의 인그레스의 현재 상태)가 티어에 매핑된다. 환언하면 대기열들의 특성이 대기열을 대기열들의 티어(tier)에 할당하기 위해 이용된다. 티어들의 수는 전형적으로 2 보다 크거나 같고, 이러한 티어들은 아래에서 상세하게 설명되는 바와 같이 다양한 방식으로 정해질 수 있다. 둘째, 각 시간 슬롯에서, 대기열들의 티어들의 세트가 정해지면, 본 발명의 실시예는 퍼-티어 최대 매치 (per-tier maximal matching)을 형성한다. 즉, R (2 보다 크거나 같은 수) 티어들이 있다면, 본 발명은 최고 티어에서 시작해서 이러한 티어에 있는 VOQs만을 검토해서 인그레스와 이그레스 사이의 최대 매치를 형성한다. 이어서 나머지 매치되지 않은 인그레스-이그레스 VOQs 중에서, 본 실시예는 다음으로 낮은 티어(R-1)에서 최대 매치를 형성하고, 모든 티어들이 검토되거나 시간 슬롯 중에 사용가능한 이그레스가 없어질 때까지 이와 같이 계속한다. 하나의 실시예에서, 제 1 부분 (대기열들을 티어들에 매핑시킴)는 각각의 인그레스 칩에서 수행되고, 제 2 부분 (대기열들의 매치-따라서 인그레스들의 매치)는 아비터 칩에서 수행된다.
인그레스들의 이그레스들에 대한 매치는 다른 인그레스-이그레스 페어가 보다 큰 매치(larger matching)을 제공하기 위해 매치에 추가되지 않는다면 최대이다. 예를 들어, 도 12에서, 인그레스들로부터 이그레스들로의 화살표는 어느 인그레스가 어느 이그레스에 대한 데이터를 갖는지를 나타낸다. 따라서 인그레스 I1는 이그레스 E1 만을 위한 데이터를 갖고, 인그레스 I2는 이그레스 E1 및 E3 (E2는 아님)을 위한 데이터를 가지며, 인그레스 I3는 이그레스 E2 및 E3 (E1은 아님)을 위한 데이터를 가진다. 인그레스 I2가 이그레스 E3에 매치되고, 인그레스 I3은 이그레스 E2에 매치되고, 인그레스 I1은 매치되지 않는다면, 인그레스-이그레스 페어 I1, E1이 보다 큰 매치를 제공하기 위해 이러한 매치에 추가될 수 있게 때문에 최대 매치가 아니다. 다시 말해서, 인그레스 I1이 이그레스 E1에 매치되고 인그레스 I3가 이그레스 E3에 매치되면, 이러한 매치는 인그레스 I2가 이그레스 E2에 매치될 수 없기 때문에(I2가 이그레스 E2에 대한 데이터를 갖지 않음) 최대 매치가 된다.
이러한 티어화 최대 매치 전략(tiered maximal matching strategy)의 결과는 은 전체 스위치의 최대 매치가다. 따라서 동적 퍼-티어 최대 매치가 티어들에 대한 적절한 동적 VOQ의 할당에 의해 과부하에 대한 보호를 제공하면서도 대역폭 보증을 제공하기 위해 이용될 수 있다. 예를 들어, 도 2를 참고하면, 이그레스 E1에 대한 데이터를 갖는 인그레스 I1의 대기열이 그의 대역폭 보증이 충족되지 않았지만, 이그레스 E1에 대한 데이터를 갖는 인그레스 I3의 대기열은 충족되었다면, 이그레스 E1에 대한 데이터를 포함하는 인그레스 I1의 대기열이 인그레스 I3의 대기열에 우선하여 데이터를 전송할 수 있도록 허락되어야 한다. 이와 같은 대기열들 사이의 우선관계(preference) 및 중요도의 인식은 동적이다. 즉, 대기열은 트래픽 도착(traffic arriaval), 스위치를 통한 트래픽 서비스 및 대역폭 보증에 기초하여 충족되거나 충족되지 않는 보증에 대응되는 상태들 사이에서 전이된다.
대기열들을 티어들로 그룹을 형성하는 하나의 방법은 각각의 인그레스로 하여금 아비터(즉, 도 2 및 3a의 아비터 칩(106) 또는 구체적으로, 아비터 칩(106)의 조정 모듈(152))에 각 대기열에 대해 할당된 속도가 아직 충족되지 않았는지(이 경우에 대기열은 "헝그리(hungry)"라고 간주된다)에 대해 알리는데서 시작된다. 대기열에 대해 할당된 속도가 충족된다면, 대기열은 "만족(satisfied)"으로 간주된다. 이것은 정확하게 두 개의 티어를 갖는 예의 단순한 예이다. 이러한 실시예는 대기열들을 티어들에 할당하기 위해 대기열들에 대한 할당된 대역폭 정보를 이용할 수 있다. 대기열들이 티어들에 할당되고나서, 티어들은 각 시간 슬롯에서 이그레스에 대한 인그레스의 무충돌 매치(conflict-free matching)을 이루기 위해 연속적으로 평가된다. 아비터는 먼저 헝그리 대기열들에 대해 최대 매치를 수행하고 이어서 만족 대기열들로 옮겨서 행한다.
보다 실무적인 시나리오에서는, 다양한 유형의 대기열들을 처리하기 위해 실시예에서와 같은 두 개 보다 많은 티어들이 이용될 수 있다. 일례로, 전체의 시간 슬롯을 취하지 않는 "부분(partial)" 패킷을 포함하는 VOQs, 낮은 지연을 요구하거나 대기열이 비어 있는 VOQ들을 위해 별도의 티어들이 이용될 수 있다. 각 대기열은 대기열에 대한 트래픽 도착, 대기열의 트래픽 서비스, 대기열의 대역폭 보증, 지연 요구 및 기타의 대기열 상태 정보와 같은 다양한 타입의 대기열 상태 정보에 기초해서 티어에 동적으로 할당될 수 있다. R 티어들은 2보다 크거나 같은 값으로 사전에 정해진다. 상기 방법은 대기열들을 이러한 사전에 정해진 티어들로 분류하기 위해 동적으로(예컨대, 각 시간 슬롯 동안 또는 각각의 kth 시간 슬롯에서, 여기서 k>=1) 또는 정적으로 동작된다(그들의 특성에 의존하여).
동적 티어 할당의 두 가지 메카니즘과 티어 최대 매치는 트래픽 과부하 상태에서조차 대역폭 보증이 달성될 수 있도록 인그레스-이그레스 대기열 페어들이 매치를 제공한다. 대역폭 매치는 임의의 스피드업 S >= 1에 대해서 이루어질 수 있다. 스피드업이 S이면, 인그레스(이그레스) 라인 속도 S/2배 만큼의 대역폭이 각각의 인그레스 (이그레스)에 대해서 보증될 수 있다. 라인 속도의 (1-S/2) 배의 추가적인 트래픽이 베스트-에포트 방식(best-effort fashion)으로 수용될 수 있다.
도 13은 본 발명의 하나의 실시예의 동작을 설명하는 흐름도이다. 일반적으로 상술한 두 가지 기능들이 수행되는데, 각 대기열이 티어에 매핑되고, 그리고 퍼-티어 최대 매치가 수행된다. 이들 두 가지 기능들의 조합으로 인해서 대기열들(따라서 인그레스)와 이그레스의 최대 매치가 이루어진다.
도 13을 참고하면, 단계 1302에서, 교환 시스템 100 (도 2)의 다양한 특성(세부 사항)의 대기열들이 수득된다. 이들 특성들은 수집될 수 있고, 예를 들어, 도 2 및 3a의 아비터 칩(106), 더욱 상세하게는 아비터 칩(106)의 조정 모듈(152)과 같은 아비터에서 수집될 수 있다 다른 실시예에서, 이들 특성들은 아비터 칩 (106)으로 전송되는 정보의 양을 줄이기 위해서 인그레스 칩(102)에서 수집되고 분석될 수 있다. 단계 1302에서 수득될 수 있는 몇 가지 특성들 또는 대기열 상태 정보는 다음과 같다: (1) 각각의 대기열의 길이; (2) 각각의 대기열의 보증 속도; (3) 각각의 대기열에 연관된 크레디트 값; 및 (4) 각각의 대기열의 에이지("age"). 이러한 대기열들의 특성 리스트들은 예시적인 것 뿐으로 다른 추가적인 특성들이 본 발명의 범위 내에서 이용될 수 있다. 하나의 실시예에서, 정보가 이전에 아비터에 전송된 정보와 달라지지 않았다면 아비터는 대기열 상태 정보를 통보받을 필요가 없다. 즉, 단지 새롭거나 다른 대기열 상태 정보만이 이러한 실시예에서 아비터에 전송된다.
도 13을 참고하면, 블록 1304에서, 대기열들은 상술한 특성들(블록 1302에서 수득가능한) 또는 다른 임의의 분류에 기초하여 "N" 개의 티어들로 분류된다. 티어들의 수 "N"은 수득되어야 하는 QoS 보장에 따라서 정해진다. 일반적으로, 티어들은 이하에서 도 15와 관련하여 상세하게 설명되는 바와 같은 방식으로 사전에 정해진다. 각각의 시간 슬롯에 대해, 대기열들은 티어들로 분류될 수 있다. ㄸ따라서 대기열들은 티어들에게 동적으로 할당된다. 각각의 시간 슬롯에 대해, 각각의 대기열은 하나의 티어에 속할 수 있다. 일반적으로, 티어들은 어떤 대기열이 이그레스들과 먼저 매치되어야 하는지를 나타내기 위해 이용된다-높은 티어들의 대기열들이 낮은 티어들의 대기열보다 우선하여 이그레스들과 매치될 것이다. 따라서 다른 대기열들보다 더 급하게 서비스되어야 하는 대기열들은 주어진 시간 슬롯에 대해 높은 티어로 분류될 수 있다. 대기열이 서비스되고나서, 몇몇 실시예에서, 대기열은 그러한 대기열이 다음 시간 슬롯에서 서비스되지 않도록 낮은 티어로 분류된다. 대기열들을 7개의 티어로 구분하는 예를 도 15에 도시하였는데, 이하에서 상세하게 설명할 것이다.
도 13의 블록 1306에서, 티어들은 각 티어가 일반적으로 상이한 우선순위를 갖도록 우선순위를 할당받는다. 이러한 우선순위는 이그레스에 대한 인그레스의 매치 중에 대기열들의 선택에 이용된다. 티어들 "N"의 수에 해당할 수 있는 최고 우선순위는 "특수한(special)" 티어(-즉, 어떠한 이유로 대기열들이 서비스되어야 하는 티어들)에 속하는 것으로 결정된 대기열들을 위해 유보될 수 있다. 이러한 이유의 일례는 "부분" 패킷을 갖는 대기열로 설명한 바와 같다. 다른 모든 티어들은 이러한 최고 우선순위보다 낮은 우선순위를 할당받는다. 예를 들어, "급송(expedited forwarding)" 티어는 "N-1"의 값을 가질 수 있는 두 번째로 높은 우선순위와 연관될 수 있다. 따라서 각각의 급송 대기열은 그것이 비어 있지 않다면 우선순위 "N-1"을 할당받는다. 표 1에서 상술한 바와 같이, 인그레스는 급송 대기열로 설정될 수 있다. 이러한 대기열은 크레디트 값에 무관하게 다른 대기열들에 우선하여 서비스되는 대기열이다. 급송 대기열은 특정 패킷이 가능한 빨리 전송되도록 하기 위해서 인그레스에서 이용될 수 있다. 이러한 경우에, 패킷은 급송 대기열에 버퍼링될 것이다. 비어 있는 대기열들은 할당된 대역폭을 초과하는 대기열들과 같이, 전형적으로 우선순위 "0"을 할당받는다. 상술한 바와 같이, 도 15에 대기열들을 7 티어들로 구분한 예를 도시하였고, 이에 대해서 아래에서 상세하게 설명한다.
도 13의 블록 1308에서, 변수 "i"는 티어들의 수 "N"과 동일한 값으로 설정된다. 이러한 변수 i는 도 13에 도시되고 후술하는 바와 같이, "N" 티어들 각각에 대해 최대 매치가 수행되도록 감량 카운터 (decremented counter)로 이용된다.
도 13의 블록 1310에서, 교환 시스템(100)은 최대 매치를 이용해서 현재의 우선순위를 갖는 대기열들을 이그레스들에게 매치시킨다. 최대 매치를 수행하기 위해, 평가될 대기열이 먼저 선택된다. 먼저, 평가되어야 하는 티어 내의 대기열이 주어진 가중치에 따라서 소정의 순서에 기초하여 무작위로 결정되거나 다른 방법을 이용하여 결정된다. 하나의 실시예에서 대기열의 무작위 선택은 할당의 공정성을 제고하기 위해 바람직할 수 있다. 티어 내의 대기열의 선택 이후에, 그러한 대기열(따라서 대기열이 위치된 인그레스)을 대기열의 접속을 위한 최초 선택(first choice)인 이그레스와 매치시키기(또는 접속) 위해 최대 매치 트리들(maximal matching tries)을 사용할 수 있다. 예컨대, 원하는 이그레스가 이미 매치되어, 이것이 가능하지 않다면, 티어 내의 다른 대기열이 선택되고 그러한 대기열의 접속을 위한 최초의 선택인 이그레스에 대한 접속을 위해서 평가된다. 마찬가지로, 이러한 과정은 주어진 우선순위 레벨(즉, 주어진 티어 내에서)의 모든 대기열들이 평가될 때까지 계속된다. 최대 매치는 도 14와 관련하여 상세하게 설명된다.
이그레스들에 대한 인그레스들의 최대 매치에 의해, 본 발명의 실시예는 시간 슬롯에서 특정 이그레스에 대한 특정 인그레스의 매치가, QoS 보장 요구를 충족시키기 위해서 더욱 급하게 페어를 형성할 필요가 있을 수 있는 인그레스 또는 이그레스의 다른 이그레스 또는 인그레스에 다른 매치를 희생하지 않고 행해지도록 한다. 최대 매치는 신속하고 많은 처리 전력을 필요로 하지 않아서, 많은 비용을 들이지 않고 교환 시스템으로 구현할 수 있다.
도 13의 블록 1312에서, 변수 "i" (현재의 우선순위 또는 최대 매치를 위해 평가된 티어 레벨)는 하나씩 감량된다. 블록 1314에서, 변수 i의 값은 모든 우선순위 레벨이 평가되었는지 판단하기 위해 체크된다. 모든 우선순위 레벨이 평가되었다면, i = 0이고, 도 13에서 전체 플로우의 실행은 종료되며, 이그레스에 대한 대기열의 매치가 완료된다. 만약 i > 0이면, 단계 1310이 실행되어 현재의 우선순위 (즉, 티어) 레벨에 대한 매치를 수행한다. 이러한 과정은 모든 우선순위 레벨들 (즉, 티어들)이 평가될 때까지 반복된다.
도 14는 대기열들의 리스트에 대한 최대 매치의 실행을 설명하기 위한 흐름도이다. 최대 매치 절차는 최대 매치를 수행하기 위해 도 13의 블록 1310에서 이용될 수 있다. 도 14의 블록 1402에서, 상기 방법은 입력으로서 이용가능한 인그레스들의 리스트, 이용가능한 이그레스들의 리스트, 및 이그레스에 대한 매치를 위해 검토되어야 하는 대기열들의 리스트를 입력받는다. 대기열들의 리스트 (및 따라서 인그레스들)는 우선순위 레벨 내의 그러한 대기열들 또는 현재 평가되고 있는 티어 내의 대기열들로 구성된다.
도 14의 블록 1404에서, 대기열은 검토될 대기열들의 리스트로부터 선택된다. 상술한 바와 같이, 먼저 검토되어야 하는 티어 내의 대기열은 소정의 순서, 아마도 가중치를 가지고 또는 다른 방법을 이용하여 무작위로 결정될 수 있다. 블록 1406에서, 이러한 대기열에 대해서 원하는 이그레스가 사용가능한지 확인된다. 사용가능한 이그레스가 있다면, 블록 1408이 실행된다. 블록 1408에서, 검토 중인 대기열을 포함하는 인그레스는 블록 1406에서 확인된 이그레스와 매치된다. 이어서 이러한 인그레스 내의 모든 대기열들이 매치를 위해 이용가능한 대기열들의 리스트로부터 삭제된다. 또한, 대기열에 매치된 이그레스는 매치를 위해 이용가능한 대기열의 리스트로부터 삭제된다. 이어서 블록 1412가 수행된다.
만약 블록 1406에서 이그레스가 대기열에 접속하는데 사용할 수 없을 경우, 블록 1410이 실행된다. 블록 1410에서, 검토 중인 대기열이 매치되어야 하는 대기열의 리스트로부터 삭제된다. 이어서 블록 1412가 실행된다. 블록 1412에서, 여전히 매치를 위해 이용가능한 티어 내에 평가되어야 하는 추가의 대기열들이 있는지 판단된다. 티어 내에 매치를 위해 이용가능한 추가 대기열이 없다면, 주어진 티어에 대한 최대 매치의 실행은 종료되고, 도 13의 과정이 이어진다(즉, 낮은 티어가 있다면 다음 티어에 대해 최대 매치가 수행된다). 티어 내에 검토해야 할 추가 대기열이 있다면, 블록 1404가 실행되어 검토 대상 대기열들의 리스트로부터 다른 대기열이 선택된다. 이러한 과정은 티어 내에 더 이상 검토해야 할 대기열들이 없을 때까지 지속된다.
도 15는 본 발명의 하나의 실시예에 따라서 다양한 속성 및 변수들에 기초하여 대기열을 7개 티어로 구분한 표이다. 도 15의 예 및 이하의 설명은 위에서 도 13의 블록 1304에서 설명한 바와 같이 대기열들을 "N"의 티어들로 구분하는 하나의 예이다. 상술한 바와 같이, 티어들은 상이한 우선순위 레벨을 결정하는데 이용되고, 우선순위 레벨들은 인그레스 대 이그레스의 매치가 결정되는 순서를 결정하는데 이용될 수 있다.
일반적으로, 티어들은 대기열에 대한 도착 히스토리, 대기열의 서비스 히스토리, 대기열의 상태, 및 지연 또는 지터(jitter)에 따라서 정해진다. 도착의 히스토리는 언제 각 패킷이 대기열에 도착하였는지, 즉, 어떤 시간 슬롯에 패킷이 도착했는지에 해당하는 정보이다. 마찬가지로, 대기열의 서비스의 히스토리는 대기열이 서비스된 시간 슬롯 및 어떤 패킷이 얼마나 많은 패킷이 서비스되었는지에 대한 정보이다. 부분 패킷을 갖는 대기열 또는 급송 대기열과 같은 특정한 타입의 대기열에 대한 다른 정보도 대기열의 티어에 대한 할당에 이용될 수 있다.
도 15는 대기열들을 6가지 상이한 속성과 변수에 기초하여 7개의 티어들 (각각의 티어는 주어진 시간 슬롯 동안에 그 안에 0 대기열들부터 다수의 대기열들까지 가질 수 있다)로 분류한 예를 도시한 것이다. 이러한 속성과 변수를 광범위하게 대기열 상태 정보라 칭할 수 있다.
도 15에서 첫 번째 변수는 대기열이 "스페셜(special)"인지이다. 대기열은 그것이 "부분" 패킷(위에서 상세하게 정의된 바와 같은)을 포함하는 경우에 "스페셜"일 수 있다. 일반적으로, 대기열이 몇 가지 이유로 연속적인 시간 슬롯들 동안의 접속을 필요로 하는 경우에 그러한 대기열은 스페셜하다. 대기열이 스페셜이면, 그러한 대기열을 즉시 서비스하는 것이 바람직하다(즉, 부분 패킷으로). 도 15에서 티어 "S"는 따라서 스페셜 대기열을 위한 티어이다. "부분" 패킷 또는 "스페셜" 대기열에 관계되는 파라미터는 대기열이 "스페셜" 티어 "S"에 할당되도록 하기 위해 아비터에 전달될 수 있다.
대기열들을 티어들로 분류하는데 고려될 수 있는 다른 변수는 대기열이 비어있는지 여부이다. 대기열의 길이는 대기열이 비어있는지 판단하기 위해 조사될 수 있다. 도 15에서 티어 "F"는 비어있는 대기열을 위한 티어이다. 위에서 "Qlength"로 칭한 각각의 대기열의 길이는 주어진 대기열 내에 시간상 특정 순간에 저장된 데이터의 사이즈의 척도이므로, 바이트 단위로 측정될 수 있다. 이러한 값은 0부터 허용된 최대치까지의 범위를 가진다. 도 2 및 도 3a를 참고하면, 대기열 매니저(112)는 대기열에 대한 데이터의 도착 속도를 계산하거나 추적할 수 있고, 대기열 길이 모듈(162)은 대기열의 현재의 길이 또는 사이즈를 산출할 수 있다. 새로운 패킷이 대기열에 도착할 때마다 Qlength 값이 그러한 패킷의 사이즈만큼 증분된다.
대기열들을 티어들로 분류하는데 고려될 수 있는 다른 변수는 "에이지(age)" 인자이다. 대기열의 에이지 인자는 해당 대기열이 서비스된 이래로 얼마나 시간이 경과했는지를 나타내는 값이다. 규칙적인 간격으로, 이러한 에이지 인자는 하나씩 증분된다. 예컨대, 에이지 인자는 주어진 대기열이 서비스되지 않는 각 시간 슬롯 이후에 하나씩 증분된다. 더욱이, 패킷이 주어진 대기열을 떠날 때 마다 에이지 인자는 그러한 대기열에 대해서 0으로 재설정될 수 있다. 이러한 변수의 값이 특정한 임계값 또는 소정의 시간 슬롯의 수(예컨대, 1000)를 초과하면, 대기열이 "오래되었다(aged)"고 인정된다. 따라서 대기열이 오랫동안 서비스되지 않았다면, 그의 에이지 인자는 그러한 대기열이 "오래되었다"고 인정될 정도로 충분히 커질 수 있다. 도 15에서 티어 "A"는 비어 있지 않고 오래된 대기열에 대한 티어이다.
대기열이 "어니믹(anemic)"인지 여부도 대기열을 티어들로 분류하는데 고려될 수 있다. 대기열이 그것이 다룰 수 있을 만큼 많은 패킷들을 받지 않았거나 그것이 다룰 수 있는 것보다 훨씬 적은 패킷들을 받고 있다면, 그것은 "어니믹"으로 분류될 수 있다. 만약 대기열이 "어니믹"으로 분류되면, 그것은 패킷을 가진 다른 모든 티어들이 검토된 후에야 매치될 티어로 그룹지워질 것이다. 도 15에서, 예를 들어, 티어 "E"는 어니믹인 대기열을 갖고, 티어 "E는 두 번째로 낮은 티어-비어 는 대기열을 포함하는 티어 바로 위의 티어이다.
대기열이 "헝그리(ungry)"인지 여부도 대기열을 티어들로 분류하는데 고려될 수 있다. 대기열이 그의 보증 대역폭 미만으로 받고 있다면 그런 대기열은 "헝그리"로 간주될 수 있다. 마찬가지로, 그의 보증 대역폭 보다 많이 받고 있다면 "만족" 또는 "헝그리가 아니라"고 간주될 수 있다. 도 15에서 티어 "D" 는 헝그리가 아닌 대기열들을 포함하고 있고, 티어들 "B" 및 "C"는 헝그리인 대기열들을 포함하고 있다. 일반적으로, 티어들 "B" 및 "C" 내의 대기열들(즉, 헝그리 대기열들)은 티어 "D" 내의 대기열들(즉, 만족 대기열들) 보다 먼저 이그레스와 매치되어야 한다. 따라서 티어 "D는 티어들 "B" 및 "C" 보다 낮은 우선순위를 갖는다.
일반적으로, 대기열이 어니믹인지, 헝그리인지, 또는 만족인지 판단하기 위해서, 각 대기열에 대한 보증 속도와 크레디트 값이 검토된다. 일반적으로, 보증 속도는 그러한 대기열에 대해 보증된 속도이다. 그것은 그러한 대기열에 대해 이용가능한 대역폭을 결정하고, 전형적으로 "bps (bits per second)"로 표현된다. 이러한 파라미터는 규칙적인 간격으로 업데이트되고(시간 슬롯 마다 한 번씩 갱신되지 않고, 상술한 바와 같이 시간 슬롯의 블록에 대해 한 번씩 수행된다). 보증 속도의 몇몇 계산방법은 앞서서 몇몇 도면(도 5와 같은)과 관련하여 설명하였고, 보증 속도는 도 3a에서 부호 52로 표기하였다.
크레디트 값도 각각의 대기열에 연관된다. 일반적으로, 주어진 대기열에 대한 크레디트 값은 대기열이 서비스되지 않은 각 시간 슬롯 이후에 증가될 수 있다. 주어진 시간 슬롯 중에 대기열이 서비스되면, 대기열에 대한 크레디트 값이 감소될 수도 있다. 대기열에 대한 크레디트 값의 결정은 도 8과 관련하여 상세하게 설명하였다. 상술한 바와 같이, 각 대기열에 대한 보증 속도는 대기열에 대한 크레디트 값을 증가시키기 위해 이용될 수 있다(대기열이 주어진 시간 슬롯 중에 서비스되지 않은 경우).
전형적으로, 대기열에 대한 크레디트 값이 0 미만이면, 그러한 대기열이 그의 보증된 대역폭에 의해서 정해지는 대역폭 보다 많은 서비스를 받고 있다는 것을 의미한다. 이러한 대기열은 "만족" (도 15에서 티어 "D"에 대해서 도시한 바와 같이 헝그리가 아닌 것으로) 으로 간주될 수 있다. 마찬가지로, 대기열에 대한 크레디트 값이 0을 초과하면, 그것은 대기열이 보증 대역폭 보다 적게 서비스 받고있다는 것을 의미한다. 이러한 대기열은 도 15에서 티어 "B" 및 "C"로 나타낸 바와 같이 "헝그리"로 간주된다. 끝으로, 대기열에 대한 크레디트 값이 0이면, 그것은 대기열이 그의 보증된 대역폭 만큼 서비스를 받고 있다는 것을 의미한다. 이러한 대기열은 하나의 실시예에서, 헝그리가 아닌 것으로 간주될 수 있고, 다른 실시예에서는 헝그리로 간주될 수 있다. 몇몇 실시예에서, 크레디트 값의 크기(양 또는 음)는 캐핑될 수 있다.
대기열들을 티어들로 분류하는데 고려될 수 있는 대기열에 대한 다른 타입의 정보는 대기열의 타입이다. 일부 대기열들은 급송 대기열 또는 보장 전송 대기열(assured forwarding queuees)로 분류될 수도 있다. 급송 대기열은 일반적으로 크레디트 값에 상관 없이 다른 대기열들에 앞서 서비스되는 대기열이다. 도 15의 실시예에서, "오래된(aged)" 대기열들 (부분 패킷을 갖는 대기열들도)은 급송 대기열들 보다 높은 티어에 위치되므로, 급송 대기열들보다 먼저 서비스되지만, 항상 그럴 필요는 없다. 예를 들어, 급송 대기열은 티어 내에서 "오래된" 대기열 보다 위에 위치될 수 있다. 보증 전송 대기열은 일반적으로 다른 대기열 보다 먼저 서비스되지만, 급송 대기열 보다 나중에 서비스된다. 따라서 도 15에서 급송 대기열에 대해 티어 "B"를 사용하고, 보증 전송 대기열에 대해 티어 "C"를 사용한다.
도 15에 도시된 티어 분류는 단지 예일 뿐이다. 더 많거나 적은 수의 티어들이 본 발명의 범위에서 사용될 수 있다. 예를 들어, 하나의 실시예에서 "오래된" 대기열들에 대한 티어가 없을 수도 있다. 다른 실시예에서는 보증 전송 대기열에 대한 티어가 없을 수도 있다. 또 다른 실시예에서는, 추가적인 티어들이 있을 수 있다. 이를테면, 도 15의 모든 티어들이 헝그리이지만 급송 대기열 또는 보증 전송 대기열에 속하지도 않는 다른 티어와 함께 이용될 수 있다. 예를 들어, 헝그리인 대기열들에 대하여 도 15의 티어 "B"와 "D" 사이의 티어가 있을 수있다. 이와 같이 티어의 그룹을 형성하면 도 15에 도시된 바와 같은 7개의 티어가 아니고 8 티어가 될 것이다.
도 15의 실시예에서, 최고 우선순위 값, 6은 스페셜 티어 "S"에 속하는 대기열들에 할당된다. 두 번째로 높은 우선순위 값, 5는 티어 "A"에 속하는 대기열들에 할당된다. 세 번째로 높은 우선순위 값, 4는 티어 "B"에 속하는 대기열들에 할당된다. 네 번째로 높은 우선순위 값, 3은 티어 "C"에 속하는 대기열들에 할당된다. 다섯 번째로 높은 우선순위 값, 2는 티어 "D"에 속하는 대기열들에 할당된다. 여섯 번째로 높은 우선순위 값, 1은 티어 "E"에 속하는 대기열들에 할당된다. 끝으로 마지막(7번째) 우선순위 값, 0은 티어 "F"에 속하는 대기열들에 할당된다.
이러한 방식으로 대기열들은 먼저 그들의 타입 및/또는 요구 또는 특성 및 할당된 우선순위에 따라서 분류되고, 이어서 대기열들을 이그레스와 매치시키기 위하여 주어진 우선순위를 갖는 대기열들의 각 리스트에 대한 최대 매치가 우선순위 감소순으로 진행된다. 인그레스 대 이그레스 매치에서 낮은 우선순위의 대기열들 보다 높은 우선순위 대기열들에 대한 최대 매치를 먼저 진행하므로, 본 발명은 시간 슬롯에서 이그레스에 대한 특정 인그레스의 매치가, QoS 보장을 충족시키기 위해 더욱 급하게 페어를 형성할 필요가 있을 수 있는 그러한 인그레스 또는 이그레스의 다른 이그레스 또는 인그레스에 대한 매치를 희생하지 않고도 행해질 수 있도록 보장한다. 따라서 본 발명의 방법은 스위치에서 일정한 범위의 스피드업에 대해 트래픽 과부하가 존재하여도 QoS 보장을 유지할 수 있다.
본원에 기술된 설명은 위에서 도 5와 관련하여 설명한 바와 같은 다른 다양한 대역폭 할당 방법과 함께 이용될 수 있다. 본 발명에 따른 하나의 시나리오에서, 티어화 최대 매치 (tiered maximal matching)은 각각의 가상 출력 대기열 (virtual output queue : VOQ)에 대해 할당된 속도를 갖는 매 시간 슬롯 마다 이용된다. 더욱 일반적인 시나리오는 VOQ들의 그룹들이 전체 보증 속도(collective guaranteed rate)를 할당받는 것이다. 대역폭 할당기는 매 시간 기점 (time epoch) 마다 VOQ들의 그룹 내에서 각 대기열에 대한 개별적인 속도를 동적으로 결정하는데, 여기서 "시간 기점"는 10 개의 시간 슬롯에서부터 백만 시간 슬롯 또는 그 이상까지 달라질 수 있다. 따라서 티어화 최대 매치는 각 시간 슬롯에 대한 스케줄링 결정을 하고, 대역폭 할당기는 시간 슬롯의 일부 블록(또는 시간 기점)에 대해 대역폭 할당 결정을 내린다.
본 발명에서 더 크다, 더 작다, 앞, 뒤, 좌, 우, 상부, 하부, 위, 아래, 수평 및 수직 등으로 표현하였으나 이들은 단지 설명의 편의를 위한 것으로 본 발명을 제한하거나 본 발명의 구성요소들 사이의 관계, 위치 또는 공간적 배치를 제한하고자 하는 것은 아니다. 첨부 도면에서 각 구성요소의 사이즈는 장래의 설계 및 본 발명의 범위를 벗어나지 않는 본 발명의 실시예에서의 사용 의도에 따라서 변경될 수 있다.
이상에서 본 발명의 몇 가지 실시예들을 참고하여 설명하였으나, 본 발명이 속하는 기술 분야의 당업자들은 본 발명의 정신 및 범위를 벗어나지 않는 범위 내에서 다양한 변형이 가능함을 인식할 수 있을 것이다. 따라서 본 발명은 도면 및 상세한 설명에 나타난 내용으로 제한되지 않고, 단지 첨부된 청구범위에 의해서만 범위가 정해진다.
Claims (32)
- 공유 링크 상에서의 데이터 전송 서비스를 위한 대기열의 선택 방법에 있어서,복수의 인그레스 내의 대기열들의 그룹의 각각의 대기열을 N개의 티어 중에서 하나의 티어로 분류하는 단계로서, 상기 N은 2보다 크거나 같고, 대기열 상태 정보는 적어도 상기 대기열 중의 일부를 상기 티어들로 분류하는데 이용되고, 및 대기열들의 각 티어는 상이한 우선순위를 할당받는, 상기 각각의 대기열을 분류하는 단계; 및낮은 우선순위를 갖는 티어들 내에 분류된 대기열들에 앞서 높은 우선순위를 갖는 티어들 내에 분류된 대기열들을 매치시킴으로써 대기열들을 이용가능한 이그레스에 매치시키는 단계를 포함하되,상기 각각의 대기열을 분류하는 단계는 상기 대기열 상태정보를 이용하여 적어도 제 1 티어 및 제 2 티어로 분류하는 단계를 포함하고, 상기 대기열 상태정보는 보증 대역폭 양(amount)에 관한 정보를 포함하고, 상기 제 1 티어로 분류된 각 대기열은 상기 보증 대역폭 양보다 작은 대역폭의 데이터를 포함하고, 상기 제 2 티어로 분류된 각 대기열은 상기 보증 대역폭 양보다 큰 대역폭의 데이터를 포함하고, 상기 제 1 티어는 상기 제 2 티어보다 높은 우선순위를 가지는 것을 특징으로 하는 대기열의 선택방법.
- 삭제
- 제 1항에 있어서,상기 대기열들을 이용가능한 이그레스에 매치시키는 단계는,대기열들의 이용가능한 이그레스에 대한 매치가 수행되지 않은 최대 우선순위를 갖는 티어를 선택하는 단계 ;상기 선택된 티어 내의 대기열 중의 하나를 선택하는 단계 ;상기 선택된 대기열을 원하는 이그레스가 이용가능하다면 원하는 이그레스에 매치시키는 단계로서, 선택된 대기열이 원하는 이그레스와 매치되면, 이용가능한 이그레스들의 리스트로부터 상기 원하는 이그레스를 삭제하는, 상기 매치시키는 단계; 및고려 대상 대기열의 리스트에서 선택된 대기열을 삭제하는 단계를 포함하되,상기 선택된 티어 내의 상기 모든 대기열들에 대해, 대기열 중의 하나를 선택하고, 선택된 대기열을 매치시키고, 선택된 대기열을 삭제하는 것을 특징으로 하는 대기열의 선택방법.
- 제 3항에 있어서,상기 대기열들 중의 하나를 선택하는 단계는,선택된 티어 내의 대기열들 중의 하나를 무작위로 선택하는 단계를 포함하는 대기열의 선택방법.
- 제 1항에 있어서,상기 분류 및 매치 단계는 공유 링크 상에서의 데이터 전송 서비스를 위해 각 시간 슬롯에 대해 실행되는 대기열의 선택방법.
- 제 1항에 있어서,상기 분류 및 매치 단계는, 만일 이용가능한 이그레스에 대한 패킷을 갖는 제 2 대기열이 보증 속도의 대역폭을 받지 못했다면, 상기 이용가능한 이그레스에 대한 패킷을 갖고 상기 보증 속도의 대역폭을 받는 제 1 대기열이 상기 이용가능한 이그레스에 매치되지 않는 것을 보장함으로써 과부하 보호를 제공하는 것을 특징으로 하는 대기열의 선택방법.
- 제 6항에 있어서,상기 제 1 대기열은 상기 제 2 대기열이 분류된 티어보다 높은 우선순위를 가진 티어로 분류되는 대기열의 선택방법.
- 제 1항에 있어서,각각의 대기열의 선출력 패킷(first-out packet)의 크기를 확인하는 단계 ; 및특정 대기열의 선출력 패킷의 크기가 단일의 시간 슬롯 중에 공유 링크를 통해서 전송하기에 너무 큰 경우에는, 상기 특정 대기열을 최고 우선순위(highest priority)를 가진 티어로 분류하는 단계를 추가로 포함하는 대기열의 선택방법.
- 제 1항에 있어서,각각의 대기열에 대한 대기열 메트릭(queue metric)에 관한 정보를 유지하는 단계;상기 대기열 메트릭 정보 및 보증 대역폭 양(guaranteed bandwidth amount)을 이용하여 각각의 대기열에 대한 보증 속도를 계산하는 단계 ; 및보증 속도를 이용하여 대기열들의 그룹 내의 각각의 대기열에 대한 크레디트 값을 계산하는 단계를 포함하고,상기 크레디트 값들은 대기열 상태 정보인 대기열의 선택방법.
- 제 9항에 있어서,상기 보증 속도를 이용하여 각각의 대기열에 대한 크레디트 값을 계산하는 단계는,만약 대기열이 지정된 시간 슬롯에서 서비스되면, 크레디트 값을 감량하고, 상기 지정된 시간 슬롯 후에 보증 속도를 이용하여 크레디트 값을 증분시킴으로써, 각각의 대기열에 대한 크레디트 값을 조정하는 단계를 포함하는 대기열의 선택방법.
- 제 10항에 있어서,상기 보증 대역폭 양은 이그레스에 대한 대역폭 양(amount)에 따라 정해지는 대기열의 선택방법.
- 제 10항에 있어서,상기 보증 대역폭 양(guaranteed bandwidth amount)은 대기열들의 그룹에 대한 대역폭 양(amount)에 따라 정해지는 대기열의 선택방법.
- 제 10항에 있어서,상기 각각의 대기열을 분류하는 단계는 (a) 0보다 큰 크레디트 값을 가진 적어도 하나의 대기열을 제 1 티어로 분류하고, 및 (b) 0보다 작은 크레디트 값을 가진 적어도 하나의 대기열을 상기 제 1 티어보다 낮은 우선순위를 가진 제 2 티어로 분류하는 단계를 포함하는 대기열의 선택방법.
- 제 1항에 있어서,상기 대기열 상태 정보는 적어도 일부의 대기열들에 대한 크레디트 값을 포함하고, 여기서 각각의 크레디트 값은 각각의 대기열에 대한 보증된 대역폭 속도를 이용하여 계산되는 대기열의 선택방법.
- 제 14항에 있어서,0보다 큰 크레디트 값이 헝그리 대기열(hungry queue)을 나타내고, 0보다 작은 크레디트 값은 만족 대기열(satisfied queue)을 나타내는 대기열의 선택방법.
- 제 15항에 있어서,상기 헝그리 대기열은 제 2 티어보다 높은 우선순위를 가진 제 1 티어로 분류되고, 상기 만족 대기열은 제 2 티어로 분류되는 대기열의 선택방법.
- 제 14항에 있어서,상기 대기열 상태 정보는 상기 대기열이 비어 있는지에 대한 정보를 포함하는 대기열의 선택방법.
- 제 17항에 있어서,상기 비어 있는 대기열들은 최소 우선순위를 가진 티어로 분류되는 대기열의 선택방법.
- 제 18항에 있어서,상기 대기열 상태 정보는 대기열이 부분 패킷을 포함하는 지에 관한 정보를 포함하고, 여기서 부분 패킷은 단일 시간 슬롯 중에 공유 링크를 통해서 전송되기에는 너무 큰 패킷인 대기열의 선택방법.
- 제 19항에 있어서,부분 패킷을 포함하는 대기열들이 최고 우선순위를 가진 티어로 분류되는 대기열의 선택방법.
- 제 20항에 있어서,상기 대기열 상태 정보는 대기열이 다룰 수 있는 만큼의 패킷을 수신했는지에 대한 정보를 포함하는 대기열의 선택방법.
- 제 21항에 있어서,다룰 수 있는 만큼의 패킷을 수신하지 못한 각각의 대기열은 최소 우선순위를 가진 상기 티어 바로 위의 우선순위 레벨을 가진 티어로 분류되는 대기열의 선택방법.
- 제 21항에 있어서,상기 대기열 상태 정보는 대기열이 특정 기간 동안 서비스되지 않았는지에 대한 정보를 포함하고, 상기 특정 기간은 미리 정해진 수의 시간 슬롯인 대기열의 선택방법.
- 제 23항에 있어서,긴 기간 동안 서비스되지 않는 각각의 대기열은 최고 우선순위를 가진 상기 티어 바로 아래의 우선순위 레벨을 가진 티어로 분류되는 대기열의 선택방법.
- 제 1항에 있어서,상기 할당된 대역폭에 관한 정보는 다음 중 둘 이상을 포함하는 대기열의 선택방법 :적어도 일부의 대기열들에 대한 크레디트 값으로서, 상기 대기열에 대한 대기열 메트릭 정보를 이용하여 각각의 대기열에 대한 보증 속도로부터 유도되는, 상기 크레디트 값 ;각각의 대기열이 비어 있는지에 관한 정보 ;대기열이 부분 패킷을 포함하는지에 대한 정보 ;대기열이 다룰 수 있는 만큼의 패킷을 수신했는지에 대한 정보 ; 및대기열이 긴 기간 동안 서비스되지 않았는지에 대한 정보.
- 공유 링크 상에서의 액세스 조정 방법에 있어서,대기열들의 그룹 내의 각 대기열에 대한 대기열 상태 정보를 유지하는 단계로서, 여기서 대기열 상태 정보는 각 대기열에 대한 대역폭의 보증 속도 및 각 대기열이 비어 있는지에 관한 정보를 포함하는, 상기 대기열 상태 정보를 유지하는 단계; 및공유 링크 상에서의 데이터 전송 서비스를 위한 각각의 시간 슬롯 동안 :상기 대기열 상태 정보를 이용하여 각각의 대기열을 두 개 이상의 티어들의 그룹에서의 하나의 티어로 매핑시키는 단계로서, 각각의 티어는 상이한 우선순위 레벨을 가지는, 상기 매핑시키는 단계 ; 및낮은 우선순위를 가진 티어들 내의 대기열들을 매치시키기 전에 높은 우선순위를 가진 티어들 내의 적어도 일부의 대기열들을 매치시킴으로써, 일부의 대기열들을 이그레스들에 매치시키는 단계를 포함하고,상기 일부의 대기열들을 이그레스들에 매치시키는 단계는,최고 우선순위를 가진 티어를 선택하는 단계;상기 선택된 티어 내의 대기열들 중의 하나를 선택하는 단계;인그레스가 원하는 이그레스가 이용가능하다면 상기 선택된 대기열을 원하는 이그레스에 매치시키고, 이용가능한 이그레스의 리스트로부터 상기 원하는 이그레스를 삭제하는 단계 ;선택된 대기열을 고려 대상 대기열의 리스트로부터 삭제하는 단계 ; 및상기 선택된 티어 내의 상기 모든 대기열들에 대해, 상기 대기열 중의 하나를 선택하고, 상기 선택된 대기열을 매치시키고, 선택된 대기열을 삭제하는 것을 특징으로 하는 포함하는 공유 링크 상에서의 액세스 조정 방법.
- 삭제
- 공유 링크 상에서의 데이터 전송 서비스를 위한 대기열 선택 시스템에 있어서,복수의 인그레스 내의 대기열들의 그룹의 각각의 대기열을 N개의 티어 중에서 하나 티어로 분류하는 수단으로서, 상기 N은 2보다 크거나 같고, 상기 대기열 상태정보는 적어도 일부의 대기열을 상기 티어들로 분류하는데 이용되고, 상기 대기열의 각 티어는 상이한 우선순위를 할당받는, 상기 분류하는 수단 ; 및낮은 우선순위를 갖는 티어들 내에 분류된 대기열들에 앞서 높은 우선순위를 갖는 티어들 내에 분류된 대기열들을 매치시킴으로써 대기열들을 이용가능한 이그레스에 매치시키는 수단을 포함하되,상기 분류하는 수단은 상기 대기열 상태정보를 이용하여 적어도 제 1 티어 및 제 2 티어로 분류하고, 상기 대기열 상태정보는 보증 대역폭 양(amount)에 관한 정보를 포함하고, 상기 제 1 티어로 분류된 각 대기열은 상기 보증 대역폭 양보다 작은 대역폭의 데이터를 포함하고, 상기 제 2 티어로 분류된 각 대기열은 상기 보증 대역폭 양보다 큰 대역폭의 데이터를 포함하고, 상기 제 1 티어는 상기 제 2 티어보다 높은 우선순위를 가지는 것을 특징으로 하는 대기열 선택 시스템.
- 공유 링크 상에서의 액세스 조정 시스템에 있어서,대기열들의 그룹 내의 각 대기열에 대한 대기열 상태 정보를 유지하는 수단으로서, 대기열 상태 정보는 각 대기열에 대한 대역폭의 보증 속도 및 각 대기열이 비어 있는지에 관한 정보를 포함하는, 상기 대기열 상태 정보를 유지하는 수단 ;상기 공유 링크 상에서의 데이터 전송 서비스를 위한 각각의 시간 슬롯 동안, 상기 대기열 상태 정보를 이용하여 각각의 대기열을 두 개 이상의 티어들의 그룹에서의 하나로 티어에 매핑시키는 수단으로서, 각각의 티어는 상이한 우선순위 레벨을 가지는, 상기 매핑시키는 수단 ; 및상기 공유 링크 상에서의 데이터 전송 서비스를 위한 각각의 시간 슬롯 동안, 낮은 우선순위를 가진 티어들 내의 대기열들을 매치시키기 전에 높은 우선순위를 가진 티어들 내의 적어도 일부의 대기열들을 매치시킴으로써, 상기 일부의 대기열들을 이그레스들에 매치시키는 수단을 포함하되,상기 매치시키는 수단은 최고 우선순위를 가진 티어를 선택하고, 상기 선택된 티어 내의 대기열들 중의 하나를 선택하고, 인그레스가 원하는 이그레스가 이용가능하다면 상기 선택된 대기열을 원하는 이그레스에 매치시키고 이용가능한 이그레스의 리스트로부터 상기 원하는 이그레스를 삭제하고, 상기 선택된 대기열을 고려 대상 대기열의 리스트로부터 삭제하고, 상기 선택된 티어 내의 상기 모든 대기열들에 대해, 상기 대기열 중의 하나를 선택하고, 상기 선택된 대기열을 매치시키고, 선택된 대기열을 삭제하는 것을 특징으로 하는 공유 링크 상에서의 액세스 조정 시스템.
- 공유 링크 상에서의 데이터 전송 서비스를 위한 대기열 선택 시스템에 있어서,데이터 전송을 위한 각 시간 슬롯 동안 인그레스 내의 적어도 일부의 대기열들에 대한 크레디트 값을 결정하는 인그레스 내의 미터링 모듈로서, 여기서 각각의 크레디트 값은 지정된 대기열이 할당된 대역폭을 받았는지를 나타내는, 상기 미터링 모듈 ; 및각각의 시간 슬롯 동안 : (a) 각각의 대기열을 두 개 이상의 티어들의 그룹에서의 하나의 티어로 매핑시키고, 여기서 각각의 티어는 상이한 우선순위 레벨을 가지고, 및 (b) 낮은 우선순위를 가진 티어들 내의 대기열들을 매치시키기 전에 높은 우선순위를 가진 티어들 내의 적어도 일부의 대기열들을 매치시킴으로써, 일부의 대기열들을 이그레스들에 매치시키는 조정 모듈을 포함하는 대기열 선택 시스템.
- 제 30항에 있어서,상기 시스템이 대기열 메트릭 정보 및 일부의 대기열 그룹에 대한 보증 대역폭 양을 이용하여 각각의 대기열에 대한 대역폭의 보증 속도를 계산하는 대역폭 할당기 모듈(allocator module)을 더 포함하고, 여기서 상기 미터링 모듈은 상기 보증 속도를 이용하여 크레디트 값을 결정하는 대기열 선택 시스템.
- 공유 링크 상에서의 대역폭 할당 방법에 있어서,대기열들의 그룹에서 각 대기열에 대한 대기열 메트릭에 관한 정보를 유지하는 단계 ;상기 대기열 메트릭 정보 및 보증 대역폭 양을 이용하여 대기열들의 그룹내의 각각의 대기열에 대한 보증 속도를 계산하는 단계;각각의 대기열에 대한 보증 속도를 각 대기열에 관련된 인그레스에 전송하는 단계로서, 각 인그레스는 각 대기열에 대한 보증 속도를 이용하여 각 대기열에 대한 크레디트 값을 계산할 수 있는, 상기 전송하는 단계 ;적어도 하나의 인그레스로부터 대기열 상태 정보를 수신하는 단계로서, 상기 대기열 상태 정보는 하나 이상의 대기열들에 대한 크레디트 값을 포함하는, 상기 수신하는 단계;각각의 대기열을 상기 크레디트 값을 이용하여 두 개 이상의 티어들의 그룹 내의 하나의 티어에 매핑시키는 단계로서, 각각의 티어는 상이한 우선순위 레벨을 가지는, 상기 매핑시키는 단계 단계 ; 및낮은 우선순위를 가진 티어들 내의 대기열들을 매치시키도록 시도하기 전에 높은 우선순위를 가진 티어들 내의 적어도 일부의 대기열들을 매치시키도록 시도하여, 상기 일부의 대기열들을 이그레스들에 매치시키는 단계를 포함하는 공유 링크 상에서의 대역폭 할당 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/639,269 US7724760B2 (en) | 2001-07-05 | 2003-08-12 | Method and apparatus for bandwidth guarantee and overload protection in a network switch |
US10/639,269 | 2003-08-12 | ||
PCT/US2004/023758 WO2005019975A2 (en) | 2003-08-12 | 2004-07-22 | Method and apparatus for bandwidth guarantee and overload protection in a network switch |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060064627A KR20060064627A (ko) | 2006-06-13 |
KR100933917B1 true KR100933917B1 (ko) | 2009-12-23 |
Family
ID=32230628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020067002981A KR100933917B1 (ko) | 2003-08-12 | 2004-07-22 | 네트워크 스위치에서의 대역폭 보장 및 과부하 보호 방법및 장치 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7724760B2 (ko) |
EP (1) | EP1654616A4 (ko) |
JP (1) | JP2007512719A (ko) |
KR (1) | KR100933917B1 (ko) |
CA (1) | CA2535545A1 (ko) |
WO (1) | WO2005019975A2 (ko) |
Families Citing this family (74)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6850965B2 (en) * | 1998-11-17 | 2005-02-01 | Arthur Douglas Allen | Method for connection acceptance and rapid determination of optimal multi-media content delivery over network |
US7334044B1 (en) | 1998-11-17 | 2008-02-19 | Burst.Com | Method for connection acceptance control and optimal multi-media content delivery over networks |
US7415539B2 (en) * | 2001-09-28 | 2008-08-19 | Siebel Systems, Inc. | Method and apparatus for detecting insufficient memory for data extraction processes |
US20030103453A1 (en) * | 2001-12-05 | 2003-06-05 | Broadweb Corporation | System and method for managing flow bandwidth utilization in a packet communication environment |
US7385997B2 (en) * | 2002-04-08 | 2008-06-10 | International Business Machines Corporation | Priority based bandwidth allocation within real-time and non-real-time traffic streams |
US7227866B2 (en) * | 2002-10-21 | 2007-06-05 | Tropic Networks Inc. | Fast work-conserving round robin scheduling |
US7426216B2 (en) * | 2002-11-21 | 2008-09-16 | Rmi Corporation | Advanced telecommunications router and crossbar switch controller |
US7734805B2 (en) * | 2003-04-15 | 2010-06-08 | Alcatel-Lucent Usa Inc. | Method for scheduling transmissions in communication systems |
US8199764B2 (en) * | 2003-08-25 | 2012-06-12 | Cisco Technology, Inc. | Scalable approach to large scale queuing through dynamic resource allocation |
US9065741B1 (en) * | 2003-09-25 | 2015-06-23 | Cisco Technology, Inc. | Methods and apparatuses for identifying and alleviating internal bottlenecks prior to processing packets in internal feature modules |
US20050174958A1 (en) * | 2004-02-11 | 2005-08-11 | Phonex Broadband Corporation | Method and system for prioritazation and dynamic channel allocation within a communication system |
US20060101469A1 (en) * | 2004-11-10 | 2006-05-11 | International Business Machines (Ibm) Corporation | Method, controller, program product and services for managing resource element queues |
US8125486B2 (en) * | 2006-02-23 | 2012-02-28 | Los Alamos National Security, Llc | Combining multi-layered bitmap files using network specific hardware |
US7733781B2 (en) * | 2006-04-24 | 2010-06-08 | Broadcom Corporation | Distributed congestion avoidance in a network switching system |
US8553684B2 (en) * | 2006-04-24 | 2013-10-08 | Broadcom Corporation | Network switching system having variable headers and addresses |
US7801164B2 (en) * | 2006-04-27 | 2010-09-21 | Agere Systems Inc. | Two dimensional timeout table mechanism with optimized delay characteristics |
US8005041B2 (en) | 2006-05-08 | 2011-08-23 | Ipwireless, Inc. | Wireless communication system, apparatus for supporting data flow and method therefor |
US7760748B2 (en) | 2006-09-16 | 2010-07-20 | Mips Technologies, Inc. | Transaction selector employing barrel-incrementer-based round-robin apparatus supporting dynamic priorities in multi-port switch |
US7990989B2 (en) * | 2006-09-16 | 2011-08-02 | Mips Technologies, Inc. | Transaction selector employing transaction queue group priorities in multi-port switch |
US7773621B2 (en) * | 2006-09-16 | 2010-08-10 | Mips Technologies, Inc. | Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch |
US7961745B2 (en) * | 2006-09-16 | 2011-06-14 | Mips Technologies, Inc. | Bifurcated transaction selector supporting dynamic priorities in multi-port switch |
GB0619519D0 (en) * | 2006-10-04 | 2006-11-15 | Siemens Ag | Packet scheduling |
US8750125B2 (en) * | 2007-10-19 | 2014-06-10 | Telefonaktiebolaget L M Ericsson (Publ) | Method and arrangement for scheduling data packets in a communication network system |
US8040901B1 (en) * | 2008-02-06 | 2011-10-18 | Juniper Networks, Inc. | Packet queueing within ring networks |
US8625624B1 (en) * | 2008-06-13 | 2014-01-07 | Cisco Technology, Inc. | Self-adjusting load balancing among multiple fabric ports |
CN101621460B (zh) * | 2008-06-30 | 2011-11-30 | 中兴通讯股份有限公司 | 一种分组调度方法和装置 |
US8005087B2 (en) * | 2008-09-16 | 2011-08-23 | Alcatel Lucent | Application-level processing for default LTE bearer |
GB2464310B (en) | 2008-10-10 | 2012-10-17 | Micron Technology Inc | Switching device |
US8687639B2 (en) * | 2009-06-04 | 2014-04-01 | Nvidia Corporation | Method and system for ordering posted packets and non-posted packets transfer |
US8526452B1 (en) * | 2009-07-13 | 2013-09-03 | Viasat, Inc. | Quality of service packet scheduler design |
US8811407B1 (en) * | 2009-11-30 | 2014-08-19 | Cox Communications, Inc. | Weighted data packet communication system |
US8532098B2 (en) * | 2009-11-30 | 2013-09-10 | Nvidia Corporation | System and method for virtual channel communication |
US9331869B2 (en) * | 2010-03-04 | 2016-05-03 | Nvidia Corporation | Input/output request packet handling techniques by a device specific kernel mode driver |
GB201111106D0 (en) * | 2011-06-30 | 2011-08-10 | Xelerated Ab | Method, network device, computer program and computer program product for communication queue state |
CN102857442B (zh) * | 2011-06-30 | 2017-11-21 | 马维尔国际贸易有限公司 | 传送队列状态的方法、网络设备及其产品 |
US9590820B1 (en) | 2011-09-02 | 2017-03-07 | Juniper Networks, Inc. | Methods and apparatus for improving load balancing in overlay networks |
CN103999414B (zh) * | 2011-09-30 | 2017-09-08 | 英国电讯有限公司 | 一种归因针对相应用户寄存器的共享资源的拥塞贡献的方法和装置 |
US9525635B2 (en) * | 2011-11-15 | 2016-12-20 | Nec Corporation | Network communication apparatus and method of preferential band limitation of transfer frame |
JP2013118486A (ja) * | 2011-12-02 | 2013-06-13 | Nec Corp | 回線中継装置、tdm回線迂回システムおよびtdm回線迂回制御方法 |
US8953449B2 (en) * | 2012-03-22 | 2015-02-10 | Fujitsu Limited | Virtual subport data traffic management |
US9331929B1 (en) | 2012-03-29 | 2016-05-03 | Juniper Networks, Inc. | Methods and apparatus for randomly distributing traffic in a multi-path switch fabric |
EP2696543A1 (en) * | 2012-08-06 | 2014-02-12 | Renesas Electronics Europe Limited | Calculating credit for controlling data frame transmission |
WO2014032960A1 (en) * | 2012-08-29 | 2014-03-06 | Universiteit Gent | Method and device for scheduling data traffic |
US20140105218A1 (en) * | 2012-10-12 | 2014-04-17 | Prashant H. Anand | Queue monitoring to filter the trend for enhanced buffer management and dynamic queue threshold in 4g ip network/equipment for better traffic performance |
US9154438B2 (en) * | 2013-01-24 | 2015-10-06 | Cisco Technology, Inc. | Port-based fairness protocol for a network element |
US9582440B2 (en) * | 2013-02-10 | 2017-02-28 | Mellanox Technologies Ltd. | Credit based low-latency arbitration with data transfer |
WO2015012811A1 (en) | 2013-07-23 | 2015-01-29 | Hewlett-Packard Development Company, L.P. | Work conserving bandwidth guarantees using priority |
US9641465B1 (en) | 2013-08-22 | 2017-05-02 | Mellanox Technologies, Ltd | Packet switch with reduced latency |
ES2650498T3 (es) * | 2013-09-09 | 2018-01-18 | Intercapital Services North America Llc | Método y aparato para entrada de órdenes en un sistema de negociación electrónico |
US9590914B2 (en) * | 2013-11-05 | 2017-03-07 | Cisco Technology, Inc. | Randomized per-packet port channel load balancing |
US9825884B2 (en) | 2013-12-30 | 2017-11-21 | Cavium, Inc. | Protocol independent programmable switch (PIPS) software defined data center networks |
US10469404B1 (en) * | 2014-05-12 | 2019-11-05 | Google Llc | Network multi-level rate limiter |
US9900253B2 (en) | 2014-08-28 | 2018-02-20 | Cavium, Inc. | Phantom queue link level load balancing system, method and device |
US9729338B2 (en) | 2014-09-23 | 2017-08-08 | Cavium, Inc. | Fast hardware switchover in a control path in a network ASIC |
US9813327B2 (en) | 2014-09-23 | 2017-11-07 | Cavium, Inc. | Hierarchical hardware linked list approach for multicast replication engine in a network ASIC |
US9760418B2 (en) | 2014-09-23 | 2017-09-12 | Cavium, Inc. | Session based packet mirroring in a network ASIC |
US10291540B2 (en) | 2014-11-14 | 2019-05-14 | Cavium, Llc | Method and apparatus for performing a weighted queue scheduling using a set of fairness factors |
US10447608B2 (en) | 2014-11-14 | 2019-10-15 | Marvell Semiconductor, Inc. | Packet scheduling using hierarchical scheduling process with priority propagation |
US10110515B2 (en) | 2014-11-14 | 2018-10-23 | Cavium, Inc. | Packet scheduling using hierarchical scheduling process |
CN105991188B (zh) | 2015-02-16 | 2019-09-10 | 阿里巴巴集团控股有限公司 | 一种检测共享风险链路组的方法及装置 |
CN106063206B (zh) * | 2015-02-18 | 2020-09-22 | 英特尔公司 | 基于优先级和带宽分配的通信量类别仲裁 |
US10419571B2 (en) | 2015-03-24 | 2019-09-17 | Cavium, Llc | Packet processor forwarding database cache |
US10305819B2 (en) * | 2015-05-13 | 2019-05-28 | Cisco Technology, Inc. | Dynamic protection of shared memory used by output queues in a network device |
US9866401B2 (en) | 2015-05-13 | 2018-01-09 | Cisco Technology, Inc. | Dynamic protection of shared memory and packet descriptors used by output queues in a network device |
US9990240B2 (en) * | 2015-12-11 | 2018-06-05 | Successfactors, Inc. | Event handling in a cloud data center |
EP3400687A4 (en) * | 2016-01-08 | 2019-06-12 | Inspeed Networks, Inc. | BIDIRECTIONAL DATA TRAFFIC CONTROL |
CN108234350B (zh) * | 2016-12-21 | 2021-08-03 | 华为技术有限公司 | 一种调度方法及客户驻地设备 |
US11134021B2 (en) * | 2016-12-29 | 2021-09-28 | Intel Corporation | Techniques for processor queue management |
CN110383777B (zh) * | 2017-03-28 | 2022-04-08 | 马维尔亚洲私人有限公司 | 端口扩展器设备的灵活处理器 |
CN109104382B (zh) * | 2017-06-20 | 2022-05-24 | 华为技术有限公司 | 一种动态调度方法、装置及*** |
CN107612846A (zh) * | 2017-11-01 | 2018-01-19 | 北京天创凯睿科技有限公司 | 一种业务数据自适应传输方法及装置 |
US11343358B2 (en) | 2019-01-29 | 2022-05-24 | Marvell Israel (M.I.S.L) Ltd. | Flexible header alteration in network devices |
US11943149B2 (en) * | 2019-10-15 | 2024-03-26 | Hewlett Packard Enterprise Development Lp | Arbiter with random tie breaking |
US20210279192A1 (en) * | 2020-03-06 | 2021-09-09 | Infineon Technologies Ag | Distribution of interconnect bandwidth among master agents |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030135449A1 (en) * | 2002-01-14 | 2003-07-17 | Hong Xu | Weighted credit-based arbitration using credit history |
US20040081184A1 (en) * | 2002-06-27 | 2004-04-29 | Tellabs Operations, Inc. | Apparatus and method to switch packets using a switch fabric with memory |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6064677A (en) | 1996-06-27 | 2000-05-16 | Xerox Corporation | Multiple rate sensitive priority queues for reducing relative data transport unit delay variations in time multiplexed outputs from output queued routing mechanisms |
US6064651A (en) * | 1996-06-27 | 2000-05-16 | Xerox Corporation | Rate shaping in per-flow output queued routing mechanisms for statistical bit rate service |
SE516249C2 (sv) * | 1997-02-19 | 2001-12-10 | Ericsson Telefon Ab L M | Flödeskontroll vid switching |
US5963557A (en) | 1997-04-11 | 1999-10-05 | Eng; John W. | High capacity reservation multiple access network with multiple shared unidirectional paths |
JP3276341B2 (ja) | 1999-02-23 | 2002-04-22 | 日本電信電話株式会社 | パケット転送装置及びパケット転送方法 |
WO2000056011A2 (en) * | 1999-03-17 | 2000-09-21 | Broadcom Corporation | Method for managing congestion in a network switch |
US6850521B1 (en) | 1999-03-17 | 2005-02-01 | Broadcom Corporation | Network switch |
JP3319723B2 (ja) | 1999-04-02 | 2002-09-03 | 日本電気株式会社 | スイッチ及びそのスケジューラ並びにスイッチスケジューリング方法 |
JP2001016206A (ja) | 1999-06-28 | 2001-01-19 | Nec Corp | 帯域共有制御装置 |
US6901452B1 (en) | 2000-03-02 | 2005-05-31 | Alcatel | Selectable prioritization for data communication switch |
JP4879382B2 (ja) * | 2000-03-22 | 2012-02-22 | 富士通株式会社 | パケットスイッチ、スケジューリング装置、廃棄制御回路、マルチキャスト制御回路、およびQoS制御装置 |
JP3543725B2 (ja) * | 2000-04-11 | 2004-07-21 | 日本電気株式会社 | パケット交換装置およびパケット交換方法 |
US6862265B1 (en) * | 2000-04-13 | 2005-03-01 | Advanced Micro Devices, Inc. | Weighted fair queuing approximation in a network switch using weighted round robin and token bucket filter |
US6915372B2 (en) * | 2000-08-31 | 2005-07-05 | Tellabs Operations, Inc. | Methods and apparatus for managing traffic through a buffered crossbar switch fabric |
JP2002135269A (ja) | 2000-10-20 | 2002-05-10 | Nec Corp | 優先制御装置および優先制御方法 |
JP3558044B2 (ja) * | 2001-02-09 | 2004-08-25 | 日本電気株式会社 | パケット転送レート監視制御装置、方法、及びプログラム |
EP1402396A4 (en) | 2001-07-05 | 2009-05-27 | Sandburst Corp | METHOD AND APPARATUS FOR ALLOCATING LINK STRIP WIDTH |
JP3698079B2 (ja) * | 2001-08-22 | 2005-09-21 | 日本電気株式会社 | データ転送方法、データ転送装置及びプログラム |
US7852829B2 (en) * | 2003-06-19 | 2010-12-14 | Polytechnic University | Packet reassembly and deadlock avoidance for use in a packet switch |
-
2003
- 2003-08-12 US US10/639,269 patent/US7724760B2/en not_active Expired - Fee Related
-
2004
- 2004-07-22 CA CA002535545A patent/CA2535545A1/en not_active Abandoned
- 2004-07-22 JP JP2006523205A patent/JP2007512719A/ja active Pending
- 2004-07-22 WO PCT/US2004/023758 patent/WO2005019975A2/en active Application Filing
- 2004-07-22 KR KR1020067002981A patent/KR100933917B1/ko not_active IP Right Cessation
- 2004-07-22 EP EP04779015A patent/EP1654616A4/en not_active Withdrawn
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030135449A1 (en) * | 2002-01-14 | 2003-07-17 | Hong Xu | Weighted credit-based arbitration using credit history |
US20040081184A1 (en) * | 2002-06-27 | 2004-04-29 | Tellabs Operations, Inc. | Apparatus and method to switch packets using a switch fabric with memory |
Also Published As
Publication number | Publication date |
---|---|
US20040090974A1 (en) | 2004-05-13 |
WO2005019975A3 (en) | 2009-05-07 |
CA2535545A1 (en) | 2005-03-03 |
EP1654616A4 (en) | 2010-10-20 |
EP1654616A2 (en) | 2006-05-10 |
US7724760B2 (en) | 2010-05-25 |
JP2007512719A (ja) | 2007-05-17 |
WO2005019975A2 (en) | 2005-03-03 |
KR20060064627A (ko) | 2006-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100933917B1 (ko) | 네트워크 스위치에서의 대역폭 보장 및 과부하 보호 방법및 장치 | |
US7415477B2 (en) | Method and apparatus for allocating link bandwidth | |
US7457297B2 (en) | Methods and apparatus for differentiated services over a packet-based network | |
US6654343B1 (en) | Method and system for switch fabric flow control | |
JP4879382B2 (ja) | パケットスイッチ、スケジューリング装置、廃棄制御回路、マルチキャスト制御回路、およびQoS制御装置 | |
US7027457B1 (en) | Method and apparatus for providing differentiated Quality-of-Service guarantees in scalable packet switches | |
US6810426B2 (en) | Methods and systems providing fair queuing and priority scheduling to enhance quality of service in a network | |
AU752188B2 (en) | System and method for scheduling message transmission and processing in a digital data network | |
US6721796B1 (en) | Hierarchical dynamic buffer management system and method | |
US20020163922A1 (en) | Network switch port traffic manager having configurable packet and cell servicing | |
EP1239637A2 (en) | Time based packet scheduling and sorting system | |
CN101299721B (zh) | 交换网报文交换方法和交换装置 | |
US20100172363A1 (en) | Systems and methods for congestion control using random early drop at head of buffer | |
US7623456B1 (en) | Apparatus and method for implementing comprehensive QoS independent of the fabric system | |
US6904056B2 (en) | Method and apparatus for improved scheduling technique | |
Benet et al. | Providing in-network support to coflow scheduling | |
US7420919B1 (en) | Self converging communication fair rate control system and method | |
JP4104756B2 (ja) | 電気通信網においてデータパケットをスケジューリングする方法およびシステム | |
EP2169883B1 (en) | Asynchronous flow control and scheduling method | |
JP2003023460A (ja) | レート制御装置 | |
JP2003023450A (ja) | レート制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20121206 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20131206 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20150119 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20151215 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20161207 Year of fee payment: 8 |
|
LAPS | Lapse due to unpaid annual fee |