Over the last fifteen years, the number of computers that comprise the Internet has grown exponentially, making an incredible amount of information easily accessible and forever altering the way in which we communicate ideas and conduct business. With the development of the World Wide Web (WWW) and newer video conferencing applications, users have begun to experiment with multimedia data transmission, incorporating images and audio alongside textual data. Until recently, the Internet was primarily used for non-interactive electronic mail or file transmission, with a few low-bandwidth interactive applications, such as telnet. Wherever images, video or audio are concerned, users understandably expect quality approaching or exceeding that which they already have in telephones and television, a requirement that is often not met by the Internet.
Although there is little that a single user can do to improve the physical network conditions between two points on the Internet, there is still room to improve the communication protocols used to transport the data over the underlying network. At the heart of the Internet is the TCP/IP protocol suite, comprised primarily of the Internet Protocol (IP), the Transmission Control Protocol (TCP) and the User Datagram Protocol (UDP.) The use of TCP in combination with IP essentially guarantees reliable delivery of data from a process running on a computer connected to an internet over the underlying network architecture to a process on another host anywhere in that internet. IP defines the addressing scheme which the Internet uses, often represented in ``dotted quad notation'' (i.e. WPI's current WWW server: 220.127.116.11), and provides a best-effort, connectionless datagram delivery service. The Transmission Control Protocol builds a reliable ``stream'' service with flow control on top of the services provided by IP. Since 1983, every computer on the Internet has communicated using TCP/IP, as mandated by the Office of the Secretary of Defense [9, p.6,].
However, the recent trend toward real-time multimedia data transmission demands a type of service that TCP/IP alone, by design, cannot provide: semi-reliability. The notion of semi-reliability stems from the nature of multimedia data streams such as audio and video, where the primary interest is that of preserving the integrity of the timed progression of sequential data and the sense of ``linear time.'' Given the large amount of data required to present a realistic motion video stream to the user, it is inevitable that in a networked video application, transmitted packets will be lost either through collisions or in overrun buffers when the necessary transmission bandwidth exceeds the available network bandwidth. If TCP is being used to transmit the data, it guarantees that all data transmitted will be received at the other end of the connection, and resorts to retransmitting lost segments of the stream, contributing to the overall congestion on the network. If no buffering methods were in place in the application, this behavior would result in delays in the presented video stream - an effect analogous to the user closing his eyes, and having the world ``pick up where it left off'' when he reopens them! Naturally, we'd prefer to have the world keep turning, even though our eyes are closed.
Ideally, multimedia applications would like to have a certain amount of control over what data needs to get through, and what data can be discarded if network congestion occurs. Recently, real-time multimedia applications have been making use of UDP as an alternative to the more robust TCP. UDP functions primarily as an interface to the best-effort delivery service of IP, and as such offers no guarantees to the reliability of its data transmission service. In fact, UDP offers no sort of flow control whatsoever, frequently resulting in less-than-desirable performance on fast computers where applications are able to overload local networking buffers, losing packets before they even enter the physical network.
This MQP report documents the research and development of a fast multimedia protocol built to fill a ``middle layer'' between the application and the User Datagram Protocol. It attempts to fit the need for semi-reliability by making use of concepts and innovations from standard existing protocols such as the Transmission Control Protocol and recent multimedia-specific protocols such as the eXpress Transport Protocol (XTP). Particular attention was paid to the well-documented historical development of TCP.