KR20200001532A - 컴퓨팅 디바이스에서 패킷 수명을 예측하기 위한 큐잉 시스템 - Google Patents

컴퓨팅 디바이스에서 패킷 수명을 예측하기 위한 큐잉 시스템 Download PDF

Info

Publication number
KR20200001532A
KR20200001532A KR1020190075557A KR20190075557A KR20200001532A KR 20200001532 A KR20200001532 A KR 20200001532A KR 1020190075557 A KR1020190075557 A KR 1020190075557A KR 20190075557 A KR20190075557 A KR 20190075557A KR 20200001532 A KR20200001532 A KR 20200001532A
Authority
KR
South Korea
Prior art keywords
queue
memory
dequeue rate
state
threshold
Prior art date
Application number
KR1020190075557A
Other languages
English (en)
Other versions
KR102177574B1 (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 KR20200001532A publication Critical patent/KR20200001532A/ko
Application granted granted Critical
Publication of KR102177574B1 publication Critical patent/KR102177574B1/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/52Queue scheduling by attributing bandwidth to queues
    • H04L47/522Dynamic queue service slot or variable bandwidth allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6295Queue scheduling characterised by scheduling criteria using multiple queues, one for each individual QoS, connection, flow or priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/56Queue scheduling implementing delay-aware scheduling
    • H04L47/562Attaching a time tag to queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/022Capturing of monitoring data by sampling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0894Packet rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • H04L47/283Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/56Queue scheduling implementing delay-aware scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/6275Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/83Admission control; Resource allocation based on usage prediction
    • 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
    • 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
    • H04L49/9078Intermediate storage in different physical parts of a node or terminal using an external memory or storage device

Abstract

네트워크 디바이스들을 위한 큐잉 시스템을 위한 기법들이 개시된다. 일 예에서, 네트워크 디바이스는 복수의 메모리 및 복수의 메모리에 접속된 프로세싱 회로를 포함한다. 복수의 메모리는 프로세싱 회로의 로컬 메모리 및 프로세싱 회로에 대한 외부 메모리를 포함한다. 프로세싱 회로는 프로세싱될 착신 네트워크 패킷을 수신하고 - 네트워크 패킷은 프로세싱 전에 큐에 보유됨 - 큐에 대한 디큐 레이트에 기초하여 네트워크 패킷의 예측된 수명을 결정하도록 구성된다. 프로세싱 회로는 예측된 수명에 기초하여 복수의 메모리 중 제1 메모리를 선택하고, 복수의 메모리 중 제1 메모리를 선택하는 것에 응답하여 제1 메모리에 네트워크 패킷을 저장하도록 추가로 구성된다.

Description

컴퓨팅 디바이스에서 패킷 수명을 예측하기 위한 큐잉 시스템{QUEUING SYSTEM TO PREDICT PACKET LIFETIME IN A COMPUTING DEVICE}
우선권 주장
본 출원은 그 전체 내용이 인용에 의해 본 명세서에 포함되는, 2018년 6월 27일자로 출원된 미국 특허 출원 제16/020,842호의 이익을 주장한다.
기술 분야
본 개시내용은 일반적으로 컴퓨팅 디바이스들에 관한 것으로, 특히 네트워킹 디바이스들에서의 큐잉에 관한 것이다.
컴퓨터 네트워크는 데이터를 교환하고 리소스들을 공유할 수 있는 상호접속된 네트워크 디바이스들의 집합이다. 예시적인 네트워크 디바이스들은 OSI(Open Systems Interconnection) 참조 모델의 계층 2, 즉, 데이터 링크 계층 내에서 동작하는 라우터들, 스위치들, 및 다른 계층 2(L2) 네트워크 디바이스들, 및 OSI 참조 모델의 계층 3, 즉, 네트워크 계층 내에서 동작하는 계층 3(L3) 네트워크 디바이스들을 포함한다. 컴퓨터 네트워크 내의 네트워크 디바이스들은 종종 네트워크 디바이스에 대한 제어 평면 기능성을 제공하는 제어 유닛 및 데이터 유닛들을 라우팅하거나 스위칭하기 위한 포워딩 컴포넌트들을 포함한다.
컴퓨터 네트워크의 네트워크 스위치는 송신기와 수신기 사이의 대역폭 매칭을 제공하는 것을 돕기 위해 큐를 사용할 수 있다. 더 구체적으로, 네트워크 스위치는 송신기로부터의 패킷들을 비교적 빠른 레이트로 수신한다. 네트워크 스위치는 수신된 패킷들의 일부를 송신기로부터 수신기로 비교적 느린 레이트로 송신하고, 수신된 패킷들의 나머지 부분을 큐에 저장한다. 수신된 패킷들의 일부를 송신한 후, 네트워크 스위치는 큐에 저장된 패킷들을 비교적 느린 레이트로 수신기에 송신한다.
일반적으로, 본 개시내용은 네트워크 디바이스들에서 개선된 큐잉 시스템들을 위한 기법들을 설명한다. 라우터 또는 스위치와 같은 네트워크 디바이스는 패킷 포워딩 엔진들 사이에서 내부적으로 스위칭하기 전에, 또는 네트워크를 통해 패킷들을 송신하기 전에 하나 이상의 큐에 패킷들을 인큐(enqueue)할 수 있다. 큐를 위한 패킷들은 지연 대역폭 버퍼에 저장될 수 있고, 이 버퍼는 로컬 메모리(예컨대, 온 칩 메모리) 및 외부 메모리(예컨대, 고대역폭 메모리(HBM)) 양쪽 모두를 포함하는 "하이브리드 메모리"로서 구현될 수 있다.
따라서, 본 개시내용의 기법들은 로컬 메모리와 외부 메모리 사이에 선택하기 위해, 본 명세서에서 "예측된 수명"이라고도 지칭되는 패킷 "수명"을 예측하는 네트워크 디바이스를 위한 큐잉 시스템을 설명한다. 수명은 패킷이 지연 대역폭 버퍼에 상주할 것으로 예상되는 시간의 예측이다. 설명된 기법들에 따르면, 네트워크 디바이스는 "짧은" 수명을 갖는 패킷들(예컨대, 기입되어 시간상 빠르게 판독되는 패킷들)을 로컬 메모리에 저장하고, "긴" 수명을 갖는 패킷들(예컨대, 기입되지만, 짧은 수명을 갖는 패킷들에 비해 시간상 훨씬 나중에 판독되는 패킷들)을 외부 메모리에 저장한다.
본 개시내용의 기법들은 패킷들의 지연 대역폭 버퍼 요건들을 예상하고, 패킷들의 예측된 수명에 대한 "최상의" 메모리에 패킷들을 배치함으로써 하이브리드 메모리 성능을 최적화하기 위해 수명을 사용한다. 예를 들어, 네트워크 디바이스는 지연 대역폭 버퍼에 들어가고 빠르게 나오는 패킷들을 로컬 메모리에 저장하고, "잔존하는(linger)"를 패킷들을 외부 메모리에 저장할 수 있다. 본 명세서에 설명되는 기법들은 본 명세서에서 "Qlength"라고도 지칭되는 큐 길이 및 본 명세서에서 큐의 "DQrate"(예컨대, 송신 레이트)라고도 지칭되는 디큐 레이트(dequeue rate)를 측정함으로써 큐 레이턴시를 예측할 수 있다. 레이턴시 측정은 패킷이 큐에 상주할 것으로 예상되는 시간이다. 또한, 이 기법은 큐 길이 및 레이턴시가 증가하는 것을 기다리기 전에 큐 혼잡을 결정하고 혼잡을 경험하는 큐들을 외부 메모리에 이동시킬 수 있고, 이는 귀중한 로컬 메모리 사용을 피하는 데에 도움이될 수 있다.
일 예에서, 본 개시내용은 방법을 설명하는데, 이 방법은: 네트워킹 디바이스의 프로세싱 회로에 의해, 프로세싱될 착신 네트워크 패킷을 수신하는 단계 - 상기 네트워크 패킷은 프로세싱 전에 큐에 보유됨 -; 상기 프로세싱 회로에 의해, 상기 큐에 대한 디큐 레이트에 기초하여 상기 네트워크 패킷의 예측된 수명을 결정하는 단계; 상기 프로세싱 회로에 의해, 상기 예측된 수명에 기초하여 상기 네트워크 패킷에 대한 복수의 메모리 중 제1 메모리를 선택하는 단계 - 상기 복수의 메모리는 상기 프로세싱 회로의 로컬 메모리 및 상기 프로세싱 회로에 대한 외부 메모리를 포함함 -; 및 상기 프로세싱 회로에 의해, 상기 복수의 메모리 중 상기 제1 메모리를 선택하는 것에 응답하여 상기 제1 메모리에 상기 네트워크 패킷을 저장하는 단계를 포함한다.
다른 예에서, 본 개시내용은 네트워킹 디바이스를 설명하는데, 이 네트워킹 디바이스는: 프로세싱 회로의 로컬 메모리 및 상기 프로세싱 회로에 대한 외부 메모리를 포함하는 복수의 메모리; 상기 복수의 메모리에 접속된 상기 프로세싱 회로를 포함한다. 프로세싱 회로는: 프로세싱될 착신 네트워크 패킷을 수신하고 - 상기 네트워크 패킷은 프로세싱 전에 큐에 보유됨 -; 상기 큐에 대한 디큐 레이트에 기초하여 상기 네트워크 패킷의 예측된 수명을 결정하고; 상기 예측된 수명에 기초하여 상기 복수의 메모리 중 제1 메모리를 선택하고; 상기 복수의 메모리 중 상기 제1 메모리를 선택하는 것에 응답하여 상기 제1 메모리에 상기 네트워크 패킷을 저장하도록 구성된다.
다른 예에서, 본 개시내용은 명령어들을 포함하는 비일시적 컴퓨터 판독가능 매체를 설명하는데, 상기 명령어들은, 실행될 때, 네트워킹 디바이스의 프로세싱 회로로 하여금: 프로세싱될 착신 네트워크 패킷을 수신하고 - 상기 네트워크 패킷은 프로세싱 전에 큐에 보유됨 -; 상기 큐에 대한 디큐 레이트에 기초하여 상기 네트워크 패킷의 예측된 수명을 결정하고; 상기 예측된 수명에 기초하여 상기 네트워크 패킷에 대한 복수의 메모리 중 제1 메모리를 선택하고 - 상기 복수의 메모리는 상기 프로세싱 회로의 로컬 메모리 및 상기 프로세싱 회로에 대한 외부 메모리를 포함함 -; 상기 복수의 메모리 중 상기 제1 메모리를 선택하는 것에 응답하여 상기 제1 메모리에 상기 네트워크 패킷을 저장하게 한다.
본 개시내용의 기법들의 하나 이상의 예의 상세들은 첨부 도면들 및 아래의 설명에서 제시된다. 본 기법들의 다른 특징들, 목적들 및 장점들은 설명 및 도면들로부터 그리고 청구항들로부터 명백할 것이다.
도 1은 본 개시내용의 기법들에 따른 예시적인 네트워크를 예시하는 블록도이다.
도 2는 본 개시내용의 기법들에 따른 도 1의 네트워크 내의 예시적인 라우터를 예시하는 블록도이다.
도 3은 본 개시내용의 기법들에 따른 도 2의 라우터 내의 예시적인 셰이퍼 크레딧 업데이트 엔진을 예시하는 블록도이다.
도 4는 본 개시내용의 기법들에 따른 도 2의 라우터 내의 예시적인 메모리를 예시하는 블록도이다.
도 5는 본 개시내용의 기법들에 따른 레이턴시를 예시하는 개념도이다.
도 6은 본 개시내용의 기법들에 따른 큐 상태들을 예시하는 상태도이다.
도 7은 본 개시내용의 기법들에 따른 도 2의 라우터 내의 예시적인 큐 레이턴시 관리자를 예시하는 블록도이다.
도 8a는 본 개시내용의 기법들에 따른 제1 이동 임계치를 예시하는 개념도이다.
도 8b는 본 개시내용의 기법들에 따른 제2 이동 임계치를 예시하는 개념도이다.
도 9는 본 개시내용의 기법들에 따른 도 2의 라우터 내의 제1 예시적인 이동 임계치 관리자를 예시하는 블록도이다.
도 10은 본 개시내용의 기법들에 따른 도 2의 라우터 내의 제2 예시적인 이동 임계치 관리자를 예시하는 블록도이다.
도 11은 본 개시내용의 기법들에 따른 예시적인 동작을 예시하는 흐름도이다.
도면들 및 설명 전체에 걸쳐 유사한 참조 문자들은 유사한 요소들을 지칭한다.
도 1은 네트워크(104)가 라우터들(106A-106B)(집합적으로, 라우터들(106))을 포함하는 예시적인 시스템(102)을 예시하는 블록도이다. 디바이스들(110A-110N)(집합적으로, 디바이스들(110))은 네트워크(104)에 의해 제공된 리소스들에 액세스하기 위해 라우터들(106)을 통해 네트워크(104)에 접속한다. 디바이스들(110) 각각은 개인용 컴퓨터, 랩톱 컴퓨터, 모바일 전화, 네트워크 전화, 텔레비전 셋톱 박스, 비디오 게임 시스템, POS(point-of-sale) 디바이스, 개인 휴대 정보 단말기, 중간 네트워크 디바이스, 네트워크 어플라이언스, 슈퍼컴퓨터, 메인프레임 컴퓨터, 산업 로봇, 또는 네트워크(104)와 인터페이싱하고 그를 통해 통신할 수 있는 다른 타입의 디바이스와 같은 최종 사용자 컴퓨팅 디바이스일 수 있다.
네트워크(104)는 디바이스들(110)에 의한 콘텐츠의 액세스를 용이하게 하는 복수의 네트워크 디바이스를 포함할 수 있다. 복수의 네트워크 디바이스 각각은 디바이스들(110)로의 그리고 그로부터의 데이터의 전송을 용이하게 하는 라우터, 스위치, 서버, 데이터베이스 서버, 허브, 방화벽, 침입 검출/방지(IDP) 디바이스 및/또는 임의의 다른 타입의 네트워킹 장비 또는 디바이스 중 하나를 포함할 수 있다. 네트워크(104)는, 라우팅, 네트워크 구성 정보, 및 다른 정보를 교환하기 위해 경계 게이트웨이 프로토콜 및 인터넷 제어 메시지 프로토콜과 같은 다양한 프로토콜들을 사용하여 통신하는, 라우터들(106)을 포함한다. 네트워크는 로컬 영역 네트워크("LAN"), 예컨대 토큰 링 또는 이더넷 네트워크, 가상 로컬 영역 네트워크("VLAN"), 또는 다른 타입의 네트워크일 수 있다. 네트워크는 하나 이상의 유선 또는 무선 링크를 포함할 수 있다. 예를 들어, 네트워크(104)는 하나 이상의 이더넷 케이블을 포함하는 이더넷 네트워크일 수 있다. 다른 예에서, 네트워크는 정보를 통신하기 위해 무선 라디오 송신들을 사용하는 와이파이(“Wi-Fi”) 네트워크일 수 있다. 다른 예에서, 네트워크(104)는 모바일 네트워크일 수 있다. 비록 도 1에서는 단일 네트워크(104)로서 도시되어 있지만, 네트워크(104)는, 하나 이상의 가상 네트워크를 형성하기 위해 다양한 네트워크가 상호접속하는, 공용 또는 사설의, 임의의 수의 상호접속된 네트워크를 포함할 수 있다.
네트워크(104)는 디바이스들(110)에 의해 액세스될 수 있는 다양한 리소스들을 제공한다. 도 1의 예에서, 네트워크(104)는 콘텐츠를 저장하거나 달리 소싱하는 콘텐츠 서버(112)를 포함하는데, 콘텐츠는, 이 용어가 본 명세서에서 사용될 때, 네트워크 내에서 일반적으로 송신 및/또는 저장되는 임의의 데이터, 예컨대 웹 기반 애플리케이션들, 이미지들, 문서들, 웹 페이지들, 비디오 데이터, 음성과 같은 오디오 데이터, 웹 기반 게임들, 스크립트들, 또는 임의의 다른 타입의 네트워크 기반 콘텐츠를 지칭한다. 네트워크(104)는 네트워크 내에서 송신된 데이터의 전달 효율을 개선하기 위해 멀티캐스트 기법들을 지원할 수 있다. 전형적으로 네트워크(104)는 또한 다양한 다른 타입의 디바이스(예컨대, 파일 서버, 프린터, 전화, 및 이메일 및 다른 애플리케이션 서버)에 접속될 것이다. 네트워크(104)는 또한 라우터(106B)를 통해 공용 네트워크(114)(예컨대, 인터넷)에 결합된 것으로 도시되어 있다. 공용 네트워크(114)는, 예를 들어, 하나 이상의 클라이언트 컴퓨팅 디바이스를 포함할 수 있다. 공용 네트워크(114)는 웹 서버, 애플리케이션 서버, 공용 데이터베이스, 미디어 서버, 최종 사용자 디바이스, 및 많은 다른 타입의 네트워크 리소스 디바이스 및 콘텐츠에 대한 액세스를 제공할 수 있다.
네트워크(104)는 인터넷 프로토콜(IP)/송신 제어 프로토콜(TCP)과 같은 하나 이상의 패킷 기반 프로토콜을 사용하여 라우터(106A)를 통해 디바이스들(110)에 콘텐츠를 송신할 수 있다. 이 점에 있어서, 네트워크(104)는 종종 "패킷들"이라고 지칭되는 이산 데이터 유닛들을 통한 데이터의 송신을 지원할 수 있다. 그 결과, 네트워크(104)는 "패킷 기반(packet-based)" 또는 "패킷 교환(packet switched)" 네트워크라고 지칭될 수 있다. 본 개시내용에서 패킷들을 송신, 운반, 또는 달리 지원하는 것으로서 기술되어 있지만, 네트워크(104)는, 비동기 전송 모드(Asynchronous Transfer Mode, ATM) 프로토콜에 의해 정의되는 셀, 또는 사용자 데이터그램 프로토콜(User Datagram Protocol, UDP)에 의해 정의되는 데이터그램과 같은 임의의 다른 프로토콜에 의해 정의되는 임의의 다른 이산 데이터 유닛에 따라 데이터를 송신할 수 있다.
네트워크(104)에 의해 전달되는 네트워크 트래픽은 다수의 카테고리에 따라 분류될 수 있다. 예를 들어, 콘텐츠 서버(112)는 라우터(106A)를 통해 디바이스들(110) 중 하나에 라이브 비디오를 스트리밍할 수 있다. 그러한 비디오를 송신하는 패킷들은 스트리밍 멀티미디어 패킷들로서 분류될 수 있다. 콘텐츠 서버(112)는 또한 HTTP 패킷들을 사용하여 디바이스들(110) 중 하나에 웹 페이지를 전송할 수 있다. 다른 예로서, 라우터들(106)에 의해 교환되는 정보는 네트워크 관리 트래픽으로서 분류될 수 있다. 애플리케이션에 의해 분류되는 것 외에도, 네트워크 트래픽은, 여러 특성 중에서도, 소스 또는 목적지, 사용자, 프로토콜, 및 포트(TCP 및 UDP에 대해)에 의해 분류될 수 있다.
네트워크 트래픽의 다양한 카테고리들은 특정 레벨의 네트워크 성능을 요구할 수 있다. 예를 들어, 스트리밍 멀티미디어는 허용할 만한 사용자 경험을 제공하기 위해 보장된 대역폭을 요구할 수 있다. 다른 예로서, 네트워크 관리 트래픽은 네트워크의 효율을 유지하기 위해 낮은 지연들을 경험해야 한다. 또한, 인터넷 서비스 제공자(ISP)들은 서비스 제공자 협약(service provider agreement)에 기초하여 다른 사용자들에 비해 특정 사용자들에 대한 트래픽을 우선시할 수 있다. 이러한 요건들을 충족시키기 위해, 네트워크(104)는 다수의 미리 정의된 QoS 레벨들에 따라 서비스 품질(QoS)보장들을 지원하는 메커니즘들을 포함한다.
라우터들(106)은 패킷들을 수신, 분석, 및 분류하여 패킷들을 적합한 우선순위 레벨에 배정한다. 패킷들을 분류하는 외에도, 라우터들(106)은 수신되고 분류된 패킷들을 그들의 우선순위 레벨에 따라 프로세싱한다. 이러한 방식으로, 라우터들(106)은 네트워크(104)에 의해 제공되는 QoS 보장들의 양태들을 구현한다. 또한, 시스템(102) 내의 다른 디바이스들로부터 수신된 정보에 기초하여, 라우터들(106)은 각각의 수신된 패킷에 대해 시스템을 통해 적절한 경로를 결정하고 그에 따라 패킷을 포워딩한다.
라우터들(106)은 네트워크 상의 플러딩을 방지하기 위해 패킷들이 송신되는 속도를 조절할 수 있다. 예를 들어, 라우터들(106)은 큐로부터 대응하는 양의 바이트들을 디큐잉하고 그들을 네트워크를 통해 송신하기 위해 "토큰들"을 소비하는 토큰 버킷 셰이퍼를 포함할 수 있고, 토큰 버킷 셰이퍼가 소비하기에 불충분한 토큰들을 갖는 경우 패킷들을 송신하지 않을 수 있다. 다시 말해서, 각각의 토큰은 토큰 버킷 셰이퍼가 큐로부터 디큐잉하고 네트워크를 통해 송신하는 것이 허용되는 수의 바이트들에 대응할 수 있다. 이러한 방식으로, 토큰 버킷 셰이퍼는 패킷들이 큐로부터 제거되고 네트워크 상에서 송신되는 속도를 조절하는 역할을 한다.
라우터들(106)은 패킷들에 대한 주 저장소로서 지연 대역폭 버퍼(Delay Bandwidth Buffer, DBB)를 사용할 수 있다. 네트워크 디바이스들을 위한 지연 대역폭 버퍼는, 예를 들어, 온 칩 메모리(OCM)와 같은, 예를 들어, 로컬 메모리를 포함할 수 있고, 예를 들어, 고대역폭 메모리(High Bandwidth Memory, HBM)와 같은 외부 메모리를 사용하여 더 증가될 수 있다. 지연 대역폭 버퍼는 송신 제어 프로토콜(TCP)을 사용하는 것들과 같은 더 빠른 송신기들 및 더 느린 수신기들 사이의 대역폭 매칭을 위한 버퍼링을 제공한다. 그러나, 포트 속도들이 증가함에 따라, 외부 메모리 대역폭은 모든 경우들에서 최대 패킷 레이트를 더 이상 지원하지 않을 수 있고, 예컨대, 그것은 단지 라인 레이트 대역폭의 절반을 제공할 수 있다. 보상하기 위해, 더 빠르지만 훨씬 더 작은, 온 칩 메모리가, 예를 들어, "하이브리드 메모리(hybrid memory)"라고도 지칭되는, 지연 대역폭 버퍼의 일부로서 포함될 수 있다. 하이브리드 메모리는, 패킷들이 온 칩 메모리를 이용할 때는 라인 레이트 성능이 가능할 수 있지만, 외부 메모리를 이용할 때는 라인 레이트의 분수만 가능할 수 있다. 충분한 수의 패킷들이 온 칩 메모리를 이용하고(예컨대, 라인 레이트 성능의 절반을 갖는 외부 메모리의 경우 50% 초과), 나머지는 이용가능한 외부 메모리 대역폭에 맞을 때, 라인 레이트 성능이 가능하다. 너무 많은 패킷들이 대역폭 제한된 외부 메모리를 이용함에 따라, 그것이 대역폭 과다 신청(oversubscribe)되게 되면, 성능이 저하된다(어쩌면 외부 메모리 대역폭 제한의 레벨까지).
일부 네트워크 디바이스들(예컨대, 라우터들)은, 본 명세서에서 큐 길이 또는 단순히 "Qlength"라고도 지칭되는 큐의 길이만을 사용하여 로컬 메모리와 외부 메모리 사이에 선택할 수 있다. 그러나, 얕은 큐들(예컨대, 작은 Qlength)은 종종 깊은 큐들보다 짧은 수명(예컨대, 패킷이 큐에 저장되는 지속기간)을 갖지만, 큐 길이만이 항상 양호한 수명의 예측자는 아니다. 예를 들어, 비교적 빠른 디큐 레이트를 갖는 깊은 큐에 저장된 제1 패킷은 비교적 느린 디큐 레이트를 갖는 얕은 큐에 저장된 제2 패킷보다 짧은 수명을 가질 수 있다. 그에 따라, 그러한 네트워크 디바이스들은, 비교적 짧은 수명을 갖는, 제1 패킷을 외부 메모리에 저장하고, 비교적 긴 수명을 갖는 제2 패킷을 로컬 메모리에 저장할 수 있고, 이는 네트워크 디바이스의 라인 레이트 성능의 바람직하지 않은 감소를 야기할 수 있다.
따라서, 단지 큐 길이에 의존하기보다는, 본 개시내용의 기법들은 예측된 수명을 사용하여 로컬 메모리와 외부 메모리 사이에 선택할 수 있는 라우터들(106)을 위한 큐잉 시스템을 설명한다. 예측된 수명은 패킷이 지연 대역폭 버퍼에 상주할 것으로 예상되는 시간을 지칭할 수 있다. 라우터들(106)은 "짧은" 예측된 수명을 갖는 패킷들(예컨대, 기입되어 시간상 빠르게 판독되는 패킷들)을 로컬 메모리에 저장하고, "긴" 예측된 수명을 갖는 패킷들(예컨대, 기입되지만, 짧은 수명을 갖는 패킷들에 비해 시간상 훨씬 나중에 판독되는 패킷들)을 외부 메모리에 저장한다. 예를 들어, 라우터(106A)를 위한 큐잉 시스템은 본 명세서에서 큐의 "DQrate"(예컨대, 송신 레이트)라고도 지칭되는 디큐 레이트 및 큐 길이를 측정함으로써 큐 레이턴시를 예측할 수 있다. 레이턴시 측정은 패킷이 큐에 상주할 것으로 예상되는 시간을 지칭할 수 있다.
라우터들(106)은 각각, 그렇지 않으면 큐 길이만을 사용하는 큐잉 시스템들에 비해 로컬 메모리를 사용하기에 더 적합할 수 있는 패킷들(예컨대, 짧은 수명을 갖는 패킷들)에 대해 외부 메모리 대역폭을 불필요하게 낭비하는 것을 피하는 것을 돕기 위해 예측된 수명을 사용하여 로컬 메모리와 외부 메모리 사이에 선택하도록 구성된 큐잉 시스템을 포함할 수 있다. 일부 예들에서, 라우터들(106)은 각각, 큐 길이만을 사용하는 큐잉 시스템들에 비해 외부 메모리에 더 적합할 수 있는 패킷들에 대해 로컬 메모리 용량을 불필요하게 낭비하는 것을 피하는 것을 돕기 위해 예측된 수명을 사용하여 로컬 메모리와 외부 메모리 사이에 선택하도록 구성된 큐잉 시스템을 포함할 수 있다. 일부 예들에서, 라우터들(106)은 각각 큐 우선순위를 고려하고/하거나 이동 임계치들을 독립적으로 관리함으로써 서비스 품질을 유지하는 것을 돕기 위해 예측된 수명을 사용하여 로컬 메모리와 외부 메모리 사이에 선택하도록 구성된 큐잉 시스템을 포함할 수 있다.
더 구체적으로는, 예를 들어, 라우터(106A)는 디큐 레이트를 사용하여 각각의 착신 네트워크 패킷에 대한 예측된 수명을 결정한다. 이 예에서, 라우터(106A)는 각각의 네트워크 패킷들의 예측된 수명에 기초하여 로컬 메모리 또는 외부 메모리에 네트워크 패킷을 저장한다. 라우터(106A)는 비교적 긴 예측된 수명들을 갖는 네트워크 패킷들을 외부 메모리에 저장하고 비교적 짧은 예측된 수명들을 갖는 네트워크 패킷들을 로컬 메모리에 저장한다. 이러한 방식으로, 라우터(106)은 "긴" 수명을 갖는 패킷들(예컨대, 기입되지만, 짧은 수명을 갖는 패킷들에 비해 시간상 훨씬 나중에 판독되는 패킷들)에 비해 "짧은" 수명을 갖는 패킷들(예컨대, 기입되어 시간상 빠르게 판독되는 패킷들)을 로컬 메모리에 저장할 가능성이 있다.
비록 본 명세서에 설명된 원리들은 라우터들(106)에 관련하여 논의되지만, 예를 들어, 비동기 전송 모드(ATM) 스위치, 로컬 영역 네트워크(LAN) 스위치, 인터페이스 카드, 게이트웨이, 방화벽, 또는 시스템(102)의 다른 디바이스와 같은(그러나, 이에 제한되지 않는) 다른 네트워크 디바이스들이 예측된 수명을 결정할 수 있다.
도 2는 본 개시내용의 기법들에 따른 도 1의 네트워크 내의 예시적인 라우터를 예시하는 블록도이다. 일반적으로, 라우터(206)는 도 1의 라우터들(106)과 실질적으로 유사하게 동작할 수 있다. 이 예에서, 라우터(206)는 착신 링크들(232A-232N)("착신 링크들(232)")을 통해 패킷들을 수신하고 발신 링크들(234A-234N)("발신 링크들(234)")을 통해 패킷들을 송신하는 인터페이스 카드들(230A-230N)("IFC들(230)")을 포함한다. IFC들(230)은 전형적으로 다수의 인터페이스 포트들을 통해 링크들(232, 234)에 결합된다. 라우터(206)는 또한 수신된 패킷들의 경로들을 결정하고 그에 따라 IFC들(230)을 통해 패킷들을 포워딩하는 제어 유닛(222), 및 제어 유닛(222)과 통신하는 하이브리드 메모리(228)를 포함한다.
제어 유닛(222)은 라우팅 엔진(224) 및 패킷 포워딩 엔진(226)을 포함한다. 라우팅 엔진(224)은 라우터(206)에 대한 제어 평면으로서 동작하고, 다수의 병행 프로세스들의 실행을 위한 멀티태스킹 운영 환경을 제공하는 운영 체제(도시되지 않음)를 포함한다. 라우팅 엔진(224)은, 예를 들어, 하나 이상의 제어 평면 네트워킹 프로토콜(246)을 구현하기 위해 소프트웨어 명령어들을 실행한다. 예를 들어, 프로토콜들(246)은 다른 라우팅 디바이스들과 라우팅 정보를 교환하고 라우팅 정보 베이스(RIB)(242)를 업데이트하기 위한, BGP(252)와 같은, 하나 이상의 라우팅 프로토콜을 포함할 수 있다. 프로토콜들(246)은 멀티프로토콜 라벨 스위칭(MPLS) 프로토콜(250)과 같은 전송 프로토콜들, 및 인터넷 그룹 관리 프로토콜(IGMP)(256)과 같은 멀티캐스트 관리 프로토콜들을 추가로 포함할 수 있다. 다른 예들에서, 프로토콜들(246)은 다른 라우팅, 전송, 관리, 또는 통신 프로토콜들을 포함할 수 있다.
일부 예들에서, 라우팅 엔진(224)은 관리자가 라우터(206)를 구성 및/또는 관리하는 것을 허용하는 커맨드 라인 인터페이스(CLI)(240)를 포함한다. 예를 들어, 관리자는 큐(266A-266N)("큐들(266)")의 하나 이상의 파라미터를 구성하기 위해, CLI(240)를 통해, 큐 레이턴시 관리자(264)에 액세스할 수 있다. 다른 예에서, 라우팅 엔진(224)은 CLI 대신에 그래픽 사용자 인터페이스(GUI)를 포함한다. 또 다른 예에서, 라우팅 엔진은 관리자가 원격 단말기로부터 라우터(206)를 구성 및/또는 제어하는 것을 허용하기 위해 SNMP(Simple Network Management Protocol)(254)를 실행한다.
라우팅 프로토콜 데몬(RPD)(244)은 RIB(242)를 업데이트하기 위해 BGP(252) 또는 다른 라우팅 프로토콜들을 실행할 수 있다. RIB(242)는 라우터(206)가 상주하고, 또한 컴퓨터 네트워크를 통한 경로들을 포함하는 컴퓨터 네트워크의 토폴로지를 기술한다. RIB(242)는 컴퓨터 네트워크 내의 다양한 경로들, 및 각각의 경로에 대한 적절한 다음 홉들, 즉, 경로들 각각을 따라 이웃하는 라우팅 디바이스들을 기술한다. RPD(244)는 RIB(242)에 저장된 정보를 분석하고 패킷 포워딩 엔진(226)에 대한 포워딩 정보를 생성하고, 패킷 포워딩 엔진은 포워딩 정보 베이스(FIB)(260)에 포워딩 정보를 저장한다.
하이브리드 메모리(228)는 라우터(206)를 위한 저장소의 역할을 한다. 도시된 바와 같이, 하이브리드 메모리(228)는 로컬 메모리(예컨대, 온 칩 메모리) 및 외부 메모리(예컨대, 고대역폭 메모리 - HBM)를 포함할 수 있다. 본 개시내용의 기법들에 따르면, 하이브리드 메모리(228)는 라우터(206)를 위한 큐들(266)을 저장할 수 있다. 일부 예들에서, 하이브리드 메모리(228)는 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 프로그램가능 판독 전용 메모리(PROM), 소거가능 프로그램가능 판독 전용 메모리(EPROM), 전자적으로 소거가능 프로그램가능 판독 전용 메모리(EEPROM), 플래시 메모리를 포함하고, 이들은 하나 이상의 프로세서로 하여금 그들에 속하는 액션들을 수행하게 하기 위한 실행가능 명령어들을 포함한다.
하이브리드 메모리(228)의 큐들(266) 각각은 데이터의 조직 및 일시적 저장을 위한 FIFO(first-in first-out) 데이터 구조일 수 있다. 도 2의 예에서, 큐들(266)은 라우터(206)에 대한 하나 이상의 패킷을 저장한다. 라우터(206)가 하나보다 많은 패킷 포워딩 엔진을 포함하는 일 예에서, 라우터(206)는 패킷 포워딩 엔진들 사이에서 내부적으로 스위칭하기 전에 하나 이상의 큐(266)에 하나 이상의 패킷을 저장한다. 다른 예에서, 라우터(206)는 네트워크를 통해 패킷들을 송신하기 전에 하나 이상의 큐(266)에 하나 이상의 패킷을 저장한다.
패킷 포워딩 엔진(226)은 라우터(206)에 대한 데이터 평면으로서 동작하고, FIB(260), 셰이퍼 크레딧 업데이트 엔진(262), 이동 임계치 관리자(263) 및 큐 레이턴시 관리자(264)를 포함한다. 패킷 포워딩 엔진(226)은, 예를 들어, IFC들(230)을 통해 라우터(206)에 의해 포워딩되고 수신되는 패킷들을 프로세싱한다. 예를 들어, 패킷 포워딩 엔진(226)은 필터들 및 라우팅 정책들을 발신 패킷들에 적용하고 패킷들을 네트워크 내의 다음 홉에 포워딩할 수 있다. 일부 예들에서, 제어 유닛(222)은 복수의 패킷 포워딩 엔진을 포함하고, 이들 각각은 네트워크 트래픽의 상이한 흐름들에 대한 패킷 포워딩 기능들을 제공하기 위해 패킷 포워딩 엔진(226)과 유사하게 동작하도록 구성된다.
FIB(260)는, 예를 들어, 네트워크 트래픽을 위한 네트워크 목적지들을 특정한 다음 홉들 및 대응하는 IFC들(230) 및 출력 링크들(234)을 위한 물리적 출력 포트들과 연관시킬 수 있다. FIB(260)는 전용 포워딩 칩들, 일련의 테이블들, 복합 데이터베이스, 링크 리스트, 기수 트리, 데이터베이스, 플랫 파일, 또는 다양한 다른 데이터 구조들로 프로그래밍된 기수 트리일 수 있다. 일부 예들에서, FIB(260)는 룩업 구조들을 포함한다. 룩업 구조들은, 어드레스와 같은 키가 주어지면, 하나 이상의 값을 제공할 수 있다. 일부 예들에서, 하나 이상의 값은 하나 이상의 다음 홉일 수 있다. 다음 홉은, 실행될 때, 하나 이상의 연산을 수행하는 마이크로코드로서 구현될 수 있다. 하나 이상의 다음 홉이 "체이닝"될 수 있고, 따라서 체이닝된 다음 홉들의 세트가 실행될 때 각각의 상이한 다음 홉들에 대한 연산들의 세트를 수행한다. 그러한 연산들의 예들은 패킷에 하나 이상의 서비스를 적용하는 것, 패킷을 드롭하는 것, 및/또는 하나 이상의 다음 홉에 의해 식별된 인터페이스 및/또는 인터페이스를 사용하여 패킷을 포워딩하는 것을 포함할 수 있다.
패킷 포워딩 엔진(226)의 큐 레이턴시 관리자(264)는, 본 개시내용의 기법들에 따라 큐들(266)에 대한 관리 기능들을 수행하기 위해 셰이퍼 크레딧 업데이트 엔진(262) 및 이동 임계치 관리자(263)와 함께 동작할 수 있다. 예를 들어, 셰이퍼 크레딧 업데이트 엔진(262)은 큐들(266)에 대한 디큐 레이트들을 결정하기 위해 토큰 버킷 셰이퍼 데이터 구조들을 구현할 수 있다. 이 예에서, 큐 레이턴시 관리자(264)는 셰이퍼 크레딧 업데이트 엔진(262)에 의해 특정된 디큐 레이트들을 사용하여 큐들(266) 중 각각의 하나, 예컨대, 큐(266A)로부터의 패킷들의 흐름을 조절한다. 셰이퍼 크레딧 업데이트 엔진(262)은 도 3을 참조하여 더 설명된다.
포트 속도들이 증가함에 따라, 외부 메모리 대역폭은 모든 경우들에서 최대 패킷 레이트를 더 이상 지원하지 않을 수 있고, 예컨대, 그것은 단지 라인 레이트 대역폭의 절반을 제공할 수 있다. 보상하기 위해, 더 빠르지만 훨씬 더 작은, 하이브리드 메모리(228)의 로컬 메모리가, 예를 들어, "하이브리드 메모리"라고도 지칭되는, 지연 대역폭 버퍼의 일부로서 포함될 수 있다. 하이브리드 메모리(228)는, 패킷들이 로컬 메모리를 이용할 때는 라인 레이트 성능이 가능할 수 있지만, 외부 메모리를 이용할 때는 라인 레이트의 분수만 가능할 수 있다. 충분한 수의 패킷들이 로컬 메모리를 이용하고(예컨대, 라인 레이트 성능의 절반을 갖는 외부 메모리의 경우 50% 초과), 나머지는 이용가능한 외부 메모리 대역폭에 맞을 때, 라인 레이트 성능이 가능하다. 너무 많은 패킷들이 대역폭 제한된 외부 메모리를 이용함에 따라, 외부 메모리가 대역폭 과다 신청되게 되면, 하이브리드 메모리(228)의 성능이 저하된다(어쩌면 외부 메모리 대역폭 제한의 레벨까지).
외부 메모리의 과다 신청을 방지하는 것을 돕기 위해, 큐 레이턴시 관리자(264)는 수명 모듈(265)을 포함할 수 있다. 수명 모듈(265)은, 예를 들어, 디큐 레이트, 목표 레이트, 레이턴시, 우선순위, 혼잡 경험, 또는 다른 정보 중 하나 이상을 사용하여 패킷 수명을 예측할 수 있다. 수명 모듈(265)은 도 7을 참조하여 더 설명된다.
예를 들어, 큐 레이턴시 관리자(264)는 처음에는 패킷을 하이브리드 메모리(228)의 로컬 메모리에 저장할 수 있다. 수명 모듈(265)은 패킷 수명을 예측할 수 있다. 이 예에서, 이동 임계치 관리자(263)는 하이브리드 메모리(228)에 대한 이동 임계치를 결정할 수 있다. 이동 임계치 관리자(263)는 도 8 및 도 9를 참조하여 더 설명된 바와 같이 이동 임계치를 결정할 수 있다. 큐 레이턴시 관리자(264)는 이동 임계치 및 예측된 수명을 사용하여 패킷을 저장할 메모리(예컨대, 로컬 메모리 또는 외부 메모리)를 선택할 수 있다. 예를 들어, 패킷에 대한 예측된 수명이 이동 임계치보다 작다고 결정하는 것에 응답하여, 큐 레이턴시 관리자(264)는 패킷을 하이브리드 메모리(228)의 로컬 메모리에 저장할 수 있다. 이 예에서, 패킷에 대한 예측된 수명이 이동 임계치보다 크다고 결정하는 것에 응답하여, 큐 레이턴시 관리자(264)는 패킷을 하이브리드 메모리(228)의 외부 메모리에 저장할 수 있다.
도 3은 본 개시내용의 기법들에 따른 도 2의 예시적인 셰이퍼 크레딧 업데이트 엔진(262)을 예시하는 블록도이다. 하나의 예시적인 구현에서, 셰이퍼 크레딧 업데이트 엔진(262)은 레이트 휠(370) 및 스케줄러(372)를 포함한다. 다시, 네트워크 디바이스들은 네트워크 상의 플러딩을 방지하기 위해 패킷들이 송신되는 속도를 조절하기 위한 셰이퍼 크레딧 업데이트 엔진(262)을 포함할 수 있다. 또한, 수명 모듈(265)은 셰이퍼 크레딧 업데이트 엔진(262)에 의한 디큐 레이트 출력에 기초하여 패킷에 대한 수명을 결정할 수 있다.
레이트 휠(370)은 스케줄러(372)에 크레딧 업데이트들을 제공한다. 스케줄러(372)는 큐/노드 데이터 구조(388)가 큐/노드 데이터 구조(388)에 의해 인큐된 하나 이상의 바이트를 송신하도록 허용되는 때를 결정하기 위해 크레딧들을 사용할 수 있다. 도 3의 예에서, 레이트 휠(370)은 레이트 명령어(374) 및 업데이트 레이트(376)를 포함한다. 레이트 명령어(374)는 스케줄러(372)의 크레딧 가산기(382)에 "보장된"(G) 및 "최대"(M) 크레딧 필드들(378)에 대한 레이트 업데이트들을 제공한다. G 크레딧들은, 네트워크에 대한 G 레이트가 과다 신청되지 않는 한, 보장된 양의 대역폭을 큐/노드 데이터 구조(388)에 할당하는 데 사용될 수 있다. M 크레딧들은 큐/노드 데이터 구조(388)가 특정된 평균 송신 레이트를 초과하는 것을 방지하기 위해 레이트 제한으로서 사용될 수 있다.
또한, 업데이트 레이트(376)는 레이트 휠(370)에 의해 크레딧들이 업데이트되고 있는 레이트를 나타낸다. 업데이트 레이트(376)는 큐/노드 데이터 구조(388)에 정규화된 디큐잉 레이트를 제공한다. 도 3의 예에서, 업데이트 레이트(376)는 레이트 휠(370)에 대한 레이트 업데이트 기간의 역수이다. 일부 예들에서, 스케줄러(372)는 디큐잉 레이트의 순간적인 변화들을 평활화하기 위해 저역 통과 필터를 적용한다.
스케줄러(372)는 크레딧 가산기(382), 크레딧 업데이터(392), 레이트 업데이터(386), 및 큐/노드 데이터 구조(388)를 포함한다. 스케줄러(372)의 크레딧 가산기(382)는, 클립(380)으로부터의 입력에 기초하여, 다중화기(MUX)(384)를 사용하여 레이트 업데이터(392)에 추가적인 크레딧들을 제공하고, 레이트 업데이터는 차례로 그러한 추가적인 G/M 크레딧들(390)을 큐/노드 데이터 구조(388)에 제공한다. 클립(380) 및 현재 크레딧들의 값에 따라, 레이트 업데이터(392)는 큐/노드 데이터 구조(388)의 G/M 크레딧들(390)에 크레딧들의 일부, 전부를 가산하거나, 어느 것도 가산하지 않을 수 있다. 스케줄러(372)는 G/M 크레딧들(390)을 사용하여 큐/노드 데이터 구조(388)가 송신하도록 허용되는 때를 결정한다. 일 예에서, 큐/노드 데이터 구조(388)에 대한 G/M 크레딧들(390)이 음이 아닌 경우, 스케줄러(372)는 큐/노드 데이터 구조(388)로부터 패킷들을 디큐잉하거나 송신할 수 있다. 큐/노드 데이터 구조(388)로부터 패킷들을 디큐잉하고 송신할 시에, 크레딧 업데이터(386)는 큐/노드 데이터 구조(388)에 대한 G/M 크레딧들(390)로부터 대응하는 수의 크레딧들을 제거한다. 일단 큐/노드 데이터 구조(388)에 대한 G/M 크레딧들(390)이 음이면, 큐/노드 데이터 구조(388)는 후속 패킷들을 디큐잉하거나 송신하기에 부적격이 된다. 음이 아닌 G/M 크레딧들(390)의 값을 축적할 시에, 큐/노드 데이터 구조(388)는 다시 패킷들을 디큐잉하거나 송신하도록 허용되게 된다.
도 4는 본 개시내용의 기법들에 따른 도 2의 라우터 내의 예시적인 하이브리드 메모리(228)를 예시하는 블록도이다. 도시된 바와 같이, 하이브리드 메모리(228)는 전체 대역폭인 로컬 메모리(429)를 포함할 수 있다. 또한, 본 명세서에서 "지연 대역폭 버퍼" 또는 단순히 "DBB"라고도 지칭되는 하이브리드 메모리(228)는, 예를 들어, 100 밀리초만큼 큰 지연들과 같은 큰 지연 대역폭 버퍼 요건들을 허용하기 위한 외부 메모리(427)를 추가로 포함할 수 있다. 예를 들어, 로컬 메모리(429)는 "온 칩 패킷 메모리" 또는 단순히 "OCPmem"이라고도 지칭되는 온 칩 메모리에 포함될 수 있다. 이 예에서, 로컬 메모리(429)는 전체 대역폭에 있고, 이는 로컬 메모리(429)가 라인 레이트로 인큐잉 및 디큐잉할 것이라는 것을 의미한다. 큐 레이턴시 관리자(264)는 전체 대역폭보다 작을 수 있는 외부 메모리(427)를 사용할 수 있다. 그러나, 로컬 메모리(429)는 외부 메모리(427)에 비해 상대적으로 작기 때문에, 큐 레이턴시 관리자(264)는 단지 최단 "수명" 패킷에 대해서만 로컬 메모리(429)를 사용할 수 있다. 로컬 메모리(429)와 비교하여, 외부 메모리(427)는 상대적으로 크다. 그에 따라, 큐 레이턴시 관리자(264)는 더 긴 "수명" 패킷에 대해 외부 메모리(427)를 사용할 수 있다. 로컬 메모리(429)는, 예를 들어, 외부 메모리(427)의 크기의 약 1/100 이하일 수 있다. 지연 대역폭 버퍼는 메모리 크기 및 송신 레이트의 함수이고, 더 낮은 송신 레이트들은 더 큰 지연 대역폭 버퍼를 갖는다.
도 4는 지연 대역폭 버퍼에 대한 로컬 메모리(429) 및 외부 메모리(427)의 조직을 예시한다. 외부 메모리(427)의 지연 대역폭 버퍼 부분은, 사용 중인 외부 메모리(427)의 양을 지시하는, 단순히 "공유된 Pmem 사용 계량기"(404)라고도 지칭되는, 글로벌 또는 공유, 패킷 메모리 사용 계량기(404)를 갖는다. 본 명세서에서 사용되는, 공유 메모리는 본 명세서에서 단순히 "Qsys"이라고 지칭되는 다수의 큐잉 시스템들에 의해 메모리가 사용되는 인스턴스들을 지칭할 수 있다. 공유 Pmem 사용 계량기"(404) 메모리는 패브릭 이용”을 나타낼 수 있는, "공유 패브릭 사용 계량기"(406)로 예시되어 있는 다수의 패브릭 Qsys, 및 광역 네트워크(WAN) 큐 시스템 이용을 나타낼 수 있는, "WAN Pmem 사용 계량기"(402)로 예시되어 있는, 다수의 WAN Qsys를 포함할 수 있다. WAN Qsys는 포트들에 대한 패킷들, 예컨대, 100GE를 스케줄링하는 데 사용될 수 있다.
유사하게, 도 4는 WAN에 대한 "공유" 사용 계량기(408) 및 패브릭에 대한 공유 사용 계량기(412)뿐만 아니라, 로컬 메모리(429)에 대한 총 결합 사용 계량기(410)를 예시한다. 공유 WAN OCPmem 사용 계량기(408)는, WAN Qsys마다 하나씩, 다수의 로컬 또는 개별 OCPmem 사용 계량기들을 추가로 포함할 수 있다. 본 명세서에 설명된 기법들에 따르면, 더 작은 수명(예컨대, 레이턴시)을 갖는 큐들에 대한 패킷들은 로컬 메모리(429)를 이용할 수 있고 더 큰 수명을 갖는 것들은 외부 메모리(427)를 이용할 수 있다.
도 5는 본 개시내용의 기법들에 따른 레이턴시를 예시하는 개념도이다. 본 명세서에서 "Qlength"라고도 지칭되는 큐 길이(504)는 큐 내의 패킷의 수를 지시한다. 본 명세서에서 "DQrate"라고도 지칭되는 디큐 레이트(506)는 큐를 통한 패킷 이동의 레이트를 지시한다. 수명 모듈(265)은 이동 결정을 할 때 패킷에 "시간 값" 또는 "수명"을 배정할 때 디큐 레이트(506)(및 다른 팩터들)를 사용하여 수명을 예측할 수 있다. 레이턴시가 계산가능하지 않거나, 아직 믿을 만하지 않은 경우에(예컨대, 빈 큐), 수명 모듈(265)은 이전 디큐 레이트, 목표 레이트, 우선순위, 및 혼잡 경험(예컨대, 구성된 레이트로 송신되지 않음)과 같은 예측자들을 사용하여 예측된 수명을 배정할 수 있다.
도 5는 도 4의 로컬 메모리(429)에 저장되는 패킷들의 타입들을 나타내는 음영 영역(502)을 예시한다. 도시된 바와 같이, 도 5는 우측에서 좌측으로 증가하는 디큐 레이트를 갖는 가로좌표 축(예컨대, 수평 축)을 따른 디큐 레이트 및 하부에서 상부로 증가하는 큐 길이를 갖는 세로좌표 축(예컨대, 수직 축)을 따른 큐 길이를 예시한다.
"짧은" 수명을 갖는 패킷들은 로컬 메모리(429)를 이용할 수 있고, 증가하는 수명을 갖는 패킷들은 외부 메모리(427)로 이동할 수 있다. 도 5는 높은 디큐 레이트(예컨대, 디큐 레이트들(512))를 갖는 깊은 큐들(예컨대, 큐 길이들(510))이 낮은 디큐 레이트(예컨대, 디큐 레이트들(522))를 갖는 얕은 큐들(예컨대, 큐 길이들(520))뿐만 아니라 짧은 수명들을 생성할 수 있다는 것을 예시한다. 로컬 메모리(429) 내에 공간이 있는 동안(예컨대, 사용 계량기들이 최대에 접근하지 않음), 본 명세서에 설명된 예측된 수명 기법들은 짧은 수명들을 갖는 패킷들이 로컬 메모리(429)에 잔류하는 것을 허용한다. 이것은 다른 더 긴 수명 패킷들을 위해 외부 메모리(427) 대역폭을 보존하고, 외부 메모리(427) 대역폭을 과다 신청하는 것을 피한다.
도 6은 본 개시내용의 기법들에 따른 큐 상태들을 예시하는 상태도이다. 수명 모듈(265)은 큐에 대해 각각의 상태에 대해 개별 수명 룩업 테이블(LUT)들을 사용할 수 있다. 이 예에서, 예측된 수명 LUT들은 큐 길이(예컨대, Qlength), 디큐 레이트(예컨대, DQrate), 및 큐 간헐도에 기초하여 선택되는 (4) 개별 LUT들을 포함한다.
간헐적 또는 빈 큐 상태(602)(예컨대, 디큐 레이트가 없고 큐 길이가 없음)에서, 큐는 비어 있거나 디큐 레이트가 없거나 작은 디큐 레이트를 갖는 소량의 바이트들을 가질 수 있다. 예를 들어, 수명 모듈(265)은 큐에 대한 샘플링된 디큐 레이트가 임계치 디큐 레이트를 초과하지 않을 때 그리고 큐에 대한 큐 길이가 임계치 큐 길이를 초과하지 않을 때 큐에 대한 복수의 큐 상태 중 간헐적 큐 상태(602)를 선택할 수 있다. 간헐적 큐 상태(602)는 비어 있고 마지막 큐 레이트 업데이트(QRU) 이후에 처음으로 바이트를 수신하는 큐를 지시할 수 있다. 수명 모듈(265)은 작은 과도현상들을 필터링 아웃하기 위해 임계치들을 설정할 수 있다. 간헐적 큐 상태(602)는 로컬 메모리(429)에 패킷들을 유지하기 위해 더 작은 레이턴시를 향하는 바이어스를 갖도록 구성될 수 있다. 예를 들어, 간헐적 큐 상태(602)에 대한 예측된 수명 LUT는 상태들(604-608)에 비해 더 낮은 수명들을 출력하기 위해 팩터들을 가중시킬 수 있다. 구성된 고속 및 저속 큐들을 구별하기 위해 목표 레이트를 사용하여 수명 값들이 생성될 수 있으며, 따라서 더 높은 속도 큐들은 더 낮은 속도 큐들보다 상대적으로 더 낮은 수명(예컨대, 레이턴시) 값을 수신한다.
버스팅 qlength 큐 상태(604)에서는, 디큐 레이트는 이전 큐 레이트 업데이트 기간에서 0이거나 작아서, 큐는 비어 있는 것에서 비어 있지 않은 것까지 버스팅할 수 있거나 혼잡하고 송신할 수 없는 것을 시사한다. 예를 들어, 수명 모듈(265)은 큐에 대한 샘플링된 디큐 레이트가 임계치 디큐 레이트를 초과하지 않을 때 그리고 큐에 대한 큐 길이가 임계치 큐 길이를 초과할 때 큐에 대한 복수의 큐 상태 중 버스팅 큐 상태를 선택할 수 있다. 일부 예들에서, qlength가 qlength 임계치를 초과할 때 큐는 간헐적 큐 상태(602)로부터 버스팅 큐 상태(604)로 이동하고 있을 수 있다. 버스팅 큐 상태(604)에서는, 큐 길이가 포인트, 예컨대, 2개 또는 3개의 최대 송신 단위(MTU)를 넘어 증가할 때, 수명 모듈(265)은 패킷들을 외부 메모리(427) 상으로 이동시키기 위해 레이턴시를 비교적 큰 값으로 설정할 수 있다. 패킷들을 외부 메모리(427) 상으로 이동시키는 것은 혼잡한 큐 경우를 핸들링하는 것을 도울 수 있지만, 활성 큐 상태(608)로 전이하기 전에 소정량의 버스팅을 허용한다. 버스팅 큐 상태(604)에서는, 대신에 큐가 비혼잡이라면, 그것은 다음 QRU 기간에서 활성 큐 상태(608)로 전이할 가능성이 있고 디큐 레이트를 가질 것이다. 수명은 목표 레이턴시(Qlength/목표 레이트)을 사용하여 값을 배정받을 수 있다. 일부 예들에서 Qlength는 송신 레이트를 가정하여 수명 값들을 생성하는 데 사용될 수 있다.
본 명세서에서 "과도 큐 상태"라고도 지칭되는, 변동 큐 상태(606)에서는, 큐는 현재 비어 있거나, 거의 비어 있지만, 마지막 QRU 기간 동안 디큐 레이트로 일부 바이트들을 송신한다(예컨대, 수명 모듈(265)은 QRU 기간을 아는 것에 의해 바이트들의 수를 예측할 수 있다). 예를 들어, 수명 모듈(265)은 큐에 대한 샘플링된 디큐 레이트가 임계치 디큐 레이트를 초과할 때 그리고 큐에 대한 큐 길이가 임계치 큐 길이를 초과하지 않을 때 큐에 대한 복수의 큐 상태 중 변동 큐 상태(606)를 선택할 수 있다. 변동 큐 상태(606)에서는, 큐는 패킷들을 간헐적으로 수신할 수 있다. 변동 큐 상태(606)에서는, 수명 모듈(265)은 이전 QRU 기간에서 전송된 바이트들의 양(예컨대, DQrate * QRU 기간)을 사용하여 레이턴시를 결정할 수 있다. 변동 큐 상태(606)에서는, 수명 모듈(265)은 활성 큐 상태(608) 또는 큐 길이 영역으로 전이할 때까지 로컬 메모리(429)에 잔류할 수 있다. 일부 예들에서는 DQrate를 사용하여 수명 값들이 배정될 수 있고, 비어 있는 것에서 비어 있지 않은 것으로 간 큐를 지시하는, Q-간헐적이 설정되는 다른 예들에서는, 큐는 간헐적 큐 상태(602) 또는 버스팅 큐 상태(604)로 전이할 수 있다.
활성 큐 상태(608)(예컨대, 디큐 레이트 및 큐 길이)에서는, 큐는 디큐 레이트 및 큐 길이를 사용하여 계산가능한 레이턴시를 갖는다. 예를 들어, 수명 모듈(265)은 큐에 대한 샘플링된 디큐 레이트가 임계치 디큐 레이트를 초과할 때 그리고 큐에 대한 큐 길이가 임계치 큐 길이를 초과할 않을 때 큐에 대한 복수의 큐 상태 중 활성 큐 상태(608)를 선택할 수 있다. 일부 예들에서, 수명 모듈(265)은 큐 길이가 비어 있을 때 버스팅 큐 상태(604)로 전이할 수 있다.
도 6의 상태도는 패킷들이 도착 및 출발하고 큐들이 다시 비어 있지 않고 비게 됨에 따라 4개의 상태들 사이의 전이를 예시한다. 간헐적 큐 상태(602)는 이전에 빈 큐와 연관된다. 변동 큐 상태(606)는 일반적으로 비어 있는 것으로 및 그로부터 전이하는 큐와 연관될 수 있다. 버스팅 큐 상태(604)는 일반적으로 비어 있지 것에서 비어 있지 않은 것으로 전이하는 큐와 연관될 수 있다. 활성 큐 상태(608)는 일반적으로 중간 큐 길이를 갖고 디큐 레이트를 갖는 것으로 인해 송신하는 큐들과 연관될 수 있다.
빈 큐는 보통 간헐적 큐 상태(602)로 들어간다. 수명 모듈(265)은 디큐가 발생하는 때(디큐 레이트를 생성함)에 따라 활성 큐 상태(608) 또는 버스팅 큐 상태(604)로 전이할 수 있다. 수명 모듈(265)은 비게 될 때(예컨대, 모든 바이트들을 디큐 송신한 때) 활성 큐 상태(608)로부터 변동 큐 상태(606)로 전이할 수 있다. 수명 모듈(265)은 일단 디큐가 발생하고 디큐 레이트가 생성되면 버스팅 큐 상태(604)로부터 활성 큐 상태(608)로 전이할 수 있다.
예시적인 임계치들 및 수명 선택 LUT 임계치들이 표 1에 예시되어 있다.
Figure pat00001
표 1에서, '1'의 "Hi-Pri" 값은 높은 우선순위 패킷을 나타내고, '0'의 Hi-Pri 값은 낮은 또는 정상 우선순위 패킷을 나타내고, '1'의 "Q-int" 값은 큐 간헐적 상태가 발생한 것을 나타내고, '0'의 Q-int 값은 큐 간헐적 상태가 발생하지 않았음을 나타낸다. 표 1에서, 높은 우선순위 패킷에 대해 그리고 큐 간헐적 상태가 발생했을 때, 수명 모듈(265)은 높은 Qlength 임계치(증가된 버스트에 대해) 및 낮은 DQrate 임계치를 선택한다. 또한, 표 1에서, 높은 우선순위 패킷에 대해 그리고 큐 간헐적 상태가 발생하지 않았을 때, 수명 모듈(265)은 높은 Qlength 임계치(증가된 버스트에 대해) 및 낮은 DQrate 임계치를 선택한다. 또한, 표 1에서, 낮은 우선순위 패킷에 대해 그리고 큐 간헐적 상태가 발생했을 때, 수명 모듈(265)은 낮은 Qlength 임계치 및 높은 DQrate 임계치를 선택한다. 예를 들어, 낮은 우선순위 패킷에 대해 그리고 큐 간헐적 상태가 발생했을 때, 수명 모듈(265)은 비어 있는 간헐적 영역(예컨대, 영역 00) 및 버스팅 영역(예컨대, 영역 10)을 강제 선택한다. 또한, 표 1에서, 낮은 우선순위 패킷에 대해 그리고 큐 간헐적 상태가 발생하지 않았을 때, 수명 모듈(265)은 낮은 Qlength 임계치 및 낮은 DQrate 임계치를 선택한다.
예시적인 수명 LUT 입력들 및 수명 LUT 출력들이 표 2에 예시되어 있다.
Figure pat00002
표 2에서, ACTIVE는 활성 큐 상태(608)에 대응하고, QLENGTH는 버스팅 큐 상태(604)에 대응하고, DQRATE는 변동 큐 상태(606)에 대응하고, EMPTY는 간헐적 큐 상태(602)에 대응한다. 표 2에서, 활성 큐 상태(608)에서의 LUT 입력은 "Dqrate 레이턴시"이고 수명 모듈(265)은 DQrate 및 Qlength로부터 레이턴시를 계산한다. 또한, 표 2에서, 버스팅 큐 상태(604)에서의 LUT 입력은 목표 레이턴시이고 수명 모듈(265)은 목표 레이트 및 Qlength로부터 레이턴시를 계산하거나, LUT 입력은 큐 길이이고 레이턴시 LUT는 소프트웨어(SW) 정의된 최대 레이트 및 인덱스로서 Qlength를 사용한다. 또한, 표 2에서, 변동 큐 상태(606)에서의 LUT 입력은 DQrate이고 수명 모듈(265)은 소프트웨어 정의된 최소 Qlength 및 인덱스로서 DQrate를 사용하여 레이턴시를 계산한다. 또한, 표 2에서, 간헐적 큐 상태(602)에서의 LUT 입력은 목표 레이트이고 수명 모듈(265)은 소프트웨어 정의된 임계치 Qlength 및 인덱스로서 목표 레이트를 사용하여 레이턴시를 계산한다.
수명 모듈(265)은 조합하여 4개의 큐 상태 LUT들 중 하나를 선택하는 개별 큐 길이 및 디큐 레이트 임계치들로 구성될 수 있다. 임계치들은 큐 길이 및 디큐 레이트의 작은 값들을 필터링할 수 있고, 큐 우선순위에 기초하여 스케일링할 수 있다(예컨대, 더 높은 우선순위는 더 높은 임계치를 갖고 더 낮은 우선순위는 더 낮은 임계치를 가질 수 있어, 큐가 비어 있거나 Qlength 임계치 아래일 때 높은 우선순위가 더 큰 "버스트 허용오차"를 가질 수 있다). 예를 들어, 큐가 비어 있고 패킷들이 도착하고 버스트에서 큐를 채우기 시작할 때, 수명 모듈(265)은, 예를 들어, 10 킬로바이트(kB)인(그러나 이로 제한되지 않는) 큰 값으로 설정되는 Qlength 임계치까지 고정된 수명을 사용하고, 그 후 DQrate가 이용가능할 때 DQrate 레이턴시를 사용하여 ACTIVE 영역으로 또는 목표 레이턴시를 사용하여 EMPTY로부터 QLENGTH 영역으로 전이할 수 있다. 고정된 수명 값은 높은 우선순위에 의해 선택된 수명 LUT에서의 개별 영역으로부터 온다. 이것은 높은 우선순위가 로컬 메모리를 사용하여 버스트를 수신하는 것을 허용하지만, 높은 우선순위가 과다 신청되고, 예컨대, 포트 상에 너무 많은 트래픽이 있고, 높은 우선순위 큐가 구축하기 시작하고, 높은 우선순위 큐가 Qlength 임계치를 초과할 수 있다면, 수명 모듈(265)은, 일단 버스팅 큐 상태(604) 또는 활성 큐 상태(608)에서 발생할 수 있는, Qlength가 증가함에 따라 우선순위 큐에 대한 높은 트래픽을 외부 메모리로 시프트하기 시작할 수 있다.
도 7은 본 개시내용의 기법들에 따른 도 2의 라우터의 큐 레이턴시 관리자(264) 내의 예시적인 수명 모듈(265)을 예시하는 블록도이다. 수명 모듈(265)은 패킷을 로컬 메모리에 저장할지 또는 외부 메모리에 저장할지를 결정하는 데 사용하기 위해 라우터에 의해 수신된 패킷의 예측된 수명을 결정하도록 구성된다. 도시된 바와 같이, 수명 모듈(265)은 목표 레이트(702), 샘플링된 디큐 레이트(704), 큐 길이(706)를 수신할 수 있다. 목표 레이트(702)는 미리 결정된 목표 레이트일 수 있다. 샘플링된 디큐 레이트(704)는 현재 샘플링된 디큐 레이트일 수 있다. 목표 레이트(702)는 샘플링된 디큐 레이트(704)가 안정적이지 않을 때(예컨대, 임계치보다 작을 때) 샘플링된 디큐 레이트(704)를 대신하여 사용될 수 있다. 도시된 바와 같이, 레이트 차이 모듈(714)은 목표 레이트(702) 및 샘플링된 디큐 레이트(704)의 지시를 수신하고 큐 혼잡이 경험되는지를 지시하는 큐 혼잡 경험 비트(712)를 출력할 수 있다. 레이트 차이 모듈(714)은 목표 레이트(702)를 샘플링된 디큐 레이트(704)와 비교하고, 충분히 큰 차이가 검출될 때, 큐 혼잡 경험 비트(712)를 설정할 수 있다. 큐 혼잡 경험 비트(712)는 샘플링된 디큐 레이트(704)가 목표 레이트(702)보다 작을 때 설정될 수 있다. 수명 모듈(265)은 버스팅 큐 상태에서 수신된 패킷들에 대해 큐 길이(706)를 사용할 수 있다.
처음에, LUT 모듈(718)은 큐 혼잡이 경험되는지에 기초하여 임계치 디큐 레이트를 선택하도록 구성될 수 있다. 혼잡을 경험하고 있는, 즉, 혼잡 경험 비트(712)가 설정되는 큐들에 대해 혼잡 영역이 사용된다. 이러한 큐들은 외부 메모리 대역폭 혼잡으로 인해 패킷들을 드롭하고 있거나, 너무 크게 성장해서 Qlength 기반 드롭 임계치, 예컨대, 테일 드롭 또는 WRED(Weighted Random Early Detection)에 있고, 따라서 외부 메모리로 이동되도록 바이어스되어야 한다. 이러한 큐들은 스케일링된 더 큰 수명을 가질 것이므로, 그것들은 다른 유사하지만 비혼잡 큐들 전에 외부 메모리로 이동한다. 예를 들어, LUT 모듈(718)은 큐 혼잡 경험 비트(712)가 논리 하이 값 '1'로 설정될 때 임계치 큐 길이 'n1'을 선택하기 위해 혼잡 LUT를 사용하도록 구성될 수 있다. 이 예에서, LUT 모듈(718)은 큐 혼잡 경험 비트(712)가 논리 로우 값 '0'으로 설정될 때 임계치 큐 길이 'n2'를 선택하기 위해 비혼잡 LUT를 사용하도록 구성될 수 있다. 유사하게, LUT 모듈(718)은 큐 혼잡 경험 비트(712)가 논리 하이 값 '1'로 설정될 때 임계치 디큐 레이트 'm1'을 선택하기 위해 혼잡 LUT를 사용하도록 구성될 수 있다. 이 예에서, LUT 모듈(718)은 큐 혼잡 경험 비트(712)가 논리 로우 값 '0'으로 설정될 때 임계치 디큐 레이트 'm2'를 선택하기 위해 비혼잡 LUT를 사용하도록 구성될 수 있다.
일부 예들에서, LUT 모듈(718)은 큐 길이(706)가 비게 되었는지에 기초하여 임계치 디큐 레이트를 선택하도록 구성될 수 있다. 달리 말해서, 일부 예들에서, LUT 모듈(718)은 큐 간헐적(710)에 기초하여 큐 영역들 00(예컨대, 간헐적 큐 상태) 및 10(예컨대, 버스팅 큐 상태)을 선택하기 위해 임계치 디큐 레이트 'm'을 최대로 강제할 수 있다. 예를 들어, LUT 모듈(718)은 Q_went_empty(708)가 논리 하이 값 '1'로 설정될 때 임계치 큐 길이 'n1'을 선택하기 위해 제1 LUT를 사용하도록 구성될 수 있다. 이 예에서, LUT 모듈(718)은 Q_went_empty(708)가 논리 로우 값 '0'으로 설정될 때 임계치 큐 길이 'n2'를 선택하기 위해 제2 LUT를 사용하도록 구성될 수 있다. 유사하게, LUT 모듈(718)은 Q_went_empty(708)가 논리 하이 값 '1'로 설정될 때 임계치 디큐 레이트 'm1'을 선택하기 위해 제1 LUT를 사용하도록 구성될 수 있다. 이 예에서, LUT 모듈(718)은 Q_went_empty(708)가 논리 로우 값 '0'으로 설정될 때 임계치 디큐 레이트 'm2'를 선택하기 위해 제2 LUT를 사용하도록 구성될 수 있다.
일부 예들에서, LUT 모듈(718)은 우선순위에 기초하여 임계치 디큐 레이트를 선택하도록 구성될 수 있다. 달리 말해서, 예를 들어, LUT 모듈(718)은 엄격한 높은 우선순위에 기초하여 증가된 버스트 허용오차에 대해 임계치 큐 길이 'n'을 상승시킬 수 있다. 예를 들어, LUT 모듈(718)은 제1 우선순위에 대한 임계치 큐 길이 'n1'을 선택하기 위해 제1 LUT를 사용하도록 구성될 수 있다. 이 예에서, LUT 모듈(718)은 제1 우선순위에 대한 임계치 큐 길이 'n2'를 선택하기 위해 제2 LUT를 사용하도록 구성될 수 있다. 유사하게, LUT 모듈(718)은 제1 우선순위에 대한 임계치 디큐 레이트 'm1'을 선택하기 위해 제1 LUT를 사용하도록 구성될 수 있다. 이 예에서, LUT 모듈(718)은 제2 우선순위에 대한 임계치 디큐 레이트 'm2'를 선택하기 위해 제2 LUT를 사용하도록 구성될 수 있다.
수명 모듈(265)은 큐 상태를 결정할 수 있다. 도시된 바와 같이, 비교 모듈(724)은 큐 길이(706)를 임계치 큐 길이 'n'과 비교한다. 이 예에서, 비교 모듈(724)은 큐 길이(706)가 임계치 큐 길이 'n'을 초과할 때 논리 하이 값 '1'을 출력한다. 유사하게, 비교 모듈(726)은 샘플링된 디큐 레이트(704)를 임계치 디큐 레이트 'm'과 비교한다.
이 예에서, 비교 모듈(726)은 샘플링된 디큐 레이트(704)가 임계치 디큐 레이트 'm'을 초과할 때 논리 하이 값 '1'을 출력한다. 이러한 방식으로, 수명 모듈(265)은 비교 모듈(724) 및 비교 모듈(726)의 출력들을 사용하여 큐 상태를 결정할 수 있다. 예를 들어, 수명 모듈(265)은 비교 모듈(724)이 논리 하이 값 '1'을 출력할 때 그리고 비교 모듈(726)이 논리 하이 값 '1'을 출력할 때 큐 상태를 활성 큐 상태(608)로서 결정할 수 있다.
일부 예들에서, 수명 모듈(265)은 비교 모듈(724)이 논리 하이 값 '1'을 출력할 때 그리고 비교 모듈(726)이 논리 로우 값 '0'을 출력할 때 큐 상태를 버스팅 큐 상태(604)로서 결정할 수 있다. 일부 예들에서, 수명 모듈(265)은 비교 모듈(724)이 논리 로우 값 '0'을 출력할 때 그리고 비교 모듈(726)이 논리 하이 값 '1'을 출력할 때 큐 상태를 변동 큐 상태(606)로서 결정할 수 있다. 일부 예들에서, 수명 모듈(265)은 비교 모듈(724)이 논리 로우 값 '0'을 출력할 때 그리고 비교 모듈(726)이 논리 로우 값 '0'을 출력할 때 큐 상태를 간헐적 큐 상태(602)로서 결정할 수 있다.
목표 레이트 시드(733)는 비교 모듈(724)의 출력 및 비교 모듈(726)의 출력에 기초하여 다중화기(720)를 제어하기 위해 목표 레이트 선택 값을 생성할 수 있다. 예를 들어, 목표 레이트 시드(733)는 샘플링된 디큐 레이트(704)가 안정적이지 않을 때(예컨대, 간헐적 큐 상태 동안) 논리 하이 값 '1'을 생성할 수 있다.
수명 모듈(265)은 큐 상태에 기초하여 LUT 모듈(732)에 의해 사용될 입력을 선택할 수 있다. LUT 모듈(732)은 부동 소수점 입력 포맷들을 수명들에 매핑하고, 입력 범위들을 수명으로 클립 및 스케일링하고, 및/또는 필요에 따라 비선형 수명들을 제공하도록 구성될 수 있다. 수명 모듈(265)은 0에서 로컬 메모리의 최대 크기까지의 범위를 갖는 수명(예컨대, 0 내지 255) 값을 출력할 수 있다. 예를 들어, 다중화기(730)는, 간헐적 큐 상태(602) 및 변동 큐 상태(606)가 선택될 때 LUT 모듈(732)에 대한 입력으로서 다중화기(720)의 출력을 전달하도록 구성될 수 있다. 레이턴시 모듈(728)은 버스팅 큐 상태에서의 큐 및/또는 비어 있는 큐들에 대한 패킷들을 위해 사용될 목표 레이턴시를 출력하도록 구성될 수 있다. 도시된 바와 같이, 다중화기(730)는 활성 큐 상태(608)가 선택될 때 LUT 모듈(732)에 대한 입력으로서 레이턴시 모듈(728)의 출력을 전달하도록 구성될 수 있다. 일부 예들에서, 다중화기(730)는 버스팅 큐 상태(604)가 선택될 때 LUT 모듈(732)에 대한 입력으로서 다중화기(731)의 출력을 전달하도록 구성될 수 있다. 예를 들어, 다중화기(730)는, 전형적으로 패킷과 연관된 목표 레이트를 갖지 않는, 높은 우선순위 패킷에 대해 LUT 모듈(732)에 대한 입력으로서 다중화기(731)의 출력을 전달하도록 구성될 수 있다. 이러한 방식으로, 수명 모듈(265)은 큐를 과다 신청할 때 높은 우선순위 패킷들조차 외부 메모리로 이동시키는 것을 도울 수 있다.
LUT 모듈(732)은 LUT 모듈(718)로부터 우선순위 선택 정보(735)를 수신하도록 구성될 수 있다. 일부 예들에서, 우선순위 선택 정보(735)는: 높은 우선순위 패킷에 대한 '11', 큐 간헐적에 대한 '10', 정상 또는 낮은 우선순위 패킷에 대한 '01', 큐 대역폭 혼잡에 대한 '00'을 지시할 수 있다. LUT 모듈(732)은 LUT 모듈(718)로부터 큐 임계치 영역 정보(737)를 수신하도록 구성될 수 있다. 일부 예들에서, 큐 임계치 영역 정보(737)는: 활성 안정적 영역(예컨대, Qlength, DQrate)에 대한 '11', 버스팅 영역(예컨대, Qlength, DQrate 없음)에 대한 '10', '01' DQrate - 비어 있는 영역(예컨대, Qlength 없음, DQrate), 또는 빈 간헐적 영역(예컨대, Qlength 없음, DQrate 없음)에 대한 '00'을 지시할 수 있다. LUT 모듈(732)은 우선순위 선택 정보(735)에 기초하여 수명을 생성할 수 있다.
수명 모듈(265)은 다중화기(720)에 의해 출력된 디큐 레이트에 기초하여 예측된 수명을 결정할 수 있다. 예를 들어, 활성 큐 상태(608)에 대해, 다중화기(720)는 샘플링된 디큐 레이트(704)를 디큐 레이트로서 출력하도록 구성된다. 이 예에서, 레이턴시 모듈(728)은 큐 길이(706) 및 다중화기(720)에 의해 출력된 샘플링된 디큐 레이트(704)에 기초하여 레이턴시를 결정한다. LUT 모듈(732)은 활성 큐 상태(608)에 대한 LUT로부터 레이턴시 모듈(728)에 의해 출력된 레이턴시에 대한 수명의 값을 선택함으로써 예측된 수명을 결정할 수 있다.
버스팅 큐 상태(604)에 대해, 다중화기(720)는 목표 레이트(702)를 디큐 레이트로서 출력하도록 구성된다. 이 예에서, 레이턴시 모듈(728)은 큐 길이(706) 및 다중화기(720)에 의해 출력된 목표 레이트(702)에 기초하여 레이턴시를 결정한다. LUT 모듈(732)은 버스팅 큐 상태(604)에 대한 LUT로부터 레이턴시 모듈(728)에 의해 출력된 레이턴시에 대한 수명의 값을 선택함으로써 예측된 수명을 결정할 수 있다.
일부 예들에서, 버스팅 큐 상태(604)에 대해, 수명 모듈(265)은 LUT 모듈(718)이 큐 길이 바이패스에서 논리 하이 값 '1'을 출력할 때 큐 길이가 큐 길이 바이패스(예컨대, 큐 길이 바이패스는 레이턴시보다는 LUT 모듈(732)에 대한 입력으로 qlength를 선택하는 제어 신호임) 값보다 작은 것을 지시할 수 있다. 예를 들어, LUT 모듈(718)이 큐 길이 바이패스에서 논리 하이 값 '1'을 출력할 때, 다중화기(731)는 큐 길이(706)를 LUT 모듈(732)에 출력하고, 이 LUT 모듈은 버스팅 큐 상태(604)에 대한 LUT로부터 큐 길이(706)에 대한 수명의 값을 선택함으로써 예측된 수명을 결정할 수 있다. 그러나, LUT 모듈(718)이 큐 길이 바이패스에서 논리 로우 값 '0'을 출력할 때, 다중화기(731)는 레이턴시를 LUT 모듈(732)에 출력하고, 이 LUT 모듈은 버스팅 큐 상태(604)에 대한 LUT로부터 레이턴시 모듈(728)에 의해 출력된 레이턴시에 대한 수명의 값을 선택함으로써 예측된 수명을 결정할 수 있다. Qlength 바이패스는 LUT 모듈(718)에 대한 입력으로서 높은 우선순위에 의해 설정될 수 있다(예컨대, 정적 우선순위 클래스들 중 하나). 이것은 수명 모듈(265)이 LUT 모듈(732)에 대한 입력으로서 Qlength 및 LUT 모듈(732)의 출력에서 수명의 측정을 사용하는 것을 허용한다. 예를 들어, 큐 길이에 의해 인덱싱되는 LUT를 생성할 때, 수명 모듈(265)은 고정 송신 레이트, 예컨대, 400 Gbps를 가정하여 수명 값들을 계산할 수 있다. 높은 우선순위는 단지 그것이기 때문에, 수명 모듈(265)은 이 예에서 400 Gbps인 Qsys의 최대 레이트에서 높은 우선순위 패킷을 서비스할 수 있다. qlength가 크기가 증가함에 따라, 수명도 증가하는데, 그 이유는 레이트가 고정되기 때문이다(예컨대, Qlength/Rate = 수명).
변동 큐 상태(606)에 대해, 다중화기(720)는 샘플링된 디큐 레이트(704)를 디큐 레이트로서 출력하도록 구성된다. 이 예에서, LUT 모듈(732)은 변동 큐 상태(606)에 대한 LUT로부터 다중화기(720)에 의해 출력된 샘플링된 디큐 레이트(704)에 대한 수명의 값을 선택함으로써 예측된 수명을 결정할 수 있다. 간헐적 큐 상태(602)에 대해, 다중화기(720)는 목표 레이트(702)를 디큐 레이트로서 출력하도록 구성된다. 이 예에서, LUT 모듈(732)은 간헐적 큐 상태(602)에 대한 LUT로부터 다중화기(720)에 의해 출력된 출력 목표 레이트(702)에 대한 수명의 값을 선택함으로써 예측된 수명을 결정할 수 있다.
도 8a는 본 개시내용의 기법들에 따른 제1 이동 임계치(802)를 예시하는 개념도이다. 이동 임계치(802)는 라우터에 의해 수신된 패킷의 예측된 수명과 함께 라우터에 의해 패킷을 로컬 메모리에 저장할지 또는 외부 메모리에 저장할지를 결정하는 데 사용될 수 있다. 도 8의 예에서, 수명 영역들(804)은 각각 값들의 범위와 연관될 수 있다. 예를 들어, 수명 영역(804A) 은 1 마이크로초(μs)보다 작은 수명들이 로컬 메모리(429)에 저장되고 1 마이크로초(μs)보다 작지 않은 수명들이 외부 메모리(427)에 저장되는 것을 특정할 수 있다.
일부 예들에서, 이동 임계치 관리자(263)는 수명 영역들(804)의 추가 또는 더 적은 영역들이 로컬 메모리(429)에 대응하도록 이동 임계치(802)를 수정할 수 있다. 예를 들어, 사용 계량기들이 로컬 메모리(429)가 과하게 사용되는 것을 지시할 때, 이동 임계치 관리자(263)는 이동 임계치(802)를 감소시켜 더 적은 수명 영역들(804)이 로컬 메모리(429)에 대응하도록 할 수 있다. 그러나, 사용 계량기들이 로컬 메모리(429)가 조금 사용되는 것을 지시하는 것에 응답하여, 이동 임계치 관리자(263)는 이동 임계치(802)를 증가시켜 추가 수명 영역들(804)이 로컬 메모리(429)에 대응하도록 할 수 있다. 이러한 방식으로, 이동 임계치 관리자(263)는 로컬 메모리(429)의 이용을 최대화하는 것을 도울 수 있다.
도 8b는 본 개시내용의 기법들에 따른 제2 이동 임계치(812)를 예시하는 개념도이다. 도 8b의 예에서, 제2 이동 임계치(812)는 수명 영역(804A) 및 수명 영역(804B)을 포함하는 이동 히스테리시스를 나타낸다. 이동 임계치 관리자(263)는 로컬 메모리(429)에 머무르기 위해 점점 더 작은 레이턴시가 필요하도록 로컬 메모리 사용 계량기가 증가함에 따라 제2 이동 임계치(812)를 더 낮게 스케일링할 수 있다. 일부 예들에서, 이동 임계치 관리자(263)는 로컬 메모리(429)에서 공간이 이용가능할 때 로컬 메모리(429) 내에 더 큰 레이턴시 패킷이 머무르도록 로컬 메모리 사용 계량기가 감소함에 따라 제2 이동 임계치(812)를 더 높게 스케일링할 수 있다. 일부 예들에서, 이동 임계치 관리자(263)는 혼잡한 큐들이 외부 메모리(427)로 이동할 가능성이 더 많도록 큐 대역폭 혼잡이 발생할 때 제2 이동 임계치(812)를 더 낮게 스케일링할 수 있다. 일부 예들에서, 이동 임계치 관리자(263)는 더 높은 우선순위 패킷들을 로컬 메모리(429)에 유지하는 것을 돕기 위해 우선순위가 증가함에 따라 제2 이동 임계치(812)를 더 높게 스케일링할 수 있다.
도 9는 본 개시내용의 기법들에 따른 도 2의 라우터 내의 제1 예시적인 이동 임계치 관리자(263)를 예시하는 블록도이다. 이동 임계치 관리자(263)는, 패킷을 로컬 메모리에 저장할지 또는 외부 메모리에 저장할지를 결정하기 위해, 예측된 수명과 함께 사용될 수 있는 이동 임계치(예컨대, 이동 임계치(802), 제2 이동 임계치(812) 등)를 결정할 수 있다. 도시된 바와 같이, 이동 임계치 관리자(263)는 큐 가중치(902), 큐 우선순위(904), 활성 GE 영역(906), 로컬 메모리(429)에 대한 로컬 청크 포인터 큐 가중치(CPQW)(908), 로컬 메모리(429)에 대한 공유 사용 계량기(910), 로컬 메모리(429)에 대한 공유 WAN 사용 계량기(912), 및 큐 혼잡 경험 비트(914)를 수신할 수 있다.
큐 가중치(902)는 관리자에 의해 설정된 가중치 값일 수 있다. 큐 가중치(902)는 초과 우선순위 큐들에 대한 의사 우선순위를 제공하는 가중된 라운드 로빈(WRR) 가중치들을 지시할 수 있다. 큐 우선순위(904)는 네트워크 패킷에 대한 우선순위 레벨을 지시할 수 있다. 큐 우선순위(904)는 단일 및 이중 우선순위 큐들을 식별하는 소프트웨어에 의해 배정된 정적 우선순위 클래스들을 지시할 수 있다. 도 9의 예에서, 큐 가중치(902) 및 큐 우선순위(904)는 정적 구성을 형성할 수 있다. 활성 GE 영역(906)은 이중 우선순위 큐가 보장된 것인지 초과 우선순위 영역에 있는지를 지시하는 활성 큐 우선순위를 지시할 수 있다. 활성 GE 영역(906)은 각각의 큐 레이트 업데이트에서 업데이트되고 인큐(NQ) 상에서 판독될 수 있다.
로컬 CPQW(908)는 각각의 청크 포인터(CP)를 보고 패킷 청크 어드레스가 온-칩-패킷 메모리(*OCPmem)에 있는지 또는 패킷 메모리(Pmem)에 있는지를 있는지를 확인함으로써 로컬 척 포인터 큐 WAN에 의해 제공될 수 있다. 청크 포인터 큐(CPQW)는 DBB에 저장된 패킷 청크들(예컨대, 256 바이트)에 대한 포인터들을 유지하는 큐잉 시스템(Qsys)의 일부일 수 있다. CPQW는 큐(FIFO)에서 모든 청크들을 함께 링크시키는 큐 당 포인터들의 리스트를 유지한다. 패킷들은 고정된 크기 청크들로 분할되고, DBB, 로컬 메모리, 또는 외부 메모리에 저장되고, 이러한 청크들에 대한 포인터들이 CPQW에 의해 유지된다.
로컬 메모리(429)에 대한 공유 사용 계량기(910)는 로컬 메모리(429)에 대한 총 결합 사용 계량기(410)의 예일 수 있다. 공유 사용 계량기(910)는 모든 WAN Qsys가 얼마나 많은 로컬 메모리를 사용하고 있는지를 추적하는 메모리 할당(MALLOC) 블록에 의해 제공될 수 있다. 로컬 메모리(429)에 대한 공유 WAN 사용 계량기(912)는 WAN(408)에 대한 공유 사용 계량기의 예일 수 있다. 공유 WAN 사용 계량기(912)는 모든 WAN 및 패브릭 Qsys가 얼마나 많은 로컬 메모리를 사용하고 있는지를 추적하는 메모리 할당 블록에 의해 제공될 수 있다. 큐 혼잡 경험 비트(914)는 레이트 차이 모듈(714)의 출력일 수 있다. 큐 혼잡 경험 비트(914)는 DQrate가 목표 레이트보다 낮을 때 큐 대역폭 혼잡이 경험되는 것을 지시할 수 있다. 일부 예들에서, 큐 혼잡 경험 비트(914)는 혼잡 큐들이 외부 메모리로 이동할 가능성이 더 많도록 이동 임계치를 더 낮게 시프트한다.
LUT 모듈(916)은 큐 가중치(902), 큐 우선순위(904), 활성 GE 영역(906)에 기초하여 우선순위를 출력할 수 있다. 유사하게, LUT 모듈(918)은 로컬 메모리(429)에 대한 로컬 CPQW(908), 로컬 메모리(429)에 대한 공유 사용 계량기(910), 및 로컬 메모리(429)에 대한 공유 WAN 사용 계량기(912)에 기초하여 WAN 이동 사용 계량기를 출력할 수 있다. LUT(920)는 예측된 수명(예컨대, LUT 모듈(732)에 의해 출력), LUT 모듈(916)에 의해 출력된 우선순위, LUT 모듈(918)에 의해 출력된 WAN 이동 사용 계량기, 및 큐 혼잡 경험 비트(914)에 기초하여 상위 이동 플래그(922)를 출력할 수 있다. LUT 모듈(916)은 수명, OCPmem 사용 계량기들, 및 우선순위를 그의 인덱스로서 사용하여 비교 함수를 구현할 수 있다. 이 예에서, 수명 크기가 LUT 모듈(918)에서 구현된 논리 임계치를 초과할 때, 수명 크기가 LUT 모듈(918)에서 구현된 논리 임계치를 초과하는 것을 지시하기 위해 상위 이동 플래그(922)가 설정된다.
유사하게, LUT(920)는 예측된 수명(예컨대, LUT 모듈(732)에 의해 출력), LUT 모듈(916)에 의해 출력된 우선순위, LUT 모듈(918)에 의해 출력된 WAN 이동 사용 계량기, 및 큐 혼잡 경험 비트(914)에 기초하여 하위 이동 플래그(924)를 출력할 수 있다. LUT 모듈(916)은 수명, OCPmem 사용 계량기들, 및 우선순위를 그의 인덱스로서 사용하여 비교 함수를 구현할 수 있다. 이 예에서, 수명 크기가 LUT 모듈(918)에서 구현된 논리 임계치보다 작을 때, 수명 크기가 LUT 모듈(918)에서 구현된 논리 임계치보다 작은 것을 지시하기 위해 하위 이동 플래그(924)가 설정된다.
이동 로직(926)은 상위 이동 플래그(922) 및 하위 이동 플래그(924)에 기초하여 이동 임계치(802)를 조정(예컨대, 감소 또는 증가)할 수 있다. 예를 들어, 이동 로직(926)은 상위 이동 플래그(922)가 설정되고 하위 이동 플래그(924)가 설정되지 않을 때 이동 임계치(802)를 증가시킬 수 있다. 일부 예들에서, 이동 로직(926)은 상위 이동 플래그(922)가 설정되지 않고 하위 이동 플래그(924)가 설정될 때 이동 임계치(802) 및/또는 이동 임계치(812)를 감소시킬 수 있다. 도 9의 예에서, 이동 로직(926)은 수명의 작은 변화가 전이 동안 패킷들이 이동되고 이동되지 않는 것을 야기하도록 이동된 비트(925)에 대한 "M"을 사용하여 선택적인 히스테리시스를 제공할 수 있다. 히스테리시스를 원하지 않을 때 임계치들은 동일한 값으로 설정될 수 있다. 이동된 비트(925)는 다음의 의사 코드에 의해 정의될 수 있다.
Figure pat00003
일부 예들에서, 이동 로직(926)의 출력은 외부 메모리 관리자에 의해, 예를 들어, 네트워크 패킷을 드롭할지를 결정하는 데(그러나 이에 제한되지는 않음) 사용될 수 있다. 도 9의 LUT 모듈(920)은 2개의 출력, 상위 이동 플래그(922) 및 하위 이동 플래그(924)를 갖는다. 상위 이동 플래그(922)는 패킷 수명이 이동 LUT 입력들에 의해 결정된 값을 초과했고 패킷이 외부 메모리(427)로 이동해야 한다는 지시이다. 이 하위 이동 플래그(924)는 패킷 수명이 임계치 아래이고 로컬 메모리(429)에 머물러야 한다는 지시이다. 상위 이동 플래그(922)는 패킷이 외부 메모리(429)에 저장되는 것을 지시하는, 이동된 비트에 대한, M-비트라고 불리는 비트를 설정한다. 상위 이동 플래그(922)는 M-비트를 설정하고 하위 이동 플래그(924)는 M-비트를 클리어한다.
도 10은 본 개시내용의 기법들에 따른 도 2의 라우터 내의 제2 예시적인 이동 임계치 관리자(263)를 예시하는 블록도이다. 이동 임계치 관리자(263)는, 예측된 수명과 함께, 패킷을 로컬 메모리(429)에 저장할지 또는 외부 메모리(427)에 저장할지를 결정하는 데 사용될 수 있는 이동 임계치(예컨대, 임계치(802) 및/또는 이동 임계치(812))을 결정할 수 있다. 도 10의 예에서, LUT 모듈(1016)은 큐 가중치(1002), 큐 우선순위(1004), 및 활성 GE 영역(1006)을 수신할 수 있다. 이 예에서, LUT 모듈(1018)은 로컬 메모리(429)에 대한 로컬 청크 포인터 큐 가중치(CPQW)(1008), 로컬 메모리(429)에 대한 공유 사용 계량기(1010), 및 로컬 메모리(429)에 대한 공유 WAN 사용 계량기(1012)를 수신할 수 있다. 이 예에서, LUT 모듈(1020)은 큐 혼잡 경험 비트(1014)를 수신할 수 있다. 입력들(1002-1014)은 도 9의 입력들(902-914)과 실질적으로 유사할 수 있다. 그러나, 도 10의 예에서, 이동 로직(1026)은 수명(1021)을 수신한다.
도 10의 예에서, LUT 모듈(1020)은 상위 이동 임계치(1022)를 생성한다. 이 예에서, 이동 로직(1026)은 상위 이동 임계치(1022)를 각각의 패킷에 대한 수명(1021)과 비교한다. 이동 임계치 모듈(1020)은 OCPmem 사용 계량기와 우선순위 인덱스의 각각의 조합에 대한 상위 이동 임계치(1022)를 생성한다. 더 많은 로컬 메모리(429)가 이용가능함에 따라 임계치 값들이 일반적으로 크기가 증가하고, 예컨대, 더 많은 패킷들이 로컬 메모리(429)를 사용하는 것을 허용하고, 더 적은 로컬 메모리(429)가 이용가능함에 따라 일반적으로 값이 감소하고, 그에 의해 더 많은 패킷들이 외부 메모리(427)를 사용하도록 강제하는 것을 돕는다. 수명(1021)이 상위 이동 임계치(1022)를 초과할 때, 큐 레이턴시 관리자(264)는 패킷을 외부 메모리(427)로 이동시킨다.
유사하게, LUT 모듈(1020)은 하위 이동 임계치(1024)를 생성한다. 이 예에서, 이동 로직(1026)은 하위 이동 임계치(1024)를 각각의 패킷에 대한 수명(1021)과 비교한다. 이동 임계치 모듈(1020)은 OCPmem 사용 계량기와 우선순위 인덱스의 각각의 조합에 대한 하위 이동 임계치(1024)를 생성한다. 더 많은 로컬 메모리(429)가 이용가능함에 따라 임계치 값들이 일반적으로 크기가 증가하고, 예컨대, 더 많은 패킷들이 로컬 메모리(429)를 사용하는 것을 허용하고, 더 적은 로컬 메모리(429)가 이용가능함에 따라 일반적으로 값이 감소하고, 그에 의해 더 많은 패킷들이 외부 메모리(427)를 사용하도록 강제하는 것을 돕는다. 수명(1021)이 하위 이동 임계치(1024) 아래일 때, 이동 임계치 관리자(263)는 패킷을 이동시키지 않는다. 예를 들어, 큐 레이턴시 관리자(264)는 패킷을 외부 메모리(427)에 대해 로컬로 유지한다.
도 11은 본 개시내용의 기법들에 따른 예시적인 동작을 예시하는 흐름도이다. 도 11은 단지 예시적인 목적을 위해 도 2의 라우터(206)에 관하여 설명된다. 처음에, IFC(230A)는 프로세싱될 착신 네트워크 패킷을 수신한다(1002). 일부 예들에서, 큐 레이턴시 관리자(264)는 처음에는 네트워크 패킷을 로컬 메모리(429)에 저장한다.
셰이퍼 크레딧 업데이트 엔진(262)이 디큐 레이트를 결정한다(1003). 예를 들어, 셰이퍼 크레딧 업데이트 엔진(262)은 큐로부터 하나 이상의 패킷을 디큐잉하기 위해 큐에 대한 토큰 버킷 셰이퍼에 의해 시간 단위에 걸쳐 사용되는 토큰들의 수를 결정한다. 이 예에서, 토큰들 각각은 큐로부터 디큐잉될 주어진 수의 바이트들을 나타낸다. 이 예에서, 셰이퍼 크레딧 업데이트 엔진(262)은 시간 단위에 걸쳐 사용되는 토큰들의 수에 기초하여 샘플링된 디큐 레이트를 결정한다.
수명 모듈(265)은 큐 상태를 선택한다(1004). 예를 들어, 수명 모듈(265)은 큐에 대한 복수의 큐 상태 중 큐 상태를 선택한다. 더 구체적으로는, 예를 들어, 수명 모듈(265)은 샘플링된 디큐 레이트(704)가 임계치 디큐 레이트를 초과할 때 그리고 큐 길이706)가 임계치 큐 길이를 초과할 않을 때 큐에 대한 복수의 큐 상태 중 활성 큐 상태를 선택한다. 일부 예들에서, 수명 모듈(265)은 큐에 대한 샘플링된 디큐 레이트(704)가 임계치 디큐 레이트를 초과하지 않을 때 그리고 큐 길이(706)가 임계치 큐 길이를 초과할 때 큐에 대한 복수의 큐 상태 중 버스팅 큐 상태를 선택한다. 일부 예들에서, 수명 모듈(265)은 큐에 대한 샘플링된 디큐 레이트(704)가 임계치 디큐 레이트를 초과하지 않을 때 그리고 큐에 대한 큐 길이(706)가 임계치 큐 길이를 초과하지 않을 때 큐에 대한 복수의 큐 상태 중 간헐적 큐 상태를 선택한다. 일부 예들에서, 수명 모듈(265)은 큐에 대한 샘플링된 디큐 레이트(704)가 임계치 디큐 레이트를 초과할 때 그리고 큐에 대한 큐 길이(706)가 임계치 큐 길이를 초과하지 않을 때 큐에 대한 복수의 큐 상태 중 과도 큐 상태를 선택한다.
수명 모듈(265)은 디큐 레이트 및 큐 상태에 대응하는 LUT에 기초하여 네트워크 패킷의 예측된 수명을 결정한다(1006). 예를 들어, 수명 모듈(265)이 예측된 수명을 결정하는 것은 선택된 큐 상태에 대응하는 룩업 테이블을 사용하는 것을 포함한다. 더 구체적으로는, 예를 들어, 수명 모듈(265)은 큐의 큐 길이 및 디큐 레이트에 기초하여 큐에 대한 레이턴시를 결정한다. 예를 들어, 수명 모듈(265)은 결정된 레이턴시를 활성 큐 상태에 대응하는 룩업 테이블로의 입력으로서 사용하여 예측된 수명을 결정한다. 일부 예들에서, 수명 모듈(265)은 결정된 레이턴시를 버스팅 큐 상태에 대응하는 룩업 테이블로의 입력으로서 사용하여 예측된 수명을 결정한다.
일부 예들에서, 수명 모듈(265)은 미리 결정된 목표 디큐 레이트를 간헐적 큐 상태에 대응하는 룩업 테이블로의 입력으로서 사용하여 예측된 수명을 결정한다. 일부 예들에서, 수명 모듈(265)은 샘플링된 디큐 레이트를 과도 큐 상태에 대응하는 룩업 테이블로의 입력으로서 사용하여 예측된 수명을 결정한다. 수명 모듈(265)은 큐에 대한 미리 결정된 목표 레이트(702)와 샘플링된 디큐 레이트(704)의 차이에 기초하여 큐에서의 큐 혼잡 경험 비트(712)를 결정할 수 있고, 큐 혼잡 경험 비트(712)에 더 기초하여 네트워크 패킷의 예측된 수명을 결정할 수 있다. 예를 들어, LUT 모듈(732)은 큐 혼잡 경험 비트(712)가 샘플링된 디큐 레이트(704)가 미리 결정된 목표 레이트(702)보다 작다는 것을 지시할 때 큐 혼잡에 대응하는 LUT 테이블을 선택할 수 있다.
이동 임계치 관리자(263)가 이동 임계치를 결정한다(1007). 예를 들어, 이동 임계치 관리자(263)는 로컬 메모리에 대한 사용 계량기 또는 큐에 대한 우선순위 중 적어도 하나에 기초하여 이동 임계치를 결정한다. 큐 레이턴시 관리자(264)는 예측된 수명 및 이동 임계치에 기초하여 네트워크 패킷에 대한 복수의 메모리 중 제1 메모리를 선택한다(1008). 예를 들어, 큐 레이턴시 관리자(264)는 예측된 수명이 이동 임계치를 초과하지 않을 때 로컬 메모리(429)를 제1 메모리로서 선택한다. 일부 예들에서, 큐 레이턴시 관리자(264)는 예측된 수명이 이동 임계치를 초과할 때 외부 메모리(427)를 제1 메모리로서 선택한다.
큐 레이턴시 관리자(264)는 네트워크 패킷을 제1 메모리에 저장한다(1010). 예를 들어, 큐 레이턴시 관리자(264)는 예측된 수명이 이동 임계치를 초과하지 않을 때 네트워크 패킷을 로컬 메모리(429)에 저장한다. 일부 예들에서, 큐 레이턴시 관리자(264)는 예측된 수명이 이동 임계치를 초과할 때 네트워크 패킷을 외부 메모리(427)에 저장한다. 패킷 포워딩 엔진(226)이 제1 메모리로부터 네트워크 패킷을 검색한다(1012). IFC(230A)가 네트워크 패킷을 송신한다(1014).
본 개시내용에서 설명된 기법들은, 적어도 부분적으로, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 예를 들어, 설명된 기법들의 다양한 양태들은 하나 이상의 마이크로프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA), 또는 임의의 다른 등가의 집적 또는 이산 로직 회로뿐만 아니라 그러한 컴포넌트들의 임의의 조합을 포함하는, 하나 이상의 프로세서 내에서 구현될 수 있다. 용어 "프로세서" 또는 "프로세싱 회로"란, 일반적으로, 전술한 로직 회로 중 임의의 것을, 단독으로 또는 다른 로직 회로, 또는 임의의 다른 등가 회로와 조합하여 지칭할 수 있다. 하드웨어를 포함하는 제어 유닛이 또한 본 개시내용의 기법들 중 하나 이상을 수행할 수 있다.
그러한 하드웨어, 소프트웨어 및 펌웨어는, 본 개시내용에서 설명된 다양한 동작들 및 기능들을 지원하기 위해 동일한 디바이스 내에서 또는 개별 디바이스들 내에서 구현될 수 있다. 또한, 설명된 유닛들, 모듈들 또는 컴포넌트들 중 임의의 것은 함께 또는 개별적으로 이산이지만 상호운용가능한 로직 디바이스들로서 구현할 수 있다. 모듈들 또는 유닛들로서의 상이한 특징들의 묘사는 상이한 기능적 양태들을 강조하기 위한 것이며, 반드시 그러한 모듈들 또는 유닛들이 개별 하드웨어 또는 소프트웨어 컴포넌트들에 의해 실현되어야 한다는 것을 암시하는 것은 아니다. 오히려, 하나 이상의 모듈 또는 유닛과 연관된 기능성은 개별 하드웨어 또는 소프트웨어 컴포넌트들에 의해 수행되거나, 또는 공통 또는 개별 하드웨어 또는 소프트웨어 컴포넌트들 내에 통합될 수 있다.
본 개시내용에서 설명된 기법들은 또한, 명령어들을 포함하는, 컴퓨터 판독가능 저장 매체와 같은 컴퓨터 판독가능 매체에서 구현되거나 인코딩될 수 있다. 컴퓨터 판독가능 저장 매체에 내장되거나 인코딩된 명령어들은 프로그램가능 프로세서, 또는 다른 프로세서로 하여금, 예컨대, 명령어들이 실행될 때, 방법을 수행하게 할 수 있다. 컴퓨터 판독가능 저장 매체는 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 프로그램가능 판독 전용 메모리(PROM), 소거가능 프로그램가능 판독 전용 메모리(EPROM), 전자적으로 소거가능 프로그램가능 판독 전용 메모리(EEPROM), 플래시 메모리, 하드 디스크, CD-ROM, 플로피 디스크, 카세트, 자기 매체, 광학 매체, 또는 다른 컴퓨터 판독가능 매체를 포함할 수 있다.
위의 내용 외에도 또는 그에 대한 대안으로서, 다음 예들이 설명된다. 다음 예들 중 임의의 것에서 설명된 특징들은 본 명세서에 설명된 다른 예들 중 임의의 것과 함께 이용될 수 있다.
예 1. 방법으로서: 네트워킹 디바이스의 프로세싱 회로에 의해, 프로세싱될 착신 네트워크 패킷을 수신하는 단계 - 상기 네트워크 패킷은 프로세싱 전에 큐에 보유됨 -; 상기 프로세싱 회로에 의해, 상기 큐에 대한 디큐 레이트에 기초하여 상기 네트워크 패킷의 예측된 수명을 결정하는 단계; 상기 프로세싱 회로에 의해, 상기 예측된 수명에 기초하여 상기 네트워크 패킷에 대한 복수의 메모리 중 제1 메모리를 선택하는 단계 - 상기 복수의 메모리는 상기 프로세싱 회로의 로컬 메모리 및 상기 프로세싱 회로에 대한 외부 메모리를 포함함 -; 상기 프로세싱 회로에 의해, 상기 복수의 메모리 중 상기 제1 메모리를 선택하는 것에 응답하여 상기 제1 메모리에 상기 네트워크 패킷을 저장하는 단계를 포함하는, 방법.
예 2. 예 1의 방법으로서, 상기 프로세싱 회로에 의해, 상기 큐에 대한 복수의 큐 상태 중 큐 상태를 선택하는 단계를 포함하고, 상기 예측된 수명을 결정하는 단계는 상기 선택된 큐 상태에 대응하는 룩업 테이블을 사용하는 단계를 포함한다.
예 3. 예 2의 방법으로서, 상기 네트워크 패킷의 상기 예측된 수명을 결정하는 단계는: 상기 큐의 큐 길이 및 상기 디큐 레이트에 기초하여 상기 큐에 대한 레이턴시를 결정하는 단계를 포함한다.
예 4. 예 3의 방법으로서, 상기 디큐 레이트는 상기 큐에 대한 샘플링된 디큐 레이트를 포함하고, 상기 선택된 큐 상태는 활성 큐 상태이고, 상기 큐 상태를 선택하는 단계는: 상기 샘플링된 디큐 레이트가 임계치 디큐 레이트를 초과할 때 그리고 상기 큐 길이가 임계치 큐 길이를 초과할 때 상기 큐에 대한 상기 복수의 큐 상태 중 상기 활성 큐 상태를 선택하는 단계를 포함하고, 상기 레이턴시를 결정하는 단계는 상기 활성 큐 상태를 선택하는 것에 응답하여 행해지고, 상기 예측된 수명을 결정하는 단계는 상기 결정된 레이턴시를 상기 활성 큐 상태에 대응하는 룩업 테이블로의 입력으로서 사용하는 단계를 추가로 포함한다.
예 5. 예 3의 방법으로서, 상기 디큐 레이트는 상기 큐에 대한 미리 결정된 목표 디큐 레이트를 포함하고, 상기 선택된 큐 상태는 버스팅 큐 상태이고, 상기 큐 상태를 선택하는 단계는: 상기 큐에 대한 샘플링된 디큐 레이트가 임계치 디큐 레이트를 초과하지 않을 때 그리고 상기 큐 길이가 임계치 큐 길이를 초과할 때 상기 큐에 대한 상기 복수의 큐 상태 중 상기 버스팅 큐 상태를 선택하는 단계를 포함하고, 상기 레이턴시를 결정하는 단계는 상기 버스팅 큐 상태를 선택하는 것에 응답하여 행해지고, 상기 예측된 수명을 결정하는 단계는 상기 결정된 레이턴시를 상기 버스팅 큐 상태에 대응하는 룩업 테이블로의 입력으로서 사용하는 단계를 추가로 포함한다.
예 6. 예 2의 방법으로서, 상기 디큐 레이트는 상기 큐에 대한 미리 결정된 목표 디큐 레이트를 포함하고, 상기 선택된 큐 상태는 간헐적 큐 상태이고, 상기 큐 상태를 선택하는 단계는: 상기 큐에 대한 샘플링된 디큐 레이트가 임계치 디큐 레이트를 초과하지 않을 때 그리고 상기 큐에 대한 큐 길이가 임계치 큐 길이를 초과하지 않을 때 상기 큐에 대한 상기 복수의 큐 상태 중 상기 간헐적 큐 상태를 선택하는 단계를 포함하고, 상기 예측된 수명을 결정하는 단계는 상기 미리 결정된 목표 디큐 레이트를 상기 간헐적 큐 상태에 대응하는 룩업 테이블로의 입력으로서 사용하는 단계를 포함한다.
예 7. 예 2의 방법으로서, 상기 디큐 레이트는 상기 큐에 대한 샘플링된 디큐 레이트를 포함하고, 상기 선택된 큐 상태는 과도 큐 상태이고, 상기 큐 상태를 선택하는 단계는: 상기 샘플링된 디큐 레이트가 임계치 디큐 레이트를 초과할 때 그리고 상기 큐의 큐 길이가 임계치 큐 길이를 초과하지 않을 때 상기 큐에 대한 상기 복수의 큐 상태 중 상기 과도 큐 상태를 선택하는 단계를 포함하고, 상기 예측된 수명을 결정하는 단계는 상기 샘플링된 디큐 레이트를 상기 과도 큐 상태에 대응하는 룩업 테이블로의 입력으로서 사용하는 단계를 포함한다.
예 8. 예 1-7의 임의의 조합의 방법으로서, 상기 디큐 레이트는 상기 큐에 대한 샘플링된 디큐 레이트를 포함하고, 상기 방법은: 상기 프로세싱 회로에 의해, 상기 큐에 대한 미리 결정된 목표 디큐 레이트와 상기 샘플링된 디큐 레이트의 차이에 기초하여 상기 큐에서 경험된 큐 혼잡을 결정하는 단계를 추가로 포함하고, 상기 예측된 수명을 결정하는 단계는 상기 큐 혼잡에 추가로 기초하여 행해진다.
예 9. 예 1-8의 임의의 조합의 방법으로서, 상기 제1 메모리를 선택하는 단계는: 상기 로컬 메모리에 대한 사용 계량기 또는 상기 큐에 대한 우선순위 중 적어도 하나에 기초하여 이동 임계치를 결정하는 단계; 및 상기 이동 임계치를 상기 예측된 수명과 비교하는 단계를 포함한다.
예 10. 예 9의 방법으로서, 상기 제1 메모리를 선택하는 단계는: 상기 예측된 수명이 상기 이동 임계치를 초과하지 않을 때 상기 로컬 메모리를 상기 제1 메모리로서 선택하는 단계; 및 상기 예측된 수명이 상기 이동 임계치를 초과할 때 상기 외부 메모리를 상기 제1 메모리로서 선택하는 단계를 포함한다.
예 11. 예 1-10의 임의의 조합의 방법으로서, 상기 네트워크 패킷을 수신하는 것에 응답하여, 상기 프로세싱 회로에 의해, 상기 제1 메모리를 선택하기 전에 상기 네트워크 패킷을 상기 로컬 메모리에 저장하는 단계를 포함한다.
예 12. 예 1-11의 임의의 조합의 방법으로서, 상기 네트워킹 디바이스는 제1 네트워킹 디바이스이고, 상기 방법은: 상기 프로세싱 회로에 의해, 상기 제1 메모리로부터 상기 네트워크 패킷을 검색하는 단계; 및 상기 프로세싱 회로에 의해, 상기 검색된 네트워크 패킷을 제2 네트워킹 디바이스에 송신하는 단계를 추가로 포함한다.
예 13. 예 1-12의 임의의 조합의 방법으로서, 상기 디큐 레이트는 상기 큐에 대한 샘플링된 디큐 레이트를 포함하고, 상기 방법은: 상기 프로세싱 회로에 의해, 상기 큐로부터 하나 이상의 패킷을 디큐잉하기 위해 상기 큐에 대한 토큰 버킷 셰이퍼에 의해 시간 단위에 걸쳐 사용되는 토큰들의 수를 결정하는 단계 - 상기 토큰들 각각은 상기 큐로부터 디큐잉될 주어진 수의 바이트들을 나타냄 -; 및 상기 프로세싱 회로에 의해, 상기 시간 단위에 걸쳐 사용되는 토큰들의 수에 기초하여 상기 샘플링된 디큐 레이트를 결정하는 단계를 추가로 포함한다.
예 14. 네트워킹 디바이스로서, 프로세싱 회로의 로컬 메모리 및 상기 프로세싱 회로에 대한 외부 메모리를 포함하는 복수의 메모리; 및 상기 복수의 메모리에 접속된 상기 프로세싱 회로를 포함하고, 상기 프로세싱 회로는: 프로세싱될 착신 네트워크 패킷을 수신하고 - 상기 네트워크 패킷은 프로세싱 전에 큐에 보유됨 -; 상기 큐에 대한 디큐 레이트에 기초하여 상기 네트워크 패킷의 예측된 수명을 결정하고; 상기 예측된 수명에 기초하여 상기 복수의 메모리 중 제1 메모리를 선택하고; 상기 복수의 메모리 중 상기 제1 메모리를 선택하는 것에 응답하여 상기 제1 메모리에 상기 네트워크 패킷을 저장하도록 구성되는, 네트워킹 디바이스.
예 15. 예 14의 네트워킹 디바이스로서, 상기 프로세싱 회로는: 상기 큐에 대한 복수의 큐 상태 중 큐 상태를 선택하도록 구성되고, 상기 예측된 수명을 결정하기 위해, 상기 프로세싱 회로는 상기 선택된 큐 상태에 대응하는 룩업 테이블을 사용하도록 구성된다.
예 16. 예 15의 네트워킹 디바이스로서, 상기 네트워크 패킷의 상기 예측된 수명을 결정하기 위해, 상기 프로세싱 회로는: 상기 큐의 큐 길이 및 상기 디큐 레이트에 기초하여 상기 큐에 대한 레이턴시를 결정하도록 구성된다.
예 17. 예 16의 네트워킹 디바이스로서, 상기 디큐 레이트는 상기 큐에 대한 샘플링된 디큐 레이트를 포함하고, 상기 선택된 큐 상태는 활성 큐 상태이고, 상기 큐 상태를 선택하기 위해, 상기 프로세싱 회로는: 상기 샘플링된 디큐 레이트가 임계치 디큐 레이트를 초과할 때 그리고 상기 큐 길이가 임계치 큐 길이를 초과할 때 상기 큐에 대한 상기 복수의 큐 상태 중 상기 활성 큐 상태를 선택하도록 구성되고, 상기 레이턴시를 결정하는 것은 상기 활성 큐 상태를 선택하는 것에 응답하여 행해지고, 상기 예측된 수명을 결정하기 위해, 상기 프로세싱 회로는 상기 결정된 레이턴시를 상기 활성 큐 상태에 대응하는 룩업 테이블로의 입력으로서 사용하도록 추가로 구성된다.
예 18. 예 16의 네트워킹 디바이스로서, 상기 디큐 레이트는 상기 큐에 대한 큐에 대한 미리 결정된 목표 디큐 레이트를 포함하고, 상기 선택된 큐 상태는 버스팅 큐 상태이고, 상기 큐 상태를 선택하기 위해, 상기 프로세싱 회로는: 상기 큐에 대한 샘플링된 디큐 레이트가 임계치 디큐 레이트를 초과하지 않을 때 그리고 상기 큐 길이가 임계치 큐 길이를 초과할 때 상기 큐에 대한 상기 복수의 큐 상태 중 상기 버스팅 큐 상태를 선택하도록 구성되고, 상기 레이턴시를 결정하는 것은 상기 버스팅 큐 상태를 선택하는 것에 응답하여 행해지고, 상기 예측된 수명을 결정하기 위해, 상기 프로세싱 회로는 상기 결정된 레이턴시를 상기 버스팅 큐 상태에 대응하는 룩업 테이블로의 입력으로서 사용하도록 추가로 구성된다.
예 19. 예 15의 네트워킹 디바이스로서, 상기 디큐 레이트는 상기 큐에 대한 미리 결정된 목표 디큐 레이트를 포함하고, 상기 선택된 큐 상태는 간헐적 큐 상태이고, 상기 큐 상태를 선택하기 위해, 상기 프로세싱 회로는: 상기 큐에 대한 샘플링된 디큐 레이트가 임계치 디큐 레이트를 초과하지 않을 때 그리고 상기 큐에 대한 큐 길이가 임계치 큐 길이를 초과하지 않을 때 상기 큐에 대한 상기 복수의 큐 상태 중 상기 간헐적 큐 상태를 선택하도록 구성되고, 상기 예측된 수명을 결정하기 위해, 상기 프로세싱 회로는 상기 미리 결정된 목표 디큐 레이트를 상기 간헐적 큐 상태에 대응하는 룩업 테이블로의 입력으로서 사용하도록 구성된다.
예 20. 예 15의 네트워킹 디바이스로서, 상기 디큐 레이트는 상기 큐에 대한 큐에 대한 샘플링된 디큐 레이트를 포함하고, 상기 선택된 큐 상태는 과도 큐 상태이고, 상기 큐 상태를 선택하기 위해, 상기 프로세싱 회로는: 상기 샘플링된 디큐 레이트가 임계치 디큐 레이트를 초과할 때 그리고 상기 큐의 큐 길이가 임계치 큐 길이를 초과하지 않을 때 상기 큐에 대한 상기 복수의 큐 상태 중 상기 과도 큐 상태를 선택하도록 구성되고, 상기 예측된 수명을 결정하기 위해, 상기 프로세싱 회로는 상기 샘플링된 디큐 레이트를 상기 과도 큐 상태에 대응하는 룩업 테이블로의 입력으로서 사용하도록 구성된다.
예 21. 예 14-20의 임의의 조합의 네트워킹 디바이스로서, 상기 디큐 레이트는 상기 큐에 대한 샘플링된 디큐 레이트를 포함하고, 상기 프로세싱 회로는: 상기 큐에 대한 미리 결정된 목표 디큐 레이트와 상기 샘플링된 디큐 레이트의 차이에 기초하여 상기 큐에서 경험된 큐 혼잡을 결정하도록 구성되고, 상기 예측된 수명을 결정하는 것은 상기 큐 혼잡에 추가로 기초하여 행해진다.
예 22. 예 14-21의 임의의 조합의 네트워킹 디바이스로서, 상기 제1 메모리를 선택하기 위해, 상기 프로세싱 회로는: 상기 로컬 메모리에 대한 사용 계량기 또는 상기 큐에 대한 우선순위 중 적어도 하나에 기초하여 이동 임계치를 결정하고; 상기 이동 임계치를 상기 예측된 수명과 비교하도록 구성된다.
예 23. 예 22의 네트워킹 디바이스로서, 상기 제1 메모리를 선택하기 위해, 상기 프로세싱 회로는: 상기 예측된 수명이 상기 이동 임계치를 초과하지 않을 때 상기 로컬 메모리를 상기 제1 메모리로서 선택하고; 상기 예측된 수명이 상기 이동 임계치를 초과할 때 상기 외부 메모리를 상기 제1 메모리로서 선택하도록 구성된다.
예 24. 예 14-23의 임의의 조합의 네트워킹 디바이스로서, 상기 프로세싱 회로는: 상기 네트워크 패킷을 수신하는 것에 응답하여, 상기 제1 메모리를 선택하기 전에 상기 네트워크 패킷을 상기 로컬 메모리에 저장하도록 구성된다.
예 25. 예 14-24의 임의의 조합의 네트워킹 디바이스로서, 상기 네트워킹 디바이스는 제1 네트워킹 디바이스이고, 상기 프로세싱 회로는: 상기 제1 메모리로부터 상기 네트워크 패킷을 검색하고; 상기 검색된 네트워크 패킷을 제2 네트워킹 디바이스로 송신하도록 구성된다.
예 26. 예 14-25의 임의의 조합의 네트워킹 디바이스로서, 상기 디큐 레이트는 상기 큐에 대한 샘플링된 디큐 레이트를 포함하고, 상기 프로세싱 회로는: 상기 큐로부터 하나 이상의 패킷을 디큐잉하기 위해 상기 큐에 대한 토큰 버킷 셰이퍼에 의해 시간 단위에 걸쳐 사용되는 토큰들의 수를 결정하고 - 상기 토큰들 각각은 상기 큐로부터 디큐잉될 주어진 수의 바이트들을 나타냄 -; 상기 시간 단위에 걸쳐 사용되는 토큰들의 수에 기초하여 상기 샘플링된 디큐 레이트를 결정하도록 구성된다.
예 27. 명령어들을 포함하는 비일시적 컴퓨터 판독가능 매체로서, 상기 명령어들은, 실행될 때, 네트워킹 디바이스의 프로세싱 회로로 하여금: 프로세싱될 착신 네트워크 패킷을 수신하고 - 상기 네트워크 패킷은 프로세싱 전에 큐에 보유됨 -; 상기 큐에 대한 디큐 레이트에 기초하여 상기 네트워크 패킷의 예측된 수명을 결정하고; 상기 예측된 수명에 기초하여 상기 네트워크 패킷에 대한 복수의 메모리 중 제1 메모리를 선택하고 - 상기 복수의 메모리는 상기 프로세싱 회로의 로컬 메모리 및 상기 프로세싱 회로에 대한 외부 메모리를 포함함 -; 상기 복수의 메모리 중 상기 제1 메모리를 선택하는 것에 응답하여 상기 제1 메모리에 상기 네트워크 패킷을 저장하게 하는, 비일시적 컴퓨터 판독가능 매체.
또한, 위에 설명된 예들 중 임의의 예에 제시된 특정 특징들 중 임의의 특징이 설명된 기법들의 이로운 예들로 조합될 수 있다. 즉, 특정 특징들 중 임의의 특징이 일반적으로 본 발명의 모든 예들에 적용가능하다. 다양한 예들이 설명되었다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 속한다.

Claims (27)

  1. 방법으로서,
    네트워킹 디바이스의 프로세싱 회로에 의해, 프로세싱될 착신 네트워크 패킷을 수신하는 단계 - 상기 네트워크 패킷은 프로세싱 전에 큐에 보유됨 -;
    상기 프로세싱 회로에 의해, 상기 큐에 대한 디큐 레이트에 기초하여 상기 네트워크 패킷의 예측된 수명을 결정하는 단계;
    상기 프로세싱 회로에 의해, 상기 예측된 수명에 기초하여 상기 네트워크 패킷에 대한 복수의 메모리 중 제1 메모리를 선택하는 단계 - 상기 복수의 메모리는 상기 프로세싱 회로의 로컬 메모리 및 상기 프로세싱 회로에 대한 외부 메모리를 포함함 -; 및
    상기 프로세싱 회로에 의해, 상기 복수의 메모리 중 상기 제1 메모리를 선택하는 것에 응답하여 상기 제1 메모리에 상기 네트워크 패킷을 저장하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 프로세싱 회로에 의해, 상기 큐에 대한 복수의 큐 상태 중 큐 상태를 선택하는 단계를 포함하고, 상기 예측된 수명을 결정하는 단계는 상기 선택된 큐 상태에 대응하는 룩업 테이블을 사용하는 단계를 포함하는, 방법.
  3. 제2항에 있어서, 상기 네트워크 패킷의 상기 예측된 수명을 결정하는 단계는:
    상기 큐의 큐 길이 및 상기 디큐 레이트에 기초하여 상기 큐에 대한 레이턴시를 결정하는 단계를 포함하는, 방법.
  4. 제3항에 있어서, 상기 디큐 레이트는 상기 큐에 대한 샘플링된 디큐 레이트를 포함하고, 상기 선택된 큐 상태는 활성 큐 상태이고, 상기 큐 상태를 선택하는 단계는:
    상기 샘플링된 디큐 레이트가 임계치 디큐 레이트를 초과할 때 그리고 상기 큐 길이가 임계치 큐 길이를 초과할 때 상기 큐에 대한 상기 복수의 큐 상태 중 상기 활성 큐 상태를 선택하는 단계를 포함하고, 상기 레이턴시를 결정하는 단계는 상기 활성 큐 상태를 선택하는 것에 응답하여 행해지고, 상기 예측된 수명을 결정하는 단계는 상기 결정된 레이턴시를 상기 활성 큐 상태에 대응하는 룩업 테이블로의 입력으로서 사용하는 단계를 추가로 포함하는, 방법.
  5. 제3항에 있어서, 상기 디큐 레이트는 상기 큐에 대한 미리 결정된 목표 디큐 레이트를 포함하고, 상기 선택된 큐 상태는 버스팅 큐 상태이고, 상기 큐 상태를 선택하는 단계는:
    상기 큐에 대한 샘플링된 디큐 레이트가 임계치 디큐 레이트를 초과하지 않을 때 그리고 상기 큐 길이가 임계치 큐 길이를 초과할 때 상기 큐에 대한 상기 복수의 큐 상태 중 상기 버스팅 큐 상태를 선택하는 단계를 포함하고, 상기 레이턴시를 결정하는 단계는 상기 버스팅 큐 상태를 선택하는 것에 응답하여 행해지고, 상기 예측된 수명을 결정하는 단계는 상기 결정된 레이턴시를 상기 버스팅 큐 상태에 대응하는 룩업 테이블로의 입력으로서 사용하는 단계를 추가로 포함하는, 방법.
  6. 제2항에 있어서, 상기 디큐 레이트는 상기 큐에 대한 미리 결정된 목표 디큐 레이트를 포함하고, 상기 선택된 큐 상태는 간헐적 큐 상태이고, 상기 큐 상태를 선택하는 단계는:
    상기 큐에 대한 샘플링된 디큐 레이트가 임계치 디큐 레이트를 초과하지 않을 때 그리고 상기 큐에 대한 큐 길이가 임계치 큐 길이를 초과하지 않을 때 상기 큐에 대한 상기 복수의 큐 상태 중 상기 간헐적 큐 상태를 선택하는 단계를 포함하고, 상기 예측된 수명을 결정하는 단계는 상기 미리 결정된 목표 디큐 레이트를 상기 간헐적 큐 상태에 대응하는 룩업 테이블로의 입력으로서 사용하는 단계를 포함하는, 방법.
  7. 제2항에 있어서, 상기 디큐 레이트는 상기 큐에 대한 샘플링된 디큐 레이트를 포함하고, 상기 선택된 큐 상태는 과도 큐 상태이고, 상기 큐 상태를 선택하는 단계는:
    상기 샘플링된 디큐 레이트가 임계치 디큐 레이트를 초과할 때 그리고 상기 큐의 큐 길이가 임계치 큐 길이를 초과하지 않을 때 상기 큐에 대한 상기 복수의 큐 상태 중 상기 과도 큐 상태를 선택하는 단계를 포함하고, 상기 예측된 수명을 결정하는 단계는 상기 샘플링된 디큐 레이트를 상기 과도 큐 상태에 대응하는 룩업 테이블로의 입력으로서 사용하는 단계를 포함하는, 방법.
  8. 제1항에 있어서, 상기 디큐 레이트는 상기 큐에 대한 샘플링된 디큐 레이트를 포함하고, 상기 방법은:
    상기 프로세싱 회로에 의해, 상기 큐에 대한 미리 결정된 목표 디큐 레이트와 상기 샘플링된 디큐 레이트의 차이에 기초하여 상기 큐에서 경험된 큐 혼잡을 결정하는 단계를 추가로 포함하고, 상기 예측된 수명을 결정하는 단계는 상기 큐 혼잡에 추가로 기초하여 행해지는, 방법.
  9. 제1항에 있어서, 상기 제1 메모리를 선택하는 단계는:
    상기 로컬 메모리에 대한 사용 계량기 또는 상기 큐에 대한 우선순위 중 적어도 하나에 기초하여 이동 임계치를 결정하는 단계; 및
    상기 이동 임계치를 상기 예측된 수명과 비교하는 단계를 포함하는, 방법.
  10. 제9항에 있어서, 상기 제1 메모리를 선택하는 단계는:
    상기 예측된 수명이 상기 이동 임계치를 초과하지 않을 때 상기 로컬 메모리를 상기 제1 메모리로서 선택하는 단계; 및
    상기 예측된 수명이 상기 이동 임계치를 초과할 때 상기 외부 메모리를 상기 제1 메모리로서 선택하는 단계를 포함하는, 방법.
  11. 제1항에 있어서,
    상기 네트워크 패킷을 수신하는 것에 응답하여, 상기 프로세싱 회로에 의해, 상기 제1 메모리를 선택하기 전에 상기 네트워크 패킷을 상기 로컬 메모리에 저장하는 단계를 포함하는, 방법.
  12. 제1항에 있어서, 상기 네트워킹 디바이스는 제1 네트워킹 디바이스이고, 상기 방법은:
    상기 프로세싱 회로에 의해, 상기 제1 메모리로부터 상기 네트워크 패킷을 검색하는 단계; 및
    상기 프로세싱 회로에 의해, 상기 검색된 네트워크 패킷을 제2 네트워킹 디바이스에 송신하는 단계를 추가로 포함하는, 방법.
  13. 제1항에 있어서, 상기 디큐 레이트는 상기 큐에 대한 샘플링된 디큐 레이트를 포함하고, 상기 방법은:
    상기 프로세싱 회로에 의해, 상기 큐로부터 하나 이상의 패킷을 디큐잉하기 위해 상기 큐에 대한 토큰 버킷 셰이퍼에 의해 시간 단위에 걸쳐 사용되는 토큰들의 수를 결정하는 단계 - 상기 토큰들 각각은 상기 큐로부터 디큐잉될 주어진 수의 바이트들을 나타냄 -; 및
    상기 프로세싱 회로에 의해, 상기 시간 단위에 걸쳐 사용되는 토큰들의 수에 기초하여 상기 샘플링된 디큐 레이트를 결정하는 단계를 추가로 포함하는, 방법.
  14. 네트워킹 디바이스로서,
    프로세싱 회로의 로컬 메모리 및 상기 프로세싱 회로에 대한 외부 메모리를 포함하는 복수의 메모리; 및
    상기 복수의 메모리에 접속된 상기 프로세싱 회로를 포함하고, 상기 프로세싱 회로는:
    프로세싱될 착신 네트워크 패킷을 수신하고 - 상기 네트워크 패킷은 프로세싱 전에 큐에 보유됨 -;
    상기 큐에 대한 디큐 레이트에 기초하여 상기 네트워크 패킷의 예측된 수명을 결정하고;
    상기 예측된 수명에 기초하여 상기 복수의 메모리 중 제1 메모리를 선택하고;
    상기 복수의 메모리 중 상기 제1 메모리를 선택하는 것에 응답하여 상기 제1 메모리에 상기 네트워크 패킷을 저장하도록 구성되는, 네트워킹 디바이스.
  15. 제14항에 있어서, 상기 프로세싱 회로는:
    상기 큐에 대한 복수의 큐 상태 중 큐 상태를 선택하도록 구성되고, 상기 예측된 수명을 결정하기 위해, 상기 프로세싱 회로는 상기 선택된 큐 상태에 대응하는 룩업 테이블을 사용하도록 구성되는, 네트워킹 디바이스.
  16. 제15항에 있어서, 상기 네트워크 패킷의 상기 예측된 수명을 결정하기 위해, 상기 프로세싱 회로는:
    상기 큐의 큐 길이 및 상기 디큐 레이트에 기초하여 상기 큐에 대한 레이턴시를 결정하도록 구성되는, 네트워킹 디바이스.
  17. 제16항에 있어서, 상기 디큐 레이트는 상기 큐에 대한 샘플링된 디큐 레이트를 포함하고, 상기 선택된 큐 상태는 활성 큐 상태이고, 상기 큐 상태를 선택하기 위해, 상기 프로세싱 회로는:
    상기 샘플링된 디큐 레이트가 임계치 디큐 레이트를 초과할 때 그리고 상기 큐 길이가 임계치 큐 길이를 초과할 때 상기 큐에 대한 상기 복수의 큐 상태 중 상기 활성 큐 상태를 선택하도록 구성되고, 상기 레이턴시를 결정하는 것은 상기 활성 큐 상태를 선택하는 것에 응답하여 행해지고, 상기 예측된 수명을 결정하기 위해, 상기 프로세싱 회로는 상기 결정된 레이턴시를 상기 활성 큐 상태에 대응하는 룩업 테이블로의 입력으로서 사용하도록 추가로 구성되는, 네트워킹 디바이스.
  18. 제16항에 있어서, 상기 디큐 레이트는 상기 큐에 대한 큐에 대한 미리 결정된 목표 디큐 레이트를 포함하고, 상기 선택된 큐 상태는 버스팅 큐 상태이고, 상기 큐 상태를 선택하기 위해, 상기 프로세싱 회로는:
    상기 큐에 대한 샘플링된 디큐 레이트가 임계치 디큐 레이트를 초과하지 않을 때 그리고 상기 큐 길이가 임계치 큐 길이를 초과할 때 상기 큐에 대한 상기 복수의 큐 상태 중 상기 버스팅 큐 상태를 선택하도록 구성되고, 상기 레이턴시를 결정하는 것은 상기 버스팅 큐 상태를 선택하는 것에 응답하여 행해지고, 상기 예측된 수명을 결정하기 위해, 상기 프로세싱 회로는 상기 결정된 레이턴시를 상기 버스팅 큐 상태에 대응하는 룩업 테이블로의 입력으로서 사용하도록 추가로 구성되는, 네트워킹 디바이스.
  19. 제15항에 있어서, 상기 디큐 레이트는 상기 큐에 대한 미리 결정된 목표 디큐 레이트를 포함하고, 상기 선택된 큐 상태는 간헐적 큐 상태이고, 상기 큐 상태를 선택하기 위해, 상기 프로세싱 회로는:
    상기 큐에 대한 샘플링된 디큐 레이트가 임계치 디큐 레이트를 초과하지 않을 때 그리고 상기 큐에 대한 큐 길이가 임계치 큐 길이를 초과하지 않을 때 상기 큐에 대한 상기 복수의 큐 상태 중 상기 간헐적 큐 상태를 선택하도록 구성되고, 상기 예측된 수명을 결정하기 위해, 상기 프로세싱 회로는 상기 미리 결정된 목표 디큐 레이트를 상기 간헐적 큐 상태에 대응하는 룩업 테이블로의 입력으로서 사용하도록 구성되는, 네트워킹 디바이스.
  20. 제15항에 있어서, 상기 디큐 레이트는 상기 큐에 대한 샘플링된 디큐 레이트를 포함하고, 상기 선택된 큐 상태는 과도 큐 상태이고, 상기 큐 상태를 선택하기 위해, 상기 프로세싱 회로는:
    상기 샘플링된 디큐 레이트가 임계치 디큐 레이트를 초과할 때 그리고 상기 큐의 큐 길이가 임계치 큐 길이를 초과하지 않을 때 상기 큐에 대한 상기 복수의 큐 상태 중 상기 과도 큐 상태를 선택하도록 구성되고, 상기 예측된 수명을 결정하기 위해, 상기 프로세싱 회로는 상기 샘플링된 디큐 레이트를 상기 과도 큐 상태에 대응하는 룩업 테이블로의 입력으로서 사용하도록 구성되는, 네트워킹 디바이스.
  21. 제14항에 있어서, 상기 디큐 레이트는 상기 큐에 대한 샘플링된 디큐 레이트를 포함하고, 상기 프로세싱 회로는:
    상기 큐에 대한 미리 결정된 목표 디큐 레이트와 상기 샘플링된 디큐 레이트의 차이에 기초하여 상기 큐에서 경험된 큐 혼잡을 결정하도록 구성되고, 상기 예측된 수명을 결정하는 것은 상기 큐 혼잡에 추가로 기초하여 행해지는, 네트워킹 디바이스.
  22. 제14항에 있어서, 상기 제1 메모리를 선택하기 위해, 상기 프로세싱 회로는:
    상기 로컬 메모리에 대한 사용 계량기 또는 상기 큐에 대한 우선순위 중 적어도 하나에 기초하여 이동 임계치를 결정하고;
    상기 이동 임계치를 상기 예측된 수명과 비교하도록 구성되는, 네트워킹 디바이스.
  23. 제22항에 있어서, 상기 제1 메모리를 선택하기 위해, 상기 프로세싱 회로는:
    상기 예측된 수명이 상기 이동 임계치를 초과하지 않을 때 상기 로컬 메모리를 상기 제1 메모리로서 선택하고;
    상기 예측된 수명이 상기 이동 임계치를 초과할 때 상기 외부 메모리를 상기 제1 메모리로서 선택하도록 구성되는, 네트워킹 디바이스.
  24. 제14항에 있어서, 상기 프로세싱 회로는:
    상기 네트워크 패킷을 수신하는 것에 응답하여, 상기 제1 메모리를 선택하기 전에 상기 네트워크 패킷을 상기 로컬 메모리에 저장하도록 구성되는, 네트워킹 디바이스.
  25. 제14항에 있어서, 상기 네트워킹 디바이스는 제1 네트워킹 디바이스이고, 상기 프로세싱 회로는:
    상기 제1 메모리로부터 상기 네트워크 패킷을 검색하고;
    상기 검색된 네트워크 패킷을 제2 네트워킹 디바이스로 송신하도록 구성되는, 네트워킹 디바이스.
  26. 제14항에 있어서, 상기 디큐 레이트는 상기 큐에 대한 샘플링된 디큐 레이트를 포함하고, 상기 프로세싱 회로는:
    상기 큐로부터 하나 이상의 패킷을 디큐잉하기 위해 상기 큐에 대한 토큰 버킷 셰이퍼에 의해 시간 단위에 걸쳐 사용되는 토큰들의 수를 결정하고 - 상기 토큰들 각각은 상기 큐로부터 디큐잉될 주어진 수의 바이트들을 나타냄 -; 및
    상기 시간 단위에 걸쳐 사용되는 토큰들의 수에 기초하여 상기 샘플링된 디큐 레이트를 결정하도록 구성되는, 네트워킹 디바이스.
  27. 명령어들을 포함하는 비일시적 컴퓨터 판독가능 매체로서, 상기 명령어들은, 실행될 때, 네트워킹 디바이스의 프로세싱 회로로 하여금:
    프로세싱될 착신 네트워크 패킷을 수신하고 - 상기 네트워크 패킷은 프로세싱 전에 큐에 보유됨 -;
    상기 큐에 대한 디큐 레이트에 기초하여 상기 네트워크 패킷의 예측된 수명을 결정하고;
    상기 예측된 수명에 기초하여 상기 네트워크 패킷에 대한 복수의 메모리 중 제1 메모리를 선택하고 - 상기 복수의 메모리는 상기 프로세싱 회로의 로컬 메모리 및 상기 프로세싱 회로에 대한 외부 메모리를 포함함 -;
    상기 복수의 메모리 중 상기 제1 메모리를 선택하는 것에 응답하여 상기 제1 메모리에 상기 네트워크 패킷을 저장하게 하는, 비일시적 컴퓨터 판독가능 매체.
KR1020190075557A 2018-06-27 2019-06-25 컴퓨팅 디바이스에서 패킷 수명을 예측하기 위한 큐잉 시스템 KR102177574B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/020,842 2018-06-27
US16/020,842 US10623329B2 (en) 2018-06-27 2018-06-27 Queuing system to predict packet lifetime in a computing device

Publications (2)

Publication Number Publication Date
KR20200001532A true KR20200001532A (ko) 2020-01-06
KR102177574B1 KR102177574B1 (ko) 2020-11-11

Family

ID=66999713

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190075557A KR102177574B1 (ko) 2018-06-27 2019-06-25 컴퓨팅 디바이스에서 패킷 수명을 예측하기 위한 큐잉 시스템

Country Status (6)

Country Link
US (1) US10623329B2 (ko)
EP (1) EP3588880B1 (ko)
KR (1) KR102177574B1 (ko)
CN (1) CN110650099B (ko)
SG (1) SG10201905137YA (ko)
TW (1) TWI700912B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10389639B1 (en) 2016-01-30 2019-08-20 Innovium, Inc. Dynamic weighted cost multipathing
US10447578B1 (en) 2016-03-02 2019-10-15 Innovium, Inc. Redistribution policy engine
US11075847B1 (en) 2017-01-16 2021-07-27 Innovium, Inc. Visibility sampling
US11621904B1 (en) 2020-11-06 2023-04-04 Innovium, Inc. Path telemetry data collection
US11784932B2 (en) 2020-11-06 2023-10-10 Innovium, Inc. Delay-based automatic queue management and tail drop

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070005925A1 (en) * 2005-06-21 2007-01-04 Paul Burkley Methods for optimizing memory unit usage to maximize packet throughput for multi-processor multi-threaded architectures
US8184540B1 (en) * 2009-12-11 2012-05-22 Juniper Networks, Inc. Packet lifetime-based memory allocation
US20170242625A1 (en) * 2016-02-24 2017-08-24 Samsung Electronics Co., Ltd. Apparatus for ssd performance and endurance improvement

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050149563A1 (en) * 2004-01-06 2005-07-07 Yong Yean K. Random early detect and differential packet aging flow control in switch queues
CN101621469B (zh) 2009-08-13 2012-01-04 杭州华三通信技术有限公司 数据报文存取控制装置和方法
US9019824B2 (en) * 2013-02-15 2015-04-28 Cisco Technology, Inc. Prioritized queueing in a mesh network based on age of payload data
US10193831B2 (en) * 2014-01-30 2019-01-29 Marvell Israel (M.I.S.L) Ltd. Device and method for packet processing with memories having different latencies
US20150244804A1 (en) * 2014-02-21 2015-08-27 Coho Data, Inc. Methods, systems and devices for parallel network interface data structures with differential data storage service capabilities
US10419370B2 (en) * 2015-07-04 2019-09-17 Avago Technologies International Sales Pte. Limited Hierarchical packet buffer system
US10715441B2 (en) * 2015-09-04 2020-07-14 Arista Networks, Inc. System and method of a high buffered high bandwidth network element
US9935888B2 (en) * 2016-05-02 2018-04-03 Visa International Service Association System and method for latency-based queuing
KR102229013B1 (ko) 2016-09-02 2021-03-17 삼성전자주식회사 자동 스트림 검출 및 할당 알고리즘

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070005925A1 (en) * 2005-06-21 2007-01-04 Paul Burkley Methods for optimizing memory unit usage to maximize packet throughput for multi-processor multi-threaded architectures
US8184540B1 (en) * 2009-12-11 2012-05-22 Juniper Networks, Inc. Packet lifetime-based memory allocation
US20170242625A1 (en) * 2016-02-24 2017-08-24 Samsung Electronics Co., Ltd. Apparatus for ssd performance and endurance improvement

Also Published As

Publication number Publication date
EP3588880B1 (en) 2021-05-26
SG10201905137YA (en) 2020-01-30
US10623329B2 (en) 2020-04-14
CN110650099B (zh) 2023-05-26
CN110650099A (zh) 2020-01-03
TWI700912B (zh) 2020-08-01
EP3588880A1 (en) 2020-01-01
TW202002596A (zh) 2020-01-01
US20200007454A1 (en) 2020-01-02
KR102177574B1 (ko) 2020-11-11

Similar Documents

Publication Publication Date Title
KR102177574B1 (ko) 컴퓨팅 디바이스에서 패킷 수명을 예측하기 위한 큐잉 시스템
US10243865B2 (en) Combined hardware/software forwarding mechanism and method
US8797877B1 (en) Virtual output queue allocation using dynamic drain bandwidth
US9270598B1 (en) Congestion control using congestion prefix information in a named data networking environment
US8665892B2 (en) Method and system for adaptive queue and buffer control based on monitoring in a packet network switch
US8817807B2 (en) System and method for distributed resource control of switches in a network environment
US8064344B2 (en) Flow-based queuing of network traffic
US10986021B2 (en) Flow management in networks
KR102414548B1 (ko) 네트워크 디바이스들에서 패킷 포워딩을 위한 조합된 입력 및 출력 큐
US8750129B2 (en) Credit-based network congestion management
US8457142B1 (en) Applying backpressure to a subset of nodes in a deficit weighted round robin scheduler
US10505851B1 (en) Transmission burst control in a network device
US20080298397A1 (en) Communication fabric bandwidth management
US9379991B2 (en) Communication node, a receiving node and methods therein
US20140241160A1 (en) Scalable, Low Latency, Deep Buffered Switch Architecture
CN111224884B (zh) 拥塞控制的处理方法、报文转发装置及报文接收装置
US10547561B1 (en) Queuing system to achieve maximum queuing latency in a computing device
Vijay et al. PACKET HANDLING SCHEDULING IN MULTIPLE ROUTING CONFIGURATIONS FOR FAST IP NETWORK RECOVERY

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