Next:
List of Figures
Up:
XUDP: A Real-Time Multimedia
Previous:
XUDP: A Real-Time Multimedia
Contents
List of Figures
List of Tables
1 Executive Summary
2 Introduction
3 Literature Review
3.1 Introduction to Internetworking
3.1.1 Data Transport Units
3.1.2 The TCP/IP Internet Protocol Suite
3.1.3 Protocol Layering and Encapsulation
3.1.4 The Client/Server Model
3.2 The Development of TCP/IP
3.2.1 Early TCP: 4.2BSD
3.2.2 4.3BSD
Tahoe
Slow-Start
Retransmission Time Out Estimator
Karn's Exponential RTO Back-off Algorithm
Dynamic Congestion Window Sizing
3.2.3 4.3BSD
Reno
3.2.4 4.4BSD with Extensions for High Performance
Window Scaling Option
Round Trip Time Measurement (RTTM)
Protect Against Wrapped Sequences (PAWS)
3.2.5 The Future: TCP
Vegas
?
3.3 Multimedia Protocols
3.3.1 The eXpress Transport Protocol (XTP)
4 Problem Documentation and Project Goals
4.1 The Nature of Multimedia Data
4.2 The Notion of Timed Obsolescence
4.3 The eXtended User Datagram Protocol (XUDP)
5 High-Level System Design and Specifications
5.1 System Specifications Per Layer
5.2 Application Layer
5.2.1 Layering
5.2.2 The XUDP daemon:
xudpd
5.2.3 Application Programmer's Interface (API)
Registering:
xudpSocket
Connecting:
xudpConnect, xudpBind, xudpListen
and
xudpAccept
5.2.4 The Parcel
5.2.5
struct XUDPHost *
Host Data Structure
5.3 Transport Layer
5.3.1 Interface to UDP
5.3.2 XUDP's Queues
Outgoing Parcel Queue
Incoming Parcel Queue
Fragmented Parcel Acknowledgment Wait Queue
Partially Received Fragmented Parcel Queue
Outgoing Command Queue
Incoming Command Queue
Outgoing Packet Queue
Incoming Packet Queue
5.3.3 Flow Control
Sliding Window
Slow Start
RTT Variance Estimation
Congestion Anticipation
Exponential Backoff Upon Successive Retransmits
Selective Acknowledgment and Retransmit
6 Application Layer Sample Program
6.1 Simple Stream-oriented Client/Server
6.1.1 Client
6.2 Server
7 Source Code Presentation
7.1 Conventions
7.2 Data Structures
7.2.1
XUDPHost
structure
7.2.2
XUDPPacket
structure
7.2.3
XUDPHeader
structure
7.2.4
XUDPParcel
structure
7.2.5
XUDPFragParcel
structure
7.2.6
XUDPCmd
structure
7.2.7
XUDPCB
``Control Block'' structure
7.2.8
XUDPSCB
``Server Control Block'' structure
7.3 Application Programmers Interface: XUDP Sockets
7.3.1
xudpSocket
function
7.3.2
xudpBind
function
7.3.3
xudpListen
function
7.3.4
xudpAccept
function
7.3.5
xudpConnect
function
7.3.6
xudpSend
function
7.3.7
xudpRecv
function
7.3.8
xudpClose
function
7.4 User Space Implementation: XUDP Daemon
7.4.1
main()
7.4.2
xudp_init
function
7.4.3
xudp_getnewuser
function
7.4.4
xudp_socketinit
function
7.4.5
xudp_loseuser
function
7.4.6
xudp_handlecontrol
function
7.5 Parcel Sublayer
7.5.1
xudp_queueparcel
function
7.5.2
xudp_dequeueparcel
function
7.5.3
xudp_makecommandparcel
function
7.5.4
xudp_fragmentparcel
function
7.5.5
xudp_reassembleparcel
function
7.5.6
xudp_recvackparcels
function
7.5.7
xudp_ackparcels
function
7.5.8
xudp_endparcels
function
7.5.9
xudp_removeobsolete
function
7.6 Packet Sublayer
7.6.1
xudp_sendmsg
function
7.6.2
xudp_recvmsg
function
7.6.3
xudp_queueackwait
function
7.6.4
xudp_organizeincoming
function
7.6.5
xudp_xmit
function
7.6.6
xudp_recv
function
7.6.7
xudp_recvackpackets
function
7.6.8
xudp_ackpackets
function
7.6.9
xudp_retransmit
function
7.6.10
xudp_rttmath
function
7.6.11
xudp_windowchange
function
7.7 Support Routines
7.7.1
makeFragParcel
function
7.7.2
makeCmd
function
7.7.3
makeParcel
function
7.7.4
makePacket
function
7.7.5
insertFragParcel
function
7.7.6
insertParcel
function
7.7.7
insertPacket
function
7.7.8
deleteFragParcel
function
7.7.9
deleteCmd
function
7.7.10
deleteParcel
function
7.7.11
deletePacket
function
7.7.12
addFragParcel
function
7.7.13
addParcel
function
7.7.14
addCmd
function
7.7.15
addPacket
function
7.7.16
xudpError
function
7.7.17
xudpGetFunction
function
7.7.18
xudpSendFunction
function
7.7.19
streamRead
function
7.7.20
streamWrite
function
7.7.21
makeServer_un
function
7.7.22
max
function
7.7.23
min
function
7.7.24
makeTimestamp
function
8 Results and Analysis
8.1 Early Results: Problems with XUDP's ``Nagle'' Algorithm
8.2 Early Results: ``Tweaked'' Congestion Avoidance Mechanism
8.3 Comparison of Early Results
8.4 Fully-reliable Data Stream
8.5 Simulated 10fps Real-Time Uncompressed Video Data
8.8.1 XUDP
8.8.2 TCP
8.8.3 Comparison
8.6 Simulated 20fps Uncompressed Real-Time Video Data
XUDP
TCP
Comparison
8.7 Simulated 20fps Uncompressed Video Data Under Severe Network Loading
XUDP
TCP
Comparison
8.8 Simulated 20fps Uncompressed Video Data Under Severe Network Loading, Relieved Near End
XUDP
TCP
Comparison
9 Conclusions and Directions for Future Work
References
Mike Andrews
Wed Mar 19 16:07:58 EST 1997