Asanga UdugamaResearcher/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
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. |
| 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. |
| 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 |
| 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. |
| JAdhoc 0.25 (with Gateway suport for Linux only) |
JAdhoc version with Gateway support. (Not much documentation present about
the configuration for Gateway support) |
| 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. |
| 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. |
| 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. |
| 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. |
| 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). |
| 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. |
| 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. |
| 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. |
| Bluetooth Affix for Zaurus SL 6000L |
Bluetooth Affix packages for the Zaurus SL6000L with the Aircable serial interface
without the built-in bluetooth stack. |
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. |
| 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.
|
| 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.
|
| 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.
|
| 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. |
| 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. |
| 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. |
| Threading Test |
Starts 2 POSIX threads (on Linux) which print what they are doing to determine their
behaviour.
|
| 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.
|
| Simple Linked List |
A simple circular linked list implementation that I wrote for Jnet. |
| Circular Linked List |
A simple circular linked list implementation that I wrote for the Communication Service
Manager (csm) done for wearIT@work project. |
| 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) |
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. |
| 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) |
| 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. |
| JAdhoc Design Manual |
The document describing the design of JAdhoc. |
| Filters for Mobile IP |
The document describing the Filters for Mobile IP implementation. |
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. |
| 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. |
| Manipulating the Networking Environment Using RTNETLINK, Linux Journal, May 2006 |
Article on how to use RTNETLINK to develop applications that control
networking in Linux. |
| 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. |
| 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. |
| 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. |
| Presentation on TCP/UDP Performance in Static AODV networks, at the manet WG - 59th IETF - Seoul, South Korea, February 2004. |
|
| 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 |
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, |
| Other News | News about things (non-tech) happening around, |
| Dictionaries | Dictionaries that I use most of the time, |
| Search | Search engines I use, |
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. |