Logger implementations

htsim has some predefined classes for certain types of logging. They all produce records in the general format specified in logfile. The meanings of the record fields, for the specific types of event-records that have been implemented so far, are:

TrafficLoggerSimple : TrafficLogger

Creates a record whenever a packet enters or leaves a simulation object.
eventtype eventid objid val1 val2 val3
TRAFFIC_EVENT=3 PKT_ARRIVE=0 where the packet experienced this event pkt flow id pkt id 0
PKT_DEPART=1
PKT_CREATESEND=2
PKT_DROP=3
PKT_RCVDESTROY=4

QueueLoggerSimple : QueueLogger

Creates a record whenever a packet arrives at a queue or departs.
eventtype eventid objid val1 val2 val3
QUEUE_EVENT=0 PKT_ENQUEUE=0 the queue being logged queue size [bytes] pkt flow id pkt id
PKT_DROP=1
PKT_SERVICE=2

QueueLoggerSampling : QueueLogger

Creates these records periodically.
eventtype eventid objid val1 val2 val3
QUEUE_RECORD=4 CUM_TRAFFIC=0 the queue being logged time needed to serve all packets that have arrived so far [sec] total time spent idling so far [sec] time needed to serve all the packets that have been dropped so far [sec]
QUEUE_APPROX=5 QUEUE_RANGE=0 the queue being logged most recent queue size [bytes] minimum queue size seen since last log [bytes] maximum queue size seen since last log [bytes]
QUEUE_OVERFLOW=1 <0, if the queue has idled since the last log; else 0 >0, if the queue has dropped packets since the last log; else 0 buffer size [bytes]

TcpLoggerSimple : TcpLogger

Creates these records whenever a TCP flow changes its state.
eventtype eventid objid val1 val2 val3
TCP_EVENT=1 TCP_RCV=0 the TCP source being logged _cwnd [bytes] _unacked [bytes], a heuristic estimate of the number of unacked packets in flight _effcwnd [bytes], a heuristic estimate of current transmit rate * RTT
TCP_RCV_FR=2
TCP_RCV_FR_END=1
TCP_RCV_DUP_FR=3
TCP_RCV_DUP=4
TCP_RCV_3DUPNOFR=5
TCP_RCV_DUP_FASTXMIT=6
TCP_TIMEOUT=7
TCP_STATE=2 TCPSTATE_CNTRL=0 _cwnd [bytes] _ssthresh [bytes] _recoverq [bytes], i.e. the seqno that indicates the whole fast-recovery window has been sent
TCPSTATE_SEQ=1 last_acked [bytes] highest_sent [bytes] dupacks

AveragingTcpLogger

Call AveragingTcpLogger::monitorTcp for a collection of different TCP flows. Thereafter, it will periodically record
eventtype eventid objid val1 val2 val3
TCP_RECORD=6 AVE_CWND=0 the flow-aggregate being logged average cwnd [bytes], flow-wise average unacked [bytes], flow-wise average effcwnd [bytes], flow-wise