Skip to content


Repository files navigation


Implementation of the Entropy Clustering algorithm for IPv6 networks, introduced in the ACM IMC'18 conference paper:

Clusters in the Expanse: Understanding and Unbiasing IPv6 Hitlists, Oliver Gasser, Quirin Scheitle, Paweł Foremski, Qasim Lone, Maciej Korczyński, Stephen D. Strowes, Luuk Hendriks, Georg Carle, ACM Internet Measurement Conference 2018, Boston, MA, USA

See for more details and output examples, as the one below:

entropy clustering example


Install Go and the required packages:

go get
go get

Also, if you want to plot the results using this code, install Matplotlib, e.g.

sudo apt-get install python-matplotlib


  1. Compile.
  1. Convert list of IPv6 addresses into a list of entropy profiles:
cat ips.txt | ./profiles > profiles.txt
  1. Find entropy clusters using k-means, e.g. for k=6:
cat profiles.txt | ./clusters -kmeans -k 6 > clusters.txt
  1. Finally, plot the results:
cat clusters.txt | ./


Written by Paweł Foremski, @pforemski, 2018.