  Virtualization of network functions (as virtual routers, virtual firewalls,
etc.) enables network owners to efficiently respond to the increasing
dynamicity of network services. Virtual Network Functions (VNFs) are easy to
deploy, update, monitor, and manage. The number of VNF instances, similar to
generic computing resources in cloud, can be easily scaled based on load.
Hence, auto-scaling (of resources without human intervention) has been
receiving attention. Prior studies on auto-scaling use measured network traffic
load to dynamically react to traffic changes. In this study, we propose a
proactive Machine Learning (ML) based approach to perform auto-scaling of VNFs
in response to dynamic traffic changes. Our proposed ML classifier learns from
past VNF scaling decisions and seasonal/spatial behavior of network traffic
load to generate scaling decisions ahead of time. Compared to existing
approaches for ML-based auto-scaling, our study explores how the properties
(e.g., start-up time) of underlying virtualization technology impacts Quality
of Service (QoS) and cost savings. We consider four different virtualization
technologies: Xen and KVM, based on hypervisor virtualization, and Docker and
LXC, based on container virtualization. Our results show promising accuracy of
the ML classifier using real data collected from a private ISP. We report
in-depth analysis of the learning process (learning-curve analysis), feature
ranking (feature selection, Principal Component Analysis (PCA), etc.), impact
of different sets of features, training time, and testing time. Our results
show how the proposed methods improve QoS and reduce operational cost for
network owners. We also demonstrate a practical use-case example
(Software-Defined Wide Area Network (SD-WAN) with VNFs and backbone network) to
show that our ML methods save significant cost for network service leasers.
