# Presentation: 707781

## Network Services

- Susanne Lefvert
- lefvert@mcs.anl.gov
- University of Chicago

## Outline

- Introduction
- Limitations of Current Architecture
- Enhanced Architecture
- Network Services
- Example: Debug Service
- Exercises

## Introduction

**Network**

-  Enable users to seamlessly participate in AG meetings.
-  Middleware
-  Stream processing

## Heterogeneous Environment

- Devices
- VIC, RAT, Quicktime, Realplayer, H.323 clients...
- Formats
- Different encodings, sample rate ...
- Network
- Available multicast, bandwidth ...
- Preferences
*Surgery:* Want high resolution video
*Presentation:* Want lower resolution video

## Class Diagram

**VenueClient**

**AGNodeService**

**AGServiceManager**

**AGService**

**AGService**

**AGService**

**AGService**

**AGServiceManager**

## Capability

- Role
- CONSUMER
- PRODUCER
- Type
- AUDIO
- VIDEO
- TEXT

**Not Sufficient**

## Sequence Diagram

**Mismatch **
**can not **
**be resolved**

## Limitations of Current Architecture

- Service capability description limited
- User preferences do not exist
- No resolution to capability mismatch

## Enhanced Capabilities

- Schema including:
- Service capability
- Device (sample rate, sample size, sample format...)
- Encoding (name, quality, bit rate, size...)
- RTP (payload type, profile...)
- Node capability
- Available bandwidth, multicast, firewall...
- User preferences
- Preferred quality, bandwidth...

## Slide 10

## Sequence Diagram

## Network Service

**y = Transform(x)**

**x**

**y**

**x**

**y**

## Matcher

**Venue**

- Stream Capabilities

- Node Capabilities

**Mismatch**

**1.**

- Network Service

- Node Capabilities

- Stream Capabilities

**Match**

**Match**

**2.**

## Network Service

- Registers with a venue or a venue server
- Includes input and output capabilities
- Provides a Transform() method
- Has an interface for remote configuration
- Emits heartbeats

## Example: Video Selector

**GOAL**: Reduce bandwidth
**EXAMPLE**: Connect from home

## Example: Video Selector

**Multicast**

**Video**
**Selector**

## Example: Transcoder

**GOAL**: Enable more devices
**EXAMPLE**: H.323 client

## Example: Transcoder

**Audio**
**Transcoder**

**Multicast**

- Linear16

- pcmu

## Implementation Details

- Add new capabilities (ServiceCapability) to your node services.
- Create a network service matching the new capabilities of the node services.
- Connect the network service to the venue
- Connect your node services to the venue

## Network Service Base Class

- Initiates the AG environment
- Hides SOAP details
- Includes logging
- Communicates with venues
- Includes the Transform() method

## Service Capabilities

- Describe input and output
- Same as node service capabilities
- Used during capability negotiation and network service matching

## Example: Video Selector

- class SelectorNetworkService(AGNetworkService):
-     def __init__(self, name):
-         AGNetworkService.__init__(self, name, 'Selector', '1.0')
-         # Create capabilities
-         inconfig = {"Encoding":"H261"}
-         inCap = ServiceCapability(name, 'consumer', 'video', inconfig)
-         outconfig = {"Encoding":"H261", "StreamSelection":"On"}
-         outCap = ServiceCapability(name, 'producer', 'video', outconfig)
-         self.inCapabilities = [inCap.ToXML()]
-         self.outCapabilities = [outCap.ToXML()]
-         # Manage processes
-         self.processManager = ProcessManager()
-         # Start the soap interface
-         self.Start(self)
-     def StopTransform(self, streamList):
-         # Stop video selector
-         self.processManager.TerminateAllProcesses()

## Example: Video Selector

- def Transform(self, streamList):
-        # Start video selector
-        newStreams = []
-        for s in streamList:
-            cap = s.capability
-            cap.xml = self.outCapabilities[0]
-            # Create new stream description
-            location = MulticastNetworkLocation("224.2.2.2", 8000)
-            ns = StreamDescription("Video Selector Stream",  location,  cap)
-            newStreams.append(ns)
-            # Create process arguments
-            fromaddr = s.location.host
-            fromport = s.location.port
-            toaddr = ns.location.host
-            toport = ns.location.port
-            executable = os.path.join(os.getcwd(), "Selector.py")
-            options = [executable, fromaddr, fromport,  toaddr, toport, 1]
-                       # Start process
-            self.processManager.StartProcess(sys.executable, options)
-        return newStreams

## Example: Video Selector Consumer Service

- def __SetCapabilities(self):
-       oldCap1 = Capability( Capability.CONSUMER, "video" )
-       # Create new capabilities to include in old capability format
-       val = "Off"
-       for c in self.configuration:
-           if c.name == "video selection":
-               val = c.value
-       config = {"StreamSelection": val, "Encoding":"H261"}
-       nsc1 = ServiceCapability('Video Consumer Selector', oldCap1.role,                                                 oldCap1.type, config)
-       oldCap1.xml = nsc1.ToXML()
-       self.capabilities = [oldCap1]

## Exercises

**Exercise 6 – Network Services:**
- Testing the video selector service
- Running a debug network service
- Creating a custom SOAP interface for configuration
- Creating a client for connecting to the custom SOAP interface

- _[http://www.mcs.anl.gov/fl/research/accessgrid/documentation/tutorial/AGTk_2.4](http://www.mcs.anl.gov/fl/research/accessgrid/documentation/tutorial/AGTk_2.4)_

## Exercises 1: Video Selector

- Install the modified node services with new capabilities.
- Enter the venue the video selector is connected to
- Switch between video selection on and off

## Exercises 2: Debug Service

- Install the two modified node serviceswith new service capabilities
- Modify the Debug Network Service
- Connect the network service to a venue and enter with the two node services to trigger matching.

## Exercises 3: SOAP Interface

- Add a SOAP interface to the debug service
- Create a client that can communicate remotely with the debug network service SOAP interface.