Linux에서 대역폭 및 대기 시간 추적

Linux에서 대역폭 및 대기 시간 추적

시간이 지남에 따라 네트워크에 있는 임의의 호스트 2개 사이의 네트워크 트래픽(양방향 대역폭 및 대기 시간 모두)의 급락을 감지할 수 있는 간단한 스크립트를 작성하려고 합니다. 이를 수행하는 도구가 있습니까?

필요한 경우 (netcat)을 사용하여 이 테스트를 수행하기 위해 bash에서 두 개의 클라이언트/서버 스크립트를 작성할 계획입니다 nc. 하지만 기존 솔루션이 제가 하려는 작업을 캡처하는 경우 알려 주시기 바랍니다.

먼저 임의의 호스트 간에 1초에 전송할 수 있는 데이터의 양을 결정하겠습니다. 우리는 이것을 "페이로드"라고 부르겠습니다. 초기 테스트에서는 페이로드가 ~50MB인 것으로 나타났습니다.

그런 다음 다음을 실행하겠습니다.

  1. 클라이언트는 페이로드를 서버로 보냅니다.
  2. 서버가 전체 페이로드를 수신하면 클라이언트에 페이로드를 전송하여 즉시 응답합니다.
  3. 클라이언트가 전체 페이로드를 수신하면 30초 동안 절전 모드로 전환됩니다. 1로 이동합니다.

그렇게 하면 다음 데이터(양방향 대역폭 및 대기 시간)를 받게 됩니다.

  1. time(1)에서 클라이언트에서 서버로 실행하는 것을 기록함으로써 nc클라이언트에서 서버로 데이터를 보내는 대역폭을 얻을 수 있습니다.
  2. time(2)에서 서버에서 클라이언트로 실행하는 것을 기록함으로써 nc서버에서 클라이언트로 데이터를 보내는 대역폭을 얻습니다.
  3. 어떻게든 모니터링 도구를 사용하거나 소스에서 전송된 페이로드의 첫 번째 패킷과 대상에서 수신된 페이로드의 첫 번째 패킷 간의 타임스탬프를 비교하여 패킷 대기 시간을 결정합니다.

답변1

iPerf는 성능 테스트를 위한 좋은 도구입니다. 귀하가 제안한 방식으로 부하를 모니터링하는 스크립트를 작성하는 대신 Nagios를 살펴보고 알림을 분류하고 시간 경과에 따른 성능 그래프를 제공하는 PNP4Nagios를 통합하겠습니다.

이와 같은 호스트 간에 장기적으로 지속적으로 데이터를 이동하는 것이 얼마나 실용적인지 궁금합니다. 이는 사용 가능한 대역폭을 낭비하기 때문입니다. 링크의 실제 처리량을 모니터링하고 이를 대기 시간 및 패킷 손실과 연관시켜 필요할 때 지불한 만큼 얻을 수 있는지 확인하는 것이 더 낫지 않습니까? (ISP 책에서 가장 오래된 게임을 플레이하는 ISP를 "때려눕혔습니다". 특히 여러 지점을 모니터링할 때 이 기능을 사용하여 네트워크에 문제가 없다고 주장한 적이 있습니다.)

대기 시간, 패킷 손실 및 처리량은 서로 완전히 종속되지는 않지만 (알려진/계약된/예상되는 특성을 가진 링크의 경우) 이러한 요소 간에 상관 관계가 있습니다.

답변2

확인해야 할 것은아이퍼프당신이 필요로하는 일을합니다.

귀하의 질문을 제가 이해한 바에 따르면 그렇게 해야 한다고 생각합니다.

관련 정보