Distributed agent implementation

From: Marc Lavine (mlavine@foundrynet.com)
Date: 09/24/02

  • Next message: Peter Phaal: "RE: Re: Re: sFlow Datagram Extensibility"

    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