Network Functions Virtualization (NFV) is an emerging ini- tiative where virtualization is used to consolidate Network Functions (NFs) onto high volume servers (HVS), switches, and storage. In addi- tion, NFV provides flexibility as Virtual Network Functions (VNFs) can be moved to different locations in the network. One of the major chal- lenges of NFV is the allocation of demanded network services in the network infrastructures, commonly referred to as the Network Functions Virtualization - Resource Allocation (NFV-RA) problem. NFV-RA is divided into three stages: (i) Service Function Chain (SFC) composition, (ii) SFC embedding and (iii) SFC scheduling. Up to now, existing NFV- RA approaches have mostly tackled the SFC embedding stage taking the SFC composition as an assumption. Few approaches have faced the com- position of the SFCs using heuristic approaches that do not guarantee optimal solutions. In this paper, we solve the first stage of the problem by characterizing the service requests in terms of NFs and optimally building the SFC using an Integer Linear Programming (ILP) approach. Keywords: