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:
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 |
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 |
eventtype | eventid | objid | val1 | val2 | val3 |
---|---|---|---|---|---|
QUEUE_RECORD =4 |
CUM_TRAFFIC =0 |
the queue being logged | time needed to serve |
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] |
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::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 |