1

Y at-il une formule quelque part qui peut être utilisée pour déterminer le nombre minimum de segments/octets qui doivent être transférés à travers une connexion TCP pour déterminer sa bande passante et qui prend en compte Slow Start et l'évitement de la congestion? Je suis au courant de la pathrate tool, mais je veux si possible quelque chose d'un peu plus simple que je peux incorporer dans une application pour obtenir une figure de descente approximative. Un exemple d'utilisation serait le téléchargement de certaines données à partir d'un serveur Web afin de déterminer le nombre optimal de threads pour télécharger un tas de petits fichiers automatiquement. Ceci est lié à une question précédente que j'ai posté: TCP, HTTP and the Multi-Threading Sweet SpotTCP lent démarrage, évitement de congestion et la détermination de la bande passante

Répondre

0

Je ne pense pas qu'il y ait un nombre fixe d'octets à envoyer pour déterminer la bande passante. Ce nombre peut dépendre du type et de la vitesse du réseau.

Bandwidth est une mesure de certaines ressources transférées sur un intervalle de temps. Pour obtenir des données réelles, vous devez le mesurer. Voici some hints comment le faire

1

Vous pouvez lancer scholar.google.com et rechercher "TCP chirp". Cependant, cela nécessite des délais d'exécution, et si vous n'écrivez pas un algorithme de contrôle de congestion du noyau tcp, vous devrez réimplémenter TCP dans l'espace utilisateur. Et cela en soi ne donnera probablement pas de bons résultats (OS à usage général ne sont pas très bons en temps réel embauche des choses liées au minuteur, runnning dans l'espace utilisateur). En théorie, en utilisant TCP chirp vous avez besoin de 4-5 segments (typiquement, vous obtiendriez une meilleure résolution avec un train de segments plus long) pour déterminer la bande passante "optimale". Dans tous les cas, puisque vous ne pouvez pas savoir quel chemin est utilisé (par exemple, une liaison satellite ou une émission de télévision vers l'avant), vous aurez besoin d'une quantité considérable de données (10+ Mo, peut-être même 1Go) pour obtenir une mesure décente sur des chemins arbitraires. (Les satellites peuvent avoir une bande passante de plusieurs dizaines de Mo/s, mais aussi des latences comprises entre 1000 et 3000 ms, et TCP prend plusieurs fois le temps d'ouvrir cwnd (je dirais environ 10 RTT avant le début d'une mesure)

+0

Je ne cherche pas à faire quelque chose qui est générique et qui fonctionnera dans toutes les situations possibles, disons 80% des situations les plus courantes, connexions filaires ou sans fil standard sur des réseaux au sol . –

Questions connexes