Skip to content

Google Summer of Code 2019

jordipv edited this page Feb 6, 2019 · 6 revisions

LISP (Locator/Identifier Separation Protocol) is a new network protocol that aims to improve the Internet in several ways. With LISP, where you are (location) and who you are (identity) are no longer tied to a single IP address. It follows a “map-and-encap” approach, where identifiers are mapped to locators, and packets are encapsulated prior to be routed. Open Overlay Router (OOR) is the open-source implementation of LISP for Linux, which allows anyone to enjoy LISP features. OOR is entirely written in standard C using standard libraries.

With its very recent standardization into multiple IETF RFCs, the Locator/ID Separation Protocol has validated its momentum as an exciting new mechanism for enterprises, service providers and users to introduce new capabilities to their networks in one, common, simple architecture. The last few months, the OOR open-source project has grown from a pure LISP mobile node implementation (on Android phones) to a full-featured and fully-RFC-compliant LISP tunnel router implementation. In its latest version, the OOR’s significantly simplified and, yet, more robust user-space-only residing code base runs on Linux desktops, servers and embedded Linux OpenWrt routers and enables full IPv6 support, mobility, simplified multi-homing, virtual private networking and data center virtual machine mobility. Thanks to its inter-operability with reference LISP implementations (IOS, NX-OS), OOR opens the door for enthusiastic users, developers and the research community to explore the real-world behavior of the LISP within the Beta-Network, the largest public multi-company and multi-vendor network of more than 200 LISP-enabled networks spread in 20 different countries.

The OOR community proposes these projects to the Google Summer of Code 2019 candidates.

Port OOR to OSX/Windows

OOR is only supported on Linux-flavor systems (Linux, OpenWRT and Android). This project aims to port OOR to OSX or Windows systems.

  1. The student can choose which system to port to based on his/her own preferences and available equipment.
  2. Code migration to target system should be straightforward, but several aspects on OOR are very OS dependent and will require special attention:
    • The network configuration code should be moved from Linux specific to target system specific.
    • Socket communication is a key point in OOR and porting efforts should handle with care low level socket details
    • OOR uses a TUN/TAP device to encapsulate packets. TUN/TAP is supported in both target OS, but not in the same way it is on Linux.
    • System variables and constants should be adapted and adjusted from Linux ones to target system ones
  3. OOR supports different ways to be configured, mostly based on text files. These files and its format are platform specific and vary even within different Linux-flavors. Porting should include a way to configure OOR on the target OS. This way it is up to the student, he/she can port one of the previous ones or develop his/her own configuration system.
  4. A launch system is required for target OS, that should be coherent with the OS philosophy.
  5. Native graphical user interface for the target system is not required, but it will be a plus.

Technologies: C, Java

Skills: Basic networking knowledge. Familiar with Windows or OSX software development.

Mentor (OSX port): Oriol Marí (oriol.mari@est.fib.upc.edu)

Mentor (Windows port): Albert Cabellos (acabello@ac.upc.edu)

New features for Android and iOS implementations

Brief: OOR supports two smartphone OSes: Android and iOS. The ubiquity of these devices, and OOR's LISP Mobile Node implmentation allow developing new services specially targeted for these devices, for example:

  • Multihoming, i.e. using LTE and WiFi interfaces at the same time to send traffic and increase throughput
  • Select which applications use OOR and which don't (this feature is helpful for users)
  • Peer-to-peer networks, for example to directly send files between two smartphones

Students will be required to pick an OS (Android or iOS) and a feature before starting. They can also propose an new feature. If so, please send a small description of your feature in your application email.

Technologies: C, Java, Swift

Skills: Basic networking knowledge. Familiar with Android or iOS software development.

Mentor (iOS): Oriol Marí (oriol.mari@est.fib.upc.edu), Albert López (alopez@ac.upc.edu)

Mentor (Android): Albert López (alopez@ac.upc.edu)

Joining efforts with FRRouting

Brief: FRRouting (https://frrouting.org/) is an open source routing protocol suite for Linux that implements widely used protocols such as BGP, IS-IS or OSPF. The objective of this project is to integrate OOR with FRR either partially or completely, with the final goal of adding LISP support to FRR.

Goals:

  1. Study the structure of FRR code and which funcionalities it offers for OOR.
  2. Propose an integration plan, with the help of the mentor. Determine which functionality of OOR should be integrated: Map Server/Map Resolver, xTR, or both.
  3. Perform the integration
  4. Test
  5. Send a Pull Request to FRR.

Technologies: C

Skills: Basic networking knowledge.

Mentor: Albert López (alopez@ac.upc.edu)

Confidentiality for OOR with Wireguard

Intro: Wireguard (https://www.wireguard.com/) is a VPN implementation for the Linux Kernel which is simple and easy to use. It features state of the art cryptography and optimizations for high performance, among other.

Brief: Currently, OOR cannot encrypt network traffic. The objective of this project is to integrate OOR with Wieguard, so that LISP data packets are encrypted when two or more OOR instances set up tunnels among them. This project consists of:

  • Getting familiar with Wireguard, especially its cryptokey routing table
  • Proposing an integration to send OOR data packets through a Wireguard interface
  • Implement and test the integration

Technologies: C, Linux kernel networking

Skills: Basic networking knowledge. Familiar with Virtual Private Networks.

Mentors: Jordi Paillissé (jpvilanova@gmail.com)

Realizing the first Internet of Everything OOR Implementation

Intro: In the upcoming era of ubiquitous cognition, the capability of gathering, processing and presenting vast amounts of data captured by spatially distributed sensors in an efficient and low-cost way is as essential as ever. Although a plethora of ultra-low cost and physically small sensors have been demonstrated, only few of these research efforts have managed to integrate these sensing modules with massive wireless sensor network (WSN) platforms or cyber-physical systems; a sine-qua-non step. The paradigm of the IoT/IoE, backed by machine-to-machine (M2M) communication functionality, involves the combination of Internet-connected embedded devices with Web-based services, so that these devices are universally an integral part of the Internet. 

Brief: The objective of this project is to identify the least powerful, in terms of computational power and memory, hardware platform (e.g., WSN or "cyber-physical system") that can support the LISP router implementation.  

  1. Exploit inherent LISP features, such as mobility, lifetime unique identity retainment and, in the future, multihoming over the inherently broadcast wireless communication medium, for IoT/IoE applications.
  2. Identify the hardware platform (examples are Raspberry Pi, Arduino or less powerful ARM-powered platforms provided by Texas Instruments, Microchip and others) that:
    • Has already IPv6 protocol stack support and could potentially support other foundational protocols (e.g. the Routing Protocol for Low-Power and Lossy Networks (RFC6554))
    • Possesses at least one wireless interface (e.g. IEEE 802.11 or 802.15.4 over 2.4 GHz, 900 MHz and/or 433 MHz ISM bands)
  3. Port the C language router implementation of OOR onto the chosen platform
  4. Not required but a big plus: Put together a small-scale wireless sensor network with any kind of sensing module as an example application. Consider renewable energy scavenging solutions for powering the platform (solar, ambient wireless, or other)

Technologies: C

Skills: Basic networking knowledge. Familiarity with Embedded Linux.

Mentor: Albert Cabellos (acabello@ac.upc.edu)