Auteur Sujet: Timestamps - Horodatage TCP  (Lu 2257 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 1 153
    • Voir le profil
    • La Fibre
Timestamps - Horodatage TCP
« le: 03 octobre 2007 à 23:43:46 »
[Edit Vivien] Messages déplacés car hors sujet


Regardes les dates des RFC ...


Si elles étaient respectées...
regarde comment microsoft respecte la RFC132 (http://www.ietf.org/rfc/rfc1323.txt)

Windows XP ne sait pas activer correctement les Timestamps, cf mon post
http://forum.debian-fr.org/viewtopic.php?t=9778&highlight=

Réponse : 300*1024/200 = 1500 octets/s  :o


Correction, l'unité est la seconde pas la milli-seconde :
300*1000/0.2 = 1 500 000 = 1.5 Mo/s = 12 Mb/s

12 Mb/s avec un tel RTT c'est déja énorme.

et dans ton calcul pourquoi tu multiplie par 1024 ?

feyb64

  • SFR
  • *
  • Messages: 277
  • Souriez, vous êtes cliqué :)
    • Voir le profil
Timestamps - Horodatage TCP
« Réponse #1 le: 04 octobre 2007 à 01:35:25 »
Si elles étaient respectées...
regarde comment microsoft respecte la RFC132 (http://www.ietf.org/rfc/rfc1323.txt)

Windows XP ne sait pas activer correctement les Timestamps, cf mon post
http://forum.debian-fr.org/viewtopic.php?t=9778&highlight=


Je répondrai uniquement ceci : Explication 'simple' et 'limpide' de Microsoft eux même concernant la prise en charge de la RFC 1323 :
Citation
...
Grandes fenêtres TCP
La taille de la fenêtre correspond au nombre maximal de paquets qui peut être envoyé sans attendre un accusé de réception positif. Les grandes fenêtres TCP améliorent les performances TCP/IP lorsque des quantités importantes de données transitent entre l'émetteur et le récepteur. Dans les communications TCP classiques, la taille maximale de la fenêtre est généralement fixée sur l'ensemble de connexions et limitée à 64 kilo-octets.

Avec une grande fenêtre, vous pouvez recalculer de manière dynamique et adapter la taille de la fenêtre réelle en utilisant une option TCP selon vos besoins au cours des sessions plus longues. Avec cette option, un plus grand nombre de paquets de données est en transit sur le réseau en une seule fois, ce qui augmente le débit.

Par défaut, les ordinateurs exécutant des systèmes d'exploitation Windows Server 2003 n'acceptent, pour l'option de grandes fenêtres TCP, que les requêtes émises par les clients des ordinateurs TCP1323Opts auxquels ils sont connectés. Les ordinateurs TCP1323Opts déposent des requêtes pour l'option de grandes fenêtres TCP au cours de la poignée de mains en trois temps. Si vous voulez que votre ordinateur fasse des demandes de grande fenêtre TCP, vous devez activer TCP1323Opts dans le Registre. Pour plus d'informations sur les grandes fenêtres TCP, voir la RFC 1323, « TCP Extensions for High Performance ».
...


Extrait de : http://www.microsoft.com/technet/prodtechnol/windowsserver2003/fr/library/ServerHelp/2f4f2924-f6a8-44e2-9b1e-c752e736faff.mspx?mfr=true

L'explication est donnée ici pour 2003 (à vérifier s'il faut pas quand même explicitement valider rfc 1323 sur 2000 et/ou xp dans les deux cas, client et serveur, j'ai pas encore retrouvé les versions 2000 et XP du descriptif de la pile TCP avant la sortie de 2003, mais l'option RFC1323 existe bien sur 2000 et XP, ça j'en suis sûr)

Windows non conforme ? Dans le cas contraire, on l'aurait sû depuis plus longtemps que la date de ton sujet je pense ...
(sujet qui reste interressant tout de même, c'est toujours instructif de comparer les points de vu, analyses, méthologies employées, ...)
Simple question donc de choix de quand et comment c'est désactivé/activé/auto-activé/activable.

Tu refais tes tests et tracedumps avec RFC1323 activé explicitement dans le registre du XP ?


Correction, l'unité est la seconde pas la milli-seconde :
300*1000/0.2 = 1 500 000 = 1.5 Mo/s = 12 Mb/s

12 Mb/s avec un tel RTT c'est déja énorme.

et dans ton calcul pourquoi tu multiplie par 1024 ?


Oui, autant pour moi sur l'erreur de virgule :-X
(Pour le 1024, c'est par habitude ;D et celà ne change franchement rien entre 1024 et 1000  ;D )

Tout cela est bien jolie, n'empêche pas qu'avec ton tampon de 300Ko, on a que 12mb/s de download sur une ligne à 70Mb/s ::)
Si tu trouves ça faire de l'optimisation si la plupard des cibles 'préférées' de l'utilisateur sont justement dans ces 200ms de RTT en moyenne :-X
Pour moi c'est le contraire que tu proposes ::)
Si j'optimise c'est justement pour que mes serveurs de download 'préférées' me balancent la sauce  ;D

Voyons donc : Qu'obtiendrait t'on en terme de débit 'max' atteignable avec un rwin de 2Mo et un RTT de 200ms (et ta formule fort justement corrigée  ;) ) ?

2 Mo / 200 ms = 2000 Ko / 0.2 s = 2 000 000 / 0.2 = ?
(c'est bon, j'ai pas oublié de zéros, et la virgule est au bon endroit  ;D )
Multipliez encore le résultat par 8 puis divisez par 1 000 000 pour avoir des Mb/s 8)

Ca répond pas mieux au besoin du type qui a ses serveurs préférés à 200ms de lui ?
Avec une ligne de 70Mb/s, on est largement "au taquet" de la ligne et même pas au max du rwin ... ;D
CQFD  ;)
« Modifié: 04 octobre 2007 à 01:45:46 par feyb64 »

vivien

  • Administrateur
  • *
  • Messages: 1 153
    • Voir le profil
    • La Fibre
Timestamps - Horodatage TCP
« Réponse #2 le: 04 octobre 2007 à 08:19:12 »
Citation
...
Grandes fenêtres TCP
...
Par défaut, les ordinateurs exécutant des systèmes d'exploitation Windows Server 2003 n'acceptent, pour l'option de grandes fenêtres TCP, que les requêtes émises par les clients des ordinateurs TCP1323Opts auxquels ils sont connectés
...


Je ne parlais pas des grandes fenêtres TCP (avant la Rwin était limité a 64 Ko, mais windows sait bien faire des Rwin de grande taille, cad > 64 Ko)

Mon problème c'est sur les timestamps. Pour ceux qui lisent ce post et qui ne savent pas ce que c'est, je fais une explication rapide : Chaque paquet est numéroté et si il est perdu, il de mande le renvoi de tous les paquets a partir du n° x (ou ne demande de renvoyer que le n° x si l'option SACK est activé). Le N° est codé sur 16bits donc 65535 possibilités. Le N° reviens donc a 0 tous les 65535. Avec des grandes Rwin, il y a risque d'avoir le même N° de paquet 2 fois. En cas d'erreur, il ne sauras donc pas quel paquet renvoyer. Les timestamps sont la pour résoudre ce problème. Ils sont donc indispensable pour les grandes Rwin, donc pour les connexions FTTH et satellites.

Le pb c'est que les clients Windows font une demande de timestamp tellement a coté des RFC que si on interprète strictement les RFC qui disent "When TSecr is not valid, its value must be zero."

Dans les paquets initiants une connexion (flag SYN seul monté), on ne se préoccupe pas de la valeur de TSecr, mais uniquement de la valeur de TSval), Ensuite, la valeur de TSval est recopiée dans TSecr, lors de la réponse (flag ACK seul monté), or il est dit que Tsecr n'est pas valide si sa valeur est de zéro. Windows XP mettant 0 TSval, on se retrouve avec 0 dans TSrec, du coup, la gestion des timestamps n'est pas activée avec les systèmes qui respectent la RFC (linux).

Un exemple avec un client linux : Tsval = 458372 et non 0
On voit que dans les paquets derriére les timestamps sont activés (les valeurs Tsval et Tsecr s'incrémentent)



On voit que la Rwin du client est de 5792 au démarrage et qu'il va l'augmenter au fur et a mesure a chaque acquittement. (rwin adaptative)

feyb64, si tu arrive a activer les timestamps avec windows XP correctement (en suivant la RFC, pas de TSval 0, TSecr 0 lors du SYN). Je suis preneur, je n'ai pas réussi à trouver comment faire.
Tu peux t'entraîner sur lafibre.info, c'est un linux et il refuse les timestamps activé avec TSval 0, TSecr 0.

feyb64

  • SFR
  • *
  • Messages: 277
  • Souriez, vous êtes cliqué :)
    • Voir le profil
Timestamps - Horodatage TCP
« Réponse #3 le: 04 octobre 2007 à 18:25:43 »
Je ne parlais pas des grandes fenêtres TCP (avant la Rwin était limité a 64 Ko, mais windows sait bien faire des Rwin de grande taille, cad > 64 Ko)
...

Autant pour moi, j'ai copié/collé le mauvais passage concernant le 'TimeStamp', il fallait prendre juste le paragraphe suivant  ;D


Citation
Meilleure estimation RTT
TCP utilise le temps RTT pour faire une estimation de la durée nécessaire pour une communication de boucle entre un émetteur et un récepteur. Les serveurs fonctionnant sous Windows Server 2003 prennent en charge l'utilisation de l'option horodatage TCP de la RFC 1323 pour améliorer l'estimation RTT. En calculant plus souvent des informations RTT plus précises, TCP utilise de meilleures estimations pour définir la retransmission des temporisateurs, ce qui permet d'améliorer la vitesse et les performances TCP globales.

Les améliorations apportées à l'estimation RTT sont très utiles pour les liens plus longs de réseau en boucle, comme les réseaux étendus qui s'étendent sur les continents ou qui utilisent des liens de communication sans fil ou par satellite.

Par défaut, les ordinateurs exécutant des systèmes d'exploitation Windows Server 2003 n'acceptent, pour l'option horodatage TCP, que les requêtes émises par les clients des ordinateurs TCP1323Opts auxquels ils sont connectés. Les ordinateurs TCP1323Opts déposent des requêtes pour l'option horodatage TCP au cours de la poignée de mains en trois temps. Si vous voulez que votre ordinateur fasse des demandes d'horodatage TCP, vous devez activer TCP1323Opts dans le Registre. Pour plus d'informations sur l'horodatage TCP, voir la RFC 1323, « TCP Extensions for High Performance ».

Au final, même maux, exactement même réponse, même remèdes  ;D


vivien

  • Administrateur
  • *
  • Messages: 1 153
    • Voir le profil
    • La Fibre
Timestamps - Horodatage TCP
« Réponse #4 le: 04 octobre 2007 à 18:50:57 »
Au final, même maux, exactement même réponse, même remèdes  ;D

Les timestamps sont bien activés, il en fait la demande de maniére maladroite... Certains OS acceptent (FreeBSD par exemple active quand même les timestamps). Linux respect la RFC et ne l'active pas. Maintenant si tu peut me faire une trace d'un Win XP qui arrive a activer le timestamps avec un linux, je te tire mon chapeau. (c'est le windows XP qui initie la connexion).

feyb64

  • SFR
  • *
  • Messages: 277
  • Souriez, vous êtes cliqué :)
    • Voir le profil
Timestamps - Horodatage TCP
« Réponse #5 le: 04 octobre 2007 à 19:02:48 »
Les timestamps sont bien activés, il en fait la demande de maniére maladroite... Certains OS acceptent (FreeBSD par exemple active quand même les timestamps). Linux respect la RFC et ne l'active pas. Maintenant si tu peut me faire une trace d'un Win XP qui arrive a activer le timestamps avec un linux, je te tire mon chapeau. (c'est le windows XP qui initie la connexion).

Tu peux me dire sur ton pc XP à quelle valeur était positionnée la variable TCP1323opts ?
Histoire de faire les mêmes tests dans les mêmes conditions.

vivien

  • Administrateur
  • *
  • Messages: 1 153
    • Voir le profil
    • La Fibre
Timestamps - Horodatage TCP
« Réponse #6 le: 04 octobre 2007 à 19:45:38 »
Tu peux me dire sur ton pc XP à quelle valeur était positionnée la variable TCP1323opts ?
Histoire de faire les mêmes tests dans les mêmes conditions.


A "3" (cf http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/regentry/58800.mspx?mfr=true )

Voici ma capture :



On voit clairement une activation avec une valeur demandant la désactication (0)

feyb64

  • SFR
  • *
  • Messages: 277
  • Souriez, vous êtes cliqué :)
    • Voir le profil
Timestamps - Horodatage TCP
« Réponse #7 le: 06 octobre 2007 à 01:18:54 »
Vivien, pour ne pas "polluer" plus ce sujet avec des considérations de 'conformité' hors du champ initial d'optimisation, j'ai posté une réponse détaillée à ce problème des 'TimeStamps' sous Windows dans le sujet que tu avais ouvert sur le forum débian :

http://forum.debian-fr.org/viewtopic.php?p=98862#98862

En résumé, pour ceux que la 'technique pure' donne des boutons, c'est linux qui n'est pas à la norme ...

Merci de ne plus poster sur le sujet 'conforme ou pas' ici mais de le faire ou consulter les débats en suivant le lien dessus :)
On va essayé de rester dans 'optimisation' ici :)