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.