# A Novel Approach to Multi-Provider Network Slice Selector for 5G and Future Communication Systems
## 5 Proposed Solution
### NSSF DAF: Network Slice Selection Function Decision-Aid Framework  
Figure 3 provides an overview of our proposed framework for NSF selection. NSSF DAF consists of a solution in which a part is executed on user equipment (e.g., smartphones, vehicles, IoT brokers), running as a transparent service and another one runs at the edge of the network operator or service provider. The framework has several modules that can be configured according to the context of applications, geographic location, scenarios of mobility, strategies of slices selection, and others. For energy saving, the user equipment only signals its consumption profile or user application preference to the framework hosted at the edge of the architecture. Hence, no processing occurs in the mobile device or in the IoT broker. According to Figure 3, the framework proposed was divided into the following three main blocks: _Collector_, _Processor_, and _Decision Maker_ of NSs. Fundamentally, the criteria for network selection are closely related to the demands or applications in use. Thus, parameters that measure the application's QoS as well as objective quality metrics for specific applications such as Quality of Video (QoV) and subjective metrics, such as indicators based on the user experience (QoE) and Mean Opinion Score (MOS), may be considered [15; 73]. The _Collector_ Module focuses on the assessment and dynamic mapping of the appropriate QoS requirements for each type of service, in addition to considering the signaling of the User Profile (e.g., V2X, Virtual Reality (VR), Augmented Reality (AR), Video on Demand (VoD), Video Stream), monetization and geographic location [15; 16; 54]. _NSSF DAF_ is indifferent to the technique used to mark packages in gNodeB, that is, our architecture assumes that a software instance in Centralized Unit (CU) and Distributed Unit (DU) based on widely used solutions, such as Segment Router, Multi-Protocol Label Switching, and/or definitions of IPv6 classes of service have already marked (labeled) the packages [74]. Therefore, our framework only identifies and collects the QoS, QoE (from the return of the app), and MOS (the defuzzification process of the _Processor_ module) parameters, processes them, and, from there, defines which NS best meets those requirements or in case of non-existence, signals to the Orchestration solution, the parameters for instancing the slice at run time (already in the cloud). The Module _Processor_ preferentially uses models that consider hybrid solutions, as mentioned in Section 4.1. In general, these models work similarly, that is, after the data collection process, the slices are classified and ranked, and finally, selection via the decision strategy is performed. In this case, each criterion receives a certain weight to prioritize some services over others, guiding the choice of the new slice according to the application in use. The definition of weights also takes into account the user profile and other aspects of the available slices. As described in [75], all computational methods are implemented using VNFs, running in an environment based on OpenStack [76] or Kubernetes [77]. For storing the data collected in the measurement processes, as well as the persistence of results related to the processing module, a NoSQL database is used. Data can be manipulated and analyzed by computational intelligence algorithms, using APIs (Application Programming Interface), and consuming data directly from the _Network Performance Analytics_ module, based on the Hadoop [78] and Spark [79] ecosystems. Note that the framework supports any relational database. The _Decision Maker_ Module selects the slice that best fits the UE data stream and then aggregates the network traffic and redirects it to the slice that meets the required SLA configuration. All the operations between modules and blocks of the framework are performed via APIs, which provide external access by other entities through RSA key pairs (SSH keys).