2016-10-07 3 views
0

우리는 높은 데이터 전송률로 10Gb 이더넷을 통해 Linux PC에서 UDP 패킷을 스트리밍하고 있습니다. C++로 코딩하고 있습니다.Linux에서 UDP sendto 지연을 줄이는 방법은 무엇입니까?

UDP 패킷을 보내려면 sendto()를 호출 할 때 전송의 실제 대기 시간, 즉 패킷이 실제로 얼마나 빨리 전송되는지와 관련하여 최적화 할 수 있습니까?

플러싱의 개념은 UDP 송신 버퍼에 적용됩니까? 아니면 UDP 패킷이 항상 즉시 송신됩니까?

답변

0

UDP 패킷은 일반적으로 나가는 인터페이스에 정체가있을 때만 버퍼링됩니다. 다음과 같이로드 대기 시간을 줄일 수 있습니다.

  • 소켓의 버퍼 크기를 줄이면 (setsockopt(SO_SNDBUF));
  • 인터페이스와 연관된 버퍼 크기를 줄이는 것 (tc qdisc change);
  • 드라이버의 내부 버퍼 크기를 줄입니다 (드라이버 별). 그 일을하는 것이, 예를 실제로 수도 증가 응용 프로그램의 대기 시간, 당신의 상위 계층 프로토콜에 따라 패킷을 삭제하는 대신 버퍼링, 그래서에 의해 부하 대기 시간을 줄일 수 있음을

주 증가 된 응용 계층 재전송을 야기한다.

관련 문제