Software

From NMSL

This page contains a list of all the software that were developed at NSL as part of our ongoing research projects. They are organized by project with links to documentation, downloadable source code archives, and Subversion repositories. Unless otherwise specified, all the code released on this page is available under the GPLv3 license. When using our implementations and/or algorithms, please cite the corresponding publications from the project/publications page.



Implementations

MobileTV Testbed

As part of our Mobile TV Networks project, we have implemented a complete end-to-end testbed for DVB-H (Digital Video Broadcast-Handheld) networks. The testbed provides a realistic platform for analyzing various aspects of these networks, including the energy saving achieved by the time slicing mechanism, average channel switching delay, network capacity in terms of number of TV channels that can be broadcast, visual quality of TV channels transmitting different types of video streams, information exchange and interactivity between base station and receivers, among many others. The mobile TV testbed has two parts: a commodity Linux box as the base station and several smart phones as receivers. We have two testbed implementations: (i) FATCAPS base station, and (ii) integrated base station. The former one is based on FATCAPS implementation, while the later one is implemented by us from scratch.


Demo of Burst Transmission in Mobile Multimedia Systems

A software demo that visually illustrates the performance of multiple burst transmission algorithms in mobile multimedia systems. It studies various parameters of each algorithm and their impact on the energy saving of mobile devices as well as the utilization of the wireless bandwidth. The results are based on real traffic traces collected from an operational mobile video streaming system.

  • Developer(s): Somsubhra Sharangi
  • Language(s): Java
  • More details at project page.


Demo for Hybrid Multicast-Unicast Streaming in Mobile Multimedia Systems

An interactive software demo that visually illustrates the performance of our hybrid unicast-multicast streaming algorithm in mobile multimedia systems. It considers multiple cells that can form single frequency networks (SFNs). It analyzes the impact on the service ratio and energy saving when the hybrid streaming algorithm is used. Different user distributions and video popularity functions can be used.

  • Developer(s): Bahaa Mansour
  • Language(s): Java


pCDN: Peer-assisted Content Distribution Network

This project employs the peer-to-peer (P2P) computing paradigm in designing large-scale content distribution systems. We developed a fully functional and reliable P2P content distribution system, which we call pCDN. pCDN is developed in partnership with the Canadian Broadcasting Corporation (CBC), the largest Internet content provider in Canada. The system is an ongoing project that will provide high-quality multimedia content, support heterogeneous clients, impose minimal load on the expensive inter-ISP links, provide on-demand as well as live streaming services, ensure data integrity, and implement digital rights management, among other features.



pCache: A Proxy Cache for Peer-to-Peer Traffic

As part of our research on modeling and caching of P2P traffic, we have designed and implemented a proxy cache for P2P traffic, which we call pCache. The server is to be deployed by autonomous systems (ASes) or ISPs that are interested in reducing the burden of P2P traffic. Our C++ implementation of pCache has more than 11,000 lines of code. We have rigorously validated and evaluated the performance of pCache as well as its impacts on ISPs and clients. pCache code is released under GPLv3 in two parts: kernel source and application. The Linux kernel consists of all required patches to support transparent proxy, which simplify setting up the required environment. This patched kernel contains code from mainstream Linux kernel, netfilter, tproxy, and layer7switch. The pCache application implements components described above. Moreover, a patched iptables is also provided that takes additional arguments supported by tproxy.

Detection of SIP Botnets

A botnet is a group of compromised computers (called bots) controlled by remote attackers to perform various malicious activities and launch cyber attacks. Botnets can be deployed on top of different protocols, one of which is the Session Initiation Protocol (SIP). SIP is widely used to initiate voice over IP, and it has been adopted by the telecommunications standards bodies to be the signaling protocol for mobile telecommunication core networks. Botnets deployed over the SIP present a serious threat for the Internet. We designed and implemented an online detection system which can detect SIP botnets at early stages even before they initiate any malicious activities. The system does not rely on the structure of the Command and Control channel of the bonnet. Thus, it works for centralized and distributed botnets. In addition, our system does not use the contents of the SIP messages, which makes it not limited to specific botnet implementations.


svcAuth

svcAuth is a library for authenticating H.264/SVC video streams. It is released under the GPLv3 license. We have designed an authentication scheme for H.264/SVC streams that supports its full flexibility: it takes into account the coding characteristics of H.264/SVC scalability model and enables verification of all possible substreams. In addition, the proposed scheme is designed for end-to-end authentication of streams. In an end-to-end authentication procedure, a content provider prepares the authenticated video and sends it to receivers, possibly through a third-party Content Delivery Network (CDN) with proxy servers that may need to adapt the flexible video streams. These proxies or any other entity involved in the delivery process do not have to understand our authentication scheme, which is an important advantage.

  • Developer(s): Kianoosh Mokhtarian (MSc Student, Graduated Summer 2009)
  • Language(s): Java
  • More details at project page. An introduction to svcAuth can be found here.


Socket Direct Protocol (SDP) over PCI Express

In this project we designed and implemented the Socket Direct Protocol (SDP) for PCI Express based fabric. SDP is an efficient data transfer protocol alternative to the TCP that utilizes the advanced features available in high performance interconnects such as direct memory access. Our SDP implementation is designed for PLX PCIe switches and supports only two nodes for now. SDP is compatible with Socket/TCP applications yet provides much better performance. It is developed as a Linux kernel module and has been tested under Redhat Linux 5.7.

  • Developer(s): Ahmed Bu-khamsin (MSc Student, Graduated Fall 2012)
  • Language(s): C
  • More details at project page.

Simulators

PCP: Probabilistic Coverage Protocol

In this project, we consider probabilistic sensing and radio communication models in designing protocols for large-scale sensor networks. Probabilistic models are more realistic in capturing the characteristics of actual sensors than the over-simplified regular disk model.

  • Developer(s): Hossein Ahmadi (M.Sc., Graduated Summer 2007)
  • Language(s): C/C++
  • More details at project page
  • Implementation of the Probabilistic Coverage Protocol (PCP) in NS-2
  • Implementation of the Probabilistic Coverage Protocol (PCP) in C++


K-Coverage and its Application to Forest Fire Detection

In this project, we design new algorithms to achieve k-coverage in dense sensor networks. In such networks, covering sensor locations approximates covering the whole area. However, it has been shown before that selecting the minimum set of sensors to activate from an already deployed sensors is NP-hard. We propose an efficient approximation algorithm which achieves a solution of size within a constant factor from the optimal. We are also interested in applying our k-coverage algorithms in designing a wireless sensor network for early detection of forest fires. Forest fires, also known as wild fires, are uncontrolled fires occurring in wild areas and cause significant damage to natural and human resources. Forest fires eradicate forests, burn the infrastructure, and may result in high human death toll near urban areas. In the province of British Columbia alone, there have been 2,590 forest fires during 2006. These burned 131,086 hectares and costed about $156 million. (Source: BC Ministry of Forests and Range.) Wireless sensor networks could help in reducing some of the damages caused by forest fires.

  • Developer(s): Majid Bagheri (M.Sc., Graduated Summer 2007)
  • Language(s): C/C++
  • More details at project page
  • Implementation of the Centralized Randomized K-Coverage Protocols (RKC) in C++
  • Implementation of the Decentralized Randomized K-Coverage Protocols (DRKC) in C++


Live Peer-to-Peer Streaming with Scalable Video Coding and Networking Coding

As part of our research in the area of peer-to-peer video streaming, we have developed a Java-based simulator of a proposed live P2P streaming system that exploits both scalable video coding (SVC) and network coding (NC) to maximize the streaming throughput and handle network dynamics. The proposed system significantly improves the performance of live P2P streaming by addressing many of the challenges impeding current systems. It efficiently utilizes peers resources and easily customizes multimedia content to support receivers with diverse resources and requirements, and quickly adapting to network and peer dynamics.

  • Developer(s): Shabnam Mirshokraie (MSc Student)
  • Language(s): Java


Efficient Multi-Sender Data Transmission in Swarm-Based Peer-to-Peer Streaming Systems

In this project, we study the problem of scheduling segment transmission in both live and on-demand P2P streaming systems. Our goal is to maximize the perceived video quality by scheduling the segment transmission so that segments that are more critical to video quality improvements are given higher priority to meet their deadlines. We have implemented an event-driven simulator in Java to evaluate the performance of the proposed segment scheduling algorithms. Five scheduling algorithms are implemented in this simulator: rarest-first (RF), min-cost flow (MC) with support for variable-size segments, our proposed unweighted approximation (SSTF) algorithm, our weighted approximation (WSS) algorithm, and optimal (OPT) scheduling using by solving the ILP formulation with the CPLEX ILP solver. The simulator can be used with trace files from the Arizona State University video trace library. A prototype P2P streaming system which incorporates RF, MC, SSTF, and WSS was also implemented for deployment over PlanetLab nodes.

  • Developer(s): Yuanbin Shen (MSc Student, Graduated Summer 2010)
  • Language(s): Java


Efficient Multimedia Broadcast over Mobile WiMAX Networks

This project studies multimedia services in the emerging WiMAX networks. We look into efficient multimedia broadcast framework over mobile WiMAX networks utilizing the MBS and sleep mode features, in particular, broadcasting multiple scalable video streams to mobile receivers. We study problems like maximizing the quality of video at mobile receivers, minimizing energy consumption at mobile receivers and other related problems. We have implemented a point-to-multipoint WiMAX multimedia broadcast simulator for evaluating our algorithms using actual scalable video traces. For the WiMAX network parameters, we use the 16-QAM modulation scheme with 3/4 convolution turbo coding and 10 MHz channel.

  • Developer(s): Somsubhra Sharangi (MSc Student)
  • Language(s): Java
  • Mode details at project page