이더넷 흐름 제어

**이더넷 흐름 제어**(Ethernet flow control)는 이더넷 계열의 컴퓨터 망에서 데이터 전송을 일시적으로 중지하는 메커니즘이다. 이 메커니즘의 목표는 혼잡 제어가 발생했을 때 패킷 손실을 방지하는 것이다. 최초의 흐름 제어 메커니즘인 **일시 정지 프레임**은 **IEEE 802.3x** 표준에 의해 정의되었다. 이어서 **IEEE 802.1Qbb** 표준에 정의된 **우선순위 기반 흐름 제어**는 IEEE P802.1p에 정의된 각 CoS(CoS)에 대해 독립적으로 제어할 수 있는 링크 레벨 흐름 제어 메커니즘을 제공한다. 이는 data center bridging 네트워크에 적용 가능하며, 기본 데이터 트래픽 및 대용량 파일 전송보다 보이스 오버 IP(VoIP), 비디오 오버 IP 및 데이터베이스 동기화 트래픽의 우선순위를 높일 수 있도록 한다.
# 설명
송신 스테이션(컴퓨터 또는 네트워크 스위치)은 링크의 다른 쪽 끝이 데이터를 받아들일 수 있는 속도보다 더 빠르게 데이터를 전송할 수 있다. 흐름 제어를 사용하면 수신 스테이션은 수신자가 따라잡을 때까지 전송을 일시 중단하도록 송신자에게 신호를 보낼 수 있다. 이더넷에서의 흐름 제어는 데이터 링크 계층에서 구현될 수 있다. 최초의 흐름 제어 메커니즘인 일시 정지 프레임은 전기전자공학자협회(IEEE)의 전이중 통신 이더넷 링크 세그먼트를 정의한 태스크포스에 의해 정의되었다. IEEE 표준 802.3x는 1997년에 발행되었다.title= IEEE Standards for Local and Metropolitan Area Networks: Supplements to Carrier Sense Multiple Access with Collision Detection (CSMA/CD) Access Method and Physical Layer Specifications - Specification for 802.3 Full Duplex Operation and Physical Layer Specification for 100 Mb/S Operation on Two Pairs of Category 3 or Better Balanced Twisted Pair Cable (100BASE-T2)
## 일시 정지 프레임
과부하가 걸린 네트워크 노드는 일시 정지 프레임을 보내 특정 기간 동안 송신자의 전송을 중지할 수 있다. 일시 정지 명령을 전달하기 위해 매체 접근 제어(MAC) 프레임(이더타입 0x8808)이 사용되며, 제어 오피코드는 0x0001(십육진법)로 설정된다. 전이중 통신 동작으로 구성된 스테이션만 일시 정지 프레임을 보낼 수 있다. 스테이션이 링크의 다른 쪽 끝을 일시 중지하려는 경우, 해당 링크의 고유한 48-비트 대상 주소 또는 예약된 48-비트 멀티캐스트 주소인 01-80-C2-00-00-01로 일시 정지 프레임을 보낸다.title = IEEE Standard for EthernetAnnex 31B.3.3 잘 알려진 주소를 사용함으로써 스테이션이 링크의 다른 쪽 끝에 있는 스테이션의 주소를 검색하고 저장할 필요가 없어진다. 이 멀티캐스트 주소를 사용하는 또 다른 장점은 네트워크 스위치 간의 흐름 제어 사용에서 비롯된다. 사용되는 특정 멀티캐스트 주소는 브리징에 사용되는 스위치의 동작을 지정하는 IEEE 802.1D 표준에 의해 예약된 주소 범위에서 선택된다. 일반적으로, 멀티캐스트 대상을 가진 프레임이 스위치로 전송되면 스위치의 다른 모든 포트로 전달된다. 그러나 이 멀티캐스트 주소 범위는 특별하며 802.1D 호환 스위치에 의해 전달되지 않는다. 대신, 이 범위로 전송된 프레임은 스위치 내에서만 처리되도록 의도된 프레임으로 이해된다. 일시 정지 프레임에는 요청된 일시 정지 기간이 2-바이트(16비트), 부호 없는 정수(0부터 65535) 형태로 포함된다. 이 숫자는 요청된 일시 정지 시간의 길이다. 일시 정지 시간은 퀀텀 단위로 측정되며, 각 퀀텀은 512 비트 시간과 같다. 1999년까지 여러 공급업체가 일시 정지 프레임 수신을 지원했지만, 전송을 구현한 곳은 더 적었다.access-date= May 10, 2011archive-date=2012-02-07 Vendor comments on flow control in the 1999 test.
## 문제점
일시 정지 프레임의 원래 동기 중 하나는 전속력 수신을 처리하기 위한 충분한 버퍼링이 없는 네트워크 인터페이스 컨트롤러(NIC)를 처리하는 것이었다. 이 문제는 버스 속도 및 메모리 크기의 발전으로 더 이상 일반적이지 않다. 더 가능성이 높은 시나리오는 스위치 내에서 발생하는 혼잡 제어이다. 예를 들어, 유입되는 링크의 속도가 나가는 링크보다 빠르거나, 두 개 이상의 링크를 통해 들어오는 여러 흐름의 합계가 출력 링크 대역폭보다 클 수 있다. 이는 결국 스위치 내의 어떤 양의 버퍼링도 소진시킬 것이다. 그러나 송신 링크를 차단하면 정체를 유발하지 않는 흐름까지 포함하여 해당 링크를 통한 모든 흐름이 지연될 것이다. 이 상황은 헤드 오브 라인 (HOL) 블로킹의 한 경우이며, 일반적으로 많은 수의 흐름이 집계되는 코어 네트워크 스위치에서 더 자주 발생할 수 있다. 많은 스위치는 내부적으로 HOL 블로킹을 제거하기 위해 가상 출력 큐라는 기술을 사용하므로 일시 정지 프레임을 보내지 않는다.
# 후속 노력

## 혼잡 관리
또 다른 노력은 2004년 3월에 시작되어 2004년 5월에 IEEE P802.3ar 혼잡 관리 태스크포스가 되었다. 2006년 5월, 태스크포스의 목표가 약 1% 단위로 전송 데이터 속도를 제한하는 메커니즘을 지정하도록 수정되었다. 해당 요청은 철회되었고 태스크포스는 2008년에 해체되었다.access-date= May 10, 2011
## 우선순위 흐름 제어
이더넷 흐름 제어는 모든 우선순위의 데이터가 기존 버퍼를 비우기 위해 중지되므로 (저우선순위 데이터도 포함될 수 있는 버퍼) IEEE 802.1p에 정의된 이더넷 서비스 등급을 방해한다. 이 문제에 대한 해결책으로 시스코 시스템즈는 표준 프로토콜에 대한 자체 우선순위 흐름 제어 확장을 정의했다. 이 메커니즘은 일반 일시 정지 프레임에서 42-바이트 패딩 중 14바이트를 사용한다. 우선순위 일시 정지 프레임의 MAC 제어 오피코드는 0x0101이다. 원래의 일시 정지와 달리 우선순위 일시 정지는 여덟 가지 우선순위 클래스 각각에 대한 일시 정지 시간을 퀀텀 단위로 별도로 나타낸다.access-date= May 10, 2011 이 확장 기능은 2008년 3월 27일에 승인된 우선순위 기반 흐름 제어(PFC) 프로젝트에 의해 IEEE 802.1Qbb로 표준화되었다.IEEE 802.1Qbb 드래프트 2.3은 2010년 6월 7일에 제안되었다. 시스코의 클라우디오 데산티(Claudio DeSanti)가 편집자였다.access-date= May 10, 2011 이 노력은 이더넷 상의 파이버 채널을 개발한 데이터 센터 브리징 태스크 그룹의 일부였다.access-date= May 10, 2011