# Presentation: 028575

## Jini-EnhancedNALU Data System

## NALU System - Original

**NALU System - Original**

-  Multicast LAN

- Multicast LAN

## Project Objectives

- Develop a prototype Jini-enabled ReadiNet service and a prototype Jini-enabled SIMDIS client
- - Clients and services location-independent (WAN access)
- - Support *spontaneous networking* (clients, services, data sources come and go asynchronously)
- - Minimize system configuration requirements
- - Fault tolerant - i.e., *self healing* where possible
- - Scalable architecture and design

## Jini Enhanced NALU System

**NALU Service Manager**

**NCO**

_**PMRF**_

_**MHPCC**_

**Jini Enhanced NALU System**

**NCO**

**NCO**

**NCO**

**NDM**

**NDM**

## Jini NALU System Features

- Multicast Data Sources, Services, and Clients Location Independent:
- - Multicast data is unicast to WAN-based clients, then  re-multicast locally in the correct format for multicast-dependent applications
- - Enables streaming, high bandwidth apps over WANs
- Data Sources, Services, and Clients Configurable:
- - At startup and/or dynamically
- Wrapper Design Can Support Various Legacy Clients & Services:
- - Configuration info to run legacy code provided by clients

## Tunnel

- Is:
- - A Java object
- Has:
- - A multicast datagram socket and a unicast socket
- - Processing interface
- Behavior:
- - Knows how to convert multicast packets into a unicast data stream
- - Knows how to convert a unicast data stream into multicast packets in the proper format
- - Performs processing on data as required

## NALU Data Source (NDS)

- Is:
- - A Jini (service) entity
- Has:
- - A Tunnel
- - A service proxy which contains a TunnelConfig instance
- - A means to register its (NDS) service proxy with lookup services (i.e., a JoinManager instance)
- Behavior:
- - Knows how to convert multicast packets from a data source within its multicast radius to a unicast output stream, processing the data as necessary

## NALU Data Manager (NDM)

- Is:
- - A Jini (service) entity
- Has:
- - A service proxy which contains remote methods
- - A means to register its (NDM) service proxy with lookup services (i.e., a JoinManager instance)
- Behavior:
- - Manages NDSs (creation/deletion/configuration) based on adminstrator's inputs and remote method commands.
- - Dynamically adds NDSs based on multicast discovery requests.

## NALU Data Manager Interface

-   /**
-    * Creates a new NALU data source and returns the proxy for it.  The
-    * data source type required is specified by the input argument.
-    *
-    * @param data type required for the data source
-    *
-    * @return a NALU data source proxy
-    */
-   public NaluDataSource getNewDataSource( NdsAttribute type )
-   	throws java.rmi.RemoteException;
-   /**
-    * Creates a new NALU data source and returns the proxy for it.  The
-    * data source configuration info is specified by the input argument.
-    *
-    * @param configuration info required for the data source
-    *
-    * @return a NALU data source proxy
-    */
-   public NaluDataSource getNewDataSource( NdsConfig config )
-   	throws java.rmi.RemoteException;

## NALU Service Object (NSO)

- Is:
- - A Jini (service) entity
- Has:
- - A Tunnel
- - A service proxy which contains a TunnelConfig instance
- - A means to register its (NSO) service proxy with lookup services (i.e., a JoinManager instance)
- Behavior:
- - Knows how to convert a multicast packets from a data source within its multicast radius into a unicast output data stream, processing the data as required

## NALU Service Manager (NSM)

- Is:
- - A Jini (client & service) entity
- Has:
- - A service proxy which contains remote methods
- - A means to register its (NSM) service proxy with lookup services (i.e., a JoinManager instance)
- - A Tunnel(s) - created via a TunnelConfig instance for each NDS proxy it retrieves via lookup
- - A means of obtaining needed Jini services, like NDSs & NDMs (i.e., a ServiceDiscoveryManager instance)
- Behavior:
- - Manages NSOs (creation/deletion/configuration)

## NALU Service Manager (NSM)

-   /**
-    * Creates a new NALU data source and returns the proxy for it.  The
-    * service config info required is specified by the input argument.
-    *
-    * @param the service configuration info required to create the
-    *				service object
-    *
-    * @return a NALU service object proxy
-    */
-   public NaluServiceObject getNewServiceObject( ServiceConfig config )
-   	throws java.rmi.RemoteException;
-   /**
-    * Returns the NdsAttribute for each NALU data source connected to
-    * this service manager
-    *
-    * @return an array of NdsAttributes
-    */
-   public NdsAttribute []getDataSources() throws java.rmi.RemoteException;

## NALU Client Object (NCO)

- Is:
- - A Jini (client) entity
- Has:
- - A means of obtaining needed Jini services, like NSOs & NSMs (i.e., a ServiceDiscoveryManager instance)
- - A Tunnel - created via a TunnelConfig instance of an NSO proxy (proxy obtained from lookup services via ServiceDiscoveryManager instance)
- Behavior:
- - Knows how to convert a unicast input data stream to  multicast packets in the appropriate format

## Status

- Jini Clients & Services Completely Functional:
- - Clients and services have been developed and tested
- - Additional testing being performed on deployed software
- Distributed to Remote Clients:
- - NALU Data Manager has been deployed at PMRF site, NALU Client Object has been deployed at UNM, software will be deployed and used at additional sites as well
- Jini, Java-Related Performance Issues
**- **_**NONE**_**:** Jini is a distributed computing environment, once it is used to publish/subscribe to clients and services, performance is application-dependent (whether legacy application or new, Java-based application).

## Next Steps

- Provide a Service Bean architecture
- - Wrap new/legacy applications within service beans.
- - NALU system supplies the infrastructure, applications logic is contained within the Service Beans.
- Develop a User Interface module for NALU Jini Service Management
- - Facilitates local/remote management of Nalu Data Manager and Nalu Service Manager.
- - Different user interface depending upon the client capabilities (graphical, text-based, etc.).

## Next Steps

- Platform-Independent Data (XML)
- - Data messages, configuration files, etc.  JAXP1.0 is available at java.sun.com (supports SAX, DOM, etc.)
- Add Surrogate Architecture for Devices
- - Allows clients/services with limited resources to participate in the NALU system.
- - Facilitate use of wireless devices, PDAs, etc.
- Add Fine-Grain Security Features
- - Subject authentication and authorization on remote calls - facilitates access control on distributed objects.  Java SSL for integrity and confidentiality.

## Issues

- Data Formatting (Unicast-to-Multicast)
- Data conversion from multicast packets to unicast streams then back to multicast packets requires correct data formatting.  The multicast packet formats required by end users must be known in order to insure proper unicast to multicast data conversion.
- Processing Overhead
- Data formatting adds overhead, the amount of overhead is a function of the formatting required.  Additional processing of the data will increase the overhead as well.

## Issues

- Plug n' Work
- Provide a user friendly & robust application install and usage mechanism.
- Security
- Upcoming Java SDK 1.4 will facilitate fine-grain security features
- User Community
- Develop a user community to use the NALU system, encourages info sharing, ideas, enhancements, etc.