dwww Home | Manual pages | Find package

vsock(7)               Miscellaneous Information Manual               vsock(7)

NOM
       vsock – Famille d’adresses VSOCK de Linux

SYNOPSIS
       #include <sys/socket.h>
       #include <linux/vm_sockets.h>

       stream_socket = socket(AF_VSOCK, SOCK_STREAM, 0);
       datagram_socket = socket(AF_VSOCK, SOCK_DGRAM, 0);

DESCRIPTION
       La  famille  d’adresses  VSOCK simplifie la communication entre des ma-
       chines virtuelles et l’hôte sur lesquelles elles s’exécutent. Cette fa-
       mille  d’adresses  est  utilisée par les agents clients et les services
       d’hyperviseur ayant besoin d’un canal de communication qui  soit  indé-
       pendant de la configuration réseau de la machine virtuelle.

       Les   types   de  socket  autorisés  sont  SOCK_STREAM  et  SOCK_DGRAM.
       SOCK_STREAM fournit des flux d’octets  orientés  connexion,  avec  leur
       distribution  garantie et dans le bon ordre. SOCK_DGRAM fournit un ser-
       vice de paquets de datagrammes sans connexion avec une distribution  au
       mieux et un ordre au mieux. La disponibilité de ces types de socket dé-
       pend de l’hyperviseur sous-jacent.

       Un nouveau socket est créé avec

           socket(AF_VSOCK, socket_type, 0);

       Quand un processus veut établir une connexion,  il  appelle  connect(2)
       avec  l’indication de l’adresse du socket de destination. Le socket est
       automatiquement lié à un port libre s’il n’est pas lié.

       Un processus peut  écouter  les  connexions  entrantes  en  se  reliant
       d’abord  à  une  adresse  de  socket avec bind(2) puis en appelant lis-
       ten(2).

       Les données sont transmises en utilisant les familles d’appels  système
       send(2)  ou  write(2)  et  les données sont reçues en utilisant les fa-
       milles d’appels système recv(2) ou read(2).

   Format d'adresse
       Une adresse de socket est définie sous forme de  combinaison  d’un  CID
       (Context Identifier) de 32 bits et un numéro de port de 32 bits. Le CID
       identifie la source ou la destination qui sont soit  une  machine  vir-
       tuelle,  soit l’hôte. Le numéro de port différencie les divers services
       en cours d’exécution sur une seule machine.

           struct sockaddr_vm {
               sa_family_t    svm_family;    /* Address family: AF_VSOCK */
               unsigned short svm_reserved1;
               unsigned int   svm_port;      /* Port # in host byte order */
               unsigned int   svm_cid;       /* Address in host byte order */
               unsigned char  svm_zero[sizeof(struct sockaddr) -
                                       sizeof(sa_family_t) -
                                       sizeof(unsigned short) -
                                       sizeof(unsigned int) -
                                       sizeof(unsigned int)];
           };

       svm_family est toujours défini à AF_VSOCK. svm_reserved1  est  toujours
       défini  à  zéro. svm_port contient le numéro de port dans l’ordre d’oc-
       tets de l’hôte. Les numéros de port en dessous  de  1024  sont  appelés
       ports   privilégiés.   Seulement   un   processus   avec   la  capacité
       CAP_NET_BIND_SERVICE peut bind(2) à ces numéros de port. svm_zero  doit
       être rempli de zéros.

       Il  existe plusieurs adresses spéciales : VMADDR_CID_ANY (-1U) signifie
       n’importe quelle adresse pour la liaison, VMADDR_CID_HYPERVISOR (0) est
       réservée  aux  services internes de l’hyperviseur, VMADDR_CID_LOCAL (1)
       est l’adresse bien connue pour les communications  locales  (loopback),
       VMADDR_CID_HOST (2) est l’adresse bien connue de l’hôte.

       La  constante  spéciale  VMADDR_PORT_ANY  (-1U) signifie n’importe quel
       port pour la liaison.

   Migration à chaud
       Des sockets sont affectés pour la migration à chaud  de  machines  vir-
       tuelles. Les sockets SOCK_STREAM connectés deviennent déconnectés quand
       les machines virtuelles migrent vers un nouvel hôte.  Les  applications
       doivent se reconnecter quand cela se produit.

       Le  CID  local  peut varier à travers une migration à chaud si l’ancien
       CID n’est pas disponible sur le nouvel hôte. Les scripts liés sont  au-
       tomatiquement mis à jour vers le nouveau CID.

   Ioctls
       The following ioctls are available on the /dev/vsock device.

       IOCTL_VM_SOCKETS_GET_LOCAL_CID
              Obtention  du  CID de la machine locale. L’argument est un poin-
              teur vers un unsigned int.

                  ioctl(fd, IOCTL_VM_SOCKETS_GET_LOCAL_CID, &cid);

              Envisager d’utiliser VMADDR_CID_ANY lors de la liaison  au  lieu
              d’obtenir le CID local avec IOCTL_VM_SOCKETS_GET_LOCAL_CID.

   Communication locale
       VMADDR_CID_LOCAL (1) dirige les paquets vers le même hôte qui les a gé-
       nérés. Cela est utile pour tester les applications sur un seul hôte  et
       pour le débogage.

       Le  CID local obtenu avec IOCTL_VM_SOCKETS_GET_LOCAL_CID peut être uti-
       lisé pour le même but, mais l’utilisation de VMADDR_CID_LOCAL est  pré-
       férable.

ERREURS
       EACCES Impossibilité  de  lier  à  un  port privilégié sans la capacité
              CAP_NET_BIND_SERVICE.

       EADDRINUSE
              Impossibilité de lier à un port déjà utilisé.

       EADDRNOTAVAIL
              Impossibilité de trouver un port libre pour la liaison ou impos-
              sibilité de lier à un CID non local.

       EINVAL Paramètres non autorisés. Cela comprend l’essai de lier à un so-
              cket déjà lié, la fourniture d’une structure sockaddr_vm non va-
              lable et d’autres erreurs de validation d’entrée.

       ENOPROTOOPT
              Option  non  valable  de  socket  dans  setsockopt(2)  ou getso-
              ckopt(2).

       ENOTCONN
              Impossibilité de  réaliser  une  opération  sur  un  socket  non
              connecté.

       EOPNOTSUPP
              Opération  non  prise  en  charge.  Cela  comprend  l’indicateur
              MSG_OOB non implémenté pour la famille send(2) d’appels  système
              et MSG_PEEK pour la famille recv(2) d’appels système.

       EPROTONOSUPPORT
              Numéro de protocole de socket non autorisé. Le protocole devrait
              toujours être zéro.

       ESOCKTNOSUPPORT
              Type de socket non pris  en  charge  dans  socket(2).  Seulement
              SOCK_STREAM et SOCK_DGRAM sont autorisés.

VERSIONS
       La  prise en charge pour VMware (VMCI) est disponible depuis Linux 3.9.
       KVM (virtio) est pris en charge depuis Linux 4.8. Hyper-V l’est  depuis
       Linux 4.14.

       VMADDR_CID_LOCAL  is  supported since Linux 5.6. Local communication in
       the guest and on the host is available since Linux 5.6.  Previous  ver-
       sions  supported  only  local  communication within a guest (not on the
       host), and with only some transports (VMCI and virtio).

VOIR AUSSI
       bind(2), connect(2), listen(2), recv(2), send(2), socket(2),  capabili-
       ties(7)

TRADUCTION
       La  traduction française de cette page de manuel a été créée par Chris-
       tophe Blaess <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <ste-
       phan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, Fran-
       çois Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe  Gué-
       rard  <fevrier@tigreraye.org>,  Jean-Luc  Coulon (f5ibh) <jean-luc.cou-
       lon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>,  Thomas  Huriaux
       <thomas.huriaux@gmail.com>,  Nicolas François <nicolas.francois@centra-
       liens.net>, Florentin Duneau <fduneau@gmail.com>, Simon  Paillard  <si-
       mon.paillard@resel.enst-bretagne.fr>,    Denis   Barbier   <barbier@de-
       bian.org>, David Prévot  <david@tilapin.org>,  Cédric  Boutillier  <ce-
       dric.boutillier@gmail.com>,  Frédéric Hantrais <fhantrais@gmail.com> et
       Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr>

       Cette traduction est une documentation libre ; veuillez vous reporter à
       la        GNU        General       Public       License       version 3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ concernant  les  conditions
       de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si  vous découvrez un bogue dans la traduction de cette page de manuel,
       veuillez envoyer un message à ⟨debian-l10n-french@lists.debian.org⟩.

Pages du manuel de Linux 6.03   30 octobre 2022                       vsock(7)

Generated by dwww version 1.15 on Sat Jun 29 01:46:34 CEST 2024.