Encoding unknown values in the extended_switch structure

From: Peter Phaal <peter.phaal@inmon.com>
Date: 05/22/09
Message-ID: <CA8A4FDFF939482291D4988028E72C8A@PHAALPC>

There currently isn't a satisfactory way to indicate that one or more of the
fields in the extended_switch structure is unknown to the sFlow exporter.

/* Extended Switch Data */
/* opaque = flow_data; enterprise = 0; format = 1001 */
/* Note: For untagged ingress ports, use the assigned vlan and priority
         of the port for the src_vlan and src_priority values.
         For untagged egress ports, use the values for dst_vlan and
         dst_priority that would have been placed in the 802.Q tag
         had the egress port been a tagged member of the VLAN instead
         of an untagged member. */

struct extended_switch {
   unsigned int src_vlan; /* The 802.1Q VLAN id of incoming frame */
   unsigned int src_priority; /* The 802.1p priority of incoming frame */
   unsigned int dst_vlan; /* The 802.1Q VLAN id of outgoing frame */
   unsigned int dst_priority; /* The 802.1p priority of outgoing frame */
}

Since 0 is a valid value for both 802.1Q VLAN 802.1p priority it should not
be used to encode the unknown value. Rather than omit the whole structure
because one field isn't known, it makes sense to define an unambiguous value
to indicate that a field is unknown.

Fortunately these fields have relatively small maximum values, vlan <= 4096
and priority <= 7, so an unambiguous choice for an unknown value would be
0xffffffff (Note: this same value that sFlow currently uses to indicate that
a 32 bit counter value is unknown). If there are no objections, I think it
would make sense to include a note to this effect on Specifications page on
sFlow.org.

Peter
Received on Fri May 22 11:08:34 2009

This archive was generated by hypermail 2.1.8 : 02/17/10 PST