2017-10-03 13:52:04 +00:00
|
|
|
.\" Copyright (c) 2012 Tomáš Pospíšek (tpo_deb@sourcepole.ch),
|
|
|
|
.\" Fri, 03 Nov 2012 22:35:33 +0100
|
2017-10-03 18:47:37 +00:00
|
|
|
.\" and Copyright (c) 2012 Eric W. Biederman <ebiederm@xmission.com>
|
2017-10-03 13:52:04 +00:00
|
|
|
.\"
|
2017-11-26 11:36:20 +00:00
|
|
|
.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
|
2017-10-03 13:52:04 +00:00
|
|
|
.\" This is free documentation; you can redistribute it and/or
|
|
|
|
.\" modify it under the terms of the GNU General Public License as
|
|
|
|
.\" published by the Free Software Foundation; either version 2 of
|
|
|
|
.\" the License, or (at your option) any later version.
|
|
|
|
.\"
|
|
|
|
.\" The GNU General Public License's references to "object code"
|
|
|
|
.\" and "executables" are to be interpreted as the output of any
|
|
|
|
.\" document formatting or typesetting system, including
|
|
|
|
.\" intermediate and printed output.
|
|
|
|
.\"
|
|
|
|
.\" This manual is distributed in the hope that it will be useful,
|
|
|
|
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
.\" GNU General Public License for more details.
|
|
|
|
.\"
|
|
|
|
.\" You should have received a copy of the GNU General Public
|
|
|
|
.\" License along with this manual; if not, write to the Free
|
|
|
|
.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
|
|
|
|
.\" USA.
|
2017-11-26 11:36:20 +00:00
|
|
|
.\" %%%LICENSE_END
|
2017-10-03 13:52:04 +00:00
|
|
|
.\"
|
|
|
|
.\"
|
memusage.1, pldd.1, sprof.1, add_key.2, bind.2, bpf.2, clone.2, dup.2, epoll_ctl.2, eventfd.2, fanotify_init.2, fanotify_mark.2, futex.2, getdents.2, getpid.2, getrlimit.2, intro.2, ioctl_fat.2, ioctl_ns.2, kcmp.2, keyctl.2, membarrier.2, memfd_create.2, mprotect.2, msgctl.2, msgop.2, nfsservctl.2, open.2, open_by_handle_at.2, openat2.2, outb.2, perf_event_open.2, pivot_root.2, recv.2, recvmmsg.2, request_key.2, sched_setaffinity.2, sched_setattr.2, seccomp.2, select.2, send.2, signalfd.2, spu_run.2, sysctl.2, timer_create.2, userfaultfd.2, wait.2, CPU_SET.3, abs.3, argz_add.3, backtrace.3, bsearch.3, bswap.3, clock_getcpuclockid.3, cmsg.3, dl_iterate_phdr.3, dlinfo.3, dlopen.3, drand48.3, drand48_r.3, duplocale.3, encrypt.3, endian.3, envz_add.3, errno.3, ffs.3, fopencookie.3, get_phys_pages.3, getaddrinfo.3, getaddrinfo_a.3, getdate.3, getgrent_r.3, getgrouplist.3, getifaddrs.3, getline.3, getprotoent_r.3, getpwent_r.3, getpwnam.3, getservent_r.3, hsearch.3, insque.3, intro.3, lrint.3, lround.3, lseek64.3, mallinfo.3, malloc_hook.3, malloc_info.3, mbsinit.3, mbstowcs.3, mtrace.3, newlocale.3, ntp_gettime.3, offsetof.3, perror.3, posix_fallocate.3, posix_spawn.3, printf.3, psignal.3, pthread_attr_init.3, pthread_create.3, pthread_getattr_np.3, pthread_getcpuclockid.3, pthread_setaffinity_np.3, pthread_setname_np.3, pthread_sigmask.3, qsort.3, rand.3, random.3, rpc.3, rtnetlink.3, scalbln.3, shm_open.3, stdarg.3, strcat.3, strerror.3, strfmon.3, strptime.3, strsignal.3, strtod.3, strtok.3, strtol.3, strtoul.3, tsearch.3, wordexp.3, loop.4, vcs.4, veth.4, core.5, locale.5, slabinfo.5, cgroup_namespaces.7, cpuset.7, credentials.7, fanotify.7, feature_test_macros.7, inotify.7, ip.7, kernel_lockdown.7, man.7, mount_namespaces.7, namespaces.7, pid_namespaces.7, rtld-audit.7, sigevent.7, sock_diag.7, standards.7, unix.7, user_namespaces.7: tstamp
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2020-11-01 20:04:35 +00:00
|
|
|
.TH VETH 4 2020-11-01 "Linux" "Linux Programmer's Manual"
|
2017-10-03 13:52:04 +00:00
|
|
|
.SH NAME
|
|
|
|
veth \- Virtual Ethernet Device
|
|
|
|
.SH DESCRIPTION
|
|
|
|
The
|
|
|
|
.B veth
|
|
|
|
devices are virtual Ethernet devices.
|
|
|
|
They can act as tunnels between network namespaces to create
|
2017-10-03 19:07:05 +00:00
|
|
|
a bridge to a physical network device in another namespace,
|
|
|
|
but can also be used as standalone network devices.
|
2017-10-03 13:52:04 +00:00
|
|
|
.PP
|
|
|
|
.B veth
|
2017-10-03 18:47:37 +00:00
|
|
|
devices are always created in interconnected pairs.
|
|
|
|
A pair can be created using the command:
|
|
|
|
.PP
|
|
|
|
.in +4n
|
|
|
|
.EX
|
|
|
|
# ip link add <p1-name> type veth peer name <p2-name>
|
|
|
|
.EE
|
|
|
|
.in
|
|
|
|
.PP
|
|
|
|
In the above,
|
|
|
|
.I p1-name
|
|
|
|
and
|
|
|
|
.I p2-name
|
|
|
|
are the names assigned to the two connected end points.
|
2017-10-03 13:52:04 +00:00
|
|
|
.PP
|
2017-10-03 19:07:05 +00:00
|
|
|
Packets transmitted on one device in the pair are immediately received on
|
2017-10-03 18:47:37 +00:00
|
|
|
the other device.
|
2017-11-26 11:42:22 +00:00
|
|
|
When either devices is down the link state of the pair is down.
|
2017-10-03 13:52:04 +00:00
|
|
|
.PP
|
2017-10-03 18:47:37 +00:00
|
|
|
.B veth
|
|
|
|
device pairs are useful for combining the network
|
|
|
|
facilities of the kernel together in interesting ways.
|
|
|
|
A particularly interesting use case is to place one end of a
|
|
|
|
.B veth
|
|
|
|
pair in one network namespace and the other end in another network namespace,
|
|
|
|
thus allowing communication between network namespaces.
|
2020-05-18 20:58:28 +00:00
|
|
|
To do this, one can provide the
|
|
|
|
.B netns
|
|
|
|
parameter when creating the interfaces:
|
|
|
|
.PP
|
|
|
|
.in +4n
|
|
|
|
.EX
|
2021-01-09 22:21:02 +00:00
|
|
|
# ip link add <p1\-name> netns <p1\-ns> type veth peer <p2\-name> netns <p2\-ns>
|
2020-05-18 20:58:28 +00:00
|
|
|
.EE
|
|
|
|
.in
|
|
|
|
.PP
|
|
|
|
or, for an existing
|
2017-10-19 17:09:55 +00:00
|
|
|
.B veth
|
2020-05-18 20:58:28 +00:00
|
|
|
pair, move one side to the other namespace:
|
2017-10-19 17:09:55 +00:00
|
|
|
.PP
|
|
|
|
.in +4n
|
|
|
|
.EX
|
2021-01-09 22:21:02 +00:00
|
|
|
# ip link set <p2\-name> netns <p2\-ns>
|
2017-10-19 17:09:55 +00:00
|
|
|
.EE
|
|
|
|
.in
|
2017-10-03 18:47:37 +00:00
|
|
|
.PP
|
|
|
|
.BR ethtool (8)
|
2017-10-03 19:36:52 +00:00
|
|
|
can be used to find the peer of a
|
2017-10-03 18:47:37 +00:00
|
|
|
.B veth
|
2017-10-03 19:36:52 +00:00
|
|
|
network interface, using commands something like:
|
|
|
|
.PP
|
|
|
|
.in +4n
|
|
|
|
.EX
|
2017-10-18 07:51:20 +00:00
|
|
|
# \fBip link add ve_A type veth peer name ve_B\fP # Create veth pair
|
2020-07-01 23:01:21 +00:00
|
|
|
# \fBethtool \-S ve_A\fP # Discover interface index of peer
|
2017-10-03 19:36:52 +00:00
|
|
|
NIC statistics:
|
|
|
|
peer_ifindex: 16
|
pldd.1, bpf.2, clone.2, dup.2, ioctl_fat.2, nfsservctl.2, open_by_handle_at.2, perf_event_open.2, pivot_root.2, request_key.2, sched_setaffinity.2, seccomp.2, select.2, statx.2, dl_iterate_phdr.3, dlinfo.3, dlopen.3, insque.3, newlocale.3, printf.3, pthread_setname_np.3, rpc.3, stdarg.3, strfmon.3, veth.4, proc.5, slabinfo.5, cgroup_namespaces.7, cgroups.7, cpuset.7, fanotify.7, inotify.7, mount_namespaces.7, sock_diag.7, user_namespaces.7, ld.so.8: Use \(aq instead of ' inside monospace fonts
Use \(aq to get an unslanted single quote inside monospace code
blocks. Using a simple ' results in a slanted quote inside PDFs.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2020-09-24 07:32:31 +00:00
|
|
|
# \fBip link | grep \(aq\(ha16:\(aq\fP # Look up interface
|
2021-01-09 22:21:02 +00:00
|
|
|
16: ve_B@ve_A: <BROADCAST,MULTICAST,M\-DOWN> mtu 1500 qdisc ...
|
2017-10-03 19:36:52 +00:00
|
|
|
.EE
|
|
|
|
.in
|
2017-10-03 13:52:04 +00:00
|
|
|
.SH "SEE ALSO"
|
|
|
|
.BR clone (2),
|
2017-12-08 09:17:25 +00:00
|
|
|
.BR network_namespaces (7),
|
2017-10-03 13:52:38 +00:00
|
|
|
.BR ip (8),
|
intro.1, localedef.1, memusage.1, memusagestat.1, bpf.2, execve.2, fork.2, keyctl.2, request_key.2, sigaction.2, signal.2, socket.2, dlopen.3, getauxval.3, gnu_get_libc_version.3, pthread_atfork.3, sem_post.3, setjmp.3, strftime.3, veth.4, locale.5, nscd.conf.5, resolv.conf.5, address_families.7, armscii-8.7, ascii.7, capabilities.7, cgroups.7, charsets.7, cp1251.7, cp1252.7, iso_8859-1.7, iso_8859-10.7, iso_8859-11.7, iso_8859-13.7, iso_8859-14.7, iso_8859-15.7, iso_8859-16.7, iso_8859-2.7, iso_8859-3.7, iso_8859-4.7, iso_8859-5.7, iso_8859-6.7, iso_8859-7.7, iso_8859-8.7, iso_8859-9.7, keyrings.7, koi8-r.7, koi8-u.7, libc.7, locale.7, man.7, network_namespaces.7, persistent-keyring.7, session-keyring.7, signal.7, unicode.7, uri.7, user-keyring.7, user-session-keyring.7: ffix: replace - with real\-
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2020-07-06 12:28:51 +00:00
|
|
|
.BR ip\-link (8),
|
|
|
|
.BR ip\-netns (8)
|