2010-06-29 3 views
2

J'ai l'intention d'écrire une application dans laquelle je devrai calculer la bande passante du réseau ainsi que la latence et le taux de perte de paquets. L'une des contraintes est de mesurer passivement la bande passante (en utilisant les données d'application elles-mêmes). Ce que j'ai lu en ligne et compris de quelques applications existantes, c'est que presque toutes utilisent des techniques de sondage actives (c'est-à-dire générer un flux de paquets de sondes) et utilisent le décalage horaire entre l'arrivée des premiers et derniers paquets pour calculer la bande passante.Mesure de bande passante par transfert de données minimum

Les principaux problèmes avec une telle technique sont qu'elle inonde le réseau avec des paquets de sonde, ce qui dure plus longtemps et n'est pas évolutif (puisque nous devons exécuter l'application aux deux extrémités).

L'une des suggestions était de calculer la RTT d'un paquet en faisant écho à nouveau à l'expéditeur et le calcul de la bande passante en utilisant l'équation suivante:

Bandwidth <= (Receive Buffer size)/RTT. 

Je ne sais pas comment précise cela pourrait être comme le récepteur peut ne pas toujours renvoyer le paquet à temps pour obtenir le bon RTT. L'utilisation d'ICMP seul peut ne pas toujours fonctionner car de nombreux serveurs le désactivent.

Mon application principale s'exécute sur une connexion TCP, donc je suis intéressé à utiliser la connexion TCP pour mesurer la bande passante réelle offerte sur une période de temps donnée. J'apprécierais vraiment que quelqu'un puisse suggérer une technique simple (formule fiable) pour mesurer la bande passante d'une connexion TCP.

+1

Vous avez déjà posé 7 questions et jusqu'à présent, pas accepté l'un d'entre eux. – glglgl

Répondre

0

Il est seulement possible de connaître la bande passante disponible en sondant le réseau. Ceci est dû au fait qu'un lien utilisé à 80% envoie toujours des paquets d'écho sans délai, c'est-à-dire qu'il semble être occupé à 0%.

Si vous souhaitez simplement mesurer la bande passante de votre application, c'est beaucoup plus simple. Par exemple. conservez un enregistrement de la quantité de données que vous avez transférée dans la dernière seconde divisée en intervalles de 10 ms.

0

La technique de sondage active et ses variantes sont des algorithmes d'estimation de bande passante. Vous ne voulez pas utiliser ces algorithmes pour mesurer la bande passante. Notez la différence entre «mesurer» et «estimer».

Si vous souhaitez utiliser tcp pour mesurer la bande passante, vous devez savoir que la bande passante tcp est influencée par la latence.

La méthode la plus simple pour mesurer la bande passante à l'aide de tcp consiste à envoyer des paquets tcp et à mesurer la bande passante transférée. Cela va inonder le réseau. Aucun de l'algorithme non inondable fiable dans le réseau à grande vitesse. De plus, l'algorithme de non-inondation suppose que le canal est dégagé du trafic. S'il y a un autre trafic à l'intérieur du canal, le résultat serait faussé. Je ne suis pas surpris si le résultat n'aurait pas de sens. Ne pas oublier d'accepter les réponses à vos questions.

Questions connexes