ECN(Explicit Congestion Notification): 명시적 혼잡 알림
- 중간 노드의 도움으로 혼잡을 제어
- TCP의 혼잡 제어 - 오로지 송신 호스트의 몫; 혼잡 감지, 혼잡 윈도우 계산, 재전송
- 그에 반해 ECN은 혼잡을 회피하기 위해 네트워크 중간 장치(주로 라우터)의 도움을 받는다
- 오늘날의 네트워크 환경에서 적극적으로 활용됨
왼쪽은 IPv4 헤더, 오른쪽은 TCP 헤더의 모습이다. 여기서 왼쪽 헤더의 서비스 유형에 있는 두 개의 ECN 비트가 '11'로 설정된 채 수신지 호스트로 전달되면 수신지 쪽에서는 중간에서 라우터가 혼잡을 감지했음을 확인할 수 있는 것이다. 그런 후 수신지 쪽에서 다시 송신지 쪽으로 TCP 세그먼트의 ECE(ECN-Echo) 플래그에 1을 세팅하여 보낸다. 이것은 수신지 호스트에서 송신지 호스트 쪽으로 중간에서 라우터가 혼잡을 감지했다는 상황을 알리는 것이다. 이 비트를 확인한 송신지 호스트는 혼잡 윈도우를 조절하면서 수신지 호스트 쪽으로 TCP 세그먼트의 CWR(Congestion Window Reduced) 비트에 1을 세팅하여 보낸다. 말로 설명하면 복잡하게 들리지만 전체 흐름도는 아래와 같다.
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 세그먼트를 통해 더 빠르게 혼잡을 감지할 수 있다.
'network' 카테고리의 다른 글
[network] 혼자 공부하는 네트워크 05-1 추가: DNS 레코드 타입 (0) | 2025.01.13 |
---|---|
[network] 혼자 공부하는 네트워크 05-1 DNS와 자원 (0) | 2025.01.08 |
[network] 혼자 공부하는 네트워크 04-3 TCP의 오류, 흐름, 혼잡 제어 (0) | 2025.01.06 |
[network] 혼자 공부하는 네트워크 04-2 TCP와 UDP (0) | 2025.01.06 |
[network] 혼자 공부하는 네트워크 04-1 추가 2: ICMP (241201) (0) | 2024.12.01 |