1 Authors, affiliations and contact information

Name: Heming Cui.

Department: Computer Science, Columbia University.

Email: hc2428@columbia.edu

Phone: 917-208-5612

2 Abstract

With the increasing deployment of wireless networks, opportunistic networks are already becoming commonplace due to the limitation of Internet access points. As a result, developing communication tools for opportunistic networks is necessary. Due to the fact that existing applications can not support group chatting efficiently for opportunistic networks, we propose ONEChat to address this issue. ONEChat uses message multicasting in order to support group chatting as well as reduce bandwidth consumption, and requires neither configuration nor infrastructure. Quantitative analysis indicates that ONEChat is an efficient group collaborations platform for opportunistic networks.

3 System requirements, such as operating system version, hardware, any multimedia devices

Operating System: We have run our applications on both Ubuntu 8.0.4 and Windows. Since this application is written in Java, it can also be run on other OS like Mac and Unix.

Software requirements:

(1)JDK 1.6.0.

(2)Bonjour for Linux and Windows. Can be attained by this link: http://developer.apple.com/networking/bonjour/download/.


(3)JMF (Java Multimedia Framework). Can be attained by this link: http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/download.html.

(4)Other software libraries. There are three more software libraries: ZRTP4J, Bouncycastle, and T140 used by ONEChat, but they have already been included in the source code directory, so you do not need to worry about them.

4 Hardware

no hardware limitations.

Operating System: We have run our applications on both Ubuntu 8.0.4 and Windows. Since this application is written in Java, it can also be run on other OS like Mac and Unix.

5 Installation instruction

5.1 Installing JDK.

    Just follow the normal steps of installing JDK and then configure the environments JAVA_HOME and CLASSPATH.

5.2 Installing Bonjour on Windows.

    Download the Bonjour given by the above link, and double click and follow the instructions.

5.3 Installing Bonjour on Ubuntu 8.0.4 (the Bonjour for Linux could only be compiled by gcc-4.0, so we need to install it).

        (1) Download these three files:

            gcc-4.0-base: http://packages.ubuntu.com/dapper/i386/gcc-4.0-base/download.

            cpp-4.0: http://packages.ubuntu.com/dapper/i386/cpp-4.0/download.

            gcc-4.0: http://packages.ubuntu.com/dapper/i386/gcc-4.0/download.

        (2) Install these three packages with the command: dpkg -i PACKAGE.deb, in which PACKAGE is the name of the deb package you download.

        (3) Backup the old gcc-4.2 and install the new gcc-4.0:

            cd /usr/bin

            sudo mv gcc gcc-backup

            sudo ln -s gcc-4.0 gcc

        (4) Compile and install the Bonjour for Linux (mDNSResponder) in mDNSPosix directory:

            cd mDNSResponder-107.5/mDNSPosix/

            sudo make os=linux

            sudo make os=linux JDK=$JAVA_HOME Java

            sudo make os=linux install

        (5) Copy some lib files to the Java directory:

            cp build/prod/libdns_sd.so $JAVA_HOME/jre/lib/i386/

            cp build/prod/libjdns_sd.so $JAVA_HOME/jre/lib/i386/

            cp build/prod/dns_sd.jar $JAVA_HOME/jre/lib/ext/

        (6) Restore the gcc-4.2

            sudo cd /usr/bin

            sudo rm gcc

            sudo mv gcc-backup gcc

        (7) Use the "ps -e | grep mdns" command to check whether the Bonjour daemon is running.

5.4 Configuration (setup ad hoc network between a Windows Vista machine and a Ubuntu machine):

    (1) Setup ad hoc network on Windows:

        right click the network icon on the desktop, choose the "Connect to a network" menu,

        click the "setup a connection or network",

        click the "setup a wireless ad hoc network",

        click "next", enter a network name, and do not enter a password (non-auth network),

        click "next", and then the ad hoc network is setup,

        turn off the OneCare firewall and Windows firewall,

        Configure the IP of the wireless interface: IP:, mask:, gateway:

        Then, there is an entry showing "Waiting for users to connect to the network" in your network connection list.

    (2) Setup ad hoc network on Ubuntu:

        sudo iwlist wlan0 scan

        sudo ifconfig wlan0 down

        sudo iwconfig wlan0 mode ad-hoc

        sudo iwconfig wlan0 essid XXXX (the network name you entered in Windows)

        sudo iwconfig wlan0 channel 11

        sudo ifconfig wlan0

        sudo route add default gw

        sudo ifconfig wlan0 up

    After the configurations, these two machines will be connected later (but maybe not at once). You should wait for some time to allow them to setup connection, or you could enter the "sudo iwlist wlan0 scan" command for a few times to try to speedup the connection.

    Once connected, the network connection entry in Windows would show "Connected" to replace "Waiting for users to connect to the network".

    Once connected, the two machines could Ping each other.

5.5 Installing JMF (Java Multimedia Framework). Since the JMF executable file is quite big, I do not include it in the submitted package. The executable file and installation guide can be attained by this link: http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/download.html.

6 Operation

Please refer to the Manual.pdf in current directory for how to run the code.

7 Program internal operation

Please refer to the Section III in the tech report.

8 Java document

This project uses Java as the programming language. The Java Document of this project is located in the Code/ONEChat.rar/doc directory (please extract the ONEChat.rar file then you will find the doc directory).

9 Assumption

The applications work on link-local (single hop) network. Other assumptions could be found in Section III in the tech report.

10 Useful enhancements

Future work includes improving its security against malicious users, and mitigating the UDP fragmentation problem in large file transfer.

11 Acknowledgements

Thanks very much for Professor Henning and Dr. Suman’s advice.

Thanks for the Bonjour project done by Apple.

Thanks for Suman’s BonAHA framework.