2010-06-29 2 views
2

대기 시간 및 패킷 손실률과 함께 네트워크 대역폭을 계산할 필요가있는 애플리케이션을 작성하려고합니다. 제약 조건 중 하나는 애플리케이션 데이터 자체를 사용하여 대역폭을 수동적으로 측정하는 것입니다.최소 데이터 전송으로 대역폭 측정

온라인으로 읽고 몇 가지 기존 응용 프로그램에서 이해할 수있는 것은 거의 모든 프로그램이 능동적 인 프로빙 기술 (즉, 프로브 패킷의 흐름 생성)을 사용하고 첫 번째 및 마지막 패킷 도착 사이의 시간차를 사용한다는 것입니다 대역폭을 계산합니다.

이러한 기술의 주된 문제점은 프로브 패킷으로 네트워크를 넘치게하는 것입니다. 프로브 패킷은 길게 실행되고 확장 성이 없습니다 (양쪽에서 응용 프로그램을 실행해야하기 때문에). 나는 이것이으로 될 수 있는지 정확하게 모르겠습니다

Bandwidth <= (Receive Buffer size)/RTT. 

: 제안의

하나는 보낸 사람에게 다시 그것을 반향하여 패킷의 RTT를 계산하고 다음 식을 사용하여 대역폭을 계산하는 것이 었습니다 수신기는 올바른 RTT를 얻기 위해 항상 패킷을 에코 백하지 않을 수 있습니다. ICMP 사용만으로 많은 서버가 서버를 사용할 수 없기 때문에 항상 작동하지 않을 수 있습니다.

주 응용 프로그램은 TCP 연결을 통해 실행되므로 TCP 연결을 사용하여 특정 기간 동안 제공되는 실제 대역폭을 측정하고 싶습니다. TCP 연결의 대역폭을 측정하는 간단한 기술 (신뢰할 수있는 수식)을 제안 할 수 있다면 정말 감사하겠습니다.

+1

질문에 대한 답변을 수락하는 것을 잊지 마십시오. 당신은 이미 7 가지 질문을했으며, 지금까지는 그 중 하나를 받아 들일 수 없습니다. – glglgl

답변

0

네트워크를 검색하여 사용 가능한 대역폭 만 알 수 있습니다. 이는 80 % 활용 링크가 지연없이 에코 패킷을 계속 전송한다는 것, 즉 0 % 점유 된 것으로 보입니다.

대신 응용 프로그램에서 사용하는 대역폭을 측정하고 싶다면 훨씬 쉽습니다. 예 : 지난 초에 전송 한 데이터의 양을 10ms 간격으로 나누어 기록하십시오.

0

능동적 프로빙 기술 및 그 변형은 대역폭 추정 알고리즘입니다. 대역폭을 측정하기 위해이 알고리즘을 사용하고 싶지 않습니다. '측정'과 '추정'의 차이점에 유의하십시오.

대역폭을 측정하기 위해 tcp를 사용하려면 TCP 대역폭이 대기 시간의 영향을받습니다.

tcp를 사용하여 대역폭을 측정하는 가장 쉬운 방법은 TCP 패킷을 전송하고 전송 된 대역폭을 측정하는 것입니다. 그것은 네트워크를 홍수 것입니다. 비 플러딩 알고리즘은 고속 네트워크에서 신뢰할 수 없습니다. 또한 비 플러딩 (non flooding) 알고리즘은 트래픽에서 채널이 깨끗하다고 ​​가정합니다. 채널 내부에 다른 트래픽이있는 경우 결과가 왜곡 될 수 있습니다. 결과가 합리적이지 않으면 놀랄 일이 아닙니다.