From: Marc Lavine (mlavine@foundrynet.com)
Date: 09/24/02
Some network switches have multiple CPUs which may be capable of
independently performing sFlow sampling for different blocks of traffic
moving through the switch. It seems desirable to allow for the possibility
of having multiple CPUs within an agent operate independently in performing
the sampling, but the current sFlow datagram design has a barrier to
accomplishing that, namely the datagram sequence number:
struct sample_datagram_v5 {
address agent_address /* IP address of sampling agent,
sFlowAgentAddress. */
unsigned int sequence_number; /* Incremented with each sample datagram
generated */
Having a single sequence number "stream" for a given agent mandates
centralized sequence number allocation, which can interfere with having
independent CPUs perform sampling. To address this, I suggest adding an
additional field to provide an opaque "sub-agent" id (for lack of a better
term), and have the sequence numbers be interpreted only in relation to that
id. This would provide for multiple sequence number streams as needed.
Thus one might have something like this:
struct sample_datagram_v5 {
address agent_address /* IP address of sampling agent,
sFlowAgentAddress. */
unsigned int sub_agent_id; /* Opaque sub-agent id. Used for
distinguishing between sequence
numbers streams from separate
sampling entities within an agent. */
unsigned int sequence_number; /* Incremented with each sample datagram
generated by the specified sub-agent */
Comments?
Marc
This archive was generated by hypermail 2.1.4 : 09/24/02 PDT