+1. Thanks for the detailed write up. (And, btw, -1 to the applications that assume QoS is always present, and -1 to the switch vendors that still haven't got tagged packet processing in their products. :-)
-- Garrett Sebastien Roy wrote: > 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. > > >