Library/Computer Network

Congestion Avoidance

Celdee 2008. 6. 11. 04:01
혼잡 회피(Congestion avoidance) 루틴은 느린 시작의 기하 급수적인 기법보다 더 느리고 조심스럽게 혼잡 윈도우의 크기를 확대시킬 필요가 있을 때 호출된다. 혼잡 회피 기법은 중복된 확인 메시지를 통해 네트워크 혼잡이 감지되거나 수신 확인 타이머가 만료된 경우에 복구 절차의 일부분으로 요구된다.

중복된 확인 메시지는 보기 드문 것도 아니지만 (또 TCP의 오류 복구 기법을 위해 허용되고 있지만), 중복된 확인 메시지가 많다는 것은 네트워크 혼잡이 발생하여 IP 데이터그램이 어디에선가 분실되었다는 의미이다. 따라서 RFC 1122는 3개 또는 그 이상의 중복 메시지가 수신되면, 혼잡 윈도우의 크기는 반으로 축소하고 네트워크를 다시 최대 속도로 높이기 위해 혼잡 회피 기술이 호출되어야 한다고 밝히고 있다.

상대 시스템에서 아무런 확인 메시지도 전송하지 않아 송신 시스템의 수신 확인 타이머가 만료되는 경우에도 혼잡 회피를 사용한다. 수신 확인 타이머가 만료되는 것은 심각한 네트워크 혼잡 문제가 발생하였거나 수신 시스템이 네트워크를 떠났다는 뜻이다. 이런 상황을 복구하기 위해 혼잡 윈도우는 한 세그먼트를 전송할 수 있을 만큼의 크기로 축소되고 느린 시작 기법이 호출되어 혼잡 윈도우가 원래 크기의 반으로 확대될 때까지 사용된다. 그 시점에서 조심스럽게 네트워크를 최대 속도로 끌어올리기 위해 혼잡 회피가 사용된다.

혼잡 회피는 전송된 세그먼트에 대한 확인 메시지가 도착하면 혼잡 윈도우의 크기를 확대한다는 점에서 느린 시작 기법과 유사하다. 그러나 혼잡 회피는 (느린 시작에서처럼) 혼잡 윈도우를 1대 1로 확대하는 대신 한 윈도우 내의 모든 세그먼트의 수신이 확인 되면 윈도우의 크기를 한 세그먼트 증가시킨다.

예를 들어, 수신 시스템의 수신 윈도우가 최대 8개의 세그먼트로 통보된 상태에서 어떤 시스템의 혼잡 윈도우가 4개의 세그먼트로 설정되었다고 가정하자. 시스템은 4개의 세그먼트를 전송하고 혼잡 회피를 사용하여 혼잡 윈도우의 크기를 한 세그먼트만큼 확대하기 이전에 전송한 모든 세그먼트의 수신이 확인되기를 기다린다.

수신 확인에 성공하면 시스템은 다음 5개의 세그먼트를 전송하고, 모든 세그먼트의 수신이 확인되면 혼잡 윈도우의 크기를 6개의 세그먼틀 확대시킬 것이다. 이 과정은 네트워크 혼잡이 다시 발생하거나 혼잡 윈도우의 크기가 수신 시스템에서 통보한 수신 윈도우의 크기와 (이 경우에는 8개의 세그먼트) 일치할 때까지 계속 반복된다.

여기서 수신 시스템이 전송된 모든 세그먼트에 대해 하나의 확인 메시지를 전송하든 개별적으로 여러 개의 메시지를 전송하든 상관이 없다. 혼잡 회피는 단지 모든 세그먼트의 수신이 확인되어야 혼잡 윈도우의 크기를 증가시킬 수 있다.

혼잡 회피의 사용은 RFC 1122에서 의무화되었지만 그 절차는 RFC 2001이 발행될 때까지 제대로 문서화되지 않았다. 따라서 많은 초기 시스템은 여기서 설명된 혼잡 회피 루틴을 포함하고 있지 않다.


Quotes from Internet Core Protocols, Eric A. Hall, O'Reilly, 인터넷 핵심 프로토콜 가이드, 한빛미디어