A number of key areas in IP network engineering, management and surveillance greatly benefit from the ability to dynamically
identify traffic flows according to the applications responsible for their creation. Currently such classifications rely on
selected packet header fields (e.g. destination port) or application layer protocol decoding. These methods have a number
of shortfalls e.g. many applications can use unpredictable port numbers and protocol decoding requires high resource usage
or is simply infeasible in case protocols are unknown or encrypted. We propose a framework for application classification
using an unsupervised machine learning (ML) technique. Flows are automatically classified based on their statistical characteristics.
We also propose a systematic approach to identify an optimal set of flow attributes to use and evaluate the effectiveness
of our approach using captured traffic traces.