vswitchd: Make the MAC entry aging time configurable.
[sliver-openvswitch.git] / vswitchd / vswitch.xml
index 7d2a72a..89d513f 100644 (file)
         should be enabled.  Default is disabled, set to
         <code>true</code> to enable.
       </column>
+
+      <column name="other_config" key="mac-aging-time"
+              type='{"type": "integer", "minInteger": 1}'>
+        <p>
+          The maximum number of seconds to retain a MAC learning entry for
+          which no packets have been seen.  The default is currently 300
+          seconds (5 minutes).  The value, if specified, is forced into a
+          reasonable range, currently 15 to 3600 seconds.
+        </p>
+
+        <p>
+          A short MAC aging time allows a network to more quickly detect that a
+          host is no longer connected to a switch port.  However, it also makes
+          it more likely that packets will be flooded unnecessarily, when they
+          are addressed to a connected host that rarely transmits packets.  To
+          reduce the incidence of unnecessary flooding, use a MAC aging time
+          longer than the maximum interval at which a host will ordinarily
+          transmit packets.
+        </p>
+      </column>
     </group>
 
     <group title="Bridge Status">
             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="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 the <ref table="Port" column="tag"/> value in any <ref
+          table="Port"/> record.
+        </li>
+
+        <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>
 
       </column>
     </group>
 
+    <group title="Statistics: Mirror counters">
+      <p>
+        Key-value pairs that report mirror statistics.
+      </p>
+      <column name="statistics" key="tx_packets">
+        Number of packets transmitted through this mirror.
+      </column>
+      <column name="statistics" key="tx_bytes">
+        Number of bytes transmitted through this mirror.
+      </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.