KR20130137539A - 데이터 컷-스루를 수행하기 위한 시스템 - Google Patents
데이터 컷-스루를 수행하기 위한 시스템 Download PDFInfo
- Publication number
- KR20130137539A KR20130137539A KR1020130063457A KR20130063457A KR20130137539A KR 20130137539 A KR20130137539 A KR 20130137539A KR 1020130063457 A KR1020130063457 A KR 1020130063457A KR 20130063457 A KR20130063457 A KR 20130063457A KR 20130137539 A KR20130137539 A KR 20130137539A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- node
- ingress
- ingress node
- bandwidth
- Prior art date
Links
- 239000000872 buffer Substances 0.000 claims abstract description 97
- 230000005540 biological transmission Effects 0.000 claims description 153
- 230000015654 memory Effects 0.000 claims description 25
- 238000000034 method Methods 0.000 claims description 25
- 230000008859 change Effects 0.000 claims description 20
- 238000004891 communication Methods 0.000 claims description 14
- 238000012544 monitoring process Methods 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 2
- 230000001419 dependent effect Effects 0.000 claims 1
- 238000013468 resource allocation Methods 0.000 description 62
- 238000012546 transfer Methods 0.000 description 39
- 238000012545 processing Methods 0.000 description 27
- 230000006870 function Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 5
- 239000004744 fabric Substances 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000003066 decision tree Methods 0.000 description 3
- 239000004258 Ethoxyquin Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000004263 Guaiac resin Substances 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004519 grease Substances 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000037351 starvation Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
- H04L43/0882—Utilisation of link capacity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/52—Queue scheduling by attributing bandwidth to queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/78—Architectures of resource allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
- H04L49/251—Cut-through or wormhole routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
- H04L49/252—Store and forward routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
시스템은 데이터를 전송한다. 시스템은 결정된 대역폭으로 데이터를 전송하는 인그레스 노드를 포함한다. 인그레스 노드는 버퍼를 포함하며, 모니터링된 노드 파라미터에 기초하여 동작한다. 시스템은 인그레스 노드와 통신하는 제어기를 포함한다. 제어기는, 모니터링된 노드 파라미터에 기초하여, 인그레스 노드의 버퍼를 바이패스하여 데이터를 직접적으로 전송하기 위한 결정된 대역폭의 양을 할당하도록 구성된다.
Description
관련된 출원들
본 특허 출원은, 본 명세서에 참조로써 통합된, 2012.06.01자로 출원된 출원번호 61/654,395호의 미국 가특허 출원에 대하여 35 U.S.C. §119(e)에 기초한 출원일의 이익을 주장한다.
기술분야
본 발명은 데이터 전송을 위한 시스템들 및 방법들(일반적으로 시스템들로서 지칭되는)에 관한 것이다. 보다 구체적으로, 본 발명은 컷-스루 스위칭 또는 데이터 전송을 수행하기 위한 시스템에 관한 것이다.
데이터 및 다른 정보는 하나 이상의 포트들, 노드들, 장소들, 또는 디바이스들로부터 하나 이상의 다른 포트들, 노드들, 장소들, 또는 디바이스들로 송신될 수 있다. 일부 경우들에 있어, 스위칭 시스템 또는 네트워크 스위치가 포트들, 노드들, 장소들, 또는 디바이스들 사이의 데이터 전송을 가능하게 하기 위하여 사용될 수 있다.
일 측면에 따르면, 데이터 전송 시스템은:
결정된 대역폭으로 데이터를 전송하는 인그레스 노드(ingress node)로서, 상기 인그레스 노드는 버퍼를 포함하고 모니터링된 노드 파라미터에 기초해 동작하는, 상기 인그레스 노드; 및
상기 인그레스 노드와 통신하는 제어기로서, 상기 제어기는, 상기 모니터링된 노드 파라미터에 기초하여, 상기 인그레스 노드의 상기 버퍼를 바이패스(bypass)하여 데이터를 직접적으로 전송하기 위한 상기 결정된 대역폭의 양을 할당하도록 구성된, 상기 제어기를 포함한다.
바람직하게, 상기 제어기는 상기 모니터링된 노드 파라미터의 변화를 식별하도록 구성된다.
바람직하게, 상기 제어기는 상기 모니터링된 노드 파라미터의 상기 식별된 변화에 기초하여 데이터를 직접적으로 전송하기 위한 상기 결정된 대역폭의 상기 할당된 양을 조정하도록 구성된다.
바람직하게, 상기 모니터링된 노드 파라미터는 상기 인그레스 노드의 상기 버퍼의 필 레벨(fill level)을 포함한다.
바람직하게, 데이터를 직접적으로 전송하기 위한 상기 결정된 대역폭의 상기 할당된 양은 상기 인그레스 노드의 상기 버퍼의 상기 필 레벨에 역비례하여(inversely) 변화한다.
바람직하게, 상기 모니터링된 노드 파라미터는, 상기 인그레스 노드가 데이터 패킷들을 상기 버퍼에 저장하지 않고 상기 인그레스 노드의 상기 버퍼를 바이패스하여 데이터 패킷들을 직접적으로 전송한 시간 기간(time period)을 포함한다.
바람직하게, 데이터를 직접적으로 전송하기 위한 상기 결정된 대역폭의 상기 할당된 양은, 상기 이그레스 노드가 상기 인그레스 노드의 상기 버퍼를 바이패스하여 데이터 패킷들을 직접적으로 전송한 시간의 길이에 역비례하여 변화한다.
바람직하게, 상기 인그레스 노드는 인그레스 포트들의 세트(set)를 포함하며; 및
데이터를 직접적으로 전송하기 위한 상기 결정된 대역폭의 상기 할당된 양의 비율(ratio)은, 인그레스 포트들의 상기 세트의 크기에 대한, 상기 인그레스 노드의 상기 메모리를 바이패스하는 직접적인 데이터 전송을 위해 할당된 인그레스 포트들의 상기 세트의 인그레스 포트들의 수의 비율에 대응한다.
일 측면에 따르면, 데이터 전송 방법은:
인그레스 노드의 파라미터를 모니터링하는 단계;
상기 파라미터에 기초하여, 상기 인그레스 노드에서 제 1 데이터 패킷의 후속(subsequent) 데이터 세그먼트(segment)가 수신되기 전에, 상기 제 1 데이터 패킷의 데이터 세그먼트를 이그레스 노드(egress node)로 전송하기 위한 인그레스 노드의 결정된 대역폭의 제 1 양(amount)을 할당하는 단계;
상기 결정된 대역폭의 상기 제 1 양의 적어도 부분을 사용하여 상기 데이터 세그먼트를 전송하는 단계;
상기 파라미터에 기초하여, 상기 인그레스 노드의 메모리에 저장된 제 2 데이터 패킷을 전송하기 위한 상기 결정된 대역폭의 제 2 양을 할당하는 단계; 및
상기 결정된 대역폭의 상기 제 2 양의 적어도 부분을 사용하여 상기 제 2 데이터 패킷을 전송하는 단계를 포함한다.
바람직하게, 상기 결정된 대역폭의 상기 제 1 양은 상기 파라미터와 조회(look-up) 테이블 내의 엔트리(entry)의 비교에 기초하여 할당된다.
바람직하게, 상기 결정된 대역폭의 상기 제 1 양은 입력으로서 상기 파라미터를 수신하는 할당 알고리즘에 기초하여 할당된다.
바람직하게, 상기 결정된 대역폭의 상기 제 2 양은 상기 결정된 대역폭과 상기 결정된 대역폭의 상기 제 1 양 간의 차이(difference)를 포함한다.
바람직하게, 상기 파라미터는 상기 버퍼의 필 레벨, 상기 인그레스 노드에서 이전의 데이터 패킷들의 후속 데이터 세그먼트들이 수신되기 전에 상기 인그레스 포트가 이전의 데이터 패킷들을 전송한 시간 길이, 저장-및-전달 크레딧(store-and-forward credit), 인큐 레이트(enqueue rate), 또는 디큐 레이트(dequeue rate)를 포함한다.
바람직하게, 상기 방법은, 상기 파라미터의 변화에 응답하여, 상기 결정된 대역폭의 상기 할당된 제 1 양 및 상기 결정된 대역폭의 상기 할당된 제 2 양을 갱신하는 단계를 더 포함한다.
일 측면에 따르면, 인그레스 노드는:
결정된 대역폭으로 데이터를 전송하도록 구성된 데이터 전송 컴포넌트;
상기 데이터 전송 컴포넌트와 통신하며, 데이터 패킷들에 대한(about) 데이터를 저장하도록 구성된 버퍼;
상기 데이터 전송 컴포넌트와 통신하며, 데이터 패킷의 데이터 세그먼트를 수신하도록 구성된 인터페이스;
상기 데이터 전송 컴포넌트, 상기 버퍼, 및 상기 인터페이스와 통신하는 제어기로서, 상기 제어기는, 상기 버퍼의 필 레벨에 기초하여, 상기 데이터 전송 컴포넌트가 상기 버퍼 내에 저장된 데이터를 전송하기 위해 사용할 수 있는 상기 결정된 대역폭의 제 1 양 및 상기 인터페이스에서 상기 데이터 패킷의 후속 데이터 세그먼트가 수신되기 전에 상기 데이터 전송 컴포넌트가 상기 데이터 세그먼트를 이그레스 노드로 전송하기 위해 사용할 수 있는 상기 결정된 대역폭의 제 2 양을 결정하도록 동작가능한, 상기 제어기를 포함한다.
바람직하게, 상기 제어기는, 상기 결정된 대역폭의 상기 제 2 양이 상기 데이터 세그먼트를 상기 이그레스 노드로 전송하기에 충분하지 않을 때, 상기 데이터 패킷을 상기 버퍼에 저장하도록 구성된다.
바람직하게, 상기 데이터 전송 컴포넌트는, 상기 인터페이스에서 상기 데이터 패킷의 상기 후속 데이터 세그먼트가 수신된 후, 상기 결정된 대역폭의 상기 제 1 양으로 버퍼로부터 상기 데이터 세그먼트를 전송하도록 구성된다.
바람직하게, 상기 버퍼에 저장된 상기 데이터는 다른 이그레스 노드로 향해지며(destined), 상기 데이터 전송 컴포넌트는 상기 다른 이그레스 노드로부터 데이터 전송 크레딧이 수신될 때까지 상기 버퍼에 저장된 상기 데이터를 전송하지 않는다.
바람직하게, 상기 데이터 세그먼트는 상기 데이터 패킷이 전송될 상기 이그레스 노드를 나타내는 식별자를 포함하며, 상기 제어기는 상기 이그레스 노드가 유휴(idle)인지 또는 상기 인터페이스에서 상기 데이터 패킷의 상기 후속 데이터 세그먼트가 수신되기 전에 상기 데이터 세그먼트를 수신하기 위해 이용가능한지 여부를 결정한다.
바람직하게, 상기 데이터 전송 컴포넌트는 컷-스루(cut-through) 데이터 전송을 사용하여 데이터를 전송하기 위해 상기 결정된 대역폭의 상기 제 1 양을 사용하도록 구성되며, 상기 데이터 전송 컴포넌트든 저장-및-전달 데이터 전송을 사용하여 데이터를 전송하기 위해 상기 결정된 대역폭의 상기 제 2 양을 사용하도록 구성된다.
본 발명의 다음의 도면들 및 상세한 설명을 참조하여 더 잘 이해될 수 있다. 도면들 내에서, 동일한 도면부호들은 상이한 도면들에 걸쳐 대응하는 부분들을 지시한다.
도 1은 데이터 전송을 위한 예시적인 네트워크의 블록도이다.
도 2는 데이터 전송을 위한 예시적인 시스템의 블록도이다.
도 3은 데이터 전송을 위한 예시적인 시스템의 블록도이다.
도 4는 데이터 전송을 위한 시스템의 예시적인 노드의 블록도이다.
도 5는 데이터 전송을 위한 예시적인 시스템의 블록도이다.
도 6은 예시적인 할당 조회 테이블(allocation look-up table)의 도면이다.
도 7은 예시적인 할당 조회 테이블의 도면이다.
도 8은 예시적인 상태 테이블(state table)의 도면이다.
도 9는 데이터 전송을 위한 예시적인 로직(logic)의 순서도이다.
도 10은 데이터 전송을 위한 예시적인 로직의 순서도이다.
도 1은 데이터 전송을 위한 예시적인 네트워크의 블록도이다.
도 2는 데이터 전송을 위한 예시적인 시스템의 블록도이다.
도 3은 데이터 전송을 위한 예시적인 시스템의 블록도이다.
도 4는 데이터 전송을 위한 시스템의 예시적인 노드의 블록도이다.
도 5는 데이터 전송을 위한 예시적인 시스템의 블록도이다.
도 6은 예시적인 할당 조회 테이블(allocation look-up table)의 도면이다.
도 7은 예시적인 할당 조회 테이블의 도면이다.
도 8은 예시적인 상태 테이블(state table)의 도면이다.
도 9는 데이터 전송을 위한 예시적인 로직(logic)의 순서도이다.
도 10은 데이터 전송을 위한 예시적인 로직의 순서도이다.
기술 및 데이터 전송 요구들의 증가와, 클라우드(cloud)의 출현에 따라, 네트워크 소비자들은 그들의 네트워크에 대해 고 대역폭 결합(high bandwidth aggregation) 디바이스들로부터의 이익을 얻을 수 있다. 고 대역폭 결합에 더하여, 바람직한 시스템은 저 레이턴시 데이터 전달(low latency data delivery)을 가질 수 있다. 레이턴시는 사용자가 보는 결과들의 품질 및 응답성(responsiveness)을 결정하거나 또는 반영할 수 있으며, 또는 인터넷 서비스의 제공자에 대한 수익에 영향을 줄 수 있다. 이와 같이, 고 대역폭 결합 및 증가된 데이터 전달 속도를 제공하는 시스템이 유용할 수 있다.
도 1은 데이터 전송을 위한 예시적인 네트워크(100)의 블록도이다. 네트워크(100)는 하나 이상의 서버들(110 및 120) 및 하나 이상의 컴퓨터들(130 및 140)과 같은 다양한 디바이스들을 포함할 수 있다. 네트워크(100)는 서버들의 세트(set) 또는 서버 뱅크(server bank)를 포함할 수 있다. 네트워크(100)는 상호연결된 컴퓨터들 또는 네트워크 디바이스들의 거대 네트워크(vast network)를 포함할 수 있다. 디바이스들은 데이터 센터의 일부분으로서 상호연결되거나, 또는 차량용 환경(automotive environment)에서 상호연결된 디바이스들일 수 있다. 네트워크(100)는, 예를 들어, 하나 이상의 무선 전화, 모바일 디바이스 또는 모바일 폰, 스마트 폰, 통신 디바이스, 태블릿, 개인용 컴퓨터(PC), 셋-탑 박스(STB), PDA(personal digital assistant), 팜탑 컴퓨터, 랩탑 컴퓨터, 데스크탑 컴퓨터, 유선 전화, 제어 시스템, 카메라, 스캐너, 팩시밀리 머신, 프린터, 호출기, 개인 신용 단말기(personal trusted device), 웹 가전기기(web appliance), 네트워크 라우터, 스위치 또는 브리지, 또는 임의의 다른 머신 또는 디바이스와 같은, 하나 이상의 다른 디바이스들을 포함할 수 있다.
시스템(105)과 같은, 하나 이상의 시스템들은 네트워크(100)의 하나 이상의 디바이스들 사이의 통신을 가능하게 하도록 구현될 수 있다. 서버들(110 및 120) 및 컴퓨터들(130 및 140)의 일부 또는 전부와 같은, 네트워크(100)의 디바이스들의 일부 또는 전부는 시스템(105)을 통해 또는 이를 사용하여 연결되거나, 또는 달리 서로 통신할 수 있다.
도 2는 데이터 전송을 위한 예시적인 시스템(205)의 블록도이다. 시스템(205)은 시스템(105)과 유사하거나, 동일하거나, 또는 비슷할 수 있다. 시스템(205)은 하나 이상의 집적 회로들, 칩들, 또는 다이(die)들(210 및 220)을 포함할 수 있다. 다이는 그 위에 주어진 기능 또는 집적 회로가 제조될 수 있는 반도체 재료의 블록을 나타낼 수 있다. 다이들(210 및 220)은, 다이(210)의 노드 A(220) 및 노드 B(225), 및 다이(220)의 노드 C(230) 및 노드 D(235)와 같은, 하나 이상의 타일(tile)들 또는 노드들을 포함할 수 있다. 시스템(205)은 완전 메시 토폴로지(full mesh topology) 또는, 비-완전 메시(non-full mesh) 토폴로지와 같은 다른 토폴로지를 포함할 수 있다.
시스템(105 또는 205)과 같은 시스템들은 임의의 수의 다이들을 가질 수 있으며, 다이들은 임의의 수의 타일들 또는 노드들을 가질 수 있다. 노드 또는 타일은 칩 내의 단일 다이를 나타낼 수 있다. 노드는 디바이스 또는 시스템 내의 복수의 칩들을 나타내거나, 또는 시스템 또는 새시(chassis) 내의 복수의 디바이스들을 나타낼 수 있다. 노드는 하나의 다이 내의 단일 논리 엔터티(single logical entity)를 나타낼 수 있다. 일부 시스템들은 복수의 다이(multiple die)를 포함할 수 있으며, 각각의 다이는 단일 칩 또는 디바이스 내에서 하나 이상의 노드들을 포함한다. 일부 시스템들은 추가적으로 또는 대안적으로 하나 이상의 칩들 또는 디바이스들을 포함할 수 있다.
시스템(205)의 노드들은 하나 이상의 포트들을 포함할 수 있다. 서버들(110 및 120) 및 컴퓨터들(130 및 140)과 같은 하나 이상의 디바이스들이 노드들의 하나 이상의 포트들을 사용하여 시스템(205)에 연결되거나, 시스템(205)과 통신하거나, 또는 시스템(205)을 통해 통신할 수 있다. 노드 A(220)는, 서버(110)가 노드 A(220)의 제 1 포트를 통해 연결되고, 서버(120)가 노드 A(220)의 제 2 포트를 통해 연결될 수 있도록, 2개의 포트들을 가질 수 있다. 시스템의 노드들은 오로지 하나의 포트만을 가질 수도 있으며, 또는 3개 이상의 포트들을 가질 수도 있다.
시스템(205)의 포트들은 단일 칩 또는 다이 상에서 내부에 있을 수도 있으며, 또는 복수의 칩들 또는 다이들에 걸쳐 펼쳐질 수도 있다. 일부 경우들에 있어, 시스템(205)은 네트워크 스위치와 유사하거나 또는 비슷할 수 있다. 시스템(205)은 임의의 수의 노드들 또는 포트들을 가질 수 있다.
타일 또는 노드 내의 포트들은, 예를 들어, 인그레스 포트(ingress port)들 또는 이그레스 포트(egress port)들일 수 있다. 데이터, 데이터의 비트들, 데이터 패킷, 데이터의 세트, 또는 프레임("데이터" 또는 "데이터 패킷"으로 지칭되는)은, 인그레스 포트에서 또는 인그레스 포트를 통해, 시스템(205)에 도달하거나 또는 시스템(205)에 의해 수신될 수 있다. 몇몇 경우들에 있어, 데이터 패킷들은 대용량(large)일 수 있으며, 데이터 패킷들이 더 작은 조각들(때때로 데이터 "셀(cell)들", "세그먼트(segment)들", 청크(chunk)들", 또는 "부분(portion)들"로 지칭되는)로 도달하거나 또는 프로세싱될 수 있다. 데이터 패킷은 이그레스 포트에서 또는 이그레스 포트를 통해 시스템(205)으로부터 벗어날 수 있다. 다른 변형예들 또는 포트 유형들이 가능하다.
각각의 다이는 하나 이상의 노드들 또는 타일들을 포함할 수 있다. 디바이스(칩 또는 패키지와 같은)는 하나 또는 복수의 다이를 포함할 수 있다. 예를 들어, 디바이스는 2개의 다이를 포함할 수 있으며, 각각의 다이는 디바이스가 4개의 타일들을 포함할 수 있도록 2개의 타일들을 포함한다. 다른 변형예들 및 예들이 가능하다.
예로서, 서버(110)는, 시스템(205)의 노드 B(225)의 이그레스 포트에 연결된 컴퓨터(130)로 발송(send)될 데이터 패킷을 시스템(205)의 노드 A(220)의 인그레스 포트로 발송할 수 있다. 시스템(205)은 노드 A(220)의 인그레스 포트로부터 데이터 패킷을 노드 B(225)의 이그레스 포트로 내부적으로 전송할 수 있다. 시스템(205)은 노드 B(225)의 이그레스 포트로부터 데이터 패킷을 서버(120)로 송신할 수 있다. 다른 변형예들 및 예들이 가능하다.
인그레스 포트들 및 인그레스 노드들은 다양한 방식들로 데이터를 이그레스 노드들 또는 이그레스 포트들로 송신할 수 있다. 저장-및-전달 데이터 전송(store-and-forward data transfer)에 있어, 인그레스 포트는 데이터 패킷의 데이터 세그먼트들을 수신할 수 있다. 인그레스 포트는 전체 데이터 패킷이 수신될 때까지 데이터 세그먼트들을 인그레스 포트 또는 인그레스 노드 내의 메모리 또는 버퍼에 내부적으로 저장할 수 있다. 인그레스 포트에서 데이터 패킷이 수신되고 그것에 대해 예정된 이그레스 포트가 데이터를 수신하기 위해 이용가능하면, 인그레스 포트는 인그레스 포트 또는 인그레스 노드의 내부 메모리로부터 데이터 패킷의 저장된 데이터 세그먼트들을 이그레스 포트로 송신하도록 인가(authorize)될 수 있다. 저장-및-전달 데이터 전송에 있어, 이그레스 포트가 데이터 패킷을 송신하기 이전에 모든 데이터 세그먼트들이 저장될 수 있다.
컷-스루 데이터 전송(cut-through data transfer)에 있어, 인그레스 포트는 데이터 패킷의 데이터 세그먼트들을 수신할 수 있다. 컷-스루 데이터 전송에 있어, 인그레스 포트는, 데이터 세그먼트들을 인그레스 포트 또는 인그레스 노드의 내부 버퍼 또는 메모리에 저장하지 않고, 데이터 세그먼트들을 이그레스 포트로 송신할 수 있다. 컷-스루 데이터 전송에 있어, 이그레스 포트는 인그레스 포트로부터 패킷을 모두 수신하기 이전에 패킷의 부분을 송신할 수 있다. 데이터가 컷-스루 데이터 전송을 사용하여 전송될 때, 데이터가 저장-및-전달 데이터 전송을 사용하여 전송되는 경우보다 더 낮은 지연을 가지고 데이터가 인그레스 포트에 의해 이그레스 포트로 전송될 수 있다.
인그레스 노드의 데이터 전송 컴포넌트들은 결정된 또는 설정된 대역폭(때때로 "아웃고잉(outgoing) 인그레스 노드 대역폭"으로 지칭되는)으로 또는 이를 사용하여 데이터를 전송할 수 있다. 데이터 전송 컴포넌트들은 인그레스 노드의 하나 이상의 데이터 전송 엘러먼트들 또는 인그레스 포트들을 나타낼 수 있다. 저장-및 전달 또는 컷-스루 중 하나를 사용하여 발송될 데이터는, 인그레스 포트들 또는 인그레스 노드들에 의해 사용되는 또는 이용가능한 결정된 대역폭의 양에 기초하거나, 이를 사용하여 또는 이에 따라 전송되거나, 또는 달리 이를 요구할 수 있다.
제어 모듈과 같은, 인그레스 노드의 하나 이상의 컴포넌트들은, 컷-스루 또는 저장-및-전달을 사용하는 것과 같은, 인그레스 노드가 데이터를 전송하기 위하여 사용할 수 있는 아웃고잉 인그레스 노드 대역폭의 할당 또는 양을 결정하도록 구성되거나 또는 이를 결정하도록 동작가능할 수 있다. 대역폭의 할당 또는 양의 결정은 인그레스 노드의 상태 및 인그레스 노드의 하나 이상의 모니터링된 파라미터에 기초하거나 또는 이에 따라 결정될 수 있다.
인그레스 노드, 또는 인그레스 노드의 제어 모듈은 인그레스 노드의 파라미터들 또는 파라미터들의 값들을 모니터링할 수 있다. 예를 들어, 인그레스 노드는 인그레스 노드의 버퍼 필 레벨(buffer fill level)의 값을 추적할 수 있는 모니터링 컴포넌트를 포함할 수 있다. 인그레스 노드는, 예를 들어, 모니터링된 파라미터들 또는 값들에 기초하여, 예를 들어, 데이터 패킷을 저장하지 않고 및/또는 데이터 패킷의 모두가 수신되기 전에, 컷-스루를 사용하여 데이터를 전송하기 위한 아웃고잉 인그레스 노드 대역폭의 할당 또는 양을 결정 및 설정할 수 있다. 추가적으로 또는 대안적으로, 인그레스 노드는, 예를 들어, 데이터 패킷을 전달하기 전에 데이터 패킷을 저장함으로써, 저장-및-전달을 사용하여 데이터를 전송하기 위한 아웃고잉 인그레스 노드 대역폭의 할당 또는 양을 결정할 수 있다. 인그레스 노드 또는 제어 모듈에 의해 결정된 대역폭의 양은, 인그레스 노드가 데이터 전송의 일 유형을 위해 전용하거나(dedicate) 또는 달리 사용하는 인그레스 포트들의 수에 대응하거나 또는 이를 반영할 수 있다. 추가적으로 또는 대안적으로, 인그레스 노드 또는 제어 모듈에 의해 결정된 대역폭의 양은, 인그레스 노드가 데이터 전송의 하나 이상의 유형들을 사용하여 데이터를 전송하기 위한 아웃고잉 인그레스 노드 대역폭의 부분에 대응하거나 또는 이를 반영할 수 있다.
도 3은 데이터 패킷의 전송을 위한 예시적인 시스템(305)의 블록도이다. 시스템(305)은 시스템(105)과 유사하거나, 동일하거나, 또는 상이할 수 있다. 도면은 시스템의 다양한 노드들의 상호연결들을 포함하는 시스템 패브릭(system fabric)을 나타내는, 시스템(305)의 예시적인 전개도(unfolded view)를 도시한다. 시스템(305)은 완전 메시 토폴로지일 수 있다. 인그레스 노드들(310~315)은 이그레스 노드들(320~325)과 통신할 수 있거나 또는 이들과 연결될 수 있다.
간명함을 위하여, 인그레스 노드들(310~315)이 단지 하나의 인그레스 포트만을 포함하고, 및 이그레스 노드들(320~325)이 단지 하나의 이그레스 포트만을 포함하는 것으로 가정하여, 시스템(305)이 묘사될 수 있다. 그러나, 노드들(310~315 및 320~325)이 2개 이상의 포트들을 포함할 수 있다는 것이 이해되어야 한다. 인그레스 노드들(310~315)(또는 이그레스 노드들(320~325)) 중 하나 이상이 복수의 포트들을 포함할 수 있으며, 인그레스(또는 이그레스) 노드들이 이그레스(또는 인그레스) 노드들의 포트들과 통신하도록 구성되거나 또는 통신하도록 동작가능할 수 있다.
시스템(305)은, 인그레스 노드 A(310), 인그레스 노드 B(311), 인그레스 노드 C(312), 인그레스 노드 D(313), 인그레스 노드 E(314), 및 인그레스 노드 F(315)와 같은, 인그레스 포트들을 갖는 6개의 인그레스 노드들, 및 이그레스 노드 A(320), 이그레스 노드 B(321), 이그레스 노드 C(322), 이그레스 노드 D(323), 이그레스 노드 E(324), 및 이그레스 노드 F(325)와 같은, 6개의 이그레스 노드들을 포함할 수 있다. 다른 변형예들에 있어, 시스템(305)은 더 많거나 또는 더 적은 인그레스 노드들 또는 이그레스 노드들을 가질 수 있다.
인그레스 노드들(310~315)의 하나 이상의 인그레스 포트들 및 하나 이상의 이그레스 노드들(320~325)의 이그레스 포트들은 하나 이상의 디바이스들과 통신하거나 또는 이에 연결되도록 구성되거나 또는 동작가능할 수 있다. 인그레스 노드들(310~315)과 연관된 인그레스 포트들은 서버들의 뱅크 내의 서버에 연결될 수 있다.
노드들 또는 타일들은 디바이스에 연결될 수 있으며, 인그레스 포트 및 이그레스 포트 둘 모두를 포함할 수 있다. 노드는 인그레스 포트 및 이그레스 포트 둘 다를 포함하거나 또는 이들로서 동작할 수 있으며, 하나의 디바이스에 연결될 수 있다.
인그레스 노드들(310~315)의 인그레스 포트들은, 데이터(300~305)와 같은, 신호, 데이터 패킷 또는 다른 정보를 수신하도록 구성되거나 또는 동작가능할 수 있다. 인그레스 노드 A(310)의 인그레스 포트는 인그레스 노드 A(310)와 연결된 서버로부터 데이터(300)를 수신하도록 구성되거나 또는 동작가능할 수 있다. 인그레스 노드 C의 인그레스 포트는 인그레스 노드 C(312)의 인그레스 포트에 연결된 서버로부터 데이터(302)를 수신하도록 구성되거나 또는 동작가능할 수 있다.
수신된 데이터(300~305)의 조각은, 이그레스 노드 A(320), 이그레스 노드 B(321), 이그레스 노드 C(322), 이그레스 노드 D(323), 이그레스 노드 E(324), 및 이그레스 노드 F(325) 중 임의의 이그레스 노드의 이그레스 포트와 같은, 하나 이상의 이그레스 포트들로 보내지거나, 향해지거나, 또는 달리 이를 위해 의도될 수 있다. 몇몇 경우들에 있어, 수신된 데이터(300~305)는 이그레스 노드들(320~325) 상의 이그레스 포트들 중 하나 이상을 통해 시스템(305)에 연결된 하나 이상의 디바이스들로 보내지거나, 향해지거나, 또는 달리 이를 위해 의도될 수 있다. 예를 들어, 데이터(300)는 디바이스에 의해 인그레스 노드 A(310)의 인그레스 포트로 발송될 수 있으며, 이그레스 노드 D(323)를 통해 시스템(305)에 연결된 디바이스로 또는 이그레스 노드 D(323)의 이그레스 포트로 송신되도록 예정되거나 또는 의도되거나, 또는 이들로 발송될 수 있다.
일부 시스템들에 있어, 수신된 데이터(300~305)는, 데이터가 이로 보내지거나, 이로 향해지거나, 또는 달리 이로 발송되도록 의도되는 이그레스 노드(320~325)의 이그레스 포트를 나타낼 수 있는 식별자를 포함하거나 또는 명시(specify)할 수 있다. 데이터의 수신된 패킷은, 목적지 노드 또는 포트를 주소분해(resolve)하기 위해 노드 내의 패킷 프로세싱 유닛 또는 패킷 프로세싱 로직에 의해 사용될 수 있는 정보를 포함할 수 있다. 예를 들어, 데이터 패킷의 제 1 데이터 세그먼트는, 데이터 세그먼트 및 그 데이터 패킷에 대한 다른 데이터 세그먼트들의 일부 또는 전부에 대한 목적지 이그레스 포트를 나타낼 수 있는 하나 이상의 라벨(label)들 또는 식별자들을 포함할 수 있다. 다른 시스템들에 있어, 데이터(300~305)를 수신하는 인그레스 포트 또는 인그레스 노드는, 이로 데이터가 발송되도록 의도된 이그레스 노드(320~325)의 이그레스 포트를 결정하기 위하여 하나 이상의 기능들 또는 알고리즘들을 수행할 수 있다. 예를 들어, PPU는 목적지 어드레스 또는 목적지 이그레스 포트를 주소분해할 수 있다. 데이터 패킷은 하나의 노드 또는 포트로 향해질 수도 있으며, 또는 2 이상의 목적지 노드 또는 포트를 가질 수 있는 멀티캐스트(multicast) 패킷일 수 있다.
인그레스 포트들 또는 인그레스 노드들(310~315)은 수신된 데이터(300~305)를 프로세싱하고, 데이터(300~305)가 발송되어야 하는 이그레스 포트 또는 이그레스 노드(320~325)를 결정할 수 있다. 데이터 패킷은 그 뒤 수신 인그레스 포트 또는 인그레스 노드로부터, 데이터 패킷이 의도되었던 목적지 이그레스 포트 또는 이그레스 노드로 발송될 수 있다. 일부 시스템들에 있어, 인그레스 노드들(310~315)의 임의의 인그레스 포트에서 수신된 데이터 패킷은, 시스템(305)의 이그레스 노드들(320~325)의 이그레스 포트들 중 임의의 이그레스 포트에 지정되거나, 이로 송신되거나, 및/또는 달리 이로 발송될 수 있다. 다른 시스템들에 있어, 몇몇 인그레스 포트들에서 수신된 데이터 패킷은 이그레스 포트들 중 단지 하나 또는 일부로만 송신되도록 제한될 수 있다. 다른 변형예들이 가능하다.
데이터 패킷은 그 후 향해진 이그레스 포트 또는 이그레스 노드에 의해 수신될 수 있다. 이그레스 포트 또는 이그레스 노드(320~325)는 데이터에 대하여 하나 이상의 프로세싱들을 수행할 수 있으며, 그 뒤 데이터를 출력 데이터(330~335)로서 이그레스 노드의 목적지 이그레스 포트에 접속된 하나 이상의 디바이스들로 출력할 수 있다. 다른 변형예들 및 예들이 가능하다.
포트는, 포트와 연관된 하나 이상의 서비스의 클래스(class of service), 또는 우선순위 레벨을 가질 수 있다. 서비스들의 클래스는 포트로부터 또는 포트로의 데이터 전송들에 대한 그들 자체의 독립적인 큐(queue)들을 가질 수 있다. 하나의 예로서, 포트는 각각이 독립적인 데이터 큐를 갖는 8개의 서비스들의 클래스, 또는 우선순위들을 가질 수 있다. 다른 변형예들이 가능하다.
도 4는 데이터 전송을 위한 시스템의 예시적인 노드의 블록도이다. 도 4의 노드 A(220)는 시스템(205)의 노드 A(220)일 수 있으며, 저장-및-전달 전송을 사용하여 시스템(205)의 하나 이상의 다른 포트들 또는 노드들로부터 데이터 패킷들을 수신하거나, 또는 이들로 데이터 패킷들을 발송하도록 동작할 수 있다. 노드 A(220)는 인그레스 포트 및 이그레스 포트 중 하나 또는 둘 다를 포함하거나, 또는 이들 중 하나 또는 둘 다로서 동작할 수 있다.
시스템(205)은 다양한 방식들로 그리고 다양한 데이터 전송 유형들을 사용하여 시스템(205)을 통해 노드들 간에 데이터 패킷들을 송신하도록 동작할 수 있다. 저장-및-전달에 있어, 시스템(205)의 노드는, 데이터 패킷을 하나의 노드로부터 다른 노드로 송신하기 전에, 시스템(205) 또는 노드의 메모리 또는 버퍼에 데이터 패킷의 세그먼트들을 저장함으로써 데이터를 프로세싱할 수 있다.
저장-및-전달에 있어, 노드 A(220)는 인그레스 포트이거나 또는 인그레스 포트로서 동작할 수 있으며, 네트워크 인터페이스에서 또는 네트워크 인터페이스를 통해서와 같이, 노드 A(220)에 연결되거나 또는 이와 통신하는 하나 이상의 디바이스들로부터 데이터 패킷들을 수신할 수 있다. 예를 들어, 노드는 초당 1기가비트의 데이터를 수신하도록 구성된 12개의 포트들을 가질 수 있다. 다른 변형예들이 가능하다.
노드 A(220)에서 수신된 데이터 패킷들은 시스템(205)의 하나 이상의 다른 노드 또는 포트들("목적지 타일들", "목적지 노드들", "목적지 이그레스 포트들", 또는 "목적지 포트들"로서 지칭될 수 있는)로 향해지는 것으로 지정될 수 있다. 서버(110)는 시스템(205)의 노드 A(220)의 인그레스 포트에 연결될 수 있으며, 노드 B(225)의 이그레스 포트에 접속된 컴퓨터(130)와 같은, 시스템(205)의 상이한 노드의 이그레스 포트에 연결될 수 있는 하나 이상의 다른 디바이스들로 송신될 데이터를 노드 A(220)의 인그레스 포트로 송신할 수 있다. 데이터에 대한 목적지 노드 또는 목적지 포트는 노드 B(225)의 이그레스 포트일 수 있다.
패킷 수신시, 인그레스 패킷 프로세싱 유닛(packet processing unit; "PPU)1(410)과 같은, 패킷 프로세싱 유닛(PPU)에 의해 또는 이를 이용해 패킷 프로세싱이 수행될 수 있다. IPPU1(410)은, 예를 들어, 목적지 노드(들) 및/또는 포트(들)이 결정되거나 또는 주소분해될 수 있는 초기 패킷 프로세싱 단계를 수행할 수 있다. 그 후, 데이터 패킷들 또는 세그먼트들이 인그래스 트래픽 관리자(ingress traffic manager; "ITM")(415)로 전달될 수 있다.
노드 A(220)는 다양한 시점들에서 그리고 다양한 조건들에 따라 데이터 패킷을 노드의 이그레스 포트로 발송 또는 송신할 준비가 되어 있을 수 있다. 예를 들어, 일부 시스템들에 있어, 데이터 패킷들은 대용량일 수 있으며, 인그레스 포트에서 데이터 세그먼트들로 수신될 수 있고, 데이터 세그먼트들은 그들이 수신될 때 인그레스 포트에 의해 내부적으로 프로세싱될 수 있다. 일부 저장-및-전달 데이터 전송들 동안과 같은, 몇몇 경우들에 있어, 수신된 데이터 세그먼트들은 데이터 패킷의 모든 데이터 세그먼트들의 수신이 완료될 때까지 및/또는 노드가 데이터 패킷을 이그레스 포트로 발송할 준비가 될 때까지 ITM(415)에 저장될 수 있다. 일부 시스템들에 있어, 인그레스 포트는 패킷을 송신하기 전에 패킷에 대한 하나 이상의 유효성 검사(validity check)들을 수행할 수 있다. 데이터 패킷이 유효하지 않은 경우, 인그레스 포트는 패킷을 드롭하거나 도는 송신하지 않을 수 있다. 일부 컷-스루 데이터 전송들 동안과 같은, 다른 경우들에 있어, 데이터 패킷들이 ITM(415)에 저장되지 않을 수 있다.
다른 예로서, 이그레스 포트가 데이터 세그먼트들 또는 데이터 패킷들을 수신할 준비가 될 때까지, 노드 A(220)의 인그레스 포트가 수신된 데이터 세그먼트들 또는 전체 데이터 패킷들을 ITM(415) 내에 저장할 수 있다. 복수의 인그레스 포트들은 이그레스 포트들로 발송될 데이터 패킷들을 가질 수 있다. 이러한 경우들에서, 이그레스 포트가 이미 하나의 인그레스 포트로부터 데이터를 수신하고 있는 경우, 이그레스 포트는 노드 A(220)의 인그레스 포트로부터 데이터를 수신하도록 구성되지 않거나 또는 동작가능하지 않을 수 있다. 다른 예로서, 일부 시스템들에 있어, 이그레스 포트는 이전의 시간 또는 클럭 사이클(clock cycle)에서 수신된 데이터(저장-및-전달 데이터와 같은)를 가질 수 있으며, 데이터를 프로세싱하거나 또는 달리 데이터를 하나 이상의 디바이스들로 송신해야할 필요가 있을 수 있다. 이러한 시스템들 중 일부에 있어, 이그레스 포트는 노드 A(220)의 인그레스 포트로부터 데이터 패킷을 수신할 수 없거나 또는 수신하도록 동작가능하지 않을 수 있다. 이그레스 포트는 추가적으로 또는 대안적으로 이그레스 포트로의 데이터의 흐름(flow)을 제한(때때로 "데이터 흐름 제어(data flow controlled)"로 지칭되는)하기 위하여 흐름 제어(flow control)되거나 또는 달리 제어될 수 있다. 예를 들어, 이그레스 포트가 연결되거나 또는 통신하는 디바이스가 풀(full)이거나, 혼잡하거나, 또는 달리 더 이상 데이터를 받아들일 수 없고, 이러한 상태를 이그레스 포트에 경고하는 경우, 이그레스 포트가 흐름 제어될 수 있다. 이러한 시스템들 중 일부에 있어, 이그레스 포트는 노드 A(220)의 인그레스 포트로부터 데이터를 수신하지 못하거나 또는 수신하도록 동작가능하지 않을 수 있다. 이그레스 포트가 하나 이상의 서비스들의 클래스 또는 우선순위들과 연관된 경우, 이그레스 포트의 흐름 제어가 서비스의 클래스 단위마다 적용될 수 있다. 예를 들어, 이그레스 포트가 4개의 서비스들의 클래스를 가지는 경우, 포트가 서비스의 제 1 클래스에 대해 흐름 제어되고, 다른 3개의 서비스들의 클래스에 대해서는 흐름 제어되지 않을 수 있다. 다른 변형예들이 가능하다.
이러한 그리고 다른 시스템들에 있어, 이그레스 포트가 유휴(idle)일 때와 같이, 이그레스 포트가 데이터를 수신할 수 있을 때까지 데이터 패킷이 ITM(415)에 저장될 수 있다. 일부 경우들에 있어, 데이터 패킷의 모두가 수신되고 이그레스 포트가 데이터 패킷을 수신할 준비가 될 때와 같이, 인자들의 하나 이상의 조합이 충족될 때까지, 노드 A(220)의 인그레스 포트는 데이터 패킷을 발송할 준비가 되지 않을 수 있다. 다른 변형예들이 가능하다.
저장-및-전달에 있어, 노드 A(220)의 인그레스 포트가 ITM(415)에 저장된 데이터 패킷을 목적지 이그레스 포트로 발송 또는 송신할 준비가 될 때, 데이터 패킷이 먼저 하나 이상의 패킷 프로세싱 유닛들로 발송될 수 있으며, 패킷 프로세싱 유닛들은 이그레스 포트로의 송신 전에 데이터 패킷에 대하여 추가적인 프로세싱을 수행할 수 있다. 예를 들어, 데이터는 먼저 데이터에 대하여 하나 이상의 프로세스들을 수행할 수 있는 IPPU2(420)로 발송되거나 또는 이를 거쳐갈 수 있다. 그 뒤 데이터는 이러한 추가적인 프로세싱 후, 타일 패브릭 어댑터(tile fabric adaptor) 또는 다른 컴포넌트를 통해서 또는 이에 의해서와 같이, 시스템(205)의 이그레스 노드의 목적지 이그레스 포트로 송신될 수 있다. 다른 시스템들에 있어, 데이터 패킷은 추가적인 패킷 프로세싱 없이 송신될 준비가 될 수 있다.
노드 A(220)는 또한, 이그레스 포트를 포함하거나, 또는 달리 이그레스 포트로서 동작할 수 있다. 시스템의 상이한 포트 또는 노드에 의해 발송된 또는 송신된 데이터 패킷이 노드 A(220)의 이그레스 포트에 의해 수신될 수 있다. 수신되면, 데이터 패킷은, 이그레스 PPU1("EPPU")(430)과 같은, 하나 이상의 패킷 프로세싱 유닛들로 송신 또는 발송될 수 있으며, 패킷 프로세싱 유닛은 데이터 패킷을 이그래스 트래픽 관리자(egress traffic manager; "ETM")(435)로 전달하기 전에 수신된 데이터 패킷들에 대해 하나 이상의 프로세스들을 수행할 수 있다. 예를 들어, EPPU1(430)은 모든 목적지 이그레스 포트들을 결정하기 위하여 목적지 멀티캐스트(multicast) 주소분해를 수행할 수 있다.
ETM(435)은 이그레스 포트로부터 데이터 패킷들, 또는 데이터 세그먼트들을 수신할 수 있는 메모리, 버퍼, 또는 저장장치(storage)일 수 있다. ETM(435)은, 노드 A(220)의 이그레스 포트가 노드 A(220)에 연결된 디바이스(서버(110)와 같은)에 데이터 패킷을 발송 또는 송신할 준비가 될 때까지, 수신된 데이터 패킷들 또는 데이터 세그먼트들을 저장할 수 있다. 일부 시스템들에 있어, 노드 A(220)의 이그레스 포트는, 전체 데이터 패킷이 노드 A(220)의 이그레스 포트에서 수신될 때까지, 노드 A(220)에 연결된 디바이스로 데이터 패킷을 발송 또는 송신할 준비가 되지 않을 수 있다. 일부 시스템들에 있어, 노드 A(220)의 이그레스 포트는, 디바이스가 데이터 패킷을 수신할 준비가 되었다는 것을 나타낼 때까지, 노드 A(220)에 연결된 디바이스로 데이터 패킷을 발송 또는 송신할 준비가 되지 않을 수 있다. 일부 시스템들에 있어, 노드 A(220)의 이그레스 포트는, 이러한 또는 다른 조건들의 하나 이상의 조합들이 충족될 때까지, ETM(435)에 저장된 데이터 패킷을 발송할 준비가 되지 않을 수 있다.
노드 A(220)의 이그레스 포트가 데이터 패킷을 디바이스로 발송할 준비가 될 때, 데이터 패킷이 ETM(435)으로부터, EPPU2(440)와 같은 하나 이상의 패킷 프로세싱 유닛들로 발송될 수 있으며, 패킷 프로세싱 유닛은 이그레스 포트로부터 데이터 패킷들을 송신하기 전에 데이터 패킷들에 대하여 몇몇 프로세싱을 수행할 수 있다. 그 후, 데이터는 인터페이스에 의해 또는 인터페이스를 통해 디바이스로 송신될 수 있다. 다른 예들에 있어, 데이터 패킷에 대한 추가적인 프로세싱 없이, 데이터 패킷이 ETM(435)으로부터 직접적으로 디바이스로 발송될 수 있다.
일부 시스템들에 있어, 노드 A(220)와 같은 노드 또는 타일은 추가적으로 또는 대안적으로 하나 이상의 제어기들 또는 제어 모듈들을 포함할 수 있다. 노드 또는 타일의 포트는 제어기 또는 제어 모듈들을 가질 수 있다. 제어기들, 제어 컴포넌트들, 또는 제어 모듈들은 노드 A(220)의 컴포넌트들, 또는 다양한 다른 컴포넌트들 중 하나 이상을 포함할 수 있다. 제어기들 또는 제어 모듈들은 다양한 기능들 또는 태스크(task)들을 수행할 수 있다. 예를 들어, 제어 모듈들은 수신된 데이터 세그먼트 또는 데이터 패킷으로부터 목적지 이그레스 포트를 분석하고 결정할 수 있다. 다른 예로서, 제어 모듈은 노드 또는 노드의 포트의 기능 또는 성능에 영향을 주거나 또는 이를 제어할 수 있는, 하나 이상의 기능들을 수행하거나, 하나 이상의 알고리즘을 실행하거나, 및/또는 하나 이상의 결정들을 내릴 수 있다. 제어기들 또는 제어 모듈들은 다양한 다른 기능들 또는 태스크들을 수행할 수 있다.
저장-및-전달 데이터 전송과 대조적으로, 일부 시스템들에 있어, 데이터 패킷들이 컷-스루 데이터 전송(때때로, "컷-스루", "컷-스루 스위칭", 또는 "컷-스루 데이터 전송"으로 지칭되는)을 이용하여 노드 A(220)의 인그레스 포트로부터 프로세싱되고 송신될 수 있다. 컷-스루을 이용하면, 부분적인 데이터 프레임들 또는 패킷들이, 목적지 주소가 프로세싱되자마자 바로와 같이, 전체 프레임의 수신이 완료되기 전에 전달될 수 있다. 컷-스루를 이용하면, ITM(415)과 같은 인그레스 노드의 버퍼 또는 메모리에 저장되지 않고, 인그레스 포트 또는 인그레스 노드에 의해 데이터 패킷의 데이터 세그먼트들이 이그레스 포트 또는 이그레스 노드로 전송될 수 있다.
컷-스루에 있어, 데이터 세그먼트들 또는 데이터 패킷들이 노드 A(220)에 의해 수신될 수 있다. 그러나, 컷-스루에 있어, 데이터 세그먼트들 또는 데이터 패킷은, 완전한(full) 데이터 패킷이 인그레스 노드에 도달하는 것을 기다리지 않고, 목적지 노드를 결정하기 위한 IPPU1(410)에서의 초기 패킷 프로세싱 후, 패브릭 대역폭(fabric bandwidth)에 대한 액세스를 획득할 수 있다. 예를 들어, 데이터 패킷의 모든 데이터 세그먼트들이 수신되는 것을 기다리지 않고, 목적지 노드의 수령 및 주소분해시 수신된 데이터 세그먼트들이 즉각적으로 노드 A(220)의 인그레스 포트에 의해 수령(recipient) 노드의 이그레스 포트로 발송될 수 있다. 데이터 패킷의 다른 데이터 세그먼트들 모두가 노드 A(220)의 인그레스 포트에서 수신이 완료되거나 또는 노드 A(220)의 인그레스 포트에 의해 처리가 완료되기 전에, 데이터 패킷의 데이터 세그먼트가 노드 A(220)의 인그레스 포트에 의해 수령 노드로 송신될 수 있다.
몇몇 경우들에 있어, 수신된 데이터 세그먼트들이 ITM(415)과 같은 임의의 물리적인 메모리 또는 버퍼에 저장되지 않고 이그레스 포트로 송신될 수 있다. 대안적으로, 하나 이상의 데이터 세그먼트들이 이그레스 포트로의 송신 전에 메모리에 저장될 수 있다. 컷-스루를 사용하여 송신되는 데이터가 물리적인 메모리 또는 버퍼를 바이패스(bypass)하기 때문에, 메모리 또는 버퍼로부터 데이터를 판독하기 위한 시간이 필요하지 않거나 소요되지 않을 수 있다. 추가적으로, 일부 데이터 세그먼트들이 전체 데이터 패킷의 수령 전에 전송될 수 있음에 따라, 컷-스루 데이터 전송들은 더 낮은 지연을 생성할 수 있다. 이와 같이, 인그레스 포트들과 이그레스 포트들 사이의 데이터 패킷들의 전송에 대하여, 컷-스루 데이터 전송들은 저장-및-전달 데이터 전송들보다 지연들을 낮출 수 있으며 및/또는 더 빠르고 더 효율적일 수 있다.
인그레스 포트들 또는 노드들 및 이그레스 포트들 또는 노드들은 "저장-및-전달 모드"에서 또는 "컷-스루 모드"에서 동작하는 것으로서 언급될 수 있다. 저장-및-전달 모드에서 동작할 때, 인그레스 포트들은 저장-및-전달 데이터 전송을 사용하여 데이터를 목적지 포트로 송신할 수 있고, 이그레스 포트들은 저장-및-전달 데이터 전송을 사용하여 데이터를 인그레스 포트로부터 수신할 수 있다. 컷-스루 모드에서 동작할 때, 인그레스 포트들은 컷-스루 데이터 전송을 사용하여 데이터를 목적지 포트로 송신할 수 있고, 이그레스 포트들은 컷-스루 전송을 사용하여 데이터를 인그레스 포트로부터 수신할 수 있다. 다른 용어들 및 변형예들이 가능하다.
데이터가 하나 이상의 아키텍처들에 따라 인그레스 노드와 이그레스 노드 사이에서 송신 또는 전송될 수 있다. 풀 아키텍처(pull architecture)에 있어, 이그레스 노드는, 이그레스 노드로 발송되도록 허용될 수 있는 데이터의 허용량(allowance) 또는 크레딧을 하나 이상의 인그레스 노드들에 제공할 수 있다. 이그레스 노드는, 이그레스 노드의 프로세싱 레이트(rate)와 동일하거나 또는 거의 근접한 허용량 또는 크레딧을 하나 이상의 인그레스 노드들에 제공할 수 있다. 풀 아키텍처의 인그레스 노드에 제공된 허용량에 따라 인그레스 노드로 제공되는 트래픽 또는 데이터는 스케줄링 트래픽(scheduled traffic)으로서 지칭될 수 있다.
푸쉬 아키텍처(push architecture)에 있어, 인그레스 노드는 데이터 세그먼트들 또는 패킷들을 하나 이상의 이그레스 노드들로 전달할 수 있다. 데이터 세그먼트들 또는 패킷들은, 인그레스 노드에 대하여 가능한 최고 레이트(highest rate)로와 같은, 고 레이트로 전달될 수 있다. 푸쉬 아키텍처에 있어, 이그레스 노드는 복수의 인그레스 노드들로부터 데이터를 수신할 수 있고, 데이터의 수령 레이트가 이그레스 노드에 대한 프로세싱 레이트를 초과할 수 있다. 데이터의 도달 레이트가, 이그레스 노드의 최대 프로세싱 레이트와 같은, 임계 값을 초과할 때, 이그레스 노드는 인그레스 노드로 트래픽 발송을 중지할 것을 명령할 수 있거나, 또는 달리 데이터의 흐름을 제어("흐름 제어")할 수 있다. 푸쉬 아키텍처에 따라 인그레스 노드에 의해 이그레스 노드로 제공되는 트래픽 또는 데이터는 언스케줄링 트래픽(unscheduled traffic)으로서 지칭될 수 있다. 언스케줄링 트래픽의 예는 컷-스루 데이터 전송을 사용하여 이그레스 노드로 전송되는 데이터("컷-스루 데이터")이거나 또는 이를 포함할 수 있다. 데이터 전송 방식들의 다른 아키텍처들이 가능할 수 있다.
인그레스 노드는 결정된 전송 레이트로, 또는 결정된 대역폭에 따라, 결정된 대역폭을 사용하여, 또는 결정된 대역폭으로 데이터를 전송하도록 구성되거나 또는 동작할 수 있다. 결정된 대역폭은, 이를 통해 인그레스 노드가 데이터를 하나 이상의 이그레스 노드들로 송신할 수 있는, 대역폭 및/또는 시간의 유한한 양(finite amount)이거나 또는 이를 나타낼 수 있다. 포트들은 유한한 수신 및 송신 대역폭을 가질 수 있으며, 반면 시스템(205)은 시스템의 포트들의 대역폭들을 결합함(combining)으로써 달성되는 결합 대역폭(aggregate bandwidth)을 가질 수 있다. 일 예로서, 시스템은 초당 100 기가비트의 대역폭을 갖는 4개의 포트들을 가질 수 있으며, 시스템(205)은 초당 400 기가비트의 결합 대역폭을 가질 수 있다.
인그레스 노드 또는 인그레스 포트들은 제 1 레이트로 데이터를 수신하고, 제 2 레이트로 데이터를 송신할 수 있다. 인그레스 노드는 추가적으로 ITM(415)과 같은 버퍼에 데이터를 저장할 수 있다. 예를 들어, 인그레스 노드는, 인그레스 노드가 한번에 프로세싱할 수 있는 데이터를 초과하는 데이터를 저장할 수 있다. 버퍼는, 인그레스 노드에 대하여 주어진 시간에서 이용가능한 대역폭의 양보다 큰 것과 같은, 다양한 크기일 수 있다.
인그레스 노드, 또는 인그레스 노드의 제어 모듈은 인그레스 노드의 인그레스 포트들을 제어할 수 있다. 인그레스 노드의 제어 모듈은, 예를 들어, 인그레스 노드 또는 인그레스 노드의 인그레스 포트들의 자원 할당을 결정하고, 각각의 이그레스 포트가 데이터를 어떻게 그리고 어떠한 이그레스 포트로 송신 또는 전달할지를 제어할 수 있다.
도 5는 데이터 전송을 위한 예시적인 시스템(505)의 블록도이다. 시스템(505)은 인그레스 노드(510) 및 2개의 이그레스 노드들 A 및 B(530, 535)를 포함할 수 있다. 시스템(505)은 시스템(105 및 205)과 유사하거나 또는 달리 비슷하다. 명료성을 위하여 시스템(505) 내에 하나의 인그레스 노드와 2개의 이그레스 노드들이 도시되었으나, 다른 시스템들에 있어, 더 많거나 또는 더 적은 인그레스 또는 이그레스 노드들이 포함될 수 있다.
인그레스 노드(510)는 노드 A(220), 노드 B(225), 노드 C(230), 노드 D(235), 또는 인그레스 노드들(310~315)과 유사하거나, 동일하거나, 또는 달리 비슷할 수 있다. 인그레스 노드(510)는 노드 A(220)의 컴포넌트들 중 하나 이상을 포함할 수 있다. 인그레스 노드(510)는 하나 이상의 인그레스 포트들을 가질 수 있다.
인그레스 노드(510)는 추가적으로 또는 대안적으로 메모리 또는 버퍼(515)를 포함할 수 있다. 버퍼(515)는 ITM(415)과 동일하거나, 또는 이의 부분이거나, 또는 이를 포함할 수 있거나, 또는 ITM(415)과 상이한 버퍼일 수 있다. 버퍼(515)는 데이터(550)와 같은 데이터를 저장하도록 구성되거나 또는 동작가능할 수 있다. 데이터(550)는 데이터 세그먼트 또는 데이터 청크, 데이터 패킷, 데이터의 비트 또는 바이트, 또는 다양한 다른 데이터 또는 정보를 포함할 수 있다. 인그레스 노드(510)의 버퍼(515)는, 저장-및-전달 데이터 전송을 사용하는 것과 같이, 전체 데이터 패킷이 인그레스 노드(510)에 의해 수신될 때 하나 이상의 이그레스 노드들 또는 이그레스 포트들로 발송되도록 예정된, 데이터 패킷, 또는 데이터 패킷의 데이터 세그먼트들을 저장하도록 구성되거나 또는 동작가능할 수 있다. 인그레스 노드(510)의 하나 이상의 인그레스 포트는 데이터(550)를 저장하기 위한 독립적인 버퍼(515)를 가질 수 있으며, 또는 인그레스 노드(510)의 일부 또는 모든 포트들에 대하여 데이터(550)를 저장할 수 있는 하나의 버퍼(515)가 존재할 수도 있다. 다른 변형예들이 가능하다.
인그레스 노드(510)는 데이터 또는 데이터 패킷들의 2개 이상의 상이한 세트들을 동시에 수신 및/또는 저장하도록 구성되거나 및/또는 동작가능할 수 있으며, 이들 중 하나 이상이 상이한 이그레스 포트 또는 이그레스 노드로 향해질 수 있다. 인그레스 노드는 이그레스 노드 A(530)와 같은 제 1 이그레스 노드로 향해지는 데이터(550)를 수신 및 저장할 수 있다. 데이터(550)는, 데이터(550)의 모든 세그먼트들이 인그레스 노드(510)에 의해 수신 및/또는 저장이 완료될 때 인그레스 노드(510)가 이그레스 노드 A(530)로 송신하기 위해 저장-및-전달 데이터로서 저장할 수 있는, 데이터 패킷일 수 있다. 인그레스 노드(510)는 또한 또는 대안적으로, 데이터(560)와 같은, 다른 상이한 데이터 또는 데이터 패킷의 세트를 수신할 수 있다. 데이터(560)가 인그레스 노드(510)의 인터페이스(530)에서 인그레스 노드(510)에 수신될 수 있다. 데이터(560)는, 데이터(550)가 수신되는 동안 또는 버퍼(515)에 저장되어 있는 동안 수신될 수 있다. 데이터(560)는 이그레스 노드 B(535)로 향해지는 데이터 패킷일 수 있다.
인그레스 노드(510)는, 이그레스 노드 B(535)가 유휴인지, 적절(eligible)한지, 이용가능한지, 또는 달리 컷-스루 데이터 전송을 사용하여 인그레스 노드(510)로부터 데이터(560)와 같은 데이터를 수신할 수 있는지에 대한 지시(indication)를 식별, 결정, 또는 수신할 수 있다. 인그레스 노드(510)는, 이그레스 노드 B(535)로의 데이터(560)의 송신이 이그레스 노드 B(535)에서 임의의 데이터 충돌들을 야기할 것인지 여부를 결정할 수 있고 인그레스 노드(510)로 통신할 수 있는 중앙 제어 또는 결정 시스템으로부터, 지시를 수신할 수 있다. 대안적으로 또는 추가적으로, 인그레스 노드(510)가 다양한 방식들로 이그레스 노드(535)가 유휴인지, 이용가능한지, 또는 달리 컷-스루 데이터 전송을 통해 데이터를 수신할 수 있는지 여부를 결정할 수 있다. 인그레스 노드(510)가 이그레스 노드(535)가 유휴, 이용가능, 또는 달리 컷-스루 데이터 전송을 통해 데이터를 수신할 수 있다고 결정할 때, 인그레스 노드(510)는, 인그레스 노드(510)가 데이터(560)에 대한 전체 데이터를 수신하지 않고, 데이터(560)가 인그레스 노드(510)의 임의의 버퍼 또는 메모리에 저장되지 않으면서, 이그레스 노드 B(535)가 데이터(560)의 전송을 수신하도록 구성되거나 또는 동작가능할 수 있다고 판단할 수 있다.
이그레스 노드 B(535)로의 데이터(560) 전송에 있어, 인그레스 노드(510)는 인그레스 노드(510)의 아웃고잉 대역폭의 일부 또는 전부를 필요로 하거나, 사용하거나, 요구하거나, 또는 달리 점유할 수 있다. 인그레스 노드(510)의 아웃고잉 대역폭은 인그레스 노드(510)가 다른 이그레스 노드 또는 로컬 이그레스 포트로의 전송에 사용할 수 있는 대역폭일 수 있다. 그러나, 데이터(550)보다 높은 우선순위를 갖는 데이터(560)의 즉각적인 송신은 데이터(550)가 버퍼(515)에 더 오래 저장되는 것을 초래할 수 있으며, 컷-스루 데이터 전송을 사용하여 이그레스 노드 B(535)와 같은 이그레스 노드로 송신될 수 있는 데이터(560)와 같은 데이터를 인그레스 노드(510)가 수신하는 동안, 데이터(550)가 이그레스 노드 A(530)로 송신되는 것을 지연시킬 수 있다.
인그레스 노드(510)는 제어기, 제어 컴포넌트, 또는 제어기 모듈(520)을 포함할 수 있다. 제어 모듈(520)은 하나 이상의 다른 기능들 또는 태스크들을 수행할 수 있으며, 하나 이상의 알고리즘들을 수행할 수 있고, 인그레스 노드 또는 인그레스 포트의 하나 이상의 측면들, 기능들, 동작들, 또는 데이터 전송들을 제어할 수 있다.
제어 모듈(520)은 인그레스 노드(510)의 자원들의 할당을 제어할 수 있다. 제어 모듈(520)은 하나 이상의 데이터 전송들에 사용될 수 있는 인그레스 노드(510)의 아웃고잉 인그레스 노드 대역폭의 하나 이상의 양(amount)들을 할당, 결정, 및 설정할 수 있다. 제어 모듈(520)은 인그레스 노드(510)의 하나 이상의 모니터링된 파라미터들 및/또는 인그레스 노드 상태에 따라 또는 이에 기초하여 인그레스 노드 대역폭의 양을 결정할 수 있다. 제어 모듈(520)은, 과도한 또는 막연한 레이턴시(latency) 또는 지연을 발생시키지 않고 저장된 데이터(550)를 이그레스 노드 A(530)로 발송함에 있어서의 필요성 및 공정성과, 이그레스 노드 B(535)로의 컷-스루 데이터(560)의 즉각적인 발송의 필요성 및 효율성 간의 균형을 효율적으로 맞출 수 있다. 추가적으로 또는 대안적으로, 제어 모듈(520)은, 수신된 데이터 세그먼트 또는 데이터 패킷으로부터의 목적지 이그레스 포트의 분석 및 결정, 또는 목적지 이그레스 노드 또는 포트가 유휴인지, 이용가능한지, 또는 달린 컷-스루 데이터 전송을 사용하여 인그레스 노드(510)로부터 데이터를 수신하도록 동작가능한지 여부를 결정하는 것과 같은, 인그레스 노드(510)의 하나 이상의 다른 기능들을 수행할 수 있다.
제어 모듈(520)은, 인그레스 노드(510)의 파라미터들을 모니터링하기 위한 모니터링 컴포넌트와 같은 노드 A(220)의 컴포넌트들 중 하나 이상의 컴포넌트 및 다양한 다른 컴포넌트들을 포함할 수 있다. 제어 모듈(520)은 인그레스 노드(510)의 일부 또는 모든 포트들을 제어 또는 명령할 수 있으며, 인그레스 노드(510)의 하나 이상의 인그레스 포트는 인그레스 포트들에 대한 독립적인 제어 모듈(520)을 가질 수 있다. 다른 변형예들이 가능하다.
자원 할당을 결정 및 설정함에 있어, 제어 모듈(520)은 인그레스 노드(510)의 파라미터들(때때로 "노드 파라미터들"로서 지칭되는)의 값들 및 데이터를 모니터링할 수 있다. 모니터링된 노드 파라미터들은, 인그레스 노드(510)에 의해 수행되는 데이터 전송의 또는 인그레스 노드의, 하나 이상의 상태들, 특성들, 특징들, 또는 다른 엘러먼트들이거나 또는 이들을 설명할 수 있다. 제어 모듈(520)은 데이터 전송들의 하나 이상의 유형들을 사용하여 데이터를 전송하기 위한 인그레스 노드의 대역폭의 양 또는 할당(저장-및-전달 데이터의 전송을 위한 대역폭의 양 및 컷-스루 데이터를 전송하기 위한 대역폭의 양과 같은)을 생성, 설정, 조정, 변경, 또는 달리 수정하기 위하여 모니터링된 노드 파라미터들의 값들을 추적할 수 있다.
제어 모듈(520)이 모니터링할 수 있는 인그레스 노드 파라미터는 인그레스 노드(510)의 버퍼 필 레벨(buffer fill level), 또는 그 안에 저장되는 데이터(550)를 가질 수 있는 버퍼(515)의 레벨 또는 양이거나, 또는 이를 포함할 수 있다. 버퍼 필 레벨은, 이그레스 노드 A(530)와 같은 이그레스 노드로 송신되기 위해 대기하는 저장-및-전달 데이터(550)를 인그레스 노드(510)가 가질 수 있는 양을 나타낼 수 있다. 버퍼 필 레벨은, 정확한 또는 추정된 버퍼 필 레벨, 버퍼 필 레벨들의 범위, 또는 버퍼 필 레벨의 카테고리 또는 상태와 같은, 다양한 방식들로 표현될 수 있다. 다른 변형예들이 가능하다.
제어 모듈(520)이 모니터링할 수 있는 인그레스 노드 파라미터는 인그레스 노드(510)가 컷-스루 데이터 전송을 사용하여 데이터를 전송한 지속기간(duration)이거나 또는 이를 포함할 수 있다. 지속기간은 인그레스 노드(510)가 컷-스루 데이터 전송을 사용하여 데이터(550)와 같은 데이터에 대한 데이터 전송을 연속적으로 수행한 시간의 길이를 나타낼 수 있다. 지속기간은 추가적으로 또는 대안적으로 인그레스 노드(510)가 컷-스루 데이터 전송을 사용하여 데이터 전송들을 수행한 누적 시간, 또는 주어진 시간 기간에 걸친 시간의 비율(ratio)을 나타낼 수 있다. 지속기간은 대안적으로 인그레스 노드(510)가 저장-및-전달 데이터 전송을 사용하여 데이터를 전송한 시간을 나타낼 수도 있다. 제어 모듈(520)은 지속기간에 대한 데이터 또는 정보를 모니터링하거나 또는 수신할 수 있다.
제어 모듈(520)이 모니터링할 수 있는 인그레스 노드 파라미터는 크레딧(credit) 또는 풀(pull) 알고리즘 속성이거나, 또는 이를 포함할 수 있다. 크레딧 또는 풀 알고리즘 속성은 이그레스 노드들(530 또는 535) 중 하나 이상에 대하여 인그레스 노드(510)에 할당될 수 있다. 이그레스 노드(530)는 주어진 양의 데이터를 수신하도록 구성되거나 또는 동작가능할 수 있으며, 허용량(allowance) 또는 크레딧을 인그레스 노드(510)와 같은 하나 이상의 인그레스 노드들로 발송할 수 있다. 크레딧은 얼마나 많은 및/또는 언제 데이터가 인그레스 노드(510)에 의해 이그레스 노드 A(530)로 송신될 수 있는지를 나타낼 수 있다. 허용량 또는 크레딧의 결정 또는 식별은, 예를 들어, 인그레스 노드(510)가 저장된 많은 데이터(550)를 가지고 있지만, 데이터를 이그레스 포트 A(535)로 전송하기 위한 크레딧을 가지고 있지 않으며, 따라서 대용량 저장-및-전달 할당의 이익을 취하지 못할 수 있을 때, 유용할 수 있다. 제어 모듈(520)은 인그레스 노드(510)에 대한 크레딧 정보에 대한 정보, 데이터, 또는 값들을 모니터링할 수 있다.
제어 모듈(520)이 모니터링할 수 있는 인그레스 노드 파라미터는 인큐(enqueue) 또는 디큐(dequeue) 레이트이거나, 또는 이를 포함할 수 있다. 인큐 레이트는 인그레스 포트가 데이터 세그먼트들을 이그레스 포트로 송신하거나 또는 패키징(package)하는 시간 또는 레이트를 나타낼 수 있다. 디큐 레이트는 이그레스 포트가 그것이 수신하는 데이터 세그먼트들을 디큐하는 시간 또는 레이트를 나타낼 수 있다. 인큐 또는 디큐 레이트들은 시간 기간당 패킷의 양(measure)일 수 있다. 인큐 또는 디큐 레이트는 버스(bus)를 통해서 인그레스 노드에 의해 이그레스 노드로 전송될 수 있는 데이터 세그먼트의 크기에 따라 변화할 수 있다. 전송하는 인그레스 노드(또는 수신하는 이그레스 노드)는 대역폭 또는 버스 라인을 통해 발송되는 더 작은 데이터 세그먼트들을 인큐(또는 디큐)하기 위해 더 긴 시간 또는 더 많은 자원들을 필요로 하거나, 사용하거나, 또는 요구할 수 있다. 반대로, 전송하는 인그레스 노드(또는 수신하는 이그레스 노드)는 더 큰 데이터 세그먼트들을 인큐(또는 디큐)하기 위해 더 짧은 시간 또는 더 적은 자원들을 필요로 하거나, 사용하거나, 또는 요구할 수 있다. 더 높은 인큐 또는 디큐 레이트들은 더 많은 자원들을 요구할 수 있고, 컷-스루 데이터 전송을 사용하여 다른 데이터를 전송하기 위한 이용가능한 대역폭을 감소시키거나 또는 제한할 수 있다. 제어 모듈(520)은 또한 또는 대안적으로 다양한 다른 인그레스 노드 파라미터들 또는 인그레스 노드 파라미터들의 조합들의 값들을 모니터링할 수 있다.
제어 모듈(520)은 인그레스 노드에 대한 자원 할당을 결정 및/또는 설정하기 위하여 모니터링된 노드 파라미터들을 분석 및 사용할 수 있다. 예를 들어, 제어 모듈(520)은 할당 조회 테이블(allocation look-up table)과 같은 하나 이상의 테이블들을 사용하여, 인그레스 노드가 저장-및-전달 또는 컷-스루 데이터를 송신하기 위해 사용할 수 있는 전송 데이터에 대한 결정된 아웃고잉 대역폭의 양, 또는 인그레스 노드에 대한 자원 할당을 결정할 수 있다. 도 6은 예시적인 할당 조회 테이블(600)의 도면이다.
할당 조회 테이블(600)은 대역폭 할당 또는 결정된 아웃고잉 대역폭의 양과 같은, 하나 이상의 자원 할당들에 대한 설정들을 제공, 카테고리화, 또는 달리 리스팅(list)할 수 있다. 설정들은 모니터링된 노드 파라미터들 중 하나 이상의 값들의 함수일 수 있다. 할당 조회 테이블(600)은 버퍼 필 레벨과 같은, 제 1 모니터링된 노드 파라미터에 대한 값들의 컬럼(610)을 포함할 수 있다. 할당 조회 테이블(600)은 또한 컬럼(610)에 도시된 제 1 모니터링된 노드 파라미터의 값들 중 하나 이상에 대한 컷-스루 대역폭 할당을 제공, 카테고리화, 또는 달리 리스팅하는 컬럼(650)을 포함할 수 있다. 컷-스루 대역폭 할당은, 인그레스 노드가 컷-스루 데이터 전송을 사용하여 데이터 전송들을 수행하기 위하여 사용할 수 있거나 또는 달리 이에 전용될 수 있는 결정된 또는 설정된 인그레스 노드 대역폭의 양 또는 퍼센트일 수 있다. 데이터(560)와 같은, 컷-스루 데이터 전송을 사용하여 인그레스 노드(510)에 의해 전송되기에 적절한 데이터가, 테이블(600)의 컷-스루 대역폭 할당에 의해 지정되는, 결정된 또는 설정된 아웃고잉 인그레스 노드 대역폭의 양 또는 퍼센트를 사용하여 목적지 이그레스 노드로 전송될 수 있다.
제어 모듈(520)은 인그레스 노드(510)의 모니터링된 노드 파라미터와 할당 조회 테이블(600) 내에 제공된 자원 할당들에 대한 설정들을 비교할 수 있다. 일 예로서, 제어 모듈(520)은 제 1 모니터링된 노드 파라미터의 수신된 값을 제 1 모니터링된 노드 파라미터와 연관된 컬럼(610) 내의 값들 또는 값들의 범위와 비교할 수 있다. 제어 모듈(520)이 모니터링된 노드 파라미터의 수신된 값이 컬럼(610) 내의 값들의 발견된 범위 내에 있는 것으로 판단하는 경우, 제어 모듈(520)은 컬럼(610) 내의 발견된 값 또는 값들의 범위의 바로 옆의, 또는 달리 이와 연관된 컬럼(610) 내에 리스팅된 할당에 따라, 컷-스루 대역폭 할당과 같은, 자원 할당을 결정하거나 또는 달리 식별할 수 있다.
예를 들어, 제어 모듈(520)은 인그레스 노드(510)의 버퍼(515)의 버퍼 필 레벨과 같은, 제 1 모니터링된 인그레스 노드 파라미터에 대해 250 KB의 값을 결정할 수 있다. 결정된 값은 버퍼(515)가 저장-및-전달 데이터 전송을 사용하여 인그레스 노드로 전달될 데이터(550)의 250 KB를 버퍼(515) 내에 저장하고 있다는 것을 나타낼 수 있다. 제어 모듈(520)은 할당 조회 테이블(600)의 컬럼(610) 내의 하나 이상의 엔트리들을 탐색할 수 있다. 엔트리(660)가 인그레스 노드(510)의 버퍼(515)의 버퍼 필 레벨에 대하여 모니터링된 값을 포함할 수 있는 150 KB 내지 450 KB의 버퍼 필 레벨들의 범위에 대응할 수 있음에 따라, 제어 모듈(520)은 엔트리(660)를 버퍼(515)의 모니터링된 버퍼 필 레벨에 대응하는 것으로서 식별할 수 있다. 제어 모듈(520)은 50%(엔트리(660)에 대응하는 컬럼(650) 내의 엔트리의 값)인 것과 같은 이러한 설정에 기초하여 자원 할당을 식별 또는 결정할 수 있다. 인그레스 노드(510)는, 데이터를 전송하기 위한 아웃고잉 인그레스 노드 대역폭의 50%까지를 사용하여, 데이터(560)와 같은 컷-스루 데이터를 전송할 수 있다. 노드 설정은, 예를 들어, 트래픽을 저장 및 전달하도록 강제(force)하기 전에 소모될 수 있는, 모니터링을 통해 수집된, 컷-스루에 사용되는 피크(peak) 대역폭을 지정하기 위해 사용될 수 있다. 다양한 다른 예들이 가능하다.
도 7은 대안적이고 예시적인 할당 조회 테이블(700)의 도면이다. 할당 조회 테이블(700)은 모니터링된 인그레스 노드 파라미터들의 조합에 기초하거나 또는 설정될 수 있는 자원 할당 정보를 제공할 수 있다. 할당 조회 테이블(700)은 복수의 모니터링된 인그레스 노드 파라미터들에 대한 값들 또는 값들의 범위들을 리스팅하는 컬럼들을 포함할 수 있다. 엔트리들, 값들 및 범위들은 예시적이며, 구현예에 따라 변화할 수 있다. 할당 조회 테이블(700)은 인그레스 노드(510)의 버퍼(515)의 버퍼 필 레벨에 대한 값들 또는 값들의 범위들인 엔트리들을 제공하는 컬럼(710)을 포함할 수 있다. 조회 테이블(700)은 또한 인그레스 노드(510)가 컷-스루 데이터 전송들을 수행했던 시간에 대한 값들 또는 값들의 범위를 제공하는 컬럼(720)을 포함할 수 있다. 조회 테이블(700)은 또한 인그레스 노드(510)에 대한 크레딧에 대한 값들 또는 값들의 범위인 엔트리들을 제공하는 컬럼(730)을 포함할 수 있다. 할당 조회 테이블(700)은, 할당 조회 테이블(700) 내에서 식별된 하나 이상의 모니터링된 인그레스 노드 파라미터들에 기초하여 동작하기 위해 인그레스 노드(510)가 설정, 변경, 또는 구현될 수 있는 컷-스루 대역폭 할당과 같은, 자원 할당을 제공할 수 있다.
제어 모듈(520)은 자원 할당 설정을 식별하기 위하여 모니터링된 인그레스 노드 파라미터들에 관한 식별된 값들, 데이터, 또는 정보를 할당 조회 테이블(700) 내의 엔트리들과 비교할 수 있다. 제어 모듈(520)은 비교에 기초하여 인그레스 노드(510)에 대한 자원 할당을 결정할 수 있다. 예를 들어, 제어 모듈은, 제 1 카테고리의 또는 버퍼 필 레벨 1 범위 내에 있는 버퍼 필 레벨, 인그레스 노드(510)가 컷-스루 데이터 전송을 사용하여 데이터를 전송한 약 400 나노초("ns")의 지속기간의 값, 및 인그레스 노드(510)가 크레딧들을 가지지 않았다는 지시를 포함할 수 있는, 인그레스 노드 파라미터들을 모니터링할 수 있다. 제어 모듈(520)은 모니터링된 인그레스 노드 파라미터의 값을 할당 조회 테이블(700)의 엔트리들과 비교할 수 있으며, 모니터링된 인그레스 노드 파라미터들에 대응하는 엔트리(760)를 식별할 수 있다. 할당 조회 테이블(700)을 사용하여, 제어 모듈(520)은 엔트리(760)의 조건들 하에서의 컷-스루 할당이 약 100%라고 결정할 수 있다. 다른 예들이 가능하다.
할당 조회 테이블들(600 및 700)은 다양하고 상이한 인그레스 노드 파라미터들, 또는 인그레스 노드 파라미터들을 조합들에 기초하여 인그레스 노드(510)에 대한 자원 또는 대역폭 할당들을 제공할 수 있다. 할당 조회 테이블들은, 예를 들어, 인그레스 노드(510)가 하나 이상의 데이터 전송 유형들을 사용하여 데이터를 전송한 지속기간, 인그레스 노드(510)에 대한 크레딧, 인그레스 노드(510)에 대한 인큐/디큐 레이트, 또는 다양한 다른 파라미터들과 같은, 하나의 파라미터 또는 파라미터들의 조합에 대응하는 대역폭 할당들에 대한 설정들을 제공할 수 있다. 데이터(560)와 같은 컷-스루 데이터 전송을 사용하여 인그레스 노드(510)에 의해 전송되기에 적절한 데이터가, 테이블들(600 또는 700)의 컷-스루 대역폭 할당에 의해 지정되는, 결정된 또는 설정된 아웃고잉 인그레스 노드 대역폭의 양 또는 퍼센트를 사용하여 목적지 이그레스 노드로 전송될 수 있다.
할당 조회 테이블들(600 및 700)은 다양한 형식들 또는 방식들로 자원 또는 대역폭 할당들에 대한 설정들을 제공할 수 있다. 할당 조회 테이블들(600 및 700)은, 저장-및-전달 데이터 전송 또는 컷-스루 데이터 전송과 같은, 데이터 전송의 하나 이상의 유형들에 할당되어야 하는 대역폭 또는 자원들의 퍼센트를 제공할 수 있다. 할당 조회 테이블들(600 및 700)은 데이터 전송의 하나 이상의 유형들을 사용하여 데이터를 전송하기 위하여 사용될 수 있는 포트들의 식별 또는 수를 제공할 수 있다. 할당 조회 테이블들(600 및 700)은 데이터 전송의 하나 이상의 유형들을 사용하여 데이터가 전송될 수 있는지 여부에 대한 지시를 제공할 수 있다. 다양한 다른 예들이 가능하다.
추가적으로 또는 대안적으로, 제어 모듈(520)은 하나 이상의 액션(action) 또는 상태 테이블(state table)들 또는 다어그램(diagram)들을 사용하여 인그레스 노드(510)에 대한 자원 할당을 결정할 수 있다.
도 8은 예시적인 상태 테이블(800)의 도면이다. 상태 테이블(800) 내의 값들은 설명의 목적들을 위한 것이며, 구현예에 따라 변화할 수 있다. 상태 테이블(800)은 컷-스루 데이터 전송에 사용될 수 있는 아웃고잉 인그레스 노드 대역폭의 양을 결정하기 위하여 제어 모듈(520)에 의해 사용되거나 또는 참조될 수 있다. 상태 테이블(800)은 조회 테이블(700)과 유사한 자원 할당을 초래할 수 있다.
제어 모듈(520)은 상태 테이블(800)을 네비게이트(navigate)하기 위해 모니터링된 노드 파라미터들의 식별된 값을 사용할 수 있다. 상태 테이블(800)은, 제어 모듈(520)이 인그레스 노드(510)의 현재 상태에 대응할 수 있는 상태들(850~863) 중 하나와 같은, 상태를 찾기 위하여 네비게이트할 수 있는 결정 트리(decision tree)를 포함할 수 있다. 결정 트리는, 버퍼 필 레벨 브랜치(branch)(805), 하나 이상의 컷-스루 시간 브랜치들(815~817), 또는 하나 이상의 크레딧 브랜치들(820~824)과 같은, 하나 이상의 브랜치 포인트들을 포함할 수 있다. 제어 모듈(520)은 이그레스 노드(510)의 모니터링된 노드 파라미터들에 기초하여 상태 테이블의 브랜치 포인트들로부터 아래의 적절한 브랜치들로 네비게이트할 수 있다. 일 예로서, 모니터링된 이그레스 노드 파라미터들이 제 1 카테고리의 또는 버퍼 필 레벨 1에 속하는 버퍼 필 레벨, 인그레스 노드(510)가 컷-스루 데이터 전송을 사용하여 데이터를 전송한 약 400 ns의 지속기간의 값, 및 인그레스 노드(510)가 크레딧들을 가지지 않았다는 지시를 포함하는 경우, 제어 모듈은 제 1 브랜치 포인트(805)로부터 버퍼 필 레벨 1 브랜치를 따라 브랜치 포인트(815)로 진행하고, '0-500 ns' 브랜치 아래의 브랜치 포인트(820)로 진행할 수 있으며, '아니오(no)' 브랜치 아래의 상태(851)로 진행할 수 있다. 상태는, 컷-스루 데이터 전송을 사용하여 데이터의 전송을 위해 결정된 아웃고잉 인그레스 노드 대역폭의 퍼센트와 같은, 자원 할당을 나타낼 수 있다.
상태 테이블(800)은, 하나 이상의 모니터링된 인그레스 노드 파라미터들 또는 파라미터들의 값들과 연관된 또는 이에 기초할 수 있는, 하나 이상의 브랜치 포인트들, 브랜치들, 및 상태들을 포함할 수 있다. 상태 테이블(800)은 이전의 브랜치 포인트의 각 브랜치로부터 유사한 브랜치 포인트들(버퍼 필 레벨 브랜치 포인트(805)의 브랜치들의 각각으로부터의 3개의 컷-스루 시간 브랜치 포인트들(815~817)과 같은)을 포함할 수 있다. 추가적으로 또는 대안적으로, 상태 테이블(800)은 브랜치 포인트로부터 상이한 브랜치들(컷-스루 시간 브랜치 포인트(817)로부터의 2개의 브랜치 포인트들(823 및 824) 및 컷-스루 시간 브랜치 포인트(817)의 3번째 브랜치로서의 상태 14(863)와 같은)을 포함할 수 있다. 다른 변형예들이 가능하다.
추가적으로 또는 대안적으로, 제어 모듈(520)은 하나 이상의 알고리즘들 또는 공식(formula)들을 사용하여 인그레스 노드(510)에 대한 자원 할당을 결정할 수 있다. 알고리즘, 공식, 또는 다른 함수는 하나 이상의 입력들에 기초하여 자원 할당 값을 제공하도록 동작할 수 있다.
제어 모듈(520)은, 인그레스 노드(510)에 대한 자원 할당을 결정함에 있어, 하나 이상의 모니터링된 인그레스 노드 파라미터들에 대한 값들을 고려하거나 또는 이에 가중치를 부여할 수 있는 하나 이상의 공식들을 구현할 수 있다. 자원 할당을 결정하기 위하여 제어 모듈(520)에 의해 구현되는 하나의 공식은 다음과 같을 수 있다:
CT 할당 = 100*min(1; 1.4 - (버퍼 필 값/1 MB))
여기에서 CT 할당은 컷-스루 데이터 전송에 대해 할당된 아웃고잉 대역폭의 퍼센트일 수 있으며, 컷-스루 데이터 전송에 할당된 대역폭의 퍼센트는 약 100% 또는 100*(1.4 - (버퍼 필 값/1 MB)) 중 작은 값이 될 수 있다. 자원 할당 알고리즘은 인그레스 노드에 대한 자원 할당을 결정하기 위하여 인그레스 노드 파라미터의 다양한 조합들 또는 상이한 모니터링된 인그레스 노드 파라미터들을 고려할 수 있다. 알고리즘은, 예를 들어, 인그레스 노드(510)에 대한 버퍼 필 레벨 및 크레딧 양 모두를 고려할 수 있다. 알고리즘들의 다양한 다른 예들 및 변형예들이 가능하다. 대안적으로 또는 추가적으로, 제어 모듈(520)은 다양한 다른 방식들로 그리고 다양한 다른 툴(tool)들 및 컴포넌트들을 사용하여 인그레스 노드(510)의 자원 할당을 결정할 수 있다.
할당 조회 테이블들(600 및 700)과 같은 테이블들, 및/또는 알고리즘들 또는 공식들은 인그레스 노드에 사용되기 전에 프로그래머에 의해 미리-결정되거나 또는 미리-구성될 수 있다. 대안적으로 또는 추가적으로, 테이블들 및/또는 알고리즘들이 시스템의 하나 이상의 관찰가능한 또는 결정가능한 특징들에 기초하여 구성되거나, 결정되거나, 또는 달리 설정될 수 있다. 할당 조회 테이블들 및/또는 알고리즘들은 동적일 수 있으며, 변경될 수 있고, 및/또는 갱신될 수 있다. 할당 조회 테이블들(600 및 700) 및/또는 알고리즘들에 의해 제공된 대역폭 할당은, 컷-스루 데이터 전송을 사용하여 이그레스 포트가 수신할 수 있는 데이터 세그먼트들의 즉각적인 전송에 대한 필요성 및 우선순위와, 인그레스 노드(510)의 버퍼(515)에 저장된 데이터(550)를 전송함에 있어서의 불공정성 및 과도한 지연을 회피하고자 하는 요구(desire) 사이의 트레이드-오프(trade-off) 또는 균형을 위해 제공될 수 있다. 일 예로서, 할당 조회 테이블 또는 알고리즘은, 인그레스 노드(510)가 목적지 이그레스 포트로 데이터(550)를 전송하기 위한 크레딧을 가지지 못하고, 따라서 저장-및-전달 데이터 전송들에 대한 대역폭을 필요로 하지 않을 수 있는 경우, 긴 시간 기간 동안 버퍼(515)에 저장된 데이터(550)를 가지고 있는 인그레스 노드(510)에 이용가능한 증가된 컷-스루 대역폭을 제공할 수 있다. 다른 예들 및 변형예들이 가능하다.
제어 모듈(520)은 자원 할당을 설정 또는 구현할 수 있다. 자원 할당이 하나 이상의 할당 조회 테이블들(600 및 700) 또는 하나 이상의 알고리즘들 또는 함수들을 사용하는 것과 같이 결정될 때, 또는 다양한 다른 시점들에서 자원 할당이 구현될 수 있다.
제어 모듈(520)은, 인그레스 노드(510)의 각각의 인그레스 포트들을 하나의 모드에서 동작하도록 또는 데이터 전송의 하나의 유형을 사용하여 데이터를 전송하도록 설정함으로써, 자원 할당을 구현할 수 있다. 제어 모듈(520)은 결정된 자원 할당에 따라 인그레스 포트들의 수를 설정할 수 있다. 할당 조회 테이블(600)이, 예를 들어, 엔트리(660)와 같은, 주어진 엔트리에 대한 컷-스루 대역폭 할당이 50%여야 한다고 나타내는 경우, 제어 모듈(520)은 인그레스 노드(510)의 인그레스 포트들의 절반을 컷-스루 모드에서 동작하도록 지정할 수 있고, 인그레스 노드(510)의 인그레스 포트들의 다른 절반을 저장-및-전달 모드에서 동작하도록 지정할 수 있다. 예를 들어, 대역폭 할당이 80%라면, 제어 모듈(520)은 인그레스 노드(510)의 인그레스 포트들 중 4/5를 컷-스루 모드에서 동작하도록 설정할 수 있으며, 반면 인그레스 포트들의 나머지 1/5는 저장-및-전달 모드에서 동작하도록 설정될 수 있다.
추가적으로 또는 대안적으로, 인그레스 노드의 인그레스 포트들이 데이터 전송의 상이한 유형들을 사용하여 데이터의 퍼센트 또는 부분을 전송하도록, 또는 데이터 전송의 일 유형에 대해 인그레스 포트에서의 대역폭의 퍼센트를 할당하도록, 제어 모듈(520)이 인그레스 노드의 인그레스 포트들을 구성할 수 있다. 제어 모듈(520)이, 예를 들어, 80%의 컷-스루 할당을 결정하는 경우, 인그레스 노드(510)의 인그레스 포트들은 컷-스루 데이터 전송을 사용하는 데이터 전송에 인그레스 포트에 이용가능한 대역폭의 80%를 할당하고, 나머지 20%를 저장-및-전달 데이터 전송을 사용하는 데이터 전송에 할당하도록 구성될 수 있다.
추가적으로 또는 대안적으로, 자원 할당의 결정은 자원 할당을 구현하는 방법을 자체적으로 식별할 수 있다. 하나 이상의 할당 조회 테이블들(600 및 700)은, 엔트리(엔트리(660 또는 760)와 같은)에 대하여, 인그레스 노드(510)의 인그레스 포트 1~4(예를 들어)가 컷-스루 모드에서 동작하도록 구성될 수 있고, 반면 포트들 5~10이 저장-및-전달 모드에서 동작하도록 구성될 수 있다는 것을 나타내는 것과 같이, 각각의 인그레스 포트가 구성되거나 또는 동작가능한 방식을 지정할 수 있다. 추가적으로 또는 대안적으로, 제어 모듈(520)은 모니터링된 노드 파라미터의 값을 임계 값과 비교할 수 있다. 제어 모듈(520)은, 노드 파라미터의 값이 임계 값보다 크거나 또는 그보다 작을 때, 저장-및-전달 데이터 전송 또는 컷-스루 데이터 전송을 위해 일부 또는 모든 대역폭을 할당할 수 있다. 다른 변형예들이 가능하다.
인그레스 노드(510)는 설정된 또는 구현된 자원 할당들에 기초하여 동작하고 데이터를 전송할 수 있다. 할당 조회 테이블, 상태 테이블, 알고리즘 또는 다양한 다른 방식들에 의해 결정될 수 있는 인그레스 노드 대역폭의 컷-스루 양을 사용하는 컷-스루에 의해 데이터(560)와 같은 데이터가 전송될 수 있다. 할당 조회 테이블, 상태 테이블, 알고리즘 또는 다양한 다른 방식들에 의해 결정될 수 있는 인그레스 노드 대역폭의 저장-및-전달 양을 사용하는 저장-및-전달에 의해 데이터(550)와 같은 데이터가 전송될 수 있다. 인그레스 노드 대역폭의 저장-및-전달 양은 인그레스 노드 대역폭의 컷-스루 양을 포함하지 않는 인그레스 노드 대역폭일 수 있다. 다른 예들이 가능하다.
도 9는 데이터 전송을 위한 예시적인 로직(logic)의 순서도이다. 로직은, 예를 들어, 인그레스 노드(510)의 제어 모듈(520)에 의해 수행될 수 있다. 로직은 인그레스 노드(510)의 대역폭 할당을 결정 및 설정하기 위해 사용될 수 있다. 대역폭 할당 값들은 예시적인 목적들을 위한 것이며, 구현예에 따라 변화할 수 있다. 인그레스 노드는, 설정된 대역폭 할당에 따라 저장-및-전달 데이터(550) 및 잠재적인 컷-스루 데이터(560)와 같은 데이터를 전송 또는 송신할 수 있다. 로직은 블록(900)에서 시작한다.
블록(902)에서, 제어 모듈(520)은 인그레스 노드(510)의 하나 이상의 노드 파라미터를 모니터링할 수 있다. 제어 모듈(520)은 버퍼 필 레벨, 인그레스 노드(510)에 대한 크레딧들, 인그레스 노드(510)가 데이터를 전송한 시간의 지속기간, 인큐/디큐 레이트들, 및/또는 다양한 다른 인그레스 노드 파라미터들과 같은, 모니터링된 파라미터들에 대한 값들을 모니터링할 수 있다.
블록(904)에서, 제어 모듈(520)은, 인그레스 노드(510)에 대한, 대역폭 할당, 포트 할당, 데이터 전송을 위해 결정된 대역폭의 양, 또는 다른 데이터 전송 자원 할당과 같은, 자원 할당을 결정할 수 있다. 예를 들어, 제어 모듈(520)은 모니터링된 노드 파라미터들의 값들에 대응하는 자원 할당에 대한 설정을 식별할 수 있다. 제어 모듈(520)은, 할당 조회 테이블(600 또는 700)과 유사한 테이블을 참조하거나 또는 사용함에 의해, 또는 알고리즘 또는 공식을 사용함에 의한 것과 같이, 다양한 방식들로 자원 할당을 결정할 수 있다. 제어 모듈은 하나 이상의 인그레스 노드 파라미터들에 대한 하나 이상의 모니터링된 값들에 기초하여, 이들에 따라, 또는 달리 이들의 함수로써 자원 할당을 결정할 있다.
자원 할당이 결정되면, 로직은 블록(906)으로 진행할 수 있다. 블록(906)에서, 제어 모듈(520) 또는 인그레스 노드(510)의 다른 컴포넌트는 인그레스 노드(510)의 파라미터들의 모니터링된 값들에 기초하여 자원 할당을 구현할 수 있다. 제어 모듈(520)은, 결정된 자원 할당에 따라, 인그레스 노드의 인그레스 포트들의 일부 또는 전부를 제 1 모드(저장-및-전달 모드와 같은)를 사용하여 데이터를 전송하도록 구성하거나 또는 동작가능하게 설정하거나 또는 구현할 수 있으며, 및/또는 인그레스 노드의 인그레스 포트들의 일부 또는 전부를 제 2 모드(컷-스루 모드와 같은)를 사용하여 데이터를 전송하도록 구성하거나 또는 동작가능하게 설정하거나 또는 구현할 수 있다. 제어 모듈(520)은, 대안적으로 또는 추가적으로, 일부 대역폭을 데이터 전송의 제 1 유형을 사용하는 데이터 전송에 할당하기 위하여 인그레스 포트들의 일부 또는 전부를 구성 또는 설정하며, 대역폭의 일부 또는 전부를 다른 유형 또는 모드를 사용하는 데이터 전송에 할당하도록 구성 또는 설정될 수 있다.
대역폭 할당과 같은 자원 할당은, 컷-스루 데이터 전송을 사용하는 데이터 전송에 대한 할당 및 저장-및-전달 데이터 전송을 사용하는 데이터 전송에 대한 할당과 같은, 데이터 전송들의 유형들에 대한 할당을 나타내거나 또는 보장할 수 있다. 대안적으로 또는 추가적으로, 자원 할당(대역폭 할당과 같은)은 데이터 전송의 일 유형(컷-스루 데이터 전송과 같은)에 대한 최대 할당을 나타내거나 또는 보장할 수 있다. 일 예로서, 자원 할당은 컷-스루 데이터 전송을 사용하는 데이터 전송에 대하여 40%의 최대 자원 할당을 나타낼 수 있으며, 여기에서 자원(대역폭과 같은)의 40% 이하가 컷-스루 데이터 전송을 사용하여 데이터를 전송하기 위해 사용될 수 있다. 최대 자원 할당의 부분으로서 할당될 수 있지만 데이터 전송을 위해 요구되거나 또는 사용되지 않을 수 있는 자원들(또는 대역폭)(사용되지 않는 컷-스루 대역폭과 같은)이 다른 데이터 전송(저장-및-전달과 같은)을 사용하여 데이터를 전송하기 위해 사용될 수 있다. 다른 변형예들이 가능하다.
블록(908)에서, 인그레스 노드(510)는 구현된 자원 할당에 따라 데이터를 전송할 수 있다. 예를 들어, 저장-및-전달 데이터 전송에 대하여 약 40%의 대역폭 및 컷-스루 데이터 전송에 대해 약 60%의 대역폭을 제공하도록 자원 할당이 결정되고 구현된 경우, 버퍼(515) 내의 데이터(550)는 인그레스 노드(510)의 이용가능한 대역폭 중 약 40%를 사용하여 이그레스 노드 A(530)로 전송될 수 있다. 인그레스 노드(510)가 이그레스 노드 B(535)를 위해 수신하는 데이터(560)는 인그레스 노드(510)의 약 60%의 컷-스루 대역폭을 사용하여 전송될 수 있다. 할당 조회 테이블 또는 알고리즘이 이와 같이 구성되는 경우에 있어, 제어 모듈(520)은, 심지어 데이터(560)가 컷-스루 데이터 전송을 사용하여 수신되고 송신 또는 전송될 수 있는 경우에도, 인그레스 노드(510)의 버퍼(515)에 저장될 수 있는 데이터를 송신하도록 구성될 수 있다. 다른 변형예들 및 예들이 가능하다.
블록(910)에서, 제어 모듈(520), 인그레스 노드(510), 또는 제어 모듈(520) 또는 인그레스 노드(510)와 통신하는 다른 컴포넌트가 인그레스 노드 파라미터들을 모니터링할 수 있다. 제어 모듈(520)은, 예를 들어, 컷-스루 데이터 전송에 따라 인그레스 노드가 데이터를 송신한 지속기간뿐만 아니라 인그레스 노드의 버퍼(515)의 버퍼 필 레벨을 모니터링할 수 있다. 인그레스 노드 파라미터들이 연속적으로, 매 클럭 사이클마다, 주기적으로, 특정한 또는 결정된 간격들로, 트리거될 때, 또는 다른 시점들에서 모니터링될 수 있다.
블록(912)에서, 제어 모듈(520), 인그레스 노드(510), 또는 인그레스 노드(510)와 통신하는 다른 컴포넌트들이 자원 할당 설정들이 변화하는지 여부를 결정할 수 있다. 자원 할당 설정들은 하나 이상의 인그레스 노드 파라미터들이 변화할 때 변화할 수 있다. 예를 들어, 750 KB로부터 200 KB로의 버퍼 필 레벨의 변화는 자원 할당 설정들의 변화를 트리거할 수 있다. 인그레스 노드 파라미터가, 임계를 초과할 때, 값들의 제 1 범위로부터 값들의 제 2 범위로 스위칭될 때, 어떤 레벨 또는 상태로부터 다른 레벨 또는 상태로 스위칭될 때, 자원 할당 설정이 변화할 수 있다. 임계들, 값들의 범위들, 및/또는 상태들 또는 레벨들은 할당 조회 테이블 내의 값들 또는 다른 정의된 값들에 대응할 수 있다. 예를 들어, 250 KB로부터 200 KB로의 버퍼 필 레벨 변화는, 만일 그 변화가 버퍼 필 레벨을 값들의 제 1 범위로부터 값들의 제 2 범위로 이동시키지 않는 경우(할당 조회 테이블(700)과 관련된 것과 같이), 자원 할당 설정 변화를 트리거하지 않을 수 있다. 다른 변형예들이 가능하다.
자원 할당 설정의 변화가 검출되지 않는 경우, 로직은 블록(908)으로 복귀할 수 있다. 블록(908)에서 데이터가 대역폭 할당을 사용하여 계속해서 전송될 수 있으며, 제어 모듈(520), 인그레스 노드(510), 또는 인그레스 노드(510)와 통신하는 다른 컴포넌트가 계속해서 인그레스 노드 파라미터들을 모니터링할 수 있다.
자원 할당 설정의 변화가 검출되는 경우, 로직은 블록(904)으로 복귀할 수 있으며, 여기에서 새로운 자원 할당이 새로운 인그레스 노드 파라미터들 또는 자원 할당 설정에 기초하여 결정될 수 있다. 블록(906)에서, 자원 할당이 설정 또는 구현되거나, 또는 단지 갱신될 수 있다.
일부 변형예들에 있어, 도 9의 로직은 더 적거나 또는 더 많은 블록들 또는 기능들을 포함할 수 있다. 일부 변형예들에 있어, 하나 이상의 블록들이 상이한 기능들을 수행할 수 있거나, 또는 하나 이상의 블록들이 더 적은 기능들 또는 결정들로 결합될 수 있다. 일부 변형예들에 있어, 하나 이상의 블록들 또는 기능들이 상이한 순서로 또는 동시에 수행될 수 있다. 로직의 다양한 다른 예들 및 변형예들이 가능하다.
도 9의 로직은, 컷-스루 데이터 전송 및 저장-및-전달 데이터 전송 모두를 사용하는 데이터 전송들을 가능하게 할 수 있는, 인그레스 노드(510)에 대한 자원 할당을 제공하거나, 또는 대역폭의 양을 결정하도록 제어 모듈(520) 및 인그레스 노드(510)를 인에이블(enable)할 수 있다. 할당 조회 테이블들 또는 알고리즘들을 구성함으로써, 자원 할당이 조정될 수 있고, 컷-스루 데이터 전송의 신속성(immediacy)과 저장-및-전달 데이터 전송의 과도한 지연을 회피하기 위한 요구(desire) 사이의 균형 및 트레이드-오프를 제공하도록, 자원 할당이 설정될 수 있다. 도 9의 로직은 특정 트래픽 시나리오들 및 디바이스 구성들 하에서 대역폭 결핍(starvation)을 회피하기 위해 사용될 수 있다. 도 9의 로직은, 인그레스 노드 파라미터들의 변화에 따라 자원 할당을 변화시키기 위하여, 제어 모듈(520) 및 인그레스 노드(510)가 인그레스 노드(510)의 자원 할당을 조정 및 동적으로 제어하도록 더 허용할 수 있다.
도 10은 데이터 전송을 위한 예시적인 로직의 순서도이다. 로직은, 예를 들어, 인그레스 노드(510)의 제어 모듈(520)에 의해 수행될 수 있다. 로직은, 인그레스 노드(510)의 대역폭 할당이 컷-스루 데이터 전송을 사용하여 데이터 세그먼트를 이그레스 노드로 전송하기에 충분한 때를 결정하기 위하여 사용될 수 있다. 로직은 블록(1000)에서 시작할 수 있다.
블록(1002)에서, 인그레스 노드(510)와 같은 인그레스 노드가 데이터 세그먼트를 수신할 수 있다. 데이터 세그먼트는, 데이터(560)와 동일하거나, 이와 유사하거나, 또는 이와 비슷할 수 있다. 데이터 세그먼트는 더 큰 데이터 패킷으로부터의 데이터의 부분 또는 조각일 수 있다. 데이터 세그먼트는 이그레스 노드 B(525)의 이그레스 포트와 같은 목적지 이그레스 포트로 향해지거나 또는 이를 향해 발송되도록 의도될 수 있다. 제어 모듈(520) 또는 인그레스 노드(510)가 데이터 세그먼트를 분석할 수 있다. 제어 모듈(520)은 수신된 데이터 세그먼트에 대한 목적지 이그레스 포트를 결정하거나 및/또는 데이터 세그먼트를 목적지 이그레스 포트로 송신 또는 전송하기 위해 필요한 대역폭을 결정할 수 있다.
블록(1004)에서, 인그레스 노드(510), 또는 제어 모듈(520)은 목적지 이그레스 포트가 데이터 전송의 컷-스루 모드에 따라 데이터 세그먼트를 수신하기에 적절한지 여부를 결정할 수 있다. 제어 모듈(520)은, 시스템(시스템(505)과 같은)의 중앙 제어기로부터의 지시를 수신하는 것, 또는 이그레스 포트 및 다른 인그레스 노드들로부터의 정보를 수신 및 분석하는 것에 의한 것과 같은 다양한 방식들로, 목적지 이그레스 포트가 컷-스루 데이터 전송 또는 데이터 전송의 컷-스루 모드를 사용하여 데이터 세그먼트를 수신하기에 적절한지 여부를 결정할 수 있다. 컷-스루 데이터 전송 또는 데이터 전송의 컷-스루 모드는, 더 큰 데이터 패킷의 나머지 부분이 인그레스 포트에서 수신되기 전에, 더 큰 데이터 패킷의 데이터 세그먼트를 이그레스 포트로 전송하는 것을 포함할 수 있다. 컷-스루 데이터 전송 또는 데이터 전송의 컷-스루 모드는, 데이터 세그먼트를 수신 인그레스 노드의 내부 메모리 또는 버퍼에 저장하지 않고, 그 데이터 세그먼트를 이그레스 포트로 전송하는 것을 포함할 수 있다.
블록(1006)에서, 인그레스 노드(510) 또는 제어 모듈(520)은 인그레스 노드(510)에 대한 대역폭 할당(또는, 컷-스루 데이터 또는 저장-및-전달 데이터의 전송을 위한 인그레스 노드 대역폭의 양)을 식별할 수 있다. 인그레스 노드(510) 또는 제어 모듈(520)은, 인그레스 노드(510)에 대한 대역폭 할당을 결정하기 위하여 도 9의 로직의 부분 또는 전부를 실행하거나 또는 하나 이상의 기능들을 수행할 수 있다. 대역폭 할당은, 컷-스루 또는 저장-및-전달과 같은, 데이터 전송의 상이한 모드들 또는 유형들을 사용하여 데이터를 이그레스 노드로 송신 또는 전송하도록 구성되거나 또는 동작가능할 수 있는, 인그레스 노드에 의해 사용되는 대역폭의 부분들 또는 양들을 나타내거나 또는 식별할 수 있다. 대역폭 할당은, 컷-스루 데이터 전송을 사용하여, 목적지 이그레스 포트와 같은 이그레스 노드 또는 이그레스 포트로 데이터를 송신하도록 구성되거나 또는 동작가능할 수 있는, 인그레스 노드(510)의 인그레스 포트들의 수 또는 인그레스 노드(510)의 대역폭의 양을 나타내거나 또는 식별할 수 있다.
블록(1008)에서, 인그레스 노드(510) 또는 제어 모듈(520)은 블록(1006)에서 식별된 대역폭 할당이 컷-스루 데이터 전송을 사용하는 수신된 데이터의 전송을 인에이블하는지, 이를 허용하는지, 또는 이에 충분한지 여부를 결정할 수 있다. 인그레스 노드(510) 또는 제어 모듈(520)은, 데이터 세그먼트를 이그레스 포트로 즉각적으로 송신하기(컷-스루 데이터 전송 또는 데이터 전송의 컷-스루 모드와 같은) 위해 필요한 대역폭과, 즉각적인 또는 컷-스루 데이터 전송들에 할당된 또는 이를 위해 할당된 이용가능한 대역폭을 비교할 수 있다. 데이터 세그먼트를 이그레스 포트로 즉각적으로 송신하기 위해 필요한 대역폭은, 데이터 세그먼트가 컷-스루 데이터 전송을 사용하여 이그레스 포트로 전송되도록 허용하기 전에, 이용가능한 대역폭이 이보다 더 클 것이 요구되는, 임계이거나 또는 이를 나타낼 수 있다. 임계는 약 0(zero)일 수 있으며, 그 결과 컷-스루 데이터 전송을 위해 이용가능한 대역폭의 임의의 양이 임계 레벨보다 클 수 있다.
할당된 대역폭이 컷-스루 데이터 전송을 사용하여 데이터 세그먼트를 이그레스 노드로 전송하는 것을 인에이블하거나, 이를 허용하거나, 또는 이에 충분한 경우(할당된 대역폭이, 컷-스루 데이터 전송을 사용하여 데이터 세그먼트를 전송하기 위해 필요한 대역폭의 양과 같은 임계 값보다 큰 경우와 같은), 블록(1010)의 로직이 실행될 수 있다. 인그레스 노드(510) 또는 제어 모듈(520)은, 인그레스 노드 대역폭의 할당된 양을 사용하여 데이터 세그먼트를 데이터 전송의 컷-스루 모드 또는 유형을 사용하여 목적지 이그레스 포트로 즉각적으로 전송할 수 있다.
대신 할당된 대역폭이 컷-스루 데이터 전송을 사용하여 데이터 세그먼트들 이그레스 노드로 전송하는 것을 인에이블하지 않거나, 허용하지 않거나, 또는 이에 충분하지 않은 경우(컷-스루 데이터 전송을 사용하여 데이터 전송을 수행하기 위해 사용될 수 있는 인그레스 노드 대역폭의 양이 존재하지 않는 경우와 같은), 블록(1012)의 로직이 실행될 수 있다. 인그레스 노드(510) 또는 제어 모듈(520)은, 버퍼(515) 또는 ITM(415)과 같은, 메모리 또는 버퍼에 데이터 세그먼트를 저장할 수 있다. 인그레스 노드(510) 또는 제어 모듈(520)은, 전체 데이터 패킷이 수신되거나 및/또는 저장될 때까지, 동일한 데이터 패킷에 대한 후속 데이터 세그먼트들을 버퍼(515) 또는 ITM(415)에 저장할 수 있다. 전체 데이터 패킷이 인그레스 노드(510)에서 수신되고, 인그레스 노드(510)가 데이터 전송의 저장-및-전달 모드를 사용하여 데이터 패킷을 이그레스 포트로 전송하기 위한 대역폭을 가지면, 데이터가 저장-및-전달 데이터 전송을 사용하여 이그레스 포트로 전송될 수 있다.
일부 변형예들에 있어, 도 10의 로직은 더 적거나 또는 더 많은 블록들 또는 기능들을 포함할 수 있다. 일부 변형예들에 있어, 하나 이상의 블록들이 상이한 기능들을 수행할 수 있거나, 또는 하나 이상의 블록들이 더 적은 기능들 또는 결정들로 결합될 수 있다. 일부 변형예들에 있어, 하나 이상의 블록들 또는 기능들이 상이한 순서로 또는 동시에 수행될 수 있다. 예를 들어, 변형예에 있어, 블록들(1006 및 1008)이 블록(1004) 이전에 실행되거나 또는 수행될 수 있다. 로직의 다양한 다른 예들 및 변형예들이 가능하다.
도 10의 로직은, 수신되는 데이터 세그먼트가 컷-스루 데이터 전송 또는 저장-및-전달 데이터 전송 중 어느 하나를 사용하여 전송될 수 있는 때를 결정하도록 제어 모듈(520) 및 인그레스 노드(510)를 인에이블할 수 있다. 도 10의 로직은 또한 또는 대안적으로 데이터 세그먼트를 전송하기 위하여 사용될 수 있는 인그레스 노드 대역폭의 양을 나타내거나 또는 결정할 수 있다. 자원 할당은, 컷-스루 데이터 전송의 신속성과 저장-및-전달 데이터 전송의 과도한 지연을 회피하기 위한 요구 사이의 균형 및 트레이드-오프를 제공하는 것일 수 있다. 도 10의 로직은, 제어 모듈(520) 및 인그레스 노드(510)가, 인그레스 노드의 상태 및 대역폭 이용가능성을 빠르게 평가하고, 인그레스 노드로부터의 데이터 전송을 조정 및 동적으로 제어하도록 더 허용할 수 있다.
제어 모듈(520)은 고 대역폭 클라우드(cloud) 디바이스들 및 아키텍처들에 대한 대역폭의 적응적인 할당을 위한 메커니즘을 제공할 수 있다. 제어 모듈(520)은 스케줄링 데이터 전송들 또는 트래픽(저장-및-전달 데이터와 같은)과, 언스케줄링 데이터 전송들 또는 트래픽(컷-스루 데이터와 같은) 사이의 패브릭 액세스 경쟁(fabric access contention)을 해결할 수 있다. 제어 모듈(520)은 인그레스 노드(510) 또는 다른 칩의 상태에 기초하여 대역폭 할당 또는 대역폭 비율을 적용할 수 있다. 제어 모듈(520)은 모니터링된 인그레스 노드 파라미터들의 범위 또는 값들에 기초하여 인그레스 노드(510)가 이용할 수 있는 대역폭을 변경(shift)할 수 있는 임계들 및 알고리즘들을 적용할 수 있다. 제어 모듈(520)에 의한 인그레스 노드(510)가 이용할 수 있는 대역폭의 변경은, 대역폭 비율이 인그레스 노드의 상태에 기초하여 적응적으로 구성되도록 인에이블할 수 있다. 제어 모듈(520)은 인그레스 노드(510)에서 데이터에 대한 데이터 전송의 순서 또는 우선순위를 동적으로 또는 적응적으로 변화시킬 수 있다.
자원 할당들 및/또는 컷-스루 결정들이 매 클럭 사이클마다, 또는 거의 주기적으로 이루어질 수 있다. 대역폭 할당이, 데이터의 부분이 수신될 때, 노드 파라미터가 변화할 때, 또는 다양한 다른 시점들에서 이루어질 수 있다. 인그레스 노드는, 인그레스 노드의 동작의 파라미터들 및 상태에 기초하여, 데이터 패킷이 컷-스루 데이터 전송을 사용하여 이그레스 포트로 송신 또는 전달될 수 있는지 여부를 결정하기 위하여, 하나 이상의 알고리즘들 또는 기능들을 실행할 수 있다. 이러한 알고리즘들 또는 기능들이 동시에 또는 거의 동시에 각각의 인그레스 노드 상에서 병렬로 실행될 수 있다. 이러한 방법들 및 시스템들은, 각각의 인그레스 노드에서의 데이터 전송의 효율성을 크게 개선할 수 있으며, 시스템의 계산 시간을 감소시킬 수 있고, 시스템(105)을 통하여 데이터가 더 빠르고 효율적으로 전송될 수 있도록 할 수 있다. 이러한 방법들 및 시스템들은, 수익을 내기 위해 낮은 레이턴시 및 높은 대역폭이 필요하고 유용할 수 있는, 클라우드 프로세싱, 금융 섹터들, 및 소셜 네트워킹에 대한 유용한 분산된 기능성을 제공할 수 있다.
인그레스 노드들 또는 포트들, 이그레스 노드들 또는 포트들, 및/또는 인그레스 또는 이그레스 노드들 또는 포트들의 제어기들 또는 제어 모듈들과 같은, 이상에서 설명된 방법들, 디바이스들, 및 로직은, 하드웨어, 소프트웨어 또는 하드웨어 및 소프트웨어 모두의 많은 상이한 조합들로, 많은 상이한 방식들로 구현될 수 있다. 예를 들어, 시스템의 전부 또는 일부들은, 제어기, 마이크로프로세서, 또는 어플리케이션 특정 집적 회로(ASIC) 내의 회로부(circuitry)를 포함할 수 있으며, 또는, 단일 집적 회로 상에 결합된 또는 복수의 집적 회로들 사이에 분산된, 이산 로직 또는 컴포넌트들, 또는 아날로그 또는 디지털 회로부의 다른 유형들의 조합으로 구현될 수 있다. 이상에서 설명된 로직의 전부 또는 부분이, 프로세서, 제어기, 또는 다른 프로세싱 디바이스에 의한 실행을 위한 명령들로서 구현될 수 있으며, 플래시 메모리, RAM(random access memory) 또는 ROM(read only memory), EPROM(erasable programmable read only memory)과 같은 컴퓨터-판독가능 매체 또는 CDROM(compact disc read only memory), 또는 자기 또는 광 디스크와 같은 다른 기계-판독가능 매체와 같은, 유형의 또는 비-일시적인 기계-판독가능 또는 컴퓨터-판독가능 매체에 저장될 수 있다. 따라서, 컴퓨터 프로그램 제품과 같은 제품은 저장 매체 및, 엔드포인트(endpoint), 컴퓨터 시스템, 또는 다른 디바이스에 의해 실행될 때 디바이스가 이상의 설명 중 임의의 것에 따른 동작들을 수행하도록 하는, 저장 매체 상에 저장된 컴퓨터 판독가능 명령들을 포함할 수 있다.
시스템의 프로세싱 성능은, 선택적으로 복수의 분산된 프로세싱 시스템들을 포함하는, 복수의 프로세서들 및 메모리들 사이에서와 같은, 복수의 시스템 컴포넌트들 사이에서 분산될 수 있다. 링크 리스트들, 해시 테이블들, 또는 묵시적인 저장 메커니즘들과 같은 데이터 구조들을 포함하는, 파라미터들, 데이터베이스들, 및 다른 데이터 구조들이 독립적으로 저장되고 관리될 수 있으며, 이들이 단일 메모리 또는 데이터베이스로 통합될 수도 있고, 다양한 방식들로 논리적으로 그리고 물리적으로 조직될 수도 있으며, 다양한 방식들로 구현될 수 있다. 프로그램들은, 단일 프로그램의 부분들이거나, 몇몇 메모리들 및 프로세서들에 걸쳐 분산된 독립적인 프로그램들이거나, 또는 공유 라이브러리(예를 들어, 동적 링크 라이브러리(DLL))와 같은 라이브러리로와 같은, 다양한 방식들로 구현될 수 있다. 예를 들어, DLL은 이상에서 설명된 시스템 프로세싱 중 임의의 것을 수행하는 코드를 저장할 수 있다.
본 발명의 다양한 실시예들이 설명되었지만, 본 발명의 범위 내에서 더 많은 실시예들 및 구현예들이 가능하다는 것이 당업자들에게 자명할 것이다. 따라서, 본 발명은 첨부된 청구항들 및 그들의 등가물들을 고려하는 것 외에는 제한되지 않을 것이다.
Claims (15)
- 데이터를 전송하기 위한 시스템에 있어서,
결정된 대역폭으로 데이터를 전송하는 인그레스 노드(ingress node)로서, 상기 인그레스 노드는 버퍼를 포함하고 및 모니터링된 노드 파라미터에 기초해 동작하는, 상기 인그레스 노드; 및
상기 인그레스 노드와 통신하는 제어기로서, 상기 제어기는, 상기 모니터링된 노드 파라미터에 기초하여, 상기 인그레스 노드의 상기 버퍼를 바이패스(bypass)하여 데이터를 직접적으로 전송하기 위한 상기 결정된 대역폭의 양을 할당하도록 구성된, 상기 제어기를 포함하는, 시스템. - 청구항 1에 있어서,
상기 제어기는 상기 모니터링된 노드 파라미터의 변화를 식별하도록 구성된, 시스템. - 청구항 2에 있어서,
상기 제어기는 상기 모니터링된 노드 파라미터의 상기 식별된 변화에 기초하여, 데이터를 직접적으로 전송하기 위한 상기 결정된 대역폭의 상기 할당된 양을 조정(adjust)하도록 구성된, 시스템. - 청구항 1 내지 청구항 3 중 어느 한 항에 있어서,
상기 모니터링된 노드 파라미터는 상기 인그레스 노드의 상기 버퍼의 필 레벨(fill level)을 포함하는, 시스템. - 청구항 4에 있어서,
데이터를 직접적으로 전송하기 위한 상기 결정된 대역폭의 상기 할당된 양은, 상기 인그레스 노드의 상기 버퍼의 상기 필 레벨에 역비례하여(inversely) 변화하는, 시스템. - 청구항 1 내지 청구항 5 중 어느 한 항에 있어서,
상기 모니터링된 노드 파라미터는, 상기 인그레스 노드가, 데이터 패킷들을 상기 버퍼에 저장하지 않고 상기 인그레스 노드의 상기 버퍼를 바이패스하면서, 데이터 패킷들을 직접적으로 전송한 시간 기간(time period)을 포함하는, 시스템. - 청구항 6에 있어서,
데이터를 직접적으로 전송하기 위한 상기 결정된 대역폭의 상기 할당된 양은, 상기 이그레스 노드가 상기 인그레스 노드의 상기 버퍼를 바이패스하면서 데이터 패킷들을 직접적으로 전송한 상기 시간의 길이에 역비례하여 변화하는, 시스템. - 청구항 1 내지 청구항 7 중 어느 한 항에 있어서,
상기 인그레스 노드는 인그레스 포트들의 세트(set)를 포함하며; 및
데이터를 직접적으로 전송하기 위한 상기 결정된 대역폭의 상기 할당된 양의 비율(ratio)은, 인그레스 포트들의 상기 세트의 크기(size)에 대한, 상기 인그레스 노드의 상기 메모리를 바이패스하는 데이터의 직접적인 전송을 위해 할당된 인그레스 포트들의 상기 세트의 인그레스 포트들의 수의 비율에 대응하는, 시스템. - 데이터를 전송하기 위한 방법에 있어서,
인그레스 노드의 파라미터를 모니터링하는 단계;
상기 파라미터에 기초하여, 상기 인그레스 노드에서 제 1 데이터 패킷의 후속(subsequent) 데이터 세그먼트(segment)가 수신되기 전에, 상기 제 1 데이터 패킷의 데이터 세그먼트를 이그레스 노드(egress node)로 전송하기 위한 인그레스 노드의 결정된 대역폭의 제 1 양(amount)을 할당하는 단계;
상기 결정된 대역폭의 상기 제 1 양의 적어도 부분을 사용하여 상기 데이터 세그먼트를 전송하는 단계;
상기 파라미터에 기초하여, 상기 인그레스 노드의 메모리에 저장된 제 2 데이터 패킷을 전송하기 위한 상기 결정된 대역폭의 제 2 양을 할당하는 단계; 및
상기 결정된 대역폭의 상기 제 2 양의 적어도 부분을 사용하여 상기 제 2 데이터 패킷을 전송하는 단계를 포함하는, 방법. - 청구항 9에 있어서,
상기 결정된 대역폭의 상기 제 1 양은, 상기 파라미터와 조회(look-up) 테이블 내의 엔트리(entry)의 비교에 기초하여 할당되는, 방법. - 청구항 9 또는 청구항 10에 있어서,
상기 결정된 대역폭의 상기 제 1 양은, 입력으로서 상기 파라미터를 수신하는 할당 알고리즘에 기초하여 할당되는 방법. - 청구항 9 내지 청구항 11 중 어느 한 항에 있어서,
상기 결정된 대역폭의 상기 제 2 양은, 상기 결정된 대역폭과 상기 결정된 대역폭의 상기 제 1 양 간의 차이(difference)를 포함하는, 방법. - 청구항 9 내지 청구항 12 중 어느 한 항에 있어서,
상기 파라미터는, 상기 버퍼의 필 레벨, 상기 인그레스 노드에서 이전(previous) 데이터 패킷들의 후속 데이터 세그먼트들이 수신되기 전에 상기 인그레스 포트가 상기 이전 데이터 패킷들을 전송한 시간의 길이, 저장-및-전달 크레딧(store-and-forward credit), 인큐 레이트(enqueue rate), 또는 디큐 레이트(dequeue rate)를 포함하는, 방법. - 청구항 9 내지 청구항 13 중 어느 한 항에 있어서,
상기 파라미터의 변화에 응답하여, 상기 결정된 대역폭의 상기 할당된 제 1 양 및 상기 결정된 대역폭의 상기 할당된 제 2 양을 갱신하는 단계를 더 포함하는, 방법. - 결정된 대역폭으로 데이터를 전송하도록 구성된 데이터 전송 컴포넌트;
상기 데이터 전송 컴포넌트와 통신하며, 데이터 패킷들에 대한(about) 데이터를 저장하도록 구성된 버퍼;
상기 데이터 전송 컴포넌트와 통신하며, 데이터 패킷의 데이터 세그먼트를 수신하도록 구성된 인터페이스;
상기 데이터 전송 컴포넌트, 상기 버퍼, 및 상기 인터페이스와 통신하는 제어기로서, 상기 제어기는, 상기 버퍼의 필 레벨에 기초하여, 상기 데이터 전송 컴포넌트가 상기 버퍼 내에 저장된 데이터를 전송하기 위해 사용할 수 있는 상기 결정된 대역폭의 제 1 양, 및 상기 인터페이스에서 상기 데이터 패킷의 후속 데이터 세그먼트가 수신되기 전에 상기 데이터 전송 컴포넌트가 상기 데이터 세그먼트를 이그레스 노드로 전송하기 위해 사용할 수 있는 상기 결정된 대역폭의 제 2 양을 결정하도록 동작가능한, 상기 제어기를 포함하는, 인그레스 노드.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261654395P | 2012-06-01 | 2012-06-01 | |
US61/654,395 | 2012-06-01 | ||
US13/610,165 US8989037B2 (en) | 2012-06-01 | 2012-09-11 | System for performing data cut-through |
US13/610,165 | 2012-09-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130137539A true KR20130137539A (ko) | 2013-12-17 |
KR101524860B1 KR101524860B1 (ko) | 2015-06-01 |
Family
ID=48520655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130063457A KR101524860B1 (ko) | 2012-06-01 | 2013-06-03 | 데이터 컷-스루를 수행하기 위한 시스템 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8989037B2 (ko) |
EP (1) | EP2670085B1 (ko) |
KR (1) | KR101524860B1 (ko) |
CN (1) | CN103457881B (ko) |
TW (1) | TWI530130B (ko) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103874049B (zh) * | 2014-03-31 | 2017-02-15 | 电信科学技术研究院 | 一种缓冲区状态上报bsr触发方法及装置 |
US9894013B2 (en) | 2015-02-03 | 2018-02-13 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Early queueing network device |
EP3477907A4 (en) * | 2016-07-12 | 2020-03-04 | Korea Electrotechnology Research Institute | COMMUNICATION DEVICE FOR DUPLICATION NETWORK AND ITS DATA PROCESSING METHOD |
WO2018037451A1 (ja) * | 2016-08-22 | 2018-03-01 | 三菱電機株式会社 | 通信装置および帯域制御方法 |
US10229533B2 (en) * | 2016-11-03 | 2019-03-12 | Mitsubishi Electric Research Laboratories, Inc. | Methods and systems for fast resampling method and apparatus for point cloud data |
JP6376229B2 (ja) | 2017-02-09 | 2018-08-22 | オムロン株式会社 | 通信システム、通信装置および通信方法 |
CN111431812B (zh) * | 2020-03-25 | 2022-04-01 | 新华三信息安全技术有限公司 | 一种报文转发控制方法及装置 |
EP4287562A4 (en) * | 2021-03-15 | 2024-07-17 | Huawei Tech Co Ltd | INTEGRATED CIRCUIT, CHIP AND ELECTRONIC DEVICE |
CN115622922A (zh) * | 2021-07-16 | 2023-01-17 | 中兴通讯股份有限公司 | 处理大流量协议报文的方法、系统及存储介质 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5491687A (en) | 1994-09-28 | 1996-02-13 | International Business Machines Corporation | Method and system in a local area network switch for dynamically changing operating modes |
JP2812295B2 (ja) | 1996-04-17 | 1998-10-22 | 日本電気株式会社 | セル転送装置 |
FR2759518B1 (fr) * | 1997-02-07 | 1999-04-23 | France Telecom | Procede et dispositif d'allocation de ressources dans un reseau numerique de transmission par paquets |
WO2000025463A1 (en) * | 1998-10-27 | 2000-05-04 | Fujitsu Network Communications, Inc. | Event based rate policing with a jumping window |
US6496516B1 (en) * | 1998-12-07 | 2002-12-17 | Pmc-Sierra, Ltd. | Ring interface and ring network bus flow control system |
US6795886B1 (en) | 2000-12-22 | 2004-09-21 | Ncr Corporation | Interconnect switch method and apparatus |
US20020118692A1 (en) | 2001-01-04 | 2002-08-29 | Oberman Stuart F. | Ensuring proper packet ordering in a cut-through and early-forwarding network switch |
US7406041B2 (en) * | 2001-07-31 | 2008-07-29 | Brocade Communications Systems, Inc. | System and method for late-dropping packets in a network switch |
US7441006B2 (en) * | 2003-12-11 | 2008-10-21 | International Business Machines Corporation | Reducing number of write operations relative to delivery of out-of-order RDMA send messages by managing reference counter |
US7729239B1 (en) * | 2004-12-27 | 2010-06-01 | Emc Corporation | Packet switching network end point controller |
US8149771B2 (en) * | 2006-01-31 | 2012-04-03 | Roundbox, Inc. | Reliable event broadcaster with multiplexing and bandwidth control functions |
US7986700B2 (en) * | 2006-09-25 | 2011-07-26 | Futurewei Technologies, Inc. | Multiplexed data stream circuit architecture |
US8068429B2 (en) * | 2007-05-31 | 2011-11-29 | Ixia | Transmit scheduling |
US8370721B2 (en) * | 2008-11-11 | 2013-02-05 | Celtro Ltd | Method and system for sensing available bandwidth over a best effort connection |
US8184540B1 (en) * | 2009-12-11 | 2012-05-22 | Juniper Networks, Inc. | Packet lifetime-based memory allocation |
US8340112B2 (en) * | 2010-03-25 | 2012-12-25 | International Business Machines Corporation | Implementing enhanced link bandwidth in a headless interconnect chip |
CN101834787A (zh) * | 2010-04-12 | 2010-09-15 | 中兴通讯股份有限公司 | 调度数据的方法和系统 |
-
2012
- 2012-09-11 US US13/610,165 patent/US8989037B2/en active Active
-
2013
- 2013-05-16 EP EP13002577.8A patent/EP2670085B1/en active Active
- 2013-05-24 TW TW102118418A patent/TWI530130B/zh active
- 2013-05-31 CN CN201310213892.9A patent/CN103457881B/zh active Active
- 2013-06-03 KR KR1020130063457A patent/KR101524860B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
CN103457881A (zh) | 2013-12-18 |
US20130322271A1 (en) | 2013-12-05 |
KR101524860B1 (ko) | 2015-06-01 |
US8989037B2 (en) | 2015-03-24 |
CN103457881B (zh) | 2017-03-01 |
EP2670085A1 (en) | 2013-12-04 |
TW201351933A (zh) | 2013-12-16 |
TWI530130B (zh) | 2016-04-11 |
EP2670085B1 (en) | 2015-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101524860B1 (ko) | 데이터 컷-스루를 수행하기 위한 시스템 | |
US11575609B2 (en) | Techniques for congestion management in a network | |
US9325637B2 (en) | System for performing distributed data cut-through | |
US9571402B2 (en) | Congestion control and QoS in NoC by regulating the injection traffic | |
US11099906B2 (en) | Handling tenant requests in a system that uses hardware acceleration components | |
US11381515B2 (en) | On-demand packet queuing in a network device | |
JP5335892B2 (ja) | パケット交換オンチップ相互接続ネットワークの高速仮想チャネル | |
US9225668B2 (en) | Priority driven channel allocation for packet transferring | |
JP6224244B2 (ja) | 作業密度を増加させ、エネルギー効率を向上させるための電力バランシング | |
US20160283283A1 (en) | Scheduling method and apparatus in multiprocessing environment | |
US8149846B2 (en) | Data processing system and method | |
US20090116381A1 (en) | Method and system for congestion management in a fibre channel network | |
US20110216669A1 (en) | System and Method to Enable Large MTUs in Data Center Ethernet Networks | |
US11689470B2 (en) | Allocation of processors for processing packets | |
CN104378308A (zh) | 报文发送速率检测方法及装置 | |
US20140036680A1 (en) | Method to Allocate Packet Buffers in a Packet Transferring System | |
US10715437B2 (en) | Deadline driven packet prioritization for IP networks | |
US11477122B2 (en) | Technologies for selecting non-minimal paths and throttling port speeds to increase throughput in a network | |
US10911366B2 (en) | Technologies for balancing throughput across input ports of a multi-stage network switch | |
JP2008181387A (ja) | I/oバスシステム及びその管理方法 | |
KR20130067900A (ko) | 네트워크 자원 제어 방법 및 그 장치 | |
JP6620760B2 (ja) | 管理ノード、端末、通信システム、通信方法、および、プログラム | |
US9424088B1 (en) | Multi-level deficit weighted round robin scheduler acting as a flat single scheduler | |
CN116418758A (zh) | 队列管理方法、装置、网络设备、芯片及存储介质 | |
Tseng et al. | An urgency and congestion control scheme for larger-scale TCP incast problem in data center |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20180511 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20190517 Year of fee payment: 5 |