Location Independent Inter-Process Communication As Software Buses
Total Page:16
File Type:pdf, Size:1020Kb
Location independent inter-process communication as software buses Erik Samuelsson Erik Samuelsson VT 2016 Bachelor Thesis, 15 credits Supervisor: Cristian Klein, Ewnetu Bayuh Lakew Extern Supervisor: Clas H¨ogvall, Rickard Sj¨ostr¨om, Johan Forsman Examiner: Jerry Eriksson Bachelor’s Programme in Computing Science, 180 credits Abstract Telecommunication networks will transform and gradually migrate into virtualized cloud environments as a result of the potential for higher profitability through reduced costs and increased revenues. The purpose of this thesis is to investigate architectural mecha- nisms for location-independent communication between software components in a virtualized base station. Systems that provide such mechanisms are typically referred to as middleware and de- ployed as Platform-as-a-Service (PaaS). The overall goal is to achieve desired characteristics in cloud deployment regarding on- demand self-service, rapid elasticity of capacity while upholding services and high availability. Four communication protocols are examined and evaluated based on a set of functional and non- functional requirements that are especially relevant for a virtu- alized base station. In comparison with the Advanced Message Queuing Protocol (AMQP), Message Queuing Telemetry Trans- port (MQTT) and the eXtensible Messaging and Presence Pro- tocol (XMPP), the Data Distribution Service (DDS) standard is found to have excellent performance characteristics. Its complex- ity might have implications for the development and deployment though, that will increase the time it takes to reap the benefits from its advantages. Acknowledgements I wish to sincerely thank my supervisors at Tieto, Clas H¨ogvall, Rickard Sj¨ostr¨om and Johan Forsman for introducing an interesting and challenging thesis idea and for entrusting me with the task. I would also like to thank them for spending so much of their time and energy to support and guide me. I would also like to extend my sincere thanks to my supervisors Ewnetu Bayuh Lakew and Cristian Klein. Their encouragement, enthusiasm and guidance has been invaluable. Contents 1 An introduction to base station virtualization and messaging sys- tems 1 2 Requirements analysis 2 3 Middleware for distributed systems 5 3.1 Protocols for Message Oriented Middleware (MOM)6 3.1.1 AMQP6 3.1.2 DDS7 3.1.3 MQTT8 3.1.4 XMPP9 4 Results 10 4.1 Functional requirements 10 4.2 Non-functional requirements 12 4.2.1 Messaging model 12 4.2.2 Security and extensibility 12 4.2.3 Scalability and reliability 13 4.2.4 Interoperability, efficiency and usability 13 5 Conclusions 14 5.1 Future work 15 1(17) 1 An introduction to base station vir- tualization and messaging systems Telecommunication networks will transform and gradually migrate into virtualized cloud environments as a result of the potential for increased profitability it provides by reducing the cost of equipment and increasing revenue [1]. This transformation will have a dramatic impact on the whole industry and it will create new challenges that must be addressed and solved. Telecom infrastructures have high requirements on performance since this has a direct impact on revenue streams and customer churn. In this report a survey of different existing architectures for message queuing sys- tems that provides inter-process communication between processes in a virtualized environment will be performed. After the initial survey, four existing communica- tion standards (AMQP, DDS, MQTT and XMPP) are selected and examined more carefully in a comparative study with regards to functional and non-functional re- quirements in the telecom industry. The inter-communicating processes considered in this report are virtualized network functions. Network Function Virtualization (NFV) is a concept that originates from a white paper by the European Telecommunications Standards Institue (ETSI) [2] in 2012 that involves the implementation of network functions in software that can be instantiated and executed at various locations in a network. This allows exe- cution of network functionality at data centers with high processing and storage capabilities, and in essence the decoupling of the functions. The virtualization of network functions aims to reduce the need to populate a network with hardware that results in increased costs of energy, maintenance and hardware turnover, as well as the complexity of integrating hardware by various proprietors. Some examples of network functions that have been virtualized are network address translation (NAT), firewalls, intrusion detection and domain name service (DNS). These virtualized network functions must maintain the capability to communicate with other software components in the network, independently of where the other components might be instantiated logically or physically. Parts of the network infras- tructure that facilitates sending and receiving data between software components is commonly referred to as middleware, which is a software layer on top of the network operating system that provides a layer of abstraction for software developers. 2(17) 2 Requirements analysis In order to decompose a base station into decoupled components and achieve desired characteristics of cloud computing, like rapid elasticity (i.e scalability of processing power, storage and other resources), there must be architectural mechanisms in place for inter-process communication between these components. On a high level abstraction components can be said to offer their services on a software message bus (see Figure 1). Other components request services on the same bus. This allows for interoperability and integration of software components independent of platform. Services can be scaled up by replicating instances of particular components since there is no need for users of the services to know which particular instance provides the service at any given time. Component 1 Component 2 Component 3 Message Bus Component 4 Component 5 Component 6 Figure 1: Software components communicating through a software message bus In this chapter, a number of requirements that might be imposed on a software message bus in a telecom environment are presented. The requirements are divided into functional and non-functional requirements, which are considered separately. Functional requirements defines the necessary behavior of a system such as the capability to deliver messages from point A to point B. The functional requirements are complemented with a set of non-functional requirements that specify qualitative criteria to compare and evaluate systems that fulfill the functional requirements. The functional requirements that are placed upon the middleware are enumerated in Table 1. These functional requirements have initially been authored by Johan Forsman and Rickard Sj¨ostr¨omat Tieto, to express their specific needs of a mes- saging bus. An essential requirement is the asynchronous communication model, illustrated in Figure 2. In the asynchronous communication model a producer pro- 3(17) duces a message, sends it to the message bus, and is able to continue execution immediately thereafter. In other words the function call to send a message must be non-blocking, until a reply is delivered from the message bus by either Pushing or Pulling mechanisms. This is in contrast to a synchronous messaging model which is blocking, where the producer is suspended while it waits for a reply. Producer Send Message Pull or Push Reply Messaging Infrastructure Pull or Push Message Send Reply Consumer Figure 2: Asynchronous interaction model In addition to the functional requirements, the following non-functional requirements have been considered in order to differentiate between middlewares: Security The ability to defend against threats that could jeopardize its function- ality or its users integrity. Extensibility The ability to add customized features to the system. Scalability The ability to handle increased amount of work. Reliability The ability to resist/recover from failures. Interoperability The ability to integrate other products/systems without restric- tions. Efficiency The amount of required resources in terms of CPU load, memory con- sumption and disk storage. Usability The ease of use for users of the system, i.e. developers. 4(17) Table 1 Functional requirements Application components The Application Components are designed to (FR1) provide one or more services. Application Com- ponents communicate using asynchronous mes- sages. Message sending (FR2) A message is sent to a destination Application Component identified by a destination Address Point. Address Point (FR3) Address Point names shall be unrelated to the Application Component Name or task name. Redeployment (FR4) No change shall be needed in the code when an Address Point (service) is redeployed. Singleton Address Point Singleton Address Point shall be supported, i.e. (FR5) one Address Point with a unique name in the system. Local Address Point Local Address Point shall be supported, i.e. (FR6) the scope of the registered Address Point is re- stricted to a specific domain, e.g. local CPU. Multiple Instantiated Multiple Instantiated Address Points shall be Address Points (FR7) supported, i.e. the Address Point exists in sev- eral instances, distributed over all CPUs. Each instance is uniquely identified by a qualifier. The qualifier is a string. Address Point Lookup The Application Components shall be able to (FR8) lookup an Address Point. The lookup blocks while waiting for the Address Point to appear in the system. Address Point Discovery