27.7.2 Flow Monitor Trace Format

The flow monitor defines a trace format which may be used by post-processing scripts to determine various counts on a per-flow basis. The format is defined by the following code in ~ns/flowmon.cc:

void
FlowMon::fformat(Flow* f)
{   
        double now = Scheduler::instance().clock();
        sprintf(wrk_, "%8.3f %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d 
                now,    
                f-\>flowid(),    // flowid
                0,              // category
                f-\>ptype(),     // type (from common header) 
                f-\>flowid(),    // flowid (formerly class)
                f-\>src(),
                f-\>dst(),
                f-\>parrivals(), // arrivals this flow (pkts)
                f-\>barrivals(), // arrivals this flow (bytes) 
                f-\>epdrops(),   // early drops this flow (pkts)
                f-\>ebdrops(),   // early drops this flow (bytes) 
                parrivals(),    // all arrivals (pkts)
                barrivals(),    // all arrivals (bytes) 
                epdrops(),      // total early drops (pkts)
                ebdrops(),      // total early drops (bytes) 
                pdrops(),       // total drops (pkts)
                bdrops(),       // total drops (bytes) 
                f-\>pdrops(),    // drops this flow (pkts) [includes edrops] 
                f-\>bdrops()     // drops this flow (bytes) [includes edrops]
        );
};
Most of the fields are explained in the code comments. The ``category'' is historical, but is used to maintain loose backward- compatibility with the flow manager format in ns version 1.



Tom Henderson 2014-12-17