소스 코드를 기록하는 남자

'Computer Science/Network'에 해당되는 글 1건

  1. Nagle Algorithm 이란 무엇인가?

Nagle Algorithm 이란 무엇인가?

Computer Science/Network

시작하기에 앞서서 제가 공부하면서 이해한 내용을 정리하는 부분이라 정확하지 않을 수도 있다는 점 인지해주셨으면 감사하겠습니다.

 

 

Nagle's algorithm is a means of improving the efficiency of TCP/IP networks by reducing the number of packets that need to be sent over the network. It was defined by John Nagle while working for Ford Aerospace. It was published in 1984 as a Request for Comments (RFC) with title Congestion Control in IP/TCP Internetworks

위키피디아의 정의를 보면 다음과 같이 정의되어 있다.

네이글's 알고리즘은 네트워크로 전송해야할 패킷을 수를 줄임으로 TCP/IP 네트워크의 효율성을 증가시킨다.

Ford Aerospace에서 근무하던 John Nagle이 정의하였으며, 1984년 RFC (IP/TCP internetwork에서 혼잡 제어)로 발표되었다.

 

 

 

Nagle 알고리즘으로 사용할 이점은 ?

  1. 패킷을 전송할 때는 전송하고자 하는 패킷의 크기와 상관없이 항상 고정적인 비용이 필요하다 (TCP에서는 40byte header). 따라서 한 번의 전송에 많은 데이터를 보내는 것은 전송 비용을 줄 일 수 있다.
  2. 여러 번에 보내던 패킷을 한 번에 보내면 얻는 이점이 있다. 적은 양을 여러 차례 보내면서 생기는 대역폭의 낭비를 줄일 수 있다는 것
  3. 대역폭 낭비를 줄임으로써 잠재적으로 발생할 수 있는 congestion collapse를 방지할 수 있다는 점.
MSS ( Maximum segment size )

if 전송할 데이터가 있으면 then
	if 윈도우 사이즈 >= MSS and 가능한 데이터 크기 >= MSS then
    	완전한 MSS segment 전송
    else
    	if 파이프에 미확인된 data가 여전히 존재 then
        	ack 가 수신될때까지 buffer에 data enqueue
        else
        	즉시 data 전송
        end if
    end if
end if

 

이 알고리즘을 사용함에 있어 문제점이 존재

  1. 다량의 write에 부정적인 영향을 준다.
  2. 실시간 시스템과의 상호 작용이 좋지 않음

larger write에서 부정적인 영향을 주는 이유는, 어떤 request-response 어플리케이션 프로토콜에서 request data는 하나의 패킷보다 클 수 있는데, 이는 임의적으로 few hundred milliseconds의 지연을 발생시킬 수 있음