Acknowledgement We would like to thank our supervisor Dr. Ahmed Masri for supervising this project. His notes about our work were of key importance that without his efforts achieving this work would not be possible. [1] Disclaimer This report was written by student Mostafa Basher and Diaa Badawi at the Electrical and telecommunication Engineering Department, Faculty of Engineering and information technology, An-Najah National University. It has not been altered or corrected, other than editorial corrections, as a result of assessment and it may contain language as well as content errors. The views expressed in it together with any outcomes and recommendations are solely those of the students. An-Najah National University accepts no responsibility or liability for the consequences of this report being used for a purpose other than the purpose for which it was commissioned. [2] Contents Abstract ........................................................................................................................................... 7 1. Introduction ............................................................................................................................. 8 1.1About this project ................................................................................................................... 8 1.2 Significance of this work ........................................................................................................ 8 1.2.1 Benefits for the client ..................................................................................................... 8 1.2.2 Benefits for the operator................................................................................................ 8 1.3 Objectives of this work .......................................................................................................... 8 1.4 Scope of this work ................................................................................................................. 9 1.4.1 Area of interest ............................................................................................................... 9 1.4.2 Limitations to this work .................................................................................................. 9 1.5 Organization of this report .................................................................................................... 9 2. Constraints, Standards/ Codes and Earlier course work: ...................................................... 10 2.1 Constraints........................................................................................................................... 10 2.2 Standards ............................................................................................................................. 11 2.3 Earlier coursework............................................................................................................... 11 3. Literature review ....................................................................................................................... 12 3.1 General background ............................................................................................................ 12 3.2 Mobile to fixed-line Offloading: general review ................................................................. 15 3.3 Types of offloading .............................................................................................................. 17 3.4 Related work........................................................................................................................ 18 3.5 GSM networks ..................................................................................................................... 18 3.6 Android ................................................................................................................................ 21 3.6.1 Services ......................................................................................................................... 22 3.6.2 Content Providers ......................................................................................................... 22 3.6.2 Broadcast Receivers ..................................................................................................... 22 3.6.2 Android manifest .......................................................................................................... 22 3.7 Wampserver ........................................................................................................................ 22 3.7.1 FUNCTIONALITIES ......................................................................................................... 23 4. Methodology ............................................................................................................................. 23 4.1 The user’s application:......................................................................................................... 24 4.2 The database server programming: .................................................................................... 24 4.3 Signaling procedure: ............................................................................................................ 24 [3] 4.4 Offloading process ............................................................................................................... 26 5. Results and analysis ................................................................................................................... 29 5.1The first interface when starting the application ................................................................. 29 5.2 Case1: If the user is not authenticated: .............................................................................. 29 5.3 Case2: If the user is authenticated: ..................................................................................... 30 5.3.1 Case1: If the access point is registered in the database: ............................................. 31 5.3.2 Case 2: If the access point address does not exist yet in the database: ...................... 31 5.3.3 After inserting a new destination: ................................................................................ 32 6. Discussion .................................................................................................................................. 33 7. Ongoing work ............................................................................................................................ 33 7.1 Implementation and testing .................................................... Error! Bookmark not defined. 7.2 Testing ..................................................................................... Error! Bookmark not defined. 7.3 Results and analysis ................................................................. Error! Bookmark not defined. 7.4 Operator approval ................................................................... Error! Bookmark not defined. 7.5 Technical issues ................................................................................................................... 33 8. Conclusion ................................................................................................................................. 34 References ..................................................................................................................................... 35 Appendices: ................................................................................................................................... 36 Appendix A: Permissions ........................................................................................................... 36 Appendix B: Pseudo code: ......................................................................................................... 36 Appendix C: Offloading Process (in case of using MSC’s assets) ................................................... 41 Call routing without offloading: ............................................................................................ 41 Call routing with offloading: .................................................................................................. 41 [4] List of figures: Figure 1: the numbers of fixed-line subscription in the world (International Telecommunication Union: ICT Data and Statistics Division, 2014) .............................................................................. 13 Figure 2: the numbers of mobile subscriptions in the world (International Telecommunication Union: ICT Data and Statistics Division, 2014) .............................................................................. 13 Figure 3: the numbers of individuals using internet in world (International Telecommunication Union: ICT Data and Statistics Division, 2014). ............................................................................. 14 Figure 4: Power consumption and Access bit rate for different ICTs (Vereecken, et al., 2011) ... 15 Figure 5: The general idea of offloading........................................................................................ 16 Figure 6: A Femtocell .................................................................................................................... 17 Figure 7: Mobile data offloading process by Oracle (Ramakrishnan & Rotundo, 2014) ............... 17 Figure 8: GSM network architecture ............................................................................................. 19 Figure 9: RSS .................................................................................................................................. 20 Figure 10: A simplified illustration of the Activity lifecycle, expressed as a step pyramid ........... 22 Figure 11: flowchart summarizing signaling process .................................................................... 26 Figure 14: Starting interface for the user’s application: Mopho ................................................... 29 Figure 15: Case1 ............................................................................................................................ 30 Figure 16: Interface with place name and Telephone number text field and have Add button .. 32 Figure 17: Map showing the conventional route of call data in mobile network. ........................ 41 Figure 18: Map showing the alternative route for call data in the mobile network ..................... 42 [5] List of tables Table 1: user table from data base containing information about the user's offloeaded point .. 31 Table 2 showing the database after inserting a new access point................................................ 33 [6] Abstract Offloading has become an interesting topic in telecommunications in the recent years prompted by seeking solutions for data traffic aggression and the inadequacy of bandwidth in wireless telecommunication. In this report, we present our work: mobile to-fixed line offloading. The objective of this work is to implement software that performs offloading signaling process from the mobile network to the fixed-line network by creating an integrated environment in which an end-user application communicates with the operator’s switching system. Based on the user’s queries, the operator carries out offloading to the targeted fixed-line destination. We carried out this work by programming software for the users that enables them of activating/ deactivating this service as well as adding/deleting targeted points anytime they wish to do so with a need for having internet access at the time. We present in detail the limits of this work. Moreover, we present general knowledge about offloading and its types and other knowledge that is essential in order to carry out offloading. We show results obtained by this work and discuss them. Furthermore, we state our ongoing work in bid of improving and developing this work. Finally, we have our conclusion for this work. [7] 1. Introduction 1.1About this project In this project we wish to implement a mobile service for mobile to fixed-line offloading. As the title suggests, this service, which is to be conducted by the client Mobile network operator (MNO), is about offloading received mobile calls to the fixed-line path available near the client. Therefore, the call will not be routed throughout the mobile operator’s network but rather throughout the fixed-line network. The name that we chose to present this service to the client is Mopho, indicating the first syllables of the two words mobile and phone. Our mission is to facilitate such redirection regarding end user’s query as well as controlling the switching process. The service is to be presented as end user service with the user having all the freedom to choose when to activate the service with no effect on the quality of service. 1.2 Significance of this work This work carries significance for both client and operator comes as follows: 1.2.1 Benefits for the client For the client, it is known that many people wish to not be disturbed by calls while they are at work and they would like to hand on calls answering for someone else on duty. Moreover, this will lengthen the battery lasting time as the mobile will already be callfree while the offloading is enabled. Additionally, many people would prefer using cordless phones instead of mobile phone regarding health issues. 1.2.2 Benefits for the operator For the operator, the importance of this service stems from its omission to the power in the base transceiver station needed to communicate with the client mobile station and, instead, the transmission will be induced throughout the fixed-line network. Bear in mind that the energy consumption of the fixed-line network is far less than that of the mobile network, in which most of the energy consumption happens at the Base station system. 1.3 Objectives of this work Our objective is to provide integrated software system solution for signaling process for the offloading as follows: First, implementing the client software application that’s to be [8] installed on the client’s platform with designing a dynamically user-friendly interface. Secondly, implementing the MNO server software and database that is to be integrated into mobile switching control (MSC) communication for the sake of this service. Thus we need to deploy new servers allocated to this service. Moreover, we will investigate offloading energy efficiency and its economic feasibility for the operator. Regarding the client, we will test the service and evaluate it from the client’s point of view. Notice that the last two objective need the operator permission and cooperation. For the time of writing this report, we have achieved the first two objectives. The extension of this work is to be carried out during the course of graduation project 2. 1.4 Scope of this work 1.4.1 Area of interest Our work will be carried out on the network and switching subsystem layer level. Thus, no processes will be dealing with inter-communication within Radio Station Subsystem layer level. Moreover, for the fixed-line network, this work will be dealing with gateway level. Here, the work is to be adapted to fit in with SS7 protocol as it is devoted to communication between mobile networks and the public switched telephone network (PSTN).Moreover, the offloading process can be done quite easily via internet network with no need for complication of sending signaling data via mobile network. Subsequently, the client should have access to the WLAN neighboring the fixed-line at least at the moment of enabling or configuring the service using his smartphone to do so. 1.4.2 Limitations to this work Our work is confined to the following considerations: the technique used in this project does necessitate that the client has smartphone on which the service application can be installed. Moreover, this project is about calls off-loading. Thus, data offloading is out of the scope of this work. However, studying data off-loading can be useful as it is more common in the world of telecommunication and both techniques have much in common. 1.5 Organization of this report This report includes everything regarding our project coming as follows: Introduction: here we briefly discuss the general idea about our project and its significance and our objective of carrying out such work. Moreover, we discuss what this work covers and what it does not. Constraints, Standards/ Codes and Earlier Couse work: In this section we discuss the constraints that we encountered and how we managed to solve them. [9] Moreover, we state the standards of the programming environments and the permissions that we used. For the Earlier course work, we discuss our progression in carrying out this work. Literature review: in this section, we state the essential knowledge about offloading and its types and we present general knowledge about Mobile networks, Telephony networks and Android platform. Moreover, we present related work. Methodology: In this section, we provide details about how our work goes into successive steps in order to achieve signaling operation and what happens afterwards to the calls as offloading functions. Results and analysis: In this section, we present our results based on covering different cases. We support our description by screenshots of the application as well as tables depicting database in order to show modifications based on the user’s personal configuration. Moreover, we present the virtual offloading environment which takes place at the operator’s side. Discussion: In this section, we discuss our results that we achieved and what our results represent in term of quality of service. Ongoing work: In this section, we state what we wish to achieve for future. We wish to implement and test this work as well as improving security and authentication. Conclusion: In this section, we come to our conclusion about the overall work and its performance and Appendices: Two appendices are attached to this report, the first one is for permissions used to work on android platform. The second appendix was a pseudo code for this project. 2. Constraints, Standards/ Codes and Earlier course work: 2.1 Constraints In this work, we faced some constraints as we created virtual system for carrying out experiments. The first constraint was that implementing virtual server caused a lot of technical issues including its reliability and the hardship of getting the Internet protocol (IP) for the virtual server as it kept changing with every new connection to the local area network, the solution was to make flexible code that only used a class responsible for acquiring the new IP without the need for changing the whole codes. Moreover, we faced the problem of collecting enough data to test the reliability of the code. For the time being, the code has been tested on few number of virtual clients (i.e. SIM cards and [10] platforms).However, this is not an issue since the code is to be thoroughly tested after its implementation into the network. 2.2 Standards The standards used in our work are as follows: for the client’s software, the software was codded for Android platform with targeted SDK version 20 and minimum SDK version 14. Moreover, we used some permissions for using mobile features (see appendix A). The code was edited using ADT package version 23.0.2.1259578 provided by The Android Open Source Project and Eclipse platform version 4.2.1 provided by eclipse.org. As eclipse enable flexibility of creating graphical user interface (GUI), we used XML language in order to implement graphic elements. Moreover and in order to have a visually appealing interface, we used Adobe Illustrator CS6 for designing the cover of the android application and other elements. For the operator’s software: we used Wampserver platform version 2.5 that allows creating web applications in order to create our database and the management pages. This Wampserver version uses Apache HTTP server version 2.4.9 (WIN 64), PHP version 5.5.12 and MySQL version 5.6.17. . For user’s identification we used International SIM serial number which is unique to every subscription and for the identification of the WLAN related to the fixed-line we used Mean Access Control (MAC) address, which is an identifier unique to the access point that is to perform the internet access to activate or configure the offloading. 2.3 Earlier coursework Our course work spanned over the academic year of 2014/2015. Assignments were disseminated over the first semester and the second semester. The work was scheduled by our supervisor Dr. Ahmed Masri. For the first semester, the first assignment was writing a code that can communicate between android platform and Virtual server and checking for authentication. For that, we learned about android programming powered by our previous knowledge in object-oriented programming. The second assignment was to design android interfaces in order to fit with what the service should cover. Moreover, we created the database in the primal form for actual implementation. The third assignment was about generally debugging the code and improving the interface map and in this assignment we improved our code functionality by using JSON objective that encapsulate costume types of varies in order to be sent between both parties. [11] For the second semester, however, we encountered some challenges that were out of our hands. We had to wait for one operator’s response in order to incubate this project so as to implement it on operator’s switching center’s environment as we had planned for. Unfortunately, we didn’t receive any response from any mobile operator company despite many attempts of eliciting a response. This was a drawback for the advancement of our work for some time until we came up with an alternative solution. Fortunately, our plan worked. The solution that we came up with was that to dispense with any dependency on mobile operator for the time as we implemented our virtual offloading environment that was capable of performing the same functionalities that we had hoped we would have received from the operator’s side. We used Asterisk environment to function as the off-loading performer. Moreover, we used Elastix utility in order to deal with Asterisk operating system. Moreover, we used Visual Dial Plan Professional which supports graphical user interface that has access to Asterisk environment in order to build up dial plans in an easy way in order to implement our desired dial plan. Additionally, we utilized Zoiper to carry out calling process on internet network instead of using the conventional cellular environment. Notice that this modification did not affect the core of our service as offloading was still performed between different parties with only the need of having Mopho on the side of the subscriber just as in the case of handling signaling process to mobile operator’s switching system. Generally speaking, our knowledge in programming was the cornerstone for carrying out this work. Moreover, previous knowledge of mobile networking and telephony networking helped us virtually build the off-loading process including: signaling process and routing process. Since this work is to move further to implementation, this knowledge will be more useful practically. Knowledge of Computer networking was of key importance in order to conduct programming software that was capable of sending queries and receiving queries adhering to network ISO/OSI ubiquitous model. Knowledge of operating systems utilized for switching centers such as: Asterisk and its accessory programs was essential to establishing the offloading environment. Notice that Asterisk is not confined to virtual realization of switching systems but is actually relied on by mobile and land-line operators in order to manage their switching systems. 3. Literature review 3.1 General background Information and communication technologies (ICTs) are amongst the most prosperous and fast growing technologies in the world. One can learn about the immense increase in the scale of these technologies by merely looking at the number of subscriptions all over the world for different ICTs as it is shown in figures 1, 2 &3. [12] Figure 1: the numbers of fixed-line subscription in the world (International Telecommunication Union: ICT Data and Statistics Division, 2014) Figure 2: the numbers of mobile subscriptions in the world (International Telecommunication Union: ICT Data and Statistics Division, 2014) [13] Figure 3: the numbers of individuals using internet in world (International Telecommunication Union: ICT Data and Statistics Division, 2014). It’s obvious that the growing rate in the developing countries is far greater than that of the developed countries probably because in developed countries the market has almost been saturated and no more individuals are likely to have further subscriptions. This brings into questions the ability of communication technologies to keep up with this traffic aggression. In fact, the data traffic is growing exponentially. Statistically speaking, the data traffic is expected to experience a growth of 26 times between 2010 and 2015.This will be quite challenging for communication developers as well as service provides even in the most developed countries. While there are many attempts on improving data bitrates and channel efficiency for mobile technologies with presenting more efficient modulation techniques and more sophisticated high-speed circuit devices, there exist the fundamental boundaries for channel capacity as Shannon’s theory states for that we have, in wireless world, strictly scarce licensed bandwidth. With the hardship of employing new 4G cellular networks due to its high infrastructural and operational cost and its non-backward compatibility, developers thus should seek for other alternative solutions. Thus, offloading to a better-bandwidth channel appears to be a solution. Figure2 shows some communication technologies and their access bit rate related to their power consumption. [14] Figure 4: Power consumption and Access bit rate for different ICTs (Vereecken, et al., 2011) 3.2 Mobile to fixed-line Offloading: general review Offloading has become a popular topic in telecommunication recently. In brief, it is the use of alternative network to deliver data originally targeted for mobile networks. So instead of having access to internet via base transceiver station and then the cellular network or routing data packets through base transceiver stations and/or base station subsystem, data is offloaded to the alternative network. Figure4 illustrates this. Typically, the alternative network is any type of the fixed-line network such as: DSL, FTTx...Etc or the usage of hybrid system. For the end-point transmission, it can be achieved by deploying Wi-Fi access points or Femtocells as known also as small cells. [15] Figure 5: The general idea of offloading Femtocells were originally presented as a solution for mobile coverage problems indoor by reducing the distance between mobile station and base transceiver unit. And since its compatibility with IP backbone network as well as the cellular network, Femtocells can is one candidate for offloading. Nevertheless, for its prevalence indoor and outdoor, WiFi seems also to be quite an option for offloading. This bring us into questioning which technology is to be selected. On the one hand, Wi-Fi supports better data rates and it does not need license to operate in contrary to Femtocells. On the other hand, Femtocells are considered as an extension for mobile networks and therefore its compatibility with the mobile network is for its credit as well as having lower power consumption. However, we can’t determine which one would be more feasible and reliable and researches are demanded for this issue (Hasan, Intell. Syst. Res. Centre, Siddique, & Chakraborty, 2009). Commercial Wi-Fi can have data rate up to 54Mbps for IEEE 802.11a/g and up to 7Gbps for IEEE 802.11ac for it utilizes MIMO technology while rates in Femtocells transmission are still lower. (Cisco, 2014) [16] Figure 6: A Femtocell 3.3 Types of offloading Offloading can be for either data, voice or both. Data off-loading is mainly used to improve the service when it is not possible by the macro cells, typically in highly congested areas such as: shopping malls, stadiums, airports, campuses …Etc. due to bandwidth limitation. Thus, it enables users to experience data transmission as they would do if there were no congestion in a seamless and reliable fashion. Figure5 shows mobile data offloading process using geo-localization technique in order to find the nearest to-offload Wi-Fi access point. Figure 7: Mobile data offloading process by Oracle (Ramakrishnan & Rotundo, 2014) Voice off-loading appears to be a special service for those who seek for higher voice quality or they would like to experience off-loading as in clinics, offices ….Etc. Calls can be offloaded to the public switched telephone network or using IP- based techniques (Voice over IP). Offloading to PSTN seems easier to implement and it suffices the service [17] when there is no need for higher voice quality. However, this type of calls-offloading depends on the coexistence between the mobile network operator and the PSTN operator. Sometimes, interconnection charges for the PSTN, with the lack of cooperation between the two parties, can render offloading infeasible for the mobile operator (Cisco, 2006). However, in the world of telecommunication, strong alliances have been forged between different networks operators. For example, in Palestine we have the PALTEL group which embodies both the cellular operator (JAWWAL) and the fixed-line and internet access operator (PALTEL). 3.4 Related work There is many offloading work in the market. For example, Anaconda Mobile Company has introduced a new service that uses off-loading for calling back services in intercontinental scale. Anaconda Mobile claims that using landline network for calling instead of mobile network can considerably reduce the tariffs for the costumers (Anaconda Mobile Company, n.d.). 3.5 GSM networks GSM or commercially known as 2nd generation (2G) network is a mobile network that consists of radio frequency operating on the range of 824 MHz up to 925MHz. It carries the data on time slots with duration of 577 us for each one carrying 156.25 bits. The base of 3G network is a GSM so GSM is widely used in the world. The network components in any GSM system are: Base station subsystem Network subsystem Operations and Maintenance Subsystem [18] Figure 8: GSM network architecture The main component of the GSM system are: Mobile station (MS), Base station (BS), Mobile switching center (MSC) and Location register (LR).Subsystems for GSM are as follows: RSS (Radio Subsystem): this subsystem is responsible for covering all radio aspects Base station subsystem (BSS). NSS (Network and switching subsystem): this system is responsible for call forwarding, handover and switching and this layer will contact to our data base. OSS (operational subsystem): Here, this subsystem is for managing the network. The numbers of MSC are typically from 1 to 10 MSC per 1 million subscriber and 10 -100 BSC per MSC and 1000 of BTSs per 1 million subscriber and BSC serves up to 40 BTSs. For the radio subsystem (RSS) comprises the cellular mobile network up to the switching centers. A gsm network comprises many BTSs, each controlled by a base station controller and the BSS performs all functions necessary to maintain radio connections to a mobile station as follows: Base Transceiver station (BTS): radio components include sender, receiver, and antenna, connected to MS via the Um interface and to the BSC via the Abis interface. Base Station Controller (BSC): The BSC basically manages the BTSs and it reserves radio frequencies and handles the handover from one BTS to another within the BSS, and performs paging of the MS. [19] Mobile station (client Mobile Phone) make calls and receive them the MS contains: 1-Serial Number or SIM Serial Number which we used in our project. 2-PUK unlocking key. 3-IMSI international mobile subscriber number. 4-authentication key Ki. 5- Personal identity number (PIN). 6-IMEI international mobile equipment identity. Figure 9: RSS NSS is the main component of the public mobile network GSM: Connects the wireless network with standard public networks Performs handovers between different BSSs Comprises functions for worldwide localization users Support charging accounting and roaming of users between different providers in different countries. The main components of the NSS are: Mobile switching center and gateway mobile switching center. MSC (Mobile switching center): basically, it controls all connection via a separated network to/from a mobile terminal within the domain of the MSC-several. BSC can belong to a MSC. [20] MSC has Specific functions for paging and call forwarding, termination of SS7 , mobility specific signaling, location register and forwarding of location information, provision of new service (fax, data calls),support of short message service(SMS), generation and forwarding of accounting and billing information. GMSC(getaway Mobile switching center): The getaway is the center of communication of the outer networks and the functions of the GMSC are: Delivers calls between mobile between mobile networks and fixed networks (PSTN, other mobile networks) Performs the routing functions to the actual location of the MS Often implemented in the same machines as the MSC. 3.6 Android Mobile operating system based on Linux Kernel and developed by Google developers.it consists of multilayers of User interface based on direct manipulation. The OS uses touch inputs that loosely correspond to real-world actions, like swiping, tapping, pinching, and reverse pinching to manipulate on-screen objects, and a virtual keyboard. Android’s source code is released by google under open source licenses. Android is object-oriented programming concepts which uses most cases JAVA language which can be learned and Android components Create an activity Services Content providers Broadcast receivers Android manifest file Activity An activity represents a single screen with a user interface and most applications contain multiple activities also when a new activity start it is pushed onto the back stack. User interface can be built with XML or in Java, and we a can monitor lifespan through callback method like onStart() , OnPuase(),etc [21] Figure 10: A simplified illustration of the Activity lifecycle, expressed as a step pyramid 3.6.1 Services Services perform long-running operations in the background and it doesn’t contain a user interface also it is useful for things like network operations, playing music, etc. It runs independently of the component that created it and it can be bound to by other applications components, if allowed. 3.6.2 Content Providers Used to store and retrieve data and make it accessible to all applications and they are the only way to share data across applications, and it is exposes a public URL that uniquely identifies its data set, data is exposed as a simple table on a database model. Android contains many providers for things like contact and media. 3.6.2 Broadcast Receivers A component that responds to system-wide broadcast announcements like screen turns off, battery is low. Applications can also initiate their own broadcasts, these broadcast receivers contain no user interface and they can create status bar notification to alert the user 3.6.2 Android manifest This file is auto generated in the android application, and the application won’t start without it, it presents information about the application to the android system and it’s describes the components used in the application, declares the permission required to run the application and declares the minimum android API level that the application requires 3.7 Wampserver WampServer is a Windows web development environment. It allows you to create web applications with Apache2, PHP and a MySQL database. Alongside, PhpMyAdmin allows you to manage easily your databases. [22] 3.7.1 FUNCTIONALITIES WampServer’s functionalities are very complete and easy to use. With a left click on WampServer’s icon, you will be able to: Manage your Apache and MySQL services. Switch online/offline (give access to everyone or only localhost). Install and switch Apache, MySQL and PHP releases. Manage your server’s settings. Access your logs. Access your settings files. Create aliases. 4. Methodology In order to understand how this project works, figure y summarizes the whole process. Nevertheless, this project comprises two main phases: Implementing software for the signaling process. Implementing the environment responsible for routing calls through alternative path. Figure 11 Block diagram of the whole system Implementing Software: [23] Software is needed at the end-user point and the Switching system’s server point for signaling process. 4.1 The user’s application: Basically, the user’s application is responsible for: Subscription and recognizing user’s ID (authentication). Enabling or disabling the service. Flagging the targeted phone number for offloading as well as enabling the user of adding new points for service. We application was dedicated for android- environment platform, thanks to its open source and its ease and prevalence. We utilized the features of android and presented a graphic-user interface (GUI) for the user’s comfort. 4.2 The database server programming: In order to establish communication between user’s application and the signaling database, we used PHP and PHP MySQL environment to program intermediate codes that perform the following: Getting information from user’s application and search the database and inform the user back if results were negative. Editing the database based on the user’s new data. 4.3 Signaling procedure: Generally speaking, the methodology used was to code both client software and operator software with integration to each other. First of all, the platform should have access to the WLAN at the time of enabling the service in order to send the virtual signaling data. If there is no connection to WLAN, the process will not work. Notice that if there happens any disconnection after enabling the service, the client will not be able to either terminate or update the service. One suggested solution in the case of losing WLAN connection is to have the client sending an SMS to the operator in order to terminate the service. Since we had not obtained a static IP address by the time of writing this report, the user will have access to the application though no further steps will be taken. Having accessed to WLAN, The application will communicate with the database by sending the client’s SIM serial number. If the number exists at the time of logging in, the process proceeds to the next step. Otherwise, the application will be terminated. [24] The database, based on the SIM serial number, recognizes the user’s ID as well as all information belonging to this client. After informing the user that login has succeeded, a new user interface will appear to the user. This interface has an option for enabling/disabling the service depending on the previous status. If the user enables the service, the application will send the address of the access point related to the fixed-line to the database. For its uniqueness and reliability, MAC address is used. If the MAC address exists in the database, the server will set this address flagged on. Otherwise, the server will send the application back asking the user to add the new labeling point. On the previous interface, a new option will pop out asking the user to add this new location. Once the user uses the add option, a new interface appears. In this interface the user adds the place name and the phone number. Notice that the place name is for the user’s comfort as dealing with MAC address is not easy for the user. After setting the place name and the phone number, the application send this new update to the server, which updates the user’s information in the database accordingly. Now the server has all information about the client. The server communicates with the operator’s Mobile switching center’s server. Figure 11 summarizes these previous steps in flowchart fashion. [25] Figure 12: flowchart summarizing signaling process 4.4 Offloading process It is important to notice that our alternative plan was to use Asterisk-based environment in order to carry out offloading instead of utilizing the mobile operator’s switching center’s facilities. Therefore, we shifted our interest from the mobile operator’s assets to the Asterisk[26] based environment. As setting cooperation with mobile operator is still an option for future work, we elaborate on how the process would be carried out on the mobile operator’s side in Appendix C. Nevertheless, here we present handling offloading by the Asterisk-based environment in details as follows: First of all, an off-service user initiates a call to Mopho user using Zoiper utility. Notice that the user’s account on Zoiper must be registered previously on Asterisk server. Second, call is forwarded to Asterisk server. Asterisk server now checks for the SIP extension. If it does not exist in database, then a massage of unavailability will play before the call terminates. Otherwise, Asterisk starts the dial plan. After that, the visual dial plan embedded server starts to work after acquiring SIP extensions from Asterisk. Here the server communicates with Wampserver database in order to look up the status of Mopho user who has been called. If Mopho user has activated offloading service, the visual dial plan server will search the telephone numbers in order to find the telephone number whose flag is set to unity. If there’s no such flag, no routing will take place. If the Dial Plan server finds such a telephone number, an audio transformation massage will play informing the caller of the routing that will take action after playing this audio massage. After that, call is transformed to the Mopho user’s telephone number. Figure x illustrates the whole process. [27] [28] 5. Results and analysis The results came as follows: 5.1The first interface when starting the application The following interface appears at the beginning: Figure 13: Starting interface for the user’s application: Mopho 5.2 Case1: If the user is not authenticated: The application shows the following message to the user and shortly after that the application terminates. [29] Figure 14: Case1 5.3 Case2: If the user is authenticated: The application informs the user that login has succeeded .Then a new interface called homepage appears asking the client to either enable or disable the service as shown in figure12. [30] 5.3.1 Case1: If the access point is registered in the database: In this case, the state of this access point will be changed according to the client’s query. For enabling, the server sets the flagged on. For disabling, the server sets the flagged off. The following table contains the place name, telephone number and flag in addition to IDs for the user and the access point. The flag entry will be changed according to the user demand: Table 1: user table from data base containing information about the user's offloeaded point P_ID ID MAC_address Place 1 2 3 23 23 23 C0:14:CD:D8:C7:79 Home E8:94:F6:93:E7:95 Office D0:13:46:33:AB:7f Workshop Telephone number 092374229 092329958 092358445 Flag 0 1 0 5.3.2 Case 2: If the access point address does not exist yet in the database: The application will inform the user that this destination has not yet been registered to the database. A new interface appears to user with button” add” as it is shown in Figure12. [31] Figure 15: Interface with place name and Telephone number text field and have Add button 5.3.3 After inserting a new destination: When the user adds the new destination for offloading, his corresponding table in the database will be updated automatically. Notice that a new added destination will have its flag set on by default. The following table shows the user information after adding a new destination. [32] Table 2 showing the database after inserting a new access point P_ID ID MAC_address Place 1 2 3 4 23 23 23 23 C0:14:CD:D8:C7:79 E8:94:F6:33:E7:95 00:13:46:33:AB:7f F5:38:S7:E4:L4:45 Home Office Workshop New Place Telephone number 092374229 092329958 092358445 092365889 Flag 0 0 0 1 6. Discussion In this work, we implemented a system that was able of routing calls based on the receiver’s choice using a mobile application for the receiver. This application was called Mopho and it performed signaling process via internet network. Additionally, we created the database server in which users’ statuses and configurations are listed. Moreover, we used Zoiper as voice over IP utility in order to carry out calling as we dispensed with operator’s approval. We used Visual dial plan program in order to handle the calls coming from Zoiper in order to route them according to the receiver’s preferences specified by Mopho. 7. Future work Since we have changed our interest to implementing this service using voice over IP utilities, we now think of making our work into an actual smartphone application that offers smart solutions for calls traffic control. Therefore, we are willing to implement our own voice-over-IP environment that will be able to distribute SIP extensions over users and handle them. We also think of merging both the Voip software with Mopho software so as to make it more convenient for the customer to use. These options need thorough studying in terms of applicability and feasibility. 7.1 Technical issues In addition of that, here are some technical issues that we believe they will improve the user’s experience for Mopho application. Creating white list: many users would need not to offload all their incoming calls as there are some numbers of interests such as: Family member’s mobile number, friend’s number… Etc. Thus white list can help users add/delete these numbers in an easy way. Improving graphics of the GUI: We wish to create a better-looking GUI for the sake of marketing. Security and authentication: Since this service is to be implemented in the mobile network environment and charging calls is involved in the process of offloading, security and authentication are of key importance. We used SIM [33] serial number for authentication but we wish to increase the level of authentication by adding more parameters in this process. Likewise, we will employ our knowledge in decryption for securing signaling data as data travels throw WLAN which is prone to attacks. Solving the problem of WLAN disconnection: As we stated before, our work is fully dependent on having access to internet and thus any disconnection after activating the service will not enable the costumer to terminate the service. Here, we would like to use an SMS-signaling message that will enforce the service to be terminated. Help interface: we wish to provide the user’s application with a help interface in order to guide using this service. Solving the problem of having many WLAN access points neighboring the fixedline: Usually the access point that is the closest to the fixed-line destination is the one that the user is expectedly to connect to and send its MAC address. However, this is not always the case as the operation of accessing the service could be in an area crowded by access points for different landlines. Here, we wish to solve this problem by using multi-access point’s identification. 8. Conclusion Offloading is now essential in the world of telecommunication if service providers wish to cope with the unprecedented explosion in data traffic. The objective of this work is to create a system that performs calls offloading by allowing the user to activate/deactivate or configure the service by using android-platform application installed on the client’s smartphone. As a result, in this work we were able to create the mobile user application that needs wireless internet connection. Moreover, we created a virtual server that reads and sends data to the application. The server has database that contains the users’ information and therefore only authenticated users can get this service. This database has also the targeted fixed-line destination addresses labeled by their neighboring WLAN access points whose flags alter depending on the user query. We carried out the offloading process using voice over IP technique. We created a dial plan that was able of reading SIP extensions of callers and based on the destination called, the dial plan performed offloading after reading configuration of the receiver from the database handled by Wamp server. Our work can be extended to a fully functioning application that can be installed in market or it can still be considered for any cooperation with a mobile operator company. [34] References Anaconda Mobile Company. (n.d., n.d. n.d.). OFF-LAOD CALLING. Retrieved from Anaconda Mobile: https://www.anacondamobile.com/index.php?route=product/category&path=59_73 Cisco. (2006, June 1). SpecialCallOffload_WP_0104. Retrieved from Cisco Systems,Inc.: http://www.ipv6.cisco.com/assets/cdc_content_elements/flash/mobile_sols/partners_s ite/pdfs/ipngn/itp/SpecialCallOffload_WP_0104.pdf Cisco. (2014, March a4). 802.11ac The Fifth Generation of Wi-Fi Technical White Paper - Cisco. Retrieved from www.cisco.com: http://www.cisco.com/c/en/us/products/collateral/wireless/aironet-3600series/white_paper_c11-713103.html Hasan, S., Intell. Syst. Res. Centre, U. U., Siddique, N., & Chakraborty, S. (2009). Femtocell versus WiFi - A survey and comparison of architecture and performance. Wireless Communication, Vehicular Technology, Information Theory and Aerospace & Electronic Systems Technology, 2009. Wireless VITAE 2009. 1st International Conference on (pp. 916 - 920). Aalborg: IEEE. International Telecommunication Union: ICT Data and Statistics Division. (2014). ICT FACTS AND FIGURES. Geneva: International Telecommunication union. Ramakrishnan, M., & Rotundo, C. (2014). Oracle Process Accelerators for Telecommunications. Retrieved from Oracle| hardware and software, Engineered to work together: http://www.oracle.com/us/technologies/bpm/mobile-data-offloading-1969405.pdf Vereecken, W., Van Heddeghem, W., Deruyck, M., Puype, B., Lannoo, B., Joseph, W., . . . Demeester, P. (2011, June 6). Power consumption in telecommunication networks: overview and reduction strategies. Communications Magazine, IEEE, pp. 62 - 69. [35] Appendices: Appendix A: Permissions These following permissions were used in order to enable the application to work on android platform based on system requirements: Uses SDK. Android.permission.ACCESS_NETWORK_STATE. Android.permission.ACCESS_WIFI_STATE. Android.permission.INTERNET. Android.permission.READ_PHONE_STATE. Android.permission.WRITE_EXTERNAL_STORAGE. Appendix B: Pseudo code: Android Mopho Program Main activity class Start main activity class extends activity; Declare STRING (SIMserial, mac_address,network_name,input_stream,jasn,line,name) as a NULL; Oncreate method; Create wifi manager; Create wifi info; Create telephony manager; Get BSSID of wifi info and store it in the mac_address; Get SSID of wifiinfo and store it in the Network_name; Get serial number of telephony manager and store it in the SIMserial; Execute checkSIMserial method; Execute getcontent method; CheckSIM serial number method; Define httpclient, httppost, arraylist<namevaluepairs>, Responsehandler<string>; Add SIMserial on the name value pairs; If reposone handler contains ‘SIM serial number found’; True: toast ‘login success; Make new intent to first activity class; Start intent; [36] False: toast ‘login failed’; Terminate; Exception error: make toast ‘failed to connect to server’; Terminate; Getcontent method; Define httpclient, httppost, arraylist<namevaluepairs>, Responsehandler<string> , httpentity, httpresponse; Store the Jason in the name; Make exception: Logcat ‘fail 1’ ; First activity class Start first class extends activity; DECLAR STRING(test,mac_address) DECLAR BUTTON(bb) On Create method Create wifi manager; Create wifi info; Get BSSID of wifi info and store it in the mac_address; Assign view by id of b1 to bb button; Set bb is invisible; Declare Switch x; Set x checked or unchecked; If x is checked: execute checkmacea (url+’mactest.php’); Make toast ‘Action done’; If x is unchecked: execute checkmacea(url+’desflag.php’); Make toast ‘Action done’; bb set on click Listener start intent I (first class ,add class) start activity i Checkmacea method Define httpclient, httppost, arraylist<namevaluepairs>, Responsehandler<string>; Add mac_address on the name value pairs; If response handler contains ‘mac found’; True: Set bb visibility false Set test true [37] False: toast ‘Place not found; Set bb visibility true Set test FALSE Terminate; Exception error: make toast ‘failed to connect to server’; Terminate; Add activity class Start add class extends activity DECLARE String mac_address ; button anr,rh ;edittext e1,e2 Oncreate method Create wifi manager; Create wifi info; Get BSSID of wifi info and store it in the mac_address; Assign anr id to anr; Assign pn1 id to e1; Assign pnn id to e2; Assign rh id to rh; Set anr visible; Set rh invisible; Anr on click listener: insert(url+’insert.php’); Rh on click listener: new intent I (add.class,fisrt.class); Start activity(i); Insert method Define httpclient, httppost, arraylist<namevaluepairs>, Responsehandler<string>; Add mac_address on the name value pairs; Add place on the name value pairs from e1; Add tel_number on the name value pairs from e2; Add id on the name value pairs from mainactivity.name; If response contains registered; True : make toast ‘Registration success’; Set anr to invisible; Set th to visible; Set x to true; False : make toast ‘Registration failed’; Set anr to visible; Set th to invisible; [38] Exception error: make toast ‘failed to connect to server’; Terminate; PHP PCODES SIMserialcheck $hostname = ‘ local host’; $database = ‘SIMserialdb’; $localhost = connect to mysql($hostname,’root’,””); or trigger_error; Mysql select($database,$localhost) $SIMserial = Get SIMserial from android $qs = "SELECT * FROM SIMserialinfo WHERE SIMserial= '".$SIMserial."'" $Query =mysql query($qs) or die $rows = mysql number of rows(#Query); If($rows == 0 ) echo ‘SIMserial not found’ Else echo’SIMserial found’ Mysql close ($database); Mactest $hostname = ‘ local host’; $database = ‘SIMserialdb’; $localhost = connect to mysql($hostname,’root’,””); or trigger_error; Mysql select($database,$localhost) $mac_address = Get mac_address from android $qs = "SELECT * FROM mac WHERE mac_address = '".$mac_address."'; $Query =mysql query($qs) or die $rows = mysql number of rows(#Query); If($rows == 0 ) echo ‘mac not found’ Else echo’mac found’ $query_2 = "UPDATE mac SET flag = '1' WHERE mac_address = '".$mac_address."'"; $query_ex = mysql_query($query_2) or die(mysql_error()) [39] Mysql close ($database); Desflag $hostname = ‘ local host’; $database = ‘SIMserialdb’; $localhost = connect to mysql($hostname,’root’,””); or trigger_error; Mysql select($database,$localhost) $mac_address = Get mac_address from android $qs = "SELECT * FROM mac WHERE mac_address = '".$mac_address."'; $Query =mysql query($qs) or die $rows = mysql number of rows(#Query); If($rows == 0 ) echo ‘mac not found’ Else echo’mac found’ $query_2 = "UPDATE mac SET flag = '0' WHERE mac_address = '".$mac_address."'"; $query_ex = mysql_query($query_2) or die(mysql_error()) Mysql close ($database); Insert $hostname = ‘ local host’; $database = ‘SIMserialdb’; $localhost = connect to mysql($hostname,’root’,””); or trigger_error; Mysql select($database,$localhost) $mac_address = Get mac_address from android $qs = "SELECT * FROM mac WHERE mac_address = '".$mac_address."'; $Query =mysql query($qs) or die $rows = mysql number of rows(#Query); If($rows == 0 ) echo ‘not Registered’; Else echo’ Registered’; $query_insert = "insert into mac values ('',".$id.",'".$mac_address."','".$place."','".$tel_number." ','1') "; [40] $query_ex = mysql_query($query_insert) or die(mysql_error()); mysql_close($localhost); Appendix C: Offloading Process (in case of using MSC’s assets) Having obtained all signaling data regarding the service, Offloading is performed when anyone calls the user. Call routing without offloading: In order to see what offloading does to the network. Let us look at the call routing process without offloading. Typically, the routing process comes as follows: The call starts its route at the end user point by communicating with the BTS using RF waves. After that the BTS communicate with its corresponding BSS. The call takes its route to the MSC by means of BSSs connections. If the destination is in another network, such as: PSTN, another mobile network, the call travels to the GMSC and then to be relayed to the other network’s gateway. If the destination resides in the boundaries of the same network, calls are routed to their destination by the same fashion but inversely, i.e. from MSC to (other MSCs) to BSS to BTS and eventually to the destination mobile station. Figure 17: Map showing the conventional route of call data in mobile network. Call routing with offloading: Instead of having the conventional route. In offloading the destination, the call travel from the mobile station in the same way until it reaches the MSC layer. There, if the call is to go to an [41] offloaded destination, the call go on travelling to the GMSC, in which the call is deported to the PSTN gateway. The following figure shows the route in the offloading case. Figure 16: Map showing the alternative route for call data in the mobile network [42]