Screen Sharing

Kazuumi Koguchi
Columbia University
New York, NY 10027
USA
koguchi@cs.columbia.edu

Abstract

Screen Sharing enables conference participants to share a screen. The SIP [1] protocol is used to setup calls and the VNC [2] protocol is used for trnsport of framebuffer data. The shared screen is created by one participant and other participants can access the screen by way of sipconf server.

Introduction

This document describes screen sharing. Screen Sharing function is added to SIP conference server sipconf and SIP user agent sipc. Screen data are transported by the VNC (Virtual Network Computing) protocol.

The rest of this document is laid out as follows: I first briefly mention related work in the field. I then provide some background on the system. After this I describe the architecture of the system. This is followed by the program documentation. Then I describe the limitations of my program, and finally I describe future work to the system.
 

Related Work

VNC (Virtual Network Computing) is a remote display system which allows to access a computer's screen from any Internet-connected machine [2]. VNC was created by AT&T Laboratories Cambridge (The laboratory closed April 23, 2002). It however does not use SIP for signalling.

Background

The conference server sipconf had already supported audio, video and chat functions. The user agent sipc had also supported point to point VNC function. However, sipconf and sipc hadn't supported multipoint screen sharing function. This project added a screen sharing interface to both sipconf and sipc.

Architecture

Screen Sharing system is configured by sipc, sipconf and vncserver/vncviewer programs.
There are two processing parts : 1. SIP signaling, 2. VNC processing.

1. SIP signaling
This part is processed by sipc and sipconf.
A participant who will be a vncserver sends the following SDP message to sipconf.

	m=application port TCP vncserver
	k=clear:string
port is the port number which vncserver program uses. string is random eight characters and used for VNC authentication. string is created by sipc program.
When sipconf receives this message, sipconf returns the following message.
	m=application port TCP vncviewer
port is the port number which sipconf's vncviewer function uses.

On the other hand, a participant who will be a vncviewer sends the following SDP message to sipconf.

	m=application port TCP vncviewer
port is the unused port number of this participant's machine. When sipconf receives this message, sipconf returns the following SDP message.
	m=application port TCP vncserver
	k=clear:string
port is the port number which sipconf's vncserver function uses. string is random eight characters and used for VNC authentication. string is created per participant by sipconf program.

2. VNC processing
This part is processed by VNC programs and sipconf. This part starts after SIP signaling.
This part is divided to two parts. One is Initial Handshaking Part and the other is Message Transfer Part.

In Initial Handshaking Part, VNC authentication is executed. In this authentication, both a vncserver and a vncviewer use the same password which is transferred in SIP signaling. Considering security, screen sharing uses different password per participant.
After Initial Handshaking succeeds, Message Transfer Part starts. In this part, the messages from vncviewer participants are transferred to vncserver by way of sipconf, and the messages from a vncserver participant are transferred to all the vncviewer participants by way of sipconf.

Program Documentation

I modified sipc, sipconf and Windows version VNC program. Modification parts of those programs are described in the following documents.

Limitations

Unfortunately, my program has some problems. The followings are remained issues.

  1. When a vncserver participant uses Windows machine and a vncviewer participant also uses Windows machine, the vncviewer participant can't see the vncserver's Windows desktop, althogh vncviewer participants who use Sun or Linux can see the Windows desktop.
  2. When a vncserver participant hangs up before vncviewers do, the vncviewer's screen doesn't close automatically.
  3. When a vncviewer participant inputs something from keyboard, the response speed is a little bit slow.
  4. sipc's GUI uses three similar VNC buttons for point to point VNC, a vncserver in screen sharing and a vncviewer in screen sharing. These images should be changed to be able to distinguish them easily.
  5. In sipc's GUI, both the vncserver button and the vncviewer button can be selected. Only one of them should be able to be selected.

Future Work

  1. To support 'viewonly' mode per vncviewer participant. This is useful for a lecture style conference or when a vncserver participant doesn't want his/her screen to be modified by particular participants.
  2. To merge 'FrameBufferUpdateRequest' from many participants in sipconf and send it to a vncserver. This reduces the bandwidth between sipconf and a vncserver.
  3. To save the latest frame buffer data in sipconf and send back directly to a vncviewer participant who requests frame buffer update.
  4. To modify VNC program in SunOS and Linux version to support password as a comand line option like Windows version. This enables sipc not to create a temporary password file.
  5. To merge point to point VNC and screen sharing function.

Acknowledgements

I appreciate Prof. Henning Shultzrinne for giving me this project and guided me. I also appreciate Kundan Singh and Xiaotao Wu for giving me many advices about sipconf, sipc and VNC.

References

1
M. Handley, H. Schulzrinne, E. Schooler, and J. Rosenberg, SIP:session initiation protocol, Request for Comments (Proposed Standard) 2543, Internet Engineering Task Force, Mar. 1999.
2
Tristan Richardson, Quentin Stafford-Fraser, Kenneth R. Wood & Andy Hopper, Virtual Network Computing, IEEE Internet Computing, Vol.2 No.1, Jan/Feb 1998 pp33-38.

Last updated by Kazuumi Koguchi