  Through their computational and forwarding capabilities, 5G networks can
support multiple vertical services. Such services may include several common
virtual (network) functions (VNFs), which could be shared to increase resource
efficiency. In this paper, we focus on the seldom studied VNF-sharing problem,
and decide (i) whether sharing a VNF instance is possible/beneficial or not,
(ii) how to scale virtual machines hosting the VNFs to share, and (iii) the
priorities of the different services sharing the same VNF. These decisions are
made with the aim to minimize the mobile operator's costs while meeting the
verticals' performance requirements. Importantly, we show that the
aforementioned priorities should not be determined a priori on a per-service
basis, rather they should change across VNFs since such additional flexibility
allows for more efficient solutions. We then present an effective methodology
called FlexShare, enabling near-optimal VNF-sharing decisions in polynomial
time. Our performance evaluation, using real-world VNF graphs, confirms the
effectiveness of our approach, which consistently outperforms baseline
solutions using per-service priorities.
