Google Summer of Code 2013

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.

With its very recent standardization into multiple IETF RFCs, the Locator/Identifier 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. 

LISPmob is the open-source implementation of LISP for Linux, which allows anyone to enjoy LISP features.

The last few months, the LISPmob 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 LISPmob’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), LISPmob 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 170 LISP-enabled networks spread in 32 different countries.

The LISPmob team propose these projects to the Google Summer of Code 2013 candidates

Port LISPmob to OSX/Windows

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

  • The student can choose which system to port to based on his/her own preferences and available equipment.
  • Code migration to target system should be straightforward, but several aspects on LISPmob 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 LISPmob and porting efforts should handle with care low level socket details
    • LISPmob 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
  • LISPmob 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 LISPmob 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.
  • A launch system is required for target OS, that should be coherent with the OS philosophy.
  • Native graphical user interface for the target system is not required, but it will be a plus.

Technologies: C

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

Mentor (OSX port): Alberto Rodriguez-Natal (arnatal@ac.upc.edu)
Mentor (Windows port): Fulvio Risso (fulvio.risso@polito.it)

Automatic testing for LISPmob

The objective of this project is to design and implement an automatic tool or set of tools to test LISPmob.

  • Ideally, LISPmob testing covers two scenarios: software testing and networking testing.
  • Software testing should test the code itself, its formal correctness and error proneness.
    • Test code must be developed and LISPmob code should be adapted to be test-aware.
    • It is desirable to follow some unit testing alike approach, like the xUnit framework.
    • Existing unit testing frameworks for C like “Check” are encouraged to be used
  • Networking testing refers to the behavior of LISPmob regarding LISP protocol
    • LISPmob correct LISP operation must be tested by means of a test network.
    • Different instances of LISPmob should be running on different devices, communications between each other and with other LISP devices must be establish, and correct LISP behavior must be observed.
    • Virtualization solutions for managing multiple LISPmob instances are encouraged. A solution like User-mode Linux should be deployed for testing purposes.
    • Automatic test over the test network with automatic result gathering is required
    • A centralized way of defining, configuring and operate the test network is desirable
  • Students can focus on the test scenario they feel more confident about or more challenging, but a full test solution, covering both cases, is desirable.

Technologies: C

Skills: Basic networking knowledge. Familiar with unit testing frameworks. Familiar with virtualization solutions.

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

LISPmob as software defined networking controller

The objective of this project is to add OpenFlow support to LISPmob and design LISP specific extensions, as necessary.

  • Implement or integrate support for the OpenFlow 1.2 protocol in LISPmob, so that it can act as a controller for switches with a LISP data plane, such as Open vSwitch (OVS)
    • Explore how much of the LISP control plane functionality can be implemented using the existing OpenFlow 1.2 specification, design and implement the necessary extensions to support the full LISP control plane
    • Make the necessary changes to support configuring a controller mode, where the LISPmob data plane is disabled and connections from OpenFlow switches are accepted
    • Using and extending existing OpenFlow libraries is allowed, as long as they are implemented in C
  • Not required but a definite plus if the necessary extensions are added to the OVS user space as well, as it would allow testing the implementation

Technologies: C

Skills: Basic networking knowledge. Familiar with software defined networking concepts.

Mentors: Kyle Mestery (kmestery@cisco.com), Lorand Jakab (lojakab@cisco.com)

Realizing the first Internet of Everything LISPmob Implementation

In the upcoming era of ubiquitous cognition, the capability of gathering, procession 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 

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.

  • 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.
  • 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 necessarily 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)
  • Port the C language router implementation of LISPmob onto the chosen platform
  • 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: Vasileios Lakafosis (lakafosi@cisco.com)

Investigate and implement multihoming for LISP on Android

LISPMob on Android currently only supports a single active interface at a time (i.e. 3G or wifi). The objective of this project is to investigate and implement a method to have both interfaces active simultaneously for data traffic.

  • The student should choose a device and Android version which allows easiest modification of the Android OS at all levels and is compatible with LISPMob on Android.
  • Set up and gain familiarity with building and deploying LISP on an Android device.
  • Investigate necessary modifications to the Android linux kernel and/or Android frameworks to allow multiple radios and network interfaces to be active.
  • Implement and test the above changes on the device.
  • Implement necessary changes to LISPMob on Android to coordinate basic connection management with simultaneous active interfaces.
  • Explore adapting the existing connection management infrastructure to work with LISPMob on Android.
  • Develop and execute networking test scenarios to best show the advantages of multihoming on a mobile device.
  • Document all above work and results.

Technologies: C.

Skills: Basic networking knowledge. Linux kernel experience. JAVA and Android OS experience a plus.

Mentor: Chris White (chris@logicalelegance.com)