TCP Congestion Control: 두 판 사이의 차이

youngwiki
편집 요약 없음
편집 요약 없음
4번째 줄: 4번째 줄:
본 문서의 상위 문서인 [[Principles of congestion control]]에서는 congestion의 문제 상황이 무엇을 의미하고 어떠한 문제를 야기하는지, [[TCP]]에서는 본 문서에서 사용할 여러 개념에 대해서 다루었다. 본 문서에서는 상위 문서에서 다룬 개념을 바탕으로 TCP가 어떻게 congestion을 조절하는지에 대해 설명할 것이다.
본 문서의 상위 문서인 [[Principles of congestion control]]에서는 congestion의 문제 상황이 무엇을 의미하고 어떠한 문제를 야기하는지, [[TCP]]에서는 본 문서에서 사용할 여러 개념에 대해서 다루었다. 본 문서에서는 상위 문서에서 다룬 개념을 바탕으로 TCP가 어떻게 congestion을 조절하는지에 대해 설명할 것이다.


==TCP congestion의 기본 배경==
TCP이 congestion에 취하는 기본적인 접근 방식은 송신자가 감지한 네트워크 congestion의 정도에 따라 자신이 해당 연결에 대해 보내는 트래픽의 전송 속도를 조절하는 것이다. 즉, 송신자가 자신과 목적지 사이의 경로에 congestion이 거의 없다고 판단되면 send rate를 증가시키고, 반대로 congestion이 있다고 판단되면 send rate를 줄인다. 이때, TCP는 송신자의 send rate를 조절하기 위해 '''cwnd(congestion window)'''라는 추가적인 변수를 활용한다. 이때 cwnd는 TCP 송신자가 네트워크로 트래픽을 보낼 수 있는 속도를 제한하는 제약 조건을 제공한다. 이 제약 조건은 송신자의 바이트 스트림(byte stream)에서 미확인된(unackowledged) 바이트의 양은 cwnd와 rwnd(receive window) 중 작은 값보다 클 수 없다는 것이다. 즉 다음과 같은 공식을 만족한다.
LastByteSent − LastByteAcked ≤ min{cwnd, rwnd}
이때 rwnd의 값이 충분히 크다면, 송신자의 미확인 바이트의 양은 오직 cwnd에 의해서 제한되며, 이를 통해 send rate를 간접적으로 제한할 수 있다. 이를 이해 하기 위해 패킷 손실과 transmission delay가 무시할 수 있을 정도로 작다고 가정한 연결을 생각해 보자. 이 경우, 매 RTT의 시작에서 송신자는 cwnd 바이트의 데이터를 연결로 보낼 수 있고, RTT가 끝날 때쯤 송신자는 해당 데이터에 대한 확인 응답을 받는다. 따라서 send rate는 약 <code>cwnd/RTT bytes/sec</code>이다. 즉 송신자는 swnd 값을 조절하여 send rate를 조절할 수 있다.


==각주==
==각주==
[[분류:컴퓨터 네트워크]]
[[분류:컴퓨터 네트워크]]

2025년 4월 5일 (토) 19:13 판

상위 문서: Principles of congestion control, TCP

개요

본 문서의 상위 문서인 Principles of congestion control에서는 congestion의 문제 상황이 무엇을 의미하고 어떠한 문제를 야기하는지, TCP에서는 본 문서에서 사용할 여러 개념에 대해서 다루었다. 본 문서에서는 상위 문서에서 다룬 개념을 바탕으로 TCP가 어떻게 congestion을 조절하는지에 대해 설명할 것이다.

TCP congestion의 기본 배경

TCP이 congestion에 취하는 기본적인 접근 방식은 송신자가 감지한 네트워크 congestion의 정도에 따라 자신이 해당 연결에 대해 보내는 트래픽의 전송 속도를 조절하는 것이다. 즉, 송신자가 자신과 목적지 사이의 경로에 congestion이 거의 없다고 판단되면 send rate를 증가시키고, 반대로 congestion이 있다고 판단되면 send rate를 줄인다. 이때, TCP는 송신자의 send rate를 조절하기 위해 cwnd(congestion window)라는 추가적인 변수를 활용한다. 이때 cwnd는 TCP 송신자가 네트워크로 트래픽을 보낼 수 있는 속도를 제한하는 제약 조건을 제공한다. 이 제약 조건은 송신자의 바이트 스트림(byte stream)에서 미확인된(unackowledged) 바이트의 양은 cwnd와 rwnd(receive window) 중 작은 값보다 클 수 없다는 것이다. 즉 다음과 같은 공식을 만족한다.

LastByteSent − LastByteAcked ≤ min{cwnd, rwnd}

이때 rwnd의 값이 충분히 크다면, 송신자의 미확인 바이트의 양은 오직 cwnd에 의해서 제한되며, 이를 통해 send rate를 간접적으로 제한할 수 있다. 이를 이해 하기 위해 패킷 손실과 transmission delay가 무시할 수 있을 정도로 작다고 가정한 연결을 생각해 보자. 이 경우, 매 RTT의 시작에서 송신자는 cwnd 바이트의 데이터를 연결로 보낼 수 있고, RTT가 끝날 때쯤 송신자는 해당 데이터에 대한 확인 응답을 받는다. 따라서 send rate는 약 cwnd/RTT bytes/sec이다. 즉 송신자는 swnd 값을 조절하여 send rate를 조절할 수 있다.

각주