목차
- Congestion
- Causes & cost of congestion
- TCP 혼잡 제어
- TCP 혼잡 제어 알고리즘
1. Congestion
네트워크에 트래픽(사용량)이 많이 몰리는 상황
혼잡 징후
- lost packets(라우터의 버퍼 오버플로우)
- long delays(라우터 버퍼 큐잉 딜레이)
flow control vs. congestion control
- flow control: 상대방이 데이터를 받을 수 있을 때, 그 범위 내로 데이터를 보내는 것
- congest control: 네트워크 관점에서 데이터가 많아지면 제어하는 것
2. Causes & cost of congestion
scenario 1
조건
- 송신기 2개, 수신기 2개
- 라우터 1개, 버퍼 크기 무한
- 링크 출력 성능 R
- 재전송 없음
각 송신기에서 아무리 빨리 데이터를 보내도 링크 출력 성능이 R이므로 R/2가 최고 성능이 됨
이상적인 시나리오에서도 패킷 도착 속도가 링크 용량에 근접함에 따라 큰 대기열 지연이 발생
scenario 2
조건
- 라우터 1, 버퍼 크기 유한
- 재전송 있음(패킷 로스 발생 가능, time-out)
- 응용 계층 수신량과 송신량이 같음
- 재전송이 있으므로 전송 계층 input ≥ 응용 계층 input
버퍼가 가득 차면 패킷이 로스되어 재전송해야 하므로 수신량이 송신량에 미치지 못함
버퍼가 가득차서 로스가 발생하지 않더라도 버퍼가 혼잡하면, 패킷이 라우터에 머물다가 time-out이 발생하고 A에서 패킷을 하나 더 보내게 되어 동일한 패킷이 두 개 전송될 수도 있음
scenario 3
호스트 D에서 호스트 B로 데이터를 보내려고 할 때, 두 번째로 지나는 라우터는 혼잡한 상태임(호스트 A가 보낸 패킷이 대부분)
→ 패킷 로스가 많이 일어남
따라서 input이 어느 수준 이상 많아지면 output는 급격하게 떨어짐
3. TCP 혼잡 제어
Approaches to Congestion Control
크게 2가지 방식으로 혼잡 제어에 접근할 수 있음
- End-to-End congestion control
- 호스트 A와 B가 직접 데이터 유실량 등을 확인하며 데이터를 보내는 속도를 조절 - Network-assisted congestion control
- 라우터들이 자신의 버퍼 상황을 체크하고 혼잡도를 호스트한테 알림
TCP congestion control
송신자가 전송 속도(window size)를 증가시키며 로스가 발생할 때까지 사용 가능한 대역폭을 탐색
- cwnd: congestion window
- 로스가 감지될 때까지 RTT마다 cwnd를 1 MSS씩 증가
- 로스 후 cwnd를 반으로 감소
TCP는 결국 cwnd와 rwnd 중 작은 값을 기준으로 데이터를 전송
→ TCP 전송 속도는 cwnd/RTT에 비례(rwnd를 무시할 경우)
4. TCP congestion-control algorithm
- slow start
- congestion avoidance
- fast recovery
TCP slow start
cwnd 초기값 = 1 MSS
연결이 시작되면 로스가 발생할 때까지 MSS를 2배씩 증가
초기값은 작지만 cwnd가 빠르게 증가
Congestion Avoidance
ssthresh = 마지막 혼잡이 발생했을 때의 전송 속도의 절반
- 로스가 발생하면 cwnd 1로 초기화
- slow start 방식으로 cwnd 크기 2배씩 증가
- ssthresh 값에 다다르면 1씩 cwnd 증가
Fest Recovery
duplicate ACKs가 3개 발생하면 ssthresh 값에서 3을 더한 값으로 cwnd 값 초기화
이후 1씩 cwnd 값 증가
Summary
TCP Fairness
각 TCP 커넥션이 공정한 양의 데이터를 전송하도록 하는 것
각 TCP 커넥션이 로스가 발생할 때마다 cwnd를 조정하며 그 값은 점점 비슷해짐
'전공 > 네트워크' 카테고리의 다른 글
[네트워크] #16 라우터 (구조, 기능, 포워딩, 스케줄링 정책) (2) | 2023.12.05 |
---|---|
[네트워크] #15 네트워크 계층 (Data plane, Control plane) (1) | 2023.12.05 |
[네트워크] #13 TCP (개념, 기술 전략) (1) | 2023.10.20 |
[네트워크] #12 RDT (신뢰성 있는 데이터 전송), RDT 오토마톤 표현, 파이프라인 전송 (1) | 2023.10.19 |
[네트워크] #11 UDP (특징, 세그먼트 구조), 전송 계층에 체크섬이 있는 이유 (0) | 2023.10.19 |