KR101596143B1 - 네트워크 디바이스들을 위한 감소된 버퍼 사용을 갖는 흐름 제어 - Google Patents

네트워크 디바이스들을 위한 감소된 버퍼 사용을 갖는 흐름 제어 Download PDF

Info

Publication number
KR101596143B1
KR101596143B1 KR1020140071742A KR20140071742A KR101596143B1 KR 101596143 B1 KR101596143 B1 KR 101596143B1 KR 1020140071742 A KR1020140071742 A KR 1020140071742A KR 20140071742 A KR20140071742 A KR 20140071742A KR 101596143 B1 KR101596143 B1 KR 101596143B1
Authority
KR
South Korea
Prior art keywords
frame
ethernet
ethernet frame
station
link
Prior art date
Application number
KR1020140071742A
Other languages
English (en)
Other versions
KR20140145096A (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 KR20140145096A publication Critical patent/KR20140145096A/ko
Application granted granted Critical
Publication of KR101596143B1 publication Critical patent/KR101596143B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/245Traffic characterised by specific attributes, e.g. priority or QoS using preemption
    • 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

Abstract

본원은 네트워크 디바이스들에 대한 감소된 버퍼 사용을 갖는 흐름 제어를 구현하기 위한 방법들 및 장치에 관한 것이다. 흐름 제어 이벤트들의 검출에 응답하여, 이더넷 프레임과 같은 데이터 유닛 또는 세그먼트의 전송은 흐름 제어 메시지에 유리하게 선점되어, 프레임의 전송을 중단시킨다. 프레임의 전체에 대응하는 데이터는 프레임이 송신될 때까지(또는 지연 후에) 송신 스테이션에서 버퍼링되고, 중단된 프레임의 재전송을 가능하게 한다. 흐름 제어 메시지들에 유리한 프레임들의 선점은 흐름 제어 이벤트들에 대한 조기 응답들을 야기하고, 버퍼들의 크기를 감소시키는 것을 가능하게 한다.

Description

네트워크 디바이스들을 위한 감소된 버퍼 사용을 갖는 흐름 제어{FLOW CONTROL WITH REDUCED BUFFER USAGE FOR NETWORK DEVICES}
본 발명의 분야는 일반적으로 컴퓨터 네트워킹에 관한 것으로서, 이에 제한하는 것은 아니지만, 보다 상세히는, 네트워크 디바이스들을 위한 버퍼 사용이 감소되는 흐름 제어를 구현하는 기술에 관한 것이다.
컴퓨터 네트워크에의 액세스는 오늘날의 컴퓨터 사용의 편재하는 부분이 되었다. 공유 네트워크 리소스에 액세스 하기 위해 기업 환경 내 LAN(Local Area Network)에 액세스하는 것이든, LAN 이나 기타 액세스 포인트를 통해 인터넷에 엑세스하는 것이든 간에, 사용자들은 항상 컴퓨터 네트워크를 통해 엑세스되는 적어도 하나의 서비스에 로그온 되어 있는 것으로 보인다. 또한, 클라우드-기반 서비스들의 빠른 확장은 심지어 컴퓨터 네트워크의 추가의 사용을 유도하고, 이들 서비스는 점점 더 널리 퍼지게 될 것으로 예상된다.
기초 레벨에서, 네트워크 통신은 링크 파트너들의 쌍 간의 "링크"를 통해 용이하게 된다. 예를 들면, 이더넷에서 링크들은, 해당 링크의 맞은편 엔드들에 결합된 두 개의 디바이스들(예를 들면, 컴퓨터와 이더넷 스위치 또는 허브) 간의 통신을 용이하게 하기 위해 LAN에서 사용된다. 이들 링크들은 양방향의, 듀플렉스 링크들이다. 각 방향에 대해, 데이터의 패킷화된 스트림이 전송 디바이스의 송신기로부터 수신 디바이스의 수신기로 전송된다. 이더넷 스위치들은 다수의 포트들을 갖고 다수의 디바이스들에 연결되는 반면에, 각 "엔드포인트" 디바이스는 스위치의 하나의 맞은편 엔드, 다른 엔트포인트, 또는 다른 타입의 네트워크 요소에 연결된 하나 이상의 물리적 네트워크 포트들을 가질 수 있다.
네트워크 대역폭의 효과적인 사용을 용이하게 하기 위해, 다양한 흐름 제어 메커니즘이 사용된다. 예를 들면, 송신기와 수신기 간의 네트워크 통신 중에, 송신기가 데이터로 수신기를 압도하지 않도록 보장하기 위해 하나 이상의 흐름 제어 메커니즘이 사용될 수 있다. 패킷들이 수신됨에 따라 그것들은 패킷의 수신기-측 프로세싱에 관련된 수신기에 의해 일시적으로 버퍼링된다; 패킷들이 핸들링 될 방법 및 포트 및/또는 디바이스 혼잡과 같은 다른 고려사항들에 따라, 버퍼 리소스는 송신기 전송 속도를 지원하기에 불충분할 수 있어서, 수신된 패킷들이 폐기되게끔 만들 수 있다(통상 "드롭핑(dropping)" 패킷으로 부름). 두 가지 가장 일반적인 스킴들로는, 포인트-투-포인트 흐름 제어(예를 들면, MAC(Media Access Channel) 흐름 제어 데이터그램을 사용) 및 흐름 제어에 기반한 엔드-투-엔드 크레딧(예를 들어, TCP(Transmission Control Protocol) 전송 윈도우의 사용을 통함)이 있다. 이더넷 링크에서, 포인트-투-포인트 흐름 제어가 링크 파트너들의 각각의 쌍 간에 사용된다. 종래 흐름 제어의 보다 상세한 내용은 http://en.wikipedia.org/wiki/Ethernet_flow_control에서 입수가능하다.
본 발명의 많은 개시된 장점들 및 상술한 양태들은 그것들이 첨부 도면들과 관련한 이하의 상세한 설명을 참조하여 이해될 때 보다 쉽게 이해될 것인데, 도면에서 특정되지 않는 한 동일한 참조 부호가 다양한 뷰 전체적으로 동일한 부분을 참조한다.
도 1a-1d는 결과적으로 점보 프레임의 드롭핑이 되는 버퍼 오버필(over-fill)에 응답하여 흐름 제어를 수행하기 위한 종래의 접근법의 예시를 일괄하여 도시;
도 2a-2d는 보다 빠른 흐름 제어 응답을 돕고 프레임들의 드롭핑을 줄이기 위해 흐름 제어 메시지들이 점보 프레임들의 송신을 선점할 수 있는 본 발명의 실시예에 따른 제1 사용 케이스를 일괄하여 도시;
도 3a-3c는 스위칭 요소에 의해 수락될 수 없는 프레임들의 송신의 즉각적인 일시정지를 용이하게 하는 방식으로 스위칭 요소가 흐름 제어를 수행하도록 구성된 본 발명의 실시예에 따른 제2 사용 케이스를 일괄하여 도시; 및
도 4는 본원에 개시된 실시예들의 양태들을 구현하도록 구성된 예시적인 네트워크 스테이션에 대한 아키텍처를 도시하는 개략적인 다이어그램.
네트워크 디바이스를 위한 버퍼 사용이 감소되는 흐름 제어를 구현하기 위한 방법 및 장치의 실시예들이 개시된다. 이하의 개시에서는, 본 발명의 실시예들의 전체적 이해를 제공하기 위해 수많은 특정 상세들이 개시된다. 그러나, 관련분야의 당업자는 본 발명이 하나 이상의 특정 상세 없이, 또는 다른 방법, 컴포넌트, 물질 등으로도 수행될 수 있음을 인지할 것이다. 다른 예로서, 발명의 양태들을 불분명하게 하는 것을 피하고자, 공지의 구성들, 물질들, 또는 동작들은 상세한 설명에 개시되거나 설명되지 않는다.
본 명세서 전체의 "일 실시예" 또는 "실시예"의 참조는 실시예와 관련되어 설명된 특정 구성, 구조, 또는 특징이 본 발명의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, 본 명세서 전체의 다양한 위치에서 "일 실시예에서" 또는 "실시예에서"라는 구문이 등장하는 것은 반드시 모두 동일한 실시예를 지칭하는 것을 아니다. 또한, 특정 구성들, 구조들, 또는 특징들은 하나 이상의 실시예들에서 임의의 적절한 방식으로 조합될 수 있다.
흐름 제어는 어려운 문제이며, 특히 네트워크 토폴로지가 복잡한 경우 그러하다. 패킷 드롭이 발생하는 것을 감소시키기 위해, NIC들(Network Interface Controllers) 및 스위치들은, 최악의 상태를 대비해 사이징되고 종종 부족 사용중인(under-utilized) 버퍼 자원들을 이용하여 구성된다. 점 대 점 흐름 제어 하에서, 압도되는 수신기는, 수신기에게 보내는 데이터의 전송을 일시적으로 정지해 줄 것을 송신기에게 요청하는 흐름 제어 메시지들을 송신기에게 다시 보냄으로써 반응을 한다. 이것은 링크 상에 추가적인 트래픽을 유발하고, 링크 양 종단의 수신기들이 압도된 경우에는 데드록(deadlock)을 유발할 수 있다. 네트워크 토폴로지의 복잡성이 증가함에 따라 혼잡이 발생할 수 있는 지점들이 더 많아지며, 이에 의해 흐름 제어 메시지들 및/또는 드롭된 패킷들의 발생이 더 많아지게 된다. 이러한 문제들은 스위치들에서 악화되는데, 그 이유는 하나의 붐비는 포트에서 일시정지(pause)를 수신하면 스위치로 하여금 일시정지 패킷들을 다수의 포트들 상에 전송하게 만들 수 있기 때문이며 이는 문제를 증폭시킨다.
손실을 없애기 위해서, 수신기는, 송신기가 흐름 제어 메시지를 수신하고 흐름 제어 메시지에 따라 행동하는데 걸리는 시간을 보상할 만한 충분한 버퍼링을 보장할 필요가 있다. 이를 위해, 한 접근법 하에서는 높고 낮은 임계치들(종종 "워터마크들"로 칭해짐)을 유지한다. 상위 임계치에 도달되는 경우 수신기는 "일시정지" 프레임들을 전송하고, 하위 임계치들에 도달했을 경우는 멈춘다. 통상적으로, 높은 워터마크에 의해 보유되는 버퍼 공간은 링크 당 (또는 무손실 트래픽 유형 당 링크 당) 2개의 점보 프레임들인데, 그 이유는 (이제 "일시정지"를 전송할 필요가 있는) 수신기에서 흐름 제어 메시지는 그것이 전송될 수 있기 전에 전송을 중지하도록 점보 프레임을 기다릴 수 있고, 이제 송신을 중단할 필요가 있는 송신기는, 일시정지가 발생할 수 있기 전에 완료될 필요가 있는 제2 점보 프레임을 막 송신하기 시작할 수도 있기 때문이다.
도 1a 내지 도 1d는 앞선 상황의 예와 통상의 접근법을 사용하여 처리되는 방식을 도시한다. 이 예에서, 스테이션 A 와 B는 이더넷 링크와 같은 링크(100)를 통해 통신하도록 링크되어 있다. 링크(100)를 통한 통신을 지원하도록, 스테이션 A와 B 각각은 수신기들(102a 및 102b) 및 송신기들(104a 및 104b)로 도시된 바와 같이 적당한 송신기(Tx)와 수신기(Rx) 컴포넌트들을 갖는다. 스테이션 A 및 B 각각은 또한, Rx 버퍼 풀(106a 및 106b) 및 Tx 버퍼 풀(108a 및 108b)로 도시된 바와 같이, 2개의 버퍼 풀 - Rx 버퍼 풀과 Tx 버퍼 풀을 갖는다.
추가로 도시된 바와 같이, Rx 버퍼 풀(106a 및 106b) 각각은, 도면들에서 "클래스 1", "클래스 2"라고 라벨링된 상이한 클래스의 서비스를 취급하는데 사용되는 버퍼들을 포함한다. 일반적으로, 각각의 Rx 버퍼 풀은 다수의 클래스들을 지원하도록 구성될 것이다; 편의상 그리고 공간 제약상, 본원에서는 클래스 1 및 클래스 2 Rx 버퍼들에 대한 기술은, 임의의 수의 Rx 버퍼 풀 클래스들을 나타내도록 사용된다.
스테이션 A 및 B는 링크(100)를 통해 양방향 듀플렉스 통신을 지원하도록 구성된다. 도시된 바와 같이, 스테이션 A는 패킷 스트림(110)을 스테이션 B에 전송하며, 스테이션 B는 패킷 스트림(112)을 스테이션 A에 전송한다. 도 1a 내지 도 1d에 공동으로 도시된 패킷 스트림(110) 부분은 다음의 프레임들을 (순서대로) 포함한다: 1A, 점보 프레임 1, 점보 프레임 2, 2A, 3A, 점보 프레임 3, 4A 및 5A. 도 1a 내지 도 1d에 공동으로 도시된 패킷 스트림(112) 부분은 다음의 프레임들을 (순서대로) 포함한다: 점보 프레임 5, 점보 프레임 6, 1B, 점보 프레임 7, 점보 프레임 8, 2B, 3B 및 점보 프레임 9.
Tx 버퍼들은, MAC 프레임들(예컨대, 이더넷 링크에 대한 이더넷 프레임)과 같이, 링크(100)를 통해 전송되는 세그먼트들에 내장될 패킷화된 데이터를 일시적으로 버퍼링하는데 사용된다. 수신단에서, Rx 버퍼들은 수신기(예컨대, 이더넷 NIC 또는 네트워크 어댑터 상의 Rx 포트)에서 수신되고 수신된 프레임들로부터 추출된 패킷화된 데이터를 일시적으로 버퍼링하는데 사용된다. 일 실시예 하에서, 스테이션 A 및 B 각각은, 소프트웨어 기반 네트워킹 기능을 갖춘 운영체제가 실행되는 컴퓨터들이다. 이러한 네트워킹 기능은 아웃바운드 패킷 스트림을 발생시키고 수신된 인바운드 패킷 스트림을 처리하는데 모두 사용된다. 일 접근법하에서, 아웃바운드 패킷 스트림은 소프트웨어 기반 네트워킹 기능에 의해 생성되고 시스템 메모리에 저장된다. 네트워크 어댑터 또는 NIC의 Tx 버퍼들이 이용가능해질 때, 패킷 스트림의 부분들이, 예컨대, DMA(direct memory access) 판독 동작을 통해, 시스템 메모리로부터 대응하는 Tx 버퍼로 카피된다. 그 후에, Tx 버퍼 풀에 기록되는 패킷 스트림 부분은 네트워크 어댑터/NIC에 의해 어셈블링된 이더넷 프레임들읕 통해 전송된다.
통상의 한 접근법 하에서, Tx 버퍼 풀은 FIFO(First-in, First-out) 버퍼로서 구현될 수 있고, 패킷화된 데이터가 전송되는 순서가 패킷화된 데이터가 FIFO에 기록되는 순서를 미러링하도록 동작된다. 일부 예들에서, 도 1a 내지 도 1d에 도시된 바와 같이, 순환형 FIFO가 사용된다. 더 크거나 다수의 Tx 버퍼들이 사용되는 경우에, 더 작은 FIFO 또는 그와 유사한 것이 별도의 Tx 버퍼들에 저장된 데이터에 대한 포인터들을 저장하는데 사용될 수 있다. 본원의 도면들에 도시된 Rx 및 Tx 버퍼들에서, 각각의 버퍼 또는 "슬롯"은 1500 바이트의 크기를 가지며, 이는 통상의 이더넷 프레임의 최대 페이로드 사이즈이다; 그러나, 이 사이즈는 단지 예의 목적을 위한 예시적인 것일 뿐이다. 일 실시예에서, 그 크기는 링크 파라미터들에 의해 설정되며, 일례는 1500에 프로토콜 오버헤드를 위한 조그마한 할당(예컨대, 1-2%)이 플러스된다. 점보 이더넷 프레임들은 대략 9K 바이트의 최대 페이로드를 가지며, 따라서 각각 6개의 버퍼 슬롯을 차지한다. 2개 이상의 버퍼 슬롯을 차지하는 것으로 도시되었지만(따라서 이들의 라벨들도 핏팅될 것임), 본원에 도시된 통상의 프레임들 1A, 2A, 3A, 4A, 5A, 1B, 2B 및 3B는 실제로 1500 바이트이거나 또는 더 작은 크기이다. 본 기술 분야에서 통상의 지식을 가진 자라면, 버퍼 슬롯의 사이즈가 1500 바이트와 다를 수 있고, 본원에서 1500 바이트를 사용하는 것은 단순히 예시적이라는 점을 인식할 수 있을 것이다.
Rx 버퍼들은, 수신기에 수신된 이더넷 프레임들을 통해 전달되는 인커밍 패킷들을 일시적으로 버퍼링하는데 사용된다. 프레임이 도착하면, 패킷화된 데이터가 프레임으로부터 추출되고 MAC 계층에서 수행되는 "디-패킷" 동작 동안에 Rx 버퍼들에 기록된다. Tx 버퍼들과 마찬가지로, Rx 버퍼들은 원형 버퍼들과 같은 FIFO 버퍼들을 포함할 수 있다. 다른 타입의 Rx 버퍼들고 사용될 수 있다. Rx 버퍼들 내의 패킷화된 데이터는 (예를 들면,DMA 기록을 통해) 시스템 메모리에 복사되며, 여기서 데이터는 소프트웨어 기반 네트워킹 시설의 수신측에 의해 액세스되어 추가적인 패킷 처리 동작을 수행할 수 있다.
도 1a 내지 도 1d에 도시된 바와 같이, 각각의 Rx 버퍼 풀 클래스는 두 개의 점보 프레임을 저장할 수 있는 크기로 되어 있다. 이는 혼잡 이벤트가 감지되는 동안의 전송 시퀀스 동안에 동일한 클래스의 서비스에 대응하는 다수의 점보 프레임들이 연이어 수신될 수 있는 최악의 경우를 해결하기 위함이지만, 동일한 클래스의 후속 점보 프레임이 전송되는 것을 막기 위해 대응하는 흐름 제어 메시지가 제시간에 전송되지 않아서 버퍼 오버플로우를 발생시킬 수 있다.
도 1a 내지 도 1d에 도시된 도면에서, 패킷 스트림들은 Tx 및 Rx 버퍼들을 통해 앞으로 진행하고 있는 것으로 도시되어 있다. 실제로, 데이터 자체는 FIFO 버퍼 내에서 이동하지 않고, 오히려 헤드 및 테일 포인터로 불리는 한 쌍의 포인터들이 이동하여 버퍼의 헤드 및 버퍼의 테일을 새로운 슬롯 위치로 진행하게 한다. 원형 FIFO에 대해서는, 포인터가 FIFO의 끝에서부터 FIFO의 시작으로 순환 방식으로 래핑(wrap)하는데, 그 이름은 여기서 유래한 것이다.
다시 도 1a를 참조하면, 이 도면은 제시간에 프레임 1A 및 점보 프레임 1이 스테이션 A로부터 전송되고 스테이션 B에서 수신되고 버퍼링되는 제1 포인트를 도시하며, 이 시점에서 점보 프레임 5 및 6은 스테이션 B로부터 전송되고 스테이션 A에서 수신되고 버퍼링된다. 기존의 접근 방식에서, 점보 프레임에 대한 페이로드의 각각의 1500 바이트 부분이 송신기의 프레임화 로직에 기록되면, 대응하는 버퍼 슬롯은 FIFO 헤드 및 테일 포인터들을 앞으로 진행하게 함으로써 사용 가능한 만큼 플래그된다. 예를 들면, 이것은 도 1d에 도시되어 있으며, 여기에는 점보 프레임 3의 대략 절반이 링크(100)를 통해 전송되었고, 점보 프레임 3에 이후에 추가될 패킷 데이터를 저장하는 3개의 버퍼 슬롯만이 있다. 또한, 점보 프레임에 대한 페이로드가 프레임화 로직에 의해 처리되기 시작하면, 전체 점보 프레임 상당의 페이로드는 중단 없이 전송될 것이다.
도 1a의 스테이션 A의 위쪽에 도시된 바와 같이, Rx 버퍼 풀(106a)의 클래스 1의 모든 12개 버퍼 슬롯들은 점보 프레임 5 및 6의 페이로드 데이터들이 점유하고 있다. 그 결과, 하이 임계값 또는 워터마크에 도달한다. 이에 대응하여, 스테이션 A는 스테이션 B가 링크(100)를 통한 스테이션 A로의 프레임 전송을 일시적으로 중지하라는 요청을 하기 위해 흐름 제어(FC) 메시지를 스테이션 B에 전송할 필요가 있다. 하나의 접근 방식에서, 흐름 제어는 Rx 버퍼 풀(106a) 충전 레벨(fill level)이 로우 임계값 또는 워터마크에 도달할 때까지 하나 이상의 PAUSE 프레임을 전송함으로써 이루어진다.
도 1b는 FC 메시지를 전송하는 것과 관련한 더욱 자세한 사항을 도시하고 있다(도면에 도시된 바와 같이 "FC"는 검은 바탕에 흰 글자임). 도시된 종래의 접근 방식에서, FC 메시지는 제1 이용가능한 패킷간 갭에서 전송된다. 이 경우, FC 메시지는 점보 프레임 2에 대한 모든 페이로드가 송신기(104a) 밖으로 전송된 후에 전송될 것이다.
도 1b에 추가로 도시된 바와 같이, 하이 임계값이 감지되는 시간과 로직이 FC 메시지가 삽입되어야 하는지를 판단하는 시간 사이에 유한한 시간 지연이 존재한다. 이 시간 동안, 점보 프레임 2와 프레임 1B 각각의 시작을 위한 전송은 (도 1a에 도시된 것에 대하여) 해당되는 수신기를 향해 진행하고 있는 것으로 도시되어 있다. 도면에 도시된 바와 같이, 굵은 윤곽선으로 도시된 패킷 스트림의 부분은 프레임화된 패킷들을 나타낸다. 또한, 버퍼 진행 속도와 링크를 통하여 전송되는 데이터의 속도(즉, 빛의 속도)의 상대적인 시간 척도를 양자 모두의 허용된 드로잉 공간에서 동일한 척도를 사용하여 나타내는 것이 불가능할 것이기 때문에, 데이터가 링크를 통하여 전송되고 있을 때, 프레임을 식별하기 위해 사용되는 문자들은 링크를 통과하는 시간의 양이 (나노 초 정도로) 매우 작음을 표시하기 위해 분산된다.
도 1c는 제시간에 FC 메시지(예를 들면, PAUSE 프레임)가 스테이션 B에서 수신되고 버퍼링된 후의 포인트를 도시하고 있다. 도시된 바와 같이, FC 메시지는 점보 프레임 2의 뒤에 있다. 한편, 도 1b와 도 1c 사이의 기간 동안에, 스테이션 A는 점보 프레임 5 및 6에 대한 페이로드 데이터를 시스템 메모리(도시되지 않음)로 DMA화 하고, 프레임 1B 및 점보 프레임 7을 수신하고 버퍼링하고, 점보 프레임 8을 수신하려고 한다. 또한, 스테이션 B는 점보 프레임 8의 전송을 개시한다.
도 1d에 도시된 바와 같이, 기존의 접근 방식에서, PAUSE 프레임을 수신하면 스테이션 B는 전송되고 있는 현재 프레임의 끝에서 프레임 전송을 중지할 것이며, 이 예는 점보 프레임 8이다. PAUSE 프레임이 수신되는 시간과 스테이션 B가 프레임 전송을 중지하는 시간 사이의 지연 동안, 점보 프레임 8은 수신기(102a)에 도착하고 점보 프레임 8의 패킷 페이로드는 버퍼링되기 시작한다. 그러나, 프레임 1B, 점보 프레임 7, 및 점보 프레임 8에 대한 모든 페이로드 데이터가 들어가기에 충분한 공간이 없기 때문에, 모든 프레임은 삭제되며, 이는 프레임에 대한 CRC가 수행될 수 없기 때문이다.
전술한 바와 같이, 기존의 동작에서, NIC 또는 네트워크 어댑터의 송신측은 주어진 버퍼의 데이터가 프레임화 로직에 전송되자마자 또는 모든 프레임이 송신될 때까지 점보 프레임에 대한 버퍼링된 패킷 데이터를 폐기한다. 그에 반해서, 현재 설명된 실시예에서, 프레임이 전송된 후의 프리셋 시간의 양은 유지된다. 예를 들면, Tx FIFO 버퍼에 대해서, 점보 프레임에 대한 패킷화된 페이로드 데이터가 프레임화 되고 송신기의 밖으로 전송되는 동안 Tx FIFO 버퍼에 대한 테일 포인터는 모든 점보 프레임이 전송될 때까지 진행되지 않으며, 이 시점에서 테일 포인터는 6개의 버퍼 슬롯에 의해서 진행된다. 결과적으로, (프레임되고 전송된) 현재 프레임에 대응하는 패킷 데이터를 버퍼링하는데 사용되는 버퍼 슬롯(들)은 사용불가능한 것으로 플래그된 것으로 유지되어, 이들 슬롯들이 전송된 패킷 스트림들의 추후 패킷들에 대응하는 데이터로 재기입되는 것을 방지한다. 이것은 프레임들의 전송이 중단되게 하고, 그 후에 데이터의 손실 없이 재전송 가능하게 한다. 이것은 또한 이하에서 설명되는 바와 같이, 흐름 제어 메시지들이 점보 프레임들의 우선적인 전송에 의해 링크 파트너로 즉시 전송되는 것을 가능하게 한다.
이러한 독창적인 접근법의 제1 사용 케이스는 도 2a 내지 도 2d에서 도시된다. 이전 예시와 유사한 방식으로, 데이터는 스테이션 A와 B 사이에서 양방향 듀플렉스 링크(200)를 통해 이동된다. 스테이션 A 및 B 각각은 수신기들(202a 및 202b) 및 송신기들(204a 및 204b)에 의해 도시된 바와 같이, 적용가능한 송신기(Tx) 및 수신기(Rx)를 갖는다. Rx 버퍼 풀(206a 및 206b) 및 Tx 버퍼 풀(208a 및 208b)에 의해 도시된 바와 같이, 스테이션 A 및 B 각각은 또한 다수의 클래스로 파티셔닝되어있는 버퍼들을 갖는 Rx 버퍼 풀 및 Tx 버퍼 풀을 갖는다. 스테이션 A는 스테이션 B에 패킷 스트림(210)을 전송하는 반면, 스테이션 B는 스테이션 A에 패킷 스트림(212)을 전송한다.
도 2a 내지 도 2d에서 또한 도시된 바와 같이, 각각의 클래스에 대한 Rx 버퍼들의 크기는 도 1a 내지 도 1d에서 도시되고 위에서 논의한 종래의 크기에 비해 감소된다. 도시된 실시예에서, 각각의 클래스에 대한 Rx 버퍼의 크기는 점보 프레임의 크기와 동일하지만, 이는 예시적일 뿐이지 제한하기 위함은 아니며, 다른 크기들도 사용될 수 있다. 아래에서 증명될 바와 같이, 버퍼 오버플로우를 또한 설명하는 동안, 도 2a 내지 도 2d에서 구현된 스킴은 Rx 버퍼들의 각각의 클래스의 크기가 종래의 접근법에 비해 감소되게 할 수 있다.
Rx 버퍼 풀(206)의 클래스(1)가 점포 프레임(6)을 버퍼링하고 있다는 것을 제외하고, 도 2a는 도 1a에서 도시된 것에 대해 어느 정도 아날로그적인 초기 데이터 이동 조건을 설명한다. 도 1a에 대해 위에서 설명된 것과 유사한 방식으로, 스테이션 A에 대한 Rx 버퍼 풀(206a)은 높은 임계값에 도달하였고, 스테이션 B가 링크(200)를 통해 프레임들을 전송하는 것을 중단할 것을 요구하는 FC 메시지를 스테이션 B에 전송하는 것을 요구한다.
계속해서 도 2b에서, 높은 임계값 조건을 인식할 때, 스테이션 A는 링크(200)를 통한 전송을 중지하기 위해 스테이션 B에 FC 메시지를 즉시 전송하도록 인에이블된다. 도시된 실시예 하에서, 이것은 점보 프레임(2)의 전송을 중지하고, 링크(200)를 통해 송신기(204a)로부터 FC 메시지(예를 들어, PAUSE 프레임)를 즉각 전송함으로써 달성된다. 실제로는, 점포 프레임의 전송은 FC 메시지를 위해 사전에 시행된다. 일반적으로, 점보 프레임이 중지된 경우, 프레임의 헤더 및 프레임의 페이로드의 일부는 이미 전송되었을 것이다. 일 실시예에서, 점보 프레임의 전송을 중지하는 것과 관련하여, 프레임 체크 시퀀스 CRC(cyclic redundancy check)는 줄여진(truncated) 프레임에 첨부되고, 미리 결정된 값에 설정되며, 또는 그렇지 않은 경우, 줄여진 점보 프레임이 수신된 경우 수신기 내의 MAC 레이어 로직이 프레임 데이터가 오류가 있다는 것을 감지하고, 프레임 전송이 중지되기 전에 전송된 점보 프레임의 일부를 폐기하도록 정확하지 않은 값에 의도적으로 설정된다. 다른 실시예에서, MAC 레이어 로직은 (예를 들어, 부정확한 길이를 감지하고, 프레임 체크 시퀀스 CRC를 감시하는 것 등에 의해) 그것이 불완전한 프레임을 수신하였다는 것을 감지하도록 구성된다. FC 메시지를 전송하기 전에, 프레임간 갭 표시(indicia)(예를 들어, 아이들 라인 상태의 96 비트들)가 또한 전송될 것이다.
전술한 동작들의 결과는 도 2c에 도시되며, (참조 번호 214에 의해 식별된 바와 같이) 전송된 점보 프레임(2)의 일부는 폐기된다. 페이로드 데이터의 이 일분은, 데이터를 Rx 버퍼 풀(208b)의 클래스 1 버퍼들에 기입하지 않거나, 데이터를 클래스 1 버퍼들에 기입하고 (도시된 바와 같이) 그것을 불량으로 마킹함으로써 폐기될 수 있다. 예를 들어, 프레임이 수신됨으로써, 그것의 페이로드 데이터는 플라이 상의 이용가능한 Rx 버퍼에 기입된다. 프레임 체크 시퀀스 CRC는 프레임의 종단에 있기 때문에, CRC를 계산하기 전에 수신된 페이로드 데이터의 일부분은 이미 버퍼링 되었을 것이다. 따라서, 이 데이터는 손상된 것으로 마킹된다.
도 2d에 도시된 바와 같이, FC 메시지를 수신하는 것에 응답하여, 현재 전송된 프레임이 점보 프레임인 경우, 그것의 전송은 즉각 정지되며, 점보 프레임의 전송을 중지되게 한다. 일 실시예에서, 현재 전송된 프레임이 종래의 프레임인 경우, 프레임의 전송은 그것이 완료될 때까지 계속되며, 그 포인트에서 전송이 일시 정지될 것이다. 이전과 같이, 이미 전송된 중지된 점보 프레임의 줄여진 부분은 수신기 측에서 폐기될 것이다(즉, 스테이션 A의 수신기(202a)에서 수신된 경우).
위에서 논의된 바와 같이, 점보 프레임에 대한 페이로드 데이터의 그 어떤 것도 전체 프레임이 전송되고 난 이후 까지는 폐기되지 않기 때문에, 중지된 점보 프레임의 데이터의 전체는 버퍼링된 것으로 유지된다. 결과적으로, 이 데이터는 재전송을 위해 이용가능하다. 일 실시예에서, FC 메시지가 즉각 전송될 수 있도록 중지된 점보 프레임은 FC 메시지의 전송에 후속하여 재전송된다. 이 결과는 도 2c에서 도시되며, 점보 프레임(2)이 링크(200) 상에서 전송 중인 동안, 이 포인트에서 FC 메시지는 스테이션 B의 수신기(202b)에서 수신되었고, Rx 버퍼 풀(208B)의 클래스 1 버퍼들 내에서 버퍼링된다. 유사하게, PAUSE 프레임에 의해 식별된 정지 지속 기간의 만료 시에(또는 다수의 PAUSE 프레임들이 순서대로 전송되었을 때, 모든 PAUSE 프레임들의 정지 지속 기간이 만료된 경우), 스테이션 B는 전송 동작을 재개할 것이다. 일 실시예에서, 전송에서의 정지에 관련하여 중지된 점보 프레임에 후속하는 전송 재개시에, 송신기는 점보 프레임을 재전송할 것이다.
다른 사용 케이스 하에서, 스위치 또는 라우터와 같은 스위칭 소자로 개선된 흐름 제어 및 버퍼 관리가 구현된다. 일 실시예 하에서, 송신 스테이션(예를 들어, 종단 스테이션 또는 다른 스위치나 라우터)은 제1 링크를 통하여 스위치/라우터와 통신한다. 2개의 링크 파트너는 스위치/라우터로 하여금 프레임을 전달하는 데에 사용되는 출구 포트가 혼잡하거나 또는 (프레임의 MAC 목적지 어드레스에 의해 식별되는) 목표 스테이션이 일시적으로 도달불가함을 송신 스테이션에 보고할 수 있게 해주는 NACK(Negative ACKnowledgement) 피드백 스킴을 사용한다. 또한, NACK 피드백 스킴은, NACK 메시지가 송신 스테이션으로 전송되는 점보 프레임이 NACK 메시지에 유리하게(in favor of) 선점될 수 있게 하도록 구현된다. NACK 메시지의 수신 시에, 송신 스테이션은 프레임 전송을 계속하는 것을 즉시 중단한다. 일 구현 하에서, 이러한 접근법은 송신기가 (한 정규 패킷(regular packet)에 대한 전송 시간에 따라) 패킷들의 송신이 완료된 이후에 사전설정된 기간이 경과한 후에는 패킷들을 폐기하기만 하도록 강화된다(augmented). 대안으로, 또는 추가로, 특정 클래스 및/또는 스위치 출구 포트의 패킷들을 전달하는 프레임들에 대한 전송은 일시적으로 정지되는 한편, 다른 클래스에 속하거나 혼잡하지 않은 출구 포트들에 의해 도달가능한 목적지 어드레스들을 가지는 패킷들을 전달하는 프레임들은 정지된 프레임들을 건너뛰도록(jump) 허용될 수 있다.
이 사용 케이스의 예시적인 구현이 도 3a 내지 3c에 도시된다. 도시된 바와 같이, 스위치/라우터(301)는 송신 스테이션(303)과 링크되어 통신하는데, 이 송신 스테이션(303)으로는 양방향 듀플렉스 링크(300)를 통하는 종단 스테이션, 또는 다른 스위치나 라우터 중 하나를 포함한다. 본원 명세서에서는 송신 스테이션이라고 언급되어 있지만, 송신 스테이션(303)은 스위치/라우터(301)로부터 프레임들을 수신하기도 하고, 이 둘이 앞서 기술한 스테이션 A 및 B와 유사하게 링크 파트너들의 쌍을 구성한다는 점을 유의한다.
이전과 같이, 이 두 링크 파트너는, 수신기(302a 및 302b) 및 송신기(304a 및 304b)로 도시된 바와 같이, 해당되는(applicable) 수신기 및 송신기 컴포넌트들을 포함한다. 송신 스테이션(303)은 Tx 버퍼 풀(306b) 및 Rx 버퍼 풀(308b)을 포함하고, Tx 패킷 스트림(312)을 스위치/라우터(301)로 전송하고 스위치/라우터(301)로부터 Tx 패킷 스트림(310)을 수신한다.
스위치/라우터(301)는 Rx 버퍼 풀(306a) 및 Tx 버퍼 풀(306b)을 포함한다. 이것은 또한, 컴포넌트 세트 314-2, 314-3, 314-4 및 314-5로 도시된 바와 같이, 4개의 링크(2, 3, 4 및 5) 각각에 대한 네트워킹 컴포넌트들 및 버퍼들(314)의 세트를 포함한다. 이들 컴포넌트 세트 각각은 수신기(302), 송신기(304), Rx 버퍼 풀(306) 및 Tx 버퍼 풀(308)을 포함한다. 스위치/라우터(301)는 해당되는 출구 포트들을 통해 수신된 프레임들을 전달하기 위한 스위칭 로직을 더 포함한다. 링크(300)를 통해 수신된 프레임들에 대하여, 스위칭 로직은 4-포지션 스위치(316)로 도시된다. 또한, 스위치/라우터(301)는 클래스 전용(per-class) 버퍼 풀들 및/또는 공유 버퍼 풀들과 같은 추가적인 버퍼 풀들(도시 생략)을 포함할 수 있다. 또한, 스위치/라우터에 대한 Rx 및 Tx 버퍼 풀들은 종단 스테이션에 대한 대응하는 Rx 및 Tx 버퍼 풀들보다 커질 수 있다.
도 3a에 도시된 스테이트에서, 점보 프레임 5 및 프레임 1B가 Rx 버퍼 풀(306a)에 수신되고 버퍼링되었으며, 점보 프레임 6은 그 프레임 헤더가 스위치/라우터(301)에 바로 수신되면서 송신 스테이션(303)으로부터 전송되었다. 또한, 송신 스테이션(303)은 점보 프레임 1을 수신하고 버퍼링하였고, 점포 프레임 2의 대략 1/2을 수신하고 버퍼링하였다. Tx 버퍼 풀(308a)에 의해 또한 도시된 바와 같이, 스위치/라우터는, 전체 점포 프레임이 송신기(304a)로부터 전송될 때까지 점보 프레임의 어떤 부분도 그에 대한 패킷 데이터를 폐기하지 않도록 구성된다. 예를 들어, 점보 프레임 2의 1/2이 전송되었더라도, 프레임들의 패킷 데이터에 대한 6개의 버퍼 슬롯 모두가 이용불가능한 상태로 표시되는 것은 아니다.
점보 프레임 5에 대한 프레임 헤더를 수신하는 것에 응답하여, MAC 목적지 어드레스가 즉시 검사되고, 스위치/라우터(301)에 의해 프레임이 링크 5를 통해 전달되어야 한다는 스위칭 판정이 이루어진다. 일 실시예에서, 이 스위칭 판정은 프레임의 제1 부분이 수신된 후 대략 200 나노초가 걸린다. 도시된 예에서, 링크 5에 대한 출구 Tx 포트는 링크 혼잡에 의해 이용가능하지 않거나 또는 링크 5의 다른쪽 종단에 있는 목표 스테이션(도시 생략)은 일시적으로 도달불가하다. 일 실시예에서, 스위칭 로직(또는 다른 로직)은 또한 (예를 들어, 공유 버퍼 풀 또는 클래스 전용 버퍼 풀을 이용하는) 점보 프레임 6에 대하여 이용가능한 버퍼 공간이 없다고 판정하거나, 그렇지 않으면 점보 프레임 6에 대응하는 클래스의 우선순위가 프레임을 수락하기 위한 해당되는 버퍼 이용 기준을 만족하지 않는다고 판정한다.
상술한 동작들의 결과로서, 스위치/라우터(301)의 로직은 점보 프레임 6이 드롭되어야 한다고 판정한다. 이 판정에 관련하여, 현재 (링크(300)를 통하여 송신 스테이션(303)으로) 전송된 프레임이 점보 프레임이라면, 점보 프레임 2의 전송이 즉시 중단되고, NACK 메시지가 송신 스테이션(303)으로 송신된다. 이 시점에서는 점보 프레임 2에 대한 버퍼링된 데이터 중 어느 것도 폐기되지 않았기 때문에, 점보 프레임 2는 재전송이 가능하다.
계속하여 도 3b를 참조하여 보면, 이 스테이스에서 송신 스테이션(303)에서 NACK 메시지가 수신되었다. 또한, NACK 메시지의 전송 다음에 점보 프레임 4이 (그 전체가) 재전송되었다. 일반적으로, NACK 메시지는 프레임을 식별하고 이 프레임이 성공적으로 전송되지 않았음 (또는 다른 경우 폐기되었음)을 나타내는 정보를 포함하는 대응 프레임에 관련된 부정적 수신확인을 포함한다. 일 실시예에서, NACK 메시지는 또한 NACK 메시지에 의해 식별된 프레임을 재전송하지도 않고 또는 폐기된 프레임에 포함된 것과 동일한 MAC 목적지 어드레스를 가지는 어떠한 추가적인 프레임들도송신하기 않기 위하여 (NACK의) 수신 유닛을 요청하는 타임아웃 값을 포함한다. 송신 스테이션(303)이 다른 스위치 또는 라우터인지의 여부 및 구현에서 사용되는 로직의 세련도에 따라서, 송신 스테이션은, 점보 프레임(6)이 (이용가능하지 않은) 링크(5)를 통해 전달될 예정이었는지 및 NACK 타임아웃이 링크(5)를 통해 전달될 예정인 임의의 프레임들에 적용가능한지를 결정하도록 구성될 수 있다. 선택적으로, NACK 타임아웃은 클래스당 기반으로 구현될 수 있다. 또 다른 옵션으로서, NACK 메시지는 타임아웃 값을 포함하지 않고, 단지 점보 프레임의 전송이 성공적이지 않았다는 것을 식별한다.
NACK 메시지의 처리에 응답하여, 도 3b의 우상부 쪽으로 도시된 바와 같이, 점보 패킷(6)의 전송은 즉시 취소된다. 타임아웃이 사용되는 실시예들에서, 송신 스테이션(303) 상의 타임아웃 타이머(318)가 NACK 메시지 내의 타임아웃 값으로 설정되고 시작된다. 도 3b는 이전에 수신되어 버퍼링되었던 점보 프레임(2)의 부분이 폐기되는 것을 더 도시한다.
점보 프레임(6)의 전송이 취소되었지만, 그 패킷 데이터의 전체는 여전히 Tx 버퍼 풀(208b) 내에 버퍼링되고 재전송에 이용가능하다. 그러나, NACK 타임아웃 기법 하에서는, 타임아웃 타이머(318)가 만료될 때까지는 그것이 재전송되지 않을 것이다. 선택적으로, 특정한 (NACK 메시지 내의) 타임아웃 값을 채용하지 않는 NACK 방식 하에서는, 취소된 점보 프레임은 미리결정된 시간이 만료될 때까지, 또는 다른 미리정의된 기준에 기초하여 재전송되지 않을 수 있다. 그 동안, 다른 프레임들이 송신 스테이션(303)으로부터의 전송에 이용가능해진다. 사실상, 이들 프레임은 NACK 메시지에 대응하는 중단된 점보 프레임을 점프하도록 허용된다.
도 3c는 점보 프레임(7) 및 프레임(1C)이 중단된 점보 프레임(6)을 점프하고 송신 스테이션(303)으로부터 전송되었으며 스위치 라우터(301)에 의해 수신되어 버퍼링된 후의 상태를 도시한다. 또한, 이 상태에서 타임아웃 타이머(318)는 만료되었다. 따라서, 점보 프레임(6)은 재전송에 이용가능해지고, 타임아웃 타이머(318)가 만료되었을 때 현재 전송되고 있던 임의의 프레임의 완료에 이어서 재전송된다. 보다 일반적으로, 이용가능하지 않은 목표 스테이션을 식별하는 NACK가 수신되면, 다른 패킷들은 그들의 목표 스테이션들이 이용가능하지 않은 목표 스테이션과 동일하지 않은 경우 전송될 수 있다.
앞서 언급한 NACK 기법은 점보 프레임들과 함께 사용하기 위한 예들로서 예시되었지만, 이것이 점보 프레임들로 제한된다는 것을 의미하지는 않는다. 오히려, 이러한 기법은 실질적으로 임의의 패킷 사이즈 또는 데이터 분할 방식과 함께 구현될 수 있다.
도 4는 본 명세서에서 개시된 실시예들의 양태들을 구현하도록 구성된 송신기 회로를 포함하는 네트워크 어댑터 또는 NIC 칩(402)을 포함하는 장치를 채용하는 네트워크 스테이션(400)에 대한 예시적인 아키텍처를 도시한다. 네트워크 어댑터/NIC 칩(402)은 PHY 회로(404), MAC 모듈(406), 메모리(408), 패킷 및 프레임 핸들링 로직(410), DMA 인터페이스(412) 및 PCIe(Peripheral Component Interconnect Express) 인터페이스(414)를 포한한다. PHY 회로(404)는 송신기 회로(418)를 포함하는 송신기 포트(416) 및 수신기 회로(422)를 포함하는 수신기 포트(420)를 포함한다. MAC 모듈(406)은 프레임화 로직(424) 및 역프레임화 로직(426)을 포함한다. 메모리(408)는 동작 중에 Rx 버퍼 풀(428) 및 Tx 버퍼 풀(430)을 포함하도록 구성된다. 패킷 및 프레임 로직(410)은 일반적으로 패킷들 및 프레임들을 처리하기 위한 로직을 포함한다. 종래의 패킷 및 프레임 핸들링 로직(도시되지 않음)에 추가하여, 패킷 및 프레임 핸들링 로직(410)은 점보 프레임 로직(432) 및 NACK 로직(434)을 포함한다.
예시된 실시예에서, 네트워크 스테이션(400)은 또한 상호 접속(444)을 통해 메모리 인터페이스(440) 및 PCIe 인터페이스(442)에 결합된, 하나 이상의 프로세서 코어들을 갖는 중앙 처리 유닛(CPU)(438)을 포함하는 시스템 온 칩(SoC)(436)을 포함한다. 메모리 인터페이스(440)는 또한 메모리(446)에 결합된 것으로서 도시된다. 통상의 구현 하에서, 네트워크 어댑터/NIC 칩(402), SoC(436) 및 메모리(446)는 회로 보드(448)에 장착되거나 또는 달리 동작가능하게 회로 보드에 결합될 것이며, 회로 보드는 DMA(412)를 메모리(446)에 접속시키고, PCIe 인터페이스(414)를 PCIe 포트(450)에서 PCIe 인터페이스(442)에 접속시키는 단일 선들에 의해 도시된 바와 같이, 이들 컴포넌트들을 통신적으로 결합시키는 배선들을 포함한다.
네트워크 스테이션(400)은 또한 이더넷 링크(454)를 통해 링크 파트너(452)에 통신적으로 링크된 것으로서 도시된다. 링크 파트너는 단순함을 위해 Rx 포트(456) 및 Tx 포트(458)만을 포함하는 것으로서 도시된다. 일 실시예에서, 네트워크 스테이션(400) 및 링크 파트너(452)의 각각은 유사한 구성들을 갖는다. 보다 일반적으로, 네트워크 스테이션(400)은 이더넷 스위치들 및 라우터들 등의 종단 스테이션들 및 스위칭 소자들을 포함하지만 이들로 제한되지 않는 이더넷 링크들을 통해 통신적으로 링크될 수 있는 다양한 타입의 네트워크 디바이스들 및 컴퓨터 시스템들을 예시한다.
네트워크 스테이션(400)에 대해 예시된 아키텍처의 양태들은 스위치 또는 라우터 등의 네트워크 스위칭 소자로 구현될 수 있다. 일부 실시예들에서, 스위칭 소자는 SoC(436)에 의해 도시된 것 등의 멀티-코어 프로세서보다는 마이크로콘트롤러 또는 네트워크 프로세서 등의 사용을 통해 가능하게 되는 내장 로직을 이용할 것이다. 또한, 별도의 블록으로서 도시되었지만, 패킷 및 프레임 핸들링 로직의 전부 또는 일부는 MAC 모듈 내에 구현될 수 있거나, 도 4에 도시되지 않은 다른 로직 블록들과 결합하여 구현될 수 있다. 보다 일반적으로, 본 명세서에서 개시된 실시예들의 양태들을 구현하기 위한 로직은, 그것이 장치 내의 로직의 특정 블록이기보다는 장치 전체로써 구현되도록 분배될 수 있다. 따라서, 본원의 특허청구범위에서 사용된 바와 같이, 장치 또는 로직의 특정 블록은 대응하는 동작들을 구현하도록 구성될 수 있다.
일 실시예에서, 네트워크 어댑터/NIC 칩(402)은 10 Gbps 이더넷 네트워크 인터페이스 콘트롤러(NIC) 칩을 포함한다. 그러나, 네트워크 어댑터/NIC 칩(402)의 회로 및 컴포넌트들은, SoC들, 멀티-칩 모듈들, 및 다수의 네트워크 인터페이스들(예를 들어, 유선 및 무선)에 대한 지원을 포함하는 NIC 칩들을 포함하여, 다른 타입의 칩들 및 컴포넌트들로 구현될 수도 있다.
또한, 본 발명의 실시예들은 NIC 등의 반도체 칩 내에 뿐만이 아니라 비-일시적인 머신-판독가능한 매체 내에도 구현될 수 있다. 예를 들어, 전술한 설계들은 반도체 디바이스들을 설계하는데 사용되는 설계 도구들과 연관된 비-일시적인 머신 판독가능한 매체 내에 저장 및/또는 내장될 수 있다. 예시들은 VHDL(VHSIC Hardware Description Language) 언어, Verilog 언어 또는 SPICE 언어, 또는 다른 하드웨어 기술 언어로 포맷된 네트리스트(netlist)를 포함한다. 일부 네트리스트 예시들은, 거동 레벨 네트리스트, 레지스터 전달 레벨(RTL) 네트리스트, 게이트 레벨 네트리스트 및 트랜지스터 레벨 네트리스트를 포함한다. 머신-판독가능한 매체는 또한 GDS-II 파일 등의 레이아웃 정보를 갖는 매체를 포함한다. 또한, 네트리스트 파일 또는 반도체 칩 설계를 위한 다른 머신-판독가능한 매체는 전술한 교시들의 방법들을 수행하기 위한 시뮬레이션 환경에서 사용될 수 있다.
본 명세서에서 설명된 흐름 제어 관리 및 프레임 핸들링 기법들은 종래의 접근법들에 비해 상당한 이점들을 제공한다. 흐름 제어 메시지들을 즉시 송신하기 위하여 점보 프레임들의 전송을 방지함으로써, 링크 파트너는 종래의 접근법에 비하여 프레임들의 전송을 중단하라는 것을 훨씬 일찍 통보받을 것이다. 이로 인해, 설계에서 현재의 점보 프레임의 전송의 완료시까지 흐름 제어 메시지가 전송되지 않을 최악의 경우의 시나리오에 대해 예상해야 할 필요가 없으므로, 버려져야 할 프레임들이 감소되고, 버퍼 풀들의 사이즈를 감소시키는 것이 가능하다. 게다가, 점보 프레임들의 전체 내용이 송신기에서 나오는 프레임들의 전송이 완료될 때까지(또는 선택적으로 타임 오프셋을 사용하여) 버퍼링되기 때문에, 점보 프레임들은 재전송에 이용가능하다. 또한, 스위칭 소자들의 동작은 개시된 기법들을 사용하여 향상될 수 있다. 예를 들어, 수신 시에 프레임들의 헤더들을 조사함으로써, 프레임이 스위치에 의해 처리될 수 있을지 또는 폐기될 것인지에 대한 결정이 매우 일찍 이루어질 수 있다. 프레임이 폐기되어야 한다면, 송신 스테이션은 프레임의 전송을 중단하라고 즉시 요청할 수 있다. 또한, 프레임 데이터의 전체가 버퍼링된 채로 남아 있기 때문에, 프레임은 적용가능할 때 재전송될 수 있다.
본원의 일부 실시예들이 점보 프레임들 또는 이더넷 프레임들의 사용을 도시하였지만, 본원에 개시된 교시 및 원리들은 이들 예들에 제한되지 않는다. 오히려, 현재 송신되는 데이터 세그먼트(또는 데이터 유닛)의 송신이 흐름 제어 메시지를 위하여 미리 점유되고, 프레임들과 같은 데이터 세그먼트들(또는, 적용가능한 것으로서, 데이터 유닛들)에 대응하는 데이터가 데이터 세그먼트가 송신된 후에 까지 그것의 전부에 버퍼링되는 흐름 제어 기법들이 이더넷 외에 다양한 종류의 데이터 송신 프로토콜들을 이용하여 실시될 수 있다.
일부 실시예들이 특정 구현들을 참조하여 설명되었지만, 일부 실시예들에 따르면 그외의 구현들이 가능하다. 또한, 도면들에 예시된 및/또는 본원에 개시된 엘리먼트들 또는 그외의 피처들의 배열 및/또는 순서는 예시되고 개시된 특정 방식으로 배열될 필요는 없다. 일부 실시예들에 따르면 많은 그외의 배열들이 가능하다.
도면에 도시된 각 시스템에서, 일부 경우들에서의 엘리먼트들은 각각 표현된 엘리먼트들이 상이하고/하거나 유사할 수 있다는 것을 제시하기 위해 동일한 참조 번호 또는 상이한 참조 번호를 가질 수 있다. 그러나, 엘리먼트는 상이한 구현들을 갖기에 충분하고, 본원에 도시된 또는 개시된 시스템 중 일부 또는 전부와 함께 작동하기에 충분하도록 유연할 수 있다. 도면들에 도시된 다양한 엘리먼트들은 같거나 또는 상이할 수 있다. 어느 하나가 제1 엘리먼트로서 불릴 수 있고 제2 엘리먼트로 호칭되는 것은 임의이다.
명세서 및 특허청구범위에서, 용어 "결합된" 및 "접속된"은, 그들의 파생어와 함께, 이용될 수 있다. 이들 용어들이 서로에 대한 동의어로서 의도되지 않는다는 것에 유의한다. 오히려, 특정 실시예들에서, "접속된"은 둘 이상의 엘리먼트가 서로와 직접 물리적 또는 전기적 접촉을 한다는 것을 나타내도록 이용될 수 있다. "결합된"은 둘 이상의 엘리먼트가 물리적 또는 전기적 접촉을 한다는 것을 의미할 수 있다. 그러나, "결합된"은 둘 이상의 엘리먼트가 서로와 직접적으로 접촉하지는 않으나, 여전히 서로와 공통 작동 또는 상호작용하는 것을 또한 의미할 수 있다.
실시예는 발명들의 구현 또는 예시이다. "실시예", "일 실시예", "일부 실시예들", 또는 "그외의 실시예들"에 대한 명세서 내의 참조는, 실시예들과 함께 설명된 특정 특징, 구조 또는 특성이 발명들의 적어도 일부 실시예들에 포함되나, 반드시 모든 실시예들에 포함될 필요는 없다는 것을 의미한다. "실시예", "일 실시예", 또는 "일부 실시예들"의 다양한 출현은 반드시 모두 동일한 실시예들을 참조하는 것이 아니다.
본원에 개시되고 예시된 모든 구성요소들, 특징들, 구조들, 특성들 등이 특정 실시예 또는 실시예들에 포함될 필요는 없다. 명세서에서, 구성요소, 특징, 구조, 또는 특성이 포함될 수 있다("may", "might", "can" or "could" be included)고 기재된 경우, 예를 들면, 그 특정 구성요소, 특징, 구조, 또는 특성은 포함되는 것을 필요로 하는 것은 아니다. 명세서 또는 특허청구범위에서 "일"("a" 또는 "an") 엘리먼트를 참조하는 경우에, 그것은 엘리먼트 중 하나만이 존재한다는 것을 의미하지 않는다. 명세서 또는 특허청구범위에서 "부가적인" 엘리먼트를 참조하는 경우에, 그것은 하나보다 많은 부가적인 엘리먼트가 존재한다는 것을 배제하는 것은 아니다.
전술한 바와 같이, 본원에서 실시예들의 다양한 양태들이, 서버 상에서 구동하는 소프트웨어 또는 네트워크 엘리먼트 상에서 임베드된 프로세서에 의해 실행되는 펌웨어와 같은 대응하는 소프트웨어 및/또는 펌웨어 컴포넌트들 및 애플리케이션들에 의해 용이하게 될 수 있다. 따라서, 본 발명의 실시예들은 소프트웨어 프로그램, 소프트웨어 모듈들, 펌웨어 및/또는 처리 코어의 일부 형태(예들 들면 컴퓨터의 CPU, 멀티-코어 프로세서의 하나 이상의 코어) 상에서 실행되는 분산형 소프트웨어, 프로세서 또는 코어 상에서 실행되는 또는 다르게는 머신-판독가능한 매체 상에서 또는 그 내에서 구현되는 또는 실현되는 가성 머신으로서 이용되거나 또는 그것을 지원하도록 이용될 수 있다. 머신-판독가능한 매체는 머신(예를 들면, 컴퓨터)에 의해 판독가능한 형태로 정보를 저장 또는 송신하는 임의의 메커니즘을 포함한다. 예를 들면, 머신-판독가능한 매체는 ROM(read only memory); RAM(random access memory); 자기 디스크 저장 매체; 광 저장 매체; 및 플래시 메모리 디바이스 등을 포함할 수 있다.
요약에 개시되어 있는 것을 포함하는, 본 발명의 예시된 실시예들의 상기 설명은 총망라하거나 또는 개시된 정확한 형태로 본 발명을 제한하려는 것이 아니다. 본 발명의 특정 실시예들 및 본 발명에 대한 예시들이 본원에서 예시의 목적을 위해 설명되었지만, 당업자가 인식할 것과 같이, 다양한 등가의 수정들이, 본 발명의 범위 내에서 가능하다.
이들 수정들은 전술한 명세서에 비추어 본 발명에 대해 행해질 수 있다. 이하의 특허청구범위에서 이용되는 용어들은 본 발명을 명세서 및 도면들에 개시된 특정 실시예들에 제한하려는 것으로 해석되어서는 안된다. 오히려, 본 발명의 범위는, 특허청구범위 해석의 확립된 독트린에 따라 해석되어야 하는, 이하의 특허청구범위에 의해 전체적으로 결정되어야 한다.

Claims (32)

  1. 제1 스테이션과 제2 스테이션 사이에 결합된 이더넷 링크를 통해 상기 제1 스테이션으로부터 상기 제2 스테이션으로의 제1 이더넷 프레임의 송신을 개시하는 단계;
    상기 이더넷 링크를 통해 상기 제2 스테이션으로부터 상기 제1 스테이션으로 송신된 이더넷 프레임들을 수신하는 단계;
    상기 제1 이더넷 프레임이 송신되고 있는 동안 상기 제1 스테이션에서 제1 흐름 제어 이벤트를 검출하는 단계; 및 그에 응답하여,
    상기 제1 이더넷 프레임의 송신을 중단하는 단계;
    상기 제1 스테이션으로부터 상기 제2 스테이션으로 제1 흐름 제어 메시지를 보내어, 상기 제2 스테이션에게 상기 이더넷 링크를 통해 데이터를 보내는 것을 일시 정지하도록 요청하는 단계; 및
    상기 제1 스테이션으로부터 상기 제2 스테이션으로 상기 제1 이더넷 프레임을 재전송하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    흐름 제어 이벤트를 검출하는 단계는, 상기 이더넷 링크를 통해 제2 스테이션으로부터 수신된 데이터의 버퍼링된 양이 임계치에 도달했는지 또는 임계치를 초과하였는지를 검출하는 단계를 포함하는 방법.
  3. 제1항에 있어서,
    상기 제1 이더넷 프레임은 점보 프레임을 포함하고, 상기 방법은,
    상기 이더넷 링크를 통해 상기 제1 스테이션으로부터 상기 제2 스테이션으로의 제2 이더넷 프레임의 송신을 개시하는 단계;
    상기 이더넷 링크를 통해 상기 제2 스테이션으로부터 상기 제1 스테이션으로 송신된 이더넷 프레임들을 수신하는 단계;
    상기 제2 이더넷 프레임이 송신되고 있는 동안 상기 제1 스테이션에서 제2 흐름 제어 이벤트를 검출하는 단계; 및 그에 응답하여,
    상기 제2 이더넷 프레임이 점보 프레임이 아닌 것을 판정하는 단계;
    상기 제2 이더넷 프레임의 송신을 완료하는 단계; 및
    상기 제2 이더넷 프레임의 송신의 완료에 이어, 상기 제1 스테이션으로부터 상기 제2 스테이션으로 제2 흐름 제어 메시지를 보내어, 상기 제2 스테이션에게 상기 이더넷 링크를 통해 데이터를 보내는 것을 일시 정지하도록 요청하는 단계
    를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 제1 이더넷 프레임의 송신을 중단하는 단계는, 상기 제1 이더넷 프레임의 페이로드(payload)를 줄이고(truncate), 상기 제1 이더넷 프레임에 그것이 폐기된다는 것을 나타내는 표시(indicia)를 부가하는 단계를 포함하는 방법.
  5. 제1항에 있어서,
    상기 제1 스테이션에게 상기 이더넷 링크를 통한 상기 제2 스테이션으로의 송신을 일시 정지하도록 요청하는, 상기 제2 스테이션으로부터 보내진 제3 흐름 제어 메시지를 상기 제1 스테이션에서 수신하는 단계 - 상기 흐름 제어 메시지는 제3 이더넷 프레임이 상기 제1 스테이션으로부터 상기 이더넷 링크를 통해 상기 제2 스테이션에 송신되는 동안 수신됨 -;
    상기 제3 이더넷 프레임의 송신을 중단하는 단계;
    상기 제1 스테이션으로부터 상기 제2 스테이션으로의 상기 이더넷 링크를 통한 데이터의 송신을 일시적으로 정지하는 단계; 및
    상기 제3 이더넷 프레임을 상기 제1 스테이션으로부터 상기 제2 스테이션으로 재송신하는 단계
    를 더 포함하는 방법.
  6. 제5항에 있어서,
    상기 제3 이더넷 프레임은 점보 프레임을 포함하고, 상기 방법은,
    상기 제1 스테이션에게 상기 이더넷 링크를 통한 상기 제2 스테이션으로의 송신을 일시 정지하도록 요청하는, 상기 제2 스테이션으로부터 보내진 제4 흐름 제어 메시지를 상기 제1 스테이션에서 수신하는 단계 - 상기 흐름 제어 메시지는 제4 이더넷 프레임이 상기 제1 스테이션으로부터 상기 이더넷 링크를 통해 상기 제2 스테이션에 송신되는 동안 수신됨 -;
    상기 제4 이더넷 프레임이 점보 프레임이 아닌 것을 판정하는 단계;
    상기 제4 이더넷 프레임의 송신을 완료하는 단계; 및
    상기 제1 스테이션으로부터 상기 제2 스테이션으로의 상기 이더넷 링크를 통한 데이터의 송신을 일시적으로 정지하는 단계
    를 더 포함하는 방법.
  7. 제1항에 있어서,
    점보 프레임의 전체가 송신될 때까지 송신 버퍼에서 점보 프레임 페이로드의 전체에 대응하는 패킷 데이터를 유지하는 단계를 더 포함하는 방법.
  8. 제1항에 있어서,
    점보 프레임의 전체가 송신된 후 미리 결정된 지연까지 송신 버퍼에서 점보 프레임 페이로드의 전체에 대응하는 패킷 데이터를 유지하는 단계를 더 포함하는 방법.
  9. 제1항에 있어서,
    제5 이더넷 프레임을 스위칭 엘리먼트에 송신하는 단계,
    상기 스위칭 엘리먼트로부터 상기 제5 이더넷 프레임의 송신이 일시 정지되도록 요청하는 흐름 제어 메시지를 수신하는 단계; 및 그에 응답하여,
    상기 제5 이더넷 프레임의 송신을 중단하는 단계;
    적어도 하나의 그외의 이더넷 프레임을 상기 스위칭 엘리먼트에 송신하는 단계; 및
    상기 적어도 하나의 그외의 이더넷 프레임의 상기 스위칭 엘리먼트로의 송신에 후속하여 상기 제5 이더넷 프레임의 전체를 재송신하는 단계
    를 더 포함하는 방법.
  10. 장치로서,
    송신기 회로를 포함하는 송신기 포트 및 수신기 회로를 포함하는 수신기 포트를 포함하는 물리 계층(Physical Layer; PHY) 회로에 대한 인터페이스;
    프레임화(framing) 로직 및 역프레임화(deframing) 로직을 포함하는 매체 액세스 제어(Media Access Control; MAC) 모듈;
    상기 장치의 동작 시에, 수신기 버퍼 풀(pool) 및 송신기 버퍼 풀을 포함하도록 구성되는, 메모리; 및
    상기 장치의 동작 시에,
    상기 장치와 링크 파트너 사이에 결합된 이더넷 링크를 통해 상기 송신기 포트로부터 상기 링크 파트너로 제1 이더넷 프레임의 송신을 개시하고,
    상기 이더넷 링크를 통해 상기 링크 파트너로부터 송신된 이더넷 프레임들을 상기 수신기 포트에서 수신하고,
    상기 제1 이더넷 프레임이 송신되는 동안 상기 장치에서 제1 흐름 제어 이벤트를 검출하고, 그에 응답하여,
    상기 제1 이더넷 프레임의 송신을 중단하고,
    상기 링크 파트너에게 상기 이더넷 링크를 통해 데이터를 보내는 것을 일시 정지하도록 요청하는 제1 흐름 제어 메시지를 상기 링크 파트너에게 보내고,
    상기 제1 이더넷 프레임을 상기 링크 파트너에 재송신하도록 구성되는, 패킷 및 프레임 핸들링 로직
    을 포함하는 장치.
  11. 제10항에 있어서,
    상기 제1 이더넷 프레임은 점보 프레임을 포함하고, 상기 장치의 동작 시에, 상기 패킷 및 프레임 핸들링 로직은,
    상기 이더넷 링크를 통해 상기 장치로부터 상기 링크 파트너로의 제2 이더넷 프레임의 송신을 개시하고,
    상기 이더넷 링크를 통해 상기 링크 파트너로부터 상기 장치로 송신된 이더넷 프레임들을 수신하고,
    상기 제2 이더넷 프레임이 송신되는 동안 제2 흐름 제어 이벤트를 상기 장치에서 검출하고, 그에 응답하여,
    상기 제2 이더넷 프레임이 점보 프레임이 아닌 것을 판정하고,
    상기 제2 이더넷 프레임의 송신을 완료하고,
    상기 제2 이더넷 프레임의 송신의 완료에 후속하여 상기 링크 파트너에게 상기 이더넷 링크를 통해 데이터를 보내는 것을 일시 정지하도록 요청하는 제2 흐름 제어 메시지를 상기 장치로부터 상기 링크 파트너로 보내도록 더 구성되는 장치.
  12. 제10항에 있어서,
    상기 제1 이더넷 프레임의 송신을 중단하는 것은, 상기 제1 이더넷 프레임의 페이로드를 줄이고 상기 제1 이더넷 프레임에 그것이 상기 링크 파트너에 의해 폐기된다는 것을 나타내는 표시를 부가하는 것을 포함하는 장치.
  13. 제10항에 있어서,
    상기 장치의 동작 시에, 상기 패킷 및 프레임 핸들링 로직은,
    상기 장치에게 상기 이더넷 링크를 통한 상기 링크 파트너로의 송신을 일시 정지하도록 요청하는, 상기 링크 파트너로부터 보내진 제3 흐름 제어 메시지를 상기 장치에서 수신하고 - 상기 흐름 제어 메시지는 제3 이더넷 프레임이 상기 이더넷 링크를 통해 상기 장치로부터 상기 링크 파트너로 송신되는 동안 수신됨 -,
    상기 제3 이더넷 프레임의 송신을 중단하고,
    상기 장치로부터 상기 링크 파트너로의 상기 이더넷 링크를 통한 데이터의 송신을 일시적으로 정지하고,
    상기 장치로부터 상기 링크 파트너로 상기 제3 이더넷 프레임을 재송신하도록 더 구성되는 장치.
  14. 제13항에 있어서,
    상기 제3 이더넷 프레임은 점보 프레임을 포함하고, 상기 장치의 동작 시에, 상기 패킷 및 프레임 핸들링 로직은,
    상기 장치에게 상기 이더넷 링크를 통한 상기 링크 파트너로의 송신을 일시 정지하도록 요청하는, 상기 링크 파트너로부터 보내진 제4 흐름 제어 메시지를 상기 장치에서 수신하고 - 상기 흐름 제어 메시지는 제4 이더넷 프레임이 상기 이더넷 링크를 통해 상기 장치로부터 상기 링크 파트너로 송신되고 있는 동안 수신됨 -,
    상기 제4 이더넷 프레임이 점보 프레임이 아닌 것을 판정하고,
    상기 제4 이더넷 프레임의 송신을 완료하고,
    상기 장치로부터 상기 링크 파트너로의 상기 이더넷 링크를 통한 데이터의 송신을 일시적으로 정지하도록 더 구성되는 장치.
  15. 제10항에 있어서,
    상기 제1 이더넷 프레임은 점보 프레임을 포함하고, 상기 장치의 동작 시에, 상기 패킷 및 프레임 핸들링 로직은, 상기 점보 프레임의 전체가 송신될 때까지 상기 송신기 버퍼 풀에서 점보 프레임 페이로드의 전체에 대응하는 패킷 데이터를 유지하도록 더 구성되는 장치.
  16. 제10항에 있어서,
    상기 제1 이더넷 프레임은 점보 프레임을 포함하고, 상기 장치의 동작 시에, 상기 패킷 및 프레임 핸들링 로직은, 상기 점보 프레임의 전체가 송신된 후 미리 결정된 지연까지 상기 송신기 버퍼 풀에서 점보 프레임 페이로드의 전체에 대응하는 패킷 데이터를 유지하도록 더 구성되는 장치.
  17. 제10항에 있어서,
    상기 장치의 동작 시에, 상기 패킷 및 프레임 핸들링 로직은,
    제5 이더넷 프레임을 스위칭 엘리먼트로 송신하고,
    상기 스위칭 엘리먼트로부터 상기 제5 이더넷 프레임의 송신이 일시 중지되도록 요청하는 흐름 제어 메시지를 수신하고, 그에 응답하여,
    상기 제5 이더넷 프레임의 송신을 중단하고,
    상기 스위칭 엘리먼트에 적어도 하나의 그외의 이더넷 프레임을 송신하고,
    상기 스위칭 엘리먼트로의 상기 적어도 하나의 그외의 이더넷 프레임의 송신에 후속하여 상기 제5 이더넷 프레임의 전체를 재송신하도록 더 구성되는 장치.
  18. 제10항에 있어서,
    상기 장치는 호스트 컴퓨터 시스템에 설치되도록 구성되는 네트워크 어댑터 또는 네트워크 인터페이스 컨트롤러 중 하나를 포함하고, 상기 장치는,
    상기 송신기 회로를 포함하는 상기 송신기 포트 및 상기 수신기 회로를 포함하는 상기 수신기 포트를 포함하는 상기 PHY 회로;
    상기 호스트 컴퓨터 시스템 내의 메모리와 상기 장치 상의 메모리 사이에 데이터를 전달하도록 구성되는 직접 메모리 액세스(DMA) 엔진; 및
    상기 호스트 컴퓨터 시스템 상의 PCIe(Peripheral Control Interconnect Express) 인터페이스와 인터페이스하도록 구성되는 PCIe 인터페이스
    를 더 포함하는 장치.
  19. 스위칭 엘리먼트와 전송 스테이션 사이에 결합된 이더넷 링크를 통해 상기 전송 스테이션으로부터 송신된 제1 이더넷 프레임을 상기 스위칭 엘리먼트에서 수신하는 단계;
    상기 제1 이더넷 프레임이 상기 스위칭 엘리먼트에서 수신되고 있는 동안, 상기 이더넷 링크를 통해 상기 스위칭 엘리먼트로부터 상기 전송 스테이션으로 제2 이더넷 프레임을 송신하는 단계;
    상기 스위칭 엘리먼트가 상기 제1 이더넷 프레임을 수락할 수 없다는 것을 판정하는 단계;
    상기 스위칭 엘리먼트로부터 상기 전송 스테이션으로 송신되고 있는 상기 제2 이더넷 프레임의 송신을 중단하는 단계; 및
    상기 전송 스테이션에게 상기 제1 이더넷 프레임의 송신을 일시 정지하도록 요청하는 제1 흐름 제어 메시지를 상기 스위칭 엘리먼트로부터 상기 전송 스테이션으로 보내는 단계
    를 포함하는 방법.
  20. 제19항에 있어서,
    상기 스위칭 엘리먼트가 상기 제1 이더넷 프레임을 수락할 수 없다는 것을 판정하는 단계는,
    상기 제1 이더넷 프레임의 프레임 헤더 내의 매체 액세스 제어(MAC) 목적지 어드레스를 검사하는 단계 - 상기 MAC 목적지 어드레스는 상기 이더넷 프레임이 전달될 목표 스테이션에 대응함 -; 및
    상기 이더넷 프레임을 상기 목표 스테이션으로 전달하는 출구 포트(egress port)가 혼잡하거나, 또는 상기 목표 스테이션이 일시적으로 도달불가한 것 중 하나를 결정하는 단계
    를 포함하는 방법.
  21. 제20항에 있어서,
    상기 스위칭 엘리먼트가 상기 제1 이더넷 프레임을 수락할 수 없다는 판정은, 상기 제1 이더넷 프레임의 시작을 수신하는 것으로부터 200나노초 이내에 행해지는 방법.
  22. 제19항에 있어서,
    상기 제1 흐름 제어 메시지를 전송한 후에 상기 제2 이더넷 프레임의 전체를 재송신하는 단계를 더 포함하는 방법.
  23. 제19항에 있어서,
    상기 스위칭 엘리먼트로부터 상기 전송 스테이션으로 송신되고 있는 현재의 이더넷 프레임은 점보 프레임을 포함하고, 상기 방법은,
    상기 이더넷 링크를 통해 상기 전송 스테이션으로부터 송신되는 제3 이더넷 프레임을 상기 스위칭 엘리먼트에서 수신하는 단계;
    상기 제3 이더넷 프레임의 프레임 헤더를 검사하고, 상기 스위칭 엘리먼트가 상기 제3 이더넷 프레임을 수락할 수 없다는 것을 판정하는 단계;
    상기 제2 이더넷 프레임이 상기 전송 스테이션으로부터 수신되고 있는 동안 상기 스위칭 엘리먼트로부터 상기 전송 스테이션으로 송신되고 있는 현재의 이더넷 프레임이 점보 프레임이 아닌 것을 판정하는 단계;
    상기 스위칭 엘리먼트로부터 상기 현재의 이더넷 프레임의 송신을 완료하는 단계; 및
    상기 전송 스테이션에게 상기 제1 이더넷 프레임의 송신을 일시 정지하도록 요청하는 제2 흐름 제어 메시지를 상기 스위칭 엘리먼트로부터 상기 전송 스테이션으로 보내는 단계
    를 더 포함하는 방법.
  24. 제19항에 있어서,
    상기 제1 이더넷 프레임은 점보 프레임을 포함하고, 상기 방법은,
    상기 이더넷 링크를 통해 상기 전송 스테이션으로부터 송신되는 제4 이더넷 프레임을 상기 스위칭 엘리먼트에서 수신하는 단계;
    상기 제4 이더넷 프레임의 프레임 헤더를 검사하고, 상기 스위칭 엘리먼트가 상기 제4 이더넷 프레임을 수락할 수 없다는 것을 판정하는 단계;
    상기 제4 이더넷 프레임이 점보 프레임이 아닌 것을 판정하는 단계; 및
    상기 스위칭 엘리먼트에서 상기 제4 이더넷 프레임을 드롭하는 단계
    를 더 포함하는 방법.
  25. 제19항에 있어서,
    상기 제1 흐름 제어 메시지는 NACK(Negative ACKnowledgement) 메시지를 포함하는 방법.
  26. 장치로서,
    복수의 이더넷 포트 - 각각의 이더넷 포트는, 송신기 포트; 수신기 포트; 송신 버퍼 풀; 수신기 버퍼 풀; 및 패킷 및 프레임 핸들링 로직을 포함함 -; 및
    상기 복수의 이더넷 포트 사이에 패킷화된 데이터를 전달하도록 구성되는 스위치 로직
    을 포함하고, 상기 장치의 동작 시에, 상기 장치는,
    이더넷 링크를 통해 전송 스테이션으로부터 송신된 제1 이더넷 프레임을 수신하고,
    스위칭 엘리먼트에서 상기 제1 이더넷 프레임이 수신되고 있는 동안 상기 이더넷 링크를 통해 상기 장치로부터 상기 전송 스테이션으로 제2 이더넷 프레임을 송신하고,
    상기 장치가 상기 제1 이더넷 프레임을 수락할 수 없다는 것을 판정하고,
    상기 장치로부터 상기 전송 스테이션으로 송신되고 있는 상기 제2 이더넷 프레임의 송신을 중단하고,
    상기 전송 스테이션에게 상기 제1 이더넷 프레임의 송신을 일시 정지하도록 요청하는 제1 흐름 제어 메시지를 상기 장치로부터 상기 전송 스테이션으로 보내도록 구성되는 장치.
  27. 제26항에 있어서,
    상기 장치는,
    상기 제1 이더넷 프레임의 프레임 헤더 내의 매체 액세스 제어(MAC) 목적지 어드레스를 검사하는 것 - 상기 MAC 목적지 어드레스는 상기 이더넷 프레임이 전달될 목표 스테이션에 대응함 -, 및
    상기 이더넷 프레임을 상기 목표 스테이션으로 전달하는 출구 포트가 혼잡하거나, 또는 상기 목표 스테이션이 일시적으로 도달불가한 것 중 하나를 결정하는 것
    을 포함하는 동작들을 수행함으로써, 상기 제1 이더넷 프레임을 수락할 수 없다는 것을 판정하도록 구성되는 장치.
  28. 제27항에 있어서,
    상기 장치는 상기 제1 이더넷 프레임의 시작을 수신하는 것으로부터 200나노초 이내에 상기 제1 이더넷 프레임을 수락할 수 없다는 것을 판정하도록 구성되는 장치.
  29. 제26항에 있어서,
    상기 장치의 동작 시에, 상기 장치는 상기 제1 흐름 제어 메시지를 전송한 후에 상기 제2 이더넷 프레임의 전체를 재송신하도록 더 구성되는 장치.
  30. 제26항에 있어서,
    상기 장치로부터 상기 전송 스테이션으로 송신되고 있는 상기 제2 이더넷 프레임은 점보 프레임을 포함하고, 상기 장치의 동작 시에, 상기 장치는,
    상기 이더넷 링크를 통해 상기 전송 스테이션으로부터 송신되는 제3 이더넷 프레임을 수신하고,
    상기 제3 이더넷 프레임의 프레임 헤더를 검사하고, 상기 제3 이더넷 프레임이 점보 프레임이고 상기 장치가 상기 제3 이더넷 프레임을 수락할 수 없다는 것을 판정하고,
    상기 전송 스테이션으로부터 상기 제3 이더넷 프레임이 수신되고 있는 동안 상기 장치로부터 상기 전송 스테이션으로 송신되고 있는 현재의 이더넷 프레임이 점보 프레임이 아닌 것을 판정하고,
    상기 장치로부터 상기 현재의 이더넷 프레임의 송신을 완료하고,
    상기 전송 스테이션에게 상기 제3 이더넷 프레임의 송신을 일시 정지하도록 요청하는 제2 흐름 제어 메시지를 상기 장치로부터 상기 전송 스테이션으로 보내도록 더 구성되는 장치.
  31. 제26항에 있어서,
    상기 제1 이더넷 프레임은 점보 프레임을 포함하고, 상기 장치의 동작 시에, 상기 장치는,
    상기 이더넷 링크를 통해 상기 전송 스테이션으로부터 송신되는 제4 이더넷 프레임을 수신하고,
    상기 제4 이더넷 프레임의 프레임 헤더를 검사하고, 상기 장치가 상기 제4 이더넷 프레임을 수락할 수 없다는 것을 판정하고,
    상기 제4 이더넷 프레임이 점보 프레임이 아닌 것을 판정하고,
    상기 제4 이더넷 프레임을 드롭하도록 더 구성되는 장치.
  32. 제26항에 있어서,
    상기 제1 흐름 제어 메시지는 NACK 메시지를 포함하는 장치.
KR1020140071742A 2013-06-12 2014-06-12 네트워크 디바이스들을 위한 감소된 버퍼 사용을 갖는 흐름 제어 KR101596143B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/915,857 2013-06-12
US13/915,857 US9030936B2 (en) 2013-06-12 2013-06-12 Flow control with reduced buffer usage for network devices

Publications (2)

Publication Number Publication Date
KR20140145096A KR20140145096A (ko) 2014-12-22
KR101596143B1 true KR101596143B1 (ko) 2016-02-26

Family

ID=52019128

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140071742A KR101596143B1 (ko) 2013-06-12 2014-06-12 네트워크 디바이스들을 위한 감소된 버퍼 사용을 갖는 흐름 제어

Country Status (3)

Country Link
US (1) US9030936B2 (ko)
KR (1) KR101596143B1 (ko)
CN (2) CN104243346B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180070872A (ko) * 2016-12-19 2018-06-27 주식회사 엘지유플러스 패킷 처리 방법 및 장치

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3002888B1 (en) 2010-06-23 2017-06-14 Telefonaktiebolaget LM Ericsson (publ) Reference signal interference management in heterogeneous network deployments
US9577791B2 (en) 2012-12-05 2017-02-21 Intel Corporation Notification by network element of packet drops
US9178815B2 (en) * 2013-03-05 2015-11-03 Intel Corporation NIC flow switching
US9571426B2 (en) 2013-08-26 2017-02-14 Vmware, Inc. Traffic and load aware dynamic queue management
US20160013976A1 (en) * 2014-07-14 2016-01-14 Futurewei Technologies, Inc. Wireless Through Link Traffic Reduction
CN105991471B (zh) * 2015-02-16 2019-08-09 新华三技术有限公司 网络设备的流控方法和流控装置以及网络设备
CN108781186B (zh) 2016-01-27 2021-08-27 英诺瓦西克股份有限公司 以太网帧注入器
US11201780B2 (en) * 2016-01-29 2021-12-14 Qualcomm Incorporated Configurations associated with segmentation of one or more packets for wireless communication
CN109728874B (zh) 2017-10-31 2021-08-31 华为技术有限公司 一种比特块处理方法及节点
US10574356B2 (en) * 2018-01-26 2020-02-25 Cisco Technology, Inc. Virtual physical layer
US20190238485A1 (en) * 2018-01-30 2019-08-01 Hewlett Packard Enterprise Development Lp Transmitting credits between accounting channels
US11228996B2 (en) 2018-09-28 2022-01-18 Qualcomm Incorporated Delivery time windows for low latency communications
CN112753200B (zh) 2018-10-01 2023-01-13 华为技术有限公司 用于网络中的包清洗的方法和装置
CN109558107B (zh) * 2018-12-04 2023-06-30 中国航空工业集团公司西安航空计算技术研究所 一种共享缓冲区的fc消息接收管理方法
US11627185B1 (en) * 2020-09-21 2023-04-11 Amazon Technologies, Inc. Wireless data protocol
US11888753B2 (en) * 2021-08-10 2024-01-30 Mellanox Technologies, Ltd. Ethernet pause aggregation for a relay device
CN114640639B (zh) * 2022-01-24 2023-08-18 北京邮电大学 帧传输方法和电子设备
CN115378873A (zh) * 2022-08-23 2022-11-22 山东云海国创云计算装备产业创新中心有限公司 一种提高以太网数据传输效率的流量控制方法和系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6496516B1 (en) 1998-12-07 2002-12-17 Pmc-Sierra, Ltd. Ring interface and ring network bus flow control system
US6754179B1 (en) 2000-06-13 2004-06-22 Lsi Logic Corporation Real time control of pause frame transmissions for improved bandwidth utilization
US20050270976A1 (en) 2002-11-19 2005-12-08 Huawei Technologies Co., Ltd. Flow control method of MAN transmission equipment

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6084856A (en) * 1997-12-18 2000-07-04 Advanced Micro Devices, Inc. Method and apparatus for adjusting overflow buffers and flow control watermark levels
US20040179476A1 (en) * 2003-03-10 2004-09-16 Sung-Ha Kim Apparatus and method for controlling a traffic switching operation based on a service class in an ethernet-based network
US7649843B2 (en) * 2004-02-09 2010-01-19 Transwitch Corporation Methods and apparatus for controlling the flow of multiple signal sources over a single full duplex ethernet link
US7839779B2 (en) * 2005-05-16 2010-11-23 Cisco Technology, Inc. Queue aware flow control
US7430220B2 (en) * 2005-07-29 2008-09-30 International Business Machines Corporation System load based dynamic segmentation for network interface cards
CN101047615B (zh) * 2006-05-14 2010-05-12 华为技术有限公司 一种以太网数据流量控制方法
JP2007329606A (ja) * 2006-06-07 2007-12-20 Hitachi Ltd 中継装置
CN1878144A (zh) * 2006-07-14 2006-12-13 华为技术有限公司 一种多队列流量控制的方法
CN101184048B (zh) * 2007-12-11 2010-12-08 华为技术有限公司 一种数据帧传输的合路控制方法和设备
US8953631B2 (en) * 2010-06-30 2015-02-10 Intel Corporation Interruption, at least in part, of frame transmission
CN103117954B (zh) * 2013-01-09 2015-07-01 烽火通信科技股份有限公司 Xg-pon1系统onu端的ploam消息处理加速的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6496516B1 (en) 1998-12-07 2002-12-17 Pmc-Sierra, Ltd. Ring interface and ring network bus flow control system
US6754179B1 (en) 2000-06-13 2004-06-22 Lsi Logic Corporation Real time control of pause frame transmissions for improved bandwidth utilization
US20050270976A1 (en) 2002-11-19 2005-12-08 Huawei Technologies Co., Ltd. Flow control method of MAN transmission equipment

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180070872A (ko) * 2016-12-19 2018-06-27 주식회사 엘지유플러스 패킷 처리 방법 및 장치
KR101925912B1 (ko) * 2016-12-19 2018-12-06 주식회사 엘지유플러스 패킷 처리 방법 및 장치

Also Published As

Publication number Publication date
CN104243346A (zh) 2014-12-24
CN108600114B (zh) 2022-04-19
CN108600114A (zh) 2018-09-28
KR20140145096A (ko) 2014-12-22
US9030936B2 (en) 2015-05-12
US20140369194A1 (en) 2014-12-18
CN104243346B (zh) 2018-06-08

Similar Documents

Publication Publication Date Title
KR101596143B1 (ko) 네트워크 디바이스들을 위한 감소된 버퍼 사용을 갖는 흐름 제어
CN109936510B (zh) 多路径rdma传输
US10425344B2 (en) Avoiding dropped data packets on a network transmission
KR102249741B1 (ko) 데이터 전송을 위한 방법 및 장치
US9577791B2 (en) Notification by network element of packet drops
US11012367B2 (en) Technologies for managing TCP/IP packet delivery
KR100619949B1 (ko) 고속 이동통신망에서의 티씨피 흐름 제어방법
JP3671057B2 (ja) ネットワークアダプターにおけるパケットの自動再送信のための方法及び装置
WO2014092779A1 (en) Notification by network element of packet drops
US20060221825A1 (en) Congestion control network relay device and method
US20060203730A1 (en) Method and system for reducing end station latency in response to network congestion
US9843525B2 (en) Apparatus and method
US9025451B2 (en) Positive feedback ethernet link flow control for promoting lossless ethernet
US20090154496A1 (en) Communication apparatus and program therefor, and data frame transmission control method
US9876727B2 (en) Physical-layer signaling of flow control updates
EP2255483B1 (en) Method and apparatus for managing transmission of tcp data segments
WO2019001484A1 (zh) 一种实现发送端调速的方法、装置和系统
WO2017053770A1 (en) Active link during lan interface reset
US20110270976A1 (en) Network protocol processing system and network protocol processing method
US8149703B2 (en) Powerline network bridging congestion control
US8054847B2 (en) Buffer management in a network device
US8769137B2 (en) Systems and methods for negotiated accelerated block option for trivial file transfer protocol (TFTP)
EP3459216B1 (en) System and method for mtu size reduction in a packet network
US9385931B1 (en) Determining a reordering timer
Cisco Configuring LLC2 and SDLC Parameters

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
LAPS Lapse due to unpaid annual fee