Sie sind auf Seite 1von 49

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

1. INTRODUCTION
WITH the penetration of broadband Internet access, there has been an increasing interest in media streaming services. Recently, P2P streaming has been proposed and developed to overcome the limitations of traditional server-based streaming. In a P2P streaming system, cooperative peers self-organize themselves into an overlay network via uni cast connections. They cache and relay data for each other, thereby eliminating the need for resourceful servers from the system. Today, several practical P2P streaming software implementations have been shown to be able to serve up to thousands of peers with acceptable quality of service In fact, there are many other similar applications over the Internet. In the application, the system contains multiple groups with different sources and contents. A user may join a specific group according to its interest. While the lifetime of users in the system is relatively long and the user pool is rather stable, users may hop from one group to another quite frequently. Examples include stock quotes, news-on-demand, and multisession conferencing. A more typical example is group chat of Skype . Skype allows up to around 100 users to chat together. While millions of Skype users stay online and relay data for each other, the users may form multiple small groups for group chat. According to Rossi et al. , except for very short sessions, most Skype peers are alive for about one third of a day. Generally, such life time of a Skype peer is longer than the duration of a group chat. In above applications, as peers may dynamically hop from one group to another, it becomes an important issue to efficiently deliver specific contents to peers. One obvious approach is to broadcast all contents to all hosts and let them select the contents. Clearly, this is not efficient in terms of bandwidth and end-to-end delay, especially for unpopular channels. Maintaining a separate and distinct delivery overlay for each channel appears to be another solution. However, this approach introduces high control overhead to maintain multiple dynamic overlays. When users frequently hop from one channel to another, overlay reformation becomes costly and may lead to high packet loss. of joining and leaving events in any group. This relatively stable mesh is used for control messaging and guiding the construction of overlay trees. With the help of the mesh, trees can be efficiently constructed with no need of loop detection and elimination. Since an overlay tree serves only a subset of peers in the network, we term this framework Subset-Mesh, or SMesh. We can see that there is a large pool of peers in the streaming network. Peers are divided into multiple small groups, each corresponding to a channel. Peers in the same group share and relay the same streaming content for each other.

Narayana Engineering College :: Nellore

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

2.SYSTEM ANALYSIS:
2.1 Existing System:
P2P overlay network, hosts are responsible for packets replication and forwarding. A P2P network only uses unicast and does not need multicast capable routers. It is, hence, more deployable and flexible. Currently, there are two types of overlays for P2P streaming: tree structure and gossip mesh. The first one builds one or multiple overlay tree(s) to distribute data among hosts. Examples include application-layer multicast protocols. The existing networking infrastructure are multicast capable. Emerging commercial video transport and distribution networks heavily make use of IP multicasting. However, there are many operational issues that limit the use of IP multicasting into individual autonomous networks. Furthermore, only trusted hosts are allowed to be multicast sources. Thus, while it is highly efficient, IP multicasting is still not an option for P2P streaming at the user level.

2.2 Proposed System: In the Proposed applications, as peers may dynamically hop from one group to another, it becomes an important issue to efficiently deliver specific contents to peers. One obvious approach is to broadcast all contents to all hosts and let them select the contents. Clearly, this is not efficient in terms of bandwidth and end-to-end delay, especially for unpopular channels. Maintaining a separate and distinct delivery overlay for each channel appears to be another solution. However, this approach introduces high control overhead to maintain multiple dynamic overlays. When users frequently hop from one channel to another, overlay reformation becomes costly and may lead to high packet loss In this paper, we consider building a data delivery tree for each group. To reduce tree construction and maintenance costs, we build a single shared overlay mesh. The mesh is formed by all peers in the system and is, hence, independent of joining and leaving events in any group. This relatively stable mesh is used for control messaging and guiding the construction of overlay trees. With the help of the mesh, trees can be efficiently constructed with no need of loop detection and elimination. Since an overlay tree serves only a subset of peers in the network, we term this framework Subset-Mesh, or SMesh.

Narayana Engineering College :: Nellore

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming 2.3 Feasibility Study: The feasibility of the project is analyzed in this phase and business proposal is put forth with a very general plan for the project and some cost estimates. During system analysis the feasibility study of the proposed system is to be carried out. This is to ensure that the proposed system is not a burden to the company. For feasibility analysis, some understanding of the major requirements for the system is essential. Three key considerations involved in the feasibility analysis are ECONOMICAL FEASIBILITY TECHNICAL FEASIBILITY SOCIAL FEASIBILITY Economic Feasibility: This study is carried out to check the economic impact that the system will have on the organization. The amount of fund that the company can pour into the research and development of the system is limited. The expenditures must be justified. Thus the developed system as well within the budget and this was achieved because most of the technologies used are freely available. Only the customized products had to be purchased. Technical Feasibility: This study is carried out to check the technical feasibility, that is, the technical requirements of the system. Any system developed must not have a high demand on the available technical resources. This will lead to high demands on the available technical resources. This will lead to high demands being placed on the client. The developed system must have a modest requirement, as only minimal or null changes are required for implementing this system. Social Feasibility: The aspect of study is to check the level of acceptance of the system by the user. This includes the process of training the user to use the system efficiently. The user must not feel threatened by the system, instead must accept it as a necessity. The level of acceptance by the users solely depends on the methods that are employed to educate the user about the system and to make him familiar with it. His level of confidence must be raised so that he is also able to make some constructive criticism, which is welcomed, as he is the final user of the system.

Narayana Engineering College :: Nellore

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming 2.4.System Requirements Hardware Requirements

SYSTEM HARD DISK FLOPPY DRIVE MONITOR MOUSE RAM KEYBOARD

: Pentium IV 2.4 GHz : 40 GB : 1.44 MB : 15 VGA colour : Logitech. : 256 MB : 110 keys enhanced.

Software Requirements

OPERATING SYSTEM FRONT END TOOL

: Windows XP Professional : Java Technology : Eclipse 3.3

Narayana Engineering College :: Nellore

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

3.SYSTEM DESIGN

Design is a meaningful engineering representation of something that is to be built. Software design is a process through which the requirements are translated into a representation of the software. Design is the place where quality is fostered in software engineering. Design is the perfect way to accurately translate a customers requirement in to a finished software product. Design creates a representation or model, provides detail about software data structure, architecture, interfaces and components that are necessary to implement a system. This chapter discusses about the design part of the project. There are 2 types of diagrams to represent the implementation of system.

3.1 Data Flow Diagrams 3.2 UML Diagrams 3.1 Data Flow Diagrams A graphical tool used to describe and analyze the moment of data through a system manual or automated including the process, stores of data, and delays in the system. Data Flow Diagrams are the central tool and the basis from which other components are developed. The transformation of data from input to output, through processes, may be described logically and independently of the physical components associated with the system. The DFD is also known as a Data Flow Graph or a Bubble chart. DFDs are the model of the proposed system. They clearly should show the requirements on which the new system should be built. Later during design activity this is taken as the basis for drawing the systems structure charts. The Basic Notation used to create a DFDs are as follows: 1.DataFlow : Data move in a specific direction from an origin to a destination

2.Process : People, procedures, or devices that use or produce ( Transform ) Data. The physical component is not identified.

Narayana Engineering College :: Nellore

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming 3.Source : External sources or destination of data, which may be People, Programs, Organization or other entities.

4.Data Store : Here data are stored or referenced by a process in the System.

The DFD diagram for this system is

Narayana Engineering College :: Nellore

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming 3.2 UML Diagrams Activity Diagram: The purpose of activity diagram is to provide a view of flows and what is going on inside a use case or among several classes. Activity diagram can also be used to represent a classs method implementation. A token represents an operation. An activity is shown as a round box containing the name of the operation. An outgoing solid arrow attached to the end of activity symbol indicates a transition triggered by the completion.

Sequence Diagram:

Narayana Engineering College :: Nellore

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming Sequence diagram are an easy and intuitive way of describing the behavior Of a system by viewing the interaction between the system and its environment. A Sequence diagram shows an interaction arranged in a time sequence. A sequence diagram has two dimensions: vertical dimension represents time; the horizontal Dimension represents different objects. The vertical line is called is the objects life line. The lifeline represents the objects existence during the interaction

Peer Nodes Peer Groups Add Node

Dtabase

Enter client ip and peer group ip

Leave Client

Client Leaved

Crash Peer Peer Crashed

Check Status

Narayana Engineering College :: Nellore

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

4. TECHNOLOGY DESCRIPTION

A programming tool or software tool is a program or application that software developers use to create, debug, maintain, or otherwise support other programs and applications. The term usually refers to relatively simple programs that can be combined together to accomplish a task. The Chapter describes about the software tool that is used in our project.

Java Technology Initially the language was called as oak but it was renamed as Java in 1995. The primary motivation of this language was the need for a platform-independent (i.e., architecture neutral) language that could be used to create software to be embedded in various consumer electronic devices. Java is a programmers language. Java is cohesive and consistent. Except for those constraints imposed by the Internet environment, Java gives the programmer, full control. Finally, Java is to Internet programming where C was to system programming.

Importance of Java to the Internet Java has had a profound effect on the Internet. This is because; Java expands the Universe of objects that can move about freely in Cyberspace. In a network, two categories of objects are transmitted between the Server and the Personal computer. They are: Passive information and Dynamic active programs. The Dynamic, Self-executing programs cause serious problems in the areas of Security and probability. But, Java addresses those concerns and by doing so, has opened the door to an exciting new form of program called the Applet. Java can be used to create two types of programs Applications and Applets : An application is a program that runs on our Computer under the operating system of that computer. It is more or less like one creating using C or C++. Javas ability to create Applets makes it important. An Applet is an application designed to be transmitted over the Internet and executed by a Java compatible web browser. An applet is actually a tiny Java program, dynamically downloaded across the network, just like an image. But the difference is, it is an intelligent program, not just a media file. It can react to the user input and dynamically change.

Narayana Engineering College :: Nellore

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming Features of Java Security Every time you that you download a normal program, you are risking a viral infection. Prior to Java, most users did not download executable programs frequently, and those who did scan them for viruses prior to execution. Most users still worried about the possibility of infecting their systems with a virus. In addition, another type of malicious program exists that must be guarded against. This type of program can gather private information, such as credit card numbers, bank account balances, and passwords. Java answers both these concerns by providing a firewall between a network application and your computer. When you use a Java-compatible Web browser, you can safely download Java applets without fear of virus infection or malicious intent. Portability For programs to be dynamically downloaded to all the various types of platforms connected to the Internet, some means of generating portable executable code is needed .As you will see, the same mechanism that helps ensure security also helps create portability. Indeed, Javas solution to these two problems is both elegant and efficient. The Byte code The key that allows the Java to solve the security and portability problems is that the output of Java compiler is Byte code. Byte code is a highly optimized set of instructions designed to be executed by the Java run-time system, which is called the Java Virtual Machine (JVM). That is, in its standard form, the JVM is an interpreter for byte code. Translating a Java program into byte code helps makes it much easier to run a program in a wide variety of environments. The reason is, once the run-time package exists for a given system, any Java program can run on it. Although Java was designed for interpretation, there is technically nothing about Java that prevents on-the-fly compilation of byte code into native code. Sun has just completed its Just In Time (JIT) compiler for byte code. When the JIT compiler is a part of JVM, it compiles byte code into executable code in real time, on a piece-by-piece, demand basis. It is not possible to compile an entire Java program into executable code all at once, because Java performs various run-time checks that can be done only at run time. The JIT compiles code, as it is needed, during execution. Java Virtual Machine (JVM) Beyond the language, there is the Java virtual machine. The Java virtual machine is an important element of the Java technology. The virtual machine can be embedded within a web browser or an operating system. Once a piece of Java code is loaded onto a machine, it is verified. As part of Narayana Engineering College :: Nellore
10

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming the loading process, a class loader is invoked and does byte code verification makes sure that the code thats has been generated by the compiler will not corrupt the machine that its loaded on. Byte code verification takes place at the end of the compilation process to make sure that is all accurate and correct. So byte code verification is integral to the compiling and executing of Java code. Overall Description

Java Source

Java byte code

JavaVM

Picture showing the development process .Class Program of JAVA Java Java programming uses to produce byte codes and executes them. The first box indicates that the Java source code is located in a. Java file that is processed with a Java compiler called javac. The Java compiler produces a file called a. class file, which contains the byte code. The .Class file is then loaded across the network or loaded locally on your machine into the execution environment is the Java virtual machine, which interprets and executes the byte code. Java Architecture Java architecture provides a portable, robust, high performing environment for development. Java provides portability by compiling the byte codes for the Java Virtual Machine, which is then interpreted on each platform by the run-time environment. Java is a dynamic system, able to load code when needed from a machine in the same room or across the planet. Compilation of code When you compile the code, the Java compiler creates machine code (called byte code) for a hypothetical machine called Java Virtual Machine (JVM). The JVM is supposed to execute the byte code. The JVM is created for overcoming the issue of portability. The code is written and compiled for one machine and interpreted on all machines. This machine is called Java Virtual Machine. Compiling and interpreting Java Source Code

Narayana Engineering College :: Nellore

11

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

Java PC Compiler Java

Source Code .. ..
SPARC (Platform Macintosh Compiler Byte code

Interpreter (PC) Java Interpreter (Macintosh) Java Interpreter (Spare)

Compiler

During run-time the Java interpreter tricks the byte code file into thinking that it is running on a Java Virtual Machine. In reality this could be a Intel Pentium Windows 95 or SunSARC station running Solaris or Apple Macintosh running system and all could receive code from any computer through Internet and run the Applets. Simple Java was designed to be easy for the Professional programmer to learn and to use effectively. If you are an experienced C++ programmer, learning Java will be even easier. Because Java inherits the C/C++ syntax and many of the object oriented features of C++. Most of the confusing concepts from C++ are either left out of Java or implemented in a cleaner, more approachable manner. In Java there are a small number of clearly defined ways to accomplish a given task. Object-Oriented Java was not designed to be source-code compatible with any other language. This allowed the Java team the freedom to design with a blank slate. One outcome of this was a clean usable, pragmatic approach to objects. The object model in Java is simple and easy to extend, while simple types, such as integers, are kept as high-performance non-objects. Robust The multi-platform environment of the Web places extraordinary demands on a program, because the program must execute reliably in a variety of systems. The ability to create robust programs was given a high priority in the design of Java. Java is strictly typed language; it checks your code at compile time and run time. Narayana Engineering College :: Nellore
12

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming Java virtually eliminates the problems of memory management and de-allocation, which is completely automatic. In a well-written Java program, all run time errors can and should be managed by your program. JAVA SWING Swing is a widget toolkit for java. The main characteristics of the Swing toolkit are platform independent, customizable, extensible, configurable and lightweight.. It has a rich set of widgets. From basic widgets like Buttons, Labels, Scrollbars to advanced widgets like Trees and Tables. Swing is a part of JFC, Java Foundation Classes. It is a collection of packages for creating full featured desktop applications. JFC consists of AWT, Swing, Accessibility, Java 2D, and Drag and Drop. JComponent All Swing components whose names begin with "J" descend from the jcomponent API class. For example, JPanel, JScrollPane, JButton, and JTable all inherit from JComponent. However, JFrame doesn't because it implements a top-level container. The JComponent class extends the Container api class, which itself extends Component api . The Component class includes everything from providing layout hints to supporting painting and events. The Container class has support for adding components to the container and laying them out. JPanel The JPanel class provides general-purpose containers for lightweight components. By default, panels do not add colors to anything except their own background; however, you can easily add borders to them and otherwise customize their painting.

JFrame JFrame is Swing's version of Frame and is descended directly from that class. It is used to create Windows in a Swing program. The components added to the frame are referred to as its contents; these are managed by the contentPane. To add a component to a JFrame, we must use its contentPane instead. JButton The JButton object generally consists of a text label and/or image icon that describes the purpose of the button , an empty area around the text/icon and border. JLabel Narayana Engineering College :: Nellore
13

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming JLabel, descended from JComponent, is used to create text labels. It can display text but images as well. JTextArea JTextArea component is used to accept several lines of text from user. JTextArea can be used in conjunction with class JScrollPane to achieve scrolling. The underlying JScrollPane can be forced to always or never have either the vertical or horizontal scrollbar.

JList JList provides a scrollable set of items from which one or more may be selected. JList can be populated from an Array or Vector. JsList does not support scrolling directly, instead, the list must be associated with a scrollpane. The view port used by the scroll pane can also have a user-defined border. JList actions are handled using ListSelectionListener. The Swing Message Box Windowing environments commonly contain a standard set of message boxes that allow you to quickly post information to the user or to capture information from the user. In Swing, these message boxes are contained in JOptionPane sophisticated), but the ones most commonly used are probably the message dialog and confirmation dialog, invoked using the static JOptionPane.showMessageDialog( ) and JOptionPane. showConfirmDialog( ). Package Javax.Imageio Description The main package of the Java Image I/O API. Many common image I/O operations may be performed using the static methods of the ImageIO class.This package contains the basic classes and interfaces for describing the contents of image files, including metadata and thumbnails (IIOImage); for controlling the image reading process (ImageReader, ImageReadParam, and ImageTypeSpecifier) and image writing process (ImageWriter and ImageWriteParam); for performing transcoding between formats (ImageTranscoder), and for reporting errors (IIOException). JFileChooser File choosers provide a GUI for navigating the file system, and then either choosing a file or directory from a list, or entering the name of a file or directory. To display a file chooser, you usually use the JFileChooser API to show a modal dialog containing the file chooser.A JFileChooser is a dialog to select a file or files. The return value of the three methods is one of the following: Narayana Engineering College :: Nellore
14

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming 1. JFileChooser.CANCEL_OPTION, if the user clicks Cancel. 2. JFileChooser.APPROVE_OPTION, if the user click an OK/Open/Save button. 3. JFileChooser.ERROR_OPTION, if the user closes the dialog A return value of JFileChooser.APPROVE_OPTION, indicates that you can call its getSelectedFile or getSelectedFiles methods:

public java.io.File getSelectedFile () public java.io.File[] getSelectedFiles ()

JFileChooser has supporting classes: FileFilter class, FileSystemView class, FileView. FileFilter class is for restricting files and directories to be listed in the FileView of the JFileChooser. The FileView controls how the directories and files are listed within the JFileChooser. The FileSystemView is an abstract class that tries to hide file system-related operating system specifics from the file chooser. JScrollPane JScrollPane is a jquery plugin which allows you to replace the browsers default vertical scrollbars on any block level element with an overflow:auto style. jScrollPane is crossbrowser, working on all browsers that support jquery and it also degrades gracefully. If a user's browser doesn't support jQuery or has JavaScript turned off then they will see the browsers default scrollbars. If the mouse wheel plugin is included in the page then the scroll panes will respond to mouse wheel events as well. jScrollPane is built on top of the awesome jQuery library and utilises the dimensions plugin and (optionally) the mouse wheel plugin. To place a component in one of the corners of the JScrollPane, call setCorner(String key, Component corner) key is 1. 2. 3. 4. JScrollPane.LOWER_LEFT_CORNER, JScrollPane.LOWER_RIGHT_CORNER, JScrollPane.UPPER_LEFT_CORNER, or JScrollPane.UPPER_RIGHT_CORNER

Class BufferedImage java.lang.Object java.awt.Image Narayana Engineering College :: Nellore


15

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming java.awt.image.BufferedImage All Implemented Interfaces: RenderedImage, WritableRenderedImage public class BufferedImage extends Image implements WritableRenderedImage The BufferedImage subclass describes an Image with an accessible buffer of image data. A BufferedImage is comprised of a ColorModel and a Raster of image data. The number and types of bands in the SampleModel of the Raster must match the number and types required by the ColorModel to represent its color and alpha components. All BufferedImage objects have an upper left corner coordinate of (0, 0). Any Raster used to construct a BufferedImage must therefore have minX=0 and minY=0. JCreator JCreator is a powerful IDE for java. JCreator is the best development tool for programming. It is faster, more efficient and more reliable than other IDEs. Therefore it is the perfect tool for programmers of every level, from learning programmer to Java-specialist. JCreator provides the user with a wide range of functionality such as Project management, project templates, code-completion, debugger interface, editor with syntax highlighting, wizards and a fully customizable user interface With JCreator you can directly compile or run your Java program without activating the main document first. JCreator will automatically find the file with the main method or the html file holding the java applet, then it will start the appropriate tool. JCreator is written entirely in C++, which makes it fast and efficient compared to the Java based editors/IDE's. Java Database Connectivity What Is JDBC? JDBC is a Java API for executing SQL statements. (As a point of interest, JDBC is a trademarked name and is not an acronym; nevertheless, JDBC is often thought of as standing for Java Database Connectivity. It consists of a set of classes and interfaces written in the Java programming language. JDBC provides a standard API for tool/database developers and makes it possible to write database applications using a pure Java API. Using JDBC, it is easy to send SQL statements to virtually any relational database. One can write a single program using the JDBC API, and the program will be able to send SQL statements to Narayana Engineering College :: Nellore
16

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming the appropriate database. The combinations of Java and JDBC lets a programmer write it once and run it anywhere. What Does JDBC Do? Simply put, JDBC makes it possible to do three things: Establish a connection with a database Send SQL statements Process the results. JDBC versus ODBC and other APIs At this point, Microsoft's ODBC (Open Database Connectivity) API is that probably the most widely used programming interface for accessing relational databases. It offers the ability to connect to almost all databases on almost all platforms. So why not just use ODBC from Java? The answer is that you can use ODBC from Java, but this is best done with the help of JDBC in the form of the JDBC-ODBC Bridge, which we will cover shortly. The question now becomes "Why do you need JDBC?" There are several answers to this question: 1. ODBC is not appropriate for direct use from Java because it uses a C interface. Calls from Java to native C code have a number of drawbacks in the security, implementation, robustness, and automatic portability of applications. 2. A literal translation of the ODBC C API into a Java API would not be desirable. For example, Java has no pointers, and ODBC makes copious use of them, including the notoriously error-prone generic pointer "void *". You can think of JDBC as ODBC translated into an object-oriented interface that is natural for Java programmers. 3. ODBC is hard to learn. It mixes simple and advanced features together, and it has complex options even for simple queries. JDBC, on the other hand, was designed to keep simple things simple while allowing more advanced capabilities where required. 4. A Java API like JDBC is needed in order to enable a "pure Java" solution. When ODBC is used, the ODBC driver manager and drivers must be manually installed on every client machine. When the JDBC driver is written completely in Java, however, JDBC code is automatically installable, portable, and secure on all Java platforms from network computers to mainframes.

Two-tier and Three-tier Models The JDBC API supports both two-tier and three-tier models for database access.

Narayana Engineering College :: Nellore

17

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming


JAVA Application DBMS-proprietary protocol Client machine

JDBC

Database server

DBMS

In the two-tier model, a Java applet or application talks directly to the database. This requires a JDBC driver that can communicate with the particular database management system being accessed. A user's SQL statements are delivered to the database, and the results of those statements are sent back to the user. The database may be located on another machine to which the user is connected via a network. This is referred to as a client/server configuration, with the user's machine as the client, and the machine housing the database as the server. The network can be an Intranet, which, for example, connects employees within a corporation, or it can be the Internet.
Java applet or Html browser

Client machine (GUI) HTTP, RMI, or CORBA calls

Application Server (Java) JDBC

Server machine (business Logic) DBMS-proprietary protocol Database server

DBMS

In the three-tier model, commands are sent to a "middle tier" of services, which then send SQL statements to the database. The database processes the SQL statements and sends the results back to the middle tier, which then sends them to the user. MIS directors find the three-tier model very attractive because the middle tier makes it possible to maintain control over access and the kinds of updates that can be made to corporate data. Another advantage is that when there is a middle tier, the user can employ an easy-to-use higher-level API which is translated by the middle tier Narayana Engineering College :: Nellore
18

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming into the appropriate low-level calls. Finally, in many cases the three-tier architecture can provide performance advantages. Until now the middle tier has typically been written in languages such as C or C++, which offer fast performance. However, with the introduction of optimizing compilers that translate Java byte code into efficient machine-specific code, it is becoming practical to implement the middle tier in Java. This is a big plus, making it possible to take advantage of Java's robustness, multithreading, and security features. JDBC is important to allow database access from a Java middle tier.

JDBC Driver Types The JDBC drivers that we are aware of at this time fit into one of four categories: JDBC-ODBC bridge plus ODBC driver Native-API partly-Java driver JDBC-Net pure Java driver Native-protocol pure Java driver JDBC-ODBC Bridge If possible, use a Pure Java JDBC driver instead of the Bridge and an ODBC driver. This completely eliminates the client configuration required by ODBC. It also eliminates the potential that the Java VM could be corrupted by an error in the native code brought in by the Bridge (that is, the Bridge native library, the ODBC driver manager library, the ODBC driver library, and the database client library). What Is the JDBC- ODBC Bridge? The JDBC-ODBC Bridge is a JDBC driver, which implements JDBC operations by translating them into ODBC operations. To ODBC it appears as a normal application Narayana Engineering College :: Nellore
19

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming program. The Bridge implements JDBC for any database for which an ODBC driver is available. The Bridge is implemented as the Sun.jdbc.odbc Java package and contains a native library used to access ODBC. The Bridge is a joint development of Innersole and Java Soft. JDBC connectivity The JDBC provides database-independent connectivity between the J2EE platform and a wide range of tabular data sources. JDBC technology allows an Application Component Provider to: Perform connection and authentication to a database server Manager transactions Move SQL statements to a database engine for preprocessing and execution Execute stored procedures Inspect and modify the results from Select statements Database: A database management system (DBMS) is computer software designed for the purpose of managing databases, a large set of structured data, and run operations on the data requested by numerous users. Typical examples of DBMSs include Oracle, DB2, Microsoft Access, Microsoft SQL Server, Firebird, PostgreSQL, MySQL, SQLite, FileMaker and Sybase Adaptive Server Enterprise. DBMSs are typically used by Database administrators in the creation of Database systems. Typical examples of DBMS use include accounting, human resources and customer support systems. Originally found only in large companies with the computer hardware needed to support large data sets, DBMSs have more recently emerged as a fairly standard part of any company back office. Description A DBMS is a complex set of software programs that controls the organization, storage, management, and retrieval of data in a database. A DBMS includes: A modeling language to define the schema of each database hosted in the DBMS, according to the DBMS data model. The four most common types of organizations are the hierarchical, network, relational and object models. Inverted lists and other methods are also used. A given database management system may provide one or more of the four models. The optimal structure depends on the natural organization of the application's data, and on the application's requirements (which include transaction rate (speed), reliability, maintainability, scalability, and cost). The dominant model in use today is the ad hoc one embedded in SQL, despite the objections of purists who believe this model is a corruption of the relational model, Narayana Engineering College :: Nellore
20

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming since it violates several of its fundamental principles for the sake of practicality and performance. Many DBMSs also support the Open Database Connectivity API that supports a standard way for programmers to access the DBMS. Data structures (fields, records, files and objects) optimized to deal with very large amounts of data stored on a permanent data storage device (which implies relatively slow access compared to volatile main memory). A database query language and report writer to allow users to interactively interrogate the database, analyze its data and update it according to the users privileges on data. It also controls the security of the database. Data security prevents unauthorized users from viewing or updating the database. Using passwords, users are allowed access to the entire database or subsets of it called subschemas. For example, an employee database can contain all the data about an individual employee, but one group of users may be authorized to view only payroll data, while others are allowed access to only work history and medical data. If the DBMS provides a way to interactively enter and update the database, as well as interrogate it, this capability allows for managing personal databases. However, it may not leave an audit trail of actions or provide the kinds of controls necessary in a multi-user organization. These controls are only available when a set of application programs are customized for each data entry and updating function. A transaction mechanism, that ideally would guarantee the ACID properties, in order to ensure data integrity, despite concurrent user accesses (concurrency control), and faults (fault tolerance). It also maintains the integrity of the data in the database. The DBMS can maintain the integrity of the database by not allowing more than one user to update the same record at the same time. The DBMS can help prevent duplicate records via unique index constraints; for example, no two customers with the same customer numbers (key fields) can be entered into the database. See ACID properties for more information (Redundancy avoidance). The DBMS accepts requests for data from the application program and instructs the operating system to transfer the appropriate data. When a DBMS is used, information systems can be changed much more easily as the organization's information requirements change. New categories of data can be added to the database without disruption to the existing system. Organizations may use one kind of DBMS for daily transaction processing and then move the detail onto another computer that uses another DBMS better suited for random inquiries and analysis. Overall systems design decisions are performed by data administrators and systems analysts. Detailed database design is performed by database administrators. Narayana Engineering College :: Nellore
21

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming Database servers are specially designed computers that hold the actual databases and run only the DBMS and related software. Database servers are usually multiprocessor computers, with RAID disk arrays used for stable storage. Connected to one or more servers via a high-speed channel, hardware database accelerators are also used in large volume transaction processing environments. DBMSs are found at the heart of most database applications. Sometimes DBMSs are built around a private multitasking kernel with built-in networking support although nowadays these functions are left to the operating system. SQL Structured Query Language (SQL) is the language used to manipulate relational databases. SQL is tied very closely with the relational model. In the relational model, data is stored in structures called relations or tables. SQL statements are issued for the purpose of: Data definition: Defining tables and structures in the database (DDL used to create, alter and drop schema objects such as tables and indexes). Data manipulation: Used to manipulate the data within those schema objects (DML Inserting, Updating, Deleting the data, and Querying the Database). A schema is a collection of database objects that can include: tables, views, indexes and sequencesList of SQL statements that can be issued against an Oracle database schema are: ALTER - Change an existing table, view or index definition (DDL) AUDIT - Track the changes made to a table (DDL) COMMENT - Add a comment to a table or column in a table (DDL) COMMIT - Make all recent changes permanent (DML - transactional) CREATE - Create new database objects such as tables or views (DDL) DELETE - Delete rows from a database table (DML) DROP - Drop a database object such as a table, view or index (DDL) GRANT - Allow another user to access database objects such as tables or views (DDL) INSERT - Insert new data into a database table (DML) No AUDIT - Turn off the auditing function (DDL) REVOKE - Disallow a user access to database objects such as tables and views (DDL) ROLLBACK - Undo any recent changes to the database (DML - Transactional) SELECT - Retrieve data from a database table (DML) TRUNCATE - Delete all rows from a database table (can not be rolled back) (DML) UPDATE - Change the values of some data items in a database table (DML)
22

Narayana Engineering College :: Nellore

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

5.IMPLEMENTATION
Implementation is the stage of the project when the theoretical design is turned out into a working system. Thus it can be considered to be the most critical stage in achieving a successful new system and in giving the user, confidence that the new system will work and be effective. The implementation stage involves careful planning, investigation of the existing system and its constraints on implementation, designing of methods to achieve changeover and evaluation of changeover methods. Main Modules: 1. 2. 3. 4. Peer to Peer Network Module Distributed partition detection Module Dynamic Joining Host Module Path Aggregation for QoS Provisioning Module

1.Peer to Peer Network Module: P2P streaming system, the server (or a set of servers) usually provides multiple channels. A peer can freely switch from one channel to another, Peers in the same group share and relay the same streaming content for each other 2.Distributed partition detection Module:

We use Delaunay Triangulation (DT) as an example. We propose several techniques to improve the DT mesh, e.g., for accurately estimating host locations and distributed partition detection. Based on the mesh, we study several tree construction mechanisms to trade off delay and network resource consumption automatically Adjust itself to form anew mesh. The trees on top of it will then accordingly adjust tree nodes and tree edges. Also note that in SMesh a host may join as many groups as its local resource allows. If a host joins multiple groups, its operations in different groups are independent of each other.

Narayana Engineering College :: Nellore

23

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming Fig : Distributed detection peer to peer two adjacent triangles nodes

3. Dynamic Joining Host Module: A joining host, after obtaining its coordinates, sends a MeshJoin message with its coordinates to any host in the system. MeshJoin is then sent back to the joining host along the DT mesh based on compass routing. Since the joining host is not a member of the mesh yet, it can be considered as a partitioned mesh consisting of a single host. The MeshJoin message finally triggers the partition recovery mechanism at a particular host in the mesh, which helps the new host join the mesh.

4. Path Aggregation for QoS Provisioning Module: Two independent connections across domains A and B are set up, which leads to high usage of long paths and hence high network resource consumption. Furthermore, in the traditional DT protocol, a host may have many children. However, a host often has a node stress threshold K for each group depending on its resource. To address these problems, we require that the minimum adjacent angle between two children of a host should exceed a certain threshold T

Narayana Engineering College :: Nellore

24

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming Consider a source s and a host u in the network. Once u accepts a child, u checks whether its node stress exceeds K or whether the minimum adjacent angle between its children is less than T It selects a pair of children with the minimum adjacent angle and delegates the child farther from the source to the other. Note that after aggregation, the overlay tree is still loop free because hosts are still topologically sorted according to their distances from the source

Narayana Engineering College :: Nellore

25

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

6.SYSTEM TESTING
Software Testing is the process used to help identify the correctness, completeness, security and quality of developed computer software. Testing is a process of technical investigation, performed on behalf of stakeholders, that is intended to reveal quality-related information about the product with respect to the context in which it is intended to operate. In general, software engineers distinguish software faults from software failures. Our project" Visual cryptography For Cheating Prevention is tested with the following testing methodologies. Developing Methodologies The test process begins by developing a comprehensive plan to test the general functionality and special features on a variety of platform combinations. Strict quality control procedures are used. The process verifies that the application meets the requirements specified in the system requirements document and is bug free. The following are the considerations used to develop the framework for developing the test methodologies. Acquire and study the test strategy A team very familiar with the business risks associated with the software normally develops test strategy, the test team develops tactics. Thus the test team needs to acquire and study the test strategy. The test tactics are analyzed and studied for finding our various test factors, risks and effects. The risk involved in our project is implementing the encoding of the image. So, the proper knowledge about the testing strategies should be gained in order to avoid such high level risks. Determine the type of development project The type of the development refers to the platform or methodology for developing the project. As it is been a simulation project we go for the prototyping. The prototypes are simply predefined structure or model, which can be used for further modeling. By using the prototypes we can modify the existing module of the application for some other specific operations. Here the test tactics is to verify that all the tools are used properly and to test functionality. Determine the type of software system The type of software system relates to the type of processing which will be encountered by the system. In this project, the software system we prefer to use is Java . We have chosen Java for its portability and its support to graphics & multimedia specifically for image processing.

Narayana Engineering College :: Nellore

26

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming Determine the scope of the software system The scope of the project refers to the overall activities or operation to be included into the system being tested. The scope of the new system varies from that of the existing one. In the existing system, a large overhead occurs in contrast and pixel expansion. Also, the verification process is not efficient in the existing system. In this project, the pixel expansion is optimal because only two sub pixels are added each and every pixel. Also, each and every participants are verified or authentication. Identify the tactical risks The tactical risk is the subsets at a lower level of the strategic risks. The risks related to the application and its methodologies are identified. The risk involved in our project is implementing the encoding of the image. Determine when the testing should occur In the above processes we have identified the type of processing, scope and risks associated with our project. The testing can occur throughout all the phases of the project. During the analysis phase, the testing strategy and requirements are determined. In design phase, the complexities in design with respect to the requirements are determined and structural and functional test conditions are also tested. During implementation, the design consistency is determined. In test phase, the overall testing of the application is being done and previously the adequacy of the testing plan is also determined. In maintenance phase, the testing for modifying and reusing the system is done. Build the system test plan The test plan of the project should provide all the information on the application that is being tested. The test plan is simply a model that has to be followed during the progression of the testing. The test plan consists of the sequential set of procedures to test the application. Initially, the selection process of both secret and verification images are tested. Then the test is carried out for encoding of image, verification process and finally decoding process. Build the unit test plan In this case we are dividing the system into three different components or units each having specific functions. The three different components of the system are browser window designing, browser events handling and adding speech to the browser. These units have their own test plan. The main purpose of the unit test plan is to eliminate the errors and bugs during the initial stage of the implementation. As the errors get debugged in the initial stage, the less complex the overall testing after integrating all the units of the system. The unit testing plan can be either simple or complex based on the functionality of that unit.
27

Narayana Engineering College :: Nellore

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

TESTING TECHNIQUE - TOOL SELECTION PROCESS


In this process the appropriate testing process is selected from various testing methodologies such as prototyping model, waterfall model etc and the selection is done by the means of analyzing the nature of the project. We go for Waterfall model. Select test factor This phase selects the appropriate test factor. The particular module of the project which is essential for the testing methodologies is sorted out first. This will help the testing process to be completed within time. The test factors for our project include encoding, verification and decoding process. Determine SDLC phase This phase involves the structural testing of the project which will be used for easy implementations of the functions. Though structural testing is so much associated with the coding phase, the structural testing should be carried out at all the phases of the lifecycle. These evaluates that all the structures are tested and sound. Identify the criteria to test In this phase the testing unit is trained with the necessary constraints and limit with which the project is to be tested. In our project the testing unit is trained to test whether the image to be encoded is in the PGM format. Select type of test Individual responsible for testing may prefer to select their own technique and tool based on the test situation. For selecting the appropriate testing process the project should be analyzed with the following three testing concepts: 1. Structural versus functional testing 2. Dynamic versus static testing 3. Manual versus automatic testing After analyzing through the above testing concepts we divided to test our project in Waterfall model testing methodology.

Narayana Engineering College :: Nellore

28

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

Figure 8.1 Testing technique and tool selection process

Narayana Engineering College :: Nellore

29

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

Structural Testing
Structural analysis based test sets are tend to uncover errors that occur during coding of the program. The properties of the test set are to reflect the internal structure of the program. Structural testing is designed to verify that the developed system and programs work as specified in the requirement. The objective is to ensure that the product is designed structurally sound and will function correctly.

Functional Testing
Functional testing ensures that the requirements are properly satisfied by the application system. The functions are those tasks that the system is designed to accomplish. This is not concerned with how processing occurs but rather with the results of the processing. The functional analysis based test sets tend to uncover errors that occurred in implementing requirements or design specifications.

Select technique
After selecting the appropriate testing methodology we have to select the necessary testing technique such as stress testing, execution testing, recovery testing, operation testing, compliance testing and security testing. We are performing operation testing by testing whether all the components perform its intended operations.

Select test method


We have to select the testing method which is to be carried out throughout the lifecycle. The two different methods are static and dynamic. Dynamic testing needs the program to be executed completely before testing. This is a traditional concept where the faults detected at the end will be very hard to rectify. In static process the program is tested for each and every line and the testing process is allowed to pass through only after rectifying the occurred fault. These make this process more expensive, so a combination of both static and dynamic testing method.

Mode of testing
It is necessary to select the test mode in which the testing method to be carried out. The two different modes are manual and automated tool. The real time projects needs frequent interactions. So, it is impossible to carry out the testing process by means of automated tool. Our project uses manual testing.

Unit test technique


This phase examines the techniques, assessment and management of unit testing and analysis. Testing and analysis strategies are categorized according to whether they goal is functional or structural or combination of these. It will assist a software engineer to define, Narayana Engineering College :: Nellore
30

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming conduct and evaluate unit tests and to assess new unit test techniques.

System Testing
Once the entire system has been built then it has to be tested against the "System Specification" to check if it delivers the features required. It is still developer focused, although specialist developers known as systems testers are normally employed to do it. In essence System Testing is not about checking the individual parts of the design, but about checking the system as a whole. In effect it is one giant component. System testing can involve a number of specialist types of test to see if all the functional and non-functional requirements have been met.

Acceptance Testing
Acceptance Testing checks the system against the "Requirements". It is similar to systems testing in that the whole system is checked but the important difference is the change in focus. Systems Testing checks that the system that was specified has been delivered. Acceptance Testing checks that the system delivers what was requested. The customer, and not the developer should always do acceptance testing. The customer knows what is required from the system to achieve value in the business and is the only person qualified to make that judgment.

Regression Testing
This involves assurance that all aspects of an application system remain functional after testing. The introduction of change is the cause of problems in previously tested segments. It is retesting unchanged segments of the application system. It normally involves rerunning tests that have been previously executed to ensure that the same results can be achieved currently as achieved when the segments were last tested.

Narayana Engineering College :: Nellore

31

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

7.CODING
AddNewPeer.c : import java.sql.*; import java.io.*; public class AddNewPeer { Connection con = null; Statement st = null; ResultSet rs = null; ResultSet rs1=null; boolean flag = false; public AddNewPeer() throws IOException { try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection("Jdbc:Odbc:nbpeer"); st = con.createStatement(); System.out.println("AddNewPeer Database Connection Established"); } catch(Exception e) {System.out.println("Exception in database connection in Addnewclient class: "+e); } } public boolean addingPeer(int cap,String ip,int intCapacity,String strClientName , String strCIP) { try { rs = null; rs = st.executeQuery("select PeerName from PeerTable where IP = '"+ip + "'"); rs.next(); String strPN = rs.getString(1); int capa= intCapacity; System.out.println("Capacity :"+capa); Narayana Engineering College :: Nellore
32

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming System.out.println("Peer Name:"+strPN); st.executeUpdate("Insert into PeerTable values('" + strClientName + "'," + intCapacity + ",0," + intCapacity + ",'" + strCIP + "')"); System.out.println("New Peer Generated"); rs1 = st.executeQuery("select ClientIP from ClientTable where PeerIP = '"+ip+"'"); System.out.println("IP : "+ip); if(rs1.next()) { System.out.println("test"); int ii = 0; int i = 1; while(rs1.next()){ i++;} System.out.println("no of rec:"+i); rs1 = null; while((ii < capa)&&(ii < i)){ rs1 = st.executeQuery("select ClientIP from ClientTable where PeerIP = '"+ip+"'"); rs1 = st.executeQuery("select ClientIP from ClientTable where PeerIP = '"+ip+"'"); rs1.next(); String cip = rs1.getString(1); System.out.println(cip); st.executeUpdate("update ClientTable set PeerName = '"+strClientName+"',PeerIP = '"+strCIP+"' where ClientIP = '" +cip+"'"); System.out.println("Client status changed"); ii++; rs1 = null; }//while System.out.println("NO:"+ii); rs = null; Narayana Engineering College :: Nellore
33

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming rs = st.executeQuery("Select Load,Balance from PeerTable where IP='"+strCIP+"'"); rs.next(); int ll = rs.getInt(1); int bal = rs.getInt(2); ll = ll+ii; System.out.println("Load :"+ll); bal = bal - ii; System.out.println("Balance:"+bal); st.executeUpdate("update PeerTable set Load = "+ ll + ", Balance = " + bal+" where PeerName = '"+strClientName+"'"); System.out.println("Peer Table updated"); rs = null; rs = st.executeQuery("select Load, Balance from PeerTable where IP = '"+ip+"'"); rs.next(); int lll = rs.getInt(1); int ball = rs.getInt(2); lll = lll-ii; ball = ball + ii; st.executeUpdate("update PeerTable set Load = "+lll+" , Balance = "+ball+" where IP = '"+ip+"'"); System.out.println("table table table"); if(bal>0){ st.executeUpdate("delete from PeerTable where IP = '"+ip+"'"); System.out.println("Peer Deleted"); st.executeUpdate("insert into ClientTable values('"+strPN+"','"+strClientName+"','"+ip+"','"+strCIP+"',"+cap+")"); System.out.println("Peer inserted into Clienttable"); Narayana Engineering College :: Nellore
34

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming ll = ll+1; bal = bal - 1; st.executeUpdate("update PeerTable set Load = "+ ll + ", Balance = " + bal+" where PeerName = '"+strClientName+"'"); System.out.println("Peer Table updated"); } flag=true; }//if -2 //}//if - 1 con.close();

}catch(Exception e) { System.out.println("Exception occurred:"+e);} return flag; } public static void main(String a[]) throws IOException { new AddNewPeer(); } }

Leaveclient: import java.sql.*; import java.io.*; public class LeaveClient { Connection con = null; Statement st = null; ResultSet rs = null; String strClientName = null; Narayana Engineering College :: Nellore
35

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming DataInputStream in=null; boolean flag = false; public LeaveClient() throws IOException{ try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection("Jdbc:Odbc:nbpeer"); st = con.createStatement(); System.out.println("Database Connected"); } catch(Exception e) { System.out.println("Exception in Database connection in Client Leave"+e);} } public boolean LeavingClient(String strCIP) { try { rs=null; rs = st.executeQuery("select * from ClientTable where ClientIP='"+strCIP+"'"); System.out.println("Query Executed"); if(rs==null) { System.out.println("Invalid Client Name"); flag = false; } else { rs.next(); String strPeerName = rs.getString(2); String strPIP = rs.getString(4);

Narayana Engineering College :: Nellore

36

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming rs = st.executeQuery("select * from PeerTable where PeerName = '"+strPeerName+"'"); System.out.println("selected"); rs.next(); int intLoad = rs.getInt(3); int intBalance = rs.getInt(4); intLoad --; intBalance ++; st.executeUpdate("delete from ClientTable where ClientIP ='"+strCIP+"'"); st.executeUpdate("update PeerTable set Load="+intLoad+", Balance="+intBalance+" where PeerName='"+strPeerName+"'"); System.out.println("Client Deleted"); flag = true; } con.close(); }catch(Exception e) { System.out.println("Exception in Client Leave database"+e);} return flag; }

public static void main(String a[])throws IOException { new LeaveClient(); } }

Narayana Engineering College :: Nellore

37

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

8.SCREENSHOTS

Narayana Engineering College :: Nellore

38

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

Narayana Engineering College :: Nellore

39

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

Narayana Engineering College :: Nellore

40

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

Narayana Engineering College :: Nellore

41

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

Narayana Engineering College :: Nellore

42

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

Narayana Engineering College :: Nellore

43

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

Narayana Engineering College :: Nellore

44

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

Narayana Engineering College :: Nellore

45

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

Narayana Engineering College :: Nellore

46

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

9.CONCLUSION
In P2P streaming networks, users may frequently hop from one group to another. In this paper, we propose a novel framework called SMesh to serve dynamic groups for Internet streaming. SMesh supports multiple groups and can efficiently distribute data to these dynamic groups. It first builds a shared overlay mesh for all hosts in the system. The stable mesh is then used to guide the construction of data delivery trees for each group. We study three ways to construct a tree, i.e., embedded, bypass, and intermediate trees. We also propose and study an aggregation and delegation algorithm to balance the load among hosts, which trades off end-toend delay with lower Network resource usage. Through simulations on Internet-like topologies, we show that SMesh achieves low RDP and low link stress as compared to traditional tree-based protocols. In our simulations, a bypass tree performs better than an embedded tree in terms of RDP but not so for link stress. By Adjusting message threshold, an intermediate tree can achieve performance between bypass and embedded trees.

Narayana Engineering College :: Nellore

47

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

10.BIBLIOGRAPHY Good Teachers are worth more than thousand books, we have them in Our Department. References Made From: 1. X. Zhang, J. Liu, B. Li, and T.-S.P. Yum, CoolStreaming/DONet: A DataDriven Overlay Network for Peer-to-Peer Live Media Streaming, Proc. IEEE INFOCOM 05, pp. 2102-2111, Mar. 2005. 2. X. Liao, H. Jin, Y. Liu, L.M. Ni, and D. Deng, Anysee: Peer-to- Peer Live Streaming, Proc. IEEE INFOCOM 06, Apr. 2006. 3. Y. Tang, J.-G. Luo, Q. Zhang, M. Zhang, and S.-Q. Yang, Deploying P2P Networks for Large-Scale Live Video-Streaming Service, IEEE Comm. Magazine, vol. 45, no. 6, pp. 100-106, June 2007. 4. PPLive, http://www.pplive.com, 2009. 5. X. Hei, Y. Liu, and K.W. Ross, Inferring Network-Wide Quality in P2P Live Streaming Systems, IEEE J. Selected Areas in Comm., vol. 25, no. 9, pp. 1640-1654, Dec. 2007. 6. X. Hei, C. Liang, J. Liang, Y. Liu, and K.W. Ross, A Measurement Study of a Large-Scale P2P IPTV System, IEEE Trans. Multimedia, vol. 9, no. 8, pp. 1672-1687, Dec. 2007. 7. M. Cha, P. Rodriguez, J. Crowcroft, S. Moon, and X. Amatriain, Watching Television over an IP Network, Proc. ACM Internet Measurement Conf. (IMC 08), pp. 71-83, Oct. 2008.

Narayana Engineering College :: Nellore

48

A Distributed Protocol to Serve Dynamic Groups for Peer-to-Peer Streaming

8. Skype, http://www.skype.com/, 2009. 9. D. Rossi, M. Mellia, and M. Meo, A Detailed Measurement of Skype Network Traffic, Proc. Intl Workshop Peer-To-Peer Systems (IPTPS 08), Feb. 2008. 10.J. Liebeherr, M. Nahas, and W. Si, Application-Layer Multicasting with Delaunay Triangulation Overlays, IEEE J. Selected Areas in Comm., vol. 20, no. 8, pp. 1472-1488, Oct. 2002. 11.T.S.E. Ng and H. Zhang, Predicting Internet Network Distance with Coordinates-Based Approaches, Proc. IEEE INFOCOM 02, pp. 170 179, June 2002. 12.L. Tang and M. Crovella, Virtual Landmarks for the Internet, Proc. ACM Internet Measurement Conf. (IMC 03), pp. 143-152, Oct. 2003. Sites Referred: http://java.sun.com http://www.sourcefordgde.com http://www.networkcomputing.com/ http://www.roseindia.com/ http://www.java2s.com/

Narayana Engineering College :: Nellore

49

Das könnte Ihnen auch gefallen