802.1Q tag mode link property

Release binding: Patch
Interface Stability: Committed
Related Case: PSARC 2006/358 VLAN Observability Enhancement

Summary
-------

  This case introduces a GLDv3 link property named "tagmode" to
  control the conditions in which the kernel inserts VLAN tags in
  outgoing packets.

Background
----------

  The comprehensive VLAN tagging changes made by PSARC 2006/358 also
  fixed a bug that prevented Solaris from inserting a user priority
  tag (VLAN tag with NULL VLAN ID bug non-zero priority) when the
  sender specifies a priority for an outgoing packet over a physical
  Ethernet link.  This bug was:

    6434130 i_dls_ether_header() doesn't generate VLAN header when
            priority is non-zero

  As a result of this bug fix, when an application requests a user
  priority (either by using the DL_UDQOS_REQ DLPI primitive, by
  setting the dl_priority field of a DL_UNITDATA_REQ message, or by
  setting b_band on an M_DATA message) when sending a packet on a
  physical Ethernet link, the kernel will insert a VLAN header with a
  NULL VLAN ID and a priority as specified by the user.

  This new behavior is in-line with the 802.1Q IEEE specification.
  Bridges receiving such packets should recognize these as
  user-priority tagged packets and process the priority setting
  accordingly.

  Unfortunately, experience with this fix has uncovered that a number
  of widely used bridges (switches) don't handle these special
  user-priority tagged packets and simply drop them.  This problem is
  documented in detail in the following CR:

    6797256 GLD interfaces unexpectedly send VLAN tagged packets

  This issue, in combination with the fact that some widely deployed
  applications unconditionally request priority processing on all of
  their outgoing packets, means that these applications no longer work
  at all over physical Ethernet links connected to these problematic
  switches.


Solution
--------

  This case introduces a link property (see dladm(1M)) named "tagmode"
  that controls the conditions in which the kernel will insert VLAN
  tags on packets being transmitted on the link.  Two mode values can
  be assigned to this property:

    normal      Insert a VLAN tag to outgoing packets as needed
                whenever requested.  This includes two cases:

                1. The packet belongs to a VLAN.
                2. The user requested priority tagging.

    vlanonly    Only insert a VLAN tag when the outgoing packet
                belongs to a VLAN.  If a tag is being inserted in this
                mode and the user has also requested a non-zero
                priority, the priority is honored and included in the
                VLAN tag.

  Only DL_ETHER links will support this property, and its default
  value will be "vlanonly".  Setting the property to "normal"
  demonstrates deliberate understanding that the feature is functional
  on the associated datalink.

Impact On IFF_COS_ENABLED Flag
------------------------------

  The IFF_COS_ENABLED flag documented as "Cos" in ifconfig(1M)
  reflects whether or not an interface supports a class of service
  marking (with 802.1D user priority marking being one example).  This
  flag is currently set on all GLDv3 datalinks regardless of their
  ability to honor user priorities.

  One consumer of this flag is the IPQos functionality, which can be
  configured to request per-packet user priorities over CoS-capable
  interfaces (see ipqos(7ipp) and ipqosconf(1M)).  It does this on IP
  interfaces that have the IFF_COS_ENABLED flag set.

  In order to accurately reflect the link's abilities to use
  priorities, this case changes the system such that the
  IFF_COS_ENABLED flag will only be set on VLAN links and on physical
  links that have their "tagmode" properties set to "normal".  This
  will ensure that IPQos and other consumers of the IFF_COS_ENABLED
  flag do not erroneously request priorities over links that don't
  support them or have been explicitly configured to not use them.

Change of System Default Behavior
---------------------------------

  The choice of "vlanonly" as the default value for the "tagmode" link
  property constitutes a change in behavior from how the system
  behaved after the fix to 6434130 was integrated.  As previously
  mentioned, the fix to 6434130 caused the system to always insert a
  user-priority tag when requested.  It will now only do so if the
  administrator explicitly changes the "tagmode" property to have the
  value "normal".

  The fix to 6434130 was included with s10u7, and prior to that, most
  drivers (including all GLDv2 and GLDv3 drivers) failed to insert
  user-priority tags.  Since 6434130 has no external customer records,
  one can thus assume that no-one noticed that this was broken, and so
  reverting the system default behavior back to its prior state will
  not be disruptive.

  The dladm(1M) man page will be updated to document the "tagmode"
  link property, and the "CoS" section of the ifconfig(1M) man page
  will be modified to describe how to enable "CoS" using the "tagmode"
  property.



Reply via email to