KR100902513B1 - 데이터 스트림 프로세서들에서 데이터 스트림들의 조작 - Google Patents

데이터 스트림 프로세서들에서 데이터 스트림들의 조작 Download PDF

Info

Publication number
KR100902513B1
KR100902513B1 KR1020037013456A KR20037013456A KR100902513B1 KR 100902513 B1 KR100902513 B1 KR 100902513B1 KR 1020037013456 A KR1020037013456 A KR 1020037013456A KR 20037013456 A KR20037013456 A KR 20037013456A KR 100902513 B1 KR100902513 B1 KR 100902513B1
Authority
KR
South Korea
Prior art keywords
traffic
descriptor
packets
scheduler
descriptors
Prior art date
Application number
KR1020037013456A
Other languages
English (en)
Other versions
KR20030089717A (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 KR20030089717A publication Critical patent/KR20030089717A/ko
Application granted granted Critical
Publication of KR100902513B1 publication Critical patent/KR100902513B1/ko

Links

Images

Classifications

    • 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/15Flow control; Congestion control in relation to multipoint traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/58Changing or combining different scheduling modes, e.g. multimode scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/60Queue scheduling implementing hierarchical scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/201Multicast operation; Broadcast operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/201Multicast operation; Broadcast operation
    • H04L49/203ATM switching fabrics with multicast or broadcast capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • H04L49/254Centralised controller, i.e. arbitration or scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • H04L49/255Control mechanisms for ATM switching fabrics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3081ATM peripheral units, e.g. policing, insertion or extraction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5638Services, e.g. multimedia, GOS, QOS
    • H04L2012/5646Cell characteristics, e.g. loss, delay, jitter, sequence integrity
    • H04L2012/5647Cell loss
    • H04L2012/5648Packet discarding, e.g. EPD, PTD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5638Services, e.g. multimedia, GOS, QOS
    • H04L2012/5646Cell characteristics, e.g. loss, delay, jitter, sequence integrity
    • H04L2012/5651Priority, marking, classes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5678Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
    • H04L2012/5679Arbitration or scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5678Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
    • H04L2012/5681Buffer or queue management
    • H04L2012/5682Threshold; Watermark
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/40Constructional details, e.g. power supply, mechanical construction or backplane
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/50Overload detection or protection within a single switching element
    • H04L49/501Overload detection
    • H04L49/503Policing

Abstract

본 발명은 패킷들의 스트림들에 대해 사용자가 구성가능한 트래픽 관리 기능들을 수행하는 기술들을 제공한다. 기능들은 정형화, 및 세그먼테이션와 재결합을 포함하여, 멀티캐스팅, 폐기, 스케줄링을 포함한다. 기술들에서, 기능들은 스트림의 패킷들에서 직접 수행되는 것이 아니라 대신 저장된 패킷들을 나타내는 서술자들에서 수행된다. 패킷의 서술자는 적어도 패킷에 대한 식별자와, 서술자에 대해 수행될 한 세트의 트래픽 관리 기능들에 대한 특정자를 포함한다. 사용자는 서술자들의 트래픽 큐에 대한 한 세트의 트래픽 관리 기능들을 구성한다. 서술자 내 특정자는 서술자 큐를 특정함으로써 한 세트의 트래픽 관리 기능들을 특정한다. 멀티캐스팅에서, 서술자가 복제되어, 하나 이상의 트래픽 큐에 넣어지며, 폐기에 관하여, 트래픽 큐에 연관된 폐기 기능에서 패킷이 폐기될 것으로 결정하였을 때, 서술자는 폐기 트래픽 큐에 넣어진다. 폐기 트래픽 큐 내 서술자들로 표현된 패킷들은 이로부터 폐기된다. 폐기 트래픽 큐들을 포함하여, 모든 트래픽 큐들로부터 서술자들의 출력이 스케줄링된다. 스케줄링은 스케줄러들의 계층을 사용하여 행해진다. 계층의 형태 및 계층 내 스케줄러들에 의해 사용되는 스케줄링 알고리즘들은 둘 다 사용자가 구성할 수 있다. 개시된 바와 같이, 기술들은 트래픽 관리 코프로세서 집적회로로 구현된다. 트래픽 관리 코프로세서는 스위칭 기능들을 수행하는 디지털 통신 프로세서 집적회로에 사용된다. 패킷들용의 버퍼들은 디지털 통신 프로세서 내 있다. 수정된 부분 패킷 폐기 알고리즘 및 프레임 기초 결손 라운드 로빈 스케줄링 알고리즘이 또한 개시된다.
패킷, 스트림, 트래픽 관리 기능, 트래픽 큐, 코프로세서

Description

데이터 스트림 프로세서들에서 데이터 스트림들의 조작{Manipulating data streams in data stream processors}
관련 출원과의 상호 참조
본 특허 출원은 2001년 4월 13일 출원된 미국 임시 특허 출원 60/283746 호로부터 우선권을 주장한다.
1. 발명의 분야
본 발명은 예를 들면 패킷 스위치들 및 라우터들과 같은 장치들에서 디지털 데이터 스트림들을 처리하는 것에 관한 것으로, 특히 출력 스트림들을 정형화하고 이들을 세그먼테이션 혹은 재결합하는 것을 포함하여, 패킷들을 다수의 스트림들로 멀티캐스팅하고, 스트림 내 패킷들을 폐기하고, 스케줄링하는 등의 처리에 관한 것이다.
2. 관련 기술의 설명: 도 1
패킷들 및 프로토콜들
디지털 시스템들 간 통신은 일반적으로 패킷들에 의한다. 패킷은 도 1에 113으로 표시하였다. 단순히 패킷은 프로토콜에 의해 의미가 결정되는 비트들의 시퀀스이다. 프로토콜은 패킷을 처리하는 디지털 장치들이 어떻게 패킷 내 비트들을 해석하는 지를 정의한다. 프로토콜에 관계없이 대부분의 패킷들은 특정의 패킷이 프로토콜에 따라 어떻게 처리될 것인가를 나타내는 헤더(115), 및 패킷에 의해 전달되는 실제 정보인 페이로드(117)를 구비한다. 패킷은 단순히 패킷의 끝을 나타내는 트레일러(119)를 구비할 수도 있는데, 그러나 전송시 혹은 패킷 처리시 발생된 에러들의 검출 및/또는 정정을 할 수 있게 하는 정보를 포함할 수도 있다. 이를 정의하는 프로토콜에 따라, 패킷은 고정길이 혹은 가변길이를 가질 수도 있다. 다음 설명에선, 헤더(115) 및 트레일러(119)의 콘텐트들이 해석되는 방식이 완전히 프로토콜에 의해 결정되므로, 이들 콘텐트들은 프로토콜 데이터라 칭해질 것이고, 페이로드(117)의 콘텐트들은 페이로드 데이터라 칭해질 것이다. 어떤 프로토콜들용 패킷들을 프레임들 혹은 셀들이라 칭해진다.
패킷들은 많은 상이한 레벨들에서 디지털 시스템들의 통신을 위해 사용된다. 이에 따라, 디지털 시스템의 한 레벨에서의 한 그룹의 패킷들의 페이로드는 보다 상위 레벨의 패킷일 수도 있다. 이것을 도 1에 137로 나타내었다. IP 패킷(121)은 IP 프로토콜에 따라 해석되는 패킷이다. IP 패킷들(121)은 IP 헤더(123) 및 가변길이의 IP 페이로드(125)를 구비한다. IP 헤더(123) 내 정보에는 IP 페이로드(125)의 길이가 포함된다. IP 패킷(121)이 물리적 네트워크를 통해 전송될 때, 이 IP 패킷은 전송 패킷들(127)의 스트림(135)의 페이로드로 전해진다. 각각의 전송 패킷(127)은 자신의 헤더(129), 페이로드(131), 및 트레일러(133)를 구비한다. 여기서 전송 패킷들이라는 것은 ISO 7계층 모델의 링크층에서의 패킷들이다. 전송 패킷들은 링크층에 사용되는 프로토콜에 따라, 고정 혹은 가변길이들을 구비할 수도 있다.
전송 패킷들을 처리하는 장치들은 패킷들 내 헤더(129) 및 트레일러(133)에 의해 나타낸 바대로 처리를 행하고, 페이로드(131)의 콘텐트들은 검사하지 않는다. 전송 패킷은 그 목적지에 도달하였을 때, 페이로드는 이 경우 IP 프로토콜에 따라 동작하는 구성요소인, 의도된 시스템의 부분으로 보내지고, 이 구성요소는 IP헤더(123) 내 나타낸 바대로 IP 패킷(121)을 처리한다. 물론, IP 페이로드(125)는 다른, 더 높은 레벨용의 패킷일 수도 있다. 예를 들면, 해독기(decrypter)용으로 정의된 패킷일 수도 있고, 이 패킷의 페이로드는 암호화된 IP 패킷(121)일 수도 있다. 이러한 경우, IP 패킷(121)을 처리하는 구성요소는 해독기로 페이로드를 보내고, 이 해독기는 암호화된 IP 패킷(121)을 해독하여, 해독된 IP 패킷을, 다음 처리를 위해 IP패킷들을 처리하는 구성요소에 돌려보낸다. 이 처리는 물론 해독된 IP 패킷들을 다른 목적지로 보내는 것을 포함할 수도 있고, 그 목적지와의 통신이 전송 패킷들(127)용의 프로토콜에 의한 것이면, IP 패킷들을 처리하는 구성요소는 전송 패킷 스트림들을 생성하는 구성요소에, 해독된 IP패킷을 제공할 것이며, 해독된 IP패킷은 전송 패킷들(127)의 페이로드로 전달될 것이다.
패킷 스위치들
서로 간에 원격으로 위치한 디지털 시스템들 간에 통신하는 데에 패킷들이 사용될 때, 패킷들은 시스템들을 접속하는 디지털 네트워크들 상에서 이동한다. 물리적 레벨에서, 디지털 네트워크는 두 장치들 간에 신호를 송신하기 위해 예를 들면, 이더(ether), 도전 와이어, 혹은 광 케이블과 같이 어떤 매체를 채용할 수도 있다. 패킷들은 패킷 스위치들에 의해 전송경로들 중에서 라우팅한다. 패킷 스위치는 통상 패킷 헤더에 포함된 정보에 따라 패킷을 라우팅한다.
아는 바와 같이, 각 종류의 프로토콜들은 자신의 라우팅 규칙들을 갖고 있다. 예를 들면, IP 프로토콜은 논리적 라우팅을 사용하는데, IP 패킷의 각각의 발신지 혹은 목적지는 논리 IP 주소를 갖고, 주어진 목적지에 대해 의도된 IP 패킷은 이 IP패킷의 헤더에 그 목적지의 논리 IP 주소를 갖는다. 헤더는 목적지의 물리적 위치를 나타내진 않는다. IP 패킷 스위치는 그것의 목적지에 이르는 최소한의 방법의 부분으로 패킷을 얻을 물리적 주소로 IP주소를 변환해야 하며, 전송 패킷들의 스트림(135)을 이들 패킷들의 페이로드(131)로서 IP 패킷을 전하는 물리적인 주소로 보내지게 해야 한다. 이에 따라, IP 노드(109(n))는 이더넷 LAN(105(a)) 상의 이더넷 노드(107(n)) 상에 있고, LAN(105)(a))에 접속된 IP 패킷 스위치는 IP패킷을 이더넷 패킷들의 페이로드로서 전달하는 이더넷 노드(107(n))에 이 이더넷 패킷 스트림을 보내게 함으로써 IP 노드(109(n))에 어드레스된 IP패킷에 응답해야 한다.
통상적인 패킷 스위치를 103에 나타내었다. 패킷 스위치(103)는 다수의 물리 매체들(106)에 접속되고, 이들에 의해 패킷 스위치(103)가 데이터를 송수신할 수 있다. 이러한 매체의 예들로서 광섬유 케이블들 혹은 전기적 도체들로 구성된 케이블들일 수 있다. 각각의 이러한 매체(106)는 매체를 통해 보내지는 데이터를 정의하기 위한 자신의 프로토콜을 갖고 있고, 예를 들면, 광케이블을 통해 데이터를 보내는 널리 사용되는 한 프로토콜은 소넷 프로토콜(SONET protocol)이다. 도 1에서, 매체들(106)(a..m)은 SONET 프로토콜을 사용하는 광케이블이고, 매체들(106)(n..z)은 전기 케이블들이다. 여기서는 매체 패킷들이라 칭해지는, 매체 레벨에서의 패킷들은 이들의 페이로드 전송 패킷들을 구비한다. ISO 7-계층 모델 관점에서 매체 패킷들은 물리 계층의 패킷들이다. 스위치(103)에서, 광케이블들로 송수신되는 전송 패킷들은 ATM 광역 네트워크(111)에서 사용되는 ATM 프로토콜에 따라 만들어진 패킷들이고, 한편 전기 케이블들로 송수신되는 전송 패킷들은 근거리 네트워크들(109)에서 사용되는 이더넷™ 프로토콜에 따라 만들어진다. 많은 경우들에 있어서, 전송패킷들은 이들의 페이로드들로서 IP 패킷들을 구비하고, 이들 경우들에 있어서, 패킷 스위치(103)는 IP패킷들을 IP노드들(109)에 라우팅한다. 전술한 바와 같이, 이는, IP패킷이 목적지에 도달하기 위해 패킷이 이동해야 하는 매체(106)(i)를 결정하고, 이어서 이 매체에 사용되는 전송패킷 스트림을 페이로드들로서 구비하여 이들이 결국 페이로드로서 IP패킷을 구비하는, 매체에 필요한 프로토콜에 따라 패킷 스트림을 형성함으로써 행해진다. 이에 따라, IP노드(109)(n))로 보내지는 WAN(111)으로부터의 IP 패킷을 패킷 스위치(103)가 수신하고 IP 노드(109(n))가 이더넷 LAN(105)(a)) 상의 이더넷 노드(107)(n) 내에 있다면, 패킷 스위치(103)는 매체(106)(n)에서 요구하는 형태로 패킷 스트림을 형성해야 하며, 이 패킷 스트림의 페이로드는 결국 IP패킷을 페이로드로서 전달하는 이더넷 노드(107)(n)에 보내지는 이더넷 패킷의 스트림이다.
패킷 스위치(103)에 의해 수행되는 기능들은 패킷 스위치가 동작하는 네트워크 환경 및 패킷 스위치의 역량들에 따른다. 다음 설명에서 중요한 기능들을 여기서는 트래픽 관리 기능들이라 칭하도록 하겠다. 트래픽 관리 기능들의 3 개의 일반적인 그룹들이 있다.
ㆍ 특정한 한 발신지로부터 하나 또는 그이상의 서로 다른 목적지들로 수신되는 패킷들의 라우팅.
ㆍ 패킷 스트림들을 라우팅하는데 필요한 바대로 변환.
ㆍ 데이터를 전송하는 스위치(103)나 장치들 어느 것도 과도하게 되지 않게 하고 서비스하는 스위치(103) 및 네트워크들이 공정하고 효율적으로 활용되게, 트래픽을 제어.
이들 기능들을 보다 상세히 하면, 라우팅은 필터링 및 멀티캐스팅을 포함한다. 필터링은 네트워크 경계들에서 수행된다. 패킷 스위치(103)는 여기서는 사설 네트워크(104)와 공중 네트워크(102) 간에 경계인 것으로 도시되었다. 각각의 IP 패킷(121)의 헤더는 패킷에 대한 발신지 IP 주소와 목적지 IP 주소를 포함하고, 사설 네트워크(104)의 보안 정책들은, 어떤 발신지 주소들을 갖는 공중 네트워크(102)에서 사설 네트워크(104)로의 IP 패킷들에 의한 액세스를 금지시키며, 또한 어떤 발신지 주소들을 갖는 사설 네트워크(104)에서 공중 네트워크(102)로 패킷들에 의한 액세스도 금지시킨다. 스위치(103)는 각각의 입력 IP 패킷의 수신지 주소를 금지된 수신지 주소 리스트와 비교함으로써 입력 IP패킷을 필터링하고, 입력 패킷이 리스트 상에 있다면 이 패킷은 폐기된다. 스위치(103)는 유사한 방식으로 출력 패킷들을 필터링한다. 멀티캐스팅은 소스로부터 수신된 패킷들의 복제들을 다수의 목적지들로 보내는 것이다.
스트림 변환은 ATM 전송 패킷들의 스트림으로서 수신된 IP 패킷을, 이더넷 전송 패킷들의 스트림으로서 목적지에 출력되는 IP 패킷으로 변환하는 전술한 바와 같은 동작들을 포함한다. 이러한 동작들은 보다 상위 레벨의 패킷이 스위치에서 수신되었을 때 전송 패킷들의 페이로드들로부터 이 상위 레벨의 패킷을 재결합하는 것과, 스위치로부터 송신시 이 보다 상위 레벨의 패킷을 전송패킷들로 세그먼테이션하는 것을 통상적으로 반드시 포함한다. 스트림 변환은 또한 페이로드들의 암호화 및 해독을 포함한다. 암호화 혹은 해독이 발생되는 한 장소는 네트워크 경계들에 있다. 예를 들면, 사설 네트워크(104)의 보안 정책은 공중 네트워크(102) 내 어떤 목적지에 보내진 IP 패킷들이 암호화될 것을 요할 수도 있고 암호화는 스위치(103)에서 행해질 수 있다. 스위치(103)는 또한 패킷들이 사설 네트워크(104)로 들어왔을 때 이들 목적지들로부터 오는 패킷들을 해독할 수 있다.
트래픽을 제어한다는 것은, 출력 대역폭이 효율적으로 사용되게 하고 가능한 정도까지 네트워크 자원들 및 타이밍에 관한 각 출력 스트림의 요건들이 충족될 수 있도록, 패킷들을 폐기하고 스위치(103)로부터의 패킷들의 출력을 스케줄링함으로써, 스위치(103) 및 이의 목적지 다운스트림이 오버로딩되지 않도록 보호하는 것을 포함한다. 이 점에 있어서 출력 스트림의 요건들은 서비스 부류로 칭해진다. 패킷 스위치는, 패킷들이 서로 간에 고정된 시간 간격들 내에 목적지에 도착해야 하는 것으로, 디지털 TV를 통해 발송된 후에 적합한 시간에(시간으로 측정된) 이메일(e-mail)이 도착하는 것이 요구되는 것의 전부인 이메일에서 부터, 패킷들 간의 시간 간격들 뿐만이 아니라 패킷의 발신지에서 목적지로 패킷이 네트워크를 통과하는데 걸리는 총 시간에 엄격한 제약이 있는 패킷 텔레포니(packet telephony)에 이르기 까지의 서비스 부류들을 취급할 수 있어야 한다.
도면에서 참조 번호들은 3자리 숫자이고, 일반적으로, 우측의 2자리 숫자는 나머지 숫자들에 의해 표시되는 도면에서의 참조 부호들이다. 따라서, 참조 부호 203의 아이템은 도 2에서 아이템 203로서 먼저 표시된다. 이 규칙의 예외들을 다음 표에 표시된다.
참조 부호들 도면
6xx 6, 31
7xx 7, 32, 33
8xx 8,34
9xx 9,35
20xx 20, 38, 39
23xx 23, 36
24xx 24, 37
30xx 30, 40, 41
상세한 설명
다음의 상세한 설명은 여기 개시된 기술이 실시될 수 있는 환경의 개요부터 시작하고 이어서 이 기술을 실시하는 트래픽 관리자를 상세히 기술하고, 마지막으로 트래픽 관리자 집적회로 및 외부 메모리 IC들을 채용하는 트래픽 관리자의 구현을 개시한다.
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
도 1은 패킷 네트워크 및 패킷들을 도시한 도면.
도 2는 참조 데이터 스트림 관리(look-aside data stream management)를 채용하는 디지털 통신 프로세서 및 디지털 통신 프로세서에 사용되는 트래픽 관리 프로세서의 블록도.
도 3은 트래픽 관리 프로세서(203)의 개념적 개요도.
도 4는 트래픽 큐(204) 및 이와 연관된 데이터 구조들의 개요도.
도 5는 스케줄러 계층을 도시한 도면.
도 6은 엔큐 데이터 메시지의 포맷의 상세도.
도 7은 디큐 데이터 메시지의 상세도.
도 8은 트래픽 큐 파라미터 블록(403)의 포맷의 상세도.
도 9는 멀티캐스트 상세화 테이블(421)의 포맷의 상세도.
도 10은 폐기 구성 블록(431)의 포맷의 상세도.
도 11은 버퍼 풀 명세(433)의 포맷의 상세도.
도 12는 폐기 동작의 상세한 흐름도.
도 13은 위탁 엔큐 데이터 메시지의 포맷의 상세도.
도 14는 양호한 실시예에서 스케줄러들이 구성될 수 있는 원형을 나타낸 도면.
도 15는 시스템(201)의 현재 바람직한 구현의 블록도.
도 16은 TMC IC(1503)의 상세한 블록도.
도 17은 TMC IC(1503)에서 외부 메모리의 구성의 상세한 블록도.
도 18은 TMC IC(1503)에서 예를 든 외부 메모리 구성을 도시한 테이블.
도 19는 TMI 버스(1507) 상의 신호들의 상세도.
도 20은 TMI 버스(1507) 상의 신호들에 대한 타이밍도.
도 21은 트래픽 부류 스케줄러(503)의 상세도.
도 22는 내부 스케줄러(509)의 상세도.
도 23은 스케줄러를 구성하는데 사용되는 데이터 구조의 상세도.
도 24는 스케줄러 입력을 정의하는데 사용되는 상세도.
도 25는 TMC(203) 및 QMU(211)의 블록도.
도 26은 프레임 기초 결손 라운드 로빈 스케줄링 알고리즘을 채용하는 트래픽 부류 스케줄러의 상세한 블록도.
도 27은 가상 출력 포트(521)를 구성하는 데이터 구조도.
도 28은 디큐 확인응답 메시지를 나타낸 도면.
도 29는 트래픽 부류 스케줄러(503)를 구성하는데 사용되는 데이터 구조도.
도 30은 트래픽 큐들(204)을 트래픽 부류 스케줄러들(503)용의 입력 스케줄러 큐들에 관련시키는데 사용되는 데이터 구조도.
도 31은 도 6에 이은 도면.
도 32는 도 7에 이은 도면.
도 33은 도 7에 이은 도면.
도 34은 도 8에 이은 도면.
도 35는 도 9에 이은 도면.
도 36은 도 23에 이은 도면.
도 37은 도 24에 이은 도면.
도 38은 도 20에 이은 도면.
도 39는 도 20에 이은 도면.
도 40은 도 30에 이은 도면.
도 41은 도 30에 이은 도면.
참조 데이터 스트림 조작(Look-aside data stream manipulation)
여기 개시된 데이트 스트림 조작 기술은 참조 데이터 스트림 조작을 채용하는 환경에서 실시된다. 참조 데이터 스트림 조작에서, 패킷의 페이로드는 네트워크 입력으로부터 수신되고 네트워크 출력으로 출력될 때까지 저장된다. 패킷이 수신되었을 때, 패킷을 나타내는 서술자가 만들어지고, 용어가 여기 사용되는 바대로, 서술자는 저장된 페이로드에 대한 식별자 및 환경이 페이로드가 속하는 패킷 스트림을 조작하는 방식을 제어하는 추가 정보를 포함한다. 데이터 스트림의 조작은 서술자가 나타내는 패킷 대신 서술자를 사용하여 행해진다. 예를 들면, 입력에서 출력으로의 스위칭은 출력에 의해 서비스 받는 큐에 서술자를 넣어둠으로써 행해지며, 서술자가 큐의 헤드에 도달하였을 때, 출력은 조작정보 및 페이로드 서술자를 사용하여, 서술자와 연관된 페이로드를 출력을 위해 요구되는 형태로 출력한다. 이를테면 멀티캐스팅, 레이트 정책(rate policing), 정체에 기인한 폐기, 스케줄링, 혹은 세그먼테이션(segmentation) 및 재결합(reassembly) 등의 다른 동작들은 페이로드들이 아닌 서술자들을 조작함으로써 전체 혹은 부분적으로 유사하게 수행된다.
참조 데이터 스트림 조작을 위한 환경: 도 2
도 2는 참조 데이터 스트림 조작이 실시되는 환경(201)을 도시한 것이다. 환경(201)은 두 개의 주 구성요소들로서, 서술자들이 나타내는 페이로드들과는 별도로 이들 서술자들을 조작하는 디지털 통신 프로세서(DCP)(202) 및 디지털 통신 프로세서(202)를 위해 멀티캐스팅, 레이트 정책 및 폐기, 스케줄링, 정형화 및 세그먼테이션와 재결합과 같은 보다 상위 레벨의 데이터 스트림 조작 작업들을 수행하는 트래픽 관리 코프로세서(TMC)(203)를 구비한다. 일 실시예에서, DCP(202) 및 TMC(203)는 추가의 외부 메모리 IC들을 구비한 집적회로들로서 구현되며, 다른 실시예에서, 이들은 이와 같이 구현되지 않을 수도 있고, 다른 것들에서, TMC(203)는 DCP(202)에 일체로 될 수도 있다. DCP(202)의 IC 구현의 일 예는 매사츄세츠 01845, 앤도버, 워터 스트리트 120의 C-Port 사로부터 구매될 수 있는 C-5(등록상표)이다. C-5의 원형 구현은 1999년 11월 18일 공개된, PCT 특허출원 WO99/59078, C-Port Corporation, Digital Communications Processor에 상세히 기재되어 있다.
DCP(202)를 상세히 하면, DCP(202)는 입력들(219)(o..m)에서 하나 또는 그이상의 네트워크들로부터 데이터 스트림들을 수신하고, 데이터 스트림들을 출력들(225)(o..p)에서 하나 또는 그이상의 네트워크들에 전송한다. 본 상황에서 DCP(202)의 중요 내부 구성요소들은 다음과 같다.
ㆍ 데이터 스트림들을 처리하는 채널 프로세서들. 채널 프로세서들은,
- 입력들(219)(o..m)에 수신된 데이터 스트림들을 처리하는 수신 프로세서들(221), 및
- 출력들(225)(o..p)에 전송되는 데이트 스트림들을 처리하는 전송 프로세서들(223)을 포함한다.
채널 프로세서들은 DCP(202) 내부에서 페이로드들을 처리하는데 사용될 수도 있다.
ㆍ 입력들(219)(o..m)을 통해 수신된 페이로드들이 출력들(225)(o..p)을 통해 출력될 때까지 이들을 저장하는 버퍼 관리부(227).
ㆍ 서술자들의 큐들(213)을 저장하는 큐 관리부(211).
채널 프로세서들은 서로 상이한 종류의 전송 패킷들 및 물리 계층 데이터 표현들을 처리하도록 구성될 수 있다. 서술자들은 채널 프로세서들에 의해 작성되고 읽혀진다. 대부분의 경우에, 서술자는 버퍼 관리부(227)에 저장된 페이로드를 표현하고, 서술자가 나타내는 페이로드를 포함하는 페이로드 버퍼(229)(i)에 대한 식별자를 포함한다. 서술자가 DCP(202) 내에 남아 있는 한, 서술자의 콘텐트들은 서술자를 작성하는 채널 프로세서 및 서술자를 읽는 채널 프로세서의 필요에 의해서만 결정된다. DCP(202) 내에 남아 있는 서술자들을 이후에서는 채널 프로세서 서술자들이라 칭한다. 한 이러한 서술자를 214로 도시하였다. 서술자가 채널 프로세서들만이 아니라 TMC(203)에 의해 처리되어야 할 때는, 서술자는 TMC(203)에 의한 사용을 위해 추가 정보를 포함해야 한다. 이러한 추가 정보를 포함하는 서술자들을 다음에서는 TMC 서술자들(216)이라 칭한다.
DCP(202)의 성분들이 데이터 스트림을 처리하기 위해 상호작용하는 방식은, ATM 패킷을 사용하며 광 물리계층을 갖는 네트워크로부터의 IP패킷을 전송 패킷들로서 수신하고, 이더넷 패킷들을 전송 패킷들로서 사용하고 전자 물리계층을 갖는 네트워크에 IP패킷을 출력하는 예에 의해 설명할 수 있다. 수신된 스트림(219(i))은 광 물리계층 및 ATM 전송계층을 갖는 데이트 스트림들을 취급하고 IP패킷들을 처리하도록 구성된 수신 프로세서(221(i))에서 수신된다. 수신 프로세서(221(i))가 스트림(219(i))을 수신하였을 때, 스트림으로부터 IP 패킷 페이로드를 추출하고 IP패킷 페이로드를 버퍼 관리부(227) 내 페이로드 버퍼(229(j))에 기입하고, 페이로드 버퍼(229(j))에 대한 식별자를 보존한다. 식별자는 채널 프로세서 서술자(214(k)) 내에 둔다. 서술자는 IP패킷으로부터 다른 프로토콜 데이터를 추가로 포함할 수도 있다. 수신 프로세서(221(i))는 큐 관리부(211) 내 어떤 서술자 큐(들)(213(I))에 IP패킷용 서술자를 둘 것인가와 큐의 후미에 서술자(214(k))를 둘 것인가를 결정하기 위해 IP패킷의 헤더 내 주소 정보를 또한 처리한다. 이 큐(213(I))는 원하는 네트워크에 출력하는 전송 프로세서(223(j))에 의해 읽혀진다. 전송 프로세서(223(j))는 이더넷 전송계층 및 전자 물리계층을 사용하여 IP패킷을 출력하도록 구성되었다. 서술자(214(k))가 큐(213(I))의 헤드에 도달하였을 때, 전송 프로세서(223(j))는 서술자(213(k)) 내 정보를 사용하여 버퍼(229(j))를 찾고 적합한 전송계층 및 물리계층을 사용하여 페이로드를 IP패킷으로서 출력한다.
환경(201)에서의 트래픽 관리
DCP(202)의 동작에 대한 전술한 바로부터 명백한 바와 같이, DCP(202)는 가장 간단한 트래픽 관리 기능들만을 위한 자신의 충분한 자원들을 구비한다. 이것은 특정 입력(219(i))에 수신된 데이터 스트림을 특정 출력(219(j))에 라우팅할 수 있고 이러한 라우팅에 필요한 바대로 데이터 스트림을 변환할 수 있다. 채널 프로세스들 내 재순환 능력들에 의해 암호화 및 해독과 같은 데이터 스트림 변환이 가능하다. 그러나, DCP(202) 자체의 상태 혹은 DCP(202)에 의해 접속된 네트워크들 내 장치들의 요건들에 대해 알아야 하는 "보다 상위" 트래픽 관리 기능들을 수행하기 위한 충분한 자원들이 DCP(202) 내엔 없다. 이러한 기능들의 예는 패킷 폐기, 스케줄링, 정형화, 및 패킷 재결합 및 세그먼테이션이다.
환경(201)에서, 이러한 보다 높은 트래픽 관리 기능들은, 바람직한 실시예에선 외부 메모리를 구비하고 DCP(202)의 IC 구현과 함께 동작하도록 설계된 IC인 트래픽 관리 코프로세서(203)에 의해 수행된다. DCP(202)가 TMC(203)와 함께 사용될 때, 큐 관리부는 DCP(202)에 의해 전술한 바와 같이 사용되는 로컬 큐들(245)만이 아니라, TMC(203)에 보낼 TMC 서술자들(216)용의 큐(243) 및 TMC(203)로부터 수신된 서술자들용의 하나 또는 그이상의 큐들(247)을 포함한다. DCP(202)에 의해 처리되는 데이터 스트림이 하나 또는 그이상의 보다 높은 관리 기능들을 필요로 할 때, 데이터 스트림을 수신하는 수신 프로세서(221(i))는 큐(243)의 후미에 부가할 QMU(211)에 TMC 서술자(216)를 제공한다. 코프로세서(203)는 이 TMC 서술자(216(i))를 이의 데이터 스트림용 및 흔히 서술자(216)(i)가 연관된 데이터 스트림과 더불어 관리되어야 하는 트래픽을 갖는 다른 데이터 스트림들용의 트래픽 큐(204(m))에 넣는다. TMC 서술자가 있는 트래픽 큐는 TMC(203)이 서술자로 무엇을 할 것이지 및 TMC가 서술자를 어떻게 할 것인지를 결정한다. 따라서, 넓게 보아, 트래픽 큐는 한 세트의 서술자들을 TMC(203) 내 한 세트의 트래픽 관리 기능들에 관계시키며, 후술하는 바와 같이, 트래픽 큐는 또한 한 세트의 서술자들을 DCP(202) 내 한 세트의 패킷 처리 기능들에 관계시킨다.
트래픽 뷰의 두 가지 일반적인 부류들, 즉 DCP(202)에 의해 폐기되지 않는 패킷들에 대한 서술자들용의 비-폐기 트래픽 큐들(249)과 TMC(203)가 폐기해야 하는 것을 결정한 패킷들에 대한 서술자들용의 폐기 트래픽 큐들(251)이 있다. TMC(203)는, 특정의 트래픽 큐(204(m))의 헤드로부터 TMC 서술자(216)를 읽고, TMC 서술자(216)을 처리하기 위해 QMU(211)에 의해 필요로 하는 정보를 부가하고, TCM 서술자를 QMU 서술자로 만들고, 207로 나타낸 바와 같이, QMU 서술자를 큐 관리부(211)에 제공한다. 이어서 큐 관리부(211)는 QMU 서술자에 포함된 cp 서술자를, 서술자에 의해 표현된 패킷에 대해 DCP(202)에서 행할 필요가 있는 다른 처리를 위해 서술자 큐(213(n))의 후미에 넣는다. 후술하는 바와 같이, TMC(203)에의 서술자들의 입력들 및 TMC(203)으로부터 서술자들의 출력들은 흐름이 제어된다. 후자의 경우, 흐름 제어는 TMC(203)에서 QMU(211)로의 흐름을 제어할 뿐만 아니라, 큐들(247) 내 개개의 큐들(213)에의 서술자들의 흐름도 제어한다.
예를 들면, 트래픽 큐가 폐기 트래픽 큐이면, 큐 관리부(211)는 그 큐에 의해 표현된 패킷을 버퍼 관리부(227)에서 폐기하는데 필요한 처리를 행하는 채널 프로세서에 의해 서비스받는 큐(213)에 서술자를 넣는다. 반면, 트래픽 큐가 비-폐기 트래픽 큐이면, 큐 관리부(211)는 스트림을 전송 스트림(225(i))에 출력하는 전송 프로세서(223(j))용의 서술자 큐(213)에 서술자를 넣을 수도 있다. DCP(202) 내 전송 혹은 수신 프로세서들 중 어느 것이든 서술자들을 읽어 이들을 QMU(211)에 의해 관리되는 큐들에 기입할 수 있기 때문에, 코프로세서들(203)과 DCP(202) 간의 임의의 복잡한 상호작용들이 물론 가능하다. 이러한 복잡한 상호작용들의 예를 제공하도록 하겠다.
트래픽 관리 프로세서(203)는 많은 서로 상이한 트래픽 관리 기술을 트래픽 큐(204)에 적용할 수 있다. 기술 적용방법은 각 트래픽 큐(204)마다 다르게 할 수 있다. 트래픽 큐(204(i))에 어떤 트래픽 관리 기술들을 적용할 것인지 결정하는 정보는 트래픽 관리 정보(235)에 포함된다. 논리적으로 보면, 트래픽 관리 정보(235)는 3가지 범주에 속한다.
ㆍ 사용 가능 기술들을 정의하는 트래픽 관리 정의들(237). 바람직한 실시예에서, 이들 정의들은 TMC(203)에 내장되고, 다른 실시예들에서, 사용자는 정의들(237)을 수정하거나 새로운 정의들을 추가할 수도 있다.
ㆍ 237에 정의된 기술들을 여러 세트의 트래픽 큐들(204)에 적용하는 방법을 정의하는 트래픽 관리 구성 데이터(239).
ㆍ 각 트래픽 큐(204)의 현재 상태, 및 트래픽 관리에 관계된 TMC(203) 및 DCP(202)의 다른 구성요소들의 현재 상태를 포함하는 현재 트래픽 관리 상태(241).
트래픽 관리는 트래픽 큐(204)를 선택하기 위해, 구성 데이터(239)에 의해 구성된 트래픽 관리 정의들(235)을 현재 트래픽 관리 상태(241)에 적용함으로써 TMCP(230)에서 행해지며, 선택된 트래픽 큐의 헤드에 있는 TMC 서술자(216)에 연관된 페이로드는 트래픽 관리 정의들, 구성, 및 현재 트래픽 관리 상태에 의해 요구되는 바대로 처리된다.
TMC(203)의 논리적 개요: 도 3
도 3은 트래픽 관리 프로세서(203)의 구성요소들의 논리적 개요를 도시한 것이다. 바람직한 실시예에서는, TMC(203)의 두 개의 주요 세분된 것인, 하나 또는 그이상의 처리 요소들로 구현될 수 있는 처리 구성요소들(306), 및 TMC 메모리(307)가 있다. 바람직한 실시예에서, 모든 처리 구성요소들(306)은 단일 IC로 구현된다. 처리 구성요소들(306)은 3개의 기능 그룹들로서, 엔큐 프로세서(301), 트래픽 큐 프로세서(305), 및 디큐 스케줄러(303)에 속한다. 엔큐 프로세서(301)는 QMU(211)로부터 TMC 서술자(216)를 수신하여, 어떤 트래픽 큐(들)에 서술자를 넣을 것인가를 결정한다. 이 작업의 일부는 서술자 및 서술자가 표현하는 패킷을 폐기할 것인지 결정하는 것이다. 서술자가 폐기될 것이면, 엔큐 프로세서(301)는 폐기 트래픽 큐에 넣어 둘 것임을 지정한다. 트래픽 큐 프로세서(305)는 엔큐 프로세서(301)로부터 서술자(216)를 수신하고 서술자(216)를 엔큐 프로세서(301)에 의해 지정된 트래픽 큐에 링크한다. 디큐 스케줄러(303)는 서술자를 QMU(211)에 제공하게 되는 다음 트래픽 큐(205)를 결정하고 이 트래픽 큐의 헤드에 있는 서술자를 QMU(211)에 제공한다. 바람직한 실시예에서, 3개의 모든 이들 프로세서들은 병렬로 동작함으로써 서술자들이 파이프라인으로 처리되게 한다.
바람직한 실시예에서, TMC 메모리(307)는 프로세서들(306)이 구현되는 IC 내부의 메모리 및 이 IC 외부의 메모리를 모두 포함한다. 다른 실시예들에서, IC와 외부 메모리 간 메모리의 배분은 다를 수도 있다. 기능면에서, 메모리는 tm 정의들(237)용의 기억과, tm 구성 데이터(239), 및 현재 tm 상태(231)로 나뉜다. 메모리(307)의 이들 부분들의 콘텐트들의 기능들은 이미 개요에서 설명하였다.
TMC 메모리(307)엔 스케줄링에 사용되는 스케줄러 정보(333), 서술자들(216)을 트래픽 큐들(304)에 엔큐하는데 사용되는 TQ 엔큐 정보(335), 멀티캐스팅하는데 사용되는 멀티캐스트 정보(337)의 3가지 넓은 부류의 콘텐트가 있다. 보다 상세히 하면, 바람직한 실시예에서는 tm 정의들(237)에 있어, DCP(202)에 제공될 다음 서술자(216)를 선택하기 위한 기술들을 지정하는 스케줄링 알고리즘들(309), DCP(202)로부터 수신된 TMC 서술자(216)를 폐기할 것인지 결정하는 기술들을 지정하는 트래픽 큐 엔큐 알고리즘들(311), 및 단일 TMC 서술자(216)를 복수의 트래픽 큐들에 복제할 방법을 기술하는 멀티캐스트 알고리즘(315)의 3가지 넓은 부류의 정의들이 있다.
각 부류의 정의들에 대응하는 구성 데이터(239)가 있다. 스케줄러 구성들(317)은 개개의 스케줄러들 및 스케줄러들이 스케줄러 계층 내 배열되는 방식을 정의하며, 트래픽 큐 엔큐 구성들(319)은 폐기를 행하게 될 조건들을 정의하며, 상세화 테이블들(323)은 멀티캐스트할 패킷에 대한 서술자를 어떤 트래픽 큐들에 넣어둘 것인가를 지정한다. 또한, 각 트래픽 큐(204)에 대한 구성 데이터(327)가 있다. 구성 데이터(239)는 어떤 TM 정의들을 특정의 트래픽 큐에 적용할 것인가와 이들 정의들을 적용하게 될 방식을 결정하기 위해 TMC(203)의 사용자에 의해 설정될 수 있다. 예로서, TQ 처리 구성(319)에서의 폐기 구성은 특정 트래픽 큐(204)의 후미에 넣어두는 대신 서술자(216)를 폐기할 조건들을 결정하는 파라미터들을 지정할 것이다. 바람직한 실시예에서, 구성 데이터(239)는 TMC(203)가 초기화될 때만 설정될 수 있고, 다른 실시예들에서, 구성 데이터(239)의 동적 설정이 허용될 수 있다.
현재 tm 상태(241)는 트래픽 큐들(213) 각각의 현재 상태 및 스케줄러 계층 내 스케줄러들의 현재 상태를 특정하는 데이터를 포함한다. 현재 TM 상태(241)는 현재 트래픽 큐 상태(329) 및 현재 스케줄러 상태(318)를 포함한다. 현재 트래픽 큐 상태(329)는 각 큐에 현재 포함된 서술자들(216), 큐 내 서술자들에 의해 표현된 패킷들의 크기, 및 패킷들을 저장하는 페이로드 버퍼들(229)의 현재 상태를 포함한다. 패킷들의 크기 및 페이로드 버퍼들(229)의 현재 상태는 트래픽 큐(204)에 넣어두는 대신 서술자(216)를 폐기되어야 하는지 여부와 디큐 스케줄러(303)에 의해 다음에 어느 트래픽 큐(204)가 선택될 것인지 결정하는데 사용된다. 현재 스케줄러 상태(318)는 디큐 스케줄러(303)에 의해 DCP(202)에 출력하기 위해 어느 TMC 서술자(216)가 선택된 것인지 결정한다.
TMC(203)의 일반적인 동작: 도 25
도 25는 전송 프로세서(223)에 의해 사용되는 서술자의 큐(213)에 cp 서술자(214)의 도착을 스케줄하고 그럼으로써 전송 프로세서(223)에 의해 서술자로 나타낸 페이로드의 출력을 스케줄하기 위해 TMC(203) 및 QMU(211)의 구성요소들이 어떻게 상호 작용하는가를 도시한 블록도이다.
이미 지적한 바와 같이, TMC(203)에 의해 스케줄될 TMC 서술자(216)를 작성하는 채널 프로세서는 cp 서술자(214)에 추가 정보를 부가해야 한다. 효과적으로, 채널 프로세서는 TMC 서술자(214)에 TMC 정보(2513)를 추가함으로써 이 TMC 서술자(214)의 상세에 나타나 있는 바와 같이, cp 서술자(214)를 캡슐화한다(encapsulate). 마찬가지로, TMC(203)가 cp 서술자(214)를 QMU(211)로 돌려보낼 때, QMU 서술자(2508)의 상세에 다시 나타나 있는 바와 같이, 상기 서술자에 QMU 정보(2515)를 부가함으로써 cp 서술자(214)를 캡슐화한다. 최소한, TMC 정보(2513)는,
ㆍ TMC(203)에서의 트래픽 큐(204)에 대한 식별자; 및
ㆍ 서술자가 가변길이 패킷을 나타낼 때, 서술자(213)에 의해 표현된 패킷의 길이(바이트)를 포함한다.
추가 정보는 TMC(203)에 의해 수행되는 어떤 동작들에 필요할 수도 있다. QMU 정보(2515)는 최소한, 캡슐화된 cp 서술자(214)를 서술자 큐들(247) 중 어느 것에 넣어둘 것인지를 결정하기 위해 QMU(211)가 사용하는 가상 출력 포트 식별자를 포함한다. 물론, 캡슐화된 cp 서술자(214)를 서술자 큐들(247) 중 어느 것에 넣어둘 것인지는, 서술자(214)에 의해 표현된 패킷이 DCP(202)에서 더 처리되는 방식을 결정한다.
도 25는 TMC(203)의 구조, 및 도 3보다 더욱 상세하게 QMU(211)와 TMC(203) 간 인터페이스를 또한 도시하고 있다. 도 25에 도시한 바와 같이, QMU(211)는 TMC 입력 큐의 헤드에 있는 TMC 서술자를, 서술자(216)를 포함하는 엔큐 데이터 메시지(601)를 통해 TMC(203)로 보낸다. TMC(203)가 엔큐 데이터 메시지를 수신하였을 때, TMC(203)는 메시지로부터의 서술자(216)를 입력 큐(2501)의 후미에 둔다.
엔큐 프로세서(301)는 입력 큐(2501)의 헤드로부터 서술자들(216)을 읽는다. 서술자(216)가 나타내는 패킷이 멀티캐스트될 것임을 이 서술자(216)가 나타내면, 엔큐 프로세서(301)는 멀티캐스트 정보(327)를 사용하여 어느 트래픽 큐들(204)이 서술자(216)의 복제들을 수신할 것인지를 결정한다. 그렇지 않다면, TMC 서술자(216)는 서술자(216)를 수신할 트래픽 큐를 직접 지정한다. 엔큐 프로세서(301)가 어떤 트래픽 큐(204)에 서술자(216)를 넣어둘 것인지를 알 때, 이 프로세서는 TQ 엔큐 정보(335)를 사용하여 트래픽 큐의 상태가 서술자(216)를 요하는지 및 서술자에 의해 표현된 패킷이 폐기될 것인지 여부를 결정한다. 이 경우일 때, 엔큐 프로세서(301)는 TMC 서술자(216)에서 원래 특정된 트래픽 큐를 DTQS(251) 내 폐기 트래픽 큐로 대체한다. 엔큐 프로세서(301)가 서술자(216)를 수신할 트래픽 큐(204)를 최종 정하였을 때, 엔큐 프로세서(301)는 엔큐 프로세서(301)에 의해 특정된 트래픽 큐의 후미에 엔큐하기 위해 트래픽 큐 프로세서(305)에 서술자(216)를 제공한다.
스케줄링 목적을 위해, TMC(203) 내 트래픽 큐들(204)은 도 25에 523으로 도시된 바와 같이, 스케줄러 큐들로 조직된다. 스케줄러 큐(523)는 트래픽 큐들(204)의 큐를 포함한다. 디큐 스케줄러(303)는 스케줄링을 위해서 한 세트의 비어있지 않은 스케줄러 큐들(523) 중 하나를 선택하기 위해 스케줄러 정보(333)를 사용한다. 스케줄링을 위해 디큐 스케줄러(303)가 스케줄러 큐(523)를 선택하였을 때, 현재 선택된 스케줄러 큐(523)의 헤드에 있는 트래픽 큐(204)(i)가 서비스된다. 즉, 현재 트래픽 큐(204)(i)의 헤드에 있는 서술자(216)가 QMU 서술자(2508)로서 출력 큐(2507)에 출력된다. 이로부터, TMC(203)은 QMU 서술자(2508)를 디큐 데이터 메시지(701)로서 QMU(211)에 출력한다. QMU(211)는 서술자(2508)를 TMC 출력 큐(2509)에 넣은 후, QMU 서술자(2508)에 포함된 cp 서술자(214)를 큐들(247) 내 적합한 서술자 큐(213)에 넣는다.
스케줄링에 대해 보다 상세히 하면, 트래픽 큐 프로세서(305)는 스케줄러 큐들(523)에 트래픽 큐들(204)을 넣는 것과 이들을 스케줄러 큐들(523)로부터 제거를 행한다. 트래픽 큐(204)는 트래픽 큐가 서비스될 수 있을 경우에만 스케줄러 큐(523)의 헤드에 있을 수 있다. 서비스될 수 있는 트래픽 큐를 여기서는 적격의 트래픽 큐라 칭한다. 빈 트래픽 큐들은 물론 적격은 아니다. 트래픽 큐(204)가 적격이 아닌 다른 상황들에 대해 이하에서 상세히 개시될 것이다. 트래픽 큐가 현재 적격이 아니면, 트래픽 큐 프로세서(305)는 이를 스케줄러 큐에 두지 않고 대신 이를 한 세트의 부적격의 트래픽 큐들(2511)에 남겨둔다. 트래픽 큐(204)는 또한 스케줄러 큐(523)에 넣어지는 시간과 서비스하게 될 시간 사이엔 부적격으로 될 수도 있다. 이 경우, 트래픽 큐 프로세서(305)는 부적격의 트래픽 큐(204)가 서비스되기 전에 스케줄러 큐(523)의 헤드로부터 이 부적격 트래픽 큐(204)를 제거하고, 이를 부적격 트래픽 큐들(2511)로 돌려보낸다. 헤드에 적격의 트래픽 큐를 갖는 스케줄러 큐(523)를 활성 스케줄러 큐라 칭한다. 디큐 스케줄러(303)는 단지 활성 스케줄러 큐들만을 스케줄링한다.
전술한 바와 같이, QMU 서술자(2508)는 서술자를 서술자 큐들(247) 내 큐(213)에 연관시키는 가상 출력 포트 식별자를 포함한다. 디큐 스케줄러(303)의 작업들 중 하나는 각각의 QMU 서술자(2508)를 적합한 가상 출력 포트에 연관시키는 것이다. 이를 행하는 방법에 대해선 이하에서 상세히 기술할 것이다. 가상 출력 포트 메카니즘은 큐들(247) 내 서술자 큐들(213)의 수준에서 디큐 스케줄러(303)의 동작의 흐름을 제어하는 데에도 사용된다. 각각의 가상 출력 포트는 가상 출력 포트에 상응하는 서술자 큐들(247) 내 서술자 큐(213)가 얼마나 많은 cp 서술자들(214)을 현재 엔큐하는데 받아들일 것인가를 나타내는 신뢰(credit) 값에 연관된다. 신뢰 값이 0이면, 디큐 스케줄러(303)는 가상 출력 포트에 연관된 서술자 큐에 보낼 QMU 서술자들(2508)을 출력할 스케줄러 큐들을 스케줄링하지 않는다. 주어진 출력 포트로 보낼 서술자를 출력하는 스케줄러 큐를 디큐 스케줄러(303)가 스케줄링할 때마다, 신뢰 값이 감소되고, cp 서술자(214)가 큐들(247) 내 서술자 큐(213)에서 제거될 때마다, QMU(211)은 서술자 큐에 상응하는 가상 출력 포트를 지정하는 TMC(203)에 디큐 확인응답(acknowledgement) 메시지(1925)를 보내고 디큐 스케줄러(303)는 가상 출력 포트의 신뢰 값을 증분시킴으로써 메시지(1925)에 응답한다. 활성화되고, 0의 신뢰 값에 의해 가상 출력 포트에 의해 스케줄되는 것이 금지되지 않은 스케줄러 큐(523)를 스케줄 가능 스케줄러 큐라 칭한다. 이에 따라, 디큐 스케줄러(303)는, 결국 활성화되고 스케줄 가능한 스케줄러 큐(523(j))의 헤드에 있는 적격 트래픽 큐(204)(i))의 헤드인, QMU(211)에 출력하기 위한 서술자 큐를 선택한다. 스케줄러 큐(523(j))의 헤드에 있는 트래픽 큐(204(i))의 헤드에서 서술자를 제거하는 것이 트래픽 큐(204(i))를 부적격하게 하지 않는 한, 트래픽 큐(204(i))는 스케줄러 큐(523(j))의 끝으로 가는 것을 여기서 또한 지적되어야 한다. 이에 따라 활성 스케줄러 큐는 이의 적격 트래픽 큐들을 라운드로빈(round robin) 순서로 서비스한다. 부가적으로, 트래픽 큐 프로세서(305)는 트래픽 큐들이 스케줄러 큐들(523)에 있을 때 트래픽 큐들에 서술자들(216)을 부가할 수 있다.
전술한 바와 같이, 폐기된 서술자들은 비-폐기 트래픽 큐들처럼 스케줄되는 폐기 트래픽 큐들에 넣어진다. 폐기 트래픽 큐로부터의 QMU 서술자(2508)는 서술자(2508)에 의해 표현된 패킷이 폐기될 것이라는 것을 나타내고 폐기 이유도 나타낸다. 버퍼 식별자들을 재사용을 위해 버퍼 관리부(227)에 돌려보내어 버퍼 식별자에 의해 확인된 버퍼의 콘텐트들을 효과적으로 폐기시키는, DCP(202)에서의 채널 프로세서용 큐에 서술자(2508)를 넣어둠으로써, QMU(217)는 폐기 트래픽 큐로부터의 서술자를 포함하는 폐기 디큐 데이터 메시지에 응답한다.
도 25는 바람직한 실시예에서 TMC(203)과 QMU(211) 간 하드웨어 인터페이스의 개요를 제공한다. 입력 큐(2501)에 빈 곳이 있을 때, TMC(203)는 입력 큐 준비 신호(1915)를 표명하고 QMU(211)는 TMC IQ(243)의 헤드에 있는 엔큐 메시지를 TMC(203)에 출력하고, TMC 출력 큐(2509)에 빈 곳이 있을 때, QMU(211)는 DQRDY 신호(1919)를 표명하고 TMC(203)은 출력 큐(2507)의 헤드에 있는 QMU 서술자를 출력한다. DQARDY(1923) 및 DQACK(1921)은 큐들(247) 내 서술자 큐들(213)로부터 서술자들을 디큐한 것을 확인하는데 사용된다. 각각의 DQACK 메시지는, cp 서술자(214)를 TMC(203)로부터 QMU(211)가 수신한 후에 위치했던, 서술자 큐(213)로부터 채널 프로세서에 의해 방금 디큐되었던 cp 서술자(214)를 갖는 디큐 메시지로부터의 가상 출력 포트 특정자들(specifiers)을 포함한다. 이미 기재된 바와 같이, TMC(203)는 되돌려받은 가상 출력 포트 특정자들을 사용해, 목적지 서술자 큐들(247)로의 QMU 서술자들(2508)의 흐름을 제어한다.
트래픽 큐들 및 관련 데이터 구조들: 도 4
트래픽 관리 코프로세서(203)의 모든 동작들은 트래픽 큐들(204)을 포함한다. TMC 서술자가 넣어진 트래픽 큐는 서술자에 적용될 폐기 정책, 서술자가 스케줄될 방식, 및 서술자가 출력될 QMU 큐를 결정한다. 도 4는 트래픽 큐(204) 및 이의 관련 데이터 구조들을 도시한 것이다. 각각의 트래픽 큐(204)는 트래픽 큐 식별자(423)를 구비하고 트래픽 큐 파라미터 블록(403)에 의해 정의된다. 트래픽 큐에 속하는 TMC 서술자들(216)은 TMC 서술자 큐(419)에서 함께 링크되고, 트래픽 큐 파라미터 블록(403)은 큐(419) 내 헤드 서술자(216)를 가리키는 tq 헤드 포인터(405) 및 큐(419) 내 후미 서술자(216)를 가리키는 tq 후미 포인터(407)를 구비한다. 파라미터 블록(403) 내 나머지 정보는 파라미터 블록(403)에 의해 표현된 트래픽 큐(204)의 현재 상태에 관한 정보, 서술자(216)가 트래픽 큐에 부가될 것인지 아니면 폐기될 것인지 여부를 결정하는데 사용되는 정보(411), 멀티캐스팅하는데 사용되는 정보(415), 및 트래픽 큐를 스케줄링하는데 사용되는 정보(413)를 포함한다.
관련 데이터 구조들은 트래픽 큐를 포함하는 동작들에서 사용되는 추가 정보를 포함한다. 패킷이 멀티캐스트되는 것일 때, 이의 서술자는 일 그룹의 트래픽 큐들의 각각의 트래픽 큐에 넣어지고, 이 그룹은 하나 또는 그이상의 멀티캐스트 상세화 테이블들(421)의 체인(422)에 의해 정의된다. 그룹 내 각각의 트래픽 큐에 대한 테이블(421)에는 tqid(423)가 있다. 주어진 멀티캐스트 테이블(421)은 이의 metid(420)에 의해 확인된다. 패킷이 멀티캐스트되는 것일 때, 이의 TMC 서술자(216)는 트래픽 큐들의 그룹을 지정하는 MET 체인(422)에서의 헤드 멀티캐스트 상세화 테이블의 metid를 포함한다.
서술자를 폐기할 것인지 여부는 몇몇 알고리즘들(311) 중 하나를 사용하여 결정된다. 이들 중 일부는 버퍼 관리부(227) 내 버퍼들(229)의 상태를 고려한다. 이 상태 정보는 버퍼들의 풀들(pools) 및 여러 세트의 버퍼들의 풀들에 대해서 트래픽 관리 코프로세서(203)에 유지된다. 버퍼 풀들 및 여러 세트의 버퍼 풀들은 DCP(202) 내 어떤 버퍼들의 상태를 TMC(203)에서 모델로서 기능한다. TMC(203)가 상태를 유지하는 각각의 버퍼 풀은 DCP(202) 내 버퍼 공간의 양을 지정하는 버퍼 풀 명세(433)를 구비하고, 트래픽 큐 파라미터 블록(403)은 이러한 한 버퍼 풀 명세를 특정한다. 각각의 버퍼 풀 명세(433(i))는 버퍼 풀 명세(433(i))에 의해 표현된 버퍼 풀이 속하는 한 세트의 버퍼 풀들에 대한 부모(parent) 버퍼 풀 명세를 특정한다. 각각의 버퍼 풀은 이에 대해 최소 량의 버퍼가 유보되어 있고, 부모 버퍼 풀 명세는 부모 버퍼 풀에 속하는 버퍼 풀들 간에 공유되어 이용할 수 있는 버퍼 풀들에 대한 총 최소 버퍼 공간 이상의 버퍼 공간의 양을 나타낸다.
폐기 구성 블록(431)은 주어진 트래픽 큐(204)에 의해 사용되는 폐기 방법에 대한 구성 정보를 포함하며, 폐기 코드(432)는 폐기 방법을 위한 코드이다. 폐기 구성 블록들(431)은 TMC(203)의 메모리에 어레이(441)에 조직되고, 주어진 트래픽 큐(204(i))는 8개의 폐기 구성 블록들(431) 중에서 선택할 수도 있다. 버퍼 풀 명세(437)를 이용하는 것으로서, 많은 트래픽 큐 파라미터 블록들(403)은 주어진 폐기 구성 블록(431)을 특정할 수도 있다. 서술자가 주어진 트래픽 큐(204)에 부가될 때, 버퍼 풀 명세들(433, 435) 내 정보를 폐기 코드(432)에 의한 폐기 구성 블록(431) 내 정보와 함께 사용하여 서술자를 폐기할 것인지를 결정한다. 서술자가 폐기된다면, 서술자는 폐기 트래픽 큐(251)에 넣어진다.
현재 주어진 트래픽 큐(204(i))의 헤드에 있는 TMC 서술자(216)를 DCP(202)에 출력할 시기에 관한 결정은 스케줄러들의 계층을 사용하여 행해진다. 기능적으로, 스케줄러들의 계층은 이의 입력으로서 한 세트의 활성화된 스케줄가능 스케줄러 큐들(523)을 취하고, 이 세트 중 하나를 DCP(203)에 출력될 헤드 서술자(216)를 갖는 트래픽 큐(204)의 소스로서 선택한다. 이에 따라 스케줄러 계층이 스케줄러 큐들을 선택하는 방식은 얼마나 많은 TMC(203)의 대역폭, 종국적으로는 TMC-DCP 시스템(201)의 대역폭이 스케줄러 큐들의 트래픽 큐들에서의 서술자들에 의해 표현된 패킷들에 대해 사용될 수 있는가를 결정한다.
430으로 나타낸 바와 같이, 바람직한 실시예에서, 스케줄러는 스케줄러 구성 특정자(425)에 의해서, 그리고 스케줄러 구성 특정자 내 정보를 사용하여 실행되는 스케줄러 코드(429)에 의해 정의된다. 트래픽 큐 파라미터 블록(403) 내 스케줄링 정보(413)는 주어진 트래픽 큐(204)를 단일 스케줄러(430)에 속하는 단일 스케줄 구성 특정자(425(i))에 연관시키고, 이 스케줄러는 주어진 스케줄러(430)에 대해 스케줄러 구성 특정자들(425)을 갖는 모든 트래픽 큐들이 속하는 트래픽 부류를 정의한다. 이에 따라, 스케줄러(430)를 트래픽 부류 스케줄러(503)라 칭한다. 바람직한 실시예에서, 트래픽 부류 스케줄러들은 또한 세그먼테이션 및 재결합을 취급하기도 한다. 트래픽 부류 스케줄러는 스케줄러 계층에서 리프(leaf) 스케줄러이며, 도 4에서 427 및 434로 나타낸 바와 같이, 계층엔 적어도 하나의 다른 내부 스케줄러가 항시 있어야 한다.
스케줄러 계층: 도 5
도 5는 스케줄러 계층(501)의 개요를 제공한다. 스케줄러 계층(501)의 입력은 한 세트의 활성 스케줄러 큐들(523)이며, 스케줄러 계층(501)의 출력은 한 세트의 활성 스케줄러 큐들(523) 중 하나이다. TMC(203)는 스케줄러 계층(501)에 의해 출력된 스케줄러 큐의 헤드에 있는 트래픽 큐(204)의 헤드에 있는 TMC 서술자(216) 내 cp 서술자(214)를 포함하는 QMU 서술자(2508)를 출력한다. 스케줄러 계층(501)은 노드들이 트래픽 부류 스케줄러들(503) 혹은 내부 스케줄러들(509)인 트리를 형성한다. 계층 내 각각의 스케줄러는 이의 입력으로서 한 세트의 활성 스케줄러 큐들을 취하고 이의 출력으로서 입력 세트 중 하나를 선택한다.
계층(501)은 트리(tree)이다. 트리의 리프 노드들은 항시 트래픽 부류 스케줄러들(503)이며, 내부 노드들은 항시 내부 스케줄러들(509)이다. 계층의 레벨 0(515)에 있는 단일의 내부 스케줄러는 트리의 루트를 형성한다. 스케줄러 계층(501)이 주어진 활성 스케줄러 큐(523(i))를 스케줄링할 때, 큐(523(i))를 스케줄링하는 스케줄러들은 트래픽 부류 스케줄러(503)에서 트리의 루트로의 계층을 통한 경로를 형성하며, 한 이러한 경로가 도 5에서 529의 화살표로 표시되었다. 바람직한 실시예에서 최대 깊이는 4개의 스케줄러들이다.
도 5에서 알 수 있는 바와 같이, 바람직한 실시예에서, 레벨 0의 루트 스케줄러(509(a))는 입력들로서 32까지의 스케줄러들로부터 출력 스케줄러 큐들을 수신하도록 구성될 수 있고, 이에 따라 32개까지의 스케줄러 큐들의 입력 세트를 가질 수 있으며, 다른 레벨들에 있는 각각의 내부 스케줄러는 입력들로서 32개까지의 스케줄러 큐들로부터 입력 스케줄러 큐들을 갖도록 각각이 구성될 수 있고, 이에 따라 32개까지의 스케줄러 큐들의 입력 세트들을 가질 수 있고, 각각의 트래픽 부류 스케줄러(503)는 입력들로서 32개까지의 스케줄러 큐들을 가질 수 있으며 따라서 32개까지의 스케줄러 큐들의 입력 세트를 가질 수 있다. 트래픽 부류 스케줄러(503)에 대한 실제 스케줄러 큐들의 수는 트래픽 부류 스케줄러 종류에 따른다.
내부 스케줄러들(509)과 트래픽 부류 스케줄러들(503) 간 중요한 차이는 주어진 트래픽 부류 스케줄러(503(j))에서, 스케줄러 큐들의 입력 세트가, 트래픽 부류 스케줄러(503(j))를 지정하는 트래픽 큐들을 포함하는 활성 스케줄러 큐들이라는 것이다. 주어진 내부 스케줄러(509(k))에서, 스케줄러 큐들의 입력 세트는 내부 스케줄러(509(k))에 입력들을 제공하는 하위 레벨의 스케줄러들에 의해 스케줄링된 스케줄러 큐들이다. 내부 스케줄러 큐(509(k))에의 입력들로서 사용될 수 있는 모든 스케줄러 큐들이 활성화될 것이지만, 그러나 내부 스케줄러 큐(509(k))에 의해 스케줄 가능으로 되지 않을 수도 있다. 이것은 가상 출력 포트(521)가 스케줄러 큐(509(k))에의 입력 상에 있을 때 이와 같이 되고 가상 출력 포트에서 QMU(211)로의 서술자들의 출력들을 더 이상 허용하지 않을 것이다.
스케줄러 계층(501)이 동작하고 있을 때, 각각의 스케줄러는 이의 현재 한 세트의 활성이며 스케줄 가능한 입력 스케줄러 큐들 중 하나를 출력으로서 선택한다. 이에 따라, 트래픽 부류 스케줄러(503(c))는, 스케줄러(523)(d))와 같이, 이의 활성 스케줄러 큐들(523) 중 하나를 출력으로서 선택하고, 이들 두 스케줄러 큐들은, 내부 스케줄러(509(c))에 출력하고 가상 출력 포트에 의해 비-스케줄가능하게 되지 않게 하는 스케줄러들(503)에 의해 제공된 다른 것들과 더불어, 내부 스케줄러(509(c))에의 입력인 스케줄러 큐들(523)이며, 내부 스케줄러(509(c))는 이에 입력된 것들 중에서 내부 스케줄러(509(b))에 출력하기 위해 하나의 스케줄러 큐(523)를 선택하고, 이어서 입력된 것들 중에서 루트 내부 스케줄러(509(a))에 출력하기 위해 하나의 스케줄러 큐(523)를 선택한다. 루트 내부 스케줄러(509(a))는 이의 입력들 중에서 한 스케줄러 큐를 선택하고, 선택된 스케줄러 큐의 헤드에 있는 트래픽 큐(204)의 헤드의 TMC 서술자(216) 내 cp 서술자(214)는 QMU 서술자(2508)에서의 출력이다. 이어서 QMU 서술자(2508)는 DCP(202)의 큐 관리부(211)로 가는 디큐 데이터 메시지(701)로 된다. 서술자가 취해졌던 트래픽 큐가 부적격으로 되지 않았다면, 트래픽 큐(504)는 이의 스케줄러 큐의 후미로 간다. 트래픽 큐가 부적격이면, 스케줄러 큐로부터 제거되고 적격으로 될 때가지 스케줄러 큐에 다시 넣어지지 않는다. 도 5에 535로 나타낸 바와 같이, 부적격 트래픽 큐들(204)은 트래픽 부류 스케줄러들(503)에 연관된 채로 있고, 다시 적격으로 되었을 때, 트래픽 큐는 트래픽 큐의 트래픽 부류 스케줄러에 입력들로서 작용하는 스케줄러 큐들(523) 중 한 큐의 후미에 넣어진다.
QMU(217)가 TMC 서술자들(216)을 취급할 수 있기 전에, 스케줄러 계층(501)에서 두 레벨의 흐름 제어는 이들 TMC 서술자들이 QMU(217)에 출력되는 것을 방지한다. 한 레벨은 TMC 코프로세서(203)로부터의 어떤 더 이상의 서술자들을 취급하지 못하는 QMU(217)의 무능을 처리하고, 이 레벨은 TMC(203)와 DCP(202) 간 하드웨어 인터페이스에서 동작하며, TMC 코프로세서(203)는 DCP(202)가 이러한 서술자를 수신할 준비가 되었을 때만 DCP(202)에 서술자를 보낸다. 흐름 제어의 다른 레벨은 TMC(203)로부터 추가 서술자들에 대한 특정의 서술자 큐(213)에 충분한 공간이 없는 상황을 처리한다. 흐름 제어의 이 레벨은 계층(501)에서 가상 출력 포트들(521)에 의해 처리된다.
계층(501)에서 리프 스케줄러(503)와 루트 스케줄러(509) 간 각 경로는 가상 출력 포트(521)를 가져야 하며 어떠한 경로도 하나 보다 많은 가상 출력 포트(521)를 가질 수 없다. 각각의 가상 출력 포트는 이를 유일무이하게 식별하는 식별자를 갖는다. 가상 출력 포트(521)는 두 가지 기능들을 갖는다.
ㆍ 각 가상 출력 포트는 스케줄러 계층(501)의 출력의 일부를 QMU(211)의 서술자 큐들(247) 내 서술자 큐(213)에 관계시킨다.
ㆍ 각 가상 출력 포트는 이의 대응하는 서술자 큐(213)가 현재 얼마나 많은 서술자들을 취할 수 있는가를 나타낸다.
제 1 기능은 TMC(203)에서 QMU(211)로 출력되는 각 QMU 서술자(2508)에 가상 출력 포트에 대한 식별자를 포함시킴으로써 수행된다. 식별자는 QMU 서술자(2508) 내 cp 서술자(214)가 속해있는 트래픽 큐(204)를 포함하는 스케줄러 큐(523)의 스케줄러 계층(501)을 통해 경로(529) 상의 가상 출력 포트(521)의 식별자이다.
제 2 기능은 다음과 같이 수행된다. 가상 출력 포트(521)에 대응하는 서술자 큐(213)가, 가상 출력 포트가 출력을 제어하는 스케줄러에 의해 선택된 스케줄러 큐(523)의 헤드에 있는 트래픽 큐(204)로부터 출력될 서술자(들)를 위한 공간이 없다면, 가상 출력 포트(521)는 스케줄러 큐가 계층의 다음 레벨의 스케줄러에 의해 스케줄링되지 않게 한다. 대응하는 서술자 큐(204)가 다시 공간을 가질 때, 가상 출력 포트는 다음 스케줄링 레벨에의 출력을 허용한다. 활성 스케줄러 큐(523(i))는, 활성 스케줄러 큐의 소스인 트래픽 부류 스케줄러(503)와 현재 스케줄러 큐(523(i))를 스케줄링하고 있는 스케줄러 간 경로 상의 가상 출력 포트(521(j))가 가상 출력 포트(521(j))에 대응하는 서술자 큐(213)의 추가 서술자를 위한 공간을 현재 갖고 있지 않음을 나타낼 때, 스케줄링할 수 없다.
트래픽 큐들(204)의 설명에서 언급된 바와 같이, 폐기 트래픽 큐들(251) 및 비-폐기 트래픽 큐들(249)인, 두 부류의 트래픽 큐들이 있다. 통상적으로, 폐기 트래픽 큐들로부터의 서술자들의 처리가 완전히 DCP(202) 내에서 행해지고 전송된 스트림(225)의 차단에 관계없이 계속될 수 있기 때문에, TMC(203)로부터 서술자들을 받아들이고 있는 서술자 큐(213)에 의해 표현된 패킷들의 전송을 막는 이벤트들이 스케줄러 계층(501)을 통한 경로의 가상 출력 포트(521)에 의한 차단을 초래하여 폐기 트래픽 큐들로부터 서술자들이 차단되는 것을 발생시키지 않도록, 두 부류들은 계층(501)을 통한 별도의 경로들 상에서 스케줄된다. 계층(501)의 형태, 계층 내 스케줄러들(503, 509)의 스케줄링 알고리즘들, 및 계층 내 가상 출력 포트들(521)의 위치는 모두가 TMC(203)의 사용자들에 의해 구성이 가능하다.
엔큐 데이터 메시지들의 상세들: 도 6 및 도 31
전술한 바와 같이, QMU(211)이 TMC(203)에 제공하는 TMC 서술자들(216)은 엔큐 데이터 메시지들에 포함된다. 도 6 및 도 31은 바람직한 실시예에서 엔큐 데이터 메시지(601)의 상세를 도시한 것이다. 바람직한 실시예에서, 엔큐 데이터 메시지는 13개까지의 24비트 워드들로 구성된다. 엔큐 데이터 메시지(601)의 길이는 엔큐 데이터 메시지의 워드들 2-12에 포함된 cp 서술자(214)의 길이에 따른다. 도 6에는 엔큐 데이터 메시지의 각각의 필드에 대해 한 행이 있으며, 열(603)은 필드를 포함하는 워드의 워드 오프셋을 나타내고, 열(603)은 필드를 포함하는 워드의 워드 오프셋을 나타내며, 열(605)은 필드명을 나타내며, 열(607)은 워드 내 필드의 비트 위치를 나타내며, 열(609)은 필드의 콘텐트 및 목적을 기술한다. 필드들에 대한 행들은 611-627로 나타내었다. 필드(615)는 tqid(423) 혹은 metid(420)를 포함할 수도 있고, 후자는 서술자에 의해 표현된 패킷이 멀티캐스트일 때의 경우이다.
일반적으로, 엔큐 데이터 메시지(601)의 필드들의 본질 및 목적은 도 6 및 도 31로부터 명백하고, 메시지를 나타내지 않을 때 유형 필드(611)를 제외한 모든 필드들의 값들은 TMC 서술자(216)로부터 오며, 서술자 필드(627)는 TMC 서술자(216)에 요약된 cp 서술자(214)를 포함한다. 또한 추론 엔큐 및 폐기 우선 순위 필드(625)에 관하여 코멘트가 필요할 수도 있다. 추론 엔큐는 DCP(202)에 의해 아직 전체가 수신되지 않은 패킷에 대한 패킷 서술자를 엔큐하는 메카니즘이다. 추론적으로 엔큐된 패킷이 DCP(202)에 의해 그 전체가 수신되었을 때, 위탁(committed) 엔큐 메시지라 하는 제 2의 1워드 길이의 엔큐 메시지가 추론 엔큐를 위탁하기 위해서 TMC(203)에 전송된다. 엔큐 메시지에서 유형 필드(611)는 추론 혹은 위탁 엔큐 메시지를 확인하는데 사용된다. 추론 엔큐에 대해선 다음에 상술한다. 폐기 우선 순위 필드(625)는 TMC 서술자(216)를 보낼 트래픽 큐에 연관된 8개까지의 폐기 구성 블록들(431) 중 하나를 선택하는데 사용된다.
디큐 데이터 메시지들의 상세: 도 7, 도 32 및 도 33
도 7, 도 32 및 도 33은 TMC(203)이 버퍼 관리부(211)에 보내는 디큐 메시지(701)의 포맷을 도시한 것이다. 이들 메시지들 각각은 QMU 서술자(2508)를 포함한다. 앞에서처럼, 각 필드는 행을 가지며, 603-609는 열들을 나타내고 701-725는 행들을 나타낸다. 대부분의 필드들의 목적 및 콘텐트는 도 7로부터 명백하며, 폐기 이유 필드(723)에 관하여, 이 필드는 엔큐 프로세서(301)가 서술자를 폐기할 때 세트되고, 폐기 트래픽 큐(251)로부터의 QMU 서술자(2508)가 큐 관리부(211)에 출력될 때, 유형 필드(703) 및 폐기 이유 필드(723)는 QMU 서술자 내 cp 서술자에 의해 표현된 패킷의 페이로드가 폐기될 것이라는 것과 이유를 나타낸다. 필드들의 콘텐트들은, 필드(703)에서의, DCP(202)가 조치를 취함으로써 응답하는 것이 필요할 수도 있는 폐기 이유들, 및 필드(723)에서의, 정보의 목적들을 서비스하는 이유들로 나뉘어 진다. 다시, 아이들 메시지를 제외한 디큐 데이터 메시지(7091)내 모든 필드 값들은 QMU 서술자(208)에 포함되고, 필드(725)는 요약된 cp 서술자(214)를 포함한다.
트래픽 큐 파리미터 블록(403)의 상세: 도 8 및 도 34
도 8 및 도 34는 바람직한 실시예에서 트래픽 큐 파라미터 블록(403)의 포맷을 도시한 것이다. 포맷들은 이전과 같이 나타내어지며, 801-809는 열들을 나타내고 811-869는 필드들을 나타낸다. 열(809) 내 필드들에 대한 설명은 대부분 설명이 없어도 자명한 것으로, 다음에 필드들은 도 4의 논리적 세분들에 관계될 것이다.
스케줄링 정보(413)
이 정보를 제공하는 필드들은, 트래픽 큐 파라미터 블록(403)에 의해 표현된 트래픽 큐(204)에 대한 트래픽 부류 스케줄러(503(i))를 식별하는 필드(819), 적격이 되었을 때 트래픽 부류 스케줄러(503(i))에 속하는 어떤 스케줄러 큐(523(j))에 트래픽 큐(204)가 넣어지게 될 것인지를 결정하는 필드(831), 및 트래픽 큐(204)가 적격한지 여부, 및 적격이라면 이의 스케줄러 큐가 어떻게 스케줄될 것인가를 결정하는데 사용되는 트래픽 큐(204)에 헤드 TMC 서술자(216)에 관한 정보를 포함하는 필드(836)를 포함한다. 정보는 트래픽 큐(204)의 서술자들로 표현된 패킷들의 종류 및 스케줄러 큐(523(i))에 의해 사용되는 스케줄링 알고리즘에 따라 달라진다. 여기서 두 가지 예를 제공할 수 있는데, 서술자들이 가변길이 패킷들을 나타내는 경우에 있어서는, 필드(845)가 패킷의 길이를 포함하고, 서술자들이 고정길이 패킷들을 나타내는 경우에 있어서는, 필드(845)는 고정길이 패킷들에 의해 전송되고 있는 메시지에서 마지막 패킷에 대한 서술자가 트래픽 큐에 수신되었는지 여부를 나타내는 메시지 끝 표시자(eom)를 포함하는 것이다.
멀티캐스트 정보(415)
바람직한 실시예에서, TQ 태그 필드(865)는 트래픽 큐(204) 내지 QMU(211)를 지정하는 식별자이다. 트래픽 큐는 두 환경에서 특정된다.
ㆍ cp 서술자(214)에 의해 표현된 패킷이 멀티캐스트되고 있을 때, 식별자는 엔큐 프로세서(301)가 이 특정 TMC 서술자(216)의 복제를 넣어둔 트래픽 큐(204)를 지정하며;
ㆍ cp 서술자(214)에 의해 표현된 패킷이 폐기될 것이면, 식별자는 TMC 서술자가 TMC(203)에서 수신되었을 때, cp 서술자(214)를 포함하는 TMC 서술자(216)에서 지정되었던 트래픽 큐(204)를 지정한다.
폐기 정보(411)
필드(813)의 비트들은 트래픽 큐에 대한 폐기 구성 블록들(443)을 확인한다. 즉, 이들 필드들 및 TMC 서술자(216) 내 폐기 우선 순위 필드(625)는 주어진 서술자와 더불어 사용될 블록들(443)에서 실제 폐기 구성 블록(431)을 확인한다. 필드들(869, 827)은 모두가 각종의 폐기 기술들에서 사용되는 데이터를 포함한다.
현재 tq 상태 정보(409)
이 정보는 필드(836)에 포함된다. 이 필드는 트래픽 큐의 헤드에 있는 서술자에 관한 정보를 포함한다. 필드에 어떤 정보가 있는가는 트래픽 큐의 헤드에 있는 서술자에 의해 표현된 패킷의 종류에 따른다. 가변길이 패킷이면, 필드(836)는 패킷의 길이를 포함하고, 고정길이 패킷이면, 필드(836)는 복수의 패킷 메시지, 즉 메시지 내 마지막 패킷이 도달하였는지 여부, 및 도달하였다면, 서술자에 의해 표현된 패킷이 메시지 내 마지막 패킷인지 여부에 관한 패킷의 상태를 나타낸다. 바람직한 실시예에서, 트래픽 큐 내 각각의 TMC 서술자(216)는 이에, 트래픽 큐에 다음 서술자에 대한 현재 TQ 상태 정보를 포함하는 필드(836)와 같은 필드를 앞에 두었다.
Tq 헤드(405) 및 Tq 후미(407)
이들은 각각 필드들(823, 811)에 구현된다. 바람직한 실시예에서, 식별자들은 단순히 서술자들에 대한 포인터들이다. TMC(203)의 설계의 특징은 가능한 정도까지, 서술자들, 트래픽 큐들, 혹은 스케줄러 큐들 보다는 포인터들이 조작되는 것이다.
TMC(203)에 의해 수행되는 동작의 상세
다음에, 엔큐 프로세서(301)에 의해 수행되는 멀티캐스트 동작부터 시작하여, 엔큐 프로세서(301)에 의해 수행되는 동작들의 예들인, 엔큐 프로세서(301), 트래픽 큐 프로세서(305), 및 디큐 프로세서(303)가 상세히 기술될 것이다. 동작들은 다른 실시예들에선 다른 방식들로 수행될 수도 있다는 것을 알 것이다.
멀티캐스팅: 도 9 및 도 35
패킷은 한 입력 점을 가진 스위칭 장치에 입력되어 다출력 점들로 출력될 때 멀티캐스트된다. 시스템(201)에서, 멀티캐스팅은 QMU(211)나 트래픽 관리 코프로세서(203)에서 행해질 수 있으며, 여기서 기술되는 것은 트래픽 관리 코프로세서(203)에서의 멀티캐스팅으로, 엔큐 데이터 메시지(601)에서 수신된 TMC 서술자(216)의 복제들을 멀티캐스트 상세화 테이블(421)에서 지정된 트래픽 큐들(204)에 부가함으로써 행해진다.
멀티캐스트 상세화 테이블의 상세들
바람직한 실시예에서 멀티캐스트 상세화 테이블을 도 9 및 도 35에 상세히 도시하였다. 포맷은 테이블이며, 각 행은 테이블의 필드를 나타내고 열들(903-909)은 필드들에 관한 정보를 나타낸다. 이미 언급된 바와 같이, TMC(203)는 멀티캐스트 상세화 테이블들(421)의 링크된 리스트들을 유지하며, 필드(911)는 리스트 내 다음 멀티캐스트 상세화 테이블(421)의 metid(420)를 포함한다. 주어진 상세화 테이블(421)이, 링크된 리스트에서 마지막 것이면, 이 사실은 필드(913)의 값에 의해 표현된다. 상세화 테이블(421)은 서술자의 복제들이 부가될 수 있는 8개까지의 트래픽 큐를 지정할 수 있다. 단일 트래픽 큐에 대한 엔트리는 915에서 상세하게 나타내어지는데, 중요한 두 개의 필드들이 있으며, 이는 트래픽 큐(204)에 대한 tqid(423)를 포함하는 916, 그리고 필드(916)의 콘텐트들이 유효한지 여부를 나타내는 917이다. 919에 나타낸 테이블의 나머지는, 남아있는 트래픽 큐들에 대한 트래픽 큐 엔트리들(915)이다.
엔큐된 서술자의 복수의 복제들이, 동일한 가상 출력 포트로 향하는 복수 트래픽 큐들에 대한 상세화된 멀티캐스트일 때, QMU(211)은 서술자의 복제가 어느 트래픽 큐로부터 온 것인지를 결정할 수 있을 필요가 있다. 트래픽 큐를 식별하는 필드는 파라미터 블록의 트래픽 큐 태그 필드(865)이다. 목적지 트래픽 큐의 태그는 트래픽 큐에 포함된 서술자들로부터 작성된 QMU 서술자들 각각의 필드(713)에 두어진다.
멀티캐스트 엔큐 데이터 메시지 처리의 상세들
엔큐 데이터 메시지(601)가 유니캐스트인지 아니면 멀티캐스트인지 여부는 엔큐 데이터 메시지의 필드(619)에 의해 나타나 있다. 필드(619)가 멀티캐스트를 나타내고 있을 때, 필드(615)는 멀티캐스트에 사용될 MET 체인에 제 1 멀티캐스트 상세화 테이블(421)용의 metid(420)를 포함한다. 멀티캐스트 엔큐 메시지들은 멀티캐스트 상세화를 수행할 별도의 처리 시간을 요한다. 별도의 처리 시간은 엔큐 데이터 메시지들(601)이 엔큐 프로세서(301)에 의해 처리될 것을 기다리는 동안 엔큐 데이터 메시지들이 다 버퍼링될 것을 요한다. 일반적으로, 엔큐 프로세서(301)는 유니캐스트 엔큐 데이터 메시지들의 처리에 엄격한 우선 순위를 부여한다. 그러나, 엔큐 프로세서(301)에 의해 처리된 서술자들의 총수의 일정 부분이 멀티캐스트 서술자들이 될 것임을 보장하는, 사용자가 구성할 수 있는 메카니즘이 있다. 이 부분은 처리된 모든 2 서술자들 중 1에서부터 처리된 모든 256 서술자들 중 1에 이르는 범위에 걸쳐 구성될 수 있다. 처리를 기다리는 멀티캐스트 엔큐 메시지는 32개까지의 멀티캐스트 엔큐 메시지들을 보유하는 버퍼에 저장된다. 멀티캐스트 엔큐 메시지가 수신되고 멀티캐스트 엔큐 메시지 버퍼가 다 차 있다면, 멀티캐스트 메시지는 엔큐 메시지 소스 식별자(엔큐 데이터 메시지의 필드(623))에 연관된 폐기 큐에 폐기될 것이다. 그렇지 않다면, 멀티캐스트 서술자를 폐기할 결정은 멀티캐스트 그룹 내 각 목적지 트래픽 큐에 대해 엔큐 프로세서(301)에 의해 독자적으로 행해진다.
엔큐 프로세서(301)는 연관된 위탁 엔큐 메시지가 수신될 때까지 추론적으로 엔큐된 멀티캐스트 엔큐 메시지들을 처리하지 않는다. 이에 따라, 추론적으로 엔큐된 멀티캐스트 메시지는 연관된 위탁 엔큐 메시지가 수신될 때까지 모든 후속되 는 멀티캐스트 엔큐 메시지를 차단할 것이다. 이 차단은 디큐 패킷 서술자 순서를 유지하기 위해 필요하다.
멀티캐스트 복제에 대한 하나의 사용은, DCP(202)가 멀티캐스트 상세화를 자체로는 지원하지 못하는 시분할 다중화 및 채널화된 인터페이스 장치를 구동하고 있는 시스템(201)에 있다. 멀티캐스트 복제는 각 목적지 채널마다 패킷의 한 복제를 전송하는데 사용될 수 있다.
서술자 폐기 동작들의 상세
전술한 바와 같이, 엔큐 프로세서(301)가 트래픽 큐에 링크될 트래픽 큐 프로세서(305)에 서술자를 제공하기 전에, 엔큐 프로세서(301)는 서술자에 의해 표현된 패킷을 폐기할 것인지 아니면 혼잡(congestion)을 피하거나, 현재 있는 혼잡을 관리하거나, 이전의 혼잡으로부터 회복하기 위해 태깅할 것인지를 결정한다.
폐기 및 태깅 동작들(tagging operations)
혼잡이 있는지 여부를 판정하기 위해 엔큐 프로세서(301)에 의해 사용되는 기술들은 버퍼 임계, 무작위의 초기 검출, 및 정책 알고리즘을 포함한다. 특정의 트래픽 큐에 대해 엔큐 프로세서(301)가 어떤 기술을 사용할 것인가는 트래픽 큐의 폐기 구성 블록(431)에 의해 결정된다. 혼잡은 다음과 같이 처리된다:
1. 혼잡 기간으로부터 회복하기 위해서 폐기시킬 패킷 서술자들을 선택.
2. 혼잡을 피하기 위해서 폐기시킬 비-표준(non-conforming) 패킷 서술자들을 선택.
3. 비-표준 패킷 서술자들을 태깅하여(tagging), 혼잡하게 되는 것을 피하려고 있는 다운스트림 네트워크 구성요소에 의해 비-표준 패킷들이 선택적으로 폐기되게 함.
4. 혼잡을 경험했던 패킷 서술자들을 표시해 두어, 다운스트림 네트워크 구성요소들이 발생하는 트래픽 소스들의 속도를 늦출 것을 통지할 수 있게 함.
버퍼 풀들 및 부모 버퍼 풀들: 도 4
엔큐 프로세서(301)가 패킷을 폐기할 것인지 여부를 결정하는데 사용하는 버퍼 풀 정보는 버퍼 풀 및 부모 버퍼 풀 데이터 구조들에 유지된다. 이들 구조들을 도 4에 도시하였다. 각각의 버퍼 풀에 대해, 버퍼 풀 명세(433(i))는 최소 임계값, 최대 임계값, 및 버퍼 풀의 부모에 대한 최소 임계값을 표시한다. 트래픽 큐(204(i))에 의해 사용되는 버퍼 풀(433(j)) 내 이들 값들은 트래픽 큐(204(i))에 보낼 서술자를 폐기할 것인지를 결정하기 위해 엔큐 프로세서(301)에 의해 사용된다. 버퍼 풀 명세(433) 및 부모 버퍼 풀 명세(435)는 TMC 서술자(216)가 트래픽 큐(204)에 엔큐되거나 트래픽 큐(204)로부터 디큐될 때마다 갱신된다.
폐기 트래픽 큐들
트래픽 관리 코프로세서(203)에서 수행되는 모든 폐기 동작들로부터의 서술자들은 TMC(203)에 의해 유지된 32개의 폐기 트래픽 큐들(251)로 간다. 폐기 트래픽 큐들은 비-폐기 트래픽 큐들처럼 스케줄된다. 일반적으로 스케줄러 계층은 폐기 큐들에 대한 스케줄러들의 출력들이 폐기 트래픽을 처리하는 가상 출력 포트들로 가도록 구성된다. 따라서 이들 가상 출력 포트들은 나가는 패킷 트래픽(outbound packet)이 정체될 때 차단되지 않고, 나가는 트래픽 패킷들을 나타내는 서술자들에 연관된 가상 출력 포트들(251)은 이들 서술자들의 스케줄링을 차단하게 된다. 폐기된 패킷 서술자들을 처리하기 위해 DCP(202)가 요하는 시간은 패킷 길이와는 무관하므로, 폐기된 패킷 서술자들에 연관된 패킷 길이들은 스케줄러 대역폭 계산에선 사용되지 않는다. 대신, 0 내지 255바이트 범위의 구성가능한 패킷 길이가 스케줄링 목적으로 폐기 큐 서술자들에 할당된다.
폐기되는 패킷 서술자를 위한 목적지 폐기 큐는 우선순위 순으로 열거된, 다음의 소스들 중 하나에서 선택된다.
1. 폐기 큐 식별자는 트래픽 큐의 폐기 구성 블록(431)에서 선택적으로 특정될 수 있다.
2. 트래픽 큐 폐기 구성에 의해 특정되지 않는다면, TMC(203)는 TMC 서술자들(216)의 소스들을 폐기 큐들에 관계시키는 테이블로부터 폐기 큐 식별자를 얻는다. TMC 서술자의 소스에 대한 식별자는 필드(603)로부터 얻어진다.
3. 이전의 두 소스들에 의해 특정되지 않는다면, 폐기 큐 식별자는 트래픽 큐의 부류 스케줄러(503)에 특정된다.
폐기 알고리즘들의 종류의 개요
바람직한 실시예는 많은 서로 다른 폐기 알고리즘들을 제공하며, 여기서는 개요가 제공되고, 알고리즘들 중 한 알고리즘의 상세한 예는 나중에 주어질 것이다. 다양한 폐기 알고리즘들 각각마다 폐기 구성 블록(431)에 대해 다양한 포맷이 있다.
임계(thresholding)
임계는 다음 조건 하에서 버퍼 풀 크기 및 부모 버퍼 풀 크기에 근거하여 패킷 서술자들을 선택적으로 폐기하는데 사용된다.
1. 트래픽 큐의 연관된 버퍼 풀 크기가 최소 임계값 미만이면, 서술자는 폐기하지 않거나,
2. 트래픽 큐의 연관된 버퍼 풀 크기가 최대 임계값보다 크면, 서술자를 폐기하거나,
3. 버퍼 풀 크기가 최소 임계값과 최대 임계값 사이에 있고 부모 버퍼 풀의 크기가 트래픽 큐의 선택된 폐기 구성 데이터에 의해 특정된 부모 풀 임계값보다 크면, 폐기시킬 패킷 서술자를 선택하고, 그렇지 않으면 서술자를 페기하지 않는다.
무작위 초기 검출(RED)
버퍼 풀들은 적응적인 트래픽 소스들에 연관된 패킷 서술자들을 선택적으로 폐기하기 위해 무작위 초기 검출(RED)을 사용하도록 구성될 수 있다. 바람직한 실시예에서 사용된 RED의 구현은 참조 문헌에 기초한다:
Floyd, Sally, 및 Jacobson, Van, "Random Early Detection for Congestion Avoidance," IEEE/ACM Transactions on Networking, August 1993.
RED 알고리즘은 지수함수적으로 가중치가 부여된 평균 버퍼 풀 크기 및 최소, 최대 평균 버퍼 풀 크기 임계값에 따르는 무작위 폐기 확률을 계산한다. 평균 버퍼 풀 크기는 트래픽의 일시적 버스트가 불필요하게 폐기되지 않게 순간의 크기 대신 사용된다. RED가 IP 패킷들과 함께 사용될 때, 엔큐 메시지(601)의 폐기 우선 순위 필드(625)의 값은 IP 패킷에 대해 특정된 선행에 근거하여 상이한 RED 임계값 및 확률 파라미터들을 선택하는데 사용될 수 있다.
정책
레이트 정책은 트래픽 큐의 할당 혹은 보증된 전송 레이트보다 빠른 레이트로 수신되는 패킷들을 갖는 트래픽 큐들을 확인하기 위해 트래픽 큐마다 사용된다. 레이트 정책에 의해서, 트래픽 큐의 보장된 레이트보다 빠른 레이트를 사용하는 트래픽 큐는 다른 순응 트래픽 큐들의 보장된 레이트들에 악영향을 미치지 않게 된다. 레이트 정책은 버퍼 풀 및 부모 버퍼 풀 임계 알고리즘들과 함께 사용될 수 있다.
레이트 정책 파라미터들은 하나 혹은 두 세트의 리키 버킷(leaky bucket) 파라미터들로서, 최대 지속가능한 레이트 및 버스트 허용범위 및/또는 최대 피크 레이트 및 지연 변화 허용범위를 포함한다. 리키 버킷 순응 정의들은 고정 길이 패킷들뿐만 아니라 가변길이 패킷들을 지원하도록 확장된, ATM 포럼 TM 4.0 표준에 의해 정의된 바와 같다. TMC 정책 기능에 구현된 리키 버킷들은 ATM 포럼 4.0 에 따르느 정의들 6개 전부를 지원하도록 구성될 수 있다. 리키 버킷들은 TMC 외의 조건들의 모델들의 TMC(203)의 사용의 또 다른 예이다.
각 레이트 정책 트래픽 큐는 레이트 및 허용범위를 강제하는 하나 혹은 두 신뢰 버킷 상태들(states)을 유지한다. 트래픽 큐가 초기화되었을 때, 각 버킷의 신뢰는 이의 최대 허용범위에 의한다. 신뢰 버킷은 각각의 엔큐된 패킷 바이트에 대해 1바이트 신뢰도를 잃으며, 이의 구성된 바이트 레이트에서 바이트 신뢰들을 얻는다. 엔큐된 패킷의 바이트 카운트는 트래픽 관리 인터페이스를 통해 수신된, 연관된 엔큐 메시지의 패킷 바이트 길이 필드로부터 온다.
ATM 포럼 TM 4.0에 따르는 정의들은, 리키 신뢰 버킷이 엔큐된 패킷 바이트 길이를 수용하는데 충분한 바이트 신뢰도를 갖고 있지 않을 때, 취해지는 조치, 폐기 또는 태그를 정의한다. 예를 들면, 패킷 레이트 리키 버킷이 패킷을 수용하기에 충분한 신뢰도를 갖고 있지 않을 때, 연관된 패킷 서술자는 항시 폐기하도록 선택된다. 지속가능한 레이트 버킷이 패킷을 수용하기에 충분한 신뢰도를 갖고 있지 않을 때, 패킷 서술자는 표준 정의에 따라 태깅되거나, 혹은 폐기되게 선택된다.
메시지 폐기 모드들
메시지가 고정길이 패킷들의 시퀀스로 전해질 때, 각 패킷은 자신의 서술자를 갖고 있을 것이다. 이러한 고정길이 패킷 시퀀스에서, 마지막 패킷의 헤더는 패킷이 메시지의 끝을 전하고 있음을 나타내기 위해 세트되는 메시지 끝(eom) 플래그를 갖는다. 대응하는 메시지 시작 플래그는 없지만, 대신, 다음 메시지를 시작하는 패킷은 eom 플래그가 세트된 패킷 바로 다음에 온다는 사실에 의해 식별된다. 고정길이 패킷들을 나타내는 TMC 서술자들(216)은 서술자가 메시지 내 마지막 패킷을 나타낼 때 세트되는 메시지 끝 플래그를 갖는다. EOM 플래그는 TMC 서술자의 필드(613)에 있다. 메시지의 시작에 대한 서술자는 EOM 플래그가 세트된 서술자 바로 다음에 온다는 사실에 의해 유사하게 식별된다.
메시지를 전하기 위해 패킷 시퀀스를 사용하는 시스템에서, 메시지를 구성하는 패킷 서술자들 중 어느 것이든 폐기된다면, 전체 메시지가 재구성될 수 없고 메시지에 속하는 모든 패킷들이 폐기되어야 한다는 것이 가정된다. 이러한 이유로, 메시지 내 나머지 패킷들의 폐기가 제 1 폐기가 발생한 직후에 시작할 수 있다면 성능이 향상될 수 있다. 참조 데이터 스트림 처리의 상황에서 이러한 종류의 폐기를 행함에 있어서의 과제는, 메시지 내 폐기될 제 1 패킷에 대응하는 QMU 서술자(2508)가 이의 eom 플래그가 세트되도록 하여, 서술자에 대응하는 패킷을 처리하는 채널 프로세서가 패킷을 적절하게 표시하고 다음 메시지의 제 1 패킷에 대해 QMU 서술자를 적절하게 인식할 수 있는 것을 보장하는 것이다.
트래픽 관리 코프로세서(203)는 4가지 상이한 메시지 폐기 모드들에서 동작할 수 있다.
. 비-메시지 폐기 모드,
. 초기 패킷 폐기 모드,
. 부분 패킷 폐기 모드, 및
. 수정된 부분 패킷 폐기 모드.
폐기 모드들은 각각의 트래픽 큐 단위로 구성된다. 각각의 트래픽 큐는 다수의 폐기 모드들을 이용할 수도 있다. 폐기 모드들은 폐기 구성 블록들(433) 내 트래픽 큐에 대해 특정되고, 주어진 트래픽 큐에 사용가능한 이들 중 어느 폐기 모드가 트래픽 큐 내 주어진 서술자로 표현된 패킷에 대해 사용될 것인가는 서술자 내 필드에 의해 특정된다. 모드들 중 어느 것이든, 폐기가 필요한지 여부를 결정하기 위한 기술들 중 어느 것이든 사용할 수 있다.
비-메시지 폐기 모드에서, 메시지 표시자의 끝은 메시지의 나머지 패킷들을 폐기하는 방법을 결정하는 데에 역할을 하지 않는다.
초기 패킷 폐기 (EPD: Early Packet Display) 모드에서, 더 큰 메시지를 받을 것인지 아니면 폐기할 것인지 결정은 메시지의 제 1 패킷에 대한 서술자가 수신되었을 때 행해진다. 제 1 서술자가 폐기되었을 때, 패킷의 메시지에 대한 모든 나머지 서술자들에 대해서도 그와 같이하고, 그 반대로도 가능하다. 메시지에 하나 또는 그 이상의 패킷이 있다면, 제 1 서술자는 이의 EOM 플래그가 세트되게 하지 않을 것이다. 나머지 서술자들을 폐기하기 위해서, 엔큐 프로세서(301)는 복수 패킷 메시지에 속하는 패킷에 대한 서술자가 폐기되었다는 것과, EOM 플래그가 세트된 서술자를 아직 수신하지 않았다는 것을 나타내기 위해 트래픽 큐 상태 필드(861)에 플래그들을 세트한다. 메시지의 패킷에 대한 각각의 서술자가 들어왔을 때, 엔큐 프로세서(301)는 메시지 끝 플래그에 대해서 필드(613)를 체크한다. 아무 것도 세트되어 있지 않으면, 그 서술자는 폐기되고, 필드(613) 내 EOM 플래그가 세트되어 있다면, 엔큐 프로세서(301)는 그 서술자를 폐기하고 EOM 플래그를 가진 서술자가 수신되었다는 것을 나타내기 위해서 트래픽 큐 상태 필드(861)에 플래그들을 세트한다. 전체 복수 패킷 메시지가 처리될 수 있는 기회들을 늘리기 위해서, 엔큐 프로세서(301)는 버퍼 풀 및 부모 버퍼 풀 상세가 대량의 버퍼 공간을 사용할 수 있다는 것을 나타내지 않는다면 제 1 패킷을 폐기할 수도 있다.
부분 패킷 폐기(PPD: Partial Packet Discard) 모드는 제 1 패킷이 폐기된다면 EPD처럼 동작한다. 그러나, 제 1 패킷이 폐기되지 않았다면, 폐기 결정들이 "중간 패킷들"에 대해서 행해지는 것을 허용기도 한다. 이것이 행해졌을 때, 결정이 행해진 패킷, 및 마지막 패킷을 제외한 후속하는 모든 패킷들은 폐기된다. 마지막 패킷은 다음 메시지의 시작을 확인하는데 필요한 EOM 플래그를 갖고 있으므로 폐기될 수 없다. 마지막 패킷은 단축된 메시지의 최종 수신자에게 메시지가 결함이 있음을 알릴 에러 검출 정보를 또한 포함한다.
참조 데이터 스트림 처리 상황에서, 물론 패킷을 폐기할 결정은 패킷 자체에 대해 행해지는 것이 아니라 패킷을 나타내는 TMC 서술자(216)에 행해진다. 엔큐 프로세서(301)가 폐기할 중간 패킷을 나타내는 서술자를 선택하였을 때, 엔큐 프로세서(301)는 복수 패킷 메시지 내 패킷에 대한 서술자가 폐기되었다는 것과 EOM 플래그가 세트된 서술자를 아직 받지 못하였다는 것을 나타내기 위해서 트래픽 큐 상태 필드(861)에 플래그들을 세트한다. 이어서 엔큐 프로세서(301)는 EOM 플래그가 세트된 서술자를 제외하고 서술자들을 폐기하고 전술한 바와 같이 필드(861) 내 플래그들을 리세트시킨다. 마지막 서술자를 폐기시키지 않음으로 해서, DCP(202)로부터 출력되는 메시지는 EOM 플래그가 세트된 마지막 패킷을 갖게 될 것임이 보장된다. 복수 패킷 메시지들을 수신하는 트래픽 큐에 대해 특정된 폐기 모드에 관계없이, 엔큐 프로세서(301)는 메시지의 다른 패킷들을 저장하기 위한 어떠한 버퍼들도 DCP(202)에 더 이상 없을 때 메시지에 속하는 나머지 패킷들을 폐기하기 위해 PPD를 사용한다. 물론 이 상태는 메시지의 패킷들에 대한 서술자들을 수신하는 트래픽 큐에 대한 버퍼 풀 및 부모 버퍼 풀 정보에 의해 표시된다.
마지막 메시지 폐기 모드는 수정된 부분 패킷(MPP: Modified partial Packet) 모드이다. MPP는 패킷 재결합과 함께 사용되는 특별한 메시지 폐기 정책이다. 재결합에서, 복수 패킷 메시지로 구성된 패킷들에 대응하는 모든 서술자들은 메시지에 대한 마지막 패킷이 수신될 때까지 TMC(203)에 보유되고, 이어서 DCP(202)에 버스트로 출력되고, DCP는 서술자들의 버스트로 표현된 패킷들을 단일 패킷으로 조립한다. 서술자들의 버스트에 의해 표현된 패킷들이 DCP(202)에서 단일 패킷으로 조립된다는 사실은 PPD의 문제를 해결하는데 이용될 수 있다. 즉, PPD 기술에 의해 생성된 절단된 메시지는, 메시지가 목적지에 도달하고 결함이 있는 것으로 판정될 때까지, 시스템(201)에서의 자원들 및 네트워크의 나머지에서의 자원들을 계속 사용한다. PPD와 MPPD 간 차이는 EOM 플래그를 가진 패킷의 처리이다. MPPD에서, 폐기되는 "중간 패킷"에 대한 서술자는 EOM 플래그(705)가 세트되어 있을 뿐만 아니라, 중간 패킷의 폐기임을 나타내기 위해 유형 필드(703)가 세트되어 있다. 이어서 중간 패킷에 대한 서술자는 메시지가 재결합될 트래픽 큐(204)에 두어진다. 메시지의 마지막 패킷을 포함하여, 메시지의 패킷들에 대한 나머지 서술자들은 폐기된다. 부분 메시지에 대한 패킷들을 나타내는 서술자들이 스케줄링 되게 한다. 후술하는 바와 같이, 서술자들은 트래픽 큐에 의해 특정된 트래픽 부류 스케줄러를 위한 가상 포트(251)에 의해 특정된 서술자 큐(247)에 인터리빙되지 않고 출력된다. 이어서 서술자 큐(247)에 서비스하는 채널 프로세서는 서술자들로 표현된 패킷들로부터의 페이로드를 단일 패킷의 페이로드로 재결합한다. 채널 프로세서가 EOM 플래그를 가진 서술자 및 중간 패킷 폐기 지시에 접하였을 때, 재결합된 페이로드를 가진 단일 패킷을 폐기한다.
폐기의 상세한 예: 도 10 및 도 11
다음의 상세한 예는 폐기 구성 블록(431), 버퍼 풀 명세(433) 및 부모 풀 명세(435)의 상세와, 수정된 부분 패킷 폐기 모드가 사용되고 있고 무작위 초기 검출(RED) 기술이 패킷을 폐기할 것인지를 결정하는데 사용되는 경우에 대해 엔큐 프로세서(301)의 동작의 상세를 제공한다.
폐기 구성 블록(431)의 상세
도 10은 이 경우에 대한 폐기 구성 블록(431)의 필드들을 도시한 것이다. 폐기 구성 블록(431)은, 모든 폐기 구성 블록들에 공통되는 필드들을 가진 부분(1001, 1019) 및 패킷이 폐기되는 시기를 결정하는 기술들 중 하나에 대해 특정한 필드들(1023-1029)을 갖는 부분(1003)인, 두 부분들을 갖는다. 부분(1001)의 공통 필드들 및 필드(1019)부터 시작하여, 각 필드마다 열들(1004-1006) 및 행을 갖는, 파라미터 블록(431)의 공통 부분의 포맷을 1002로 나타내었다. 필드(1019)부터 시작하여, 이 필드는 패킷이 폐기될 것인지를 결정하는데 사용되는 기술을 나타내는 코드를 포함한다. 여기서, 코드는 RED 폐기 기술이 적용됨을 나타내는, 011b이다.
필드(1017)는 폐기 구성 블록(431)에 연관된 폐기 트래픽 큐에 대한 tpid(423)를 포함할 수도 있고, 서술자가 폐기 구성 블록(431)에 특정된 바대로 폐기되었을 때, 필드(1017)에서 특정된 폐기 트래픽 큐에 폐기된다. 필드(1015)는 실제로 필드(1017)에 유효 tqid가 있는지 여부를 나타낸다. ecomControl 필드(1013)는 메시지 폐기 모드들 중 어느 것이 트래픽 큐와 함께 사용될 것인지를 특정하는 코드를 포함한다. 필드들(1011-1008)은 트래픽 큐(204)가 속하는 버퍼 풀에 대한 임계값과 이 버퍼 풀의 부모에 대한 임계값을 특정한다. 필드들(1010, 1011)에 의해 특정된 버퍼 풀의 최대 임계값은 버퍼 풀에 포함될 수도 있는 패킷들의 최대 총 크기를 특정하며, 큐에 새로운 패킷을 부가하는 것에 의해 그 범위를 초과하게 되었다면, 패킷에 대한 서술자는 트래픽 큐에 부가되는 것이 아니라, 폐기 큐에 넣어진다. 필드들(1008, 1009)에 의해 특정된 부모 버퍼 풀의 최대 임계치는 부모 풀의 자들(children)인 버퍼 풀들 간에 공유하는데 사용될 수 있는 패킷 저장량을 특정하며, 서술자에 의해 표현된 입력 패킷을 위한 충분한 공유 저장이 없다면, 서술자는 트래픽 큐에 부가되지 않고 폐기 큐에 넣어진다.
필드(1007)는 패킷이 언제 폐기되어야 하는가를 검출하는데 사용되는 기술에 따라 변하는 콘텐트들을 갖는 폐기 구성 블록(431)의 부분을 포함한다. 도 10에서, 이들 필드들은 RED 부분(1003)의 필드들(1023-1029)이다. RED 기술은 언제 기술을 적용할 것인가를 결정하기 위해 최소 임계값을 사용한다. 버퍼 큐의 버퍼 풀 내 패킷들의 총 크기가 입력 패킷이 트래픽 큐에 부가된 후에 최소값 미만이면, 부모 버퍼 풀의 상태에 관계없이 입력 패킷은 폐기되지 않을 것이다. 필드들(1027, 1029)은 이 최소 임계값을 포함한다. 트래픽 큐의 버퍼 풀 내 패킷들의 총 크기가 버퍼의 최소 임계값과 버퍼 풀의 최대 임계값 사이에 있을 때, RED 기술은 패킷을 폐기할 것인가를 결정하기 위해 버퍼 풀 명세(403)에 저장된 다른 정보와 함께 필드들(1023, 1025)에 정의된 확률 항(term)을 사용한다.
버퍼 풀 명세(433)의 상세: 도 11
폐기 구성 블록(431)처럼, 버퍼 풀 명세(433)는, 모든 버퍼 풀 명세에 공통인 1102로 나타낸 부분과, 패킷이 폐기될 시기를 결정하는 주어진 기술에 특정한 1103으로 나타낸 부분인, 두 부분들을 갖는다. 도 11에서 부분(1103)은 RED 기술에 필요한 부분이다. 버퍼 풀 명세(433)는 폐기 구성 블록(431)과 동일한 방식으로 표현된다.
1102에서 공통 필드들부터 시작하여, 1117은 부분(1103)이 놓이는 필드이며, 1108은 명세(433)에 의해 표현된 버퍼 풀의 순간(즉, 현재) 크기를 포함한다. 필드 내 값은 버퍼 풀에 속하는 트래픽 큐들에의 서술자들의 부가와 이들 트래픽 큐들로부터 서술자들의 제거를 추적하기 위해 갱신된다. 첫 번째 경우에, 서술자에 의해 표현된 패킷의 크기는 버퍼 풀의 순긴 크기에 부가되고, 두 번째 경우에, 패킷의 크기는 버퍼 풀 순간 크기에서 감해진다. 필드들(1109, 1110)은 버퍼 풀 크기 미만에선 버퍼 풀에 속하는 트래픽 큐들로부터 패킷들이 폐기되지 않을 상기 버퍼 풀의 크기를 특정한다.
바이트가 아닌 패싯 크기 필드(sizeinPacketsNotBytes field)(1111)는 버퍼 풀 크기들을 바이트 수 혹은 패킷 수로 특정할 것인지 여부를 나타낸다. 부모 버퍼 풀 식별자(1113)는 버퍼 풀의 부모 버퍼 풀에 대한 식별자이다. 마지막으로, 폐기 데이터 구성 유형(1115)은 버퍼 풀에 속하는 트래픽 큐들에 의해 사용될 폐기 기술을 특정한다. 이들 트래픽 큐들에서의 필드(1019)에 적용되는 바와 동일한 기술을 특정해야 한다. 본 예에서 필드(1115), 이것은 RED 폐기 기술을 특정한다.
1103은 RED 폐기 기술에 특유한 필드들을 도시한 것이다. RED 기술은 계산에서 평균 버퍼 크기를 사용하고, 필드(1117)는 마지막으로 갱신되었던 시간이며, 필드(1119)는 자체에 값을 포함한다. 필드들(1121-1129) 모두는 RED 폐기 기술에서 사용되는 값들을 포함한다. 필드들(1101, 1115)은 버퍼 풀 명세(433)의 공통 부분(1102)으로부터의 정보를 포함한다.
폐기 동작의 상세: 도 12
도 12는, 패킷이 폐기될 것인지를 결정하는 데에 RED 기술이 사용될 것임을 나타내는 discardDataTyep 필드(1019) 및 부분 폐기의 수정된 PPD 형태가 사용될 것임을 나타내는 eomControl 필드(1013)에서 트래픽 큐의 폐기 구성 블록(431)이 유형(type)을 갖고 있을 때, 엔큐 프로세서(301)가 복수 패킷 메시지들을 처리하는 방법의 흐름도이다. 트래픽 큐가 메시지에 패킷들에 대한 서술자들을 수신하고 있는 한, 엔큐 프로세서(301)는 트래픽 큐에 관한 루프(1205)를 실행한다.
앞에서 설명한 바와 같이, 엔큐 프로세서(301)가 패킷들을 폐기시키기 위해 MPPD 알고리즘을 사용하고 있을 때, 이 프로세서는 TMC 서술자들(214) 중 하나가 폐기되어야만 할 때까지 메시지 내 패킷들을 나타내는 TMC 서술자들(214)을 비-폐기 트래픽 큐(204)에 출력한다. 이 때부터, 엔큐 프로세서(301)는 메시지의 마지막 패킷에 대한 서술자를 수신할 때까지 나머지 패킷들에 대한 서술자들을 폐기 트래픽 큐에 폐기시킨다. 이 서술자는 EOM 플래그를 세트시키고, 엔큐 프로세서(301)는 에러를 나타내기 위해 이를 표시하고, 폐기되지 않은 메시지들의 패킷들을 포함하는 비-폐기 트래픽 큐에 이를 출력한다. 패킷들의 페이로드들을 단일 패킷으로 재결합하고 있는 DCP(202)에서의 채널 프로세서가 EOM 플래그가 세트되어 있고 결함이 있는 것으로서 표시가 된 서술자에 접하였을 때, 이 재결합된 패킷을 폐기시킨다.
도 12의 흐름도(1201)에 도시한 바람직한 실시예에서 알고리즘의 구현을 더 상세히 하고, 시작(1203)부터 시작하여 루프(1205)로 들어가면, 먼저 엔큐 프로세서(301)는 메시지에 대한 다음 서술자를 얻는다. 트래픽 큐의 트래픽 큐 파라미터 블록(401)에 트래픽 큐 상태 필드들(837, 853)이, 복수 패킷 메시지의 패킷들에 대한 서술자들을 큐가 수신하고 있다는 것과 메시지가 폐기될 것임을 나타낸다면(1209), 서술자에 의해 표현된 패킷은 폐기 트래픽 큐에 부가될 것이고, 이를 달성하기 위해서, 브랜치(1211)가 취해지며, 그렇지 않다면, 브랜치(1213)가 블록(1215)에서 취해진다. 복수 패킷 메시지의 부분이 아닌 서술자의 경우는 본 예와 관계없다. 블록(1215)에서, 새로운 값 newBPsz을 얻기 위해서 다음 서술자에 의해 표현된 패킷의 크기가 트래픽 큐의 버퍼 풀 명세의 BpSize 필드(1108)에서의 값에 더해지고, new PBPsz 값을 얻기 위해서 부모 버퍼 풀 명세(435) 내 대응하는 값에 더해진다. 판단 문(1217)에서, 이들 값들은 버퍼 풀 및 부모 버퍼 풀에 대한 폐기 구성 블록(431)에서의 임계 값들과 함께 사용되어, 서술자를 어떻게 처리할 것인가를 결정한다.
3가지 가능성들이 있다.
. newBPsz은 폐기 구성 블록(431)의 필드들(1027, 1029)의 최소 허용 임계값 미만이고, 이 경우 패킷들은 폐기되지 않을 것이다(브랜치 1219).
. new PBPsz가 폐기 구성 블록(431)에서의 부모 버퍼 풀에 대한 최대 임계 필드들(1008, 1009)의 값 이상이거나, new BPsz은 폐기 구성 블록(431)에서의 버퍼 풀에 대한 최대 임계 필드들의 값 이상이며, 이 경우 패킷은 폐기될 것이다(브랜치 1223).
. 아니면, RED 기술이 사용되어 패킷이 폐기될 것인지가 결정된다(브랜치 1221). RED 기술은 결정하기 위해서 버퍼 풀 명세(431) 내 확률 항 정보를 사용한다.
제 1 가능성에 있어서는, 서술자는 1251로 나타낸 바와 같이, 비-폐기 트래픽 큐에 단순히 더해진다. 제 3 가능성에 있어서는, RED 기술이 패킷이 폐기되지 않을 것임을(블록 1225) 나타낸다면, 브랜치(1227)가 브랜치(1219)로 취해지고, 서 술자는 비-폐기 트래픽 큐에 부가되며, 제 2 가능성의 경우, 혹은 RED 기술이 패킷이 폐기될 것임을 나타내면, 브랜치(1229)가 취해지는데, 이들 양 경우에, 트래픽 큐 상태 필드(836)는 서술자 및 다음 서술자들이 폐기될 것임을 나타내도록 세트되어야 하기 때문이다. 상태는 블록(1231)에서 세트된다.
페기될 서술자들에 대해서, 다음 단계는 서술자 자신의 EOM 플래그가 세트되어 있는지를 체크하는 것이다(판단블록(1233)). EOM 플래그가 세트되어 있을 때(브랜치 1237), MPPD 기술은, 1239 및 1241에서 행해지는 것으로서, 서술자를 에러를 갖고 있는 것으로서 표시하고 비-폐기 트래픽 큐에 넣을 것을 요한다. 그렇지 않다면, 브랜치(1235)가 취해지고 서술자가 폐기 트래픽 큐에 부가된다. 모든 경우에, 서술자는 EMO 서술자가 있는지 여부를 알기 위해서 재차 검사된다. 이 경우가 아니면, 루프(1205)가 계속되고(브랜치 1245), 아니면, 종료하여(브랜치 1247) 처리를 마친다(1249).
추론 엔큐: 도 13
추론 엔큐는, 수신 프로세서(221)가 서술자(216)에 의해 표현된 전체 패킷을 수신하기 전에, 수신 프로세서(221)가 TMC 서술자(216)를 트래픽 큐(204)에 제공할 수 있게 하는 기술이다. TMC(203)은, 전체 패킷이 수신 프로세서(221)에 의해 성공적으로 혹은 비성공적으로 수신한 후까지도 TMC 서술자(216)에 포함된 cp 서술자(214)가 QMU(211)에 출력되지 않게 될 것을 보장케 한다. 수신 프로세서는 한 쌍의 엔큐 데이터 메시지들(601)을 사용하여 추론 엔큐를 행한다. 제 1 엔큐 데이터 메시지는 패킷에 대한 TMC 서술자(216)를 포함하고, 서술자(216)에 의해 표현된 패킷이 추론적으로 엔큐되고 있음을 필드(611)에 나타낸다. 수신 프로세서(221)가 패킷 처리를 마쳤을 때, 제 2 엔큐 데이터 메시지, 즉 위탁 메시지(commit messsage)가 다음에 온다. 다시, 필드(611)는 메시지가 위탁 메시지임을 나타낸다. 위탁 메시지가 도달한 후에만 TMC(203)는 제 1 엔큐 데이터 메시지에 포함된 cp 서술자(214)를 출력할 것이다.
추론 엔큐는 수신 프로세서(221)에서 TMC 서술자(216)가 나타내는 패킷의 수신의 시작부터 트래픽 큐(204)에 제공되기까지 상기 TMC 서술자(216)에 대한 일정한 레이턴시(latency)가 보장되게 하는데 유용하다. 이러한 일정 레이턴시는 단일의 고 대역폭의 패킷 스트림(OC48c 패킷 스트림과 같은)으로부터 수신된 패킷들의 처리를 다수의 수신 프로세서들(221)에 배분시키는 DCP(202)에서 동작하는 애플리케이션들에 중요하다. 배분된 수신 패킷 처리에 있어서는 서술자들이 수신된 순서와 동일하게 이들 서술자들이 트래픽 큐들에 확실히 제공되게 주의해야 한다. DCP(202) 내에서, 수신 프로세서들이 엄격한 라운드 로빈 순서(round robin order)로 패킷들을 처리하고 이들이 처리하고 있는 패킷들에 대한 TMC 서술자들(216)이 QMU(215)에 동일한 엄격한 라운드 로빈 순서로 출력하도록 수신 프로세서들을 설정함으로써 순서는 유지되어, 서술자 큐들(213)에서의 서술자들의 순서가 올바르게 된다. 패킷 수신의 시작과 추론 엔큐 메카니즘에 의해 제공된 트래픽 엔큐(204)에서의 엔큐 사이의 고정된 레이턴시는, 전체 패킷을 수신하는 것과 서술자를 TMC(203)에 제공하는 것을 분리하여, 보다 큰 패킷을 수신하는 채널 프로세서가 이의 전체 패킷을 수신할 때까지 보다 적은 패킷을 수신하는 채널 프로세서가 차단되었을 경우엔 발생하였을 수신 대역폭의 감소없이, 서술자들에 대한 이러한 엄격한 라운드 로빈 순서 처리가 발생할 수 있도록 한다.
보다 상세히 하면, 바람직한 실시예에서, 위탁 엔큐 데이터 메시지의 필드(623)는 추론적으로 엔큐되는 패킷의 소스, 즉 서술자에 의해 표현된 패킷을 수신한 수신 프로세서를 확인한다. 전체 패킷이 수신 프로세서(221)에서 수신되었을 때, 수신 프로세서(221)는 위탁 엔큐 데이터 메시지를 보낸다. 위탁 엔큐 데이터 메시지는 도 13에서 1301로 상세히 도시되었다. 위탁 엔큐 데이터 메시지(1301)는 유형 필드(611) 및 소스 식별자 필드(623)만을 포함한다. 유형 식별자 필드(611)는 패킷이 올바르게 수신되었음을 나타내는 성공 위탁, 혹은 패킷이 잘못 수신되었음을 나타내는 실패 위탁을 나타내도록 세트될 수 있다. 동일 수신 프로세서가 전체 패킷을 수신하기 때문에, 디큐 데이터 메시지 내 소스 식별자 필드(623)는 패킷을 나타내는 서술자에 대한 엔큐 데이터 메시지의 값과 동일한 값으로 세트된다.
위탁 엔큐 메시지가 들어왔을 때, 트래픽 큐 프로세서(305)는 위탁 엔큐 메시지로 보내진 TMC 서술자 내 소스 식별자 필드(623)의 값을 사용해서, 위탁 엔큐 메시지를 대응하는 추론 엔큐 메시지로부터의 TMC 서술자(216)와 매칭시킨다. 바람직한 실시예에서, 매칭 과정은 DCP(202)에 소수의 수신 프로세서들만이 있다는 사실과, 주어진 소스가 주어진 트래픽 큐에서 추론 엔큐 메시지로부터의 단지 한 개의 미결 TMC 서술자(216)만을 가질 수 있다는 사실에 의해 단순화된다. 매치되었을 때, 트래픽 큐 프로세서(305)는 추론적으로 엔큐된 TMC 서술자(216) 내 필드(611)의 값을 위탁 메시지 내 필드(611)의 값에 의해 결정된 것으로서 세트하고, 위탁 메시지 내 필드가 "성공 위탁"임을 나타내면, 트래픽 큐 프로세서(305)는 정상 엔큐 메시지를 나타내도록 추론 엔큐 메시지 내 필드(611)의 값을 세트한다. 필드가 "실패 위탁"을 나타내면, 트래픽 큐 프로세서(305)는 실패의 정상 엔큐 메시지를 나타내도록 추론 엔큐 메시지 내 필드(611)의 값을 세트한다. 수정된 추론 엔큐 메시지의 서술자가 이의 트래픽 큐의 헤드에 도달하여, 스케줄링되고, 큐 관리부(211)에 디큐되었을 때, 서술자에 대한 디큐 데이터 메시지는 위탁 메시지에 의해 필드(611)가 세트되었던 값에 대응하는 값을 필드(703)에 갖는다. 바람직한 실시예에서 큐 관리부(211)는 서술자를 처리하는 채널 프로세서에 필드(611)를 보내고 채널 프로세서는 필드(611)가 추론 엔큐가 실패하였음을 나타내면 어떻게 할 것인가를 결정한다. 물론, 대부분의 경우, 채널 프로세서는 패킷이 폐기되게 할 것이다.
추론 엔큐의 중요한 면은 스케줄링에 대한 영향이다. 추론적으로 엔큐된 TMC 서술자(216) 내 cp 서술자(214)가 위탁 메시지가 수신될 때까지 QMU(211)에 출력될 수 없기 때문에, 어떠한 위탁 메시지도 아직 수신되지 않은 추론 엔큐된 서술자인 헤드 TMC 서술자(216)를 갖는 트래픽 큐(204)는 스케줄링에 부적격이다. 결국, 이러한 트래픽 큐가 스케줄러 큐(523)의 헤드에 도달하였을 때, 트래픽 큐 프로세서(305)는 TMC 서술자(216)가 서비스되기 전에 스케줄러 큐(523)에서 트래픽 큐(204)를 제거하고, 이를 트래픽 큐의 트래픽 부류 스케줄러(503)에 연관된 부적격 트래픽 큐들에 넣는다. 트래픽 큐 프로세서(305)가 트래픽 큐(204)를 적격으로 되게 하는 위탁 메시지를 수신하였을 때, 트래픽 큐 프로세서(305)는 트래픽 부류 스케줄러용의 스케줄러 큐에 트래픽 큐(204)를 돌려보낸다.
디큐 스케줄러(303)에 의해 수행되는 동작들의 상세
디큐 스케줄러(303)는 스케줄러 계층(501) 내 스케줄러들을 실행하여 TMC(203)의 스케줄링, 정형화, 및 세그먼테이션 및 재결합 기능들을 수행한다. TMC(203)의 바람직한 실시예에서 사용가능한 스케줄러들에 대한 전반적인 설명부터 시작하여, 바람직한 실시예의 스케줄러들에 의해 채용되는 스케줄링, 정형화, 세그먼테이션 및 재결합을 설명한 후, 마지막으로 스케줄러들의 상세한 예들 및 스케줄러들이 구현되고 실행되는 방식을 제공하도록 하겠다.
TMC(203)의 스케줄러들
개요에서 이미 지적한 바와 같이, 디큐 스케줄링은 TMC(203)의 사용자들에 의해 확장하여 구성가능한 스케줄링 계층(501)에 의해 행해지고, 다음에, 스케줄러들의 종류들, 이들이 구성되는 방법들, 및 이들이 동작하는 방식을 모두 상세히 기술하도록 하겠다.
개요에서 나타낸 바와 같이, 스케줄러들은 계층 내 이들의 위치들에 따라 계층(501)에서 분류되는데, 트래픽 부류 스케줄러들(503)은 리프 노드들에 있고 내부 스케줄러들(509)은 내부 노드들 내에 있다. 바람직한 실시예에서 스케줄러는 스케줄러의 입력 스케줄러 큐들(523) 중에서 스케줄러 큐(523)를 선택하기 위하여 다음 종류의 스케줄링 알고리즘들을 사용할 수 있다.
. 엄격 우선 순위. 입력 스케줄러 큐들(523) 중에서 엄격 우선 순위에 따라 출력 스케줄러 큐(523)가 선택된다.
. 라운드 로빈.
. 가중치 공정 분배(weighted fair share). 각각의 입력 스케줄러 큐에 가중치를 부여하고, 주어진 입력 스케줄러 큐에 의해 수신된 대역폭의 분배가, 주어진 입력 스케줄러 큐들의 가중치와 모든 입력 스케줄러 큐들의 총 가중치들 간의 관계에 의해 결정된다.
. 프레임 기초 결손 라운드 로빈(frame-based deficit round robin). 패킷 바이트 길이에 근거하여, 가중치 공정 할당 스케줄링을 제공한다.
. 그룹 가중치 공정 큐(grouped weighted fair queueing). 고정크기 패킷들을 나타내는 서술자들을 갖는 입력 트래픽 큐들 간에 사용가능 대역폭을 배분한다.
바람직한 실시예에서, 트래픽 부류 스케줄러(503)는 위의 스케줄링 알고리즘들 중 어느 하나를 사용하도록 구성될 수 있지만, 내부 스케줄러(509)는 엄격 우선 순위, 라운드 로빈, 혹은 가중치 공정 배분 알고리즘들만을 사용하도록 구성될 수 있다. 물론, 다양한 종류의 스케줄러들이 계층(501)을 통해 스케줄러 큐에 의해 취해진 경로(209)를 따른 다양한 지점들에서 이용될 수도 있다.
스케줄러들을 구성: 도 14
도 14는 바람직한 실시예에서 스케줄러를 구성하는 사용자에 대한 이용할 수 있는 자원들을 도시한 것이다. 이들 자원들은 이하 논리 스케줄러(1401)라 칭하게 되는 것으로 구성된다. 사용자는 논리 스케줄러(1401)에 의해 제공된 자원들 중에서 선택함으로써 트래픽 부류 스케줄러 혹은 내부 스케줄러를 구성한다. 자원들은 엄격 우선 순위 스케줄러(1407), 초과 스케줄러(1415), 및 보증 스케줄러(1413)를 포함한다.
3개의 스케줄러들(1413, 1415, 1407)은 다음과 같이 하여 서로에 관계된다. 보증 스케줄러(1413)는 스케줄러(1401)에 의해 스케줄링하는데 사용할 수 있는 총 대역폭의 부분이 논리 스케줄러(1401)를 위한 입력 스케줄러 큐들 간에 배분될 수 있도록 하기 위해 이용할 수 있을 것임을 보증한다. 보증된 부분의 배분들이 대역폭을 완전히 소진하지 않는다면, 스케줄러 큐들 각각은 대역폭의 미보증 부분 부분을 받아 사용할 수 있다. 초과 스케줄러(1415)는 대역폭의 이 미보증 부분을 스케줄링하는 데 사용될 수 있다. 이에 따라, 스케줄러(1413)가 이미 보증된 대역폭을 사용하였기 때문에 스케줄러 큐(523)가 스케줄러(1413)에 의해 선택될 수 없다면, 스케줄러 큐는 대역폭의 비보증된 부분을 스케줄링하는 초과 스케줄러(1415)에 의해 여전히 선택 될 수 있다. 스케줄러(1413)의 출력(1409) 및 스케줄러(1415)의 출력(1411)은 엄격 우선 순위 스케줄러(1407)로 보내지고, 이 엄격 우선 순위 스케줄러는 스케줄러(1415)에 의해 선택된 어떤 스케줄러 큐에 대한 우선 순위를 스케줄러(1413)에 의해 선택된 어떤 스케줄러 큐에 부여한다. 출력(1403)에서 논리 스케줄러(1401)에 의한 스케줄러 큐 출력은 스케줄러(1407)에 의해 선택된 것이다.
가능한 구성에 대해 보다 상세히 하면, 바람직한 실시예에서, 보증 스케줄러는 비작업 보존 가중치 공정 큐잉(non-work conserving weighted fair queueing) 스케줄러로서 항상 구성되고, 바람직한 실시예에서 특히 중요한 가중치 공정 큐잉 스케줄러 형태는 프레임 기초 결손 라운드 로빈 스케줄러이다. 초과 스케줄러는 엄격 우선 순위 스케줄러, 라운드 로빈 스케줄러, 혹은 작업 보존 가중치 공정 큐잉 스케줄러로서 구성될 수 있다. 보증 스케줄러가 비작업 보존 가중치 공정 큐잉 스케줄러로서 구성되었을 때, 초과 스케줄러는 엄격 우선 순위 스케줄러, 라운드 로빈 스케줄러, 혹은 가중치 공정 큐잉 스케줄러로서 구성될 수 있다.
스케줄러들에 의해 사용되는 알고리즘들의 상세
바람직한 실시예에서 스케줄러들에 의해 사용되는 알고리즘들 중에서, 라운드 로빈 및 엄격 우선 순위는 더 이상 설명할 필요는 없고, 다음에서, 가중치 공정 큐잉, 프레임 기초 결손 라운드 로빈, 및 그룹 가중치 공정 큐잉에 대해 상술한다.
가중치 공정 큐잉
가중치 공정 큐잉은 동적으로 우선 순위, 혹은 가중치들을 시스템(201)을 통과하는 트래픽의 다양한 흐름들에 적용한다. 가중치들이 낮은 트래픽의 흐름들은 모든 흐름들이 사용할 수 있는 대역폭의 보다 큰 부분(share)을 얻고, 주어진 흐름이 사용할 수 있는 대역폭의 양은 흐름들의 현재의 개수 및 가중치들에 따라 달라진다. 가중치 공정 큐잉의 이점은 즉각 전송을 요하는 대화형 트래픽과 같은 트래픽이 낮은 가중치들을 받을 수 있는 한편, 즉각 전송을 요하지 않는 트래픽은 높은 가중치들을 받을 수 있다는 것이다. 다양한 트래픽의 어느 것도 다른 트래픽을 차단하지 않을 것이며 모든 트래픽은 이들이 요하는 액세스 유형을 얻을 것이다. 일반적으로, 가중치 공정 큐잉 알고리즘이 사용될 때 입력 세션이 받는 서비스 혹은 대역폭의 부분적인 량은 모든 입력 세션들의 가중치들의 합으로 나누어진 입력 세션의 가중치와 동일하다. TMC(203)에서, 스케줄러의 활성 및 스케줄 가능 입력 스케줄러 큐들(523) 각각은 입력 세션을 나타낸다.
패킷 트래픽에 대해서 "가중치 공정 큐잉" 알고리즘의 변종을 정의하는 많은 논문들이 나와 있다. "가중치 공정 큐잉" 알고리즘의 이들 변종들 모두는 일반화된 프로세서 공유(GPS: Generalized Processor Sharing) 모델로부터 나온 것이고 이들 모두는 상이한 공정성 특성들을 갖고 있다. TMC(203)의 바람직한 실시예에서 사용되는 변형 알고리즘은 최소한의 복잡도로 최상의 지연과 공정성 특성들을 달성하려 한 것이다.
바람직한 실시예에서 가중치 공정 큐잉 스케줄러는 작업 보존 혹은 비작업 보존 스케줄러로서 구성될 수도 있다. 작업 보존 스케줄러는 스케줄러가 활성 및 스케줄 가능하다면 입력 스케줄러 큐에 항시 서비스할 것이다. 작업 보존 스케줄러의 목적은 스케줄러의 입력 스케줄러 큐들이 최소한의 버스트로 서비스되는 일정한 레이트들을 발생하도록 스케줄러 입력들을 완벽히 인터리빙하는 것이다. 작업 보존 스케줄러는 스케줄러가 스케줄러 큐를 출력하는 레이트가 가변될 수도 있고, 이에 따라 바람직한 실시예의 가중치 공정 큐잉 알고리즘에서 사용되는 시스템의 잠재적인 혹은 가상의 시간 기능이 실시간 레이트로 앞서는 것이 아니라 제공된 서비스 량만큼 앞서는 것으로 가정한다. 비작업 보존 스케줄러에서는, 입력 스케줄러 큐는 실시간으로 특정 순간이 발생할 때 까지는 서비스되지 않는다. 이 특정 순간이 발생할 때까지, 다음에 수신될 트래픽 큐가 부적격하게 되었기 때문에 제거되지 않는다면, 그 트래픽 큐는 스케줄러 큐의 헤드에 남아 있다.
프레임 기초 결손 라운드 로빈
프레임 기초 결손 라운드 로빈 스케줄링 알고리즘은 가변길이 패킷들로 구성된 트래픽 스트림들에 대해 사용된다. 이것은 대역폭 보증을 요하지 않거나 엄격한 지터 및 지연 요건을 갖지 않는 트래픽 큐들 간에 사용가능한 서비스 대역폭을 분배하는 가중치 공정 배분을 제공한다. 이 알고리즘은 특히, 긴 메시지 패킷들과 훨씬 짧은 확인응답(acknoledgmenet) 패킷들이 혼합되어 구성된 TCP 트래픽에 유용하다.
바람직한 실시예에서, 이 알고리즘은 트래픽 부류 스케줄러(503)에서 사용된다. 프레임 기초 결손 라운드 로빈 트래픽 부류 스케줄러는 3개의 입력 스케줄러 큐들을 갖는데, 하나는 고 우선 순위 스케줄러 큐라 칭하고, 다른 두 개는 현재 스케줄러 큐 및 다음 스케줄러 큐라 칭한다. 트래픽 부류 스케줄러(503)는, 현재 스케줄러 큐에 대해 우선 순위를 갖는 고 우선 순위 스케줄러 큐를 갖는, 고 우선 순위 스케줄러 큐 및 현재 스케줄러 큐만을 스케줄링한다. 스케줄러(503)는 현재 스케줄러 큐가 빌 때까지 이를 스케줄링하고, 빈 시점에서, 현재 스케줄러 큐와 다음 스케줄러 큐를 교환한다. 적격으로 된 트래픽 큐들은 다음 스케줄러 큐에 부가되고 시간간격에 걸쳐 서비스의 배분을 수신했던 트래픽 큐들은 현재 스케줄러 큐 혹은 고 우선 순위 스케줄러 큐로부터 제거되어 다음 스케줄러 큐에 더해진다. 부적격으로 된 트래픽 큐들은 고 우선 순위 혹은 현재 스케줄러 큐로부터 제거된다.
FBDRR 알고리즘은 고 우선 순위 스케줄러 큐 사이에 트래픽 큐들을 이동시키고, 이들 양 스케줄러 큐들에서 다음 스케줄러 큐로 트래픽 큐들을 이동시킨다. 트래픽 큐들은 FBDRR 스케줄러에서의 두 트래픽 큐 파라미터들, 및 각 트래픽 큐에서의 두 카운터 값들에 따라 이동된다. 파라미터들은 다음과 같다.
. 트래픽 큐가 고 우선 순위 스케줄러 큐 혹은 현재 스케줄러 큐에서 다음 스케줄러 큐로 이동되기 전에 이 트래픽 큐가 받을 수 있는 최대 서비스 량을 특정하는 최대 량, 및
. 트래픽 큐가 고 우선 순위 큐에서 현재 스케줄러 큐로 이동되기 전에 이 트랙픽 큐가 받게 될 서비스 량을 특정하는 최소 량.
카운터들은 결손 카운터 및 BytesServedThisRoundConunter이다. 값들은 트래픽 큐의 파라미터 블록(403) 내 스케줄러 상태 필드(845)에 저장된다.
스케줄러가 현재 스케줄러 큐를 스케줄링 하기를 시작하였을 때, 현재 스케줄러 큐 내 각 트래픽 큐에 대한 결손 카운터는 현재의 결손 카운터 값에 최대 량을 더한 것으로 설정되고, 트래픽 큐에 대한 BytesServedThisRoundConunter는 0으로 설정된다. 주어진 트래픽 큐가 현재 스케줄러 큐 혹은 고 우선 순위 큐의 헤드에 도달할 때마다, 헤드 서술자에 특정된 패킷 길이는 결손 카운터의 현재 값에서 감해지고 패킷 길이는 BytesServedThisRoundConunter에 더해진다. 중요한 3개의 결과가 있다.
. 감산 결과가 양이고 가산 결과가 최소 량 미만이고 주어진 트래픽 큐가 아직 고 우선 순위 스케줄러 큐에 있지 않다면, 이 주어진 트래픽 큐는 현재 스케줄러 큐에서 고 우선 순위 스케줄러 큐로 옮겨진다.
. 감산 결과가 양이고 가산 결과가 최소 량 이상이면, 트래픽 큐는 현재 스케줄러 큐에 이미 있다면 이에 남아있고; 그렇지 않다면 현재 스케줄러 큐의 후미로 옮겨진다. 어느 경우이든 BytesServedThisRoundConunter는 0으로 설정된다.
. 감산 결과가 음이면, 주어진 트래픽 큐는 현재 스케줄러 큐 혹은 고 우선 순위 큐로부터 제거되어 다음 스케줄 큐에 넣어진다. 이것이 행해졌을 때, 결손 카운터는 결손 카운터에 최대 량이 더해진 것으로 설정되고, BytesServedThisRoundConunter는 0으로 설정된다. 결손 카운터에 최대 량을 더함에 따라 트래픽 큐엔 이 번에 받지 못하였을 수도 있을 서비스를 다음 번에 받을 기회가 주어진다.
고 우선 순위 스케줄러 큐와, 트래픽 큐들을 고 우선 순위 스케줄러에 넣고 고 우선 순위 스케줄러로부터 제거하는 규칙들은, 최소 량 파라미터보다 적은 패킷들을 나타내는 헤드 서술자들을 갖는 트래픽 큐들이 우선 순위 서비스 받는 것을 보장한다. 이에 따라, TCP 확인응답 패킷들에 대한 서술자들이 신속하게 스케줄링될 수 있게 된다. 다른 버전의 FBDRR 알고리즘은 현재 스케줄러 큐 및 다음 스케줄러 큐만을 필요로 한다. 이 버전에서, 고 우선 순위 스케줄 큐로 옮겨질 조건을 만족하였을 트래픽 큐는 다음 스케줄 큐로 옮길 조건을 만족시킬 때까지는 현재 스케줄러 큐의 헤드에 남게 된다.
그룹 가중치 공정 큐잉
트래픽 부류 스케줄러는 그룹으로 가중치 공정 큐잉 알고리즘을 채용할 수도 있다. 이 알고리즘은 가중치 공정 큐잉 알고리즘과 유사하지만, 공통의 서비스 가중치 및 패킷 서비스 간격을 갖는 트래픽 큐들의 그룹들 간에 서비스 대역폭을 분배하기 위해서 수정되었다. 이 알고리즘은 입력 스케줄러 큐 당 가중치 공정 배분과는 반대로, 트래픽 큐 당 가중치 공정 배분을 할당한다.
그룹으로 가중치 공정 큐잉 스케줄러는 다음과 같이 기능한다.
1. 동일 입력 스케줄러 큐에 할당된 모든 트래픽 큐들은 동일 서비스 가중치 및 동일 패킷 서비스 간격이 배분된다. 즉, 스케줄러는 각각의 입력 스케줄러 큐 내 모든 트래픽 큐들에 대해 하나의 가중치로, 일정한 한 세트의 가중치들을 지원하며, 동일 입력 스케줄러 큐에 속하는 모든 트래픽 큐들은 2의 동일 크기의 패킷들을 소지하는 것으로 가정한다. 스케줄러는 각각의 적격의 트래픽 큐에 대해, 가중치 공정 배분을 보증하나, 최악의 경우의 초기 레이턴시에 관한 트래픽 큐의 보증 한계는 그 트래픽 큐의 스케줄러 큐 내 적격 트래픽 큐들의 수에 의해 영향을 받을 수 있다. 이 스케줄링 알고리즘은 대역폭 보증 혹은 ATM 셀들과 같이, 일정 크기의 패킷들을 전하는 트래픽 큐들 간에 사용가능한 대역폭을 배분하는데 유용하다.
정형화의 상세
TMC(203)에서 정형화는 트래픽 큐들로부터 패킷 서술자들을 디큐하는 것을 지연시키는데 사용되는 메카니즘 혹은 원하는 디큐 전송 레이트 특성을 달성하기 위한 트래픽 큐들의 집합으로서 정의된다. TMC(203)에서, 정형화는 비작업 보존 가중치 공정 큐잉 알고리즘들을 사용하는 스케줄러들에서 구현된다. 이러한 스케줄러들은 트래픽 스트림의 디큐 서비스 레이트가 주어진 시간에 걸쳐, 특정된 최대 레이트보다 크지 않도록 활성 트래픽 스트림에의 서비스를 지연시키도록 구성될 수 있다. 정형화된 스케줄링에도 불구하고, 단기간 디큐 레이트들은, 많은 수의 활성 스케줄러 입력들을 멀티플렉싱하는 것에 의해 유발된 지연 및 지터때문에, 버스티(bursty)할 수도 있고, 때때로 원하는 레이트 한계를 초과할 수도 있다.
정형화를 위해 스케줄러들을 구성
정형화하기 위해 논리 스케줄러(1401)를 구성하는 데에 있어 많은 기술들이 사용될 수 있다. 이들 모든 기술들의 근간은 보증 스케줄러(1413)를 비작업 보존 스케줄러로서 구성하고 초과 스케줄러(1415)엔 대역폭을 할당하지 않는 것이다. 특히, 그룹 가중치 공정 큐잉 알고리즘이 보증 스케줄러(1413)에서 사용될 때,
. 각각의 트래픽 큐 입력은 트래픽 큐가 속하는 입력 스케줄러 큐의 가중치에 의해 특정된 레이트로 정형화된다.
. 트래픽 부류 스케줄러가 가변길이 패킷 트래픽을 스케줄링하고 있을 때, 트래픽을 갖는 트래픽 큐들은, 트래픽 부류 스케줄러를 가중치 공정 큐잉 스케줄러로서 구성하고 각 입력 스케줄러 큐를 가변 패킷 길이 트래픽을 갖는 단일 트래픽 큐로 제한시킴으로써, 개별적으로 정형화될 수 있다.
2중 리키 버킷들을 사용한 정형화
Q5에서 2중 리키 버킷 스케줄링은, 디큐하는 것을 단기간의 피크 레이크와 어느 정도 긴 기간에 걸쳐 유지된 레이트로 제한시키는 방식으로, 고정 길이 트래픽을 스케줄링하는 것으로 제한된다. 이것은 그룹 모드로 동작하는 비작업 보존 가중치 공정 큐잉 트래픽 부류 스케줄러(503)에 연결된 여러 쌍의 스케줄러 큐들(523)을 통해 지원된다. 각 쌍의 우수 스케줄러 큐는 원하는 주 레이트로 패킷들을 출력하도록 구성되어야 한다. 기수 스케줄러 큐는 지속된 레이트로 패킷들을 출력하도록 구성되어야 한다. 트래픽 큐가 스케줄러 큐에 부가될 필요가 있을 때, 지속 레이트 리키 버킷 알고리즘은, 패킷이 현재 전송되었다면 지속 레이트 리키 버킷을 위반한 것인지 여부를 판정하는데 사용된다. 지속 레이트 리키 버킷에 대한 상태 정보는 트래픽 큐 단위로 police2 필드(816)에 트래픽 큐의 파라미터 블록(403)에 저장된다. 이러한 이유로, 폐기 정책이 이중의 정책인 트래픽 큐들(504)은 2중 정형화 알고리즘에 따라 스케줄링하는 스케줄러들을 특정할 수 없다. 트래픽 큐(504)는 이의 스케줄러 입력 구성(3011)(도 30)에서 2중 정형화를 또한 특정해야 하며 입력 구성에서 적합한 상수들을 선택해야 한다. 상수들은 스케줄러 입력들 중 어느 쌍이 사용되는지, 패킷들에 측정된 리키 버킷 기간, 및 리키 버킷 한계를 정해야 한다.
트래픽 큐(204)가 초기에 적격이 되었을 때, 이 큐는 주 레이트로 구성된 스케줄러 큐에 두어질 것이며, 리키 버킷 상태 정보가 트래픽 큐의 police2 필드(816)에 저장될 것이다. 트래픽 부류 스케줄러는 트래픽 큐의 스케줄 상태 필드(845)에 저장될 서술자가 서비스될 때 스케줄 상태 정보를 돌려줄 것이다. 저장된 값은 다음 번에 트래픽 큐가 이의 스케줄러 큐의 헤드에 있을 때 트래픽 부류 스케줄러로 다시 보내질 것이다. 스케줄 상태 정보는 트래픽 큐가 그 레이트에 적합한 시간이 될 때까지는 서비스되지 않게 할 인에이블 시간을 포함한다.
트래픽 큐가 적격으로 되어 스케줄러 큐에 부가될 때마다, 트래픽 큐의 헤드에 있는 서술자로 표현된 패킷에 서비스하는 것이 지속 레이트 리키 버킷을 위반하게 될 것인지를 판정하기 위해서 police2 필드 내 리키 버킷 상태가 조사된다. 이 레이트를 위반하게 될 것이라면, 패킷의 서술자는 주 레이트 큐 대신 지속 레이트 스케줄러 큐에 넣어진다. 또한, 적격 시간에 이르기 전에는 트래픽 큐에 서비스되지 않게 하는 트래픽 큐의 파라미터 블록(403)에 적격 시간 값이 설정된다. 적격 시간에 도달되고 트래픽 큐가 서비스될 때, 트래픽 큐는(여전히 적격이면) 지속된 레이트 큐의 끝으로 되돌아 갈 것이다.
세그먼테이션 및 재결합
시스템(201)은 긴 패킷으로 전해지는 메시지를 짧은 패킷들의 시퀀스로 전해지는 메시지로 변환할 수 있고 짧은 패킷들의 시퀀스로 전해지는 메시지를 긴 패킷으로 전해지는 메시지로 변환할 수 있다. 이들 변환들 중 첫 번째 것을 세그먼테이션라 하고 두 번째 것을 재결합이라 한다. ATM 패킷들의 시퀀스의 페이로드로서 전달되는 IP 패킷의 예이다. 세그먼테이션에서, IP 패킷은 ATM 패킷들의 시퀀스의 페이로드들로 세그먼테이션되고, 재결합에서는 ATM 패킷들의 시퀀스의 페이로드들이 IP 패킷으로 재결합된다.
시스템(201)에서, 세그먼테이션 및 재결합 모두는 cp 서술자들(214)에 관한 조작들을 포함한다. 세그먼테이션의 경우에, 긴 패킷에 대한 단일 서술자(214)는 짧은 패킷들에 대한 서술자들의 시퀀스가 되고, 재결합의 경우에, 짧은 패킷들에 대한 서술자들(214)의 시퀀스는 긴 패킷에 대한 단일 서술자(214)가 된다. 바람직한 실시예에서, 이들 양 조작들은 TMC(203)에 트래픽 큐들을 포함하고, 트래픽 부류 스케줄러들(503)에서 행해진다. 세그먼테이션에 사용되는 트래픽 부류 스케줄러를 세그먼테이션 스케줄러라 하고, 재결합에 사용되는 것을 재결합 스케줄러라 칭한다. 바람직한 실시예에서, 사용자는 트래픽 부류 스케줄러를 세그먼테이션 혹은 재결합 스케줄러가 되도록 구성할 수 있다. 세그먼테이션 혹은 재결합 스케줄러들을 특정하도록 구성되는 트래픽 큐들을 또한 각각 세그먼테이션 혹은 재결합 트래픽 큐들이라 칭한다. 세그먼테이션에 있어서, 세그먼테이션에 사용되는 파라미터 값들은 세그먼테이션 스케줄러가 구성될 때 특정되며, 재결합의 경우, 재결합 조작을 위한 파라미터들은 재결합 트래픽 큐가 구성될 때 특정된다.
세그먼테이션의 상세들
세그먼테이션 트래픽 큐에 있어서, 세그먼테이션 트래픽 큐의 헤드에 도달한 단일의 TMC 서술자(216)에 의해서 QMU 서술자들(2508)의 시퀀스가 발생하게 될 것이다. 시퀀스 내 각각의 QMU 서술자는, 엔큐된 서술자의 복제와, 시퀀스 내 QMU 서술자들에 대응하는 패킷들을 전송하는 DCP(202) 내 채널 프로세서로 하여금, QMU 서술자들의 시퀀스를 생성하게 된 단일 TMC 서술자에 의해 표현된 패킷의 페이로드의 어느 바이트들을 가져와 시퀀스 내 각 QMU 서술자로 표현된 패킷을 형성할 것인가를 판정할 수 있게 하는 진행 표시자(필드(715))를 포함할 것이다.
시퀀스 내 QMU 서술자들의 수 및 QMU 서술자들 각각의 서술자 내 진행 표시자의 값은 다음 정보를 사용하여 결정된다.
. 트래픽 큐의 트래픽 큐 파라미터 블록(403) 내 정보 필드(836). 재결합 트래픽 큐에서, 이 필드의 값은 현재 트래픽 큐의 헤드에 있는 서술자에 의해 표현된 패킷의 길이이다.
. 세그먼테이션 스케줄러에서 세그먼트 크기 필드. 이 필드의 값은 시퀀스 내 각 패킷의 총 크기이다.
. 세그먼테이션 스케줄러에서 페이로드 크기 필드. 이 필드의 값은 시퀀스 내 각 패킷 내 페이로드의 최대 크기이다.
. 세그먼테이션 스케줄러에서 오버헤드 크기 필드. 이 필드의 값은 세그먼트 크기 필드 및 페이로드 크기 필드에 특정된 크기들 간 차이이다.
모든 크기들은 바이트로 측정된다.
단일 가변 길이 패킷을 나타내는 서술자에 대해 엔큐 메시지로부터 세그먼테이션 스케줄러가 발생하는 디큐 데이터 메시지들의 수는 다음과 같이 하여 산출된다.
세그먼트들의 수 = 상한(패킷 길이 + 세그먼테이션 오버헤드 크기)/세그먼트 페이로드 크기)
시퀀스에 속하는 각 디큐 데이터 메시지(701)는, 세그먼트되는 패킷의 페이로드의 얼마만큼이 세그먼트의 이 서술자가가 생성되기 전에 남아있었는가를 나타내는 필드(715)에 패킷 바이트 잔여 값을 포함한다.
예로서, 세그먼테이션 트래픽 큐의 헤드에 있는 서술자는 총 157 바이트 길이로 패킷을 나타내며, 이것은 고정길이 패킷들의 시퀀스로 세그먼테이션될 것이며, 고정길이 패킷 각각은 총 60바이트의 길이이고, 이중 58 바이트가 페이로드이다. 세그먼테이션의 결과는 다음의 60 바이트 패킷들의 시퀀스이다.
패킷 번호 패킷 내 페이로드 바이트 나머지
1 0-47 157
2 48-95 109
3 96-143 61
4 144-157 13
이 예에서, 세그먼테이션 스케줄러에 의해 생성된 것으로부터 QMU 서술자들(2508)을 수신하는 DCP(202) 내 채널 프로세서는 적합한 헤더들 및 후미들을 가진 60바이트 패킷들을 생성하도록 프로그램 된다. QMU 서술자로부터 나머지 값 및 원 패킷의 길이(QMU 서술자의 cp 서술자(214)에 포함된)를 사용하여, 채널 프로세서는 각 60바이트 패킷의 48 바이트 페이로드에 합치기 위해서 버퍼 관리부(227)로부터 원 패킷의 페이로드의 어느 바이트들을 가져와야 하는가와, 주어진 60 바이트 패킷이 원 패킷의 페이로드를 포함하는 시퀀스 내 제 1 패킷인지, 아니면 중간 패킷인지, 아니면 마지막 패킷인지를 결정할 수 있다.
세그먼테이션이 트래픽 부류 스케줄러에 의해 수행된다는 사실로부터 알 수 있듯이, 패킷을 폐기하는 결정은 이의 목적지가 세그먼테이션 트래픽 큐인지 여부에 의해서는 영향받지 않는다. 스케줄링에 관하여, 각각의 개별 디큐 데이터 메시지 내 서술자는 개별적으로 스케줄링되고, 결국, 패킷들의 시퀀스 내 패킷들에 대한 QMU 서술자들을 포함하는 디큐 데이터 메시지들은 다른 디큐 데이터 메시지들과 인터리빙 될 수도 있다. 트래픽 큐들을 세그먼테이션 함으로써 작성된 서술자들에 사용되는 스케줄링 메카니즘들은 다른 서술자들에 대한 것과 동일하다. 단지 차이는 서술자를 스케줄링하는 데 사용되는 패킷 길이 값이 TMC 서술자(216)에 특정된 크기로부터가 아닌 세그먼트 크기 필드로부터 불러내어진다는 것이다.
재결합
재결합은 단일 패킷의 페이로드를 형성하기 위해 패킷들의 시퀀스의 페이로드들을 조합하는 것을 포함한다. DCP(202)는 조합을 행한다. 스스로가 조합을 행하기 위해서, DCP(202)는 보다 적은 패킷들의 시퀀스로부터 큰 패킷을 정확하게 재구성하기 위해 여러 개의 상태를 유지해야 한다. TMC(203)는, 가상 출력 포트를 통해 출력되는 다른 QMU 서술자들과 인터리빙됨이 없이, 큰 패킷에 대해 필요한 패킷들을 나타내는 QMU 서술자들이 재결합 스케줄러용의 가상 출력 포트(521)를 통해 출력되도록, TMC(203)로부터 패킷들의 시퀀스에 대한 QMU 서술자들(2508)의 디큐를 조직함으로써 DCP(202)에서 조합하는데 필요한 상태를 최소화한다. 재결합에서 재결합 트래픽 큐의 역할은 시퀀스를 제공하는 것이다. 재결합에 있어서 문제는 시퀀스 내 모든 서술자들이 수신되고 서술자들이 출력될 수 있을 때까지 서술자들을 저장하는 데에 구속되는 TMC(203) 내 자원들의 양이다. TMC(203)에서 구현되는 재결합은 이 문제를 두 가지 방법으로 처리한다.
. 시퀀스 내 서술자들 중 하나가 폐기된 즉시 시퀀스 내 수신된 서술자들 모두를 폐기하는 수정된 PPD 폐기 알고리즘을 사용하며,
. 시퀀스 내 패킷들의 흐름이 중단되었음을 판정하기 위해 타임아웃 메카니즘을 사용하는 것으로, 중단이 검출되었을 때, 시퀀스에 대한 서술자들은 수정된 PPD 폐기 알고리즘을 사용하여 폐기된다.
TMC(203)가 QMU 서술자들(2508)의 시퀀스를, 단일의 비-인터리빙된 버스트로, 재결합 스케줄러의 VOP(251)에 의해 특정된 서술자 큐에 출력하였을 때, DCP(202) 내 채널 프로세서는 패킷들의 시퀀스의 페이로드들을 단일의 큰 패킷으로 조립하기 위해 QMU 서술자들(2508)을 처리할 수 있고, 큰 패킷용 TMC 서술자(216)를 통상적으로 스케줄링하기 위한 엔큐 데이터 메시지(601)로 TMC(204)에 제공할 수 있다. TMC(203)가 큰 패킷에 대한 QMU 서술자(2508)를 포함하는 디큐 데이터 메시지를 출력할 때, 큰 패킷은 DCP(202) 내 다른 채널 프로세서에 의해 출력된다. 이에 따라 재결합은 시스템(210)에서 가능한 TMC(204)과 DCP(202) 간에 여러 종류들의 복잡한 상호작용들의 좋은 예를 제공한다.
재결합이 채용되는 트래픽이 종류들에서, 보다 큰 패킷으로 재결합될 페이로드를 갖는 패킷들의 시퀀스에 속하는 패킷들은 이들의 소스로부터 다음 특성의 트래픽 스트림으로 DCP(202)에 도착한다.
. 패킷들은 이들이 소스에 의해 보내진 순서로 수신된다.
. 소스는 패킷들의 서로 다른 시퀀스들에 속하는 패킷들을 인터리빙하지 않는다.
. 서로 다른 소스들에 의해 보내진 시퀀스들에 속하는 패킷들은 인터리빙 될 수도 있다.
시퀀스 내 마지막 패킷은 메시지의 끝을 포함하는 것으로서 표시된다.
TMC(203)는, TMC(203)에서 재결합될 패킷들의 시퀀스의 각 소스에 대응하는 트래픽 큐가 있도록 구성되었으며 시퀀스들을 포함하는 트래픽 스트림을 처리하는 수신 프로세서(들)는 TMC(203)에 보내는 TMC 서술자들(216)에서 소스들에 대응하는 트래픽 큐들을 특정한다. 이에 따라, 주어진 소스로부터 시퀀스에 대한 TMC 서술자들(216)을 수신하는 트래픽 큐는, 다른 소스들로부터 어떠한 인터리빙 된 TMC 서술자들 없이, DCP(202)에 수신되었던 순서로 TMC 서술자들을 수신한다. 채널 프로세서는 패킷이 EOM(메시지의 끝) 패킷임을 나타내기 위해 시퀀스 내 마지막 패킷에 대한 TMC 서술자를 표시한다. 이에 따라, 재결합될 패킷들에 대한 서술자들을 수신하는 트래픽 큐는 TMC 서술자들의 하나 또는 그이상의 비-인터리빙 된 시퀀스들을 포함하고, 서술자들의 각각의 시퀀스는 트래픽 큐가 대응하는 소스로부터의 패킷들의 시퀀스에 대응하고 DCP(202)엔 수신되었으나 아직 재결합되지 않은 패킷들의 시퀀스를 나타낸다. 패킷들의 마지막 시퀀스에 속하는 패킷들 모두가 아직 DCP(202)에 도착하지 않았다면, 서술자들의 마지막 시퀀스는 이의 시퀀스가 EOM 패킷임을 나타내는 서술자를 포함하지 않을 것이다.
트래픽 큐의 헤드에 있는 TMC 서술자(216)가, EOM 패킷을 나타내는 것으로서 표시된 TMC 서술자(216)를 아직 포함하지 않는 TMC 서술자들(216)의 시퀀스에 속한다면, 재결합 트래픽 큐(204)는 스케줄링엔 부적격이다. 어떤 다른 부적격의 트래픽 큐처럼, 서비스하게 되었을 때 부적격인 재결합 트래픽 큐는 스케줄러 큐로부터 제거된다. EOM 서술자가 도착하였을 때, 트래픽 큐 프로세서(305)는 다시 트래픽 큐를 스케줄러 큐에 넣는다. 트래픽 큐 프로세서(305)가 시퀀스에 대한 EOM 서술자가 도착하였는지 여부를 판정하기 위해 사용하는 상태 정보는 트래픽 큐의 파라미터 블록(403)의 필드(861)에 포함된다.
트래픽 큐(204)가 스케줄러 큐의 헤드에 있고 스케줄러 계층(501)이 스케줄러 큐를 선택하였을 때, 트래픽 큐의 헤드에 있는 서술자들의 시퀀스의 출력이 시작된다. 이 때, 재결합 트래픽 부류 스케줄러(293)부터 가상 출력 포트까지 스케줄러 큐들에 의해 스케줄러 계층을 통해 취해진 경로(209) 내 스케줄러들은 록(lock)되어, 동일 가상 출력 포트를 사용하는 다른 스케줄러 큐들이 스케줄되지 않게 하여, 트래픽 큐는 이의 스케줄러 큐의 헤드에는 시퀀스 내 모든 서술자들이 출력될 때까지 남아 있게 된다. EOM이 표시된 서술자가 출력될 때, 록 된 스케줄러들은 록이 해제되어 트래픽 큐가 이의 스케줄러 큐의 헤드에서 제거된다. 이에 따라 트래픽 큐의 헤드에 있는 서술자들의 시퀀스가 이의 트래픽 큐(204)에서, 서술자들의 시퀀스가 대응하는 패킷들의 시퀀스가 DCP(202)에 수신되었던 순서로 경로의 가상 출력 포트에 대응하는 QMU(217) 내 서술자 큐(213)로 출력된다. 재결합 스케줄러들에 속하는 트래픽 큐들에 엔큐하도록 된 TMC 서술자들(216)은 다른 트래픽 큐들에 엔큐하도록 된 서술자들과 동일한 방식으로 폐기될 수도 있다. 바람직한 실시예에서 사용되는 폐기 모드는 MPPD 모드이다.
지금 설명된 재결합 기술에서의 문제는 비정상 메시지, 즉 EOM 표시자를 갖지 않는 메시지로부터 서술자들을 검출하는 것이다. 이러한 메시지를 나타내는 TMC 서술자들의 시퀀스는 표시가 된 마지막 서술자를 결코 수신하지 못할 것이며, 결국, 시퀀스 내 제 1 TMC 서술자가 트래픽 큐의 헤드에 도착하였을 때, 트래픽 큐는 부적격으로 될 것이고 영구히 그 상태로 남아있게 될 것이다. 트래픽 큐 프로세서(305)는 이 상황을, 비정상 시퀀스들을 찾아 이들의 자원들을 해제시키는데 일조할 수 있는 트래픽 큐들의 휴지상태를 추적하는 일반화된 방법을 사용하여 검출한다. 일반화된 휴지상태 추적(inactivity tracing)은 "클럭 스위프"(clock sweep) 방법의 구현이다. 주기적으로, 트래픽 큐의 파라미터 블록(403)의 필드(869)는 1회 스위프된 것으로 표시가 된다. 트래픽 큐에 관한 어떠한 엔큐 동작이든 "1회 스위프된" 표시를 클리어할 것이다. "클럭 스위프"가 트래픽 큐를 다음 클럭 스위핑으로 넘겼을 때, 필드(869)는 마지막 스위프 이후에 엔큐 동작에 의해 클리어 되었다면 1회 스위프된 것으로서 표시가 되거나, 클리어되지 않았다면 2번 이상 스위프된 것으로서 표기가 된다. 2회 이상 스위프된 것으로서 표시가 된 어떠한 트래픽 큐이든 적어도 스위프의 주기 동안은 대기 상태(idle)에 있었던 것이다.
재결합 트래픽 큐에 있어서, 일반화된 클럭 스위프는 필드(869)가 2회 스위프된 것으로서 표시가 된 후에 진행 중의 재결합이 트래픽 큐에 의해 "타임아웃"되게 하는데 사용된다. 타임아웃이 발생하였을 때, 필드(861)는 트래픽 큐가 디스에이블되었고 트래픽 큐가 활성 스케줄링 큐에 넣어진 것을 표시하도록 설정된다. 비정상 메시지에 대한 서술자들의 시퀀스는 전술한 바와 같이 TMC(203)으로부터 디큐되는데, 그러나 비정상 시퀀스의 최종 패킷이 디큐되었을 때, 필드(861)가 트래픽 큐가 디스에이블 된 것을 나타내도록 설정되었다는 사실로 의해서, 디큐 스케줄러(303)는 시퀀스가 앞서 종료되었고 트래픽 큐가 디스에이블되었다는 것을 나타내는 특별한 EOM 표시자로 최종 패킷에 표시를 한다. 재결합할 페이로드들에 대한 서술자들을 수신하는 DCP(202) 내 채널 프로세서가 비정상 메시지를 나타내는 EOM을 가진 서술자를 수신하였을 때, 채널 프로세서는 서술자들에 대응하는 페이로드들을 폐기한다. 재결합을 위해 모든 트래픽 큐 상태를 유지할 필요성의 결과로서, 재결합 트래픽 부류 스케줄러들은 스케줄링을 위해 모든 트래픽 큐 상태를 또한 필요로 하는 스케줄링 알고리즘들을 사용하지 않을 수도 있다. 바람직한 실시예에서, 프레임 기초 결손 라운드 로빈 알고리즘 및 그룹 가중치 공정 큐잉 알고리즘은 스케줄링을 위한 모든 트래픽 큐 상태를 필요로 한다.
스케줄러들의 구현의 상세
바람직한 실시예에서, 스케줄러들은 TMC IC(1503) 내부의 스케줄러 메모리(1515)에 구현되며 메모리(1515)에 스케줄러 상태를 설정함으로써 구성된다. 각각의 스케줄러는 스케줄러 계층(501) 내 그의 레벨 및 이 레벨의 수에 의해 참조되고, 스케줄러에 주어진 입력은 스케줄러의 레벨, 레벨에서의 수, 입력 수에 의해 참조된다. 바람직한 실시예에서, 각각의 레벨은 그 레벨에서 스케줄러 입력들을 특정하는데 사용될 수 있는 값들의 범위를 가지며, 스케줄러의 수는 그 범위에서 오프셋이며, 스케줄러에 속하는 입력들은 오프셋과 (스케줄러의 입력들의 수 -1) 간 입력들이다. 한 입력은 단지 하나의 스케줄러에 속할 수 있다. 바람직한 실시예에서, 32개의 입력들은 단일 레벨 0 스케줄러가 활용할 수 있고, 512개의 입력들은 레벨 1의 스케줄러들이 사용할 수 있고, 4K 입력들은 레벨 2 스케줄러들이 사용할 수 있고, 8K 입력들은 레벨 3 스케줄러들이 사용할 수 있다. 전술한 바와 같이, 스케줄러 계층의 리프들은 항시 트래픽 부류 스케줄러들(503)이고 내부 노드들은 내부 스케줄러들(509)이다.
트래픽 부류 스케줄러들(503)의 상세들: 도 21
도 21은 바람직한 실시예에서, 계층(501) 내 특정 트래픽 부류 스케줄러(503(i))의 위치를 정의하는 정보 및 이의 동작을 도시한 것이다. 트래픽 부류 스케줄러(503(i))는 계층에서 리프이기 때문에, 이의 한 세트의 입력 스케줄러 큐들은 트래픽 부류 스케줄러(503(i))를 특정하는 트래픽 큐들(204)을 갖는 한 세트(531)의 활성 스케줄러 큐들(523)이다. 이의 입력들(2101) 각각에 대해서, 트래픽 부류 스케줄러(503(i))는 입력(2101)에 연관된 스케줄러 큐(523)에 대한 입력 상태(2103)를 유지한다. 주어진 입력(2101(i))에 대한 입력 상태(2103(i))는 입력이 백로그 되었는지 여부(필드(2105)), 즉, 입력의 연관된 스케줄러 큐(523(j))가 활성화되었는지 여부와, 알고리즘에 따른 입력 상태(2106), 및 입력(2101)에 연관된 스케줄러 큐(523) 내 헤드 트래픽 큐 및 후미 트래픽 큐의 식별자들(2107, 2109)를 포함한다. 알고리즘에 따른 입력 상태(2106)는 스케줄러에 의해 사용되는 스케줄링 알고리즘에 따라 가변되는 입력 스케줄러 큐에 관한 상태이다.
계층(501) 내에서 트래픽 부류 스케줄러(503(i))의 자리는 접속 상태(2121)에 의해 특정되며, 이 접속상태는 내부 스케줄러와 이의 입력을 정의하는 것으로 이 입력엔 스케줄러(503(i))에 의해 선택된 백로그된 스케줄러 큐(523)을 스케줄러(503(i))가 출력한다. 이 내부 스케줄러를 스케줄러(503(i))의 부모라 칭한다. 접속상태(2121)는 부모가 속하는 계층(501) 내 레벨(2123), 이 레벨에서의 스케줄러의 수(2125), 및 스케줄러(503(i))가 선택한 스케줄러 큐를 출력하는 부모의 입력(2127)을 포함한다.
트래픽 부류 스케줄러(503(i))가 이의 입력들에 연관된 스케줄러 큐들을 어떻게 스케줄링할 것인가는 스케줄러 상태(2111)에 의해 결정된다. 스케줄러 유형(2113)은 스케줄러 유형, 및 따라서 세그먼테이션 혹은 재결합 스케줄러인지 여부뿐만 아니라 트래픽 부류 스케줄러에 의해 사용되는 알고리즘을 특정한다. 입력(2115)들의 수는 트래픽 부류 스케줄러에 속하는 입력들(2101)의 수를 특정한다. 계층(501)을 통한 재결합 스케줄러(503)의 경로가 스케줄러(503(i))가 서술자들의 시퀀스를 출력하고 있는 것과 같은 동일한 가상 출력 포트(521)를 포함하는 동안, 록(2117)은 스케줄러(503(i))을 록시키는데 사용된다. 알고리즘에 따른 상태(2119)의 콘텐트들은 2113에 특정된 스케줄러 유형에 따르며, 스케줄러 유형을 구성하는데 필요한 정보 및 스케줄링 알고리즘을 실행시키는데 필요한 상태를 포함한다.
내부 스케줄러들(509)의 상세들: 도 22
도 22는 내부 스케줄러(509(i))의 상세한 블록도이다. 접속 상태(2121) 및 스케줄러 상태(2111)는 내부 스케줄러(509(i))에 대한 것이 트래픽 부류 스케줄러(503)에 대한 것과 동일하다. 내부 스케줄러(509(i))와 트래픽 부류 스케줄러(503) 간에 기능상의 차이는 내부 스케줄러(509(i))가 스케줄러 계층(501)의 내부 노드이고, 결국, 내부 스케줄러(509(i))는 계층(501)에서 스케줄러(509(i)) 밑에 있는 스케줄러들의 동작들에 의해 멤버쉽이 결정되는 한 세트(534)의 스케줄러 큐들을 스케줄링한다는 것이다. 이 기능상의 차이는 입력 상태(2205)에 반영되고, 이 입력상태는 현재 입력에 관계된 스케줄러 큐(523)를 스케줄러(509(i))가 찾을 수 있게 하고 스케줄러 큐가 활성일 뿐만 아니라 스케줄 가능한지 여부도 결정할 수 있게 하는 정보를 포함한다.
입력(2203(0))에 대한 입력상태(2205)를 2205(0)로 상세히 나타내었다. 필드(2105)는 선택된 스케줄러 큐(2201(i))가 활성이고 스케줄 가능한지 여부를 나타낸다. 필드(2106)는 도 21에 관하여 기술한 바와 같이, 알고리즘에 따른 입력 상태를 포함한다. 필드들(2207-2209)은 스케줄러 큐의 트래픽 부류 스케줄러(503)로부터 전파되는 스케줄러 큐(2201(i))에 관한 정보를 포함한다. 소스 스케줄러 필드(2207) 및 소스 스케줄러 입력 필드(2209)에 의해서, 스케줄러 큐에 대한 헤드 및 후미 포인터들을 찾을 수 있고, 전파된 적격의 시간(2211)은 비작업 보존 스케줄링 알고리즘에서 스케줄러 큐(2201)가 다음에 스케줄링되기에 적격인 시간을 나타낸다.
필드들(2213-2217)은 스케줄러(509(i))와 스케줄러 큐(2201(i))의 소스인 트래픽 부류 스케줄러(503) 간 경로 상에 있는 어떤 가상 출력 포트(521(k))에 관한 정보를 포함한다. 필드(2213)는 이러한 가상 출력 포트가 있는지 여부를 나타내며, 이러한 가상 출력 포트가 있다면, 필드(2215)는 가상 출력 포트(521(k))에 대응하는 서술자 큐(213)가 다른 서술자들을 더 취할 수 있는지 여부, 이에 따라, 스케줄러 큐(2201(i))가 스케줄 가능한지 여부를 나타낸다. VOP 특정자 필드(2217)은 가상 출력 포트에 대한 식별자를 포함하며, QMU 서술자(2508)가 TMC(203)로부터 출력될 때, 레벨 0의 스케줄러(509) 내 이 필드는 QMU 서술자(2508)의 필드(707)에 특정된 VOP 식별자의 소스이다.
가상 출력 포트들의 상세들: 도 27
도 27은 가상 출력 포트(521(i))를 구현하도록 바람직한 실시예에서 채용되는 데이터 구조를 도시한 것이다. 필드(2701)는 가상 출력 포트(521(i))에 사용할 수 있는 현재 신뢰도들, 즉, 가상 출력 포트(521(i))에 대응하는 서술자 큐(213)에 현재 부가될 수 있는 서술자들의 수를 포함한다. 필드(2701)은 디큐/디큐 확인응답 루프 일주의 레이턴스가 있다고 할 때, 가상 출력 포트의 전체 대역폭이 확실히 유지될 수 있게 계산된 최대 디큐 신뢰도로 구성된다. 스케줄러 계층(501)을 통한 경로(529)가 가상 출력 포트(521(i))를 포함하는 스케줄러 큐에 속하는 트래픽 큐로부터 TMC(203)가 서술자를 출력할 때는 언제나, 필드(2701)의 값은 감분되고, 가상 출력 포트(521(i))에 대응하는 서술자 큐(213)로부터 서술자가 제거되었다는 것을 나타내는 디큐 데이터 메시지 확인응답(1921)을 QMU(217)가 TMC(203)에 보낼 때는 언제나, 필드(2701)의 값은 증분된다. 이들 메시지들을 전달하는 메카니즘은 후술하도록 하겠다. 현재 신뢰도 필드(2701)이 값 0을 갖고 있을 때, 가상 출력 포트(521(i))를 통과하는 경로들(529)을 갖는 스케줄러 큐들 중 어느 것도 스케줄 가능하지 않다. 필드(2703)은 가상 출력 포트(2703)에 대한 식별자이며, 바람직한 실시예에서, 식별자는 가상 출력 포트에 대응하는 서술자 큐(213)에 대한 식별자일 뿐이다. 필드들(2701, 2703)은 도 22에 도시한 바와 같이, 스케줄러 계층(501)에서 가상 출력 포트(521(i)) 위에 있는 스케줄러들(509)로 전파된다. 2705에서 함께 그룹을 이룬 필드들은 스케줄러 계층(2705) 내 가상 출력 포트(521(i))의 위치를 특정한다. 위치는 특정의 스케줄러(509(j))에의 입력을 특정함으로써 특정된다. 스케줄러(509(j))는 계층 내 그의 레벨(필드(2707)), 및 레벨 내 그의 위치(필드(2709))에 의해 특정되고, 필드(2711)는 스케줄러(509(j))에의 입력을 특정한다.
스케줄러 계층(501)이 동작의 상세들
스케줄러 계층(501)은 스케줄러 계층(501)의 상태를 변경하는 스케줄러 이벤트들에 응답하여 스케줄러 큐들(523)을 스케줄링한다. 이러한 이벤트가 발생할 때마다, 디큐 스케줄러(303)는 먼저 이벤트가 필요로 하는 계층(501)의 상태를 변경한 후 계층(501)의 상태의 변경들에 의해 영향을 받은 계층(501)의 부분들 내 스케줄러 큐들(523)을 스케줄링한다. 3가지 유형의 스케줄러 이벤트들이 있다.
. 스케줄러 큐 엔큐 이벤트. 스케줄러 큐 엔큐 이벤트는 스케줄러 큐의 헤드에 있는 혹은 헤드 트래픽 큐의 헤드의 TMC 서술자(216) 내에 있는 트래픽 큐(204)에 변경이 있을 때 발생한다.
. 스케줄러 큐 디큐 이벤트. 스케줄러 큐 디큐 이벤트는 스케줄러 계층(501)이 디큐를 위해 스케줄러 큐(523)을 선택하였을 때마다 일어난다.
. 가상 출력 포트 인에이블 이벤트. 가상 출력 포트 인에이블 이벤트는 DCP(202)로부터 디큐 확인응답 메시지(1921)의 수신으로 가상 출력 포트의 디큐 신뢰도가 제로에서 제로가 아닌 값으로 바뀌게 되었을 때 일어난다.
스케줄러 이벤트의 발생으로, 스케줄러들 및 가상 출력 포트들의 상태의 값들이 변경하게 되고, 이벤트에 의해 야기된 변경들이 값들에 행해졌을 때, 이벤트에 의해 영향을 받은 경로(529) 내 스케줄러들은, 경로의 트래픽 부류 스케줄러(523)부터 시작해서 레벨 0의 스케줄러로 마감하는 스케줄링을 시작한다.
스케줄러 이벤트들에 기인한 상태 변경들
스케줄러 이벤트에 의해 영향을 받은 상태에 대해 상세히 하면, 스케줄러 큐 엔큐 이벤트는 스케줄러 큐가 비어있지 않게 되는 것으로부터 비롯할 수 있으며, 따라서 새로운 트래픽 큐가 입력 스케줄러 큐의 헤드가 되게 하거나 새로운 서술자가 입력 스케줄러 큐의 헤드에 있는 트래픽 큐의 헤드가 되게 하는 스케줄러 큐 디큐 동작으로부터, 활성화된다. 후자의 경우, 새로운 서술자가 디큐될 수 없어 트래픽 큐를 부적격이 되게 하였다면, 스케줄러 큐 엔큐 이벤트에 의해, 부적격의 트래픽 큐가 스케줄러 큐로부터 제거될 것이다. 그러면 이에 따라 스케줄러 큐가 비어있게 되어 비활성으로 된다. 물론 백로그(2105)의 값은 스케줄러 큐 엔큐 이벤트의 결과로서 스케줄러 큐가 활성 혹은 비활성으로 될 때 변경될 것이다.
디큐 이벤트는 트래픽 큐를 비어있게 하며, 이에 따라 스케줄러 큐는 비활성으로 된다. 이로 인해, 서술자가 디큐되었던 스케줄러 큐에 대한 입력상태(2103)에서 트래픽 부류 스케줄러(503)의 백로그 필드(2105)를 갱신하게 될 것이다. 디큐 이벤트는 스케줄러 계층(501)을 통한 스케줄러 큐의 경로(529)를 따른 가상 출력 포트에 이은 스케줄러들 내 가상 출력 포트 인에이블 필드들(2215)를 또한 갱신한다. 마지막으로 가상 출력 포트 인에이블 이벤트는 스케줄러 계층(501)를 통한 스케줄러 큐의 경로(529)를 따른 가상 출력 포트에 이은 스케줄러들 내 가상 출력 포트 인에이블 필드들(2215)를 또한 갱신한다.
스케줄러 이벤트에 응한 스케줄링
이벤트에 의해 필요로 되는 계층(501) 내 상태의 갱신들이 행해진 후에, 스케줄링은 이벤트에 의해 영향을 받은 상태를 갖는 계층(501) 내 최하위의 레벨의 스케줄러부터 시작하여 최하위 레벨의 영향받은 스케줄러부터 레벨 0의 스케줄러를 통해 계층을 통하는 경로(529) 상의 스케줄러들에서 계속된다. 이에 따라, 스케줄러 큐 엔큐 및 디큐 이벤트들에 대해서는, 스케줄링은 이벤트에 의해 영향을 받은 트래픽 부류 스케줄러(503)부터 시작하고, 가상 출력 포트 인에이블 이벤트들에 대해서는, 스케줄링은 상태가 이벤트에 의해 영향을 받았던 가상 출력 포트에 의해 입력이 제어되는 스케줄러부터 시작한다. 경로 상의 각 스케줄러에서, 스케줄러의 입력에 의해 정의된 한 세트의 스케줄러 큐들 중에서 스케줄러 큐(523)의 선택은 다음 규칙에 따라 행해진다.
. 이벤트에 의해 영향을 받은 최하위 레벨의 스케줄러가 트래픽 부류 스케줄러(503)이면, 입력 스케줄러 큐는 필드(2105)에 지시된 바와 같이, 입력 스케줄러 큐가 백로그되지 않으면 트래픽 부류 스케줄러에 의해 선택될 수 없다.
. 스케줄러가, 가상 출력 포트에 의해 제어되는 입력 스케줄러 큐를 갖는 내부 스케줄러(509)이면, 가상 출력 포트 인에이블 상태(2215)가 입력 스케줄러 큐가 스케줄 가능한 것임을 나타내지 않는다면, 입력 스케줄러 큐는 스케줄러에 의해 선택될 수 없다.
. 스케줄러가 내부 스케줄러(509)이고 입력 스케줄러 큐가 전파된 적격 시간 필드(2211)에서 미래에 없는 값을 갖고 있다면, 스케줄 가능한 입력 스케줄러 큐들 중에서 선택은 스케줄러의 구성된 스케줄링 알고리즘(예를 들면, 엄격 우선 순위 스케줄링 알고리즘은 가장 낮은 수의 활성 스케줄러 입력을 선택한다)에 의해 좌우된다.
. 입력 스케줄러 큐들이 필드(2211)에서 미래에 있는 시간들을 갖고 있다면, 가장 가까운 적격 시간을 가진 스케줄 가능한 입력 스케줄러 큐가 선택된다.
DCP(202)에 디큐를 위해 선택된 스케줄러 큐는 레벨 0의 스케줄러에 의해 선택된 입력(2203)에 연관된 입력 상태(2205)에서 전파된 스케줄러/입력 상태(2207, 2209)에 의해 식별되고, 선택된 스케줄러 큐에 의해 취해진 경로에 대한 가상 출력 포트(521)는 입력(2203)에 연관된 입력 상태(2205)에서 전파된 가상 출력 포트 특정자(2217)에 의해 식별된다.
스케줄러 구성의 상세들: 도 23, 도 24, 도 29, 도 36, 도 37
도 23 및 도 36은 트래픽 부류 스케줄러들(503) 및 내부 스케줄러들(509) 모두를 구성하는데 사용되는 스케줄러 구성 데이터(2301)을 도시한 것이다. 어떤 종류의 트래픽 부류 스케줄러들의 구성은 도 29에 도시한, 추가 트래픽 부류 스케줄러 구성 데이터(2901)을 필요로 한다. 특정자(2301)에 포함된 데이터는 스케줄러를 위한 스케줄러 구성 특정자(425)를 구성하는데 사용된다. 전처럼, 도면들은 각 행이 구성 데이터(2301 혹은 2901)에서 필드를 나타내는 테이블들을 도시하고 있다. 필드들의 용도는 행(1006)에 특정되어 있다. 도 23은 대부분이 설명이 없어도 명백한 것으로, 필드들(2303, 2305)은 스케줄러의 레벨에서 레벨 및 위치를 특정하고, 그럼으로써 구성되는 스케줄러를 확인하게 하며, 필드들(2307 내지 2311)은 스케줄러가 이의 부모에 어떻게 연결되는 가를 정의하며, 필드들(2313-2317)은 논리적 스케줄러(1401)에 대한 스케줄러의 유형을 정의하며, 필드(2319)는 스케줄러의 입력에 대한 입력들의 수를 정의한다. 수는 스케줄러의 종류에 따라 달라진다. 도 24에 도시한 바와 같이 스케줄러 입력들 각각엔 입력 구성 데이터가 연관된다.
도 29는 트래픽 부류 스케줄러 구성 데이터(2901)를 도시한 것이다. 필드(2903)는 트래픽 부류 스케줄러(503)에 연관된 폐기 트래픽 큐에 대해 정의하는 tqid(423)이며, 그룹 스케줄러 유형 플래그(2906)는 스케줄러가 그룹 모드로 동작하는지 여부를 나타내며, 스케줄러 유형 필드(2907)는 스케줄러가 FBDRR 스케줄러인지 여부를 나타내며, 2중 정형기 플래그(2909)는 스케줄러의 입력들 모두가 2중 정형화 모드에서 동작함을 나타낸다. 유형 필드(2911)는 스케줄러에 의해 스케줄링되는 트래픽 큐들의 유형을 특정한다. 필드는 트래픽 큐들(204)이 가변길이 혹은 고정길이 패킷들을 갖고 있는지를 나타내며, 이들이 고정길이 패킷들을 갖고 있다면, 트래픽 큐 내 패킷들을 스케줄러가 세그먼테이션할 것인지 아니면 재결합할 것인지를 나타낸다. 유형 필드(2911)이 세그먼테이션 트래픽 큐를 나타낼 땐, 필드들(2913-17)은 세그먼테이션에서 사용되는 파라미터들을 특정한다.
도 24 및 도 37은 스케줄러들의 입력들을 초기화하는데 사용되는 스케줄러 입력 초기화 데이터(2401)를 도시한 것으로, 이 데이터도 스케줄러 구성 특정자(425)의 일부이다. 다시, 도면들은 각 행이 입력 초기화 데이터 내 필드를 나타내는 테이블들을 도시한 것이다. 필드들(2407, 2409)는 입력이 속하는 스케줄러를 특정하며, 필드(2411)는 특정된 스케줄러에서 초기화되는 입력의 수를 나타낸다. 나머지 필드들 중 어느 것이 사용될 것인가는 스케줄러의 유형에 따른다. 필드들(2403, 2405)은 가중치 공정 큐잉을 사용하는 스케줄러 유형들에서 바이트 서비스 간격을 특정하며, 필드(2413)은 입력이 보증 스케줄러(1413) 및 초과 스케줄러(1415)에 어떻게 연결될 것인가를 특정하기 위해 도 14에 도시한 유형의 보증-초과 선택 스케줄러들에서 사용된다.
도 30, 도 40, 도 41은 트래픽 부류 스케줄러(503)에 대한 입력 스케줄러 큐들(523)에 트래픽 큐들을 관계시키는데 사용되는 데이터(3001)를 도시한 것이다. 주어진 트래픽 큐에 대해서, 이 데이터는 트래픽 큐의 파라미터 블록(403) 내 필드(831)에 의해 참조된다. 데이터의 콘텐트들은 트래픽 부류 스케줄러에 의해 사용되는 스케줄링 알고리즘에 따른다. 3003으로 도시한 콘텐트들은 트래픽 큐가 트래픽 부류 스케줄러에 속하는 단일 입력 스케줄러 큐에 할당된 채로 있는 모든 스케줄링 알고리즘들에 사용된다. 데이터는, 알고리즘이 고정된 스케줄러 큐에 트래픽 큐를 유지하고 있음을 나타내는, 00으로 설정된 유형 플래그(3005), 및 트래픽 부류 스케줄러에 고정된 입력 스케줄러 큐의 수를 포함하는 필드(3009)로 구성된다. 데이터(3003)를 사용하는 트래픽 부류 스케줄러들의 예는 라운드 로빈 및 엄격 우선 순위 스케줄러들이다.
데이터(3011)는 2중 정형화 리키 버킷 스케줄러들에 사용되고, 이 경우 트래픽 큐는 한 쌍의 입력 스케줄러 큐들의 멤버들 간에 이동된다. 유형 필드의 값은 이러한 종류의 스케줄링을 특정하며, 필드들(3015, 3017)은 리키 버킷 스케줄링용의 파라미터들을 포함하고, 필드(3019)는 해당 쌍의 우수 입력 스케줄러 큐를 특정한다. 데이터(3001)는 FBDRR 스케줄러들에 사용된다. 유형 필드(3023)는 이것인 값 '10'을 갖고 있음을 나타내며, 필드(3025)는 트래픽 큐에 대한 최소 량 파라미터이고, 필드(3027)는 트래픽 큐에 대한 최대 량 파라미터이다. 물론, 많은 다른 트래픽 큐들(204)이 데이터(3001)를 공유할 수도 있다.
예: 프레임 기초 결손 라운드 로빈 스케줄링 알고리즘을 사용하는 스케줄러의 구성 및 동작: 도 26
도 26은 프레임 기초 결손 라운드 로빈 스케줄러(2601)로서 구성된 트래픽 부류 스케줄러(503)의 상세한 구성을 도시한 것이다. 전술한 바와 같이, FBDRR 알고리즘은 패킷 크기에 따라 스케줄링하며, 결국, TCP 프로토콜들을 대표하는 것들과 같은 가변 크기의 패킷들로 트래픽이 구성될 때 효과적으로 대역폭을 할당한다. FBDRR의 본 버전의 신규의 특징은 TCP 프로토콜들에서 많은 메시지들이 비교적 짧은 확인응답 메시지들이라는 사실을 제공하는 방법이다.
스케줄러(2601)에서, 각 입력에 대한 연결상태(2121) 및 입력상태(2103)는 앞에서 기술한 바와 같다. 스케줄러 유형 필드(2113)는 결손 라운드 로빈 스케줄링 알고리즘을 나타내는, 값 b111을 가지며, 입력들(2115)의 수는 값 4를 가지며, 이 중 3 입력들(2103(0..2))는 실제로 이들에 스케줄러 큐들(523)이 연관된다. 바람직한 실시예에서 사용되는 FBDRR 알고리즘의 구현에서, 스케줄러 큐들 중 2개, 이 경우, 입력들(2101(0), 2101(2))에 첨부된 스케줄러 큐들(2607, 2611)은 각각 현재 스케줄러 큐(2607) 및 다음 스케줄러 큐(2611)로서 번갈아 교체된다. 현재 스케줄러 큐가 비어있을 땐, 이것은 다음 스케줄러 큐가 되고 다음 스케줄러 큐는 현재 스케줄러 큐가 된다. 제 3 스케줄러 큐는 고 우선 순위 큐(2609)이다. 알고리즘에 따른 상태(2119)는 3 스케줄러 큐들 각각에 대한 상태 항목을 포함하고, 항목(2601)은 큐들(2607, 2611) 중 어느 것이 현재 스케줄러 큐인지를 나타내고, 항목(2605)은 어느 것이 다음 스케줄러 큐인지를 나타내고, 항목(2603)은 어느 스케줄러 큐가 고 우선 순위 큐(2609)인지를 나타낸다. FBDRR 알고리즘의 설명에서 기재된 바와 같이, 트래픽 큐를 어느 스케줄러 큐에 넣을 것인가는 트래픽 큐의 최대 량 및 최소 량 파라미터들 및 이의 결손 카운터(2615) 및 BytesServedThisRound(BSTR) 카운터(2616)에 의해 결정된다. 파라미터 값들은 도 2613에 도시한 바와 같이, 트래픽 큐의 파라미터 블록 내 필드(831)가 가리키는 입력 데이터(3003)(도 30)에 포함된다. 카운터 값은 필드(865)에 저장된다.
최대 량(2615), 최소 량(2613), 결손 카운터(2615) 및 BSTR 카운터(2616)이 값들이 어느 스케줄러 큐에 트래픽 큐를 관계시키는 방법은 트래픽 큐들 각각의 맨 밑에 표현식으로 나타내었다. 알고리즘 설명에서 설명한 바와 같이, 서술자가 현재 스케줄러 큐(2607)나 고 우선 순위 스케줄러 큐(2609)의 헤드의 트래픽 큐(204)로부터 제거되었을 때, 트래픽 큐의 결손 카운터(2615)는 서술자의 패킷의 길이만큼 감분되고, 이의 BSTR 카운터(2616)은 그 량만큼 증분된다. 트래픽 큐가 고 우선 순위 스케줄러 큐(2609)에서 현재 스케줄러 큐(2607)로 이동되었을 때, BSTR(2616)은 0으로 설정되고, 트래픽 큐가 고 우선 순위 스케줄러 큐(2609)나 현재 스케줄러 큐(2607)에서 다음 스케줄러 큐(2611)로 이동되었을 때, 트래픽 큐의 결손 카운터(2615)는 최대 량에 결손 카운터를 합한 것으로 설정되고 이의 BSTR 카운터(2616)은 0으로 설정된다. 현재 스케줄러 큐(2607) 혹은 고 우선 순위 스케줄러 큐(2609)의 헤드에 있는 트래픽 큐가 부적격이거나 부적격으로 되었을 때, 이것은 스케줄러 큐로부터 제거되고, 트래픽 큐가 적격으로 되면, 다음 스케줄러 큐(2611)에 넣어진다.
TMC(203)의 물리적 구현: 도 15-20
물리적 구현의 개요: 도 15
도 15는 시스템(201)의 물리적 구현(1501)의 블록도이다. 시스템(201)의 설명에서 나타낸 바와 같이, DCP(202) 및 TMC(203)의 두 주요 성분들이 있다. 여기 보다 상세히 도시된 바와 같이, TMC(203)는 스케줄러 계층(501)이 구성되는 스케줄러 메모리(1515) 및 나머지 TMC 메모리(307)를 구현하는 외부 메모리들(1509, 1511, 1513)을 포함하는 TMC 메모리(307)의 부분과 함께, 엔큐 프로세서(301), 디큐 스케줄러(303), 및 트래픽 큐 프로세서(305)가 구현되는 TMC IC(1503)를 포함한다. 외부 메모리(1509)는 트래픽 큐 파라미터 블록들(403) 및 트래픽 큐들용의 관계된 데이터 구조들을 저장하는 ZBT SRAM 메모리이고, 외부 메모리(1513)는 서술자들을 트래픽 큐의 서술자 큐들(419)에 저장하는 DDRSDRAM 메모리이며, 외부 메모리(1511)는 TMC 서술자들(216)을 트래픽 큐들(204)에 링크시키고 트래픽 큐들을 스케줄러 큐들에 링크시키는 데 사용되는 데이터를 저장하는 ZBT SRAM 메모리이다. 후술하는 바와 같이, TMC IC(1503)는 외부 메모리의 량들을 가변시키도록 구성될 수도 있다.
TMC IC(1503)는 엔큐 데이터 메시지들(601)를 받아 TMI 버스(1507)를 통해 DCP(202)에 디큐 데이터 메시지들(701)를 제공한다. DCP(202) 및 TMC(203) 모두는 TMC 메모리(307)에 기입하기 위해 PCI 버스(1505)를 사용하여 구성될 수 있다. 내부 및 외부 TMC 메모리(307) 모두는 PCI 버스(1505)를 통해 독출 및 기입될 수 있다. PCI 버스(1505)는 표준 PCI 버스 프로토콜을 채용하며, TMI 버스(1507)에 사용되는 프로토콜에 대해선 다음에 상세히 설명하도록 하겠다.
TMC IC(1503)의 상세들: 도 16
도 16은 TMC IC(1503)의 내부 상세를 도시한 것이다. 도시하지 않았으나 TMC IC(1503) 내부에 메모리가 또한 포함된다. PCI 버스(1505)에 대한 인터페이스(1601), TMI 버스(1507)에 대한 인터페이스(1603), 파라미터 메모리(1509)용 제어기(1605), 링크 메모리(1511)용 제어기(1607), 및 서술자 메모리(1513)용 제어기(1609)가 있다. TMC IC(1503)에는 또한 디큐 스케줄러(303), 엔큐 프로세서(301), 및 트래픽 큐 프로세서(305)가 있다. 구성요소들을 연결하는 화살표들은 이들 간에 데이터의 흐름을 나타낸다. 이에 따라, TMI 버스 인터페이스(1603)이 엔큐 데이터 메시지(601)를 수신하였을 때, 이 인터페이스는 엔큐 데이터 메시지(601)를 엔큐 프로세서(301)에 출력하며, 엔크 프로세서는 TMC 서술자(216)의 나머지 콘텐트들, 저장된 cp 서술자(214)에의 링크, 및 트래픽 큐 프로세서(305)에 대한 트래픽 큐의 특정을 서술자 메모리(1513)에 저장하기 위해 서술자 메모리 제어기(1609)에 적어도 서술자(214)를 제공하며, 트래픽 큐 프로세서는 서술자를 특정된 트래픽 큐 혹은 폐기 트래픽 큐에 링크시키기 위해 그 정보 및 링크 메모리 제어기 및 링크 메모리(1511)를 사용한다. 이것이 행해지고 있는 동안, 디큐 스케줄러(303)는 TMC IC(1503)의 메모리에 포함된 스케줄러들을 실행하며 그럼으로써 TMI 버스 인터페이스(1603)을 통해 다음에 출력될 헤드 서술자를 갖는 트래픽 큐를 선택한다. 디큐 스케줄러(303)는 선택된 트래픽 큐의 헤드 서술자에의 링크를 얻기(retrieve) 위해서 트래픽 큐 프로세서(305)를 사용하고, 이를 디큐 데이터 메시지(701)를 작성하는데 필요한 추가 정보와 더불어 TMI 버스 인터페이스(1603)에 제공하며, 이 인터페이스는 링크를 제어기(1513)에 제공하고 메모리(1513)로부터 서술자를 받아 서술자를 포함하는 디큐 데이터 메시지(701)를 TMI 버스 인터페이스(1603)을 통해 출력한다.
TMC IC(1503)에 의한 메모리 구성들: 도 17 및 도 18
전술한 바와 같이, TMC IC(1503)은 서로 다른 량들을 가진 외부 메모리로 구성될 수 있다. 도 17은 최대 구성을 도시한 것이다. 서술자 메모리(1513)은 4개까지의 128Mb(x 16)과 하나의 128MB(x8) DDRSDRAM 메모리 IC들(1703)을 포함할 수 있고, 링크 메모리(1511)는 5개까지의 1Mb(x18) ZBT SRAM 메모리 IC들(1705)을 포함할 수 있고 서술자 파라미터 메모리(1511)는 4개까지의 512K(x36) ZBT SRAM 메모리 IC들을 포함할 수 있다. 이와 같이 구성되었을 때, TMC IC(1503)은 OC 48 라인 레이트들을 지원할 것이며 2M 32-비트 서술자들, 256K 트래픽 큐들, 및 8K 스케줄러 큐들을 취급할 수 있을 것이다. 라인 레이트들이 낮거나 서술자들이 소수이거나 소수의 트래픽 큐들 혹은 소수의 스케줄러 큐들이 필요한 경우, 외부 메모리의 량은 감소될 수도 있다. PCI 버스(150)를 통해 설정가능한 TMC IC(1503) 내 구성 레지스터들은 외부 메모리들의 최대 크기 및 외부 메모리들 내의 분할들을 정의한다. 도 18은 OC 48 라인 레이트들에 대한 전형적인 구성 가능성들 및 이들 구성에 필요한 각 종류의 외부 메모리의 량들을 도시한 테이블(1801)이다.
TMI 버스(1507)의 상세들: 도 19
도 19는 TMI 버스(1507)의 개략(1901)을 도시한 것으로, 테이블(1925)는 버스의 신호명들의 명칭들과, 신호가 TMC(1503) 입장에서 입력신호인지 출력신호인지 여부와, 신호의 설명을 리스트한 테이블이다.
클럭신호들
DQCLK/DQCLKX(1905) 쌍은 TMICLK 소스(1903)으로부터 TMC IC(1503)에 의해 나온다. DQCLK는 DQCLK가 반전된 형태이다. DQCLKX는 DQCLK에 관하여 위상이 정확히 180도 벗어나 있다. TMC IC(1503)의 모든 출력들은 DQCLK 및 DQCLKX 모두의 상승 에지들에 동기되고, 이들 출력들은 DQD[23:0], NQRDY, DQARDY, 및 DQPAR를 포함한다. NQCLK/NQCLKX 쌍(1907)는 수신된 DQCLK/DQCLKX 쌍으로부터 DCP에 의해 나온다. NQCLKX는 NQCLK에 관하여 위상이 정확히 180 벗어나 있다. DCP(202)의 모든 출력들은 NQCLK 및 NQCLKX 모두의 상승 에지들에 동기되며, 이들 출력들은 NQD[23:0], DQRDY, DQACK[1:0], 및 NQPAR을 포함한다. TMICLK 신호에 대한 최대 클럭 주파수는 200MHz이며, DQCLK/DQCKX 및 NQCLK/NQCLKX 쌍들에서 각 클럭에 대해 100MHz의 최대 주파수를 내포한다. TMICLK 주파수 및 NQD/DQD 버스폭들은 최대 C-5 DCP 포트 대역폭(대략 5Gbps) 및 40바이트들의 최소 평균 패킷 크기를 취하는 32 바이트 서술자들을 지원하도록 선택된다. TMICLK 주파수는 최대 주파수가 133MHz인 TMC 시스템 클럭, SCLK의 주파수의 2배 이하가 되게 제약된다.
패리티 신호들
NQPAR 신호(1909)는 TMC IC(1503)에 의해 수신된 DCP(202)의 모든 출력들(NQD[23:0], DQRDY, 및 DQACK[1:0])을 커버하는 기수 패리티 신호이다. DQPAR(1911) 신호는 DCP(202)에 의해 수신된 TMC IC(1503)의 모든 출력들(DQD[23:0], NQRDY, 및 DQARDY)를 포함하는)를 커버하는 기수 패리티 신호이다.
메시지 버스들
TMI 버스(1507)에는, 엔큐 데이터 메시지들을 전하는 NQD[23:0](1913), 디큐 데이터 메시지들을 전하는 DQD[23:0], 및 디큐 데이터 메시지들의 확인응답들을 전하는 DQACK[1:0](1913)인, 3개의 메시지 버스들이 있다. NQD[23:0](1913)은 24l-비트 워드들의 엔큐 데이터 메시지들을 전한다. 이들 메시지들의 포맷들을 도 6, 도 31 및 도 13에 상세히 도시하였다. NQD[23:0] 버스 핀들은 버스가 아이들 상태에 있을 때 모두가 하이 이다. 엔큐 메시지의 시작은 메시지의 유형 필드(611) 내 아이들이 아닌 값(메시지의 첫 번째 24-비트 워드의 비트들 2:0)에 의해 확인된다. DQD[23:0]는 디큐 데이터 메시지들의 24비트 워드들을 전한다. 메시지들의 포맷들을 도 7, 도 32, 도 33에 상세히 도시하였으며 엔큐 데이터 메시지들에서처럼, 디큐 뎅터 메시지의 시작은 메시지의 유형 필드(703)의 아이들이 아닌 값(메시지의 첫 번째 24비트 워드의 비트들 2:0)에 의해 확인된다. 엔큐 혹은 디큐 데이터 메시지의 크기는 서술자 크기에 따라 가변된다. 서술자 크기는 어떤 엔큐 메시지들이든 DCP(202)에서 TMC IC(1503)으로 보내지기 전에 인터페이스의 양측에 정적으로 구성된다.
DQACK[1:0]은 DCP(202)에서 TMC IC(1503)로 디큐 확인응답 메시지들을 전한다. 확인응답 메시지는 서술자가 디큐들(247) 내 큐(213)로부터 디큐될 때마다 보내진다. 각각의 메시지는 디큐된 서술자가 TMC IC(1503)로부터 왔던 디큐 데이터 메시지(701)의 필드(70)에 특정된 가상 출력 포트 식별자를 포함한다. 메시지는 5개의 2비트 워드들로 구성되고, 이의 포맷은 도 28에 2801로 도시되었다.
TMI 버스(1507) 상의 흐름 제어: 도 20, 도 38, 도 39
메시지 버스들(NQD(1913), DQD(1917), 및 DQACK 1:0)을 통한 메시지들의 흐름은 각각 신호들(NQRDY(1915), DQRDY(1919), 및 DOARDY(1923)에 의해 제어된다. NQRDY 신호(1915)는 엔큐 데이터 버스(NQD[23:0])로 엔큐 데이터 메시지들의 흐름이 가능하게 되게 표명되어야 한다. 엔큐 데이터 메시지가 엔큐 데이터 버스 상에서 일단 시작되었으면, 이것은 완료되어야 한다. 이 신호는 DCP(202)로부터 오는 엔큐 데이터 메시지들에 보조를 맞추기 위해 TMC IC(1503)에 의해 사용된다. 극단의 경우에, TMC IC(1503)는 이 신호를 사용해, TMC IC(1503)에 서술자 저장 자원들이 고갈되었을 때, 들어오는 엔큐 데이터 메시지들을 완전히 정지시킨다. TMC IC(1503)에 의한 NQRDY(195)의 해제시킨 후에, DCP(202)는 NQCLK 및 NQCLKX 모드의 12 상승 에지들 내에서 엔큐 데이터 메시지들을 발생하는 것을 정지시켜야 한다. 이것을 도 20에 타이밍도(2001)에 도시하였다. NQRDY(1915)는 2003에서 해제되고, DCP(202)는 2005에 의해 지시된 시간까지 엔큐 데이터 메시지들의 발생을 정지시켜 야 한다.
NQRDY 신호는 DQCLK/DQCLKX 클럭 쌍에 동기됨에 유의한다. NQCLK/NQCLKX 쌍의 상승에지들은 NQRDY가 비활성으로 샘플되는 DQCLK/DQCLKX 쌍의 첫 번째 상승에지 후 첫 번째 NQCLK/NQCLKX 상승에지부터 시작하여 카운트된다. NQCLK/NQCLKX 쌍이 DQCLK/DQCLKX 쌍에 관하여 동기된 것으로 처리되면, 클럭들의 비동기 본질에 기인하여, 필요한 12 중에서 NQCLK/NQCLKX의 한 상승에지가 손실된다.
DQRDY 신호(1919)는 디큐 데이터 메시지들의 흐름 제어를 관리한다. DQRDY는 디큐 데이터 버스(DQD[23:0])로 디큐 메시지들의 흐름이 가능하게 되게 표특정킨다. 일단 디큐 데이터 메시지가 디큐 데이터 버스에서 시작되었으면, 완료되어야 한다. 이 신호는 TMC IC(1503)에서 오는 디큐 데이터 메시지들에 보조를 맞추기 위해 DCP(202)에 의해 사용된다. TMC IC(1503)은 도 20의 타이밍도(2007)에 도시한 바와 같이, DCP에의해 DQRDY의 해제 후 양 DQCLK 및 DQCLKZ의 6 상승 에지들의 카운트 내에서 디큐 데이터 메시지들을 발생하는 것을 정지시켜야 하며, 여기서 DQRDY(1919)의 해제는 2009에서 발생하고 2011는 어떠한 다른 샐은 디큐 데이터 메시지들도 발생되지 않는 지점에 표시를 한다.
DQRDY 신호(1919)는 NQCLK/NQCLKX 클럭 쌍에 동기된다. DQCLK/DQCLKX 쌍의 상승에지들은 DQRDY가 비활성으로 샘플되는 NQCLK/NQCLKZ 쌍의 첫 번째 상승에지 후 첫 번째 DQCLK/DQCLKZ 상승에지부터 시작하여 카운트된다. DQCLK/DQCLKZ 쌍이 NQCLK/NQCLKX 쌍에 관하여 동기인 것으로서 취급되면, 클럭들의 비동기 본질에 기인하여, 필요한 6개 중에서 DQCLK/DQCLKX의 한 상승 에지가 손실된다.
DQARDY(1923)은 디큐 확인응답 버스 DQACK(1921)로 디큐 확인응답 메시지들의 흐름이 가능하게 되도록 표명된다. 일단 디큐 확인응답 메시지가 디큐 확인응답 버스에서 시작되었으면, 이것은 완료되어야 한다. DQARDY(1923)은 DCP(202)에서 오는 디큐 확인응답 메시지에 보조를 맞추기 위해서 TMC IC(1503)에 의해 사용된다. DCP는 도 20의 타이밍도(2013)에 도시한 바와 같이 TMC IC(1503)에 의한 DQARDY의 해제 후에, NQCLK 및 NQCLKZ 모드의 12 상승에지들의 카운트 내에서 디큐 확인응답 메시지들의 발생을 정지시켜야 하고, 여기서 DQARDY(1919)의 해제는 2015에서 발생하고 2017은 어떠한 다른 새로운 디큐 확인응답 메시지들도 발생되지 않는 지점에 표시를 한다.
DQARDY 신호(1023)는 DQCLK/DQCLKX 클럭 쌍에 동기됨에 유의한다. NQCLK/NQCLKX 쌍의 상승에지들은 DQARDY가 비활성으로 샘플되는 DQCLK/DQCLKX 쌍의 첫 번째 상승에지 후 첫 번째 NQCLK/NQCLKX 상승에지부터 시작하여 카운트된다. NQCLK/NQCLKX 쌍이 DQCLK/DQCLKX 쌍에 관하여 동기인 것으로서 취급되면, 클럭들의 비동기 본질에 기인하여, 필요한 12개 중에서 NQCLK/NQCLKX의 한 상승 에지가 손실된다.
결론
전술한 상세한 설명은 본 특허출원의 발명들이 구현되는 스트림 데이터 처리 환경을 구성하여 사용하는 방법을 관련 기술들에 숙련된 자들에 기술하였으며 또한 현재 발명자들이 알고 있는 발명들을 구현하는 최상의 모드를 개시하였다. 그러나, 여기 개시된 것 이외 많은 스트림 데이터 처리 환경에서 발명들이 실시될 수 있다는 것과 여기 개시된 환경에서도 발명들의 많은 대안 실시예들이 가능하다는 것이 관련기술들에 숙련된 자들에겐 명백할 것이다.
예로서, 여기 기술된 발명적 기술들은 패킷 처리가 한 집적회로에서 행해지고 트래픽 관리가 다른 회로에서 행해지는 환경에서 특히 유용하지만, 그러나 이들은 이러한 환경으로 한정되는 것은 아니며 트래픽 관리 및 패킷 처리를 분리시키고자 하는 경우에 적용될 수 있고, 따라서 집적회로들로 구현되는 것이 아니나 트래픽 관리 및/또는 패킷 처리 기능들을 수행하는 장치에 사용될 수 있다. 또한, 서술자들의 형태 및 콘텐트는 트래픽 관리 및 패킷 처리 기능들과 같이 모든 구현에 따라 다를 것이다. 또한, 바람직한 실시예에서 패킷들에 대한 서술자들에 대해 수행되는 폐기 및 스케줄링 동작들은 패킷들 자체를 사용하여 수행될 수도 있다. 환경의 트래픽 관리 부분과 패킷 처리 부분 간 인터페이스의 상세 또한 구현마다 달라질 수도 있다.
전술한 모든 이유로, 상세한 설명은 모든 면에서 예시적인 것으로 간주되어야 할 것이며 여기 개시된 발명의 범위는 상세한 설명으로부터가 아니라 특허법이 허용하는 전체 범위로 해석되는 청구범위로부터 결정되어야 할 것이다.

Claims (49)

  1. 서술자들(descriptors)에 의해 제1 트래픽 처리 스트림 장치에서 표현되는 패킷들로 구성된 트래픽 스트림들에 대해 제 1 복수의 스트림 처리 기능들을 수행하는 상기 제 1 트래픽 스트림 처리 디바이스와, 상기 서술자들을 사용하여 상기 트래픽 스트림 처리 디바이스를 위해 제 2 복수의 트래픽 관리 기능들을 수행하는 제 2 트래픽 관리 디바이스 간에 정보를 전송하는 인터페이스에 있어서,
    서술자와 적어도 제 1 선택자를 상기 제 1 트래픽 스트림 처리 디바이스에서 상기 제 2 트래픽 관리 디바이스로 전송하는 제 1 트래픽 스트림 처리 디바이스와 상기 제 2 트래픽 관리 디바이스 간의 제 1 데이터 경로로서, 상기 제 1 선택자는 상기 제 2 복수의 트래픽 관리 기능들 중 제 1 서브세트를 선택하는, 상기 제 1 데이터 경로; 및
    상기 제 1 서브세트에서의 기능을 수행한 후에 상기 서술자와 적어도 제 2 선택자를 상기 제 2 트래픽 관리 디바이스에서 상기 제 1 트래픽 스트림 처리 디바이스로 전송하는 상기 제 1 트래픽 스트림 처리 디바이스와 상기 제 2 트래픽 관리 디바이스 간의 제 2 데이터 경로로서, 상기 제 2 선택자는 상기 제 1 복수의 스트림 처리 기능들 중 제 2 서브세트를 선택하는, 상기 제 2 데이터 경로를 포함하는, 인터페이스.
  2. 제 1 항에 있어서,
    상기 제 1 트래픽 스트림 처리 디바이스가 상기 서술자에 의해 표현된 상기 패킷에 대해 상기 제 2 서브세트에서의 기능을 수행할 수 있을 때, 상기 제 1 트래픽 스트림 처리 디바이스에서 상기 제 2 트래픽 관리 디바이스로 상기 제 2 선택자를 전송하는 상기 제 1 트래픽 스트림 처리 디바이스와 상기 제 2 트래픽 관리 디바이스 간의 제 3 데이터 경로를 더 포함하고, 상기 제 2 트래릭 관리 디바이스는 상기 제 2 트래픽 관리 디바이스에서 상기 제 1 트래픽 스트림 처리 디바이스로 상기 기능이 수행되는 패킷들을 표현하는 서술자들의 흐름을 제어하기 위해 상기 제 2 선택자를 사용하는, 인터페이스.
  3. 제 2 항에 있어서,
    상기 제 1 트래픽 스트림 처리 디바이스는 상기 서술자를 상기 스트림 처리 기능들의 상기 제 2 서브세트에 연관시키기 위해 제 1 큐를 사용하며,
    상기 제 2 트래픽 관리 디바이스는 상기 서술자를 상기 트래픽 관리 기능들의 상기 제 1 서브세트에 연관시키기 위해 제 2 큐를 사용하며,
    상기 제 1 선택자는 상기 제 2 큐를 특정하고 상기 제 2 선택자는 상기 제 1 큐를 특정하며,
    상기 제 2 선택자는 서술자가 상기 제 1 큐의 헤드에서 제거될 때 상기 제 2 트래픽 관리 디바이스로 전송되는, 인터페이스.
  4. 제 1 항에 있어서,
    상기 제 2 트래픽 관리 디바이스가 상기 제 1 데이터 경로를 통해 상기 제 1 트래픽 스트림 처리 디바이스에서 상기 제 2 트래픽 관리 디바이스로 전송을 받아들일 수 있는지 여부의 표시를 전송하는 상기 제 1 트래픽 스트림 처리 디바이스와 상기 제 2 트래픽 관리 디바이스 간의 제 4 데이터 경로;
    상기 제 1 트래픽 스트림 처리 디바이스가 상기 제 2 데이터 경로를 통해 상기 제 2 트래픽 관리 디바이스에서 상기 제 1 트래픽 스트림 처리 디바이스로 전송을 받아들일 수 있는지 여부의 표시를 전송하는 상기 제 1 트래픽 스트림 처리 디바이스와 상기 제 2 트래픽 관리 디바이스 간의 제 5 데이터 경로; 및
    상기 제 2 트래픽 관리 디바이스가 상기 제 3 데이터 경로를 통해 상기 제 2 트래픽 관리 디바이스에서 상기 제 1 트래픽 스트림 처리 디바이스로 전송을 받아들일 수 있는지 여부의 표시를 전송하는, 상기 제 1 트래픽 스트림 처리 디바이스와 상기 제 2 트래픽 관리 디바이스 간의 제 6 데이터 경로를 더 포함하는, 인터페이스.
  5. 패킷들로 구성되고 트래픽 스트림 프로세서에 의해 처리되는 트래픽 스트림들에 대해 트래픽 관리 동작들을 수행하는 장치에 있어서,
    복수의 트래픽 관리 기능들;
    상기 트래픽 스트림 프로세서로부터 트래픽 관리 기능 특정자(specifier)와 연관된 서술자를 수신하는 입력 디바이스로서, 상기 서술자는 상기 트래픽 스트림 프로세서에 의해 처리되는 패킷을 표현하며, 상기 서술자와 연관된 상기 트래픽 관리 기능 특정자는 상기 트래픽 관리 기능들의 서브세트를 특정하는, 상기 입력 디바이스;
    상기 서술자에 대해 상기 연관된 트래픽 관리 기능 특정자에 의해 특정된 상기 서브세트에서의 적어도 하나의 트래픽 관리 기능을 실행하며 상기 트래픽 스트림 프로세서 내 기능을 특정하는 트래픽 스트림 프로세서 기능 특정자에 상기 서술자를 연관시키는 처리 구성부; 및
    상기 서술자 및 상기 트래픽 스트림 프로세서 기능 특정자를 상기 트래픽 스트림 프로세서에 제공하는 출력 장치를 포함하는, 트래픽 관리 동작 수행 장치.
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 패킷들로 구성된 트래픽 스트림들에 대한 트래픽 관리 동작들을 수행하는 장치에 있어서,
    복수의 서술자들의 세트들로서, 서술자는 트래픽 스트림 내 패킷을 표현하는, 상기 복수의 서술자들의 세트들;
    복수의 트래픽 관리 기능들로서, 서술자들의 주어진 세트는 상기 복수의 트래픽 관리 기능들의 서브세트에 연관되는, 상기 복수의 트래픽 관리 기능들;
    상기 주어진 세트에 속하는 서술자에 대해 서술자들의 세트와 연관된 상기 서브세트에서의 적어도 하나의 트래픽 관리 기능을 실행하는 처리 구성부를 포함하고,
    서술자는 상기 트래픽 스트림들을 처리하는 트래픽 스트림 프로세서로부터 수신되고 상기 서술자들의 세트에 연관된 트래픽 관리 기능이 상기 서술자에 대해 수행된 후에 상기 트래픽 스트림 프로세서에 제공되며, 상기 트래픽 스트림 프로세서로부터 수신된 상기 서술자는 상기 서술자들의 세트들 중 하나를 특정하는 세트 특정자를 포함하며,
    상기 트래픽 관리 기능들은, 서술자의 세트 특정자에 의해 특정된 세트에 넣어지는 대신 폐기될 패킷들을 표현하는 수신된 서술자들을 선택하는 폐기 기능들의 세트를 포함하며, 상기 선택된 서술자들은 상기 서술자들에 의해 표현된 상기 패킷들이 폐기될 것이라는 표시가 상기 트래픽 스트림 프로세서에 제공되는, 트래픽 관리 동작 수행 장치.
  11. 제 10 항에 있어서,
    상기 장치는 상기 세트 내 상기 서술자들에 의해 표현된 상기 패킷들이 속하는 트래픽 스트림의 상태의 모델을 더 포함하고,
    상기 세트내 상기 폐기 기능들은 상기 세트로부터의 패킷이 폐기될 것인지 여부를 결정하기 위해 상기 모델을 채용하는, 트래픽 관리 동작 수행 장치.
  12. 제 11 항에 있어서,
    상기 모델은 상기 트래픽 스트림 프로세서 내 버퍼의 상태를 모델링하고, 상기 버퍼는 상기 스트림에 속하는 패킷들로부터의 페이로드들을 저장하는데 사용되는, 트래픽 관리 동작 수행 장치.
  13. 제 11 항에 있어서,
    상기 모델은 상기 스트림의 대역폭 사용을 모델링하는, 트래픽 관리 동작 수행 장치.
  14. 삭제
  15. 패킷들로 구성된 트래픽 스트림들에 대한 트래픽 관리 동작들을 수행하는 장치에 있어서,
    복수의 서술자들의 세트들로서, 서술자는 트래픽 스트림 내 패킷을 표현하는, 상기 복수의 서술자들의 세트들;
    복수의 트래픽 관리 기능들로서, 서술자들의 주어진 세트는 상기 복수의 트래픽 관리 기능들의 서브세트에 연관되는, 상기 복수의 트래픽 관리 기능들;
    상기 주어진 세트에 속하는 서술자에 대해 서술자들의 세트와 연관된 상기 서브세트에서의 적어도 하나의 트래픽 관리 기능을 실행하는 처리 구성부를 포함하고,
    서술자가 상기 트래픽 스트림들을 처리하는 트래픽 스트림 프로세서로부터 수신되고, 상기 서술자들의 세트에 연관된 트래픽 관리 기능이 상기 서술자에 대해 수행된 후에 상기 트래픽 스트림 프로세서에 제공되며,
    상기 트래픽 관리 기능들은 수신된 서술자가 언제 상기 트래픽 스트림 프로세서에 제공될 것인가를 결정하는 스케줄링 기능들의 세트를 포함하며,
    상기 스케줄링 기능들은 상기 서술자가 상기 트래픽 스트림 프로세서에 제공될 때 상기 서술자와 함께 포함되는 상기 트래픽 스트림 프로세서 내 서술자들의 세트에 대한 특정자를 더 결정하는, 트래픽 관리 동작 수행 장치.
  16. 패킷들로 구성된 트래픽 스트림들에 대한 트래픽 관리 동작들을 수행하는 장치에 있어서,
    복수의 서술자들의 세트들로서, 서술자는 트래픽 스트림 내 패킷을 표현하는, 상기 복수의 서술자들의 세트들;
    복수의 트래픽 관리 기능들로서, 서술자들의 주어진 세트는 상기 복수의 트래픽 관리 기능들의 서브세트에 연관되는, 상기 복수의 트래픽 관리 기능들;
    상기 주어진 세트에 속하는 서술자에 대해 서술자들의 세트와 연관된 상기 서브세트에서의 적어도 하나의 트래픽 관리 기능을 실행하는 처리 구성부를 포함하고,
    서술자가 상기 트래픽 스트림들을 처리하는 트래픽 스트림 프로세서로부터 수신되고, 상기 서술자들의 세트에 연관된 트래픽 관리 기능이 상기 서술자에 대해 수행된 후에 상기 트래픽 스트림 프로세서에 제공되며,
    상기 트래픽 관리 기능들은 서술자의 세트 특정자에 의해 특정된 세트에 넣어지는 대신 폐기될 패킷들을 나타내는 수신된 서술자들을 선택하는 폐기 기능들의 세트, 및 언제 서술자가 상기 트래픽 스트림 프로세서에 제공될 것인가를 결정하고 상기 트래픽 스트림 프로세서 내 서술자들의 세트에 대한 특정자를 제공될 상기 서술자에 부가하는 스케줄링 기능들의 한 세트를 포함하고;
    상기 서술자들의 세트들은 폐기될 패킷들을 표현하는 서술자들을 포함하는 폐기 서술자들의 세트를 포함하고,
    상기 폐기 서술자들의 세트로부터 제공된 서술자에 부가된 상기 부가 특정자는 폐기될 패킷들을 표현하는 상기 트래픽 스트림 프로세서 내 서술자들의 세트를 특정하는, 트래픽 관리 동작 수행 장치.
  17. 패킷들로 구성된 트래픽 스트림들에 대한 트래픽 관리 동작들을 수행하는 장치에 있어서,
    복수의 서술자들의 세트들로서, 서술자는 트래픽 스트림 내 패킷을 표현하는, 상기 복수의 서술자들의 세트들;
    복수의 트래픽 관리 기능들로서, 서술자들의 주어진 세트는 상기 복수의 트래픽 관리 기능들의 서브세트에 연관되는, 상기 복수의 트래픽 관리 기능들;
    상기 주어진 세트에 속하는 서술자에 대해 서술자들의 세트와 연관된 상기 서브세트에서의 적어도 하나의 트래픽 관리 기능을 실행하는 처리 구성부를 포함하고,
    서술자가 상기 트래픽 스트림들을 처리하는 트래픽 스트림 프로세서로부터 수신되고, 상기 서술자들의 세트에 연관된 트래픽 관리 기능이 상기 서술자에 대해 수행된 후에 상기 트래픽 스트림 프로세서에 제공되며,
    상기 장치는 상기 서술자에 의해 표현된 상기 패킷에 적어도 부분적으로 포함된 메시지가 상기 트래픽 스트림 프로세서에 완전히 수신되기 전에 상기 트래픽 스트림 프로세서로부터 상기 서술자를 수신하는, 트래픽 관리 동작 수행 장치.
  18. 제 17 항에 있어서,
    상기 트래픽 관리 기능들은 언제 서술자가 상기 트래픽 스트림 프로세서에 제공될 것인가를 결정하는 스케줄링 기능들의 세트를 포함하고;
    상기 트래픽 스트림 프로세서는 상기 메시지가 상기 트래픽 스트림 프로세서에 완전히 수신되었을 때 상기 장치에 통지를 제공하고;
    상기 메시지가 상기 트래픽 스트림 프로세서에 완전히 수신되기 전에 상기 서술자가 상기 트래픽 스트림 프로세서로부터 수신되었을 때, 상기 처리 구성부는 상기 통지가 또한 수신되었을 때까지 상기 서술자에 대해 스케줄링 기능을 실행하지 않는, 트래픽 관리 동작 수행 장치.
  19. 패킷들로 구성된 트래픽 스트림들에 대한 트래픽 관리 동작들을 수행하는 장치에 있어서,
    복수의 서술자들의 세트들로서, 서술자는 트래픽 스트림 내 패킷을 표현하는, 상기 복수의 서술자들의 세트들;
    복수의 트래픽 관리 기능들로서, 서술자들의 주어진 세트는 상기 복수의 트래픽 관리 기능들의 서브세트에 연관되는, 상기 복수의 트래픽 관리 기능들;
    상기 주어진 세트에 속하는 서술자에 대해 서술자들의 세트와 연관된 상기 서브세트에서의 적어도 하나의 트래픽 관리 기능을 실행하는 처리 구성부를 포함하고,
    서술자가 상기 트래픽 스트림들을 처리하는 트래픽 스트림 프로세서로부터 수신되고, 상기 서술자들의 세트에 연관된 트래픽 관리 기능이 상기 서술자에 대해 수행된 후에 상기 트래픽 스트림 프로세서에 제공되며,
    상기 트래픽 관리 기능들은 상기 패킷에 대한 상기 서술자로부터 패킷의 부분들을 표현하는 서술자들의 시퀀스를 생성하는 세그먼팅 기능(segmenting function)을 포함하는, 트래픽 관리 동작 수행 장치.
  20. 패킷들로 구성된 트래픽 스트림들에 대한 트래픽 관리 동작들을 수행하는 장치에 있어서,
    복수의 서술자들의 세트들로서, 서술자는 트래픽 스트림 내 패킷을 표현하는, 상기 복수의 서술자들의 세트들;
    복수의 트래픽 관리 기능들로서, 서술자들의 주어진 세트는 상기 복수의 트래픽 관리 기능들의 서브세트에 연관되는, 상기 복수의 트래픽 관리 기능들;
    상기 주어진 세트에 속하는 서술자에 대해 서술자들의 세트와 연관된 상기 서브세트에서의 적어도 하나의 트래픽 관리 기능을 실행하는 처리 구성부를 포함하고,
    서술자가 상기 트래픽 스트림들을 처리하는 트래픽 스트림 프로세서로부터 수신되고, 상기 서술자들의 세트에 연관된 트래픽 관리 기능이 상기 서술자에 대해 수행된 후에 상기 트래픽 스트림 프로세서에 제공되며,
    상기 트래픽 관리 기능들은 상기 트래픽 스트림 프로세서에 보다 큰 패킷으로 재결합될 패킷들을 표현하는 서술자들의 중단 없는 시퀀스를 제공하는 재결합(reassembly) 기능을 포함하는, 트래픽 관리 동작 수행 장치.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 패킷들로 구성되고 트래픽 스트림 프로세서에 의해 처리되는 트래픽 스트림들에 대해 트래픽 관리 동작들을 수행하는 장치에 있어서,
    멀티캐스트 기능들, 폐기 기능들, 및 스케줄링 기능들을 포함하는 트래픽 관리 기능들;
    상기 패킷들을 표현하는 서술자들의 복수의 트래픽 관리 큐들로서, 각각의 트래픽 관리 큐는 하나 또는 그 이상의 상기 트래픽 관리 기능들과의 연관을 갖는, 상기 복수의 트래픽 관리 큐들; 및
    트래픽 관리 큐에 서술자를 넣고 상기 트래픽 스트림 프로세서 내 큐에 대한 특정자와 함께 상기 트래픽 스트림 프로세서에 출력하기 위한 상기 서술자를 스케줄링하기 위해, 연관된 큐 특정자에 의해 특정된 상기 트래픽 관리 큐에 연관된 상기 트래픽 관리 기능들을 이용함으로써 상기 트래픽 스트림 프로세서로부터 수신되는 서술자 및 이에 연관된 큐 특정자에 응답하는 처리 구성부를 포함하는, 트래픽 관리 동작 수행 장치.
  26. 삭제
  27. 패킷들이 서술자들에 의해 표현된 시스템에서, 전체 메시지가 상기 시스템에 수신되기 전에 메시지의 패킷을 표현하는 서술자의 처리를 시작하는 방법에 있어서,
    상기 서술자를 스케줄링하는 것 외에 상기 서술자에 대해 처리를 수행하는 단계;
    상기 전체 메시지가 상기 시스템에 수신되었다는 통지 수신시, 상기 서술자를 스케줄링하는 단계;
    상기 통지가 도착하지 않을 것이라는 것을 결정하는 단계; 및
    상기 시스템이 상기 서술자에 의해 표현된 상기 패킷을 폐기하도록 하는 단계를 포함하는, 서술자의 처리 시작 방법.
  28. 삭제
  29. 제 27 항에 있어서,
    상기 서술자는 상기 전체 메시지를 포함하는 패킷을 표현하는, 서술자의 처리 시작 방법.
  30. 제 27 항에 있어서,
    상기 서술자는 상기 메시지를 포함하는 패킷들의 다중-패킷(multi-packet) 시퀀스에서의 패킷을 표현하는, 서술자의 처리 시작 방법.
  31. 패킷들의 스트림들을 처리하는 디바이스에서 다른 처리를 위해 패킷들을 스케줄링하는 장치에 있어서,
    복수의 스케줄러들로서, 상기 스케줄러들은 적어도 내부 노드 및 리프 노드(leaf node)를 갖는 계층의 노드들을 형성하는, 상기 복수의 스케줄러들;
    상기 리프 노드 스케줄러에 연관된 패킷들의 세트; 및
    스케줄링을 위해 상기 리프 노드 스케줄러에 연관된 상기 세트의 패킷을 선택하기 위해 상기 리프 노드 스케줄러 및 상기 내부 노드 스케줄러를 실행하는 프로세서를 포함하고,
    상기 스케줄러들은 복수의 스케줄링 알고리즘으로부터 선택된 스케줄링 알고리즘에 따라 개별적으로 스케줄링하며,
    상기 계층은 상기 계층에 대한 루트 노드(root node)인 단일의 내부 노드 스케줄러를 가지며;
    각각의 리프 노드 스케줄러에서 상기 루트 노드로 상기 계층을 통하는 유일한 경로가 존재하고;
    상기 유일한 경로는 상기 패킷에 대한 다른 처리의 모드에 연관되며,
    상기 모드는 상기 경로에 연관된 가상 출력 포트 수에 의해 특정되는, 패킷 스케줄링 장치.
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 제 31 항에 있어서,
    상기 패킷들의 세트는 상기 세트 내의 패킷들을 표현하는 서술자들의 세트에 의해 상기 리프 노드 스케줄러에 연관되는, 패킷 스케줄링 장치.
  37. 제 36 항에 있어서,
    상기 서술자들의 세트는 서술자들의 적어도 하나의 트래픽 큐 및 상기 트래픽 큐들의 적어도 하나의 스케줄러 큐로 구성되고, 각각의 스케줄러 큐는 상기 서술자들의 세트가 연관된 상기 리프 노드 스케줄러의 입력에 연관되는, 패킷 스케줄링 장치.
  38. 제 31 항에 있어서,
    상기 복수의 스케줄링 알고리즘들은 엄격 우선 순위 알고리즘(strict priority algorithm), 라운드 로빈 알고리즘(round robin algorithm), 및 가중치 공정 큐잉 알고리즘(weighted fair queueing algorithm)을 포함하는, 패킷 스케줄링 장치.
  39. 제 38 항에 있어서,
    상기 계층의 노드 내 스케줄러는 보증 스케줄러, 초과 스케줄러, 및 상기 보증 스케줄러에 첫 번째 우선 순위를 부여하는 엄격 우선 순위 스케줄러를 포함하는 스케줄러 자원들로 구성되는, 패킷 스케줄링 장치.
  40. 제 38 항에 있어서,
    복수의 가중치 공정 큐잉 알고리즘들이 있고, 상기 복수의 가중치 공정 큐잉 알고리즘들은 비작업 보존 가중치 공정 큐잉 알고리즘들(non-work-conserving weighted fair queueing algorithm)을 포함하는, 패킷 스케줄링 장치.
  41. 패킷들의 세트들 중 두 세트들을 이용하는, 가변-길이 패킷들을 스케줄링하는 방법에 있어서,
    스케줄링을 위한 패킷들의 세트들의 상기 두 세트들 중 현재 세트에 속하는 패킷들의 주어진 세트를 선택하는 단계로서, 패킷들의 세트들 중 현재 세트에 속하는 패킷들의 세트 각각은 상기 현재 세트에 속하는 패킷들의 세트가 받을 수 있는 서비스의 최대량인 최대량 및 상기 현재 세트에 속하는 패킷들의 세트가 받을 서비스의 최소량인 최소량에 연관되고, 상기 패킷들의 주어진 세트가 상기 최소량을 이용하여 결정될 때, 상기 패킷들의 주어진 세트는 스케줄링을 위해 선택된 상태로 있고, 상기 최소량은 스케줄링을 위한 상기 세트들 중 현재 세트에 속하는 패킷들의 세트를 다시 선택하기 전에 상기 선택된 패킷들의 세트로부터 스케줄될 수 있는 패킷들의 총 크기를 결정하는, 상기 패킷들의 주어진 세트를 선택하는 단계;
    상기 패킷들의 주어진 세트가 상기 최대량을 이용하여 결정될 때, 상기 패킷들의 세트들의 상기 두 세트들 중 다른 세트에 상기 패킷들의 주어진 세트를 넣는 단계로서, 상기 최대량은 상기 패킷들의 세트들의 상기 두 세트들 중 다른 세트에 상기 선택된 세트가 넣어지기 전에 상기 선택된 세트로부터 스케줄될 수 있는 패킷들의 총 크기를 결정하는, 상기 패킷들의 주어진 세트를 넣는 단계; 및
    상기 패킷들의 세트들 중 현재 세트가 비게되었을 때, 상기 패킷들의 세트들 중 현재 세트와 상기 패킷들의 세트들 중 다른 세트를 서로 바꾸는 단계를 포함하는, 가변-길이 패킷 스케줄링 방법.
  42. 제 41 항에 있어서,
    상기 패킷들의 세트가 상기 현재 세트에서 다음 세트로 이동될 때, 실제 스케줄링되는 패킷들의 총 크기와, 상기 패킷들의 세트가 상기 두 세트의 패킷들 중 다른 세트에 넣어질 때의 상기 최대량 간의 차이를 이용하여, 새로운 최대량을 계산하는 단계를 더 포함하는, 가변-길이 패킷 스케줄링 방법.
  43. 제 41 항에 있어서,
    상기 현재 세트에 속하는 패킷들의 세트가 스케줄링에 부적격으로 되었을 때, 부적격한 패킷들의 세트를 상기 현재 세트에서 제거하는 단계; 및
    부적격한 패킷들의 세트가 스케줄링에 적격으로 되었을 때, 적격의 세트를 다음 세트에 부가하는 단계를 더 포함하는, 가변-길이 패킷 스케줄링 방법.
  44. 제 41 항에 있어서,
    패킷들의 세트들 중 상기 현재 세트는 순서를 갖는 세트(ordered set)이고, 상기 패킷들의 세트들은 패킷들은 라운드 로빈 방식으로 스케줄링하기 위해 선택되는, 가변-길이 패킷 스케줄링 방법.
  45. 제 41 항에 있어서,
    상기 현재 세트 내 상기 패킷들의 세트들은 순서를 가진 세트들이고, 패킷들의 세트가 스케줄링을 위해 선택되었을 때, 패킷들의 세트로부터의 한 패킷은 라운드 로빈 방식으로 선택되는, 가변-길이 패킷 스케줄링 방법.
  46. 제 41 항에 있어서,
    상기 방법은 패킷들의 세트들 중 상기 현재 세트에 비해 스케줄링에 우선 순위를 갖는 패킷들의 세트들 중 제 3 세트를 채용하고,
    패킷들의 상기 주어진 세트는 패킷들의 세트들 중 제 3 세트에 속하고, 패킷들의 상기 주어진 세트는 상기 최소량을 이용하여 결정될 때 스케줄링을 위해 선택된 상태로 있고, 그후에 패킷들의 세트들 중 상기 현재 세트로 이동되고 상기 최대 량을 이용하여 결정될 때 그로부터 스케줄링되는, 가변-길이 패킷 스케줄링 방법.
  47. 제 46 항에 있어서,
    패킷들의 세트들 중 상기 현재 세트 및 상기 패킷들의 세트들 중 제 3 세트는 순서를 가진 세트이고, 상기 패킷들의 세트들은 패킷들의 상기 현재 세트 및 패킷들의 상기 제 3 세트에서 라운드 로빈 방식으로 스케줄링을 위해 선택되는, 가변-길이 패킷 스케줄링 방법.
  48. 제 47 항에 있어서,
    패킷들의 세트들 중 상기 제 3 세트 및 상기 현재 세트에서의 패킷들의 세트들은 순서를 가진 세트들이고, 패킷들의 세트가 스케줄링을 위해 선택되었을 때, 패킷들의 세트로부터의 한 패킷은 라운드 로빈 방식으로 선택되는, 가변-길이 패킷 스케줄링 방법.
  49. 제 41 항에 있어서,
    각각의 패킷은 서술자에 의해 표현되고, 상기 패킷들의 세트에서, 상기 패킷들은 이들의 서술자들에 의해 표현되는, 가변-길이 패킷 스케줄링 방법.
KR1020037013456A 2001-04-13 2002-04-11 데이터 스트림 프로세서들에서 데이터 스트림들의 조작 KR100902513B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US28374601P 2001-04-13 2001-04-13
US60/283,746 2001-04-13
PCT/US2002/011509 WO2002084957A2 (en) 2001-04-13 2002-04-11 Manipulating data streams in data stream processors

Publications (2)

Publication Number Publication Date
KR20030089717A KR20030089717A (ko) 2003-11-22
KR100902513B1 true KR100902513B1 (ko) 2009-06-15

Family

ID=23087372

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037013456A KR100902513B1 (ko) 2001-04-13 2002-04-11 데이터 스트림 프로세서들에서 데이터 스트림들의 조작

Country Status (7)

Country Link
US (2) US20040260829A1 (ko)
EP (1) EP1382165A2 (ko)
JP (1) JP4070610B2 (ko)
KR (1) KR100902513B1 (ko)
CN (1) CN1611035A (ko)
TW (1) TW558887B (ko)
WO (1) WO2002084957A2 (ko)

Families Citing this family (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6957281B2 (en) * 2002-01-15 2005-10-18 Intel Corporation Ingress processing optimization via traffic classification and grouping
US20040019704A1 (en) * 2002-05-15 2004-01-29 Barton Sano Multiple processor integrated circuit having configurable packet-based interfaces
US8176298B2 (en) 2002-10-08 2012-05-08 Netlogic Microsystems, Inc. Multi-core multi-threaded processing systems with instruction reordering in an in-order pipeline
US9088474B2 (en) 2002-10-08 2015-07-21 Broadcom Corporation Advanced processor with interfacing messaging network to a CPU
US7627721B2 (en) 2002-10-08 2009-12-01 Rmi Corporation Advanced processor with cache coherency
US7346757B2 (en) 2002-10-08 2008-03-18 Rmi Corporation Advanced processor translation lookaside buffer management in a multithreaded system
US7961723B2 (en) 2002-10-08 2011-06-14 Netlogic Microsystems, Inc. Advanced processor with mechanism for enforcing ordering between information sent on two independent networks
US8478811B2 (en) * 2002-10-08 2013-07-02 Netlogic Microsystems, Inc. Advanced processor with credit based scheme for optimal packet flow in a multi-processor system on a chip
US8015567B2 (en) 2002-10-08 2011-09-06 Netlogic Microsystems, Inc. Advanced processor with mechanism for packet distribution at high line rate
US7334086B2 (en) * 2002-10-08 2008-02-19 Rmi Corporation Advanced processor with system on a chip interconnect technology
US7984268B2 (en) 2002-10-08 2011-07-19 Netlogic Microsystems, Inc. Advanced processor scheduling in a multithreaded system
US8037224B2 (en) 2002-10-08 2011-10-11 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
WO2004040854A1 (ja) * 2002-10-30 2004-05-13 Fujitsu Limited L2スイッチ
KR100518813B1 (ko) * 2003-02-15 2005-10-05 삼성전자주식회사 패킷 메모리 관리 장치를 가지는 패킷 포워딩 시스템 및 그의 동작방법
US20040213264A1 (en) * 2003-04-25 2004-10-28 Nortel Networks Limited Service class and destination dominance traffic management
US6981074B2 (en) * 2003-10-14 2005-12-27 Broadcom Corporation Descriptor-based load balancing
US7370125B2 (en) * 2003-11-25 2008-05-06 Intel Corporation Stream under-run/over-run recovery
CN100359888C (zh) * 2003-11-27 2008-01-02 华为技术有限公司 一种数据轮询调度方法
GB0420548D0 (en) * 2004-09-15 2004-10-20 Streamshield Networks Ltd Network-based security platform
US7451309B2 (en) 2004-09-17 2008-11-11 At&T Intellectual Property L.P. Signature specification for encrypted packet streams
US8332938B2 (en) * 2004-09-17 2012-12-11 At&T Intellectual Property I, L.P. Detection of encrypted packet streams using a timer
US7730519B2 (en) * 2004-09-17 2010-06-01 At&T Intellectual Property I, L.P. Detection of encrypted packet streams using feedback probing
US7761705B2 (en) * 2004-09-17 2010-07-20 At&T Intellectual Property I, L.P. Detection of encrypted packet streams
US20060098673A1 (en) * 2004-11-09 2006-05-11 Alcatel Input queue packet switch architecture and queue service discipline
FR2878106A1 (fr) * 2004-11-15 2006-05-19 France Telecom Procede et dispositif d'ordonnancement de paquets pour leur routage dans un reseau avec determination implicite des paquets a traiter en priorite
US7620071B2 (en) * 2004-11-16 2009-11-17 Intel Corporation Packet coalescing
US7831747B2 (en) * 2004-12-08 2010-11-09 Intel Corporation Method and apparatus to generate a data descriptor
JP4557748B2 (ja) 2005-02-28 2010-10-06 株式会社東芝 演算処理装置
CN100466603C (zh) * 2005-05-17 2009-03-04 华为技术有限公司 对网络中传输的业务流进行整形的方法及装置
KR100798920B1 (ko) * 2005-11-18 2008-01-29 한국전자통신연구원 RED방식을 확장한 VoIP 네트워크의 폭주 제어 방법및 이를 위한 장치
US20070150585A1 (en) * 2005-12-28 2007-06-28 Microsoft Corporation Multi-dimensional aggregation on event streams
KR100748514B1 (ko) * 2006-01-13 2007-08-14 엘지전자 주식회사 Sip 기반 세션 서비스의 데이터 처리 방법 및 단말
US8275132B2 (en) * 2006-05-15 2012-09-25 Buchen Neil B System and method for dynamically allocating stream identifiers in a multi-encryption transport system
CN1968186A (zh) * 2006-06-19 2007-05-23 华为技术有限公司 一种调度报文发送的装置及方法
GB0619519D0 (en) * 2006-10-04 2006-11-15 Siemens Ag Packet scheduling
US8451807B2 (en) * 2006-12-20 2013-05-28 Honeywell International Inc. Configuration aware packet routing in an ad-hoc network
US8254348B2 (en) * 2006-12-20 2012-08-28 Honeywell International Inc. Voice-over-internet protocol intra-vehicle communications
US8059544B2 (en) * 2006-12-20 2011-11-15 Honeywell International Inc. Distance adaptive routing protocol
US7925798B2 (en) * 2007-01-26 2011-04-12 Lantiq Deutschland Gmbh Data packet processing device
GB2447683B (en) * 2007-03-21 2011-05-04 Advanced Risc Mach Ltd Techniques for generating a trace stream for a data processing apparatus
US8891372B2 (en) * 2007-07-02 2014-11-18 Telecom Italia S.P.A. Application data flow management in an IP network
US7676461B2 (en) 2007-07-18 2010-03-09 Microsoft Corporation Implementation of stream algebra over class instances
US7864775B2 (en) * 2007-12-20 2011-01-04 Honeywell International Inc. Automatic sequencing based on wireless connectivity
CN101488909B (zh) * 2008-01-17 2011-05-04 杭州华三通信技术有限公司 传输控制方法及同轴线路终端、光网络单元
US8233502B2 (en) * 2008-01-18 2012-07-31 Juniper Networks, Inc. System and method for heuristically dropping packets in a multilink PPP bundle
CN101494594B (zh) * 2008-01-22 2011-05-04 杭州华三通信技术有限公司 传输控制方法、同轴线路终端及光网络单元
US8064377B2 (en) * 2008-01-24 2011-11-22 Honeywell International Inc. Method for enhancement of multicasting forwarding protocol in a wireless network
US9596324B2 (en) 2008-02-08 2017-03-14 Broadcom Corporation System and method for parsing and allocating a plurality of packets to processor core threads
GB2458952B (en) * 2008-04-04 2012-06-13 Micron Technology Inc Queue processing method
US8031606B2 (en) * 2008-06-24 2011-10-04 Intel Corporation Packet switching
US20100088325A1 (en) 2008-10-07 2010-04-08 Microsoft Corporation Streaming Queries
US20100097932A1 (en) * 2008-10-15 2010-04-22 Viasat, Inc. Satellite traffic and congestion-based upstream scheduler
EP2187580B1 (en) * 2008-11-18 2013-01-16 Alcatel Lucent Method for scheduling packets of a plurality of flows and system for carrying out the method
US8108546B2 (en) * 2008-12-12 2012-01-31 Comtech Ef Data Corporation Data packet encapsulation methods
EP2207312B1 (en) * 2009-01-07 2012-04-18 ABB Research Ltd. IED for, and method of engineering, an SA system
US9152483B2 (en) 2009-01-16 2015-10-06 F5 Networks, Inc. Network devices with multiple fully isolated and independently resettable direct memory access channels and methods thereof
US8112491B1 (en) 2009-01-16 2012-02-07 F5 Networks, Inc. Methods and systems for providing direct DMA
US8880696B1 (en) 2009-01-16 2014-11-04 F5 Networks, Inc. Methods for sharing bandwidth across a packetized bus and systems thereof
US8615013B2 (en) * 2010-05-18 2013-12-24 Agere Systems Llc Packet scheduling with guaranteed minimum rate in a traffic manager of a network processor
US8848723B2 (en) * 2010-05-18 2014-09-30 Lsi Corporation Scheduling hierarchy in a traffic manager of a network processor
US8837501B2 (en) * 2010-05-18 2014-09-16 Lsi Corporation Shared task parameters in a scheduler of a network processor
CN101938404B (zh) * 2009-07-01 2012-11-28 中兴通讯股份有限公司 用于数据流量管理的随机早期丢弃方法和装置
US8230350B2 (en) 2009-07-03 2012-07-24 Tweetdeck, Inc. System and method for managing and displaying data messages
CN101958824B (zh) * 2009-07-14 2012-06-27 华为技术有限公司 一种数据交换方法及数据交换结构
US9158816B2 (en) 2009-10-21 2015-10-13 Microsoft Technology Licensing, Llc Event processing with XML query based on reusable XML query template
US9313047B2 (en) 2009-11-06 2016-04-12 F5 Networks, Inc. Handling high throughput and low latency network data packets in a traffic management device
KR101040260B1 (ko) * 2010-05-28 2011-06-09 엘아이지넥스원 주식회사 중복 메시지 필터링에 기초한 제어 메시지 처리 방법 및 장치
TWI400912B (zh) * 2010-07-19 2013-07-01 Chunghwa Telecom Co Ltd 封包導向方法
WO2012068171A1 (en) * 2010-11-15 2012-05-24 Reed Coke S Parallel information system utilizing flow control and virtual channels
WO2012083188A1 (en) * 2010-12-16 2012-06-21 Et International, Inc. Distributed computing architecture
CN102201992B (zh) * 2011-05-25 2013-09-25 上海理工大学 面向流处理器并行环境的数据流通信系统及其通信方法
CN102200906B (zh) * 2011-05-25 2013-12-25 上海理工大学 大规模并发数据流处理系统及其处理方法
US9965520B2 (en) * 2011-06-17 2018-05-08 Microsoft Corporation Efficient logical merging over physically divergent streams
US8984526B2 (en) * 2012-03-09 2015-03-17 Microsoft Technology Licensing, Llc Dynamic processor mapping for virtual machine network traffic queues
CN103546393B (zh) * 2012-07-12 2018-01-19 中兴通讯股份有限公司 一种基于加权公平队列的调度实现方法及装置
CN103546392B (zh) * 2012-07-12 2017-10-10 中兴通讯股份有限公司 队列单周期调度方法和装置
US8879578B2 (en) * 2012-07-19 2014-11-04 Broadcom Corporation Reducing store and forward delay in distributed systems
US9047417B2 (en) 2012-10-29 2015-06-02 Intel Corporation NUMA aware network interface
US9270602B1 (en) * 2012-12-31 2016-02-23 F5 Networks, Inc. Transmit rate pacing of large network traffic bursts to reduce jitter, buffer overrun, wasted bandwidth, and retransmissions
US10375155B1 (en) 2013-02-19 2019-08-06 F5 Networks, Inc. System and method for achieving hardware acceleration for asymmetric flow connections
US9106593B2 (en) * 2013-06-12 2015-08-11 Cisco Technology, Inc. Multicast flow reordering scheme
US9450881B2 (en) * 2013-07-09 2016-09-20 Intel Corporation Method and system for traffic metering to limit a received packet rate
CN104348751B (zh) 2013-07-31 2019-03-12 中兴通讯股份有限公司 虚拟输出队列授权管理方法及装置
US10684973B2 (en) 2013-08-30 2020-06-16 Intel Corporation NUMA node peripheral switch
US9864606B2 (en) 2013-09-05 2018-01-09 F5 Networks, Inc. Methods for configurable hardware logic device reloading and devices thereof
US9853714B2 (en) 2013-10-11 2017-12-26 Ge Aviation Systems Llc Data communications network for an aircraft
US9749256B2 (en) 2013-10-11 2017-08-29 Ge Aviation Systems Llc Data communications network for an aircraft
US9825857B2 (en) 2013-11-05 2017-11-21 Cisco Technology, Inc. Method for increasing Layer-3 longest prefix match scale
US9876711B2 (en) 2013-11-05 2018-01-23 Cisco Technology, Inc. Source address translation in overlay networks
US9898482B1 (en) * 2013-12-27 2018-02-20 EMC IP Holding Company LLC Managing stream connections in storage systems
US20150281109A1 (en) * 2014-03-30 2015-10-01 Sachin Saxena System for en-queuing and de-queuing data packets in communication network
US10305819B2 (en) * 2015-05-13 2019-05-28 Cisco Technology, Inc. Dynamic protection of shared memory used by output queues in a network device
WO2016183155A1 (en) * 2015-05-13 2016-11-17 Cisco Technology, Inc. Dynamic protection of shared memory used by output queues in a network device
US9866401B2 (en) * 2015-05-13 2018-01-09 Cisco Technology, Inc. Dynamic protection of shared memory and packet descriptors used by output queues in a network device
US9838321B2 (en) * 2016-03-10 2017-12-05 Google Llc Systems and method for single queue multi-stream traffic shaping with delayed completions to avoid head of line blocking
JP6786996B2 (ja) 2016-09-23 2020-11-18 富士通株式会社 伝送装置及び伝送処理方法
CN109391559B (zh) * 2017-08-10 2022-10-18 华为技术有限公司 网络设备
US11855898B1 (en) 2018-03-14 2023-12-26 F5, Inc. Methods for traffic dependent direct memory access optimization and devices thereof
CN113114564A (zh) 2018-10-31 2021-07-13 华为技术有限公司 一种业务流处理方法及装置
US11537716B1 (en) 2018-11-13 2022-12-27 F5, Inc. Methods for detecting changes to a firmware and devices thereof
CN112311696B (zh) * 2019-07-26 2022-06-10 瑞昱半导体股份有限公司 网络封包接收装置及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0680173A1 (en) 1994-04-28 1995-11-02 Hewlett-Packard Company Multicasting apparatus
EP0874532A2 (en) 1997-04-25 1998-10-28 MMC Networks, Inc. Ansynchronous transfer mode cell scheduling method
US5898687A (en) * 1996-07-24 1999-04-27 Cisco Systems, Inc. Arbitration mechanism for a multicast logic engine of a switching fabric circuit

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5956342A (en) * 1995-07-19 1999-09-21 Fujitsu Network Communications, Inc. Priority arbitration for point-to-point and multipoint transmission
US5859835A (en) * 1996-04-15 1999-01-12 The Regents Of The University Of California Traffic scheduling system and method for packet-switched networks
US6128278A (en) * 1996-08-30 2000-10-03 Mmc Networks, Inc. Cell queuing in ATM switches
US6452933B1 (en) * 1997-02-07 2002-09-17 Lucent Technologies Inc. Fair queuing system with adaptive bandwidth redistribution
AU6788598A (en) 1997-04-04 1998-10-30 Ascend Communications, Inc. Hierarchical packet scheduling method and apparatus
US6094435A (en) * 1997-06-30 2000-07-25 Sun Microsystems, Inc. System and method for a quality of service in a multi-layer network element
US6026093A (en) * 1997-10-02 2000-02-15 Sun Microsystems, Inc. Mechanism for dispatching data units via a telecommunications network
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6233243B1 (en) * 1997-11-24 2001-05-15 Ascend Communications, Inc. Method and apparatus for performing cut-through virtual circuit merging
US6144668A (en) * 1997-11-26 2000-11-07 International Business Machines Corporation Simultaneous cut through and store-and-forward frame support in a network device
US6859438B2 (en) * 1998-02-03 2005-02-22 Extreme Networks, Inc. Policy based quality of service
US6160812A (en) * 1998-05-04 2000-12-12 Cabletron Systems, Inc. Method and apparatus for supplying requests to a scheduler in an input buffered multiport switch
US6606301B1 (en) * 1999-03-01 2003-08-12 Sun Microsystems, Inc. Method and apparatus for early random discard of packets
EP1172017A1 (en) * 1999-04-03 2002-01-16 Top Layer Networks, Inc. Switching system and process for automatic detection of and quality of service for multimedia applications
JP3683133B2 (ja) * 1999-08-17 2005-08-17 日本電気株式会社 パケットスケジューリング装置
US7046686B1 (en) * 1999-08-17 2006-05-16 Mindspeed Technologies, Inc. Integrated circuit that processes communication packets with a buffer management engine having a pointer cache
US6985431B1 (en) * 1999-08-27 2006-01-10 International Business Machines Corporation Network switch and components and method of operation
US6680933B1 (en) 1999-09-23 2004-01-20 Nortel Networks Limited Telecommunications switches and methods for their operation
US6430152B1 (en) * 1999-12-22 2002-08-06 Alcatel Usa Sourcing, L.P. Scheduler system for scheduling the distribution of ATM cells
US6629147B1 (en) * 2000-03-31 2003-09-30 Intel Corporation Segmentation and reassembly of data frames
US7123622B2 (en) * 2000-04-13 2006-10-17 International Business Machines Corporation Method and system for network processor scheduling based on service levels
US7315901B1 (en) * 2000-04-13 2008-01-01 International Business Machines Corporation Method and system for network processor scheduling outputs using disconnect/reconnect flow queues
US7027394B2 (en) * 2000-09-22 2006-04-11 Narad Networks, Inc. Broadband system with traffic policing and transmission scheduling
US7457313B2 (en) * 2000-09-25 2008-11-25 General Instrument Corporation Hierarchical prioritized round robin (HPRR) scheduling
US20020107974A1 (en) * 2000-10-06 2002-08-08 Janoska Mark William Data traffic manager
US7760737B2 (en) * 2000-11-30 2010-07-20 Audiocodes, Inc. Method for reordering and reassembling data packets in a network
US7236491B2 (en) * 2000-11-30 2007-06-26 Industrial Technology Research Institute Method and apparatus for scheduling for packet-switched networks
US6882625B2 (en) * 2000-12-14 2005-04-19 Nokia Networks Oy Method for scheduling packetized data traffic
US7075934B2 (en) * 2001-01-10 2006-07-11 Lucent Technologies Inc. Method and apparatus for hierarchical bandwidth distribution in a packet network
US6917591B2 (en) * 2001-01-12 2005-07-12 Telefonaktiebolaget Lm Ericsson (Publ) Methods, systems and computer program products for bandwidth allocation in a multiple access system
US7035212B1 (en) * 2001-01-25 2006-04-25 Optim Networks Method and apparatus for end to end forwarding architecture
US6934760B1 (en) * 2001-02-04 2005-08-23 Cisco Technology, Inc. Method and apparatus for resequencing of packets into an original ordering using multiple resequencing components
US6987760B2 (en) * 2001-03-05 2006-01-17 International Business Machines Corporation High speed network processor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0680173A1 (en) 1994-04-28 1995-11-02 Hewlett-Packard Company Multicasting apparatus
US5898687A (en) * 1996-07-24 1999-04-27 Cisco Systems, Inc. Arbitration mechanism for a multicast logic engine of a switching fabric circuit
EP0874532A2 (en) 1997-04-25 1998-10-28 MMC Networks, Inc. Ansynchronous transfer mode cell scheduling method

Also Published As

Publication number Publication date
US20090154459A1 (en) 2009-06-18
KR20030089717A (ko) 2003-11-22
EP1382165A2 (en) 2004-01-21
US7929433B2 (en) 2011-04-19
WO2002084957A3 (en) 2003-07-31
JP4070610B2 (ja) 2008-04-02
WO2002084957A2 (en) 2002-10-24
TW558887B (en) 2003-10-21
JP2005510893A (ja) 2005-04-21
US20040260829A1 (en) 2004-12-23
CN1611035A (zh) 2005-04-27

Similar Documents

Publication Publication Date Title
KR100902513B1 (ko) 데이터 스트림 프로세서들에서 데이터 스트림들의 조작
US7100020B1 (en) Digital communications processor
US7843816B1 (en) Systems and methods for limiting low priority traffic from blocking high priority traffic
US5311509A (en) Configurable gigabits switch adapter
US6741552B1 (en) Fault-tolerant, highly-scalable cell switching architecture
US8131950B2 (en) Low latency request dispatcher
US7848341B2 (en) Switching arrangement and method with separated output buffers
Schmidt et al. Transport system architecture services for high-performance communications systems
US7649882B2 (en) Multicast scheduling and replication in switches
CN111201757A (zh) 在底层网络上动态配置的网络接入节点虚拟结构
US7050440B2 (en) Method and structure for variable-length frame support in a shared memory switch
US20050220115A1 (en) Method and apparatus for scheduling packets
US20070140282A1 (en) Managing on-chip queues in switched fabric networks
EP1082668A1 (en) Digital communications processor
US6621829B1 (en) Method and apparatus for the prioritization of control plane traffic in a router
JP4111974B2 (ja) 送信主導型フロー制御装置
US7349406B1 (en) Method and apparatus for virtual network connection merging
US7039057B1 (en) Arrangement for converting ATM cells to infiniband packets
RU2257678C2 (ru) Модульный масштабируемый коммутатор и способ распределения кадров в сети быстрого ethernet
Vicente et al. Efficient deadline-based QoS algorithms for high-performance networks
Kalmanek et al. Xunet 2: Lessons from an early wide-area ATM testbed
Chuang Providing performance guarantees with crossbar-based routers
Belenkiy Fast Memory Look-Up Controller for a Scalable IP Switching Router
Martinez et al. Deadline-based QoS algorithms for high-performance networks
Chen et al. Totally ordered gigabit multicasting

Legal Events

Date Code Title Description
N231 Notification of change of applicant
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: 20130523

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140603

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150430

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160427

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170504

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180516

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190515

Year of fee payment: 11