Janet Park Bell Atlantic Network Systems Advanced Technology jpark@Basit.com |
CS S6998-03 Advanced Internet Services Columbia University |
Simphony
is a simple Internet telephony program which allows users to make calls
from one IP-connected end system to another using multimedia capabilities.
It provides both the network signaling and the user interface
necessary for the user to invite others to a call and for the invitee
to answer the call. A call can be either a unicast session between two parties
or a multicast session for multiparty conference. An invitation can be
extended to establish a new session or to join an already existing, on-going
conference session. Simphony differs from other open-style public
session announcement MBone softwares, which require participants themselves
find out available conferences in order to join.
The focus of Simphony is more toward the handling of private, smaller
conferences that may occur within in an intranet environment, where users can
be explicitly and individually invited to participate.
By providing the most basic telephony features such as call
setup, termination, cancellation, call forwarding, and determination of user
availability,
this preliminary version of Simphony aims to mimic traditional telephone like
functionalities on the Internet using multimedia agents.
Simphony is light weight, written in Java and provides both the client
and server components.
The call/session setup protocol is based on
SIP
(Session Initiation Protocol) and
SDP
(Session Description Protocol).
Simphony is independent of media agents and therefore allows users to use any
MBone (Multicast Backbone) media applications in conjunction with Simphony.
Abstract
Introduction
Overview
Features
SIP Implementation
Architecture
System Requirements
Installation
Tips for Troubleshooting
Future Enhancements
References
Source Code
Simphony is currently a fully working prototype, which can be used
in a subnet or an intranet environment where IP Multicast is supported.
Given the limited scope of the project, the focus has been to
provide only a partial implementation of SIP, and yet enough
to support the very basic invitation-response scenarios most commonly used.
In the abscence of a proxy server or a location server I have taken
a simplified approach in the design that one application program serves
both as the server, the client and the redirect server all at the same time.
The program has been somewhat extensively tested on both Windows95 and
Solaris 2.5.1 to assure the platform-independence.
Also careful attention has been paid to
design a modular, extensible software framework so that more advanced
network features can be easily incorporated in the future.
In the following sections this report describes Simphony's currently
operational call handling features and the software architecture design
in detail. It will also discuss its current limitations and future enhancements
considered necessary.
Some of the main features of Simphony are:
Simphony provides robust, fully functional basic call handling
capabilities such as call/conference setup, termination,
cancellation, forwarding, and determination of callee availability
and willingness.
Developed using only core Java in a platform independent manner,
Simphony is fully portable across any platform that supports
Java Virtual Machine.
All call handling capabilities are implemented based on SDP and SIP,
which are currently under development within the IETF MMUSIC (Multiparty
Multimedia Session Control). Simphony is intended to be used in conjunction
with MBone multimedia tools such as rat, vat, vic which are also based on
Internet standard protocol such as RTP.
Simple to install and simple to use. Simphony's highly threaded architecture allows one
process to serve both as the user agent client, the user agent server,
and the redirect server.
The application software has been built on an object-oriented, flexible and extensible architecture with an anticipation of adding further enhancements to provide additional intelligent network features.
Description of available calling features can be found here.
SIP Implementation
Currently, Simphony provides a only partial implementation of SIP, and
yet enough to provide the basic invitation-response scenarios most commonly used.
Simphony has been implemented with TCP as the underlying transport layer
and based on the protocol specification described in the IETF's draft version,
SIP: Session Initiation Protocol, April 9. 1998.
The currently supported SIP request messages by a Simphony client are:
The Simphony server may respond to an invitation with one of the following status codes:
Both request and response messages generated by Simphony may contain some or all of the following headers:
All INVITE messages are accompanied by a session description and so is the response to a two-party call. In case of a multicast conference call, the connection description always contains a multicast address, whereas in a two-party call, the client and server each provides its own host address so as to indicate to the other party where the media data should be sent to. Currently all Simphony's sessions are described using the following SDP descriptions.
Design documentation can be found here.
ring.au phone.gif lib/classes.zip src/*.java
$SIMPHONY_HOME/lib/classes.zip
cd $SIMPHONY_HOME java Simphony
$SIMPHONY_HOME/lib/classes.zip.