著者: Vincent Caron 日付: To: guilde 題目: Re: Qualité de service TCP
On dim., 2012-03-11 at 15:21 +0100, Yves Martin wrote: > Est-il possible de réintroduire du buffer côté Linux - genre supprimer
> le flag urgent à la volée - avec iptables ou un autre moyen - soit en
> local sur le système, soit avec un Linux comme routeur du traffic ?
Il me semble que cette opération, qui consiste concrètement à
réassembler des segments TCP, ne peut avoir lieu que chez le
destinataire. Ca exclut AMHA un hack côté IP une fois que les paquets
ont été émis par l'application, même sur l'hôte de l'émetteur à coup
d'iptables.
Du coup la seule solution semble consister à corriger le problème à sa
racine, en empêchant ton application de mal se comporter :
- bloquer les appels à setsockopt(TCP_NODELAY) - si tu as plein de
petits paquets ça doit être la raison numéro 1
- bloquer les appels à setsockopt(IP_TOS) si nécessaire
- filtrer le flag MSG_OOB des appels à send() (mais ça peut rendre ton
application inutilisable si elle distingue vraiment les données
"normales" et OOB)
- peut être d'autres subtilités ...
Tu peux analyser ce que fait ton appli avec 'strace -e
connect,setsockopt,send monappli arg ...' (par ex). Pour écrire un
wrapper à la LD_PRELOAD (en C), on trouve pas mal d'aide sur Google. Il
me semble même avoir trouvé un framework pour ça mais j'ai oublié où ...