wanna be dev 🧑‍💻

Cool 하고 Sick한 개발자가 되고 싶은 uzun입니다

A.K.A. Kick-snare, hyjhyj0901, h_uz99 solvedac-logo

Computer Science/Computer Network

📡 [Network] TCP 혼잡 제어 알아보기 [2] (ECN 명시적 혼잡 알림 Explicit Congestion Notification, 지연 기반 혼잡 제어 Delay-based Congestion Control)

Kick_snare 2022. 11. 5. 16:43
728x90

본 포스팅은 < 컴퓨터 네트워킹 하향식 접근[8판] James F. Kurose, Keith W. Ross 저/최종원, 강현국, 김기태 > 을 참고하여 작성되었습니다.

TCP congestion control 혼잡제어

명시적 혼잡 알림 Explicit Congestion Notification (ECN)

명시적 혼잡 알림 ECN은 인터넷 내에서 수행되는 네트워크 지원 혼잡 제어의 한 형태이다. TCP와 IP 모두 관여하는데 네트워크 계층에서 IP 데이터그램의 헤더 중 TOS(Type-of-service) 서비스 유형 필드에 있는 2개 비트의 공간이 ECN에 사용된다.

ECN 비트의 한 비트는 라우터가 정체를 겪고 있음을 나타내기 위해 사용되게 된다. 손실이 발생하기 전에 혼잡 시작을 송신자에게 알리는 비트를 설정할 수 있다. 나머지 한 비트는 발신 호스트가 라우터에게 송신자와 발신자 모두 ECN을 사용할 수 있음을 알리게 된다.

위 그림을 보면 수신 호스트 A의 TCP가 데이터그램 (네트워크층)을 통해 ECN Echo비트를 수신하면 호스트 A는 TCP ACK 세그먼트에 ECE(Explicit Congestion Notification Echo)를 설정해여 송신 호스트 B에게 혼잡 표시를 알리게 된다. (E비트)

TCP 송신자 B는 빠른 재전송을 사용하여 손실된 세그먼트에 반응하는 것 처럼 혼잡 윈도우를 절반으로 줄이고 다음 전송되는 세그먼트의 헤더에 CWR(Congestion Window Reduced) 비트를 1로 설정한다. (C비트)

결과적으로 ECN을 구현하는데에는 네트워크층 데이터그램의 TOS 헤더의 ECN 2비트와 전송층 TCP 세그먼트 헤더의 CWR, ECE 두 비트가 사용된다.

지연 기반 혼잡 제어 Delay-based Congestion Control

지연 기반 접근 방식은 패킷 손실이 발생하기 전에 혼잡 시작을 사전에 감지하는 것이다.

TCP Vegas 에서는 모든 확인 응답된 패킷에 대한 출발지에서 목적지까지 경로의 RTT를 측정한다. 측정한 RTT 값중 최소값을 RTT(min)이라고 한다면 최선의 상태일때 처리률은 cwnd/RTT(min)이라고 할 수 있다.

실제 송신자가 측정한 처리량이 이 값에 가까우면 정체되지 않고 있다는 것이기에 TCP 속도를 증가시키고, 반대로 가까우면 속도를 낮춘다. 파이프를 가득 채우도록 하되 넘치지 않도록 한다.

BBR 혼잡 제어 프로토콜은 TCP Vegas의 아이디어를 기반으로 하며 2016년 구글이 큐빅을 대체하여 구글 데이터 센터를 상호연결하는 사설 네트워크의 트래픽에 사용되기 시작했다고 한다. 구글 및 유튜브 웹 서버에 배포되어 사용되고 있다.

728x90