icmp_dev-0.1.2.zip
- 20010922 - 13k
|
RFC 791 -
RFC 792
Qu'est-ce que ICMP ?
ICMP est un protocole particulier qui bien que placé
conceptuellement juste au-dessus de IP en fait partie intégrante.
D'ailleurs IP l'utilise pour transporter des informations de maintenance et
des messages d'erreur comme: destination injoignable (Host
Unreachable), paramètre incorrect,... Pour avoir plus d'informations
sur ICMP consultez la RFC 792. Lire la RFC 791
(protocole IP) vous sera également bénéfique.
A quoi sert icmp_dev ?
Le système n'est pas le seul à pouvoir émettre
des paquets ICMP, vous pouvez aussi le faire dans vos programmes.
Normalement ça se fait en ouvrant une socket RAW. Mais la Winsock ne
supporte pas les sockets RAW alors en remplacement Microsoft, dans sa
grande mansuétude, a créé "icmp.dll" qui
fournit une API permettant aux programmes d'envoyer malgré tout des
paquets ICMP. Bien sûr l'API n'est pas officielle et non
documentée... sauf dans icmp_dev. icmp_dev fournit les librairies
nécessaires pour Intel, Alpha, MIPS (R.I.P.) et PowerPC
(R.I.P.)
Notez tout de même que les librairies et les header de
icmp_dev semblent tout de même venir de Microsoft (il faut
rendre â César ce qui est à César).
Deuxième remarque, la Winsock dans ses versions 2.0 et
supérieures supporte les sockets RAW. Il semble que la Winsock 2.0
soit à présent disponible sur NT 4.0 et Windows 98.
Qu'est-ce qu'on peut faire avec ICMP?
Typiquement des outils du type ping ou traceroute. En effet ping
envoie des paquets ICMP Echo Request et attend en retour des paquets ICMP
Echo Reply ou bien un autre type de paquet ICMP indiquant une erreur.
Difficile donc d'écrire un outil ping sans paquets ICMP. Il y a
aussi d'autres applications comme squid (excellent cache Web) qui
se servent de ICMP pour déterminer les caractéristiques de
leur environement et optimiser leur fonctionnement.
|
ping_src-0.1.4.zip
- 20010922 - 24k
ping_win32_i386-0.1.4.zip
- 20010922 - 33k
|
Readme -
Man page
Ce ping est un bon exemple d'utilisation de la librairie icmp_dev
ci-dessus mais c'est beaucoup plus qu'un simple exemple.
- Tout d'abord il se conforme à l'interface de l'outil ping de
Linux ce qui veut dire qu'il supporte le jeux d'options du premier ping
introduit sur BSD. Vous retrouverez donc de nombreuses options absentes du
ping Microsoft. Ces options permettent par exemple de maintenir une
connection intermittante (ex. par modem) ouverte en envoyant un
paquet ICMP toutes les deux minutes. Pour cela la commande "ping -i
120 remote.host" suffit.
- Ensuite, il fournit des mesures de meilleure qualité que le
ping Microsoft. La précision de mesure du RTT est en effet de
quelques microsecondes et non d'une milliseconde. Les statistiques aussi
sont plus complètes.
- Vous pourrez aussi vous en servir comme d'un traceroute grâce
à l'option "-t" et même collecter au passage des
statistiques complètes sur les RTT pour chaque hôte.
- Enfin je suis sûr que vous trouverez de nombreux autres usages
à ce ping. Comme d'habitude ping_src contient les sources et
ping_win32_i386 la doc et l'éxécutable pour Intel.
Si vous voulez compiler ping n'oubliez pas de prendre icmp_dev.
|
bing_src-1.0.4.tar.gz
- 19970603 - 26k
bing_src-1.1.3.tar.gz
- 19970603 - 38k
bing_win32_i386-1.1.3.zip
- 19970603 - 49k
|
Readme First -
Readme -
Man page
Qu'est-ce que bing ?
bing est une application ecrite par Pierre Beyssac qui mesure la
bande passante intrinsèque d'un lien distant du réseau. Bon,
je précise un peu: "distant" ça veut dire que vous
pouvez mesurer la bande passante d'un lien qui n'est pas directement
connecté à votre ordinateur, par exemple un lien entre
votre fournisseur d'accès et le reste d'Internet. "bande
passante intrinsèque" ça veut dire que ce n'est pas
la bande passante qui reste de disponible une fois que tous les autres
utilisateurs se sont servis mais bien la bande passante nominale du lien.
Donc même si un lien est saturé et que vous n'arrivez pas
à en tirer plus de 1Ko/s bing peut vous dire si c'est un lien
à 128Kbps, 256Kbps ou plus. N'espérez pas non plus des
miracles. Vous n'arriverez pas a mesurer la bande passante d'un ethernet
à l'autre bout de l'internet à partir de votre modem
à une heure de pleine saturation.
Comment marche bing ?
bing fonctionne grâce à... ICMP bien sûr ! bing
envoie des paquets Echo Request de différentes tailles et analyse
les différences de RTT qui en résultent. Bien sûr les
RTT varient beaucoup alors il faut faire plusieurs essais, mesurer les
RTT très précisement et puis prendre la valeur minimum pour
chaque taille de paquet pour l'hôte source et l'hôte
destination. Pour plus d'informations sur bing, consultez le fichier
Readme.
Quel fichier dois-je prendre ?
Il y a actuellement deux packages pour le source. La version 1.0.4
est la dernière version stable officielle développée
par Pierre Beyssac mais elle ne marche que sous Unix. La version
1.1.3 est une version de développement qui en dérive et que
j'ai portée sur les plateformes Win32. Bien qu'étant en
développement elle est suffisamment stable pour être
utilisée à la place de la 1.0.4. Pour les utilisateurs de
l'ancienne 1.1.2 sous Win32, je vous conseille d'effectuer l'upgrade car
j'ai grandement amélioré la précision de la mesure
des RTT.
|
bing_src-1.3.5.tar.gz
- 19991025 - 79k
|
Bing 1.3 se veut une réimplémentation à partir de zéro de bing mais
pour l'instant c'est du code en chantier et vous aurez de la chance s'il
compile. Le problème c'est qu'étant sans cesse distrait par d'autres
projets bing 1.3 n'avance pas vite. Néanmoins vous êtes les bienvenus si
vous voulez vous lancer dedans.
Pourquoi réimplémenter bing à partir de zéro ?
J'espère en partant de zéro arriver à l'architecturer de
façon à lui ajouter des fonctionnalités qui me semblent difficiles
à introduire dans la version originale. Ces fonctionnalités sont de
plusieurs types:
- Tout d'abord au lieu d'utiliser deux tailles de paquets bing 1.3
utilise plusieurs tailles de paquets et effectue une régression linéaire
(RTT,taille). Cela devrait permettre, via le taux de corrélation, de
déterminer quand l'on a mesuré suffisament de RTTs pour connaitre la bande
passante avec suffisament de précision. Réciproquement, cela permet
d'identifier les machines pour lesquelles on ne connait pas bien le RTT,
et donc d'envoyer les prochains paquets en priorité vers ces machines.
- Le second but est d'introduire de nouvelles techniques de mesure des
RTTs. Certains routeurs bloquent ICMP mais il devrait être possible de
mesurer le RTT en utilisant le port ECHO par exemple. Une autre option
très intéressante consiste à envoyer des paquets qui génèrent une réponse
de taille fixe.
- En combinant deux méthodes différentes de calcul des RTTs, une qui
élicite des paquets de retour de taille fixe et l'autre qui élicite des
paquets de retour de taille variable, il est possible de mesurer
indépendamment le débit montant et le débit descendant d'un lien.
L'intérêt ? On trouve de plus en plus de liens dont le débit est
assymétrique: modems X2/56K/V90, certaines variantes de DSL, certains
modems cable,... Le bing "classique" est incapable de mesurer le débit
de ces liens.
- Un des autres buts est de permettre la mesure de la bande passante
de chacun des liens qui relient une machine à une autre. L'intérêt de
faire ces mesures en une fois plutôt que d'invoquer bing plusieurs fois
est que l'on peut ainsi économiser le nombre de paquets utilisés et donc
normalement aussi obtenir le résultat plus rapidement.
- Un des derniers buts, mais il est important, est d'obtenir une
architecture extensible et cela à plusieurs niveaux: scheduling des
mesures, méthodes utilisées pour calculer les RTTs, interface utilisateur
textuelle, graphique,... Par exemple il est clair que certains algorithmes
de scheduling des mesures fourniront leurs résultats dans le désordre (et
non suivant la séquence host1, host2, host3,...). Pour fournir leurs
résultats au fur et à mesure à l'utilisateur, ces algorithmes auront
besoin soit d'une interface graphique soit d'une interface texte basée
sur curses.
|
su_src-0.1.0.zip
- 19970603 - 3k
su_win32_i386-0.1.0.zip
- 19970603 - 15k
|
su mimique le su Unix. Il est destiné aux utilisateurs de
Windows NT qui veulent pouvoir démarrer un nouveau shell ou une
application sous une autre identité.
Malheureusement NT n'étant pas multi-utilisateur, su est loin
de fonctionner aussi bien que sous Unix. Vous pourrez démarrer des
applications console ou graphiques (gare aux bugs NT), mais les variables
d'environement du nouvel utilisateur ne seront pas positionnées,
vous n'aurez pas accès à sa portion du registry
(HKEY_CURRENT_USER pointe toujours vers l'utilisateur
initial), les filesystems montés sont toujours ceux de
l'utilisateur original et vous devrez partager...
|