network

[network] 혼자 공부하는 네트워크 4-3 ECN: 명시적 혼잡 알림

hail2y 2025. 1. 6. 23:55

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

    • 중간 노드의 도움으로 혼잡을 제어
    • TCP의 혼잡 제어 - 오로지 송신 호스트의 몫; 혼잡 감지, 혼잡 윈도우 계산, 재전송
    • 그에 반해 ECN은 혼잡을 회피하기 위해 네트워크 중간 장치(주로 라우터)의 도움을 받는다
    • 오늘날의 네트워크 환경에서 적극적으로 활용됨

https://www.youtube.com/watch?v=LMnKkm32k14&list=PLVsNizTWUw7HfOCgvlfHIDPPo3TE-2iQM&index=36

 

왼쪽은 IPv4 헤더, 오른쪽은 TCP 헤더의 모습이다. 여기서 왼쪽 헤더의 서비스 유형에 있는 두 개의 ECN 비트가 '11'로 설정된 채 수신지 호스트로 전달되면 수신지 쪽에서는 중간에서 라우터가 혼잡을 감지했음을 확인할 수 있는 것이다. 그런 후 수신지 쪽에서 다시 송신지 쪽으로 TCP 세그먼트의 ECE(ECN-Echo) 플래그에 1을 세팅하여 보낸다. 이것은 수신지 호스트에서 송신지 호스트 쪽으로 중간에서 라우터가 혼잡을 감지했다는 상황을 알리는 것이다. 이 비트를 확인한 송신지 호스트는 혼잡 윈도우를 조절하면서 수신지 호스트 쪽으로 TCP 세그먼트의 CWR(Congestion Window Reduced) 비트에 1을 세팅하여 보낸다. 말로 설명하면 복잡하게 들리지만 전체 흐름도는 아래와 같다. 

https://www.youtube.com/watch?v=LMnKkm32k14&list=PLVsNizTWUw7HfOCgvlfHIDPPo3TE-2iQM&index=36

IP 헤더의 ECN 관련 필드가 두 개의 ECN 비트로 구성되어 있어 00~11까지의 표현이 가능하다. 00은 ECN을 사용하지 않는 상태, 01과 10은 ECT(ECN-Capable Transport) 상태라고 하는데 두 엔드 포인트 모두 ECN을 지원할 때 세팅된다고 한다. 그리고 11은 언급했듯이 라우터가 엔드 노드에게 혼잡이 있다고 알려주는 상태로 CE(Congestion Experienced)를 나타낸다. [참고: https://mr-zero.tistory.com/20, https://www.ietf.org/rfc/rfc3168.txt]

 

[정리] Explicit Congestion Notification?

TCP flag 중 ECN(Explicit Congestion Notification) flag와 CWR(Congestion Window Reduced) flag의 기능과 역할이 궁금해 알아보았다. 아래의 기사에 ECN의 문제점과 탄생 배경 등이 잘 나와있으니 참고 바란다. ECN의 개

mr-zero.tistory.com

 

이렇게 ECN을 통한 혼잡 제어를 할 경우 장점은 다음과 같다.

  • 송신 호스트만 혼잡 제어를 수행할 경우 문제가 발생한 이후에야 비로소 혼잡 제어를 하게 된다.
  • 그래서 ECN을 이용하면 수신 호스트의 ACK 세그먼트를 통해 더 빠르게 혼잡을 감지할 수 있다.