Man page - vsock(7)
Packages contains this manual
- shm_overview(7)
- nss(5)
- proc_mtrr(5)
- intro(7)
- tcp(7)
- iso_8859-9(7)
- armscii-8(7)
- proc_kpagecount(5)
- initrd(4)
- mouse(4)
- proc_stat(5)
- x25(7)
- proc_interrupts(5)
- fifo(7)
- repertoiremap(5)
- icmp(7)
- futex(7)
- feature_test_macros(7)
- lp(4)
- bpf-helpers(7)
- epoll(7)
- proc_sys_dev(5)
- namespaces(7)
- proc_sysrq-trigger(5)
- proc_bus(5)
- cp1251(7)
- proc_pid_maps(5)
- proc_sys_vm(5)
- proc_pid_projid_map(5)
- st(4)
- proc_pid(5)
- issue(5)
- pid_namespaces(7)
- unicode(7)
- inode(7)
- hosts.equiv(5)
- iso-8859-13(7)
- proc_fb(5)
- proc_modules(5)
- proc_pid_autogroup(5)
- keyrings(7)
- sysvipc(7)
- proc_kmsg(5)
- cgroups(7)
- latin6(7)
- proc_pid_uid_map(5)
- unix(7)
- proc_pid_io(5)
- pts(4)
- packet(7)
- ld-linux.so(8)
- tzselect(8)
- iconv(1)
- proc_pid_syscall(5)
- proc_pid_net(5)
- proc_pid_pagemap(5)
- tty(4)
- proc_profile(5)
- standards(7)
- proc_pid_mounts(5)
- filesystems(5)
- iso-8859-15(7)
- locale(5)
- iso_8859_3(7)
- xattr(7)
- iso-8859-2(7)
- proc_uptime(5)
- persistent-keyring(7)
- credentials(7)
- proc_pid_timers(5)
- utmpx(5)
- vcsa(4)
- proc_pid_exe(5)
- proc_net(5)
- proc_timer_stats(5)
- ip(7)
- proc_pid_fd(5)
- ptmx(4)
- user_namespaces(7)
- resolv.conf(5)
- url(7)
- iso_8859_5(7)
- iso_8859-8(7)
- urn(7)
- process-keyring(7)
- proc_pid_auxv(5)
- proc_ksyms(5)
- proc_ide(5)
- veth(4)
- ldd(1)
- proc_swaps(5)
- landlock(7)
- proc_vmstat(5)
- system_data_types(7)
- cp1252(7)
- lirc(4)
- proc_kpageflags(5)
- random(7)
- precedence(7)
- cpuset(7)
- proc_pid_ns(5)
- acct(5)
- latin4(7)
- proc_pid_cgroup(5)
- proc_cpuinfo(5)
- iso_8859-2(7)
- proc_keys(5)
- charsets(7)
- pldd(1)
- proc_pid_stat(5)
- rtnetlink(7)
- netlink(7)
- ram(4)
- mem(4)
- iso-8859-6(7)
- proc_key-users(5)
- iso_8859_15(7)
- fanotify(7)
- proc_sys_net(5)
- sysfs(5)
- math_error(7)
- latin1(7)
- proc_pid_root(5)
- nptl(7)
- proc_cgroups(5)
- proc_iomem(5)
- proc_pid_statm(5)
- sem_overview(7)
- hier(7)
- full(4)
- proc_pid_status(5)
- proc_pid_cwd(5)
- proc_pid_cpuset(5)
- proc_scsi(5)
- uri(7)
- proc_diskstats(5)
- iso_8859_6(7)
- latin2(7)
- latin5(7)
- man-pages(7)
- ld.so(8)
- uts_namespaces(7)
- proc_pid_mountstats(5)
- intro(3)
- proc_pid_seccomp(5)
- proc_pid_wchan(5)
- attributes(7)
- symlink(7)
- mount_namespaces(7)
- charmap(5)
- tis-620(7)
- iso-8859-10(7)
- getent(1)
- proc_buddyinfo(5)
- ttytype(5)
- rtc(4)
- proc_malloc(5)
- suffixes(7)
- sln(8)
- signal(7)
- proc_sys_abi(5)
- signal-safety(7)
- time_namespaces(7)
- proc_pid_comm(5)
- raw(7)
- gai.conf(5)
- proc_crypto(5)
- locale(1)
- iso-8859-3(7)
- motd(5)
- proc_meminfo(5)
- iso-8859-8(7)
- protocols(5)
- proc_pid_map_files(5)
- pthreads(7)
- null(4)
- proc(5)
- zdump(8)
- socket(7)
- proc_sys_kernel(5)
- ddp(7)
- memusagestat(1)
- hd(4)
- iso-8859-14(7)
- shells(5)
- pipe(7)
- glob(7)
- proc_self(5)
- network_namespaces(7)
- utmp(5)
- proc_kcore(5)
- nsswitch.conf(5)
- sd(4)
- iso-8859-5(7)
- iso_8859_16(7)
- man(7)
- iso_8859-6(7)
- dir_colors(5)
- mq_overview(7)
- vsock(7)
- ascii(7)
- thread-keyring(7)
- fs(5)
- proc_pid_attr(5)
- proc_sys_debug(5)
- proc_sys(5)
- proc_pid_cmdline(5)
- pty(7)
- services(5)
- cgroup_namespaces(7)
- securetty(5)
- netdevice(7)
- iso_8859_13(7)
- host.conf(5)
- proc_pid_setgroups(5)
- proc_slabinfo(5)
- sock_diag(7)
- iso_8859-14(7)
- iso-8859-11(7)
- iso_8859_11(7)
- operator(7)
- regex(7)
- wavelan(4)
- proc_sys_fs(5)
- nologin(5)
- proc_pci(5)
- koi8-r(7)
- erofs(5)
- intro(2)
- utf8(7)
- proc_kallsyms(5)
- proc_sysvipc(5)
- queue(7)
- proc_sys_sunrpc(5)
- intro(5)
- latin8(7)
- mtrace(1)
- ipc_namespaces(7)
- dsp56k(4)
- iso_8859_4(7)
- proc_pid_smaps(5)
- proc_cmdline(5)
- rpc(5)
- proc_tty(5)
- proc_version(5)
- smartpqi(4)
- proc_pid_timerslack_ns(5)
- aio(7)
- session-keyring(7)
- resolver(5)
- slabinfo(5)
- wtmp(5)
- iso_8859_9(7)
- proc_locks(5)
- mailaddr(7)
- proc_pid_oom_score(5)
- kmem(4)
- iconvconfig(8)
- iso_8859-7(7)
- glibc(7)
- hostname(7)
- proc_thread-self(5)
- ipv6(7)
- iso_8859_7(7)
- proc_kpagecgroup(5)
- core(5)
- time(7)
- units(7)
- proc_dma(5)
- loop(4)
- address_families(7)
- zero(4)
- intro(4)
- procfs(5)
- iso_8859-4(7)
- vdso(7)
- tmpfs(5)
- iso-8859-16(7)
- iso_8859_10(7)
- user-session-keyring(7)
- libc(7)
- proc_fs(5)
- koi8-u(7)
- latin3(7)
- proc_tid_children(5)
- proc_pid_limits(5)
- proc_pid_coredump_filter(5)
- iso_8859-15(7)
- arp(7)
- urandom(4)
- iso_8859-10(7)
- hpsa(4)
- proc_pid_environ(5)
- boot(7)
- ftm(7)
- ld-linux(8)
- proc_driver(5)
- loop-control(4)
- iso_8859-16(7)
- proc_filesystems(5)
- tzfile(5)
- sprof(1)
- proc_pid_task(5)
- proc_pid_oom_score_adj(5)
- proc_mounts(5)
- iso-8859-4(7)
- iso_8859-1(7)
- utf-8(7)
- iso_8859-13(7)
- intro(6)
- proc_timer_list(5)
- rtld-audit(7)
- iso_8859-3(7)
- group(5)
- sched(7)
- proc_pid_clear_refs(5)
- hosts(5)
- iso_8859-11(7)
- numa(7)
- iso_8859_2(7)
- locale(7)
- iso-8859-1(7)
- fuse(4)
- proc_tid(5)
- proc_execdomains(5)
- proc_pid_mountinfo(5)
- intro(8)
- iso_8859_8(7)
- proc_loadavg(5)
- proc_pid_oom_adj(5)
- re_format(7)
- iso_8859_14(7)
- zic(8)
- bootparam(7)
- inotify(7)
- posixoptions(7)
- proc_partitions(5)
- iso-8859-9(7)
- proc_pid_mem(5)
- networks(5)
- proc_sys_user(5)
- udp(7)
- proc_zoneinfo(5)
- latin10(7)
- proc_pid_fdinfo(5)
- proc_pid_stack(5)
- memusage(1)
- spufs(7)
- pkeys(7)
- path_resolution(7)
- proc_ioports(5)
- intro(1)
- ldconfig(8)
- msr(4)
- svipc(7)
- port(4)
- proc_pid_personality(5)
- cciss(4)
- latin9(7)
- capabilities(7)
- localedef(1)
- vcs(4)
- iso_8859-5(7)
- elf(5)
- proc_sys_proc(5)
- console_codes(4)
- random(4)
- iso-8859-7(7)
- termcap(5)
- cpuid(4)
- environ(7)
- string_copying(7)
- proc_pid_gid_map(5)
- queue(3)
- termio(7)
- user-keyring(7)
- complex(7)
- latin7(7)
- proc_config.gz(5)
- udplite(7)
- kernel_lockdown(7)
- proc_devices(5)
- proc_apm(5)
- iso_8859_1(7)
- proc_pid_numa_maps(5)
apt-get install manpages
Available languages:
en fr ru roManual
vock
NOMSYNOPSIS
DESCRIPTION
Formats dâadresse
Migration Ă chaud
Ioctls
Communication locale
ERREURS
VERSIONS
VOIR AUSSI
TRADUCTION
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 machines virtuelles et lâhĂŽte sur lesquelles elles sâexĂ©cutent. Cette famille 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 service 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 listen (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 familles dâappels systĂšme recv (2) ou read (2).
Formats 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 virtuelle, 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; /* Famille dâadresses :
AF_VSOCK */
unsigned short svm_reserved1;
unsigned int svm_port; /* N° port dans lâordre
dâoctets de lâhĂŽte */
unsigned int svm_cid; /* Adresse dans lâordre
dâoctets de lâhĂŽte */
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âoctets 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 virtuelles. 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 automatiquement mis Ă jour vers le nouveau CID.
Ioctls
Les ioctls
suivants sont disponibles sur le périphérique
/dev/vsock
.
IOCTL_VM_SOCKETS_GET_LOCAL_CID
Obtention du CID de la machine locale. Lâargument est un pointeur 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 utilisĂ© 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 impossibilité de lier à un CID non local.
|
EINVAL |
ParamĂštres non autorisĂ©s. Cela comprend lâessai de lier Ă un socket dĂ©jĂ liĂ©, la fourniture dâune structure sockaddr_vm non valable et dâautres erreurs de validation dâentrĂ©e. |
ENOPROTOOPT
Option non valable de socket dans setsockopt (2) ou getsockopt (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 est pris en charge depuis Linux 5.6. La communication locale dans le client et dans lâhĂŽte est prise en charge depuis Linux 5.6. Les versions prĂ©cĂ©dentes ne gĂ©raient la communication locale que dans le client (mais pas dans lâhĂŽte) et seulement avec certains transports (VMCI et virtio).
VOIR AUSSI
bind (2), connect (2), listen (2), recv (2), send (2), socket (2), capabilities (7)
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.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.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Cédric Boutillier <cedric.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 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 .