PSARC 2009/069 802.1Q tag mode link property

2009-02-11 Thread Rick Matthews
A nit question: Is there the means to determine a dropped packet occurred
due to the user priority tag, and automatically setting the tagmode to
vlanonly?
-- 

-
Rick Matthews   email: Rick.Matthews at sun.com
Sun Microsystems, Inc.  phone:+1(651) 554-1518
1270 Eagan Industrial Road  phone(internal): 54418
Suite 160   fax:  +1(651) 554-1540
Eagan, MN 55121-1231 USAmain: +1(651) 554-1500  
-




PSARC 2009/069 802.1Q tag mode link property

2009-02-11 Thread Sebastien Roy

On Wed, 2009-02-11 at 10:19 -0600, Rick Matthews wrote:
 A nit question: Is there the means to determine a dropped packet occurred
 due to the user priority tag, and automatically setting the tagmode to
 vlanonly?

Unfortunately no.  There is no way to know the reason why a down-stream
bridge has dropped a packet.

-Seb





PSARC 2009/069 802.1Q tag mode link property

2009-02-11 Thread Sebastien Roy
This case was approved during today's PSARC business.
-Seb





PSARC 2009/069 802.1Q tag mode link property

2009-02-06 Thread Sebastien Roy
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.

vlanonlyOnly 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 

PSARC 2009/069 802.1Q tag mode link property

2009-02-06 Thread Sebastien Roy
On Fri, 2009-02-06 at 17:32 -0500, Sebastien Roy wrote:
 802.1Q tag mode link property
 

I forgot to mention that I'm sponsoring this case for myself, and it
times out on February 13th.

-Seb





PSARC 2009/069 802.1Q tag mode link property

2009-02-06 Thread James Carlson
Sebastien Roy writes:
 On Fri, 2009-02-06 at 17:32 -0500, Sebastien Roy wrote:
  802.1Q tag mode link property
  
 
 I forgot to mention that I'm sponsoring this case for myself, and it
 times out on February 13th.

+1

-- 
James Carlson, Solaris Networking  james.d.carlson at sun.com
Sun Microsystems / 35 Network Drive71.232W   Vox +1 781 442 2084
MS UBUR02-212 / Burlington MA 01803-2757   42.496N   Fax +1 781 442 1677



PSARC 2009/069 802.1Q tag mode link property

2009-02-06 Thread Garrett D'Amore
+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:

 normalInsert 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