VoIP on a Wireless LAN Orly Goren Tomer Shiran Lior Nir.

Slides:



Advertisements
Similar presentations
Fraunhofer FOKUS 2007 VoIP Defender The Future of VoIP Protection Fraunhofer FOKUS Institute, Germany.
Advertisements

System Integration and Performance
H. 323 Chapter 4.
© 2007 Cisco Systems, Inc. All rights reserved.Cisco Public 1 Version 4.0 Network Services Networking for Home and Small Businesses – Chapter 6.
Developers: Alexey Rastvortsev, Ilya Kolchinsky Supervisors: Roy Friedman, Alex Kogan.
Rheeve: A Plug-n-Play Peer- to-Peer Computing Platform Wang-kee Poon and Jiannong Cao Department of Computing, The Hong Kong Polytechnic University ICDCSW.
A CHAT CLIENT-SERVER MODULE IN JAVA BY MAHTAB M HUSSAIN MAYANK MOHAN ISE 582 FALL 2003 PROJECT.
1 Java Networking – Part I CS , Spring 2008/9.
Peer 2 Peer – First Report Submitted by: Arthur Kiyanovsky Elena Zarkhin Ilya Bokshtein
Electrical Engineering Department Software Systems Lab TECHNION - ISRAEL INSTITUTE OF TECHNOLOGY Meeting recorder Application based on Software Agents.
Internet Telephony Helen J. Wang Network Reading Group, Jan 27, 99 Acknowledgement: Jimmy, Bhaskar.
Hands-On Microsoft Windows Server 2003 Networking Chapter 7 Windows Internet Naming Service.
Data Networking Fundamentals Unit 7 7/2/ Modified by: Brierley.
16: Distributed Systems1 DISTRIBUTED SYSTEM STRUCTURES NETWORK OPERATING SYSTEMS The users are aware of the physical structure of the network. Each site.
Hussain Ali Department of Computer Engineering KFUPM, Dhahran, Saudi Arabia Microsoft Networking.
VSP Video Station Protocol Presented by : Mittelman Dana Ben-Hamo Revital Ariel Tal Instructor : Sela Guy Presented by : Mittelman Dana Ben-Hamo Revital.
COMPUTER NETWORKS.
Check Disk. Disk Defragmenter Using Disk Defragmenter Effectively Run Disk Defragmenter when the computer will receive the least usage. Educate users.
© 2007 Cisco Systems, Inc. All rights reserved.Cisco Public 1 Version 4.0 Application Layer Functionality and Protocols Network Fundamentals – Chapter.
McGraw-Hill The McGraw-Hill Companies, Inc., 2000 SNMP Simple Network Management Protocol.
CSIT 320 (Blum)1 Client-Server Interaction Based on Appendix 1 in Computer Networks and Internets, Comer.
Agenda  Terminal Handling in Unix File Descriptors Opening/Assigning & Closing Sockets Types of Sockets – Internal(Local) vs. Network(Internet) Programming.
TCP/IP protocols Communication over Internet is mostly TCP/IP (Transmission Control Protocol over Internet Protocol) TCP/IP "stack" is software which allows.
Chapter 17 Networking Dave Bremer Otago Polytechnic, N.Z. ©2008, Prentice Hall Operating Systems: Internals and Design Principles, 6/E William Stallings.
IP Ports and Protocols used by H.323 Devices Liane Tarouco.
 Introduction  VoIP  P2P Systems  Skype  SIP  Skype - SIP Similarities and Differences  Conclusion.
NetworkProtocols. Objectives Identify characteristics of TCP/IP, IPX/SPX, NetBIOS, and AppleTalk Understand position of network protocols in OSI Model.
Lecture 2 TCP/IP Protocol Suite Reference: TCP/IP Protocol Suite, 4 th Edition (chapter 2) 1.
13/09/2015 Michael Chai; Behrouz Forouzan Staffordshire University School of Computing Transport layer and Application Layer Slide 1.
Remote Access Chapter 4. Learning Objectives Understand implications of IEEE 802.1x and how it is used Understand VPN technology and its uses for securing.
Jaringan Komputer Dasar OSI Transport Layer Aurelio Rahmadian.
ACM 511 Chapter 2. Communication Communicating the Messages The best approach is to divide the data into smaller, more manageable pieces to send over.
Jozef Goetz, Application Layer PART VI Jozef Goetz, Position of application layer The application layer enables the user, whether human.
Digital Multimedia, 2nd edition Nigel Chapman & Jenny Chapman Chapter 17 This presentation © 2004, MacAvon Media Productions Multimedia and Networks.
ICOM 6115©Manuel Rodriguez-Martinez ICOM 6115 – Computer Networks and the WWW Manuel Rodriguez-Martinez, Ph.D. Lecture 26.
Chapter 6-2 the TCP/IP Layers. The four layers of the TCP/IP model are listed in Table 6-2. The layers are The four layers of the TCP/IP model are listed.
1 Welcome to CSC 301 Web Programming Charles Frank.
Copyright © 2012 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 4: Networking and the Internet Computer Science: An Overview Eleventh.
Application Layer Khondaker Abdullah-Al-Mamun Lecturer, CSE Instructor, CNAP AUST.
Chapter 2 Applications and Layered Architectures Sockets.
H.323, IP Multicast Conferencing, And TAPI 3.0 Don Ryan Development Lead Windows Networking And Communications Microsoft Corporation.
1 Chapter 28 Networking. 2 Objectives F To comprehend socket-based communication in Java (§28.2). F To understand client/server computing (§28.2). F To.
Computer Networking From LANs to WANs: Hardware, Software, and Security Chapter 13 FTP and Telnet.
ECEN “Internet Protocols and Modeling”, Spring 2012 Course Materials: Papers, Reference Texts: Bertsekas/Gallager, Stuber, Stallings, etc Class.
CS 158A1 1.4 Implementing Network Software Phenomenal success of the Internet: – Computer # connected doubled every year since 1981, now approaching 200.
X-WindowsP.K.K.Thambi The X Window System Module 5.
A university for the world real R © 2009, Chapter 9 The Runtime Environment Michael Adams.
Multimedia and Networks. Protocols (rules) Rules governing the exchange of data over networks Conceptually organized into stacked layers – Application-oriented.
CS 3830 Day 9 Introduction 1-1. Announcements r Quiz #2 this Friday r Demo prog1 and prog2 together starting this Wednesday 2: Application Layer 2.
BZUPAGES.COM Presentation on TCP/IP Presented to: Sir Taimoor Presented by: Jamila BB Roll no Nudrat Rehman Roll no
The Client-Server Model And the Socket API. Client-Server (1) The datagram service does not require cooperation between the peer applications but such.
Digital Multimedia, 2nd edition Nigel Chapman & Jenny Chapman Chapter 17 This presentation © 2004, MacAvon Media Productions Multimedia and Networks.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED SYSTEMS.
Network Servers Chapter 13 Release 16/7/2009. Chapter Objectives Describe Client-server and Peer to Peer network model Explain server Explain Domain.
Lecture 4 Mechanisms & Kernel for NOSs. Mechanisms for Network Operating Systems  Network operating systems provide three basic mechanisms that support.
Group Communication Theresa Nguyen ICS243f Spring 2001.
1 Kyung Hee University Chapter 11 User Datagram Protocol.
COMPUTER NETWORKS Hwajung Lee. Image Source:
Address Resolution Protocol Yasir Jan 20 th March 2008 Future Internet.
1 Network Communications A Brief Introduction. 2 Network Communications.
Sockets A popular API for client-server interaction.
Monitoring Dynamic IOC Installations Using the alive Record Dohn Arms Beamline Controls & Data Acquisition Group Advanced Photon Source.
How to develop a VoIP softphone in C# that enables SIP Instant Messaging (IM) This presentation describes how to create a softphone in C# that allows you.
How to develop a VoIP softphone in C# by using OZEKI VoIP SIP SDK This presentation demonstrates the first steps concerning to how to develop a fully-functional.
Network Load Balancing
Client-Server Interaction
Chapter 3: Windows7 Part 4.
TA: Donghyun (David) Kim
Exceptions and networking
Presentation transcript:

VoIP on a Wireless LAN Orly Goren Tomer Shiran Lior Nir

The Topology One server – Presence Server Many clients – Voice Clients Clients can connect via wireless or wired LAN. The server has the basic functionality of a SIP server – it provides location and presence services to the clients.

Communication Channels There are two main communication channels: Client-client communication Client-server communication There is no server-client communication.

Client-Client Communication The voice conferences are managed in a P2P architecture – the server is not involved. TCP An inviter sends an InviteToConference message to all the invitees. UDP – via Microsoft DirectPlay The voice datagrams are sent via UDP. DirectPlay provides an asynchronous callback API. The client application must implement various event handlers that handle network events as they occur.

Client-Client Comm. – TCP A proprietary XML protocol is used over TCP. The only client-client message is InviteToConference: The XML message is terminated with a newline sequence (\r\n), so no newline sequences are allowed in the message. The inviter sends its current IP address – DirectPlay hosts the conference on the inviter’s machine.

Client-Client Comm. – UDP The voice stream is sent over multicast UDP if the clients belong to a multicast network. A client/server architecture would be better for non- multicast networks, because if N clients are transmitting voice data, we have N(N-1)=O(N 2 ) distinct transmissions. Example: Client 1 is transmitting Client 2 is not transmitting Client 3 is transmitting

Client-Server Communication The same proprietary XML protocol (over TCP) is used. Two types of messages: Event-triggered messages: Register Connect Disconnect AddFriend RemoveFriend Periodic messages: GetUserInfo (every 5 seconds – optimized for LANs) Hello (every 60 seconds – graceful disconnection is expected)

The Connect Message The server needs to know the IP address and port of each connected user in order to answer GetUserInfo messages. When a user logs in, the client sends its current IP address and port in the Connect message. The server sends back the user’s collection of friends.

The Disconnect Message There are two types of disconnections: Graceful disconnection The client sends a Disconnect message. The client stops sending the periodic messages. Forceful disconnection The client terminates abruptly without sending a Disconnect message. The server will eventually find out that the client has stopped sending Hello messages.

The GetUserInfo Message Every 5 seconds, the client sends a GetUserInfo message for each friend of the currently connected user. The short interval is optimized for low-latency networks such as LANs – it provides high data accuracy. The GetUserInfo messages are sent in a separate thread that is allocated from the thread pool – if the message fails, the other threads are immediately notified and a forceful disconnection takes place.

The Hello Message Every 60 seconds, the client sends a simple “stay-alive” message that indicates that the user is connected. This feature is required in order to support forceful disconnections. Since most disconnections are graceful, a long interval (60 seconds) can reduce network load. The server sweeps a local data structure every 90 seconds and disconnects users that didn’t send a Hello message during the last 90 seconds. If the client fails to send a Hello message, the connection to the server is assumed broken, and a forceful disconnection takes place (similar to GetUserInfo failures).

Architecture The server and the client are implemented in separate Visual Studio.NET 2003 solutions. Version 1.1 of the.NET Framework (Microsoft’s “JRE” for.NET) is required in order to run the applications. Each solutions contains several projects: One Windows Forms or Console project. Several Class Library projects. Each project represents an independent component that is responsible for one layer of functionality: For example, the NetworkController project is responsible for all network communication.

The Voice Client VoiceClient solution – 3000 lines of C# code CentralController project (CentralController.exe) NetworkController project (NetworkController.dll) VoiceController project (VoiceController.dll) The DirectX 9.0 SDK must be installed in order to build the VoiceController project, but the DirectX 9.0 Runtime (available from Windows Update) is enough to run the client.

The Voice Client The following parameters are read from a local XML configuration file: clientPort – the port on which the client waits for InviteToConference messages from other clients (the server doesn’t send any messages to the client). serverPort (13579) – the well-known port on which the server waits for event-triggered and periodic messages from the clients. serverAddress – the server’s IP address or hostname (the DNS resolver of the OS is used to translate a hostname to an IP address). In order to support roaming users, no other data is stored on the client – even the users’ friends are stored on the server.

The Central Controller Handles events from the client’s components: Network Controller When an InviteToConference message is received from another client, the Network Controller passes the corresponding XmlDocument object to the Central Controller. The Central Controller processes the XmlDocument object and sends the necessary response back to the Network Controller so it can be sent to the other client. Voice Controller The Voice Controller registers itself as the direct handler of DirectPlay and DirectPlay Voice events. The Voice Controller typically calls on the Central Controller to do the real work because it doesn’t have the whole picture. Central Controller When the user clicks a button or opens a menu, the corresponding event is handled by the Central Controller itself (the GUI belongs to the Central Controller)

The Network Controller Responsible for the client’s network communication. Outbound: Receives InviteToConference messages from the Central Controller and sends them to the invitees. Receives other messages from the Central Controller and sends them to the server. Inbound: Receives InviteToConference messages from other clients (inviters) and passes them to the Central Controller for processing.

The Voice Controller Uses the DirectPlay API to capture, transmit, mix, and play voice streams. Each client is represented by in DirectPlay as a Peer object. The inviter is the initial host of the conference, but if it leaves an ongoing conference, another participant is selected to be the new host via a host migration process. A DirectPlay Voice session is created on top of an existing DirectPlay session.

A Typical Workflow In order to start working, a user must be registered (registration is equivalent to opening an account). A user that is already registered can immediately connect.

A Typical Workflow Once connected, a user can manage his friends and start a conference with any number of available (connected & not busy) friends.

The Presence Server PresenceServer solution – 2500 lines of C# code CentralController project (CentralController.exe) NetworkController project (NetworkController.dll) StorageController project (StorageController.dll) StatusController project (StatusController.dll)

The Presence Server The server has several main functionalities: It stores the information of each of the clients in an XML file. It holds a translation table that maps names of connected users to their current network endpoints (IP address and port). It holds the current status of the connected users – whether or not the user is currently participating in a voice conference.

The Network Controller Responsible for the server’s network communication. The server does not initiate connections to clients – it only responds to incoming messages. The port is specified in the XML configuration file. Implements a standard TCP server sequence: Creates a new TcpListener object. Accepts new connections in an infinite loop. Each connection (TCP session) is handled in a separate thread that is allocated from the global thread pool.

The Storage Controller Responsible for the server’s interaction with its persistent storage: Each user in the system can maintain a list of friends (friends must be registered users). An XML file is used to store the information about the users and their friends. When a user connects, the server sends the user’s list of friends as listed in the XML file. The name of the XML file is read from the configuration file.

The XML File

The Status Controller Holds a table that contains an entry for each connected user: Network endpoint (IP address and port) Status (Available/Busy) Timestamp of the last Hello message The timestamp is used in order to remove users that did not disconnect gracefully. A client retrieves information about the user’s friends via GetUserInfo messages. The client uses the network endpoints of its friends in order to invite them to join a conference.

The Connected Users Table When a user connects, the user’s Name and IpEndPoint are added. Indicates if the user is participating a conference. Updated according to the periodic Hello messages. When a user disconnects, the user’s entry is removed.

The Central Controller The glue between the other components. The typical execution sequence: Receives incoming messages from the Voice Clients via the Network Controller. Executes the necessary business logic for the received command via the Status Controller and Storage Controller. Sends a response message to the Voice Client (via the Network Controller).

VoIP presentation And now – to the real thing…