컴퓨터 네트워크 - week 7

deutan·2025년 10월 19일

computer-network

목록 보기
7/14

TCP Congestion Control


네트워크 상의 혼잡은 장비의 Capacity를 초과하는 전송이 들어오면 발생한다.

위 그림을 예시로 라우터의 capacity가 100Mbps이고 2개의 TCP 연결이 각각 100Mbps로 밀고 들어오면
당연하게도 병목이 발생한다.

우리는 이것을 TCP가 어떻게 제어하는지 살펴본다.

Load가 Capacity에 가까워지면 Delay는 exp 개형을 따라 증가한다.

Throughput은 Capacity를 넘어서면 급격하게 감소한다.

그래서 우리는 Capacity를 넘는 순간을 최대한 줄이도록 컨트롤 하는 TCP의 방식을 알아본다.


cwnd

이전 포스트에서 rwnd에 대한 것을 다루었고 이것은 Window 사이즈를 결정한다.

window = min(rwnd, cwnd)

cwnd는 rwnd와 달리 보내는 쪽에서 결정하는 윈도우 사이즈이다.

이것은 네트워크의 상태를 고려하여 보내는 윈도우 사이즈이다.

그런데 우리 Internet은 Packet Switching 방식을 사용한다.

이것은 중앙 통제가 없다는 뜻이고 다시 말해 TCP에게 네트워크의 혼잡 상태를 알려주는 유닛이 없다는 것이다.

그렇다면 TCP는 어떻게 cwnd를 정할까


Slow Start


부제목 그대로 시작은 slow start alogrithm을 따른다.

이것은 cwnd를 1로 시작하여 1RTT 마다 exponential하게 증가시키는 것이다.

packet 1개를 보내어 손실을 확인하고 손실이 없다면
(Packet Loss가 일어나지 않는다면)
ACK한개당 1MSS씩 증가시킨다

이것을 threshold 까지 증가시킨다.


Congestion Avoidance

exponential하게 증가시키는 것은 너무 빠르기 때문에 유동적인 threshold까지 증가시켰다면
additive하게 증가시킨다.

RTT마다 1개씩 증가시켜서 혼잡을 확인한다.


Congestion plolicy summary


위 그림이 혼잡제어의 모든 케이스를 설명한다.


예시와 함께 살펴보면 먼저 slow start를 통해 threshold 16까지 증가시킨다.

이후 선형증가를 실시하는데 Time-out이 20에서 탐지되었다.

케이스를 설명하는 그림을 보면 Time-out 발생 시 cwnd를 1로 변경하고 threshold를 현재 cwnd의 절반으로 설정하고 다시 Slow start를 실시한다.

이후 10에 도달하면 다시 선형증가를 실시.

3 ACK 탐지 시 cwnd를 절반으로 바꾸고 다시 선형증가를 한다.


Why is TCP fair?


cwnd에 대한 선형증가는 1RTT마다 이루어진다고 설명했다.

다시 말해 throughput은 RTT에 반비례한다.

만약 RTT가 동일한 두개의 연결이 있다면 시간이 지속됨에 따라 bandwidth를 거의 동일하게 나누어 갖도록 수렴한다.


WIFI


각 나라 별로 여러 개의 와이파이 채널을 가지고 있으며
한 채널은 데이터를 전송하기 위한 대역폭(bandwidth)가 필요하다. - 22MHz

서로 다른 채널이 간섭을 미치지 않기 위해서는 1, 6, 11 채널을 사용해야 한다.

하지만 처음에 디자인 할 때에는 채널의 대역폭을 겹치게 만들어 두었다.

1번채널과 2번채널이 동시에 데이터를 전송하면 깨지게 된다.

간섭을 안주면서 동시에 사용할 수 있는 채널은 최대 3개이다.


여러가지 프로토콜 버전에 따른 스펙이 다르다.

g나 n 버전 부터는 겹치는 범위가 나아졌다.

5GHz 대역에서는 중첩지역이 적어지지만 장애물에 영향을 더 받게 된다.

따라서 거리가 가까우면 5G로 쓰고 멀면 2.4G로 접속하여 사용하는 편이 좋다.

profile
Visual Computing and Learning

0개의 댓글