Vehicle-to-Infrastructure IEEE 802.11ad Wi-Fi dataset
<p><strong>1. Introduction</strong></p> <p>This dataset contains space and time-indexed data collected in a Vehicle-To-Infrastructure (V2I) communication scenario, where a moving vehicle downloaded data from a stationary Access Point (AP) using IEEE 802.11ad Wi-Fi.</p> <p>The dataset is comprised of both throughput data and detailed frame information captured with <code>tcpdump</code>. It can be used to study 802.11ad's behavior in vehicular environments, in particular in what pertains to antenna sector selection.</p> <p>This dataset is associated with the following article, which we recommend consulting for more information: <a href="https://www.cs.vassar.edu/~rpachecomeireles/research/papers/comcom-2022-preprint.pdf"><em>Geolocation-based Sector Selection for Vehicle-to-Infrastructure 802.11ad Communication</em></a>, Mateus Mattos, António Rodrigues, Rui Meireles, Ana Aguiar, in the Elsevier Journal of Computer Communications, Volume 193, ISSN 0140-3664, 2022, <a href="https://doi.org/10.1016/j.comcom.2022.07.005">doi:10.1016/j.comcom.2022.07.005</a>.</p> <p><strong>2. Experimental setup</strong></p> <p>The AP was placed at the corner of a residential-area intersection while a mobile client vehicle drove around it, downloading data from the AP.</p> <p>Commercial Off-The-Shelf (COTS) TP-Link Talon AD7200 were used for both the stationary AP and mobile client. A third AD7200 configured in promiscuous mode was placed next to the mobile client, in order to capture the control frames being exchanged.</p> <p><strong>2.1 Experimental nodes</strong></p> <table> <tbody><tr> <th>MAC address</th> <th>Role</th> <th>Position</th> <th>Orientation</th> </tr> </tbody><tbody> <tr> <td><code>70:4f:57:72:b2:52</code></td> <td>AP</td> <td>Static, latitude: 41.111879, longitude: -8.631146, mounted of top of a parked vehicle</td> <td>Perpendicular to road</td> </tr> <tr> <td><code>50:c7:bf:97:8a:ac</code></td> <td>Client</td> <td>Mobile, mounted on roof of client vehicle</td> <td>Towards front of vehicle</td> </tr> <tr> <td><code>50:c7:bf:3c:53:1c</code></td> <td>Monitor</td> <td>Mobile, mounted on roof of client vehicle</td> <td>Towards front of vehicle</td> </tr> </tbody> </table> <p><strong>3. Trace description</strong></p> <p>The data is divided into traces. Each trace represents an uninterrupted period of data collection. The experiments were ran twice, once in 2020, and again in 2021. Environmental conditions, such as weather and topography, were consistent between the two experiment sets.</p> <p><strong>3.1 2020 traces</strong></p> <table> <tbody><tr> <th>Trace #</th> <th>Start timestamp</th> <th>End timestamp</th> <th>Mobility pattern</th> </tr> </tbody><tbody> <tr> <td>235</td> <td>1593946456</td> <td>1593946593</td> <td>Vehicle moving eastwards from AP and back, straight line, low speed</td> </tr> <tr> <td>237</td> <td>1593946793</td> <td>1593946908</td> <td>Vehicle moving westwards from AP and back, straight line, low speed</td> </tr> <tr> <td>238</td> <td>1593946938</td> <td>1593947076</td> <td>Vehicle moving eastwards from AP and back, straight line, low speed</td> </tr> <tr> <td>240</td> <td>1593947181</td> <td>1593947332</td> <td>Vehicle moving westwards from AP and back, straight line, low speed</td> </tr> <tr> <td>241</td> <td>1593947360</td> <td>1593947499</td> <td>Vehicle moving eastwards from AP and back, straight line, low speed</td> </tr> <tr> <td>242</td> <td>1593947566</td> <td>1593947700</td> <td>Vehicle moving westwards from AP and back, straight line, low speed</td> </tr> <tr> <td>243</td> <td>1593947759</td> <td>1593947915</td> <td>Vehicle moving southwards from AP and back, straight line, low speed</td> </tr> <tr> <td>244</td> <td>1593947971</td> <td>1593948111</td> <td>Vehicle moving southwards from AP and back, straight line, low speed</td> </tr> <tr> <td>245</td> <td>1593948210</td> <td>1593948348</td> <td>Vehicle moving southwards from AP and back, straight line, low speed</td> </tr> <tr> <td>246</td> <td>1593948433</td> <td>1593948569</td> <td>Vehicle moving northwards from AP and back, straight line, low speed</td> </tr> <tr> <td>247</td> <td>1593948631</td> <td>1593948795</td> <td>Vehicle moving northwards from AP and back, straight line, low speed</td> </tr> <tr> <td>248</td> <td>1593948904</td> <td>1593949053</td> <td>Vehicle moving northwards from AP and back, straight line, low speed</td> </tr> <tr> <td>249</td> <td>1593949307</td> <td>1593950016</td> <td>Vehicle driving circuit around the intersection, medium speed (see file <code>driving-circuit.gif</code>)</td> </tr> <tr> <td>250</td> <td>1593950073</td> <td>1593950643</td> <td>Vehicle driving circuit around the intersection, medium speed (see file <code>driving-circuit.gif</code>)</td> </tr> <tr> <td>251</td> <td>1593950682</td> <td>1593951240</td> <td>Vehicle driving circuit around the intersection, medium speed (see file <code>driving-circuit.gif</code>)</td> </tr> </tbody> </table> <p><strong>3.2 2021 traces</strong></p> <table> <tbody><tr> <th>Trace #</th> <th>Start timestamp</th> <th>End timestamp</th> <th>Mobility pattern</th> </tr> </tbody><tbody> <tr> <td>201</td> <td>1632244398</td> <td>1632244548</td> <td>Vehicle moving eastwards from AP and back, straight line, low speed (see file <code>driving-patterns-by-trace-2021.pdf</code>)</td> </tr> <tr> <td>202</td> <td>1632244563</td> <td>1632244663</td> <td>Vehicle moving westwards from AP and back, straight line, low speed (see file <code>driving-patterns-by-trace-2021.pdf</code>)</td> </tr> <tr> <td>203</td> <td>1632244674</td> <td>1632244799</td> <td>Vehicle moving southwards from AP and back, then westwards and back, straight line, low speed (see file <code>driving-patterns-by-trace-2021.pdf</code>)</td> </tr> <tr> <td>204</td> <td>1632244812</td> <td>1632244915</td> <td>Vehicle moving northwards from AP and back, then westwards and back, straight line, low speed (see file <code>driving-patterns-by-trace-2021.pdf</code>)</td> </tr> <tr> <td>206</td> <td>1632245138</td> <td>1632245346</td> <td>Vehicle moving eastwards from AP and back, then westwards and back, straight line, low speed (see file <code>driving-patterns-by-trace-2021.pdf</code>)</td> </tr> <tr> <td>207</td> <td>1632245355</td> <td>1632245463</td> <td>Vehicle moving southwards from AP and back, then westwards and back, straight line, low speed (see file <code>driving-patterns-by-trace-2021.pdf</code>)</td> </tr> <tr> <td>208</td> <td>1632245472</td> <td>1632245581</td> <td>Vehicle moving northwards from AP and back, then westwards and back, straight line, low speed (see file <code>driving-patterns-by-trace-2021.pdf</code>)</td> </tr> <tr> <td>209</td> <td>1632245592</td> <td>1632245790</td> <td>Vehicle moving southwards from AP and back, northwards from AP and back, then westwards and back, straight line, low speed (see file <code>driving-patterns-by-trace-2021.pdf</code>)</td> </tr> <tr> <td>210</td> <td>1632245798</td> <td>1632245987</td> <td>Vehicle moving eastwards from AP and back, straight line, low speed (see file <code>driving-patterns-by-trace-2021.pdf</code>)</td> </tr> <tr> <td>302</td> <td>1632335672</td> <td>1632336273</td> <td>Vehicle driving circuit around the intersection (see file <code>driving-circuit.gif</code>), medium speed</td> </tr> <tr> <td>303</td> <td>1632336286</td> <td>1632336870</td> <td>Vehicle driving circuit around the intersection (see file <code>driving-circuit.gif</code>), medium speed</td> </tr> <tr> <td>401</td> <td>1634983869</td> <td>1634984363</td> <td>Vehicle driving circuit around the intersection (see file <code>driving-circuit.gif</code>), medium speed</td> </tr> <tr> <td>402</td> <td>1634984410</td> <td>1634984881</td> <td>Vehicle driving circuit around the intersection (see file <code>driving-circuit.gif</code>), medium speed</td> </tr> <tr> <td>403</td> <td>1634984908</td> <td>1634985562</td> <td>Vehicle driving circuit around the intersection (see file <code>driving-circuit.gif</code>), medium speed</td> </tr> <tr> <td>404</td> <td>1634985666</td> <td>1634986835</td> <td>Vehicle driving circuit around the intersection (see file <code>driving-circuit.gif</code>), medium speed</td> </tr> <tr> <td>405</td> <td>1634986980</td> <td>1634988303</td> <td>Vehicle driving circuit around the intersection (see file <code>driving-circuit.gif</code>), medium speed</td> </tr> <tr> <td>406</td> <td>1634988352</td> <td>1634989470</td> <td>Vehicle driving circuit around the intersection (see file <code>driving-circuit.gif</code>), medium speed</td> </tr> <tr> <td>407</td> <td>1634989490</td> <td>1634990434</td> <td>Vehicle driving circuit around the intersection (see file <code>driving-circuit.gif</code>), medium speed</td> </tr> </tbody> </table> <p><strong>4. Data description</strong></p> <p><strong>4.1 File structure</strong></p> <p>The data from the 2020 and 2021 sets of experiments can be found in subfolders <code>2020</code> and <code>2021</code>, respectively.</p> <p>Each subfolder constains the following:</p> <ul> <li><code>gps.csv</code>: client vehicle mobility trace (individual NMEA sentences);</li> <li><code>gps-merged.csv</code>: client vehicle mobility trace (summarized);</li> <li><code>thrghpt.csv</code>: application throughput data;</li> <li><code>wifi.csv</code>: summarized 802.11ad frame data;</li> <li><code>pcap/</code>: contains raw <code>.pcap</code> files used to generate <code>wifi.csv</code>, separated by trace number;</li> <li><code>configs/</code>: includes JSON file with fields and filters used by <code>tshark</code> for the generation of <code>wifi.csv</code>.</li> </ul> <p><strong>4.2 GPS data: <code>gps.csv</code></strong> and <code>gps-merged.csv</code></p> <p>GPS data was captured by a high-accuracy GPS device: Trimble Pro Series 6H <a href="http://www.windenvironmental.com/Data-Sheets/Trimble-Pro%20Series-DS.pdf">[link]</a>, and consists of a combination of fields provided by multiple NMEA <code>GP*</code> sentence codes, namely: <code>GPRMC</code>, <code>GPGGA</code>, <code>GPGLL</code>, and <code>GNGSA</code> <a href="http://aprs.gids.nl/nmea/">[link]</a>.</p> <p>Column description</p> <p><code>gps.csv</code> is a table with the following columns:</p> <table> <tbody><tr> <th>Column</th> <th>Description</th> </tr> </tbody><tbody> <tr> <td><code>timestamp</code></td> <td>UNIX system timestamp at which GPS sentence was recorded, in seconds</td> </tr> <tr> <td><code>lat</code></td> <td>Latitude, in decimal degrees</td> </tr> <tr> <td><code>lon</code></td> <td>Longitude, in decimal degrees</td> </tr> <tr> <td><code>alt</code></td> <td>Altitude, in meters</td> </tr> <tr> <td><code>speed</code></td> <td>Ground speed, in knots</td> </tr> <tr> <td><code>HDOP</code></td> <td>Horizontal dilution of precision</td> </tr> <tr> <td><code>PDOP</code></td> <td>Position dilution of precision</td> </tr> <tr> <td><code>VDOP</code></td> <td>Vertical dilution of precision</td> </tr> <tr> <td><code>heading</code></td> <td>Direction of movement as provided by GPS device, in clockwise degrees from north</td> </tr> <tr> <td><code>identifier</code></td> <td>NMEA sentence code, e.g., <code>GPRMC</code></td> </tr> <tr> <td><code>gpstime</code></td> <td>Timestamp as provided by GPS device, in seconds</td> </tr> </tbody> </table> <p><strong>Note:</strong> Because each GPS sentence only contains a subset of the listed columns, any missing values are set to -1.0.</p> <p><code>gps-merged.csv</code> is a table containing all mobility information aggregated by GPS timestamp, for ease of use. It contains the following columns:</p> <table> <tbody><tr> <th>Column</th> <th>Description</th> </tr> </tbody><tbody> <tr> <td><code>gpstime</code></td> <td>Timestamp as provided by GPS device, in seconds</td> </tr> <tr> <td><code>timestamp</code></td> <td>Average UNIX system timestamp at which the GPS sentences from which this row was created were recorded, in seconds</td> </tr> <tr> <td><code>lat</code></td> <td>Latitude, in decimal degrees</td> </tr> <tr> <td><code>lon</code></td> <td>Longitude, in decimal degrees</td> </tr> <tr> <td><code>alt</code></td> <td>Altitude, in meters</td> </tr> <tr> <td><code>speed</code></td> <td>Ground speed, in knots</td> </tr> <tr> <td><code>HDOP</code></td> <td>Horizontal dilution of precision</td> </tr> <tr> <td><code>PDOP</code></td> <td>Position dilution of precision</td> </tr> <tr> <td><code>VDOP</code></td> <td>Vertical dilution of precision</td> </tr> <tr> <td><code>heading</code></td> <td>Direction of movement as provided by GPS device, in clockwise degrees from north</td> </tr> </tbody> </table> <p><strong>4.3 Application layer throughput : <code>thrghpt.csv</code></strong></p> <p>Data was sent from a custom sender application running on the AP, at the maximum possible rate. A custom receiver application on the client vehicle consumes the data. A time-indexed log of the amount of data sent and received was recorded.</p> <p>Column description</p> <p><code>thrghpt.csv</code> is a table with the following columns:</p> <table> <tbody><tr> <th>column</th> <th>description</th> </tr> </tbody><tbody> <tr> <td><code>timestamp</code></td> <td>UNIX system timestamp the throughput record pertains to</td> </tr> <tr> <td><code>pckt_cntr</code></td> <td>Number of packets received within the current record</td> </tr> <tr> <td><code>byte_cntr</code></td> <td>Number of bytes received within the current record</td> </tr> <tr> <td><code>elapsed_time</code></td> <td>Time elapsed since previous throughput record</td> </tr> <tr> <td><code>thrghpt</code></td> <td>Throughput for the current record, in in Megabit per second (Mbps)</td> </tr> <tr> <td><code>inter_arrival_avg </code></td> <td>Average inter-packet arrival time during the recording period, in seconds</td> </tr> <tr> <td><code>diff_local_avg </code></td> <td>Average delta between the timestamp recorded in the packet's payload (set by the sender) and the local timestamp in the receiver, in microseconds</td> </tr> <tr> <td><code>trace_nr</code></td> <td>Trace number the throughput data is associated with</td> </tr> </tbody> </table> <p><strong>4.4 802.11ad frame data: <code>wifi.csv</code></strong></p> <p>The <code>wifi.csv</code> file contains 802.11ad frame data, captured with <code>tcpdump</code>, on a Talon AD7200 router configured in promiscuous mode and colocated with the mobile client device.</p> <p>Data collection and processing</p> <p>The following <code>tcpdump</code> command was used to collect raw data frames:</p> <pre><code>tcpdump -B 100000 -s96 -i <ad-monitor-interface> -y IEEE802_11_RADIO -w <pcap-file> & </code></pre> <p>In order to create <code>wifi.csv</code>, the raw data frames were processed using <code>tshark</code> in order to filter out unnecessary information. More specifically, we ran the following command:</p> <pre><code>tshark -r <input-pcap> -2 -T fields <fields> -Y "<filter>" -E header=y -E separator=, -E quote=d -E occurrence=f </code></pre> <p>The raw input <code>.pcap</code> files for each trace are provided in the <code>pcap/</code> folder. The parameters <code><filter></code> and <code><fields></code> represent the filtering conditions and what fields we want to extract from each frame, respectively. The actual values used are provided in the <code>configs/tshark.json</code> file.</p> <p>Frames were filtered based on a single field: the WLAN frame type and subtype, or <code>wlan.fc.type_subtype</code>. Only the following types of frames were kept:</p> <table> <tbody><tr> <th>Frame type/subtype value</th> <th>Description</th> </tr> </tbody><tbody> <tr> <td>0x0000</td> <td>Association request</td> </tr> <tr> <td>0x0001</td> <td>Association response</td> </tr> <tr> <td>0x0002</td> <td>Re-association request</td> </tr> <tr> <td>0x0003</td> <td>Re-association response</td> </tr> <tr> <td>0x000a</td> <td>Disassociation</td> </tr> <tr> <td>0x000b</td> <td>Authentication</td> </tr> <tr> <td>0x000c</td> <td>De-authentication</td> </tr> <tr> <td>0x0019</td> <td>Block ACKs</td> </tr> <tr> <td>0x001d</td> <td>Clear-to-send</td> </tr> <tr> <td>0x0028</td> <td>QoS data</td> </tr> <tr> <td>0x0030</td> <td>DMG beacon</td> </tr> <tr> <td>0x0164</td> <td>Grant</td> </tr> <tr> <td>0x0167</td> <td>Grant ACK</td> </tr> <tr> <td>0x0168</td> <td>SLS</td> </tr> <tr> <td>0x0169</td> <td>SLS feedback</td> </tr> <tr> <td>0x016a</td> <td>SLS feedback ACK</td> </tr> </tbody> </table> <p>Column description</p> <p><code>wifi.csv</code> is a table with the following columns:</p> <table> <tbody><tr> <th>Column</th> <th>Description</th> </tr> </tbody><tbody> <tr> <td><code>frame.time_epoch</code></td> <td>UNIX timestamp of frame capture, in seconds (with microsecond resolution)</td> </tr> <tr> <td><code>frame.number</code></td> <td>Ordinal number attributed to captured frame</td> </tr> <tr> <td><code>frame.len</code></td> <td>Frame length, in bytes</td> </tr> <tr> <td><code>ip.src</code></td> <td>Source IP address</td> </tr> <tr> <td><code>ip.dst</code></td> <td>Destination IP address</td> </tr> <tr> <td><code>ip.flags</code></td> <td>IP flags</td> </tr> <tr> <td><code>ip.frag_offset</code></td> <td>IP fragmentation offset</td> </tr> <tr> <td><code>ip.hdr_len</code></td> <td>IP header length</td> </tr> <tr> <td><code>ip.id</code></td> <td>IP identification field</td> </tr> <tr> <td><code>ip.proto</code></td> <td>IP protocol field</td> </tr> <tr> <td><code>ip.reassembled_in</code></td> <td>Frame number in which IP packet is reassembled</td> </tr> <tr> <td><code>radiotap.channel.flags.2ghz</code></td> <td>1 if channel frequency is in 2.4 GHz range, 0 otherwise</td> </tr> <tr> <td><code>radiotap.channel.flags.5ghz</code></td> <td>1 if channel frequency is in 5 GHz range, 0 otherwise</td> </tr> <tr> <td><code>radiotap.channel.freq</code></td> <td>Channel frequency (60480 Hz in this case)</td> </tr> <tr> <td><code>radiotap.length</code></td> <td>IEEE 802.11 radiotap capture header length</td> </tr> <tr> <td><code>radiotap.mcs.index</code></td> <td>Modulation Coding Scheme index</td> </tr> <tr> <td><code>udp.srcport</code></td> <td>UDP source port</td> </tr> <tr> <td><code>udp.dstport</code></td> <td>UDP destination port</td> </tr> <tr> <td><code>wlan.ba.bm</code></td> <td>Block ACK bitmap</td> </tr> <tr> <td><code>wlan.bf</code></td> <td>Full beamforming field of WLAN frame</td> </tr> <tr> <td><code>wlan.bf.isInit</code></td> <td>Whether or not frame is SLS initiator</td> </tr> <tr> <td><code>wlan.bf.isResp</code></td> <td>Whether or not frame is SLS responder</td> </tr> <tr> <td><code>wlan.bf.num_dmg_ants</code></td> <td>Number of DMG antennas</td> </tr> <tr> <td><code>wlan.bf.num_sectors</code></td> <td>Number of SLS sectors</td> </tr> <tr> <td><code>wlan.bf.train</code></td> <td>Whether or not frame is part of SLS training</td> </tr> <tr> <td><code>wlan.fc.retry</code></td> <td>Whether WLAN frame is re-transmitted</td> </tr> <tr> <td><code>wlan.fc.type_subtype</code></td> <td>WLAN frame type and subtype</td> </tr> <tr> <td><code>wlan.fixed.ssc.sequence</code></td> <td>WLAN starting sequence number</td> </tr> <tr> <td><code>wlan.fixed.timestamp</code></td> <td>WLAN timestamp</td> </tr> <tr> <td><code>wlan.frag</code></td> <td>WLAN fragment number</td> </tr> <tr> <td><code>wlan.ta</code></td> <td>WLAN transmitter MAC address</td> </tr> <tr> <td><code>wlan.ra</code></td> <td>WLAN receiver MAC address</td> </tr> <tr> <td><code>wlan.seq</code></td> <td>WLAN frame sequence number</td> </tr> <tr> <td><code>wlan.ssw</code></td> <td>Full Sector-level Sweep (SLS) field of WLAN frame</td> </tr> <tr> <td><code>wlan.ssw.cdown</code></td> <td>SLS countdown (CDOWN) number</td> </tr> <tr> <td><code>wlan.ssw.direction</code></td> <td>SLS direction (0: frame sent by SLS initiator, 1: by SLS responder)</td> </tr> <tr> <td><code>wlan.ssw.sector_id</code></td> <td>ID of sector used for SLS frame</td> </tr> <tr> <td><code>wlan.sswf</code></td> <td>Full SLS feedback field of WLAN frame</td> </tr> <tr> <td><code>wlan.sswf.sector_select</code></td> <td>SLS Feedback Sector Select</td> </tr> <tr> <td><code>wlan.sswf.snr_report</code></td> <td>SLS Feedback SNR Report</td> </tr> <tr> <td><code>wlan_radio.11n.mcs_index</code></td> <td>WLAN MCS index</td> </tr> <tr> <td><code>wlan_radio.channel</code></td> <td>WLAN channel</td> </tr> <tr> <td><code>wlan_radio.data_rate</code></td> <td>WLAN data rate</td> </tr> <tr> <td><code>wlan_radio.duration</code></td> <td>WLAN frame duration</td> </tr> <tr> <td><code>wlan_radio.frequency</code></td> <td>WLAN channel frequency</td> </tr> <tr> <td><code>wlan_radio.noise_dbm</code></td> <td>WLAN noise level, in dBm</td> </tr> <tr> <td><code>wlan_radio.phy</code></td> <td>WLAN PHY type</td> </tr> <tr> <td><code>wlan_radio.preamble</code></td> <td>WLAN preamble</td> </tr> <tr> <td><code>wlan_radio.signal_dbm</code></td> <td>WLAN signal strength, in dBm</td> </tr> <tr> <td><code>wlan_radio.timestamp</code></td> <td>WLAN TSF timestamp</td> </tr> <tr> <td><code>data.text</code></td> <td>Data enclosed in WLAN data frame</td> </tr> <tr> <td><code>trace_nr</code></td> <td>Number of the trace the frame is associated with</td> </tr> </tbody> </table>
ShareScore
36/100
Overall dataset sharing score
Score breakdown
These five areas show where the dataset supports — or may limit — practical reuse.
- Stewardship
- 4
- Harmonization
- 4
- Access
- 16
- Reuse readiness
- 8
- Engagement
- 4