KR102414548B1 - 네트워크 디바이스들에서 패킷 포워딩을 위한 조합된 입력 및 출력 큐 - Google Patents

네트워크 디바이스들에서 패킷 포워딩을 위한 조합된 입력 및 출력 큐 Download PDF

Info

Publication number
KR102414548B1
KR102414548B1 KR1020200050825A KR20200050825A KR102414548B1 KR 102414548 B1 KR102414548 B1 KR 102414548B1 KR 1020200050825 A KR1020200050825 A KR 1020200050825A KR 20200050825 A KR20200050825 A KR 20200050825A KR 102414548 B1 KR102414548 B1 KR 102414548B1
Authority
KR
South Korea
Prior art keywords
forwarding engine
packet
packet forwarding
network
output
Prior art date
Application number
KR1020200050825A
Other languages
English (en)
Other versions
KR20210073432A (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 KR20210073432A publication Critical patent/KR20210073432A/ko
Application granted granted Critical
Publication of KR102414548B1 publication Critical patent/KR102414548B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3027Output queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/56Routing software
    • H04L45/566Routing instructions carried by the data packet, e.g. active networks
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/58Association of routers
    • H04L45/586Association of routers of virtual routers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • 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
    • 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/215Flow control; Congestion control using token-bucket
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/22Traffic shaping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/29Flow control; Congestion control using a combination of thresholds
    • 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/10Flow control; Congestion control
    • H04L47/39Credit based
    • 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/6205Arrangements for avoiding head of line blocking
    • 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/622Queue service order
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/252Store and forward routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3018Input queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3036Shared queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3045Virtual queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9036Common buffer combined with individual queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9084Reactions to storage capacity overflow
    • H04L49/9089Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
    • H04L49/9094Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5678Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
    • H04L2012/5681Buffer or queue management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

네트워크 트래픽을 스위칭하기 위한 장치는 인그레스 패킷 포워딩 엔진 및 이그레스 패킷 포워딩 엔진을 포함한다. 인그레스 패킷 포워딩 엔진은, 네트워크 패킷을 수신하는 것에 응답하여, 네트워크 패킷을 출력하기 위한 이그레스 패킷 포워딩 엔진을 결정하고, 네트워크 패킷을 가상 출력 큐에 인큐잉하도록 구성된다. 이그레스 패킷 포워딩 엔진은, 제1 스케줄링 이벤트에 응답하여 그리고 인그레스 패킷 포워딩 엔진에, 가상 출력 큐에서의 네트워크 패킷 및 네트워크 패킷이 이그레스 패킷 포워딩 엔진의 출력 포트에 대한 출력 큐에 인큐잉될 것임을 표시하는 정보를 출력하도록 구성될 수 있다. 인그레스 패킷 포워딩 엔진은, 정보를 수신하는 것에 응답하여, 네트워크 패킷을 가상 출력 큐로부터 디큐잉하고, 네트워크 패킷을 출력 큐에 인큐잉하도록 추가로 구성된다.

Description

네트워크 디바이스들에서 패킷 포워딩을 위한 조합된 입력 및 출력 큐{COMBINED INPUT AND OUTPUT QUEUE FOR PACKET FORWARDING IN NETWORK DEVICES}
본 개시는 일반적으로 컴퓨팅 디바이스들에 관한 것이며, 특히 네트워킹 디바이스들에서의 큐잉에 관한 것이다.
컴퓨터 네트워크는 데이터를 교환하고 리소스들을 공유할 수 있는 상호접속된 네트워크 디바이스들의 집합이다. 예시적인 네트워크 디바이스들은 라우터들, 스위치들, 및 OSI(Open Systems Interconnection) 기준 모델의 계층 2, 즉, 데이터 링크 계층 내에서 동작하는 다른 L2(layer two) 네트워크 디바이스들, 및 OSI 기준 모델의 계층 3, 즉, 네트워크 계층 내에서 동작하는 L3(layer three) 네트워크 디바이스들을 포함한다. 컴퓨터 네트워크들 내의 네트워크 디바이스들은 종종 네트워크 디바이스를 위한 제어 평면 기능을 제공하는 제어 유닛 및 데이터 유닛들을 라우팅하거나 스위칭하기 위한 포워딩 컴포넌트들을 포함한다.
컴퓨터 네트워크의 라우터는 하나 이상의 큐를 사용하여 전송기들과 수신기들 사이의 대역폭 매칭을 용이하게 할 수 있다. 네트워크 스위치는 전송기로부터 패킷들을 수신하고 전송기로부터 수신된 패킷들의 부분을 수신기로 송신하여, 수신된 패킷들의 나머지 부분을 큐에 저장할 수 있다. 수신된 패킷들의 부분을 송신한 후, 네트워크 스위치는 큐에 저장된 패킷들의 나머지 부분들을 수신기로 송신한다.
일반적으로, 상이한 타입들의 패킷 흐름들에 대한 상이한 서비스 품질(QoS)을 달성하도록 리소스들을 분할하고 할당하는 것이 종종 바람직하다. 예를 들어, 소스 디바이스로부터 패킷을 수신하는 것에 응답하여, 네트워크 디바이스는 패킷을 소스 디바이스로부터 나오는 것으로 분류할 수 있고 소스 디바이스에 대해 라우터 내에 프로비저닝된 특정 우선순위를 식별한다. 네트워크 디바이스는 그 후 전형적으로 네트워크 패킷을, 결정된 우선순위와 연관된 다수의 큐 중 하나에서의 하나 이상의 이산 데이터 유닛으로서 저장한다. 라우터는 정의된 우선 순위들 각각을 만족시키는 방식으로 큐들을 서비싱(service)한다. 예를 들어, 동작 동안, 네트워크 디바이스는 네트워크 패킷들의 전달을 스케줄링하기 위해 큐들로부터 네트워크 패킷들을 선택하기 위해 프로비저닝된 우선순위들에 따라서 디큐 동작들을 수행한다. 일부 경우들에서, 네트워크 디바이스는 다수의 큐를 동시에 선택하고 서비싱하기 위해 중첩 방식으로 다수의 디큐 동작을 실행한다. 일례로서, 네트워크 디바이스는 다수의 네트워크 패킷이 임의의 주어진 시점에서의 처리를 위해 디큐잉되고 스케줄링되도록 파이프라인형(pipelined) 방식으로 디큐 및 네트워크 패킷 스케줄링 동작들을 구현할 수 있다. 이러한 디큐 동작들을 동시에 실행함으로써, 네트워크 디바이스는 주어진 시간량에서 서비싱될 수 있는 네트워크 패킷들의 수를 개선한다.
일반적으로, 본 개시는 네트워크 디바이스들에서 개선된 큐잉 시스템들을 위한 기술들을 설명한다. 라우터 또는 스위치와 같은 네트워크 디바이스는 패킷 포워딩 엔진들 사이에서 내부적으로 스위칭하기 전에 또는 네트워크를 통해 패킷들을 전송하기 전에 하나 이상의 큐에 네트워크 패킷들을 인큐잉할 수 있다. 네트워크 디바이스를 위한 큐잉 시스템은 가상 출력 큐(VOQ) 및 조합된 입력 출력 큐(CIOQ)의 요소들을 조합하도록 구성될 수 있다. 본 명세서에서 사용되는 바와 같이, VOQ는 인그레스 측에서의 버퍼를 지칭할 수 있으며, 각각의 입력 포트는 각각의 출력 포트에 대해 개별 가상 큐를 유지한다. 그러나, 각각의 출력 포트에 대해 개별 가상 큐를 유지하는 것은 잘 스케일링(scale)되지 않는다. 대조적으로, CIOQ는 이그레스 측에서 버퍼링하도록 구성될 수 있다. 그러나, CIOQ는 헤드-오브-라인(head-of-line)(HOL) 차단으로 인해 네트워크 디바이스의 스루풋을 제한할 수 있다. 예를 들어, CIOQ는, 입력 큐가 이그레스 패킷 포워딩 엔진에 도달하려고 의도하는 다수의 플로우를 집성하는 경우에, 또는 다수의 인그레스 패킷 포워딩 엔진이 동일한 이그레스 패킷 포워딩 엔진에 도달하려고 시도하고 이그레스 패킷 포워딩 엔진의 대역폭이 초과되는 경우에, 스위칭 패브릭에 걸친 HOL 차단으로 인해 네트워크 디바이스의 스루풋을 제한할 수 있다.
본 개시의 기술들에 따르면, 네트워크 디바이스는 출력 큐 스케일링을 가능하게 하는"CIOQ 거동"을 제공하도록 구성될 수 있다. 예를 들어, 네트워크 디바이스는 이그레스에서의 가상 출력 큐잉을 로컬 출력 큐로서 사용하도록 구성될 수 있다. 예를 들어, 네트워크 디바이스는 패킷 포워딩 엔진에 대한 VOQ에서 네트워크 패킷을 인큐잉하도록 구성될 수 있고, 패킷 포워딩 엔진은 패킷 포워딩 엔진의 특정 포트에 인큐잉될 네트워크 패킷을 스케줄링할 것이다. 이 경우에, 네트워크 디바이스는 가상 출력 큐에서의 네트워크 패킷 및 네트워크 패킷이 특정 포트에 대한 출력 큐에 인큐잉될 것을 표시하는 정보를 "루프백"할 수 있다. 이러한 방식으로, 네트워크 디바이스는, 스위치 패브릭에 걸친 헤드-오브-라인 차단의 최소화를 도우면서 더 많은 패킷 포워딩 엔진들이 시스템에 추가됨에 따라 큐 스케일이 증가하게 할 수 있다.
일례에서, 네트워크 트래픽을 스위칭하기 위한 장치는, 회로로 구현되고, 네트워크 패킷을 수신하는 것에 응답하여, 네트워크 패킷을 출력하기 위한 이그레스 패킷 포워딩 엔진을 결정하고; 네트워크 패킷을 이그레스 패킷 포워딩 엔진에의 출력을 위해 가상 출력 큐에 인큐잉하도록 구성된 인그레스 패킷 포워딩 엔진; 처리 회로로 구현되고, 제1 스케줄링 이벤트에 응답하여, 가상 출력 큐에서의 네트워크 패킷 및 네트워크 패킷이 이그레스 패킷 포워딩 엔진의 출력 포트에 대한 출력 큐에 인큐잉될 것임을 표시하는 정보를 인그레스 패킷 포워딩 엔진에 출력하도록 구성된 이그레스 패킷 포워딩 엔진을 포함하고; 인그레스 패킷 포워딩 엔진은 정보를 수신하는 것에 응답하여, 네트워크 패킷을 가상 출력 큐로부터 디큐잉하고; 네트워크 패킷을 출력 큐에 인큐잉하도록 추가로 구성되고; 이그레스 패킷 포워딩 엔진은, 제1 스케줄링 이벤트 이후의 제2 스케줄링 이벤트에 응답하여, 네트워크 패킷을 출력 큐로부터 디큐잉하고; 네트워크 패킷을 출력 포트에서 출력하도록 추가로 구성된다.
다른 예에서, 방법은: 네트워크 패킷을 수신하는 것에 응답하여 그리고 처리 회로로 구현된 인그레스 패킷 포워딩 엔진에 의해, 네트워크 패킷을 출력하기 위한 이그레스 패킷 포워딩 엔진을 결정하는 단계; 인그레스 패킷 포워딩 엔진에 의해, 네트워크 패킷을 이그레스 패킷 포워딩 엔진에의 출력을 위해 가상 출력 큐에 인큐잉하는 단계; 제1 스케줄링 이벤트에 응답하여 그리고 처리 회로로 구현된 이그레스 패킷 포워딩 엔진에 의해, 가상 출력 큐에서의 네트워크 패킷 및 네트워크 패킷이 이그레스 패킷 포워딩 엔진의 출력 포트에 대한 출력 큐에 인큐잉될 것임을 표시하는 정보를 인그레스 패킷 포워딩 엔진에 출력하는 단계; 정보를 수신하는 것에 응답하여 그리고 인그레스 패킷 포워딩 엔진에 의해, 네트워크 패킷을 가상 출력 큐로부터 디큐잉하고, 인그레스 패킷 포워딩 엔진에 의해, 네트워크 패킷을 출력 큐에 인큐잉하는 단계; 및 제1 스케줄링 이벤트 이후의 제2 스케줄링 이벤트에 응답하여 그리고 이그레스 패킷 포워딩 엔진에 의해, 네트워크 패킷을 출력 큐로부터 디큐잉하고, 이그레스 패킷 포워딩 엔진에 의해, 네트워크 패킷을 출력 포트에서 출력하는 단계를 포함한다.
다른 예에서, 네트워크 트래픽을 스위칭하기 위한 장치는: 복수의 인터페이스 카드; 회로로 구현되고, 복수의 인터페이스 카드로 네트워크 패킷을 수신하는 것에 응답하여, 네트워크 패킷을 출력하기 위한 이그레스 패킷 포워딩 엔진을 결정하고; 네트워크 패킷을 이그레스 패킷 포워딩 엔진에의 출력을 위해 가상 출력 큐에 인큐잉하도록 구성된 인그레스 패킷 포워딩 엔진; 처리 회로로 구현되고, 제1 스케줄링 이벤트에 응답하여, 가상 출력 큐에서의 네트워크 패킷 및 네트워크 패킷이 이그레스 패킷 포워딩 엔진의 출력 포트에 대한 출력 큐에 인큐잉될 것임을 표시하는 정보를 인그레스 패킷 포워딩 엔진에 출력하도록 구성된 이그레스 패킷 포워딩 엔진을 포함하고; 인그레스 패킷 포워딩 엔진은 정보를 수신하는 것에 응답하여, 네트워크 패킷을 가상 출력 큐로부터 디큐잉하고; 네트워크 패킷을 출력 큐에 인큐잉하도록 추가로 구성되고; 이그레스 패킷 포워딩 엔진은, 제1 스케줄링 이벤트 이후의 제2 스케줄링 이벤트에 응답하여, 네트워크 패킷을 출력 큐로부터 디큐잉하고; 복수의 인터페이스 카드로, 네트워크 패킷을 출력 포트에서 출력하도록 추가로 구성된다.
일례에서, 장치는: 네트워크 패킷을 수신하는 것에 응답하여, 네트워크 패킷을 출력하기 위한 이그레스 패킷 포워딩 엔진을 결정하기 위한 수단; 네트워크 패킷을 이그레스 패킷 포워딩 엔진에의 출력을 위해 가상 출력 큐에 인큐잉하기 위한 수단; 제1 스케줄링 이벤트에 응답하여, 가상 출력 큐에서의 네트워크 패킷 및 네트워크 패킷이 이그레스 패킷 포워딩 엔진의 출력 포트에 대한 출력 큐에 인큐잉될 것임을 표시하는 정보를 출력하기 위한 수단; 정보를 수신하는 것에 응답하여, 네트워크 패킷을 가상 출력 큐로부터 디큐잉하기 위한 수단 및 네트워크 패킷을 출력 큐에 인큐잉하기 위한 수단; 및 제1 스케줄링 이벤트 이후의 제2 스케줄링 이벤트에 응답하여, 네트워크 패킷을 출력 큐로부터 디큐잉하기 위한 수단 및 네트워크 패킷을 출력 포트에서 출력하기 위한 수단을 포함한다.
본 개시의 기술들의 하나 이상의 예의 세부사항들은 첨부 도면들 및 이하의 설명에 제시된다. 본 기술들의 다른 특징들, 목적들 및 장점들은 설명 및 도면들로부터 그리고 청구항들로부터 명백할 것이다.
도 1은 본 개시의 기술들에 따른 예시적인 네트워크를 도시하는 블록도이다.
도 2는 본 개시의 기술들에 따라 도 1의 네트워크 내의 예시적인 라우터를 도시하는 블록도이다.
도 3은 본 개시의 기술들에 따른 도 2의 라우터 내의 예시적인 셰이퍼 크레딧 업데이트 엔진을 도시하는 블록도이다.
도 4는 본 개시의 기술들에 따라 네트워크 패킷 루프백을 사용하여 로컬 네트워크 트래픽을 스위칭하는 예시적인 라우터를 도시하는 블록도이다.
도 5는 본 개시의 기술들에 따라 네트워크 패킷 루프백을 사용하여 이그레스로 패브릭 네트워크 트래픽을 스위칭하는 예시적인 라우터를 도시하는 블록도이다.
도 6은 본 개시의 기술들에 따라 네트워크 패킷 루프백을 사용하여 인그레스로부터 패브릭 네트워크 트래픽을 스위칭하는 예시적인 라우터를 도시하는 블록도이다.
도 7은 본 개시의 기술들에 따라 메타데이터 루프백을 사용하여 로컬 네트워크 트래픽을 스위칭하는 예시적인 라우터를 도시하는 블록도이다.
도 8은 본 개시의 기술들에 따라 메타데이터 루프백을 사용하여 인그레스로부터 패브릭 네트워크 트래픽을 스위칭하는 예시적인 라우터를 도시하는 블록도이다.
도 9는 본 개시의 기술들에 따라 네트워크 트래픽을 스위칭하기 위한 예시적인 프로세스를 도시하는 블록도이다.
도면들 및 설명 전체에 걸쳐 유사한 참조 문자들은 유사한 요소들을 지칭한다.
일부 시스템들은 큰 큐 스케일에 대해 조합된 입력 및 출력 큐잉(Combined Input and Output Queuing)(CIOQ)을 사용한다. CIOQ 시스템들에서, 패킷 버퍼, 예컨대, 예를 들어, 지연 대역폭 버퍼(Delay Bandwidth Buffer)(DBB) 및 출력 큐(Output Queue)(OQ)들이 혼잡 관리(Congestion Management)(CM) 및 계층적 스케줄링과 함께 이그레스에서 유지된다. 일부 예들에서, CIOQ 시스템은 인그레스에서의 미세한 그레인 큐잉을 포함할 수 있다. 따라서, CIOQ에서, 작은 패브릭 입력 큐들(IQ)이 인그레스에서 사용될 수 있다(예를 들어, 목적지 패킷 포워딩 엔진당 하나). CIOQ 의 경우, 큐 스케일은 더 많은 패킷 포워딩 엔진들이 시스템에 추가됨에 따라 증가하는데, 그 이유는 큐당 이그레스에서의 네트워크 패킷들 팬아웃 때문이다.
그러나, CIOQ 시스템들은 예를 들어, 서비스 품질(QoS) 타겟들을 충족시키기 위해 패브릭 오버스피드(예를 들어, 2X)를 사용하여 해결될 수 있는 패브릭 혼잡을 겪을 수 있다. 패브릭 혼잡은 상이한 패킷 포워딩 엔진들 상의 다수의 입력 포트가 동일한 이그레스 OQ에 도달하려고 시도할 때 발생할 수 있다. 이 예에서, CIOQ 시스템은 인그레스 패브릭 인터페이스에서 네트워크 패킷들을 드롭할 수 있다. 인그레스 패브릭 큐들은 소수의 우선순위 제약들만을 갖고 큐당 QoS 보장들을 갖지 않는 비교적 작은 큐들을 통해 트래픽을 집성할 수 있다(예를 들어, 온-칩-메모리(On-Chip-Memory)(OCM)에 저장됨).
CIOQ 시스템들과 연관된 전술한 어려움들을 피하기 위해, 일부 네트워크 디바이스들은 가상 출력 큐잉을 사용할 수 있다. 가상 출력 큐잉에서, 각각의 인그레스 패킷 포워딩 엔진은 이그레스 OQ를 고유하게 식별하는 가상 출력 큐(VOQ)를 포함한다. VOQ(예를 들어, 각각의 패킷 포워딩 엔진 상의 하나의 VOQ)는 큐를 형성하기 위해 OQ와 조합될 수 있다. 인그레스 상의 VOQ는 지연 대역폭 버퍼에 이그레스에서의 오직 작은 OQ만을 제공할 수 있다(예를 들어, 포트에 스케줄링하기 위한 이그레스에서 큐의 헤드에만 이용가능함). DBB가 가상 출력 큐잉에서 인그레스에서 유지되기 때문에, 이러한 시스템들은 스위치 패브릭에 걸쳐 헤드-오브-라인 차단을 완화시키기 위한 기술들을 생략할 수 있다. 이러한 헤드-오브-라인 차단은, 공정 패브릭 스케줄링과 함께, 거의 또는 전혀 과속하지 않을 수 있는 VOQ의 이그레스 스케줄링으로 인한 것일 수 있다.
그러나, 가상 출력 큐잉은 OQ 스케일링이 결여될 수 있다. 각각의 인그레스 패킷 포워딩 엔진은 각각의 이그레스 OQ에 대한 VOQ를 사용할 수 있기 때문에, 인그레스 패킷 포워딩 엔진의 VOQ의 수는 최대 OQ 스케일을 결정한다. 이와 같이, 더 많은 패킷 포워딩 엔진들이 추가됨에 따라 큐 스케일이 증가하기보다는, CIOQ 시스템들의 경우에, VOQ 시스템은, 큐잉에 커밋되는 인그레스 메모리가 유한하고 추가적인 저장 용량을 추가하기 위해 쉽게 업그레이드되지 않을 수 있음을 고려하여, 인그레스 패킷 포워딩 엔진 상의 VOQ의 수에 의해 결정되는 OQ의 최대 수(예를 들어, 48,000개의 OQ)를 가질 수 있다. OQ의 총 수가 패킷 포워딩 엔진들의 추가와 함께 증가하지 않기 때문에, 더 많은 패킷 포워딩 엔진들이 추가됨에 따라, 패킷 포워딩 엔진당 OQ의 평균 개수는 더 작아진다. 계층적 서비스 품질 솔루션에 대해, 가상 출력 큐들을 사용하는 시스템들은 시스템에서 지원되는 패킷 포워딩 엔진들의 수를 작은 수(예를 들어, 4 또는 8 패킷 포워딩 엔진)로 제한할 수 있다.
본 명세서에 설명된 기술들은 독립형(예를 들어, CBUF(combined buffer) 로컬 스위칭) 및 패브릭 기반 시스템들에서의 OQ 스케일링을 가능하게 하는 "CIOQ 거동"을 제공하도록 구성된 시스템을 설명한다. 일부 예들에서, 시스템은 이그레스에서의 가상 출력 큐들을 OQ로서 사용할 수 있다. 예를 들어, 시스템은 네트워크 패킷을 패킷 포워딩 엔진에 대한 VOQ에 인큐잉할 수 있고, 패킷 포워딩 엔진은 패킷 포워딩 엔진의 특정 포트에 인큐잉될 네트워크 패킷을 스케줄링할 것이다. 이 경우, 시스템은 가상 출력 큐에서의 네트워크 패킷 및 네트워크 패킷이 특정 포트에 대한 출력 큐로서 인큐잉될 것임을 표시하는 정보(예를 들어, 패킷 페이로드를 갖는 패킷 헤더, 단지 메타데이터, 등)를 "루프백"할 수 있다. 설명된 기술들은 메타데이터를 사용하여 로컬로 정보를 루프백할 수 있는 시스템을 포함할 수 있다. 일부 예들에서, 시스템은 네트워크 패킷에 대한 헤더 및 패킷 페이로드를 갖는 네트워크 패킷을 루프백함으로써 정보를 루프백할 수 있다. 이러한 방식으로, 시스템은, 스위치 패브릭에 걸쳐 헤드-오브-라인 차단을 최소화하는 것을 도우면서 더 많은 패킷 포워딩 엔진들이 시스템에 추가됨에 따라 큐 스케일이 증가하게 할 수 있다. 예를 들어, 시스템은 다수의 흐름이 인그레스 패킷 포워딩 엔진 상의 단일 인그레스 큐를 통해 집성되지만 이그레스 패킷 포워딩 엔진에서 개별 출력 큐들로 나중에 분리되는 경우 일부 헤드-오브-라인 차단을 가질 수 있다.
도 1은 네트워크(104)가 라우터들(106A-106B)(집합적으로, 라우터들(106))을 포함하는 예시적인 시스템(102)을 도시하는 블록도이다. 디바이스들(110A-110N)(집합적으로, 디바이스들(110))은 네트워크(104)에 의해 제공된 리소스들에 액세스하기 위해 라우터들(106)을 통해 네트워크(104)에 접속한다. 디바이스들(110) 각각은 개인용 컴퓨터, 랩톱 컴퓨터, 모바일 전화, 네트워크 전화, 텔레비전 셋톱 박스, 비디오 게임 시스템, POS(point-of-sale) 디바이스, 개인용 디지털 단말기, 중간 네트워크 디바이스, 네트워크 어플라이언스, 슈퍼컴퓨터, 메인프레임 컴퓨터, 산업 로봇, 또는 네트워크(104)와 인터페이싱하고 그를 통해 통신할 수 있는 다른 타입의 디바이스와 같은 최종 사용자 컴퓨팅 디바이스일 수 있다.
네트워크(104)는 디바이스들(110)에 의한 콘텐츠의 액세스를 용이하게 하는 복수의 네트워크 디바이스를 포함할 수 있다. 복수의 네트워크 디바이스 각각은 라우터(예를 들어, 라우터들(106)), 스위치, 서버, 데이터베이스 서버, 허브, 방화벽, 침입 검출/방지(IDP) 디바이스 및/또는 디바이스들(110)로의 그리고 그로부터의 데이터의 전송을 용이하게 하는 임의의 다른 타입의 네트워킹 장비 또는 디바이스 중 하나를 포함할 수 있다. 네트워크(104)는 라우터들(106)을 포함하며, 이 라우터들은 라우팅, 네트워크 구성 정보 및 다른 정보를 교환하기 위해 경계 게이트웨이 프로토콜 및 인터넷 제어 메시지 프로토콜과 같은 다양한 프로토콜들을 사용하여 통신한다. 네트워크는 토큰 링 또는 이더넷 네트워크와 같은 로컬 영역 네트워크("LAN"), 가상 근거리 네트워크("VLAN"), 또는 다른 타입의 네트워크일 수 있다. 네트워크는 하나 이상의 유선 또는 무선 링크를 포함할 수 있다. 예를 들어, 네트워크(104)는 하나 이상의 이더넷 케이블을 포함하는 이더넷 네트워크일 수 있다. 다른 예에서, 네트워크는 정보를 전달하기 위해 무선 라디오 송신들을 사용하는 무선 충실도("Wi-Fi") 네트워크일 수 있다. 다른 예에서, 네트워크(104)는 모바일 네트워크일 수 있다. 도 1에서 단일 네트워크(104)로서 도시되어 있지만, 네트워크(104)는, 하나 이상의 가상 네트워크를 형성하기 위해 다양한 네트워크 상호접속들이 있는, 공중 또는 사설 중 어느 하나의, 임의의 수의 상호접속된 네트워크를 포함할 수 있다.
네트워크(104)는 디바이스들(110)에 의해 액세스될 수 있는 다양한 리소스들을 제공한다. 도 1의 예에서, 네트워크(104)는, 이 용어가 본 명세서에서 사용되는 바와 같이, 웹 기반 애플리케이션들, 이미지들, 문서들, 웹 페이지들, 비디오 데이터, 음성과 같은 오디오 데이터, 웹 기반 게임들, 스크립트들, 또는 임의의 다른 타입의 네트워크 기반 콘텐츠와 같이, 일반적으로 네트워크 내에 송신되고/되거나 저장되는 임의의 데이터를 지칭하는 콘텐츠를 저장하거나 또는 그렇지 않으면 소싱(source)하는 콘텐츠 서버(112)를 포함한다. 네트워크(104)는 네트워크로 송신된 데이터의 전달 효율을 개선하기 위해 멀티캐스트 기술들을 지원할 수 있다. 통상적으로, 네트워크(104)는 또한 다양한 다른 타입의 디바이스(예를 들어, 파일 서버들, 프린터들, 전화들, 및 이메일 및 다른 애플리케이션 서버들)에 접속될 것이다. 네트워크(104)는 라우터(106B)를 통해 공중 네트워크(114)(예를 들어, 인터넷)에 결합되어 또한 도시된다. 공중 네트워크(114)는, 예를 들어, 하나 이상의 클라이언트 컴퓨팅 디바이스를 포함할 수 있다. 공중 네트워크(114)는 웹 서버들, 애플리케이션 서버들, 공중 데이터베이스들, 미디어 서버들, 최종 사용자 디바이스들 및 많은 다른 타입의 네트워크 리소스 디바이스들 및 콘텐츠에 대한 액세스를 제공할 수 있다.
네트워크(104)는 인터넷 프로토콜(IP)/송신 제어 프로토콜(TCP)과 같은 하나 이상의 패킷-기반 프로토콜을 사용하여 라우터(106A)를 통해 디바이스들(110)에 콘텐츠를 송신할 수 있다. 이 점에 있어서, 네트워크(104)는 종종 "네트워크 패킷들" 또는 간단히 "패킷들"로서 지칭되는 이산 데이터 유닛들을 통한 데이터의 송신을 지원할 수 있다. 그 결과, 네트워크(104)는 "패킷-기반" 또는 "패킷 교환" 네트워크라고 지칭될 수 있다. 본 개시에서 패킷들을 송신, 전달, 또는 다른 방식으로 지원하는 것으로서 설명했지만, 네트워크(104)는, ATM(Asynchronous Transfer Mode) 프로토콜에 의해 정의되는 셀, 또는 UDP(User Datagram Protocol)에 의해 정의되는 데이터그램과 같은 임의의 다른 프로토콜에 의해 정의되는 임의의 다른 이산 데이터 유닛에 따라 데이터를 송신할 수 있다.
네트워크(104)에 의해 전달되는 네트워크 트래픽은 다수의 카테고리에 따라 분류될 수 있다. 예를 들어, 콘텐츠 서버(112)는 라우터(106A)를 통해 디바이스들(110) 중 하나에 라이브 비디오를 스트리밍할 수 있다. 이러한 비디오를 송신하는 패킷들은 스트리밍 멀티미디어 패킷들로서 분류될 수 있다. 콘텐츠 서버(112)는 또한 HTTP 패킷들을 사용하여 디바이스들(110) 중 하나에 웹 페이지들을 전송할 수 있다. 다른 예로서, 라우터(106)에 의해 교환되는 정보는 네트워크 관리 트래픽으로서 카테고리화될 수 있다. 애플리케이션에 의해 분류되는 것에 더하여, 네트워크 트래픽은 다른 특징들 중에서도, 소스 또는 목적지, 사용자, 프로토콜, 및 (TCP 및 UDP에 대한) 포트에 의해 분류될 수 있다.
네트워크 트래픽의 다양한 카테고리들은 특정 레벨의 네트워크 성능을 요구할 수 있다. 예를 들어, 스트리밍 멀티미디어는 보장된 대역폭을 요구하여 용인가능한 사용자 경험을 제공할 수 있다. 다른 예로서, 네트워크 관리 트래픽은 네트워크의 효율을 유지하기 위해 낮은 지연들을 경험해야 한다. 또한, 인터넷 서비스 제공자(ISP)들은 서비스 제공자 협약에 기초하여 트래픽을 다른 사용자들보다 특정 사용자들에 대해 우선순위화할 수 있다. 이러한 요건들을 충족시키기 위해, 네트워크(104)는 미리 정의된 QoS 레벨들의 수에 따라 서비스 품질(QoS) 보장들을 지원하는 메커니즘들을 포함한다.
라우터들(106)은 패킷들을 수신, 분석, 및 분류하여 패킷들을 적절한 우선순위 레벨에 할당한다. 패킷들을 분류하는 것에 더하여, 라우터들(106)은 그들의 우선순위 레벨에 따라 수신되고 분류된 패킷들을 처리한다. 이러한 방식으로, 라우터들(106)은 네트워크(104)에 의해 제공되는 QoS 보장들의 양태들을 구현한다. 또한, 시스템(102) 내의 다른 디바이스들로부터 수신된 정보에 기초하여, 라우터들(106)은 각각의 수신된 패킷에 대해 시스템을 통해 적절한 루트를 결정하고 그에 따라 패킷을 포워딩한다.
라우터들(106)은 네트워크 상의 플러딩(flooding)을 방지하기 위해 패킷들이 송신되는 속도를 조절할 수 있다. 예를 들어, 라우터들(106)은 "토큰들"을 소비하여 대응하는 바이트들의 양을 큐로부터 디큐잉하고 그것들을 네트워크를 통해 송신하는 토큰 버킷 셰이퍼를 포함할 수 있고, 토큰 버킷 셰이퍼가 소비할 불충분한 토큰들을 갖는 경우 패킷들을 송신하지 않을 수 있다. 다시 말해서, 각각의 토큰은 토큰 버킷 셰이퍼가 큐로부터 디큐잉하고 네트워크를 통해 송신하도록 허용되는 바이트 수에 대응할 수 있다. 이러한 방식으로, 토큰 버킷 셰이퍼는 패킷들이 큐로부터 제거되고 네트워크 상에서 송신되는 속도를 조절하는 역할을 한다.
일부 라우터들은 혼잡 관리 및 계층적 스케줄링과 함께 이그레스에서 패킷들을 유지하는 출력 큐들 및 지연 대역폭 버퍼를 사용하는 CIOQ 기술들을 사용할 수 있다. 이 예에서, CIOQ 시스템은 인그레스에서 패브릭 입력 큐들을 사용할 수 있다(예를 들어, 목적지 패킷 포워딩 엔진당 하나). 이와 같이, 큐 스케일은 보다 많은 패킷 포워딩 엔진들이 CIOQ 시스템에 추가됨에 따라 증가하는데, 그 이유는 큐당 이그레스에서의 네트워크 패킷들 팬아웃 때문이다. 그러나, CIOQ 시스템들은 예를 들어, 서비스 품질(QoS) 타겟들을 충족시키기 위해 패브릭 오버스피드(예를 들어, 2X)를 사용하여 해결될 수 있는 패브릭 혼잡을 겪을 수 있다. 패브릭 혼잡은 상이한 패킷 포워딩 엔진들 상의 다수의 입력 포트가 동일한 이그레스 OQ에 도달하려고 시도할 때 발생할 수 있다. 이 예에서, CIOQ 시스템은 인그레스 패브릭 인터페이스에서 네트워크 패킷들을 드롭할 수 있다. 인그레스 패브릭 큐들은 소수의 우선순위 제약들만을 갖고 큐당 QoS 보장들을 갖지 않는 비교적 작은 큐들을 통해 트래픽을 집성할 수 있다(예를 들어, 온-칩-메모리(On-Chip-Memory)(OCM)에 저장됨).
일부 네트워크 디바이스들은 가상 출력 큐잉을 사용할 수 있다. 가상 출력 큐잉에서, 라우터는 이그레스 OQ를 고유하게 식별하는 가상 출력 큐(VOQ)를 사용할 수 있다. VOQ(예를 들어, 각각의 패킷 포워딩 엔진 상의 하나의 VOQ)는 큐를 형성하기 위해 OQ와 조합될 수 있다. 인그레스 상의 VOQ는 지연 대역폭 버퍼에 이그레스에서의 오직 작은 OQ만을 제공할 수 있다(예를 들어, 포트에 스케줄링하기 위한 이그레스에서 큐의 헤드에만 이용가능함). 지연 대역폭 버퍼가 가상 출력 큐잉에서의 인그레스에서 유지되기 때문에, VOQ 기술들을 사용하는 시스템들은 스위치 패브릭에 걸쳐 헤드-오브-라인 차단을 완화시키기 위한 기술들을 생략할 수 있다. 그러나, 가상 출력 큐잉을 사용하도록 구성된 라우터들은 OQ 스케일링이 결여될 수 있다. 각각의 인그레스 패킷 포워딩 엔진은 각각의 이그레스 OQ에 대한 VOQ를 사용할 수 있기 때문에, 인그레스 패킷 포워딩 엔진의 VOQ의 수는 최대 OQ 스케일을 결정한다.
본 개시의 기술들에 따르면, 라우터들(106)은 독립형(예를 들어, CBUF(combined buffer) 로컬 스위칭) 및 패브릭 기반 시스템들에서의 OQ 스케일링을 가능하게 하는 "CIOQ 거동"을 제공하도록 구성될 수 있다. 예를 들어, 라우터(106A)는 이그레스에서의 가상 출력 큐들을 OQ로서 사용하도록 구성될 수 있다. 예를 들어, 라우터(106A)는 이그레스 패킷 포워딩 엔진에 대한 VOQ에서 네트워크 패킷을 인큐잉하도록 구성될 수 있고, 이그레스 패킷 포워딩 엔진은 패킷 포워딩 엔진의 특정 포트에 인큐잉될 네트워크 패킷을 스케줄링할 것이다. 이 경우에, 라우터(106A)는, 가상 출력 큐에서의 네트워크 패킷 및 네트워크 패킷이 특정 포트에 대한 출력 큐에 인큐잉될 것임을 표시하는 정보를 인그레스 패킷 포워딩 엔진에 "루프백"할 수 있다. 설명된 기술들은 메타데이터를 사용하여 로컬로 정보를 루프백할 수 있는 시스템을 포함할 수 있다. 일부 예들에서, 라우터(106A)는 네트워크 패킷에 대한 헤더 및 패킷 페이로드를 갖는 네트워크 패킷을 루프백함으로써 정보를 루프백할 수 있다. 이러한 방식으로, 라우터(106A)는, 스위치 패브릭에 걸쳐 헤드-오브-라인 차단을 최소화하는 것을 도우면서 더 많은 패킷 포워딩 엔진들이 시스템에 추가됨에 따라 큐 스케일이 증가하게 할 수 있다.
동작 시에, 라우터(106A)는, 네트워크 패킷을 수신하는 것에 응답하여, 네트워크 패킷을 출력하기 위한 이그레스 패킷 포워딩 엔진을 결정할 수 있다. 예를 들어, 라우터(106A)는 라우터(106A)의 이그레스 패킷 포워딩 엔진을 결정할 수 있다. 일부 예들에서, 라우터(106A)는 다음 홉에 대응하는 이그레스 패킷 포워딩 엔진을 결정할 수 있다. 예를 들어, 라우터(106A)는 네트워크 패킷의 패킷 라벨이 IP 어드레스를 지정하는 것으로 결정하는 것에 응답하여, 네트워크 패킷에 대한 다음 홉을 결정할 수 있다. 이 경우에, 라우터(106A)는 네트워크 패킷에 대한 다음 홉에 대응하는 포트에 할당된 이그레스 패킷 포워딩 엔진을 결정할 수 있다.
라우터(106A)는 네트워크 패킷을 이그레스 패킷 포워딩 엔진에의 출력을 위해 가상 출력 큐에 인큐잉할 수 있다. 예를 들어, 라우터(106A)는 가상 출력 큐에 네트워크 패킷(예를 들어, 패킷 페이로드, 패킷 헤더 등)을 저장한다. 제1 스케줄링 이벤트에 응답하여, 라우터(106A)는, 가상 출력 큐에서의 네트워크 패킷 및 네트워크 패킷이 이그레스 패킷 포워딩 엔진의 출력 포트에 대한 출력 큐에 인큐잉될 것임을 표시하는 정보를 인그레스 패킷 포워딩 엔진에 출력할 수 있다. 예를 들어, 라우터(106A)는 상이한 타입들의 패킷 흐름들에 대한 서비스 품질 및/또는 디큐 레이트를 사용하여, 이그레스 패킷 포워딩 엔진에 의해 처리하기 위해 이그레스 패킷 포워딩 엔진에 의해 큐잉하기 위한 네트워크 패킷을 스케줄링하기로 결정할 수 있다. 정보를 출력하기 위해, 라우터(106A)는 이그레스 라우터의 포트를 통해 인그레스 라우터의 포터에 네트워크 패킷, 즉, 네트워크 패킷에 대한 패킷 페이로드 및 그 정보를 포함하는 네트워크 패킷에 대한 헤더를 출력할 수 있다. 일부 예들에서, 정보를 출력하기 위해, 라우터(106A)는 패킷 페이로드를 출력하지 않고 로컬 스위칭을 사용하여(예를 들어, 조합된 버퍼를 사용하여) 메타데이터를 출력할 수 있다.
정보를 수신하는 것에 응답하여, 라우터(106A)의 인그레스 패킷 포워딩 엔진은 네트워크 패킷을 가상 출력 큐로부터 디큐잉할 수 있다. 예를 들어, 라우터(106A)는 네트워크 패킷(예를 들어, 패킷 페이로드 및 패킷 헤더) 및/또는 네트워크 패킷을 나타내는 포인터를 가상 출력 큐로부터 제거할 수 있다. 라우터(106A)는 네트워크 패킷을 출력 큐에 인큐잉할 수 있다. 예를 들어, 라우터(106A)는 네트워크 패킷 및/또는 네트워크 패킷을 나타내는 포인터를 출력 큐에 추가할 수 있다.
제1 스케줄링 이벤트 이후의 제2 스케줄링 이벤트에 응답하여, 라우터(106A)는 네트워크 패킷을 출력 큐로부터 디큐잉하고 출력 포트에서 네트워크 패킷을 출력할 수 있다. 예를 들어, 라우터(106A)는 상이한 타입들의 패킷 흐름들에 대한 서비스 품질 및/또는 디큐 레이트를 사용하여, 출력 포트에 대한 출력 큐에 이그레스 패킷 포워딩 엔진에 의해 큐잉하기 위한 네트워크 패킷을 스케줄링하기로 결정할 수 있다. 제2 스케줄링 이벤트에 응답하여, 라우터(106A)는 출력 포트에서 네트워크 패킷(예를 들어, 패킷 페이로드 및 패킷 헤더)을 출력하고, 네트워크 패킷(예를 들어, 패킷 페이로드 및 패킷 헤더) 및/또는 네트워크 패킷을 나타내는 포인터를 출력 포트에 대한 출력 큐로부터 제거할 수 있다.
이러한 방식으로, 라우터(106A)는 VOQ를 사용하는 라우터들에 비해 더 높은 스케일링가능성을 가질 수 있다. 예를 들어, 본 명세서에 설명된 기술들을 사용하여, 라우터(106A)는 출력 큐 스케일을 증가시킬 수 있으며, 이는 더 많은 수의 고객을 지원하는 것을 도울 수 있고, 그에 의해 라우터의 동작을 개선한다. 예를 들어, 4개의 패킷 포워딩 엔진의 각각의 패킷 포워딩 엔진이 48,000개의 큐를 지원하는 것으로 가정하면, VOQ 기술들을 사용하는 4개의 패킷 포워딩 엔진의 조합은 단지 48,000개의 큐를 지원할 수 있다. 그러나, 본 개시의 기술들에 따라, 조합된 버퍼 기술들을 사용하는 4개의 패킷 포워딩 엔진의 조합은 192,000개의 큐(즉, 4x48,000)를 지원할 수 있으며, 이는 라우터가 추가의 고객들을 지원하도록 허용할 수 있고, 따라서 라우터(106A)의 성능을 개선할 수 있다. 일부 예들에서, 라우터(106A)는 CIOQ를 사용하도록 구성된 라우터들에 비해 더 낮은 제품 비용을 가질 수 있다. 추가적으로, 본 명세서에 설명된 기술들은 VOQ 기술들 및/또는 CIOQ와 함께 사용될 수 있다. 예를 들어, 라우터(106A)는 인터넷으로부터의 인바운드(inbound) 트래픽을 위해(예를 들어, 고객 큐잉을 위해) 조합된 버퍼를 사용하여 본 명세서에 설명된 인터넷 페이싱(internet facing) 트래픽 및 기술들에 대한 VOQ를 사용할 수 있다.
라우터들(106)은 가상 출력 큐를 출력 큐로서 사용하기 위해 본 명세서에 설명된 기술들을 사용할 수 있다. 그러나, 일부 예들에서, 라우터들(106) 중 일부는 예를 들어, 가상 출력 큐잉, CIOQ, 또는 다른 큐잉 기술과 같은 다른 기술들을 사용할 수 있다. 본 명세서에 설명된 원리들은 라우터들(106)을 참조하여 논의되지만, 예를 들어, 비동기 전송 모드(ATM) 스위치, 로컬 영역 네트워크(LAN) 스위치, 인터페이스 카드, 게이트웨이, 방화벽, 또는 시스템(102)의 다른 디바이스와 같은, 그러나 이에 제한되는 것은 아닌, 다른 네트워크 디바이스들이 예측 수명을 결정할 수 있다.
도 2는 본 개시의 기술들에 따른 도 1의 네트워크(104) 내의 예시적인 라우터(206)를 도시하는 블록도이다. 일반적으로, 라우터(206)는 도 1의 라우터들(106)과 실질적으로 유사하게 동작할 수 있다. 이 예에서, 라우터(206)는 인입 링크들(232A-232N)("인입 링크들(232)")을 통해 네트워크 패킷들을 수신하고 아웃바운드 링크들(234A-234N)("아웃바운드 링크들(234)")을 통해 네트워크 패킷들을 전송하는 인터페이스 카드들(230A-230N)("IFC들(230)")을 포함한다. IFC들(230)은 다수의 인터페이스 포트를 통해 링크들(232, 234)에 결합될 수 있다. 라우터(206)는 수신된 패킷들의 루트들을 결정하고 그에 따라 제어 유닛(222)과 통신하는 IFC들(230)을 통해 패킷들을 포워딩하는 제어 유닛(222)을 포함할 수 있다.
제어 유닛(222)은 라우팅 엔진(224) 및 패킷 포워딩 엔진(226)을 포함한다. 라우팅 엔진(224)은 라우터(206)에 대한 제어 평면으로서 동작하고, 다수의 병행 프로세스의 실행을 위한 멀티태스킹 운영 환경을 제공하는 운영 체제(도시되지 않음)를 포함한다. 라우팅 엔진(224)은, 예를 들어, 하나 이상의 제어 평면 네트워킹 프로토콜(246)을 구현하기 위해 소프트웨어 명령어들을 실행한다. 예를 들어, 프로토콜들(246)은 라우팅 정보를 다른 라우팅 디바이스들과 교환하고 라우팅 정보 베이스(RIB)(242)를 업데이트하기 위한, BGP(252)와 같은, 하나 이상의 라우팅 프로토콜을 포함할 수 있다. 프로토콜들(246)은 멀티프로토콜 라벨 스위칭(MPLS) 프로토콜(250)과 같은 전송 프로토콜들, 및 인터넷 그룹 관리 프로토콜(IGMP)(256)과 같은 멀티캐스트 관리 프로토콜들을 추가로 포함할 수 있다. 다른 예들에서, 프로토콜들(246)은 다른 라우팅, 전송, 관리, 또는 통신 프로토콜들을 포함할 수 있다.
일부 예들에서, 라우팅 엔진(224)은 관리자가 라우터(206)를 구성 및/또는 관리하도록 허용하는 커맨드 라인 인터페이스(CLI)(240)를 포함한다. 예를 들어, 관리자는 CLI(240)를 통해, 패킷 포워딩 엔진들(226)의 하나 이상의 파라미터를 구성하기 위해 액세스 큐 관리자(264)에 액세스할 수 있다. 다른 예에서, 라우팅 엔진(224)은 CLI 대신에 그래픽 사용자 인터페이스(GUI)를 포함한다. 또 다른 예에서, 라우팅 엔진은 관리자가 원격 단말기로부터 라우터(206)를 구성 및/또는 제어하는 것을 허용하기 위해 SMNP(Simple Network Management Protocol)(254)를 실행한다.
라우팅 프로토콜 데몬(RPD)(244)은 BGP(252) 또는 다른 라우팅 프로토콜들을 실행하여 RIB(242)를 업데이트할 수 있다. RIB(242)는 라우터(206)가 상주하는 컴퓨터 네트워크의 토폴로지를 설명하고, 또한 컴퓨터 네트워크를 통한 루트들을 포함한다. RIB(242)는 컴퓨터 네트워크 내의 다양한 루트들, 및 각각의 루트에 대한 적절한 다음 홉들, 즉 루트들 각각을 따라 이웃하는 라우팅 디바이스들을 설명한다. RPD(244)는 RIB(242)에 저장된 정보를 분석하고, 패킷 포워딩 엔진(226)에 대한 포워딩 정보를 생성하고, 이 패킷 포워딩 엔진(226)은 포워딩 정보를 포워딩 정보 베이스(FIB)(260)에 저장한다. RPD(244)는, 다시 말해서, RIB(242)에 의해 저장된 라우팅 정보를 분석하여, 포워딩 정보를 FIB(260)에 저장하는, 네트워크 내의 각각의 목적지에 대한 다음 홉을 식별하는 포워딩 정보를 획득할 수 있다.
조합된 버퍼("CBUF")(265)는 라우터(206)의 패킷 포워딩 엔진들(226)에 대한 큐 스토리지로서 역할을 할 수 있다. CBUF(265)는 로컬 메모리(예를 들어, 온 칩 메모리(OCM)) 및/또는 외부 메모리(예를 들어, 고대역폭 메모리(HBM))를 포함할 수 있다. 본 개시의 기술들에 따르면, CBUF(265)는 라우터(206)에 대한 큐들을 저장할 수 있다. 일부 예들에서, CBUF(265)는 RAM(random access memory), ROM(read only memory), PROM(programmable read only memory), EPROM(erasable programmable read only memory), EEPROM(electronically erasable programmable read only memory), 플래시 메모리를 포함하고, 하나 이상의 프로세서로 하여금 이들에 기인하는 액션들을 수행하게 하기 위한 실행가능 명령어들을 포함한다.
CBUF(265)는 데이터의 조직 및 일시적 저장을 위한 FIFO(first-in first-out) 데이터 구조인 하나 이상의 큐를 포함할 수 있다. 도 2의 예에서, CBUF(265)의 큐들은 라우터(206)에 대한 하나 이상의 네트워크 패킷을 저장할 수 있다. 예를 들어, 라우터(206)는 패킷 포워딩 엔진들(226) 사이에서 내부적으로 스위칭하기 전에 CBUF(265)의 하나 이상의 큐에 하나 이상의 패킷을 저장할 수 있다. 다른 예에서, 라우터(206)는 네트워크를 통해 네트워크 패킷들을 송신하기 전에 CBUF(265)의 하나 이상의 큐에 하나 이상의 패킷을 저장할 수 있다.
예를 들어, CBUF(265)는 가상 출력 큐들(227A-227N)(집합적으로 본 명세서에서 "VOQ들(227)"로 지칭됨) 및/또는 출력 큐들(219A-219N)(집합적으로 본 명세서에서 "OQ들(219)"로 지칭됨)을 포함할 수 있다. 일부 예들에서, VOQ들(227)의 각각의 VOQ는 패킷 포워딩 엔진들(226)의 각자의 패킷 포워딩 엔진에 할당될 수 있다. 예를 들어, VOQ(227A)는 패킷 포워딩 엔진(226)의 제1 패킷 포워딩 엔진에 할당될 수 있고, VOQ(227B)는 패킷 포워딩 엔진(226)의 제2 패킷 포워딩 엔진에 할당될 수 있는 등이다. OQ들(219)의 각각의 OQ는 패킷 포워딩 엔진들(226)의 패킷 포워딩 엔진의 각자의 포트에 할당될 수 있다. 예를 들어, OQ(219A)는 패킷 포워딩 엔진들(226)의 제1 패킷 포워딩 엔진의 제1 포트에 할당될 수 있고, OQ(219B)는 제1 패킷 포워딩 엔진의 제2 포트에 할당될 수 있는 등이다.
패킷 포워딩 엔진(226)은 라우터(206)에 대한 데이터 평면으로서 동작하고, FIB(260), 셰이퍼 크레딧 업데이트 엔진(262) 및 큐 관리자(264)를 포함한다. 패킷 포워딩 엔진(226)은, 예를 들어, IFC들(230)을 통해 라우터(206)에 의해 포워딩되고 수신되는 패킷들을 처리한다. 예를 들어, 패킷 포워딩 엔진(226)은 필터들 및 라우팅 정책들을 발신 패킷들에 적용하고 패킷들을 네트워크 내의 다음 홉에 포워딩할 수 있다. 일부 예들에서, 제어 유닛(222)은 복수의 패킷 포워딩 엔진을 포함하고, 이들 각각은 네트워크 트래픽의 상이한 흐름들에 대한 패킷 포워딩 기능들을 제공하기 위해 패킷 포워딩 엔진(226)과 유사하게 동작하도록 구성된다. 본 명세서에서 사용되는 바와 같이, 인그레스 패킷 포워딩 엔진 및 이그레스 패킷 포워딩 엔진은 단지 특정 네트워크 패킷에 관련된 컨텍스트를 제공하기 위한 용어들이다. 즉, 모든 패킷 포워딩 엔진들(226)은, 패킷들을 수신할 때의 인그레스 패킷 포워딩 엔진과 네트워크 패킷들을 송신할 때의 이그레스 패킷 포워딩 엔진으로서 역할을 할 수 있다. 일부 예들에서, 단일 패킷 포워딩 엔진은 단일 패킷에 대한 인그레스 패킷 포워딩 엔진 및 이그레스 패킷 포워딩 엔진 둘 다로서 역할을 할 수 있다.
FIB(260)는 예를 들어, 네트워크 트래픽에 대한 네트워크 목적지들을 특정한 다음 홉들 및 대응하는 IFC들(230) 및 출력 링크들(234)에 대한 물리적 출력 포트들과 연관시킬 수 있다. FIB(260)는 전용 포워딩 칩들, 일련의 테이블들, 복합 데이터베이스, 링크 리스트, 기수 트리, 데이터베이스, 플랫 파일, 또는 다양한 다른 데이터 구조들로 프로그래밍되는 기수 트리일 수 있다. 일부 예들에서, FIB(260)는 룩업 구조들을 포함한다. 룩업 구조들은, 어드레스와 같은 키가 주어지면, 하나 이상의 값을 제공할 수 있다. 일부 예들에서, 하나 이상의 값은 하나 이상의 다음 홉일 수 있다. 다음 홉은, 실행될 때, 하나 이상의 동작을 수행하는 마이크로코드로서 구현될 수 있다. 하나 이상의 다음 홉들은 "체인닝"될 수 있어, 체인닝된 다음 홉들(chained next hops)의 세트는, 실행될 때, 각자의 상이한 다음 홉들에 대한 동작들의 세트를 수행하게 된다. 이러한 동작들의 예들은 네트워크 패킷에 하나 이상의 서비스를 적용하는 것, 네트워크 패킷을 드롭하는 것, 및/또는 하나 이상의 다음 홉에 의해 식별되는 인터페이스 및/또는 인터페이스를 사용하여 네트워크 패킷을 포워딩하는 것을 포함할 수 있다. 도시된 바와 같이, FIB(260)는 인그레스 패킷 프로세서(IPP)(261) 및 이그레스 패킷 프로세서(EPP(263))를 포함할 수 있다. IPP(261)는 네트워크 패킷에 대한 이그레스 패킷 포워딩 엔진으로서 역할을 하는 패킷 포워딩 엔진들(226)의 패킷 포워딩 엔진을 결정할 수 있다. EPP(263)는 이그레스에서의 출력 큐 포워드 통계를 결정할 수 있다.
패킷 포워딩 엔진(226)의 큐 관리자(264)는 VOQ들(227) 및 OQ들(219)에 대한 관리 기능들을 수행하기 위해 셰이퍼 크레딧 업데이트 엔진(262)과 함께 작동할 수 있다. 예를 들어, 셰이퍼 크레딧 업데이트 엔진(262)은 VOQ들(227)에 대한 디큐 레이트들을 결정하기 위해 토큰 버킷 셰이퍼 데이터 구조들을 구현할 수 있다. 이 예에서, 큐 관리자(264)는 셰이퍼 크레딧 업데이트 엔진(262)에 의해 지정된 디큐 레이트들을 사용하여 VOQ들(227)로의 네트워크 패킷들의 흐름을 조절할 수 있다. 유사하게, 셰이퍼 크레딧 업데이트 엔진(262)은 OQ들(219)에 대한 디큐 레이트들을 결정하기 위해 토큰 버킷 셰이퍼 데이터 구조들을 구현할 수 있다. 이 예에서, 큐 관리자(264)는 셰이퍼 크레딧 업데이트 엔진(262)에 의해 지정된 디큐 레이트들을 사용하여 OQ들(219)로부터의 네트워크 패킷들의 흐름을 조절한다. 셰이퍼 크레딧 업데이트 엔진(262)은 추가로 도 3을 참조하여 설명된다.
본 명세서에 설명된 기술들에 따르면, 패킷 포워딩 엔진들(226)은 이그레스 OQ들로서 VOQ들(227)(예를 들어, 인그레스 VOQ들)을 재사용하도록 구성될 수 있다. 예를 들어, 패킷 포워딩 엔진들(226)의 제1 패킷 포워딩 엔진은 VOQ(227A)를 인그레스 VOQ로서 사용하는 인그레스 패킷 포워딩 엔진으로서 역할을 할 수 있다. 이 예에서, VOQ(227)는 패킷 포워딩 엔진들(226)의 제2 패킷 포워딩 엔진에 의해 이그레스 OQ로서 "재사용"될 수 있다. 이 예에서, 이그레스 패킷 포워딩 엔진은, VOQ(227)에서의 네트워크 패킷 및 네트워크 패킷이 특정 포트에 대한 OQ(219A)에 인큐잉될 것임을 표시하는 정보를 인그레스 패킷 포워딩 엔진에 "루프백"할 수 있다. 일부 예들에서, 패킷 포워딩 엔진들(226)의 하나 이상의 패킷 포워딩 엔진은 인그레스에서 VOQ들로서 VOQ들(227)을 사용할 수 있다. OQ의 총 수가 패킷 포워딩 엔진들의 추가와 함께 증가하기 때문에, 더 많은 패킷 포워딩 엔진들이 시스템에 추가됨에 따라 패킷 포워딩 엔진당 OQ의 평균 개수는 더 커진다. 이러한 방식으로, OQ 스케일링은 다수의 패킷 포워딩 엔진이 시스템에 추가되는 경우에 발생할 수 있다(예를 들어, 패킷 포워딩 엔진당 40,000개)
OQ들(219)의 각각의 OQ는 이그레스 포트에 스케줄링될 수 있고, 이는 이그레스 포트에서 큐잉을 배치할 수 있다. 패킷 포워딩 엔진들(226)의 인그레스 패킷 포워딩 엔진들은 OQ로 목적지 패킷 포워딩 엔진당 작은 수의 패브릭 입력 큐(예를 들어, VOQ들(227) 중 하나)를 지원할 수 있다. 예를 들어, 큐 관리자(264)는 우선 순위로(예를 들어, 목적지 패킷 포워딩 엔진당 최대 8 우선순위까지) 목적지 패킷 포워딩 엔진 루프백 채널당 하나의 VOQ를 사용할 수 있다. 일부 예들에서, IPP(261)는 이그레스 출력 포트당 OQ(예를 들어, VOQ) 및 패킷 포워딩 엔진들(226)의 이그레스 패킷 포워딩 엔진을 결정하기 위해 룩업을 수행할 수 있다. 예를 들어, IPP(261)는 인그레스로부터 이그레스로 전송되는 네트워크 패킷 프리펜드에서 이그레스에서의 OQ에 대한 VOQ 번호를 삽입할 수 있다.
셰이퍼 크레딧 업데이트 엔진(262)은, 네트워크 패킷들을 VOQ로부터 패브릭으로 그리고 OQ로부터 포트로 스케줄링하도록 구성될 수 있는 이그레스에서의 "스케줄러(272")로서 본 명세서에서 또한 지칭되는, GS(Grant Scheduler)(272)를 포함할 수 있다. 예를 들어, 스케줄러(272)는 패브릭 패킷들/페이지들을 인그레스 패킷 포워딩 엔진으로부터 이그레스 패킷 포워딩 엔진으로 스케줄링할 수 있다. 스케줄러(272)는 OQ로부터 이그레스 패킷 포워딩 엔진 상의 포트로 네트워크 패킷들을 스케줄링하도록 구성될 수 있다.
스케줄러(272)는 OQ로 이그레스 패킷 포워딩 엔진을 포트에 직접 스케줄링할 수 있다. 예를 들어, 스케줄러(272)는 8K 큐를 포함할 수 있고, 5개의 8K 큐가 존재한다(예를 들어, 5x8K는 패킷 포워딩 엔진당 40K OQ이다). 이 경우에, 스케줄러(272)는 결정적 거동을 위한 포트에의 스케줄링을 위해 패브릭을 사용하지 않을 수 있다.
라우터(206)는 동일한 시스템에서 VOQ와 OQ의 혼합을 지원하도록 구성될 수 있다. 예를 들어, 라우터(206)는 일부 패브릭 목적지들이 포트당 작은 큐들이 지원되는 경우 "전형적인" VOQ/OQ 조합들일 수 있고, 포트당 더 큰 큐들이 요구되는 경우 다른 목적지들이 OQ일 수 있도록 구성될 수 있다. 일부 예들에서, 라우터(206)는 OQ를 지원하기 위해 최소한의 설계에 대한 변경들을 하면서, 그러나 가능한 감소된 대역폭에서(예를 들어, 도 4, 도 5, 도 6을 참조), 패킷들을 OQ로 인큐잉하기 위해 이그레스 패킷 포워딩 엔진 상의 기존 패킷 루프백 경로들을 사용할 수 있다. 일부 예들에서, 라우터(206)는, 패브릭으로부터 도달한 네트워크 패킷들이 필요한 임의의 새로운 데이터 경로 없이 OQ에 대해 드롭 체크 및 인큐잉(NQ)를 수행하기 위해 이그레스 패킷 포워딩 엔진 상에 루프백되도록 구성될 수 있다. 이 예에서, 스케줄러(272)는 OQ를 직접 포트에 스케줄링할 수 있다.
라우터(206)는 이그레스에서 전용 데이터 경로들을 사용하여 완전한 성능을 달성할 수 있다(예를 들어, 도 6, 도 7, 도 8 참조). 예를 들어, 라우터(206)는, 패브릭으로부터 도달한 네트워크 패킷들이 드롭 체크를 사용하여 OQ에 대한 어드미턴스(admittance)에 대해 먼저 체크되고, 허용되는 경우에는 OQ에 인큐잉되도록 구성될 수 있다. 이 예에서, 스케줄러(272)는 OQ로부터 직접 포트에 스케줄링할 수 있다. 이러한 방식으로, 본 명세서에 설명된 기술들은 이그레스 패킷 포워딩 엔진에서 "로컬 스위칭"을 사용할 수 있는데, 이는 네트워크 패킷들이 인그레스에서 수신되고, 패브릭을 통과하지 않고 직접적으로 이그레스로 이동할 수 있게 한다.
동작 시에, 패킷 포워딩 엔진들(226)의 인그레스 패킷 포워딩 엔진은, 네트워크 패킷을 수신하는 것에 응답하여, 네트워크 패킷을 출력하기 위한 패킷 포워딩 엔진들(226)의 이그레스 패킷 포워딩 엔진을 결정할 수 있다. 예를 들어, 인그레스 패킷 포워딩 엔진은, 네트워크 패킷을 출력하기 위한 인그레스 패킷 포워딩 엔진들(226)의 이그레스 패킷 포워딩 엔진을 결정할 수 있다. FIB(260)는 다음 홉에 대응하는 이그레스 패킷 포워딩 엔진을 결정할 수 있다. 예를 들어, FIB(260)는 네트워크 패킷의 패킷 라벨이 IP 어드레스를 지정하는 것으로 결정하는 것에 응답하여, 네트워크 패킷에 대한 다음 홉을 결정할 수 있다. 이 경우에, FIB(260)는 네트워크 패킷에 대한 다음 홉에 대응하는 포트에 할당된 이그레스 패킷 포워딩 엔진을 결정할 수 있다.
인그레스 패킷 포워딩 엔진은, 네트워크 패킷을 이그레스 패킷 포워딩 엔진에의 출력을 위해 VOQ(227A)에 인큐잉할 수 있다. 예를 들어, 인그레스 패킷 포워딩 엔진은 VOQ(227A)에서 네트워크 패킷(예를 들어, 패킷 페이로드, 패킷 헤더 등)을 저장한다. 제1 스케줄링 이벤트에 응답하여, 인그레스 패킷 포워딩 엔진(226)의 이그레스 패킷 포워딩 엔진은, VOQ(227A)에서의 네트워크 패킷 및 네트워크 패킷이 이그레스 패킷 포워딩 엔진의 출력 포트에 대한 OQ(219A)에 인큐잉될 것임을 표시하는 정보를 인그레스 패킷 포워딩 엔진에 출력할 수 있다. 예를 들어, 스케줄러(272)는, 상이한 타입들의 패킷 흐름들에 대한 서비스 품질 및/또는 디큐 레이트를 사용하여, 이그레스 패킷 포워딩 엔진에 의해 처리하기 위해 이그레스 패킷 포워딩 엔진에 의해 큐잉하기 위한 네트워크 패킷을 스케줄링하기로 결정할 수 있다. 정보를 출력하기 위해, 이그레스 패킷 포워딩 엔진은 이그레스 라우터의 포트를 통해 인그레스 라우터의 포터에 네트워크 패킷, 즉, 네트워크 패킷에 대한 패킷 페이로드 및 그 정보를 포함하는 네트워크 패킷에 대한 헤더를 출력할 수 있다. 일부 예들에서, 정보를 출력하기 위해, 이그레스 패킷 포워딩 엔진은 패킷 페이로드를 출력하지 않고 로컬 스위칭을 사용하여(예를 들어, CBUF(265)를 사용하여) 메타데이터를 출력할 수 있다.
정보를 수신하는 것에 응답하여, 인그레스 패킷 포워딩 엔진은 네트워크 패킷을 VOQ(227A)로부터 디큐잉할 수 있다. 예를 들어, 인그레스 패킷 포워딩 엔진은 네트워크 패킷(예를 들어, 패킷 페이로드 및 패킷 헤더) 및/또는 네트워크 패킷을 나타내는 포인터를 VOQ(227A)로부터 제거할 수 있다. 인그레스 패킷 포워딩 엔진은 네트워크 패킷을 OQ(219A)에 인큐잉할 수 있다. 예를 들어, 인그레스 패킷 포워딩 엔진은 네트워크 패킷 및/또는 네트워크 패킷을 나타내는 포인터를 OQ(219A)에 추가할 수 있다.
제1 스케줄링 이벤트 이후의 제2 스케줄링 이벤트에 응답하여, 이그레스 패킷 포워딩 엔진은 네트워크 패킷을 OQ(219A)로부터 디큐잉하고 네트워크 패킷을 출력 포트(예를 들어, IFC(230A)와의 링크(232A))에 출력할 수 있다. 예를 들어, 스케줄러(272)는 상이한 타입들의 패킷 흐름들에 대한 서비스 품질 및/또는 디큐 레이트를 사용하여, 출력 포트에 대한 OQ(219A)에 이그레스 패킷 포워딩 엔진에 의해 큐잉하기 위한 네트워크 패킷을 스케줄링하기로 결정할 수 있다. 제2 스케줄링 이벤트에 응답하여, 이그레스 패킷 포워딩 엔진은 출력 포트에서 네트워크 패킷(예를 들어, 패킷 페이로드 및 패킷 헤더)을 출력하고, 네트워크 패킷(예를 들어, 패킷 페이로드 및 패킷 헤더) 및/또는 네트워크 패킷을 나타내는 포인터를 출력 포트에 대한 OQ(219A)로부터 제거할 수 있다.
이러한 방식으로, 라우터(206)는 VOQ를 사용하는 라우터들에 비해 더 높은 스케일링가능성을 가질 수 있다. 예를 들어, 본 명세서에 설명된 기술들을 사용하여, 라우터(206)는 출력 큐 스케일을 증가시킬 수 있으며, 이는 더 많은 수의 고객을 지원하는 것을 도울 수 있고, 그에 의해 라우터의 동작을 개선한다. 예를 들어, 4개의 패킷 포워딩 엔진의 각각의 패킷 포워딩 엔진이 48,000개의 큐를 지원하는 것으로 가정하면, VOQ 기술들을 사용하는 4개의 패킷 포워딩 엔진의 조합은 단지 48,000개의 큐를 지원할 수 있다. 그러나, 본 개시의 기술들에 따라, 조합된 버퍼 기술들을 사용하는 4개의 패킷 포워딩 엔진의 조합은 192,000개의 큐(즉, 4x48,000)를 지원할 수 있으며, 이는 라우터(206)가 추가의 고객들을 지원하도록 허용할 수 있다. 일부 예들에서, 라우터(206)는 CIOQ를 사용하도록 구성된 라우터들에 비해 더 낮은 제품 비용을 가질 수 있다. 추가적으로, 본 명세서에 설명된 기술들은 VOQ 기술들 및/또는 CIOQ와 함께 사용될 수 있다. 예를 들어, 라우터(206)는 인터넷으로부터의 인바운드 트래픽을 위해(예를 들어, 고객 큐잉을 위해) 조합된 버퍼를 사용하여 본 명세서에 설명된 인터넷 페이싱 트래픽 및 기술들에 대한 VOQ를 사용할 수 있다.
도 3은 본 개시의 기술들에 따른 도 2의 예시적인 셰이퍼 크레딧 업데이트 엔진(262)을 도시하는 블록도이다. 하나의 예시적인 구현에서, 셰이퍼 크레딧 업데이트 엔진(262)은 레이트 휠(370) 및 스케줄러(272)를 포함한다. 네트워크 디바이스들은 네트워크 상의 플러딩을 방지하기 위해 패킷들이 송신되는 속도를 조절하기 위한 셰이퍼 크레딧 업데이트 엔진(262)을 포함할 수 있다.
레이트 휠(370)은 스케줄러(272)에 크레딧 업데이트들을 제공한다. 스케줄러(272)는 큐/노드 데이터 구조(388)가 큐/노드 데이터 구조(388)에 의해 인큐잉된 하나 이상의 바이트를 송신하도록 허용되는 경우를 결정하기 위해 크레딧들을 사용할 수 있다. 도 3의 예에서, 레이트 휠(370)은 레이트 명령(374) 및 업데이트 레이트(376)를 포함한다. 레이트 명령(374)은 스케줄러(272)의 크레딧 가산기(382)에 "보장된"(G) 및 "최대"(M) 크레딧 필드들(378)에 대한 레이트 업데이트들을 제공한다. G 크레딧들은, 네트워크에 대한 G 레이트가 초과 구독(oversubscribe)되지 않는 한, 보장된 양의 대역폭을 큐/노드 데이터 구조(388)에 할당하기 위해 사용될 수 있다. M 크레딧들은 큐/노드 데이터 구조(388)가 지정된 평균 송신 레이트를 초과하는 것을 방지하기 위해 레이트 제한으로서 사용될 수 있다.
또한, 업데이트 레이트(376)는 레이트 휠(370)에 의해 크레딧들이 업데이트되고 있는 레이트를 나타낸다. 업데이트 레이트(376)는 큐/노드 데이터 구조(388)에 정규화된 디큐잉 레이트를 제공한다. 도 3의 예에서, 업데이트 레이트(376)는 레이트 휠(370)에 대한 레이트 업데이트 기간의 역(inverse)이다. 일부 예들에서, 스케줄러(272)는 저역 통과 필터를 적용하여 디큐잉 레이트에서의 순간적인 변화들을 매끄럽게 한다.
스케줄러(272)는 크레딧 가산기(382), 크레딧 업데이터(392), 레이트 업데이터(386), 및 큐/노드 데이터 구조(388)를 포함한다. 스케줄러(272)의 크레딧 가산기(382)는, 클립(380)으로부터의 입력에 기초하여, MUX(384)를 사용하여 레이트 업데이터(392)에 추가적인 크레딧들을 제공하고, 이는 결국 이러한 추가적인 G/M 크레딧들(390)을 큐/노드 데이터 구조(388)에 제공한다. 현재 크레딧들 및 클립(380)의 값에 따라, 레이트 업데이터(392)는 큐/노드 데이터 구조(388)의 G/M 크레딧들(390)에 크레딧들의 일부를 추가하거나, 그 전부를 추가하거나, 아무 것도 추가하지 않을 수 있다. 스케줄러(272)는 큐/노드 데이터 구조(388)가 송신하도록 허용되는 경우를 결정하기 위해 G/M 크레딧들(390)을 사용한다. 일부 예들에서, 큐/노드 데이터 구조(388)에 대한 G/M 크레딧들(390)이 비-네거티브인 경우, 스케줄러(272)는 큐/노드 데이터 구조(388)로부터 패킷들을 디큐잉하거나 송신할 수 있다. 큐/노드 데이터 구조(388)로부터 패킷들을 디큐잉하고 송신할 시에, 크레딧 업데이터(386)는 큐/노드 데이터 구조(388)에 대한 G/M 크레딧들(390)로부터 대응하는 수의 크레딧을 제거한다. 큐/노드 데이터 구조(388)에 대한 G/M 크레딧들(390)이 네거티브이면, 큐/노드 데이터 구조(388)는 후속 패킷들을 디큐잉하거나 송신하는 데 부적격해진다. G/M 크레딧들(390)의 비-네거티브 값을 축적할 시에, 큐/노드 데이터 구조(388)는 다시 패킷들을 디큐잉하거나 송신하도록 허용된다.
도 4는 본 개시의 기술들에 따라 루프백을 사용하여 로컬 네트워크 트래픽을 스위칭하기 위한 예시적인 제1 라우터(206)를 도시하는 블록도이다. 도 4는 단일 포트들, 포트 그룹(PG), 또는 다른 포트들을 각각 나타낼 수 있는 포트들(407A-407B, 409A-409B, 417A-417B, 419A-419B)을 도시한다. 추가적으로, 도 4는 네트워크 패킷 드롭 체크를 수행하도록 구성될 수 있는 혼잡 관리자(405)를 도시한다.
혼잡 관리자(405)는 각자의 네트워크 패킷에 대한 네트워크 패킷 크기, 각자의 네트워크 패킷에 대한 우선순위, 및 각자의 네트워크 패킷에 대한 드롭 우선권을 먼저 학습함으로써 어드미턴스에 대해 큐에 도달하는 각각의 네트워크 패킷(예를 들어, VOQ(227A), OQ(219A) 등)을 체크할 수 있다. 예를 들어, 혼잡 관리자(405)는 네트워크 패킷이 드롭 임계값을 초과할지, 예를 들어, 적합하지 않을지를 알아보기 위해 현재 큐 길이를 봄으로써 각각의 네트워크 패킷을 체크할 수 있다. 이 예에서, 혼잡 관리자(405)가 네트워크 패킷이 드롭 임계값을 초과할 것이라고 결정하면, 혼잡 관리자(405)는 (예를 들어, 큐에 기입되지 않은) 네트워크 패킷을 드롭할 수 있다. 혼잡 관리자(405)가 네트워크 패킷이 드롭 임계값을 초과하지 않을 것(예를 들어, 네트워크 패킷이 드롭되지 않음)으로 결정하는 경우, 혼잡 관리자(405)는 큐에 대해 네트워크 패킷을 허용할 수 있다. 테일 드롭 임계값들에 추가하여, 혼잡 관리자(405)는 네트워크 패킷을 가중 랜덤 조기 검출(Weighted random early detection)(WRED) 임계값들과 비교할 수 있고, 이는 우선순위 및 드롭 우선권에 기초하여 드롭할 랜덤 확률을 결정한다.
도시된 바와 같이, 라우터(206)는 패브릭(예를 들어, 네트워크(104), 인터넷 등)으로부터 네트워크 패킷들을 수신하도록 구성된 패브릭 입력(441), 및 네트워크 패킷들을 패브릭으로 출력하도록 구성된 패브릭 출력(443)을 포함한다. 추가 드롭 체크 및 인큐 대역폭에 대한 필요성을 피하기 위해, 도 4는 패킷 포워딩 엔진들(226)에서 루프백을 사용하여 이그레스 OQ에 대해 구성되는 라우터(206)를 도시한다. 도 4의 예에서, 패킷 포워딩 엔진(226A)은 인그레스 패킷 포워딩 엔진으로서 동작할 수 있고, 패킷 포워딩 엔진(226B)은 이그레스 패킷 포워딩 엔진을 동작시킨다. 패킷 포워딩 엔진들(226)에서의 루프백 경로(471)는 기존의 데이터 경로들을 보존하는 것을 도울 수 있다. 이 예에서, 네트워크 패킷들은 패킷 포워딩 엔진(226A) 입력 포트들에 도달할 수 있고, 라우터(206)는 (예를 들어, 패브릭 입력(441), 패브릭 출력(443) 등을 사용하지 않고) "로컬 스위칭"을 사용하여 패브릭에 대한 필요성 없이 이그레스에 네트워크 패킷들을 이동시킬 수 있다. OQ 스케일링 패킷 포워딩 엔진을 에뮬레이팅하기 위해 루프백에 대해 절반의 PG들이 사용될 수 있기 때문에, 총 스루풋의 절반만이 네트워크 패킷 포워딩을 위해 사용될 수 있다. 네트워크 패킷들은 CBUF(265) 및 인그레스 패킷 포워딩 엔진(226A) 및 이그레스 패킷 포워딩 엔진(226B)을 통해 2개의 트립을 행할 수 있고, 이는 패킷 포워딩 엔진들(226)의 스루풋을 감소시킬 수 있다.
도 4는 CBUF(265)를 사용하는 로컬 스위칭 예를 도시한다. 도 4의 예에서, 패킷은 이그레스로부터 PG(예를 들어, 포트(409B))를 통해 인그레스로 루프백하는 경우 헤더 정보 내에 보존된다. 이 예에서, 인그레스에서 입력 포트(예를 들어, 포트(407A))에 들어가는 네트워크 패킷은 CBUF(265)를 통해, 인그레스 패킷 포워딩 엔진(226A)으로 루프백되는, 목적지 출력 포트를 갖는 패킷 포워딩 엔진(226B)으로 스위칭되고 VOQ(227A)에 저장된다. 이그레스에서의 스케줄러(272)는, EPP(263)로 전송되기 전에 이그레스에서 판독될 때까지 실제 패킷 데이터가 CBUF(265)에 남아 있기 때문에 메타데이터를 통해 행해지는, VOQ(227A)로부터 포트(419A)로의 판독을 스케줄링한다.
본 개시의 기술들에 따르면, 인그레스 패킷 포워딩 엔진(226A)은, 네트워크 패킷을 수신하는 것에 응답하여, 네트워크 패킷을 출력하기 위한 이그레스 패킷 포워딩 엔진을 결정할 수 있다. 인그레스 패킷 포워딩 엔진(226A)은 네트워크 패킷을 이그레스 패킷 포워딩 엔진에의 출력을 위해 가상 출력 큐(227A)에 인큐잉할 수 있다. 예를 들어, 인그레스 패킷 포워딩 엔진(226A)은 네트워크 패킷을 이그레스 패킷 포워딩 엔진(226B)에의 출력을 위해 인그레스 패킷 포워딩 엔진(226A)의 가상 출력 큐(227A)에 인큐잉할 수 있다.
이그레스 패킷 포워딩 엔진(226B)은, 제1 스케줄링 이벤트(예를 들어, 스케줄러(272)에 의해 결정됨)에 응답하여 그리고 인그레스 포워딩 엔진(226A)에, VOQ(227A)에서의 네트워크 패킷 및 네트워크 패킷이 이그레스 패킷 포워딩 엔진(226B)의 출력 포트에 대한 OQ(219A)에 인큐잉될 것임을 표시하는 정보를 포함하는 헤더를 갖는 네트워크 패킷을 출력할 수 있다. 예를 들어, 스케줄러(272)는 VOQ(227A)에서의 디큐 레이트에 기초하여 제1 스케줄링 이벤트를 결정할 수 있다.
스케줄러(272)는 큐당 셰이핑(per queue shaping) 및 우선순위 정보를 유지할 수 있다. 큐(예를 들어, VOQ(227A), OQ(219A) 등)가 비어 있지 않는 경우, 스케줄러(272)는 구성된 큐 우선순위에서의 스케줄러 계층구조에 큐를 설치(예를 들어, "인큐")할 수 있다. 레이트 셰이핑 요건들이 충족되지 않는 경우, 예를 들어, 큐가 충분한 데이터를 아직 송신하지 않았고, 큐가 현재의 서비스가능한 우선순위에 있는 경우, 스케줄러(272)는 스케줄러(272)에 의해 서비스를 위한 큐를 선택(예를 들어, "디큐")할 수 있다. 일단 큐가 셰이핑 요건을 충족했다면, 예를 들어, 셰이핑 레이트가 충족된다면, 스케줄러(272)는 큐가 추가 또는 새로운 셰이핑 크레딧들을 수신하고 송신을 다시 재개할 수 있는 시간까지 서비스로부터 큐를 제거할 수 있다. 스케줄러(272)는 큐에 대한 레이트를 결정하기 위해 큐가 시간 기간에 수신하는 셰이핑 크레딧들의 양을 결정할 수 있다.
이그레스 패킷 포워딩 엔진(226B)은 헤더를 갖는 네트워크 패킷을 이그레스 패킷 포워딩 엔진(226B)의 제1 포트(예를 들어, 포트(417B))로부터 인그레스 패킷 포워딩 엔진(226A)의 제2 포트(예를 들어, 409B)에 출력할 수 있다. 인그레스 패킷 포워딩 엔진(226B)은, 헤더를 갖는 네트워크 패킷을 수신하는 것에 응답하여, 네트워크 패킷에 대한 드롭 체크를 수행할 수 있다.
헤더를 갖는 네트워크 패킷을 수신하는 것에 응답하여, 인그레스 패킷 포워딩 엔진(226A)은 네트워크 패킷을 가상 출력 큐(227A)로부터 디큐잉하고 네트워크 패킷을 출력 큐(219A)에 인큐잉할 수 있다. 제1 스케줄링 이벤트 이후의 제2 스케줄링 이벤트에 응답하여, 이그레스 패킷 포워딩 엔진(226B)은 네트워크 패킷을 출력 큐(227A)로부터 디큐잉하고 출력 포트(예를 들어, 출력 포트(419A))에서 네트워크 패킷을 출력할 수 있다. 예를 들어, 스케줄러(272)는 OQ(219A)에서의 디큐 레이트에 기초하여 제2 스케줄링 이벤트를 결정할 수 있다. 스케줄러(272)는 다수의 패킷 포워딩 엔진(예를 들어, 패킷 포워딩 엔진(226A), 패킷 포워딩 엔진(226B) 등)으로부터의 큐들로부터의 정보를 사용하여 제1 스케줄링 이벤트를 결정할 수 있지만, 스케줄러(272)는 패킷 포워딩 엔진(226B) 상의 큐들에 대한 정보만을 사용하여 제2 스케줄링 이벤트를 결정할 수 있다. 이와 같이, 제1 스케줄링 이벤트는 "조대(coarse)" 스케줄링으로 간주될 수 있는 반면, 제2 스케줄링 이벤트는 "미세" 스케줄링으로 간주될 수 있다.
도 5는 본 개시의 기술들에 따라 네트워크 패킷 루프백을 사용하여 이그레스로 패브릭 네트워크 트래픽을 스위칭하기 위한 예시적인 라우터를 도시하는 블록도이다. 도 5는 경로(473)를 따르는 네트워크 스위칭을 도시하며, 여기서 네트워크 패킷이 포트(407A)에 도달하고, 인그레스에서 CBUF(265)에 저장되는데, 구체적으로 VOQ(227A)에 저장된다. 때때로 나중에(예를 들어, 스케줄링 이벤트 동안), 패킷 포워딩 엔진(226A)은 CBUF(265)에서의 네트워크 패킷을 판독하고 네트워크 패킷을 패브릭 출력(443)에 출력하여 네트워크 패킷을 패브릭에 걸쳐 목적지 패킷 포워딩 엔진에 전송한다.
도 6은 본 개시의 기술들에 따라 네트워크 패킷 루프백을 사용하여 인그레스로부터 패브릭 네트워크 트래픽을 스위칭하기 위한 예시적인 라우터를 도시하는 블록도이다. 도 6은 네트워크 패킷이 스케줄러(272)에 의해 패브릭에 걸쳐 그로부터 도달하고(예를 들어, 패브릭 입력(441)에 의해 판독됨) 이그레스 패킷 포워딩 엔진(226B)에 도달하는 경로(475)를 따르는 네트워크 스위칭을 도시한다. 이그레스 패킷 포워딩 엔진(226B)은 네트워크 패킷을 CBUF(265) 내의 OQ(219A)에 저장한다. 스케줄러(272)는 네트워크 패킷을 판독하고 네트워크 패킷을 인그레스 패킷 포워딩 엔진(226A)으로, 이그레스 PG(예를 들어, 포트(417B))를 통해 인그레스 PG(예를 들어, 포트(407B))로 루프백한다.
예를 들어, 이그레스 패킷 포워딩 엔진(226B)은, 제1 스케줄링 이벤트(예를 들어, 스케줄러(272)에 의해 결정됨)에 응답하여 그리고 인그레스 포워딩 엔진(226A)에, VOQ(227A)에서의 네트워크 패킷 및 네트워크 패킷이 이그레스 패킷 포워딩 엔진(226B)의 출력 포트에 대한 OQ(219A)에 인큐잉될 것임을 표시하는 정보를 포함하는 헤더를 갖는 네트워크 패킷을 출력할 수 있다. 예를 들어, 이그레스 패킷 포워딩 엔진(226B)은 헤더를 갖는 네트워크 패킷을 이그레스 패킷 포워딩 엔진(226B)의 제1 포트(예를 들어, 포트(417B))로부터 인그레스 패킷 포워딩 엔진(226A)의 제2 포트(예를 들어, 409B)에 출력할 수 있다. 인그레스 패킷 포워딩 엔진(226B)은, 헤더를 갖는 네트워크 패킷을 수신하는 것에 응답하여, 네트워크 패킷에 대한 드롭 체크를 수행할 수 있다.
헤더를 갖는 네트워크 패킷을 수신하는 것에 응답하여, 인그레스 패킷 포워딩 엔진(226A)은 네트워크 패킷을 가상 출력 큐(227A)로부터 디큐잉하고 네트워크 패킷을 출력 큐(219A)에 인큐잉할 수 있다. 예를 들어, 인그레스 패킷 포워딩 엔진(226A)의 IPP(261)는 네트워크 패킷을 인그레스 VOQ(예를 들어, VOQ(227))에 저장한다. 스케줄러(272)는 나중에 이그레스 GS에 의해 포트(예를 들어, 포트(417A))에 네트워크 패킷을 스케줄링할 수 있다. 예를 들어, 이그레스 패킷 포워딩 엔진(226B)은 제1 스케줄링 이벤트 이후의 제2 스케줄링 이벤트에 응답하여, 네트워크 패킷을 출력 큐(227A)로부터 디큐잉하고 출력 포트(예를 들어, 출력 포트(419A))에서 네트워크 패킷을 출력할 수 있다.
도 7은 본 개시의 기술들에 따라 메타데이터 루프백을 사용하여 로컬 네트워크 트래픽을 스위칭하기 위한 예시적인 라우터(206)를 도시하는 블록도이다. 도 7은 이그레스 패킷 포워딩 엔진(226B)으로부터 인그레스 패킷 포워딩 엔진(226A)으로 패킷 헤더 및 메타데이터만을 재순환시킴으로써 패킷이 CBUF에 저장되면 루프백을 사용하는 예시적인 라우터(206)를 도시한다. 도 7은 이그레스 OQ에 대해 구성되는 라우터(206)를 도시한다. 인그레스 입력 포트들(예를 들어, 포트들(407A, 407B, 409A, 409B 등))에 도달하는 네트워크 패킷들은 "로컬 스위칭"을 사용하여 패브릭(예를 들어, 패브릭 입력(441), 패브릭 출력(443) 등)에 대한 필요성 없이 이그레스로 이동할 수 있다.
본 개시의 기술들에 따르면, 인그레스 패킷 포워딩 엔진(226A)은 네트워크 패킷을 수신하는 것에 응답하여, 네트워크 패킷을 출력하기 위한 이그레스 패킷 포워딩 엔진을 결정할 수 있다. 인그레스 패킷 포워딩 엔진(226A)은 네트워크 패킷을 이그레스 패킷 포워딩 엔진에의 출력을 위해 가상 출력 큐(227A)에 인큐잉할 수 있다. 예를 들어, 인그레스 패킷 포워딩 엔진(226A)은 네트워크 패킷을 이그레스 패킷 포워딩 엔진(226B)에의 출력을 위해 가상 출력 큐(227A)에 인큐잉할 수 있다.
이그레스 패킷 포워딩 엔진(226B)은, VOQ(227A)에서의 네트워크 패킷 및 네트워크 패킷이 인그레스 패킷 포워딩 엔진(226A)에 대한 이그레스 패킷 포워딩 엔진(226B)의 출력 포트(예를 들어, 포트(419A))에 대한 OQ(219A)에 인큐잉될 것임을 표시하는 정보를 포함하는 메타데이터를 인그레스 패킷 포워딩 엔진(226A)에 출력하고, 네트워크 패킷(예를 들어, 패킷 페이로드)을 네트워크 패킷 포워딩 엔진(226A)에 출력하는 것을 억제시킬 수 있다. 예를 들어, 이그레스 패킷 포워딩 엔진(226B)은 로컬 스위칭을 사용하여(예를 들어, CBUF(265)를 사용하여) 인그레스 패킷 포워딩 엔진에 헤더 데이터 및/또는 메타데이터를 출력할 수 있다.
메타데이터를 수신하는 것에 응답하여, 인그레스 패킷 포워딩 엔진(226A)은 네트워크 패킷을 가상 출력 큐(227A)로부터 디큐잉하고 네트워크 패킷을 출력 큐(219A)에 인큐잉할 수 있다. 제1 스케줄링 이벤트 이후의 제2 스케줄링 이벤트에 응답하여, 이그레스 패킷 포워딩 엔진(226B)은 네트워크 패킷을 출력 큐(227A)로부터 디큐잉하고 출력 포트(예를 들어, 출력 포트(419A))에서 네트워크 패킷을 출력할 수 있다.
도 8은 본 개시의 기술들에 따라 메타데이터 루프백을 사용하여 인그레스로부터 패브릭 네트워크 트래픽을 스위칭하기 위한 예시적인 라우터를 도시하는 블록도이다. 패브릭 입력(441)은 패브릭으로부터 네트워크 패킷들을 수신하고, 혼잡 관리자(405)는 드롭 체크를 수행한다. 혼잡 관리자(405)가 네트워크 패킷이 허용된다고 결정하는 경우, 인그레스 패킷 포워딩 엔진(226A)은 네트워크 패킷을 포트(예를 들어, 포트(417A))에 스케줄링하기 위해 OQ(219A)에 인큐잉한다. 도 8은 조합된 입력 큐 및 OQ 모델을 지원하기 위한 라우터(206)를 통한 경로(479)를 도시한다. 그러나, 이것은 인그레스 패킷 포워딩 엔진(226A) 상의 로컬 스위칭된 포트들로부터 나오는 그러한 패킷들에 더하여 CBUF(265)에서의 패브릭으로부터의 네트워크 패킷을 저장하기 위해 추가적인 드롭 체크 및 인큐 대역폭을 사용할 수 있다.
이그레스 패킷 포워딩 엔진(226B)은, 제1 스케줄링 이벤트에 응답하여 그리고 인그레스 패킷 포워딩 엔진(226A)에, VOQ(227A)에서의 네트워크 패킷 및 네트워크 패킷이 인그레스 패킷 포워딩 엔진(226A)에 대한 이그레스 패킷 포워딩 엔진(226B)의 출력 포트(예를 들어, 포트(419A))에 대한 OQ(219A)에 인큐잉될 것임을 표시하는 정보를 포함하는 메타데이터를 출력하고, 네트워크 패킷(예를 들어, 패킷 페이로드)을 네트워크 패킷 포워딩 엔진(226A)에 출력하는 것을 억제시킬 수 있다. 예를 들어, 이그레스 패킷 포워딩 엔진(226B)은 로컬 스위칭을 사용하여(예를 들어, CBUF(265)를 사용하여) 인그레스 패킷 포워딩 엔진에 헤더 데이터 및/또는 메타데이터를 출력할 수 있다.
메타데이터를 수신하는 것에 응답하여, 인그레스 패킷 포워딩 엔진(226A)은 네트워크 패킷을 가상 출력 큐(227A)로부터 디큐잉하고 네트워크 패킷을 출력 큐(219A)에 인큐잉할 수 있다. 제1 스케줄링 이벤트 이후의 제2 스케줄링 이벤트에 응답하여, 이그레스 패킷 포워딩 엔진(226B)은 네트워크 패킷을 출력 큐(227A)로부터 디큐잉하고 출력 포트(예를 들어, 출력 포트(419A))에서 네트워크 패킷을 출력할 수 있다.
도 9는 본 개시의 기술들에 따라 네트워크 트래픽을 스위칭하기 위한 예시적인 제1 프로세스를 도시하는 블록도이다. 인그레스 패킷 포워딩 엔진(226A)은, 네트워크 패킷을 수신하는 것에 응답하여, 네트워크 패킷을 출력하기 위한 이그레스 패킷 포워딩 엔진을 결정할 수 있다(902). 예를 들어, 인그레스 패킷 포워딩 엔진(226A)은 이그레스 패킷 포워딩 엔진(예를 들어, 이그레스 패킷 포워딩 엔진(226B))을 결정할 수 있다.
인그레스 패킷 포워딩 엔진(226A)은 네트워크 패킷을 이그레스 패킷 포워딩 엔진에의 출력을 위해 가상 출력 큐(227A)에 인큐잉할 수 있다(904). 예를 들어, 인그레스 패킷 포워딩 엔진(226A)은 네트워크 패킷을 이그레스 패킷 포워딩 엔진(226B)에의 출력을 위해 가상 출력 큐(227A)에 인큐잉할 수 있다. 일부 예들에서, VOQ(227A)는 인그레스 패킷 포워딩 엔진(226A) 및 이그레스 패킷 포워딩 엔진들의 세트에 대한 조합된 버퍼(예를 들어, CBUF(265))이다. 예를 들어, 인그레스 패킷 포워딩 엔진(226A)은 이그레스 패킷 포워딩 엔진(226B)에의 출력을 위해 인그레스 패킷 포워딩 엔진(226A)의 가상 출력 큐(227A)에 할당되는 CBUF(265)의 제1 부분에 네트워크 패킷을 인큐잉할 수 있다.
이그레스 패킷 포워딩 엔진(226B)은, 제1 스케줄링 이벤트에 응답하여 그리고 인그레스 포워딩 엔진(226A)에, 가상 출력 큐에서의 네트워크 패킷 및 네트워크 패킷이 이그레스 패킷 포워딩 엔진(226B)의 출력 포트에 대한 출력 큐에 인큐잉될 것임을 표시하는 정보를 출력할 수 있다(906). 예를 들어, 이그레스 패킷 포워딩 엔진(226B)은 인그레스 패킷 포워딩 엔진(226A)에, 정보를 포함하는 헤더를 갖는 네트워크 패킷을 출력할 수 있다. 일부 예들에서, 이그레스 패킷 포워딩 엔진(226B)은, 인그레스 패킷 포워딩 엔진(226A)에, 정보를 포함하는 헤더를 갖는 네트워크 패킷을 출력할 수 있다. 예를 들어, 이그레스 패킷 포워딩 엔진(226B)은 헤더를 갖는 네트워크 패킷을 이그레스 패킷 포워딩 엔진의 제1 포트로부터 인그레스 패킷 포워딩 엔진(226A)의 제2 포트에 출력할 수 있다. 인그레스 패킷 포워딩 엔진(226B)은, 헤더를 갖는 네트워크 패킷을 수신하는 것에 응답하여, 네트워크 패킷에 대한 드롭 체크를 수행할 수 있다.
일부 예들에서, 이그레스 패킷 포워딩 엔진(226B)은 정보를 포함하는 메타데이터를 인그레스 패킷 포워딩 엔진(226A)에 출력하고, 네트워크 패킷을 인그레스 패킷 포워딩 엔진(226A)에 출력하는 것을 억제시킬 수 있다. 예를 들어, 이그레스 패킷 포워딩 엔진(226B)은 로컬 스위칭을 사용하여 메타데이터를 인그레스 패킷 포워딩 엔진에 출력할 수 있다.
일부 예들에서, 스케줄러(272)는 이그레스 패킷 포워딩 엔진(226B)에서의 복수의 출력 포트로부터 출력 포트를 선택할 수 있다. 이 예에서, 스케줄러(272) 또는 이그레스 패킷 포워딩 엔진(226B)의 다른 컴포넌트는 네트워크 패킷이 스케줄러(272)에 의한 출력 포트의 선택에 기초하여 출력 큐에 인큐잉될 것임을 지정하기 위한 정보를 생성할 수 있다. 일부 예들에서, 스케줄러(272)는 데이터가 라우터(206)로부터 교환되는 속도를 조절하기 위해 제1 스케줄링 이벤트를 결정할 수 있다. 예를 들어, 스케줄러(272)는 OQ(219A)에서의 디큐 레이트에 기초하여 제1 스케줄링 이벤트를 결정할 수 있다.
인그레스 패킷 포워딩 엔진(226A)은, 정보를 수신하는 것에 응답하여, 네트워크 패킷을 가상 출력 큐(227A)로부터 디큐잉하고(908), 네트워크 패킷을 출력 큐(219A)에 인큐잉할 수 있다(910). 예를 들어, 인그레스 패킷 포워딩 엔진(226A)은 네트워크 패킷을 가상 출력 큐(227A)에 할당된 CBUF(265)의 제1 부분으로부터 디큐잉할 수 있다. 일부 예들에서, 인그레스 패킷 포워딩 엔진(226A)은 네트워크 패킷을 출력 큐(219A)에 할당된 CBUF(265)의 제2 부분에 인큐잉할 수 있다.
이그레스 패킷 포워딩 엔진(226B)은 제1 스케줄링 이벤트 이후의 제2 스케줄링 이벤트에 응답하여, 네트워크 패킷을 출력 큐(227A)로부터 디큐잉하고(912), 출력 포트에서 네트워크 패킷을 출력할 수 있다(914). 예를 들어, 이그레스 패킷 포워딩 엔진(226B)은 네트워크 패킷을 CBUF(265)의 제2 부분으로부터 디큐잉할 수 있다. 일부 예들에서, 스케줄러(272)는 데이터가 라우터(206)로부터 교환되는 속도를 조절하기 위해 제2 스케줄링 이벤트를 결정할 수 있다. 예를 들어, 스케줄러(272)는 OQ(219A)에서의 디큐 레이트에 기초하여 제2 스케줄링 이벤트를 결정할 수 있다.
본 개시에서 설명된 기술들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 적어도 부분적으로 구현될 수 있다. 예를 들어, 설명된 기술들의 다양한 양태들은 하나 이상의 마이크로프로세서, 디지털 신호 프로세서(DSP), 애플리케이션-특정 통합 회로(ASIC), 필드 프로그램가능 게이트 어레이(FPGA), 또는 임의의 다른 등가의 통합 또는 이산 논리 회로뿐만 아니라 이러한 컴포넌트들의 임의의 조합들을 포함하는, 하나 이상의 프로세서 내에서 구현될 수 있다. 용어 "프로세서" 또는 "처리 회로"는, 일반적으로, 단독으로 또는 다른 로직 회로와 조합한 전술한 로직 회로의 임의의 것, 또는 임의의 다른 등가 회로를 지칭할 수 있다. 하드웨어를 포함하는 제어 유닛이 또한 본 개시의 기술들 중 하나 이상의 기술을 수행할 수 있다.
이러한 하드웨어, 소프트웨어 및 펌웨어는, 본 개시에서 설명된 다양한 동작들 및 기능들을 지원하는 동일한 디바이스 내에서 또는 개별 디바이스들 내에서 구현될 수 있다. 또한, 설명된 유닛들, 모듈들 또는 컴포넌트들 중 임의의 것은 함께 또는 개별적으로 이산이지만 상호 운용 가능한 논리 디바이스들로서 구현할 수 있다. 모듈들 또는 유닛들로서 상이한 특징들의 묘사는 상이한 기능적 양태들을 강조하기 위해 의도된 것이며 반드시 그러한 모듈들 또는 유닛들이 개별 하드웨어 또는 소프트웨어 컴포넌트들에 의해 실현되어야 함을 암시하는 것은 아니다. 오히려, 하나 이상의 모듈 또는 유닛과 연관된 기능은 개별 하드웨어 또는 소프트웨어 컴포넌트들에 의해 수행되거나, 공통 또는 개별 하드웨어 또는 소프트웨어 컴포넌트들 내에 통합될 수 있다.
본 개시에서 설명된 기술들은 또한, 명령어들을 포함하는, 컴퓨터 판독가능 저장 매체와 같은 컴퓨터 판독가능 매체에서 구현되거나 인코딩될 수 있다. 컴퓨터 판독가능 저장 매체에 임베딩되거나 인코딩된 명령어들은 프로그램가능 프로세서, 또는 다른 프로세서로 하여금, 예를 들어, 명령어들이 실행될 때, 방법을 수행하게 할 수 있다. 컴퓨터 판독가능 저장 매체는 RAM(random access memory), ROM(read only memory), PROM(programmable read only memory), EPROM, EEPROM, 플래시 메모리, 하드 디스크, CD-ROM, 플로피 디스크, 카세트, 자기 매체, 광학 매체, 또는 다른 컴퓨터 판독가능 매체를 포함할 수 있다.

Claims (20)

  1. 네트워크 트래픽을 스위칭하기 위한 장치로서,
    회로로 구현되는 인그레스 패킷 포워딩 엔진 - 상기 인그레스 패킷 포워딩 엔진은,
    네트워크 패킷을 수신하는 것에 응답하여, 상기 네트워크 패킷을 출력하기 위한 이그레스 패킷 포워딩 엔진을 결정하고;
    상기 네트워크 패킷을 상기 이그레스 패킷 포워딩 엔진에의 출력을 위해 가상 출력 큐에 인큐잉하도록 구성되고, 상기 네트워크 패킷을 상기 가상 출력 큐에 인큐잉하기 위해, 상기 인그레스 패킷 포워딩 엔진은 상기 네트워크 패킷을 상기 가상 출력 큐에 할당된 조합된 버퍼의 제1 부분에 인큐잉하도록 구성됨 -;
    처리 회로로 구현되는 이그레스 패킷 포워딩 엔진 - 상기 이그레스 패킷 포워딩 엔진은, 제1 스케줄링 이벤트에 응답하여, 상기 가상 출력 큐에서의 상기 네트워크 패킷 및 상기 네트워크 패킷이 상기 이그레스 패킷 포워딩 엔진의 출력 포트에 대한 출력 큐에 인큐잉될 것임을 표시하는 정보를 상기 인그레스 패킷 포워딩 엔진에 출력하도록 구성됨 -
    을 포함하고;
    상기 인그레스 패킷 포워딩 엔진은 상기 정보를 수신하는 것에 응답하여,
    상기 네트워크 패킷을 상기 가상 출력 큐로부터 디큐잉하고 - 상기 네트워크 패킷을 상기 가상 출력 큐로부터 디큐잉하기 위해, 상기 인그레스 패킷 포워딩 엔진은 상기 네트워크 패킷을 상기 조합된 버퍼의 상기 제1 부분으로부터 디큐잉하도록 구성됨 -;
    상기 네트워크 패킷을 상기 출력 큐에 인큐잉하도록 추가로 구성되고 - 상기 네트워크 패킷을 상기 출력 큐에 인큐잉하기 위해, 상기 인그레스 패킷 포워딩 엔진은 상기 네트워크 패킷을 상기 출력 큐에 할당된 상기 조합된 버퍼의 제2 부분에 인큐잉하도록 구성됨 -;
    상기 이그레스 패킷 포워딩 엔진은 상기 제1 스케줄링 이벤트 이후의 제2 스케줄링 이벤트에 응답하여,
    상기 네트워크 패킷을 상기 출력 큐로부터 디큐잉하고 - 상기 네트워크 패킷을 상기 출력 큐로부터 디큐잉하기 위해, 상기 이그레스 패킷 포워딩 엔진은 상기 네트워크 패킷을 상기 조합된 버퍼의 상기 제2 부분으로부터 디큐잉하도록 구성됨 -;
    상기 출력 포트에서 상기 네트워크 패킷을 출력하도록 추가로 구성되는 장치.
  2. 제1항에 있어서,
    상기 정보를 출력하기 위해, 상기 이그레스 패킷 포워딩 엔진은 상기 정보를 포함하는 헤더를 갖는 상기 네트워크 패킷을 상기 인그레스 패킷 포워딩 엔진에 출력하도록 구성되는 장치.
  3. 제2항에 있어서,
    상기 헤더를 갖는 상기 네트워크 패킷을 수신하는 것에 응답하여, 상기 인그레스 패킷 포워딩 엔진은,
    상기 네트워크 패킷에 대한 드롭 체크를 수행하도록 구성되는 장치.
  4. 제2항에 있어서,
    상기 헤더를 갖는 상기 네트워크 패킷을 출력하기 위해, 상기 이그레스 패킷 포워딩 엔진은 상기 헤더를 갖는 상기 네트워크 패킷을 상기 이그레스 패킷 포워딩 엔진의 제1 포트로부터 상기 인그레스 패킷 포워딩 엔진의 제2 포트에 출력하도록 구성되는 장치.
  5. 제1항에 있어서,
    상기 정보를 출력하기 위해, 상기 이그레스 패킷 포워딩 엔진은 상기 정보를 포함하는 메타데이터를 상기 인그레스 패킷 포워딩 엔진에 출력하고 상기 네트워크 패킷을 상기 인그레스 패킷 포워딩 엔진에 출력하는 것을 억제하도록 구성되는 장치.
  6. 제5항에 있어서,
    상기 메타데이터를 출력하기 위해, 상기 이그레스 패킷 포워딩 엔진은 로컬 스위칭을 사용하여 상기 메타데이터를 상기 인그레스 패킷 포워딩 엔진에 출력하도록 구성되는 장치.
  7. 제1항에 있어서,
    상기 이그레스 패킷 포워딩 엔진은 회로로 구현되는 스케줄러를 포함하고, 상기 스케줄러는,
    상기 이그레스 패킷 포워딩 엔진에서의 복수의 출력 포트로부터 상기 출력 포트를 선택하고- 상기 정보는 상기 네트워크 패킷이 상기 스케줄러에 의한 상기 출력 포트의 선택에 기초하여 상기 출력 큐에 인큐잉될 것임을 지정하기 위해 생성됨 -;
    데이터가 상기 장치로부터 교환되는 속도를 조절하기 위해 상기 제1 스케줄링 이벤트 및 상기 제2 스케줄링 이벤트를 결정하도록 구성되는 장치.
  8. 삭제
  9. 방법으로서,
    네트워크 패킷을 수신하는 것에 응답하여 그리고 처리 회로로 구현된 인그레스 패킷 포워딩 엔진에 의해, 상기 네트워크 패킷을 출력하기 위한 이그레스 패킷 포워딩 엔진을 결정하는 단계;
    상기 인그레스 패킷 포워딩 엔진에 의해, 상기 네트워크 패킷을 상기 이그레스 패킷 포워딩 엔진에의 출력을 위해 가상 출력 큐에 인큐잉하는 단계 - 상기 네트워크 패킷을 상기 가상 출력 큐에 인큐잉하는 것은 상기 네트워크 패킷을 상기 가상 출력 큐에 할당되는 상기 인그레스 패킷 포워딩 엔진 및 상기 이그레스 패킷 포워딩 엔진에 대한 조합된 버퍼의 제1 부분에 인큐잉하는 것을 포함함 -;
    제1 스케줄링 이벤트에 응답하여 그리고 처리 회로로 구현된 상기 이그레스 패킷 포워딩 엔진에 의해, 상기 가상 출력 큐에서의 상기 네트워크 패킷 및 상기 네트워크 패킷이 상기 이그레스 패킷 포워딩 엔진의 출력 포트에 대한 출력 큐에 인큐잉될 것임을 표시하는 정보를 상기 인그레스 패킷 포워딩 엔진에 출력하는 단계;
    상기 정보를 수신하는 것에 응답하여 그리고 상기 인그레스 패킷 포워딩 엔진에 의해, 상기 네트워크 패킷을 상기 가상 출력 큐로부터 디큐잉하고 - 상기 네트워크 패킷을 상기 가상 출력 큐로부터 디큐잉하는 것은 상기 네트워크 패킷을 상기 조합된 버퍼의 상기 제1 부분으로부터 디큐잉하는 것을 포함함 -, 상기 인그레스 패킷 포워딩 엔진에 의해, 상기 네트워크 패킷을 상기 출력 큐에 인큐잉하는 단계 - 상기 네트워크 패킷을 상기 출력 큐에 인큐잉하는 것은 상기 네트워크 패킷을 상기 출력 큐에 할당된 상기 조합된 버퍼의 제2 부분에 인큐잉하는 것을 포함함 -; 및
    상기 제1 스케줄링 이벤트 이후의 제2 스케줄링 이벤트에 응답하여 그리고 상기 이그레스 패킷 포워딩 엔진에 의해, 상기 네트워크 패킷을 상기 출력 큐로부터 디큐잉하고 - 상기 네트워크 패킷을 상기 출력 큐로부터 디큐잉하는 것은 상기 네트워크 패킷을 상기 조합된 버퍼의 상기 제2 부분으로부터 디큐잉하는 것을 포함함 -, 상기 이그레스 패킷 포워딩 엔진에 의해, 상기 네트워크 패킷을 상기 출력 포트에서 출력하는 단계
    를 포함하는 방법.
  10. 제9항에 있어서,
    상기 정보를 출력하는 것은 상기 정보를 포함하는 헤더를 갖는 상기 네트워크 패킷을 상기 인그레스 패킷 포워딩 엔진에 출력하는 것을 포함하는 방법.
  11. 제10항에 있어서,
    상기 헤더를 갖는 상기 네트워크 패킷을 수신하는 것에 응답하여 그리고 상기 인그레스 패킷 포워딩 엔진에 의해, 상기 네트워크 패킷에 대한 드롭 체크를 수행하는 단계를 포함하는 방법.
  12. 제10항에 있어서,
    상기 헤더를 갖는 상기 네트워크 패킷을 출력하는 것은 상기 헤더를 갖는 상기 네트워크 패킷을 상기 이그레스 패킷 포워딩 엔진의 제1 포트로부터 상기 인그레스 패킷 포워딩 엔진의 제2 포트에 출력하는 것을 포함하는 방법.
  13. 제9항에 있어서,
    상기 정보를 출력하는 것은 상기 정보를 포함하는 메타데이터를 상기 인그레스 패킷 포워딩 엔진에 출력하고, 상기 네트워크 패킷을 상기 인그레스 패킷 포워딩 엔진에 출력하는 것을 억제시키는 것을 포함하는 방법.
  14. 제13항에 있어서,
    상기 메타데이터를 출력하는 것은 로컬 스위칭을 사용하여 상기 메타데이터를 상기 인그레스 패킷 포워딩 엔진에 출력하는 것을 포함하는 방법.
  15. 제9항에 있어서,
    회로로 구현된 스케줄러에 의해, 상기 이그레스 패킷 포워딩 엔진에서의 복수의 출력 포트로부터 상기 출력 포트를 선택하는 단계- 상기 정보는 상기 네트워크 패킷이 상기 스케줄러에 의한 상기 출력 포트의 선택에 기초하여 상기 출력 큐에 인큐잉될 것임을 지정하기 위해 생성됨 -; 및
    상기 스케줄러에 의해, 데이터가 교환되는 속도를 조절하기 위해 상기 제1 스케줄링 이벤트 및 상기 제2 스케줄링 이벤트를 결정하는 단계
    를 포함하는 방법.
  16. 삭제
  17. 네트워크 트래픽을 스위칭하기 위한 장치로서,
    복수의 인터페이스 카드;
    회로로 구현되는 인그레스 패킷 포워딩 엔진 - 상기 인그레스 패킷 포워딩 엔진은,
    상기 복수의 인터페이스 카드로 네트워크 패킷을 수신하는 것에 응답하여, 상기 네트워크 패킷을 출력하기 위한 이그레스 패킷 포워딩 엔진을 결정하고;
    상기 네트워크 패킷을 상기 이그레스 패킷 포워딩 엔진에의 출력을 위해 가상 출력 큐에 인큐잉하도록 구성되고, 상기 네트워크 패킷을 상기 가상 출력 큐에 인큐잉하기 위해, 상기 인그레스 패킷 포워딩 엔진은 상기 네트워크 패킷을 상기 가상 출력 큐에 할당된 조합된 버퍼의 제1 부분에 인큐잉하도록 구성됨 -; 및
    처리 회로로 구현되는 이그레스 패킷 포워딩 엔진 - 상기 이그레스 패킷 포워딩 엔진은, 제1 스케줄링 이벤트에 응답하여, 상기 가상 출력 큐에서의 상기 네트워크 패킷 및 상기 네트워크 패킷이 상기 이그레스 패킷 포워딩 엔진의 출력 포트에 대한 출력 큐에 인큐잉될 것임을 표시하는 정보를 상기 인그레스 패킷 포워딩 엔진에 출력하도록 구성됨 -
    을 포함하고;
    상기 인그레스 패킷 포워딩 엔진은 상기 정보를 수신하는 것에 응답하여,
    상기 네트워크 패킷을 상기 가상 출력 큐로부터 디큐잉하고 - 상기 네트워크 패킷을 상기 가상 출력 큐로부터 디큐잉하기 위해, 상기 인그레스 패킷 포워딩 엔진은 상기 네트워크 패킷을 상기 조합된 버퍼의 상기 제1 부분으로부터 디큐잉하도록 구성됨 -;
    상기 네트워크 패킷을 상기 출력 큐에 인큐잉하도록 추가로 구성되고 - 상기 네트워크 패킷을 상기 출력 큐에 인큐잉하기 위해, 상기 인그레스 패킷 포워딩 엔진은 상기 네트워크 패킷을 상기 출력 큐에 할당된 상기 조합된 버퍼의 제2 부분에 인큐잉하도록 구성됨 -;
    상기 이그레스 패킷 포워딩 엔진은 상기 제1 스케줄링 이벤트 이후의 제2 스케줄링 이벤트에 응답하여,
    상기 네트워크 패킷을 상기 출력 큐로부터 디큐잉하고 - 상기 네트워크 패킷을 상기 출력 큐로부터 디큐잉하기 위해, 상기 이그레스 패킷 포워딩 엔진은 상기 네트워크 패킷을 상기 조합된 버퍼의 상기 제2 부분으로부터 디큐잉하도록 구성됨 -;
    상기 복수의 인터페이스 카드로, 상기 네트워크 패킷을 상기 출력 포트에서 출력하도록 추가로 구성되는 장치.
  18. 제17항에 있어서,
    상기 정보를 출력하기 위해, 상기 이그레스 패킷 포워딩 엔진은 상기 정보를 포함하는 헤더를 갖는 상기 네트워크 패킷을 상기 인그레스 패킷 포워딩 엔진에 출력하도록 구성되는 장치.
  19. 제18항에 있어서,
    상기 헤더를 갖는 상기 네트워크 패킷을 출력하기 위해, 상기 이그레스 패킷 포워딩 엔진은 상기 헤더를 갖는 상기 네트워크 패킷을 상기 이그레스 패킷 포워딩 엔진의 제1 포트로부터 상기 인그레스 패킷 포워딩 엔진의 제2 포트에 출력하도록 구성되는 장치.
  20. 제17항에 있어서,
    상기 정보를 출력하기 위해, 상기 이그레스 패킷 포워딩 엔진은 상기 정보를 포함하는 메타데이터를 상기 인그레스 패킷 포워딩 엔진에 출력하고 상기 네트워크 패킷을 상기 인그레스 패킷 포워딩 엔진에 출력하는 것을 억제하도록 구성되는 장치.
KR1020200050825A 2019-12-10 2020-04-27 네트워크 디바이스들에서 패킷 포워딩을 위한 조합된 입력 및 출력 큐 KR102414548B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/709,611 US11240151B2 (en) 2019-12-10 2019-12-10 Combined input and output queue for packet forwarding in network devices
US16/709,611 2019-12-10

Publications (2)

Publication Number Publication Date
KR20210073432A KR20210073432A (ko) 2021-06-18
KR102414548B1 true KR102414548B1 (ko) 2022-06-30

Family

ID=70390958

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200050825A KR102414548B1 (ko) 2019-12-10 2020-04-27 네트워크 디바이스들에서 패킷 포워딩을 위한 조합된 입력 및 출력 큐

Country Status (6)

Country Link
US (2) US11240151B2 (ko)
EP (2) EP4239976A3 (ko)
KR (1) KR102414548B1 (ko)
CN (1) CN112953854A (ko)
SG (1) SG10202003620XA (ko)
TW (1) TWI803748B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11240151B2 (en) * 2019-12-10 2022-02-01 Juniper Networks, Inc. Combined input and output queue for packet forwarding in network devices
US11265269B2 (en) * 2020-03-02 2022-03-01 Arista Networks, Inc. Networking system having multiple components with multiple loci of control
US11902361B2 (en) * 2021-01-08 2024-02-13 Twilio Inc. Routing provider queues
US11711294B2 (en) * 2021-05-03 2023-07-25 Mellanox Technologies, Ltd. Fast rerouting using egress-port loopback
US11949605B2 (en) * 2021-10-28 2024-04-02 Avago Technologies International Sales Pte. Limited Systems for and methods of unified packet recirculation
CN114039910B (zh) * 2021-11-17 2023-06-27 杭州云合智网技术有限公司 基于分组标签策略的数据转发的方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160226797A1 (en) * 2015-02-03 2016-08-04 Broadcom Corporation Early Queueing Network Device

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6987898B2 (en) * 2003-07-23 2006-01-17 Lucent Technologies Inc. Molecular detection using an optical waveguide fixed to a cantilever
US20060098673A1 (en) * 2004-11-09 2006-05-11 Alcatel Input queue packet switch architecture and queue service discipline
US8040901B1 (en) 2008-02-06 2011-10-18 Juniper Networks, Inc. Packet queueing within ring networks
US8284789B2 (en) * 2009-04-29 2012-10-09 Tellabs Operations, Inc. Methods and apparatus for providing dynamic data flow queues
CN101958824B (zh) * 2009-07-14 2012-06-27 华为技术有限公司 一种数据交换方法及数据交换结构
KR101104959B1 (ko) * 2010-05-25 2012-01-12 (주) 시스메이트 네트워크 패킷 전달 장치 및 방법
US8897315B1 (en) * 2012-01-06 2014-11-25 Marvell Israel (M.I.S.L) Ltd. Fabric traffic management in a network device
US8797877B1 (en) 2012-08-09 2014-08-05 Juniper Networks, Inc. Virtual output queue allocation using dynamic drain bandwidth
KR102107514B1 (ko) * 2013-04-18 2020-05-07 삼성전자주식회사 방송 시스템에서 동적 큐 관리 방법 및 장치
US10469404B1 (en) * 2014-05-12 2019-11-05 Google Llc Network multi-level rate limiter
US10257117B2 (en) * 2014-11-05 2019-04-09 Avago Technologies International Sales Pte. Limited Distributed switch architecture
WO2016109105A1 (en) * 2014-12-29 2016-07-07 Oracle International Corporation System and method for supporting efficient virtual output queue (voq) packet flushing scheme in a networking device
US9838338B2 (en) * 2014-12-29 2017-12-05 Oracle International Corporation System and method for supporting efficient virtual output queue (VOQ) resource utilization in a networking device
US20160212070A1 (en) * 2015-01-15 2016-07-21 Mediatek Inc. Packet processing apparatus utilizing ingress drop queue manager circuit to instruct buffer manager circuit to perform cell release of ingress packet and associated packet processing method
US10484311B2 (en) * 2015-03-31 2019-11-19 Cavium, Llc Method and apparatus for using multiple linked memory lists
US9942171B2 (en) * 2015-07-02 2018-04-10 Arista Networks, Inc. Network data processor having per-input port virtual output queues
US10574555B2 (en) * 2016-01-28 2020-02-25 Arista Networks, Inc. Network data stream tracer
US10778809B2 (en) * 2016-02-26 2020-09-15 Arista Networks, Inc. Per-input port, per-control plane network data traffic class control plane policing
US10708272B1 (en) * 2017-02-10 2020-07-07 Arista Networks, Inc. Optimized hash-based ACL lookup offload
US10686714B2 (en) * 2018-04-27 2020-06-16 Avago Technologies International Sales Pte. Limited Traffic management for high-bandwidth switching
US10567307B2 (en) * 2018-04-27 2020-02-18 Avago Technologies International Sales Pte. Limited Traffic management for high-bandwidth switching
US10700998B2 (en) * 2018-08-03 2020-06-30 Cavium International VOQ-based network switch architecture using multi-stage arbitration fabric scheduler
US10868769B1 (en) * 2018-08-07 2020-12-15 Innovium, Inc. Read instruction queues in a network device
US11792114B2 (en) 2019-05-23 2023-10-17 Hewlett Packard Enterprise Development Lp System and method for facilitating efficient management of non-idempotent operations in a network interface controller (NIC)
US20210021517A1 (en) * 2019-07-19 2021-01-21 Arista Networks, Inc. Avoiding recirculation of data packets in a network device
US11552907B2 (en) * 2019-08-16 2023-01-10 Fungible, Inc. Efficient packet queueing for computer networks
US11722438B2 (en) 2019-08-21 2023-08-08 Intel Corporation Maintaining bandwidth utilization in the presence of packet drops
US20210058334A1 (en) 2019-08-21 2021-02-25 Intel Corporation Timestamp-based fairness egress from ingress queues
US11240151B2 (en) * 2019-12-10 2022-02-01 Juniper Networks, Inc. Combined input and output queue for packet forwarding in network devices

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160226797A1 (en) * 2015-02-03 2016-08-04 Broadcom Corporation Early Queueing Network Device

Also Published As

Publication number Publication date
KR20210073432A (ko) 2021-06-18
US20220124030A1 (en) 2022-04-21
CN112953854A (zh) 2021-06-11
EP4239976A2 (en) 2023-09-06
TW202127838A (zh) 2021-07-16
TWI803748B (zh) 2023-06-01
EP3836498B1 (en) 2023-08-23
SG10202003620XA (en) 2021-07-29
US11240151B2 (en) 2022-02-01
US11784925B2 (en) 2023-10-10
EP4239976A3 (en) 2023-11-01
US20210176171A1 (en) 2021-06-10
EP3836498A1 (en) 2021-06-16

Similar Documents

Publication Publication Date Title
KR102414548B1 (ko) 네트워크 디바이스들에서 패킷 포워딩을 위한 조합된 입력 및 출력 큐
US10243865B2 (en) Combined hardware/software forwarding mechanism and method
US8064344B2 (en) Flow-based queuing of network traffic
US7953885B1 (en) Method and apparatus to apply aggregate access control list/quality of service features using a redirect cause
US8184540B1 (en) Packet lifetime-based memory allocation
US20030048792A1 (en) Forwarding device for communication networks
KR102177574B1 (ko) 컴퓨팅 디바이스에서 패킷 수명을 예측하기 위한 큐잉 시스템
US8284789B2 (en) Methods and apparatus for providing dynamic data flow queues
US6633575B1 (en) Method and apparatus for avoiding packet reordering in multiple-class, multiple-priority networks using a queue
US20120155271A1 (en) Scalable resource management in distributed environment
US8867560B2 (en) Managing crossbar oversubscription
US8630296B2 (en) Shared and separate network stack instances
CN111108728B (zh) 对报文进行处理方法及装置
US8027252B2 (en) System and method of defense against denial of service of attacks
Szilágyi et al. A review of congestion management algorithms on cisco routers
WO2021213711A1 (en) Virtual dual queue core stateless active queue management (aqm) for communication networks
US10547561B1 (en) Queuing system to achieve maximum queuing latency in a computing device
Benet et al. Providing in-network support to coflow scheduling
Vijay et al. PACKET HANDLING SCHEDULING IN MULTIPLE ROUTING CONFIGURATIONS FOR FAST IP NETWORK RECOVERY

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right