1986년 10월, 부하가 증가함에 따라 인터넷의 처리량은 용량의 약 1000분의 1로 붕괴했는데, 단일 링크도 끊어진 것이 없었다. Van Jacobson은 원인을 진단했다. 송신자들은 가능한 한 빠르게 전송했고, 손실이 발생하면 전속력으로 재전송했기 때문에, 네트워크는 어차피 다시 버려질 패킷을 재전송하는 데 용량을 소비하고 있었다.

그의 1988년 논문은 슬로우 스타트와 혼잡 회피를 제안했다. 송신자는 하나의 세그먼트로 시작하여 손실을 감지할 때까지 각 확인응답마다 윈도를 두 배로 늘린 다음, 윈도를 절반으로 줄이고 천천히 증가시킨다. 경로의 용량을 가정하는 대신, 각 송신자는 피드백을 통해 그것을 측정하고 적응한다.

이 설계는 시작 단계에서 의도적으로 보수적인데, 가용 대역폭을 알아내는 유일한 방법은 그것을 탐색하는 것이고, 탐색하는 유일한 안전한 방법은 완만하게 하는 것이기 때문이다. 그 결과 나타나는 동작—가산 증가, 승산 감소—은 수천 개의 연결이 중앙 스케줄러 없이 하나의 경로를 공유할 수 있게 한다.

용량을 완만하게 탐색하고, 손실 시 절반으로 줄인다

손실은 오류가 아니라 신호로 취급되므로, 송신자는 네트워크가 범람하기 전에 반응한다.

지수적 증가는 용량을 빠르게 찾아내고, 손실 시 절반으로 줄이는 것은 복구를 안전하게 유지한다.

알고리즘은 국소적이다. 각 송신자는 자신의 피드백으로부터 적응하므로, 시스템은 수백만 개의 연결로 확장된다.

새로운 하드웨어가 아니라 한 프로토콜의 동작 변경으로 시스템적 실패를 해결했다.

시스템의 용량이 알려지지 않았고 공유되는 경우, 모든 참여자가 보수적으로 탐색하고 피드백에 따라 물러나게 하라—그러면 집합적으로 자기 조절된다.

슬로우 스타트와 혼잡 회피는 TCP 혼잡 제어의 핵심이 되었고 1997년 RFC 2001로 성문화되었다. 이후의 변형들(NewReno, CUBIC, BBR)은 탐색 규칙을 개선했지만, 탐색하고 물러나는 원칙은 여전히 대부분의 인터넷이 대역폭을 공유하는 방식을 지배하고 있다.

근거 확인하기

출처

  1. Congestion Avoidance and Control ACM SIGCOMM 1988 (via Lawrence Berkeley National Laboratory) · ee.lbl.gov ·
  2. RFC 2001 — TCP Slow Start, Congestion Avoidance, Fast Retransmit, and Fast Recovery Algorithms IETF / RFC Editor · rfc-editor.org