KR101978528B1 - 패킷 스케줄링 방법 및 장치 - Google Patents

패킷 스케줄링 방법 및 장치 Download PDF

Info

Publication number
KR101978528B1
KR101978528B1 KR1020137029217A KR20137029217A KR101978528B1 KR 101978528 B1 KR101978528 B1 KR 101978528B1 KR 1020137029217 A KR1020137029217 A KR 1020137029217A KR 20137029217 A KR20137029217 A KR 20137029217A KR 101978528 B1 KR101978528 B1 KR 101978528B1
Authority
KR
South Korea
Prior art keywords
packet
scheduling
queues
queue
engine
Prior art date
Application number
KR1020137029217A
Other languages
English (en)
Other versions
KR20140025437A (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 KR20140025437A publication Critical patent/KR20140025437A/ko
Application granted granted Critical
Publication of KR101978528B1 publication Critical patent/KR101978528B1/ko

Links

Images

Classifications

    • 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
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/52Queue scheduling by attributing bandwidth to queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal

Abstract

특히 라우터(또는 다른 네트워크 요소)의 네트워크 인터페이스에서 사용하기 위한 개량된 패킷 스케줄링 방법들 및 장치들이 본 명세서에서 설명된다. 하나의 그러한 개량된 방법에서, 네트워크 인터페이스 내에 버퍼링된 패킷들이 통신 링크 상에서의 전송을 위해 다수의 스케줄링 도메인으로 세그먼트화되며, 각각의 스케줄링 도메인은 스케줄링 트리에 의해 표현되고, 각각의 스케줄링 트리는 개별 가상 포트 스케줄링 엔진에 할당되고, 최상위 레벨 스케줄링 엔진은 가상 포트 스케줄링 엔진들의 출력들 사이에서 스케줄링하여, (예를 들어, 네트워크 인터페이스의 전송 큐로 이동시키기 위해) 통신 링크 상에서 어느 버퍼링된 패킷을 전송할지에 대한 최종 선택을 행하는 데 사용된다. 가상 포트 스케줄링 엔진들을 병렬로 그리고 실질적으로 서로 독립적으로 동작하게 함으로써, 패킷이 전송 큐 내로 이동될 수 있는 레이트가 크게 증가함으로써, 라우터의 네트워크 인터페이스의 대역폭이 증가할 수 있다.

Description

패킷 스케줄링 방법 및 장치{PACKET SCHEDULING METHOD AND APPARATUS}
본 발명은 패킷 스케줄링에 관한 것이다. 본 명세서에서 사용될 때, 용어 "패킷"은 예를 들어 OSI 모델의 임의의 계층(예를 들어, 네트워크 계층, 전송 계층, 데이터 물리 통신 링크 계층, 애플리케이션 계층 등)에서의 임의의 데이터 유닛을 포함하도록 광범위하게 사용된다.
패킷 스케줄링은 다수의 패킷이 공통 발신 통신 링크(예를 들어, 물리 통신 링크 또는 의사-와이어(pseudo-wire))에 대해 경쟁할 때 필요하다. 이러한 시나리오는 일반적으로 라우터들(및 다른 네트워크 요소들)에서 발생한다. 가장 간단하게는, 라우터는 제1 네트워크와 제2 네트워크를 접속한다. 즉, 라우터의 제1 네트워크 인터페이스를 제1 네트워크에 접속하는 제1 물리 통신 링크 및 라우터의 제2 네트워크 인터페이스를 제2 네트워크에 접속하는 제2 물리 통신 링크가 존재하며, 따라서 라우터가 2개의 네트워크 사이에서 패킷들을 라우팅하는 것이 가능하다. 라우터는 제1 네트워크로부터 제1 물리 통신 링크를 통해 제2 네트워크 내의 노드를 향하는 패킷들을 수신할 수 있다. 소정 시점들에서, 이러한 패킷들이 라우터에 도달하는 레이트는 라우터가 제2 물리 통신 링크 상에서 패킷들을 전송할 수 있는 레이트를 초과할 수 있다(예를 들어, 제2 물리 통신 링크는 제1 물리 통신 링크보다 낮은 대역폭을 가질 수 있다). 따라서, 라우터는 수신된 패킷들을 임시 저장하기 위해 패킷 큐들을 이용할 수 있다. 따라서, 임의의 주어진 시점에서, 라우터는 제1 네트워크로부터 수신되고 제2 네트워크를 향하는 다수의 패킷을 그의 패킷 큐들 내에 저장하고 있을 가능성이 있다. 단일 물리 통신 링크가 라우터를 제2 네트워크에 접속할 수도 있으므로, 큐에 저장된 패킷들(queued packets) 모두는 이 공통 발신 물리 통신 링크에 대해 "경쟁"한다. 따라서, 라우터는 소정의 패킷 스케줄링 방법을 필요로 한다. 즉, 라우터는 큐에 저장된 패킷들 중 어느 것을 다음에 발송할 준비를 할지를 선택하기 위한 소정의 방법을 필요로 한다.
한 가지 패킷 스케줄링 기술은 (a) 루트(root) 스케줄링 노드, 리프(leaf) 스케줄링 노드들의 세트 및 0개 이상의 집성 스케줄링 노드(aggregate scheduling node)를 갖는 스케줄링 트리를 생성하는 단계 - 각각의 리프 스케줄링 노드는 패킷 큐와 관련됨 -, 및 (b) 스케줄링 엔진을 이용하여, 스케줄링 트리를 연속적으로 트래버스(traverse)하여, 리프 스케줄링 노드에 도달하고, 리프 스케줄링 노드와 관련된 패킷 큐로부터 전송 큐로 패킷을 이동시키는 단계를 수반한다. 이러한 기술의 문제점은 스케줄링 엔진의 성능이 특히 메모리 대역폭 한계 및 각각의 스케줄링 노드의 공유 상태 정보의 액세스 및 갱신을 위한 회선 쟁탈 오버헤드(contention overhead)로 인해 제한될 수 있다는 것이다.
따라서, 개선된 패킷 스케줄링 프로세스가 필요하다.
본 명세서에서는 라우터(또는 다른 네트워크 요소)의 네트워크 인터페이스에서 패킷 스케줄링을 개선하기 위한 방법들 및 장치들이 설명된다. 한 가지 방법은 전송을 위해(예를 들어, 물리 통신 링크 또는 포트 의사-와이어 또는 링크 집성 그룹(Link Aggregation Group; LAG) 상에서의 전송을 위해) 네트워크 인터페이스 내에 버퍼링된 패킷들을 다수의 스케줄링 도메인으로 세그먼트화하고 - 각각의 스케줄링 도메인은 스케줄링 트리에 의해 표현됨 -, 각각의 스케줄링 트리를 개별 가상 포트 스케줄링 엔진에 할당하고, 최상위 레벨 스케줄링 엔진을 이용하여, 가상 포트 스케줄링 엔진들의 출력들 사이에서 스케줄링함으로써, 어떤 버퍼링된 패킷을 전송할지(예를 들어, 네트워크 인터페이스의 전송 큐로 이동시킬지)에 대한 최종 선택을 행하는 것이다.
가상 포트 스케줄링 엔진들을 병렬로 그리고 실질적으로 서로 독립적으로 동작하게 하는 것은 각각의 개별 스케줄링 결정을 위해 고려되어야 하는 공유 상태의 양을 크게 줄인다. 결과적으로, 이러한 기술을 이용하면, 패킷들이 전송 큐로 이동할 수 있는 레이트가 크게 증가할 수 있다. 따라서, 네트워크 인터페이스가 고속 통신 링크(예로서, 초당 100 기가비트(Gbps)의 물리 통신 링크)에 접속되는 경우, 통신 링크의 전체 대역폭을 이용할 수 있을 만큼 충분히 빠르게 동작하기 위한 스케줄링 시스템의 능력이 향상된다.
따라서, 일 양태에서, 패킷 스케줄링 장치가 제공된다. 일부 실시예들에서, 패킷 스케줄링 장치는 제1 스케줄링 엔진(예로서, 제1 가상 포트 스케줄링 엔진); 제2 스케줄링 엔진(예로서, 제2 가상 포트 스케줄링 엔진); 및 제3 스케줄링 엔진(예로서, 최상위 레벨 스케줄링 엔진)을 포함한다. 제1 스케줄링 엔진은 (a) 패킷 큐들의 제1 세트로부터 패킷 큐를 선택하고, (b) 선택된 패킷 큐로부터 중간 패킷 큐들의 제1 세트에 포함된 중간 패킷 큐로 패킷을 이동시키도록 동작할 수 있다. 제1 스케줄링 엔진은 스케줄링 노드들의 제1 세트(예로서, 스케줄링 트리를 형성하는 계층적으로 배열된 스케줄링 노드들의 세트)에 대응하는 정보를 이용하여 패킷 큐 선택을 수행하도록 구성될 수 있다.
제1 스케줄링 엔진과 같이, 제2 스케줄링 엔진은 (a) 패킷 큐들의 제2 세트로부터 패킷 큐를 선택하고, (b) 선택된 패킷 큐로부터 중간 패킷 큐들의 제2 세트에 포함된 중간 패킷 큐로 패킷을 이동시키도록 동작할 수 있다. 제2 스케줄링 엔진은 스케줄링 노드들의 제2 세트에 대응하는 정보를 이용하여 패킷 큐 선택을 수행하도록 구성될 수 있다. 일부 실시예들에서, 제1 스케줄링 엔진 및 제2 스케줄링 엔진은 서로 독립적으로 패킷 큐들을 선택하도록 구성되며, 따라서 제1 및 제2 스케줄링 엔진들 간에 상태 정보가 공유될 필요가 없다. 제3 스케줄링 엔진은 (a) 중간 패킷 큐들의 제1 세트 및 중간 패킷 큐들의 제2 세트를 포함하는 패킷 큐들의 세트로부터 패킷 큐를 선택하고, (b) 선택된 패킷 큐로부터 전송 큐로 패킷을 이동시키도록 동작할 수 있다.
일부 실시예들에서, 패킷 스케줄링 장치는 네트워크 인터페이스 내에 구현될 수 있으며, 패킷들을 전송 큐로부터 통신 링크 상으로 전송하도록 구성되는 패킷 송신기도 포함한다.
일부 실시예들에서, 제1 및 제2 스케줄링 엔진들은 프로세서 내에 로딩되고 그에 의해 실행되는 컴퓨터 코드를 저장하는 컴퓨터 판독 가능 매체를 포함하는 소프트웨어 기반 스케줄링 엔진들이며, 제3 스케줄링 엔진은 주문형 집적 회로(ASIC)를 이용하여 구현되는 순수 하드웨어 기반 스케줄링 엔진이다.
일부 실시예들에서, 패킷 큐들의 제1 세트에 포함된 패킷 큐들의 세트가 제1 패킷 흐름과 관련되고, 패킷 큐들의 제2 세트에 포함된 패킷 큐들의 세트가 제2 패킷 흐름과 관련되며, 패킷 스케줄링 장치는 (a) 패킷을 수신하고, (b) 패킷이 속하는 패킷 흐름을 결정하고, (c) 패킷을 패킷 흐름과 관련된 진출 패킷 큐(egress packet queue) 내에 배치하도록 구성되는 패킷 수신 및 처리 유닛(PRPU)을 더 포함한다. PRPU는 소프트웨어 기반일 수 있거나(예를 들어, PRPU는 프로세서 내에 로딩되어 그에 의해 실행되는 컴퓨터 코드를 저장하는 컴퓨터 판독 가능 매체를 포함할 수 있음), 하드웨어 기반일 수 있다(예를 들어, PRPU는 주문형 집적 회로(ASIC)를 이용하여 구현될 수 있다).
일부 실시예들에서, 제3 스케줄링 엔진은 중간 패킷 큐들의 제1 세트, 중간 패킷 큐들의 제2 세트 및 패킷 큐들의 제3 세트를 포함하는 패킷 큐들의 세트로부터 패킷 큐를 선택하도록 동작할 수 있으며, 패킷 큐들의 제3 세트에 포함된 패킷 큐들의 세트는 제3 패킷 흐름과 관련된다. 그러한 실시예들에서, PRPU는 (a) PRPU가 패킷을 수신하고, 패킷이 제1 패킷 흐름에 속하는 것으로 결정할 때, PRPU가 제1 패킷 흐름과 관련된 패킷 큐들의 세트에 포함된 패킷 큐들 중 하나의 패킷 큐 내에 패킷을 배치하고, (b) PRPU가 패킷을 수신하고, 패킷이 제2 패킷 흐름에 속하는 것으로 결정할 때, PRPU가 제2 패킷 흐름과 관련된 패킷 큐들의 세트에 포함된 패킷 큐들 중 하나의 패킷 큐 내에 패킷을 배치하고, (c) PRPU가 패킷을 수신하고, 패킷이 제3 패킷 흐름에 속하는 것으로 결정할 때, PRPU가 제3 패킷 흐름과 관련된 패킷 큐들의 세트에 포함된 패킷 큐들 중 하나의 패킷 큐 내에 패킷을 배치하도록 구성된다.
일부 실시예들에서, 스케줄링 노드들의 제1 세트는 스케줄링 트리의 제1 서브트리로부터의 스케줄링 노드들을 포함하고, 스케줄링 노드들의 제2 세트는 스케줄링 트리의 제2의 상이한 서브트리로부터의 스케줄링 노드들을 포함한다. 그러한 실시예들에서는, 구성 모듈이 스케줄링 트리를 정의하는 정보를 검사하고, 스케줄링 트리의 제1 서브트리를 제1 스케줄링 엔진에 할당하고, 스케줄링 트리의 제2의 상이한 서브트리를 제2 스케줄링 엔진에 할당하도록 구성될 수 있다.
일부 실시예들에서, 스케줄링 노드들의 제1 세트는 스케줄링 노드들의 제2 세트에도 포함된 스케줄링 노드들의 세트를 포함한다.
일부 실시예들에서, 스케줄링 노드들의 제1 세트에 대응하는 정보는 (a) 스케줄링 노드들의 제1 세트에 포함된 스케줄링 노드들 중 하나와 관련된 제1 최대 데이터 레이트 정보 및 (b) 제1 스케줄링 알고리즘을 식별하는 정보를 포함하고, 스케줄링 노드들의 제2 세트에 대응하는 정보는 (a) 스케줄링 노드들의 제2 세트에 포함된 스케줄링 노드들 중 하나와 관련된 제2 최대 데이터 레이트 정보 및 (b) 제2 스케줄링 알고리즘을 식별하는 정보를 포함한다.
일부 실시예들에서, 제1 스케줄링 엔진은 제1 최대 데이터 레이트 정보 및 제1 스케줄링 알고리즘을 이용하여 패킷을 제거할 패킷 큐를 선택하도록 구성되고, 제2 스케줄링 엔진은 제2 최대 데이터 레이트 정보 및 제2 스케줄링 알고리즘을 이용하여 패킷을 제거할 패킷 큐를 선택하도록 구성된다.
일부 실시예들에서, 제1 스케줄링 엔진은 데이터 처리 시스템; 및 데이터 처리 시스템에 대해 액세스될 수 있는 컴퓨터 판독 가능 매체를 포함한다. 컴퓨터 판독 가능 매체는 데이터 처리 시스템에 의해 실행될 때 데이터 처리 시스템으로 하여금 (a) 패킷 큐들의 제1 세트로부터 패킷 큐를 선택하고, (b) 선택된 패킷 큐로부터 중간 패킷 큐들의 제1 세트에 포함된 중간 패킷 큐로 패킷을 이동시키게 하는 컴퓨터 판독 가능 프로그램 코드를 저장할 수 있다.
다른 양태에서, 패킷 스케줄링 방법이 제공된다. 일부 실시예들에서, 패킷 스케줄링 방법은 패킷 큐들의 제1 세트를 제1 스케줄링 엔진에 할당하는 단계; 패킷 큐들의 제2 세트를 제2 스케줄링 엔진에 할당하는 단계; 제1 패킷 흐름을 패킷 큐들의 제1 세트에 포함된 패킷 큐들의 세트에 할당하는 단계; 제2 패킷 흐름을 패킷 큐들의 제2 세트에 포함된 패킷 큐들의 세트에 할당하는 단계; 네트워크 요소의 네트워크 인터페이스에서 패킷을 수신하는 단계; 패킷이 속하는 패킷 흐름을 결정하는 단계; 수신된 패킷이 제1 패킷 흐름에 속하는 경우, 수신된 패킷이 제1 패킷 흐름에 속한다는 결정에 응답하여 제1 패킷 흐름이 할당된 패킷 큐들의 세트에 포함된 패킷 큐들 중 하나 내에 수신된 패킷을 배치하는 단계; 및 수신된 패킷이 제2 패킷 흐름에 속하는 경우, 수신된 패킷이 제2 패킷 흐름에 속한다는 결정에 응답하여 제2 패킷 흐름이 할당된 패킷 큐들의 세트에 포함된 패킷 큐들 중 하나 내에 수신된 패킷을 배치하는 단계를 포함한다.
일부 실시예들에서, 제1 스케줄링 엔진은 (a) 패킷 큐들의 제1 세트로부터 패킷 큐를 선택하고, (b) 선택된 패킷 큐로부터 중간 패킷 큐들의 제1 세트에 포함된 중간 패킷 큐로 패킷을 이동시키며, 제2 스케줄링 엔진은 (a) 패킷 큐들의 제2 세트로부터 패킷 큐를 선택하고, (b) 선택된 패킷 큐로부터 중간 패킷 큐들의 제2 세트에 포함된 중간 패킷 큐로 패킷을 이동시키며, 제3 스케줄링 엔진이 (a) 중간 패킷 큐들의 제1 세트 및 중간 패킷 큐들의 제2 세트를 포함하는 패킷 큐들의 세트로부터 패킷 큐를 선택하고, (b) 선택된 패킷 큐로부터 전송 큐로 패킷을 이동시킨다. 네트워크 인터페이스의 패킷 송신기가 패킷들을 전송 큐로부터 통신 링크 상으로 전송하도록 구성된다.
상기 및 다른 양태들 및 실시예들이 첨부 도면들을 참조하여 아래에 설명된다.
본 명세서에 포함되고 그 일부를 형성하는 첨부 도면들은 본 발명의 다양한 실시예들을 도시하며, 명세서와 더불어 본 발명의 원리들을 설명하고, 관련 분야의 기술자로 하여금 본 발명을 실시하고 이용하는 것을 가능하게 하는 역할을 한다. 도면들에서, 동일한 참조 번호들은 동일하거나 기능적으로 유사한 요소들을 지시한다.
도 1은 에지 라우터를 포함하는 통신 시스템을 나타낸다.
도 2는 에지 라우터의 네트워크 인터페이스의 기능도이다.
도 3은 예시적인 스케줄링 트리를 나타낸다.
도 4는 스케줄링 트리가 다수의 서브트리로 분할될 수 있는 하나의 가능한 방법을 나타낸다.
도 5는 일 실시예에 따른 스케줄링 시스템의 기능도이다.
도 6은 스케줄링 트리가 다수의 서브트리로 분할될 수 있는 다른 가능한 방법을 나타낸다.
도 7은 다른 실시예에 따른 스케줄링 시스템의 기능도이다.
도 8은 특정 실시예들에 따른 다양한 프로세스들을 나타내는 흐름도이다.
도 9는 통신 시스템을 나타낸다.
도 10은 계층적으로 배열된 스케줄링 노드들의 세트를 나타낸다.
도 11은 수정된 스케줄링 트리를 나타낸다.
도 12는 2개의 수정된 스케줄링 트리를 나타낸다.
도 13은 일부 실시예들에 따른 스케줄링 엔진의 블록도이다.
도 14는 스케줄링 엔진의 예시적인 소프트웨어 컴포넌트들을 나타내는 블록도이다.
본 명세서에서 사용될 때, 부정관사 "a" 및 "an"은 "하나 이상"을 의미한다.
도 1은 본 발명의 실시예들이 이용될 수 있는 예시적인 통신 시스템(100)을 나타낸다. 그러나, 본 발명은 임의의 특정 타입의 통신 시스템으로 한정되지 않는다. 도시된 예에서, 통신 시스템(100)은 패킷들을 네트워크(110)(예로서, 인터넷)로 전송하고 그로부터 패킷들을 수신하는 다수의 최종 사용자 디바이스(101)를 포함한다. 도 1에 도시된 바와 같이, 사용자 디바이스들(101)은 액세스 네트워크(103), 및 액세스 네트워크(103)와 네트워크(110)를 접속하도록 기능하는 네트워크 요소(108)(예로서, 에지 라우터(108))를 통해 네트워크(110)(예로서, 네트워크(110) 내의 서버들)와 통신한다.
도시된 예에서, 액세스 네트워크(103)는 디지털 가입자 회선(DSL) 액세스 네트워크(103)이지만, 임의의 타입의 액세스 네트워크(103)가 사용될 수 있다. 예시적인 DSL 액세스 네트워크(103)는 물리 통신 링크(122)를 통해 스위치(106)에 접속된 DSL 액세스 멀티플렉서들(DSLAM들)(104)에 접속된 DSL 모뎀들(102)을 포함한다. 예를 들어, DSL 모뎀(102)은 물리 통신 링크(121)를 통해 DSLAM(104)과 접속되며, 이 DSLAM은 물리 통신 링크(122)를 통해 스위치(106)와 접속된다. 스위치(106)는 (유선 또는 무선일 수 있는) 물리 통신 링크(123)를 통해 네트워크 요소(108)의 네트워크 인터페이스(191)와 접속된다. 유사하게, 네트워크(110)는 물리 통신 링크(124)를 통해 에지 라우터(108)의 네트워크 인터페이스(192)와 접속된다. 네트워크 인터페이스들(191, 192)은 네트워크 요소(108)의 백플레인 컴포넌트(도시되지 않음)에 의해 접속될 수 있다. 다른 네트워크(112)도 스위치(106)에 접속될 수 있다.
도 2는 네트워크 요소(108)의 네트워크 인터페이스(191)의 패킷 진출 부분(packet egress portion)의 기능도이다. 도 2에 도시된 바와 같이, 네트워크 인터페이스(191)는 패킷 수신 및 처리 유닛(PRPU)(202)을 포함한다. 도 1에 도시된 실시예에서, PRPU(202)는 예를 들어 네트워크 요소(108)의 백플레인을 통해 네트워크 인터페이스(192)로부터 패킷들을 수신한다. 네트워크 인터페이스(192)로부터 수신된 패킷들은 네트워크 인터페이스(192)가 네트워크(110)로부터 수신한 패킷들을 포함한다. 패킷들을 PRPU(202)에 제공하는 것에 더하여, 네트워크 인터페이스(192)는 그가 PRPU(202)에 제공하는 각각의 패킷에 대해 패킷에 대한 메타데이터도 제공할 수 있다.
일 실시예에서, PRPU(202)에 의해 수신되는 각각의 패킷은 단일 패킷 흐름에 속한다. 이 실시예에서, PRPU(202)에 의해 수신된 각각의 패킷에 대해, PRPU(202)는 수신된 패킷이 속하는 패킷 흐름을 결정하도록 기능한다. 일부 실시예들에서, PRPU(202)는 패킷에 포함된 패킷 헤더에 포함된 데이터를 검사함으로써 또는 존재할 경우에 패킷에 대한 메타데이터를 검사함으로써 수신된 패킷이 속하는 패킷 흐름을 결정한다. 예를 들어, 패킷 헤더(또는 메타데이터)는 하나 이상의 가상 근거리 네트워크(VLAN) 태그(예로서, 외부 VLAN 태그 및 내부 VLAN 태그)를 포함할 수 있으며, 패킷이 운반하고 있는 페이로드 데이터의 타입(예로서, VoIP(voice-over IP) 데이터와 같은 실시간 데이터 또는 HTTP 메시지들과 같은 비실시간 데이터)을 식별하는 정보도 포함할 수 있다. 특정 예로서, 소정의 외부 VLAN 태그, 내부 VLAN 태그 및 페이로드 타입과 관련된 모든 패킷들은 동일 흐름에 속하는 것으로 결정되는 반면, 상이한 외부 VLAN 태그, 내부 VLAN 태그 또는 페이로드 타입과 관련된 모든 패킷들은 상이한 패킷 흐름에 속하는 것으로 결정된다.
PRPU(202)는 또한 패킷이 속하는 결정된 패킷 흐름에 기초하여 수신된 패킷을 패킷 큐에 추가하도록 기능한다. 즉, 일부 실시예들에서, 각각의 패킷 흐름은 패킷 큐와 관련된다. 예를 들어, 네트워크 인터페이스(191)는 정의된 패킷 흐름들의 세트의 각각의 패킷 흐름을 패킷 큐에 맵핑하는 정보를 저장하는 패킷 흐름 대 패킷 큐 데이터베이스(DB)를 포함할 수 있으며, 이 데이터베이스는 예를 들어 데이터가 기록되고 판독되는 컴퓨터 판독 가능 매체 내에 구현될 수 있다. 도 2에 도시된 바와 같이, 네트워크 인터페이스(191)는 패킷 큐들(206)의 세트(예로서, 도시된 바와 같은 패킷 큐들(q1-q8))를 포함한다.
예를 들어, PRPU(202)에 의해 수신되고 네트워크(112)를 향하는 모든 패킷들이 동일 네트워크 흐름에 속하는 것으로 가정하면, 이 패킷 흐름은 예를 들어 q8과 관련될 수 있다. 따라서, 이 예에서, PRPU(202)가 네트워크 인터페이스(192)로부터 네트워크(112)를 향하는 패킷(또는 패킷에 대한 메타데이터, 예를 들어 패킷 식별자, 패킷이 저장되는 메모리 위치를 식별하는 메모리 위치 식별자, 목적지 어드레스 정보)을 수신할 때, PRPU(202)는 패킷을 q8에 "추가"할 것이다. 패킷 큐 세트(206) 내의 패킷 큐들은 패킷 큐 내의 모든 패킷들이 동일 저장 디바이스 내에 순차적으로 배치된다는 점에서 물리 패킷 큐들일 필요가 없다. 오히려, 본 명세서에서 설명되는 패킷 큐들은 논리적 선입선출(FIFO) 패킷 큐들과 같은 논리 패킷 큐들일 수 있다. 패킷들 자체는 어느 곳에나 저장될 수 있다. 따라서, 패킷을 패킷 큐에 "추가"하는 것은 단지 패킷 큐를 구현하는 데이터 구조(예로서, 링크된 리스트 데이터 구조)에 패킷과 고유하게 관련된 식별자(예로서, 패킷이 저장되는 메모리 위치를 식별하는 식별자)를 추가하는 것으로 구성될 수 있다.
PRPU(202)가 패킷들을 처리하는 동안(예로서, 패킷들을 패킷 큐들(206) 중 하나에 추가하는 동안), 스케줄링 시스템(212)은 계속해서 패킷 큐들(206) 중 하나를 선택하고, 패킷을 선택된 패킷 큐로부터 전송 큐(214)로 이동시킨다. 이와 동시에, 패킷 송신기(216)는 계속해서 전송 큐(214)로부터 패킷들을 제거하고, 그러한 패킷들을 물리 통신 링크(123) 상으로 전송한다. 일부 실시예들에서, 패킷 송신기(216)는 패킷을 전송하기 전에 패킷에 헤더를 더하여 프로토콜 데이터 유닛을 생성할 수 있다. 이러한 방식으로, 패킷들은 네트워크 인터페이스(191)의 진출 부분 안팎으로 흐른다.
일부 실시예들에서, 스케줄링 시스템(212)이 패킷 큐를 선택할 때, 스케줄링 시스템(212)은 스케줄링 트리를 트래버스하여, 패킷 큐 세트(206)로부터 그가 선택해야 하는 패킷 큐를 결정한다. 따라서, 네트워크 인터페이스(191)는 스케줄링 트리를 정의하는 정보를 저장하기 위해, 데이터가 기록 및 판독되는 컴퓨터 판독 가능 매체 내에 구현될 수 있는 스케줄링 트리 데이터베이스(210)를 포함할 수 있다.
도 3은 스케줄링 시스템(300)에 의해 사용될 수 있는 예시적인 스케줄링 트리(300)를 나타낸다. 스케줄링 트리(300)는 스케줄링 노드들(예로서, 스케줄링 노드들(301-314))의 세트를 포함하며, 이들 각각은 판정 트리의 형태로 논리적으로 체계화되는, 컴퓨터 판독 가능 매체에 저장되는 데이터 구조(예로서, 함께 그룹화되는 데이터 요소들의 세트)로서 구현될 수 있다. 즉, 리프 스케줄링 노드들을 제외한 각각의 스케줄링 노드는 하나 이상의 자식 스케줄링 노드를 가지며, 루트 스케줄링 노드를 제외한 각각의 스케줄링 노드는 부모를 갖는다. 더 구체적으로, 스케줄링 트리(300)는 루트 스케줄링 노드(301), 집성 스케줄링 노드들(예로서, 스케줄링 노드들(302, 304, 305, 307, 308)) 및 리프 스케줄링 노드들(예로서, 스케줄링 노드들(303, 306, 309-314))을 포함한다.
도시된 예에서, 각각의 리프 스케줄링 노드 및 각각의 집성 스케줄링 노드는 물리 통신 링크(123) 상에서 전송될 수 있는, PRPU(202)에 의해 수신되는 패킷 흐름들의 서브세트를 나타내며, 루트 스케줄링 노드(301)는 물리 통신 링크(123) 상에서 전송될 수 있는, PRPU(202)에 의해 수신되는 패킷 흐름들 모두를 나타낸다. 게다가, 각각의 리프 스케줄링 노드는 고유 패킷 큐와 관련된다. 따라서, 스케줄링 트리(300)는 전술한 바와 같이 데이터베이스(204) 내에 저장되고 PRPU(202)에 의해 사용될 수 있는 패킷 흐름 대 패킷 큐 맵핑을 나타낸다.
특정 예로서, 리프 스케줄링 노드(303)는 네트워크(112)로의 패킷들의 흐름을 나타내고, 리프 스케줄링 노드(309)는 VLAN 1.1을 향하는 음성 패킷들(VoIP 데이터와 같은 음성 데이터를 포함하는 패킷들)의 흐름을 나타내고, 리프 스케줄링 노드(310)는 VLAN 1.1을 향하는 비음성 패킷들의 흐름을 나타내고, 집성 스케줄링 노드(305)는 VLAN 1.1을 향하는 모든 패킷들(즉, 음성 및 비음성)의 흐름을 나타내며, 리프 스케줄링 노드(306)는 VLAN 1.2를 향하는 모든 패킷들의 흐름을 나타낸다. 이 예에서는, VLAN 1이 DSLAM(104)과 관련되고, 따라서 VLAN 1을 향하는 모든 트래픽이 물리 통신 링크(122) 상에서 스위치(106)에 의해 전송되며, VLAN 1.1이 DSL 디바이스(102)와 관련되고, 따라서 VLAN 1.1을 향하는 모든 트래픽이 물리 통신 링크(121) 상에서 DSLAM(104)에 의해 전송되는 것으로 가정한다.
도 3에 도시된 바와 같이, 각각의 리프 스케줄링 노드는 루트 스케줄링 노드(301)에 직접 접속되거나, 하나 이상의 집성 스케줄링 노드를 통해 루트 스케줄링 노드(301)에 간접 접속된다. 예를 들어, 리프 스케줄링 노드(303)는 루트 스케줄링 노드(301)에 직접 접속되는 반면, 리프 스케줄링 노드(311)는 집성 스케줄링 노드들(304, 307)을 통해 루트 스케줄링 노드(301)에 접속된다. 마찬가지로, 각각의 집성 스케줄링 노드는 루트 스케줄링 노드(301)에 직접 접속되거나, 하나 이상의 다른 집성 스케줄링 노드를 통해 루트 스케줄링 노드(301)에 간접 접속된다.
설명된 바와 같이, 각각의 스케줄링 노드는 컴퓨터 판독 가능 매체 내에 저장되는 데이터 구조로서 구현될 수 있다. 따라서, 일부 실시예들에서, 스케줄링 노드를 구현하는 각각의 데이터 구조는 (i) 다른 스케줄링 노드(즉, 스케줄링 노드의 부모)를 구현하는 다른 데이터 구조를 가리키는 부모 스케줄링 노드 포인터를 저장하는 부모 포인터 데이터 요소 및 (ii) 자식 포인터 데이터 요소들의 세트를 포함할 수 있으며, 각각의 자식 포인터 데이터 요소는 다른 스케줄링 노드(즉, 스케줄링 노드의 자식들 중 하나)를 구현하는 다른 데이터 구조를 가리키는 자식 스케줄링 노드 포인터를 저장한다. 따라서, 각각의 스케줄링 노드는 다른 스케줄링 노드에 관하여 그 다른 스케줄링 노드의 부모 또는 자식일 수 있다. 루트 노드를 구현하는 데이터 구조의 경우, 그 데이터 구조의 부모 스케줄링 노드 포인터는 널(NULL)을 가리킬 수 있는데, 그 이유는 일부 실시예들에서 정의에 의해 루트 노드가 부모 스케줄링 노드를 갖지 않을 수 있기 때문이다. 마찬가지로, 리프 노드를 구현하는 데이터 구조의 경우, 그 데이터 구조의 각각의 자식 스케줄링 노드 포인터는 널을 가리킬 수 있는데, 그 이유는 일부 실시예들에서 정의에 의해 리프 노드가 어떠한 자식 스케줄링 노드도 갖지 않을 수 있기 때문이다.
전술한 바와 같이, 스케줄링 시스템(212)은 스케줄링 트리(300)를 트래버스함으로써 전송 큐(214)로 전달할 패킷을 획득할 패킷 큐를 선택하도록 구성될 수 있다. 일부 실시예들에서, 스케줄링 시스템(212)은 루트 스케줄링 노드(301)에서 시작한 후에 자식 스케줄링 노드를 선택함으로써(예를 들어, 루트 노드(301)를 구현하는 데이터 구조로부터 자식 포인터 데이터 요소를 선택함으로써) 톱-다운(top-down) 방식으로 스케줄링 트리(300)를 트래버스한다(그러나, 다른 실시예들에서, 스케줄링 시스템은 바텀-업 트래버설(bottom-up traversal) 알고리즘을 이용하여 스케줄링 트리(300)를 트래버스할 수 있다). 일부 실시예들에서, 루트 스케줄링 노드(301)는 스케줄링 알고리즘(예로서, 라운드-로빈)과 관련될 수 있다. 또한, 각각의 스케줄링 노드는 최대 데이터 레이트(및 최소 타겟 데이터 레이트와 같은 다른 파라미터들)와 관련될 수 있다. 예를 들어, 전술한 바와 같이, 데이터 구조는 스케줄링 노드를 구현할 수 있으며, 따라서 스케줄링 노드는 스케줄링 노드를 구현하는 데이터 구조의 데이터 요소 내에 최대 데이터 레이트를 저장함으로써 최대 데이터 레이트와 관련될 수 있다.
그러한 실시예들에서, 스케줄링 엔진(212)은 루트 스케줄링 노드(301)와 관련된 스케줄링 알고리즘 및 최대 데이터 레이트들을 이용하여 루트 스케줄링 노드(301)의 자식 스케줄링 노드를 선택한다. 예를 들어, (a) 스케줄링 노드(302)와 관련된 최대 데이터 레이트가 7 Gbps이고, (b) 루트 스케줄링 노드(301)와 관련된 스케줄링 알고리즘이 스케줄링 시스템(212)이 집성 스케줄링 노드(302)를 선택해야 한다는 것을 지시하는 것으로 가정하면, 스케줄링 시스템(212)은 마지막 1초(또는 다른 기간) 내에 스케줄링 시스템(212)이 스케줄링 노드(302)와 관련된 패킷 큐들(즉, 패킷 큐들 q1, q2 및 q3)로부터 10 Gb보다 많은 데이터를 아직 선택하지 않았다면 집성 스케줄링 노드(302)를 선택할 것이며, 그렇지 않을 경우에 스케줄링 시스템(212)은 루트 스케줄링 노드(301)에 직접 접속된 다른 스케줄링 노드들(즉, 이 예에서 스케줄링 노드들 303 및 304) 중 하나를 선택할 것이다.
선택된 자식 스케줄링 노드가 리프 스케줄링 노드인 경우, 스케줄링 시스템(212)은 선택된 리프 스케줄링 노드와 관련된 패킷 큐를 선택하고, 선택된 패킷 큐로부터 전송 큐(214)로 패킷을 이동시킨다. 선택된 자식 스케줄링 노드가 리프 스케줄링 노드가 아닌 경우(즉, 집성 스케줄링 노드인 경우), 스케줄링 시스템(212)은 선택된 집성 스케줄링 노드의 자식 스케줄링 노드를 선택한다. 이러한 프로세스는 스케줄링 시스템(212)이 리프 스케줄링 노드를 선택할 때까지 반복된다. 이러한 방식으로, 스케줄링 시스템(212)은 스케줄링 트리(300)를 트래버스하여, 트리의 각각의 레벨 및 노드에서 최대 레이트들 또는 다른 스케줄링 규칙들을 고려하고 이행한다.
루트 스케줄링 노드(301)와 같이, 선택된 집성 스케줄링 노드는 스케줄링 알고리즘과 관련될 수 있으며, 선택된 집성 스케줄링 노드의 각각의 자식 스케줄링 노드는 최대 데이터 레이트(및/또는 다른 파라미터들)와 관련될 수 있다. 따라서, 스케줄링 시스템(212)은 스케줄링 알고리즘 및 최대 데이터 레이트들을 이용하여, 어떤 자식 스케줄링 노드를 선택할지를 결정한다. 전술한 바와 같이, 이러한 프로세스는 스케줄링 시스템(212)이 리프 스케줄링 노드인 스케줄링 노드(즉, 어떠한 자식 스케줄링 노드도 갖지 않는 스케줄링 노드)를 선택할 때까지 반복된다. 리프 스케줄링 노드를 선택하고, 선택된 리프 스케줄링 노드와 관련된 패킷 큐로부터의 패킷을 전송 큐(214)로 이동시킨 후에, 스케줄링 시스템(212)은 루트 스케줄링 노드(301)에서 시작하여 다시 한 번 스케줄링 트리(300)를 트래버스할 것이다. 따라서, 스케줄링 시스템(212)은 스케줄링 트리(300)를 계속 트래버스하며, 따라서 패킷을 전송 큐(214)로 이동시킬 패킷 큐를 계속 선택한다. 이러한 방식으로, 패킷들은 물리 통신 링크(123) 상에서의 전송을 위해 큐에 넣어진다.
위의 설명으로부터 명백하듯이, 스케줄링 시스템(212)은 스케줄링 노드들 중 적어도 일부에 대한 상태 정보를 유지한다. 예를 들어, 스케줄링 노드가 그와 관련된 최대 데이터 레이트를 갖는 경우, 스케줄링 시스템(212)은 스케줄링 노드와 (직접 및 간접) 관련된 패킷 큐들로부터 전송을 위해 얼마나 많은 데이터가 선택되었는지를 계속 추적할 것이다. 다른 예로서, 스케줄링 노드가 스케줄링 알고리즘과 관련되는 경우, 스케줄링 시스템(212)은 스케줄링 알고리즘을 구현하는 데 필요한 상태 정보를 유지할 수 있다(예를 들어, 스케줄링 노드의 스케줄링 알고리즘이 라운드-로빈 스케줄링 알고리즘인 경우, 스케줄링 시스템(212)은 스케줄링 노드의 어떤 자식이 최종 "턴(turn)"을 가졌는지를 계속 추적할 수 있다). 일부 실시예들에서, 스케줄링 시스템(212)은 스케줄링 노드를 구현하는 데이터 구조의 하나 이상의 데이터 요소 내에 스케줄링 노드에 대한 상태 정보를 저장할 수 있다.
물리 통신 링크(123)의 전송 용량이 큰(예로서, 100 Gbps) 상황들에서는, 스케줄링 시스템(212)이 스케줄링 시스템(212)에 의해 사용되는 스케줄링 트리가 너무 많은 결정 포인트를 갖는다는 사실로 인해 100 Gbps 용량 모두가 사용될 만큼 충분히 빠르게 패킷들을 전송 큐(214) 내로 이동시킬 수 없는 상황들이 존재할 수 있다. 그러한 상황들에서는 기존의 스케줄링 트리로부터 다수의 새로운 스케줄링 트리가 형성될 수 있다. 예를 들어, 도 4는 스케줄링 트리(300)가 어떻게 3개의 스케줄링 트리(즉, 트리 401, 402, 403)로 분할될 수 있는지를 도시한다. 도시된 실시예에서, 트리들(401-403) 각각은 스케줄링 트리(300)의 서브트리이다. 더 도시된 바와 같이, 트리(401)의 루트 스케줄링 노드는 트리(300)의 루트 스케줄링 노드와 동일한 반면, 스케줄링 노드(302)는 트리(402)의 루트 스케줄링 노드이고, 스케줄링 노드(304)는 트리(403)의 루트 스케줄링 노드이다.
도 5는 도 4에 도시된 스케줄링 트리들(401-403)과 함께 사용될 수 있는 스케줄링 시스템(212)의 실시예의 기능도를 나타낸다. 도시된 실시예에서, 스케줄링 시스템(212)은 3개의 스케줄링 엔진(521-523), 즉 각각의 스케줄링 트리(401-403)에 대해 하나씩의 스케줄링 엔진을 포함한다. 스케줄링 엔진(521)은 패킷들을 전송 큐(214)로 이동시키는 기능을 하므로 최상위 레벨 스케줄링 엔진으로 분류될 수 있다. 스케줄링 엔진들(522, 523)은 가상 포트 스케줄링 엔진들로서 분류될 수 있는데, 이는 이 스케줄링 엔진들 각각이 패킷들을 전송 큐(214)가 아니라 중간 패킷 큐(예로서, iq1 또는 iq2)로 이동시키기 때문이다.
도시된 예에서, 스케줄링 엔진(521)은 트리(401)를 이용하여, iq1, iq2 및 iq8로 구성되는 패킷 큐 세트로부터 패킷 큐를 선택하고; 가상 포트 스케줄링 엔진(522)은 트리(402)를 이용하여, q1-q3으로 구성되는 패킷 큐 세트로부터 패킷 큐를 선택하며; 가상 포트 스케줄링 엔진(523)은 트리(403)를 이용하여, q4-q7로 구성되는 패킷 큐 세트로부터 패킷 큐를 선택한다. 각각의 스케줄링 엔진(521-523)은 트리(300)와 관련하여 전술한 스케줄링 시스템(212)과 동일한 방식으로 동작한다. 즉, 각각의 스케줄링 엔진(521-523)은 그의 대응하는 스케줄링 트리를 계속 트래버스하며, 따라서 각각의 스케줄링 엔진(521-523)은 대응하는 트리에 기초하여 선택된 패킷 큐로부터 전송 큐(214)로 또는 중간 패킷 큐로 패킷들을 계속 이동시킨다.
더 구체적으로, 스케줄링 엔진(521)은 선택된 패킷 큐로부터 전송 큐(214)로 패킷을 이동시키도록 구성되는 반면, 스케줄링 엔진들(522, 523)은 선택된 패킷 큐로부터 중간 패킷 큐(예로서, 각각 iq1 및 iq2)로 패킷을 각자 이동시키도록 구성된다. 스케줄링 엔진들(521, 522, 523)은 병렬로 동작하도록 구성될 수 있다. 즉, 스케줄링 엔진들(522, 523)이 패킷들을 중간 패킷 큐들(iq1, iq2) 내로 이동시키는 동안, 스케줄링 엔진(521)은 그러한 패킷 큐들로부터 전송 큐(214) 내로 패킷들을 이동시킬 수 있다. 게다가, 스케줄링 엔진들(521, 522, 523)은 서로 독립적으로 동작하도록 구성될 수 있으며, 따라서 스케줄링 엔진들 중 어느 것도 다른 스케줄링 엔진에 의해 유지되는 어떠한 상태 정보도 필요로 하지 않는다. 이러한 방식으로, 패킷들이 전송 큐(214)로 이동되는 레이트가 크게 증가할 수 있다. 예를 들어, 중간 패킷 큐들 중 적어도 하나가 항상 적어도 하나의 패킷을 포함하는 것으로 가정하면, 패킷들이 전송 큐(214)로 이동되는 레이트는 스케줄링 엔진(521)의 "대역폭"(즉, 스케줄링 엔진이 패킷들을 전송 큐(214)로 전송할 수 있는 레이트)에만 의존한다. 더욱이, 일부 실시예들에서, 스케줄링 엔진(521)은 매우 간단한 스케줄링 엔진일 수 있는데, 이는 그의 스케줄링 트리(예로서, 트리(401))가 단일 레벨을 트래버스하는 것만을 필요로 할 수 있기 때문이다(예로서, 루트 스케줄링 노드(301)에 접속된 모든 스케줄링 노드들은 리프 스케줄링 노드들이다). 따라서, 일부 실시예들에서, 스케줄링 엔진(521)은 실질적으로 순전히 하드웨어로 구현되며, 따라서 높은 대역폭을 가질 것이다. 예를 들어, 일부 실시예들에서, 스케줄링 엔진(521)은 주문형 집적 회로(ASIC)로 구성되는(또는 본질적으로 구성되는) 반면, 스케줄링 엔진들(522, 523)은 소프트웨어 기반이다(예를 들어, 어셈블리 언어로 작성된 프로그램과 같은 컴퓨터 프로그램을 저장한 컴퓨터 판독 가능 매체와 관련된 범용 프로세서를 이용하여 구현된다).
도 6은 개념적 스케줄링 트리일 수 있는 스케줄링 트리(300)를 구성하는 스케줄링 노드들로부터 어떻게 상이한 동작 스케줄링 트리들(601-603)의 세트가 형성될 수 있는지를 보여준다. 트리(300)와 같은 기존 스케줄링 트리로부터 다수의 스케줄링 트리가 형성되고, 새로운 트리들 중 하나가 기존 스케줄링 트리의 루트 스케줄링 노드에 직접 접속되는 데 사용되는 둘 이상의 스케줄링 노드를 포함할 때, 그 트리에 대해 새로운 루트 스케줄링 노드가 생성되는 것이 필요할 것이다. 이것은 도 6에 도시되어 있다. 도 6에 도시된 바와 같이, 트리(602)의 루트 스케줄링 노드인 것으로 가상 포트 스케줄링 노드(610)가 생성되었다. 트리(602)가 루트 스케줄링 노드(301)에 형식적으로 직접 접속된 둘 이상의 스케줄링 노드(예로서, 스케줄링 노드 302 및 304)를 포함하기 때문에 가상 포트 스케줄링 노드(610)가 필요하였다. 트리(603)에 대해서는 루트 스케줄링 노드가 생성될 필요가 없는데, 이는 이 트리가 루트 스케줄링 노드(301)에 이전에 직접 접속된 단일 스케줄링 노드만을 포함하기 때문이다. 게다가, 도 6에 도시된 실시예에서, 양 스케줄링 트리(602, 603)는 스케줄링 노드들(621-623)을 포함하며, 따라서 후술하는 바와 같이 부하 균형화 기회(load balancing opportunity)를 제공한다. 스케줄링 노드들(621)은 네트워크(112)를 향하는 트래픽을 나타내고, 스케줄링 노드들(622)은 네트워크(112)를 향하는 음성 트래픽을 나타내며, 스케줄링 노드들(623)은 네트워크(112)를 향하는 비음성(즉, "데이터") 트래픽을 나타낸다.
도 7은 도 6에 도시된 스케줄링 트리들(601-603)과 함께 사용될 수 있는 스케줄링 시스템(212)의 실시예의 기능도를 나타낸다. 도 7에 도시된 실시예에서, 스케줄링 시스템(212)은 3개의 스케줄링 엔진(721-723), 즉 각각의 스케줄링 트리(601-603)에 대해 하나씩의 스케줄링 엔진을 포함한다. 최상위 레벨 스케줄링 엔진(721)은 트리(601)를 이용하여, iq1 및 iq2로 구성되는 패킷 큐 세트로부터 패킷 큐를 선택하고; 가상 포트 스케줄링 엔진(722)은 트리(602)를 이용하여, q1-q7, q8a 및 q9a로 구성되는 패킷 큐 세트로부터 패킷 큐를 선택하며; 가상 포트 스케줄링 엔진(723)은 트리(603)를 이용하여, q8b 및 q9b로 구성되는 패킷 큐 세트로부터 패킷 큐를 선택한다. 각각의 스케줄링 엔진(721-723)은 그의 대응하는 스케줄링 트리를 계속 트래버스하며, 따라서 각각의 스케줄링 엔진(721-723)은 대응하는 트리에 기초하여 선택된 패킷 큐로부터 전송 큐(214)로 또는 중간 패킷 큐(예로서, iq1 또는 iq2)로 패킷들을 계속 이동시킨다. 더 구체적으로, 최상위 레벨 스케줄링 엔진(721)은 선택된 패킷 큐로부터 전송 큐(214)로 패킷을 이동시키도록 구성되는 반면, 가상 포트 스케줄링 엔진들(722, 723)은 선택된 패킷 큐로부터 중간 패킷 큐(즉, 각각 iq1 및 iq2)로 패킷을 각자 이동시키도록 구성된다. 스케줄링 엔진들(521-523)과 같이, 스케줄링 엔진들(721-723)은 병렬로 그리고 서로 독립적으로 동작하도록 구성될 수 있다.
도 7에 더 도시된 바와 같이, 인터페이스(191)는 부하 균형화기(load balancer)(702)를 포함할 수 있다. 도 6 및 7의 실시예에서, PRPU(202)가 네트워크(112)를 향하는 패킷을 수신할 때, PRPU(202)는 패킷을 패킷 큐 내에 즉시 배치하는 대신에 패킷을 부하 균형화기(702)로 전달하며, 이 부하 균형화기는 트래픽을 패킷 큐들(q8a, q9a)과 패킷 큐들(q8b, q9b) 사이에 균일하게 분산시킬 수 있다. 더 구체적으로, 도 6에 지시된 바와 같이, 네트워크(112)를 향하는 음성 트래픽은 패킷 큐들(q8a, q8b) 사이에 균일하게 분산되며, 네트워크(112)로 향하는 비음성 트래픽은 패킷 큐들(q9a, q9b) 사이에 균일하게 분산된다.
도 8은 일 실시예에 따른 프로세스(800)를 나타내는 흐름도이다. 프로세스(800)는 단계 802에서 시작될 수 있으며, 이 단계에서 패킷 큐들의 제1 세트(예로서, 패킷 큐들 q1-q3)가 제1 스케줄링 엔진(예로서, 스케줄링 엔진 522)에 할당된다. 단계 802는 스케줄링 트리(예로서, 스케줄링 트리 402)를 제1 스케줄링 엔진에 할당함으로써 달성될 수 있으며, 스케줄링 트리는 패킷 큐들의 세트와 관련된다(도 4 참조). 단계 804에서, 패킷 큐들의 제2 세트(예로서, 패킷 큐들 q4-q7)가 제2 스케줄링 엔진(예로서, 스케줄링 엔진 523)에 할당된다. 단계 804는 상이한 스케줄링 트리(예로서, 스케줄링 트리 403)를 제2 스케줄링 엔진에 할당함으로써 달성될 수 있다. 단계 806에서, 패킷 큐들의 제3 세트(예로서, 패킷 큐 q8)가 제3 스케줄링 엔진(예로서, 스케줄링 엔진 521)에 할당된다. 단계 808에서, 패킷 큐들의 제1 세트에 포함된 패킷 큐에 제1 패킷 흐름이 할당된다. 예를 들어, 단계 808에서, 네트워크 인터페이스(191)는 PRPU(202)에 의해 수신되는 네트워크(112)를 향하는 모든 패킷들이 예를 들어 q8 내에 배치되도록 구성된다. 단계 810에서, 패킷 큐들의 제2 세트에 포함된 패킷 큐에 제2 패킷 흐름이 할당된다. 단계 812에서, 패킷 큐들의 제3 세트에 포함된 패킷 큐에 제3 패킷 흐름이 할당된다. 일부 실시예들(예로서, 도 6 참조)에서는 단계 812가 수행되지 않는다. 단계 812 후, 프로세스(800)는 단계 814, 820, 824 및 828로 병렬로 진행할 수 있다.
단계 814에서, PRPU(202)는 패킷을 수신한다. 단계 814에서, PRPU(202)는 패킷과 관련된 메타데이터도 수신한다. 단계 816에서, PRPU(202)는 패킷이 속하는 패킷 흐름을 결정한다. 전술한 바와 같이, PRPU(202)는 패킷에 포함된 데이터(예로서, 목적지 어드레스) 및/또는 패킷이 향하는 하나 이상의 VLAN을 식별할 수 있는 메타데이터를 이용하여 패킷 흐름을 결정할 수 있다. 단계 818에서, PRPU(202)는 수신된 패킷을 결정된 패킷 흐름과 관련된 패킷 큐 내에 배치한다. 예를 들어, 단계 818에서, PRPU는 결정된 패킷 흐름(예를 들어, 결정된 VLAN 식별자들)을 이용하여, 결정된 패킷 흐름에 할당된 그 패킷 큐를 데이터베이스(204)에서 탐색할 수 있다. PRPU(202)는 단계 814-818을 연속 수행할 수 있다.
단계 820에서, 제1 스케줄링 엔진은 패킷 큐들의 제1 세트로부터 패킷 큐를 선택한다. 예를 들어, 단계 820에서, 제1 스케줄링 엔진은 스케줄링 트리를 트래버스하여, 트리의 리프 스케줄링 노드에 도달할 수 있으며, 따라서 리프 스케줄링 노드와 관련된 패킷 큐를 선택할 수 있다. 단계 822에서, 제1 스케줄링 엔진은 선택된 패킷 큐로부터 제1 중간 패킷 큐(예로서, iq1)로 패킷을 이동시킨다. 제1 스케줄링 엔진은 단계 820-822를 연속 수행할 수 있다.
일부 실시예들에서, 제1 스케줄링 엔진은 제1 중간 패킷 큐의 상태를 주기적으로 모니터링하며(예를 들어, 패킷 큐의 길이를 주기적으로 결정하며), 패킷 큐의 상태에 따라 단기간 동안 단계 802-822의 수행을 멈출 수 있다(즉, 제1 스케줄링 엔진이 일시 중지될 수 있다). 예를 들어, 제1 스케줄링 엔진이 제1 중간 패킷 큐의 길이가 사전 결정된 임계치보다 큰 것으로 결정하는 경우, 제1 스케줄링 엔진은 그러한 결정에 응답하여 소정량의 시간 동안 일시 중지하거나, 가득 차지 않은 다른 중간 큐들을 향하는 패킷들만을 임시로 선택적으로 스케줄링할 수 있으며, 따라서 제1 중간 패킷 큐가 커지는 것을 방지할 수 있다. 이러한 특징은 (i) 중간 큐들에 의해 소비되는 시스템 자원들(예로서, 패킷 버퍼들)의 양을 제한하고, (ii) 패킷이 중간 큐에서 대기하는 동안 발생할 수 있는 추가적인 전송 지연을 제한하고, (iii) 가상 포트 스케줄링 엔진들과 관련된 규칙들이 궁극적으로 스케줄링 거동을 결정하는 것을 보증하는 이점들을 제공한다.
단계 824에서, 제2 스케줄링 엔진은 패킷 큐들의 제2 세트로부터 패킷 큐를 선택한다. 예를 들어, 단계 824에서, 제2 스케줄링 엔진은 스케줄링 트리를 트래버스하여, 트리의 리프 스케줄링 노드에 도달할 수 있으며, 따라서 리프 스케줄링 노드와 관련된 패킷 큐를 선택할 수 있다. 단계 826에서, 제2 스케줄링 엔진은 선택된 패킷 큐로부터 제2 중간 패킷 큐(예로서, iq2)로 패킷을 이동시킨다. 제2 스케줄링 엔진은 단계 824-826을 연속적으로 그리고 제1 스케줄링 엔진과 무관하게 수행할 수 있다. 제1 스케줄링 엔진과 같이, 제2 스케줄링 엔진은 제2 중간 패킷 큐의 상태를 주기적으로 모니터링할 수 있으며, 패킷 큐의 상태에 따라 일시 중지하도록 구성될 수 있다.
단계 828에서, 제3 스케줄링 엔진은 제1 및 제2 중간 패킷 큐들 및 패킷 큐들의 제3 세트를 포함하는 패킷 큐들의 세트로부터 패킷 큐를 선택한다. 단계 830에서, 제2 스케줄링 엔진은 선택된 패킷 큐로부터 전송 큐(214)로 패킷을 이동시킨다. 제3 스케줄링 엔진은 단계 828-830을 연속적으로 그리고 제1 스케줄링 엔진 및 제2 스케줄링 엔진과 무관하게 수행할 수 있다. 제1 및 제2 스케줄링 엔진과 같이, 제3 스케줄링 엔진은 전송 큐(214)의 상태를 주기적으로 모니터링할 수 있으며, 패킷 큐의 상태에 따라 일시 중지하도록 구성될 수 있다.
위의 방식으로, 다수의 독립적인 스케줄링 엔진을 이용하여, 패킷들을 전송 큐로 이동시킬 수 있으며, 따라서 네트워크 인터페이스(191)의 처리량을 증가시킬 수 있다.
도 2를 다시 참조하면, 도 2에 도시된 바와 같이, 네트워크 요소(108)는 구성 모듈(208)을 포함할 수 있다. 구성 모듈(208)은 사용자(예를 들어, 네트워크 관리자)가 스케줄링 노드를 정의하고, 스케줄링 트리들을 생성하고, 스케줄링 노드들 및/또는 스케줄링 트리들을 스케줄링 엔진들에 할당하는 것을 가능하게 하도록 구성될 수 있다. 예를 들어, 구성 모듈은 네트워크 관리자가 네트워크 인터페이스(191)를 구성하는 것을 가능하게 하는 커맨드-라인 인터페이스(command-line interface; CLI) 또는 그래픽 사용자 인터페이스(graphical-user interface; GUI)를 제공할 수 있다. 게다가, 구성 모듈(208)은 사전 정의된 스케줄링 트리(예로서, 트리 300)로부터 네트워크 인터페이스(191)를 자동 구성하도록(예를 들어, 스케줄링 트리들(예로서, 트리 401-403)의 세트를 생성하도록) 구성될 수 있다. 일부 실시예들에서, 구성 모듈(208)은 스케줄링 트리(예로서, 트리 300)를 정의하는 정보를 검사하고, 제1 스케줄링 엔진에 스케줄링 트리(300)의 제1 서브트리(예로서, 트리 401)를 할당하고, 제2 스케줄링 엔진에 스케줄링 트리(300)의 제2의 상이한 서브트리(예로서, 트리 402)를 할당하도록 구성된다.
특정 예로서, 새로운 DSLAM(901)(도 9 참조)이 통신 시스템(100)에 추가된 것으로 가정한다. 이 새로운 DSLAM(901)이 추가될 때, 네트워크 관리자는 구성 모듈(208)을 이용하여 새로운 스케줄링 노드들을 정의함으로써 DSLAM(901)으로의 패킷들(예로서, VLAN 3을 향하는 모든 패킷들)의 흐름을 표현할 수 있다. 예를 들어, 도 10에 도시된 바와 같이, 네트워크 관리자는 3개의 새로운 스케줄링 노드, 즉 (1) VLAN 3을 향하는 모든 패킷들의 흐름을 표현하는 집성 스케줄링 노드(1001), (2) VLAN 3으로의 모든 높은 우선 순위 패킷들(예로서, 음성 패킷들)의 흐름을 표현하는 리프 스케줄링 노드(1002), 및 (3) VLAN 3으로의 모든 낮은 우선 순위 패킷들의 흐름을 표현하는 리프 스케줄링 노드(1003)를 정의할 수 있다. 집성 스케줄링 노드(1001)는 둘 이상의 자식 스케줄링 노드를 가지므로, 스케줄링 노드(1001)를 정의하는 프로세스는 스케줄링 엔진이 스케줄링 노드(1001)에 도달하고 어느 자식 스케줄링 노드를 선택할지를 선택해야 할 때 스케줄링 엔진이 이용할 스케줄링 알고리즘(예로서, 라운드-로빈)과 스케줄링 노드(1001)를 연관시키는 단계를 포함할 수 있다. 게다가, DSLAM(901)이 8 Gbps의 최대 패킷 전송 용량을 갖는 경우, 네트워크 관리자는 구성 모듈을 더 이용하여, 스케줄링 노드(1001)를 8 Gbps의 최대 대역폭과 연관되도록 구성할 수 있다.
스케줄링 노드들이 정의된 후, 리프 스케줄링 노드들에 의해 표현되는 패킷 흐름은 고유 패킷 큐와 연관되는 것이 필요하다. 구성 모듈(208)은 각각의 리프 스케줄링 노드에 대해 리프 스케줄링 노드에 의해 정의되는 패킷 흐름을 패킷 큐와 맵핑하는 정보를 데이터베이스(204)에 추가하여 패킷 흐름 대 패킷 큐 데이터베이스(204)를 갱신함으로써 이러한 기능을 수행할 수 있다.
게다가, 스케줄링 노드들이 정의된 후, 스케줄링 시스템(212)에 의해 현재 사용되고 있는 스케줄링 트리들 중 하나 이상은 리프 스케줄링 노드들(1002, 1003)을 수용하도록 변경될 필요가 있고/있거나, 새로운 스케줄링 트리가 생성되는 것이 필요하다. 이것은 네트워크 관리자에 의해 수동으로 행해지거나, 구성 모듈(208)에 의해 자동으로 행해질 수 있다.
일례로서, 도 11은 트리(402)가 도시된 바와 같이 패킷 큐들(q9, q10)과 각각 관련된 리프 스케줄링 노드들(1002, 1003)을 수용하도록 어떻게 변경될 수 있는지를 보여준다. 도 11에 도시된 바와 같이, 트리(402)의 새로운 루트 스케줄링 노드인 것으로 가상 포트 스케줄링 노드(1101)가 생성되었다. 트리(402)의 루트 스케줄링 노드인 스케줄링 노드(302) 및 스케줄링 노드(1001)가 별개의 패킷 흐름들을 표현하고, 따라서 스케줄링 노드(1001)가 스케줄링 노드(302)의 자식일 수 없으며, 그 반대도 마찬가지이기 때문에, 가상 포트 스케줄링 노드(1101)를 생성하고 이것을 트리(402)의 루트 스케줄링 노드로 하는 것이 필요하였다. 도시된 바와 같이, 스케줄링 노드(302)는 이제 스케줄링 노드(1101)에 직접 접속되며, 리프 스케줄링 노드들(1002, 1003)은 루트 스케줄링 노드(1101)에 직접 접속된 집성 스케줄링 노드(1001)를 통해 루트 스케줄링 노드(1101)에 간접 접속된다. 도 12는 리프 스케줄링 노드들(1002, 1003)이 스케줄링 트리에 추가될 수 있는 다른 방법을 보여준다. 도 12에 도시된 바와 같이, 트리들(401, 402)은 리프 스케줄링 노드들(1002, 1003)을 각각 수용하도록 변경되었다.
구성 모듈(208)이 스케줄링 트리들을 자동으로 재구성하는 실시예들에서, 구성 모듈(208)은 스케줄링 엔진 대역폭 및 스케줄링 노드들과 관련된 최대 대역폭들을 고려하도록 프로그래밍될 수 있다. 예를 들어, (a) 스케줄링 엔진(522)의 최대 대역폭이 15 Gbps이고, (b) 스케줄링 노드(302)와 관련된 최대 대역폭이 10 Gbps이고, (c) 스케줄링 노드(1001)와 관련된 최대 대역폭도 10 Gbps인 것으로 가정하면, 구성 모듈(208)은 도 11에 도시된 바와 같이 리프 스케줄링 노드들(1002, 1003)을 트리(402)에 추가하지 않는데, 이는 (i) 스케줄링 노드(302)와 관련된 최대 대역폭과 (ii) 스케줄링 노드(1001)와 관련된 최대 대역폭의 합이 스케줄링 엔진(522)의 최대 대역폭보다 크기 때문이다. 또한, 기존의 스케줄링 트리들의 세트에 새로운 스케줄링 트리가 추가될 수 있는 실시예들에서, 구성 모듈(208)은 새로운 스케줄링 트리와 관련된 패킷 흐름들을 스케줄링하기 위해 새로운 가상 포트 스케줄링 엔진을 자동으로 인스턴스화(instantiate)할 수 있다.
이제, 도 13을 참조하면, 도 13은 본 발명의 일부 실시예들에 따른 스케줄링 엔진(522)의 블록도를 나타낸다. 도 13에 도시된 바와 같이, 스케줄링 엔진(522)은 하나 이상의 마이크로프로세서 및/또는 주문형 집적 회로(application specific integrated circuit; ASIC), 필드 프로그래머블 게이트 어레이(Field-programmable gate array; FPGA) 등과 같은 하나 이상의 회로를 포함할 수 있는 데이터 처리 시스템(1302); 네트워크 인터페이스(1304); 및 하나 이상의 비휘발성 저장 디바이스 및/또는 하나 이상의 휘발성 저장 디바이스(예로서, 랜덤 액세스 메모리(RAM))를 포함할 수 있는 데이터 저장 시스템(1306)을 포함할 수 있다. 도시된 바와 같이, 데이터 저장 시스템(1306)은 스케줄링 트리 상태 정보를 저장하는 데 사용될 수 있다. 데이터 처리 시스템(1302)이 마이크로프로세서를 포함하는 실시예들에서, 컴퓨터 판독 가능 프로그램 코드(1343)가 자기 매체(예로서, 하드 디스크), 광학 매체(예로서, DVD), 메모리 디바이스(예로서, 랜덤 액세스 메모리) 등과 같은, 그러나 이에 한정되지 않는, 컴퓨터 판독 가능 매체(1342)에 저장될 수 있다. 일부 실시예들에서, 컴퓨터 판독 가능 프로그램 코드(1343)는 프로세서에 의해 실행될 때 코드(1343)가 스케줄링 엔진(522)으로 하여금 전술한 단계들(예를 들어, 도 8에 도시된 흐름도를 참조하여 전술한 단계들)을 수행하게 하도록 구성된다. 다른 실시예들에서, 스케줄링 엔진(522)은 코드(1343)에 대한 필요 없이 전술한 단계들을 수행하도록 구성된다. 즉, 예를 들어, 데이터 처리 시스템(1302)은 하나 이상의 ASIC만으로 이루어질 수 있다. 따라서, 전술한 본 발명의 특징들은 하드웨어 및/또는 소프트웨어에서 구현될 수 있다. 예를 들어, 특정 실시예들에서, 전술한 스케줄링 엔진(522)의 기능 컴포넌트들은 컴퓨터 명령어들(1343)을 실행하는 데이터 처리 시스템(1302)에 의해, 임의의 컴퓨터 명령어들(1343)과 무관하게 동작하는 데이터 처리 시스템(1302)에 의해 또는 하드웨어 및/또는 소프트웨어의 임의의 적절한 조합에 의해 구현될 수 있다.
이제, 도 14를 참조하면, 도 14는 컴퓨터 판독 가능 프로그램 코드(CRPC)(1343)의 일 실시예를 나타낸다. 도시된 실시예에서, CRPC(1343)는 (1) 스케줄링 트리 데이터베이스(210)로부터 스케줄링 트리를 정의하는 정보를 획득하기 위한 명령어들(1402)의 세트, (2) 스케줄링 트리를 트래버스함으로써 패킷 큐들의 세트로부터 패킷 큐를 주기적으로 선택하기 위한 명령어들(1404)의 세트, 및 (3) 선택된 패킷 큐로부터 중간 패킷 큐로 패킷을 이동시키기 위한 명령어들(1406)의 세트를 포함한다.
본 발명의 다양한 실시예들이 위에서 설명되었지만, 이들은 한정이 아니라 단지 예시적으로 제공되었다는 것을 이해해야 한다. 따라서, 본 발명의 넓이 및 범위는 전술한 임의의 예시적인 실시예들에 의해 한정되어서는 안 된다. 더욱이, 본 발명의 모든 가능한 변형들 내에서의 전술한 요소들의 임의의 조합은 본 명세서에서 달리 지시되지 않는 한 또는 상황에 의해 달리 명확히 반대되지 않는 한은 본 발명에 포함된다.
게다가, 위에서 설명되고 도면들에 도시된 프로세스들은 단계들의 시퀀스로서 도시되지만, 이것은 단지 예시를 위해 행해졌다. 따라서, 일부 단계들이 추가될 수 있고, 일부 단계들이 생략될 수 있고, 단계들의 순서가 재배열될 수 있고, 일부 단계들이 병렬로 수행될 수 있는 것이 고려된다.

Claims (20)

  1. 패킷 스케줄링 장치로서,
    네트워크 요소의 네트워크 인터페이스에서 패킷을 수신하고, 상기 패킷이 속하는 패킷 흐름을 결정하고, 상기 수신된 패킷이 제1 패킷 흐름에 속하면, 상기 수신된 패킷이 상기 제1 패킷 흐름에 속한다는 결정에 응답하여 상기 제1 패킷 흐름에 할당된 패킷 큐들의 세트에 포함된 패킷 큐들 중 하나 내에 상기 수신된 패킷을 배치하고, 상기 수신된 패킷이 제2 패킷 흐름에 속하면, 상기 수신된 패킷이 상기 제2 패킷 흐름에 속한다는 결정에 응답하여 상기 제2 패킷 흐름에 할당된 패킷 큐들의 세트에 포함된 패킷 큐들 중 하나 내에 상기 수신된 패킷을 배치하도록 동작할 수 있는 패킷 수신 및 처리 유닛(PRPU);
    (a) 패킷 큐들의 제1 세트로부터 패킷 큐를 선택하고, (b) 상기 선택된 패킷 큐로부터 중간 패킷 큐들의 제1 세트에 포함된 중간 패킷 큐로 패킷을 이동시키도록 동작할 수 있는 제1 스케줄링 엔진 - 상기 제1 스케줄링 엔진은 스케줄링 노드들의 제1 세트에 대응하는 정보를 이용하여 상기 패킷 큐의 선택을 수행하도록 구성되고, 상기 스케줄링 노드들의 제1 세트에 대응하는 상기 정보는 (a) 상기 스케줄링 노드들의 제1 세트에 포함된 상기 스케줄링 노드들 중 하나와 관련된 제1 최대 데이터 레이트 정보 및 (b) 제1 스케줄링 알고리즘을 식별하는 정보를 포함함 -;
    (a) 패킷 큐들의 제2 세트로부터 패킷 큐를 선택하고, (b) 상기 선택된 패킷 큐로부터 중간 패킷 큐들의 제2 세트에 포함된 중간 패킷 큐로 패킷을 이동시키도록 동작할 수 있는 제2 스케줄링 엔진 - 상기 제2 스케줄링 엔진은 스케줄링 노드들의 제2 세트에 대응하는 정보를 이용하여 상기 패킷 큐의 선택을 수행하도록 구성되고, 상기 스케줄링 노드들의 제2 세트에 대응하는 상기 정보는 (a) 상기 스케줄링 노드들의 제2 세트에 포함된 상기 스케줄링 노드들 중 하나와 관련된 제2 최대 데이터 레이트 정보 및 (b) 제2 스케줄링 알고리즘을 식별하는 정보를 포함함 -;
    (a) 상기 중간 패킷 큐들의 제1 세트 및 상기 중간 패킷 큐들의 제2 세트를 포함하는 패킷 큐들의 세트로부터 패킷 큐를 선택하고, (b) 상기 선택된 패킷 큐로부터 전송 큐로 패킷을 이동시키도록 동작할 수 있는 제3 스케줄링 엔진; 및
    패킷들을 상기 전송 큐로부터 통신 링크 상으로 전송하도록 구성되는 패킷 송신기
    를 포함하고,
    상기 제1 스케줄링 엔진 및 상기 제2 스케줄링 엔진은 상기 제1 스케줄링 엔진과 제2 스케줄링 엔진 사이에 상태 정보가 공유될 필요가 없도록 서로 독립적으로 패킷 큐들을 선택하도록 구성되고,
    상기 스케줄링 노드들의 제1 세트 및 제2 세트는 스케줄링 트리의 일부를 형성하며, 각각의 스케줄링 노드는 상기 스케줄링 트리를 형성하도록 논리적으로 배열되는 데이터 구조로서 구현되고,
    상기 제1 스케줄링 엔진은 상기 패킷 큐를 선택하기 위해 상기 스케줄링 트리의 제1 서브트리를 트래버스하도록 더 동작할 수 있으며, 상기 제1 서브트리는 상기 스케줄링 노드들의 제1 세트에 의해 형성되고,
    상기 제2 스케줄링 엔진은 상기 패킷 큐를 선택하기 위해 상기 스케줄링 트리의 제2 상이한 서브트리를 트래버스하도록 더 동작할 수 있으며, 상기 제2 상이한 서브트리는 상기 스케줄링 노드들의 제2 세트에 의해 형성되는,
    패킷 스케줄링 장치.
  2. 제1항에 있어서,
    상기 제1 스케줄링 엔진 및 제2 스케줄링 엔진은 소프트웨어 기반 스케줄링 엔진들이며, 상기 제3 스케줄링 엔진은 주문형 집적 회로(ASIC) 내에 로직으로서 구현되는 순수 하드웨어 기반 스케줄링 엔진인 패킷 스케줄링 장치.
  3. 제1항에 있어서,
    상기 패킷 큐들의 제1 세트에 포함된 패킷 큐들의 세트가 상기 제1 패킷 흐름과 관련되고,
    상기 패킷 큐들의 제2 세트에 포함된 패킷 큐들의 세트가 상기 제2 패킷 흐름과 관련되는 패킷 스케줄링 장치.
  4. 제3항에 있어서,
    상기 제3 스케줄링 엔진은 상기 중간 패킷 큐들의 제1 세트, 상기 중간 패킷 큐들의 제2 세트 및 패킷 큐들의 제3 세트를 포함하는 패킷 큐들의 세트로부터 패킷 큐를 선택하도록 동작할 수 있으며,
    상기 패킷 큐들의 제3 세트에 포함된 패킷 큐들의 세트는 제3 패킷 흐름과 관련되고,
    상기 PRPU는, 상기 PRPU가 패킷을 수신하고 상기 패킷이 상기 제3 패킷 흐름에 속하는 것으로 결정할 때, 상기 PRPU가 상기 제3 패킷 흐름과 관련된 상기 패킷 큐들의 세트에 포함된 상기 패킷 큐들 중 하나의 패킷 큐 내에 상기 패킷을 배치하도록 구성되는 패킷 스케줄링 장치.
  5. 삭제
  6. 제1항에 있어서,
    상기 스케줄링 트리를 정의하는 정보를 검사하고, 상기 스케줄링 트리의 상기 제1 서브트리를 상기 제1 스케줄링 엔진에 할당하고, 상기 스케줄링 트리의 상기 제2 상이한 서브트리를 상기 제2 스케줄링 엔진에 할당하도록 구성되는 구성 모듈을 더 포함하는 패킷 스케줄링 장치.
  7. 제1항에 있어서,
    상기 스케줄링 노드들의 제1 세트는 상기 스케줄링 노드들의 제2 세트에도 포함된 스케줄링 노드들의 세트를 포함하는 패킷 스케줄링 장치.
  8. 삭제
  9. 삭제
  10. 제1항에 있어서,
    상기 제1 스케줄링 엔진은
    데이터 처리 시스템; 및
    상기 데이터 처리 시스템에 대해 액세스될 수 있는 컴퓨터 판독 가능 매체
    를 포함하고,
    상기 컴퓨터 판독 가능 매체는, 상기 데이터 처리 시스템에 의해 실행될 때 상기 데이터 처리 시스템으로 하여금 (a) 상기 패킷 큐들의 제1 세트로부터 패킷 큐를 선택하게 하고, (b) 상기 선택된 패킷 큐로부터 상기 중간 패킷 큐들의 제1 세트에 포함된 중간 패킷 큐로 패킷을 이동시키게 하는 컴퓨터 판독 가능 프로그램 코드를 저장하는 패킷 스케줄링 장치.
  11. 패킷 스케줄링 방법으로서,
    패킷 큐들의 제1 세트를 제1 스케줄링 엔진에 할당하는 단계;
    패킷 큐들의 제2 세트를 제2 스케줄링 엔진에 할당하는 단계;
    제1 패킷 흐름을 상기 패킷 큐들의 제1 세트에 포함된 패킷 큐들의 세트에 할당하는 단계;
    제2 패킷 흐름을 상기 패킷 큐들의 제2 세트에 포함된 패킷 큐들의 세트에 할당하는 단계;
    네트워크 요소의 네트워크 인터페이스에서 패킷을 수신하는 단계;
    상기 패킷이 속하는 패킷 흐름을 결정하는 단계;
    상기 수신된 패킷이 상기 제1 패킷 흐름에 속하는 경우, 상기 수신된 패킷이 상기 제1 패킷 흐름에 속한다는 결정에 응답하여 상기 제1 패킷 흐름이 할당된 상기 패킷 큐들의 세트에 포함된 상기 패킷 큐들 중 하나의 패킷 큐 내에 상기 수신된 패킷을 배치하는 단계; 및
    상기 수신된 패킷이 상기 제2 패킷 흐름에 속하는 경우, 상기 수신된 패킷이 상기 제2 패킷 흐름에 속한다는 결정에 응답하여 상기 제2 패킷 흐름이 할당된 상기 패킷 큐들의 세트에 포함된 상기 패킷 큐들 중 하나의 패킷 큐 내에 상기 수신된 패킷을 배치하는 단계
    를 포함하고,
    상기 제1 스케줄링 엔진은 (a) 상기 패킷 큐들의 제1 세트로부터 패킷 큐를 선택하고, (b) 상기 선택된 패킷 큐로부터 중간 패킷 큐들의 제1 세트에 포함된 중간 패킷 큐로 패킷을 이동시키며, 상기 제1 스케줄링 엔진은 스케줄링 노드들의 제1 세트에 대응하는 정보를 이용하여 상기 패킷 큐의 선택을 수행하고, 상기 스케줄링 노드들의 제1 세트에 대응하는 상기 정보는 (a) 상기 스케줄링 노드들의 제1 세트에 포함된 상기 스케줄링 노드들 중 하나와 관련된 제1 최대 데이터 레이트 정보 및 (b) 제1 스케줄링 알고리즘을 식별하는 정보를 포함하며,
    상기 제2 스케줄링 엔진은 (a) 상기 패킷 큐들의 제2 세트로부터 패킷 큐를 선택하고, (b) 상기 선택된 패킷 큐로부터 중간 패킷 큐들의 제2 세트에 포함된 중간 패킷 큐로 패킷을 이동시키며, 상기 제2 스케줄링 엔진은 스케줄링 노드들의 제2 세트에 대응하는 정보를 이용하여 상기 패킷 큐의 선택을 수행하고, 상기 스케줄링 노드들의 제2 세트에 대응하는 상기 정보는 (a) 상기 스케줄링 노드들의 제2 세트에 포함된 상기 스케줄링 노드들 중 하나와 관련된 제2 최대 데이터 레이트 정보 및 (b) 제2 스케줄링 알고리즘을 식별하는 정보를 포함하며,
    제3 스케줄링 엔진이 (a) 상기 중간 패킷 큐들의 제1 세트 및 상기 중간 패킷 큐들의 제2 세트를 포함하는 패킷 큐들의 세트로부터 패킷 큐를 선택하고, (b) 상기 선택된 패킷 큐로부터 전송 큐로 패킷을 이동시키며,
    상기 네트워크 인터페이스의 패킷 송신기가 패킷들을 상기 전송 큐로부터 통신 링크 상으로 전송하고,
    상기 제1 스케줄링 엔진 및 상기 제2 스케줄링 엔진은 상기 제1 스케줄링 엔진과 제2 스케줄링 엔진 사이에 상태 정보가 공유될 필요가 없도록 서로 독립적으로 패킷 큐들을 선택하도록 구성되고,
    상기 스케줄링 노드들의 제1 세트 및 제2 세트는 스케줄링 트리의 일부를 형성하며, 각각의 스케줄링 노드는 상기 스케줄링 트리를 형성하도록 논리적으로 배열되는 데이터 구조로서 구현되고,
    상기 제1 스케줄링 엔진은 상기 패킷 큐를 선택하기 위해 상기 스케줄링 트리의 제1 서브트리를 트래버스하며, 상기 제1 서브트리는 상기 스케줄링 노드들의 제1 세트에 의해 형성되고,
    상기 제2 스케줄링 엔진은 상기 패킷 큐를 선택하기 위해 상기 스케줄링 트리의 제2 상이한 서브트리를 트래버스하며, 상기 제2 상이한 서브트리는 상기 스케줄링 노드들의 제2 세트에 의해 형성되는,
    패킷 스케줄링 방법.
  12. 삭제
  13. 제11항에 있어서,
    상기 제1 스케줄링 엔진은 계층적으로 배열된 스케줄링 노드들의 제1 세트를 포함하는 제1 스케줄링 트리에 대응하는 정보를 이용하여 패킷 큐 선택을 수행하고,
    상기 제2 스케줄링 엔진은 계층적으로 배열된 스케줄링 노드들의 제2 세트를 포함하는 제2 스케줄링 트리에 대응하는 정보를 이용하여 패킷 큐 선택을 수행하도록 구성되는 패킷 스케줄링 방법.
  14. 삭제
  15. 삭제
  16. 삭제
  17. 제11항에 있어서,
    상기 제1 스케줄링 엔진 및 제2 스케줄링 엔진은 소프트웨어 기반 스케줄링 엔진들이며, 상기 제3 스케줄링 엔진은 순수 하드웨어 기반 스케줄링 엔진인 패킷 스케줄링 방법.
  18. 제17항에 있어서,
    상기 제1 스케줄링 엔진 및 제2 스케줄링 엔진은 어셈블리 코드를 이용하여 구현되고, 상기 제3 스케줄링 엔진은 주문형 집적 회로(ASIC) 내의 로직으로서 구현되는 패킷 스케줄링 방법.
  19. 제11항에 있어서,
    상기 제3 스케줄링 엔진은 상기 중간 패킷 큐들의 제1 세트, 상기 중간 패킷 큐들의 제2 세트 및 패킷 큐들의 제3 세트를 포함하는 패킷 큐들의 세트로부터 패킷 큐를 선택하고,
    상기 패킷 큐들의 제3 세트에 포함된 패킷 큐들의 세트에 제3 패킷 흐름이 할당되며,
    상기 방법은 상기 수신된 패킷이 상기 제3 패킷 흐름에 속한다는 결정에 응답하여 상기 제3 패킷 흐름이 할당된 상기 패킷 큐들의 세트에 포함된 상기 패킷 큐들 중 하나의 패킷 큐 내에 상기 수신된 패킷을 배치하는 단계를 더 포함하는 패킷 스케줄링 방법.
  20. 제11항에 있어서,
    (i) 상기 패킷 큐들의 제1 세트에 포함된 패킷 큐들의 세트 및 (ii) 상기 패킷 큐들의 제2 세트에 포함된 패킷 큐들의 세트에 제3 패킷 흐름을 할당하는 단계; 및
    상기 수신된 패킷이 상기 제3 패킷 흐름에 속하는 경우, 부하 균형화기(load balancer)를 이용하여, 상기 제3 패킷 흐름이 할당된 상기 패킷 큐들 중 하나의 패킷 큐 내에 상기 수신된 패킷을 배치하는 단계
    를 더 포함하는 패킷 스케줄링 방법.
KR1020137029217A 2011-04-05 2012-04-03 패킷 스케줄링 방법 및 장치 KR101978528B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/080,574 US8705363B2 (en) 2011-04-05 2011-04-05 Packet scheduling method and apparatus
US13/080,574 2011-04-05
PCT/IB2012/051634 WO2012137136A1 (en) 2011-04-05 2012-04-03 Packet scheduling method and apparatus

Publications (2)

Publication Number Publication Date
KR20140025437A KR20140025437A (ko) 2014-03-04
KR101978528B1 true KR101978528B1 (ko) 2019-05-14

Family

ID=46018022

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137029217A KR101978528B1 (ko) 2011-04-05 2012-04-03 패킷 스케줄링 방법 및 장치

Country Status (10)

Country Link
US (1) US8705363B2 (ko)
EP (1) EP2695334B1 (ko)
JP (1) JP5932020B2 (ko)
KR (1) KR101978528B1 (ko)
CN (1) CN103444141B (ko)
AU (1) AU2012241044A1 (ko)
BR (1) BR112013023451B1 (ko)
CA (1) CA2832448C (ko)
IL (1) IL228114A0 (ko)
WO (1) WO2012137136A1 (ko)

Families Citing this family (145)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9456054B2 (en) 2008-05-16 2016-09-27 Palo Alto Research Center Incorporated Controlling the spread of interests and content in a content centric network
US8923293B2 (en) 2009-10-21 2014-12-30 Palo Alto Research Center Incorporated Adaptive multi-interface use for content networking
KR20150046100A (ko) 2012-08-10 2015-04-29 뉘앙스 커뮤니케이션즈, 인코포레이티드 전자 디바이스에 대한 가상 에이전트 통신
US9280546B2 (en) 2012-10-31 2016-03-08 Palo Alto Research Center Incorporated System and method for accessing digital content using a location-independent name
US9400800B2 (en) 2012-11-19 2016-07-26 Palo Alto Research Center Incorporated Data transport by named content synchronization
US9679300B2 (en) * 2012-12-11 2017-06-13 Nuance Communications, Inc. Systems and methods for virtual agent recommendation for multiple persons
US10430839B2 (en) 2012-12-12 2019-10-01 Cisco Technology, Inc. Distributed advertisement insertion in content-centric networks
US9978025B2 (en) 2013-03-20 2018-05-22 Cisco Technology, Inc. Ordered-element naming for name-based packet forwarding
US9935791B2 (en) 2013-05-20 2018-04-03 Cisco Technology, Inc. Method and system for name resolution across heterogeneous architectures
US9444722B2 (en) 2013-08-01 2016-09-13 Palo Alto Research Center Incorporated Method and apparatus for configuring routing paths in a custodian-based routing architecture
US20150109997A1 (en) * 2013-10-21 2015-04-23 Alexander Sirotkin Apparatus, system and method of interfacing between a cellular manager and a wlan access device
US9407549B2 (en) 2013-10-29 2016-08-02 Palo Alto Research Center Incorporated System and method for hash-based forwarding of packets with hierarchically structured variable-length identifiers
US9276840B2 (en) 2013-10-30 2016-03-01 Palo Alto Research Center Incorporated Interest messages with a payload for a named data network
US9401864B2 (en) 2013-10-31 2016-07-26 Palo Alto Research Center Incorporated Express header for packets with hierarchically structured variable-length identifiers
US9311377B2 (en) 2013-11-13 2016-04-12 Palo Alto Research Center Incorporated Method and apparatus for performing server handoff in a name-based content distribution system
US10129365B2 (en) 2013-11-13 2018-11-13 Cisco Technology, Inc. Method and apparatus for pre-fetching remote content based on static and dynamic recommendations
US10101801B2 (en) 2013-11-13 2018-10-16 Cisco Technology, Inc. Method and apparatus for prefetching content in a data stream
US10089655B2 (en) 2013-11-27 2018-10-02 Cisco Technology, Inc. Method and apparatus for scalable data broadcasting
US9503358B2 (en) 2013-12-05 2016-11-22 Palo Alto Research Center Incorporated Distance-based routing in an information-centric network
US20170017501A1 (en) 2013-12-16 2017-01-19 Nuance Communications, Inc. Systems and methods for providing a virtual assistant
WO2015091195A1 (en) * 2013-12-19 2015-06-25 Thomson Licensing Method for an automatic selection of an ip qos mechanism, respective cpe device and computer readable storage medium
US9379979B2 (en) 2014-01-14 2016-06-28 Palo Alto Research Center Incorporated Method and apparatus for establishing a virtual interface for a set of mutual-listener devices
US10098051B2 (en) 2014-01-22 2018-10-09 Cisco Technology, Inc. Gateways and routing in software-defined manets
US10172068B2 (en) 2014-01-22 2019-01-01 Cisco Technology, Inc. Service-oriented routing in software-defined MANETs
US9374304B2 (en) 2014-01-24 2016-06-21 Palo Alto Research Center Incorporated End-to end route tracing over a named-data network
US9954678B2 (en) 2014-02-06 2018-04-24 Cisco Technology, Inc. Content-based transport security
US9678998B2 (en) 2014-02-28 2017-06-13 Cisco Technology, Inc. Content name resolution for information centric networking
US10089651B2 (en) 2014-03-03 2018-10-02 Cisco Technology, Inc. Method and apparatus for streaming advertisements in a scalable data broadcasting system
US9836540B2 (en) 2014-03-04 2017-12-05 Cisco Technology, Inc. System and method for direct storage access in a content-centric network
US9473405B2 (en) 2014-03-10 2016-10-18 Palo Alto Research Center Incorporated Concurrent hashes and sub-hashes on data streams
US9626413B2 (en) 2014-03-10 2017-04-18 Cisco Systems, Inc. System and method for ranking content popularity in a content-centric network
US9391896B2 (en) * 2014-03-10 2016-07-12 Palo Alto Research Center Incorporated System and method for packet forwarding using a conjunctive normal form strategy in a content-centric network
US10218639B2 (en) * 2014-03-14 2019-02-26 Microsoft Technology Licensing, Llc Computing long-term schedules for data transfers over a wide area network
US9407432B2 (en) 2014-03-19 2016-08-02 Palo Alto Research Center Incorporated System and method for efficient and secure distribution of digital content
JP5970015B2 (ja) * 2014-03-19 2016-08-17 アンリツネットワークス株式会社 パケット中継装置
US9916601B2 (en) 2014-03-21 2018-03-13 Cisco Technology, Inc. Marketplace for presenting advertisements in a scalable data broadcasting system
US9363179B2 (en) 2014-03-26 2016-06-07 Palo Alto Research Center Incorporated Multi-publisher routing protocol for named data networks
US9363086B2 (en) 2014-03-31 2016-06-07 Palo Alto Research Center Incorporated Aggregate signing of data in content centric networking
CN103929374A (zh) * 2014-03-31 2014-07-16 中国人民解放军91655部队 一种基于业务类型的多级队列调度方法
US9716622B2 (en) 2014-04-01 2017-07-25 Cisco Technology, Inc. System and method for dynamic name configuration in content-centric networks
US9390289B2 (en) 2014-04-07 2016-07-12 Palo Alto Research Center Incorporated Secure collection synchronization using matched network names
US10075521B2 (en) 2014-04-07 2018-09-11 Cisco Technology, Inc. Collection synchronization using equality matched network names
US9473576B2 (en) 2014-04-07 2016-10-18 Palo Alto Research Center Incorporated Service discovery using collection synchronization with exact names
US9451032B2 (en) 2014-04-10 2016-09-20 Palo Alto Research Center Incorporated System and method for simple service discovery in content-centric networks
US9992281B2 (en) 2014-05-01 2018-06-05 Cisco Technology, Inc. Accountable content stores for information centric networks
US9609014B2 (en) 2014-05-22 2017-03-28 Cisco Systems, Inc. Method and apparatus for preventing insertion of malicious content at a named data network router
US9455835B2 (en) 2014-05-23 2016-09-27 Palo Alto Research Center Incorporated System and method for circular link resolution with hash-based names in content-centric networks
US9276751B2 (en) 2014-05-28 2016-03-01 Palo Alto Research Center Incorporated System and method for circular link resolution with computable hash-based names in content-centric networks
US9516144B2 (en) 2014-06-19 2016-12-06 Palo Alto Research Center Incorporated Cut-through forwarding of CCNx message fragments with IP encapsulation
US9537719B2 (en) 2014-06-19 2017-01-03 Palo Alto Research Center Incorporated Method and apparatus for deploying a minimal-cost CCN topology
US9426113B2 (en) 2014-06-30 2016-08-23 Palo Alto Research Center Incorporated System and method for managing devices over a content centric network
US9699198B2 (en) 2014-07-07 2017-07-04 Cisco Technology, Inc. System and method for parallel secure content bootstrapping in content-centric networks
US9621354B2 (en) 2014-07-17 2017-04-11 Cisco Systems, Inc. Reconstructable content objects
US9959156B2 (en) 2014-07-17 2018-05-01 Cisco Technology, Inc. Interest return control message
US9590887B2 (en) 2014-07-18 2017-03-07 Cisco Systems, Inc. Method and system for keeping interest alive in a content centric network
US9729616B2 (en) 2014-07-18 2017-08-08 Cisco Technology, Inc. Reputation-based strategy for forwarding and responding to interests over a content centric network
US9535968B2 (en) 2014-07-21 2017-01-03 Palo Alto Research Center Incorporated System for distributing nameless objects using self-certifying names
US9882964B2 (en) 2014-08-08 2018-01-30 Cisco Technology, Inc. Explicit strategy feedback in name-based forwarding
US9729662B2 (en) 2014-08-11 2017-08-08 Cisco Technology, Inc. Probabilistic lazy-forwarding technique without validation in a content centric network
US9503365B2 (en) 2014-08-11 2016-11-22 Palo Alto Research Center Incorporated Reputation-based instruction processing over an information centric network
US9391777B2 (en) 2014-08-15 2016-07-12 Palo Alto Research Center Incorporated System and method for performing key resolution over a content centric network
US9800637B2 (en) 2014-08-19 2017-10-24 Cisco Technology, Inc. System and method for all-in-one content stream in content-centric networks
US9467492B2 (en) 2014-08-19 2016-10-11 Palo Alto Research Center Incorporated System and method for reconstructable all-in-one content stream
US9497282B2 (en) 2014-08-27 2016-11-15 Palo Alto Research Center Incorporated Network coding for content-centric network
US10204013B2 (en) 2014-09-03 2019-02-12 Cisco Technology, Inc. System and method for maintaining a distributed and fault-tolerant state over an information centric network
US9553812B2 (en) 2014-09-09 2017-01-24 Palo Alto Research Center Incorporated Interest keep alives at intermediate routers in a CCN
US10069933B2 (en) 2014-10-23 2018-09-04 Cisco Technology, Inc. System and method for creating virtual interfaces based on network characteristics
US9917882B2 (en) 2014-11-30 2018-03-13 Sonicwall Inc. Transparent deferred spooling store and forward based on standard network system and client interface
US9590948B2 (en) 2014-12-15 2017-03-07 Cisco Systems, Inc. CCN routing using hardware-assisted hash tables
US9536059B2 (en) 2014-12-15 2017-01-03 Palo Alto Research Center Incorporated Method and system for verifying renamed content using manifests in a content centric network
US10237189B2 (en) 2014-12-16 2019-03-19 Cisco Technology, Inc. System and method for distance-based interest forwarding
US9846881B2 (en) 2014-12-19 2017-12-19 Palo Alto Research Center Incorporated Frugal user engagement help systems
US10003520B2 (en) 2014-12-22 2018-06-19 Cisco Technology, Inc. System and method for efficient name-based content routing using link-state information in information-centric networks
US9473475B2 (en) 2014-12-22 2016-10-18 Palo Alto Research Center Incorporated Low-cost authenticated signing delegation in content centric networking
US9660825B2 (en) 2014-12-24 2017-05-23 Cisco Technology, Inc. System and method for multi-source multicasting in content-centric networks
US10313486B2 (en) * 2015-01-07 2019-06-04 Sonicwall Inc. Optimizing transfer of fragmented packetized data
US9946743B2 (en) 2015-01-12 2018-04-17 Cisco Technology, Inc. Order encoded manifests in a content centric network
US9602596B2 (en) 2015-01-12 2017-03-21 Cisco Systems, Inc. Peer-to-peer sharing in a content centric network
US9954795B2 (en) 2015-01-12 2018-04-24 Cisco Technology, Inc. Resource allocation using CCN manifests
US9832291B2 (en) 2015-01-12 2017-11-28 Cisco Technology, Inc. Auto-configurable transport stack
US9916457B2 (en) 2015-01-12 2018-03-13 Cisco Technology, Inc. Decoupled name security binding for CCN objects
US9462006B2 (en) 2015-01-21 2016-10-04 Palo Alto Research Center Incorporated Network-layer application-specific trust model
US9552493B2 (en) 2015-02-03 2017-01-24 Palo Alto Research Center Incorporated Access control framework for information centric networking
US10333840B2 (en) 2015-02-06 2019-06-25 Cisco Technology, Inc. System and method for on-demand content exchange with adaptive naming in information-centric networks
US10075401B2 (en) 2015-03-18 2018-09-11 Cisco Technology, Inc. Pending interest table behavior
US9813526B2 (en) 2015-05-26 2017-11-07 Sonicwall Inc. Reducing transmission pathway lengths within a distributed network
US10116605B2 (en) 2015-06-22 2018-10-30 Cisco Technology, Inc. Transport stack name scheme and identity management
US10075402B2 (en) 2015-06-24 2018-09-11 Cisco Technology, Inc. Flexible command and control in content centric networks
US10701038B2 (en) 2015-07-27 2020-06-30 Cisco Technology, Inc. Content negotiation in a content centric network
US9986034B2 (en) 2015-08-03 2018-05-29 Cisco Technology, Inc. Transferring state in content centric network stacks
US10158735B2 (en) 2015-08-07 2018-12-18 Sonicwall Inc. Read-ahead on signed connections with unsigning, inline, transparent proxies
US10610144B2 (en) 2015-08-19 2020-04-07 Palo Alto Research Center Incorporated Interactive remote patient monitoring and condition management intervention system
US9832123B2 (en) 2015-09-11 2017-11-28 Cisco Technology, Inc. Network named fragments in a content centric network
US10355999B2 (en) 2015-09-23 2019-07-16 Cisco Technology, Inc. Flow control with network named fragments
US9977809B2 (en) 2015-09-24 2018-05-22 Cisco Technology, Inc. Information and data framework in a content centric network
US10313227B2 (en) 2015-09-24 2019-06-04 Cisco Technology, Inc. System and method for eliminating undetected interest looping in information-centric networks
US10454820B2 (en) 2015-09-29 2019-10-22 Cisco Technology, Inc. System and method for stateless information-centric networking
US10263965B2 (en) 2015-10-16 2019-04-16 Cisco Technology, Inc. Encrypted CCNx
US9794238B2 (en) 2015-10-29 2017-10-17 Cisco Technology, Inc. System for key exchange in a content centric network
US10009446B2 (en) 2015-11-02 2018-06-26 Cisco Technology, Inc. Header compression for CCN messages using dictionary learning
US9807205B2 (en) 2015-11-02 2017-10-31 Cisco Technology, Inc. Header compression for CCN messages using dictionary
US10021222B2 (en) 2015-11-04 2018-07-10 Cisco Technology, Inc. Bit-aligned header compression for CCN messages using dictionary
US10097521B2 (en) 2015-11-20 2018-10-09 Cisco Technology, Inc. Transparent encryption in a content centric network
US9912776B2 (en) 2015-12-02 2018-03-06 Cisco Technology, Inc. Explicit content deletion commands in a content centric network
US10097346B2 (en) 2015-12-09 2018-10-09 Cisco Technology, Inc. Key catalogs in a content centric network
US10078062B2 (en) 2015-12-15 2018-09-18 Palo Alto Research Center Incorporated Device health estimation by combining contextual information with sensor data
US10547559B2 (en) * 2015-12-26 2020-01-28 Intel Corporation Application-level network queueing
US10257271B2 (en) 2016-01-11 2019-04-09 Cisco Technology, Inc. Chandra-Toueg consensus in a content centric network
US9949301B2 (en) 2016-01-20 2018-04-17 Palo Alto Research Center Incorporated Methods for fast, secure and privacy-friendly internet connection discovery in wireless networks
US10305864B2 (en) 2016-01-25 2019-05-28 Cisco Technology, Inc. Method and system for interest encryption in a content centric network
US10043016B2 (en) 2016-02-29 2018-08-07 Cisco Technology, Inc. Method and system for name encryption agreement in a content centric network
US10742596B2 (en) 2016-03-04 2020-08-11 Cisco Technology, Inc. Method and system for reducing a collision probability of hash-based names using a publisher identifier
US10003507B2 (en) 2016-03-04 2018-06-19 Cisco Technology, Inc. Transport session state protocol
US10051071B2 (en) 2016-03-04 2018-08-14 Cisco Technology, Inc. Method and system for collecting historical network information in a content centric network
US10038633B2 (en) 2016-03-04 2018-07-31 Cisco Technology, Inc. Protocol to query for historical network information in a content centric network
US9832116B2 (en) 2016-03-14 2017-11-28 Cisco Technology, Inc. Adjusting entries in a forwarding information base in a content centric network
US10212196B2 (en) 2016-03-16 2019-02-19 Cisco Technology, Inc. Interface discovery and authentication in a name-based network
US10067948B2 (en) 2016-03-18 2018-09-04 Cisco Technology, Inc. Data deduping in content centric networking manifests
US11436656B2 (en) 2016-03-18 2022-09-06 Palo Alto Research Center Incorporated System and method for a real-time egocentric collaborative filter on large datasets
US10091330B2 (en) 2016-03-23 2018-10-02 Cisco Technology, Inc. Interest scheduling by an information and data framework in a content centric network
US10033639B2 (en) 2016-03-25 2018-07-24 Cisco Technology, Inc. System and method for routing packets in a content centric network using anonymous datagrams
US10320760B2 (en) 2016-04-01 2019-06-11 Cisco Technology, Inc. Method and system for mutating and caching content in a content centric network
US9930146B2 (en) 2016-04-04 2018-03-27 Cisco Technology, Inc. System and method for compressing content centric networking messages
US10425503B2 (en) 2016-04-07 2019-09-24 Cisco Technology, Inc. Shared pending interest table in a content centric network
US10027578B2 (en) 2016-04-11 2018-07-17 Cisco Technology, Inc. Method and system for routable prefix queries in a content centric network
US10404450B2 (en) 2016-05-02 2019-09-03 Cisco Technology, Inc. Schematized access control in a content centric network
US10320675B2 (en) 2016-05-04 2019-06-11 Cisco Technology, Inc. System and method for routing packets in a stateless content centric network
US10547589B2 (en) 2016-05-09 2020-01-28 Cisco Technology, Inc. System for implementing a small computer systems interface protocol over a content centric network
US10063414B2 (en) 2016-05-13 2018-08-28 Cisco Technology, Inc. Updating a transport stack in a content centric network
US10084764B2 (en) 2016-05-13 2018-09-25 Cisco Technology, Inc. System for a secure encryption proxy in a content centric network
CN107016008B (zh) * 2016-06-06 2020-06-09 阿里巴巴集团控股有限公司 信息处理方法和装置及动态信息的显示方法和装置
US10103989B2 (en) 2016-06-13 2018-10-16 Cisco Technology, Inc. Content object return messages in a content centric network
US10305865B2 (en) 2016-06-21 2019-05-28 Cisco Technology, Inc. Permutation-based content encryption with manifests in a content centric network
US10148572B2 (en) 2016-06-27 2018-12-04 Cisco Technology, Inc. Method and system for interest groups in a content centric network
US10009266B2 (en) 2016-07-05 2018-06-26 Cisco Technology, Inc. Method and system for reference counted pending interest tables in a content centric network
US9992097B2 (en) 2016-07-11 2018-06-05 Cisco Technology, Inc. System and method for piggybacking routing information in interests in a content centric network
US10122624B2 (en) 2016-07-25 2018-11-06 Cisco Technology, Inc. System and method for ephemeral entries in a forwarding information base in a content centric network
US10069729B2 (en) 2016-08-08 2018-09-04 Cisco Technology, Inc. System and method for throttling traffic based on a forwarding information base in a content centric network
US10956412B2 (en) 2016-08-09 2021-03-23 Cisco Technology, Inc. Method and system for conjunctive normal form attribute matching in a content centric network
US10033642B2 (en) 2016-09-19 2018-07-24 Cisco Technology, Inc. System and method for making optimal routing decisions based on device-specific parameters in a content centric network
US10212248B2 (en) 2016-10-03 2019-02-19 Cisco Technology, Inc. Cache management on high availability routers in a content centric network
US10447805B2 (en) 2016-10-10 2019-10-15 Cisco Technology, Inc. Distributed consensus in a content centric network
US10135948B2 (en) 2016-10-31 2018-11-20 Cisco Technology, Inc. System and method for process migration in a content centric network
US10243851B2 (en) 2016-11-21 2019-03-26 Cisco Technology, Inc. System and method for forwarder connection information in a content centric network
CN115237573B (zh) * 2022-08-05 2023-08-18 中国铁塔股份有限公司 数据处理方法、装置、电子设备和可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6834053B1 (en) 2000-10-27 2004-12-21 Nortel Networks Limited Distributed traffic scheduler
US7830889B1 (en) 2003-02-06 2010-11-09 Juniper Networks, Inc. Systems for scheduling the transmission of data in a network device
JP2011049658A (ja) 2009-08-25 2011-03-10 Fujitsu Ltd パケット中継装置および輻輳制御方法
US7969884B1 (en) 2008-05-09 2011-06-28 Nortel Networks Limited Method and system for weight and rate scheduling
US8081572B1 (en) 2006-01-11 2011-12-20 Juniper Networks, Inc. Hierarchical packet scheduling
US8437355B1 (en) 2010-11-04 2013-05-07 Adtran, Inc. Systems and methods for scheduling business and residential services in optical networks

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6891834B1 (en) * 1999-09-09 2005-05-10 Avici Systems Apparatus and method for packet scheduling
JP2002252628A (ja) * 2001-02-23 2002-09-06 Nippon Telegr & Teleph Corp <Ntt> パケット出力調停装置
US6987774B1 (en) * 2001-06-20 2006-01-17 Redback Networks Inc. Method and apparatus for traffic scheduling
US20050047425A1 (en) * 2003-09-03 2005-03-03 Yonghe Liu Hierarchical scheduling for communications systems
US7685281B1 (en) * 2004-02-13 2010-03-23 Habanero Holdings, Inc. Programmatic instantiation, provisioning and management of fabric-backplane enterprise servers
US20070070895A1 (en) * 2005-09-26 2007-03-29 Paolo Narvaez Scaleable channel scheduler system and method
US20070242675A1 (en) * 2006-04-13 2007-10-18 David Romrell Dual scheduling for efficient network traffic management
US8194690B1 (en) * 2006-05-24 2012-06-05 Tilera Corporation Packet processing in a parallel processing environment
JP2010153950A (ja) * 2008-12-24 2010-07-08 Nec Corp 優先制御装置、パケット通信システム及びそれに用いる優先制御方法並びにそのプログラム
US8462802B2 (en) * 2010-09-13 2013-06-11 Juniper Networks, Inc. Hybrid weighted round robin (WRR) traffic scheduling

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6834053B1 (en) 2000-10-27 2004-12-21 Nortel Networks Limited Distributed traffic scheduler
US7830889B1 (en) 2003-02-06 2010-11-09 Juniper Networks, Inc. Systems for scheduling the transmission of data in a network device
US8081572B1 (en) 2006-01-11 2011-12-20 Juniper Networks, Inc. Hierarchical packet scheduling
US7969884B1 (en) 2008-05-09 2011-06-28 Nortel Networks Limited Method and system for weight and rate scheduling
JP2011049658A (ja) 2009-08-25 2011-03-10 Fujitsu Ltd パケット中継装置および輻輳制御方法
US8437355B1 (en) 2010-11-04 2013-05-07 Adtran, Inc. Systems and methods for scheduling business and residential services in optical networks

Also Published As

Publication number Publication date
EP2695334B1 (en) 2019-08-07
IL228114A0 (en) 2013-09-30
CN103444141B (zh) 2016-09-14
CA2832448A1 (en) 2012-10-11
WO2012137136A1 (en) 2012-10-11
BR112013023451A2 (pt) 2016-12-06
AU2012241044A1 (en) 2013-10-17
US20120257500A1 (en) 2012-10-11
JP5932020B2 (ja) 2016-06-08
BR112013023451B1 (pt) 2022-04-12
US8705363B2 (en) 2014-04-22
CN103444141A (zh) 2013-12-11
JP2014513466A (ja) 2014-05-29
CA2832448C (en) 2019-05-14
KR20140025437A (ko) 2014-03-04
EP2695334A1 (en) 2014-02-12

Similar Documents

Publication Publication Date Title
KR101978528B1 (ko) 패킷 스케줄링 방법 및 장치
US11588733B2 (en) Slice-based routing
US9923817B2 (en) Redirecting network traffic based on content
US10708197B2 (en) Network data processor having per-input port virtual output queues
US9270598B1 (en) Congestion control using congestion prefix information in a named data networking environment
US9071529B2 (en) Method and apparatus for accelerating forwarding in software-defined networks
US8040901B1 (en) Packet queueing within ring networks
JP2023503274A (ja) 高性能コンピューティング環境においてプライベートファブリックにおける順方向および逆方向輻輳通知の使用をサポートするためのシステムおよび方法
KR101317969B1 (ko) 링크 애그리게이션 방법 및 노드
Liu et al. Delay-optimized video traffic routing in software-defined interdatacenter networks
JP6510115B2 (ja) 負荷分散を実現するための方法、装置、およびネットワークシステム
US20110267952A1 (en) Dynamic latency-based rerouting
CN106559330B (zh) 一种基于sdn的动态路径规划方法
CN105991470B (zh) 以太网设备缓存报文的方法及装置
CN103534997A (zh) 用于无损耗以太网的基于端口和优先级的流控制机制
Cheng et al. Application-aware SDN routing for big data networking
US9608918B2 (en) Enabling concurrent operation of tail-drop and priority-based flow control in network devices
CN108667746B (zh) 一种在深空延时容忍网络中实现业务优先级的方法
US10834010B2 (en) Mitigating priority flow control deadlock in stretch topologies
Wang et al. Research on bandwidth control technology based on SDN
US9185042B2 (en) System and method for automated quality of service configuration through the access network
Subedi et al. SDN‐based fault‐tolerant on‐demand and in‐advance bandwidth reservation in data center interconnects

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant