TCP/ACK/Linux/C

Fermé
CORBEAU - 4 nov. 2007 à 19:31
 Mens MBT M.Walk Pink - 11 juil. 2011 à 03:56
Bonjour, est ce que c'est possible par programmation C/Linux de retarder l'emission d'un ACK par le TCP? si oui comment?
Merci.
A voir également:

13 réponses

Bonjour,

Je vous laisse ici quelques liens qui, je l'espère, pourront vous aider.

http://kernelnewbies.org/ un site pour les nouveaux sur le kernel linux
http://www.linux-foundation.org/en/Net un peu de doc sur la partie "net" de linux
http://kerneltrap.org un tres bon site où on cause kernel ! avec un bon forum
https://linuxgazette.net/136/pfeiffer.html une page qui peut vous aider sur la congestion
https://linuxdriver.co.il une très jolie map interactive du kernel linux qui mène aux sources....
http://whatisthekernel.blogspot.com/ un très bon blog avec des tips sur le noyau, pas mal d'articles sur le réseau
https://inetdoc.net/guides/linux.networking/interco.noyau.networking.html un site sur le stack tcp/ip linux
http://asyd.net/docs/kernel/tcpip-stack.html une page encore incomplète sur tcp/ip linux

Voilà pour le moment de quoi vous occuper. Je vous donnerais d'autres liens ultérieurement si ils me reviennent .

Cordialement,

:)
1
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
8 nov. 2007 à 13:05
C'est précieux tous ces liens!
Merci, je garde ça sous le coude!
0
Bonjour,

Il est possible de retarder l'émission d'un Ack, pour se faire je vous suggère de regarder le code la pile tcp/ip de linux. Cette technique est déjà utilisée afin d'éviter ce qu'on appelle "le syndrome de la fenêtre stupide" lors de congestion de bout en bout ( donc déjà implementé dans le noyau). Eventuellement jeté un oeil à ce syndrome pour avoir plus d'informations.


Cordialement,

:)
0
Bonjour, merci Akira pour votre reponse, est ce que vous pouvez citer les fonctions du language C/C++ a utiliser?
Merci infiniment.
0
Bonjour,

Voici donc le lien contenant le code gérant ce syndrome dans la pile tcp/ip linux, il faudra comprendre le morceau de code et l'adapter à vos besoins. Tout d'abord le lien : http://fxr.watson.org/fxr/source/netinet/tcp_output.c?v=RELENG51

Le passage qui vous intéresse plus particulièrement :

/*
720 * Calculate receive window. Don't shrink window,
721 * but avoid silly window syndrome.
722 */
723 if (win < (long)(so->so_rcv.sb_hiwat / 4) && win < (long)tp->t_maxseg)
724 win = 0;
725 if (win < (long)(tp->rcv_adv - tp->rcv_nxt))
726 win = (long)(tp->rcv_adv - tp->rcv_nxt);
727 if (win > (long)TCP_MAXWIN << tp->rcv_scale)
728 win = (long)TCP_MAXWIN << tp->rcv_scale;
729 th->th_win = htons((u_short) (win>>tp->rcv_scale));


j'ai volontairement laissé les numéros de lignes pour votre navigation dans le code. Lisez les commentaires en amont de ce code pour de plus amples informations.

Cordialement,

:)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
==========
= Pouri Akira =
==========

Bonjour, Merci infiniment pour votre reponse et pour les references, je n'ai pas encore trop compri et pour que tous soient claires, j'ai a ecrire un module Linux sur un serveur qui permettera d'accelerer les flux pour certaines adresses ip et de les reduire pour d'autres cela doit etre fait en jouant sur l'emission des ACK.
J'ai tellement besoin de vos conseils, ici personne ne sait meme pas de quoi il s'agit.
Merci.
0
Bonjour,

Après réflexion, un autre moyen de ralentir une connexion au niveau de la couche transport serait de réduire la fenêtre (Win) de sorte qu'elle soit presque toujours à 1 ( Pour un ralentissement max , c'est-à-dire acquitter tous les paquets) et l'augmenter pour accélérer la vitesse ( exemple : acquittement de 1 paquets / 2 , 1 / 4 , 1 / 8 etc.) . Combinez ces 2 méthodes, et vous avez un ralentissement digne de ce nom !

Il m'apparaît aussi d'autres techniques susceptibles de ralentir un connexion au niveau réseau, cela peut éventuellement donner lieu à une autre discussion.

Cordialement,

:)
0
Bonjour, il sembre que vous ete fort dans le domaine, je commence a comprendre ce que vous dites ici apres avoir lire quelques pages du livre Stevens "TCP/IP illustrated, Volume 1 The Protocols" mais je ne voix null part les API qui permettent de realiser cets idees. Sur la reference que vous m'avez passez je n'ai pas arriver a ouvrir des pages contenant les declarations de certaines structures. Ou peut trouver encore du code consernant ce sujet. et merci beaucoup.
0
Merci infiniment pour vos reponses et pour votre aide.
0
Bonjour, je veux pratiquer la programmation du noyeau Linux, est ce que vous pouvez m'aider a avoir un probleme meme si c'est deja resolu sur le theme de "network devices" ? et merci d'avance.
0
Bonjour,

Qu'est ce que vous voulez exactement ? des exercices pour pratiquer la programmation noyau ? Apprendre à hacker la pile tcp/ip ou simplement écrire des drivers pour des cartes réseaux ? préciser le sens de votre parole pour une meilleur réponse.

Cordialement,

:)
0
Bonjour, je souhaiterai avoir des exercices pour pratiquer la programmation noyau, apprendre à hacker la pile tcp/ip et écrire des drivers pour des cartes réseaux.
Merci d'avance.
0
Akira SVP a l'aide
23 nov. 2007 à 12:22
Akira s'il vous plait a l'aide, repondez.
0
Mens MBT M.Walk Pink
11 juil. 2011 à 03:56
sorrow is hushed into peace in my heart like the evening among
the silent trees.
0