관리 메뉴

소나기

RTO (Retransmission Time Out) : 재전송 시간 초과 본문

연구/Network

RTO (Retransmission Time Out) : 재전송 시간 초과

moyoung 2023. 4. 6. 02:07
RTO란 무엇인가?

TCP Retransmission time out (RTO)는 TCP 프로토콜에서 재전송 시간 초과를 의미한다. TCP는 데이터를 전송할 때, 전송한 패킷이 제대로 전송되지 않았을 때 재전송을 시도한다. 하지만 이때 재전송 시간이 지연되면, 성능 저하와 불안정성이 발생할 수 있다. 이러한 문제를 해결하기 위해 TCP는 RTO라는 개념을 도입했다.

TCP RTO는 전송한 패킷에 대한 응답을 받을 때까지 기다리는 시간이다. TCP는 패킷을 전송하면, 패킷에 대한 응답을 받을 때까지 기다린다. 응답을 받으면 다음 패킷을 전송하고, 응답을 받지 못하면 RTO를 설정한 시간만큼 기다린 후 패킷을 재전송한다. 이때 RTO의 크기는 패킷의 전송 시간과 네트워크 지연 시간 등 여러 가지 요인을 고려하여 동적으로 결정된다.

TCP RTO는 일반적으로 RTT (Round Trip Time)라는 개념을 기반으로 결정된다. RTT는 패킷을 전송하고 응답을 받는 데 걸리는 시간을 의미한다. TCP는 RTT를 측정하여 RTO를 동적으로 조절한다. 만약 패킷에 대한 응답이 늦게 도착하면, RTO를 증가시켜 더 많은 시간을 기다리도록 하고, 응답이 빨리 도착하면 RTO를 감소시켜 더 빠르게 재전송을 시도하도록 한다.

TCP RTO는 네트워크 상태에 따라 자주 변경될 수 있으므로, 네트워크 상태를 지속적으로 모니터링하고 적절한 RTO 값을 설정해야 한다. 적절한 RTO 값을 설정하면 TCP의 성능과 안정성을 향상할 수 있다.

https://www.extrahop.com/company/blog/2016/retransmission-timeouts-rtos-application-performance-degradation/

그럼 RTO가 발생하는 주된 상황은 어떤게 있을까? 

첫째로 네트워크 혼잡 상황이 있다. TCP는 네트워크 상태를 감지하여 혼잡한 상황에서는 전송 속도를 감소시킨다. 하지만 혼잡이 심한 경우에는 패킷 손실이 발생할 수 있으며, 이 때문에 RTO가 발생할 수 있다. 두 번째로는 패킷 손실이다. TCP는 패킷 손실을 감지하고 재전송을 시도한다. 하지만 재전송이 실패하면 RTO가 발생한다. 세 번째는 대역폭 제한 상황이다. TCP는 대역폭이 제한된 상황에서 전송 속도를 조절하여 네트워크 혼잡을 방지한다. 그러나 대역폭이 제한되는 경우 전송 시간이 길어지므로 RTO가 발생할 수 있다.

다음은 라우터 문제다. 라우터는 패킷을 전달하는 중간 단계에서 처리되므로, 라우터 문제가 발생하면 RTO가 발생할 수 있다. 그리고 대기열 혼잡 같은 상황도 발생한다. 대기열 혼잡은 TCP 패킷이 큐에 대기하다가 일정 시간이 지나면 전송되지 않아 RTO가 발생할 수 있다. 마지막으로 프로세스 성능 저하 상황도 있다. TCP 패킷을 처리하는 프로세스의 성능이 저하되면 RTO가 발생할 수 있다.

RTO를 완전히 없애는 것은 불가능하다. 하지만 RTO의 영향을 줄이기 위해 사용되는 몇가지 방법이 있다. 

1. 빠른 패킷 재전송 (Fast Retransmit)
Fast Retransmit은 패킷이 손실되었다고 판단되면, 재전송 대기 시간을 기다리지 않고 즉시 재전송을 시도하는 방식이다. 이를 통해 RTO의 영향을 최소화할 수 있다.

2. TCP Selective Acknowledgement (SACK)
앞에서 설명한 것과 같이, 기존의 TCP Fast Retransmit은 패킷 손실이 발생하면, 재전송 대기 시간을 기다리지 않고 즉시 재전송을 시도하는 방식이었다. 그러나 이 방식은 손실된 패킷 이후에 전송된 패킷들을 인식하지 못해, 전체 패킷을 재전송해야 하는 경우가 발생할 수 있었다. 이에 비해 SACK는 패킷 손실이 발생했을 때, 손실된 패킷 이후에 수신한 패킷들을 인식하고, 손실된 패킷만 재전송하는 방식이다. 이를 통해, 전체 패킷을 재전송하는 것보다 더 효율적인 재전송을 가능하게 한다. SACK는 수신 측이 TCP 옵션으로 전송 측에게 수신한 패킷 중 손실된 패킷 이후에 수신한 패킷들을 알리는 방식으로 동작한다. 이러한 정보를 전송 측이 받으면, 전송 측은 이 정보를 기반으로 손실된 패킷만을 재전송한다.

 

(SACK의 좀더 자세한 설명은 다음 기회에)


3. TCP/IP 스택 최적화
TCP/IP 스택의 설정을 조정하여 RTO를 최적화할 수 있다. 예를 들어, TCP/IP 스택의 버퍼 크기를 조정하거나 TCP Keepalive 값을 조절하는 등의 방법을 사용할 수 있다.

4. 네트워크 최적화
네트워크 최적화를 통해 네트워크 혼잡을 최소화하고 패킷 손실을 방지하는 것도 RTO를 최소화하는 데 도움이 된다. 예를 들어, 대역폭 제한이나 대기열 혼잡을 방지하거나, 라우터의 성능을 개선하는 등의 방법을 사용할 수 있다.

 

 

Comments