Путеводитель по Руководству Linux

  User  |  Syst  |  Libr  |  Device  |  Files  |  Other  |  Admin  |  Head  |



   ovs-vswitchd.conf.db    ( 5 )

схема базы данных Open_vSwitch (Open_vSwitch database schema)

Interface TABLE

An interface within a Port.

Summary: Core Features: name immutable string (must be unique within table) ifindex optional integer, in range 0 to 4,294,967,295 mac_in_use optional string mac optional string error optional string OpenFlow Port Number: ofport optional integer ofport_request optional integer, in range 1 to 65,279 System-Specific Details: type string Tunnel Options: options : remote_ip optional string options : local_ip optional string options : in_key optional string options : out_key optional string options : dst_port optional string options : key optional string options : tos optional string options : ttl optional string options : df_default optional string, either true or false options : egress_pkt_mark optional string Tunnel Options: lisp only: options : packet_type optional string, either legacy_l3 or ptap Tunnel Options: vxlan only: options : exts optional string options : packet_type optional string, one of legacy_l2, legacy_l3, or ptap Tunnel Options: gre only: options : packet_type optional string, one of legacy_l2, legacy_l3, or ptap options : seq optional string, either true or false Tunnel Options: gre, ip6gre, geneve, bareudp and vxlan: options : csum optional string, either true or false Tunnel Options: IPsec: options : psk optional string options : remote_cert optional string options : remote_name optional string Tunnel Options: erspan only: options : erspan_idx optional string options : erspan_ver optional string options : erspan_dir optional string options : erspan_hwid optional string Tunnel Options: Bareudp only: options : payload_type optional string Patch Options: options : peer optional string PMD (Poll Mode Driver) Options: options : n_rxq optional string, containing an integer, at least 1 options : dpdk-devargs optional string other_config : pmd-rxq-affinity optional string options : xdp-mode optional string, one of best-effort, generic, native-with-zerocopy, or native options : use-need-wakeup optional string, either true or false options : vhost-server-path optional string options : tx-retries-max optional string, containing an integer, in range 0 to 32 options : n_rxq_desc optional string, containing an integer, in range 1 to 4,096 options : n_txq_desc optional string, containing an integer, in range 1 to 4,096 options : dpdk-vf-mac optional string EMC (Exact Match Cache) Configuration: other_config : emc-enable optional string, either true or false MTU: mtu optional integer mtu_request optional integer, at least 1 Interface Status: admin_state optional string, either down or up link_state optional string, either down or up link_resets optional integer link_speed optional integer duplex optional string, either full or half lacp_current optional boolean status map of string-string pairs status : driver_name optional string status : driver_version optional string status : firmware_version optional string status : source_ip optional string status : tunnel_egress_iface optional string status : tunnel_egress_iface_carrier optional string, either down or up dpdk: status : port_no optional string status : numa_id optional string status : min_rx_bufsize optional string status : max_rx_pktlen optional string status : max_rx_queues optional string status : max_tx_queues optional string status : max_mac_addrs optional string status : max_hash_mac_addrs optional string status : max_vfs optional string status : max_vmdq_pools optional string status : if_type optional string status : if_descr optional string status : pci-vendor_id optional string status : pci-device_id optional string Statistics: Statistics: Successful transmit and receive counters: statistics : rx_packets optional integer statistics : rx_bytes optional integer statistics : tx_packets optional integer statistics : tx_bytes optional integer Statistics: Receive errors: statistics : rx_dropped optional integer statistics : rx_frame_err optional integer statistics : rx_over_err optional integer statistics : rx_crc_err optional integer statistics : rx_errors optional integer Statistics: Transmit errors: statistics : tx_dropped optional integer statistics : collisions optional integer statistics : tx_errors optional integer Ingress Policing: ingress_policing_rate integer, at least 0 ingress_policing_kpkts_rate integer, at least 0 ingress_policing_burst integer, at least 0 ingress_policing_kpkts_burst integer, at least 0 Bidirectional Forwarding Detection (BFD): BFD Configuration: bfd : enable optional string, either true or false bfd : min_rx optional string, containing an integer, at least 1 bfd : min_tx optional string, containing an integer, at least 1 bfd : decay_min_rx optional string, containing an integer bfd : forwarding_if_rx optional string, either true or false bfd : cpath_down optional string, either true or false bfd : check_tnl_key optional string, either true or false bfd : bfd_local_src_mac optional string bfd : bfd_local_dst_mac optional string bfd : bfd_remote_dst_mac optional string bfd : bfd_src_ip optional string bfd : bfd_dst_ip optional string bfd : oam optional string bfd : mult optional string, containing an integer, in range 1 to 255 BFD Status: bfd_status : state optional string, one of admin_down, down, init, or up bfd_status : forwarding optional string, either true or false bfd_status : diagnostic optional string bfd_status : remote_state optional string, one of admin_down, down, init, or up bfd_status : remote_diagnostic optional string bfd_status : flap_count optional string, containing an integer, at least 0 Connectivity Fault Management: cfm_mpid optional integer cfm_flap_count optional integer cfm_fault optional boolean cfm_fault_status : recv none cfm_fault_status : rdi none cfm_fault_status : maid none cfm_fault_status : loopback none cfm_fault_status : overflow none cfm_fault_status : override none cfm_fault_status : interval none cfm_remote_opstate optional string, either down or up cfm_health optional integer, in range 0 to 100 cfm_remote_mpids set of integers other_config : cfm_interval optional string, containing an integer other_config : cfm_extended optional string, either true or false other_config : cfm_demand optional string, either true or false other_config : cfm_opstate optional string, either down or up other_config : cfm_ccm_vlan optional string, containing an integer, in range 1 to 4,095 other_config : cfm_ccm_pcp optional string, containing an integer, in range 1 to 7 Bonding Configuration: other_config : lacp-port-id optional string, containing an integer, in range 1 to 65,535 other_config : lacp-port-priority optional string, containing an integer, in range 1 to 65,535 other_config : lacp-aggregation-key optional string, containing an integer, in range 1 to 65,535 Virtual Machine Identifiers: external_ids : attached-mac optional string external_ids : iface-id optional string external_ids : iface-status optional string, either active or inactive external_ids : xs-vif-uuid optional string external_ids : xs-network-uuid optional string external_ids : vm-id optional string external_ids : xs-vm-uuid optional string Auto Attach Configuration: lldp : enable optional string, either true or false Flow control Configuration: options : rx-flow-ctrl optional string, either true or false options : tx-flow-ctrl optional string, either true or false options : flow-ctrl-autoneg optional string, either true or false Link State Change detection mode: options : dpdk-lsc-interrupt optional string, either true or false Common Columns: other_config map of string-string pairs external_ids map of string-string pairs

Details: Core Features:

name: immutable string (must be unique within table) Interface name. Should be alphanumeric. For non-bonded port, this should be the same as the port name. It must otherwise be unique among the names of ports, interfaces, and bridges on a host.

The maximum length of an interface name depends on the underlying datapath:

• The names of interfaces implemented as Linux and BSD network devices, including interfaces with type internal, tap, or system plus the different types of tunnel ports, are limited to 15 bytes. Windows limits these names to 255 bytes.

• The names of patch ports are not used in the underlying datapath, so operating system restrictions do not apply. Thus, they may have arbitrary length.

Regardless of other restrictions, OpenFlow only supports 15-byte names, which means that ovs-ofctl and OpenFlow controllers will show names truncated to 15 bytes.

ifindex: optional integer, in range 0 to 4,294,967,295 A positive interface index as defined for SNMP MIB-II in RFCs 1213 and 2863, if the interface has one, otherwise 0. The ifindex is useful for seamless integration with protocols such as SNMP and sFlow.

mac_in_use: optional string The MAC address in use by this interface.

mac: optional string Ethernet address to set for this interface. If unset then the default MAC address is used:

• For the local interface, the default is the lowest- numbered MAC address among the other bridge ports, either the value of the mac in its Port record, if set, or its actual MAC (for bonded ports, the MAC of its member whose name is first in alphabetical order). Internal ports and bridge ports that are used as port mirroring destinations (see the Mirror table) are ignored.

• For other internal interfaces, the default MAC is randomly generated.

• External interfaces typically have a MAC address associated with their hardware.

Some interfaces may not have a software-controllable MAC address. This option only affects internal ports. For other type ports, you can change the MAC address outside Open vSwitch, using ip command.

error: optional string If the configuration of the port failed, as indicated by -1 in ofport, Open vSwitch sets this column to an error description in human readable form. Otherwise, Open vSwitch clears this column.

OpenFlow Port Number:

When a client adds a new interface, Open vSwitch chooses an OpenFlow port number for the new port. If the client that adds the port fills in ofport_request, then Open vSwitch tries to use its value as the OpenFlow port number. Otherwise, or if the requested port number is already in use or cannot be used for another reason, Open vSwitch automatically assigns a free port number. Regardless of how the port number was obtained, Open vSwitch then reports in ofport the port number actually assigned.

Open vSwitch limits the port numbers that it automatically assigns to the range 1 through 32,767, inclusive. Controllers therefore have free use of ports 32,768 and up.

ofport: optional integer OpenFlow port number for this interface. Open vSwitch sets this column's value, so other clients should treat it as read-only.

The OpenFlow ``local'' port (OFPP_LOCAL) is 65,534. The other valid port numbers are in the range 1 to 65,279, inclusive. Value -1 indicates an error adding the interface.

ofport_request: optional integer, in range 1 to 65,279 Requested OpenFlow port number for this interface.

A client should ideally set this column's value in the same database transaction that it uses to create the interface. Open vSwitch version 2.1 and later will honor a later request for a specific port number, althuogh it might confuse some controllers: OpenFlow does not have a way to announce a port number change, so Open vSwitch represents it over OpenFlow as a port deletion followed immediately by a port addition.

If ofport_request is set or changed to some other port's automatically assigned port number, Open vSwitch chooses a new port number for the latter port.

System-Specific Details:

type: string The interface type. The types supported by a particular instance of Open vSwitch are listed in the iface_types column in the Open_vSwitch table. The following types are defined:

system An ordinary network device, e.g. eth0 on Linux. Sometimes referred to as ``external interfaces'' since they are generally connected to hardware external to that on which the Open vSwitch is running. The empty string is a synonym for system.

internal A simulated network device that sends and receives traffic. An internal interface whose name is the same as its bridge's name is called the ``local interface.'' It does not make sense to bond an internal interface, so the terms ``port'' and ``interface'' are often used imprecisely for internal interfaces.

tap A TUN/TAP device managed by Open vSwitch.

Open vSwitch checks the interface state before send packets to the device. When it is down, the packets are dropped and the tx_dropped statistic is updated accordingly. Older versions of Open vSwitch did not check the interface state and then the tx_packets was incremented along with tx_dropped.

geneve An Ethernet over Geneve (http://tools.ietf.org/html/draft-ietf-nvo3-geneve ) IPv4/IPv6 tunnel. A description of how to match and set Geneve options can be found in the ovs-ofctl manual page.

gre Generic Routing Encapsulation (GRE) over IPv4 tunnel, configurable to encapsulate layer 2 or layer 3 traffic.

ip6gre Generic Routing Encapsulation (GRE) over IPv6 tunnel, encapsulate layer 2 traffic.

vxlan An Ethernet tunnel over the UDP-based VXLAN protocol described in RFC 7348.

Open vSwitch uses IANA-assigned UDP destination port 4789. The source port used for VXLAN traffic varies on a per-flow basis and is in the ephemeral port range.

lisp A layer 3 tunnel over the experimental, UDP-based Locator/ID Separation Protocol (RFC 6830).

Only IPv4 and IPv6 packets are supported by the protocol, and they are sent and received without an Ethernet header. Traffic to/from LISP ports is expected to be configured explicitly, and the ports are not intended to participate in learning based switching. As such, they are always excluded from packet flooding.

stt The Stateless TCP Tunnel (STT) is particularly useful when tunnel endpoints are in end-systems, as it utilizes the capabilities of standard network interface cards to improve performance. STT utilizes a TCP-like header inside the IP header. It is stateless, i.e., there is no TCP connection state of any kind associated with the tunnel. The TCP-like header is used to leverage the capabilities of existing network interface cards, but should not be interpreted as implying any sort of connection state between endpoints. Since the STT protocol does not engage in the usual TCP 3-way handshake, so it will have difficulty traversing stateful firewalls. The protocol is documented at https://tools.ietf.org/html/draft-davie-stt All traffic uses a default destination port of 7471.

patch A pair of virtual devices that act as a patch cable.

gtpu GPRS Tunneling Protocol (GTP) is a group of IP- based communications protocols used to carry general packet radio service (GPRS) within GSM, UMTS and LTE networks. GTP-U is used for carrying user data within the GPRS core network and between the radio access network and the core network. The user data transported can be packets in any of IPv4, IPv6, or PPP formats.

The protocol is documented at http://www.3gpp.org/DynaReport/29281.htm

Open vSwitch uses UDP destination port 2152. The source port used for GTP traffic varies on a per- flow basis and is in the ephemeral port range.

Bareudp The Bareudp tunnel provides a generic L3 encapsulation support for tunnelling different L3 protocols like MPLS, IP, NSH etc. inside a UDP tunnel.

Tunnel Options:

These options apply to interfaces with type of geneve, bareudp, gre, ip6gre, vxlan, lisp and stt.

Each tunnel must be uniquely identified by the combination of type, options:remote_ip, options:local_ip, and options:in_key. If two ports are defined that are the same except one has an optional identifier and the other does not, the more specific one is matched first. options:in_key is considered more specific than options:local_ip if a port defines one and another port defines the other. options:in_key is not applicable for bareudp tunnels. Hence it is not considered while identifying a bareudp tunnel.

options : remote_ip: optional string Required. The remote tunnel endpoint, one of:

• An IPv4 or IPv6 address (not a DNS name), e.g. 192.168.0.123. Only unicast endpoints are supported.

• The word flow. The tunnel accepts packets from any remote tunnel endpoint. To process only packets from a specific remote tunnel endpoint, the flow entries may match on the tun_src or tun_ipv6_srcfield. When sending packets to a remote_ip=flow tunnel, the flow actions must explicitly set the tun_dst or tun_ipv6_dst field to the IP address of the desired remote tunnel endpoint, e.g. with a set_field action.

The remote tunnel endpoint for any packet received from a tunnel is available in the tun_src field for matching in the flow table.

options : local_ip: optional string Optional. The tunnel destination IP that received packets must match. Default is to match all addresses. If specified, may be one of:

• An IPv4/IPv6 address (not a DNS name), e.g. 192.168.12.3.

• The word flow. The tunnel accepts packets sent to any of the local IP addresses of the system running OVS. To process only packets sent to a specific IP address, the flow entries may match on the tun_dst or tun_ipv6_dst field. When sending packets to a local_ip=flow tunnel, the flow actions may explicitly set the tun_src or tun_ipv6_src field to the desired IP address, e.g. with a set_field action. However, while routing the tunneled packet out, the local system may override the specified address with the local IP address configured for the outgoing system interface.

This option is valid only for tunnels also configured with the remote_ip=flow option.

The tunnel destination IP address for any packet received from a tunnel is available in the tun_dst or tun_ipv6_dst field for matching in the flow table.

options : in_key: optional string Optional, not applicable for bareudp. The key that received packets must contain, one of:

0. The tunnel receives packets with no key or with a key of 0. This is equivalent to specifying no options:in_key at all.

• A positive 24-bit (for Geneve, VXLAN, and LISP), 32-bit (for GRE) or 64-bit (for STT) number. The tunnel receives only packets with the specified key.

• The word flow. The tunnel accepts packets with any key. The key will be placed in the tun_id field for matching in the flow table. The ovs-fields(7) manual page contains additional information about matching fields in OpenFlow flows.

options : out_key: optional string Optional, not applicable for bareudp. The key to be set on outgoing packets, one of:

0. Packets sent through the tunnel will have no key. This is equivalent to specifying no options:out_key at all.

• A positive 24-bit (for Geneve, VXLAN and LISP), 32-bit (for GRE) or 64-bit (for STT) number. Packets sent through the tunnel will have the specified key.

• The word flow. Packets sent through the tunnel will have the key set using the set_tunnel Nicira OpenFlow vendor extension (0 is used in the absence of an action). The ovs-fields(7) manual page contains additional information about the Nicira OpenFlow vendor extensions.

options : dst_port: optional string Optional. The tunnel transport layer destination port, for UDP and TCP based tunnel protocols (Geneve, VXLAN, LISP, and STT).

options : key: optional string Optional. Shorthand to set in_key and out_key at the same time.

options : tos: optional string Optional. The value of the ToS bits to be set on the encapsulating packet. ToS is interpreted as DSCP and ECN bits, ECN part must be zero. It may also be the word inherit, in which case the ToS will be copied from the inner packet if it is IPv4 or IPv6 (otherwise it will be 0). The ECN fields are always inherited. Default is 0.

options : ttl: optional string Optional. The TTL to be set on the encapsulating packet. It may also be the word inherit, in which case the TTL will be copied from the inner packet if it is IPv4 or IPv6 (otherwise it will be the system default, typically 64). Default is the system default TTL.

options : df_default: optional string, either true or false Optional. If enabled, the Don't Fragment bit will be set on tunnel outer headers to allow path MTU discovery. Default is enabled; set to false to disable.

options : egress_pkt_mark: optional string Optional. The pkt_mark to be set on the encapsulating packet. This option sets packet mark for the tunnel endpoint for all tunnel packets including tunnel monitoring.

Tunnel Options: lisp only:

options : packet_type: optional string, either legacy_l3 or ptap A LISP tunnel sends and receives only IPv4 and IPv6 packets. This option controls what how the tunnel represents the packets that it sends and receives:

• By default, or if this option is legacy_l3, the tunnel represents packets as Ethernet frames for compatibility with legacy OpenFlow controllers that expect this behavior.

• If this option is ptap, the tunnel represents packets using the packet_type mechanism introduced in OpenFlow 1.5.

Tunnel Options: vxlan only:

options : exts: optional string Optional. Comma separated list of optional VXLAN extensions to enable. The following extensions are supported:

gbp: VXLAN-GBP allows to transport the group policy context of a packet across the VXLAN tunnel to other network peers. See the description of tun_gbp_id and tun_gbp_flags in ovs-fields(7) for additional information. (https://tools.ietf.org/html/draft-smith-vxlan-group-policy )

gpe: Support for Generic Protocol Encapsulation in accordance with IETF draft https://tools.ietf.org/html/draft-ietf-nvo3-vxlan-gpe . Without this option, a VXLAN packet always encapsulates an Ethernet frame. With this option, an VXLAN packet may also encapsulate an IPv4, IPv6, NSH, or MPLS packet.

options : packet_type: optional string, one of legacy_l2, legacy_l3, or ptap This option controls what types of packets the tunnel sends and receives and how it represents them:

• By default, or if this option is legacy_l2, the tunnel sends and receives only Ethernet frames.

• If this option is legacy_l3, the tunnel sends and receives only non-Ethernet (L3) packet, but the packets are represented as Ethernet frames for compatibility with legacy OpenFlow controllers that expect this behavior. This requires enabling gpe in options:exts.

• If this option is ptap, Open vSwitch represents packets in the tunnel using the packet_type mechanism introduced in OpenFlow 1.5. This mechanism supports any kind of packet, but actually sending and receiving non-Ethernet packets requires additionally enabling gpe in options:exts.

Tunnel Options: gre only:

gre interfaces support these options.

options : packet_type: optional string, one of legacy_l2, legacy_l3, or ptap This option controls what types of packets the tunnel sends and receives and how it represents them:

• By default, or if this option is legacy_l2, the tunnel sends and receives only Ethernet frames.

• If this option is legacy_l3, the tunnel sends and receives only non-Ethernet (L3) packet, but the packets are represented as Ethernet frames for compatibility with legacy OpenFlow controllers that expect this behavior.

• The legacy_l3 option is only available via the user space datapath. The OVS kernel datapath does not support devices of type ARPHRD_IPGRE which is the requirement for legacy_l3 type packets.

• If this option is ptap, the tunnel sends and receives any kind of packet. Open vSwitch represents packets in the tunnel using the packet_type mechanism introduced in OpenFlow 1.5.

options : seq: optional string, either true or false Optional. A 4-byte sequence number field for GRE tunnel only. Default is disabled, set to true to enable. Sequence number is incremented by one on each outgoing packet.

Tunnel Options: gre, ip6gre, geneve, bareudp and vxlan:

gre, ip6gre, geneve, bareudp and vxlan interfaces support these options.

options : csum: optional string, either true or false Optional. Compute encapsulation header (either GRE or UDP) checksums on outgoing packets. Default is disabled, set to true to enable. Checksums present on incoming packets will be validated regardless of this setting.

When using the upstream Linux kernel module, computation of checksums for geneve and vxlan requires Linux kernel version 4.0 or higher. gre and ip6gre support checksums for all versions of Open vSwitch that support GRE. The out of tree kernel module distributed as part of OVS can compute all tunnel checksums on any kernel version that it is compatible with.

Tunnel Options: IPsec:

Setting any of these options enables IPsec support for a given tunnel. gre, geneve, vxlan and stt interfaces support these options. See the IPsec section in the Open_vSwitch table for a description of each mode.

options : psk: optional string In PSK mode only, the preshared secret to negotiate tunnel. This value must match on both tunnel ends.

options : remote_cert: optional string In self-signed certificate mode only, name of a PEM file containing a certificate of the remote switch. The certificate must be x.509 version 3 and with the string in common name (CN) also set in the subject alternative name (SAN).

options : remote_name: optional string In CA-signed certificate mode only, common name (CN) of the remote certificate.

Tunnel Options: erspan only:

Only erspan interfaces support these options.

options : erspan_idx: optional string 20 bit index/port number associated with the ERSPAN traffic's source port and direction (ingress/egress). This field is platform dependent.

options : erspan_ver: optional string ERSPAN version: 1 for version 1 (type II) or 2 for version 2 (type III).

options : erspan_dir: optional string Specifies the ERSPAN v2 mirrored traffic's direction. 1 for egress traffic, and 0 for ingress traffic.

options : erspan_hwid: optional string ERSPAN hardware ID is a 6-bit unique identifier of an ERSPAN v2 engine within a system.

Tunnel Options: Bareudp only:

options : payload_type: optional string Specifies the ethertype of the l3 protocol the bareudp device is tunnelling. For the tunnels which supports multiple ethertypes of a l3 protocol (IP, MPLS) this field specifies the protocol name as a string.

Patch Options:

These options apply only to patch ports, that is, interfaces whose type column is patch. Patch ports are mainly a way to connect otherwise independent bridges to one another, similar to how one might plug an Ethernet cable (a ``patch cable'') into two physical switches to connect those switches. The effect of plugging a patch port into two switches is conceptually similar to that of plugging the two ends of a Linux veth device into those switches, but the implementation of patch ports makes them much more efficient.

Patch ports may connect two different bridges (the usual case) or the same bridge. In the latter case, take special care to avoid loops, e.g. by programming appropriate flows with OpenFlow. Patch ports do not work if its ends are attached to bridges on different datapaths, e.g. to connect bridges in system and netdev datapaths.

The following command creates and connects patch ports p0 and p1 and adds them to bridges br0 and br1, respectively:

ovs-vsctl add-port br0 p0 -- set Interface p0 type=patch options:peer=p1 \ -- add-port br1 p1 -- set Interface p1 type=patch options:peer=p0

options : peer: optional string The name of the Interface for the other side of the patch. The named Interface's own peer option must specify this Interface's name. That is, the two patch interfaces must have reversed name and peer values.

PMD (Poll Mode Driver) Options:

Only PMD netdevs support these options.

options : n_rxq: optional string, containing an integer, at least 1 Specifies the maximum number of rx queues to be created for PMD netdev. If not specified or specified to 0, one rx queue will be created by default. Not supported by DPDK vHost interfaces.

options : dpdk-devargs: optional string Specifies the PCI address associated with the port for physical devices, or the virtual driver to be used for the port when a virtual PMD is intended to be used. For the latter, the argument string typically takes the form of eth_driver_namex, where driver_name is a valid virtual DPDK PMD driver name and x is a unique identifier of your choice for the given port. Only supported by the dpdk port type.

other_config : pmd-rxq-affinity: optional string Specifies mapping of RX queues of this interface to CPU cores.

Value should be set in the following form:

other_config:pmd-rxq-affinity=<rxq-affinity-list>

where

• <rxq-affinity-list> ::= NULL | <non-empty-list>

• <non-empty-list> ::= <affinity-pair> | <affinity- pair> , <non-empty-list>

• <affinity-pair> ::= <queue-id> : <core-id>

options : xdp-mode: optional string, one of best-effort, generic, native-with-zerocopy, or native Specifies the operational mode of the XDP program.

In native-with-zerocopy mode the XDP program is loaded into the device driver with zero-copy RX and TX enabled. This mode requires device driver support and has the best performance because there should be no copying of packets.

native is the same as native-with-zerocopy, but without zero-copy capability. This requires at least one copy between kernel and the userspace. This mode also requires support from device driver.

In generic case the XDP program in kernel works after skb allocation on early stages of packet processing inside the network stack. This mode doesn't require driver support, but has much lower performance.

best-effort tries to detect and choose the best (fastest) from the available modes for current interface.

Note that this option is specific to netdev-afxdp. Defaults to best-effort mode.

options : use-need-wakeup: optional string, either true or false Specifies whether to use need_wakeup feature in afxdp netdev. If enabled, OVS explicitly wakes up the kernel RX, using poll() syscall and wakes up TX, using sendto() syscall. For physical devices, this feature improves the performance by avoiding unnecessary sendto syscalls. Defaults to true if supported by libbpf.

options : vhost-server-path: optional string The value specifies the path to the socket associated with a vHost User client mode device that has been or will be created by QEMU. Only supported by dpdkvhostuserclient interfaces.

options : tx-retries-max: optional string, containing an integer, in range 0 to 32 The value specifies the maximum amount of vhost tx retries that can be made while trying to send a batch of packets to an interface. Only supported by dpdkvhostuserclient interfaces.

Default value is 8.

options : n_rxq_desc: optional string, containing an integer, in range 1 to 4,096 Specifies the rx queue size (number rx descriptors) for dpdk ports. The value must be a power of 2, less than 4096 and supported by the hardware of the device being configured. If not specified or an incorrect value is specified, 2048 rx descriptors will be used by default.

options : n_txq_desc: optional string, containing an integer, in range 1 to 4,096 Specifies the tx queue size (number tx descriptors) for dpdk ports. The value must be a power of 2, less than 4096 and supported by the hardware of the device being configured. If not specified or an incorrect value is specified, 2048 tx descriptors will be used by default.

options : dpdk-vf-mac: optional string Ethernet address to set for this VF interface. If unset then the default MAC address is used:

• For most drivers, the default MAC address assigned by their hardware.

• For bifurcated drivers, the MAC currently used by the kernel netdevice.

This option may only be used with dpdk VF representors.

EMC (Exact Match Cache) Configuration:

These settings controls behaviour of EMC lookups/insertions for packets received from the interface.

other_config : emc-enable: optional string, either true or false Specifies if Exact Match Cache (EMC) should be used while processing packets received from this interface. If true, other_config:emc-insert-inv-prob will have effect on this interface.

Defaults to true.

MTU:

The MTU (maximum transmission unit) is the largest amount of data that can fit into a single Ethernet frame. The standard Ethernet MTU is 1500 bytes. Some physical media and many kinds of virtual interfaces can be configured with higher MTUs.

A client may change an interface MTU by filling in mtu_request. Open vSwitch then reports in mtu the currently configured value.

mtu: optional integer The currently configured MTU for the interface.

This column will be empty for an interface that does not have an MTU as, for example, some kinds of tunnels do not.

Open vSwitch sets this column's value, so other clients should treat it as read-only.

mtu_request: optional integer, at least 1 Requested MTU (Maximum Transmission Unit) for the interface. A client can fill this column to change the MTU of an interface.

RFC 791 requires every internet module to be able to forward a datagram of 68 octets without further fragmentation. The maximum size of an IP packet is 65535 bytes.

If this is not set and if the interface has internal type, Open vSwitch will change the MTU to match the minimum of the other interfaces in the bridge.

Interface Status:

Status information about interfaces attached to bridges, updated every 5 seconds. Not all interfaces have all of these properties; virtual interfaces don't have a link speed, for example. Non- applicable columns will have empty values.

admin_state: optional string, either down or up The administrative state of the physical network link.

link_state: optional string, either down or up The observed state of the physical network link. This is ordinarily the link's carrier status. If the interface's Port is a bond configured for miimon monitoring, it is instead the network link's miimon status.

link_resets: optional integer The number of times Open vSwitch has observed the link_state of this Interface change.

link_speed: optional integer The negotiated speed of the physical network link. Valid values are positive integers greater than 0.

duplex: optional string, either full or half The duplex mode of the physical network link.

lacp_current: optional boolean Boolean value indicating LACP status for this interface. If true, this interface has current LACP information about its LACP partner. This information may be used to monitor the health of interfaces in a LACP enabled port. This column will be empty if LACP is not enabled.

status: map of string-string pairs Key-value pairs that report port status. Supported status values are type-dependent; some interfaces may not have a valid status:driver_name, for example.

status : driver_name: optional string The name of the device driver controlling the network adapter.

status : driver_version: optional string The version string of the device driver controlling the network adapter.

status : firmware_version: optional string The version string of the network adapter's firmware, if available.

status : source_ip: optional string The source IP address used for an IPv4/IPv6 tunnel end- point, such as gre.

status : tunnel_egress_iface: optional string Egress interface for tunnels. Currently only relevant for tunnels on Linux systems, this column will show the name of the interface which is responsible for routing traffic destined for the configured options:remote_ip. This could be an internal interface such as a bridge port.

status : tunnel_egress_iface_carrier: optional string, either down or up Whether carrier is detected on status:tunnel_egress_iface.

dpdk:

DPDK specific interface status options.

status : port_no: optional string DPDK port ID.

status : numa_id: optional string NUMA socket ID to which an Ethernet device is connected.

status : min_rx_bufsize: optional string Minimum size of RX buffer.

status : max_rx_pktlen: optional string Maximum configurable length of RX pkt.

status : max_rx_queues: optional string Maximum number of RX queues.

status : max_tx_queues: optional string Maximum number of TX queues.

status : max_mac_addrs: optional string Maximum number of MAC addresses.

status : max_hash_mac_addrs: optional string Maximum number of hash MAC addresses for MTA and UTA.

status : max_vfs: optional string Maximum number of hash MAC addresses for MTA and UTA. Maximum number of VFs.

status : max_vmdq_pools: optional string Maximum number of VMDq pools.

status : if_type: optional string Interface type ID according to IANA ifTYPE MIB definitions.

status : if_descr: optional string Interface description string.

status : pci-vendor_id: optional string Vendor ID of PCI device.

status : pci-device_id: optional string Device ID of PCI device.

Statistics:

Key-value pairs that report interface statistics. The current implementation updates these counters periodically. The update period is controlled by other_config:stats-update-interval in the Open_vSwitch table. Future implementations may update them when an interface is created, when they are queried (e.g. using an OVSDB select operation), and just before an interface is deleted due to virtual interface hot-unplug or VM shutdown, and perhaps at other times, but not on any regular periodic basis.

These are the same statistics reported by OpenFlow in its struct ofp_port_stats structure. If an interface does not support a given statistic, then that pair is omitted.

Statistics: Successful transmit and receive counters:

statistics : rx_packets: optional integer Number of received packets.

statistics : rx_bytes: optional integer Number of received bytes.

statistics : tx_packets: optional integer Number of transmitted packets.

statistics : tx_bytes: optional integer Number of transmitted bytes.

Statistics: Receive errors:

statistics : rx_dropped: optional integer Number of packets dropped by RX.

statistics : rx_frame_err: optional integer Number of frame alignment errors.

statistics : rx_over_err: optional integer Number of packets with RX overrun.

statistics : rx_crc_err: optional integer Number of CRC errors.

statistics : rx_errors: optional integer Total number of receive errors, greater than or equal to the sum of the above.

Statistics: Transmit errors:

statistics : tx_dropped: optional integer Number of packets dropped by TX.

statistics : collisions: optional integer Number of collisions.

statistics : tx_errors: optional integer Total number of transmit errors, greater than or equal to the sum of the above.

Ingress Policing:

These settings control ingress policing for packets received on this interface. On a physical interface, this limits the rate at which traffic is allowed into the system from the outside; on a virtual interface (one connected to a virtual machine), this limits the rate at which the VM is able to transmit.

Policing is a simple form of quality-of-service that simply drops packets received in excess of the configured rate. Due to its simplicity, policing is usually less accurate and less effective than egress QoS (which is configured using the QoS and Queue tables).

Policing settings can be set with byte rate or packet rate, and they can be configured together, in which case they take effect together, that means the smaller speed limit of them is in effect.

Currently, byte rate policing is implemented on Linux and OVS with DPDK, while packet rate policing is only implemented on Linux. Both Linux and OVS DPDK implementations use a simple ``token bucket'' approach.

Byte rate policing:

• The size of the bucket corresponds to ingress_policing_burst. Initially the bucket is full.

• Whenever a packet is received, its size (converted to tokens) is compared to the number of tokens currently in the bucket. If the required number of tokens are available, they are removed and the packet is forwarded. Otherwise, the packet is dropped.

• Whenever it is not full, the bucket is refilled with tokens at the rate specified by ingress_policing_rate.

Packet rate policing:

• The size of the bucket corresponds to ingress_policing_kpkts_burst. Initially the bucket is full.

• Whenever a packet is received, it will consume one token from the current bucket. If the token is available in the bucket, it's removed and the packet is forwarded. Otherwise, the packet is dropped.

• Whenever it is not full, the bucket is refilled with tokens at the rate specified by ingress_policing_kpkts_rate.

Policing interacts badly with some network protocols, and especially with fragmented IP packets. Suppose that there is enough network activity to keep the bucket nearly empty all the time. Then this token bucket algorithm will forward a single packet every so often, with the period depending on packet size and on the configured rate. All of the fragments of an IP packets are normally transmitted back-to-back, as a group. In such a situation, therefore, only one of these fragments will be forwarded and the rest will be dropped. IP does not provide any way for the intended recipient to ask for only the remaining fragments. In such a case there are two likely possibilities for what will happen next: either all of the fragments will eventually be retransmitted (as TCP will do), in which case the same problem will recur, or the sender will not realize that its packet has been dropped and data will simply be lost (as some UDP-based protocols will do). Either way, it is possible that no forward progress will ever occur.

ingress_policing_rate: integer, at least 0 Maximum rate for data received on this interface, in kbps. Data received faster than this rate is dropped. Set to 0 (the default) to disable policing.

ingress_policing_kpkts_rate: integer, at least 0 Maximum rate for data received on this interface, in kpps (1 kpps is 1000 pps). Data received faster than this rate is dropped. Set to 0 (the default) to disable policing.

ingress_policing_burst: integer, at least 0 Maximum burst size for data received on this interface, in kb. The default burst size if set to 0 is 8000 kbit. This value has no effect if ingress_policing_rate is 0.

Specifying a larger burst size lets the algorithm be more forgiving, which is important for protocols like TCP that react severely to dropped packets. The burst size should be at least the size of the interface's MTU. Specifying a value that is numerically at least as large as 80% of ingress_policing_rate helps TCP come closer to achieving the full rate.

ingress_policing_kpkts_burst: integer, at least 0 Maximum burst size for data received on this interface, in kpkts (1 kpkts is 1000 packets). The default burst size if set to 0 is 16 kpkts. This value has no effect if ingress_policing_kpkts_rate is 0.

Specifying a larger burst size lets the algorithm be more forgiving, which is important for protocols like TCP that react severely to dropped packets. Specifying a value that is numerically at least as large as 80% of ingress_policing_kpkts_rate helps TCP come closer to achieving the full rate.

Bidirectional Forwarding Detection (BFD):

BFD, defined in RFC 5880 and RFC 5881, allows point-to-point detection of connectivity failures by occasional transmission of BFD control messages. Open vSwitch implements BFD to serve as a more popular and standards compliant alternative to CFM.

BFD operates by regularly transmitting BFD control messages at a rate negotiated independently in each direction. Each endpoint specifies the rate at which it expects to receive control messages, and the rate at which it is willing to transmit them. By default, Open vSwitch uses a detection multiplier of three, meaning that an endpoint signals a connectivity fault if three consecutive BFD control messages fail to arrive. In the case of a unidirectional connectivity issue, the system not receiving BFD control messages signals the problem to its peer in the messages it transmits.

The Open vSwitch implementation of BFD aims to comply faithfully with RFC 5880 requirements. Open vSwitch does not implement the optional Authentication or ``Echo Mode'' features.

OVS 2.13 and earlier intercepted and processed all BFD packets. OVS 2.14 and later only intercept and process BFD packets destined to a configured BFD instance, and other BFD packets are made available to the OVS flow table for forwarding.

BFD Configuration:

A controller sets up key-value pairs in the bfd column to enable and configure BFD.

bfd : enable: optional string, either true or false True to enable BFD on this Interface. If not specified, BFD will not be enabled by default.

bfd : min_rx: optional string, containing an integer, at least 1 The shortest interval, in milliseconds, at which this BFD session offers to receive BFD control messages. The remote endpoint may choose to send messages at a slower rate. Defaults to 1000.

bfd : min_tx: optional string, containing an integer, at least 1 The shortest interval, in milliseconds, at which this BFD session is willing to transmit BFD control messages. Messages will actually be transmitted at a slower rate if the remote endpoint is not willing to receive as quickly as specified. Defaults to 100.

bfd : decay_min_rx: optional string, containing an integer An alternate receive interval, in milliseconds, that must be greater than or equal to bfd:min_rx. The implementation switches from bfd:min_rx to bfd:decay_min_rx when there is no obvious incoming data traffic at the interface, to reduce the CPU and bandwidth cost of monitoring an idle interface. This feature may be disabled by setting a value of 0. This feature is reset whenever bfd:decay_min_rx or bfd:min_rx changes.

bfd : forwarding_if_rx: optional string, either true or false When true, traffic received on the Interface is used to indicate the capability of packet I/O. BFD control packets are still transmitted and received. At least one BFD control packet must be received every 100 * bfd:min_rx amount of time. Otherwise, even if traffic are received, the bfd:forwarding will be false.

bfd : cpath_down: optional string, either true or false Set to true to notify the remote endpoint that traffic should not be forwarded to this system for some reason other than a connectivty failure on the interface being monitored. The typical underlying reason is ``concatenated path down,'' that is, that connectivity beyond the local system is down. Defaults to false.

bfd : check_tnl_key: optional string, either true or false Set to true to make BFD accept only control messages with a tunnel key of zero. By default, BFD accepts control messages with any tunnel key.

bfd : bfd_local_src_mac: optional string Set to an Ethernet address in the form xx:xx:xx:xx:xx:xx to set the MAC used as source for transmitted BFD packets. The default is the mac address of the BFD enabled interface.

bfd : bfd_local_dst_mac: optional string Set to an Ethernet address in the form xx:xx:xx:xx:xx:xx to set the MAC used as destination for transmitted BFD packets. The default is 00:23:20:00:00:01.

bfd : bfd_remote_dst_mac: optional string Set to an Ethernet address in the form xx:xx:xx:xx:xx:xx to set the MAC used for checking the destination of received BFD packets. Packets with different destination MAC will not be considered as BFD packets. If not specified the destination MAC address of received BFD packets are not checked.

bfd : bfd_src_ip: optional string Set to an IPv4 address to set the IP address used as source for transmitted BFD packets. The default is 169.254.1.1.

bfd : bfd_dst_ip: optional string Set to an IPv4 address to set the IP address used as destination for transmitted BFD packets. The default is 169.254.1.0.

bfd : oam: optional string Some tunnel protocols (such as Geneve) include a bit in the header to indicate that the encapsulated packet is an OAM frame. By setting this to true, BFD packets will be marked as OAM if encapsulated in one of these tunnels.

bfd : mult: optional string, containing an integer, in range 1 to 255 The BFD detection multiplier, which defaults to 3. An endpoint signals a connectivity fault if the given number of consecutive BFD control messages fail to arrive.

BFD Status:

The switch sets key-value pairs in the bfd_status column to report the status of BFD on this interface. When BFD is not enabled, with bfd:enable, the switch clears all key-value pairs from bfd_status.

bfd_status : state: optional string, one of admin_down, down, init, or up Reports the state of the BFD session. The BFD session is fully healthy and negotiated if UP.

bfd_status : forwarding: optional string, either true or false Reports whether the BFD session believes this Interface may be used to forward traffic. Typically this means the local session is signaling UP, and the remote system isn't signaling a problem such as concatenated path down.

bfd_status : diagnostic: optional string A diagnostic code specifying the local system's reason for the last change in session state. The error messages are defined in section 4.1 of [RFC 5880].

bfd_status : remote_state: optional string, one of admin_down, down, init, or up Reports the state of the remote endpoint's BFD session.

bfd_status : remote_diagnostic: optional string A diagnostic code specifying the remote system's reason for the last change in session state. The error messages are defined in section 4.1 of [RFC 5880].

bfd_status : flap_count: optional string, containing an integer, at least 0 Counts the number of bfd_status:forwarding flaps since start. A flap is considered as a change of the bfd_status:forwarding value.

Connectivity Fault Management:

802.1ag Connectivity Fault Management (CFM) allows a group of Maintenance Points (MPs) called a Maintenance Association (MA) to detect connectivity problems with each other. MPs within a MA should have complete and exclusive interconnectivity. This is verified by occasionally broadcasting Continuity Check Messages (CCMs) at a configurable transmission interval.

According to the 802.1ag specification, each Maintenance Point should be configured out-of-band with a list of Remote Maintenance Points it should have connectivity to. Open vSwitch differs from the specification in this area. It simply assumes the link is faulted if no Remote Maintenance Points are reachable, and considers it not faulted otherwise.

When operating over tunnels which have no in_key, or an in_key of flow. CFM will only accept CCMs with a tunnel key of zero.

cfm_mpid: optional integer A Maintenance Point ID (MPID) uniquely identifies each endpoint within a Maintenance Association. The MPID is used to identify this endpoint to other Maintenance Points in the MA. Each end of a link being monitored should have a different MPID. Must be configured to enable CFM on this Interface.

According to the 802.1ag specification, MPIDs can only range between [1, 8191]. However, extended mode (see other_config:cfm_extended) supports eight byte MPIDs.

cfm_flap_count: optional integer Counts the number of cfm fault flapps since boot. A flap is considered to be a change of the cfm_fault value.

cfm_fault: optional boolean Indicates a connectivity fault triggered by an inability to receive heartbeats from any remote endpoint. When a fault is triggered on Interfaces participating in bonds, they will be disabled.

Faults can be triggered for several reasons. Most importantly they are triggered when no CCMs are received for a period of 3.5 times the transmission interval. Faults are also triggered when any CCMs indicate that a Remote Maintenance Point is not receiving CCMs but able to send them. Finally, a fault is triggered if a CCM is received which indicates unexpected configuration. Notably, this case arises when a CCM is received which advertises the local MPID.

cfm_fault_status : recv: none Indicates a CFM fault was triggered due to a lack of CCMs received on the Interface.

cfm_fault_status : rdi: none Indicates a CFM fault was triggered due to the reception of a CCM with the RDI bit flagged. Endpoints set the RDI bit in their CCMs when they are not receiving CCMs themselves. This typically indicates a unidirectional connectivity failure.

cfm_fault_status : maid: none Indicates a CFM fault was triggered due to the reception of a CCM with a MAID other than the one Open vSwitch uses. CFM broadcasts are tagged with an identification number in addition to the MPID called the MAID. Open vSwitch only supports receiving CCM broadcasts tagged with the MAID it uses internally.

cfm_fault_status : loopback: none Indicates a CFM fault was triggered due to the reception of a CCM advertising the same MPID configured in the cfm_mpid column of this Interface. This may indicate a loop in the network.

cfm_fault_status : overflow: none Indicates a CFM fault was triggered because the CFM module received CCMs from more remote endpoints than it can keep track of.

cfm_fault_status : override: none Indicates a CFM fault was manually triggered by an administrator using an ovs-appctl command.

cfm_fault_status : interval: none Indicates a CFM fault was triggered due to the reception of a CCM frame having an invalid interval.

cfm_remote_opstate: optional string, either down or up When in extended mode, indicates the operational state of the remote endpoint as either up or down. See other_config:cfm_opstate.

cfm_health: optional integer, in range 0 to 100 Indicates the health of the interface as a percentage of CCM frames received over 21 other_config:cfm_intervals. The health of an interface is undefined if it is communicating with more than one cfm_remote_mpids. It reduces if healthy heartbeats are not received at the expected rate, and gradually improves as healthy heartbeats are received at the desired rate. Every 21 other_config:cfm_intervals, the health of the interface is refreshed.

As mentioned above, the faults can be triggered for several reasons. The link health will deteriorate even if heartbeats are received but they are reported to be unhealthy. An unhealthy heartbeat in this context is a heartbeat for which either some fault is set or is out of sequence. The interface health can be 100 only on receiving healthy heartbeats at the desired rate.

cfm_remote_mpids: set of integers When CFM is properly configured, Open vSwitch will occasionally receive CCM broadcasts. These broadcasts contain the MPID of the sending Maintenance Point. The list of MPIDs from which this Interface is receiving broadcasts from is regularly collected and written to this column.

other_config : cfm_interval: optional string, containing an integer The interval, in milliseconds, between transmissions of CFM heartbeats. Three missed heartbeat receptions indicate a connectivity fault.

In standard operation only intervals of 3, 10, 100, 1,000, 10,000, 60,000, or 600,000 ms are supported. Other values will be rounded down to the nearest value on the list. Extended mode (see other_config:cfm_extended) supports any interval up to 65,535 ms. In either mode, the default is 1000 ms.

We do not recommend using intervals less than 100 ms.

other_config : cfm_extended: optional string, either true or false When true, the CFM module operates in extended mode. This causes it to use a nonstandard destination address to avoid conflicting with compliant implementations which may be running concurrently on the network. Furthermore, extended mode increases the accuracy of the cfm_interval configuration parameter by breaking wire compatibility with 802.1ag compliant implementations. And extended mode allows eight byte MPIDs. Defaults to false.

other_config : cfm_demand: optional string, either true or false When true, and other_config:cfm_extended is true, the CFM module operates in demand mode. When in demand mode, traffic received on the Interface is used to indicate liveness. CCMs are still transmitted and received. At least one CCM must be received every 100 * other_config:cfm_interval amount of time. Otherwise, even if traffic are received, the CFM module will raise the connectivity fault.

Demand mode has a couple of caveats:

• To ensure that ovs-vswitchd has enough time to pull statistics from the datapath, the fault detection interval is set to 3.5 * MAX(other_config:cfm_interval, 500) ms.

• To avoid ambiguity, demand mode disables itself when there are multiple remote maintenance points.

• If the Interface is heavily congested, CCMs containing the other_config:cfm_opstate status may be dropped causing changes in the operational state to be delayed. Similarly, if CCMs containing the RDI bit are not received, unidirectional link failures may not be detected.

other_config : cfm_opstate: optional string, either down or up When down, the CFM module marks all CCMs it generates as operationally down without triggering a fault. This allows remote maintenance points to choose not to forward traffic to the Interface on which this CFM module is running. Currently, in Open vSwitch, the opdown bit of CCMs affects Interfaces participating in bonds, and the bundle OpenFlow action. This setting is ignored when CFM is not in extended mode. Defaults to up.

other_config : cfm_ccm_vlan: optional string, containing an integer, in range 1 to 4,095 When set, the CFM module will apply a VLAN tag to all CCMs it generates with the given value. May be the string random in which case each CCM will be tagged with a different randomly generated VLAN.

other_config : cfm_ccm_pcp: optional string, containing an integer, in range 1 to 7 When set, the CFM module will apply a VLAN tag to all CCMs it generates with the given PCP value, the VLAN ID of the tag is governed by the value of other_config:cfm_ccm_vlan. If other_config:cfm_ccm_vlan is unset, a VLAN ID of zero is used.

Bonding Configuration:

other_config : lacp-port-id: optional string, containing an integer, in range 1 to 65,535 The LACP port ID of this Interface. Port IDs are used in LACP negotiations to identify individual ports participating in a bond.

other_config : lacp-port-priority: optional string, containing an integer, in range 1 to 65,535 The LACP port priority of this Interface. In LACP negotiations Interfaces with numerically lower priorities are preferred for aggregation.

other_config : lacp-aggregation-key: optional string, containing an integer, in range 1 to 65,535 The LACP aggregation key of this Interface. Interfaces with different aggregation keys may not be active within a given Port at the same time.

Virtual Machine Identifiers:

These key-value pairs specifically apply to an interface that represents a virtual Ethernet interface connected to a virtual machine. These key-value pairs should not be present for other types of interfaces. Keys whose names end in -uuid have values that uniquely identify the entity in question. For a Citrix XenServer hypervisor, these values are UUIDs in RFC 4122 format. Other hypervisors may use other formats.

external_ids : attached-mac: optional string The MAC address programmed into the ``virtual hardware'' for this interface, in the form xx:xx:xx:xx:xx:xx. For Citrix XenServer, this is the value of the MAC field in the VIF record for this interface.

external_ids : iface-id: optional string A system-unique identifier for the interface. On XenServer, this will commonly be the same as external_ids:xs-vif-uuid.

external_ids : iface-status: optional string, either active or inactive Hypervisors may sometimes have more than one interface associated with a given external_ids:iface-id, only one of which is actually in use at a given time. For example, in some circumstances XenServer has both a ``tap'' and a ``vif'' interface for a single external_ids:iface-id, but only uses one of them at a time. A hypervisor that behaves this way must mark the currently in use interface active and the others inactive. A hypervisor that never has more than one interface for a given external_ids:iface-id may mark that interface active or omit external_ids:iface- status entirely.

During VM migration, a given external_ids:iface-id might transiently be marked active on two different hypervisors. That is, active means that this external_ids:iface-id is the active instance within a single hypervisor, not in a broader scope. There is one exception: some hypervisors support ``migration'' from a given hypervisor to itself (most often for test purposes). During such a ``migration,'' two instances of a single external_ids:iface-id might both be briefly marked active on a single hypervisor.

external_ids : xs-vif-uuid: optional string The virtual interface associated with this interface.

external_ids : xs-network-uuid: optional string The virtual network to which this interface is attached.

external_ids : vm-id: optional string The VM to which this interface belongs. On XenServer, this will be the same as external_ids:xs-vm-uuid.

external_ids : xs-vm-uuid: optional string The VM to which this interface belongs.

Auto Attach Configuration:

Auto Attach configuration for a particular interface.

lldp : enable: optional string, either true or false True to enable LLDP on this Interface. If not specified, LLDP will be disabled by default.

Flow control Configuration:

Ethernet flow control defined in IEEE 802.1Qbb provides link level flow control using MAC pause frames. Implemented only for interfaces with type dpdk.

options : rx-flow-ctrl: optional string, either true or false Set to true to enable Rx flow control on physical ports. By default, Rx flow control is disabled.

options : tx-flow-ctrl: optional string, either true or false Set to true to enable Tx flow control on physical ports. By default, Tx flow control is disabled.

options : flow-ctrl-autoneg: optional string, either true or false Set to true to enable flow control auto negotiation on physical ports. By default, auto-neg is disabled.

Link State Change detection mode:

options : dpdk-lsc-interrupt: optional string, either true or false Set this value to true to configure interrupt mode for Link State Change (LSC) detection instead of poll mode for the DPDK interface.

If this value is not set, poll mode is configured.

This parameter has an effect only on netdev dpdk interfaces.

Common Columns:

The overall purpose of these columns is described under Common Columns at the beginning of this document.

other_config: map of string-string pairs

external_ids: map of string-string pairs