앞의 글을 읽으시면 이해에 도움이 됩니다.
2023.04.17 - [Computer Science/네트워크] - [네트워크] TCP - Segment Structure
2023.04.17 - [Computer Science/네트워크] - [네트워크] Principles of Reliable Data Transfer
1. Abstract
- 앞선 글인 rdt를 보면 TCP가 세그먼트 손실에 대비하여 Timeout/Retransmission 메커니즘을 사용하는 것을 알 수 있습니다.
- 개념은 간단하지만, 실제로 구현하여 사용할 때는 애매한 사항이 많습니다.
- 가장 중요한 질문은 바로 타임아웃 주기입니다.
- 만약 RTT가 작다면 쓸데없는 재전송이 발생할 것이고, 너무 크다면 통신에 제약이 생깁니다.
2. Round-Trip-Time Estimation
- RTT는 세그먼트가 송신된 시간으로부터 그 세그먼트에 대한 응답이 올 때까지의 시간 길이입니다.
- 모든 전송된 세그먼트에 대해서 Sample RTT를 측정하는 대신에, 대부분의 TCP는 한 번에 하나의 Sample RTT를 측정합니다.
- 즉, 어떤 특정 시점에서 아직 응답이 오지 않은 세그먼트에 대해서 Sample RTT를 측정합니다.
- Sample RTT는 라우터에서의 Congestion과 다른 여러 요인에 의해서 달라집니다. 이러한 변동성 때문에 주어진 Sample RTT는 불규칙적입니다.
- 따라서 TCP는 Sample RTT의 평균 값인 Estimated RTT를 계산합니다.
- 새로운 Sample RTT를 획득하자마자 TCP는 아래의 공식에 따라 Estimated RTT를 계산합니다.
\(Estimated RTT = (1 - a) * Estimated RTT + a * Sample RTT\)
- 기존의 Estimated RTT 값과 새로운 Sample RTT 값을 Weighted Average를 하여 계산합니다.
- 이 가중 평균은 예전 샘플보다 최근 샘플에 높은 가중치를 준다는 것을 알고 있어야 하며, 최신 샘플이 현재 네트워크의 혼잡 상황을 더 잘 반영합니다.
3. Timeout
- 위의 그림에서 볼 수 있듯이, Estimated RTT는 사실 실제로 Outlier에 대해 제대로 대처하지 못합니다.
- 따라서 Estimated RTT 예측 외에도 추가적인 수식을 도입하여 계산합니다.
\(DevRTT = (1 - \beta) * DevRTT + \beta * \left| Sample RTT - Estimated RTT\right|\)
- 이상치에 대해서 체크하기 위해 위의 수식이 있으며, 최종적으로 Timeout 값은 Estimated RTT에 약간의 여윳값을 더한 값을 설정합니다.
- 따라서 아래의 수식에 의해 Timeout 값이 정해집니다.
\(TimeoutInterval = EstimatedRTT + 4*DevRTT\)
- 위의 수식에 따라 타임아웃 값이 정해지고, 세그먼트를 송신한 이후로 위의 타임아웃 값을 넘기면 재전송합니다.
참고
경북대학교 컴퓨터학부 COMP0414-001 컴퓨터 망 수업
Computer Networking: A Top Down Approach / James F. Kurose, Keith W. Ross 저 / PEARSON / 2021년
Chat GPT, Bing AI
다음 글에서는 Flow Control에 대해 알아보겠습니다.
(이 카테고리는 아마 이게 마지막 글일 것 같습니다.....미루다가...죄송합니다......)
감사합니다.
지적 환영합니다.
'Computer Science > 네트워크' 카테고리의 다른 글
[네트워크] TCP - Segment Structure (0) | 2023.04.17 |
---|---|
[네트워크] TCP - Connection-Oriented Transport (0) | 2023.04.17 |
[네트워크] Selective Repeat (SR) (0) | 2023.04.17 |
[네트워크] Go-Back-N (GBN) (0) | 2023.04.17 |
[네트워크] Pipelined Reliable Data Transfer Protocols (0) | 2023.04.17 |