Building Very Large Overlay Networks Jorg Liebeherr University of Virginia.

Slides:



Advertisements
Similar presentations
CPSC Network Layer4-1 IP addresses: how to get one? Q: How does a host get IP address? r hard-coded by system admin in a file m Windows: control-panel->network->configuration-
Advertisements

1 Mobile IPv6-Based Ad Hoc Networks: Its Development and Application Advisor: Dr. Kai-Wei Ke Speaker: Wei-Ying Huang.
COS 461 Fall 1997 Routing COS 461 Fall 1997 Typical Structure.
© 2007 Cisco Systems, Inc. All rights reserved.Cisco Public 1 Addressing the Network – IPv4 Network Fundamentals – Chapter 6.
Umut Girit  One of the core members of the Internet Protocol Suite, the set of network protocols used for the Internet. With UDP, computer.
Multicast in Wireless Mesh Network Xuan (William) Zhang Xun Shi.
UNIT-IV Computer Network Network Layer. Network Layer Prepared by - ROHIT KOSHTA In the seven-layer OSI model of computer networking, the network layer.
Ranveer Chandra , Kenneth P. Birman Department of Computer Science
Computer Science 1 ShapeShifter: Scalable, Adaptive End-System Multicast John Byers, Jeffrey Considine, Nicholas Eskelinen, Stanislav Rost, Dmitriy Zavin.
HyperCast Jorg Liebeherr University of Virginia. Acknowledgements Developed in my research group since 1999 Contributors : –Past: Bhupinder Sethi, Tyler.
Scribe: A Large-Scale and Decentralized Application-Level Multicast Infrastructure Miguel Castro, Peter Druschel, Anne-Marie Kermarrec, and Antony L. T.
1 Spring Semester 2007, Dept. of Computer Science, Technion Internet Networking recitation #4 Mobile Ad-Hoc Networks AODV Routing.
ZIGZAG A Peer-to-Peer Architecture for Media Streaming By Duc A. Tran, Kien A. Hua and Tai T. Do Appear on “Journal On Selected Areas in Communications,
Multicast-Enabled Landmark (M-LANMAR) : Implementation and scalability YunJung Yi, Mario Gerla, JS Park, Yeng Lee, SW Lee Computer Science Dept University.
Internet Indirection Infrastructure Ion Stoica UC Berkeley.
Chapter 4 IP Multicast Professor Rick Han University of Colorado at Boulder
OSMOSIS Final Presentation. Introduction Osmosis System Scalable, distributed system. Many-to-many publisher-subscriber real time sensor data streams,
Two challenges for building large self-organizing overlay networks
Anonymous Gossip: Improving Multicast Reliability in Mobile Ad-Hoc Networks Ranveer Chandra (joint work with Venugopalan Ramasubramanian and Ken Birman)
CS335 Networking & Network Administration Tuesday, April 20, 2010.
Internet Indirection Infrastructure (i3) Ion Stoica, Daniel Adkins, Shelley Zhuang, Scott Shenker, Sonesh Surana UC Berkeley SIGCOMM 2002.
© J. Liebeherr, All rights reserved 1 IP Multicasting.
ROUTING ON THE INTERNET COSC Aug-15. Routing Protocols  routers receive and forward packets  make decisions based on knowledge of topology.
21.1 Chapter 21 Network Layer: Address Mapping, Error Reporting, and Multicasting Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction.
Peer-to-Peer Overlay Networks. Outline Overview of P2P overlay networks Applications of overlay networks Classification of overlay networks – Structured.
Lecture 2 TCP/IP Protocol Suite Reference: TCP/IP Protocol Suite, 4 th Edition (chapter 2) 1.
Denali Retreat, April 2002 Overlay Socket Tutorial.
1 Spring Semester 2009, Dept. of Computer Science, Technion Internet Networking recitation #3 Mobile Ad-Hoc Networks AODV Routing.
Networks – Network Architecture Network architecture is specification of design principles (including data formats and procedures) for creating a network.
Application-Layer Multicast -presented by William Wong.
CSC 600 Internetworking with TCP/IP Unit 8: IP Multicasting (Ch. 17) Dr. Cheer-Sun Yang Spring 2001.
Network Layer4-1 Chapter 4: Network Layer r 4. 1 Introduction r 4.2 Virtual circuit and datagram networks r 4.3 What’s inside a router r 4.4 IP: Internet.
Chapter 22 Network Layer: Delivery, Forwarding, and Routing Part 5 Multicasting protocol.
Chi-Cheng Lin, Winona State University CS 313 Introduction to Computer Networking & Telecommunication Chapter 5 Network Layer.
TOMA: A Viable Solution for Large- Scale Multicast Service Support Li Lao, Jun-Hong Cui, and Mario Gerla UCLA and University of Connecticut Networking.
Multicasting Part I© Dr. Ayman Abdel-Hamid, CS4254 Spring CS4254 Computer Network Architecture and Programming Dr. Ayman A. Abdel-Hamid Computer.
Jörg Liebeherr, 2001 Many-to-Many Communications in HyperCast Jorg Liebeherr University of Virginia.
© J. Liebeherr, All rights reserved 1 Multicast Routing.
Multicast ad hoc networks Multicast in ad hoc nets Multicast in ad hoc nets Review of Multicasting in wired networks Review of Multicasting in wired networks.
CSC 600 Internetworking with TCP/IP Unit 7: IPv6 (ch. 33) Dr. Cheer-Sun Yang Spring 2001.
#1 EETS 8316/NTU CC725-N/TC/ Routing - Circuit Switching  Telephone switching was hierarchical with only one route possible —Added redundant routes.
1 HyperCast Brief overview Jorg Liebeherr University of Virginia.
© J. Liebeherr, All rights reserved 1 IP Multicasting.
1 Computer Communication & Networks Lecture 21 Network Layer: Delivery, Forwarding, Routing Waleed.
P2P Group Meeting (ICS/FORTH) Monday, 28 March, 2005 A Scalable Content-Addressable Network Sylvia Ratnasamy, Paul Francis, Mark Handley, Richard Karp,
Data Communications and Computer Networks Chapter 4 CS 3830 Lecture 20 Omar Meqdadi Department of Computer Science and Software Engineering University.
CS 268: Project Suggestions Ion Stoica January 26, 2004.
1 IP Multicasting Relates to Lab 10. It covers IP multicasting, including multicast addressing, IGMP, and multicast routing.
Ad Hoc Multicast Routing
CS 6401 Overlay Networks Outline Overlay networks overview Routing overlays Resilient Overlay Networks Content Distribution Networks.
Multicasting  A message can be unicast, multicast, or broadcast. Let us clarify these terms as they relate to the Internet.
1 Kyung Hee University Chapter 11 User Datagram Protocol.
Multicasting EECS June Multicast One-to-many, many-to-many communications Applications: – Teleconferencing – Database – Distributed computing.
Process-to-Process Delivery:
ROUTING ON THE INTERNET COSC Jun-16. Routing Protocols  routers receive and forward packets  make decisions based on knowledge of topology.
Jörg Liebeherr, 2001 HyperCast - Support of Many-To-Many Multicast Communications Jörg Liebeherr University of Virginia.
Multi Node Label Routing – A layer 2.5 routing protocol
Chapter 4 Network Layer Computer Networking: A Top Down Approach 6th edition Jim Kurose, Keith Ross Addison-Wesley March 2012 CPSC 335 Data Communication.
Internet Indirection Infrastructure (i3)
Scaling the Network: The Internet Protocol
Process-to-Process Delivery, TCP and UDP protocols
Internet Networking recitation #4
ECE 544 Protocol Design Project 2016
Process-to-Process Delivery:
Many-to-Many Communications in HyperCast
Support of Many-To-Many Multicast Communications
ECE 544 Project3 Team member: BIAO LI, BO QU, XIAO ZHANG 1 1.
CS4470 Computer Networking Protocols
Scaling the Network: The Internet Protocol
Other Routing Protocols
Presentation transcript:

Building Very Large Overlay Networks Jorg Liebeherr University of Virginia

HyperCast Project HyperCast is a set of protocols for large-scale overlay multicasting and peer-to-peer networking Research problems: Investigate which topologies are best suited for … a large number of peers … that spuriously join and leave … in a network that is dynamically changing Make it easier to write applications for overlays easier by … providing suitable abstractions (“overlay socket”) … shielding application programmer from overlay topology issues

Acknowledgements Team: –Past: Bhupinder Sethi, Tyler Beam, Burton Filstrup, Mike Nahas, Dongwen Wang, Konrad Lorincz, Jean Ablutz, Haiyong Wang, Weisheng Si, Huafeng Lu –Current: Jianping Wang, Guimin Zhang, Guangyu Dong, Josh Zaritsky This work is supported in part by the National Science Foundation: D E N A L I

Applications with many receivers Number of Receivers Number of Senders Streaming Software Distribution 101, ,000, ,000 1,000,000 Collaboration Tools Games Peer-to-Peer Applications Sensor networks

Need for Multicasting ? Maintaining unicast connections is not feasible Infrastructure or services needs to support a “send to group”

Problem with Multicasting Feedback Implosion: A node is overwhelmed with traffic or state –One-to-many multicast with feedback (e.g., reliable multicast) –Many-to-one multicast (Incast) NAK

Multicast support in the network infrastructure (IP Multicast) Reality Check : –Deployment has encountered severe scalability limitations in both the size and number of groups that can be supported –IP Multicast is still plagued with concerns pertaining to scalability, network management, deployment and support for error, flow and congestion control

Overlay Multicasting Logical overlay resides on top of the layer-3 network infrastructure (“underlay”) Data is forwarded between neighbors in the overlay Transparent to underlay network Overlay topology should match the layer-3 infrastructure

Overlay-based approaches for multicasting Build an overlay mesh network and embed trees into the mesh: –Narada (CMU) –RMX/Gossamer (UCB) –more Build a shared tree: –Yallcast/Yoid (NTT, ACIRI) –AMRoute (Telcordia, UMD – College Park) –Overcast (MIT) –Nice (UMD) –more Build an overlay using distributed hash tables and embed trees: –Chord (UCB, MIT) –CAN (UCB, ACIRI) –Pastry/Scribe (Rice, MSR) –more

HyperCast Overlay Topologies Applications organize themselves to form a logical overlay network with a given topology Data is forwarded along the edges of the overlay network Hypercube Delaunay triangulation Spanning tree (for mobile ad hoc)

Programming in HyperCast: Overlay Socket Socket-based API UDP (unicast or multicast) or TCP Supports different semantics for transport of data Supports different overlay protocols Implementation in Java HyperCast Project website:

HyperCast Software: Data Exchange Each overlay socket has 2 adapters to underlying network: 1.for protocol to manage the overlay topology 2.for data transfer Data transfer Overlay protocol Data transfer Overlay protocol Data transfer

Network of overlay sockets Overlay socket is an endpoint of communication in an overlay network An overlay network is a collection of overlay sockets Overlay sockets in the same overlay network have a common set of attributes Each overlay network has an overlay ID, which can be used the access attributes of overlay Nodes exchange data with neighbors in the overlay topology

Unicast and Multicast in overlays Unicast and multicast is done along trees that are embedded in the overlay network. Requirement: Overlay node must be able to compute the child nodes and parent node with respect to a given root

Overlay Message Format Common Header: Version (4 bit): Version of the protocol (current Version is 0x0) LAS (2 bit):Size of logical address field Dmd (4bit)Delivery Mode (Multicast, Flood, Unicast, Anycast) Traffic Class (8 bit):Specifies Quality of Service class (default: 0x00) Flow Label (8 bit):Flow identifier Next Header (8 bit)Specifies the type of the next header following this header OL Message Length (8 bit)Specifies the type of the next header following this header. Hop Limit (16 bit):TTL field Src LA ((LAS+1)*4 bytes)Logical address of the source Dest LA ((LAS+1)*4 bytes Logical address of the destination Loosely modeled after IPv6  minimal header with extensions

Socket Based API //Generate the configuration object OverlayManager om = new OverlayManager(“hypercast.prop”); String overlayID = om.getDefaultProperty(“MyOverlayID") OverlaySocketConfig config = new om.getOverlaySocketConfig(overlayID); //create an overlay socket OL_Socket socket = config.createOverlaySocket(callback); //Join an overlay socket.joinGroup(); //Create a message OL_Message msg = socket.createMessage(byte[] data, int length); //Send the message to all members in overlay network socket.sendToAll(msg); //Receive a message from the socket OL_Message msg = socket.receive(); //Extract the payload byte[] data = msg.getPayload(); //Generate the configuration object OverlayManager om = new OverlayManager(“hypercast.prop”); String overlayID = om.getDefaultProperty(“MyOverlayID") OverlaySocketConfig config = new om.getOverlaySocketConfig(overlayID); //create an overlay socket OL_Socket socket = config.createOverlaySocket(callback); //Join an overlay socket.joinGroup(); //Create a message OL_Message msg = socket.createMessage(byte[] data, int length); //Send the message to all members in overlay network socket.sendToAll(msg); //Receive a message from the socket OL_Message msg = socket.receive(); //Extract the payload byte[] data = msg.getPayload(); Tries to stay close to Socket API for UDP Multicast Program is independent of overlay topology

Property File # This is the Hypercast Configuration File # # LOG FILE: LogFileName = stderr # ERROR FILE: ErrorFileName = stderr # OVERLAY Server: OverlayServer = # OVERLAY ID: OverlayID = /9472 KeyAttributes = Socket,Node,SocketAdapter # SOCKET: Socket = HCast2-0 HCAST2-0.TTL = 255 HCAST2-0.ReceiveBufferSize = 200 HCAST2-0.ReadTimeout = 0... # This is the Hypercast Configuration File # # LOG FILE: LogFileName = stderr # ERROR FILE: ErrorFileName = stderr # OVERLAY Server: OverlayServer = # OVERLAY ID: OverlayID = /9472 KeyAttributes = Socket,Node,SocketAdapter # SOCKET: Socket = HCast2-0 HCAST2-0.TTL = 255 HCAST2-0.ReceiveBufferSize = 200 HCAST2-0.ReadTimeout = 0... # SOCKET ADAPTER: SocketAdapter = TCP SocketAdapter.TCP.MaximumPacketLength = SocketAdapter.UDP.MessageBufferSize = 100 # NODE: Node = HC2-0 HC2-0.SleepTime = 400 HC2-0.MaxAge = 5 HC2-0.MaxMissingNeighbor = 10 HC2-0.MaxSuppressJoinBeacon = 3 # NODE ADAPTER: # NodeAdapter = UDPMulticast NodeAdapter.UDP.MaximumPacketLength = 8192 NodeAdapter.UDP.MessageBufferSize = 18 NodeAdapter.UDPServer.UdpServer0 = :8081 NodeAdapter.UDPServer.MaxTransmissionTime = 1000 NodeAdapter.UDPMulticastAddress = /2424 # SOCKET ADAPTER: SocketAdapter = TCP SocketAdapter.TCP.MaximumPacketLength = SocketAdapter.UDP.MessageBufferSize = 100 # NODE: Node = HC2-0 HC2-0.SleepTime = 400 HC2-0.MaxAge = 5 HC2-0.MaxMissingNeighbor = 10 HC2-0.MaxSuppressJoinBeacon = 3 # NODE ADAPTER: # NodeAdapter = UDPMulticast NodeAdapter.UDP.MaximumPacketLength = 8192 NodeAdapter.UDP.MessageBufferSize = 18 NodeAdapter.UDPServer.UdpServer0 = :8081 NodeAdapter.UDPServer.MaxTransmissionTime = 1000 NodeAdapter.UDPMulticastAddress = /2424 Stores attributes that configure the overlay socket (overlay protocol, transport protocol and addresses)

Hypercast Software: Demo Applications Distributed WhiteboardMulticast file transfer Data aggregation in P2P Net:  Homework assignment in CS757 (Computer Networks) Homework assignment in CS757 (Computer Networks)

Application: Emergency Response Network for Arlington County, Virginia Project directed by B. Horowitz and S. Patek

Application of P2P Technology to Advanced Emergency Response Systems

Other Features of Overlay Socket Current version (2.0): Statistics: Each part of the overlay socket maintains statistics which are accessed using a common interface Monitor and control: XML based protocol for remote access of statistics and remote control of experiments LoToS: Simulator for testing and visualization of overlay protocols Overlay Manager: Server for storing and downloading overlay configurations Next version (parts are done, release in Summer 2004): –“MessageStore”: Enhanced data services, e.g., end-to-end reliability, persistence, streaming, etc. –HyperCast for mobile ad-hoc networks on handheld devices –Service differentiation for multi-stream delivery –Clustering –Integrity and privacy with distributed key management

HyperCast Approach Build overlay network as a graph with known properties –N-dimensional (incomplete) hypercube –Delaunay triangulation Advantages: –Achieve good load-balancing –Exploit symmetry –Next-hop routing in the overlay is free Claim: Can improve scalability of multicast and peer-to- peer networks by orders of magnitude over existing solutions

Delaunay Triangulation Overlays

0,0 1,0 2,03,0 0,1 0,2 0,3 12,0 10,8 5,2 4,9 0,6 Nodes are assigned x-y coordinates (e.g., based on geographic location) Nodes are assigned x-y coordinates (e.g., based on geographic location) Nodes in a Plane

12,0 10,8 5,2 4,9 0,6 The Voronoi region of a node is the region of the plane that is closer to this node than to any other node. Voronoi Regions

The Delaunay triangulation has edges between nodes in neighboring Voronoi regions. 12,0 10,8 5,2 4,9 0,6 Delaunay Triangulation

An equivalent definition: A triangulation such that each circumscribing circle of a triangle formed by three vertices, no vertex of is in the interior of the circle. 12,0 10,8 5,2 4,9 0,6 Delaunay Triangulation

  Locally Equiangular Property Sibson 1977: Maximize the minimum angle For every convex quadrilateral formed by triangles ACB and ABD that share a common edge AB, the minimum internal angle of triangles ACB and ABD is at least as large as the minimum internal angle of triangles ACD and CBD.

Next-hop routing with Compass Routing A node’s parent in a spanning tree is its neighbor which forms the smallest angle with the root. A node need only know information on its neighbors – no routing protocol is needed for the overlay. Root Node B A 15° 30° B is the Node’s Parent

12,0 4,9 Spanning tree when node (8,4) is root. The tree can be calculated by both parents and children. 0,6 5,2 4,9 12,0 10,8 8,4

Evaluation of Delaunay Triangulation overlays Delaunay triangulation can consider location of nodes in an (x,y) plane, but is not aware of the network topology Question: How does Delaunay triangulation compare with other overlay topologies?

Hierarchical Delaunay Triangulation 2-level hierarchy of Delaunay triangulations The node with the lowest x-coordinate in a domain DT is a member in 2 triangulations

Multipoint Delaunay Triangulation Different (“implicit”) hierarchical organization “Virtual nodes” are positioned to form a “bounding box” around a cluster of nodes. All traffic to nodes in a cluster goes through one of the virtual nodes

Overlay Topologies Delaunay Triangulation and variants –DT –Hierarchical DT –Multipoint DT Hypercube Degree-6 Graph –Similar to graphs generated in Narada Degree-3 Tree –Similar to graphs generated in Yoid Logical MST –Minimum Spanning Tree overlays that assume knowledge of network topology overlays used by HyperCast

Transit-Stub Network Transit-Stub GeorgiaTech topology generator 4 transit domains 4  16 stub domains 1024 total routers 128 hosts on stub domain

Evaluation of Overlays Simulation: –Network with 1024 routers (“Transit-Stub” topology) – hosts Performance measures for trees embedded in an overlay network: –Degree of a node in an embedded tree –“Stretch”: Ratio of delay in overlay to shortest path delay –“Stress”: Number of duplicate transmissions over a physical link

Illustration of Stress and Stretch A A B B Stress = 2 Stretch for A  B: Unicast delay A  B : Delay A  B in overlay: 6

Average Stretch Stretch (90 th Percentile)

90 th Percentile of Stretch Delaunay triangulation Stretch (90 th Percentile)

Average Stress Delaunay triangulation

90 th Percentile of Stress Delaunay triangulation

The DT Protocol Protocol which organizes members of a network in a Delaunay Triangulation Each member only knows its neighbors “soft-state” protocol Topics: Nodes and Neighbors Example: A node joins State Diagram Rendezvous Measurement Experiments

Each node sends Hello messages to its neighbors periodically 12,0 5,2 4,9 0,6 10,8 Hello

Each Hello contains the clockwise (CW) and counterclockwise (CCW) neighbors Receiver of a Hello runs a “Neighbor test” (  locally equiangular prop.) CW and CCW are used to detect new neighbors Each Hello contains the clockwise (CW) and counterclockwise (CCW) neighbors Receiver of a Hello runs a “Neighbor test” (  locally equiangular prop.) CW and CCW are used to detect new neighbors 12,0 5,2 4,9 0,6 10,8 Hello CW = 12,0 CCW = 4,9 Neighbor 5,212,04,9 4,9 5,2– 12,0 – 10,8 CCWCW Neighborhood Table of 10,8

A node that wants to join the triangulation contacts a node that is “close” 12,0 10,8 5,2 4,9 0,6 8,4 New node Hello

Node (5,2) updates its Voronoi region, and the triangulation 12,0 4,9 0,6 8,4 10,8 5,2

(5,2) sends a Hello which contains info for contacting its clockwise and counterclockwise neighbors Hello 12,0 4,9 0,6 8,4 10,8 5,2

12,0 4,9 0,6 (8,4) contacts these neighbors... 8,4 10,8 5,2 Hello 12,0 4,9

12,0 4,9 … which update their respective Voronoi regions. 0,6 10,8 5,2 4,9 12,0 8,4

12,0 4,9 0,6 (4,9) and (12,0) send Hellos and provide info for contacting their respective clockwise and counterclockwise neighbors. 10,8 5,2 4,9 12,0 8,4 Hello

12,0 4,9 0,6 (8,4) contacts the new neighbor (10,8)... 10,8 5,2 4,9 12,0 8,4 Hello 10,8

12,0 4,9 0,6 …which updates its Voronoi region... 5,2 4,9 12,0 10,8 8,4

12,0 4,9 0,6 …and responds with a Hello 5,2 4,9 12,0 10,8 8,4 Hello

12,0 4,9 This completes the update of the Voronoi regions and the Delaunay Triangulation 0,6 5,2 4,9 12,0 10,8 8,4

Rendezvous Methods Rendezvous Problems: –How does a new node detect a member of the overlay? –How does the overlay repair a partition? Three solutions: 1.Announcement via broadcast 2.Use of a rendezvous server 3.Use `likely’ members (“Buddy List”)

12,0 10,8 5,2 4,9 0,6 8,4 New node Hello Rendezvous Method 1: Announcement via broadcast (e.g., using IP Multicast)

12,0 10,8 5,2 4,9 0,6 Leader Rendezvous Method 1: A Leader is a node with a Y-coordinate higher than any of its neighbors. Rendezvous Method 1: A Leader is a node with a Y-coordinate higher than any of its neighbors.

12,0 10,8 5,2 4,9 0,6 8,4 New node Rendezvous Method 2: New node and leader contact a rendezvous server. Server keeps a cache of some other nodes Server Server Request Server Reply (12,0) NewNode Hello NewNode

12,0 10,8 5,2 4,9 0,6 8,4 New node with Buddy List: (12,0) (4,9) Rendezvous Method 3: Each node has a list of “likely” members of the overlay network NewNode Hello NewNode

State Diagram of a Node

Sub-states of a Node A node is stable when all nodes that appear in the CW and CCW neighbor columns of the neighborhood table also appear in the neighbor column

Measurement Experiments Experimental Platform: Centurion cluster at UVA (cluster of 300 Linux PCs) –2 to 10,000 overlay members –1–100 members per PC Random coordinate assignments

How long does it take to add M members to an overlay network of N members ? Experiment: Adding Members M+N members Time to Complete (sec)

Experiment: Throughput of Multicasting Number of Members N Bandwidth bounds (due to stress) Measured values Average throughput (Mbps) 100 MB bulk transfer for N=2-100 members (1 node per PC) 10 MB bulk transfer for N= members (10 nodes per PC)

Experiment: Delay 100 MB bulk transfer for N=2-100 members (1 node per PC) 10 MB bulk transfer for N= members (10 nodes per PC) Delay of a packet (msec) Number of Nodes N

Wide-area experiments PlanetLab: worldwide network of Linux PCs Obtain coordinates via “triangulation” –Delay measurements to 3 PCs –Global Network Positioning (Eugene Ng, CMU)

Planetlab Video Streaming Demo

Summary Overlay socket is general API for programming P2P systems Several proof-of-concept applications Intensive experimental testing: –Local PC cluster (on 100 PCs) 10,000 node overlay in < 1 minute Throughput of 2 Mbps for 1,000 receivers –PlanetLab (on 60 machines) Up to 2,000 nodes Video streaming experiment with 80 receivers at 800 kbps had few losses HyperCast (Version 2.0) site: Design documents, download software, user manual