GSoC 2014 Ideas Page

Welcome to P2PSP Google Summer of Code (GSoC) 2014 project ideas page. We will use this page to develop possible project ideas. Please note that anyone who is interested can participate in this process. You do not have to be a GSoC student or mentor to suggest possible project ideas. If you want to suggest an idea, please, send an email with the subject "GSoC 14 Ideas" to info [at] p2psp.org.

The current list of ideas for the GSoC 2014 is:

 

  1. Implementation of the End-point Masquerading Set (EMS) of rules of the Peer-to-Peer Straightforward Protocol (P2PSP).
    1. Explanation: P2PSP is a minimal (easy to implement) protocol designed for the streaming of media (audio and video). At the present time, there is a working implementation of the DBS written in Python and available at Launchpad. The EMS handles those situations where two or more peers and behind a NAT device that performs IP masquerading (a framework commonly found when peers runs in private networks).
    2. Expected deliverables: A Python class that inherits the Splitter_DBS class of splitter.py and a Python class that inherits the Peer_DBS class of peer.py, both implementing the techniques described in the EMS.
    3. Knowledge prerequisites: Basic skills on computer networks and sockets, Bash and Python.
    4. Skill level:  Intermediate.
    5. Mentor: Vicente González Ruiz.

  2. Implementation of the NAT Traversal Set (NTS) of rules of the Peer-to-Peer Straightforward Protocol (P2PSP).
    1. Explanation: Another important aspect for improving P2PSP is that peers behind NATs can run with some form of restricted access from the outside. This set of rules defines how to provide this functionality.
    2. Expected deliverables: A Python class that inherits the Splitter_DBS class of splitter.py and a Python class that inherits the Peer_DBS class of peer.py, both implementing the techniques described in the NTS.
    3. Knowledge prerequisites: Basic skills on computer networks and sockets, Bash and Python.
    4. Skill level: Intermediate.
    5. Mentor: Vicente González Ruiz.

  3. Design and Implementation of a new source video from mobile phone (Android).
    1. Explanation: Mobile phones are nowadays present in everyone's pocket, meaning that there is a camera at virtually any populated place in the world. Giving users the chance to share what they are watching live with the rest of the world seems to be a good idea and is a natural application of the phone+Internet combination. On the other hand, P2PSP is a minimal (easy to implement) protocol designed for the streaming of media (audio and video). At the present time, there is a working Python implementation available at Launchpad. We propose the development of an Android app that captures the video of the camera and sends it to a streaming server (possibly Icecast) on real time. From there, P2PSP distributes the stream to the rest of the world.
    2. Expected deliverables: An application for Android that captures the video of the camera and send it to a streaming server (icecast) in real time.
    3. Knowledge prerequisites: Basic skills on computer networks and sockets, Android programming skill.
    4. Skill level: Intermediate.
    5. Mentor: Juan Álvaro Muñoz Naranjo

  4. Prevention of DoS attack by starvation.
    1. Explanation: In the P2PSP system it is necessary to code a method to mitigate a denial of service attack which consists of an attacker joining the team but not sending any chunk. If this happened, all nodes of the team would complain about the lost chunks after a given period of time, that depends on the buffer size and the bitrate of the stream. Under this situation, the splitter will remove the malicious peer from the team and will reject further connections from the same endpoint.
    2. Expected deliverables: A Python class that inherits the DBS class of splitter.py and a Python class that inherits the DBS class of peer.py, both implementing the techniques described in the DIS of rules.
    3. Knowledge prerequisites: Basic skills on computer networks and sockets, Bash, Python and JavaScript.
    4. Skill level: Intermediate.
    5. Mentor: Juan Álvaro Muñoz Naranjo.

  5. Prevention of DoS attack by stream spoiling.
    1. Explanation: In the P2PSP system it is necessary  a method to avoid attacks consisting on the injection of fake information into the team. An attacker can do this by sending poisoned chunks. A way to tackle this problem is by inserting one o more “trusted-peers”. These peers are authenticated as trusted to the splitter, but not to the rest of peer (the behavior of a trusted-peer is identical to any other peer making impossible for a poisonous peer to know these special peers). The source sends to the trusted-peers a hash code for every chunk sent to the team, using a reliable transmission protocol. Alternatively, hash codes for randomly chosen chunks are sent to the trusted-peers (note that the poisonous peer is not aware of which chunks were selected). If a poisonous peer sends an altered chunk to a trusted-peer, it will detect the change using the hash code and will notify the source, which will eject the poisonous peer from the team. 
    2. Expected deliverables: A Python class that inherits the DBS class of splitter.py and a Python class that inherits the DBS class of peer.py, both implementing the techniques described in the DIS of rules.
    3. Knowledge prerequisites: Basic skills on computer networks and sockets, Bash, Python and JavaScript.
    4. Skill level: Intermediate.
    5. Mentor: Leocadio González Casado. 

  6. Implementation of the Data Broadcasting Set of Rules (DBS) of P2PSP as a HTML5+WebRTC application *
    1. Explanation: Today, the Web browser is an indispensable tool to access information available on the Internet and HTML is the language used to describe the Web objects the browser interprets and displays to users. One of the most interesting additions in HTML 5 is the <video> label which enables the playback of a video embedded in Web pages. This possibility has open a range of multimedia applications and avoids the need of third party software to handle multimedia. At the present time, there is a working implementation of the DBS written in Python and available at Launchpad. This project proposes the implementation of the DBS of the P2PSP using HTML5+WebRTC.
    2. Expected deliverables: A Python class that inherits the DBS class of splitter.py implementing the WebRTC funtionality and a new peer build-in web browser.
    3. Knowledge prerequisites: Basic skills on computer networks and sockets, Bash, Python, JavaScript, HTML5 and WebRTC.
    4. Skill level: Intermediate.
    5. Mentor: Cristóbal Medina López

  7. Statistics module to measure the audience and other interesting data
    1. Explanation: This project addresses the implementation of a statistics module for the P2PSP that records information related to the stream, number of peers (audience) per minute, in/out of peers, total peers, etc. That set of data must be displayed a convenient graphical interface. A very interesting extension is to consider also the use of social sign-in (Facebook, Twitter, Google+).
    2. Expected deliverables: An application that displays graphs of all data recovered. 
    3. Knowledge prerequisites: Basic skills on computer networks and sockets, Python and JavaScript.
    4. Skill level: Intermediate.
    5. Mentor: Cristóbal Medina López

  8. Implementation of the Lost chunks Recovery Set (LRS) of rules of the Peer-to-Peer Straightforward Protocol (P2PSP).
    1. Explanation: In those contexts where a high packet loss ratio is expectable, this set of rules can help to improve the quality of experience of the P2PSP users..
    2. Expected deliverables: A Python class that inherits the Splitter_DBS class of splitter.py and a Python class that inherits the Peer_DBS class of peer.py, both implementing the techniques described in the LRS.
    3. Knowledge prerequisites: Basic skills on computer networks and sockets, Bash and Python.
    4. Skill level:  Intermediate.
    5. Mentor: Vicente González Ruiz.

  9. Implementation of the Adaptive Chunk-rate Set (ACS) of rules of the Peer-to-Peer Straightforward Protocol (P2PSP).
    1. Explanation: Sometimes it can be desirable that some peers send more chunks than others (by default, in the DBS all peers contribute the same amount of data). This set or rules propose an extension of the P2PSP to achieve this goal.
    2. Expected deliverables: A Python class that inherits the Splitter_DBS class of splitter.py and a Python class that inherits the Peer_DBS class of peer.py, both implementing the techniques described in the ACS.
    3. Knowledge prerequisites: Basic skills on computer networks and sockets, Bash and Python.
    4. Skill level:  Intermediate.
    5. Mentor: Vicente González Ruiz.

  10. Implementation of the Internet Gateway Device Protocol for NAT traversal.
    1. Explanation: Some "routers" runs this protocol allowing a local UPnP client to add and remove port mappings, among other thigs. Thus, a P2PSP peer behind a IGDP NAT can enable NAT traversal.
    2. Expected deliverables: A Python class that inherits the Splitter_DBS class of splitter.py and a Python class that inherits the Peer_DBS class of peer.py, both implementing the techniques described in the IGDP.
    3. Knowledge prerequisites: Basic skills on computer networks and sockets, Bash and Python.
    4. Skill level:  Intermediate.
    5. Mentor: Vicente González Ruiz.

We are currently working on this idea (6), in fact, we are involved in the Spanish Free Software University Contest but it is always possible to divide the project in several modules depending of its state in the moment of select the idea to be developed.