• # trucs & machins...

    Posté par . En réponse au message [RESEAU] Fragmentations de paquets tcp. Évalué à 3. Dernière modification le 01 novembre 2013 à 23:09.

    Salut (削除) JuD (削除ここまで) Jean-Clume,

    Je dirais qu'il faut faire fermer sa cacahouète à la carte réseau (à toutes les cartes réseaux, puisque tu utilises une vieille technique japonaise de ligotage). Enéfé, les cartes ont toutes plus ou moins d'accélérations matérielles pour plus ou moins de couches ... Ouhaaaaa c'te découverte :-) Et pour cela on va utiliser l'omniscience de EthTool (noooon pas mii, jete tes cartes!). Dans son vocabulaire à lui de rzoters, il cause avec plein de gros mots :

    • TCP Offload Engine = Moteur de déchargement TCP
    • rx-checksumming /rx (on|off) = Déchargement de la somme de contrôle en réception
    • tx-checksumming / tx (on|off) = Déchargement de la somme de contrôle en émission
    • scatter-gather / sg (on|off) = comme DMA : Entrées et/ou sorties de la carte réseau : transfert direct vers la mémoire principale de la machine, sans intervention du microprocesseur (si ce n'est pour lancer et conclure le transfert).
    • tcp-segmentation-offload / tso (on|off) = Déchargement de la segmentation d'un gros paquet TCP en plusieurs petits (en émission)
    • udp-fragmentation-offload / ufo (on|off) = Déchargement de la fragmentation d'un gros paquet UDP en plusieurs petits (en émission)
    • generic-segmentation-offload / gso on|off) = Déchargement de la segmentation d'un gros paquet TCP en plusieurs petits (en émission)
    • generic-receive-offload / gro (on|off) = Déchargement en fusionnant des petits paquets TCP reçus en un gros paquet pour le système (réception)
    • large-receive-offload / lro (on|off) = Déchargement important à la réception
    • rx-vlan-offload / rxvlan (on|off) = Déchargement de la gestion des Vlan en réception
    • tx-vlan-offload / txvlan (on|off) = Déchargement de la gestion des Vlan en émission
    • ntuple-filters / ntuple (on|off) =
    • receive-hashing / rxhash (on|off) = receive hashing offload

    Ce qui nous intéresse à priori c'est de faire sauter la frag et la seg. Mais allons y gaiement, et ne faisant aucune confiance dans le firmware de la carte réseau, tel de preux chevaliers caquis fasse à l'envahisseur de l'intérieur :

    ethtool -K enp15s0 rx off tx off sg off tso off gso off gro off lro off rxvlan off txvlan off ntuple off rxhash off
    

    Normalement, c'est sans erreur. Plonquée, blam dans la gueule du firmware de la carte rzo, gourdin et massue. Bon maintenant, on va faire chauffer un peu ce processeur... La carte est bien dans cet état :

    [root@transportable log]# ethtool -k
    Features for enp15s0:
    rx-checksumming: off [fixed]
    tx-checksumming: off
     tx-checksum-ipv4: off [fixed]
     tx-checksum-ip-generic: off
     tx-checksum-ipv6: off [fixed]
     tx-checksum-fcoe-crc: off [fixed]
     tx-checksum-sctp: off [fixed]
    scatter-gather: off
     tx-scatter-gather: off
     tx-scatter-gather-fraglist: off [fixed]
    tcp-segmentation-offload: off
     tx-tcp-segmentation: off
     tx-tcp-ecn-segmentation: off [fixed]
     tx-tcp6-segmentation: off
    udp-fragmentation-offload: off [fixed]
    generic-segmentation-offload: off
    generic-receive-offload: off
    large-receive-offload: off [fixed]
    rx-vlan-offload: off
    tx-vlan-offload: off [fixed]
    ntuple-filters: off [fixed]
    receive-hashing: off [fixed]
    highdma: off [fixed]
    rx-vlan-filter: off [fixed]
    vlan-challenged: off [fixed]
    tx-lockless: off [fixed]
    netns-local: off [fixed]
    tx-gso-robust: off [fixed]
    tx-fcoe-segmentation: off [fixed]
    tx-gre-segmentation: off [fixed]
    tx-udp_tnl-segmentation: off [fixed]
    tx-mpls-segmentation: off [fixed]
    fcoe-mtu: off [fixed]
    tx-nocache-copy: on
    loopback: off [fixed]
    rx-fcs: off [fixed]
    rx-all: off [fixed]
    tx-vlan-stag-hw-insert: off [fixed]
    rx-vlan-stag-hw-parse: off [fixed]
    rx-vlan-stag-filter: off [fixed]
    

    débilt-test version commerciale Et aussi :
    debilt-test1 debilt-test2
    42 secondes pour télécharger ~357M & 35 secondes pour envoyer les mêmes données. ça va.

    Concernant la charge CPU pour les opérations réseaux qui étaient auparavant fait par la carte réseau, les experts estiment que 1 Mb/s prend 1 Hz de CPU (donc ~mettons un traffic permanent de ~1Gb/s : il consommera ~1Mhz du premier cpu [sans gso donc]), ça devrait aller tu ne fera pas pédaler dans la semoule ton Quadrandeux cores...

    Bon, zallons y n0w appliquons le paramètre que tu donnes, et seulement lui :

    Dans sysctl.conf (ou systcl.conf.d/myapp.conf)

    net.ipv4.tcp_window_scaling = 0
    net.ipv4.tcp_rmem = 512 1392 4092
    

    Et là, c'est LE DRAME : mon débit plafonne à 50ko/s comme si mon O.N.T. s'était muté en antique modem.

    Alors, quoi ? On continue ? :-)