TCP 업스트림 대역폭 요구 사항에 대한 경험 법칙

TCP 업스트림 대역폭 요구 사항에 대한 경험 법칙

TCP에서 수신자는 때때로 전송된 패키지의 수신을 확인합니다. 따라서 특정 다운스트림 대역폭을 달성하려면 항상 최소 업스트림 대역폭이 필요합니다.

내가 찾고 있는 것은 주어진 다운스트림 대역폭에 필요한 업스트림을 계산하는 요소입니다. 나는 이 계산을 더 어렵게 만드는 다양한 창 크기와 TCP의 다른 요인이 있다는 사실을 알고 있습니다. 그러나 적어도 근사치를 얻을 수 있는 기본 시나리오가 있을 수 있습니다.

답변1

이는 다른 많은 요인에 따라 달라지기 때문에 대답하기 어려운 질문입니다. 매우 구체적인 답변을 얻으려고 노력하는 것은 적어도 나에게는 설명하기 어려울 뿐만 아니라 훨씬 더 어려울 것입니다.

창을 최대로 확장할 수 있을 만큼 종단 간 링크가 안정적이라고 가정하면 최대 창 크기마다 하나의 ACK가 필요하다고 말할 수 있습니다. 일반적인 최대 창 크기는 64KB입니다. 적어도 Windows에서는 이것이 기본값이라고 생각합니다. 이는 레지스트리 키에 의해 설정됩니다.

이를 알고 나면 이제 왕복 시간이 무엇인지 알아야 합니다. 왜냐하면 매 RTT당 하나의 최대 창 크기 데이터만 수신하기 때문입니다. 데이터가 사용자에게 전달되는 한 가지 방법과 ACK를 받는 방법이 있습니다. 이제 우리는 위성을 통해 하나의 TCP 소켓에 필요한 업스트림을 계산하는 것처럼 플레이할 것입니다.

RTT = ~500ms
최대 창 크기 = 64KB

(64KB * 8)/.5 = 최대 다운로드는 1Mbps입니다. 물론 8번은 바이트 값을 비트로 변환하는 것이었습니다.

그런데 많은 경우 버퍼라고 하는 창 크기와 (RxBuffer/RTT = Througput)로 제공되는 TCP 처리량 계산을 볼 수 있습니다. 이제 업스트림을 계산해야 합니다. 위의 모든 내용을 통해 답이 분명해지기를 바랍니다. 보낸 사람에게 돌아가려면 초당 두 개의 ACK가 필요합니다. 이러한 ACK는 20Bs + 20Bs * 8(IP + TCP 헤더), 320bps입니다. 따라서 500ms의 RTT 및 64KB의 최대 RxBuffer 연결의 경우 1Mbps 다운로드 및 640bps 업로드를 넘지 않아야 합니다.

그게 당신을 올바른 길로 이끌었기를 바랍니다. 다시 읽어보니 나 자신도 헷갈렸다...

관련 정보