Building Open Programmable Mobile Networks

Free Software: Mobiware Release v1.0

The Source code for the Mobiware Toolkit v1.0 is now available.  Click here to download the source code distribution

Table of contents
1. Hardware and software requirements (Summary)
2. Hardware Requirements for building a Mobiware testbed
3. Software Requirements for building a Mobiware testbed
4. Features
5. Mobiware code at a glance
6. Installing Mobiware
7. What else do I need to know?
8. Download area

1. Hardware and software requirements (Summary)

The hardware requirements for running Mobiware are as follows.

Switches: The mobiware testbed needs to include at least one ATM switch that supports Ipsilon's GSMP (General Switch Management Protocol). Up to now, mobiware has been thoroughly tested with the following types of ATM switches: Fore ASX100, ATML Virata, NEC model 5, and Scorpio Stinger.

PCs and work stations: The following type of computers are required: One or more multi-homed pentium PCs configured to operate as wireless access points, preferably with clock speed higher or equal to 200 MHz; at least one Sun Sparc station with Solaris, in order to run the NodeServer and MobilityAgent objects (see, overview); and, one or more high performance notebooks, preferably with clock speed higher or equal to 200 MHz, and 64 MB RAM.

ATM Adapter Cards: The following types of ATM adapter cards are supported: Fore Systems SBA-200 (OC- 3 155MBps) on the Unix workstations and ATML Virata Link VL2000 (25Mbps) on the PCs.

Wireless Adapter Cards: Currently the air-interface is based on WaveLan operating at 2 Mbps in the 2.5 GHz band. You have to install WaveLan AT and WaveLan PCMCIA cards in the desktop PCs and notebooks, respectively. Together with your WaveLan cards, you should use the driver from Lucent Technologies that supports the Utility API used in mobiware. This driver can be downloaded from this site as well. The Utility API does not apply to the new IEEE 802.11 compliant WaveLan products.

Before attempting to run and test Mobiware, you will need to configure your testbed appropriately. An example of an experimental environment is given in the overview section of this web site. At the moment, Mobiware's MoblityAgent object runs only on Unix workstations, while two different implementations of the NodeServer object run on the PCs and workstations appropriately. At the physical switch level the NodeServer objects that run on Solaris (also called SwitchServer objects) use the GSMP protocol to control ATM switches via established signalling PVCs. Therefore, you will need to use your switches' software to establish such PVCs for the purpose of exchanging GSMP calls. Be certain that the workstations are connected through the appropriate GSMP control ports and VCIs (if any). Here is more information on the configuration of a minimum Mobiware testbed.

Make sure that you fullfill the harware requrements listed above and the software requirements listed below.

Operating Systems: PCs and notebooks should run Windows NT v4.0 and wokstations Sun's Solaris.

Programming Languages: To compile the software that runs on the PCs you will require Microsoft's Visual C++ v5.0 (not lower); Sun's Java JDK (1.1 generation); and Iona Technologies' Orbix v2.0 and OrbixWeb v2.0. To compile the software that runs on the workstations you will require a C++, Corba compatible compiler like STARCompiler 4.x, and Orbix v2.0.

Software packages: For the decoding and rendering of digital video you will need to acquire Microsoft's DirectShow SDK, included in the DirectX media SDK Beta 2 package. This software should be installed in all NT running end-systems. You will also need the AtmSockets Developer Kit, release 1.77 or higher (for the Virata Adapters), and ForeThought 4.x ATM device drivers (for the Fore adapters). We remind that our software supports ATML adapters on the PCs and FORE adapters on the Unix workstations. Contact us, in case you want to use different types of ATM adapters for Mobiware.

2. Hardware requirements to build a Mobiware testbed

3. Software requirements to build a Mobiware testbed

4. Mobiware Features

Signalling

  • programmable handoff
  • flow/session bundling
  • mobile soft-state
  • Transport

  • active wireless transport
  • adaptive FEC
  • active filters
  • Management

  • mobiman: Java-based tool
  • Multimedia Applications

  • adaptive video applications (clients/servers)
  • data applications
  • mobiware application GUI
  • 5. Mobiware code at a glance

    Mobiware comprises a set of programmable distributed CORBA objects that support the delivery of adaptive QoS flows in wireless broadband networks. The details about the functionality and the interaction of these objects are readily given in [Nossdav98]. A summary of the Mobiware objects and the corresponding executable files that need to be built are given in the Table 2.1 below:
     
     

    object name  
    type  
    description 
    executable file 
    MobileDevice 
    CORBA object 
    Provides APIs for quering beconing information, registration with an access point, connection establishment and handoff 
    mobile_terminal.exe 
    AccessPoint 
    CORBA object  
    It supports binding to the wireline network, on behalf of mobile stations, propagating CORBA calls for connection establishment and refreshing, and injecting active filters and adaptive error controllers. 
    access_point_server.exe 
    NodeServer  
    CORBA object 
    Abstracts and represents physical ATM switch/routers and is fully quality of service programmable.  
    node_server.exe
    switch_gsmp
     
    MobilityAgent 
    CORBA object 
    Provides flow management, handoff signalling, and mobility management services 
    mobiware_cm_server 
    ATMRoute 
    CORBA object  
    Provides routing information to the MobilityAgent object 
    atm_route_server 
    MWManage 
    Java Class 
    Graphical tool for mobility control cand management. 
    MWManage.class 
    FilterDaemon 
    Java Class 
    Arranges the injection of an Active Transport Object (ATO) to a strategic point inside the network.  
    FilterDaemon.class  
    FilterServer 
    Java Class 
    Database of transport objects. It provides the FilterDaemon with ATOs 
    FilterServer.class  
    MediaSelector 
    Java Class 
    Active Filter that performs selective frame dropping. 
    MediaSelector.class 
    MediaSource 
    CORBA object 
    A multimedia on-demand server. It supports client registration and multimedia transmission over ATM 
    MediaSource_server.exe 
    MediaReceiver 
    CORBA object 
    A multimedia client. 
    MediaReceiver_server.exe 
    - 
    C++ application 
    Application that packetizes MPEG video into Application Level Frames. It is used by the MediaSource Object.  
    videosource.exe 
    - 
    C++ application 
    Application that transmits simple ASCII text. It is used by the MediaSource Object. 
    atml_test.exe 
    - 
    C++ application 
    Application that receives and displays siimple ASCII text. 
    mtdp_spawn.exe 

    Table I: Mobiware Objects and Executable files

    Mobiware source code directory for NT comprises 10 subdirectories called applications, core, datapath, gui filters, network, services, startup, transport, and wavelan. The source code directory for Solaris comprises 2 subdirectories called net, and services. Table II gives a short description for the content of each directory. The source code consists of 38220 lines of C++, Java and IDL code.
     
     

    directory
    (lines of code)
     
    description 
    platform 
    applications
    (1593)
     
    Source code for the videosource, atml_test and mtdp_spawn applications 
    Windows NT 
    core
    (3298)
     
    Contains the definition and implementation of fundamental low level objects, and data tructures  
    Windows NT 
    datapath
    (3736)
     
    Contains the implementation of a programmable ATM-Wireless LAN gateway. It is used by the AccessPoint object. 
    Windows NT 
    GUI
    (2175)
     
    The files for the Mobiware graphical management tool. 
    Windows NT 
    filters
    (1207)
     
    It includes the implementation of filter daemons, filter servers and Active Transport Objects (ATOs) 
    Windows NT 
    network
    (9922)
     
    The most significant part of the code. It contains the files for the distributed network objects shown in Table I, such as MobileDevice, AccessPoint, NodeServer  
    Windows NT 
    services
    (444)
     
    The definition and implementation of MobilityAgent and ATMRoute objects 
    Windows NT 
    startup
    (1138)
     
    Programs  for installing and executing Mobiware easily 
    Windows NT 
    transport
    (3112)
     
    It contains the definition and implementation of the MediaSource and MediaReceiver objects together with their underlying transport mechanisms. 
    Windows NT 
    wavelan
    (722)
     
    Header files for the beaconing functions and methods. Their Implementation is provided as a static library 
    Windows NT 
    net
    (5821)
     
    Implementation of wireline distributed network objects, such as NodeServer. 
    Solaris 
    services
    (5052)
     
    The definition and implementation of MobilityAgent and ATMRoute objects 
    Solaris 

    Table II: Mobiware source code

    6. Installing Mobiware
     
    First, download and uncompress the source code packages for both the NT and Solaris environments. In Windows NT you may use WinZip, whereas in Solaris type gunzip *.tar.gz and then tar -xvf *.tar.  The NT package contains the files needed to build the executables that run on wireless access points (pentium PCs), mobile devices (notebooks), and mobile devices' peer hosts (PCs), whereas the Solaris package contains the files for the NodeServer and MobilityAgent objects, that run on sparc workstations.

    Mobiware can be compiled in two different modes: debug and release. In release mode, printout messages are suppressed and this applies to both the NT and Solaris packages. Also the NT executables produced in debug mode, support Microsoft Developer Studio's debuger. We suggest you to initially install mobiware in debug mode. Take care that your environment's system variables are set to appropriate values. In windows NT, click on Start, Settings, Control Panel, System, Environment to add or modify the IT_CONFIG_PATH user variable. It should be set to the path and filename of the Orbix configuration file. You may use the one included in the mobiware package (Orbix\Orbix_mobiware.cfg . In Solaris you may type setenv IT_CONFIG_PATH <location of the Orbix configuration file>.

    Follow the procedure above to make sure that your CLASSPATH system variable includes the mobiware home directory, and your path contains the bin and original\bin directories for the Orbix package, the bin directory for the  OrbixWeb package (NT package only), and the bin_debug or bin_release directory of the mobiware package, depending on your compilation mode.

    6.1 Installing Mobiware in Windows NT

    To install mobiware on all NT running mobiware nodes customize the system configuration file system.cfg, which is located under the configs directory of the mobiware package. Instructions on how to customize it are contained inside the file. NT-running mobiware nodes are of three types: access points, mobile terminals and peer hosts. In the current version of mobiware, peer hosts cannot be co-located with access points. You need to provide one configuration file, for each distributed object of the programmable mobile network that runs on every mobiware node (viz. NodeServer, AccessPoint, and MobileDevice objects). This file should be located under the configs directory as well. The names of all these configuration files are declared in system.cfg, as it is explained inside that file. The mobiware package contains a number of examples of these configuration files, such as ap1_base.cfg, ap1_node.cfg, peer_node.cfg etc.

    To proceed with the installation type under the bin_debug or bin_release directory: install <NODE_ID>. The NODE_ID  should be exactly as described in the system.cfg . For example it may be AP1, AP2, MOBILE etc.

    Next you will need to compile all mobiware projects written in C++ and CORBA. There are 8 sub-directories under the NT package. Each one contains a Microsoft Developer Studio workspace file, which can be used to enable the process of building the source code. The directories of Mobiware's source code are best shown in Table II. Before building each Microsoft Visual C++ project, however you should customize your Developer Studio's environment, by entering the appropriate include directories and library directories, as discussed in section 4 of this page. The Vicsual C++ project are set by default to the DEBUG active configuration.

    Attention: The MediaReceiver_server project contains the files asyncio.cpp and asyncrdr.cpp which are not included in the source code of Mobiware, but instead in the sample files of Direct show's SDK. Remove these files from the project, and add them again, taking care that, this time they are located at your own Direct Show's samples/async/base path.

    Finally to execute mobiware on each NT running machine type startup_script <NODE_ID> , where <NODE_ID> should be the same as declared in the system.cfg file for that particular node and used in the installation of the system.

    We advice you, if you have enough disk space, to download, and uncompress the package contaning the MPEG-1 test clips that were used in our extensive testing of mobiware. 

    6.2 Installing Mobiware in Solaris

    First customize your Orbix configuration file. You might want to use the one provided with the package. In this case, also edit and customize all the *.IMP files under the Orbix/Implementation directory of the Solaris package, or explicitly register the servers for the NodeServer and MobilityAgent objects.

    Second, edit the file src/setenv.sh and modify the path of GNU's make, if different. Next, edit the file src/mobiware.mk and set the variable MOBI_HOME equal to your mobiware home directory. You might need to insert valid paths for varius Unix compilers, drivers and utilities. Modify accordingly the variables from AR to C++ , and also IDL_HOME , FORE_HOME , X11_HOME , and MOTIF_INCDIR . Also choose the appropriate set of compilation flags according to your mode (debug/release).

    Then you have to accurately specify your system's topology. The network's topology is declared in a file called node.topology. An example of such file is included in the bin_debug directory of the Solaris package. Instructions on how to customize this file are contained inside the file. Additionally for every NodeServer object, that runs on each workstation of your network, you have to provide a configuration file. An example of such a file is included in the Solaris package (Configs/atml_switch.cfg ). Instructions on how to customize it, are contained inside the file.

    To build mobiware, enter the directory src and type source setenv.sh; afterwords makesoftlinks under bin_debug or bin_release depending on your compilation mode. Then enter the directory src/net and type make clean first and then make all. Do the same for the directory src/services. Your code has been successfully built. Be careful to use removesoftlinks before makesoftlinks, when re-building mobiware.

    Finally to execute mobiware on all workstations that run Solaris, type startup_script under bin_debug or bin_release directory, depending on your compilation mode.

    7. What else do I need to know?

    This section describes how the Microsoft's Developer Studio environment should be customized, for the successful compilation of the C++ code contained in the NT package. An example is given below:

    Let us assume that the mobiware home directory is c:\mobiware, that the Orbix home directory is c:\Orbix, that DirectShow SDK is installed under c:\MSAMovDK, and that the AtmSockets SDK is installed undet c:\atmsock. Then, click on Options, Directories to add the following directories into your Microsoft Developer Studio's Environment.

    Include Directories:

    C:\Orbix\original\include,
    C:\mobiware\src\network, C:\mobiware\src\network\idl, C:\mobiware\src\network\include,
    C:\mobiware\src\datapath, C:\mobiware\src\datapath\idl, C:\mobiware\src\datapath\include,
    C:\mobiware\src\services, C:\mobiware\src\services\idl, C:\mobiware\src\services\include,
    C:\mobiware\src\transport, C:\mobiware\src\transport\idl, C:\mobiware\src\transport\include,
    C:\mobiware\src\core, C:\mobiware\src\core\idl, C:\mobiware\src\core\include,
    C:\mobiware\src\applications, C:\mobiware\applications\include,
    C:\mobiware\src\wavelan\include, C:\mobiware\src\startup, C:\mobiware\src\startup\include,
    C:\MSAMovDK\include, C:\MSAMovDK\classes\base, C:\MSAMovDK\samples\async\include,
    C:\atmsock\inc
    

    Library Directories:

    C:\Orbix\original\lib
    C:\mobiware\lib
    C:\MSAMovDK\lib
    C:\atmsock\lib
    

    We remind that, after entering the directories above, and before compiling the source code, you should exit from Microsoft Developer Studio, so that these changes may be saved in your Windows NT user profile.

    8. Download Area

    Before downloading mobiware, please read the following:

    This is unpublished proprietary software developed as part of the COMET Group, Center for Telecommunications Research (CTR) at Columbia University. This software is to be used for research and exploratory development purposes only; it may not be used for or incorporated in commercial products or services without the prior written permission of the CTR.

    All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by the COMET Group, Center for Telecommunications Research at Columbia University.

    Software and Information furnished in this page is believed to be accurate and reliable. It is distributed as is, with absolutely no warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability of fitness for a particular purpose. The entire risk as to the quality and performance of the programs is with you. Should the programs prove defective, or cause any damage, CTR assumes no responsibility to that cost or damage. CTR also assumes no responsibility for any infringement of patents or other rights of third parties which may result from its use. No license is granted by implication or otherwise under any intelectual property rights. Software and Information is subject to change without notice.

    The WaveLAN Utility API and the driver contained in the mobiware package are property of Lucent Technologies and provided as they are with no further support.

    Mobiware_v10_NT.zip
    Mobiware_v10_Sun.tar.gz
    test_clips.zip
    wavelan_driver.zip