KR100546968B1 - 컴퓨터 네트워크에서의 패킷 전송 제어 방법 및 장치 - Google Patents
컴퓨터 네트워크에서의 패킷 전송 제어 방법 및 장치 Download PDFInfo
- Publication number
- KR100546968B1 KR100546968B1 KR1020027006623A KR20027006623A KR100546968B1 KR 100546968 B1 KR100546968 B1 KR 100546968B1 KR 1020027006623 A KR1020027006623 A KR 1020027006623A KR 20027006623 A KR20027006623 A KR 20027006623A KR 100546968 B1 KR100546968 B1 KR 100546968B1
- Authority
- KR
- South Korea
- Prior art keywords
- level
- queue
- transmission rate
- flow
- value
- Prior art date
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 350
- 238000000034 method Methods 0.000 title claims abstract description 307
- 230000002238 attenuated effect Effects 0.000 claims abstract description 16
- 230000007246 mechanism Effects 0.000 claims description 85
- 238000012546 transfer Methods 0.000 claims description 47
- 230000006399 behavior Effects 0.000 claims description 34
- 230000003247 decreasing effect Effects 0.000 claims description 24
- 230000007423 decrease Effects 0.000 claims description 23
- 230000008859 change Effects 0.000 claims description 22
- 230000002829 reductive effect Effects 0.000 claims description 21
- 230000008569 process Effects 0.000 claims description 15
- 230000009471 action Effects 0.000 claims description 4
- 230000036962 time dependent Effects 0.000 claims description 4
- 230000001419 dependent effect Effects 0.000 claims 8
- OAICVXFJPJFONN-UHFFFAOYSA-N Phosphorus Chemical compound [P] OAICVXFJPJFONN-UHFFFAOYSA-N 0.000 claims 1
- 229910052698 phosphorus Inorganic materials 0.000 claims 1
- 239000011574 phosphorus Substances 0.000 claims 1
- 230000006870 function Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 22
- 239000004744 fabric Substances 0.000 description 12
- 230000009467 reduction Effects 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 8
- 239000002699 waste material Substances 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000001052 transient effect Effects 0.000 description 4
- 230000006872 improvement Effects 0.000 description 3
- 230000000737 periodic effect Effects 0.000 description 3
- 230000002459 sustained effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000012886 linear function Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004519 grease Substances 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
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/25—Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
-
- 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/29—Flow control; Congestion control using a combination of thresholds
-
- 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/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
-
- 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/56—Queue scheduling implementing delay-aware scheduling
- H04L47/568—Calendar queues or timing rings
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/15—Interconnection of switching modules
- H04L49/1515—Non-blocking multistage, e.g. Clos
- H04L49/1546—Non-blocking multistage, e.g. Clos using pipelined operation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
컴퓨터 네트워크에서의 복수의 패킷 흐름 제어 방법, 장치 및 프로그램 제품이 개시되어 있다. 컴퓨터 네트워크는 큐 정의 장치를 포함한다. 상기 방법, 장치 및 프로그램 제품은 큐에 대한 큐 레벨을 결정하는 것과, 큐에 복수의 패킷이 제공되는 레이트를 결정하는 것을 포함한다. 상기 방법, 장치 및 프로그램 제품은 또한 큐로/로부터의 복수의 패킷의 전송 비율을 제어하는 것을 포함하는데, 이러한 제어는 큐 레벨, 제공 레이트 및 전송 비율의 이전 값을 기초로 하며, 전송 비율과 큐 레벨은 큐 레벨이 적어도 제1 큐 레벨과 제2 큐 레벨 사이에 존재할 경우 임계 감쇠된다. 다양한 기술을 사용하여 상기 제어 방식을 결정하는 몇가지 실시예가 개시되어 있다.
Description
본 발명은 컴퓨터 네트워크에 관한 것으로, 구체적으로는 컴퓨터 네트워크에서의 데이터 폐기 및 전송 제어 방법과 그 시스템에 관한 것이다.
인터넷을 기반으로 한 네트워크 애플리케이션 등 다양한 네트워크 애플리케이션의 사용 증가로 인해 컴퓨터 네트워크에 대한 관심이 증가되고 있다. 스위치는 흔히 네트워크의 일부분들을 서로 결합하거나 네트워크들을 서로 결합하는 데 사용된다. 도 1은 컴퓨터 네트워크에 사용될 수 있는 스위치(10)의 간략화된 블록도를 도시하고 있다. 스위치(10)는 블레이드(blade)(7, 8, 9)와 결합된 스위치 패브릭(switch fabric)(3)을 포함한다. 각 블레이드(7, 8, 9)는 일반적으로 회로 기판이며, 적어도 포트(4)와 결합된 네트워크 프로세서(2)를 포함한다. 포트(4)는 다양한 네트워크 노드들을 통해 호스트들(도시되지 않음)과 직접 또는 간접적으로 결합된다. 블레이드(7, 8, 9)는 스위치 패브릭(3)에 트래픽을 제공하고 스위치 패브릭(3)으로부터 트래픽을 받는다. 따라서, 어느 한 블레이드(7, 8 또는 9)와 연결된 호스트는 동일 또는 다른 블레이드(7, 8 또는 9)에 연결된 다른 호스트와 통신할 수 있다.
도 2는 도 1에 도시된 네트워크 프로세서(2)로서 사용될 수 있는 프로그래머블 네트워크 프로세서의 실시예에 대한 고수준의 블록도를 도시하고 있다. 도시된 바와 같이, 네트워크 프로세서(2)는 인그레스 스위치 인터페이스(ingress switch interface)(인그레스 SWI)(11), 인그레스 인큐잉/디큐잉/스케줄링 로직(ingress enqueue/dequeue/scheduling logic)(인그레스 EDS)(12), 내장형 프로세서 컴플렉스(embedded processor complex)(EPC)(13), 인그레스 피지컬 MAC 멀티플렉서(ingress physical MAC multiplexer)(인그레스 PMM)(14), 이그레스 피지컬 MAC 멀티플렉서(egress physical MAC multiplexer)(이그레스 PMM)(15), 이그레스 인큐잉/디큐잉/스케줄링 로직(egress enqueue/dequeue/scheduling logic)(이그레스 EDS)(16), 이그레스 스위치 인터페이스(egress switch interface)(이그레스 SWI)(17)를 포함한다. 네트워크 프로세서(2)는 또한 다른 기억 및 처리 장치들을 포함할 수 있다. EPC(13)는 코프로세서(co-processor) 이외에도 프로토콜 프로세서를 다수개 포함한다. 인그레스 EDS(12)와 이그레스 EDS(16)는 각각 장치들, 예컨대 이더넷 장치들로부터 스위치 패브릭으로 이동하는 트래픽과 스위치 패브릭으로부터 장치들로 이동하는 트래픽에 대한 일정한 인큐잉, 디큐잉 및 스케줄링 기능을 수행할 수 있다. 인그레스 SWI(11)와 이그레스 SWI(17)는 다른 장치들, 예컨대 다른 네트워크 프로세서 또는 스위치(도 2에 도시되지 않음)에 연결하기 위한 링크를 제공한다. 스위치 패브릭과 함께 사용시에, 인그레스 SWI(11)와 이그레스 SWI(17)는 스위치(10)용 스위치 패브릭(3)(도 1)과 결합된다. 인그레스 PMM(14)과 이그레스 PMM(15)은 각각 물리 계층의 장치들로부터 트래픽을 수신하고 물리 계층의 장치들 로 트래픽을 전송한다. 본원 명세서에 기재된 프로그래머블 네트워크 프로세서의 아키텍쳐 및 동작은 본원 명세서에 개시된 본 발명 밖의 보호를 요한다. 일부 애플리케이션에 있어서, 스위치 패브릭을 하나 이상의 네트워크 프로세서와 조합함으로써 달성되는 본원 명세서에 기재된 기능들이, 스위치 패브릭의 제공없이 단지 하나의 네트워크 프로세서나 한 쌍의 결합된 네트워크 프로세서에 의해 달성될 수 있다.
도 3은 스위치(10)의 다른 간략화된 블록도로서, 네트워크 프로세서(2)가 수행하는 일부 기능을 달리 도시하고 있다. 도 1에 도시된 것과 동일한 구성 요소들이 일부 기능을 수행하고 있지만, 이들 구성 요소들을 달리 표기할 수도 있다. 예컨대, 스위치(10)를 통과하는 트래픽 경로를 설명함에 있어서, 도 1의 스위치 패브릭(3)은 도 3에서 스위치 패브릭 "26"으로 표기될 수 있다. 스위치(10)는 포트 A(18)와 연결된 호스트들(도시되지 않음)을 포트 B(36)와 연결된 호스트들(도시되지 않음)과 결합한다. 따라서, 스위치(10)는 데이터 패킷이 소스로부터 목적지까지 전송되도록 해준다. 데이터 패킷은 각종 데이터 패킷을 포함할 수 있다. 예컨대, 이더넷 패킷("프레임"으로 통칭됨), ATM 패킷("셀"로 통칭됨) 및 IP 패킷("패킷"으로 통칭됨) 모두를 본원 명세서에서는 패킷이라고 칭할 것이다.
스위치(10)는 스위치(10)에 제공되는 데이터 패킷의 분류, 스위치(10)를 통과하는 데이터 패킷의 전송 및 데이터 패킷의 재조립을 포함한 다양한 기능을 수행한다. 이러한 기능들은 각각 분류기(classifier)(22), 스위치 패브릭(26) 및 재조립기(reassembler)(30)에 의해 제공된다. 분류기(22)는 제공되는 패킷을 분류하고, 각 패킷을 편리한 크기로 나누는데, 이것을 본원 명세서에서는 셀이라 한다. 스위치 패브릭(26)은 그 셀들이 스위치(10)를 통과하는 중에 전송되어 지나는 연결 매트릭스이다. 재조립기(30)는 그 셀들을 적절한 패킷으로 재조립한다. 다음에, 그 패킷들은 포트 B(36)의 적절한 포트에 제공되고, 목적지 호스트로 출력될 수 있다. 분류기(22)는 어느 한 네트워크 프로세서(1)의 일부분일 수 있고, 재조립기(30)는 다른 네트워크 프로세서(5)의 일부분일 수 있다. 도시된 네트워크 프로세서(1) 부분과 네트워크 프로세서(5) 부분은 각각 포트 A(18)로부터 이동하는 트래픽과 포트 B(36)로 이동하는 트래픽에 대한 기능을 수행한다. 그러나, 네트워크 프로세서(1, 5)는 또한 각각 포트 A(18)로부터 이동하는 트래픽과 포트 B(36)로 이동하는 트래픽에 대한 기능을 수행한다. 그러나, 네트워크 프로세서(1, 5)는 또한 포트 B(36)로부터 이동하는 트래픽과 포트 A(18)로 이동하는 트래픽에 대한 기능을 수행한다. 이와 같이, 각 네트워크 프로세서(1, 5)는 분류 기능과 재조립 기능을 수행할 수 있다. 또한, 각 네트워크 프로세서(1, 5)는 도 1 및 도 2에 도시된 네트워크 프로세서일 수 있다.
스위치(10)를 통과하는 트래픽을 전송하는 경우 병목 현상 때문에, 분류, 전송 및 재조립 기능을 수행하기 전에 데이터 패킷을 대기시킬 필요가 있을 수 있다. 그 결과, 큐(20, 24, 28, 34)가 제공될 수 있다. 큐(20, 24, 28, 34)에는 인큐잉 메커니즘(19, 23, 27, 32)이 결합된다. 인큐잉 메커니즘은 패킷 또는 셀을 대응하는 큐에 배치하며, 그 패킷이 발생된 호스트로 반송되는 통지(notification)를 제공할 수 있다. 분류, 인큐잉 및 스케줄링 기능은 도 2에 도시된 네트워크 프로세서 내의 인그레스 EDS(12)와 이그레스 EDS(16)에 의해 제공되는 것이 바람직하다. 인큐잉 매커니즘(19, 23), 큐(20, 24), 분류기(22) 및 스케줄러(21, 25)는 인그레스 EDS(12)에 의해 제어된다. 유사하게, 인큐잉 매커니즘(27, 32), 큐(28, 34), 재조립기(30) 및 스케줄러(29, 35)는 이그레스 EDS(16)에 의해 제어된다.
또한, 도 3에는 스케줄러(21, 25, 29, 35)가 도시되어 있다. 그 스케줄러들은 각각 큐(20, 24, 28, 34)를 떠날 각 패킷에 대한 스케줄링을 제어한다. 일반적으로 그리고 이하 더 명확히 알 수 있는 바와 같이, 본원의 관심은 도 2에서 이그레스 PMM(15), 이그레스 EDS(16) 및 이그레스 SWI(17)로 도시된, 네트워크 프로세서(2)의 이그레스 부분이다. 본 발명의 한가지 예시적인 초점에는 포트 B(36)로의 트래픽을 제어하는 스케줄러(35)가 포함된다. 명확한 설명을 위해서, 스케줄러(35)와 큐(34)를 참조하여 스케줄러의 기능을 논의할 것이다. 통상적으로, 스케줄러(35)는 큐(34) 내의 각 패킷에 관한 정보를 제공받는다. 이러한 정보에는 전송 시간이 중요한 실시간 패킷 또는 전송 속도가 중요하지 않은 데이터 패킷과 같은 패킷의 타입이 포함될 수 있다. 스케줄러(35)는 이러한 정보 및 제공된 다른 정보를 기초로 해서, 큐(34) 내의 각 패킷이 큐로부터 제거되어 그의 목적지로 전송되는 것을 결정한다. 예컨대, 스케줄러(35)는 각각 다수의 포지션을 포함하는 하나 이상의 캘린더(calendar)와, 또 다른 다수의 포지션을 포함하는 가중 공정 큐잉(Weighted Fair Queuing:WFQ) 링을 포함할 수 있다. 스케줄러(35)는 일정한 패킷을 캘린더에 배치하고 다른 패킷을 가중 공정 큐잉 링에 배치할 수 있다. 스케줄러(35)는 일정 시간을 캘린더 내의 각 포지션에 할당하다. 캘린더 내의 각 포지션 은 통상적으로 식별자(identifier)에 의해 표현되는 단일 패킷을 가지고 있거나, 또는 비어 있을 수 있다. 스케줄러(35)가 일정한 포지션에 도달하면, 그 포지션에 배치된 패킷이 큐로부터 검색되어 그의 목적지로 전송된다. 그러나, 캘린더 내의 그 포지션이 비어 있다면, 스케줄러(35)는 특정 시간이 지날 때까지 기다린 후, 캘린더 내의 다음 포지션으로 이동한다. 유사하게, 스케줄러(35)는 다른 패킷을 스케줄러(35)의 가중 공정 큐잉 링 내의 포지션에 배치한다. 가중 공정 큐잉 링 내의 포지션 또한 단일 패킷에 의해 점유되어 있거나, 또는 비어 있을 수 있다. 포지션이 점유되어 있다면, 스케줄러(35)는 그 포지션에 도달하자마자 그 포지션 내의 패킷을 전송한다. 포지션이 점유되어 있지 않다면, 스케줄러(35)는 점유된 다음 포지션으로 건너 뛴다. 스케줄러(35)를 사용하여 큐(34)를 떠나는 각 패킷을 제어함으로써, 트래픽이 스위치(10)를 통하여 흐를 수 있다.
큐들(20, 24, 28, 34)이 별도로 도시되어 있지만, 당업자는 그 큐들의 일부 또는 모두가 동일한 물리적 메모리 자원의 일부분일 수 있다는 것을 쉽게 이해할 것이다.
스위치(10)를 통과하는 트래픽의 흐름을 제어하기 위한 방법들이 개발됨으로써, 그 스위치를 사용하는 네트워크의 성능이 향상되고 있다. 특히, RED(Random Early Discard or Detection)로서 알려진 방법은 큐와 같은 메모리 자원과 관련된 메모리가 오버로드되지 않도록 보장하기 위한 시도로서 사용될 수 있다. 도 4는 RED 방법을 도시하고 있다. RED 방법은 통상적으로 각각 대응하는 큐(20, 24, 28, 34)를 통과하는 트래픽을 제어하는 인큐잉 매커니즘(19, 23, 27, 32) 중 하나에 의 해 사용된다. 명확한 설명을 위해서, 인큐잉 매커니즘(19)과 큐(20)를 참조하여 RED 방법을 설명할 것이다.
에포크(epoch)로서 알려진 단기간의 끝에서, 그 에포크 동안의 큐(20)에 대한 큐 레벨이 인큐잉 매커니즘(19)에 의해 결정된다(단계 41). 결정된 큐 레벨은 그 에포크 동안의 평균 큐 레벨일 수 있다. 또한, 결정된 큐 레벨은 큐(20)를 포함하는 메모리 자원에 대한 전체 레벨일 수 있다. 다음에, 큐 레벨이 최소 임계값 이상인지의 여부가 결정된다(단계 42). 다음에, 큐 레벨이 최소 임계값 이상이 아닌 경우에는, 협정 전송 비율(conventional transmission fraction)은 1로 설정되고, 협정 폐기 비율(discard fraction)은 0으로 설정된다(단계 43). 전송 비율은 다음 에포크 동안에 전송될 패킷의 비율을 결정한다. 폐기 비율은 드롭(drop)될 패킷의 비율을 결정한다. 그러므로, 협정 폐기 비율은 1에서 협정 전송 비율을 뺀 것(1 - 협정 전송 비율)과 같다. 전송 비율 1은 모든 패킷이 전송되고 드롭되는 패킷이 전혀 없어야 된다는 것을 나타낸다. 다음에, 단계 42에서 큐 레벨이 최소 임계값 이상이라고 결정되면, 그 에포크 동안의 큐 레벨이 최대 임계값 이상인지의 여부가 결정된다(단계 44). 다음에, 큐 레벨이 최대 임계값 이상인 경우에는, 협정 전송 비율은 0으로 설정되고, 협정 폐기 비율은 1로 설정된다(단계 45). 다음에, 큐 레벨이 최대 임계값 이상이 아닌 경우에는, 협정 폐기 비율은 이전 에포크 동안의 큐 레벨을 최대 가능한 큐 레벨로 나눈 것에 비례하거나, 큐 레벨에 대한 어떤 다른 선형 함수에 비례하도록 설정된다(단계 46). 따라서 협정 폐기 비율은 점유되어 있는 큐(20)의 비율에 비례하거나, 큐 레벨에 대한 어떤 다른 선형 함수에 비례한다. 그러므로, 단계 46에서 협정 전송 비율은 또한 1에서 협정 폐기 비율을 뺀 것(1 - 협정 폐기 비율)에 비례하도록 설정된다.
단계 43, 45 또는 46에서 설정된 협정 전송 비율과 협정 폐기 비율은 다음 에포크 동안에 패킷을 랜덤하게 폐기하는 데 이용된다(단계 47). 큐 레벨이 최소 임계값 이하인 경우에는, 모든 패킷이 다음 에포크 동안에 인큐잉 매커니즘(19)에 의해 큐(20)로 전송된다. 큐 레벨이 최대 임계값 이상인 경우에는, 모든 패킷이 다음 에포크 동안에 인큐잉 매커니즘(19)에 의해 폐기되거나, 폐기 큐로 인큐잉된다. 큐 레벨이 최소 임계값과 최대 임계값 사이에 있을 경우에는, 인큐잉 매커니즘(19)에 의해 폐기되는 패킷의 비율은 점유되어 있는 큐(20)의 비율에 비례하거나, 큐 레벨에 대한 어떤 다른 선형 함수에 비례한다. 따라서, 큐 레벨이 높아질수록 폐기되는 패킷의 비율도 높아진다. 또한, 폐기되는 패킷의 송출자에게 통지가 제공됨으로써, 그 송출자가 일정 기간 동안 패킷을 추가로 전송하는 것을 일시 중지시킬 수 있다.
또한, 폐기용으로 선택되는 각 패킷은 랜덤하게 선택될 수 있다. 예컨대, 각 패킷에 대하여, 인큐잉 매커니즘(19)은 0과 1 사이의 임의의 수(random number)를 발생시킬 수 있다. 그 임의의 수는 협정 폐기 비율과 비교된다. 그 임의의 수가 협정 폐기 비율보다 작거나 같은 경우에는, 패킷이 드롭된다. 그렇지 않은 경우에는, 패킷이 큐(20)로 전송된다. 이러한 전송 비율을 기초로 한 패킷 폐기 과정은 에포크가 끝날 때까지 계속된다(단계 48). 에포크가 끝나면, RED 방법은 단시 단계 41로부터 시작되어, 다음 에포크 동안의 협정 전송 비율을 결정하고, 다음 에포크 동 안의 협정 전송 비율에 따라 패킷을 드롭한다.
RED 방법은 큐 레벨을 기초로 해서 패킷을 폐기할 수 있기 때문에, 스위치(10)를 통과하는 트래픽에 대해 어떤 제어를 가능하게 한다. 그 결과, 큐(20)가 가득 채워지기 전에 패킷을 폐기하는 매커니즘을 전혀 갖지 않는 스위치에 비해 드롭테일(droptail)로 인해 드롭되는 패킷이 줄어들게 된다. 드롭테일은 큐가 가득 채워져 패킷을 드롭해야만 하는 경우에 일어난다. 그 결과, 패킷의 드롭 여부를 결정함에 있어서 그 패킷의 우선 순위를 고려할 기회가 없어진다. 또한, 일부 상황에서, RED 방법은 패킷을 스위치(10)로 전송하는 호스트들간의 동기화를 줄일 수 있다. 그 이유는 큐 레벨이 최대 큐 레벨에 또는 그 근처에 있을 때 모든 패킷을 드롭하기보다는 오히려 협정 전송 비율을 기초로 해서 패킷을 랜덤하게 드롭하기 때문이다. 따라서, 스위치(10)의 성능은 RED 방법을 이용하지 않는 스위치, 즉 단순히 그의 버퍼 자원이 고갈될 때 다음에 도착하는 패킷을 드롭하는 스위치를 능가하게 향상된다.
RED 방법이 스위치(10)의 성능을 향상시키기는 하지만, 여러 상황에서 그 방법이 스위치(10)를 통과하는 트래픽을 적절히 제어할 수 없다는 것을 당업자는 쉽게 이해할 것이다. 큐가 가득 채워지기 전에 패킷 또는 셀이 드롭될 수 있다는 사실에도 불구하고, 호스트들은 일부 상황에서 동기화되려는 경향이 있다. 이것은 특히 스위치(10)에서 트래픽이 중간 또는 더 높은 레벨의 폭주 상태에 있을 때 그러하다. 협정 전송 비율은 큐 레벨을 기초로 한다. 그러나, 큐 레벨은 스위치의 상태를 표시하지 않을 수도 있다. 예컨대, 최소 임계값 이하의 큐 레벨은 스위치(10)에 서의 낮은 트래픽 레벨(그 스위치를 통과하는 패킷수가 적음)에 기인한 것일 수 있다. 그러나, 낮은 큐 레벨은 또한 스위치(10)를 통과하는 트래픽이 많아서 이전 에포크 동안에 패킷이 많이 폐기된 것에 기인한 것일 수도 있다. 이러한 낮은 큐 레벨이 낮은 트래픽 레벨에 기인한 것이라면, 협정 전송 비율을 증가시키는 것이 적절하다. 그러나, 이러한 낮은 큐 레벨이 높은 폐기 비율에 기인한 것이라면, 협정 전송 비율을 증가시키는 것은 바람직하지 않다. RED 방법은 이러한 상황들을 구별하지 못한다. 그 결과, 전송 비율은 증가되어서는 아니될 경우에 증가될 수도 있다. 이러한 일이 일어나면, 큐가 신속히 채워질 것이다. 그 다음에 전송 비율이 감소되어, 큐 레벨이 감소될 것이다. 큐 레벨이 감소되면, 전송 비율이 증가되고, 큐가 다시 채워질 것이다. 이와 같이, 스위치(10)는 큐를 채우는 동작과 큐를 비우는 동작 사이를 왕복하게 된다. 그 결과, 스위치(10)의 평균 사용량이 상당히 감소되고, 그 스위치(10)를 사용하는 네트워크의 성능도 나빠지게 된다.
도 5는 미국 뉴욕주 아몬크에 소재한 IBM사의 피고용인에 의해 최근에 개발된 방법의 흐름도이다. 이 방법은 BLUE로서 알려져 있다. BLUE 방법은 큐 레벨뿐만 아니라 전송 레이트(transmission rate)와 제공 레이트(offered rate)도 고려한다. 제공 레이트는 패킷 또는 셀이 인큐잉 매커니즘에 제공되어 대응하는 큐에 제공되는 레이트이다. RED 방법과 같이, 인큐잉 매커니즘(19)과 큐(20)를 이용하여 BLUE 방법을 설명할 것이다. 단계 52에서, 방금 끝난 에포크 동안의 큐(20)에 대한 큐 레벨과, 인큐잉 매커니즘(19)에 의해 큐(20)에 제공되는 전송 비율과, 제공 레이트가 결정된다. 제공 레이트는 패킷이 인큐잉 매커니즘(19)에 제공되는 레이트이다. 따라서, 제공 레이트는 하나 이상의 포트 A(18)에 의해 제공되는 트래픽 흐름으로부터 유도된다.
다음에, 패킷 손실이 있는지 또는 큐 레벨이 일정한 임계값보다 큰지의 여부가 결정된다(단계 54). 둘 중 어떤 경우든 폐기 비율을 증가시켜야 한다는 것을 나타낸다. 폐기 비율을 증가시켜야 한다면, 폐기 비율을 실험적으로 결정될 수 있는 제1 일정량만큼 증가시킨다(단계 56). 단계 56에서 전송 비율(1 - 폐기 비율)은 감소된다. 단계 54에서 폐기 비율을 증가시켜서는 안된다고 결정되면, 폐기 비율을 감소시켜야 하는지의 여부가 결정된다(단계 58). 큐 레벨이 낮거나 제공 레이트가 낮은 경우에는 폐기 비율을 감소시켜야 한다. 폐기 비율을 감소시켜야 한다면, 폐기 비율을 실험적으로 결정될 수 있는 제2 일정량만큼 감소시킨다(단계 60). 다음에, 변경시에는 단계 56 또는 60에서 결정된 폐기 비율을, 그렇지 않으면 이전 폐기 비율을 이용하여, 다음 에포크 동안에 큐(20)에 전송될 패킷의 비율을 결정한다(단계 62). 단계 62에서 패킷은 랜덤하게 폐기되거나 또는 각 패킷의 우선 순위를 고려하여 폐기될 수 있다. 따라서, 정확한 폐기 비율과 그에 따른 정확한 전송 비율이 유지되는 것이 보장된다. 다음에, 에포크가 끝났는지의 여부가 결정된다(단계 64). 에포크가 끝난 경우에는, 단계 52로 진행된다. 에포크가 끝나지 않은 경우에는, BLUE 방법은 단계 62에서 시작하는 것을 반복한다. BLUE 방법에 대해서 더 상세한 설명을 원한다면, 웹사이트 http://www.eecs.umich.edu/usuchang/blue/ 를 참고할 수 있다.
BLUE 방법이 그 의도한 목적 달성에 있어 매우 성공적이고 RED 방법을 능가하는 개선책이긴 하지만, BLUE 방법은 안정적인 상태에 도달하는 데 비교적 긴 시간을 필요로 할 수 있다는 것을 당업자는 쉽게 이해할 것이다. 따라서, RED 방법을 능가하게 성능이 향상될지라도, 네트워크의 성능은 원하는 것보다 더 못할 수 있다.
Ohsaki H 등의 "Analysis of rate-based congestion control algorithms for ATM networks. part 2: Initial transient state analysis" 페이지 1095-1101에는 허용 셀 레이트가 큐 레벨과 제공 레이트를 기초로 해서 실험적으로 결정된 일정량만큼 조정되는 시스템이 개시되어 있다.
Ohsaki H 등의 "Analysis of rate-based congestion control algorithms for ATM networks. part 2: Initial transient state analysis" 페이지 1095-1101에는 허용 셀 레이트가 큐 레벨과 제공 레이트를 기초로 해서 실험적으로 결정된 일정량만큼 조정되는 시스템이 개시되어 있다.
스위치를 통과하는 트래픽을 제어하는 또 다른 방법은 예컨대 소비자가 지불하는 서비스 요금을 기초로 해서 상이한 서비스들을 소비자들에게 제공한다. 소비자는 더 많은 요금을 지불하더라도, 더 빠른 응답을 보장받거나, 다른 소비자들의 트래픽이 폭주 상태로 인해 드롭되는 경우에도 자신의 트래픽이 전송되는 것을 보장받기를 희망할 수 있다. 따라서, 차별화된 서비스 개념이 발상되었다. 차별화된 서비스들은 상이한 소비자들에게 상이한 레벨의 서비스 또는 네트워크를 통과하는 트래픽 흐름을 제공할 수 있다.
DiffServ는 차별화된 서비스를 제공하기 위해 최근에 채택된 IETF(Internet Engineering Task Force) 표준이다(IETF RFC 2475 및 관련 RFC 참조). DiffServ는 행위 집합 흐름(behaviour aggregate flow)들을 기초로 한다. 행위 집합 흐름은 네트워크의 한쪽 에지에서 네트워크의 다른쪽 에지까지의 파이프라인(pipeline)으로서 간주될 수 있다. 각 행위 집합 흐름 내에는 개개의 호스트들간의 수백개의 세션(session)들이 있을 수 있다. 그러나, DiffServ는 행위 집합 흐름 내의 세션들에는 관심이 없고, 그 대신에 행위 집합 흐름들 사이에서의 대역폭 할당에 관심이 있다. DiffServ에 따라서, 초과 대역폭(excess bandwidth)은 행위 집합 흐름들 사이에서 공정하게 할당되어야 한다. 또한, DiffServ는 각 행위 집합 흐름에 제공되 는 서비스의 레벨을 측정하기 위한 후술되는 기준을 제공한다.
상이한 레벨의 서비스들을 제공하기 위한 어느 한 매커니즘은 가중치(weight)와 큐 레벨의 조합을 이용해서, 상이한 레벨의 서비스들을 제공한다. 도 6은 그러한 방법을 도시하고 있다. 단계 72에서, 큐 레벨 임계값들과 가중치들이 설정된다. 통상적으로, 큐 레벨 임계값들은 네트워크 관리자에 의해 단계 72에서 설정된다. 가중치들은 특정한 큐, 스위치(10) 또는 네트워크 프로세서(1 또는 5)를 통과하는 파이프들 또는 흐름들마다 상이하게 설정될 수 있다. 따라서, 가중치들은 통상적으로 행위 집합 흐름들마다 상이하게 설정된다. 통상적으로 에포크로서 알려진 기간의 끝에서, 순간 큐 레벨들, 평균 큐 레벨들, 순간 파이프 흐름 레이트들 또는 평균 파이프 흐름 레이트들이 관찰된다(단계 74). 다음에, 큐 레벨을 큐 레벨 임계값과 비교한 것과 가중치를 기초로 해서 파이프 흐름들을 변화시킨다(단계 76). 파이프 흐름은 가중치가 높을수록 단계 76에서 더 크게 변화된다. 그러한 파이프에 대한 큐 값 또는 파이프 흐름 레이트는 파이프에 의해 큐, 예컨대 큐(34)에 제공되는 트래픽이 어떤 비율로 대응하는 인큐잉 매커니즘, 예컨대 인큐잉 매커니즘(32)에 의해 큐(34)에 전송될 것인지를 결정한다. 따라서, 그 흐름들을 기초로 해서 트래픽을 큐로 전송하거나 또는 드롭한다(단계 78). 다음에, 네트워크 관리자는 원하는 레벨의 서비스가 이루어지고 있는지의 여부를 결정한다(단계 80). 원하는 레벨의 서비스가 이루어지고 있다면, 네트워크 관리자는 그 태스크를 완료한다. 그러나, 원하는 레벨의 서비스가 이루어지고 있지 않다면, 큐 레벨 또는 파이프 흐름 레벨 임계값은 물론 아마 가중치도 재설정되고(단계 72), 상기 방법이 반복된다.
DiffServ 방법이 본원 명세서에서 기능적으로 설명하고 있지만, 큐 레벨 임계값을 변화시키는 것이 네트워크를 통과하는 특정 파이프 상에 어떤 영향을 미칠지를 결정하기가 매우 어렵다는 것을 당업자는 쉽게 이해할 것이다. 따라서, 상기 방법을 이용하는 네트워크 관리자는 상이한 소비자들 또는 컴퓨터에서의 파이프들(행위 집합 흐름들)이 원하는 흐름 레이트를 달성하기 전에 상당한 실험을 거쳐야 할 수도 있다.
또한, 상기 방법은 서비스 품질을 측정하는 데 통용되는 파라미터에 간접적으로 영향을 미친다. 큐 레벨은 서비스에 대해 통용되는 기준의 직접 측정치가 아니다. 통상적으로, 예컨대 DiffServ(IETF RFC 2475 및 관련 RFC 참조)에 있어서, 서비스 레벨은 네가지 파라미터, 즉 드롭 레이트(drop rate), 대역폭(bandwidth), 레이턴시(latency) 및 지터(jitter)에 의해 측정된다. 드롭 레이트는 스위치를 통하여 흐를 때 드롭되는 트래픽의 비율이다. 행위 집합 흐름의 대역폭은 스위치를 통과해서 목적지에 도달하는 행위 집합 흐름의 트래픽량의 측정치이다. 레이턴시는 네트워크를 통과하는 트래픽을 전송할 때 발생되는 지연이다. 지터는 시간에 따른 레이턴시의 변동이다. 큐 레벨은 서비스 품질의 직접 측정치로서 간주되지 않는다. 따라서, 상기 방법은 서비스 품질에 대한 어떠한 기준도 직접 다루지 않으며, 이것은 네트워크 관리자가 상기 방법을 사용해서 상이한 레벨의 서비스들을 제공하는 것을 더 어렵게 만든다.
RED 방법이나 BLUE 방법을 사용하는 경우에도, 스케줄러, 예컨대 스케줄러(35)는 주어진 시간에 달성할 수 있는 작업량보다 더 많은 작업량을 가질 수도 있다. 특히, 특정 시간에 너무 많은 패킷이 큐(34)로부터 제거될 필요가 있는 경우에는, 스케줄러는 스위치(10)를 통과하는 트래픽을 처리할 수 없을 수도 있다. 예컨대, 스케줄러(35)는 큐(34)로부터 제거되는 패킷이 제1 레이트로 최종 목적지, 예컨대 목표 포트를 향하여 전송되는 것을 보장할 수 있다. 제1 레이트는 다양한 인자, 예컨대 트래픽을 받아들일 수 있는 목표 포트의 능력에 의해 제한될 수 있다. RED 방법과 BLUE 방법은 패킷이 제2 레이트로 큐로부터 제거되는 것을 허용할 수 있다. 제2 레이트가 제1 레이트보다 크다면, 패킷은 스케줄러(35)에 백업되기 시작한다. 예컨대, 스케줄러(35)가 캘린더와 가중 공정 큐잉 링을 포함하고 있다면, 그 캘린더와 가중 공정 큐잉 링 내의 모든 포지션들은 결국 점유될 것이다. 따라서, 패킷은 큐(34)를 떠난 후부터 스케줄러(35)의 캘린더와 가중 공정 큐잉 링 내의 포지션이 개방될 때까지 정체될 것이다. 그 결과, 스위치(10)를 통과하여 이동하는 패킷에 대한 레이턴시가 증가되고, 트래픽이 느려져, 스위치(10)는 원하는 만큼 효율적으로 그 기능을 다하지 못할 것이다.
상기 논의를 염두해 두면, 스위치를 통과하는 트래픽을 더욱더 양호하게 제어할 수 있는 시스템 및 방법이 요구된다는 것을 당업자는 알 수 있을 것이다. 본 발명은 그러한 요구를 해결한다.
본 발명은 컴퓨터 네트워크에서 복수의 패킷 흐름을 제어할 수 있는 방법, 장치 및 컴퓨터로 판독 가능한 매체를 제공한다. 상기 컴퓨터 네트워크는 큐를 포 함한다. 상기 방법 및 장치는 상기 큐에 대한 큐 레벨을 결정하는 것과, 상기 큐에 상기 복수의 패킷이 제공되는 제공 레이트를 결정하는 것을 포함한다. 상기 방법 및 장치는 또한 상기 큐 레벨과 상기 제공 레이트를 기초로 해서 상기 복수의 패킷이 상기 큐로 전송되는 전송 비율을 제어하는 것을 포함하는데, 상기 전송 비율과 상기 큐 레벨은 상기 큐 레벨이 적어도 제1 큐 레벨과 제2 큐 레벨 사이에 존재할 경우 (본원 명세서에서 정의된 바와 같이) 임계 감쇠된다.
본원 명세서에 개시된 상기 방법, 장치 및 컴퓨터로 판독 가능한 매체에 따라, 본 발명은 컴퓨터 네트워크가 안정적일뿐만 아니라 신속히 평형 상태에 도달할 수 있도록, 전송 비율을 제공하고 그에 따라 패킷을 드롭할 수 있는 매커니즘을 제공한다.
도 1은 컴퓨터 네트워크에서 사용되는 스위치의 간략화된 블록도.
도 2는 컴퓨터 네트워크에서 사용되고 어떤 애플리케이션에서 스위치로서 작용할 수 있는 프로그램 가능한 네트워크 프로세서의 간략화된 블록도.
도 3은 컴퓨터 네트워크에서 사용되는 스위치의 다른 간략화된 블록도.
도 4는 스위치를 통과하는 트래픽을 제어하기 위한 RED 방법을 도시한 흐름도.
도 5는 스위치를 통과하는 트래픽을 제어하기 위한 BLUE 방법을 도시한 흐름도.
도 6은 스위치를 통과하는 트래픽을 제어하기 위한 DiffServ 방법을 도시한 흐름도.
도 7은 도 1 내지 도 3의 스위치를 통과하는 트래픽을 제어하기 위한 본 발명에 따른 방법의 일정한 특성을 도시한 간략화된 흐름도.
도 8은 도 7의 방법을 구현한 간략화된 흐름도.
도 9는 본 발명에 따른 다른 방법의 특성을 도시한, 도 7과 유사한 흐름도.
도 10은 도 9의 방법에 사용되는 일정한 방법 단계들의 간략화된 흐름도.
도 11은 도 9의 방법을 구현한 간략화된 흐름도.
도 12는 본 발명에 따른 다른 방법의 특성을 도시한, 도 7 및 도 9와 유사한 흐름도.
도 13은 도 12의 방법을 구현한 간략화된 흐름도.
도 14는 도 12의 방법을 달리 구현한 간략화된 흐름도.
도 15 및 도 16은 이 발명의 방법을 달리 구현한 간략화된 흐름도.
도 17은 도 15 및 도 16의 방법에서 사용되는 일정한 방법 단계들의 간략화된 흐름도.
도 18은 도 15 및 도 16의 방법에서 사용되는 일정한 방법 단계들의 간략화된 흐름도.
도 19는 도 1 내지 도 3의 스위치에 존재한 스케줄러를 도시한 구성도.
도 20은 이 발명에 따른 방법에서 사용되고, 도 19의 스케줄러를 실행하는 일정한 방법 단계들의 흐름도.
도 21은 이 발명에 따른 방법에서 사용되고, 도 19의 스케줄러를 실행하는 일정한 방법 단계들의 흐름도.
본 발명은 컴퓨터 네트워크에서의 트래픽 제어 개선책에 관한 것이다. 다음의 설명은 당업자가 본 발명의 다양한 실시예를 구현하고 실시할 수 있도록 제공되며, 특허 출원서 및 그 요건을 배경으로 해서 제공된다. 바람직한 실시예에 대한 다양한 변형예가 가능하다는 것은 당업자에게 명백할 것이고, 일반적인 원리가 본원 명세서에서 다른 실시예들에 적용될 수 있다. 따라서, 본 발명은 기재된 실시예들로 제한되지 않으며, 본원 명세서에 기재된 원리 및 특징과 일관된 가장 넓은 범위를 허용한다.
컴퓨터 네트워크에서 사용되는 스위치는 일반적으로 큐를 포함하는데, 그 큐는 동일한 메모리 자원의 논리적 큐 부분이거나 또는 별도의 메모리 자원일 수 있으며, 그 큐에는 패킷 또는 그 패킷을 더 작은 크기로 나눈 단편, 즉 셀이 일시적으로 배치된다. 또한, 패킷을 큐에 배치하는 인큐잉 매커니즘은 스위치를 통과하는 트래픽을 제어하여 네트워크 동작을 향상시키기 위해서 패킷을 폐기하기 위한 매커니즘을 포함할 수 있다. 예컨대, 도 4의 방법에서 전술된 RED는 큐 레벨을 기초로 해서 일정한 패킷을 폐기한다. RED가 일정한 상황에서 그 역할을 다할지라도, 많은 네트워크에서 RED는 네트워크 성능을 향상시키지 못한다. 예컨대, 스위치가 중간 또는 높은 트래픽량을 가진 네트워크는 왕복 현상의 영향을 받을 것이다. 따라서, 그러한 네트워크는 설계된 용량에 비해 매우 적은 트래픽량만을 전송할 수도 있다.
본 발명은 컴퓨터 네트워크에서 복수의 패킷 흐름을 제어할 수 있는 방법, 장치 및 명령어 기록 매체를 제공한다. 상기 컴퓨터 네트워크는 큐를 포함한다. 상기 방법, 장치 및 매체는 상기 큐에 대한 큐 레벨을 결정하는 것과, 상기 큐에 상기 복수의 패킷이 제공되는 제공 레이트를 결정하는 것을 포함한다. 상기 방법, 장치 및 매체는 또한 상기 복수의 패킷이 상기 큐로 전송되는 전송 비율을 제어하는 것을 포함한다. 상기 전송 비율은 상기 큐 레벨과 상기 제공 레이트를 기초로 해서 제어되며, 상기 전송 비율과 상기 큐 레벨은 상기 큐 레벨이 적어도 제1 큐 레벨과 제2 큐 레벨 사이에 존재할 경우 임계 감쇠된다.
본 발명은 특정 시스템 및 특정 구성 요소에 관하여 설명될 것이다. 그러나, 이들 방법 및 시스템은 컴퓨터 네트워크 내의 다른 구성 요소들에 대해서도 유효하게 작용한다는 것을 당업자는 쉽게 인지할 것이다. 본 발명은 또한 큐를 문맥으로 해서 설명될 것이다. 그러나, 본 발명은 큐가 단일 메모리 자원 내의 논리적 큐이거나 별도의 메모리 자원들의 일부분일 때 유효하게 작용한다는 것을 당업자는 쉽게 인지할 것이다. 본 발명은 또한 그 시스템의 임계 감쇠를 문맥으로 해서 설명된다. 그러나, 본 발명은 일반적으로 에포크들에 걸쳐서 작용한다는 것을 당업자는 쉽게 인지할 것이다. 따라서, 제공된 임계 감쇠는 매번 동작하는 순간에서의 순간 임계 감쇠이어서는 안된다. 본 발명은 또한 특정 동작을 수행하기 전 또는 후에 사용되는 패킷과 큐에 관하여 논의될 것이다. 그러나, 상기 방법 및 시스템은 셀과 같은 다른 트래픽 단편, 다른 큐 그리고 다른 동작을 수행하기 전 또는 후에 대해서도 유효하게 작용한다는 것을 당업자는 쉽게 이해할 것이다. 본 발명은 또한 패킷을 사전에 폐기함으로써 네트워크 흐름을 제어하는 것에 관하여 논의될 것이다. 그러나, 상기 방법 및 시스템이 큐에 도착되는 패킷의 레이트를 제어한다는 것과, 소스에 전송되어 전송될 패킷(다른 것들은 그 소스에 유지됨)의 비율을 규정하는 신호가 유효하다는 것을 당업자는 쉽게 이해할 것이다. 그러므로, 전송 비율의 제어는 패킷이 예컨대 하나 이상의 소스에 의해 제공되는 레이트를 제어하는 것과 유사하다.
본 발명에 따른 방법 및 시스템을 더 구체적으로 설명하기 위해서, 본 발명에 따른 방법(90)의 일실시예를 도시한 도 7을 이하 참조할 것이다. 방법(90)은 도 1에 도시된 스위치(10)와 함께 사용될 수 있다. 명확한 설명을 위해서, 도 3에 도시된 큐(20) 및 인큐잉 매커니즘(19)과 함께 방법(90)을 설명할 것이다. 그러나, 방법(90)은 다른 큐, 예컨대 큐(24, 28, 34)와 함께 사용될 수 있다. 방법(90)은 또한 다른 인큐잉 매커니즘, 예컨대 인큐잉 매커니즘(23, 27, 32)과 함께 사용될 수 있다. 바람직한 실시예에 있어서, 방법(90)은 다중 큐들이 동일한 메모리 자원의 일부분인 시스템에서 사용된다. 그러나, 방법(90)은 각 큐가 별도의 메모리 자원을 갖는 또 다른 시스템에서 사용될 수도 있다.
도 7을 참조하면, 단계 92에서, 이전 에포크 동안의 큐 레벨과 제공 레이트를 결정한다. 바람직한 실시예에 있어서, 큐 레벨은 이전 에포크의 끝에서 결정되며, 그것은 메모리 자원의 레벨이다. 또한, 바람직한 실시예에 있어서, 단계 92에서 결정된 제공 레이트는 이전 에포크 동안에 메모리 자원에 제공된 전체 입력이다. 바람직한 실시예에 있어서, 이전 에포크 동안의 전송 비율 또한 단계 92에서 결정된다. 다른 실시예에 있어서, 방법(90)에서 큐 레벨을 결정하는 것은 인큐잉 매커니즘(19)에 대응하는 큐(20)의 레벨을 결정하는 것을 포함한다. 또한, 바람직한 실시예에 있어서, 전송 비율은 한 에포크에 걸쳐서 일정하고, 따라서 이전 에포크 동안의 어느 때에나 결정될 수 있지만, 방법(90)을 사용해서 이전 에포크가 시작할 때 결정되는 것이 바람직하다.
다음에, 단계 94에서, 전송 비율과 큐 레벨이 큐 레벨의 범위에 걸쳐서 임계 감쇠되도록 전송 비율을 제어한다. 전송 비율은 큐 레벨과 입력 비율을 기초로 해서 제어된다. 바람직한 실시예에 있어서, 단계 94에서는 임계 감쇠를 위한 바람직한 전송 비율을 제공하기 위해서 이전 에포크 이후의 전송 비율의 변화를 계산하고, 그 전송 비율의 변화를 이전 에포크 동안의 전송 비율에 부가한다. 그렇게 전송 비율이 제어되는 큐 레벨의 범위는 모든 가능한 큐 레벨까지 확장될 수 있다. 그러나, 바람직한 실시예에 있어서, 전송 비율이 임계 감쇠하도록 제어되는 범위는 0보다 크거나 같은 최소 큐 레벨과 최대 가능한 큐 레벨보다 작거나 같은 최대 큐 레벨 사이이다. 다음에, 단계 96에서, 전송 비율을 사용하여 스위치 기능이 유지되도록 패킷을 폐기한다. 전송 비율은 1에서 폐기 비율을 뺀 것(1 - 폐기 비율)과 같기 때문에 적절한 비율의 패킷을 폐기하는 데 사용될 수 있다. 전술한 바와 같이, 폐기 비율은 폐기될 패킷의 비율이다. 일 실시예에 있어서, 패킷은 랜덤하게 폐기된다. 그러나, 다른 실시예에 있어서, 패킷은 부분적으로 그 패킷의 우선 순위를 기초로 해서 폐기된다. 또한, 바람직한 실시예에 있어서, 단계 96에서의 패킷 폐기는 또한 그 패킷을 전송한 호스트에게 그 패킷이 폐기됐음을 알리는 통지를 제공한다. 그 결과, 그 호스트는 스위치(10)로의 트래픽을 일시 중지시킬 수 있다.
전술한 바와 같이, 단계 94에서 전송 비율이 제어되어, 전송 비율과 큐 레벨에 의해 기술되는 시스템에 임계 감쇠를 제공한다. 이것은 큐(20)와 그에 따른 스위치(10)를 통과하는 트래픽이 신속히 안정 상태에 도달할 수 있도록 해준다. 임계 감쇠가 제공되기 때문에, 큐(20)를 통과하는 트래픽은 큐 레벨과 전송 비율에 의해 기술되는 바와 같이, 최단 시간에 안정 상태에 도달될 것이다. 임계 감쇠에 요구되는 전송 비율과, 전송 비율과 큐 레벨간의 관계는 이하 다양한 이론들에 의해 설명될 수 있다.
큐 레벨과 폐기 레이트는 큐(20)의 상태를 설명하는 변수들로서 간주될 수 있다. 큐 레벨이 증가될 경우, 폐기 레이트는 큐(20)가 가득 채워지지 않도록 증가될 것이다. 그러나, 폐기 레이트가 증가되면, 큐 레벨은 감소될 것이다. 따라서, 큐는 큐 레벨과 폐기 레이트간에 포지티브-네거티브 피드백 루프 또는 관계를 갖는 것으로서 간주될 수 있다. 이러한 관계는 종래의 시스템에서의 왕복 현상을 초래할 수 있는 것이다. 본 발명은 폐기 레이트가 트래픽을 제어하기 위한 종래의 방법, 예컨대 RED에서만큼 큐 레벨을 급속히 변화시키지 않도록 폐기 레이트에 마찰을 부가하는 것으로서 간주될 수 있다. 그 결과, 왕복 현상이 감쇠 또는 방지될 수 있다.
본 발명은 또한 안정성 이론에 의해 설명될 수 있다. 그러나, 간단함을 위해서 폐기 레이트보다는 전송 레이트가 사용된다. 큐 레벨은 전송 레이트, 제공 레이트 및 출력 레이트를 가지고 설명될 수 있다. 출력 레이트는 아이템들이 큐 또는 메모리 자원 밖으로 송출되는 레이트이다. 시간에 대한 큐 레벨의 변화는 (전송 레 이트 ×제공 레이트 - 출력 레이트)로서 주어진다. 따라서, 시간에 대한 큐 레벨의 변화는 아이템들이 큐에 입력되는 레이트에서 아이템들이 큐로부터 출력되는 레이트를 뺀 것과 같다. 이것은 다음과 같이 설명될 수 있다:
dQ(t)/dt = I(t)*T(t) - O(t)
여기서,
Q(t) = 큐 레벨
I(t) = 아이템들(예컨대 패킷들)이 인큐잉 매커니즘에 제공되는 레이트
T(t) = 전송 비율
= 예) 인큐잉 매커니즘에 제공된 아이템들이 큐에 전송되는 비율
O(t) = 아이템들이 큐로부터 출력되는 레이트
또한, 주목할 점은 다음과 같다:
D(t) = 1 - T(t)
여기서,
D(t) = 폐기 비율
또한, 주목할 점은 Q(t), I(t) 및 O(t)는 본질적으로 음이 아니고, T(t)는 범위 [0, 1] 내의 값을 갖는다는 것이다.
시간에 대한 큐 레벨의 변화율과 시간에 대한 전송 비율의 변화율간의 관계는 큐(20)의 특성에 의해 설정된다. 유사하게, 폐기 비율과 전송 비율간의 관계는 그들의 특성에 의해 설정된다. 그러나, 전송 비율은 가상적으로 원하는 어떤 수일 수 있다. 또한, 전송 비율은 원하는 바와 같이 변화될 수 있다. 따라서, 전송 비율 은 임계 감쇠가 제공되는 것을 보장하도록 설정될 수 있다. 바람직한 실시예에 있어서, 전송 비율은 다음과 같이 주어진다:
dT(t)/dt = K(t)*(β - αT(t) - Q/Qmax)
여기서,
K(t) = 시간에 종속될 수 있는 수
α = 상수
β = 상수
Qmax = 최대 가능한 큐 레벨
전송 비율에 부과되는 물리적인 제약이 없기 때문에, 전송 비율은 0과 1 사이에 존재하고, 임의로 선택될 수 있다.
전술한 바와 같이, 전송 비율의 목적은 임계 감쇠를 제공하여, 시스템이 가능한 한 신속히 안정 상태에 도달할 수 있도록 해주는 것이다. 임계 감쇠에 대한 설명의 편의상, 제공 레이트 I(t)와 출력 레이트 O(t)는 평형 상태, 즉 안정 상태에서 일정하다고 가정할 것이다. 그러나, 그러한 분석은, 일반적으로 네트워크에서 유효한 것처럼, 심지어 I(t)와 O(t)가 계속 변화되는 경우에도 여전히 유효하다.
평형 상태에서, 시간에 대한 큐 레벨의 변화율과 시간에 대한 전송 비율의 변화율은 출력 레이트와 제공 레이트가 일정하다면 0이 되어야 한다. 환언하면, 평형 상태에서,
0 = I(t)*T(t) - O(t)
0 = K(t)*(β - αT(t) - Q/Qmax)
I(t) = I
= 일정
O(t) = 0
= 일정
결론적으로, 평형 상태에서,
T = O/I
α*T = β - Q/Qmax
또한, 명확한 설명을 위해서, 최소한 Q/Qmax는 상수, 예컨대 0.25라고 가정하자. 안정 상태 영역에서 허용되는 I/O의 최대비는 1.6으로 결정된다; 이 I/O비에서, Q는 Qmax에 도달하고 T = 5/8이다. 또한, Q가 Qmax/4보다 작거나 같을 때 T는 1과 같아야 하는 것으로 결정된다. 따라서, 이러한 두가지 최종 평형 상태에서,
0 = β - α*5/8 - 1 및
0 = β - α - 1/4
이러한 가정들로부터, α와 β의 수치는 각각 2와 2.25로 결정될 수 있다. Q/Qmax와 I/O에 대한 허용 오차가 달라지면 α와 β의 수치가 달라질 수 있다는 것을 주목해야 한다. 따라서, α와 β는 평형 상태 조건들과 스위치(10) 동작에 요구되는 범위에 관한 몇가지 가정들을 기초로 해서 결정될 수 있다.
안정 상태의 경우, 큐 레벨 및 전송 비율 시스템에 대한 선형 근사 행렬은 편도함수를 취함으로써 결정될 수 있다. 따라서, 그 시스템을 기술하는 행렬은 다음과 같다:
그 행렬의 고유치들은 음의 실수 부분을 갖는다. 따라서, 큐 레벨과 전송 비율에 의해 기술되는 시스템에 대한 궤도(trajectory)는 안정적이다. 즉, 스위치를 통과하는 트래픽은 레벨의 범위에 걸쳐서 안정적으로 제어될 수 있다. 또한, 그 고유치들은 정확하게 K(t) = I/Qmax일 때, 즉 임계 감쇠를 위한 조건일 때 동일하다. 미분 방정식 이론으로터, 그 시스템에 대한 행렬의 대각합의 제곱이 그 행렬식에 4를 곱한 것과 같을 때 임계 감쇠가 제공된다. 환언하면:
α 2* K 2(t) = 4*K(t)*I/Qmax 또는
K(t) = 4*I/(Qmax* α 2)
= I(t)/Qmax (상기 가정들 하에서)
따라서, K(t), α 및 β는 전송 비율이 시스템 동작에 요구되는 값들에서 임계 감쇠를 제공할 수 있도록 선택될 수 있다. 상기 등식들을 사용하면, 임계 감쇠 제공에 요구되는 전송 비율을 스위치(10)에 제공할 수 있다. 예컨대, Q/Qmax와 I/O에 대한 상기 가정들을 사용하면, 전송 비율과 큐 레벨에 의해 기술되는 시스템은 다음과 같다:
Q(t + Dt) = Q(t) + [I(t)*T(t) - O(t)]*Dt
T(t + Dt) = T(t) + (I(t)*Dt/Qmax)*(2.25 - 2*T(t) - Q(t)/Qmax)
여기서,
D(t) = Q와 T 계산 사이의 시간 간격
= 에포크 시간
Q(t)/Qmax는 0.25보다 크거나 같음
I(t)/O(t)는 1.6보다 작거나 같음
Q(t), I(t) 및 O(t)에 대한 상기 조건들이 위반되는 상황들을 고려하기 위해서, 전송 비율을 큐 레벨을 기초로 해서 변화시킬 수 있다. 예컨대, 전송 비율은 Q/Qmax가 0.25보다 작을 때 1로 될 수 있다. 유사하게, I(t)/O(t)가 1.6보다 클 경우에는, 큐는 원하는 것보다 더 빠르게 채워지기 시작할 것이다. 결론적으로, 전송 비율은 큐가 최대값 레벨에 또는 그 근처에 도달할 때 0 또는 어떤 작은 값으로 설정될 수 있다.
전술한 바와 같이, 상기 분석이 제공 레이트 I(t)와 출력 레이트 O(t)가 평형 상태에서 일정하다는 가정하에서 설명되었지만, 그 임계 감쇠에 대한 분석은 I(t)와 O(t)가 평형 상태에서 일정하지 않은 때에도 유효하다. 따라서, 임계 감쇠는 여전히 제공되어, 전송 비율이 큐 레벨과 그에 따른 제공 레이트 및 출력 레이 트의 변화에 신속히 적응할 수 있도록 해준다.
본 발명에 따른 방법 및 시스템을 더 명확히 설명하기 위해서, 스위치를 통과하는 트래픽을 제어하기 위한 방법(100)의 더 상세한 실시예를 도시한 도 8을 참조할 것이다. 명확한 설명을 위해서, 스위치(10)의 인큐잉 매커니즘(19)과 큐(20)를 사용하여 방법(100)을 설명할 것이다. 이와 같이, 인큐잉 매커니즘(19)은 방법(100)을 수행한다. 그러나, 방법(100)은 또 다른 인큐잉 매커니즘에 의해 사용될 수도 있다. 또한, 인큐잉 매커니즘(19)에 대한 큐 레벨과 제공 레이트에 관하여 언급하였지만, 결정되는 큐 레벨은 전체 메모리 자원에 대한 것일 수 있고, 제공 레이트 또한 그 전체 메모리 자원에 대한 것일 수 있다.
단계 102에서, 이전 에포크 동안의 큐 레벨과 제공 레이트를 결정한다. 큐 레벨은 그 에포크의 끝에서 최소 큐 레벨 Qmin과 최대 큐 레벨 Qmax에 따라 결정되는 것이 바람직하다. 이전 에포크 동안의 전송 비율은 또한 단계 102에서 얻을 수 있다. 일반적으로, 전송 비율은 방법(100)에 의해 결정되고 따라서 쉽게 얻을 수 있다. 그러나, 전송 비율은 아직 얻을 수 없더라도 결정될 수 있다.
다음에, 단계 104에서, 큐 레벨이 Qmin 이상인지의 여부를 결정한다. 큐 레벨이 Qmin 이상이 아니라면, 단계 106에서, 전송 비율은 1로 설정된다. 따라서, 단계 106은 큐 레벨이 충분히 낮을 때 모든 패킷이 인큐잉 매커니즘(19)에 의해 큐(20)로 전송되는 것을 보장한다. 단계 104에서 큐 레벨이 Qmin 이상이라고 결정되면, 단 계 108에서, 큐 레벨이 Qmax 이상인지의 여부를 결정한다. 큐 레벨이 Qmax 이상이라면, 단계 110에서, 전송 비율은 0으로 설정된다. 따라서, 단계 110은 큐 레벨이 매우 높을 때 모든 패킷이 폐기되는 것을 보장한다.
큐 레벨이 Qmin 이하도 Qmax 이상도 아니면, 단계 112에서, 전송 비율은 임계 감쇠하도록 제어된다. 바람직한 실시예에 있어서, 전송 비율은 전술한 등식들에 의해 설정된다. 따라서, 전송 비율은 이전 에포크로부터의 큐 레벨, 제공 레이트 및 전송 비율은 물론 그 에포크의 길이를 기초로 해서 임계 감쇠하도록 설정된다. 단계 114에서, 인큐잉 매커니즘(19)은 단계 106, 110 또는 112에서 설정된 전송 비율을 이용해서 패킷을 전송 또는 폐기함으로써, 큐(20)에 제공되는 패킷의 비율이 그 전송 비율과 같아지게 된다. 패킷은 바람직하게는 랜덤하게 폐기되는데, 이것은 도 4에 관하여 전술한 종래의 RED에서 사용되는 것과 유사한 방식으로 행해진다. 그러나, 도 8로 되돌아와서, 패킷은 또한 그 패킷의 우선 순위를 기초로 해서 폐기될 수 있다. 또한, 그 폐기된 패킷을 전송한 호스트에게 그 패킷이 폐기됐음을 알리는 통지를 제공하여, 그 호스트가 스위치로의 트래픽을 일시적으로 중지시킬 수 있도록 하는 것이 바람직하다. 다음에, 단계 116에서, 현재의 에포크가 완료됐는지의 여부를 결정한다. 이것은 전송 비율의 계산이 완료된 때부터 특정 시간이 경과했는지의 여부를 결정함으로써 달성될 수 있다. 그 에포크가 완료되지 않은 경우에는, 단계 114가 계속된다. 그 에포크가 완료된 경우에는, 단계 102로 되돌아간다.
이와 같이, 전송 비율은 방법(90) 또는 방법(100)에 의해 임계 감쇠하도록 설정될 수 있다. 임계 감쇠는 큐 레벨의 희망 범위 내에서만 일어나는 것이 바람직하다. 이러한 범위를 넘으면, 임계 감쇠 계산에 있어서 전송 비율은 큐 레벨이 너무 높거나 또는 너무 낮다는 결정에 따라 0 또는 1로 설정된다. 패킷이 랜덤하게 또는 적어도 일부분 그 패킷의 우선 순위를 기초로 해서 폐기될 수 있기 때문에, 트래픽을 스위치(10)로 전송하는 호스트들의 동기화를 방지할 수 있다. 방법(90, 100)은 임계 감쇠를 제공하므로, RED 방법에 비해 더 안정적인 시스템을 제공할 수 있다. 방법(90, 100)은 또한 임계 감쇠를 제공하므로, BLUE 방법에 비해 더 빠르게 평형 상태에 도달한다. 결론적으로, 방법(90) 또는 방법(100)을 이용하는 스위치(10)를 사용한 네트워크의 성능은 향상된다.
방법(90) 또는 방법(100)에 의한 성능 향상은 실험적으로 알 수 있다. 병목 링크가 존재하는 네트워크를 설계하였다. 게다가, 네트워크는 대략 30 퍼센트의 오버서브스크립션(oversubscription)이 달성되도록 충분한 트래픽을 가지고 있었다. 따라서, 대략 30 퍼센트의 트래픽을 폐기하도록 네트워크를 계획적으로 관리하였다. 실험 중에, RED 방법은 드롭테일(최대 큐 레벨로 인해, 다음 패킷을 드롭해야 함)에 의해 대략 2천 프레임 또는 패킷을 폐기하였다. 이전에 논의한 바와 같이, 드롭테일에 의한 프레임 폐기는 큐가 가득 채워져 있다는 이유만으로 프레임이 폐기될 때 일어난다. 드롭테일에 의한 폐기는 큐가 가득 채워져 있을 때 프레임이 폐기되기 때문에 바람직하지 않다. 드롭테일에 의한 패킷 폐기는 네트워크를 불안정하게 하며, 패킷의 우선 순위에 따라 이루어지지 않는다.
동일한 실험에 있어서, 본 발명은 드롭테일에 의해 프레임을 폐기하지 않았 다. 따라서, 본 발명은 폐기 수행 여부를 결정함에 있어서 패킷의 우선 순위를 고려하였다. 더욱이, 본 발명에 의해 전송된 총프레임수는 RED 방법에 의한 것보다 더 많았다. 결론적으로, 방법(90, 100)은 높은 오버서브스크립션이 있는 네트워크일지라도 트래픽을 보다 효율적으로 관리할 수 있다. 여기에 개시된 실시예에 있어서, 본 발명은 오버서브스크립션이 적어도 50 퍼센트에 이르기까지 잘 작동한다. 전술한 바와 같이, 방법(90, 100)은 임계 감쇠가 제공되기 때문에, BLUE 방법보다 더 신속히 평형 상태에 도달할 것이다.
도 9에 도시된 본 발명의 또 다른 실시예(120)에 있어서, 단계 122에서, 이전 에포크 동안의 큐 레벨과 제공 레이트가 결정된다. 바람직한 실시예에 있어서, 큐 레벨은 이전 에포크의 끝에서 때 결정되며, 그것은 메모리 자원의 레벨이다. 또한, 바람직한 실시예에 있어서, 단계 122에서 결정된 제공 레이트는 이전 에포크 동안에 메모리 자원에 제공된 전체 입력이다. 바람직한 실시예에 있어서, 이전 에포크 동안의 전송 비율 또한 단계 122에서 결정된다. 다른 실시예에 있어서, 방법(120)에서 큐 레벨을 결정하는 것은 인큐잉 매커니즘(19)에 대응하는 큐(20)의 레벨을 결정하는 것을 포함한다. 또한, 바람직한 실시예에 있어서, 전송 비율은 한 에포크에 걸쳐서 일정하고, 따라서 이전 에포크 동안의 어느 때에나 결정될 수 있지만, 이전 에포크가 시작할 때 결정되는 것이 바람직하다.
다음에, 단계 124에서, 큐(20)에 대한 가상 최대 큐 레벨이 이전 에포크로부터의 큐 레벨을 이용해서 결정된다. 가상 최대 큐 레벨은 스위치(10)가 폭주 상태에 있다고 결정되면, 감소된다. 가상 최대 큐 레벨은 스위치(10)가 폭주 상태에 있 지 않다고 결정되면, 최대값(최대 큐 레벨보다 작거나 같을 수 있음)까지 증가된다. 바람직하게는, 이것은 큐 레벨이 임계값(가능한 최대 큐 레벨보다 작음) 이상이라고 결정함으로써 달성된다. 환언하면, 큐(20)가 가득 채워지기 전에 스위치(10)가 폭주 상태에 있다고 결정된다. 전송 비율을 결정함에 있어서 가상 최대 큐 레벨이 사용되기 때문에, 큐(20)로서 사용될 수 있는 메모리 자원이 그 메모리 자원의 실제 크기보다 작은 것처럼 전송 비율이 계산될 수 있다. 따라서, 높은 폭주 상태 동안에, 전송 비율은 그렇지 않을 때의 전송 비율보다 작게 설정될 수 있다. 결론적으로, 스위치(10)는 높은 트래픽의 상황에 잘 대처할 수 있다.
다음에, 단계 126에서, 큐 레벨, 제공 레이트 및 가상 최대 큐 레벨을 기초로 해서 전송 비율이 제어된다. 바람직한 실시예에 있어서, 전송 비율은 또한 전송 비율과 큐 레벨에 의해 기술되는 시스템이 가상 최대 큐 레벨이 결정된 후에 임계 감쇠되도록 제어된다. 바람직한 실시예에 있어서, 전송 비율은 또한 이전 전송 비율을 기초로 해서 제어된다. 그렇게 전송 비율이 제어되는 큐 레벨의 범위는 모든 가능한 큐 레벨까지 확장될 수 있다. 그러나, 바람직한 실시예에 있어서, 전송 비율이 임계 감쇠하도록 제어되는 범위는 0보다 크거나 같은 최소 큐 레벨과 최대 가능한 큐 레벨보다 작거나 같은 최대 큐 레벨 사이이다. 전송 비율은 또한 큐 레벨이 가상 최대 큐 레벨을 초과하지 않도록 제어되는 것이 바람직하다. 다음에, 단계 128에서, 전송 비율을 사용하여 스위치 기능이 유지되도록 패킷을 폐기한다. 전송 비율은 1에서 폐기 비율을 뺀 것(1 - 폐기 비율)과 같기 때문에 적절한 비율의 패킷을 폐기하는 데 사용될 수 있다. 전술한 바와 같이, 폐기 비율은 폐기될 패킷의 비율이다. 일 실시예에 있어서, 패킷은 랜덤하게 폐기된다. 그러나, 또 다른 실시예에 있어서, 패킷은 부분적으로 그 패킷의 우선 순위를 기초로 해서 폐기된다. 또한, 바람직한 실시예에 있어서, 단계 128에서의 패킷 폐기는 또한 그 패킷을 전송한 호스트에게 그 패킷이 폐기됐음을 알리는 통지를 제공한다. 그 결과, 그 호스트는 스위치(10)로의 트래픽을 일시 중지시킬 수 있다.
도 10은 도 9의 방법(120)의 단계 124에서 가상 최대 큐 레벨을 결정하기 위한 방법(130)의 바람직한 실시예를 도시한 흐름도이다. 바람직한 실시예에 있어서, 가상 최대 큐 레벨을 갱신하기 위한 방법(130)은 방법(120)의 단계 126에서 전송 비율을 갱신하는 것과 동시에 수행된다. 도 10을 참조하면, 단계 132에서, 큐 레벨이 임계값보다 크거나 같은지의 여부가 결정된다. 임계값은 바람직하게는 최대 큐 레벨의 분율이다. 그 분율은 0과 1 사이의 값을 갖지만, 바람직하게는 1/2과 31/32 사이이다. 바람직하게는, 임계값은 최대 가능한 큐 레벨의 31/32이다. 그러나, 최대 가능한 큐 레벨의 다른 분율로서 127/148, 7/8, 3/4 및 1/2가 사용될 수 있다. 그러나, 큐 레벨은 처리량이 감소되더라도 최대 가능한 큐 레벨 이하로 남아 있을 수 있다는 것을 주목해야 한다. 큐 레벨이 임계값보다 크거나 같다면, 단계 134에서, 승수(multiplier)가 설정된다. 단계 134에서, 승수는 다음의 함수에 따라 설정되는 것이 바람직하다:
M(t + Dt) = minimum{ 1, a*M(t) + b }
여기서,
M(t) = 이전 에포크 동안에 계산된 승수
a = 1보다 작은 양의 상수로서, 바람직하게는 31/32
b = (1 - a)보다 크거나 같고 1보다 작은 양의 상수로서, 바람직하게는 1/4
따라서, 바람직한 실시예에 있어서, 큐 레벨이 임계값을 초과한다고 단계 132에서 반복적으로 결정되면 승수는 제1 수, 바람직한 실시예에서는 1에 근사된다.
큐 레벨이 임계값보다 작다면, 단계 136에서, 승수가 설정된다. 단계 136에서, 승수는 다음의 함수에 따라 설정되는 것이 바람직하다:
M(t + Dt) = c M(t) + d
여기서,
M(t) = 이전 에포크 동안에 계산된 승수
c = 1보다 작은 양의 상수로서, 바람직하게는 31/32
d = (1 - c)보다 작거나 같은 양의 상수로서, 바람직하게는 1/64
따라서, 바람직한 실시예에 있어서, 큐 레벨이 임계값 이하라고 단계 132에서 반복적으로 결정되면 승수는 제2 수, 즉 1/2에 근사된다.
이와 같이, 단계 134 및 136은 이전 승수의 지수 가중 평균(exponentially weighed average)으로서 상한이 1인 승수를 결정한다. 또한, 폭주 상태가 반복되는 경우, 큐 레벨이 반복적으로 임계값보다 높을 때, 승수는 제1 값, 바람직하게는 1에 지수적으로 근사될 것이다. 폭주 상태가 반복적으로 해제되는 경우, 큐 레벨이 반복적으로 임계값보다 낮을 때, 승수는 제2 값, 바람직하게는 1/2에 지수적으로 근사될 것이다.
가상 버퍼 용량 또는 가상 최대 큐 레벨은 다음과 같이 정의된다. 폭주 상태가 반복적으로 해제되는 경우, 큐 레벨이 반복적으로 임계값 이하일 때, 가상 버퍼 용량은 Qmax로 표시되는 물리적 버퍼 용량과 동일하다. 폭주 상태가 반복되는 경우, 큐 레벨이 반복적으로 임계값 이상일 때, 가상 버퍼 용량은 물리적 버퍼 용량의 1/2, 즉 Qmax/2이다. 폭주 상태가 반복되는 경우, 1/2과 다른 몇가지 분율 또한 가상 버퍼 용량을 정의하기에 충분하다는 것을 당업자는 인식할 것이다.
전술한 몇가지 흐름 제어 알고리즘에 있어서, 버퍼에 인큐잉되는 데이터량은 최대 버퍼 용량 Qmax의 분율로서 표현된다. 따라서, Qmax는 일부 표현식, 예컨대 큐 레벨 Q(t)를 Qmax로 나눈 것, 즉 Q/Qmax에서 분모로 표시된다. 그러므로 바람직한 가상 버퍼 용량의 정의는 2*M*Q/Qmax의 사용과 동일하다. 즉, 폭주 상태가 반복적으로 해제되는 경우, M이 1/2 또는 대략 1/2일 때, 표현식 2*M*Q/Qmax는 간단히 Q/Qmax이다. 폭주 상태가 반복적으로 일어나는 경우, M이 1 또는 대략 1일 때, 표현식 2*M*Q/Qmax는 간단히 2*Q/Qmax, 또는 Q/(Qmax/2)이다. 따라서, 큐 점유 비율 Q/Qmax에 2배의 승수 M을 곱하는 것은 Q를 가상 버퍼 용량, 또는 가상 최대 큐 레벨과 비교한다는 의미를 갖는다.
다중 스위치 모델을 갖는 시뮬레이션에서, 승수 M의 정의 및 사용은 심각한 폭주 상태, 즉 최대 8 대 1의 폭주 상태의 경우에 폐기 비율의 계산을 안정시키는 것으로 증명되고 있다. 인입 소스(incoming source)가 수개이고 인출 싱크(outgoing sink)가 하나인 트래픽의 경우 스위치 동작에서 잠시 그러한 폭주 상태가 발생될 수도 있다.
도 11은 네트워크에서 트래픽을 제어하기 위한 본 발명에 따른 방법(140)의 더 상세한 흐름도이다. 방법(140)은 도 1과 도 3에 도시된 스위치(10)와 함께 사용될 수 있다. 명확한 설명을 위해서, 도 3에 도시된 인큐잉 매커니즘(19)과 큐(20)를 사용하여 방법(140)을 설명할 것이다. 그러나, 방법(140)은 다른 큐 및 다른 인큐잉 매커니즘과 함께 사용될 수 있다. 바람직한 실시예에 있어서, 방법(140)은 다중 큐들이 동일한 메모리 자원의 일부분인 시스템에서 사용된다. 그러나, 방법(140)은 각 큐가 별도의 메모리 자원을 갖는 또 다른 시스템에서 사용될 수도 있다.
단계 142에서, 이전 에포크 동안의 큐 레벨과 제공 레이트를 결정한다. 또한 바람직하게는 이전 에포크 동안의 전송 비율과 승수를 단계 142에서 얻을 수 있는데, 그 이유는 이러한 것들이 바람직하게는 이전 에포크 동안에 계산되기 때문이다. 그러나, 이전 에포크 동안의 전송 비율과 승수를 얻을 수 없다면, 이러한 것들은 바람직하게는 단계 142에서 결정된다. 다음에, 단계 144에서, 큐 레벨이 최소 임계값보다 크거나 같은지의 여부를 결정한다. 바람직한 실시예에 있어서, 최소 임계값은 최대 큐 레벨의 1/4이다. 큐 레벨이 최소 임계값보다 작다면, 단계 146에서, 전송 비율은 1로 설정된다.
단계 144에서 큐 레벨이 최소 임계값보다 크거나 같다고 결정되면, 단계 148에서, 큐 레벨이 최대 임계값 이상인지의 여부를 결정한다. 바람직한 실시예에 있어서, 단계 148은 큐 레벨이 가상 최대 큐 레벨을 초과하는지의 여부를 결정하는 것을 포함한다.
큐 레벨이 최대 임계값 이상이라고 결정되면, 단계 150에서, 전송 비율은 0또는 대략 0으로 설정된다. 그러나, 큐 레벨이 최대 임계값 이상이 아니라고 결정되면, 단계 152에서, 이전 에포크 동안의 승수, 큐 레벨, 이전 전송 비율, 제공 레이트 및 최대 큐 레벨을 이용해서, 전송 비율을 결정한다. 바람직한 실시예에 있어서, 전송 비율은 다음과 같이 주어진다:
T(t + Dt) = minimum{ 1, maximum(1/8, T(t) + (2*I(t)*M(t)*Dt/Qmax)*(9/4 -
2*T(t) - 2*M(t)*Q(t)/Qmax))}
여기서,
M(t) = 이전 에포크로부터의 승수
Dt = 적절한 시간 단위의 에포크의 길이
T(t + Dt)에 대한 등식에 승수 M(t)가 나온다는 것을 주목해야 한다. T와 M은 Dt 시간 단위마다 동시에 갱신된다. 또한, 승수 M(t)는 T(t + Dt)에 대한 등식에 두 번 나온다는 것을 주목해야 한다. 승수 M(t)는 전술한 바와 같이 2*M(t)*Q(t)/Qmax의 항에 나온다. 그 의미는 폭주 상태가 반복되는 경우에 버퍼 용량을 2로 나눈다는 것이다. 승수 M(t)는 또한 2*M(t)*I(t)*Dt/Qmax의 항에 나온다. 여기서, I(t)*Dt는 시간 간격 Dt에 걸쳐 큐 시스템에 제공되는 비트수이다. 이 양은 Qmax와 비교되어, 분수 I(t)*Dt/Qmax로 된다. 다음에, 이 분수에는 2*M(t)가 곱해진다. 또한, 그 의미는 폭주 상태의 경우에 버퍼 용량을 2로 나눈다는 것이다.
바람직한 실시예에 있어서, 전송 비율의 계산과 동시에, 승수가 갱신된다(단계 154). 바람직한 실시예에 있어서, 승수는 도 10에 도시된 방법(130)을 통해 갱신된다. 그러나, 승수는 전송 비율에 연속해서 갱신될 수도 있다. 또한, 현재의 에포크 동안의 전송 비율의 계산시에 현재의 에포크 동안의 승수를 사용할 수도 있다. 그러나, 그러한 경우에는, 도 11의 단계 152에서의 전송 비율에 대한 수학적 공식이 달라질 것이다.
다음에, 단계 156에서, 인큐잉 매커니즘(19)은 단계 146, 단계 150 또는 단계 152에서 설정된 전송 비율을 사용해서, 사전에 패킷을 폐기하여, 스위치(10)의 기능을 유지시킨다. 단계 158에서 에포크가 완료됐는지의 여부가 결정된다. 에포크가 완료되지 않은 경우에는, 단계 156이 계속된다. 에포크가 완료된 경우에는, 단계 142로 되돌아간다.
방법(120, 140)은 안정적으로 스위치(10)에서 트래픽을 제어할 수 있다. 또한, 방법(120) 또는 방법(140)을 사용하면, 가상 최대 큐 레벨 또는 승수를 사용함으로써 많은 양의 트래픽을 해결할 수 있다. 따라서, 방법(120) 또는 방법(140)의 일실시예를 이용하는 스위치(10)는 800 퍼센트의 오버서브스크립션을 수용할 수도 있어, 오버서브스크립션이 매우 높은 경우에도 큐 또는 메모리 자원을 채우는 일이 없이 계속해서 그 기능을 다한다. 또한, 방법(150)을 사용하면, 승수가 이미 설정 되어 있거나 감쇠 결정을 위해 일정한 것으로 간주된다고 가정하면, 전송 비율과 큐 레벨이 임계 감쇠된다. 스위치(10)는 큐 레벨과 전송 비율이 임계 감쇠되기 때문에, 가능한 한 신속히 평형 상태에 도달할 것이다.
또한, 본 발명은 컴퓨터 네트워크에서 복수의 파이프를 제어하기 위한 방법 및 시스템을 제공한다. 개시된 바와 같이, 컴퓨터 네트워크는 적어도 하나의 스위치용 프로세서를 포함한다. 적어도 하나의 프로세서는 큐를 갖는다. 복수의 파이프는 큐를 이용하여 스위치를 통과하는 트래픽을 전송한다. 상기 방법 및 시스템은 복수의 파이프 각각에 대해 최소 흐름과 최대 흐름을 설정하는 것과, 큐에 대한 초과 대역폭(excess bandwidth)이 존재하는지의 여부를 결정하는 것을 포함한다. 상기 방법 및 시스템은 또한 초과 대역폭이 존재하고 복수의 파이프 중 한 파이프에 대한 흐름이 그 파이프에 대한 최대 흐름보다 작다면, 최소 흐름 또는 최대 흐름을 기초로 해서, 복수의 파이프 중 한 파이프에 대한 흐름을 선형적으로 증가시키는 것을 포함한다. 상기 방법 및 시스템은 또한 초과 대역폭이 존재하지 않고 복수의 파이프 중 한 파이프에 대한 흐름이 그 파이프에 대한 최소 흐름보다 크다면, 최소 흐름 또는 최대 흐름을 기초로 해서, 복수의 파이프 중 한 파이프에 대한 흐름을 지수적으로 감소시키는 것을 포함한다. 따라서 큐를 통과하는 트래픽은 안정적이다.
본 발명은 큐를 통과하는 파이프 또는 큐에 제공되는 흐름에 관하여 이하 설명할 것이다. 그러나, 파이프들은 상이하거나 동일한 종류의 행위 집합 흐름들이거나, 또는 저장용 큐를 이용하는 특정 요소에 제공되는 레이트일 수 있다.
본 발명에 따른 상기 방법 및 시스템을 더 구체적으로 설명하기 위해서, 본 발명에 따른 방법(160)의 일실시예를 도시한 도 12를 이하 참조할 것이다. 방법(160)은 도 1과 도 3에 도시된 스위치(10)와 함께 사용될 수 있다. 따라서, 방법(160)은 다중 블레이드(7, 8, 9)와 각 블레이드(7, 8 또는 9)상의 다중 포트를 갖는 스위치(10)에서 실행될 수 있다. 명확성을 위해서, 도 3에 도시된 큐(20)와 인큐잉 매커니즘(19)과 함께 방법(160)을 설명할 것이다. 그러나, 방법(160)은 다른 큐, 예컨대 큐(24, 28, 34)와 함께 사용될 수 있다. 방법(160)은 또한 다른 인큐잉 매커니즘, 예컨대 인큐잉 매커니즘(23, 27, 32)과 함께 사용될 수 있다. 바람직한 실시예에 있어서, 방법(160)은 다중 큐들이 동일한 메모리 자원의 일부분인 시스템에서 사용된다. 그러나, 방법(160)은 각 큐가 별도의 메모리 자원을 갖는 또 다른 시스템에서 사용될 수도 있다.
도 3과 도 12를 참조하면, 단계 162에서, 트래픽을 큐(20)에 제공하는 파이프들의 최소 흐름과 최대 흐름이 설정된다. 파이프들은 포트 A(18) 중 어느 하나로부터 인큐잉 매커니즘(19)까지 성립될 수 있다. 바람직한 실시예에 있어서, 관심있는 파이프들은 행위 집합 흐름들이다. 따라서, 단계 162는 바람직하게는 관심있는 행위 집합 흐름들에 대한 최소 및 최대 대역폭을 설정한다. 또한 파이프들에 대한 최소 흐름들의 합은 공유 큐 프로세서의 서비스 레이트 S보다 작거나 같아야 한다. 그 이유는 흐름들은 큐(20)가 서비스할 수 있는 총트래픽량의 분율로서 정의되기 때문이다. 파이프에 대한 최소 흐름은 0일 수 있다. 통상적으로, 큐(20)는 규정된 서비스 레이트를 가지며, 큐(20)는 그 규정된 서비스 레이트로 큐(20)로부터 아이템들을 출력할 수 있다. 바람직한 실시예에 있어서, 최소 흐름 레이트의 합은 서비스 레이트 S의 1/2보다 작다. 또한 바람직한 실시예에 있어서, 각 파이프에 대한 최대 흐름은 서비스 레이트보다 작거나 같다. 바람직한 실시예에서 큐(20)에 의해 서비스되는 파이프들의 최대수는 1024보다 작거나 같지만, 제어되는 파이프수에 대한 실제 상한은 없다. 또한, 각 파이프는 제공 레이트 Ii(t)(여기서, i는 i번째 파이프를 의미함)로 큐(20)에 트래픽을 제공한다. 다양한 인자에 따라 트래픽의 일부를 드롭할 수 있다. i번째 파이프에 대한 전송 비율 Ti(t)는 i번째 파이프로부터 큐(20)로 전송되는 트래픽의 비율이다. 따라서, i번째 파이프에 대한 순간 흐름은 fi(t) = Ii(t)*Ti(t)이다. 바람직한 실시예에 있어서, 방법(160)은 또한 트래픽이 통과하여 흐르는 파이프가 적어도 그의 최소 흐름을 갖도록 보장할 수 있다.
다음에, 단계 164에서, 큐(20)가 사용 가능한 초과 대역폭을 가지고 있는지의 여부를 결정한다. 바람직한 실시예에 있어서, 큐 레벨이 증가하고 있다면, 초과 대역폭은 존재하지 않는 것으로 결정된다. 또한 바람직한 실시예에 있어서, 큐(20)가 비어 있거나 큐(20)에 대한 큐 레벨이 감소하고 있다면, 단계 164에서 초과 대역폭은 존재하는 것으로 결정된다. 따라서, 단계 164는 바람직하게는 큐 레벨을 결정하는 것과, 그 큐 레벨을 이전 큐 레벨에 비교하는 것을 포함한다. 또한 바람직한 실시예에 있어서, 큐 레벨이 0도 아니고 감소하고 있지도 않다면, 초과 대역폭은 존재하지 않는 것으로 결정된다. 그러나, 또 다른 기준을 가지고 초과 대역폭의 존재 여부를 결정할 수도 있다.
단계 164에서 초과 대역폭이 존재하는 것으로 결정되면, 단계 166에서, 파이프들에 대한 흐름들은 선형적으로 증가된다. 바람직하게는 단계 166은 파이프들 각각에 대한 전송 비율을 선형적으로 증가시킴으로써 달성된다. 파이프에 대한 선형적 증가는 최소 흐름, 최대 흐름 또는 가중치를 기초로 할 수 있다. 따라서, 파이프에 대한 선형적 증가는 그 파이프의 최소 흐름만을, 최대 흐름만을, 최소 흐름과 가중치의 임의 조합만을, 최대 흐름과 가중치의 임의 조합만을, 또는 최소 및 최대 흐름과 가중치의 임의 조합만을 기초로 할 수 있다. 그러나, 바람직한 실시예에 있어서, 파이프에 대한 선형적 증가는 그 파이프에 대한 최소 흐름을 기초로 한다.
단계 164에서 초과 대역폭이 존재하지 않는 것으로 결정되면, 단계 168에서, 파이프들에 대한 흐름들은 지수적으로 감소된다. 바람직하게는 단계 168은 각 파이프에 대한 전송 비율을 지수적으로 감소시킴으로써 달성된다. 파이프에 대한 지수적 감소는 최소 흐름 또는 최대 흐름을 기초로 할 수 있다. 따라서, 파이프에 대한 지수적 감소는 그 파이프의 최소 흐름만을, 최대 흐름만을, 또는 최소 흐름과 최대 흐름의 임의 조합만을 기초로 할 수 있다. 그러나, 바람직한 실시예에 있어서, 파이프에 대한 지수적 감소는 그 파이프에 대한 최소 흐름을 기초로 한다. 그러한 감소는 사실상 지수적이므로, 그러한 감소는 또한 그 파이프에 대한 현재 흐름 또는 전송 비율을 기초로 한다.
방법(160)은 흐름들을 선형적으로 증가시키고 흐름들을 지수적으로 감소시키기 때문에, 일반적으로 방법(160)은 파이프들을 통해 큐(20)로 전송되는 트래픽이 자동적이고 징조없이 안정 상태에 도달할 수 있도록 보장한다. 흐름들은 큐(20)가 초과 대역폭을 가지고 있는지의 여부에 따라 증가되거나 감소될 것이다. 안정 상태에 도달하면, 흐름들은 초과 대역폭이 존재하는 한 선형적으로 증가될 것이고, 그 다음에는, 초과 대역폭이 부족하여 초과 대역폭을 다시 이용할 수 있을 때까지 지수적으로 감소될 것이다. 이러한 행위가 반복될 것이다. 환언하면, 파이프들로부터의 트래픽은 한계 사이클로 알려진 안정적인 사이클 상태(steady cyclic state)로 고정될 수 있다. 따라서, 파이프들을 통과하는 트래픽이 시작하는 상태와 상관없이, 시스템은 안정적인 주기적 행위를 향하여 진행할 것이다. 이러한 안정적인 행위는 증가와 감소의 다른 조합으로는 달성될 수 없다. 예컨대, 지수적 증가와 선형적 감소, 또는 지수적 증가와 지수적 감소는 안정적인 행위를 달성할 수 없다. 또한 각 파이프에 대한 흐름의 증가와 감소는 그 파이프에 대한 최소 또는 최대 흐름과 그 파이프에 대한 이전 흐름에 의존한다. 따라서, 상이한 파이프들은 상이한 레벨의 흐름 또는 서비스를 가질 수 있다. 결론적으로, 방법(160)은 안정적인 행위를 달성할 수 있을 뿐만 아니라, 차별화된 서비스를 제공할 수 있고, 큐(20)에 대한 초과 대역폭을 공정하게 할당할 수 있다. 네트워크 관리자 또는 다른 사용자는 소비자들에 대한 최소 및 최대 흐름을 특정 소비자가 원하는 서비스 레벨에 따라 상이하게 설정하기만 하면 된다. 따라서, 방법(160)은 DiffServ를 이용한 네트워크와 같은 다양한 애플리케이션에서, 상이한 레벨의 서비스를 상이한 소비자에게 또는 상이한 매체에 제공하기를 원하는 인터넷 서비스 공급자에 의해 사용될 수 있다. 이것은 단지 방법(160)을 사용해서, 파이프에 대응하는 행위 집합 흐름, 소비자, 매체, 클래스 또는 다른 흐름에 대한 최소 및 최대 흐름을 설정함으로써 달성된다.
도 13은 도 1과 도 3에 도시된 스위치(10)와 함께 사용될 수 있고, 차별화된 서비스를 제공하기 위한 본 발명에 따른 방법(170)의 더 상세한 흐름도이다. 따라서, 방법(170)은 다중 블레이드(7, 8, 9)와 각 블레이드(7, 8 또는 9)상의 다중 포트를 갖는 스위치(10)에서 실행될 수 있다. 명확성을 위해서, 도 3에 도시된 큐(20) 및 인큐잉 매커니즘(19)과 함께 방법(170)을 설명할 것이다. 그러나, 방법(170)은 다른 큐, 예컨대 큐(24, 27, 34)와 함께 사용될 수 있다. 방법(170)은 또한 다른 인큐잉 매커니즘, 예컨대 인큐잉 매커니즘(23, 28, 32)과 함께 사용될 수 있다. 바람직한 실시예에 있어서, 방법(170)은 다중 큐들이 동일한 메모리 자원의 일부분인 시스템에서 사용된다. 그러나, 방법(170)은 각 큐가 별도의 메모리 자원을 갖는 또 다른 시스템에서 사용될 수도 있다. 또한, 방법(170)은 파이프를 문맥으로 해서 설명될 수 있고, 또한 파이프에 대응하는 행위 집합 흐름을 포함한 다양한 구성 요소에 대해 사용될 수 있다.
방법(170)은 제어되고 있는 파이프들 각각에 대한 최소 및 최대 흐름이 예컨대 네트워크 관리자에 의해 설정된 후에 시작된다. 단계 172에서, 해당 파이프에 대한 최소 및 최대 흐름을 기초로 해서 파이프들 각각에 대한 상수들이 계산된다. 각 파이프 i에 대해서, 상수 Ci와 상수 Di가 단계 172에서 계산된다. 상수 Ci는 이하 논의되는 바와 같이, 파이프 i에 대한 흐름을 선형적으로 증가시키는 데 사용된다. 유사하게, 상수 Di는 이하 논의되는 바와 같이, 파이프 i에 대한 흐름을 지수적으로 감소시키는 데 사용된다. 바람직한 실시예에 있어서, 상수 Ci와 상수 Di는 모두 최소 흐름을 기초로 해서 계산된다. 다른 실시예에 있어서, 상이한 파이프에 대한 가중치가 또한 제공될 수 있다. 그러한 경우에 있어서, 상수 Ci와 상수 Di는 제공된 가중치를 기초로 해서 계산될 수도 있다.
상수들이 결정되고 나면, 단계 174에서, 파이프를 통하여 큐(20)로 트래픽을 흘려 보낸다. 이전 에포크 동안에 큐 레벨, 순간 초과 대역폭 신호 B 및 초과 대역폭 신호 E를 아직 얻지 못했다면, 단계 176에서 그것들이 결정된다. 바람직한 실시예에 있어서, 이전 에포크 동안의 흐름들 또한 단계 176에서 얻을 수 있다. 환언하면, 단계 176은 방법(170)에서 시스템을 갱신하는 데 필요한 수들을 결정한다. 다음에, 단계 178에서, 초과 대역폭이 존재하는지의 여부가 결정된다. 바람직한 실시예에 있어서, 초과 대역폭은 큐(20)에 대한 큐 레벨이 0이거나 감소되고 있을 때에만 존재하는 것으로 결정된다. 그렇지 않은 경우에는 초과 대역폭이 존재하지 않는 것으로 결정될 것이다. 그러나, 초과 대역폭의 존재 여부를 결정함에 있어서 또 다른 기준을 이용할 수도 있다. 바람직한 실시예에 있어서, 결정된 큐 레벨은 전체 메모리 자원에 대한 레벨이다. 그러나, 결정되는 큐 레벨이 논리적 큐 또는 서브큐에 대한 것일 수도 있다. 초과 대역폭이 존재하지 않는다면, 단계 180에서, 순간 초과 대역폭 신호 B가 0으로 설정된다. 그 신호 B는 순간 신호로 불리는데, 그 이유는 그것이 큐 레벨에 대한 단 한번의 측정과 큐 레벨의 변화에 대한 단 한번의 결정을 기초로 하기 때문이다. 다음에, 단계 182에서, 초과 대역폭 신호 E는 상수에 이전 초과 대역폭 신호를 곱한 것(상수 ×이전 초과 대역폭 신호)으로 설정된 다. 바람직하게는, 그 상수는 31/32이고 일반적으로 1보다 작아야 한다. 바람직한 실시예에 있어서, 초과 대역폭 신호는 순간 초과 대역폭 신호의 지수 가중 평균이다. 초과 대역폭 신호의 값은 단계 182에서 적절히 설정되는데, 그 이유는 순간 초과 대역폭 신호가 0이기 때문이다.
다음에, 단계 178에서 초과 대역폭 신호가 존재하는 것으로 결정되면, 단계 184에서, 순간 초과 대역폭 신호가 1로 설정된다. 다음에, 단계 186에서, 초과 대역폭 신호는 순간 초과 대역폭 신호의 지수 가중 평균으로 설정된다. 따라서, 바람직한 실시예에 있어서, 초과 대역폭 신호는 제1 상수에 이전 초과 대역폭 신호를 곱한 것에 제2 상수에 순간 초과 대역폭 신호를 곱한 것을 더한 것(제1 상수 ×이전 초과 대역폭 신호 + 제2 상수 ×순간 초과 대역폭 신호)이다. 제1 상수와 제2 상수는 모두 1보다 작고, 바람직하게는 각각 31/32과 1/32이다.
바람직한 실시예에 있어서, 단계 178 내지 단계 186과 동시에, 단계 188에서 각 파이프 i에 대한 전송 비율이 설정된다. 그러나, 다른 실시예에 있어서, 전송 비율은 순간 초과 대역폭 신호와 초과 대역폭 신호에 연속해서 갱신될 수 있다. 이전 순간 초과 대역폭 신호 B가 1(초과 대역폭 사용 가능)이었다면, 단계 188은 이전 전송 비율, 상수 Ci 및 초과 대역폭 신호를 기초로 해서 각 파이프 i에 대한 전송 비율을 설정했을 것이다. 바람직하게는, 이전에 존재하는 초과 대역폭에 대해 단계 188에서 설정된 전송 비율은 다음과 같다:
Ti(t + Dt) = Ti(t) + Ci*E(t)
여기서,
Dt = 에포크의 길이(전송 비율이 요전에 계산된 이후부터의 시간)
바람직하게는, 흐름 단위들은 Dt와 최대 가능한 큐 레벨 Qmax가 1이 되도록 설정된다. 따라서, 전송 비율은 선형적으로 감소된다. 또한, 전송 비율은 초과 대역폭이 계속해서 존재하는 한 계속해서 선형적으로 증가된다. 초과 대역폭이 이전 에포크에서 존재하지 않았다면(B = 0), 단계 188에서 각 파이프 i에 대한 전송 비율 Ti(t + Dt)는 그 파이프에 대한 이전 전송 비율 Ti(t), Di 및 그 파이프에 대한 이전 흐름 fi(t)를 기초로 해서 설정된다. 초과 대역폭이 이전에 존재하지 않았을 때의 전송 비율은 바람직하게는 다음과 같다:
Ti(t + Dt) = Ti(t) - Di*fi(t)
따라서, 단계 188에서 설정된 전송 비율은 전송 비율과 그에 따른 흐름이 초과 대역폭이 계속해서 존재하지 않는 한 지수적으로 감소하도록 보장한다. 상수 Ci와 상수 Di는 바람직하게는 최소 흐름값을 기초로 한다. 상수 Ci와 상수 Di
의 정확하고 바람직한 값에 대해서는 도 14를 참조해서 이하 논의할 것이다.
도 13으로 되돌아가서, 다음에, 단계 190에서, 단계 188에서 계산된 전송 비율을 사용해서, 스위치(10)를 통과하는 패킷을 그 에포크 동안에 전송하거나 드롭한다. 바람직한 실시예에 있어서, 패킷은 그 패킷이 흐르는 파이프에 대한 전송 비율뿐만 아니라, 각 패킷의 우선 순위를 기초로 해서 드롭된다. 또 다른 실시예에 있어서, 패킷은 랜덤하게 드롭된다. 단계 192에서 에포크가 완료됐는지의 여부가 결정된다. 에포크가 완료되지 않은 경우에는, 단계 190에서 트래픽은 동일한 전송 비율을 기초로 해서 계속해서 전송된다. 에포크가 완료된 경우에는, 상기 방법은 단계 176에서 시작하는 것을 반복한다.
방법(170)은 흐름들을 선형적으로 증가시키고 흐름들을 지수적으로 감소시키기 때문에, 방법(160)과 유사하게 작용하고, 그와 동일한 많은 이점을 제공한다. 따라서, 방법(170)은 파이프들을 통해 큐(20)로 전송되는 트래픽이 자동적이고 징조없이 안정 상태에 도달할 수 있도록 보장한다. 파이프들로부터의 트래픽은 한계 사이클로 알려진 안정적인 사이클 상태(steady cyclic state)로 고정될 수 있다. 따라서, 파이프들을 통과하는 트래픽이 시작하는 상태와 상관없이, 시스템은 안정적인 주기적 행위를 향하여 진행할 것이다. 또한 각 파이프에 대한 흐름의 증가와 감소는 그 파이프에 대한 최소 흐름과 그 파이프에 대한 이전 흐름에 의존한다. 따라서, 상이한 파이프들은 상이한 레벨의 흐름 또는 서비스를 가질 수 있다. 결론적으로, 방법(170)은 안정적인 행위를 달성할 수 있을 뿐만 아니라, 큐(20)에 대한 초과 대역폭을 공정하게 할당할 수 있고, 차별화된 서비스를 제공할 수 있다. 네트워크 관리자 또는 다른 사용자는 소비자들에 대한 최소 및 최대 흐름을 특정 소비자가 원하는 서비스 레벨에 따라 상이하게 설정하기만 하면 된다. 따라서, 방법(170)은 DiffServ를 이용한 네트워크와 같은 다양한 애플리케이션에서, 상이한 레벨의 서비스를 상이한 소비자에게 또는 상이한 매체에 제공하기를 원하는 인터넷 서비스 공급자에 의해 사용될 수 있다. 이것은 단지 방법(170)을 사용해서, 파이프 에 대응하는 행위 집합 흐름, 소비자, 매체, 클래스 또는 다른 흐름에 대한 최소 및 최대 흐름을 설정함으로써 달성된다.
또한, 전송 비율에 의한 흐름 레이트의 감소가 충분히 빠르다면, 파이프들에 대한 흐름들을 그린 곡선들 아래의 면적은 그 흐름의 선형 증가의 경사도에 비례한다. 흐름에 대한 곡선 아래의 면적은 파이프를 통해 큐(20)로 흐르는 초 당 비트수를 나타낸다. 파이프를 통한 흐름은 또한 한 에포크에 걸쳐 계산될 수 있고, 이것은 파이프를 통한 흐름을 정확히 나타낸다. 따라서, DiffServ에서 정의된 바와 같이 흐름, 또는 대역폭이 조절된다.
도 14는 차별화된 서비스를 제공하기 위한 방법(200)의 더 상세한 흐름도이다. 방법(200)은 바람직하게는 전술된 본 발명을 포함한다. 일반적으로, 이제 개시될 방법은 전술된 본 발명을 이용해서 전송 비율을 필요할 때 높은 레벨로 제어하며, 그 밖에 전술된 방법과 유사한 방법을 이용한다.
방법(200)은 도 1과 도 3에 도시된 스위치(10)와 함께 사용될 수 있다. 따라서, 방법(200)은 다중 블레이드(7, 8, 9)와 각 블레이드(7, 8 또는 9)상의 다중 포트를 갖는 스위치(10)에서 실행될 수 있다. 명확성을 위해서, 도 3에 도시된 큐(20) 및 인큐잉 매커니즘(19)과 함께 방법(200)을 설명할 것이다. 그러나, 방법(200)은 다른 큐, 예컨대 큐(24, 28, 34)와 함께 사용될 수 있다. 방법(200)은 또한 다른 인큐잉 매커니즘, 예컨대 인큐잉 매커니즘(23, 27, 32)과 함께 사용될 수 있다. 바람직한 실시예에 있어서, 방법(200)은 다중 큐들이 동일한 메모리 자원의 일부분인 시스템에서 사용된다. 그러나, 방법(200)은 각 큐가 별도의 메모리 자원을 갖는 또 다른 시스템에서 사용될 수도 있다. 또한, 방법(200)은 파이프를 문맥으로 해서 설명될 수 있고, 또한 파이프에 대응하는 행위 집합 흐름을 포함한 다양한 구성 요소에 대해 사용될 수 있다.
방법(200)은 파이프들 각각에 대한 최소 및 최대 흐름과, 가중치가 사용된 곳에서는 가중치 또한 설정된 후에 시작된다. 전술한 바와 같이, 최소 흐름들의 합은 1보다 작아야 하며, 큐(20)에 대한 서비스 레이트의 1/2보다 작은 것이 바람직하다. 또한, 바람직한 실시예에 있어서, 최소 및 최대 흐름들 각각은 서비스 레이트보다 작다. 바람직한 실시예에 있어서, 흐름수는 64보다 작거나 같다. 바람직한 실시예에 있어서, 각 파이프에 대한 가중치는 1이고, 따라서 스위치(10)의 행위에 영향을 미치지 않는다. 전술한 바와 같이, 파이프에 의해 큐에 제공되는 제공 레이트 Ii(t)에 그 파이프에 대한 전송 비율 Ti(t)를 곱하면 그 파이프에 대한 흐름 fi(t)가 획득된다.
단계 202에서, 파이프들에 대한 흐름들을 증가 또는 감소시키기 위한 상수들이 파이프들 각각에 대한 최소 및 최대 흐름과, 가중치가 사용된 곳에서는 가중치 또한 기초로 해서 결정된다. 바람직하게는, 파이프의 흐름을 증가시키기 위한 상수 Ci와 파이프의 흐름을 감소시키기 위한 상수 Di는 다음과 같이 계산된다:
바람직한 실시예에서와 같이, 모든 가중치가 1과 같다면, 다음과 같다:
여기서,
N = 대역폭에 할당될 흐름수
Wi = i번째 파이프에 대한 가중치, 바람직하게는 범위 [0,1] 내에 존재
W = 모든 N 가중치의 합
fimin = i번째 파이프에 대한 최소 흐름
또한, 흐름 단위들은 Dt와 Qmax가 1이 되도록 다시 선택된다.
다음에, 단계 204에서, 파이프들에 대한 흐름들과 큐(20)의 큐 레벨이 결정된다. 한 에포크가 방금 완료됐다면, 이전 에포크 동안의 흐름들과 큐 레벨이 결정된다. 흐름들은 그 전체 에포크에 걸쳐 결정되지만, 큐 레벨은 바람직하게는 그 에포크의 끝에서 결정된 큐 레벨이다. 바람직한 실시예에 있어서, 큐 레벨은 큐(20)가 포함된 메모리 자원 전체의 레벨이다. 그러나, 또 다른 실시예에 있어서, 큐 레벨은 논리적 큐 또는 서브큐에 대한 것일 수 있다. 바람직한 실시예에 있어서, 이전 에포크 동안의 순간 초과 대역폭 신호 B와 초과 대역폭 신호 E가 아직 결정되지 않았더라도, 그것들을 얻을 수 있다. 따라서, 다음의 계산에 필요한 정보를 얻을 수 있다.
다음에, 단계 206에서, 큐(20)에 대한 초과 대역폭이 존재하는지의 여부가 결정된다. 바람직한 실시예에 있어서, 단계 206은 큐 레벨이 0이거나 감소되고 있는지의 여부를 결정하는 것을 포함한다. 그러나, 초과 대역폭의 존재 여부를 결정함에 있어서 또 다른 기준을 이용할 수도 있다. 큐 레벨이 감소되고 있거나 0인 경우에는, 단계 206에서 초과 대역폭이 존재하는 것으로 결정된다. 그렇지 않은 경우에는, 초과 대역폭이 존재하지 않는 것으로 결정된다. 초과 대역폭이 존재한다면, 단계 208에서, 순간 초과 대역폭 신호는 1로 설정된다. 그러나 초과 대역폭이 존재하지 않는다면, 단계 210에서, 순간 초과 대역폭 신호는 0으로 설정된다.
다음에, 단계 212에서, 초과 대역폭 신호는 순간 초과 대역폭 신호의 지수 가중 평균이 되도록 설정된다. 바람직한 실시예에 있어서, 그 지수 가중 초과 대역폭 신호는 다음과 같이 설정된다:
E(t + Dt) = (31/32)*E(t) + B(t + Dt)/32
여기서,
E(t + Dt) = 현재 에포크 동안의 초과 대역폭 신호
E(t) = 이전 에포크 동안의 초과 대역폭 신호
B(t + Dt) = 현재 에포크 동안의 순간 초과 대역폭 신호
단계 206 내지 단계 212에서의 순간 초과 대역폭 신호와 초과 대역폭 신호의 갱신과 동시에, 단계 214에서 현재 에포크 동안의 전송 비율이 갱신된다. 단계 214에서 전송 비율은, 가능할 때 각각의 활성 파이프에 최소 흐름이 제공되도록, 각각의 파이프에 대한 흐름이 그 최대치를 초과하지 않도록, 그 흐름이 큐(20)(또는 대응하는 메모리 자원)가 희망 레벨을 초과하지 않는 한 선형적으로 증가하고 지수적으로 감소하도록, 필요에 따라서는, 전송 비율은 큐 레벨과 전체 전송 비율에 의해 기술되는 시스템이 임계 감쇠되어 높은 오버서브스크립션 레이트를 해결할 수 있도록 설정된다. 임계 감쇠는 큐 레벨과 전체 전송 비율에 의해 기술되는 시스템이 가능한 한 신속히 평형 상태에 도달한다는 것을 의미한다. 바람직한 실시예에 있어서, 각 파이프에 대한 전송 비율은 다음과 같이 설정된다:
Ti(t + Dt) = 시간 t에서의 제공 레이트의 합이 상수 D보다 크거나 같다면, A
= fi(t)가 fimin보다 작거나 같다면, min{1, Ti(t) + F}
= fi(t)가 fimax보다 크다면, G*Ti(t)이고, 그렇지 않다면
= min{T(t), B(t) = 1이면 Ti(t) + Ci*E(t) 또는
B(t) = 0이면 Ti(t) - Di*fi(t)}
여기서,
A = 1보다 작은 상수로서, 바람직하게는 0.125
D = 1보다 작은 상수로서, 바람직하게는 0.25
F = 1보다 작은 상수로서, 바람직하게는 0.125
G = 1보다 작은 상수로서, 바람직하게는 0.875
T(t) = 전체 전송 비율(global transmission fraction)
바람직하게는, 전체 전송 비율은 다음과 같이 주어진다:
T(t) = minimum{1, maximum(1/8, T(t -Dt) + 2*I(t - Dt)*M(t - Dt)*Dt/Qmax)*(9/4 - 2*T(t) - 2*M(t)*Q(t)/Qmax))}
여기서,
M(t - Dt) = 이전 에포크로부터의 승수
= 승수는 큐 레벨이 임계값을 초과하는 것으로 반복적으로 결정되면
바람직한 실시예에서는 1에 근사되고, 큐 레벨이 임계값을 초과하지
않는 것으로 반복적으로 결정되면 1/2에 근사됨
Dt = 적절한 시간 단위의 에포크의 길이
따라서, 전체 전송 비율은 큐 레벨과 전체 전송 비율이 임계 감쇠되는 것과 오버서브스크립션이 해결되는 것을 보장한다.
단계 216에서는, 단계 214에서 결정된 전송 비율을 기초로 해서, 파이프들에 대한 패킷 또는 트래픽 단편이 전송되거나 드롭된다. 바람직한 실시예에 있어서, 단계 216은 특정 패킷의 드롭 여부를 결정함에 있어서 패킷의 우선 순위를 고려한다. 또 다른 실시예에 있어서는, 개개의 패킷을 랜덤하게 드롭하여 계산된 전송 비율을 유지한다.
다음에, 단계 218에서, 에포크가 완료됐는지의 여부가 결정된다. 에포크가 완료되지 않은 경우에는, 단계 216에서 패킷이 계속해서 드롭되거나 전송된다. 에포크가 완료된 경우에는, 다음 에포크 동안의 값들을 갱신하기 위해서 단계 202로 되돌아간다.
방법(200)은 차별화된 서비스를 안정적으로 제공하고 초과 대역폭을 공정하게 할당할 수 있다는 점에서 방법(160, 170)과 동일한 많은 이점을 제공한다. 이것은 사용자가 단지 파이프들에 대한 최소 및 최대 흐름들을 설정하는 최소한의 노력으로 달성된다. 방법(200)은 또한 DiffServ를 이용한 네트워크와 같은 다양한 애플리케이션에서, 상이한 소비자, 클래스, 행위 집합 흐름 또는 상이한 매체에 대한 상이한 레벨의 서비스를 제공하기를 원하는 인터넷 서비스 공급자에 의해 사용될 수 있다. 이것은 단지 방법(200)을 사용해서, 파이프에 대응하는 행위 집합 흐름, 소비자, 매체, 또는 다른 흐름에 대한 최소 및 최대 흐름을 설정함으로써 달성된다. 따라서, 파이프를 통한 흐름, DiffServ 서비스 기준은 원하는 바와 같이 조절될 수 있다.
또한, 방법(200)은 전술한 두가지 방법의 이점을 추가로 이용한다. 전체 전송 비율을 사용할 수 있기 때문에, 방법(200)은 고차원의 폭주 상태를 효율적으로 해결할 수 있다. 큐(20)가 반복적으로 임계값 이상일 때에 감소하는 가상 최대 큐 레벨에 대응하는 승수의 사용은 스위치가 폭넓은 서브스크립션 범위에 걸쳐 안정적인 상태를 유지하는 것을 보장한다. 일 실시예에 있어서, 800 퍼센트에 달하는 오버서브스크립션이 해결될 수 있다. 또한, 전체 전송 비율이 어느 정도 임계 감쇠하므로, 큐 레벨과 전체 전송 비율에 의해 기술되는 시스템은 안정 상태에 신속히 도달할 것이다. 결론적으로, 방법(200)은 평형 상태를 위한 희망 전송 레이트를 신속히 달성할 수 있다.
일반적으로, 스위치(10)가 방법(160, 170)에 대응하는 방법(200)의 일부분을 사용하는 것을 고려할 수 있다. 따라서, 파이프들은 일반적으로 안정적인 한계 사이클이 달성되도록 조절될 것이다. 바람직한 실시예에 있어서, 파이프를 통한 흐름은 큐 레벨이 더 이상 감소되고 있지 않을 때까지 증가될 것이고, 큐 레벨이 감소되고 있거나 0이 될 때까지 감소될 것이다. 이것이 정상 모드 동작이다. 그러나, 중대한 경우에, 예컨대 수개의 파이프가 갑자기 사용되어 그들의 최소 흐름들을 요구하거나 큐 레벨이 임계값을 초과함으로 인해서, 또 다른 방법이 사용될 수도 있다. 예컨대, 큐(20)가 가득 채워지지 않도록 보장하기 위해서 전체 전송 비율을 이용할 수 있다. 그 중대하고 통상적으로 일시적인 상태가 해결되고 나면, 안정적인 한계 사이클을 달성하는 전송 비율이 다시 사용될 것이다. 따라서, 방법(200)을 사용하는 스위치는 폭넓은 서브스크립션 범위에 걸쳐 효율적으로 동작할 수 있다.
본 발명은 또한 복수의 파이프 중 한 파이프의 흐름에 대한 전송 비율을 전체 전송 비율과 미분 전송 비율의 최소값이 되도록 설정하는 것을 포함하는 방법 및 시스템을 제공한다. 미분 전송 비율은 초과 대역폭이 존재하고 그 파이프의 흐름이 그 파이프에 대해 설정된 최대 흐름보다 작다면, 최소 흐름 또는 최대 흐름을 기초로 해서 그 파이프의 흐름을 선형적으로 증가시킬 수 있다. 미분 전송 비율은 또한 초과 대역폭이 존재하지 않고 그 파이프의 흐름이 그 파이프에 대해 설정된 최소 흐름보다 크다면, 최소 흐름 또는 최대 흐름을 기초로 해서 그 파이프의 흐름을 지수적으로 감소시킬 수 있다. 따라서, 큐를 통과하는 트래픽은 안정적이다. 상기 방법 및 시스템은 또한 전송 비율을 기초로 해서 큐로의 트래픽 전송을 제어하는 것과, 큐로부터의 트래픽을 제어하기 위해 스케줄러를 사용하는 것을 포함한다. 스케줄러는 한가지 방식 또는 여러가지 방식들을 조합하여 사용할 수도 있다. 예컨대, 스케줄러는 선입선출(First In First Out), 우선순위에 의한 큐잉(Priority Queuing), 맞춤 큐잉(Custom Queuing), 가중 공정 큐잉(Weighted Fair Queuing), 클래스 기반의 가중 공정 큐잉(Class Based Weighted Fair Queuing), 다기능 인터페이스 프로세서 가중 공정 큐잉(Versatile Interface Processor Weighted Fair Queuing), 라운드 로빈(Round Robin), 가중 라운드 로빈(Weighted Round Robin) 또는 다른 공지된 큐잉 방식들 중 한가지 또는 여러가지를 조합하여 사용할 수 있다.
본 발명에 따른 추가적인 방법 및 시스템을 더 구체적으로 설명하기 위해서, 본 발명에 따른 방법(220)의 일 실시예를 도시한 도 15 및 도 16을 이하 참조할 것이다. 방법(220)은 도 1과 도 3에 도시된 스위치(10)와 함께 사용될 수 있다. 따라서, 방법(220)은 다중 블레이드(7, 8, 9)와 각 블레이드(7, 8 또는 9)상의 다중 포트를 갖는 스위치(10)에서 실행될 수 있다. 명확성을 위해서, 도 3에 도시된 큐(34) 및 인큐잉 매커니즘(32)과 함께 방법(220)을 설명할 것이다. 바람직한 실시예에 있어서, 방법(220)은 스위치(10)의 이그레스측, 따라서 네트워크 프로세서(5)의 이그레스 부분에서 사용된다. 따라서, 방법(220)은 인큐잉 매커니즘(32), 큐(34) 및 스케줄러(35)와 함께 사용되는 것이 바람직하다. 그러나, 방법(220)은 다른 큐, 예컨대 큐(20, 24, 28)와, 다른 인큐잉 매커니즘, 예컨대 인큐잉 매커니즘(19, 23, 27)과, 다른 스케줄러와 함께 사용될 수 있다. 바람직한 실시예에 있어서, 방법(220)은 다중 큐들이 동일한 메모리 자원의 일부분인 시스템에서 사용된다. 그러나, 방법(220)은 각 큐가 별도의 메모리 자원을 갖는 또 다른 시스템에서 사용될 수도 있다.
단계 222에서, 트래픽을 큐(34)에 제공하는 파이프들의 최소 흐름과 최대 흐름이 설정된다. 파이프들은 포트 A(18) 중 어느 하나로부터 인큐잉 매커니즘(32)까지 성립될 수 있다. 바람직한 실시예에 있어서, 관심있는 파이프들은 행위 집합 흐름들이다. 따라서, 단계 222는 바람직하게는 관심있는 행위 집합 흐름들에 대한 최소 및 최대 대역폭을 설정한다. 또한 각각의 이그레스 포트에 있어서, 파이프들에 대한 최소 보장 흐름들의 합은 그 포트의 전송 용량 S보다 작아야 하며 바람직하게는 그 포트의 전송 용량 S의 1/2보다 작아야 한다. 그 이유는 흐름들은 큐(34)가 서비스할 수 있는 총트래픽량의 분율로서 정의되기 때문이다. 파이프에 대한 최소 흐름은 0일 수 있다. 통상적으로, 큐(34)는 규정된 서비스 레이트를 가지며, 큐(34)는 그 규정된 서비스 레이트로 큐로부터 아이템들을 출력할 수 있다. 바람직한 실시예에서 큐(34)에 의해 서비스되는 파이프들의 최대수는 2248보다 작거나 같지만, 제어되는 파이프수에 대한 실제 상한은 없다. 또한, 각 파이프는 제공 레이트 Ii(t)(여기서, i는 i번째 파이프를 의미함)로 큐(34)에 트래픽을 제공한다. 다양한 인자에 따라 트래픽의 일부를 드롭할 수 있다. i번째 파이프에 대한 전송 비율 Ti(t)는 i번째 파이프로부터 큐(34)로 전송되는 트래픽의 비율이다. 따라서, i번째 파이프에 대한 순간 흐름은 fi(t) = Ii(t)*Ti(t)이다. 바람직한 실시예에 있어서, 방법(220)은 또한 트래픽이 통과하여 흐르는 파이프가 적어도 그의 최소 흐름을 갖도록 보장할 수 있다.
파이프들의 최소 흐름과 최대 흐름이 설정되고 나면, 단계 224에서, 내장형 프로세서 컴플렉스는 스위치(10)를 통과하는 트래픽의 제어를 시작한다. 단계 226과 단계 228에서 각각 이전 에포크 동안의 큐 레벨과 제공 레이트가 결정된다. 바람직한 실시예에 있어서, 그 큐 레벨은 이전 에포크의 끝에서 결정되며, 그것은 메모리 자원의 레벨이다. 또한, 바람직한 실시예에 있어서, 단계 228에서 결정된 제공 레이트는 이전 에포크 동안에 메모리 자원에 제공된 전체 입력이다. 바람직한 실시예에 있어서, 이하 논의되는 바와 같이, 이전 에포크 동안의 전송 비율과 전체 전송 비율 또한 단계 226이나 단계 228에서 결정된다. 다른 실시예에 있어서, 방법(220)에서 큐 레벨을 결정하는 것은 인큐잉 매커니즘(32)에 대응하는 큐(34)의 레벨을 결정하는 것을 포함한다. 또한, 바람직한 실시예에 있어서, 전송 비율과 전체 전송 비율은 한 에포크에 걸쳐서 일정하고, 따라서 이전 에포크 동안의 어느 때에나 결정될 수 있지만, 이전 에포크가 시작할 때 결정되는 것이 바람직하다.
다음에, 단계 230에서, 전체 전송 비율이 사용된다면 전체 전송 비율과 큐 레벨이 큐 레벨의 범위에 걸쳐서 임계 감쇠되도록 전체 전송 비율을 제어한다. 전체 전송 비율은 큐 레벨과 제공 입력을 기초로 해서 제어된다. 바람직한 실시예에 있어서, 전체 전송 비율은 또한 이전의 전체 전송 비율을 기초로 해서 제어된다. 바람직한 실시예에 있어서, 단계 230에서는 임계 감쇠를 위한 바람직한 전체 전송 비율을 제공하기 위해서 이전 에포크 이후의 전체 전송 비율의 변화를 계산하고, 그 전체 전송 비율의 변화를 이전 에포크 동안의 전체 전송 비율에 부가한다. 그렇게 전체 전송 비율이 제어되는 큐 레벨의 범위는 모든 가능한 큐 레벨까지 확장될 수 있다. 그러나, 바람직한 실시예에 있어서, 전체 전송 비율이 임계 감쇠하도록 제어되는 범위는 0보다 크거나 같은 최소 큐 레벨과 최대 가능한 큐 레벨보다 작거나 같은 최대 큐 레벨 사이이다.
다음에, 도 16의 단계 232에서, 큐(34)가 사용 가능한 초과 대역폭을 가지고 있는지의 여부를 결정한다. 바람직한 실시예에 있어서, 큐 레벨이 증가하고 있다면, 초과 대역폭은 존재하지 않는 것으로 결정된다. 또한 바람직한 실시예에 있어서, 큐(34)가 비어 있거나 또는 큐(34)에 대한 큐 레벨이 0이거나 저레벨이거나 감소하고 있다면, 단계 232에서 초과 대역폭은 존재하는 것으로 결정된다. 따라서, 단계 232는 바람직하게는 큐 레벨을 결정하는 것과, 그 큐 레벨을 이전 큐 레벨에 비교하는 것을 포함한다. 또한 바람직한 실시예에 있어서, 큐 레벨이 0도 아니고 감소하고 있지도 않다면, 초과 대역폭은 존재하지 않는 것으로 결정된다. 그러나, 또 다른 기준을 가지고 초과 대역폭의 존재 여부를 결정할 수도 있다.
단계 232에서 초과 대역폭이 존재하는 것으로 결정되면, 단계 234에서, 파이프들에 대한 흐름들을 선형적으로 증가시키도록 파이프들에 대한 미분 전송 비율을 설정한다. 바람직하게는 단계 234는 파이프들 각각에 대한 미분 전송 비율을 선형적으로 증가시킴으로써 달성된다. 파이프에 대한 선형적 증가는 최소 흐름, 최대 흐름 또는 가중치를 기초로 할 수 있다. 따라서, 파이프에 대한 선형적 증가는 그 파이프의 최소 흐름만을, 최대 흐름만을, 최소 흐름과 가중치의 임의 조합만을, 최대 흐름과 가중치의 임의 조합만을, 또는 최소 및 최대 흐름과 가중치의 임의 조합만을 기초로 할 수 있다. 그러나, 바람직한 실시예에 있어서, 파이프에 대한 선형 적 증가는 그 파이프에 대한 최소 흐름을 기초로 한다.
단계 232에서 초과 대역폭이 존재하지 않는 것으로 결정되면, 단계 236에서, 파이프들에 대한 흐름들을 지수적으로 감소시키도록 미분 전송 비율을 설정한다. 바람직하게는 단계 236은 각 파이프에 대한 미분 전송 비율을 지수적으로 감소시킴으로써 달성된다. 파이프에 대한 지수적 감소는 최소 흐름 또는 최대 흐름을 기초로 할 수 있다. 따라서, 파이프에 대한 지수적 감소는 그 파이프의 최소 흐름만을, 최대 흐름만을, 또는 최소 흐름과 최대 흐름의 임의 조합만을 기초로 할 수 있다. 그러나, 바람직한 실시예에 있어서, 파이프에 대한 지수적 감소는 그 파이프에 대한 최소 흐름을 기초로 한다. 그러한 감소는 사실상 지수적이므로, 그러한 감소는 또한 그 파이프에 대한 현재 흐름을 기초로 한다.
다음에, 단계 238에서는, 전송 비율을 단계 230에서 결정된 전체 전송 비율과 단계 234 또는 단계 236에서 결정된 미분 전송 비율의 최소값이 되도록 설정한다. 일 실시예에 있어서, 단계 238은 이전 에포크 동안에 결정된 전체 전송 비율과 미분 전송 비율을 이용해서 수행될 수 있다. 그러한 경우에, 단계 238은 단계 226 내지 단계 236과 동시에 수행될 수 있다.
다음에, 단계 240에서는, 그 전송 비율을 기초로 해서 큐(34)로의 트래픽을 제어한다. 바람직한 실시예에 있어서, 단계 240은 랜덤하게 또는 다른 인자, 예컨대 패킷의 우선 순위를 기초로 해서 패킷을 폐기하는 것을 포함함으로써, 단계 238에서 설정된 전송 비율이 유지되는 것을 보장한다. 또 다른 실시예에 있어서, 전송 비율 대신에 폐기 비율이 사용될 수 있다. 통상적으로, 폐기 비율은 1에서 전송 비 율을 뺀 것(1 - 전송 비율)이다.
다음에, 단계 242에서는, 스케줄러(35)를 사용해서, 큐로부터 제거되는 개개의 패킷을 그 패킷의 최종 목적지를 향하여 전송하는 것을 스케줄링한다. 따라서 스케줄러(35)는 큐(34)를 떠나는 패킷에 대한 대역폭을 할당한다. 환언하면, 스케줄러(35)는 큐(34)로부터 전송될 프레임의 순번을 할당한다. 스케줄러(35)는 단계 240에서 큐(34)로 진입한 패킷이 큐(34)로부터 제거되어 그의 최종 목적지를 향하여 전송되는 때를 결정한다. 따라서 스케줄러(35)는 스위치(10)를 통과하는 트래픽에 대한 또 다른 레벨의 제어를 제공한다.
바람직한 실시예에 있어서, 스케줄러(35)는 스케줄러(35)에 제공되는 패킷의 특성은 물론이고 후속 자원, 예컨대 목표 포트[예컨대, 포트 B(36) 중 하나]의 이용 가능한 대역폭을 기초로 해서 단계 242를 수행한다. 그러므로, 스케줄러(35)는 각 패킷이 그 패킷에 대한 요건에 일치되게 전송될 수 있도록 각 패킷을 스케줄링할 것이다. 예컨대, 스케줄러(35)는 실시간 패킷을 제공받을 수 있다. 음성 데이터와 같은 실시간 패킷은 전송 속도는 물론이고 전송 지터와 관련될 수 있다. 또한, 스케줄러(35)는 패킷을 전송 또는 수신하는 클라이언트가 지불한 서비스 타입을 고려할 수 있다. 서비스 타입은 패킷이 나온 파이프에 대한 최소 및 최대 흐름으로 표현되거나, 패킷 그 자체의 타입으로 표현될 수 있다. 실시간 패킷의 경우에, 스케줄러(35)는 그 패킷이 희망 시간 프레임 내에 도착할 수 있도록 그 패킷을 높은 우선 순위로 스케줄링할 것이다. 그러나, 스케줄러(35)는 또한 데이터 패킷, 예컨대 목적지에 도달하는 데 BE급(Best Eforts)의 서비스만이 요구되는 데이터 패킷을 제공받을 수도 있다. BE급의 서비스는 패킷을 그의 목적지로 전송함에 있어서 네트워크의 BE급의 서비스만을 요구하는 값싸고 낮은 레벨의 서비스이다. 스케줄러(35)는 패킷을 전송할 충분한 대역폭이 스위치(10)에 있을 때 패킷을 전송하도록 패킷을 매우 낮은 우선 순위로 스케줄링할 수 있다.
단계 230과 단계 234 또는 단계 236에서 각각 설정된 전체 전송 비율과 미분 전송 비율을 사용해서, 단계 242에서의 스케줄러의 사용과 관련하여 전송 비율을 결정하는 것은 세가지 이점을 제공한다. 첫째로, 방법(220)은 전체 전송 비율을 전송 비율로서 사용함으로써 큐(34)가 가득 채워지지 않도록 보장할 수 있다. 큐(34)가 채워진다면 큐(34)에 배치될 또 다른 패킷의 드롭을 요구할 것이고, 이것은 바람직하지 않다. 큐(34)에 대한 큐 레벨이 큐(34)가 가득 채워질 수 있다는 염려를 일으키기에 충분히 높을 때, 단계 238에서 전체 전송 비율이 전송 비율로서 선택될 수 있다. 따라서, 단계 238에서 전체 전송 비율이 전송 비율로서 설정되는 일이 드문 것이 바람직하다.
전체 전송 비율이 전송 비율로서 사용될 때, 전송 비율과 큐 레벨에 의해 기술되는 시스템에 임계 감쇠가 제공된다. 이것은 큐(34)와 그에 따른 스위치(10)를 통과하는 트래픽이 안정 상태에 신속히 도달할 수 있도록 해준다. 이러한 안정 상태는 최소 희망 큐 레벨과 최대 희망 큐 레벨 사이의 큐 레벨에 있고, 이것은 큐 레벨이 큐(34)를 가득 채울 만큼 너무 높아지지 않도록 보장할 수 있게끔 설정될 수 있다. 임계 감쇠가 제공되기 때문에, 큐(34)를 통과하는 트래픽은 큐 레벨과 전송 비율에 의해 기술되는 바와 같이, 전체 전송 비율이 사용될 때 최단 시간에 안 정 상태에 도달할 것이다.
방법(220)은 차별화된 서비스를 안정적으로 제공할 수 있다. 단계 238에서 큐 레벨이 최대 희망 큐 레벨을 초과할 위험이 없을 경우에 미분 전송 비율이 사용될 것이다. 환언하면, 단계 234 또는 단계 236에서 설정된 미분 전송 비율은 일반적으로 단계 238에서 전송 비율을 제공하는 데 사용될 것이다. 미분 전송 비율은 흐름들을 선형적으로 증가시키고 흐름들을 지수적으로 감소시키기 때문에, 일반적으로 미분 전송 비율은 파이프들을 통해 큐(34)로 전송되는 트래픽이 자동적이고 징조없이 안정 상태에 도달할 수 있도록 보장한다. 흐름들은 큐(34)가 초과 대역폭을 가지고 있는지의 여부에 따라 증가되거나 감소될 것이다. 안정 상태에 도달하면, 흐름들은 초과 대역폭이 존재하는 한 선형적으로 증가될 것이고, 그 다음에는, 초과 대역폭이 부족하여 초과 대역폭을 다시 이용할 수 있을 때까지 지수적으로 감소될 것이다. 이러한 행위가 반복될 것이다. 환언하면, 파이프들로부터의 트래픽은 한계 사이클로 알려진 안정적인 사이클 상태로 고정될 수 있다. 따라서, 파이프들을 통과하는 트래픽이 시작하는 상태와 상관없이, 시스템은 안정적인 주기적 행위를 향하여 진행할 것이다. 이러한 안정적인 행위는 증가와 감소의 다른 조합으로는 달성될 수 없다. 예컨대, 지수적 증가와 선형적 감소, 또는 지수적 증가와 지수적 감소는 안정적인 행위를 달성할 수 없다. 또한 각 파이프에 대한 흐름의 증가와 감소는 그 파이프에 대한 최소 또는 최대 흐름과 그 파이프에 대한 이전 흐름에 의존한다. 따라서, 상이한 파이프들은 상이한 레벨의 흐름 또는 서비스를 가질 수 있다. 결론적으로, 미분 전송 비율은 안정적인 행위를 달성할 수 있을 뿐만 아니라, 차별화된 서비스를 제공할 수 있고, 큐(34)에 대한 초과 대역폭을 공정하게 할당할 수 있다. 네트워크 관리자 또는 다른 사용자는 소비자들에 대한 최소 및 최대 흐름을 특정 소비자가 원하는 서비스 레벨에 따라 상이하게 설정하기만 하면 된다. 따라서, 방법(220)은 DiffServ를 이용한 네트워크와 같은 다양한 애플리케이션에서, 상이한 레벨의 서비스를 상이한 소비자에게 또는 상이한 매체에 제공하기를 원하는 인터넷 서비스 공급자에 의해 사용될 수 있다. 이것은 단지 방법(220)을 사용해서, 파이프에 대응하는 행위 집합 흐름, 소비자, 매체, 클래스 또는 다른 흐름에 대한 최소 및 최대 흐름을 설정함으로써 달성된다. 따라서, 방법(220)은 큐 레벨이 안정적으로 제어되는 것을 보장할 뿐만 아니라, 차별화된 서비스를 안정적으로 제공하는 것도 보장한다.
방법(220)의 세번째 이점은 단계 242에서 스케줄러(35)를 사용하는 것에 있다. 단계 238에서 전송 비율이 전체 전송 비율과 미분 전송 비율의 최소값이 되도록 설정되므로, 큐(34)에 제공되는 트래픽량을 제어할 수 있다. 그 결과, 스케줄러(35)는 그 자신이 바람직한 레이트로 완수할 수 있는 처리 가능한 작업량을 가질 수 있다. 환언하면, 방법(220)은 스케줄러(35)가 그 자신이 처리할 수 있는 것보다 더 높은 레이트로 큐로부터 트래픽을 제공받는 것을 방지할 수 있다. 이것은 스케줄러(35)가 가득 채워지는 것을 방지한다. 그 결과, 스케줄러(35)에 의한 레이턴시를 감소 또는 제거할 수 있다. 이것은 스케줄러(35)로 흐르는 패킷의 백로그(backlog)를 형성함으로 인해, 레이턴시, 손실, 대역폭 할당 및 지터에 예측할 수 없는 영향을 끼치는 것을 방지한다.
도 17은 큐 레벨과 제공 레이트를 기초로 해서 전체 전송 비율을 제어하기 위한 단계 230의 더 상세한 실시예를 250으로 도시하고 있다. 단계 230은 이전 에포크 동안의 전체 전송 비율, 큐 레벨 및 제공 레이트가 결정된 후에 시작된다. 바람직한 실시예에 있어서, 이전 에포크 동안의 전체 전송 비율은 이전의 방법(220)의 반복을 통해 결정되었다. 그러나, 그 전체 전송 비율은 아직 얻을 수 없더라도 결정될 수 있다. 큐 레벨은 그 에포크의 끝에서 최소 큐 레벨 Qmin과 최대 큐 레벨 Qmax에 따라 결정되는 것이 바람직하다.
단계 252에서, 큐 레벨이 Qmin 이상인지의 여부를 결정한다. 큐 레벨이 Qmin 이상이 아니라면, 단계 254에서, 전체 전송 비율은 1로 설정된다. 따라서, 단계 254는 큐 레벨이 충분히 낮을 때 모든 패킷이 인큐잉 매커니즘(32)에 의해 큐(34)로 전송되는 것을 보장한다. 단계 252에서 큐 레벨이 Qmin 이상이라고 결정되면, 단계 256에서, 큐 레벨이 Qmax 이상인지의 여부를 결정한다. 큐 레벨이 Qmax 이상이라면, 단계 258에서, 전체 전송 비율은 0으로 설정된다. 따라서, 단계 258은 큐 레벨이 매우 높을 때 모든 패킷이 폐기되는 것을 보장한다.
큐 레벨이 Qmin 이하도 Qmax 이상도 아니면, 단계 260에서, 전체 전송 비율은 임계 감쇠하도록 제어된다. 전체 전송 비율의 설정을 더 명확하게 설명하기 위해서, 큐(34)에의 제공 레이트 I(t)와 큐(34)로부터의 출력 레이트 O(t)는 평형 상태, 즉 안정 상태에서 일정하다고 가정할 것이다. 그러나, 그러한 분석은, 일반적 으로 네트워크에서 유효한 것처럼, 심지어 I(t)와 O(t)가 계속 변화되는 경우에도 여전히 유효하다.
평형 상태에서, 시간에 대한 큐 레벨의 변화율과 시간에 대한 전송 비율의 변화율은 출력 레이트와 제공 레이트가 일정하다면 0이 되어야 한다. 환언하면, 평형 상태에서,
0 = I(t)*gT(t) - O(t)
0 = K(t)*( β- αγT(t) - Q/Qmax)
I(t) = I
= 일정
O(t) = 0
= 일정
gT(t) = 전체 전송 비율
결론적으로, 평형 상태에서,
gT = O/I
α*gT = β - Q/Qmax
또한, 명확한 설명을 위해서, 최소한 Q/Qmax는 상수, 예컨대 0.25라고 가정하자. 안정 상태 영역에서 허용되는 I/O의 최대비는 1.6으로 결정된다; 이 I/O비에서, Q는 Qmax에 도달하고 T = 5/8이다. 또한, Q가 Qmax/4보다 작거나 같을 때 gT는 1과 같아야 하는 것으로 결정된다. 따라서, 이러한 두가지 최종 평형 상태에서,
0 = β - α*5/8 - 1 및
= β - α - 1/4
이러한 가정들로부터, α와 β의 수치는 각각 2와 2.25로 결정될 수 있다. Q/Qmax와 I/O에 대한 허용 오차가 달라지면 α와 β의 수치가 달라질 수 있다는 것을 주목해야 한다. 따라서, α와 β는 평형 상태 조건들과 스위치(10) 동작에 요구되는 범위에 관한 몇가지 가정들을 기초로 해서 결정될 수 있다. 안정 상태의 경우, 다음과 같다:
α 2* K 2(t) = 4*K(t)*I/Qmax 또는
K(t) = 4*I/(Qmax* α 2)
= I(t)/Qmax (상기 가정들 하에서)
따라서, K(t), α 및 β는 전송 비율이 시스템 동작에 요구되는 값들에서 임계 감쇠를 제공할 수 있도록 선택될 수 있다. 상기 등식들을 사용하면, 임계 감쇠 제공에 요구되는 전송 비율을 스위치(10)에 제공할 수 있다. 예컨대, Q/Qmax와 I/O에 대한 상기 가정들을 사용하면, 전송 비율과 큐 레벨에 의해 기술되는 시스템은 다음과 같다:
Q(t + Dt) = Q(t) + [I(t)*gT(t) - O(t)]*Dt
gT(t + Dt) = gT(t) + (I(t)*Dt/Qmax)*(2.25 - 2*gT(t) - Q(t)/Qmax)*Dt
여기서,
D(t) = Q와 gT 계산 사이의 시간 간격
= 에포크 시간
Q(t)/Qmax는 0.25보다 크거나 같음
I(t)/O(t)는 1.6보다 작거나 같음
Q(t), I(t) 및 O(t)에 대한 상기 조건들이 위반되는 상황들을 고려하기 위해서, 전송 비율을 큐 레벨을 기초로 해서 변화시킬 수 있다. 예컨대, 전송 비율은 Q/Qmax가 0.25보다 작을 때 1로 될 수 있다. 유사하게, I(t)/O(t)가 1.6보다 클 경우에는, 큐는 원하는 것보다 더 빠르게 채워지기 시작할 것이다. 결론적으로, 전송 비율은 큐가 최대값 레벨에 또는 그 근처에 도달할 때 0 또는 어떤 작은 값으로 설정될 수 있다.
따라서, 전체 전송 비율은 이전 에포크로부터의 큐 레벨, 제공 레이트 및 전송 비율은 물론 그 에포크의 길이를 기초로 해서 임계 감쇠하도록 설정된다. 전체 전송 비율이 전송 비율로서 사용되면, 큐(34)에 제공되는 패킷의 비율이 그 전송 비율과 같아지도록 인큐잉 매커니즘(32)이 패킷을 전송 또는 폐기한다. 패킷은 바람직하게는 랜덤하게 폐기되는데, 이것은 RED 방법에서 사용되는 것과 유사한 방식으로 행해진다. 그러나, 패킷은 또한 그 패킷의 우선 순위를 기초로 해서 폐기될 수 있다. 또한, 그 폐기된 패킷을 전송한 호스트에게 그 패킷이 폐기됐음을 알리는 통지를 제공하여, 그 호스트가 스위치(10)로의 트래픽을 일시적으로 중지시킬 수 있도록 하는 것이 바람직하다.
따라서, 전체 전송 비율은 방법(230)에 의해 임계 감쇠하도록 설정될 수 있다. 임계 감쇠는 큐 레벨의 희망 범위 내에서만 일어나는 것이 바람직하다. 이러한 범위를 넘으면, 임계 감쇠 계산에 있어서 전송 비율은 큐 레벨이 너무 높거나 또는 너무 낮다는 결정에 따라 0 또는 1로 설정된다. 패킷이 랜덤하게 또는 적어도 일부분 그 패킷의 우선 순위를 기초로 해서 폐기될 수 있기 때문에, 트래픽을 스위치(10)로 전송하는 호스트들의 동기화를 방지할 수 있다. 방법(220, 230)은 임계 감쇠를 제공하므로, RED 방법에 비해 더 안정적인 시스템을 제공할 수 있다. 방법(220, 230)은 또한 임계 감쇠를 제공하므로, BLUE 방법에 비해 더 빠르게 평형 상태에 도달한다. 결론적으로, 방법(220) 또는 방법(230)을 이용하는 스위치(10)를 사용한 네트워크의 성능은 향상된다.
도 18은 미분 전송 비율을 제공하기 위한 본 발명에 따른 방법(270)의 더 상세한 흐름도를 도시하고 있다. 방법(270)은 도 15 및 도 16에 도시된 방법(220)의 단계 232, 234, 236을 수행하는 데 사용될 수 있다. 도 18을 다시 참조하면, 큐 레벨, 순간 초과 대역폭 신호 B 및 초과 대역폭값 E를 바람직하게는 이전의 방법(270)의 반복으로부터 얻을 수 있다고 가정한다. 그러나, 얻을 수 없다면, 이러한 값들을 계산해야 할 것이다. 바람직한 실시예에 있어서, 이전 에포크 동안의 흐름들 또한 얻을 수 있어야 한다.
방법(270)은 제어되고 있는 파이프들 각각에 대한 최소 및 최대 흐름이 예컨대 네트워크 관리자에 의해 설정된 후에 시작된다. 단계 272에서, 해당 파이프에 대한 최소 및 최대 흐름을 기초로 해서 파이프들 각각에 대한 상수들이 계산된다. 각 파이프 i에 대해서, 상수 Ci와 상수 Di가 단계 272에서 계산된다. 상수 Ci
는 이하 논의되는 바와 같이, 파이프 i에 대한 흐름을 선형적으로 증가시키는 데 사용된다. 유사하게, 상수 Di는 이하 논의되는 바와 같이, 파이프 i에 대한 흐름을 지수적으로 감소시키는 데 사용된다. 바람직한 실시예에 있어서, 상수 Ci와 상수 Di는 모두 최소 흐름을 기초로 해서 계산된다. 다른 실시예에 있어서, 상이한 파이프에 대한 가중치가 또한 제공될 수 있다. 그러한 경우에 있어서, 상수 Ci와 상수 Di는 제공된 가중치를 기초로 해서 계산될 수도 있다.
파이프들에 대한 흐름들을 증가 또는 감소시키기 위한 상수들이 파이프들 각각에 대한 최소 및 최대 흐름과, 가중치가 사용된 곳에서는 가중치 또한 기초로 해서 결정된다. 바람직하게는, 파이프의 흐름을 증가시키기 위한 상수 Ci와 파이프의 흐름을 감소시키기 위한 상수 Di는 다음과 같이 계산된다:
바람직한 실시예에서와 같이, 모든 가중치가 1과 같다면, 다음과 같다:
여기서,
Wi = i번째 파이프에 대한 가중치, 바람직하게는 범위 [0,1] 내에 존재
W = 모든 N 가중치의 합
fimin = i번째 파이프에 대한 최소 흐름
또한, 흐름 단위들은 Dt와 Qmax가 1이 되도록 다시 선택된다.
상수들이 결정되고 나면, 파이프를 통하여 큐(34)로 트래픽을 흘려 보낸다. 단계 274에서, 초과 대역폭이 존재하는지의 여부가 결정된다. 바람직한 실시예에 있어서, 초과 대역폭은 큐(34)에 대한 큐 레벨이 0이거나 감소되고 있을 때에만 존재하는 것으로 결정된다. 그렇지 않은 경우에는 초과 대역폭이 존재하지 않는 것으로 결정될 것이다. 그러나, 초과 대역폭의 존재 여부를 결정함에 있어서 또 다른 기준을 이용할 수도 있다. 바람직한 실시예에 있어서, 결정된 큐 레벨은 전체 메모리 자원에 대한 레벨이다. 그러나, 결정되는 큐 레벨이 논리적 큐 또는 서브큐에 대한 것일 수도 있다. 초과 대역폭이 존재하지 않는다면, 단계 280에서, 순간 초과 대역폭 신호 B가 0으로 설정된다. 그 신호 B는 순간 신호로 불리는데, 그 이유는 그것이 큐 레벨에 대한 단 한번의 측정과 큐 레벨의 변화에 대한 단 한번의 결정을 기초로 하기 때문이다. 다음에, 단계 282에서, 초과 대역폭값 E는 상수, 바람직하게는 31/32에 이전 초과 대역폭값을 곱한 것에 1에서 상기 동일한 상수를 뺀 것, 바람직하게는 1/32에 B를 곱한 것을 더한 것[(31/32) ×이전 초과 대역폭값 + (1/32) ×B]으로 설정된다. 따라서, 바람직한 실시예에 있어서, 초과 대역폭값 E는 순간 초과 대역폭 신호 B의 지수 가중 평균이다. 초과 대역폭값은 단계 282에서 적절히 설정되는데, 그 이유는 순간 초과 대역폭 신호가 0이기 때문이다.
다음에, 단계 274에서 초과 대역폭 신호가 존재하는 것으로 결정되면, 단계 276에서, 순간 초과 대역폭 신호가 1로 설정된다. 다음에, 단계 278에서, 초과 대역폭값 E는 순간 초과 대역폭 신호의 지수 가중 평균으로 설정된다. 따라서, 바람직한 실시예에 있어서, 초과 대역폭값은 제1 상수에 이전 초과 대역폭값을 곱한 것에 제2 상수에 순간 초과 대역폭 신호를 곱한 것을 더한 것(제1 상수 ×이전 초과 대역폭값 + 제2 상수 ×순간 초과 대역폭 신호)이다. 제1 상수와 제2 상수는 모두 1보다 작고, 바람직하게는 각각 31/32과 1/32이다. 바람직한 실시예에 있어서, 지수 가중 대역폭값은 다음과 같이 설정된다:
E(t + Dt) = (31/32)*E(t) + B(t)/32
여기서,
E(t + Dt) = 현재 에포크 동안의 초과 대역폭값
E(t) = 이전 에포크 동안의 초과 대역폭값
B(t) = 이전 에포크 동안의 순간 초과 대역폭 신호
바람직한 실시예에 있어서, 단계 274 내지 단계 282과 동시에, 단계 284에서 각 파이프 i에 대한 미분 전송 비율이 설정된다. 그러나, 다른 실시예에 있어서, 미분 전송 비율은 순간 초과 대역폭 신호와 초과 대역폭값에 연속해서 갱신될 수 있다. 이전 순간 초과 대역폭 신호 B가 1(초과 대역폭 사용 가능)이었다면, 단계 284는 이전의 미분 전송 비율, 상수 Ci 및 초과 대역폭값을 기초로 해서 각 파이프 i에 대한 미분 전송 비율을 설정했을 것이다. 바람직하게는, 이전에 존재하는 초과 대역폭에 대해 단계 284에서 설정된 미분 전송 비율은 다음과 같다:
Ti(t + Dt) = Ti(t) + Ci*E(t)
여기서,
Dt = 에포크의 길이(전송 비율이 요전에 계산된 이후부터의 시간)
Ti(t) = i번째 파이프에 대한 이전 에포크(시간 t) 동안의 미분 전송 비율
바람직하게는, 흐름 단위들은 Dt와 최대 가능한 큐 레벨 Qmax가 1이 되도록 설정된다. 따라서, 미분 전송 비율은 선형적으로 감소된다. 또한, 미분 전송 비율은 초과 대역폭이 계속해서 존재하는 한 계속해서 선형적으로 증가된다. 초과 대역폭이 이전 에포크에서 존재하지 않았다면(B = 0), 단계 284에서 각 파이프 i에 대한 미분 전송 비율 Ti(t + Dt)는 그 파이프에 대한 이전의 미분 전송 비율 Ti(t), Di 및 그 파이프에 대한 이전 흐름 fi(t)를 기초로 해서 설정된다. 초과 대역폭이 이전에 존재하지 않았을 때의 미분 전송 비율은 바람직하게는 다음과 같다:
Ti(t + Dt) = Ti(t) - Di*fi(t)
따라서, 단계 284에서 설정된 미분 전송 비율은 미분 전송 비율과 그에 따른 흐름이 초과 대역폭이 계속해서 존재하지 않는 한 지수적으로 감소하도록 보장한다.
도 19는 본 발명과 함께 사용되는 스케줄러(290)의 바람직한 실시예를 도시 하고 있다. 스케줄러(290)는 바람직하게는 스케줄러(21, 25, 29, 35), 특히 스케줄러(35)로서 사용된다. 스케줄러(290)는 캘린더(292, 294, 296)와 가중 공정 큐잉 링("링")(298)을 포함한다. 그러나, 다른 스케줄러(도시되지 않음)가 본 발명과 함께 사용될 수 있음을 주목해야 한다. 예컨대, 스케줄러(290)보다 더 간단한 하나 이상의 FIFO가 사용될 수도 있다. 또 다른 실시예에 있어서, EDF(Earliest Deadline First) 스케줄러가 사용될 수도 있는데, 이것은 각 패킷의 데드라인을 조사해서 전송될 가장 급한 데드라인을 가진 것부터 한 줄로 배치한다. 유사하게, 또 다른 실시예에 있어서, 또 다른 스케줄러가 사용될 수도 있다. 일반적으로, 어떠한 스케줄러가 사용되든간에, 스케줄러는 전송할 다음 패킷을 반복적으로 선택함으로써 어떤 희망하는 방식 또는 방식들의 조합을 반복적으로 완수한다고 가정할 수 있다. 바람직한 실시예에 있어서, 그러한 방식들은 간단할 수도 있고, 2개의 FIFO 매커니즘(제1 FIFO는 절대 우선 순위를 가진 실시간 트래픽용이고, 제2 FIFO는 제1 FIFO가 비어 있을 경우에만 처리되는 다른 모든 트래픽용임)에 의해 스케줄링이 완수될 수도 있다. 이와는 달리, 대안의 바람직한 실시예에 있어서, 지속 전송 레이트, 피크 전송 레이트, 최대 버스트 크기 및 지터 한계를 필요로 하는 일부 방식들은 복잡한 스케줄러에 의해 실행될 수도 있다. 어떠한 경우이든간에, 스케줄러 그 자체는 흐름 제어, 폭주 상태 중에 낮은 값의 패킷을 의도적으로 드롭하는 일을 행하지 않는다. 그 대신에, 전체 전송 비율과 미분 전송 비율을 이용하는 전술한 업스트림 흐름 제어 매커니즘이 평이성, 견고성, 안정성, 공정 대역폭 할당, 낮은 드롭 레이트, 낮은 버퍼 점유율 및 고이용도를 충족시키는 동시에 흐름 제어를 제공 한다.
각 캘린더(292, 294, 296)는 전술한 바와 같은 기능을 한다. 따라서, 각 캘린더(292, 294, 296)는 특정수의 포지션을 갖는다. 하나의 캘린더(292, 294 또는 296)가 가진 포지션수는 다른 캘린더(292, 294 또는 296)가 가진 포지션수와 상이할 수 있다. 각 포지션은 0을 정확히 유지하거나 전송될 하나의 패킷을 정확히 유지할 수 있다. 이러한 설명의 문맥하에서는, 스케줄러, 예컨대 스케줄러(290), 캘린더(292, 294 또는 296) 또는 링(298)이 패킷을 갖는 것처럼 설명될 수 있다. 그러나, 스케줄러(290), 캘린더(292, 294 또는 296) 및 링(298)은 바람직하게는 패킷 그 자체보다는 그 패킷의 식별자를 사용한다.
각 캘린더(292, 294 또는 296)는 각 포지션마다 특정 시간을 소비한다. 바람직한 실시예에 있어서, 캘린더(292)는 저레이턴시 캘린더이고, 따라서 캘린더들(292, 294, 296) 중 제1 우선 순위를 갖는다. 캘린더(294)는 보통의 레이턴시 캘린더이고, 따라서 캘린더들(292, 294, 296) 중 제2 우선 순위를 갖는다. 캘린더(296)는 피크 레이트 캘린더이고, 따라서 캘린더들(292, 294, 296) 중 제3 우선 순위를 갖는다. 그러므로, 바람직한 실시예에 있어서, 캘린더(292)의 각 포지션에서 소비하는 시간은 캘린더(294)의 각 포지션에서 소비하는 시간보다 작다. 유사하게, 캘린더(294)의 각 포지션에서 소비하는 시간은 캘린더(296)의 각 포지션에서 소비하는 시간보다 작다. 따라서, 캘린더(292, 294, 296)는 제1, 제2 및 제3 우선 순위의 패킷을 스케줄링하는 데 사용된다. 스케줄러(290)는 캘린더(292, 294, 296) 각각의 포지션들을 순회(traverse)함으로써, 패킷이 대응하는 큐, 예컨대 큐(16)로부터 패킷의 우선 순위와 일치하게 전송되는 것을 보장한다.
링(298)은 바람직하게는 가장 낮은 우선 순위의 패킷을 스케줄링하는 데 사용된다. 따라서, 링(298)에 배치된 패킷은 캘린더(292, 294, 296) 중 어느 한 캘린더에 배치된 패킷보다 낮은 우선 순위를 갖는다. 링(298)은 바람직하게는 작업을 유지한다. 따라서, 특정 시간에 걸쳐서, 링(298)은 링(298)이 비어 있지 않는 한 일정량의 작업을 할 것이다. 링(298)은 또한 특정수의 포지션을 갖는다. 링(298) 내의 각 포지션은 0을 정확히 유지하거나 하나의 패킷을 정확히 유지할 수 있다. 그러나, 링(298)이 순회될 때, 링(298)은 다음의 점유된 포지션으로 직접 이동하고, 점유되는 않은 포지션을 건너 뛴다. 그 결과, 링(298)은 작업을 유지한다.
도 20은 스케줄러(290)를 이용해서 패킷을 스케줄링하기 위한 방법(300)의 일 실시예의 간략화된 흐름도이다. 단계 302에서, 스케줄링할 패킷의 특성, 예컨대, 패킷의 타입이 결정된다. 스케줄링할 패킷의 타입은 패킷에 포함된 데이터 종류를 부분적으로 기초로 할 수 있다(예컨대, 비디오와 같은 실시간 데이터 대 이메일과 같은 순수 데이터). 또한, 패킷이 나온 파이프의 타입도 고려될 수 있다. 예컨대, 일 실시예에 있어서, 일반적으로 사용 가능한 파이프의 타입에는 EF(Expedited forwarding), BE(Best Eforts) 및 AF(Assured Forwarding)가 있다. 통상적으로, EF 파이프는 실시간 트래픽을 이송한다. EF 파이프는 보장된 최대 흐름 레이트까지 트래픽을 흘려 보낼 수 있으며, 따라서 상대적으로 고가인 고레벨의 서비스를 제공한다. EF 파이프를 통해 보장된 최대 흐름 레이트 이상으로 이송되는 트래픽은 폐기될 수도 있다. 따라서, EF 파이프용 트래픽은 높은 우선 순위 캘린 더, 예컨대 캘린더(292)에 맵핑될 수 있고, 또한 캘린더(294, 296)에도 맵핑될 수 있다. BE 파이프는 통상적으로 낮은 우선 순위의 트래픽, 예컨대 데이터 패킷을 이송한다. BE 파이프는 통상적으로 더 높은 우선 순위의 트래픽에 적어도 최소 대역폭을 할당한 후에 사용 가능한 네트워크 자원을 이용해서 트래픽을 이송한다. 따라서, BE 파이프용 트래픽은 링(298)에 맵핑될 수 있다. AF 파이프는 소비자가 통상 프리미엄 가격을 지불한 보장된 최소 레이트를 갖는다. 그러나, AF 파이프는 네트워크에서 사용 가능한 초과 자원 또는 대역폭의 일부분을 할당받을 수도 있다. 따라서, AF 파이프용 트래픽은 캘린더(292, 294, 296)와 링(298)의 조합에 맵핑될 수 있다.
바람직한 실시예에 있어서, 단계 304에서, 스케줄링할 패킷과 동일한 파이프(대응 파이프)로부터의 이전 패킷의 특성, 예컨대, 패킷의 타입이 결정된다. 다음에, 단계 306에서, 스케줄링할 패킷이 제1 우선 순위인지의 여부를 결정한다. 단계 306에서 간주된 "제1 우선 순위"는 높은 우선 순위의 범위에 있을 수 있다. 또한, 패킷의 우선 순위를 결정함에 있어서, 이전 패킷의 우선 순위와 대응 파이프의 흐름 레이트를 고려할 수 있다. 예컨대, 패킷이 실시간 패킷과 같이 높은 우선 순위를 갖지만, 대응 파이프가 보장된 레이트보다 높은 흐름을 갖는 것으로 표시되면, 그 패킷은 제1 우선 순위를 갖는 것으로 간주될 수 없다. 패킷이 제1 우선 순위를 갖는다면, 단계 308에서, 그 패킷은 캘린더(292) 내의 한 포지션에 배치된다. 일 실시예에 있어서, 그 패킷이 배치되는 포지션은 캘린더(292) 내의 일부 다른 패킷의 우선 순위를 고려한다. 일 실시예에 있어서, 패킷은 캘린더(292) 내의 빈 포 지션에 배치된다. 그러나, 다른 실시예에 있어서, 패킷은 점유된 포지션에 배치될 수 있고 그 점유된 포지션으로부터의 패킷은 또 다른 포지션으로 이동될 수 있다.
그 패킷이 제1 우선 순위가 아니라면, 단계 310에서, 그 패킷이 제2 우선 순위인지의 여부를 결정한다. 단계 310에서 간주된 "제2 우선 순위"는 우선 순위의 범위에 있을 수 있다. 또한, 패킷의 우선 순위를 결정함에 있어서, 이전 패킷의 우선 순위와 대응 파이프의 흐름 레이트를 고려할 수 있다. 패킷이 제2 우선 순위를 갖는다면, 단계 312에서, 그 패킷은 제2 우선 순위를 갖는 캘린더(294) 내의 한 포지션에 배치된다. 일 실시예에 있어서, 그 패킷이 배치되는 포지션은 캘린더(294) 내의 일부 다른 패킷의 우선 순위를 고려한다. 일 실시예에 있어서, 패킷은 캘린더(294) 내의 빈 포지션에 배치된다. 그러나, 다른 실시예에 있어서, 패킷은 점유된 포지션에 배치될 수 있고 그 점유된 포지션으로부터의 패킷은 또 다른 포지션으로 이동될 수 있다.
그 패킷이 제2 우선 순위가 아니라면, 단계 314에서, 그 패킷이 제3 우선 순위인지의 여부를 결정한다. 단계 314에서 간주된 "제3 우선 순위"는 우선 순위의 범위에 있을 수 있다. 또한, 패킷의 우선 순위를 결정함에 있어서, 이전 패킷의 우선 순위와 대응 파이프의 흐름 레이트를 고려할 수 있다. 패킷이 제3 우선 순위를 갖는다면, 단계 316에서, 그 패킷은 제3 우선 순위를 갖는 캘린더(296) 내의 한 포지션에 배치된다. 또 다른 실시예에 있어서, 그 패킷이 배치되는 포지션은 캘린더(296) 내의 일부 다른 패킷의 우선 순위를 고려한다. 일 실시예에 있어서, 패킷은 캘린더(296) 내의 빈 포지션에 배치된다. 그러나, 다른 실시예에 있어서, 패킷은 점유된 포지션에 배치될 수 있고 그 점유된 포지션으로부터의 패킷은 또 다른 포지션으로 이동될 수 있다.
그 패킷이 제3 우선 순위가 아니라면, 단계 318에서, 그 패킷은 링(298) 내의 한 포지션에 배치된다. 일 실시예에 있어서, 그 패킷이 배치되는 포지션은 링(298) 내의 일부 다른 패킷의 우선 순위를 고려한다. 일 실시예에 있어서, 패킷은 링(298) 내의 빈 포지션에 배치된다. 그러나, 다른 실시예에 있어서, 패킷은 점유된 포지션에 배치될 수 있고 그 점유된 포지션으로부터의 패킷은 또 다른 포지션으로 이동될 수 있다. 바람직한 실시예에 있어서, 단계 318은 링(298)에 패킷을 배치함에 있어서 동일한 파이프로부터의 이전 패킷의 크기를 고려한다. 예컨대, 이전 패킷이 존재하지 않으면, 패킷은 바람직하게는 링(298) 내의 점유되지 않은 가장 먼 포지션에 배치된다. 그러나, 동일한 파이프로부터의 이전 패킷이 많으면, 패킷은 바람직하게는 링(298) 내의 점유되지 않은 좀 먼 포지션에 배치된다. 동일한 파이프로부터의 이전 패킷이 적으면, 패킷은 바람직하게는 링(298) 내의 점유되지 않은 가까운 포지션에 배치된다. 따라서, 더 많은 패킷을 전송하는 파이프는 링(298)의 각 순회마다 더 적은 기회(포지션)를 가질 것이다. 패킷을 배치할 때는 링(298)이 상이한 파이프에 대해 대략 동일한 레이트로 작업하는 것을 보장하기 위해서, 동일한 파이프로부터의 이전 패킷의 크기를 부분적으로 기초로 하는 것이 바람직하다.
도 21은 캘린더(292, 294, 296)와 링(298) 내의 패킷의 포지션을 기초로 해서 대응하는 큐로부터 패킷을 전송하기 위한 방법(320)의 일 실시예의 흐름도이다. 일반적으로, 스케줄러(290)는 캘린더(294)보다 캘린더(292)로부터 더 빠르게 패킷을 전송할 것이다. 또한 스케줄러(290)는 캘린더(296)보다 캘린더(294)로부터 더 빠르게 패킷을 전송할 것이다. 또한 스케줄러(290)는 링(298)보다 캘린더(296)로부터 더 빠르게 패킷을 전송할 것이다. 따라서, 캘린더(292, 294, 296)로 스케줄링된 패킷은 바람직하게는 링(298)으로 스케줄링된 패킷보다 먼저 전송된다.
단계 322에서, 제1 우선 순위의 캘린더(292) 내의 현재의 포지션이 비어 있는지의 여부를 결정한다. 캘린더(292) 내의 현재의 포지션이 비어 있지 않으면, 단계 324에서, 캘린더(292) 내의 현재의 포지션에 있는 패킷을 큐로부터 제거해서 스위치의 다음 부분에 전송한다. 캘린더(292) 내의 현재의 포지션이 비어 있다면, 단계 326에서, 제2 우선 순위의 캘린더(294) 내의 현재의 포지션이 비어 있는지의 여부를 결정한다. 캘린더(294) 내의 현재의 포지션이 비어 있지 않으면, 단계 328에서, 그 포지션에 있는 패킷을 큐로부터 제거해서 스위치의 다음 부분에 전송한다. 캘린더(294) 내의 현재의 포지션이 비어 있다면, 단계 330에서, 제3 우선 순위의 캘린더(296) 내의 현재의 포지션이 비어 있는지의 여부를 결정한다. 캘린더(296) 내의 현재의 포지션이 비어 있지 않으면, 단계 332에서, 캘린더(296)에 있는 패킷을 큐로부터 제거해서 스위치의 다음 부분에 전송한다. 캘린더(296) 내의 현재의 포지션이 비어 있다면, 단계 334에서, 링(298) 내의 현재의 포지션이 비어 있는지의 여부를 결정한다. 링(298) 내의 현재의 포지션이 비어 있지 않으면, 단계 336에서, 캘린더들(292, 294 또는 296) 중 어느 한 캘린더 내의 다음 포지션으로 이동할 때까지 링(298) 내의 포지션에 대응하는 패킷을 큐로부터 제거해서 스위치의 다음 부분에 전송한다. 바람직하게는, 이러한 상황은 캘린더(292) 내의 다음 포지션이 현재의 포지션이 될 때 발생한다. 그 이유는 제1 우선 순위의 캘린더(292)가 각 포지션에서 최소 시간을 소비하는 것이 바람직하기 때문이다.
다음에, 단계 338에서, 캘린더 또는 캘린더들 내의 다음 포지션이 캘린더의 현재 포지션이 된다. 스케줄러(290)의 어떤 부분이 패킷을 전송하는가에 상관없이, 캘린더들 중 적어도 하나는 전진된다. 바람직한 실시예에 있어서, 단계 338은 적어도 캘린더(292)를 다음 포지션으로 전진시킨다. 또한 바람직한 실시예에 있어서, 캘린더(294, 296)는 캘린더(292)가 다음 포지션으로 전진하는 시간의 배수로 다음 포지션으로 전진한다. 예컨대, 일 실시예에 있어서, 캘린더(294)는 캘린더(292)가 다음 포지션으로 전진할 때마다 512배 다음 포지션으로 전진한다. 이와 같이, 바람직한 실시예에 있어서, 단계 338은 다중 캘린더(292, 294, 296)를 다음 포지션으로 전진시킬 수 있다. 방법(320)은 반복될 수 있다. 따라서, 방법(300, 320)을 이용할 때, 트래픽 흐름 레이트, 지속 레이트, 피크 레이트 및 버스트 크기가 취급되는 것이 바람직하다. 트래픽 흐름 레이트가 지속 레이트 이하이면, 패킷은 일정한 시간 간격으로 제1 우선 순위 캘린더(292)로 진입한다. 트래픽 흐름 레이트가 지속 레이트보다 크고 피크 레이트보다 작으면, 버스트 크기에 의해 결정되는 시간 동안 패킷은 여전히 높은 우선 순위 캘린더(292, 294, 296)로 스케줄링된다. 트래픽 흐름 레이트가 더 긴 시간 동안 지속 레이트보다 크고 피크 레이트보다 작은 상태가 유지되면, 패킷은 링(298)으로 진입하는데, 그 링(298)은 최선의 노력만으로 패킷을 전송하는 것을 보장한다. 트래픽 흐름이 나중에 보장된 또는 지속 레이트 이하로 떨어지면, 패킷은 다시 한번 높은 우선 순위 캘린더로 스케줄링될 수 있다. 다음에, 패킷은 캘린더(292, 294, 296) 및 링(298)과 방법(320)에 의해 큐로부터 제거된다.
따라서, 스케줄링(290)은 패킷이 나온 파이프의 특성뿐만 아니라 그 패킷의 특성, 예컨대 그 파이프로부터의 이전 패킷의 특성을 기초로 해서 상이한 파이프로부터 큐, 예컨대 큐(34)로부터 개개의 패킷을 제거하는 것을 스케줄링한다. 그 결과, 스케줄러(290)는 스위치를 통과하는 트래픽을 정교하게 제어할 수 있다.
따라서, 전술한 방법들을 이용해서, 스위치(10)를 통과하는 트래픽을 제어할 수 있다. 예컨대 전체 전송 비율을 사용함으로써, 스위치의 메모리 자원이 고갈되지 않도록 보장할 수 있다. 특히, 특정 메모리 자원에 대한 큐 레벨은 대부분의 상황에서 작은 값으로 구동될 수 있다. 작은 값의 큐 레벨은 큐가 고갈되지 않도록 보장할 뿐만 아니라, 가득 채워진 또는 거의 채워진 큐가 부분적으로 원인이 되는 지터 및 다른 바람직하지 않은 현상을 감소시키거나 피할 수 있도록 보장한다. 또한, 예컨대 미분 전송 비율을 사용함으로써, 차별화된 서비스를 제공할 수 있다. 따라서, 서로 다른 소비자에게 서로 다른 레벨의 서비스를 제공할 수 있다. 또한, 스케줄러는 트래픽을 패킷 레벨로 제어하는 것을 보장한다. 또한, 전술한 스케줄러와 방법을 사용함으로써, 스케줄러가 완수할 수 있는 처리 가능한 작업량을 갖는 것을 보장할 수 있다. 따라서, 스케줄러로 인한 추가적인 레이턴시가 감소 또는 제거될 수 있다.
네트워크를 통과하는 트래픽을 제어하기 위한 방법 및 시스템이 개시되어 있 다. 본 발명을 구현하기 위해 기록된 소프트웨어는 컴퓨터로 판독 가능한 매체, 예컨대 메모리, CD-ROM 등에 저장되거나 네트워크를 통해 전송되고 프로세서에 의해 실행된다. 이와는 달리, 본 발명의 일부 또는 모두는 하드웨어로 구현될 수도 있다. 도시된 실시예들에 따라 본 발명을 설명하였지만, 그 변형예가 가능하고 이러한 변형예도 본 발명의 기술적 사상의 범위 내에 포함된다는 것을 당업자는 인지할 것이다. 따라서, 첨부된 청구 범위의 기술적 사상의 범위 내에서 당업자에 의해 많은 변형예가 이루어질 수 있다.
Claims (88)
- (a) 컴퓨터 네트워크에서 큐를 통해 이동하는 복수의 패킷의 흐름을 제어하는 단계와,(b) 상기 큐에 대한 큐 레벨을 결정하는 단계와,(c) 상기 복수의 패킷이 상기 큐에 제공되는 제공 레이트를 결정하는 단계와,(d) 상기 큐 레벨과 상기 제공 레이트를 기초로 해서 상기 복수의 패킷을 상기 큐로 전송하는 전송 비율을 제어하는 단계로서, 상기 전송 비율과 상기 큐 레벨은 상기 큐 레벨이 적어도 제1 큐 레벨과 제2 큐 레벨 사이에 존재할 경우 임계 감쇠되고, 시간에 대한 상기 전송 비율의 변화는 제1 수에 제2 수를 곱한 것과 같아지도록 설정되는데, 상기 제1 수는 시간에 종속되고, 상기 제2 수는 {제1 상수 - (제2 상수 ×상기 전송 비율) - (상기 큐 레벨/최대 가능한 큐 레벨)}인 것인 단계를 포함하는 컴퓨터 네트워크에서의 패킷 전송 제어 방법.
- 제1항에 있어서,상기 큐는 가능한 최대 큐 레벨을 가지며,(e) 상기 결정된 큐 레벨과 상기 최대 큐 레벨을 기초로 해서 가상 최대 큐 레벨을 결정하는 단계를 더 포함하는 방법.
- 제2항에 있어서,상기 가상 최대 큐 레벨을 결정하는 단계 (e)는(e1) 상기 큐 레벨이 제1 임계값 이상일 경우에는 상기 가상 최대 큐 레벨을 상기 최대 큐 레벨보다 작거나 같은 최대값으로 증가시키는 단계와,(e2) 상기 큐 레벨이 제2 임계값 이하일 경우에는 상기 가상 최대 큐 레벨을 감소시키는 단계를 더 포함하는 것인 방법.
- 제2항에 있어서,상기 가상 최대 큐 레벨을 결정하는 단계 (e)는(e1) 상기 최대 큐 레벨에 대한 승수를 제공하는 단계로서, 상기 승수는 상기 큐 레벨이 임계값 이하일 경우에는 제1 레벨에 근사되는 지수 가중 평균이고 상기 큐 레벨이 상기 임계값 이상일 경우에는 제2 레벨에 근사되는 지수 가중 평균이고, 상기 가상 큐 레벨에 대응하는 상기 제1 레벨은 최소 가상 큐 레벨이고 상기 가상 큐 레벨에 대응하는 상기 제2 레벨은 상기 최대 큐 레벨인 단계를 더 포함하며,상기 전송 비율을 제어하는 단계 (d)는(d1) 상기 큐 레벨, 상기 제공 레이트, 이전 전송 비율, 상기 승수 및 상기 최대 큐 레벨을 기초로 해서 상기 전송 비율을 제어하는 단계를 더 포함하는 것인 방법.
- 제4항에 있어서,상기 승수를 제공하는 단계 (e1)은(e1i) 상기 큐 레벨이 상기 임계값 이하일 경우에는 상기 승수를 제1 상수에 이전 승수를 곱한 것에 제2 상수를 더한 것과 같아지도록 설정하는 단계와,(e1ii) 상기 큐 레벨이 상기 임계값 이상일 경우에는 상기 승수를 상기 제1 상수에 상기 이전 승수를 곱한 것에 제3 상수를 더한 것과 같아지도록 설정하는 단계를 더 포함하는 것인 방법.
- 제5항에 있어서,상기 전송 비율을 제어하는 단계 (d1)은(d1i) 상기 큐 레벨이 최소 큐 레벨 이하일 경우 상기 전송 비율을 1이 되도록 제어하는 단계와,(d1ii) 상기 전송 비율을 1과 제2 값의 최소값[minimum(1, 제2 값)]이 되도록 제어하는 단계로서, 상기 제2 값은 제4 상수와 제3 값의 최대값[maximum(제4 상수, 제3 값)]이고, 상기 제3 값은 상기 이전 전송 비율에 제4 값을 더한 것(이전 전송 비율 + 제4 값)이고, 상기 제4 값은 제5 값에 제6 값을 곱한 것(제5 값 × 제6 값)이고, 상기 제5 값은 제5 상수에 이전 승수를 곱한 것에 상기 제공 레이트를 곱한 것에 시간 간격을 곱한 것을 상기 최대 큐 레벨로 나눈 것(제5 상수 × 이전 승수 × 제공 레이트 × 시간 간격 / 최대 큐 레벨)이고, 상기 제6 값은 제6 상수에서 제7 상수에 상기 이전 전송 비율을 곱한 것을 뺀 것에서 제8 상수에 상기 이전 승수를 곱한 것에 상기 큐 레벨을 곱한 것을 상기 최대 큐 레벨로 나눈 것을 뺀 것(제6 상수 - 제7 상수 × 이전 전송 비율 - 제8 상수 × 이전 승수 × 큐 레벨 / 최대 큐 레벨)인 단계를 더 포함하는 것인 방법.
- 제6항에 있어서,상기 큐 레벨은 이전 큐 레벨이고 상기 제공 레이트는 이전 제공 레이트인 것인 방법.
- 제1항에 있어서,상기 전송 비율은 복수의 에포크 각각 후마다 제어되며,상기 전송 비율을 제어하는 단계 (d)는(d1) 상기 복수의 에포크 중 어느 한 에포크 동안의 전송 비율과 이전 에포크 동안의 큐 레벨이 임계 감쇠되도록, 상기 이전 에포크 동안의 큐 레벨, 상기 이전 에포크 동안의 제공 레이트 및 상기 이전 에포크 동안의 전송 비율을 기초로 해서, 상기 복수의 에포크 중 상기 어느 한 에포크 동안의 전송 비율을 제어하는 단계를 더 포함하는 것인 방법.
- 제1항에 있어서,상기 큐는 하드웨어 메모리 자원을 더 포함하는 것인 방법.
- 제1항에 있어서,상기 전송 비율을 제어하는 단계 (d)는(d1) 상기 전송 비율과 상기 복수의 패킷에서의 각 패킷의 우선 순위를 기초로 해서 상기 복수의 패킷 중 일부를 드롭하는 단계를 더 포함하는 것인 방법.
- 제1항에 있어서,상기 전송 비율을 제어하는 단계 (d)는(d1) 상기 큐 레벨이 최소 임계값 이하일 경우에는 상기 복수의 패킷의 각 패킷이 전송되도록 상기 전송 비율을 제어하는 단계와,(d2) 상기 큐 레벨이 최대 임계값 이상일 경우에는 상기 복수의 패킷 중 어떠한 패킷도 전송되지 않거나 상기 복수의 패킷 중 일부만이 전송되도록 상기 전송 비율을 제어하는 단계와,(d3) 상기 큐 레벨이 상기 최소 임계값과 상기 최대 임계값 사이에 존재할 경우에는 상기 전송 비율과 상기 큐 레벨이 임계 감쇠되도록 상기 전송 비율을 제어하는 단계를 더 포함하는 것인 방법.
- 제1항에 있어서,(e) 상기 큐를 사용하는 복수의 파이프를 규정하는 단계와,(f) 상기 복수의 파이프 각각에 대한 최소 흐름과 최대 흐름을 설정하는 단계와,(g) 상기 큐에 대한 초과 대역폭이 존재하는지의 여부를 결정하는 단계와,(h) 초과 대역폭이 존재하고 상기 복수의 파이프 중 어느 한 파이프에 대한 흐름이 상기 어느 한 파이프에 대한 최대 흐름보다 작을 경우에는 상기 최소 흐름과 상기 최대 흐름 중 하나를 기초로 해서 상기 어느 한 파이프에 대한 흐름을 선형적으로 증가시키는 단계나,(i) 초과 대역폭이 존재하지 않고 상기 어느 한 파이프에 대한 흐름이 상기 어느 한 파이프에 대한 최소 흐름보다 클 경우에는 상기 최소 흐름과 상기 최대 흐름 중 하나를 기초로 해서 상기 어느 한 파이프에 대한 흐름을 지수적으로 감소시키는 단계를 더 포함함으로써, 상기 큐를 통과하는 트래픽이 안정을 유지하는 것인 방법.
- 제12항에 있어서,상기 복수의 파이프는 복수의 행위 집합 흐름인 것인 방법.
- 제12항에 있어서,상기 증가시키거나 감소시키는 단계 (h) 및 (i)는 상기 복수의 파이프 각각에 대해 수행되는 것인 방법.
- 제12항에 있어서,상기 초과 대역폭의 존재 여부를 결정하는 단계 (g)는(g1) 상기 큐에 대한 큐 레벨을 결정하는 단계와,(g2) 상기 큐 레벨이 증가하고 있는지 감소하고 있는지를 결정하는 단계와,(g3) 상기 큐 레벨이 감소하고 있거나 0인 경우에는 초과 대역폭이 존재하는 것으로 결정하고, 그렇지 않은 경우에는 초과 대역폭이 존재하지 않는 것으로 결정하는 단계를 더 포함하는 것인 방법.
- 제15항에 있어서,상기 초과 대역폭을 결정하는 단계 (g3)은(g3i) 상기 큐 레벨이 감소하고 있거나 0인 경우에는 순간 초과 대역폭 신호를 1로 설정하고, 그렇지 않은 경우에는 상기 순간 초과 대역폭 신호를 0으로 설정하는 단계를 더 포함하는 것인 방법.
- 제16항에 있어서,상기 초과 대역폭을 결정하는 단계 (g3)은(g3ii) 초과 대역폭 신호를 상기 순간 초과 대역폭 신호의 지수 가중 평균으로 설정하는 단계를 더 포함하는 것인 방법.
- 제17항에 있어서,상기 복수의 파이프 중 상기 어느 한 파이프에 대한 흐름은 제공 레이트에 전송 비율을 곱한 것이며,상기 증가시키거나 감소시키는 단계 (h) 및 (i)는(h1) 초과 대역폭이 존재하는 경우에는 상기 어느 한 파이프에 대한 흐름에 대한 전송 비율을 이전 전송 비율에 제1 수를 더한 것으로 설정하는 단계로서, 상기 제1 수는 제1 상수에 상기 초과 대역폭 신호를 곱한 것인 단계와,(i1) 초과 대역폭이 존재하지 않는 경우에는 상기 어느 한 파이프에 대한 흐름에 대한 전송 비율을 이전 전송 비율에서 제2 수를 뺀 것으로 설정하는 단계로서, 상기 제2 수는 상기 이전 흐름에 제2 상수를 곱한 것인 단계를 더 포함하는 것인 방법.
- 제18항에 있어서,상기 제1 상수와 상기 제2 상수는 상기 어느 한 파이프에 대한 최소 흐름에 종속되는 것인 방법.
- 제19항에 있어서,상기 제1 상수는 제3 수에 가중치를 곱한 것이고, 상기 제3 수는 큐 서비스 레이트에 상기 어느 한 파이프에 대한 최소 흐름을 더한 것에서 상기 복수의 파이프 각각에 대한 최소 흐름의 합을 뺀 것인 방법.
- 제12항에 있어서,상기 복수의 파이프 중 상기 어느 한 파이프에 대한 흐름은 전송 비율에 제공 레이트를 곱한 것이며,상기 증가시키거나 감소시키는 단계 (h) 및 (i)는(hi1) 상기 복수의 파이프로부터의 복수의 흐름의 합이 제1 큐 레벨보다 클 경우에는 상기 어느 한 파이프에 대한 흐름에 대한 전송 비율을 제1 상수로 설정하는 단계와,(hi2) 상기 파이프에 대한 흐름이 상기 파이프에 대한 최소 흐름보다 작거나 같을 경우에는 상기 파이프에 대한 전송 비율을 1과 상기 파이프에 대한 이전 전송 비율에 상기 제1 상수를 더한 것의 최소값으로 설정하는 단계와,(hi3) 상기 파이프에 대한 흐름이 상기 파이프에 대한 최대 흐름보다 클 경우에는 상기 파이프에 대한 전송 비율을 상기 파이프에 대한 이전 전송 비율에 1보다 작은 제2 상수를 곱한 것으로 설정하는 단계와,(hi4) 그렇지 않다면, 상기 파이프에 대한 전송 비율을 전체 전송 비율과 제1 수의 최소값으로 설정하는 단계로서, 상기 제1 수는 초과 대역폭이 존재하는 경우에는 상기 이전 전송 비율에 제2 수를 더한 것이고 초과 대역폭이 존재하지 않는 경우에는 상기 이전 전송 비율에서 제3 수를 뺀 것이고, 상기 제2 수는 제3 상수에 신호를 곱한 것이고, 상기 제3 상수는 상기 최소 흐름에 종속되고, 상기 신호는 초과 대역폭의 존재가 반복되는 경우에는 1에 근사되고 초과 대역폭의 부존재가 반복되는 경우에는 0에 근사되고, 상기 제3 수는 상기 최소 흐름에 종속되는 제4 상수에 상기 이전 흐름을 곱한 것이고, 상기 전체 전송 비율은 상기 전체 전송 비율과 상기 큐 레벨 사이에서의 임계 감쇠를 허용하는 것인 단계를 더 포함하는 것인 방법.
- 제21항에 있어서,상기 전체 전송 비율은 1과 제1 값의 최소값[minimum(1, 제1 값)]이고, 상기 제1 값은 제5 상수와 제2 값의 최대값[maximum(제5 상수, 제2 값)]이고, 상기 제2 값은 이전 전체 전송 비율에 제3 값을 더한 것(이전 전체 전송 비율 + 제3 값)이고, 상기 제3 값은 제4 값에 제5 값을 곱한 것(제4 값 × 제5 값)이고, 상기 제4 값은 제6 상수에 이전 승수를 곱한 것에 전체 제공 레이트를 곱한 것에 시간 간격을 곱한 것을 최대 큐 레벨로 나눈 것(제6 상수 × 이전 승수 × 전체 제공 레이트 × 시간 간격 / 최대 큐 레벨)이고, 상기 제5 값은 제7 상수에서 제8 상수에 상기 이전 승수를 곱한 것에 상기 큐 레벨을 곱한 것을 상기 최대 큐 레벨로 나눈 것을 뺀 것(제7 상수 - 제8 상수 × 이전 승수 × 큐 레벨 / 최대 큐 레벨)이고, 상기 승수는 이전 큐 레벨이 임계값 이하일 경우에는 제1 레벨에 근사되는 지수 가중 평균이고 상기 이전 큐 레벨이 상기 임계값 이상일 경우에는 제2 레벨에 근사되는 지수 가중 평균인 것인 방법.
- 제12항에 있어서,상기 전송 비율을 제어하는 단계 (d)는 전체 전송 비율을 제어하며,(j) 상기 복수의 파이프 중 어느 한 파이프에 대한 흐름에 대한 전송 비율을 상기 전체 전송 비율과 미분 전송 비율의 최소값으로 설정하는 단계로서, 상기 미분 전송 비율은 초과 대역폭이 존재하고 상기 복수의 파이프 중 상기 어느 한 파이프에 대한 흐름이 상기 어느 한 파이프에 대한 최대 흐름보다 작을 경우에는 상기 최소 흐름이나 상기 최대 흐름을 기초로 해서 상기 어느 한 파이프에 대한 흐름을 선형적으로 증가시키고, 초과 대역폭이 존재하지 않고 상기 어느 한 파이프에 대한 흐름이 상기 어느 한 파이프에 대한 최소 흐름보다 클 경우에는 상기 최소 흐름이나 상기 최대 흐름을 기초로 해서 상기 어느 한 파이프에 대한 흐름을 지수적으로 감소시킴으로써, 상기 큐를 통과하는 트래픽이 안정을 유지하는 것인 단계와,(k) 상기 전송 비율을 기초로 해서 트래픽을 상기 큐로 전송하는 것을 제어하는 단계와,(l) 상기 큐로부터의 트래픽을 제어하기 위해서 스케줄러를 사용하는 단계를 더 포함하는 방법.
- 제23항에 있어서,상기 전송 비율을 설정하는 단계 (j)는(j1) 초과 대역폭이 존재하는 경우에는 상기 어느 한 파이프에 대한 흐름에 대한 미분 전송 비율을 이전 미분 전송 비율에 제1 수를 더한 것으로 설정하는 단계로서, 상기 제1 수는 제1 상수에 초과 대역폭값을 곱한 것인 단계와,(j2) 초과 대역폭이 존재하지 않는 경우에는 상기 어느 한 파이프에 대한 흐름에 대한 미분 전송 비율을 이전 미분 전송 비율에서 제2 수를 뺀 것으로 설정하는 단계로서, 상기 제2 수는 상기 이전 흐름에 제2 상수를 곱한 것인 단계를 더 포함하는 것인 방법.
- 제23항에 있어서,상기 전송 비율을 설정하는 단계 (j)는(j1) 상기 복수의 파이프로부터의 복수의 흐름의 합이 제1 큐 레벨보다 클 경우에는 상기 어느 한 파이프에 대한 흐름에 대한 미분 전송 비율을 제1 상수로 설정하는 단계와,(j2) 상기 파이프에 대한 흐름이 상기 파이프에 대한 최소 흐름보다 작거나 같을 경우에는 상기 파이프에 대한 미분 전송 비율을 1과 상기 파이프에 대한 이전 미분 전송 비율에 상기 제1 상수를 더한 것의 최소값으로 설정하는 단계와,(j3) 상기 파이프에 대한 흐름이 상기 파이프에 대한 최대 흐름보다 클 경우에는 상기 파이프에 대한 미분 전송 비율을 상기 파이프에 대한 이전 전송 비율에 1보다 작은 제2 상수를 곱한 것으로 설정하는 단계와,(j4) 그렇지 않다면, 상기 파이프에 대한 전송 비율을 전체 전송 비율과 제1 수의 최소값으로 설정하는 단계로서, 상기 제1 수는 초과 대역폭이 존재하는 경우에는 상기 이전 미분 전송 비율에 제2 수를 더한 것이고 초과 대역폭이 존재하지 않는 경우에는 상기 이전 미분 전송 비율에서 제3 수를 뺀 것이고, 상기 제2 수는 제3 상수에 신호를 곱한 것이고, 상기 제3 상수는 상기 최소 흐름에 종속되고, 상기 신호는 초과 대역폭의 존재가 반복되는 경우에는 1에 근사되고 초과 대역폭의 부존재가 반복되는 경우에는 0에 근사되고, 상기 제3 수는 상기 최소 흐름에 종속되는 제4 상수에 상기 이전 흐름을 곱한 것인 단계를 더 포함하는 것인 방법.
- 제23항에 있어서,상기 전송 비율을 설정하는 단계 (j)는 상기 복수의 파이프 각각에 대해 수행되는 것인 방법.
- 제23항에 있어서,상기 전체 전송 비율은 1과 제1 값의 최소값[minimum(1, 제1 값)]이고, 상기 제1 값은 제5 상수와 제2 값의 최대값[maximum(제5 상수, 제2 값)]이고, 상기 제2 값은 이전 전체 전송 비율에 제3 값을 더한 것(이전 전체 전송 비율 + 제3 값)이고, 상기 제3 값은 제4 값에 제5 값을 곱한 것(제4 값 × 제5 값)이고, 상기 제4 값은 제6 상수에 이전 승수를 곱한 것에 전체 제공 레이트를 곱한 것에 시간 간격을 곱한 것을 최대 큐 레벨로 나눈 것(제6 상수 × 이전 승수 × 전체 제공 레이트 × 시간 간격 / 최대 큐 레벨)이고, 상기 제5 값은 제7 상수에서 제8 상수에 상기 이전 승수를 곱한 것에 상기 큐 레벨을 곱한 것을 상기 최대 큐 레벨로 나눈 것을 뺀 것(제7 상수 - 제8 상수 × 이전 승수 × 큐 레벨 / 최대 큐 레벨)이고, 상기 승수는 이전 큐 레벨이 임계값 이하일 경우에는 제1 레벨에 근사되는 지수 가중 평균이고 상기 이전 큐 레벨이 상기 임계값 이상일 경우에는 제2 레벨에 근사되는 지수 가중 평균인 것인 방법.
- 제23항에 있어서,상기 복수의 파이프 각각은 적어도 한 타입의 서비스를 포함하며,상기 스케줄러를 사용하는 단계 (l)은(l1) 상기 적어도 한 타입의 서비스를 기초로 해서 상기 복수의 파이프 각각에 대해 상기 큐로부터의 트래픽을 스케줄링하기 위해서 상기 스케줄러를 사용하는 단계를 더 포함하는 것인 방법.
- 제28항에 있어서,상기 적어도 한 타입의 서비스는 상기 복수의 파이프 각각에서 상기 복수의 흐름의 각 흐름에 대한 특정 타입의 서비스이며,상기 스케줄러를 사용하는 단계 (l1)은(l1i) 상기 복수의 흐름의 각 흐름에 대한 상기 특정 타입의 서비스를 기초로 해서 상기 복수의 흐름의 각 흐름에 대해 상기 큐로부터의 트래픽을 스케줄링하기 위해서 상기 스케줄러를 사용하는 단계를 더 포함하는 것인 방법.
- 제23항에 있어서,상기 스케줄러는 적어도 하나의 캘린더를 포함하는 것인 방법.
- 제23항에 있어서,상기 스케줄러는 적어도 하나의 가중 공정 큐잉 링을 포함하는 것인 방법.
- 제23항에 있어서,상기 스케줄러는 적어도 하나의 캘린더와 적어도 하나의 가중 공정 큐잉 링을 포함하는 것인 방법.
- 제23항에 있어서,상기 스케줄러는 적어도 하나의 캘린더와 적어도 하나의 선입선출 매커니즘을 포함하는 것인 방법.
- 컴퓨터 네트워크를 통해 이동하는 복수의 패킷의 흐름의 일부를 저장하는 큐와,상기 큐와 결합되어 상기 복수의 패킷의 제공 레이트를 수신하고 상기 복수의 패킷을 상기 큐로 전송하는 전송 비율을 제어하는 인큐잉 매커니즘으로서, 상기 전송 비율은 상기 큐에 대한 큐 레벨과 상기 제공 레이트를 기초로 해서 제어됨으로써 상기 전송 비율과 상기 큐 레벨은 상기 큐 레벨이 적어도 제1 큐 레벨과 제2 큐 레벨 사이에 존재할 경우 임계 감쇠되고, 시간에 대한 상기 전송 비율의 변화는 제1 수에 제2 수를 곱한 것과 같아지도록 설정되는데, 상기 제1 수는 시간에 종속되고, 상기 제2 수는 {제1 상수 - (제2 상수 ×상기 전송 비율) - (상기 큐 레벨/최대 가능한 큐 레벨)}인 것인 인큐잉 매커니즘을 포함하는 컴퓨터 네트워크에서의 패킷 전송 제어 장치.
- 제34항에 있어서,상기 인큐잉 매커니즘은 상기 큐에 대한 큐 레벨과 최대 큐 레벨을 기초로 해서 가상 최대 큐 레벨을 결정하고, 상기 큐에 대한 큐 레벨, 상기 제공 레이트 및 상기 가상 최대 큐 레벨을 기초로 해서 상기 전송 비율을 제어하는 것인 장치.
- 제35항에 있어서,상기 인큐잉 매커니즘은 상기 큐 레벨이 제1 임계값 이상일 경우에는 상기 가상 최대 큐 레벨을 상기 최대 큐 레벨보다 작거나 같은 최대값으로 증가시키고 상기 큐 레벨이 제2 임계값 이하일 경우에는 상기 가상 최대 큐 레벨을 감소시키는 것인 장치.
- 제35항에 있어서,상기 인큐잉 매커니즘은 상기 최대 큐 레벨에 대한 승수를 제공하며, 상기 승수는 상기 큐 레벨이 임계값 이하일 경우에는 제1 레벨에 근사되는 지수 가중 평균이고 상기 큐 레벨이 상기 임계값 이상일 경우에는 제2 레벨에 근사되는 지수 가중 평균이고, 상기 가상 큐 레벨에 대응하는 상기 제1 레벨은 최소 가상 큐 레벨이고 상기 가상 큐 레벨에 대응하는 상기 제2 레벨은 상기 최대 큐 레벨이며,상기 인큐잉 매커니즘은 상기 큐 레벨, 상기 제공 레이트, 이전 전송 비율, 상기 승수 및 상기 최대 큐 레벨을 기초로 해서 상기 전송 비율을 제어하는 것인 장치.
- 제37항에 있어서,상기 인큐잉 매커니즘은 상기 큐 레벨이 상기 임계값 이하일 경우에는 상기 승수를 제1 상수에 이전 승수를 곱한 것에 제2 상수를 더한 것과 같아지도록 설정하고, 상기 큐 레벨이 상기 임계값 이상일 경우에는 상기 승수를 상기 제1 상수에 상기 이전 승수를 곱한 것에 제3 상수를 더한 것과 같아지도록 설정하는 것인 장치.
- 제38항에 있어서,상기 인큐잉 매커니즘은 상기 전송 비율을 1과 제2 값의 최소값[minimum(1, 제2 값)]이 되도록 제어하며, 상기 제2 값은 제4 상수와 제3 값의 최대값[maximum(제4 상수, 제3 값)]이고, 상기 제3 값은 상기 이전 전송 비율에 제4 값을 더한 것(이전 전송 비율 + 제4 값)이고, 상기 제4 값은 제5 값에 제6 값을 곱한 것(제5 값 × 제6 값)이고, 상기 제5 값은 제5 상수에 이전 승수를 곱한 것에 상기 제공 레이트를 곱한 것에 시간 간격을 곱한 것을 상기 최대 큐 레벨로 나눈 것(제5 상수 × 이전 승수 × 제공 레이트 × 시간 간격 / 최대 큐 레벨)이고, 상기 제6 값은 제6 상수에서 제7 상수에 상기 이전 전송 비율을 곱한 것을 뺀 것에서 제8 상수에 상기 이전 승수를 곱한 것에 상기 큐 레벨을 곱한 것을 상기 최대 큐 레벨로 나눈 것을 뺀 것(제6 상수 - 제7 상수 × 이전 전송 비율 - 제8 상수 × 이전 승수 × 큐 레벨 / 최대 큐 레벨)인 장치.
- 제39항에 있어서,상기 큐 레벨은 이전 큐 레벨이고 상기 제공 레이트는 이전 제공 레이트인 것인 장치.
- 제35항에 있어서,상기 큐는 하드웨어 메모리 자원을 더 포함하는 것인 장치.
- 제35항에 있어서,상기 인큐잉 매커니즘은 상기 전송 비율과 상기 복수의 패킷에서의 각 패킷의 우선 순위를 기초로 해서 상기 복수의 패킷 중 일부를 폐기하는 것인 장치.
- 제34항에 있어서,상기 큐는 트래픽이 전송되는 복수의 파이프에 의해 사용되며,상기 인큐잉 매커니즘은 사용자에 의해 상기 복수의 파이프 각각에 대해 설정된 최소 흐름과 최대 흐름을 사용하고,상기 인큐잉 매커니즘은 상기 큐에 대한 초과 대역폭이 존재하는지의 여부를 결정하고, (a) 초과 대역폭이 존재하고 상기 복수의 파이프 중 어느 한 파이프에 대한 흐름이 상기 어느 한 파이프에 대한 최대 흐름보다 작을 경우에는 상기 최소 흐름이나 상기 최대 흐름을 기초로 해서 상기 어느 한 파이프에 대한 흐름을 선형적으로 증가시키고, (b) 초과 대역폭이 존재하지 않고 상기 어느 한 파이프에 대한 흐름이 상기 어느 한 파이프에 대한 최소 흐름보다 클 경우에는 상기 최소 흐름이나 상기 최대 흐름을 기초로 해서 상기 어느 한 파이프에 대한 흐름을 지수적으로 감소시킴으로써, 상기 큐를 통과하는 트래픽이 안정을 유지하는 것인 장치.
- 제43항에 있어서,상기 복수의 파이프는 복수의 행위 집합 흐름인 것인 장치.
- 제43항에 있어서,상기 인큐잉 매커니즘은 초과 대역폭의 존재 여부를 기초로 해서 상기 복수의 파이프 각각에 대한 상기 흐름을 증가시키거나 감소시키는 것인 장치.
- 제43항에 있어서,상기 인큐잉 매커니즘은 상기 큐에 대한 큐 레벨을 결정하고 상기 큐 레벨이 증가하고 있는지 감소하고 있는지를 결정함으로써 초과 대역폭의 존재 여부를 결정하는데, 상기 큐 레벨이 감소하고 있거나 0인 경우에는 초과 대역폭이 존재한다는 것을 나타내고 그렇지 않은 경우에는 초과 대역폭이 존재하지 않는다는 것을 나타내는 것인 장치.
- 제46항에 있어서,상기 인큐잉 매커니즘은 상기 큐 레벨이 감소하고 있거나 0인 경우에는 순간 초과 대역폭 신호를 1로 설정하고 그렇지 않은 경우에는 상기 순간 초과 대역폭 신호를 0으로 설정함으로써 초과 대역폭이 존재하는지를 나타내는 것인 장치.
- 제47항에 있어서,상기 인큐잉 매커니즘은 초과 대역폭 신호를 상기 순간 초과 대역폭 신호의 지수 가중 평균으로 설정함으로써 초과 대역폭이 존재하는지를 나타내는 것인 장치.
- 제48항에 있어서,상기 복수의 파이프 중 상기 어느 한 파이프에 대한 흐름은 제공 레이트에 전송 비율을 곱한 것이며,상기 인큐잉 매커니즘은 초과 대역폭이 존재하는 경우에는 상기 전송 비율을 이전 전송 비율에 제1 수 - 상기 제1 수는 제1 상수에 상기 초과 대역폭 신호를 곱한 것임 - 를 더한 것으로 설정하고, 초과 대역폭이 존재하지 않는 경우에는 상기 전송 비율을 이전 전송 비율에서 제2 수 - 상기 제2 수는 상기 이전 전송 비율에 제2 상수를 곱한 것임 - 를 뺀 것으로 설정함으로써, 상기 흐름을 증가시키거나 감소시키는 것인 장치.
- 제49항에 있어서,상기 제1 상수와 상기 제2 상수는 상기 어느 한 파이프에 대한 최소 흐름에 종속되는 것인 장치.
- 제50항에 있어서,상기 제1 상수는 0.125이고, 상기 제2 상수는 0.875인 것인 장치.
- 제50항에 있어서,상기 제1 상수는 제3 수에 가중치를 곱한 것이고, 상기 제3 수는 큐 서비스 레이트에 상기 어느 한 파이프에 대한 최소 흐름을 더한 것에서 상기 복수의 파이프 각각에 대한 최소 흐름의 합을 뺀 것인 장치.
- 제43항에 있어서,상기 인큐잉 매커니즘은 상기 복수의 파이프로부터의 복수의 흐름의 합이 제1 큐 레벨보다 클 경우에는 상기 전송 비율을 제1 상수로 설정하고, 상기 파이프에 대한 흐름이 상기 파이프에 대한 최소 흐름보다 작거나 같을 경우에는 상기 파이프에 대한 전송 비율을 1과 상기 파이프에 대한 이전 전송 비율에 상기 제1 상수를 더한 것의 최소값으로 설정하고, 상기 파이프에 대한 흐름이 상기 파이프에 대한 최대 흐름보다 클 경우에는 상기 파이프에 대한 전송 비율을 상기 파이프에 대한 이전 전송 비율에 1보다 작은 제2 상수를 곱한 것으로 설정하고, 그렇지 않다면 상기 파이프에 대한 전송 비율을 전체 전송 비율과 제1 수의 최소값으로 설정함으로써, 상기 흐름을 증가시키거나 감소시키며,상기 제1 수는 초과 대역폭이 존재하는 경우에는 상기 이전 전송 비율에 제2 수를 더한 것이고 초과 대역폭이 존재하지 않는 경우에는 상기 이전 전송 비율에서 제3 수를 뺀 것이고, 상기 제2 수는 제3 상수에 신호를 곱한 것이고, 상기 제3 상수는 상기 최소 흐름에 종속되고, 상기 신호는 초과 대역폭의 존재가 반복되는 경우에는 1에 근사되고 초과 대역폭의 부존재가 반복되는 경우에는 0에 근사되고, 상기 제3 수는 상기 최소 흐름에 종속되는 제4 상수에 상기 이전 전송 비율을 곱한 것이고, 상기 전체 전송 비율은 상기 전체 전송 비율과 상기 큐 레벨 사이에서의 임계 감쇠를 허용하는 것인 장치.
- 제53항에 있어서,상기 전체 전송 비율은 1과 제1 값의 최소값[minimum(1, 제1 값)]이고, 상기 제1 값은 제5 상수와 제2 값의 최대값[maximum(제5 상수, 제2 값)]이고, 상기 제2 값은 이전 전체 전송 비율에 제3 값을 더한 것(이전 전체 전송 비율 + 제3 값)이고, 상기 제3 값은 제4 값에 제5 값을 곱한 것(제4 값 × 제5 값)이고, 상기 제4 값은 제6 상수에 이전 승수를 곱한 것에 전체 제공 레이트를 곱한 것에 시간 간격을 곱한 것을 최대 큐 레벨로 나눈 것(제6 상수 × 이전 승수 × 전체 제공 레이트 × 시간 간격 / 최대 큐 레벨)이고, 상기 제5 값은 제7 상수에서 제8 상수에 상기 이전 승수를 곱한 것에 상기 큐 레벨을 곱한 것을 상기 최대 큐 레벨로 나눈 것을 뺀 것(제7 상수 - 제8 상수 × 이전 승수 × 큐 레벨 / 최대 큐 레벨)이고, 상기 승수는 이전 큐 레벨이 임계값 이하일 경우에는 제1 레벨에 근사되는 지수 가중 평균이고 상기 이전 큐 레벨이 상기 임계값 이상일 경우에는 제2 레벨에 근사되는 지수 가중 평균인 것인 장치.
- 제43항에 있어서,복수의 블레이드에 대응하는 복수의 프로세서를 포함하며,상기 복수의 프로세서 각각은 복수의 포트를 갖고,상기 큐는 상기 복수의 프로세서 중 한 프로세서에 대한 것인 장치.
- 제43항에 있어서,상기 인큐잉 매커니즘은 상기 큐 레벨과 상기 제공 레이트를 기초로 해서, 상기 복수의 패킷을 상기 큐로 전송하는 전체 전송 비율을 제어함으로써, 상기 전체 전송 비율과 상기 큐 레벨은 상기 큐 레벨이 적어도 제1 큐 레벨과 제2 큐 레벨 사이에 존재할 경우 임계 감쇠되고,상기 인큐잉 매커니즘은 상기 복수의 파이프 중 어느 한 파이프에 대한 흐름에 대한 전송 비율을 상기 전체 전송 비율과 미분 전송 비율의 최소값으로 설정하는데, 상기 미분 전송 비율은 초과 대역폭이 존재하고 상기 복수의 파이프 중 상기 어느 한 파이프에 대한 흐름이 상기 어느 한 파이프에 대한 최대 흐름보다 작을 경우에는 상기 최소 흐름이나 상기 최대 흐름을 기초로 해서 상기 어느 한 파이프에 대한 흐름을 선형적으로 증가시키고, 초과 대역폭이 존재하지 않고 상기 어느 한 파이프에 대한 흐름이 상기 어느 한 파이프에 대한 최소 흐름보다 클 경우에는 상기 최소 흐름이나 상기 최대 흐름을 기초로 해서 상기 어느 한 파이프에 대한 흐름을 지수적으로 감소시킴으로써, 상기 큐를 통과하는 트래픽이 안정을 유지하고,상기 인큐잉 매커니즘은 상기 전송 비율을 기초로 해서 트래픽을 상기 큐로 전송하는 것을 제어하며,상기 큐로부터의 트래픽을 제어하기 위한 스케줄러를 더 포함하는 장치.
- 제56항에 있어서,상기 복수의 파이프 각각은 적어도 한 타입의 서비스를 포함하며,상기 스케줄러는 상기 적어도 한 타입의 서비스를 기초로 해서 상기 복수의 파이프 각각에 대해 상기 큐로부터의 트래픽을 스케줄링하는 것인 장치.
- 제57항에 있어서,상기 적어도 한 타입의 서비스는 상기 복수의 파이프 각각에서 상기 복수의 흐름의 각 흐름에 대한 특정 타입의 서비스이며,상기 스케줄러는 상기 복수의 흐름의 각 흐름에 대한 상기 특정 타입의 서비스를 기초로 해서 상기 복수의 흐름의 각 흐름에 대해 상기 큐로부터의 트래픽을 스케줄링하는 것인 장치.
- 제56항에 있어서,상기 스케줄러는 적어도 하나의 캘린더를 포함하는 것인 장치.
- 제56항에 있어서,상기 스케줄러는 적어도 하나의 가중 공정 큐잉 링을 포함하는 것인 장치.
- 제56항에 있어서,상기 스케줄러는 적어도 하나의 캘린더와 적어도 하나의 가중 공정 큐잉 링을 포함하는 것인 장치.
- 제56항에 있어서,상기 스케줄러는 적어도 하나의 캘린더와 적어도 하나의 선입선출 매커니즘을 포함하는 것인 장치.
- 제35항에 있어서,상기 인큐잉 매커니즘은 복수의 에포크 각각 후마다 상기 전송 비율을 제어하며,상기 인큐잉 매커니즘은 상기 복수의 에포크 중 어느 한 에포크 동안의 전송 비율과 이전 에포크 동안의 큐 레벨이 임계 감쇠되도록, 상기 이전 에포크 동안의 큐 레벨, 상기 이전 에포크 동안의 제공 레이트 및 상기 이전 에포크 동안의 전송 비율을 기초로 해서, 상기 복수의 에포크 중 상기 어느 한 에포크 동안의 전송 비율을 제어하는 것인 장치.
- 제34항에 있어서,상기 큐는 하드웨어 메모리 자원을 더 포함하는 것인 장치.
- 제34항에 있어서,상기 인큐잉 매커니즘은 시간에 대한 상기 전송 비율의 변화를 제1 수에 제2 수를 곱한 것과 같아지도록 제어하는데, 상기 제1 수는 시간에 종속되고, 상기 제2 수는 제1 상수에서 제2 상수에 상기 전송 비율을 곱한 것을 뺀 것에서 상기 큐 레벨을 최대 가능한 큐 레벨로 나눈 것을 뺀 것인 장치.
- 제34항에 있어서,상기 인큐잉 매커니즘은 상기 전송 비율과 상기 복수의 패킷에서의 각 패킷의 우선 순위를 기초로 해서 상기 복수의 패킷 중 일부를 드롭하는 것인 장치.
- 제34항에 있어서,상기 인큐잉 매커니즘은 상기 큐 레벨이 최소 임계값 이하일 경우에는 상기 복수의 패킷의 각 패킷이 전송되도록 상기 전송 비율을 제어하고, 상기 큐 레벨이 최대 임계값 이상일 경우에는 상기 복수의 패킷 중 어떠한 패킷도 전송되지 않도록 상기 전송 비율을 제어하고, 상기 큐 레벨이 상기 최소 임계값과 상기 최대 임계값 사이에 존재할 경우에는 상기 전송 비율과 상기 큐 레벨이 임계 감쇠되도록 상기 전송 비율을 제어하는 것인 장치.
- 제1항 내지 제33항 중 어느 한 항의 방법의 단계들을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/448,380 | 1999-11-23 | ||
US09/448,190 | 1999-11-23 | ||
US09/448,197 | 1999-11-23 | ||
US09/448,197 US6657960B1 (en) | 1999-11-23 | 1999-11-23 | Method and system for providing differentiated services in computer networks |
US09/448,190 US6724776B1 (en) | 1999-11-23 | 1999-11-23 | Method and system for providing optimal discard fraction |
US09/448,380 US6771652B1 (en) | 1999-11-23 | 1999-11-23 | Method and system for controlling transmission of packets in computer networks |
US09/547,280 | 2000-04-11 | ||
US09/547,280 US6674718B1 (en) | 2000-04-11 | 2000-04-11 | Unified method and system for scheduling and discarding packets in computer networks |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20020063578A KR20020063578A (ko) | 2002-08-03 |
KR100546968B1 true KR100546968B1 (ko) | 2006-01-31 |
Family
ID=27503960
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020027006623A KR100546968B1 (ko) | 1999-11-23 | 2000-11-21 | 컴퓨터 네트워크에서의 패킷 전송 제어 방법 및 장치 |
Country Status (15)
Country | Link |
---|---|
EP (1) | EP1232627B1 (ko) |
JP (1) | JP4195221B2 (ko) |
KR (1) | KR100546968B1 (ko) |
CN (1) | CN1391756B (ko) |
AT (1) | ATE435556T1 (ko) |
AU (1) | AU1406901A (ko) |
CA (1) | CA2387101C (ko) |
CZ (1) | CZ20021780A3 (ko) |
DE (1) | DE60042493D1 (ko) |
HU (1) | HUP0203928A2 (ko) |
IL (1) | IL149435A0 (ko) |
MY (1) | MY133997A (ko) |
PL (1) | PL356725A1 (ko) |
TW (1) | TW580813B (ko) |
WO (1) | WO2001039467A1 (ko) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6771652B1 (en) | 1999-11-23 | 2004-08-03 | International Business Machines Corporation | Method and system for controlling transmission of packets in computer networks |
DE60333297D1 (de) | 2002-05-03 | 2010-08-19 | Cedar Point Comm Inc | Kommunikation vermittlungs architektur |
US7453798B2 (en) * | 2004-02-19 | 2008-11-18 | Internationl Business Machines Corporation | Active flow management with hysteresis |
US7701898B2 (en) | 2004-09-15 | 2010-04-20 | Research In Motion Limited | Switch-in of centralised infrastructure for management for wireless communications |
US9549016B2 (en) | 2014-08-18 | 2017-01-17 | Cisco Technology, Inc. | Congestion control for media flows |
WO2016081426A1 (en) * | 2014-11-21 | 2016-05-26 | Arris Enterprises, Inc. | Quality of service for mixed service tiers |
CN106656851B (zh) * | 2016-12-28 | 2019-12-24 | 国网辽宁省电力有限公司 | 一种电力***终端通信接入网汇聚节点的队列调度方法 |
KR102010670B1 (ko) * | 2017-12-14 | 2019-08-13 | 순천향대학교 산학협력단 | 저전력 광역 네트워크에서 트래픽 특성을 고려한 이중 채널 매체 접근 제어 방법 및 장치 |
CN111447263A (zh) * | 2020-03-24 | 2020-07-24 | 中国建设银行股份有限公司 | 一种消息通信*** |
CN116346739B (zh) * | 2023-03-31 | 2023-12-05 | 南京金阵微电子技术有限公司 | 多队列调度方法和***、电路及芯片 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6134218A (en) * | 1994-04-28 | 2000-10-17 | Pmc-Sierra (Maryland), Inc. | Many dimensional congestion detection system and method |
-
2000
- 2000-11-20 TW TW089124539A patent/TW580813B/zh not_active IP Right Cessation
- 2000-11-21 JP JP2001540492A patent/JP4195221B2/ja not_active Expired - Lifetime
- 2000-11-21 EP EP00976194A patent/EP1232627B1/en not_active Expired - Lifetime
- 2000-11-21 CZ CZ20021780A patent/CZ20021780A3/cs unknown
- 2000-11-21 CA CA002387101A patent/CA2387101C/en not_active Expired - Fee Related
- 2000-11-21 AU AU14069/01A patent/AU1406901A/en not_active Abandoned
- 2000-11-21 IL IL14943500A patent/IL149435A0/xx unknown
- 2000-11-21 HU HU0203928A patent/HUP0203928A2/hu unknown
- 2000-11-21 CN CN00816049XA patent/CN1391756B/zh not_active Expired - Lifetime
- 2000-11-21 AT AT00976194T patent/ATE435556T1/de not_active IP Right Cessation
- 2000-11-21 KR KR1020027006623A patent/KR100546968B1/ko not_active IP Right Cessation
- 2000-11-21 PL PL00356725A patent/PL356725A1/xx unknown
- 2000-11-21 WO PCT/GB2000/004410 patent/WO2001039467A1/en active IP Right Grant
- 2000-11-21 DE DE60042493T patent/DE60042493D1/de not_active Expired - Lifetime
- 2000-11-22 MY MYPI20005467A patent/MY133997A/en unknown
Also Published As
Publication number | Publication date |
---|---|
EP1232627A1 (en) | 2002-08-21 |
MY133997A (en) | 2007-11-30 |
JP4195221B2 (ja) | 2008-12-10 |
CA2387101C (en) | 2006-01-03 |
JP2003515978A (ja) | 2003-05-07 |
ATE435556T1 (de) | 2009-07-15 |
IL149435A0 (en) | 2002-11-10 |
AU1406901A (en) | 2001-06-04 |
EP1232627B1 (en) | 2009-07-01 |
TW580813B (en) | 2004-03-21 |
KR20020063578A (ko) | 2002-08-03 |
CN1391756A (zh) | 2003-01-15 |
CZ20021780A3 (cs) | 2002-10-16 |
CN1391756B (zh) | 2010-12-29 |
WO2001039467A8 (en) | 2002-10-31 |
DE60042493D1 (de) | 2009-08-13 |
WO2001039467A1 (en) | 2001-05-31 |
CA2387101A1 (en) | 2001-05-31 |
PL356725A1 (en) | 2004-06-28 |
HUP0203928A2 (en) | 2003-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6674718B1 (en) | Unified method and system for scheduling and discarding packets in computer networks | |
US10764215B2 (en) | Programmable broadband gateway hierarchical output queueing | |
Semeria | Supporting differentiated service classes: queue scheduling disciplines | |
US8467295B2 (en) | System and methods for distributed quality of service enforcement | |
US8169906B2 (en) | Controlling ATM traffic using bandwidth allocation technology | |
US8638664B2 (en) | Shared weighted fair queuing (WFQ) shaper | |
US8218437B2 (en) | Shared shaping of network traffic | |
US7619969B2 (en) | Hardware self-sorting scheduling queue | |
EP3070893A1 (en) | Scheduling of packets in network devices | |
KR100546968B1 (ko) | 컴퓨터 네트워크에서의 패킷 전송 제어 방법 및 장치 | |
EP2996293B1 (en) | A packet scheduling networking device for deadline aware data flows | |
Astuti | Packet handling | |
KR100588001B1 (ko) | 가중치 기반의 패킷 스케줄링 시스템 및 그 방법 | |
US11805060B2 (en) | Token bucket with active queue management | |
Kiameso et al. | Analysis of prioritized scheduling of assured forwarding in DiffServ Architectures | |
JP2003087313A (ja) | 多重化装置および帯域制御装置およびプログラムおよび記録媒体 | |
Radivojević et al. | Quality of Service Implementation | |
Sridharan | Fair Queueing Algorithms for QOS support in Packet Switched Networks | |
Kithinji et al. | A Survey of Packets Scheduling Congestion Control Algorithms in Internet Protocol Storage Area Networks | |
JP2003023454A (ja) | レート制御装置 | |
JP2003023450A (ja) | レート制御装置 | |
JP2003023459A (ja) | 到着レート検出装置 | |
JP2003023453A (ja) | セル廃棄装置 | |
JP2003023460A (ja) | レート制御装置 | |
JP2003023451A (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: 20101210 Year of fee payment: 6 |
|
LAPS | Lapse due to unpaid annual fee |