Virtual Ethernet

The veth devices are virtual Ethernet devices. They can act as tunnels between network namespaces to create a bridge to a physical network device in another namespace or VRF, but can also be used as standalone network devices.

Note

veth interfaces need to be created in pairs - it’s called the peer name

Configuration

Common interface configuration

set interfaces virtual-ethernet <interface> address <address | dhcp | dhcpv6>

Configure interface <interface> with one or more interface addresses.

  • address can be specified multiple times as IPv4 and/or IPv6 address, e.g. 192.0.2.1/24 and/or 2001:db8::1/64

  • dhcp interface address is received by DHCP from a DHCP server on this segment.

  • dhcpv6 interface address is received by DHCPv6 from a DHCPv6 server on this segment.

Note

When using DHCP to retrieve IPv4 address and if local customizations are needed, they should be possible using the enter and exit hooks provided. The hook dirs are:

  • /config/scripts/dhcp-client/pre-hooks.d/

  • /config/scripts/dhcp-client/post-hooks.d/

Example:

set interfaces virtual-ethernet veth0 address 192.0.2.1/24
set interfaces virtual-ethernet veth0 address 2001:db8::1/64
set interfaces virtual-ethernet veth0 address dhcp
set interfaces virtual-ethernet veth0 address dhcpv6
set interfaces virtual-ethernet <interface> description <description>

Set a human readable, descriptive alias for this connection. Alias is used by e.g. the show interfaces command or SNMP based monitoring tools.

Example:

set interfaces virtual-ethernet veth0 description 'This is an awesome interface running on VyOS'
set interfaces virtual-ethernet <interface> disable

Disable given <interface>. It will be placed in administratively down (A/D) state.

Example:

set interfaces virtual-ethernet veth0 disable
set interfaces virtual-ethernet <interface> vrf <vrf>

Place interface in given VRF instance.

See also

There is an entire chapter about how to configure a VRF, please check this for additional information.

Example:

set interfaces virtual-ethernet veth0 vrf red

Operation

show interfaces virtual-ethernet

Show brief interface information.

[email protected]:~$ show interfaces virtual-ethernet
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface        IP Address                        S/L  Description
---------        ----------                        ---  -----------
veth10           100.64.0.0/31                     u/u
veth11           100.64.0.1/31                     u/u
show interfaces virtual-ethernet <interface>

Show detailed information on given <interface>

[email protected]:~$ show interfaces virtual-ethernet veth11
10: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master red state UP group default qlen 1000
    link/ether b2:7b:df:47:e9:11 brd ff:ff:ff:ff:ff:ff
    inet 100.64.0.1/31 scope global veth11
       valid_lft forever preferred_lft forever
    inet6 fe80::b07b:dfff:fe47:e911/64 scope link
       valid_lft forever preferred_lft forever


    RX:  bytes    packets     errors    dropped    overrun      mcast
             0          0          0          0          0          0
    TX:  bytes    packets     errors    dropped    carrier collisions
       1369707       4267          0          0          0          0

Example

Interconnect the global VRF with vrf “red” using the veth10 <-> veth 11 pair

set interfaces virtual-ethernet veth10 address '100.64.0.0/31'
set interfaces virtual-ethernet veth10 peer-name 'veth11'
set interfaces virtual-ethernet veth11 address '100.64.0.1/31'
set interfaces virtual-ethernet veth11 peer-name 'veth10'
set interfaces virtual-ethernet veth11 vrf 'red'
set vrf name red table '1000'

[email protected]:~$ ping 100.64.0.1
PING 100.64.0.1 (100.64.0.1) 56(84) bytes of data.
64 bytes from 100.64.0.1: icmp_seq=1 ttl=64 time=0.080 ms
64 bytes from 100.64.0.1: icmp_seq=2 ttl=64 time=0.119 ms