[네트워크] 전송 계층 5 : congestion control

드림보이즈·2024년 10월 1일
0

주제 : TCP Congestion Control

네트워크는 중간 라우터가 상태를 알려주지 않는다. 오로지 나와 상대방만 안다.
네트워크는 퍼블릭이라 나 망하면 다 망하고, 다 망하면 나도 망하는 구조다.

TCP Congestion control : 3 Phase

그래서 모두 해피하게, 이 공공물인 네트워크를 효율적으로 사용하기 위해,
약속을 정한 것이다. 룰이지 룰.

  1. Slow Start
  2. Addictive increase
  3. Multiplicative decrease

먼저 Slow Start. 하나, 둘, 넷, 이렇게 2의 제곱으로 보낸다.
그리고 Threshold에 다다르면, 이제 Linear한 직선으로, Addictive increase를 적용시킨다.
이렇게 증가시키며 보내다보면, 언젠가 Loss가 생길거 아닌가?
그럼 1/2배를 한 것을 Threshold로 설정하고, 다시 1부터 시작하는 것이다.
(배로 줄었으니까 Multiplicative decrease)

전송 속도 Rate = CongWin / RTT

너무 당연하다.
전송 속도는, 한번 왔다갔다 (RTT)에 비해 얼마나 많이 한번에 보낼 수 있느냐(CongWin)
에 따라 달라질 것이기 때문이다.
또한, 네트워크 변동에 따라 바뀌는 게 CongWin이기 때문에, 전송속도는 Congwin에 따라 결정된다고 보면 된다.

Threshold? : 작업이나 조건이 시작되거나 종료되는 기준

Q. 맨 처음 Threshold 설정?

일반적으로 아주 큰값으로 설정한다고 한다.
그 이후로는 Loss / 2로 바꾸는 거고.

TCP Tahoe vs TCP Reno

버전 1, 버전 2라고 보면 된다.

버전 2 Reno를 보자.
버전 1에서는 1부터 Slow start를 다시 했었다.
그런데, 이 Loss가 오는 상황이 어떤 경우인지를 생각해보자.
딱 두 가지다.
1. Timer
2. 3 Duplicate ACK
네트워크 입장에서 보자.
1번이 문제있냐, 2번이 문제있냐?
2번은 네트워크는 문제가 없어. 재수없게 딱 그게 어디서 사라진 것 뿐이다.
그러니까 굳이 1부터 다시 시작할 필요가 없단 뜻이다.
타이머는 버전 1,2가 동일한데,
Duplicated ACK을 받았을 땐, 버전 2는 위 그림처럼 Threshold부터 Linear하게 증가시킨다.

MSS (Maximum Segment Size) = 한번에 전송할 수 있는 최대 데이터 크기

TCP에서 한번에 전송할 수 있는 최대 데이터 크기 (헤더없는 순수 데이터 크기)
결국 맨처음에는, CongWin = 1 MSS인 것이다.

Window Size가 1000비트고, MSS가 10이라면,
나는 100개 크기 세그먼트를 연속으로 전송할 수 있는 것이다.

Window size = ACK 안 기다리고 보낼 수 있는 데이터 총량

TCP Fairness


어떤 한 컴퓨터가 혼자 네트워크를 쓰고 있는데,
동일한 경로로 어떤 컴퓨터가 추가될 경우, 이들은 공평하게 1/2씩 쓸 수 있을까?

그렇다.

profile
10년 후 세계 최고 블록체인 개발자

0개의 댓글

관련 채용 정보