TCP 혼잡 제어: AIMD
AIMD(Additive Increase Multiplicative Decrease)
는 TCP 혼잡 제어에서 사용되는 알고리즘으로, 송신자는 패킷 손실이 발생할 때까지 전송 속도를 증가시키고, 손실이 발생하면 전송 속도를 감소시킵니다. 이 과정을 통해 네트워크 혼잡을 최소화하고 전송 성능을 최적화합니다.
- 가법적 증가: 송신자는 매 RTT(Round-Trip Time)마다 전송 속도를 1 MSS(Minimum Segment Size)만큼 증가시킵니다.
- 승법적 감소: 패킷 손실이 감지되면 전송 속도를 절반으로 감소시킵니다.
왜 AIMD를 사용하는가?
AIMD는 네트워크 혼잡을 방지하기 위한 혼잡 제어 알고리즘입니다. 전송 속도를 점진적으로 증가시키고, 혼잡을 감지하면 급격히 감소시키는 방식입니다.
AIMD는 분산 비동기 알고리즘으로 다음과 같은 특성이 있다.
• 네트워크 전반의 혼잡 흐름 비율 최적화
• 바람직한 안정화 특성 보유
TCP 혼잡 제어 변수: cwnd
TCP에서 송신자는 cwnd(Congestion Window)라는 변수를 사용해 전송 가능한 데이터 양을 제어합니다. 이 값은 네트워크의 혼잡 상태에 따라 동적으로 변경됩니다. 송신자는 LastByteSent - LastByteAcked < cwnd일 때만 새로운 데이터를 전송할 수 있습니다.
TCP 슬로우 스타트(Slow Start)
TCP 연결이 설정된 후, 첫 번째 패킷 손실이 발생할 때까지 전송 속도가 지수적으로 증가합니다. 이 과정은 슬로우 스타트라고 불리며, 네트워크의 가용 대역폭을 빠르게 찾기 위한 방식입니다.
- 초기 cwnd 값은 1 MSS이며, 매 RTT마다 cwnd 값이 두 배로 증가합니다.
- 수신자로부터 ACK가 도착할 때마다 cwnd 값이 증가합니다.
✅슬로우 스타트란?
슬로우 스타트는 연결이 설정된 후 전송 속도를 빠르게 증가시키기 위한 과정입니다. 초반에는 느리게 시작하지만, 지수적으로 증가해 네트워크 용량을 빠르게 측정할 수 있습니다.
혼잡 회피로의 전환
슬로우 스타트는 cwnd 값이 ssthresh(혼잡 회피 임계값)에 도달하면 종료됩니다. 이때부터 송신자는 전송 속도를 선형적으로 증가시키며, 네트워크가 혼잡 상태에 도달하지 않도록 조정합니다.
- ssthresh 값은 패킷 손실 발생 직전의 cwnd 값의 절반으로 설정됩니다.
TCP CUBIC
TCP CUBIC은 AIMD보다 가용 대역폭을 더 효율적으로 사용할 수 있는 혼잡 제어 방식입니다. CUBIC은 Wmax(혼잡 손실이 감지된 시점의 전송 속도)를 기준으로, 처음에는 빠르게 전송 속도를 증가시키다가 Wmax에 가까워질수록 점진적으로 증가합니다.
- Wmax: 혼잡 손실이 감지된 시점의 전송 속도입니다.
- TCP CUBIC은 주로 리눅스와 웹 서버에서 기본 설정으로 사용됩니다.
✅ TCP CUBIC이란?
TCP CUBIC은 혼잡 손실이 발생할 때마다 전송 속도를 급격히 감소시키는 대신, Wmax에 도달할 때까지 전송 속도를 점진적으로 조정하는 혼잡 제어 알고리즘입니다.
병목 링크
TCP에서 전송 속도를 높이다 보면, 네트워크의 특정 라우터에서 병목 현상이 발생할 수 있습니다. 이때 패킷 손실이 발생하며, 네트워크 성능이 저하됩니다. 병목 링크는 큐가 가득 차서 패킷을 처리하지 못하는 링크를 의미합니다.
지연 기반 TCP 혼잡 제어
지연 기반 TCP 혼잡 제어는 RTT 값을 기반으로 혼잡을 감지하고, 혼잡이 발생하기 전에 전송 속도를 조정하는 방식입니다. RTTmin(관찰된 최소 RTT)과 현재 RTT 값을 비교해 혼잡 여부를 판단합니다.
- RTTmin: 혼잡이 발생하지 않은 상태에서의 최소 RTT 값입니다.
- RTT 값이 RTTmin과 크게 차이 나지 않으면, 송신자는 전송 속도를 계속해서 증가시킬 수 있습니다.
✅ RTT란?
RTT는 패킷이 송신자에서 수신자로 전송되고, 다시 응답이 송신자로 돌아오는 데 걸리는 시간을 의미합니다.
RTT가 길어지면 네트워크 혼잡이 발생했을 가능성이 큽니다.
명백한 혼잡 통지(ECN)
ECN(Explicit Congestion Notification)은 TCP가 혼잡 상태를 더 명확하게 감지할 수 있도록 돕는 기술입니다.
네트워크 혼잡을 감지한 라우터가 송신자와 수신자에게 혼잡 상태를 알리기 위한 기술로, 이를 통해 패킷 손실 없이도 전송 속도를 조절할 수 있습니다.
라우터가 혼잡 상태를 감지하면, 송신자와 수신자에게 혼잡 신호를 전달해 전송 속도를 조절할 수 있게 합니다. 이는 IP 헤더와 TCP 헤더의 특정 비트를 설정하여 이루어집니다.
TCP 공정성
TCP는 네트워크 자원을 공정하게 사용하도록 설계되었습니다. 예를 들어, 여러 TCP 세션이 동일한 병목 라우터를 공유할 때, 각 세션은 병목 링크의 대역폭을 공정하게 나눌 수 있습니다. 하지만 UDP 같은 다른 프로토콜은 혼잡 제어를 사용하지 않으므로, 공정한 자원 할당을 보장하지 못할 수 있습니다.
TCP 혼잡 제어는 네트워크 성능을 최적화하고 혼잡을 방지하는 데 중요한 역할을 합니다. AIMD, 슬로우 스타트, CUBIC 등의 다양한 혼잡 제어 알고리즘을 사용해 네트워크 상태에 맞춰 전송 속도를 조절하며, ECN을 통해 명확한 혼잡 신호를 전달할 수도 있습니다. TCP는 공정성을 유지하면서 네트워크 자원을 효율적으로 사용할 수 있도록 설계되었습니다.
'전공 공부 > 컴퓨터네트워크' 카테고리의 다른 글
TCP 흐름 제어와 연결 관리 (0) | 2024.10.29 |
---|---|
TCP: 연결지향형 트랜스포트 (0) | 2024.10.29 |
혼잡 제어의 원리 (1) | 2024.10.03 |
TCP 흐름 제어 (1) | 2024.10.03 |
연결지향형 트랜스포트 : TCP (2) | 2024.10.03 |