create new tag
, view all tags
The statistical framework and logging capabilities of WiSeNeT are far superior to the existing testbed, where only the minimum required information was obtained. It aims to capture all events in the testbed and network, in order to return as much value to the user as possible. However the disadvantage is that the log files created by the testbed can grow to a fairly large size, and therefore requires sufficient disk space to cater for it.

In terms of real-time output to the user, this is achieved on two fronts:

  1. Prints to stdout, which is most commonly directed to the terminal. This can be done at all stages of the testbed and/or at any layer.
  2. Extensive logging to the relevant log files, which is achieved through a two stage process:
    1. Current runtime results are logged to a radio specific log file – its default name is radioXX_log.csv, where XX is the radio address. Note if the --log option is selected, the log filename is prefixed by the relevant process ID and timestamp in order to create a unique log file at each new run. This captures any information passed to it through the WriteLog, which is utilised at key points within the testbed. The relevant LOGEVENT is passed to it when calling the WriteLog function which determines the nature of the log entry. The LOGEVENT choices are defined as part of the global variables.
    2. After the testbed is terminated, the above runtime results are collated and summarised into a master testbed log file – its default name is results.csv. The GetStatistics function is defined within the statistics module for this purpose, and is called at the conclusion of the main program. This function also outputs a selection of key statistics to stdout to summarise the node’s performance. Examples of collated results include the total number of packets sent, and average/minimum/maximum round trip times (RTT).
All log files are formatted as comma separated values files (*.csv), which provides flexibility in the analysis of these statistics – that is, programs such as OpenOffice Calc or Microsoft Excel or other spreadsheet programs can be utilised to analyse and graph these results. By default, all log files are contained in the /logs/ folder. This statistics module will create these log files if they do not already exist, along with the appropriate headers.

These log file layouts are predefined in the global variables. Both the runtime log and the master log comprise 23 preset columns for the testbed to be able to log any possible event as long as it is defined in the global variables and this statistics module (Tables 4 and 5). In addition, Python’s method to write to .csv files is by writing a list which represents one row to the file, which would be cumbersome due to the amount of information logged. One of the major improvements of WiSeNeT is the definition of an easy-to-use logging function which builds a standard list according to the preset log file layouts and writes it to the log. This eliminates the need to remember the positioning of each variable within the .csv file, and also makes it highly flexible and expandable according to the needs of the user.

Column Header Name Description
0 Start Date/Time Start time of event
1 End Date/Time End time of event(if applicable)
2 Thread ID Process ID of the thread/program that wrote the log entry
3 Radio Address of the radio relevant for this entry
4 Layer Layer at which the event is relevant
5 Event Event number(as defined in gloabal variables)
6 Event Text Event information(as defined in statistics)
7 What? What acutually happened--free text field
8 Notes Futher notes on what actually happended--free text field
9 Success? Wheter the current frame was a success or failure
10 Counter Counter field which can be used to count packets
11 Rxnode For link layer frames, rxnode of the packet sent/received
12 Txnode For link layer frames, txnode of the packet sent/received
13 ACK For link layer frames, ACK of the packet sent/received
14 SEQ For link layer frames, SEQ of the packet sent/received
15 TYPE For link layer frames, TYPE of the packet sent/received
16 APP For link layer frames, APP of the packet sent/received
17 Dest For network layer frames, dest of the payload sent/received
18 Source For network layer frames, source of the payload sent/received
19 Frame Length Frame length as defined at the layer
20 Retries Number of retries taken to send the packet(at the link layer)
21 Total RTT Total RTT(time bewteen the start of packet transmission and receiving the ACK)
22 Queue Size Queue size at the moment the entry was written

Table 4: Runtime log file fields

Column Header Name Description
0 Start Timestamp Start time/date of WiSeNeT program
1 End Timestamp End time/date of WiSeNeT program
2 Process ID Process ID of WiSeNeT program
3 Radio Radio for which WiSeNeT was run
4 Function Sink or source
5 Program (AL) Application layer program
6 Initial Rate (LL) Link layer starting rate
7 Rate (AL) Application layer packet generation rate
8 Data Size (AL) Application layer data size
9 Packets (AL) Number of packets that were generated at the application layer
10 Scheduled Packets (LL) Number of packets popped from the data buffer at the link layer
11 Failed Scheduled Packets (LL) Number of packets that did not get ACK’d (that is, number of transmissions that failed)
12 Total Packets (LL) Total number of packets sent\ including retries
13 Average Rate Average node throughput
14 Average Retries Average number of retries required for all sends
15 Maximum Retries Maximum number of retries required for the node
16 Total Retries Total number of retries required for the node
17 Average RTT Average RTT of a packet at the node
18 Minimum RTT Minimum RTT of a packet at the node
19 Maximum RTT Maximum RTT of a packet at the node
20 Average Queue Size Average queue size of the node
21 Maximum Queue Size Maximum queue size of the node
22 Log File Name of the runtime log file for further analysis

Table 5: Master log file fields

In addition to these statistics, at the link layer, several daemon threads are defined in order to collect information on instantaneous transmission and receive rates at intervals of period INSTANTANEOUS_CAPTURE_PERIOD (as defined in the global variables). This is achieved using various counters at specific parts of the layer. These instantaneous rates are outputted to the runtime log file in both bytes/second and packets/second.

Topic revision: r4 - 2012-01-23 - XiaohongWu
This site is powered by the TWiki collaboration platformCopyright © 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback