KR100915185B1 - 패킷 기반 컴퓨터 네트워크에서의 레이트 쉐이핑 방법 및시스템 - Google Patents

패킷 기반 컴퓨터 네트워크에서의 레이트 쉐이핑 방법 및시스템

Info

Publication number
KR100915185B1
KR100915185B1 KR1020047008736A KR20047008736A KR100915185B1 KR 100915185 B1 KR100915185 B1 KR 100915185B1 KR 1020047008736 A KR1020047008736 A KR 1020047008736A KR 20047008736 A KR20047008736 A KR 20047008736A KR 100915185 B1 KR100915185 B1 KR 100915185B1
Authority
KR
South Korea
Prior art keywords
rate
current
sum
error
packet
Prior art date
Application number
KR1020047008736A
Other languages
English (en)
Other versions
KR20040071709A (ko
Inventor
로다샌디프
아트레쉬디팩
Original Assignee
리버스톤 네트웍스 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 리버스톤 네트웍스 인코포레이티드 filed Critical 리버스톤 네트웍스 인코포레이티드
Publication of KR20040071709A publication Critical patent/KR20040071709A/ko
Application granted granted Critical
Publication of KR100915185B1 publication Critical patent/KR100915185B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/52Queue scheduling by attributing bandwidth to queues
    • H04L47/527Quantum based scheduling, e.g. credit or deficit based scheduling or token bank
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/22Traffic shaping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0002Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L25/00Baseband systems
    • H04L25/02Details ; arrangements for supplying electrical power along data transmission lines
    • H04L25/0262Arrangements for detecting the data rate of an incoming signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/11Identifying congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/22Traffic shaping
    • H04L47/225Determination of shaping rate, e.g. using a moving window
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Quality & Reliability (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

원하는 레이트를 얻기 위하여 링크 상에서 패킷 기반 트래픽의 현재 레이트를 이동 평균으로 계산하고, 상기 계산된 현재 레이트와 상기 원하는 레이트 사이의 에러의 합을 계산하고, 상기 계산된 에러의 합에 응하여 패킷이 흐를 수 있는지 없는지를 결정함으로써 패킷 기반 트래픽의 흐름이 제어된다. 현재 레이트와 원하는 레이트 사이의 에러의 합이 현재의 레이트가 원하는 레이트보다 작다는 것을 나타낼 때, 패킷의 흐름은 허용되고, 에러의 합이 현재의 레이트가 원하는 레이트보다 크다는 것을 나타낼 때, 패킷의 흐름은 허용되지 않는다. 버스트의 크기는 현재 레이트의 최소값과 에러의 합의 최소값을 인위적으로 제어함으로써 또한 제어할 수 있다. 흐름 제어 알고리즘은 레이트 쉐이핑 또는 레이트 리미팅에 사용될 수 있다.

Description

패킷 기반 컴퓨터 네트워크에서의 레이트 쉐이핑 방법 및 시스템{METHOD AND SYSTEM FOR RATE SHAPING IN PACKET-BASED COMPUTER NETWORKS}
본 발명은 패킷 기반 컴퓨터 네트워크에 관한 것으로, 특히 패킷 기반 네트워크에서의 트래픽 레이트를 제어하는 방법 및 시스템에 관한 것이다.
버스트 단위로 데이터를 전송하는 패킷 기반 네트워크는 공지되어 있다. 버스트 상태의 트래픽은 네트워크에서 정체를 야기할 수 있고, 입력 버퍼가 가득 채워지면 패킷이 드롭될 수 있다. 네트워크의 성능을 향상시키고 서비스의 질(QoS)을 보장하기 위해서는 네트워크 내의 여러 위치에서의 트래픽의 흐름을 원하는 특정 레이트로 조절할 수 있어야 한다. 트래픽의 흐름을 제어하는 방법은 두 가지가 있는데, 한가지는 레이트 쉐이핑이고 다른 한가지는 레이트 리미팅이다. 레이트 쉐이핑은 패킷이 특정 지역에 도달할 때 패킷을 버퍼에 저장하고 원하는 레이트를 얻기 위하여 주어진 알고리즘에 따라 버퍼를 떠나는 패킷의 흐름을 제어하는 방법이다. 패킷이 버퍼에 저장되기 때문에, 패킷 버스트는 흡수될 수 있고, 도입되는 패킷이 드롭되지 않도록 제어를 받는 상태로 급송될 수 있다. 레이트 리미팅은 특정 지역으로 들어오는 패킷의 레이트를 측정하고 원하는 레이트를 초과하여 도달하는 패킷을 드롭 시키는 방법이다.
레이트 쉐이핑 또는 레이트 리미팅을 달성하기 위하여 사용될 수 있는 통상적인 알고리즘으로 리키 버킷 (leaky bucket) 및 토큰 버킷 (token bucket) 알고리즘이 있는데, 이들 알고리즘은 공지된 기술이다. 레이트 쉐이핑을 달성하기 위하여 리키 버킷 알고리즘을 사용하는 방법은 도입되는 패킷을 버퍼에 저장하고, 일정한 레이트로, 즉 리크 레이트(예를 들어, bytes/s 단위로 측정된다)로 버퍼로부터 패킷을 급송하는 단계를 포함한다. 예를 들어, C 크기(즉 bytes 단위)의 패킷이 수신되면, 버퍼로부터 급송되기 전에 C/리크의 시간 동안 버터 내에 보유된다. 버퍼가 비어있는 동안, 리크 레이트로 규정되는 전송 용량이 사용되지 않는 상태가 되고, 후속하는 패킷 버스트 동안 축적되지 않는다. 따라서, 트래픽이 없는 주기 이후에 새로운 패킷 버스트가 버퍼에 도달하면, 새로운 패킷은 여전히 버퍼에 저장되고 리크 레이트로 급송된다. 이 기술은 패킷 기반 네트워크 트래픽의 버스트한 속성을 밝히는데 융통성을 제공하지 않는다.
레이트 쉐이핑을 달성하기 위하여 토큰 버킷 알고리즘을 사용하는 방법은 일정한 레이트에서 버킷에 비트 값(즉, 1,000 바이트, 50 셀, 기타)을 할당하고, 필수적인 수의 비트, 바이트 또는 셀이 버킷 내에 축적될 때에만 버퍼로부터 패킷을 급송시키는 단계를 포함한다. 트래픽이 없는 주기 동안, 비트는 계속해서 일정한 레이트로 버킷 내에 축적됨에 따라, 후속하는 트래픽 버스트는 축적된 비트를 활용할 수 있게 된다. 이 기술은 네트워크 트래픽의 버스트한 속성을 밝히는데 융통성을 제공하지 않지만, 트래픽이 없는 주기 동안 너무 많은 비트가 버킷 내에 축적되면, 후속하는 패킷 버스트는 쉐이핑 되지 않을 수도 있다. 허용될 수 있는 버스트의 크기는 버킷 내에 축적될 수 있는 비트의 수의 최대값을 설정함으로써 제한될 수 있지만, 큰 패킷이 버퍼 내에 보유되는 것을 방지하기 위하여 버킷의 최대값은 적어도 예상되는 가장 큰 패킷에 해당하는 크기를 가져야 한다. 최대 버킷 크기는 예상되는 가장 큰 패킷으로 설정하는데 있어서의 결점은 비교적 작은 패킷의 큰 버스트가 쉐이핑 되지 않는다는 점이다.
레이트 쉐이핑 또는 레이트 리미팅에 사용될 수 있는 또다른 알고리즘은 특정 지역에서 현재의 트래픽 레이트를 계산하고, 후속하는 패킷이 급송되어야 하는지의 여부를 결정하기 위하여 현재의 레이트를 원하는 레이트와 비교하는 것이다. 이 알고리즘에 따르면, 현재의 레이트가 원하는 레이트보다 작은 경우 패킷의 흐름은 허용되고, 현재의 레이트가 원하는 레이트보다 큰 경우 패킷의 흐름은 허용되지 않는다. 이러한 레이트 쉐이핑에 사용되는 공지된 알고리즘은 지수 가중 이동 평균 (EWMA) 알고리즘으로 불린다. EWMA 알고리즘의 일례는 다음과 같이 표현된다.
Current_RateN = (1 - Gain)ㆍCurrent_RateN-1 + GainㆍBytesN
여기서, Current_RateN 은 N번째 샘플링 간격에서의 EWMA이고, Current_RateN-1 은 N-1번째 샘플링 간격에서의 EWMA이고, BytesN은 N번째 샘플링 간격 동안 급송된 바이트의 수이다. 각각의 샘플링 간격은 Δt의 주기를 갖는다. 이득(Gain)은 저역 필터 동작의 시간 상수(즉, 주파수 응답)를 제어한다. 버퍼로부터 패킷을 급송하기 위하여 사용될 때, Current_RateN이 사전 정의된 원하는 레이트(Desired_Rate라 칭한다)보다 크면, 패킷은 급송되지 않는다. Current_RateN이 Desired_Rate보다 작으면, 패킷은 급송된다. 종래 기술에 있어서 버퍼로부터의 패킷의 급송을 제어하는 알고리즘은 다음과 같이 표현된다.
if(Current_RateN > Desired_Rate)
No packets dispatched
else
Packets dispatched
도 1은 버퍼가 패킷으로 가득 채워진 레이트 쉐이핑 시스템의 상기한 EWMA 알고리즘을 적용한 결과 얻어지는 트래픽(104)의 현재 레이트와 (Δt 단위로 증분되는) 시간과의 관계를 보여주는 그래프이다. 초기 시간 t0에서, 트래픽 버스트가 급송되고, EWMA로서 계산된 현재 레이트가 원하는 레이트 이상으로 상승한다. 원하는 레이트는 수평 점선(106)으로 표시되어 있다. 현재 레이트가 원하는 레이트를 초과하는 한, 새로운 트래픽은 급송되지 않으며, 현재 레이트는 서서히 하강한다. 현재 레이트가 하강하여 원하는 레이트 아래로 떨어지게 되면 (즉, 시간 t2에 도달하게 되면), 새로운 트래픽 버스트가 급송되고, 현재 레이트는 원하는 레이트 이상으로 다시 상승한다. 도 1에 도시한 바와 같이, 완전하게 로딩된 시스템에 있어서, 트래픽의 현재 레이트는 거의 전체적으로 원하는 레이트를 초과하게 되는데, 그 이유는 현재 레이트가 원하는 레이트 아래로 떨어지는 순간 더 많은 패킷이 급송되기 때문이다. 현재 레이트는 거의 전체적으로 원하는 레이트를 초과하기 때문에, 완전 로딩 시간에 걸쳐 획득되는 전송 레이트는 원하는 레이트보다 크게 된다. 획득된 레이트는 급송된 비트의 총수를 비트가 급송된 시간으로 나눈 값으로 계산된다. 예를 들어, 도 1의 경우 완전히 로딩된 시스템에서 시간 t0 내지 시간 t9에 걸쳐 획득되는 레이트(108)는 원하는 레이트를 초과하고 있다. 이상적으로는, 획득된 레이트는 원하는 레이트와 같다.
원하는 레이트로 특정 네트워크 트래픽을 제어하기 위한 필요성을 감안하고 종래의 레이트 쉐이핑 및 레이트 리미팅 알고리즘의 결점을 감안할 때, 요구되는 것은 패킷 기반 트래픽 레이트를 효과적으로 제어할 수 있고, 융통성이 있으며, 특히 하드웨어적으로 쉽게 구현할 수 있는 알고리즘이다.
도 1은 종래 기술에 따라 버퍼가 패킷으로 가득 채워진 레이트 쉐이핑 시스템의 EWMA 알고리즘을 적용한 결과 얻어지는 트래픽 레이트와 Δt 단위로 증분되는 시간과의 관계를 보여주는 그래프이다.
도 2는 본 발명의 일실시예에 따라 레이트 쉐이핑 알고리즘을 구현하는 레이트 쉐이핑 시스템을 보인 선도이다.
도 3A는 본 발명의 일실시예에 따라 레이트 쉐이핑 알고리즘을 구현한 결과 발생되는 트래픽 프로파일을 보여주는 그래프이다.
도 3B는 도 3A에서 얻어지는 계산된 현재 레이트와 원하는 레이트 사이의 에러의 합을 보여주는 그래프이다.
도 3C는 도 3B에서 얻어지는 계산된 현재 레이트와 원하는 레이트 사이의 에러의 합에 응하여 발생되는 스위치 제어 신호를 보여주는 그래프이다.
도 4는 본 발명의 일실시예에 따라 원하는 레이트를 얻기 위하여 패킷 기반 트래픽의 흐름을 제어하는 흐름도이다.
도 5A는 본 발명의 또다른 실시예에 따라 조정되는 레이트 프로파일의 일부를 포함하는, 도 4에 도시한 레이트 쉐이핑 알고리즘을 사용한 결과 발생되는 조정전 레이트 프로파일을 보여주는 그래프이다.
도 5B는 본 발명의 또다른 실시예에 따라 조정되는 에러의 합의 일부를 포함하는, 도 5A에 도시한 레이트 프로파일로부터 얻어지는 계산된 레이트와 원하는 레이트 사이의 조정전 에러의 합을 보여주는 그래프이다.
도 6은 본 발명의 또다른 실시예에 따라 트래픽이 없는 주기를 밝히기 위하여 변형된 원하는 레이트를 얻기 위하여 패킷 기반 트래픽의 흐름을 제어하는 흐름도이다.
도 7은 본 발명의 일실시예에 따라 사용되지 않은 대역폭이 다른 버퍼에 의해 사용될 수 있도록 도 4 또는 도 6에 도시한 다수의 레이트 쉐이핑 알고리즘이 구현되는, 동일한 출력 링크에 연결되고 버퍼-특정 스위치에 의해 제어되는 두 개의 버퍼를 보여주는 선도이다.
도 8은 본 발명의 일실시예에 따라 이용 가능한 대역폭이 공유될 수 있도록 도 7에 도시한 선택기 중 하나에 의해 구현되는 로직의 바람직한 매트릭스를 보여주는 도면이다.
도 9는 본 발명의 일실시예에 따라 도 4 또는 도 6에 도시한 레이트 쉐이핑 알고리즘이 다수의 버퍼로부터 패킷을 급송하는 데 사용되는 QoS 시스템을 보여주는 선도이다.
원하는 레이트를 얻기 위하여 패킷 기반 트래픽의 흐름을 제어하기 위한 방법 및 시스템은 링크 상에서 패킷 기반 트래픽의 현재 레이트를 이동 평균으로 계산하고, 상기 계산된 현재 레이트와 상기 원하는 레이트 사이의 에러의 합을 계산하고, 상기 계산된 에러의 합에 응하여 패킷이 흐를 수 있는지 없는지를 결정하는 단계 및 수단을 포함한다. 일실시예에 있어서, 현재 레이트와 원하는 레이트 사이의 에러의 합이 0보다 작거나 0과 같을 때, 패킷은 버퍼로부터 링크로 급송되고, 현재 레이트와 원하는 레이트 사이의 에러의 합이 0보다 클 때, 패킷은 버퍼 내에 보유된다. 패킷의 흐름은 현재 레이트와 원하는 레이트 사이의 에러의 합에 응하여 제어되기 때문에, 버스트 상태의 트래픽 환경인 경우에도 획득되는 트래픽 레이트는 원하는 레이트에 가까운 상태로 유지된다.
본 발명의 일실시예에 있어서, 패킷의 흐름이 허용되는지의 여부를 결정하기 위하여, 에러의 합이 문턱값과 비교된다. 에러의 합이 문턱값보다 작으면 패킷의 흐름이 허용되고, 에러의 합이 문턱값보다 크면 패킷의 흐름은 허용되지 않는다. 일실시예에 있어서, 문턱값은 0이며, 따라서 에러의 합이 0보다 작거나 0과 같으면 패킷의 흐름이 허용된다. 또다른 실시예에 있어서, 에러의 합이 획득된 트래픽 레이트가 원하는 레이트보다 작은 것을 나타낼 때 패킷의 흐름이 허용되고, 에러의 합이 획득된 트래픽 레이트가 원하는 레이트보다 큰 것을 나타낼 때 패킷의 흐름은 허용되지 않는다.
트래픽이 없는 주기 이후에 흐름이 허용되는 버스트의 크기를 제어하기 위하여, 현재 레이트의 최소값이 설정될 수 있다. 현재 레이트가 최소값보다 작으면, 계산된 현재 레이트는 최소값으로 조정된다. 이와 유사하게, 에러의 합의 최소값이 설정될 수 있으며, 이 경우에는 에러의 합이 최소값보다 작으면 계산된 에러의 합이 최소값으로 조정된다. 이들 두 가지 기법 모두 침묵 주기로부터 "빌려올" 수 있는 대역폭의 양을 제어한다. 구체적으로 설명하면, 나중에 설명한 (두 번째) 기법이 큰 음의 잉여치가 축적되는 것을 방지한다.
일실시예에 있어서, 현재 레이트와 에러의 합을 계산하고 패킷이 흐를 수 있는지 없는지를 결정하는 과정이 사이클마다 반복되며, 사이클은 Δt 단위로 이루어진다.
일실시예에 있어서, 현재 레이트는 다음과 같이 계산된다.
여기서, C는 현재 사이클에서 급송되는 비트의 수이고, Wa 및 Wb는 가중치이다. 상기한 식을 사용하면, 다음 계산 사이클의 Previous_Rate는 직전의 계산 사이클에서 계산되었던 Current_Rate로 설정될 수 있다. 일실시예에 있어서, Wa 는 Nc 및 Δt의 함수이고, 여기서 Δt는 샘플링 간격, Nc 는 상기 샘플링 간격의 수이다. 특히, Wa 는 Wa = 1/(NcㆍΔt)로 정의될 수 있다. 일실시예에 있어서, Wb 는 Nc 의 함수이다. 특히, Wb 는 Wb = 1/Nc로 정의될 수 있다.
상기한 레이트 식을 사용하면, Initial_Rate를 설정하고, Current_Rate가 Initial_Rate 보다 작으면 Current_Rate를 Initial_Rate로 조정함으로써 트래픽 버스트의 크기를 제어할 수 있다.
에러의 합은 다음과 같이 계산될 수 있다.
Current_Error = Previous_Error + (Current_Rate - Desired_Rate)
Current_Rate는 상기한 식에 따라 계산된다. Current_Error의 최소 문턱값을 설정하고, Current_Error가 문턱값보다 작으면 Current_Error를 문턱값으로 조정함으로써 패킷 버스트의 크기를 제어할 수 있다. 상기한 에러 식을 사용하면, 다음 계산 사이클의 Previous_Error는 직전의 계산 사이클에서 계산되었던 Current_Error로 설정된다. 일실시예에 있어서, Current_Error가 0보다 작거나 0과 같으면 패킷의 흐름이 허용되고, Current_Error가 0보다 크면 패킷의 흐름은 허용되지 않는다.
본 발명은 패킷 기반 트래픽의 흐름을 제어하는 방법 및 시스템에서 구현될 수 있다. 상기 방법 및 시스템은 레이트 쉐이핑 및 레이트 리미팅에 사용될 수 있으며, 사용자에 의해 제공되는 입력 파라미터인 Initial_Rate, Desired_Rate, Nc 및 Δt를 조정함으로써 알고리즘의 실행 특성을 쉽게 조정할 수 있다.
본 발명은 레이트 쉐이핑에 특정한 방법에서 또한 구현되는데, 계산된 현재 레이트와 원하는 레이트 사이의 계산된 에러의 합에 응하여 패킷이 버퍼로부터 급송된다.
본 발명의 기타 양상 및 장점 등은 본 발명의 원리를 단지 예로서만 예시하는 첨부도면을 참조하여 이루어지는 이하의 상세한 설명을 통해 명백히 밝혀진다.
원하는 레이트를 얻기 위하여 패킷 기반 트래픽의 흐름을 제어하는 방법 및 시스템은, 링크 상의 패킷 기반 트래픽의 현재 레이트를 이동 평균으로 계산하고, 계산된 현재 레이트와 원하는 레이트 사이의 에러의 합을 계산하고, 계산된 에러의 합에 응하여 패킷이 흐를 수 있는지 없는지를 결정하는 단계를 포함한다. 일실시예에 있어서, 현재 레이트와 원하는 레이트 사이의 에러의 합이 0보다 작거나 0과 같을 때 패킷은 버퍼로부터 링크로 급송되고, 에러의 합이 0보다 클 때 패킷은 버퍼 내에 보유된다. 패킷의 흐름은 현재 레이트와 원하는 레이트 사이의 에러의 합에 응하여 제어되기 때문에, 버스트 단위의 트래픽 상황에서도 획득되는 트래픽 레이트는 원하는 레이트에 근접한 상태로 유지된다.
도 2는 본 발명의 핵심인 레이트 쉐이핑 알고리즘을 구현하는데 사용될 수 있는 레이트 쉐이핑 시스템의 일례를 보여주고 있다. 레이트 쉐이핑 시스템은 버퍼(112)와, 스위치(114)와, 레이트 쉐이핑 로직(116)을 포함하고 있다. 버퍼는 입력 링크를 통해 들어오는 패킷을 수신하고, 이들 패킷이 출력 링크(120)로 급송될 때까지 패킷을 보유한다. 스위치는 레이트 쉐이핑 로직에 의해 제어되며, 레이트 쉐이핑 로직은 아래에 설명하는 바와 같이 레이트 쉐이핑 알고리즘을 구현한다. 레이트 쉐이핑 알고리즘의 일실시예에 있어서는 사용자 정의 입력 파라미터로서 4개의 필드(Initial_Rate, Desired_Rate, Δt 및 Nc)의 초기 정보를 레이트 쉐이핑 로직에 제공할 필요가 있다. 필드 Initial_Rate, Desired_Rate, Δt 및 Nc는 이하에서 정의된다. 동작 시, 레이트 쉐이핑 로직은 출력 링크에 대한 실제 전송 정보(C)를 수신하고, 제어 신호(Switch_Control)를 스위치로 출력한다. 레이트 쉐이핑 로직에 의해 발생된 제어 신호에 의해 스위치가 온 되어 (온 상태가 아닌 경우) 패킷이 버퍼로부터 급송되거나, 스위치가 오프 되어 (오프 상태가 아닌 경우) 패킷이 버퍼 내에 보유된다. 스위치가 도 2에 버퍼로부터 패킷을 급송하기 위한 메커니즘으로서 도시되어 있지만, 다른 메커니즘을 사용하여 버퍼로부터 패킷을 급송할 수 있다. 본 명세서에서 정의되는 바와 같이, 입력 및 출력 링크는 집적회로 상의 버스, 회로 기판 상의 버스, 와이어, 광섬유, 두 개의 네트워크 장치를 연결하는 RF 신호 등의 매체, 또는 패킷 처리된 정보를 통신하는데 사용되는 다른 링크를 포함할 수도 있다. 입력 및 출력 링크는 상기한 링크의 조합을 포함할 수도 있다.
본 발명의 알고리즘을 실행하는 주요 단계 중 하나는 패킷 기반 트래픽의 현재 레이트를 이동 평균으로 계산하는 단계이다. 패킷 기반 트래픽의 현재 레이트를 이동 평균으로 계산하는 기법은 이하에서 설명된다. 그 이후에 계산된 현재 레이트와 원하는 레이트 사이의 에러의 합을 계산하는 기법에 대한 설명이 이루어진다. 그러면 레이트 쉐이핑 알고리즘의 일실시예를 도 3 내지 도 9를 참조하여 더욱 상세히 설명하기로 한다.
주어진 시간(T)에서의 패킷 기반 트래픽의 레이트(초당 비트수 bits/s)는 다음과 같이 표현될 수 있다.
여기서, 는 시간(T)동안 전송된 총 비트수이다. N개의 샘플링 간격으로 샘플링된 영역에서는, 레이트가 다음과 같이 표현될 수 있다.
여기서, Δt 는 샘플링 간격이고, N은 레이트가 계산되는 샘플링 간격의 수이다. 따라서, N번째 간격에 앞서 발생하는 샘플링 간격에서의 레이트는 다음과 같이 표현될 수 있다.
결과로서, 0개 내지 N개의 샘플링 간격 동안 전송되는 비트의 합은 다음과 같이 표현될 수 있다.
위의 식에 RateN 및 RateN-1을 대입하면
따라서, RateN 은 다음의 식으로 표현될 수 있다.
또는
여기서, 가중치 Wa 및 Wb는 다음과 같이 정의된다.
상기 유도식에서 N은 변수이지만, 레이트 계산을 단순화하기 위하여 N을 상수로 설정할 수 있다. 일실시예에서, N은 다음과 같이 가중치 Wa 및 Wb를 계산하기 위한 상수 Nc로 설정된다.
여기서, Nc는 샘플링 간격의 일정 개수를 나타낸다. 레이트 계산은 다음과 같이 표현될 수도 있다.
여기서, Current_Rate는 RateN과 관련이 있고, Previous_Rate는 RateN-1과 관련이 있다. Wa 및 Wb는 Nc를 이용하여 계산된다. C는 가장 최근의 샘플링 간격 동안 전송된 비트수와 관련된 실제 전송 정보이다.
도 2의 실시예에서, C는 마지막 샘플링 간격에서 시스템의 출력 링크(120)로 급송되는 실제 비트수를 나타낸다. 도 2에서, 논리선(122)은 레이트 쉐이핑 로직에 공급되는 출력 링크와 관련된 실제 전송 정보를 나타낸다. 도 2에서는 논리선(122)이 출력 링크에 연결되어 있으나, 다양한 기법을 사용하여 레이트 쉐이핑 로직에 실제 전송 정보를 공급할 수 있다. 사용되는 기법은 본 발명에 있어서 중요한 사항은 아니다. 예를 들어, 실제 전송 정보는 버퍼로부터 공급될 수도 있다.
알고리즘을 실행하는 다른 또 하나의 중요한 단계는 계산된 현재 레이트와 원하는 레이트 사이의 에러의 합을 계산하는 단계이다. 본 명세서에서, 계산된 현재 레이트와 원하는 레이트 사이의 에러는 "잉여치(Residue)"로서 언급된다. 그러나 "에러"라는 용어와 "잉여치"라는 용어는 서로 바꿔 쓸 수 있다. N개의 샘플링 간격으로 샘플링된 영역에서, N번째 샘플링 간격에서의 순간 잉여치는 ResidueN = RateN - Desired_Rate로 표현된다. N번째 샘플링 간격에서의 잉여치의 합은 다음과 같이 표현된다.
따라서, N번째 간격에 앞서 발생하는 샘플링 간격에서의 잉여치의 합은 다음과 같이 표현된다.
그러므로, N번째 샘플링 간격에서의 잉여치의 합은 아래와 같이 N-1번째 샘플링 간격에서의 잉여치의 합과 N번째 샘플링 간격에서의 순간 잉여치의 항으로 또한 표현될 수 있다.
ResidueN = RateN - Desired_Rate를 대입하면
따라서, N번째 샘플링 간격에서의 잉여치의 합은 아래와 같이 현재의 잉여치와 이전의 잉여치의 항으로 표현될 수 있다.
Current_Residue = Previous_Residue + (Current_Rate - Desired_Rate)
여기서, Current_Rate는 위에서 설명한 바와 같이 계산되고, Previous_Residue는 마지막 샘플링 간격에서의 잉여치의 합이고, Desired_Rate는 사용자 입력으로 제공된다.
레이트 쉐이핑을 위한 알고리즘을 활용한다는 것은 샘플링 간격마다, 즉 Δt 마다 Current_Rate와 Current_Residue를 계산하고, Current_Residue의 값에 기초하여 스위치 제어 신호를 발생시키는 것이다. 일실시예에 있어서, Current_Residue가 0보다 작거나 0과 같으면, 스위치로 하여금 패킷을 급송하게 하는 제어 신호(즉, "1")가 발생되고, Current_Residue가 0보다 크면, 스위치로 하여금 패킷을 보유하게 하는 제어 신호(즉, "0")가 발생된다. Current_Residue가 0보다 작거나 0과 같으면 잉여치의 합은 얻어진 레이트가 현재 원하는 레이트이거나 또는 원하는 레이트보다 작다는 것을 나타내기 때문에 패킷이 급송되고, 반대로 Current_Residue가 0보다 크면 잉여치의 합은 얻어진 레이트가 현재 원하는 레이트보다 크다는 것을 나타내기 때문에 패킷은 보유된다. 이 알고리즘을 사용하면, 연장된 시간에 걸쳐서, 패킷 트래픽의 얻어진 레이트가 원하는 레이트에 도달하게 된다. 이 실시예에 있어서는 0의 잉여치가 패킷의 급송이나 패킷의 보유를 결정하는 값이지만, 다른 실시예에 있어서는 0 이외의 다른 값이 사용될 수도 있다.
일실시예에 있어서, 레이트 쉐이핑 알고리즘은 주기적으로 실행된다. 여기서 각각의 사이클은 샘플링 간격과 같은 Δt의 시간 간격을 갖는다. 새로운 사이클이 시작되면, Previous_Rate 및 Previous_Residue의 값은 갱신되어 현재의 값을 반영하게 된다. 구체적으로 설명하면, 이전 사이클에서 계산되었던 Current_Rate는 Previous_Rate로 사용되고, 이전 사이클에서 계산되었던 Current-Residue는 Previous_Residue로 사용된다. 전체적인 레이트 쉐이핑 알고리즘은 예를 들어 다음과 같이 의사 코드로 표현될 수 있다.
// 레이트 쉐이핑 알고리즘: Δt 마다 실행한다.
// 부분 1: 레이트와 잉여치를 갱신한다:
Current_Rate = Previous_Rate + WaㆍC - WbㆍPrevious_Rate;
Current_Residue = Previous_Residue + (Current_Rate - Desired_Rate);
// 부분 2: 스위치를 갱신한다:
If(Current_Residue <= 0) Switch_Control = 1;
else Switch_Control = 0;
Previous_Rate = Current_Rate;
Previous_Residue = Current_Residue;
도 3A, 도 3B 및 도 3C는 레이트 쉐이핑을 위한 상기 설명한 알고리즘을 실행한 결과 얻어지는 예를 보여주는 시간 동기 그래프이다. 도 3A는 상기 설명한 알고리즘을 실행함으로써 발생되는 레이트 프로파일을 보인 그래프이다. 그래프는 이동 평균으로서 계산된 패킷 트래픽의 Current_Rate(304)와 시간(Δt 단위로 증분)과의 관계를 패킷 트래픽의 원하는 레이트(306)와 관련하여 보여주고 있다. 도 3B는 도 3A의 레이트 프로파일로부터 얻어지는 잉여치(328)의 합을 나타낸 그래프이고, 도 3C는 잉여치의 합에 응하여 레이트 쉐이핑 알고리즘으로부터 발생되는 스위치 제어 신호(330)를 나타낸 그래프이다. 이 예에서, 스위치 제어 신호가 "1"이면 패킷이 급송되고, 스위치 제어 신호가 "0"이면 패킷을 보유된다.
도 3A 내지 도 3C에 도시된 예를 설명함에 있어서, 알고리즘은 시간 t0에서 시작되고, 동시에 패킷이 버퍼로부터 급송되는 것으로 가정한다. 시간 t0에서 급송된 패킷에 의해 Current_Rate는 도 3A에 도시한 바와 같이 급등한다. 시간 t1에서 Current_Rate의 증가에 의해 Current_Residue는 0에서 0보다 큰 수치로 상승하며, 이에 의해 스위치 제어 신호가 "1"에서 "0"으로 바뀌며, 이에 의해 버퍼 내의 나머지 패킷은 보유된다. 스위치가 새로운 패킷을 급송하지 않는 동안, 패킷 트래픽의 Current_Rate는 도 3A에 도시한 바와 같이 시간 t0 및 시간 t8 사이의 Current_Rate의 하향 경사를 따라 하강한다. Current_Rate에 응하여 그리고 도 3B에 도시한 바와 같이, Current_Rate가 Desired_Rate보다 큰 상태를 유지하는 한 Current_Residue는 상승하며, Current_Rate가 Desired_Rate 보다 작게 되면 하강한다. Current_Residue의 반응은 위에서 설명한 바와 같이 Current_Residue, Current_Rate, 및 Desired_Rate 사이의 관계로부터 기인한다. Current_Residue가 0보다 작거나 0과 같아지는 시점에서, 스위치 제어 신호는 "0"에서 "1"로 변경되고, 그에 따라 또다른 패킷이 버퍼로부터 급송된다. 예를 들어, 시간 t8에서 Current_Residue는 0이 되고, 이에 의해 스위치 제어 신호는 도 3C에 도시한 바와 같이 "0"에서 "1"로 변경된다. 스위치 제어 신호가 "1"로 변경될 때, 시간 t8에서의 Current_Rate로 나타낸 바와 같이 또다른 패킷이 해제되고, Current_Rate는 상승한다. 도 3B 및 도 3C를 참조하면, Current_Residue가 0이 될 때마다 스위치 제어 신호가 "0"에서 "1"로 변경되며, Current_Residue가 0보다 크게 상승하면 스위치 제어 신호가 "1"에서 "0"으로 다시 변경된다. 이러한 메커니즘에 의해, 완전하게 로딩된 시스템에서의 전체적인 평균 트래픽 레이트가 원하는 레이트에서 또는 그에 가까운 레이트에서 유지될 수 있다.
도 4는 상기한 레이트 쉐이핑 알고리즘을 실행하기 위한 흐름도를 보여주고 있다. 제 1 사이클을 시작하기 전에, Desired_Rate, Nc 및 Δt의 값은 레이트 쉐이핑 알고리즘에 사용될 수 있도록 설정된다 (단계 434). Desired_Rate, Nc 및 Δt의 값을 설정하는 것은 사용자가 수동으로 입력하거나 광역 QoS 시스템에 응하여 발생되는 자동 입력에 의해 이루어질 수도 있다. 제 1 사이클이 시작되면 (단계 436), Previous_Rate 및 Previous_Residue는 0으로 설정된다 (단계 438). 단계 440에서 전송 정보(C)가 획득된다. 단계 442에서, 제공된 식에 따라 위에서 설명한 바와 같이 Current_Rate가 계산된다. Current_Rate를 계산하기 위하여 사용되는 값은 Previous_Rate, C, Wa 및 Wb이다. 단계 444에서 Current_Rate를 계산한 후에, 제공된 식에 따라 위에서 설명한 바와 같이 Current_Residue가 계산된다. Current_Residue를 계산하기 위하여 사용되는 값은 Previous_Residue, Current_Rate 및 Desired_Rate이다. 계산된 Current_Residue는 단계 446에서 패킷을 급송하여야 하는지 패킷을 보유하여야 하는지를 결정하는데 사용된다. Current_Residue가 0보다 작거나 0과 같으면, 단계 448에서 패킷이 급송되며, Current_Residue가 0보다 크면, 단계 450에서 패킷이 보유된다. 일실시예에 있어서, 패킷을 급송하는 단계에서는 스위치를 온 시키는 제어 신호를 발생시키고, 패킷을 보유하는 단계에서는 스위치를 오프 시키는 신호를 발생시킨다. 단계 452에서 패킷을 급송하여야 하는지 패킷을 보유하여야 하는지에 대한 결정이 내려진 후에, 샘플링 간격 Δt가 종료하였다면 다음 사이클이 시작된다 (단계 454). 다음 사이클을 시작하기 위하여, 마지막 사이클에서 계산되었던 Current_Rate의 값은 후속하는 레이트 계산에 필요한 Previous_Rate로 사용되고, 마지막 사이클에서 계산되었던 Current_Residue의 값은 후속하는 잉여치 계산에 필요한 Previous_Residue로 사용된다 (단계 456). Previous_Rate 및 Previous_Residue의 값이 설정된 후에, 전송 정보(C)의 획득 (단계 440), Current_Rate의 계산 (단계 442), Current_Residue의 계산 (단계 444), 패킷을 급송하여야 하는지 보유하여야 하는지에 대한 결정 (단계 446)의 과정이 설명한 바와 같이 반복된다. 이 과정은 시간 간격 Δt 마다 끊임없이 반복된다.
레이트 쉐이핑 시스템의 버퍼가 완전히 찼을 때 위에서 설명한 알고리즘은 양호하게 작용하지만, 트래픽이 없는 주기가 버스트에 앞서게 될 때 레이트 쉐이핑 알고리즘에 의해 레이트가 쉐이핑 됨이 없이 도입되는 버스트가 급송될 수도 있다. 트래픽이 없는 주기에 의해 비교적 큰 음의 잉여치가 축적되기 때문에, 트래픽이 없는 주기가 버스트에 앞서게 될 때 버스트는 레이트 쉐이핑 없이 급송될 수도 있다. 상기한 알고리즘에 의하면, Current_Residue가 0보다 작은 상태로 유지되는 한 음의 큰 잉여치에 의해 패킷이 급송된다. 트래픽이 없는 주기 이후에 큰 트래픽 버스트가 발생하는 것을 방지하기 위하여, 경우에 따라 Current_Rate 및 Current_Residue의 값은 사전 설정된 문턱값으로 인위적으로 제어된다. 구체적으로 언급하면, 사전 설정된 레이트(이하, Initial_Rate라 칭한다) 아래로 떨어지지 않도록 Current_Rate가 제어되고, 0 아래로 떨어지지 않도록 Current_Residue가 제어된다. Current_Rate 및 Current_Residue가 특정 문턱값 아래로 떨어지지 않도록 하기 위하여 이전의 트래픽이 없는 주기로부터 "빌려올" 수 있는 대역폭의 양을 제어한다. 도 5A 및 도 5B는 트래픽이 없는 주기에 의해 야기되는 문제점과 트래픽이 없는 주기 이후라도 모든 패킷의 레이트가 쉐이핑 되도록 Current_Rate 및 Current_Residue에 대해 행해지는 조정을 보여주고 있다. 도 5A는 레이트 쉐이핑 알고리즘을 사용하여 발생되는 레이트 프로파일을 보여주고 그래프이고, 도 5B는 도 5A의 레이트 프로파일로부터 얻어지는 잉여치의 합을 보여주는 시간 동기 그래프이다.
도 5A에 도시한 바와 같이 시간 t0에서의 초기 트래픽 버스트 발생 이전에 트래픽이 없는 주기가 존재하는 것으로 가정한다. 시간이 경과함에 따라, 계산된 Current_Rate(504)는 인위적으로 조정되지 않는 한 0을 향하여 하강한다. Current_Rate를 최소값으로 유지하기 위하여, 계산된 Current_Rate가 Initial_Rate보다 작아질 때마다 Current_Rate는 사전 설정된 Initial_Rate(556)로 조정된다. 도 5A는 계산된 Current_Rate가 Initial_Rate보다 작아질 때마다 Current_Rate가 사전 설정된 Initial_Rate로 조정되는 방법을 보여주고 있다.
일실시예에서, Initial_Rate의 값은 시뮬레이션에 의해 얻어진다. 시뮬레이션은 패킷으로 가득 찬 시스템에서 발생하는 Current_Rate의 최저값을 얻기 위하여 사용된다. 이 최저값이 Initial_Rate로 설정된다. 일실시예에 있어서, 시뮬레이션이 시작될 때 Current_Rate는 Desired_Rate로 초기화된다.
도 5B를 참조하면, 도 5A에서 얻은 Current_Rate(504)가 Desired_Rate(506)보다 작을 때마다, Current_Residue(528)는 하락한다. 인위적으로 조정이 되지 않는 한 Current_Rate가 Desired_Rate보다 작으면 Current_Residue는 하락하게 된다. Current_Residue를 최소값으로 유지하기 위하여, 계산된 Current_Residue가 0보다 작아질 때마다 Current_Residue는 0으로 조정된다. 도 5B는 계산된 Current_Residue가 0보다 작아서 0으로 조정된 Current_Residue의 일부를 보여주고 있다. 이 실시예에서는 Current_Residue가 0의 최소 Current_Residue로 조정되지만, Current_Residue는 0 이외의 다른 최소 문턱값으로 조정될 수 있다.
갱신된 레이트 쉐이핑 알고리즘을 위한 의사 코드의 일실시예는 다음과 같다.
// 변경된 레이트 쉐이핑 알고리즘: Δt 마다 실행한다.
// 부분 1: 레이트 및 잉여치를 갱신한다:
Current_Rate = Previous_Rate + WaㆍC - WbㆍPrevious_Rate;
If(Current_Rate < Initial_Rate) Current_Rate = Initial_Rate;
Current_Residue = Previous_Residue + (Current_Rate - Desired_Rate)
If(Current_Residue < 0) Current_Residue = 0;
// 부분 2: 스위치를 갱신한다:
If(Current_Residue = 0) Switch_Control = 1;
else Switch_Control = 0;
Previous_Rate = Current_Rate;
Previous_Residue = Current_Residue;
도 6은 상기 설명한 변경 내용을 가지고 도 4의 레이트 쉐이핑 알고리즘을 실행하기 위한 흐름도이다. 이 흐름도는 도 4의 흐름도와 유사하지만, 단계 634에서 Initial_Rate가 나머지 파라미터에 더하여 추가로 설정되어 있고, 단계 660에서 Current_Rate가 Initial_Rate보다 작으면 Current_Rate가 Initial_Rate로 설정되고, 단계 662에서 Current_Residue가 0보다 작으면 Current_Residue가 0으로 설정되고, 단계 646에서 Current_Residue가 0과 같으면 패킷이 급송되고 Current_Residue가 0보다 크면 패킷이 보유되는 점에서 차이가 있다.
또다른 실시예에 있어서, 위에서 설명한 레이트 쉐이핑 알고리즘은 이용 가능한 대역폭이 동일한 링크에 연결되는 다른 버퍼에 의해 사용될 수 있는 다중 버퍼 시스템에서 구현될 수 있다. 구체적으로 설명하면, 다중 버퍼 시스템에 있어서는 제 2 버퍼가 패킷을 보유하고 있지 않을 때 (즉, 제 2 버퍼가 이용 가능한 대역폭을 완전하게 사용하고 있지 않을 때) 제 2 버퍼에 할당된 대역폭이 제 1 버퍼에 의해 사용될 수 있다. 도 7은 공통 출력 링크(764)에 연결되어 있고 버퍼-특정 스위치(714)에 의해 제어되는 두 개의 버퍼(712)(버퍼 1 및 버퍼 2)의 바람직한 실시예를 보여주고 있다. 각각의 버퍼-특정 스위치는 버퍼-특정 선택기(766)를 통해 두 개의 버퍼-특정 레이트 쉐이퍼(716)(717)에 연결되어 있다. 버퍼-특정 레이트 쉐이퍼는 상기에서 설명한 바와 같은 두 가지 버전의 레이트 쉐이핑 알고리즘을 실행한다. 점선(768)으로 도시한 바와 같이 각각의 선택기는 각각의 버퍼로부터 버퍼 상태 정보를 수신하며, 실선(722)으로 도시한 바와 같이 각각의 레이트 쉐이퍼는 각각의 버퍼와 관련된 실제 전송 정보를 수신한다.
도 7의 실시예에 있어서는 버퍼 1로부터의 급송 레이트는 원하는 레이트로 제어될 필요가 있고, 공통 출력 링크(764) 상에서 이용가능한 대역폭이 사용되고 있지 않은 경우 급송 레이트가 최대 레이트로 제어될 수 있다고 가정한다. 버퍼 2의 경우에 있어서도 동일한 가정이 적용된다. 각각의 버퍼에서 원하는 레이트 쉐이핑을 얻기 위하여, 두 개의 레이트 쉐이퍼는 각각의 버퍼와 연합한다. 버퍼 1의 경우, 하나의 레이트 쉐이퍼 RS1_Desired(716)가 레이트 쉐이프 버퍼 1에 원하는 레이트로 설정되며 (즉, 알고리즘의 Desired_Rate 필드는 원하는 레이트로 설정된다), 다른 또하나의 레이트 쉐이퍼 RS1_Maximum(717)은 레이트 쉐이프 버퍼 1에 최대 레이트로 설정된다 (즉, 알고리즘의 Desired_Rate 필드는 최대 레이트로 설정된다). 마찬가지로, 버퍼 2의 경우, 하나의 레이트 쉐이퍼 RS2_Desired(716)가 레이트 쉐이프 버퍼 2에 원하는 레이트로 설정되며 (즉, 알고리즘의 Desired_Rate 필드는 원하는 레이트로 설정된다), 다른 또하나의 레이트 쉐이퍼 RS2_Maximum(717)은 레이트 쉐이프 버퍼 2에 최대 레이트로 설정된다 (즉, 알고리즘의 Desired_Rate 필드는 최대 레이트로 설정된다). 도 7에 도시한 실시예에서는, 각각의 버퍼에 트래픽이 있을 때, 각각의 버퍼는 레이트 쉐이퍼 RS1_Desired 및 RS2_Desired에 의해 원하는 레이트로 각각 제어된다. 그러나, 버퍼 중 하나에 트래픽이 보유되어 있지 않으면, 나머지 버퍼가 최대 레이트로 상승할 수 있다.
이중 레이트 쉐이퍼를 이용하여 버퍼 1을 레이트 쉐이핑 하는 것을 도 7 및 도 8을 참조하여 설명한다. 도 8은 버퍼 1의 선택기(766)에 의해 실행되는 로직의 매트릭스(770)를 보여주고 있다. 레이트 쉐이퍼 RS1_Desired(716)로부터 출력된 제어 신호가 패킷이 버퍼 1로부터 급송될 수 있음을 나타내는 "1"이면, 선택기는 "1"의 제어 신호를 스위치로 출력하며, 패킷은 급송된다. 선택기는 레이트 쉐이퍼 RS1_Maximum(717)의 값에 상관없이 그리고 버퍼 2 내에 패킷이 있는지 없는지에 상관없이 제어 신호 "1"을 출력한다. 레이트 쉐이퍼 RS1_Desired에서 출력된 제어 신호가 "0"이고 레이트 쉐이퍼 RS1_Maximum에서 출력된 제어 신호가 "0"이면, 선택기는 버퍼 2 내에 패킷이 있는지 없는지에 상관없이 제어 신호 "0"을 스위치로 출력한다. 레이트 쉐이퍼 RS1_Desired에서 출력된 제어 신호가 "0"이고 레이트 쉐이퍼 RS1_Maximum에서 출력된 제어 신호가 "1"이면, 선택기는 버퍼 2의 상태에 기초하여 패킷이 급송될 수 있는지의 여부를 결정한다. 만일 버퍼 2 내에 패킷이 있으면, 선택기는 제어 신호 "0"을 출력하고 버퍼 1로부터 패킷이 급송되지 않는다. 버퍼 2 내에 있는 패킷에 할당된 대역폭은 다른 버퍼에 의해 사용되어서는 안되기 때문에 버퍼 1로부터는 패킷이 급송되지 않는다. 그러나 버퍼 2 내에 패킷이 없고 RS1_Maximum이 "1"이면, 스위치 1의 선택기는 제어 신호 "1"을 스위치 1에 출력하고, 패킷은 버퍼 1로부터 급송된다. 버퍼 2 내에 패킷이 없고 RS1_Desired가 "0"으로 유지되는 한, 버퍼 1로부터의 패킷의 급송은 레이트 쉐이퍼 RS1_Maximum에 의해 제어된다.
도 7을 참조하여 설명된 시스템은 두 개보다 많은 버퍼를 제어할 수 있도록 그 규모가 확대될 수 있다. 확대된 시스템의 경우, 각각의 버퍼에 대해 제공되는 선택기는 다른 버퍼 전부 또는 일부의 버퍼 상태를 감시하고, 버퍼 정보를 이용하여 패킷이 지정된 최대 레이트로 급송될 수 있는지의 여부를 결정한다.
상기 설명한 레이트 쉐이핑 알고리즘은 다수의 버퍼를 동시에 제어하는데 또한 사용될 수 있다. 도 9는 동일한 레이트 쉐이핑 로직이 다수의 버퍼를 제어하는 QoS 시스템의 일실시예를 보여주고 있다. QoS 시스템은 패킷 분류기(972), 버퍼 접근 제어기(974), 메모리(976), 레이트 쉐이핑 로직(916) 및 스케줄러(978)를 포함하고 있다. 메모리는 버퍼-특정 스위치(914)에 의해 제어되는 다수의 버퍼(즉 버퍼 1 - 버퍼 M)를 포함하고 있다. 각각의 버퍼-특정 스위치는 위에서 설명한 바와 같이 레이트 쉐이핑 로직에 의해 제어된다. 레이트 쉐이핑 로직은 각각의 출력 링크(920)와 관련된 실제 전송 정보를 수신하며, 실제 전송 정보를 이용하여 레이트 쉐이핑 알고리즘을 실행하고 스위치 제어 신호를 발생시킨다.
동작 시, 분류기(972)는 각각의 도입 패킷이 어떤 버퍼에 보유되어야 하는지를 결정한다. 패킷이 분류된 후에, 버터 접근 제어기(974)는 패킷이 적절한 버퍼로 전송될 수 있는지의 여부를 결정한다. 일실시예에 있어서, 버퍼 접근 제어기는 분류된 패킷이 각각의 버퍼로 전송될지의 여부를 결정하기 위하여 가중 임의 초기 드롭(WRED) 알고리즘을 활용한다. 레이트 쉐이핑 로직(916)은 버퍼에 보유된 패킷이 스케줄러(978)에 의해 수신되는지의 여부를 결정한다. 일실시예에 있어서, 레이트 쉐이핑 로직은 각각의 사이클 동안 각각의 버퍼에 대해 도 6을 참조하여 설명한 단계를 수행하며, 스위치 제어 신호(Switch_1_Control 및 Switch_M_Control)를 각각의 스위치로 출력한다. 스위치의 상태에 따라, 스케줄러는 패킷을 급송한다. 예를 들어, 스위치 구조에 걸쳐 스위칭될 수 있도록 패킷의 스케줄이 설정될 수도 있다.
일실시예에 있어서, 도 2 내지 도 9를 참조하여 설명된 레이트 쉐이핑 알고리즘은 하드웨어로 구현된다. 위에서 설명한 바와 같이, Current_Rate를 계산하기 위해서는 두 번의 곱셈 연산을 실행하여야 한다. 하드웨어로 구현할 경우, 곱셈 연산은 비교적 큰 양의 리소스를 필요로 하기 때문에 하드웨어로 구현하기 위한 리소스 요건을 제한하는 것이 바람직하다. 곱셈 연산의 리소스 요건을 감소시키기 위한 한가지 방법은 곱셈 연산을 시프팅(shifting)으로 줄이는 것이다. 두 번의 곱셈 연산을 시프팅으로 줄인 레이트 쉐이핑 알고리즘의 하드웨어 실시예에 대하여 이하에서 설명하기로 한다.
가중 상수 Wa는 위에서 1/(NcㆍΔt)로 정의되어 있다. 여기서, Nc는 시간 간격의 수이다. Nc는 2의 멱이 되도록 선택될 수 있으며, 일실시예에 있어서 Nc는 2 9 과 213 사이(29 과 213 를 포함한다)의 2의 멱이다. 위에서 설명한 바와 같이, 알고리즘은 시간 간격 Δt 마다 실행된다. 곱셈 연산을 시프팅으로 줄이기 위하여, 시간 간격 Δt 는 2의 멱이 되도록, 특히 2의 음의 멱이 되도록 또한 선택된다. 일실시예에 있어서, 시간 간격 Δt 은 하드웨어 클럭 시간(또는 주기)과 레이트 쉐이핑 알고리즘에 의해 제어되는 버퍼의 수의 함수이다. 바람직한 일실시예에 있어서, Δt 는 Current_Rate, Current_Residue 및 스위치가 각각의 Δt 동안 각각의 버퍼에 대해 갱신될 수 있도록 클럭 시간과 레이트 쉐이핑 로직에 의해 제어되는 버퍼의 수를 곱한 값보다 클 수도 있다 (즉, Δt > clock_timeㆍnumber_of_buffers). 이는 각각의 버퍼에 대해 Current_Rate, Current_Residue 및 스위치를 갱신하는데 하나의 클럭 주기가 소요된다는 가정 하에 이루어진 것임에 주목할 필요가 있다. 표 1은 레이트 쉐이핑 로직에 의해 제어되는 버퍼의 수의 함수로서 그리고 클럭 주기의 함수로서 사용될 수 있는 Δt 값을 보여주고 있다. 표에는 활용 가능한 최소 Δt 와 2의 음의 멱으로서 선택된 Δt 가 또한 포함되어 있다.
[표 1]
버퍼의 수 클럭 주기 최소 Δt 선택된 Δt 2^(-x)로서의 Δt
32 10 ns 320 ns 470 ns 2^(-21)
256 10 ns 2,560 ns 3,810 ns 2^(-18)
32 16 ns 512 ns 953 ns 2^(-20)
가중 상수 Wa는 1/(NcㆍΔt)로 정의된다. 상수 Wra는 Wra = log2(Wa)로 정의될 수 있다. 1/(NcㆍΔt)이 2의 멱이고 1보다 크면, WaㆍC는 다음과 같이 감소한다.
따라서, 곱셈 연산은 왼쪽 시프트 동작으로 줄어든다.
가중 상수 Wb는 1/N로 정의된다. 상수 Wrb는 Wrb = log2(W b)로 정의될 수 있다. 1/N이 2의 멱이고 1보다 작으면, Previous_RateㆍWb는 다음과 같이 감소한다.
따라서, 곱셈 연산은 오른쪽 시프트 동작으로 줄어든다.
시트프 동작의 결과 비트를 잃어버리기 때문에, 계산의 정확도는 떨어질 수도 있다. 정확도가 떨어지는 것을 피하기 위하여, 고정점 산수가 실행되며, 소수점 이후의 비트의 수는 ACCURACY로 언급된다. 레이트 쉐이핑 알고리즘의 하드웨어적인 구현은 다음과 같이 의사 코드로 표현될 수 있다.
// 레이트 쉐이핑 알고리즘의 하드웨어적인 구현: Δt 마다 실행한다.
// 부분 1: 레이트 및 잉여치를 갱신한다:
Current_Rate = Previous_Rate + ((C << ACCURACY) << Wra) -(Previous_Rate >> Wrb);
If(Current_Rate < Initial_Rate) Current_Rate = Initial_Rate;
Current_Residue = Previous_Residue + (Current_Rate - Desired_Rate);
If(Current_Residue < 0) Current_Residue = 0;
// 부분 2: 스위치를 갱신한다:
If(Current_Residue = 0) Switch_Control = 1;
else Switch_Control = 0;
Previous_Rate = Current_Rate;
Previous_Residue = Current_Residue;
일실시예에 있어서, 레이트 쉐이핑 알고리즘은 가변 길이 패킷을 이용하는 환경, 예를 들어 이더넷 환경에서 구현된다. 그러나, 레이트 쉐이핑 알고리즘은 고정 길이 셀 (또는 패킷)을 이용하는 환경, 예를 들어 비동기 전송 모드 (ATM) 환경에서도 구현될 수 있다.
본 명세서에서 실현되는 알고리즘이 레이트 쉐이핑을 달성하는데 사용되지만, 이 알고리즘은 레이트 리미팅 또는 다른 레이트 제어 기법을 달성하는데 또한 사용될 수 있다. 알고리즘이 레이트 리미팅에 사용될 때, Current_Residue가 문턱값(즉, 0)보다 작은 경우 패킷은 드롭되며, Current_Residue가 문턱값(즉, 0)보다 큰 경우 패킷은 전송된다.
상기한 알고리즘의 실시예에 있어서, 현재 레이트와 원하는 레이트 사이의 에러의 합은 제공된 식을 사용하여 특정한 방식으로 계산된다. 그러나, 현재 레이트와 원하는 레이트 사이의 에러의 합은 명세서에서 언급되어 있고 이하의 청구의 범위에 의해 한정되는 본 발명의 정신 및 범주를 벗어나지 않는 한 여러 가지 방법으로 계산될 수 있다.
레이트 쉐이핑 알고리즘이 하드웨어로 구현되든 소프트웨어로 구현되든 간에, 알고리즘의 수행은 사용자 입력 필드인 Initial_Rate, Desired_Rate, Δt 및 Nc 를 간단한 조정함으로써 쉽게 조정할 수 있다. Initial_Rate에 있어서는, Initial_Rate가 작을수록 트래픽이 없는 이전의 주기로부터 더 많은 대역폭을 빌려올 수 있으며, 이에 의해 더 많은 패킷 버스트가 침묵 주기 후에 흐를 수 있다. Δt에 있어서는, Δt가 클수록 스위치 갱신 사이의 시간 주기가 더 길어지기 때문에 트래픽 프로파일을 더욱 버스트한 상태로 구성할 수 있게 된다. Nc 에 있어서는, Nc 의 값이 작을수록 계산된 Current_Rate가 순간 레이트를 더욱 가깝게 추적할 수 있게 되며, 이에 의해 응답 시간을 더욱 빨라진다. Nc 의 값이 클수록 계산된 Current_Rate가 순간 레이트를 더욱 가깝게 추적할 수 없게 되며, 이에 의해 응답 시간을 더욱 느려진다.
레이트 쉐이핑 알고리즘은 스위치가 네트워크 내의 노드를 가리키는 매크로 레벨 또는 스위치가 특정 버퍼로부터의 급송 기능을 제어하는 하위 레벨로 구현될 수 있다. 더욱이, 링크 상의 패킷의 흐름을 제어하는 메커니즘이라면 어떤 것이라도 스위치로 사용될 수 있다.
본 발명의 여러 특정 실시예가 설명되고 예시되었지만, 본 발명은 이들 특정 실시예 및 설명되고 예시된 바와 같은 부품들의 배열에 국한되지 않으며, 오직 이하의 청구의 범위에 의해서만 제한된다.

Claims (55)

  1. 원하는 레이트를 얻기 위하여 패킷 기반 트래픽의 흐름을 제어하기 위한 방법으로서,
    링크 상에서 패킷 기반 트래픽의 현재 레이트를 이동 평균으로 계산하고,
    상기 계산된 현재 레이트와 상기 원하는 레이트 사이의 에러의 합을 계산하고,
    상기 계산된 에러의 합에 응하여 패킷이 흐를 수 있는지 없는지를 결정하는 단계를 포함하여 구성된 것을 특징으로 하는 방법.
  2. 제 1 항에 있어서, 패킷이 흐를 수 있는지 없는지를 결정하는 단계는 상기 에러가 에러 문턱값보다 작으면 패킷의 흐름을 허용하고, 상기 에러가 에러 문턱값보다 크면 패킷의 흐름을 허용하지 않는 단계를 포함하는 것을 특징으로 하는 방법.
  3. 제 1 항에 있어서, 패킷이 흐를 수 있는지 없는지를 결정하는 단계는 상기 에러가 0보다 작거나 0과 같으면 패킷의 흐름을 허용하고, 상기 에러가 0보다 크면 패킷의 흐름을 허용하지 않는 단계를 포함하는 것을 특징으로 하는 방법.
  4. 제 1 항에 있어서, 패킷이 흐를 수 있는지 없는지를 결정하는 단계는 상기 에러의 합이 획득된 트래픽 레이트가 원하는 레이트보다 작은 것을 나타낼 때 패킷의 흐름을 허용하고, 상기 에러의 합이 획득된 트래픽 레이트가 원하는 레이트보다 큰 것을 나타낼 때 패킷의 흐름을 허용하지 않는 단계를 포함하는 것을 특징으로 하는 방법.
  5. 제 1 항에 있어서, 상기 현재 레이트의 최소값을 설정하고, 상기 현재 레이트가 상기 최소값보다 작으면 상기 현재 레이트의 값을 조정하는 단계를 또한 포함하는 것을 특징으로 하는 방법.
  6. 제 1 항에 있어서, 상기 에러의 합의 최소값을 설정하고, 상기 에러의 합이 상기 최소값보다 작으면 상기 에러의 합의 값을 조정하는 단계를 또한 포함하는 것을 특징으로 하는 방법.
  7. 제 1 항에 있어서,
    상기 현재 레이트의 최소값과 상기 에러의 합의 최소값을 설정하고,
    상기 현재 레이트가 상기 현재 레이트의 최소값보다 작으면 상기 현재 레이트의 값을 조정하고,
    상기 에러의 합이 상기 에러의 합의 최소값보다 작으면 상기 에러의 합의 값을 조정하는 단계를 또한 포함하는 것을 특징으로 하는 방법.
  8. 제 1 항에 있어서, 상기 현재 레이트는 상기 링크와 관련된 실제 트래픽 정보를 사용하여 계산되는 것을 특징으로 하는 방법.
  9. 제 1 항에 있어서, 상기 현재 레이트와 상기 에러의 합을 계산하고 패킷이 흐를 수 있는지 없는지를 결정하는 단계는 사이클마다 반복되며, 사이클은 Δt 단위로 이루어지는 것을 특징으로 하는 방법.
  10. 제 1 항에 있어서, 상기 현재 레이트는 가중 이동 평균으로서 계산되는 것을 특징으로 하는 방법.
  11. 제 10 항에 있어서, 상기 현재 레이트는 다음과 같이 계산되는 것을 특징으로 하는 방법.
    여기서, C는 비트의 수이고, Wa 및 Wb는 가중치이다.
  12. 제 11 항에 있어서, 다음 계산 사이클의 Previous_Rate는 직전의 계산 사이클에서 계산된 Current_Rate로 설정되는 것을 특징으로 하는 방법.
  13. 제 11 항에 있어서, Wa 는 Nc 및 Δt의 함수이고, 여기서 Δt는 샘플링 간격, Nc 는 상기 샘플링 간격의 수인 것을 특징으로 하는 방법.
  14. 제 11 항에 있어서, Wa 는 Wa = 1/(NcㆍΔt)로 정의되고, 여기서 Δt는 샘플링 간격, Nc 는 상기 샘플링 간격의 수인 것을 특징으로 하는 방법.
  15. 제 11 항에 있어서, Wb 는 Nc 의 함수이고, 여기서 Nc 는 샘플링 간격의 수인 것을 특징으로 하는 방법.
  16. 제 11 항에 있어서, Wb 는 Wb = 1/Nc 로 정의되고, 여기서 Nc 는 샘플링 간격의 수인 것을 특징으로 하는 방법.
  17. 제 11 항에 있어서, Initial_Rate를 설정하고, 상기 Current_Rate가 상기 Initial_Rate보다 작으면 상기 Current_Rate를 상기 Initial_Rate로 조정하는 단계를 또한 포함하는 것을 특징으로 하는 방법.
  18. 제 11 항에 있어서, 상기 에러의 합은 다음과 같이 계산되는 것을 특징으로 하는 방법.
    Current_Error = Previous_Error + (Current_Rate - Desired_Rate)
  19. 제 18 항에 있어서, 상기 Current_Error의 최소 문턱값을 설정하고, 상기 Current_Error가 상기 최소 문턱값보다 작으면 상기 Current_Error를 상기 최소 문턱값으로 조정하는 단계를 또한 포함하는 것을 특징으로 하는 방법.
  20. 제 18 항에 있어서, 다음 계산 사이클의 Previous_Error는 직전의 계산 사이클에서 계산된 Current_Error로 설정되는 것을 특징으로 하는 방법.
  21. 제 18 항에 있어서, 상기 Current_Error가 0보다 작거나 0과 같으면 패킷의 흐름이 허용되고, 상기 Current_Error가 0보다 크면 패킷의 흐름이 허용되지 않는 것을 특징으로 하는 방법.
  22. 제 1 항에 있어서, 패킷이 흐를 수 있는지 없는지의 결정에 따라 스위치를 온 또는 오프 시키는 단계를 또한 포함하는 것을 특징으로 하는 방법.
  23. 원하는 레이트를 얻기 위하여 입력 링크와 출력 링크 사이의 패킷 기반 트래픽의 흐름을 제어하기 위한 시스템으로서,
    상기 입력 링크와 상기 출력 링크 사이에 연결되어, 온 상태에서는 상기 입력 링크에서 상기 출력 링크로의 트래픽의 흐름을 허용하고, 오프 상태에서는 패킷의 흐름을 허용하지 않는 스위치와,
    상기 스위치를 제어하기 위하여 연결되며,
    링크 상에서 패킷 기반 트래픽의 현재 레이트를 이동 평균으로 계산하는 수단과,
    상기 계산된 현재 레이트와 상기 원하는 레이트 사이의 에러의 합을 계산하는 수단과,
    상기 계산된 에러의 합에 응하여 패킷이 흐를 수 있는지 없는지를 결정하는 수단을 갖춘 레이트 쉐이핑 로직을 포함하여 구성된 것을 특징으로 하는 시스템.
  24. 제 23 항에 있어서, 패킷이 흐를 수 있는지 없는지를 결정하는 것은 상기 에러가 에러 문턱값보다 작으면 패킷의 흐름을 허용하고, 상기 에러가 에러 문턱값보다 크면 패킷의 흐름을 허용하지 않는 것을 포함하는 것을 특징으로 하는 시스템.
  25. 제 23 항에 있어서, 패킷이 흐를 수 있는지 없는지를 결정하는 것은 상기 에러가 0보다 작거나 0과 같으면 패킷의 흐름을 허용하고, 상기 에러가 0보다 크면 패킷의 흐름을 허용하지 않는 것을 포함하는 것을 특징으로 하는 시스템.
  26. 제 23 항에 있어서, 패킷이 흐를 수 있는지 없는지를 결정하는 것은 상기 에러의 합이 획득된 트래픽 레이트가 원하는 레이트보다 작은 것을 나타낼 때 패킷의 흐름을 허용하고, 상기 에러의 합이 획득된 트래픽 레이트가 원하는 레이트보다 큰 것을 나타낼 때 패킷의 흐름을 허용하지 않는 것을 포함하는 것을 특징으로 하는 시스템.
  27. 제 23 항에 있어서, 상기 레이트 쉐이핑 로직은 상기 현재 레이트의 최소값을 설정하고, 상기 현재 레이트가 상기 최소값보다 작으면 상기 현재 레이트의 값을 조정하는 로직을 포함하는 것을 특징으로 하는 시스템.
  28. 제 23 항에 있어서, 상기 레이트 쉐이핑 로직은 상기 에러의 합의 최소값을 설정하고, 상기 에러의 합이 상기 최소값보다 작으면 상기 에러의 합의 값을 조정하는 로직을 포함하는 것을 특징으로 하는 시스템.
  29. 제 23 항에 있어서, 상기 레이트 쉐이핑 로직은
    상기 현재 레이트의 최소값과 상기 에러의 합의 최소값을 설정하고,
    상기 현재 레이트가 상기 현재 레이트의 최소값보다 작으면 상기 현재 레이트의 값을 조정하고,
    상기 에러의 합이 상기 에러의 합의 최소값보다 작으면 상기 에러의 합의 값을 조정하는 로직을 포함하는 것을 특징으로 하는 시스템.
  30. 제 23 항에 있어서, 상기 현재 레이트는 상기 입력 링크 및 출력 링크 중 하나와 관련된 실제 트래픽 정보를 사용하여 계산되는 것을 특징으로 하는 시스템.
  31. 제 23 항에 있어서, 상기 현재 레이트와 상기 에러의 합을 계산하고 패킷이 상기 링크로부터 흐를 수 있는지 없는지를 결정하는 것은 사이클마다 반복되며, 사이클은 Δt 단위로 이루어지는 것을 특징으로 하는 시스템.
  32. 제 23 항에 있어서, 상기 현재 레이트는 가중 이동 평균으로서 계산되는 것을 특징으로 하는 시스템.
  33. 제 32 항에 있어서, 상기 현재 레이트는 다음과 같이 계산되는 것을 특징으로 하는 시스템.
    여기서, C는 비트의 수이고, Wa 및 Wb는 가중치이다.
  34. 제 33 항에 있어서, 다음 계산 사이클의 Previous_Rate는 직전의 계산 사이클에서 계산된 Current_Rate로 설정되는 것을 특징으로 하는 시스템.
  35. 제 33 항에 있어서, Wa 는 Nc 및 Δt의 함수이고, 여기서 Δt는 샘플링 간격, Nc 는 상기 샘플링 간격의 수인 것을 특징으로 하는 시스템.
  36. 제 33 항에 있어서, Wa 는 Wa = 1/(NcㆍΔt)로 정의되고, 여기서 Δt는 샘플링 간격, Nc 는 상기 샘플링 간격의 수인 것을 특징으로 하는 시스템.
  37. 제 33 항에 있어서, Wb 는 Nc 의 함수이고, 여기서 Nc 는 샘플링 간격의 수인 것을 특징으로 하는 시스템.
  38. 제 33 항에 있어서, Wb 는 Wb = 1/Nc 로 정의되고, 여기서 Nc 는 샘플링 간격의 수인 것을 특징으로 하는 시스템.
  39. 제 33 항에 있어서, 상기 레이트 쉐이핑 로직은 Initial_Rate를 설정하고, 상기 Current_Rate가 상기 Initial_Rate보다 작으면 상기 Current_Rate를 상기 Initial_Rate로 조정하는 로직을 또한 포함하는 것을 특징으로 하는 시스템.
  40. 제 33 항에 있어서, 상기 에러의 합은 다음과 같이 계산되는 것을 특징으로 하는 시스템.
    Current_Error = Previous_Error + (Current_Rate - Desired_Rate)
  41. 제 40 항에 있어서, 상기 레이트 쉐이핑 로직은 상기 Current_Error의 최소 문턱값을 설정하고, 상기 Current_Error가 상기 최소 문턱값보다 작으면 상기 Current_Error를 상기 최소 문턱값으로 조정하는 로직을 또한 포함하는 것을 특징으로 하는 시스템.
  42. 제 40 항에 있어서, 다음 계산 사이클의 Previous_Error는 직전의 계산 사이클에서 계산된 Current_Error로 설정되는 것을 특징으로 하는 시스템.
  43. 제 40 항에 있어서, 상기 Current_Error가 0보다 작거나 0과 같으면 패킷의 흐름이 허용되고, 상기 Current_Error가 0보다 크면 패킷의 흐름이 허용되지 않는 것을 특징으로 하는 시스템.
  44. 제 23 항에 있어서, 상기 링크로부터 패킷이 흐를 수 있는지 없는지의 결정에 따라 스위치를 온 또는 오프 시키는 것을 또한 포함하는 것을 특징으로 하는 시스템.
  45. 원하는 레이트를 얻기 위하여 버퍼에서 출력 링크로의 패킷 기반 트래픽의 흐름을 제어하기 위한 방법으로서,
    상기 출력 링크 상에서 패킷 기반 트래픽의 현재 레이트를 이동 평균으로 계산하고,
    상기 계산된 현재 레이트와 상기 원하는 레이트 사이의 에러의 합을 계산하고,
    상기 계산된 에러의 합에 응하여 패킷이 상기 버퍼로부터 상기 출력 링크로 급송될 수 있는지 없는지를 결정하는 단계를 포함하여 구성된 것을 특징으로 하는 방법.
  46. 제 45 항에 있어서, 패킷이 상기 버퍼로부터 급송될 수 있는지 없는지를 결정하는 단계는 상기 에러가 에러 문턱값보다 작으면 상기 버퍼로부터의 패킷의 급송을 허용하고, 상기 에러가 에러 문턱값보다 크면 상기 버퍼로부터의 패킷의 급송을 허용하지 않는 단계를 포함하는 것을 특징으로 하는 방법.
  47. 제 45 항에 있어서, 패킷이 상기 버퍼로부터 급송될 수 있는지 없는지를 결정하는 단계는 상기 에러가 0보다 작거나 0과 같으면 상기 버퍼로부터의 패킷의 급송을 허용하고, 상기 에러가 0보다 크면 상기 버퍼로부터의 패킷의 급송을 허용하지 않는 단계를 포함하는 것을 특징으로 하는 방법.
  48. 제 45 항에 있어서, 패킷이 상기 버퍼로부터 급송될 수 있는지 없는지를 결정하는 단계는 상기 에러의 합이 획득된 트래픽 레이트가 원하는 레이트보다 작은 것을 나타낼 때 상기 버퍼로부터의 패킷의 급송을 허용하고, 상기 에러의 합이 획득된 트래픽 레이트가 원하는 레이트보다 큰 것을 나타낼 때 상기 버퍼로부터의 패킷의 급송을 허용하지 않는 단계를 포함하는 것을 특징으로 하는 방법.
  49. 제 45 항에 있어서, 상기 현재 레이트의 최소값을 설정함으로써 패킷 버스트의 크기를 제어하고, 상기 현재 레이트가 상기 현재 레이트의 설정된 최소값보다 작으면 상기 현재 레이트의 값을 조정하는 단계를 또한 포함하는 것을 특징으로 하는 방법.
  50. 제 45 항에 있어서, 상기 에러의 합의 최소값을 설정함으로써 패킷 버스트의 크기를 제어하고, 상기 에러의 합이 상기 에러의 합의 설정된 값보다 작으면 상기 에러의 합의 값을 조정하는 단계를 또한 포함하는 것을 특징으로 하는 방법.
  51. 제 45 항에 있어서,
    상기 현재 레이트의 최소값과 상기 에러의 합의 최소값을 설정하고,
    상기 현재 레이트가 상기 현재 레이트의 설정된 최소값보다 작으면 상기 현재 레이트의 값을 조정함으로써 패킷 버스트의 크기를 제어하고,
    상기 에러의 합이 상기 에러의 합의 설정된 최소값보다 작으면 상기 에러의 합의 값을 조정함으로써 패킷 버스트의 크기를 제어하는 단계를 또한 포함하는 것을 특징으로 하는 방법.
  52. 제 45 항에 있어서, 상기 현재 레이트는 다음과 같이 계산되는 것을 특징으로 하는 방법.
    여기서, C는 비트의 수이고, Wa 및 Wb는 가중치이다.
  53. 제 52 항에 있어서, Initial_Rate를 설정하고, 상기 Current_Rate가 상기 Initial_Rate보다 작으면 상기 Current_Rate를 상기 Initial_Rate로 조정하는 단계를 또한 포함하는 것을 특징으로 하는 방법.
  54. 제 52 항에 있어서, 상기 에러의 합은 다음과 같이 계산되는 것을 특징으로 하는 방법.
    Current_Error = Previous_Error + (Current_Rate - Desired_Rate)
  55. 제 54 항에 있어서, 상기 Current_Error의 최소 문턱값을 설정하고, 상기 Current_Error가 상기 최소 문턱값보다 작으면 상기 Current_Error를 상기 최소 문턱값으로 조정하는 단계를 또한 포함하는 것을 특징으로 하는 방법.
KR1020047008736A 2001-12-05 2002-12-05 패킷 기반 컴퓨터 네트워크에서의 레이트 쉐이핑 방법 및시스템 KR100915185B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/007,409 US6798741B2 (en) 2001-12-05 2001-12-05 Method and system for rate shaping in packet-based computer networks
US10/007,409 2001-12-05
PCT/US2002/038751 WO2003048903A2 (en) 2001-12-05 2002-12-05 Rate shaping in packet-based computer network

Publications (2)

Publication Number Publication Date
KR20040071709A KR20040071709A (ko) 2004-08-12
KR100915185B1 true KR100915185B1 (ko) 2009-09-02

Family

ID=21725974

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047008736A KR100915185B1 (ko) 2001-12-05 2002-12-05 패킷 기반 컴퓨터 네트워크에서의 레이트 쉐이핑 방법 및시스템

Country Status (7)

Country Link
US (1) US6798741B2 (ko)
EP (1) EP1461627B1 (ko)
JP (1) JP4032027B2 (ko)
KR (1) KR100915185B1 (ko)
CN (1) CN100405778C (ko)
AU (1) AU2002362058A1 (ko)
WO (1) WO2003048903A2 (ko)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5048184B2 (ja) * 2001-01-26 2012-10-17 富士通株式会社 伝送レート監視装置および伝送レート監視方法
US7382793B1 (en) * 2002-01-17 2008-06-03 Juniper Networks, Inc. Systems and methods for determining the bandwidth used by a queue
US7352761B2 (en) * 2002-06-04 2008-04-01 Lucent Technologies Inc. Distributing unused allocated bandwidth using a borrow vector
US7310309B1 (en) * 2002-07-17 2007-12-18 Foundry Networks, Inc. Dynamic rate limiting adjustment
EP1416668B1 (en) * 2002-11-04 2009-04-22 Siemens Aktiengesellschaft Method and apparatus for achieving an optimal response time in a telecommunication system
US20040179479A1 (en) * 2003-03-13 2004-09-16 Alcatel Determination of average queue depth for RED (random early packet discard)
US7627675B2 (en) * 2003-05-01 2009-12-01 Cisco Technology, Inc. Methods and devices for regulating traffic on a network
US20060190998A1 (en) * 2005-02-17 2006-08-24 At&T Corp Determining firewall rules for reverse firewalls
US8788640B1 (en) 2005-08-16 2014-07-22 F5 Networks, Inc. Employing rate shaping class capacities and metrics to balance connections
US7995474B2 (en) * 2005-09-13 2011-08-09 International Business Machines Corporation Grid network throttle and load collector
US7853948B2 (en) * 2005-10-24 2010-12-14 International Business Machines Corporation Method and apparatus for scheduling grid jobs
US7831971B2 (en) * 2005-10-24 2010-11-09 International Business Machines Corporation Method and apparatus for presenting a visualization of processor capacity and network availability based on a grid computing system simulation
US20070118839A1 (en) * 2005-10-24 2007-05-24 Viktors Berstis Method and apparatus for grid project modeling language
US20070258445A1 (en) * 2006-05-02 2007-11-08 Harris Corporation Systems and methods for protocol filtering for quality of service
US7738377B1 (en) * 2006-05-22 2010-06-15 At&T Intellectual Property Ii, L.P. Method and apparatus for volumetric thresholding and alarming on internet protocol traffic
US8516153B2 (en) 2006-06-16 2013-08-20 Harris Corporation Method and system for network-independent QoS
US8730981B2 (en) 2006-06-20 2014-05-20 Harris Corporation Method and system for compression based quality of service
EP2036267B1 (en) 2006-06-22 2009-10-07 Xelerated AB A processor and a method for a processor
PL2033366T3 (pl) * 2006-06-26 2010-11-30 Ericsson Telefon Ab L M Węzeł sieciowy oraz sposób szybkiego monitorowania i pomiaru ruchu
US20080013559A1 (en) * 2006-07-14 2008-01-17 Smith Donald L Systems and methods for applying back-pressure for sequencing in quality of service
US8300653B2 (en) * 2006-07-31 2012-10-30 Harris Corporation Systems and methods for assured communications with quality of service
US8027254B2 (en) * 2006-08-16 2011-09-27 France Telecom Method of limiting bit rate in a telecommunications network
KR101007024B1 (ko) * 2007-02-01 2011-01-12 삼성전자주식회사 이동통신 시스템에서 서비스품질 트래픽 속도를 보장하기위한 장치 및 방법
TW200838215A (en) * 2007-03-15 2008-09-16 Univ Nat Central System device utilizing policy to manage network service
US8271715B2 (en) * 2008-03-31 2012-09-18 Intel Corporation Modular scalable PCI-Express implementation
US8908540B2 (en) * 2009-02-13 2014-12-09 Toshiba America Research, Inc. Efficient and loss tolerant method and mechanism for measuring available bandwidth
EP2550775A4 (en) * 2010-03-22 2013-11-06 Freescale Semiconductor Inc APPARATUS FOR MANAGING TOKEN BUCKET AND METHOD FOR MANAGING BUCKET BUCKET
JP5673321B2 (ja) * 2011-04-18 2015-02-18 富士通株式会社 伝送装置およびインタフェースカード
US8897301B2 (en) * 2012-03-14 2014-11-25 International Business Machines Corporation Multicast bandwidth multiplication for a unified distributed switch
US8953619B2 (en) 2012-03-14 2015-02-10 International Business Machines Corporation Dynamic optimization of a multicast tree hierarchy for a distributed switch
US8913620B2 (en) 2012-03-14 2014-12-16 International Business Machines Corporation Multicast traffic generation using hierarchical replication mechanisms for distributed switches
US8811406B2 (en) 2012-03-14 2014-08-19 International Business Machines Corporation Delivering multicast frames to aggregated link trunks in a distributed switch
US9197572B2 (en) * 2013-03-15 2015-11-24 The Regents Of The University Of California Throughput enabled rate adaptation in wireless networks
US20150334703A1 (en) * 2014-05-15 2015-11-19 Qualcomm Incorporated Determining modem information and overhead information
CN106950527B (zh) * 2017-04-14 2020-01-31 中国电子科技集团公司第二十九研究所 一种多基线干涉仪测向体制下的脉冲信号分选方法
US10558392B2 (en) * 2017-06-30 2020-02-11 Seagate Technology Llc Enhancing quality of service of a storage device
US11294850B2 (en) * 2019-03-29 2022-04-05 Intel Corporation System, apparatus and method for increasing bandwidth of edge-located agents of an integrated circuit
JP7010268B2 (ja) * 2019-04-19 2022-01-26 オムロン株式会社 通信監視システムおよび通信監視方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4750175A (en) * 1986-08-29 1988-06-07 Pactel Communications Companies Network diagnostic apparatus and method
US5790131A (en) * 1996-05-15 1998-08-04 Iterated Systems, Inc. System and method for lossy compression of data with output file size control

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5251213A (en) 1992-05-12 1993-10-05 Microcom Systems, Inc. Multiport source routing token ring bridge apparatus
US5276677A (en) * 1992-06-26 1994-01-04 Nec Usa, Inc. Predictive congestion control of high-speed wide area networks
US5907800A (en) * 1995-06-07 1999-05-25 Lightbridge, Inc. Apparatus for use in inhibiting telecommunication subscriber termination
US5796719A (en) 1995-11-01 1998-08-18 International Business Corporation Traffic flow regulation to guarantee end-to-end delay in packet switched networks
US5754530A (en) 1996-04-18 1998-05-19 Northern Telecom Limited Flow control of ABR traffic in ATM networks
US5748901A (en) 1996-05-21 1998-05-05 Ramot University Authority Ltd. Flow control algorithm for high speed networks
JP3169552B2 (ja) * 1996-06-20 2001-05-28 沖電気工業株式会社 シェーピング方法及び装置
US6144639A (en) * 1996-09-03 2000-11-07 Sbc Technology Resources, Inc. Apparatus and method for congestion control in high speed networks
US6597660B1 (en) * 1997-01-03 2003-07-22 Telecommunications Research Laboratory Method for real-time traffic analysis on packet networks
US6167027A (en) * 1997-09-09 2000-12-26 Cisco Technology, Inc. Flow control technique for X.25 traffic in a high speed packet switching network
US6052375A (en) 1997-11-26 2000-04-18 International Business Machines Corporation High speed internetworking traffic scaler and shaper
US6407983B1 (en) * 1998-02-20 2002-06-18 Adc Telecommunications, Inc. Circuit and method for shaping traffic in a virtual connection network
US6411946B1 (en) * 1998-08-28 2002-06-25 General Instrument Corporation Route optimization and traffic management in an ATM network using neural computing
US6584111B1 (en) * 1998-11-04 2003-06-24 Northern Telecom Limited ABR flow control using single bit congestion indication and wavelet transform filtering
US6549587B1 (en) * 1999-09-20 2003-04-15 Broadcom Corporation Voice and data exchange over a packet based network with timing recovery
US6917585B1 (en) 1999-06-02 2005-07-12 Nortel Networks Limited Method and apparatus for queue management

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4750175A (en) * 1986-08-29 1988-06-07 Pactel Communications Companies Network diagnostic apparatus and method
US5790131A (en) * 1996-05-15 1998-08-04 Iterated Systems, Inc. System and method for lossy compression of data with output file size control

Also Published As

Publication number Publication date
KR20040071709A (ko) 2004-08-12
EP1461627A4 (en) 2010-04-14
WO2003048903A3 (en) 2003-10-16
EP1461627B1 (en) 2013-02-20
JP4032027B2 (ja) 2008-01-16
WO2003048903A2 (en) 2003-06-12
AU2002362058A1 (en) 2003-06-17
US6798741B2 (en) 2004-09-28
US20030107988A1 (en) 2003-06-12
EP1461627A2 (en) 2004-09-29
CN1618024A (zh) 2005-05-18
CN100405778C (zh) 2008-07-23
JP2005512365A (ja) 2005-04-28

Similar Documents

Publication Publication Date Title
KR100915185B1 (ko) 패킷 기반 컴퓨터 네트워크에서의 레이트 쉐이핑 방법 및시스템
US7280476B2 (en) Traffic control at a network node
US6959002B2 (en) Traffic manager for network switch port
US20080151750A1 (en) Scalable, High-Resolution Asynchronous Transfer Mode Traffic Shaper and Method
US6941426B2 (en) System for head and tail caching
US7324535B1 (en) Methods and apparatus for maintaining a queue
US20080084824A1 (en) Dual Leaky Bucket Flow Control Method and System
JP2001053807A (ja) パケットスケジューリング装置
Kasera et al. Fast and robust signaling overload control
US7602721B1 (en) Methods and systems for fine grain bandwidth allocation in a switched network element
JP2011135565A (ja) パケット伝送装置、パケット伝送方法及びパケット伝送プログラム
US7009988B2 (en) Adaptive buffer partitioning method for shared buffer switch and switch therefor
JP4577230B2 (ja) トークンバケットによるトラヒック制御装置、方法及びプログラム
MXPA05012863A (es) Sistema y metodo para planeacion con base en tiempo.
JP2007189592A (ja) トークンバケットによるトラヒック制御装置、方法及びプログラム
US11063876B2 (en) Automatically cycling among packet traffic flows subjecting them to varying drop probabilities in a packet network
JP3093160B2 (ja) 非同期転送モードのセルを多重化する装置及び方法
US20040257991A1 (en) Backpressure history mechanism in flow control
US6442136B1 (en) Traffic shaping device for ATM communication network
JP4577279B2 (ja) トークンバケットによるトラヒック制御装置、方法及びプログラム
EP2247044A1 (en) Packet network processing node and method
US6920111B1 (en) Multiple update frequencies for counters in a multi-level shaping system
Chu et al. Partial sharing and partial partitioning buffer management scheme for shared buffer packet switches
EP1517484A1 (en) Method and apparatus for traffic scheduling
KR0150077B1 (ko) 비동기 전송모드망에서 씨비알 트래픽의 셀지연변이 제한을 위한 다중화장치 및 다중화방법

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: 20120820

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130819

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140818

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150817

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160819

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170818

Year of fee payment: 9