mirroring: Use more generic terms for mirroring.
[sliver-openvswitch.git] / vswitchd / vswitch.xml
index 56d4a1c..55880b8 100644 (file)
       </column>
     </group>
 
+    <group title="Spanning Tree Configuration">
+      The IEEE 802.1D Spanning Tree Protocol (STP) is a network protocol
+      that ensures loop-free topologies.  It allows redundant links to
+      be included in the network to provide automatic backup paths if
+      the active links fails.
+
+      <column name="stp_enable">
+        Enable spanning tree on the bridge.  By default, STP is disabled
+        on bridges.  Bond, internal, and mirror ports are not supported
+        and will not participate in the spanning tree.
+      </column>
+      <column name="other_config" key="stp-system-id">
+        The bridge's STP identifier (the lower 48 bits of the bridge-id)
+        in the form
+        <var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>.
+        By default, the identifier is the MAC address of the bridge.
+      </column>
+
+      <column name="other_config" key="stp-priority"
+              type='{"type": "integer", "minInteger": 0, "maxInteger": 65535}'>
+        The bridge's relative priority value for determining the root
+        bridge (the upper 16 bits of the bridge-id).  A bridge with the
+        lowest bridge-id is elected the root.  By default, the priority
+        is 0x8000.
+      </column>
+
+      <column name="other_config" key="stp-hello-time"
+              type='{"type": "integer", "minInteger": 1, "maxInteger": 10}'>
+        The interval between transmissions of hello messages by
+        designated ports, in seconds.  By default the hello interval is
+        2 seconds.
+      </column>
+
+      <column name="other_config" key="stp-max-age"
+              type='{"type": "integer", "minInteger": 6, "maxInteger": 40}'>
+        The maximum age of the information transmitted by the bridge
+        when it is the root bridge, in seconds.  By default, the maximum
+        age is 20 seconds.
+      </column>
+
+      <column name="other_config" key="stp-forward-delay"
+              type='{"type": "integer", "minInteger": 4, "maxInteger": 30}'>
+        The delay to wait between transitioning root and designated
+        ports to <code>forwarding</code>, in seconds.  By default, the
+        forwarding delay is 15 seconds.
+      </column>
+    </group>
+
     <group title="Other Features">
       <column name="datapath_type">
         Name of datapath provider.  The kernel datapath has
 
       <column name="other_config" key="forward-bpdu"
               type='{"type": "boolean"}'>
-        Option to allow forwarding of BPDU frames when NORMAL action if
-        invoked. Frames with reserved Ethernet addresses (e.g. STP BPDU) will
-        be forwarded when this option is enabled.  If the Open vSwitch bridge
-        is used to connect different Ethernet networks, and if Open vSwitch
-        node does not run STP, then this option should be enabled.  Default is
-        disabled, set to <code>true</code> to enable.
+        Option to allow forwarding of BPDU frames when NORMAL action is
+        invoked.  Frames with reserved Ethernet addresses (e.g. STP
+        BPDU) will be forwarded when this option is enabled and the
+        switch is not providing that functionality.  If STP is enabled
+        on the port, STP BPDUs will never be forwarded.  If the Open
+        vSwitch bridge is used to connect different Ethernet networks,
+        and if Open vSwitch node does not run STP, then this option
+        should be enabled.  Default is disabled, set to
+        <code>true</code> to enable.
+      </column>
+    </group>
+
+    <group title="Bridge Status">
+      <p>
+        Status information about bridges.
+      </p>
+      <column name="status">
+        Key-value pairs that report bridge status.
+      </column>
+      <column name="status" key="stp_bridge_id">
+        <p>
+          The bridge-id (in hex) used in spanning tree advertisements.
+          Configuring the bridge-id is described in the
+          <code>stp-system-id</code> and <code>stp-priority</code> keys
+          of the <code>other_config</code> section earlier.
+        </p>
+      </column>
+      <column name="status" key="stp_designated_root">
+        <p>
+          The designated root (in hex) for this spanning tree.
+        </p>
+      </column>
+      <column name="status" key="stp_root_path_cost">
+        <p>
+          The path cost of reaching the designated bridge.  A lower
+          number is better.
+        </p>
       </column>
     </group>
 
             VLAN).  A packet that ingresses on a trunk port is in the VLAN
             specified in its 802.1Q header, or VLAN 0 if the packet has no
             802.1Q header.  A packet that egresses through a trunk port will
-            have a 802.1Q header if it has a nonzero VLAN ID (or a nonzero
-            802.1Q priority).
+            have an 802.1Q header if it has a nonzero VLAN ID.
           </p>
 
           <p>
         <dd>
           <p>
             An access port carries packets on exactly one VLAN specified in the
-            <ref column="tag"/> column.  Packets ingressing and egressing on an
-            access port have no 802.1Q header.
+            <ref column="tag"/> column.  Packets egressing on an access port
+            have no 802.1Q header.
           </p>
 
           <p>
-            Any packet with an 802.1Q header that ingresses on an access port
-            is dropped, regardless of whether the VLAN ID in the header is the
-            access port's VLAN ID.
+            Any packet with an 802.1Q header with a nonzero VLAN ID that
+            ingresses on an access port is dropped, regardless of whether the
+            VLAN ID in the header is the access port's VLAN ID.
           </p>
         </dd>
 
         <dd>
           A native-untagged port resembles a native-tagged port, with the
           exception that a packet that egresses on a native-untagged port in
-          the native VLAN not have an 802.1Q header.
+          the native VLAN will not have an 802.1Q header.
         </dd>
       </dl>
       <p>
           VLAN.
         </p>
       </column>
+
+      <column name="other_config" key="priority-tags"
+              type='{"type": "boolean"}'>
+        <p>
+          An 802.1Q header contains two important pieces of information: a VLAN
+          ID and a priority.  A frame with a zero VLAN ID, called a
+          ``priority-tagged'' frame, is supposed to be treated the same way as
+          a frame without an 802.1Q header at all (except for the priority).
+        </p>
+
+        <p>
+          However, some network elements ignore any frame that has 802.1Q
+          header at all, even when the VLAN ID is zero.  Therefore, by default
+          Open vSwitch does not output priority-tagged frames, instead omitting
+          the 802.1Q header entirely if the VLAN ID is zero.  Set this key to
+          <code>true</code> to enable priority-tagged frames on a port.
+        </p>
+
+        <p>
+          Regardless of this setting, Open vSwitch omits the 802.1Q header on
+          output if both the VLAN ID and priority would be zero.
+        </p>
+
+        <p>
+          All frames output to native-tagged ports have a nonzero VLAN ID, so
+          this setting is not meaningful on native-tagged ports.
+        </p>
+      </column>
     </group>
 
     <group title="Bonding Configuration">
       </column>
     </group>
 
+    <group title="Spanning Tree Configuration">
+      <column name="other_config" key="stp-enable"
+              type='{"type": "boolean"}'>
+        If spanning tree is enabled on the bridge, member ports are
+        enabled by default (with the exception of bond, internal, and
+        mirror ports which do not work with STP).  If this column's
+        value is <code>false</code> spanning tree is disabled on the
+        port.
+      </column>
+
+       <column name="other_config" key="stp-port-num"
+               type='{"type": "integer", "minInteger": 1, "maxInteger": 255}'>
+        The port number used for the lower 8 bits of the port-id.  By
+        default, the numbers will be assigned automatically.  If any
+        port's number is manually configured on a bridge, then they
+        must all be.
+      </column>
+
+       <column name="other_config" key="stp-port-priority"
+               type='{"type": "integer", "minInteger": 0, "maxInteger": 255}'>
+        The port's relative priority value for determining the root
+        port (the upper 8 bits of the port-id).  A port with a lower
+        port-id will be chosen as the root port.  By default, the
+        priority is 0x80.
+      </column>
+
+       <column name="other_config" key="stp-path-cost"
+               type='{"type": "integer", "minInteger": 0, "maxInteger": 65535}'>
+        Spanning tree path cost for the port.  A lower number indicates
+        a faster link.  By default, the cost is based on the maximum
+        speed of the link.
+      </column>
+    </group>
+
     <group title="Other Features">
       <column name="qos">
         Quality of Service configuration for this port.
       </column>
     </group>
 
+    <group title="Port Status">
+      <p>
+        Status information about ports attached to bridges.
+      </p>
+      <column name="status">
+        Key-value pairs that report port status.
+      </column>
+      <column name="status" key="stp_port_id">
+        <p>
+          The port-id (in hex) used in spanning tree advertisements for
+          this port.  Configuring the port-id is described in the
+          <code>stp-port-num</code> and <code>stp-port-priority</code>
+          keys of the <code>other_config</code> section earlier.
+        </p>
+      </column>
+      <column name="status" key="stp_state"
+              type='{"type": "string", "enum": ["set",
+                            ["disabled", "listening", "learning",
+                             "forwarding", "blocking"]]}'>
+        <p>
+          STP state of the port.
+        </p>
+      </column>
+      <column name="status" key="stp_sec_in_state"
+              type='{"type": "integer", "minInteger": 0}'>
+        <p>
+          The amount of time (in seconds) port has been in the current
+          STP state.
+        </p>
+      </column>
+      <column name="status" key="stp_role"
+              type='{"type": "string", "enum": ["set",
+                            ["root", "designated", "alternate"]]}'>
+        <p>
+          STP role of the port.
+        </p>
+      </column>
+    </group>
+
+    <group title="Port Statistics">
+      <p>
+        Key-value pairs that report port statistics.
+      </p>
+      <group title="Statistics: STP transmit and receive counters">
+        <column name="statistics" key="stp_tx_count">
+          Number of STP BPDUs sent on this port by the spanning
+          tree library.
+        </column>
+        <column name="statistics" key="stp_rx_count">
+          Number of STP BPDUs received on this port and accepted by the
+          spanning tree library.
+        </column>
+        <column name="statistics" key="stp_error_count">
+          Number of bad STP BPDUs received on this port.  Bad BPDUs
+          include runt packets and those with an unexpected protocol ID.
+        </column>
+      </group>
+    </group>
+
     <group title="Common Columns">
       The overall purpose of these columns is described under <code>Common
       Columns</code> at the beginning of this document.
             not support GRE.  Only the tunneling component of the protocol is
             implemented.  UDP ports 58881 and 58882 are used as the source and
             destination ports respectively.  CAPWAP is currently supported only
-            with the Linux kernel datapath with kernel version 2.6.25 or later.
+            with the Linux kernel datapath with kernel version 2.6.26 or later.
           </dd>
 
           <dt><code>patch</code></dt>
       </p>
 
       <column name="options" key="remote_ip">
-        Required.  The tunnel endpoint.
+        <p>
+          Required.  The tunnel endpoint.  Unicast and multicast endpoints are
+          both supported.
+        </p>
+
+        <p>
+          When a multicast endpoint is specified, a routing table lookup occurs
+          only when the tunnel is created.  Following a routing change, delete
+          and then re-create the tunnel to force a new routing table lookup.
+        </p>
       </column>
 
       <column name="options" key="local_ip">
-        Optional.  The destination IP that received packets must
-        match.  Default is to match all addresses.
+        Optional.  The destination IP that received packets must match.
+        Default is to match all addresses.  Must be omitted when <ref
+        column="options" key="remote_ip"/> is a multicast address.
       </column>
 
       <column name="options" key="in_key">
         </p>
       </column>
 
+      <column name="link_resets">
+        <p>
+          The number of times Open vSwitch has observed the
+          <ref column="link_state"/> of this <ref table="Interface"/> change.
+        </p>
+      </column>
+
       <column name="link_speed">
         <p>
           The negotiated speed of the physical network link.
         compatibility with 802.1ag compliant implementations.  Defaults to
         <code>false</code>.
       </column>
-      <column name="other_config" key="cfm_opstate">
+      <column name="other_config" key="cfm_opstate"
+              type='{"type": "string", "enum": ["set", ["down", "up"]]}'>
         When <code>down</code>, 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
         OpenFlow action. This setting is ignored when CFM is not in extended
         mode.  Defaults to <code>up</code>.
       </column>
+
+      <column name="other_config" key="cfm_ccm_vlan"
+        type='{"type": "integer", "minInteger": 1, "maxInteger": 4095}'>
+        When set, the CFM module will apply a VLAN tag to all CCMs it generates
+        with the given value.
+      </column>
+
     </group>
 
     <group title="Bonding Configuration">
       </column>
     </group>
 
+    <group title="VLAN Splinters">
+      <p>
+       The ``VLAN splinters'' feature increases Open vSwitch compatibility
+       with buggy network drivers in old versions of Linux that do not
+       properly support VLANs when VLAN devices are not used, at some cost
+       in memory and performance.
+      </p>
+
+      <p>
+       When VLAN splinters are enabled on a particular interface, Open vSwitch
+       creates a VLAN device for each in-use VLAN.  For sending traffic tagged
+       with a VLAN on the interface, it substitutes the VLAN device.  Traffic
+       received on the VLAN device is treated as if it had been received on
+        the interface on the particular VLAN.
+      </p>
+
+      <p>
+        VLAN splinters consider a VLAN to be in use if:
+      </p>
+
+      <ul>
+        <li>
+          The VLAN is listed within the <ref table="Port" column="trunks"/>
+          column of the <ref table="Port"/> record of an interface on which
+          VLAN splinters are enabled.
+
+          An empty <ref table="Port" column="trunks"/> does not influence the
+          in-use VLANs: creating 4,096 VLAN devices is impractical because it
+          will exceed the current 1,024 port per datapath limit.
+        </li>
+
+        <li>
+          An OpenFlow flow within any bridge matches the VLAN.
+        </li>
+      </ul>
+
+      <p>
+        The same set of in-use VLANs applies to every interface on which VLAN
+        splinters are enabled.  That is, the set is not chosen separately for
+        each interface but selected once as the union of all in-use VLANs based
+        on the rules above.
+      </p>
+
+      <p>
+        It does not make sense to enable VLAN splinters on an interface for an
+        access port, or on an interface that is not a physical port.
+      </p>
+
+      <p>
+       VLAN splinters are deprecated.  When broken device drivers are no
+       longer in widespread use, we will delete this feature.
+      </p>
+
+      <column name="other_config" key="enable-vlan-splinters"
+              type='{"type": "boolean"}'>
+        <p>
+          Set to <code>true</code> to enable VLAN splinters on this interface.
+          Defaults to <code>false</code>.
+        </p>
+
+        <p>
+          VLAN splinters increase kernel and userspace memory overhead, so do
+          not use them unless they are needed.
+        </p>
+      </column>
+    </group>
+
     <group title="Common Columns">
       The overall purpose of these columns is described under <code>Common
       Columns</code> at the beginning of this document.
     Service (QoS) features.  May be referenced by <ref column="queues"
     table="QoS"/> column in <ref table="QoS"/> table.</p>
 
+    <column name="dscp">
+      If set, Open vSwitch will mark all traffic egressing this
+      <ref table="Queue"/> with the given DSCP bits.  Traffic egressing the
+      default <ref table="Queue"/> is only marked if it was explicitly selected
+      as the <ref table="Queue"/> at the time the packet was output.  If unset,
+      the DSCP bits of traffic egressing this <ref table="Queue"/> will remain
+      unchanged.
+    </column>
+
     <group title="Configuration for min-rate QoS">
       <p>
         These key-value pairs are defined for <ref table="QoS"/> <ref
     </group>
   </table>
 
-  <table name="Mirror" title="Port mirroring (SPAN/RSPAN/ERSPAN).">
+  <table name="Mirror" title="Port mirroring.">
     <p>A port mirror within a <ref table="Bridge"/>.</p>
     <p>A port mirror configures a bridge to send selected frames to special
     ``mirrored'' ports, in addition to their normal destinations.  Mirroring
-    traffic may also be referred to as SPAN, RSPAN, or ERSPAN, depending on how
+    traffic may also be referred to as SPAN or RSPAN, depending on how
     the mirrored traffic is sent.</p>
 
     <column name="name">
         <p>Output port for selected packets, if nonempty.</p>
         <p>Specifying a port for mirror output reserves that port exclusively
         for mirroring.  No frames other than those selected for mirroring
+        via this column
         will be forwarded to the port, and any frames received on the port
         will be discarded.</p>
         <p>
           The output port may be any kind of port supported by Open vSwitch.
-          It may be, for example, a physical port (sometimes called SPAN), or a
-          GRE tunnel (sometimes called ERSPAN).
+          It may be, for example, a physical port (sometimes called SPAN) or a
+          GRE tunnel.
         </p>
       </column>