GNU/Linux >> Tutoriels Linux >  >> Linux

Obtenir la vitesse de liaison d'un adaptateur réseau virtio-net

Virtio est un pilote para-virtualisé, ce qui signifie que le système d'exploitation et le pilote sont conscients qu'il ne s'agit pas d'un périphérique physique. Le pilote est en réalité une API entre l'invité et l'hyperviseur, sa vitesse est donc totalement déconnectée de tout périphérique physique ou standard Ethernet.

C'est une bonne chose car c'est plus rapide que l'hyperviseur prétendant être un périphérique physique et appliquant un concept arbitraire de "vitesse de liaison" au flux.

La machine virtuelle décharge simplement les trames sur un bus et c'est le travail de l'hôte de gérer les périphériques physiques ; la machine virtuelle n'a pas besoin de connaître ou de se soucier de la vitesse de liaison des périphériques physiques hôtes.

L'un des avantages de ceci est que lorsque les paquets se déplacent entre 2 machines virtuelles sur le même hôte, ils peuvent envoyer des paquets aussi vite que le processeur de l'hôte peut les déplacer d'un ensemble de mémoire à un autre, définir une "vitesse de liaison" ici met juste dans un limite de vitesse inutile.

Cela permet également à l'hôte d'effectuer une association d'adaptateurs et de répartir le trafic sur plusieurs liaisons sans que chaque machine virtuelle ait besoin d'être explicitement configurée pour obtenir la bande passante complète de la configuration.

Si vous voulez savoir à quelle vitesse vous pouvez réellement transférer des données de votre machine virtuelle vers un autre emplacement, vous devez effectuer des tests de débit réels avec des outils tels que iperf .


Pour développer un peu cela parce que je suis trop récemment entré dans ce domaine et que j'étais également à moitié confus par le manque de détails sur la vitesse lors de l'exécution de ethtool sur une VM :

$ ethtool eth0
Settings for eth0:
    Link detected: yes

Quand j'ai regardé lshw sortie :

$ lshw -class network -short
H/W path            Device      Class          Description
==========================================================
/0/100/3                        network        Virtio network device
/0/100/3/0          eth0        network        Ethernet interface

Cela nous indique que le pilote de périphérique utilisé pour cette VM est virtualisé, dans ce cas, il s'agit d'une VM fonctionnant sur KVM et donc la VM utilise les pilotes virtio_* pour toutes ses interactions avec le "matériel".

$ lsmod | grep virt
virtio_rng             13019  0
virtio_balloon         13864  0
virtio_net             28096  0
virtio_console         28066  1
virtio_scsi            18453  2
virtio_pci             22913  0
virtio_ring            22746  6 virtio_net,virtio_pci,virtio_rng,virtio_balloon,virtio_console,virtio_scsi
virtio                 14959  6 virtio_net,virtio_pci,virtio_rng,virtio_balloon,virtio_console,virtio_scsi

Ces modules de noyau sont disponibles pour certains systèmes d'exploitation (Linux, BSD et Windows). Avec ces pilotes installés sur votre VM, le noyau de votre VM a un accès spécial au matériel sous-jacent via le noyau qui s'exécute sur votre hyperviseur.

N'oubliez pas qu'avec les hyperviseurs, il existe 2 types distincts. ESX/vsphere sont considérés comme de type 1. Rappel sur les types :

  • Hyperviseurs de type 1, natifs ou sans système d'exploitation
  • Hyperviseurs de type 2 ou hébergés

KVM s'apparente davantage à un type-2, mais possède certains éléments, tels que virtio_*, qui le font se comporter et fonctionner davantage comme un type-1, en exposant à la virtualisation le noyau Linux sous-jacent de l'hyperviseur de telle sorte que les VM peuvent y avoir un accès semi-direct.

La vitesse de ma carte réseau ?

Étant donné que vous utilisez un hyperviseur paravirtualisé, vous devez accéder à l'hyperviseur réel pour connaître la vitesse théorique de votre carte réseau en utilisant ethtool . Au lieu de cela, on ne peut le savoir qu'en faisant quelque chose comme utiliser iperf pour comparer la carte réseau sous charge et découvrir expérimentalement quelle semble être la vitesse de la carte réseau.

Par exemple, j'ai ici 2 serveurs qui tournent sur 2 hyperviseurs différents. Utilisation de iperf sur les deux serveurs :

$ sudo yum install iperf

Ensuite, exécutez un serveur en tant que iperf serveur sur la machine virtuelle host1 :

host1$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------ 

Puis sur une VM cliente host2 :

host2$ iperf -c 192.168.100.25
------------------------------------------------------------
Client connecting to 192.168.100.25, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.100.101 port 55854 connected with 192.168.100.25 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  10.0 GBytes  8.60 Gbits/sec

Sur la sortie de host1, vous verrez ceci :

$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 192.168.100.25 port 5001 connected with 192.168.100.101 port 55854
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec  10.0 GBytes  8.60 Gbits/sec

Ici, nous pouvons voir que la carte réseau a pu monter jusqu'à 8,60 Gbits/sec.


Linux
  1. Démarrer avec NetworkManager sous Linux

  2. Obtenez notre aide-mémoire sur les réseaux Linux

  3. Geo - Un utilitaire BASH simple pour obtenir des détails sur le réseau et la géolocalisation

  4. (Facile) Testez votre vitesse de téléchargement Internet dans le terminal Linux

  5. Linux - Désactiver l'adaptateur réseau sans fil dans Arch ?

Comment vérifier la vitesse de liaison dans Ubuntu 20.04

7 façons de vérifier la vitesse du réseau sous Linux avec navigateur et cli

Comment obtenir l'adresse IP du conteneur Docker

Débarrassez-vous des problèmes de connectivité réseau dans SSH avec Mosh

Obtenez la force du signal du réseau Wi-Fi connecté avec nmcli

Comment vérifier la vitesse de ma carte réseau ?