Auteur Sujet: NSpeed: nouveau projet de mesure de débit  (Lu 66625 fois)

0 Membres et 1 Invité sur ce sujet

  • Invité
NSpeed: nouveau projet de mesure de débit
« Réponse #156 le: 08 novembre 2022 à 17:12:07 »
./nspeed api -p 8888 -browse
J'ai pas la bonne version ?

philippemarques@MacBook-Pro-de-Philippe Downloads % ./nspeed_darwin_amd64 api -p 8888 -browse
flag provided but not defined: -browse
Usage of api:   api [options]

Available options:
  -4 use IPv4 only
  -6 use IPv6 only
  -a string
    Hostname or ip address to listen (use "" for all interfaces/all addresses) (default "localhost")
  -cert string
    TLS certificate file
  -key string
    TLS Key file
  -p int
    Port to listen on (default 7333)
  -self
    listen in HTTPS using a self-signed TLS certificate

flag provided but not defined: -browse
philippemarques@MacBook-Pro-de-Philippe Downloads %
philippemarques@MacBook-Pro-de-Philippe Downloads % ./nspeed_darwin_amd64 -version           
v0.9-10-g51aad89

kgersen

  • Modérateur
  • Abonné Orange Fibre
  • *
  • Messages: 9 297
  • Paris (75)
NSpeed: nouveau projet de mesure de débit
« Réponse #157 le: 08 novembre 2022 à 17:24:14 »
J'ai pas la bonne version ?

non tu as la 0.9. La nouvelle c'est la 0.10.


  • Invité
NSpeed: nouveau projet de mesure de débit
« Réponse #158 le: 08 novembre 2022 à 17:37:44 »
Good Job !!


kgersen

  • Modérateur
  • Abonné Orange Fibre
  • *
  • Messages: 9 297
  • Paris (75)
NSpeed: nouveau projet de mesure de débit
« Réponse #159 le: 08 novembre 2022 à 17:51:26 »
sur Mac, y'a pas grand chose encore car j'ai pas le code qu'il faut pour lire les statistiques des interfaces.

voila le code que j’utilise sur Linux:

// return rx/tx counters for interfaces - Linux version
func GetNetStats(interfaces []net.Interface, dir string) []float64 {
var values []float64
for _, itf := range interfaces {
var value int
file, err := os.Open(fmt.Sprintf("/sys/class/net/%s/statistics/%s_bytes", itf.Name, dir))
if err != nil {
value = -1
} else {
fmt.Fscanf(file, "%d", &value)
}
values = append(values, float64(value))
}
return values
}

c'est simplement une lecture des compteurs via sysfs. peut-etre pas ce qu'il y a de plus performant et ne fonctionne pas sur les Linux qui n'ont pas de sysfs actif.

sur Windows, je fais un appel systeme a GetifEntry2Ex pour chaque interface.

Je n'ai pas encore rechercher de solution pour MacOS et les autres variantes Unix et *BSD. Si quelqu'un sait ce qu'il faut faire je suis preneur (code Go ou juste les appels systèmes à faire).

  • Invité
NSpeed: nouveau projet de mesure de débit
« Réponse #160 le: 08 novembre 2022 à 18:12:39 »
Regardes par là, il doit bien y avoir une structure définie dans un .h qui t'intéresse.
https://github.com/apple/darwin-xnu/tree/main/bsd/sys

  • Invité
NSpeed: nouveau projet de mesure de débit
« Réponse #161 le: 08 novembre 2022 à 18:39:41 »
os.Open(fmt.Sprintf("/sys/class/net/%s/statistics/%s_bytes

Le Code des OS pour Apple, dedans j'ai vu des trucs pour le Kernel avec les kext, je connais pas le nom de la fonction spécifique qui retourne les informations que tu nécessites "/sys/class/net/*" c'est certainement dans libsyscall

https://opensource.apple.com/releases/

  • Invité
NSpeed: nouveau projet de mesure de débit
« Réponse #162 le: 08 novembre 2022 à 18:55:03 »
Regardes si tu trouves ton bonheur par là ( c'est ce qui me semble le plus à jour)
Dans les kext-tools je suppose.

https://github.com/apple-oss-distributions/distribution-macOS/tree/macos-130

hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 334
  • Chambly (60)
NSpeed: nouveau projet de mesure de débit
« Réponse #163 le: 08 novembre 2022 à 20:48:53 »
Dans les exemples, "nspeed put -n 2 https://bouygues.testdebit.info/ 1g" ne fonctionne pas.
Il faut faire "nspeed put -http11 -n 2 https://bouygues.testdebit.info/ 1g", parce que malheureusement tous ces serveurs ne semblent supporter que le HTTP/1.1 en upload (alors que le HTTP/2.0 fonctionne en download).

kgersen

  • Modérateur
  • Abonné Orange Fibre
  • *
  • Messages: 9 297
  • Paris (75)
NSpeed: nouveau projet de mesure de débit
« Réponse #164 le: 09 novembre 2022 à 10:39:06 »
Dans les exemples, "nspeed put -n 2 https://bouygues.testdebit.info/ 1g" ne fonctionne pas.
Il faut faire "nspeed put -http11 -n 2 https://bouygues.testdebit.info/ 1g", parce que malheureusement tous ces serveurs ne semblent supporter que le HTTP/1.1 en upload (alors que le HTTP/2.0 fonctionne en download).

hum bonne trouvaille. je regarde ca.

a noter que 'put' c'est maintenant 'post' (nspeed est maintenant en phase avec les méthodes du protocol http)


kgersen

  • Modérateur
  • Abonné Orange Fibre
  • *
  • Messages: 9 297
  • Paris (75)
NSpeed: nouveau projet de mesure de débit
« Réponse #165 le: 09 novembre 2022 à 10:58:46 »
a noter que, sous Linux, on peut ajouter "GODEBUG=http2debug=2 " devant nspeed pour voir une trace HTTP/2.

'put', en http/2, n'est pas supporter pas ce serveur.

je regarde pourquoi 'post' échoue aussi.

« Modifié: 09 novembre 2022 à 12:16:11 par kgersen »

kgersen

  • Modérateur
  • Abonné Orange Fibre
  • *
  • Messages: 9 297
  • Paris (75)
NSpeed: nouveau projet de mesure de débit
« Réponse #166 le: 09 novembre 2022 à 15:58:11 »
petit boulette dans le build:
 - l'option '-html' est présente mais ne fonctionne pas (le fichier html généré est vide) , ce qui est normal car c'est prévu que pour la v0.11 ;)
 - sur Windows, '-version' n'affiche pas la version de nspeed

Je publierai une mise a jour  demain.

hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 334
  • Chambly (60)
NSpeed: nouveau projet de mesure de débit
« Réponse #167 le: 09 novembre 2022 à 20:58:56 »
a noter que 'put' c'est maintenant 'post' (nspeed est maintenant en phase avec les méthodes du protocol http)
PUT et POST sont deux méthodes HTTP différentes.

Avec bouygues.testdebit.info, le test d'upload en HTTP/1.1 exploite des limitations :
 - Avec PUT, le serveur répond "100 Continue", on envoie les données, et à la fin il répond "405 Method Not Allowed".
 - Avec POST, le serveur répond "100 Continue", on envoie les données, et à la fin il répond par la page HTML.

En HTTP/2 le serveur répond en parallèle, puis termine l'échange.
Et même en essayant de tricher :
curl -vvv --http2-prior-knowledge -X POST -F "filecontent=@/dev/zero" -o /dev/null http://bouygues.testdebit.info/1G.isoCurl envoie la taille de la window HTTP/2, soit 64Ko, puis il s'arrête et il n'y a plus que le download qui continue.

Sinon, j'avais déjà relevé le comportement peu intuitif de la commande "nspeed server" sans l'option -a, ou avec une interface.
Le readme dit que par défaut ça utilise 127.0.0.1, mais ça dépend des machines :
 - sur WSL j'ai 127.0.0.1 par défaut, et "nspeed server -6" échoue (mais "nspeed server -a ::1" fonctionne)
 - sous Linux et Windows, j'ai ::1 par défaut (IPv6 seulement), et "nspeed server -4" fonctionne pour avoir l'IPv4
De même "-a lo" ou toute autre interface semble choisir IPV6.
Certes on peut :
 - utiliser -a "" ou -a :: pour écouter sur toutes les interfaces en IPv4 et IPv6.
 - donner deux commandes : "nspeed server -a enp5s0 -4 server -a enp5s0 -6" ou "nspeed server -a 127.0.0.1 server -a ::1"
De même -