logo image

Efficient Segment Scheduling for Video Streaming over Peer to Peer Network

P2P systems were introduced keeping in mind the limitations of client-server architecture in an Internet-scale distributed environment (such as World Wide Web). In P2P systems, every node acts both as a client and a server and contributes by providing access to its computing resources. It follows three main principles which provide a generic overview of any p2p framework. • The principle of sharing resources: all P2P systems involve an aspect of resource sharing, where resources can be physical resources, such as disk space or network bandwidth, as well as, logical resources, such as services or different forms of knowledge.

By sharing of resources applications can be realized which could not be set up by a single node. • The principle of decentralization: this is an immediate consequence of sharing of resources. Parts of the system or even the whole system are no longer operated centrally. Decentralization is in particular interesting in order to avoid single-point-of failures or performance bottlenecks in the system. • The principle of self-organization: when a P2P system becomes fully decentralized then there exists no longer a node that can centrally coordinate its activities or a database to store global information about the system centrally.

Therefore nodes have to

Need essay sample on "Efficient Segment Scheduling for Video Streaming over Peer to Peer Network"? We will write a custom essay sample specifically for you for only $13.90/page

self-organize themselves, based on whatever local information is available and interacting with locally reachable nodes (neighbors). The global behavior then emerges as the result of all the local behaviors that occur. Having reviewed P2P frameworks, it is important to understand the importance of segmentation and the need for resource of segment scheduling. Owing to their large sizes, video objects have to be segmented. Segmentation also enables a client to receive different portions of the same object from different senders at the same time.

Unlike file sharing, P2P streaming imposes timing constraints on the data transfer from the senders to the receiver. This means that every segment should have a deadline for arrival at the receiver. The more segments missing deadlines, the worse the user’s perceived quality will be. This necessitates the need for scheduling. A schedule tells each peer which segment should be sent and to whom. A good schedule could shorten the completion time and efficiently utilize all resources, like network bandwidth. P2P file-sharing systems have gained tremendous popularity in the past few years.

More users are continually joining such systems and more objects are being made available, motivating other users to join. The traffic generated by P2P systems accounts for a major fraction of the Internet traffic today [1], and is bound to increase [2]. The increasingly large volume of P2P traffic highlights the importance of caching such traffic to reduce the cost incurred by Internet Service Providers (ISPs) and alleviate the load on the Internet backbone. With the increasing number P2P streaming systems (ex. refs) being deployed on the Internet, P2P streaming technology has achieved a great success.

Most of these systems employ pull-based streaming protocol. In this type of protocol, each node independently selects its neighbors to form an unstructured overlay network. This unstructured network is known as the mesh-overlay P2P network. The live media content is divided into segments and every node periodically notifies its neighbors of what packets it has. Then each node explicitly requests blocks of interest from its neighbors according to the notification given to them. The well-known advantages of pull-based protocol are its simplicity and robustness (refs).

In P2P streaming study there are a lot of efforts made on enhancing the throughput of a P2P overlay. The maximum throughput that a P2P overlay can achieve is the total upload capacity of all peers divided by the peer number. Therefore, the rest of this paper is organized as follows. Section II describes the scheduling problem in more detail. In Section III, we summarize the related work. Our P2P scheduling algorithm is described and qualitatively compared to other common scheduling algorithms in Section IV and V respectively.

We evaluate the performance of our algorithm and compare it to other popular scheduling algorithms in Section VI. And finally, section VII concludes the paper and outlines future directions for this work. Related work Due to the dramatic increase of broadband user population, there has been large-scale deployment of P2P file sharing systems in the Internet. In order to make productive inroads for efficient segment scheduling of these video files, several existing and upcoming techniques were studied.

This section will briefly discuss each along with their advantages and limitations. 2. 1 CoolStreaming/ DONet CoolStreaming is a data-driven Overlay Network for Peer-to-Peer Live Media Streaming [4]. Its fundamental aspects are that every node periodically exchanges data availability information with a set of partners, and retrieves unavailable data from one or more partners, or supplies available data to partners. CoolStreaming is easy to implement, since it does not require having to construct and maintain a complex global structure.

It has proved to be efficient, as data forwarding is dynamically determined according to data availability whilst unrestricted by specific directions. It is robust and resilient, as the partnerships enable adaptive and quick switching among multi suppliers. This paper [4] proposed a member and partnership management algorithm, and a rarest first scheduling algorithm. The performance of the simulation and the algorithm is evaluated extensively on PlanetLab and the control overhead and transmission delays are kept low. The real implementation called CoolStreaming was released May 30, 2004 and had over 30000 distinct users.

The positive assets of this paper were that the description of the working of the system were well accounted along with a clear explanation of the experimental set up which went on to show extensive results from PlanetLab simulations. The implemented algorithm was deployed in real life and usage statistics were provided hence the popularity of the product. The streaming session results, i. e. continuity index, were given based on both the PlanetLab tests and real life deployments (as the program contained a data gathering module).

The scheduling algorithm employs a simple rarest-first algorithm and pseudo-code was illustrated along with the algorithm, which were fairly easy to implement. A few negative aspects of this paper were the failure to mention the reasoning for choosing rarest-first scheduling algorithm (which agreeably is an efficient algorithm, though unexplained here); the paper failed to mention if any other scheduling algorithms were considered whilst performing the simulation for this software. There was also no account of how bandwidth and deadlines were estimated.

There was only an indication that videos streamed were CBR and there were no comparisons with other algorithms to indicate the performance evaluation of the scheduling algorithm used. The results specify the continuity index for the overlay network but there’s no mention of a metric similar to the balance index, i. e. , no information was supplied regarding the distribution of the load during each streaming session among the supplier peers. 2. 2 CoopStreaming CoopStreaming is a novel Peer-to-Peer System for Fast Live Media Streaming [5].

It is a complete p2p video streaming system which splits the video into quality layers; the scheduling algorithm used, gives lower layers a higher priority. The scheduling within a layer is taken from CoolStreaming. When a new node joins, scheduling of the first segment is random since the algorithm is not sure how large the segment may be. The positive assets of this paper were its ability to evolve a complete system. The Matlab simulation carried out compared performances with tree-based models and gossip-based models.

A few negative aspects noted were the lack of detail and absence of performance results. The paper was not grammatically sound and no practical implementations of the proposed idea were mentioned. 2. 3 Issues in Offering Live P2P Streaming Service to Residential Users This was the subsequent paper surveyed which dealt with problems in providing live P2P streaming service to residential users [6]. It illustrates the issues encountered in deploying live mesh-based P2P streaming apps in residential areas viz. peers may have very low bandwidth.

It goes on to explain how a mesh-based P2P streaming mechanism behaves in an environment with either insufficient aggregate bandwidth and/or heterogeneous access link bandwidth among peers. It specifies the how the delivered quality (to individual peers) is affected as the aggregate resource decreases and goes on to compare the effects across peers with different access link bandwidths. It also evaluates the chances and the workings of how free-riders may affect the overall performance of the system as well as delivered quality (to individual peers).

There is a brief coverage on scheduling algorithm and the internet protocol used for delivery is TCP. The paper describes how a scheduler requests a random subset of missing packets from each parent to fully utilize its bandwidth; and in order to achieve load balancing, if a packet is available at more than one parent, it is requested from the parent that has the lowest ratio of requested packets. It has also acknowledged the negative effect free-loaders have on the overall delivered quality.

One of the several positive assets of this paper are that it takes several practical issues regarding residential internet connections into consideration. Also, in this paper the content is encoded with MDC (Multiple Description Coding) with 5 descriptions. Amongst the negative aspects of this paper are the fact that random schedulers have been employed which are not considered efficient and the paper does not implement a real life simulation or prototype. 2. 4 Low latency video streaming over peer-to-peer networks This paper was surveyed in order to gain useful insights into the low latency video streaming over peer-to-peer networks [7].

This paper describes the framework of a live-streaming application which maintains a complex application multicast tree which belongs to the application layer. The scheduling algorithm used, focuses on giving priority to the frame, which (if missed) would cause most distortion in the video. The positive asset of this paper was the usage of NS-2 simulation. The negative aspects of this paper could be pointed towards the fact that there was no mention of a practical implementation and it only compares the scheduling with a basic sequential scheduler. 2. 5 On Peer-to-Peer Media Streaming

This paper examines peer-to-peer media streaming problem as compared to peer-to-peer file sharing [8]. It describes an algorithm for optimal data assignment for multiple sender peers involved in the media streaming. The session Protocol DAC p2p used achieves: – a faster amplification of peer-to peer system capacity; – a higher admission rate and fewer rejections (before a peer is admitted) among all requesting peers; and – a shorter average buffering delay amongst all admitted requesting peers. The positive assets of this paper lie in its optimal assignment for all segments from end to beginning.

This assignment of segmentation starting from the last to the first results in an assignment similar to the greedy algorithm (earliest first). The negative aspects of this paper were its inability to address segment availability. There was no mention of the former only segment deadlines were specified. It assumes the videos to be CBR and VBR video types were not mentioned or addressed. It also made assumptions that the sender bandwidth occurred in multiples of ? , which was amiss; and since the algorithm is sensitive to this information (of aforementioned bandwidth assumptions), it simply would not work with any estimated bandwidths.

The paper also failed to mention any prototype results. The scheduling algorithm used assigns the segments to the senders in the reverse order. If two senders potentially deliver the same segment simultaneously, but their bandwidths are different, this algorithm will assign the segment to the slower sender. The practical implications of this function were not addressed. There was no mention of what might happen if the segment was assigned to the faster sender. Also, it failed to mention whether in practical implementation bandwidths are overestimates or underestimated. 2.

6 On Scheduling of Peer-to-Peer Video Services This paper deals largely with the selection of senders from a larger group of nodes [9]. It does not specifically deal with scheduling of video segments. It does mention the schedule however, the method is rather naive. Having reviewed the paper it was learned that, the fundamental concept is simply to calculate the time required to download the entire video from a number of nodes and use it to set the delay. 2. 7 The Optimal Scheduling for Media Streaming in Data-driven Overlay Networks This paper models the scheduling problem as min-cost network flow [10].

It compares several p2p video streaming algorithms based on the following parameters: – Global optimal algorithm (non-practical, since it requires global knowledge) – Proposed distributed algorithm (practical version of the global optimal algorithm) – DONet method – Round-Robin method – Chainsaw method (random) When determining the block priority, the algorithm used combines both rarest-first and earliest deadline factors. The paper compares the scheduling algorithms as they perform in the system and not as an isolated task. Some of the positive assets of this paper lie in the fact that it employs an optimal theoretical algorithm.

It also, has an efficient heuristic algorithm that the experiments have proven to be superior to the others. This paper was found to have several negative aspects like the usage of a complex algorithm which is not easy to implement. The paper illustrated only a computer simulation and was not tested for a real life system like PlanetLab. There was no mention about the real goal of the scheduling, viz. minimizing the missed segments and the real user behavior was not taken into account. In a real system, the traffic isn’t only due to scheduling, i. e.

the bandwidth of the other loads will be determined by other factors also; this was not taken into account. The mechanism showed failed to account for the effect increasing no. of senders may cause. Also, the maximum bandwidth taken into account was estimated up to 500 Kbps, however some high quality videos have been known to stream at 1 Mbps. While discussing the results, important details of the streaming sessions were unaccounted for. For example, the no. of senders was not mentioned. The CoolStreaming algorithm (ref Section 2. 1), has a continuity index of approximately 0. 98 when streaming 500 Kbps with 4 or more senders.

This paper claims that the CoolStreaming algorithm approximately reaches 0. 80 when streaming at 500 Kbps. This shows a biased behavior towards the algorithm used and the inadequacy of a real world simulation. There was no in depth analysis of streaming sessions and it failed to mention important performance metrics like fairness index and sharing index. There was no mention of the former only segment deadlines were specified. It assumes the videos to be CBR and VBR video types were not mentioned or addressed. It fails to mention how deadlines are approximated and how the continuity index is calculated.

There was no explanation of whether the streaming traces (results obtained from test runs) compared against the estimates deadlines or if they were compared against the real video trace files. 2. 8 PRIME: Peer-to-Peer Receiver-drIven MEsh-Based Streaming This paper portrays a few problems with a tree-structure overlay [11]. On the positive side, it depicts the advantages of using a mesh-based overlay; however, it fails to discuss its scheduling algorithm in detail other than providing the fact that the packets are randomly requested from neighbors. 2. 9 Distributed Multimedia Streaming over Peer-to-Peer Networks

This paper focuses on two issues in peer-to-peer media content distribution systems [12]: ? The first issue addressed in this paper was transmission scheduling of the media data for a multi-source streaming session. This paper also realized a sophisticated scheduling scheme, which would result in minimum buffering delay. ? The paper then went on to focus upon fast distribution of media content in the peer-to-peer system that is self-growing. A mechanism accelerating its speed, at which the system’s streaming capacity increases, is also proposed. ? It also presents a scheduling scheme called fixed-length slotted scheduling (FSS).

The paper compares it to OTS [8]. Unlike OTS, FSS employs variable length segments whose size is determined based on the bandwidth with which each segment is transmitted. The positive asset of this paper lies in its facility to compare FSS to OTS with respect to the length of the buffering delay and FSS turned out to be an improvement over OTS. The negative aspects of this paper are that the paper states that the P2P system is self-growing since the requesting peers can become supplying peers only after they receive all the data [12]. This is not true because a peer does not require all the data to become a supplier.

This paper uses the buffering delay as an evaluating metric however, it is not as important as other superior and more standard metrics like quality and continuity index which were failed to be addressed or mentioned. One of the other faculties amiss was that the buffering delay was kept at a minimum, which isn’t always the best thing. It was indicated that FSS schedules the video segments really close to their deadlines to minimize the buffering delay. This is an impractical evaluation and if this scheduling scheme is applied in practice, it may not fair well.

It has been observed from practical experience on PlanetLab that due to network fluctuations, the bandwidth estimates change frequently and this could have a detrimental effect on the performance of FSS. The paper fails to demonstrate the effects the number of senders have on the performance. There was an absence of simulation results for scheduling and no prototype system was generated and therefore, there were no real implementation results to speak of. 2. 10 Efficient Search and Scheduling in P2P-based Media-on-Demand Streaming Service

This paper developed a generic buffer-assisted search (BAS) scheme to improve partner search efficiency by reducing the size of index overlay [13]. It developed a novel scheduling algorithm based on Deadline-Aware Network coding (DNC) to fully exploit network resources by dynamically adjusting the coding window size. The extensive simulation results shown, demonstrate that BAS can provide a faster response time with reduced control cost as compared to the existing search methods; and DNC improves the network capacity utilization and provides high streaming quality under different network conditions.

This paper models the scheduling problem as a network flow problem and carries out its scheduling scheme with that assumption. The positive assets of this paper are that it bases the scheduling on more than just local decisions. It claims that round-robin algorithm, smallest-delay model, and pull-based gossip model use simple heuristics whose local decisions make inefficient use of network capacities. An Optimal network coding algorithm is presented in this paper along with a distributed protocol.

Strong theoretical proofs of the algorithms have been depicted and it has been proven that DNC and NC algorithms outperform PGA with respect to network throughput (average number of segments a peer receives per second). The negative assets of this paper are that it fails to address to VBR videos and assumes each segment to have a one second long play-out time. Upon thorough review of the paper, a few practical concerns arose regarding the implementation of the network coding for streaming. Some of these concerns were: ? It was noticed that the system needed to use more peers in order to fully distribute the segments, i.

e. the senders should also be able to receive data from other senders and pass it to the receiver. ? In the simulation, all links have a bandwidth of 3Mbps or more whilst the streaming video has a bandwidth of 500 kbps. Keeping this information in mind, it would seem practical to stream from a single sender to achieve good performance. This fact was ignored and not reflected in the paper. ? There was an absence of in-depth analysis of the scheduling algorithm, i. e. there was no mention of how the performance might be affected by the number of senders or the effect of the bit-rate on the stream performance.

It was observed that after 700 seconds, the segment missing ratio for the PGA (CoolStreaming) and DNC was estimated to be the same. Once the system achieved stability, DNC was unable to provide an advantage over PGA with respect to the segment missing ratio. In addition, experimental results show that the start delay of DNC is only a slight improvement over PGA. The start delay of DNC is approximated to be between 1 to 2 seconds, whereas PGA has a start delay of approximately 3 to 4 seconds (after system warm up).

It is a known fact that in order to benefit from the effects of network coding, the segments have to be sent from the sender to the receiver through more than one path. Although the receiver has been encoded such that more information arrives sooner (possibly minimizing the buffer delay), the paper does not discuss the overall effects of routing all these extra segments through more peers on the network overlay. It is unlikely that all other links were allowed to remain idle and may not even be involved in streaming.

It is unclear as to what their contribution is and if this idleness is wastage of bandwidth. Furthermore, the paper discussed only its simulation results; there was no implementation of a practical prototype. However, authors claim to deploy a prototype on the PlanetLab system in the future. 2. 11 Peer-to-Peer Streaming of Stored Media: The Indirect Approach In this paper, the receiver-driven streaming used comes as a component that works with existing media streaming clients [14]. The Local Proxy Stream Server (LPSS) appears to be a commercial product.

The LPSS dwells on the client machine and takes care of the actual multi-sender streaming while it streams the received content to the local media player. It implements a tracker that keeps track of all other peers currently downloading/streaming the same content. The tracker maintains a global state about all the nodes in the system. It stores the entire media file streamed for later use, which is not necessarily a big ordeal for the users themselves. This paper uses a Block Scheduling Algorithm approach where, ? Bandwidth estimates are computed using synchronous exponential averaging.

? The streaming starts with Round-Robin assignment, which is equivalent to assuming that every sender has the same bandwidth. ? The scheduling algorithm attempts to minimize the request load on servers. ? Also, the scheduling algorithm follows an earliest deadline first pattern until it finds a potential miss (based on the bandwidth and load estimates, and block deadlines). When that happens, it attempts to perform a connection swap, which means reassigning the currently unassigned segment to another sender at an earlier time and taking the other segment from that peer.

This is an NP-Complete problem, however, it can be solved using a simple (and fast) heuristic approach and the pseudo code has been detailed in the paper. If the heuristic approach fails, a block splitting strategy is adopted. ? The algorithm observes that if a large block that is stuck with a slow connection were divided into smaller blocks, they could be downloaded in parallel, in a shorter time. This may help in some situations, but it also results in a higher HTTP overhead, therefore, it is reserved as a last resort approach only.

? Block splitting techniques are performed recursively until a feasible assignment is found. The positive assets of this paper are that HTTP is used as transfer protocol which makes it easier for integration with the existing infrastructure. The paper has reflected on the fact that it is relatively inexpensive to deploy web servers, i. e. to deliver streamed media data through HTTP. Unlike web servers, no media streaming peer system is as widely available or demonstrated and implemented in a wide-area setting.

A practical approach has been taken here by using the existing media servers over HTTP and RTP. Real prototype implementation and deployment have been carried out using PlanetLab and practical experiments have been conducted on this system. The experiments carried out show the effects of different number of senders or the different video bit rates; it is not reflected upon by using standard measures like continuity index but the information is very much present in other formats. The negative aspect of this paper is that since it uses HTTP for transferring data, it incurs a lot of overhead.

The overhead may be reduced if the block size is increased but larger block sizes result in reduced efficiency of scheduling. The paper has only considered CBR videos and no comparison has been made to other scheduling algorithms. There has only been one comparison and that has been with BitTorrent, which is clearly not a stream scheduling algorithm. The block scheduling algorithm which has been used is not new; it reflects an earliest deadline first approach with a few of fallback strategies such as, connection swapping and block splitting. 2.

12 Performance Comparison of Scheduling Algorithms for Peer-to-Peer Collaborative File Distribution The algorithms discussed in this paper were primarily focused on file distribution [15] and not streaming. However, this paper was surveyed for its good concepts and principles to be learned from file distribution and applying the analogies to the field of segment scheduling. The positive assets of this paper lie in the fact that it used The negative aspects of this paper were found to be 2. 13 Collectcast: A peer-to-peer service for media streaming In this paper a complete P2P system is presented [16].

It consisted of some very good simulations and PlanetLab implementation experiments that confirm its claims. Although this paper largely addresses P2P systems, there no discussion related to the details of any scheduling algorithm. The positive assets of this paper lie in the fact that it used The negative aspects of this paper were found to be 2. 14 Approximation Algorithms for Scheduling Multiple Feasible Interval Jobs In this paper the idea of assigning segments to the sender with the smallest estimated load has been motivated by the Least Earliest Completion First (LECF) scheduling algorithm [17].

The positive assets of this paper lie in the fact that it used The negative aspects of this paper were found to be CONCLUSION With the popularity of video on demand applications over Internet, the traditional client-server and content server at edge solutions are not adequate in handling dynamic viewer behaviors and do not scale well with a large audience. On the other hand, the P2P based solutions utilizing application layer overlay are becoming popular, because it is easy to implement and cheaper than duplicating content servers at edges.

The core benefit of P2P based solution is that it utilizes the buffering and uploading capacities of the participating peers, and provides a more scalable and robust content delivery solution. After a brief introduction to P2P systems and the principles they follow, segmentation and the scheduling problem; this paper went onto delve deeper into the scheduling problem in Section II which is essentially a QoS based problem of the quality of video delivered using a single receiver. The primary concept of this paper is to deal with the details concerning the requesting of video segments from other peers.

In order to ensure a smooth delivery, the components which must be omnipresent are – a set of senders, a range of segments available at each sender, bandwidth estimate of each sender, maximum incoming bandwidth of the receiver, a set of segments that are requested by the receiver, lengths of all segments requested by the receiver and deadlines of all segments requested by the receiver. These parameters however are subject to change, for which reason, recent snapshots of the system and network state are continually stored. The problem of creating an optimal schedule is NP-Hard and is described in section II-B.

Section III deals with the work related to the fundamental nature of this paper. CoolStreaming/ DONet was a robust, easy to implement and an efficient approach where data forwarding was determined dynamically based on data availability which in turn was exchanged periodically between nodes. A rarest first scheduling algorithm was used here with practical implementation and simulation. CoopStreaming describes a complete P2P system where the scheduling algorithm splits the video into parts giving the lower layers a higher priority.

The third paper discusses issues encountered in deploying live mesh-based P2P streaming apps in residential areas. Low Latency Video Streaming over Peer-To-Peer Networks deals with live streaming where the scheduling algorithm focuses on giving priority to each frame and has realized an ns-2 simulation. The next paper examines Peer To Peer Media Streaming which uses DAC to perform faster amplification of peer-to peer system capacity, a higher admission rate and fewer rejections and a shorter average buffering delay amongst all peers.

Scheduling of Peer-To-Peer Video Services uses an approach to calculate the time required to download the entire video from a number of nodes and use it to set the delay. The next paper on the Optimal Scheduling For Media Streaming In Data-Driven Overlay Networks which models the scheduling problem as min-cost network flow and in order to determine the block priority, the algorithm combines both rarest-first and earliest deadline factors. Prime discusses the advantages of mesh overlay structure and uses a schedule to randomly request the packets from their neighbors.

Distributed Multimedia Streaming over Peer-To-Peer Networks focuses on transmission speed of multi-source streaming session and fast distribution of media content which is self-growing. It utilizes the services of FSS algorithm for scheduling. Efficient Search and Scheduling in P2p-Based Media-On-Demand Streaming Service developed BAC and DNC, where BAS cheaper and faster response time and DNC improves network capacity utilization among other things. Peer-To-Peer Streaming of Stored Media makes use of a receiver-driven streaming that works with the existing media streaming clients.

It uses a block scheduling algorithm and a stream server called LPSS. The next paper was reviewed purely for its conceptual value and it was Performance Comparison of scheduling algorithms for Peer-To-Peer Collaborative File Distribution. Next, we surveyed Collectcast which was a complete P2P system with its own PlanetLab experiments to validate its claims. Lastly we overviewed Approximation Algorithms for Scheduling Multiple Feasible Interval Jobs which assigns segments to the sender with the smallest estimated load given by LECF. <continue brief conclusion of technical details of other sections>

DISCUSSION For most part of the survey conducted, it was observed that scheduling was not extensively discussed in most of them. It has also been typically noticed that in most approaches undertaken, the peers were assumed to have all segments. This may not be true in practice and counter-measures need to be taken to prevent missing segments or compensate with damage control once segments are missed or damaged. In this paper the availability of segments is not considered to (always) be present, this provides a mechanism to deal with missing or damaged segments in case of a failure. This paper considers

Read full document

Can’t wait to take that assignment burden offyour shoulders?

Let us know what it is and we will show you how it can be done!
×
Sorry, but copying text is forbidden on this website. If you need this or any other sample, please register
Signup & Access Essays

Already on Businessays? Login here

No, thanks. I prefer suffering on my own
Sorry, but copying text is forbidden on this website. If you need this or any other sample register now and get a free access to all papers, carefully proofread and edited by our experts.
Sign in / Sign up
No, thanks. I prefer suffering on my own
Not quite the topic you need?
We would be happy to write it
Join and witness the magic
Service Open At All Times
|
Complete Buyer Protection
|
Plagiarism-Free Writing

Emily from Businessays

Hi there, would you like to get such a paper? How about receiving a customized one? Check it out https://goo.gl/chNgQy