해결책
1986년 10월, 초기 인터넷은 첫 번째 혼잡 붕괴를 겪었다. 400야드 떨어진 로런스 버클리 연구소에서 UC 버클리까지의 처리량이 32 Kbps에서 40 bps로 떨어졌다. 호스트들은 손실된 패킷을 전속력으로 재전송하며 네트워크를 더욱 범람시켰다.
밴 제이콥슨의 1988년 논문 「혼잡 회피와 제어」는 그 메커니즘을 설명하고 해법을 제시했다. 송신자는 손실이 없을 때 왕복 시간마다 윈도를 한 패킷씩 늘리고, 패킷이 손실되면 윈도를 절반으로 줄여야 한다는, 즉 가산 증가, 승산 감소 정책이다.
모든 TCP 송신자가 같은 알고리즘을 따르기 때문에, 네트워크는 중앙 제어기 없이도 안정적이고 대략 공정한 평형에 도달한다. 이 아이디어는 TCP에 채택되었고, 이후 슬로 스타트, 빠른 재전송, 빠른 회복과 함께 RFC 5681에 성문화되었다.
달성한 것
손실을 감지하면 속도를 절반으로 줄이고, 그다음 다시 천천히 올라간다
손실은 모든 송신자가 이미 받는 혼잡 신호이므로 추가적인 네트워크 장치가 필요 없다.
승산 감소는 문제에 빠르게 대응하고, 가산 증가는 용량을 천천히 탐색한다.
규칙을 공유하는 모든 송신자 덕분에 공정성은 개별 행동에서 자연스럽게 나온다.
라우터를 바꾸거나 대역폭을 추가하지 않고도 그 실패를 해결했다.
모든 행위자의 합리적 대응이 공유 자원을 더 나쁘게 만들 때는 모두가 따르는 규칙을 바꿔라. 안전한 행동은 천천히 확대되고 해로운 행동은 급격히 축소되게 하라.
그 후
이 알고리즘은 대부분의 인터넷 트래픽을 나르는 전송 프로토콜인 TCP의 기본 동작이 되었다. 2009년에 발표된 RFC 5681은 여전히 슬로 스타트, 혼잡 회피, 빠른 재전송, 빠른 회복을 표준으로 나열하며, 혼잡 제어 연구는 이 논문에서 출발해 독자적인 분야로 성장했다.
근거 확인하기
출처
- Congestion Avoidance and Control (Van Jacobson & Michael Karels, November 1988) Lawrence Berkeley National Laboratory · ee.lbl.gov
- RFC 5681 — TCP Congestion Control Internet Engineering Task Force · rfc-editor.org