1
0
Fork 0
Go to file
Ambrose Chua 0ce3c8bb2a JSON-based latency 2018-03-22 22:52:45 +08:00
data Half-complete README.md 2018-03-20 00:06:41 +08:00
.gitignore Add section "background" 2018-03-21 21:59:15 +08:00
README.md Add section "background" 2018-03-21 21:59:15 +08:00
compare.go JSON-based latency 2018-03-22 22:52:45 +08:00
country.go JSON-based latency 2018-03-22 22:52:45 +08:00
exclude.txt Add IU to exclude.txt 2018-03-21 14:26:00 +08:00
json2csv.go JSON-based latency 2018-03-22 22:52:45 +08:00
latency.go JSON-based latency 2018-03-22 22:52:45 +08:00
poster.png Add section "background" 2018-03-21 21:59:15 +08:00
poster.svg Add section "background" 2018-03-21 21:59:15 +08:00
scan.conf Add IU to exclude.txt 2018-03-21 14:26:00 +08:00

README.md

sgp-internet-ping

A quick analysis of Internet latency from Singapore to the rest of the world.

poster

Scanning the Internet

To scan the IPv4 Internet, I used the tool masscan by security researcher Robert Graham. He has extensively made use of masscan in the security research he does. It provides latency measurements up to the millisecond.

I wrote a configuration file to run masscan on the entire Internet with the included exclusion list, and scan the top 5 open ports according to speedguide.net. It is stored as scan.conf. I started the scan with:

masscan -c scan.conf

This produces the output file scan.bin.

Counting latency

I need to reduce the data for the five ports per host into a single latency reading for each host.

But first, I had to convert the scan binary into JSON:

masscan --readscan scan.bin -oJ scan.json
go run latency.go -in scan.json -out latency.json

Categorising readings by country

To associate an IP address with a country, a geolocation lookup database must be used. I used two sources of geolocation databases; Maxmind's GeoLite2, and Webnet77's IPToCountry; to test the accuracy of either database.

Next, I wrote and used a Go script to group the scans by country:

go run country.go -in latency.json -db geolite -out country.json

Plotting the latency from Singapore by country

Not implemented

I will start with a simple plot of latency to every country from Singapore.

go run json2csv.go -in country.json -out country.csv