Home Page of Asanga Udugama

Asanga Udugama

Researcher/Developer,
Communication Networks Group,
IKOM, TZI,
University of Bremen,
Otto-Hahn-Allee NW1, 25359,
Bremen, Germany.
Room NW1 S 2210
Tel. +49 421 218-8665
Fax. +49 421 218-3601
E-mail adu@comnets.uni-bremen.de

I am a software developer cum researcher, working for the University of Bremen, Germany. I currently reside in the northern German city/state of Bremen with my wife and my little daughter. I work for different projects, some of which allow us to publish our work for the use of others in public. This page points to some of the stuff that I have done including software that I have developed. Click on the link to go to the relevent section.

Please feel free to contact me to comment on anything in this page or to ask any questions about the stuff that are published here. You can reach me through adu@comnets.uni-bremen.de

Visitor Count : 8504
Last updated on : 04-mar-2008



Software

This section presents some of the softwear that I developed by my self or in collaboration with others. These also include software of other developers which I have re-compiled or re-packaged due to it's unavailability in a certain platform.

Name Description
Interface Activity Plotter 0.2 - A Java based network interface activity plotter

This is a Java based graphical plotter to plot the activity of network interfaces. This program reads the number of packets seen on network interfaces. It is a JNI based program where it uses pcap library in Linux and WinPCAP in Windows to capture packets from the given network interfaces.
Download - ifc-activity-plotter-0.2.tar.gz

UoB Program Runner 0.2 - A Java based program executor for Linux

This is a simple Java program that can be used to run programs. It requires a config file where all the programs and their running environment is described. Once executed, it will show a list of the programs to run. Just click on the program to run. This is derived from the original ScriptRunner program that I wrote sometime back. When you develop many programs (e.g. demonstrators in projects), it would be very convenient to run these programs interactively in a sequence. Sequence does not mean that one program has to end before another can be run. They can run simultaneously. Since most of the environments that we work with has Java, this has been developed in Java. At the moment, it can only run Linux programs. But it can be made to run in multiple platforms with some small changes.
Download - program-runner-0.2.tar.gz

UoB BW Monitor 0.1 - Round Trip Time and Bandwidth Monitor

This is a collection of simple Java based programs to show (plot) the RTT delays and the TCP/UDP bandwidth in a constanly moving graph. The 2 programs are; a) to show the RTT and the b) to show the TCP/UDP bandwidth. It can be used for IPv4 as well as IPv6. The RTT is extracted by running a "ping" and the bandwith is extracted by running an "iperf" command. Each program has a config file that specifies different configurable parameters. We use these 2 programs to demonstrate the performance of mobility protocols such as MIPv4, MIPv6 and AODV
Download - bw-monitor-0.1.tar.gz

MAC Kill patches for Linux kernels

The MAC Kill patch to the Linux kernel allows a user to block the kernel from getting any packets with the given source MAC address. This is good to test protocols such as AODV when the nodes of the AODV network are in close proximity and the user wants to test multi-hop adhoc networking.
This is an old patch from Upsala University that was changed to also work on the following kernels.
* MACKill for 2.6.11 kernel
* MACKill for 2.6.22.17 kernel
These patches may be able to patch other kernels as well.

Instructions:
- Apply the patch
- Compile & install the kernel (give how you want to load MACKill, i.e. as a module or embedded in the kernel)
- modprobe mackill
- echo -12:34:56:78:90:ab > /proc/net/mackill to drop packets
- cat /proc/net/mackill to see the currently dropped MAC addresses and packet counts
- echo +12:34:56:78:90:ab > /proc/net/mackill to remove from the list
- echo "" > /proc/net/mackill to remove all dropped MAC addresses

Download
linux-2.6.11-mackill.patch
linux-2.6.22.17-mackill.patch

JAdhoc 0.25 (with Gateway suport for Linux only)

JAdhoc version with Gateway support. (Not much documentation present about the configuration for Gateway support)
Download - jadhoc-0.25.tar.gz

Java Wrapper for NetFilter, Raw Sockets and RtNetlink in Linux

Jnet (ver 0.1) is a java wrapper for the NetFilter, Raw Sockets and RtNetlink capabilities in the Linux operating system. NetFilter is the same filtering capability that is used in IPTABLES. In addition to filtering, Jnet also captures packets using NetFilter. Raw Sockets allow Jnet to capture/set packets with the IP header. RtNetlink allows users to manipulate the routing environment of a computer.
Status : Currently have completed "wrapping" the first 2 capabilities. They have been tested and is being used in an AODV - Mobile IP integration written by a student.

Download - jnet-0.1.tar.gz

UoB-WinAODV

UoBWinAODV is a Windows XP based AODV (RFC 3561) protocol handler for IP version 4. It is written in Microsoft C. This protocol handler uses a NDIS driver and a user space program to manage the operations of AODV. This version also includes a GUI to display the status.

Current version : 0.15 : Download - zip
More information can be found at www.aodv.org

JAdhoc

JAdhoc is a Java-based implementation of the AODV protocol. It complies with RFC3561, and works on IPv4. It is implemented using the Java libraries for networking, graphical user interfaces, multi-threading, and operating system calls. It also uses Jpcap, a Java-based class library for network packet capture. It has been tested on Linux, Windows (XP and 2K), and Sharp Zaurus.

Current version : 0.2 : Download - tar.gz, zip, Zaurus package (ipk)
More information can be found at www.aodv.org

IPRoute 2 for Sharp Zaurus Linux (not OpenZaurus)

IPRoute 2 is a tool for the manipulation of the routing environment. This package is a port of the IPRoute 2 v2.2.4-now-ss991023-1 for the original Sharp Zaurus Linux (not OpenZaurus). This is based on a similar package for the OpenZaurus but repackage to position files in the directory structure used by the Sharp Zaurus Linux.

To use this software,
1) Re-compile the kernel with IP: advanced router
2) Install iproute2 (iproute_z2.2.4-now-ss991023-1_arm.ipk)

To check whether the iproute2 has been installed succesfully, please open a console and run
ip addr list
this should print a list of all network interfaces.

Current version : z2.2.4-now : Download - Zaurus package (ipk)
More information can be found at www.mobileip.org

UoB-NOMAD - Filters for Mobile IP Bindings

This is an implementation of NOMADv4 (Filters for Mobile IP, IETF Draft draft-mobileip-nomad-filters-05.txt) for Linux, based on the Sun Labs Mobile IP software. It is released under the Sun Public License (SPL).

Current version : 0.11 : Download - tar.gz
More information can be found at www.mobileip.org

UoB zNOMAD v0.11

UoB zNOMAD is a Mobile IP software for Linux based IPv4 platforms. This software is an extended version of the SunLabs Mobile IP software, developed by Sun MicroSystems.

To use this software,
1) Re-compile the kernel with IP: advanced router
2) Install iproute2 (iproute_z2.2.4-now-ss991023-1_arm.ipk)
3) Install UoB NOMAD (UoBNomad_1.0_arm.ipk)

To check whether the iproute2 has been installed succesfully, please open a console and run
ip addr list

this should print a list of all network interfaces. Once packages are installed two new icons should appear on the Applications Menu. One is used for debugging mode and redirects all output from UoB NOMAD to two files in the home directory, namely mipmn-out.txt and mipmn-err.txt. The other icon runs UoB NOMAD while sending all output to the NULL device.

Configuration of the UoB NOMAD applications occurs with the help of two configuration files residing in /etc. mipmn.conf is used for the configuration of Mobile IP parameters, while mipmn-filters.conf is used for the definition of filters for Mobile IP.

Current version : 0.11 : Download - Zaurus package (ipk), Source code (tar.gz)
More information can be found at www.mobileip.org

Script Runner

A java based shell script runner that I developed for the NOMAD project. This was mainly used on the Zaurus 5500 as it was very hard for the users to type shell commands after opening a Console. The user first creates all the shell scripts and then puts in a list which this program shows and executes when clicked the "Run" button.

Download - zip, ScriptRunner.java

GPS Data Reader (with NMEA format)

A simple program (in Linux) to read the output of a GPS device connected to a computer and send selected information (longitude, latitude & altitude) to a given IP address in a UDP packet.

Download - GPS-NMEA-Reader.tar.gz, GPS-NMEA-data-reader.c, GPS-NMEA-Format.txt

Bluetooth Affix for Zaurus SL 6000L

Bluetooth Affix packages for the Zaurus SL6000L with the Aircable serial interface without the built-in bluetooth stack.

Download - bluetooth-affix-sl6kl_2.0.2_arm.tar.gz

Back...


Sample Source Code

I write a lot of testing code to test different capabilities (linked lists, sockets, etc.) that I code, independent of the system that they will be used in finally. This section presents some of these code pieces. (Most of these samples were developed on Linux. So, when you see this code on a Microsoft browser, you will see all code in one single line. This is due to the CR-LF interpretation problem. Solution: save the code and open it from Wordpad.)

Name Description
Sample Code from the Article on Developing Protocol Handlers in Linux

This is the sample code which I developed for the purpose of explaining the different capabilities in Linux for developing protocol handlers. They are complete code with make files.

Download: developing-protocol-handlers.tgz

Show the IPv6 Addresses assigned to a Network Interface

There are a couple of ways to get the different IPv6 addrsses (Global, Link-local, etc) assigned to a network interface in Linux. One way is by reading the /proc file /proc/net/if_inet6. This program accepts the name of the interface (eth0, lo, tun0, etc) on the command line and prints the addresses assigned to that interface. This program can be further extended to print other types of addresses assigned to an interface.
Download -
get-ipv6-addr.c - Source file ,
Compile/link it by running; gcc -o get-ipv6-addr get-ipv6-addr.c

Check whether a Network Interface is Up or Down

This function uses a standard IOCTL to get the status of a network interface and looks at the flags that define whether that interface is up or down. To check what other things are possible, have a look at net/if.h include file.
Download -
getifcstatus.c - Source file ,
getifcstatus.tar.gz - including the Makefile

How to sleep for times less than a second

In standard Linux the sleep() function allows only to sleep in units of seconds. This is very inconvenient if you want to sleep for shorter time durations such as milliseconds or micro seconds. Here is a program that allows to sleep for milliseconds. This can be also be changed to sleep for other time units.
Download -
mysleep.c - Source file ,
mysleep.tar.gz - including the Makefile

How to accept variable number of parameters like in printf()

Here is a program that has a macro to accept variable number of parameters. For example, this kind of function is required when logging activity in a system.
Download -
check-var.c - Source file ,
var-param.tar.gz - With Makefile

Non-Polling /proc file Reader/Writer

Sometime back, we wanted to have our own /proc file that will return the contents only when the information changed. Meaning that, we did not want to poll. The normal behavior of /proc files is that they have to be read in a contnuous way where information is returned irrespective of whether any change has occured or not. We tried reading with the select functions (select, pselect, FD_SET) in sys/select.h. But realized that /proc files do not work as if a normal file would do. So I wrote a /proc module that does not require any polling, but simply implements a block on the read statement and returns only when there is a change in information of the proc file.
Download -
myprocfile.c - the /proc module,
myprocfile_read.c - the /proc file reader ,
myprocfile_write.c - the writer to /proc file,
non-polling-proc-read-write.tar.gz - all the files including the Make files

NETLINK (rtnetlink) Test Programs

Here are some programs that I wrote to understand the operations of NETLINK (rtnetlink) socket facility in the Linux operating system.
Download - rt_show.c, if_show.c, rt_add.c

Threading Test

Starts 2 POSIX threads (on Linux) which print what they are doing to determine their behaviour.
Download - thread_test.c

Raw Socket recvfrom() Test

Opens a raw Linux socket to listen to any ICMP packet. Simply change the socket() function call to the relevent protocol to listen to other protocols.
Download - raw_sock.c

Simple Linked List

A simple circular linked list implementation that I wrote for Jnet.
Download - test_ll.c, jnet.h

Circular Linked List

A simple circular linked list implementation that I wrote for the Communication Service Manager (csm) done for wearIT@work project.
Download - csm_linkedlist.c, csm_linkedlist.h, csm.h

Check Class Available

A simple Java class to check whether a given class in available in a JVM. I developed this to check whether certain classes were available in the Jeode JVM available on a Zaurus 5500. (usually these are available in the API doc, but for this JVM (Personal Java), I could not find the API docs)
Download - JavaClassAvlTest.java

Back...


HOWTOs and Documents

I write procedure documents of running, installing, compiling different software for the use of collegues at my work place.

Name Description
Developing Protocol Handlers in Linux, July 2007

This is an article on the different capabilities that are avilable in Linux for that can be used by protocol develoers (mostly to develop network layer protocol handlers). The complete code of the samples shown in the article including the make files to build them can be downloaded here.

Article: Developing Protocol Handlers in Linux
Download: developing-protocol-handlers.tgz

Settingup L2TP instead of SIT to Run MIPv6

With MIPv6, to get over the problem of using UMTS/GPRS connections that provide IPv4 addreses we used SIT tunnels. Since, 2.0-rc3 of MIPv6 does not seem to pick up SIT interfaces, an alternate solution is to use L2TP tunnels. This HOWTO explains how to seup an L2TP connection over UMTS/GPRS for use with MIPL (2.0-rc3) or NEMO-SE 1.0. The tar.gz gives all the setup scripts described in this HOWTO including the UMTS/GPRS connection scripts for German Vodafone(D2) and T-Mobile(D1)

Download -
HOWTO-Setup-L2TP-over-UMTS-GPRS-adu.txt
l2tp-umts-gprs-setup-scripts.tar.gz

AODV UU on a IPAQ

HOWTO get AODV version of the Upsala University (version 0.8) to work on a Compaq IPAQ H3760 with a Compaq WL110 WLAN PCMCIA card that runs a Familiar 0.7 with a 2.4.19 kernel.

Download - HOWTO

JAdhoc Design Manual

The document describing the design of JAdhoc.

Download - JAdhoc.pdf

Filters for Mobile IP

The document describing the Filters for Mobile IP implementation.

Download - FilterforMIPonSunLabs3.pdf

Back...


Publications

This section presents some of publications and other documents for which I have contributed.

Name Description
Managing Heterogeneous Access Networks: Coordinated policy based decision engines for mobility management, IEEE LCN ON-MOVE 2007, October 2007

An article on a new approach to policy based mobility management based on two coordinated decision engines, one residing in the terminal and one in the network.

Managing Heterogeneous Access Networks: Coordinated policy based decision engines for mobility management

NetCAPE: Enabling Seamless IMS Service Delivery across Heterogeneous Mobile Networks, IEEE Communications Magazine, July 2007

Article on the Networking Context Aware Policy Environment architecture for mobility management in 3GPP/non-3GPP environments.

NetCAPE: Enabling Seamless IMS Service Delivery across Heterogeneous Mobile Networks

Manipulating the Networking Environment Using RTNETLINK, Linux Journal, May 2006

Article on how to use RTNETLINK to develop applications that control networking in Linux.

Manipulating the Networking Environment Using RTNETLINK

On demand self organising ad hoc networks - Implementation architectures, 12th WWRF meeting 2004, Toronto, Canada, Nov 2004.

Abstract - A key area of consideration in self organizing ad hoc networks is the routing mechanisms. The On-Demand mechanism in IP based networks has become popular due to the lower overheads required in managing routes which make it ideal for even smaller, resource restrained mobile computing devices. This publication looks at the implementation aspects of developing such protocol handlers and presents the statistics related to an evaluation done with two AODV (Ad hoc On-demand Distance Vector) implementations. The implementation aspects look at the prerequisites that are required in the mobile device environment and the three possible architectures in developing such protocol handlers.

Download - 2004wwrf.pdf

Experimental Evaluation of AODV Implementations, CEWIT 2004, New york, USA, Oct 2004.

Abstract - The Ad hoc On-Demand Distance Vector (AODV) routing protocol is designed for use in mobile ad hoc networks. There exist several implementations of the AODV protocol for a range of operating systems (e.g., Unix/Linux and Windows), different devices (e.g., notebook computers, PDAs) each developed using different techniques and programming languages. The architecture of 2 AODV implementations and their experimental comparison with respect to their effect on UDP and TCP performance is presented.

Download - 2004cewit.pdf

Experimental Performance Evaluation of AODV Implementations in static environment.

Abstract - The Ad hoc On-Demand Distance Vector (AODV) routing protocol is designed for use in mobile ad-hoc networks. As of the writing of this article, there exist several implementations of the AODV protocol for a range of operating systems (e.g., Unix/Linux, Windows), different devices (e.g. Notebook computers, PDAs) each developed using different techniques and programming languages. This paper describes the architecture of 2 AODV implementations and experimentally compares them with respect to their effect on transport layer protocol (UDP and TCP) performance. The investigated scenario involves a stationary AODV test-bed that consists of 6 nodes connected using WLAN 802.11b. The considered AODV implementations are the JAdhoc, a Java based platform independent implementation and the AODV-UU, a Linux based user space implementation developed using C that utilizes kernel space functionalities. The performance of both implementations is compared against that of a manually configured test-bed.

Download - AODV-Perf-ComNets.pdf

Presentation on TCP/UDP Performance in Static AODV networks, at the manet WG - 59th IETF - Seoul, South Korea, February 2004.


Download - manet-ietf-2004.pdf

Filters for Mobile IP Bindings (NOMAD). Internet Draft, draft-nomad-mobileip-filters-05.txt, Work in Progress, October 2003.

Download - draft-nomad-mobileip-filters-05.txt

Experimental Evaluation of Load Balancing for Mobile Internet Real-Time Communications. In Proceedings of the Sixth International Symposium on Wireless Personal Multimedia Communications (WPMC), Yokosuka, Kanagawa, Japan, October 2003.

Download - pdf

Back...


Links

Listed here are some of the links that I use on a frequent basis.

Name Description
Tech News

There are 2 things that I do without fail, when I sit in front of my computer every morning. First; check email, second; browse news (discussions) at,
Slashdot.org, CNet News, CNet Product Reviews

Other News

News about things (non-tech) happening around,
The Academic, Google News, German News

Dictionaries

Dictionaries that I use most of the time,
The Free Disctionary - English, Dictionary.com - English, German <-> English , Wikipedia , Webopedia

Search

Search engines I use,
Google ,

Back...


Miscellaneous

Other stuff that does not relate to any of the other sections.

Name Description
GPL versioned Doppelkopf Card Game

If you want to learn a card game, learn to play Doppelkopf. This is the best card game that I have played so far.
This is a GPL version of this card game which I use very regularly
FreeDoko_0.7.0.de.Setup.exe
Doppelkopf Rules

Back...