Jelenlegi hely
Stunner Dataset
Stunner Android app has been available for download from the Play Store since 26th December 2013. Over the years, stunner has been downloaded and installed by 14,727 users on 745 different device. The functionality of our app is to provide the user with information about the current network environment of the phone: private and public IP, NAT type, MAC address, and some other network related details. At the same time, the app collects data about the phone and logs it to our servers. The data collection includes more than 70 million data records from over 100 countries measuring the NAT characteristics of more than 1300 carriers and over 35000 WiFi environments.
Citation Request
The dataset was provided by the University of Szeged as a result of an ongoing data collection campaign, and publicly available at http://www.inf.u-szeged.hu/stunner for non-profit usage. The campaign was supported by the Hungarian Government and the European Regional Development Fund under the grant number GINOP-2.3.2-15-2016-00037 (“Internet of Living Things”) and by the Hungarian Ministry of Human Capacities (grant 20391-3/2018/FEKUSTRAT)
Please cite this paper: Zoltán Szabó, Krisztián Téglás, Árpád Berta, Márk Jelasity, Vilmos Bilicki. Stunner: A Smart Phone Trace for Developing Decentralized Edge Systems. In Proceedings of the 19th International Conference on Distributed Applications and Interoperable Systems (DAIS 2019), Copenhagen, Denmark, 2019.
I agree with the terms and conditions. Download: Data
Measurement description
In versions 1-19 measurements were triggered either by the user (when the app is used) or by specific events that signal the change of some of the properties we measure: battery charging status, network availability. There was periodic measurement as well every 10 minutes, if no other events occurred. More info.
Since version 20, we collect data only when the phone is on a charger. This was necessary because Android has become very hostile to background processes when the phone is not on a charger, in an effort to save energy. Android event handlers have also became more restricted, so we can use them only under limited circumstances or on early Androids. The events raised by connecting to a charger or a network can still be caught by the Android job scheduler, but the timing of these events is not very reliable. We check the state of the phone every minute, and if there is a change in any important locally available networking parameter or in charging availability, we perform a full measurement. A measurement is still triggered if the user explicitly requests one, and it is also triggered by an incoming P2P measurement request. Also, if there is no measurement for at least 10 minutes, a full measurement is performed. More info.
P2P connection measurements are also a new feature in the version 20 that are performed every time a measurement is carried out. They are based on the WebRTC protocol, with Firebase as a signaling server, and a STUN server. We build and measure only direct connections, the TURN protocol for relaying is not used. Every node that is online (has network access and is on a charger) attempts to connect to a peer. To do this, the node sends a request to the Firebase server after collecting its own network data. The server attempts to find a random online peer and manages the information exchange using the Session Description Protocol (SDP) to help create a two-way P2P connection over UDP. If the two-way channel is successfully opened then a tiny data massage is exchanged. The channel is always closed at the end of the measurement. One connection is allowed at a time, every additional offer is rejected. The signaling server maintains an online membership list. More info.
Data structure
Stunner Data is available in format of CSV files per user per month.
Field name | since (version) | column description | Code description |
---|---|---|---|
fileCreationDate | 13 | server side timestamp when the file was created on the server which contains the measurement | |
serverSideUploadDate | 1 | server side timestamp when the measured data was uploaded to the server | |
deviceID | 1 | unique android device ID (hashed) | |
measurementID | 20 | ascendant measurement ID (ID restart is possible) | |
timestamp | 1 | UNIX timestamp which represent the start of the measurement | |
timeZoneUTCOffset | 9 | difference between UTC and local time | |
triggerCode | 4 | Event that started the measurement | -1: UNKNOWN (since v10), 0: USER, 1 : CONNECTION CHANGED, 2: BATTERY LOW, 3: BATTERY POWER CONNECTED, 4: BATTERY POWER DISCONNECTED 5: SCHEDULED STATE CHECK, 6: BOOT COMPLETED, 7: CONNECTION LOST (v1-19), 8: CONNECTION ESTABLISHED (v1-19), 9: SERVICE TOGGLED, 10: ACTION SHUTDOWN (since v20), 11: FIREBASE MESSAGE IS RECEIVED (since v20), 12: SERVICE TOGGLED OFF (since v22), 13: FIRST START (since v20), 15: TIME CHANGED (v20-22), 16: TIMEZONE CHANGED (since v20), 17: DATE CHANGED (v20-22), 18: LAST DISCONNECT CHANGED (v20-22), 19: AIRPLANE MODE CHANGED (since v20) |
androidVersion | 1 | android version of the phone | |
appVersion | 11 | current application version on the phone | |
connectionMode | 4 | type of the connection | -1: Not connected, 0: Mobile, 1: WiFi, 2: other |
networkInfo | 20 | network connection description | 0: IDLE, 1: SCANNING, 2: CONNECTING, 3: AUTHENTICATING, 4: OBTAINING IPADDR, 5: CONNECTED, 6: SUSPENDED, 7: DISCONNECTING, 8: DISCONNECTED, 9: FAILED, 10: BLOCKED, 11: VERIFYING POOR LINK, 12: CAPTIVE PORTAL CHECK |
localIP | 1 | hashed local(private) IP address | |
macAddress | 1 | hashed MAC address of the WiFi adapter | |
ssid: | 1 | hashed network ID | |
state: | 20 | wifi state | 0: WIFI STATE DISABLING, 1: WIFI STATE DISABLED, 2: WIFI STATE ENABLING, <br> 3: WIFI STATE ENABLED, 4: WIFI STATE UNKNOWN |
bandwith | 1 | network bandwith | |
rssi | 1 | WiFi signal strength (dBm) | |
carrier | 1 | system organization name | |
mobileNetworkType | 1 | mobile network type info | |
networkCountryIso | 20 | country name based on the network | |
simCountryIso | 12 | country name based on the sim | |
roaming | 1 | roaming status info | |
phoneType | 20 | phone type | 0: None, 1: GSM, 2: CDMA, 3: SIP |
airplane | 20 | airplane mode status info | |
discoveryResult | 1 | the request result which describe the type of the measured NAT | -3: DID NOT STARTED (since v20), -2: UNKNOWN (v1-19), -1: ERROR, 0: OPEN ACCESS, 1: FIREWALL BLOCKS, 2: SYMMETRIC UDP FIREWALL, 3: FULL CONE, 4: RESTRICTED CONE, 5: PORT RESTRICTED CONE, 6: SYMMETRIC ONE |
discoveryResultExitStatus | 20 | the NAT measurement result code | -1: UNKNOWN, 0: END_SUCCESSFUL, 1: ERROR, 2: SOCKET EXCEPTION, 3: UNKNOWN HOST EXCEPTION, 4: MESSAGE ATTRIBUTE PARSING EXCEPTION, 5: MESSAGE HEADER PARSING EXCEPTION, 6: UTILITY EXCEPTION, 7: IO EXCEPTION, 8: MESSAGE ATTRIBUTE EXCEPTION, 9: NULL POINTER EXCEPTION |
publicIP | 1 | hashed public IP address | |
STUNserver | 20 | name of the STUN server which was used for the measurement | |
lastDiscovery | 20 | UNIX timestamp of last NAT measurement | |
webRTCLocalTestConnectionStart | 20 | UNIX timestamp of local test webRTC connection start | |
webRTCLocalTestConnectionEnd | 20 | UNIX timestamp of local test webRTC connection end | |
webRTCLocalTestConnectionEnd | 20 | UNIX timestamp of local test webRTC connection end | |
webRTCLocalTestChannelOpen | 20 | UNIX timestamp of local test webRTC channel open | |
webRTCLocalTestChannelClosed | 20 | UNIX timestamp of local test webRTC channel closed | |
webRTCLocalTestExitStatus | 20 | the local test webRTC measurement result codes | -10: UNKNOWN, -3: DID NOT STARTED, -2: CONNECTION TIMED OUT, 0: NOT CONNECTED TO ANY NETWORK, 2: CONNECTION LOST, 4: STUN SERVER ERROR, 10: P2P CHANNEL FAILED TO OPEN WITHOUT SRFLX, 11: P2P CHANNEL FAILED TO OPEN WITH SRFLX, 19: P2P CHANNEL OPEN BUT MESSAGE ERROR, 20: P2P CHANNEL OPEN AND EXCHANGE MESSAGES SUCCESSFUL |
lastDisconnect | 20 | timestamp of the last connection lost | |
chargingState | 1 | battery charging state info | 1: Unknwn, 2: Charging, 3: Discharging, 4: Not charging, 5: Full |
pluggedState | 4 | battery plugged state info | -1: Not pLugged or unknown, 1: AC, 2: USB, 4 WIRELESS |
percentage | 1 | battery level info | |
health | 1 | battery health info | |
present | 4 | present of battery - boolean | true if there is a battery otherwise false |
technology | 4 | type of battery of device | |
temperature | 1 | the battery temperature during the measurement | |
voltage | 1 | battery voltage info | |
turnOnTimeStamp | 11 | UNIX timestamp of the last boot. Before version 20, it was only appear once at boot | |
shutdownTimestamp | 11 | UNIX timestamp of the last shut down. Before version 20, it was only appear once at shut down. | |
uptime | 11 | Elapsed time since last turn on | |
latitude | 1 | last known user required GPS location - latitude (hashed). Before version 20, it was the realtime GPS location info | |
longitude | 1 | last known user required GPS location - longitude (hashed). Before version 20, it was the realtime GPS location info | |
locationCaptureTimestamp | 20 | UNIX timestamp of GPS location info | |
countryName | 1 | The name of the country where the data was recorded. It based on the IP address. | |
autonomousSystemOrganization | 1 | The name of the system organization whose belongs to the IP address. | |
continent | 1 | The name of the continent where the data was recorded. It based on the IP address. | |
platform | 1 | The name of the device platform where the data was recorded | |
P2PdeviceID | 21 | unique device P2P ID (hashed) | |
P2PpeerID | 21 | unique peer P2P ID (hashed) | |
P2PconnectionStart | 21 | UNIX timestamp of local test webRTC connection start | |
P2PchannelOpen | 21 | UNIX timestamp of local test webRTC channel open | |
P2PchannelClosed | 21 | UNIX timestamp of local test webRTC channel closed | |
P2PconnectionEnd | 21 | UNIX timestamp of local test webRTC connection end | |
P2PexitStatus | 21 | the P2P measurement result codes | -10: UNKNOWN, -3: DID NOT STARTED, -2: CONNECTION TIMED OUT, 0: NOT CONNECTED TO ANY NETWORK <br> 2: CONNECTION LOST, 3: PEER CONNECTION LOST, 4: STUN SERVER ERROR, 5: OFFER IS REJECTED <br> 10: P2P CHANNEL FAILED TO OPEN WITHOUT SRFLX, 11: P2P CHANNEL FAILED TO OPEN WITH SRFLX <br> 19: P2P CHANNEL OPEN BUT MESSAGE ERROR, 20: P2P CHANNEL OPEN AND EXCHANGE MESSAGES SUCCESSFUL |
P2PconnectionID | 21 | unique P2P connection ID | |
P2Pinitiator | 21 | P2P initiator (boolean) | true if the device starts the connection |
Vesions/releases
Versions | Releases |
---|---|
version 1. | 2013.dec.20 |
version 2. | 2014.jan.6. |
version 3. | 2014.jan.21. |
version 4. | 2014.mar.14. |
version 5. | 2014.mar.26. |
version 6. | 2014.mar.28. |
version 7. | 2014.mar.30. |
version 8. | 2014.apr.10. |
version 9. | 2014.apr.28. |
version 10. | 2014.okt.3. |
version 11. | 2014.okt.9. |
version 12. | 2015.jan.19. |
version 13. | 2015.marc.16. |
version 14. | 2017.apr.25. |
version 15. | 2018.apr.18. |
version 16. | 2018.apr.21 |
version 17. | 2018.apr.23. |
version 18. | 2018.may.12. |
version 19. | 2018.okt.29. |
version 20. | 2018.okt.29. |
version 21. | 2018.okt.31. |
version 22. | 2018.nov.26. |
version 23. | 2018.dec.17. |
version 24. | 2019.jan.22. |