혼잡 제어의 원리(Principles of Congestion Control)
혼잡(Congestion)은 비공식적으로 "너무 많은 출발지가 너무 많은 데이터를 너무 빠른 속도로 전송하여 네트워크가 처리할 수 없는 상태"를 의미한다.
네트워크에서 혼잡이 발생하면 긴 지연(long delays)과 패킷 손실(packet loss)과 같은 증상이 나타난다.
이는 라우터 버퍼에서의 대기(queueing)와 버퍼 오버플로우로 인한 패킷 버림 현상으로 발생한다.
혼잡 제어와 흐름 제어의 차이
혼잡 제어(congestion control)와 흐름 제어(flow control)는 서로 다른 개념이다. 혼잡 제어는 너무 많은 송신자가 너무 빠르게 데이터를 보내는 상황을 관리하는 것이고, 흐름 제어는 한 송신자가 한 수신자에게 너무 빠르게 데이터를 보내는 상황을 관리하는 것이다. 혼잡 제어는 네트워크 전체의 안정성을 위한 것이며, 네트워크 통신에서 상위 10개 문제 중 하나로 꼽힌다.
시나리오 1 : 무한 버퍼, 재전송X
가장 단순한 시나리오는 하나의 라우터와 무한 버퍼, 두 개의 호스트가 있는 경우이다. 이 경우 입력과 출력 링크 용량은 R이고, 두 개의 데이터 흐름이 존재하며 재전송이 필요하지 않다.
이러한 환경에서 도착률(arrival rate) λin이 R/2에 접근할 때 어떤 현상이 발생하는지 살펴볼 수 있다. 처리량(throughput)은 연결당 최대 R/2까지 증가할 수 있으나, 도착률이 링크 용량에 근접함에 따라 큐잉 지연(delay)이 급격히 증가한다. 도착률이 R/2에 가까워지면 지연은 무한대로 증가한다.
시나리오 2: 유한 버퍼와 재전송
시나리오 2는 하나의 라우터와 유한 버퍼, 그리고 패킷 재전송 메커니즘이 있는 환경을 가정한다. 이 시나리오에서는 애플리케이션 계층의 입력과 출력은 동일하지만(λin = λout), 전송 계층의 입력에는 재전송되는 패킷이 포함되기 때문에 더 커진다(λ'in ≥ λin).
이상적 상황: 완벽한 지식(Perfect Knowledge)
이 가정에서는 송신자가 라우터 버퍼의 상태를 완벽하게 알고 있어서 버퍼 공간이 있을 때만 패킷을 전송한다. 따라서 패킷 손실이 발생하지 않으며, 최대 처리량(throughput)은 R/2에 도달할 수 있다. 이 상황에서 애플리케이션 계층과 전송 계층의 입력은 동일하다(λ'in = λin).
부분적 완벽한 지식(Some Perfect Knowledge)
여기서는 버퍼가 꽉 차면 패킷이 손실될 수 있지만, 송신자는 패킷이 손실되었는지 정확히 알고 있어서 손실된 패킷만 재전송한다. 이 상황에서는:
- 패킷이 라우터에서 버퍼 공간 부족으로 버려질 수 있다.
- 송신자는 패킷 손실을 정확히 감지하고 손실된 패킷만 재전송한다.
- 처리량(throughput)은 계속 R/2에 도달할 수 있지만, 전송 계층의 입력은 필요한 재전송 때문에 증가한다.
- 그래프에서 "wasted capacity due to retransmissions" 영역은 재전송으로 인한 대역폭 낭비를 나타낸다.
현실적 상황 - 불필요한 중복(Un-needed Duplicates)
실제 네트워크 환경에서는 다음과 같은 문제가 발생한다:
- 버퍼가 꽉 차서 패킷이 손실되면 재전송이 필요하다.
- 송신자는 타임아웃이 너무 빨리 발생하여 실제로는 지연되었지만 손실되지 않은 패킷을 재전송하는 경우가 있다.
- 이 경우 원본 패킷과 재전송된 패킷이 모두 수신자에게 전달된다.
- 이로 인해 "un-needed duplicates"라는 불필요한 중복 패킷이 발생한다.
혼잡의 비용(Costs of Congestion)
시나리오 2에서 혼잡으로 인한 비용은 다음과 같다:
- 동일한 수신자 처리량(receiver throughput)을 위해 더 많은 작업(재전송)이 필요하다.
- 불필요한 재전송은 링크가 패킷의 여러 복사본을 전달하게 만든다.
- 이로 인해 최대 달성 가능한 처리량(achievable throughput)이 감소한다.
- 네트워크 대역폭이 낭비되고, 전체적인 효율성이 저하된다.
송신률이 R/2일 때, 일부 패킷은 재전송이며, 이 중에는 필요한 재전송과 함께 불필요한 중복 패킷도 포함된다. 그래프는 불필요한 재전송으로 인한 "wasted capacity"를 보여주며, 이는 네트워크 성능을 저하시키는 주요 요인이다.
이러한 문제를 해결하기 위해 TCP와 같은 프로토콜은 다양한 혼잡 제어 메커니즘을 구현하여 네트워크의 효율성을 높이고 혼잡 상황에서도 안정적인 통신을 보장하려 한다.
시나리오 3: 여러 송신자
혼잡(Congestion)은 "너무 많은 송신자가 너무 많은 데이터를 너무 빠른 속도로 전송하여 네트워크가 처리할 수 없는 상태"를 의미한다. 시나리오 1과 2에서는 단일 라우터 환경에서의 혼잡 문제를 살펴보았다면, 시나리오 3에서는 더 복잡한 네트워크 환경에서 발생하는 혼잡 문제를 분석한다.
시나리오 3의 특징
시나리오 3은 다음과 같은 특징을 가진다:
- 네 개의 송신자(four senders)가 존재한다
- 다중 홉 경로(multi-hop paths)를 통해 데이터가 전송된다
- 타임아웃과 재전송(timeout/retransmit) 메커니즘이 적용된다
- 유한한 공유 출력 링크 버퍼(finite shared output link buffers)가 있다
이러한 환경에서 λin(빨간색 트래픽)과 λin'(파란색 트래픽)이 증가할 때 어떤 현상이 발생하는지 살펴보는 것이 중요하다.
시나리오 3에서의 문제 상황
시나리오 3에서는 Host A에서 Host C로 향하는 빨간색 트래픽과 Host D에서 Host B로 향하는 파란색 트래픽이 서로 다른 경로를 통해 전송된다. 두 경로는 중간에 하나의 라우터를 공유하는 구조를 가진다.
중요한 점은 Host A의 트래픽(빨간색)은 라우터까지 1-hop으로 도달하는 반면, Host D의 트래픽(파란색)은 라우터까지 2-hop을 거쳐 도달한다는 것이다. 이러한 구조적 특성으로 인해 다음과 같은 현상이 발생한다:
- 빨간색 λin이 증가함에 따라 상위 큐(upper queue)에 도착하는 모든 파란색 패킷이 버려진다
- 결과적으로 파란색 트래픽의 처리량(throughput)은 0으로 수렴한다
이는 1-hop 경로를 가진 트래픽이 2-hop 경로를 가진 트래픽보다 공유 버퍼를 더 빠르게 점유하기 때문에 발생하는 현상이다. 이러한 상황에서는 공정성(fairness) 문제가 심각하게 나타난다.
시나리오 3에서의 혼잡 비용
시나리오 3에서 가장 중요한 혼잡의 비용(cost)은 "upstream transmission capacity wastage"이다.
패킷이 네트워크 경로의 중간 지점에서 버려질 때, 해당 패킷이 버려지는 지점까지 도달하는 데 사용된 모든 업스트림 전송 용량(upstream transmission capacity)은 낭비된다. 다시 말해, 패킷이 여러 홉을 거쳐 전송되다가 마지막 라우터에서 버려진다면, 그 패킷이 이전 홉들을 통과하는 데 사용된 모든 네트워크 자원은 완전히 낭비된 것이다.
그래프를 보면 Host A의 부하(offered load)가 증가함에 따라 파란색 트래픽의 처리량(throughput)이 급격히 감소하는 것을 확인할 수 있다. 이는 다중 홉 네트워크에서 혼잡이 발생할 때 특정 플로우가 다른 플로우에 의해 완전히 차단될 수 있음을 보여준다.
따라서 시나리오 3의 가장 큰 혼잡 비용은:
- 업스트림 전송 용량의 낭비
- 다중 홉 경로를 가진 흐름의 기아 상태(starvation)
- 전체 네트워크 처리량(throughput)의 감소
- 네트워크 자원 활용의 비효율성
이러한 문제를 해결하기 위해 다양한 혼잡 제어 메커니즘이 제안되었으며, 특히 다중 홉 무선 네트워크에서는 혼잡 인식(congestion-aware) 라우팅이나 혼잡 회피(congestion avoidance) 기법이 중요하게 연구되고 있다.
혼잡 제어 접근법(Approaches towards Congestion Control)
혼잡 제어(Congestion Control)는 네트워크의 안정성과 효율성을 유지하기 위한 핵심 메커니즘이다. 네트워크 혼잡(Congestion)은 "너무 많은 송신자가 너무 많은 데이터를 너무 빠른 속도로 전송하여 네트워크가 처리할 수 없는 상태"를 의미한다. 이러한 상황에서는 패킷 손실(packet loss)과 긴 지연(long delays)이 발생하며, 이는 라우터 버퍼에서의 대기(queueing)와 버퍼 오버플로우로 인한 패킷 버림 현상으로 나타난다. 혼잡 제어는 이러한 문제를 관리하기 위한 방법으로, 크게 두 가지 접근법으로 나뉜다.
종단간 혼잡 제어(End-end Congestion Control)
종단간 혼잡 제어는 다음과 같은 특징을 가진다:
- 네트워크로부터 명시적인 피드백(explicit feedback)이 없다
- 관측된 손실(observed loss)이나 지연(delay)으로부터 혼잡을 추론(inferred)한다
- TCP가 이 접근법을 취한다
이 방식에서는 IP 계층이 혼잡 제어 목적으로 명시적인 지원을 제공하지 않기 때문에, 엔드 시스템은 네트워크 동작(패킷 손실 및 지연 등)만을 기반으로 혼잡 상태를 추론해야 한다. TCP는 필연적으로 이 종단간 접근법을 사용해야 하는데, 이는 IP 계층이 네트워크 혼잡에 관한 피드백을 엔드 시스템에 제공하지 않기 때문이다.
TCP에서는 타임아웃이나 3개의 중복된 확인응답(triple duplicate acknowledgment)을 통해 패킷 손실을 감지하고, 이를 네트워크 혼잡의 지표로 간주한다. 혼잡이 감지되면 TCP는 혼잡 윈도우(congestion window) 크기를 줄여 전송 속도를 감소시킨다. 또한 보다 최근에는 증가하는 왕복 지연 시간(round-trip delay)을 네트워크 혼잡의 지표로 사용하는 TCP 혼잡 제어 방식도 제안되었다.
네트워크 지원 혼잡 제어(Network-assisted Congestion Control)
네트워크 지원 혼잡 제어는 다음과 같은 특징을 가진다:
- 라우터가 혼잡 라우터를 통과하는 플로우를 가진 송신/수신 호스트에 직접적인(direct) 피드백을 제공한다
- 혼잡 수준을 표시하거나 송신 속도를 명시적으로 설정할 수 있다
- TCP ECN, ATM, DECbit 프로토콜 등이 이 방식을 사용한다
이 접근법에서는 네트워크 계층 구성요소(라우터)가 송신자에게 네트워크의 혼잡 상태에 대한 명시적인 피드백을 제공한다. 이 피드백은 링크에서의 혼잡을 나타내는 단일 비트처럼 간단할 수도 있다. 이 방식은 초기 IBM SNA와 DEC DECnet 아키텍처에서 채택되었으며, 최근에는 TCP/IP 네트워크에도 제안되었고 ATM ABR 혼잡 제어에서도 사용된다.
네트워크 지원 혼잡 제어에서 혼잡 정보는 일반적으로 두 가지 방식으로 네트워크에서 송신자에게 피드백된다:
- 직접 피드백(Direct feedback): 네트워크 라우터에서 송신자에게 직접 전송되는 방식으로, 일반적으로 "혼잡 발생!" 메시지를 담은 choke 패킷 형태를 취한다.
- 간접 피드백: 라우터가 송신자에서 수신자로 흐르는 패킷의 필드를 표시/업데이트하여 혼잡을 나타내는 방식이다. 표시된 패킷을 수신한 수신자는 송신자에게 혼잡 표시를 알린다. 이 형태의 알림은 최소한 완전한 왕복 시간(full round-trip time)이 소요된다.
ECN(Explicit Congestion Notification)
ECN은 패킷 삭제 없이 네트워크 혼잡에 대한 종단간 알림을 가능하게 하는 확장 기능이다. 기존 방식에서는 TCP/IP 네트워크가 패킷을 버림으로써 혼잡을 신호하는 반면, ECN이 성공적으로 협상되면 ECN 인식 라우터는 임박한 혼잡을 알리기 위해 패킷을 버리는 대신 IP 헤더에 표시를 할 수 있다. 패킷의 수신자는 혼잡 표시를 송신자에게 에코하고, 송신자는 패킷이 삭제된 것처럼 전송 속도를 줄인다.
DECbit
DECbit은 혼잡을 피하기 위해 라우터에 구현된 TCP 혼잡 제어 기술이다. 라우터가 송신자에게 혼잡을 알리고자 할 때, 패킷 헤더에 비트를 추가한다. 패킷이 라우터에 도착하면 라우터는 마지막 사용 중 및 유휴 기간과 현재 사용 중인 기간에 대한 평균 대기열 길이를 계산한다. 평균 대기열 길이가 1을 초과하면 라우터는 도착하는 패킷의 헤더에 혼잡 표시 비트를 설정한다.
ATM ABR(Available Bit Rate)
ATM ABR은 소스와 대상이 동기화될 필요가 없을 때 ATM 네트워크에서 사용되는 서비스이다. 이 서비스에서 데이터 셀은 소스에서 대상으로 일련의 중간 스위치를 통해 전송된다. 데이터 셀 사이에 리소스 관리 셀(RM 셀)이 삽입되는데, 이 RM 셀은 혼잡 관련 정보를 호스트와 스위치 간에 전달하는 데 사용될 수 있다. RM 셀이 목적지에 도착하면 반환되어 발신자에게 다시 전송된다. 스위치는 또한 RM 셀을 직접 생성하여 소스로 보낼 수도 있다.
네트워크 지원 혼잡 제어 방식은 네트워크 상태에 대한 명시적인 정보를 제공함으로써 종단간 혼잡 제어에 비해 더 효율적으로 네트워크 자원을 관리할 수 있다. 그러나 이를 위해서는 네트워크 인프라의 지원이 필요하며, 모든 라우터와 스위치가 이러한 기능을 지원해야 한다는 제약이 있다.
'CS 지식 > 컴퓨터 네트워크' 카테고리의 다른 글
[네트워크] 네트워크 계층 개요와 라우터, data plane, control plane (0) | 2025.05.28 |
---|---|
[네트워크] TCP 혼잡제어의 원리와 발전, QUIC 프로토콜의 발달 (TCP congestion control) (0) | 2025.05.19 |
[네트워크] TCP 연결 지향 프로토콜 구조와 동작 방식 - Connection-oriented transport: TCP (0) | 2025.05.12 |
[네트워크] RDT(reliable data transfer)의 개념과 진화, FSM 설명 - 신뢰할 수 있는 데이터 전송 프로토콜 (0) | 2025.05.05 |
[네트워크] UDP 특징과 구조 체크섬, 인터넷 체크섬 (0) | 2025.04.25 |
댓글