This document discusses group communication and multicast communication. It begins by distinguishing between unicast (one-to-one) and multicast (one-to-many) communication. It then discusses key aspects of multicast communication including forming multicast groups, reliable vs unreliable multicast, and ordered vs unordered message delivery. It also presents an archetypal multicast API and describes key operations like join, leave, send, and receive. Finally, it discusses Java's basic multicast API and how it implements these operations using classes like MulticastSocket and DatagramPacket.
Chapter No 1 Introduction to Network and Network Models.pptxPoojaBahirat1
The document provides an introduction to computer networks and network models. It discusses the following key points in 3 sentences:
Data communication involves the exchange of data between two devices via transmission mediums like wired or wireless connections. The five basic components of a data communication system are the message, sender, receiver, transmission medium, and protocols. Network models like OSI and TCP/IP reference models organize networks into layers, with each layer performing specified functions and following protocols to communicate between devices.
IP multicasting allows for efficient one-to-many and many-to-many communication on the internet. It uses multicast groups and protocols like IGMP for group management and PIM for multicast routing. PIM supports both source-based trees using flood-and-prune and core-based trees with a rendezvous point to deliver multicast data.
This document discusses different types of networking devices used to connect local area networks (LANs). It describes hubs, repeaters, bridges, routers, and gateways. Hubs and repeaters operate at the physical layer, bridges operate at the physical and data link layers, and routers and gateways operate at the network layer and above to connect multiple networks and perform protocol conversion. The document provides details on the functions and characteristics of each type of device.
Tcp vs udp difference and comparison diffenHarikiran Raju
The document compares TCP and UDP protocols. TCP is connection-oriented and ensures reliable, ordered delivery of data. It is slower than UDP but suited for applications requiring high reliability. UDP is connectionless and does not guarantee delivery, order, or error checking. It is faster than TCP but less reliable. Examples of TCP applications include web browsing and file transfer. UDP is commonly used for applications requiring fast transmission like games and streaming media.
This document discusses multiplexing techniques for bandwidth utilization including frequency-division multiplexing (FDM), wavelength-division multiplexing (WDM), synchronous time-division multiplexing (TDM), and statistical time-division multiplexing. It provides examples of combining multiple analog or digital signals into a single transmission medium and discusses frame rates, bit rates, and slot durations. Diagrams illustrate concepts like FDM configuration, TDM frame structure, and the digital telephone hierarchy using T1 and E1 lines. The document also covers data rate management, synchronization, and potential bandwidth inefficiency when input links are unused.
Circuit switching is a method of establishing a dedicated communication path or circuit between two endpoints in a network before transmission begins. It requires reserving bandwidth throughout the network for the duration of the connection. A circuit-switched network establishes a physical path and dedicates resources to a single connection. It operates in three phases: circuit establishment, data transfer, and circuit disconnection. The public telephone network is an example of a circuit-switched network.
Transmission media (data communication)Pritom Chaki
Transmission media is the material pathway that connects computers, different kinds of devices and people on a network. It can be compared to a superhighway carrying lots of information. Transmission media uses cables or electromagnetic signals to transmit data.
This document discusses various concepts in multicast routing including unicasting, multicasting, source-based trees, group-shared trees, and multicast routing protocols. It provides examples and diagrams to illustrate key differences between unicast and multicast routing as well as different approaches to multicast routing such as reverse path forwarding, reverse path broadcasting, and core-based trees. Common multicast routing protocols including MOSPF, PIM, and CBT are also introduced along with the concept of tunneling to connect isolated multicast networks.
Chapter No 1 Introduction to Network and Network Models.pptxPoojaBahirat1
The document provides an introduction to computer networks and network models. It discusses the following key points in 3 sentences:
Data communication involves the exchange of data between two devices via transmission mediums like wired or wireless connections. The five basic components of a data communication system are the message, sender, receiver, transmission medium, and protocols. Network models like OSI and TCP/IP reference models organize networks into layers, with each layer performing specified functions and following protocols to communicate between devices.
IP multicasting allows for efficient one-to-many and many-to-many communication on the internet. It uses multicast groups and protocols like IGMP for group management and PIM for multicast routing. PIM supports both source-based trees using flood-and-prune and core-based trees with a rendezvous point to deliver multicast data.
This document discusses different types of networking devices used to connect local area networks (LANs). It describes hubs, repeaters, bridges, routers, and gateways. Hubs and repeaters operate at the physical layer, bridges operate at the physical and data link layers, and routers and gateways operate at the network layer and above to connect multiple networks and perform protocol conversion. The document provides details on the functions and characteristics of each type of device.
Tcp vs udp difference and comparison diffenHarikiran Raju
The document compares TCP and UDP protocols. TCP is connection-oriented and ensures reliable, ordered delivery of data. It is slower than UDP but suited for applications requiring high reliability. UDP is connectionless and does not guarantee delivery, order, or error checking. It is faster than TCP but less reliable. Examples of TCP applications include web browsing and file transfer. UDP is commonly used for applications requiring fast transmission like games and streaming media.
This document discusses multiplexing techniques for bandwidth utilization including frequency-division multiplexing (FDM), wavelength-division multiplexing (WDM), synchronous time-division multiplexing (TDM), and statistical time-division multiplexing. It provides examples of combining multiple analog or digital signals into a single transmission medium and discusses frame rates, bit rates, and slot durations. Diagrams illustrate concepts like FDM configuration, TDM frame structure, and the digital telephone hierarchy using T1 and E1 lines. The document also covers data rate management, synchronization, and potential bandwidth inefficiency when input links are unused.
Circuit switching is a method of establishing a dedicated communication path or circuit between two endpoints in a network before transmission begins. It requires reserving bandwidth throughout the network for the duration of the connection. A circuit-switched network establishes a physical path and dedicates resources to a single connection. It operates in three phases: circuit establishment, data transfer, and circuit disconnection. The public telephone network is an example of a circuit-switched network.
Transmission media (data communication)Pritom Chaki
Transmission media is the material pathway that connects computers, different kinds of devices and people on a network. It can be compared to a superhighway carrying lots of information. Transmission media uses cables or electromagnetic signals to transmit data.
This document discusses various concepts in multicast routing including unicasting, multicasting, source-based trees, group-shared trees, and multicast routing protocols. It provides examples and diagrams to illustrate key differences between unicast and multicast routing as well as different approaches to multicast routing such as reverse path forwarding, reverse path broadcasting, and core-based trees. Common multicast routing protocols including MOSPF, PIM, and CBT are also introduced along with the concept of tunneling to connect isolated multicast networks.
The document discusses topics related to the network layer, including:
1. It describes virtual circuits and datagrams, which are two methods for transferring data across networks.
2. It covers IPv4 addressing concepts such as address space, notations, classful and classless addressing, subnetting, and network address translation.
3. It provides an overview of additional network layer topics like IPv6 addressing, routing algorithms, internet control protocols, and routing protocols.
This document provides an overview of IPv6 addressing and address types. It discusses the 128-bit IPv6 address space and address notation. The main types of IPv6 addresses covered are unicast addresses, including global unicast, link-local, and unique local addresses, as well as multicast addresses and their uses for neighbor discovery. Solicited-node addresses are described as a method for IPv6 nodes to resolve link-layer addresses without broadcasting.
Power Management in Wireless Sensor NetworkBhavik Panchal
This document discusses power management techniques for sensor networks. It notes that sensor nodes are battery-powered and must operate for months to years on limited power. It describes the key components of sensor nodes that consume power, including the microcontroller, radio, sensors, and DC-DC converter. The document outlines various power management approaches that can optimize energy usage at the node, network, and protocol levels, such as putting components into low-power sleep modes, efficient routing protocols, and energy-aware software. The goal is to significantly extend the lifetime of battery-powered sensor networks.
Overview of SCTP (Stream Control Transmission Protocol)Peter R. Egli
Overview of SCTP (Stream Control Transmission Protocol), outlining the main features and capabilities of SCTP.
SCTP is a transport protocol that overcomes many of the shortcomings of TCP, namely head-of-line blocking and stream-oriented transmission.
SCTP supports multiple streams within a connection and preserves boundaries of application messages thus greatly simplifying communication.
Additionally, SCTP supports multi-homing which increases availability in applications with high reliability demands.
SCTP inherits much of the congestion, flow and error control mechanisms of TCP.
SCTP has its roots in telecom carrier networks for use in transitional voice over IP scenarios.
However, SCTP is generic so that it is applicable in many enterprise applications as well.
Error coding uses mathematical formulas to encode data bits into longer code words for transmission. This allows errors caused by environmental interference to be detected and sometimes corrected at the destination. There are two main types of error coding: error-detecting codes and error-correcting codes. Error-detecting codes add enough redundancy to allow errors to be detected but not corrected, while error-correcting codes add more redundancy to allow errors to be corrected. Common error-detecting coding techniques include parity checks, checksums, and cyclic redundancy checks (CRCs). These techniques use additional redundant bits appended to the data to facilitate error detection. CRC is particularly powerful as it can detect all single-bit errors and many burst errors.
This document discusses Internet Protocol version 4 (IPv4) and the Internet Control Message Protocol (ICMP). It provides details on IPv4 including that it is an unreliable, connectionless protocol operating at layer 3. It describes IPv4 header fields and fragmentation. It also explains that ICMP is used for error reporting and network queries since IPv4 lacks these functions. Specific ICMP message types are outlined including echo request/reply, destination unreachable, and source quench.
This document provides an introduction and overview of message queueing and the Advanced Message Queueing Protocol (AMQP). It discusses why messaging is useful, how message queues work, and the main features of message queueing including decoupling applications and asynchronous communication. It then describes AMQP specifically, including why it was developed, how it defines a network protocol and message model, and some key AMQP concepts like exchanges, bindings, queues, and message routing.
In simple terms, detailed descriptions on how RSVP works in this document have been made. Some detail issues are not covered, such as CSPF or protection mechanisms. Purpose of this document is to create an idea of the working structure of the protocol and how to manage it in general.
One way to categorize the different types of computer network designs is by their scope or scale. For historical reasons, the networking industry refers to nearly every type of design as some kind of area network. Common types of area networks are:
LAN - Local Area Network
WAN - Wide Area Network
WLAN - Wireless Local Area Network
MAN - Metropolitan Area Network
SAN - Storage Area Network, System Area Network, Server Area Network, or sometimes Small Area Network
CAN - Campus Area Network, Controller Area Network, or sometimes Cluster Area Network
PAN - Personal Area Network
LAN and WAN are the two primary and best-known categories of area networks, while the others have emerged with technology advances
- TCP and IP are core protocols of the Internet Protocol Suite, with TCP operating at the transport layer and providing reliable data transmission, and IP operating at the internet layer and routing packets between hosts.
- TCP establishes a virtual connection between hosts and provides services like flow control, error checking, and reliable ordered delivery. It uses port numbers to identify applications.
- Common applications that use TCP include Telnet, FTP, and TFTP, with Telnet using port 23, FTP using ports 20 and 21, and TFTP using port 69.
This document discusses various networking devices used to connect electronic devices and share resources in a computer network. It describes network interface cards (NICs) that provide the physical interface between a computer and cabling. It also covers repeaters that regenerate signals to extend distances, modems that modulate and demodulate signals for internet connections, hubs and switches that connect multiple devices either by broadcasting or selectively forwarding, bridges that segment networks while filtering traffic, and routers that intelligently connect different network types and choose optimal paths between them. The document provides details on the function and layer (physical, data link, network) of operation for each type of networking device.
In this tutorial on Sliding Window Protocol, we will understand the method for transmission of data frames from the sender to receiver side through continuous exchange of frames. The transmission of frames is issued in accordance to the assigned window size.
Topics covered in this tutorial on Sliding Window Protocol are:
1. What Is a protocol?
2.Types of protocol
3.Sliding Window Protocol
4.Working of Sliding Window Protocol
5.Stop-And-Wait vs Sliding Window
This document discusses multiplexing techniques used in mobile computing. It describes four types of multiplexing: frequency division multiplexing (FDM), time division multiplexing (TDM), code division multiplexing (CDM), and space division multiplexing (SDM). For each type, it provides details on how the technique works and its advantages and disadvantages. FDM uses different frequencies to transmit multiple signals simultaneously. TDM divides a signal into time slots to share a frequency. CDM assigns unique codes to signals sharing the same frequency. SDM splits a channel across physical locations.
This document provides an introduction to distributed computing, including definitions, history, goals, characteristics, examples of applications, and scenarios. It discusses advantages like improved performance and reliability, as well as challenges like complexity, network problems, security, and heterogeneity. Key issues addressed are transparency, openness, scalability, and the need to handle differences across hardware, software, and developers when designing distributed systems.
Shivani Soni is presenting to Mr. Gaurav Sharma about handoff in mobile networks. Handoff, also called handover, is the process of transferring an ongoing call or data session from one channel connected to the core network to another, or transferring a mobile station from one base station to another. There are two main types of handoff: intra-system/inter-BS handoff which occurs within the same network, and intersystem/inter-MSC handoff which occurs between different networks. With reference to link transfer, the two types are hard handoff where the connections switch at one time, and soft handoff where the connections overlap briefly to avoid breaks during handover.
Mobile ad-hoc networks have frequent host and topology changes with no cellular infrastructure and require multi-hop wireless links for data transmission between nodes. Routing protocols must discover routes between nodes that may not be directly connected. Table-driven protocols like Destination Sequenced Distance Vector (DSDV) and Wireless Routing Protocol (WRP) maintain up-to-date routing tables through periodic broadcasts but generate significant control overhead. DSDV uses sequence numbers to distinguish stale routes and avoid loops while WRP maintains four tables for routing information.
Sensor node hardware and network architectureVidhi603146
The document discusses the hardware components and architecture of sensor nodes. It describes the main components as the controller module, memory module, communication module, sensing modules, and power supply module. The controller is the core and processes data from sensors. Memory stores programs and data. The communication device allows nodes to exchange data wirelessly. Sensors interface with the physical environment. Power is stored and replenished through batteries or energy scavenging from the environment. TinyOS was developed as an operating system for sensor networks since traditional OSes were not suitable due to constraints like limited memory and power.
This document provides an outline for a textbook on computer networks. It begins with an introduction to computer networks, including their uses in business and home applications. It then discusses network hardware, software, and reference models. Several example networks are described, including the Internet, ATM, Ethernet, and wireless LANs. It concludes with a section on network standardization bodies.
Global State Routing (GSR) maintains a global knowledge of network topology like link state routing but avoids inefficient flooding. Each node periodically exchanges its link state table only with neighbors, not the entire network. This reduces overhead compared to link state routing. GSR nodes use Dijkstra's algorithm on the accumulated link state information to compute optimal paths locally without global flooding.
This document summarizes several reactive routing protocols for mobile ad hoc networks (MANETs). Reactive protocols create routes only when needed by a source. Dynamic Source Routing uses route requests and replies to find paths, while Temporally-Ordered Routing Algorithm builds and maintains a directed acyclic graph rooted at destinations. Some protocols aim to improve quality of service or support real-time data streams through techniques like bandwidth estimation and mobility prediction. Source Routing with Local Recovery reduces overhead by allowing intermediate nodes to perform local error recovery using route caches when possible.
Dokumen tersebut membahas tentang kejutan budaya dan bagaimana meringankannya. Beberapa faktor yang menyebabkan kejutan budaya dijelaskan seperti pengaruh lingkungan, teman sebaya, dan kurang perhatian orang tua. Dampak negatifnya terhadap individu, keluarga, dan masyarakat juga dibahas. Langkah-langkah seperti kampanye lewat institusi, media, dan keluarga diusulkan untuk mengatasinya.
The document discusses topics related to the network layer, including:
1. It describes virtual circuits and datagrams, which are two methods for transferring data across networks.
2. It covers IPv4 addressing concepts such as address space, notations, classful and classless addressing, subnetting, and network address translation.
3. It provides an overview of additional network layer topics like IPv6 addressing, routing algorithms, internet control protocols, and routing protocols.
This document provides an overview of IPv6 addressing and address types. It discusses the 128-bit IPv6 address space and address notation. The main types of IPv6 addresses covered are unicast addresses, including global unicast, link-local, and unique local addresses, as well as multicast addresses and their uses for neighbor discovery. Solicited-node addresses are described as a method for IPv6 nodes to resolve link-layer addresses without broadcasting.
Power Management in Wireless Sensor NetworkBhavik Panchal
This document discusses power management techniques for sensor networks. It notes that sensor nodes are battery-powered and must operate for months to years on limited power. It describes the key components of sensor nodes that consume power, including the microcontroller, radio, sensors, and DC-DC converter. The document outlines various power management approaches that can optimize energy usage at the node, network, and protocol levels, such as putting components into low-power sleep modes, efficient routing protocols, and energy-aware software. The goal is to significantly extend the lifetime of battery-powered sensor networks.
Overview of SCTP (Stream Control Transmission Protocol)Peter R. Egli
Overview of SCTP (Stream Control Transmission Protocol), outlining the main features and capabilities of SCTP.
SCTP is a transport protocol that overcomes many of the shortcomings of TCP, namely head-of-line blocking and stream-oriented transmission.
SCTP supports multiple streams within a connection and preserves boundaries of application messages thus greatly simplifying communication.
Additionally, SCTP supports multi-homing which increases availability in applications with high reliability demands.
SCTP inherits much of the congestion, flow and error control mechanisms of TCP.
SCTP has its roots in telecom carrier networks for use in transitional voice over IP scenarios.
However, SCTP is generic so that it is applicable in many enterprise applications as well.
Error coding uses mathematical formulas to encode data bits into longer code words for transmission. This allows errors caused by environmental interference to be detected and sometimes corrected at the destination. There are two main types of error coding: error-detecting codes and error-correcting codes. Error-detecting codes add enough redundancy to allow errors to be detected but not corrected, while error-correcting codes add more redundancy to allow errors to be corrected. Common error-detecting coding techniques include parity checks, checksums, and cyclic redundancy checks (CRCs). These techniques use additional redundant bits appended to the data to facilitate error detection. CRC is particularly powerful as it can detect all single-bit errors and many burst errors.
This document discusses Internet Protocol version 4 (IPv4) and the Internet Control Message Protocol (ICMP). It provides details on IPv4 including that it is an unreliable, connectionless protocol operating at layer 3. It describes IPv4 header fields and fragmentation. It also explains that ICMP is used for error reporting and network queries since IPv4 lacks these functions. Specific ICMP message types are outlined including echo request/reply, destination unreachable, and source quench.
This document provides an introduction and overview of message queueing and the Advanced Message Queueing Protocol (AMQP). It discusses why messaging is useful, how message queues work, and the main features of message queueing including decoupling applications and asynchronous communication. It then describes AMQP specifically, including why it was developed, how it defines a network protocol and message model, and some key AMQP concepts like exchanges, bindings, queues, and message routing.
In simple terms, detailed descriptions on how RSVP works in this document have been made. Some detail issues are not covered, such as CSPF or protection mechanisms. Purpose of this document is to create an idea of the working structure of the protocol and how to manage it in general.
One way to categorize the different types of computer network designs is by their scope or scale. For historical reasons, the networking industry refers to nearly every type of design as some kind of area network. Common types of area networks are:
LAN - Local Area Network
WAN - Wide Area Network
WLAN - Wireless Local Area Network
MAN - Metropolitan Area Network
SAN - Storage Area Network, System Area Network, Server Area Network, or sometimes Small Area Network
CAN - Campus Area Network, Controller Area Network, or sometimes Cluster Area Network
PAN - Personal Area Network
LAN and WAN are the two primary and best-known categories of area networks, while the others have emerged with technology advances
- TCP and IP are core protocols of the Internet Protocol Suite, with TCP operating at the transport layer and providing reliable data transmission, and IP operating at the internet layer and routing packets between hosts.
- TCP establishes a virtual connection between hosts and provides services like flow control, error checking, and reliable ordered delivery. It uses port numbers to identify applications.
- Common applications that use TCP include Telnet, FTP, and TFTP, with Telnet using port 23, FTP using ports 20 and 21, and TFTP using port 69.
This document discusses various networking devices used to connect electronic devices and share resources in a computer network. It describes network interface cards (NICs) that provide the physical interface between a computer and cabling. It also covers repeaters that regenerate signals to extend distances, modems that modulate and demodulate signals for internet connections, hubs and switches that connect multiple devices either by broadcasting or selectively forwarding, bridges that segment networks while filtering traffic, and routers that intelligently connect different network types and choose optimal paths between them. The document provides details on the function and layer (physical, data link, network) of operation for each type of networking device.
In this tutorial on Sliding Window Protocol, we will understand the method for transmission of data frames from the sender to receiver side through continuous exchange of frames. The transmission of frames is issued in accordance to the assigned window size.
Topics covered in this tutorial on Sliding Window Protocol are:
1. What Is a protocol?
2.Types of protocol
3.Sliding Window Protocol
4.Working of Sliding Window Protocol
5.Stop-And-Wait vs Sliding Window
This document discusses multiplexing techniques used in mobile computing. It describes four types of multiplexing: frequency division multiplexing (FDM), time division multiplexing (TDM), code division multiplexing (CDM), and space division multiplexing (SDM). For each type, it provides details on how the technique works and its advantages and disadvantages. FDM uses different frequencies to transmit multiple signals simultaneously. TDM divides a signal into time slots to share a frequency. CDM assigns unique codes to signals sharing the same frequency. SDM splits a channel across physical locations.
This document provides an introduction to distributed computing, including definitions, history, goals, characteristics, examples of applications, and scenarios. It discusses advantages like improved performance and reliability, as well as challenges like complexity, network problems, security, and heterogeneity. Key issues addressed are transparency, openness, scalability, and the need to handle differences across hardware, software, and developers when designing distributed systems.
Shivani Soni is presenting to Mr. Gaurav Sharma about handoff in mobile networks. Handoff, also called handover, is the process of transferring an ongoing call or data session from one channel connected to the core network to another, or transferring a mobile station from one base station to another. There are two main types of handoff: intra-system/inter-BS handoff which occurs within the same network, and intersystem/inter-MSC handoff which occurs between different networks. With reference to link transfer, the two types are hard handoff where the connections switch at one time, and soft handoff where the connections overlap briefly to avoid breaks during handover.
Mobile ad-hoc networks have frequent host and topology changes with no cellular infrastructure and require multi-hop wireless links for data transmission between nodes. Routing protocols must discover routes between nodes that may not be directly connected. Table-driven protocols like Destination Sequenced Distance Vector (DSDV) and Wireless Routing Protocol (WRP) maintain up-to-date routing tables through periodic broadcasts but generate significant control overhead. DSDV uses sequence numbers to distinguish stale routes and avoid loops while WRP maintains four tables for routing information.
Sensor node hardware and network architectureVidhi603146
The document discusses the hardware components and architecture of sensor nodes. It describes the main components as the controller module, memory module, communication module, sensing modules, and power supply module. The controller is the core and processes data from sensors. Memory stores programs and data. The communication device allows nodes to exchange data wirelessly. Sensors interface with the physical environment. Power is stored and replenished through batteries or energy scavenging from the environment. TinyOS was developed as an operating system for sensor networks since traditional OSes were not suitable due to constraints like limited memory and power.
This document provides an outline for a textbook on computer networks. It begins with an introduction to computer networks, including their uses in business and home applications. It then discusses network hardware, software, and reference models. Several example networks are described, including the Internet, ATM, Ethernet, and wireless LANs. It concludes with a section on network standardization bodies.
Global State Routing (GSR) maintains a global knowledge of network topology like link state routing but avoids inefficient flooding. Each node periodically exchanges its link state table only with neighbors, not the entire network. This reduces overhead compared to link state routing. GSR nodes use Dijkstra's algorithm on the accumulated link state information to compute optimal paths locally without global flooding.
This document summarizes several reactive routing protocols for mobile ad hoc networks (MANETs). Reactive protocols create routes only when needed by a source. Dynamic Source Routing uses route requests and replies to find paths, while Temporally-Ordered Routing Algorithm builds and maintains a directed acyclic graph rooted at destinations. Some protocols aim to improve quality of service or support real-time data streams through techniques like bandwidth estimation and mobility prediction. Source Routing with Local Recovery reduces overhead by allowing intermediate nodes to perform local error recovery using route caches when possible.
Dokumen tersebut membahas tentang kejutan budaya dan bagaimana meringankannya. Beberapa faktor yang menyebabkan kejutan budaya dijelaskan seperti pengaruh lingkungan, teman sebaya, dan kurang perhatian orang tua. Dampak negatifnya terhadap individu, keluarga, dan masyarakat juga dibahas. Langkah-langkah seperti kampanye lewat institusi, media, dan keluarga diusulkan untuk mengatasinya.
Facebook aims to connect all generations by targeting users ages 50+ to join and keep younger users engaged. The plan is to use digital marketing like ads on Google, Twitter, and Pinterest to attract older adults to Facebook and allow families to stay connected as users share memories regardless of distance. Tracking new users and engagement will measure the success of the campaign that is estimated to cost between $1-2.5 million.
The document contains inventory information for 11 items including item number, description, inventory quantity, price, amount, and priority. It provides total amount, average amount, minimum amount, and maximum amount. The items are further organized into tables based on priority code.
This document discusses 3D holographic projection technology. It describes how a person can be captured in 3D with a special camera and projected life-size in multiple locations simultaneously, allowing viewers to interact with the projected virtual person without 3D glasses. The document then provides details on the different types of holograms (reflection, transmission, computer-generated), how holograms are recorded and reconstructed, and examples of current and potential applications of holographic technology including education, advertising, virtual reality, and telepresence.
Dokumen tersebut membahas tentang kejutan budaya yang dialami oleh remaja ketika berinteraksi dengan budaya lain. Kejutan budaya dapat menyebabkan perubahan tingkah laku dan sikap remaja seperti cara berpakaian, bahasa, dan nilai-nilai yang dianut. Dokumen tersebut juga menyarankan langkah-langkah untuk mengatasi kejutan budaya seperti mengadakan kampanye sosial dan peranan keluarga dan media.
The document discusses the benefits of meditation for reducing stress and anxiety. Regular meditation practice can help calm the mind and body by lowering heart rate and blood pressure. Making meditation a part of a daily routine, even if just 10-15 minutes per day, can offer improvements to mood, focus, and overall feelings of well-being over time.
This document discusses swarm robotics and how robots communicate within a swarm. It defines swarm robotics as using small robots that communicate with each other to perform tasks. Swarms typically have a master robot that controls slave robots and guides them to complete assigned tasks. The robots communicate using transmitters and receivers that convert data between serial and parallel formats to transmit instructions and sensor readings between the master and slaves. Examples of applications for swarm robotics include industrial tasks, medical procedures, and military operations.
Réseaux sociaux et marketing des territoires // Rencontres Marketing / RN2DBeer Bergman
Présentation pour les Rencontres Marketing du Réseau National des Destinations (touristiques), novembre 2013, à Paris.
Focus sur les réseaux sociaux, les acteurs des réseaux, des contenus partagés et partageables.
Deux questions se posent pour moi :
1. Est-ce que les contenus existent s'ils ne sont pas partagés ?
2. Quel héritage voudrait-on laisser si demain son organisme fermait ?
This document provides an overview of multicast communication concepts. It discusses IP multicast and how it allows efficient single-message delivery to groups. Reliable multicast is described as ensuring validity, integrity, and agreement even if the sender crashes. Ordered multicast can provide FIFO, causal, or total ordering guarantees for message delivery across group members. Practical implementations rely on techniques like sequence numbers, acknowledgments, and negative acknowledgments to ensure reliability and ordering.
Comparative Analysis and Secure ALM P2P Overlay Multicasting of Various Multi...IJERD Editor
Multicasting is the delivery of a message or information to a group of destination computers simultaneously in a single transmission from the source. The copies of the messages are automatically created in other network elements like routers but only when the topology of the network requires it. Multicast is implemented most commonly in IP multicast which is further could be employed in internet protocol applications of streaming media. In the IP multicast the implementation of the multicast concept occurs at the IP routing level where routers create optimal distribution paths for datagram sent to a multicast destination address. At the Data Link Layer, multicast describes one-to-many distribution such as Ethernet multicast addressing, Asynchronous Transfer Mode (ATM) point-to-multipoint virtual circuits (P2MP) multicast. In this paper we have compared various multicasting mechanisms. The comparison is done on the basis of various factors like complexity, overhead, maintenance, etc. The mechanisms that are part of the paper are a secure ALM P2P multicasting technique for large scale networks using face recognition, IP multicasting techniques and the overlay multicasting techniques. The comparison of these multicasting techniques will help us to design and Implement a Secure Application-Level Multicasting (SALM) P2P Overlay Multicasting for large Scale Network. The main objective of the paper is to discuss all the three above mentioned multicasting phenomenon’s and compare them on the basis of certain criterion so as carved out the best of all which can be further used for designing a secure multicasting technique which can take the best features of all combined together so as to get effective and efficient technique for multicasting the throughput of the network by effective and efficient delivery of the information to all the members of the group. The certain findings can be carved out of the comparison can help us to create a multicasting technique with less incurring of delays so that information can be delivered in limited time span and multicast path length so that efficient paths should be used so as to enhance performance in multicasting. Moreover in this paper we will study & investigate other issues that degrades the performance of Multicasting Techniques for large Scale Network and later we will come to know through the comparison that which technique performs well in these harsh environment and give effective results.
Group communication allows simultaneous operations across multiple workstations like software installation. It is useful for applications like online conferences, interactive learning, and online auctions. A multicast group is formed when a set of processes communicate through multicasting to exchange data. Group discussions are used in organizations for decision making and problem solving, and are also part of many selection processes to evaluate candidates on their knowledge, communication skills, group behavior, and leadership abilities.
Designing Application over mobile environmentMaulik Patel
This document discusses various paradigms for distributed applications over mobile environments. It begins by introducing abstractions and some key characteristics of distributed systems like inter-process communication and event synchronization. It then covers several common paradigms like publish/subscribe, message passing using point-to-point messaging or message queues, shared spaces, and remote procedure calls. For each paradigm, it discusses concepts like decoupling, message passing, and how they apply to distributed systems and mobility.
Multicasting in Delay Tolerant Networks: Implementation and Performance AnalysisNagendra Posani
Delay Tolerant Networks(DTN) are a class of emerg- ing networks which experience intermittent connectivity and lack end-to-end paths due to absence of well-defined infrastructure. In this paper we explore the nuances of multicasting in DTNs. Multicasting enables efficient distribution of messages to a group of users, a paradigm that can be applicable in the context of DTNs. While multicasting in internet and ad-hoc networks has been studied extensively, realizing the same in DTNs is non- trivial given that many factors have to be considered. This paper, presents an implementation of multicast routing for various protocols in DTNs using ONE simulator. It also provides the analysis and performance results for the various protocols studies against the different movement models.
Group communication allows a process to send a single message to multiple recipients through multicast operations. It provides features like fault tolerance through replicated services, where client requests are multicast to all servers performing the same operation. While multicast has no guarantees about delivery or ordering, it enables applications like discovery of servers in spontaneous networks or propagation of event notifications. IP multicast implements group communication by allowing a sender to transmit a single packet to a multicast group specified by a class D address. Membership in multicast groups is dynamic and packets may be lost or arrive out of order.
Group communication allows a process to send a single message to multiple recipients through multicast operations. It provides features like fault tolerance through replicated services, where client requests are multicast to all servers performing the same operation. IP multicast builds on the internet protocol to transmit a single packet to a multicast group specified by a class D address. It has reliability issues since messages may be lost between multicast routers or if a router fails, and ordering is not guaranteed as packets over the internet may arrive out of order.
Indirect communication is defined as communication between entities in a dist...nandepovanhu
Indirect communication allows entities in a distributed system to communicate through an intermediary rather than being directly coupled. This chapter discusses several approaches to indirect communication including group communication, publish-subscribe systems, message queues, and shared memory. Group communication in particular allows one-to-many communication where a sender can multicast a message to all members of a group without knowledge of specific receivers. The intermediary handles issues like group membership management, failure detection, and ensuring reliability and ordering of messages. JGroups is presented as a Java toolkit that implements group communication.
Message passing
Features of message passing
Issues in IPC
Synchronization
Buffering
Null buffer
Single buffer
Unbounded capacity buffer
Finite bound buffer
Multi datagram messages
Encoding and decoding
Process addressing
Failure handling
Group communication
one to many communication
many to one communication
many to many communication
This document provides an overview of distributed systems and distributed computing paradigms. It defines distributed systems as a collection of independent computers that can communicate with each other over a network. It discusses several distributed computing paradigms including message passing, client-server, peer-to-peer, publish/subscribe, remote procedure call (RPC), collaborative applications, and mobile agents. For each paradigm, it provides examples and explanations of how the paradigm works.
The document discusses various aspects of interprocess communication (IPC). It describes IPC as communication between processes in a distributed system. There are two main types of IPC - synchronous which blocks send/receive operations, and asynchronous which uses non-blocking sends. IPC can use protocols like TCP and UDP, with UDP providing message passing between processes. Request-reply and multicast communication patterns are also covered. Multicast allows sending a message to multiple processes simultaneously. The document also discusses concepts like sockets, marshalling, and different IPC architectures and algorithms.
Deterministic Formulization of End-to-End Delay and Bandwidth Efficiency for ...CSCJournals
End-System multicasting (ESM) is a promising application-layer scheme that has been recently proposed for implementing multicast routing in the application layer as a practical alternative to the IP multicasting. Moreover, ESM is an efficient application layer solution where all the multicast functionality is shifted to the end users. However, the limitation in bandwidth and the fact that the message needs to be forwarded from host-to-host using unicast connection, and consequently incrementing the end-to-end delay of the transmission process, contribute to the price to pay for this new approach. Therefore, supporting high-speed real-time applications such as live streaming multimedia, videoconferencing, distributed simulations, and multiparty games require a sound understanding of these multicasting schemes such as IP multicast and ESM and the factors that might affect the end-user requirements. In this paper, we present both the analytical and the mathematical models for formalizing the end-to-end delay and the bandwidth efficiency of both IP and ESM multicast system. For the sake of the experimental verifications of the proposed models, numerical and simulation results are presented in this paper. Finally, the proposed formulization can be used to design and implement a more robust and efficient multicast systems for the future networks
Command Transfer Protocol (CTP) for Distributed or Parallel Computationpaperpublications3
Abstract: In this paper, an improved version of a new networking protocol CTP for distributed or parallel computations is presented. In common, it is suitable just for fast, reliable and feature full interchange of small messages. CTP is a transport level API which helps in incrementing the speed of interchange. CTP is designed to allow general configurability, enabling its use in a wide range of general purpose and specialized applications. CTP covers a number of layers, from transport layer to application layer, proves that the area of its responsibility starts from relatively low level and goes to a high one.
Formal Specification and Verification of Total Order Broadcast through Destin...ijcsit
A reliable broadcast is communication primitive used to develop fault tolerant distributed applications. It
in due course delivers messages to all participating sites irrespective of their ordering. Total order
broadcast impose restriction on message ordering and satisfies total order requirement.
A clear specifications, rigorous validation and verification is key to obtain better design of dependable
services in such applications. With the help of formal methods one can specify and verify systems in
systematic rather than ad hoc manner. It reveals ambiguities, incompleteness, and inconsistencies in a
system by facilitating clear specification, rigorous validation and verification.
In this paper, we present a formal development of total order broadcast. The model have been developed
and checked by using event-B techniques supported by the RODIN tool. Event-B is a formal technique that
supports the incremental design of a distributed applications using notion of refinements.
Privacy Enhancement of Node in Opportunistic Network by Using Virtual-Id ijsc
This document proposes a methodology to enhance privacy in opportunistic networks. It discusses how opportunistic networks work using a store-carry-forward approach without fixed infrastructure. The proposed methodology uses virtual IDs assigned by stable nodes and session keys to encrypt messages, hiding the real identities and locations of nodes from intermediate nodes. Simulation results show the proposed methodology reduces packet loss and delay while increasing throughput and privacy compared to the existing approach. Future work could look at reducing the workload of senders required to communicate securely in the opportunistic network.
PRIVACY ENHANCEMENT OF NODE IN OPPORTUNISTIC NETWORK BY USING VIRTUAL-IDijsc
An entrepreneurial system is one of the sort of remote system. Delay resistance system is correspondence
organizing proposition which empowers the correspondence in such a situation where end to end way
might never be exist. Message is forward on the premise of chance. Time interim to convey a message is
long we can't evaluate or anticipate the time until we get the message. There is a security issue in these
sorts of system. In this paper we will proposed another procedure which will expand the protection of the
system and build execution of the system.
Classroom Shared Whiteboard System using Multicast Protocolijtsrd
Multiple hosts wish to receive the same data from one or more senders. Multicast routing defines extensions to IP routers to support broadcasting data in IP networks. Multicast data is sent and received at a multicast address which defines a group. Data is sent and received in multicast groups via routing trees from sender s to receivers. Demonstrative lectures require to share the computer screen of the lecturer to the students as well as to make discussion with the students. The Multicast protocol is the most suitable method because of its capability in speed and better synchronized process. The word multicast is typically used to refer to IP multicast which is often employed for streaming media, and Internet television applications. Wit Yee Swe | Khaing Thazin Min | Khin Chan Myae Zin | Yi Yi Aung "Classroom Shared Whiteboard System using Multicast Protocol" Published in International Journal of Trend in Scientific Research and Development (ijtsrd), ISSN: 2456-6470, Volume-3 | Issue-5 , August 2019, URL: https://www.ijtsrd.com/papers/ijtsrd27976.pdfPaper URL: https://www.ijtsrd.com/engineering/electronics-and-communication-engineering/27976/classroom-shared-whiteboard-system-using-multicast-protocol/wit-yee-swe
International Journal of Engineering and Science Invention (IJESI) is an international journal intended for professionals and researchers in all fields of computer science and electronics. IJESI publishes research articles and reviews within the whole field Engineering Science and Technology, new teaching methods, assessment, validation and the impact of new technologies and it will continue to provide information on the latest trends and developments in this ever-expanding subject. The publications of papers are selected through double peer reviewed to ensure originality, relevance, and readability. The articles published in our journal can be accessed online.
This document summarizes the key points of the paper "End-to-End Arguments in System Design". It discusses how the end-to-end principle states that application-specific functions should be implemented in end systems rather than intermediate systems when possible. Examples like file transfers and transaction management are provided. The history and application of these arguments to other areas like operating systems are also covered.
Inter-Process communication in Operating System.pptNitihyaAshwinC
Interprocess communication (IPC) in an operating system refers to the mechanisms and techniques that processes use to communicate and share data with each other. Processes are independent execution units within an operating system, and IPC is essential for processes to cooperate, exchange information, and synchronize their activities. Here are some common methods of IPC in operating systems:
Message Passing: In message passing, processes send and receive messages to communicate. This can be implemented using various methods:
Sockets: Processes can communicate over a network or locally using sockets, which provide a means to send and receive data streams.
Pipes: A pipe is a unidirectional communication channel between two processes. One process writes to the pipe, and the other reads from it.
Message Queues: Message queues allow processes to send and receive messages in a more structured manner. Messages are often stored in a queue, and processes can read from and write to the queue.
Shared Memory: Shared memory is a method where multiple processes can access the same region of memory. This allows them to share data more efficiently. However, it requires synchronization mechanisms to ensure that processes do not interfere with each other.
Semaphores: Semaphores are synchronization primitives used to control access to shared resources. They are often used in combination with shared memory to prevent race conditions and ensure orderly access to data.
Mutexes and Locks: Mutexes (short for mutual exclusion) and locks are used to protect critical sections of code. Only one process or thread can hold a mutex at a time, ensuring that only one entity accesses a particular resource at a given moment.
Signals: Signals are a form of asynchronous communication. One process can send a signal to another process to notify it of an event, such as a specific condition or an interrupt. The receiving process can define signal handlers to respond to these signals.
Remote Procedure Calls (RPC): RPC allows a process to execute procedures or functions on a remote process, as if they were local. This is often used in distributed systems and client-server architectures.
Named Pipes (FIFOs): Named pipes, or FIFOs (first in, first out), are similar to regular pipes but have a named file associated with them. Multiple processes can read from and write to the same named pipe, making them useful for communication between unrelated processes.
The choice of IPC mechanism depends on the specific requirements of the processes and the operating system. Different IPC methods are suitable for different scenarios. For example, message passing is useful for structured communication, shared memory is efficient for large data sharing, and semaphores help with synchronization.
Inter-Process communication in Operating System.ppt
Ch06
1. Distributed Computing, M. Liu
1
Chapter 6. Group Communication
In previous chapters, we have presented interprocess communications as the exchange of
information between two processes. In this chapter, we will look at IPC among a group
of processes, or group communication.
1. Unicasting versus Multicasting
In the IPC we have presented so far, data is sent from a source process, the sender, to one
destination process, the receiver. This form of IPC can be called unicast, the sending of
information to a single receiver, as opposed to multicast, the sending of information to
multiple receivers. Unicast provides one-to-one IPC; multicast supports one-to-many
IPC. See figure 1.
sender receiver
One-to-one communication or unicast
Group communication or multicast
Figure 1. Unicast IPC and Multicast IPC
Multicast/intro.sdr
Whereas the majority of network services and network applications use unicast for IPC,
multicast is useful for applications such as instant messages, groupware, online
conferences, interactive distance learning, and can be used for applications such as real-
time online auction. It can also be used in replication1
of services for fault tolerance2
.
In an application or network service which makes use of multicasting, a set of processes
form a group, called a multicast group. Each process in a group can send and receive
message. A message sent by any process in the group can be received by each
participating process in the group. A process may also choose to leave a multicast group.
In an application such as online conferencing, a group of processes interoperate using
multicast to exchange audio, video, and/or text data. As before, our discussion will
concentrate on the service layer, specially the IPC mechanism, for the application.
1
Replication of a service refers to maintaining duplicates of that service. A common technique for
enhancing the availability of a service in the face of failures is to duplicate the data and the supporting
system for that service.
2
Fault tolerance refers to the ability for an application to tolerate failures to some extent.
2. Distributed Computing, M. Liu
2
2 An Archetypal Multicast API
Let us first look at the facilities provided by any such mechanism before we proceed to
study a specific API for multicast.
An application program interface which provides the functionalities of multicast must
provide the following primitive operations:
• Join – This operation allows a process to join a specific multicast group. A
process that has joined a multicast group is a member of the group and is entitled
to receive all multicast addressed to the group. A process should be able to be a
member of multiple multicast groups at any one time.
Note that for this and other multicast operations, a naming scheme is needed to
uniquely identify a multicast group.
• Leave –This operation allows a process to stop participating in a multicast group.
A process that has left a multicast group is no longer a member of the group and
is thereafter not entitled to receive any multicast addressed to the group, although
the process may remain a member of other multicast groups.
• Send – This operation allows a process to send a message to all processes
currently participating in a multicast group.
• Receive –This operation allows a member process to receive messages sent to a
multicast group.
In Section 6.5 we will look at Java’s multicast API and sample programs using the API,
at which time you will see how these primitive operations are provided using Java syntax.
Before we do that, however, let us explore some of the interesting issues specific to
multicast. These issues arise from the one-to-many nature of multicast.
3 Connection-oriented versus Connection-Oriented Multicast
A basic multicast mechanism is connectionless. The reason is obvious if you consider
the one-to-many nature of multicast. In a group of n process, if connection is to be
established between the sender and every other process in the group, a total of n
connections will be needed. Moreover, each of the n processes may potentially be a
sender, so that each process must maintain a connection with every other process,
resulting in a total of n * n or n2
connections. If n is large, the sheer number of such
connections will become prohibitively expensive.
Moreover, connectionless IPC is appropriate for a very typical class of multicast
applications: applications where audio or video data is transmitted among processes in
real time3
. When audio or video data is transmitted, the reduction in latency4
provided
by connectionless communication outweighs the advantages offered by connection-
oriented communication. When data for animation is sent, for example, it is more
acceptable for a user to experience a distortion in the image of an occasional frame (a
likely occurrence with connectionless communication) than a frequent, perceptible delay
between consecutive frames (a likely occurrence with connection-oriented
communication).
3
By real time it is meant that the latency (see below) between sending and receiving should be close to
zero.
4
Latency refers to the delay in data transmission.
3. Distributed Computing, M. Liu
3
4 Reliable Multicast vs. Unreliable Multicast
When a multicast message is sent by a process, the runtime support of the multicast
mechanism is responsible for delivering the message to each process currently in the
multicast group. As each participating process may reside on a separate host, the delivery
of these messages requires the cooperation of mechanisms running independently on
those systems. Due to factors such as failures of network links and/or network hosts,
routing delays, and differences in software and hardware, the time between when a
unicast message is sent and when it is received may vary among the recipient processes.
While the differences in message delivery to individual hosts may be insignificant if the
machines are localized geographically, this may not be the case if the hosts are dispersed
over a wide-area network.
Moreover, a message may never be received by one or more of the processes at all, due to
errors and/or failures in the network, the machines, or the runtime support.
Whereas some applications, such as video conferencing, can tolerate an occasional miss
or misordering of messages, there are applications – such as database applications – for
which such anomalies are unacceptable.
Therefore, when employing a multicasting mechanism for an application, it is important
that you choose one with the characteristics appropriate for your application. Otherwise,
measures will need to be provided in the coding of the application in order to handle the
anomalies which may occur in message delivery.
For that reason, it is useful to classify multicasting mechanisms in terms of their
characteristics of message delivery.
4.1 Unreliable multicast: At its most basic, a multicast system will make a good-faith
attempt to deliver messages to each participating process, but the delivery of the correct
message to each process is not guaranteed. Thus, any message sent by a process may be
received by zero or more processes. In the best case, the message, in its correct form, is
received by all processes. In the worst case, the message may be received by no process
correctly. In other cases, the message may be received by some but not all, or the
messages may be received by some processes in a corrupted form. Such a system is said
to provide unreliable multicast.
4.2 Reliable multicast: A multicast system which guarantees that each message is
eventually delivered correctly to each process in the group is said to provide reliable
multicast. In such a system, each message sent by a process can be assumed to be
delivered in a non-corrupted form to all processes in the group eventually.
The definition of reliable multicast requires that each participating process receives
exactly one copy of each message sent. However, the definition places no restriction on
the order that the messages are delivered to each process: each process may receive the
messages in any permutation of those messages. For applications where the order of
message delivery is significant, it is helpful to further classify reliable multicast systems
as described below.
4. Distributed Computing, M. Liu
4
Unordered
An unordered reliable multicast system guarantees the safe delivery of each
message, but it provides no guarantee on the delivery order of the messages.
For example, suppose three processes P1, P2, and P3 have formed a multicast
group. Further suppose that three messages, m1, m2, m3 have been sent to the
group. Then an unordered reliable multicast system may deliver the messages to
each of the three processes in any of the 3! = 6 permutations (m1-m2-m3, m1-m3-
m2, m2-m1-m3, m2-m3-m1, m3-m1-m2, m3-m2-m1). Note that it is possible for each
participant to receive the messages in an order different from the orders of
messages delivered to other participants. In our example, it is possible for P1 to
be delivered the messages in the order of m1-m2-m3, P2 to be delivered the
messages in the order of m2-m1-m3, and P3 to be delivered the messages in the
order of m1-m3-m2. Of course it is also possible for P1, P2, and P3 to each be
delivered the messages in the same order, say m1-m2-m3, but an application
cannot make that assumption if it employs an unordered multicast mechanism.
FIFO multicast
A system which guarantees that the delivery of the messages adhere to the
following condition is said to provide FIFO (first-in-first-out) or send-order
multicast:
If process P sent messages mi and mj, in that order, then each process in
the multicast group will be delivered the messages mi and mj, in that order.
To illustrate this definition, let us look at an example. Suppose P1 sends messages
m1, m2, and m3 ,in that order. Then, with FIFO multicast, each process in the
group is guaranteed to have those messages delivered in that same order: m1, m2,
then m3. Note that this definition places no restriction on the delivery order
among messages sent by different processes. To illustrate the point, let us use a
simplified example of a multicast group of two processes: P1 and P2. Suppose P1
sends messages m11 then m12, while P2 sends messages m21 then m22. Then a
FIFO multicast system can deliver the messages to each of the two processes in
any of the following orders:
m11-m12-m21-m22, m11-m21-m12-m22, m11-m21-m22-m12,
m21-m11-m12-m22, m21-m11-m22-m12, m21-m22-m11-m12.
Note that while the messages sent by P1 must be delivered to each process in the
order of the sequence m11-m12, and the messages sent by P2 must be delivered in
the order of the sequence m21-m22, the two sequences can interleave in any
manner.
Causal Order Multicast
A multicast system is said to provide causal5
multicast if its message delivery
satisfies the following criterion:
If message mj causes (results in) the occurrence of message mj, then mi
will be delivered to each process prior to mj. Messages mi and mj are said
5
Please note that the word “causal” is different from the word “casual”.
5. Distributed Computing, M. Liu
5
to have a causal or happen-before relationship, denoted mi -> mj. The
happen-before relationship is transitory: if mi -> mj and mj -> mk, then mi
-> mj -> mk. In this case, a causal-order multicast system guarantees that
these three messages will be delivered to each process in the order of mi,
mj, then mk.
As an illustration, suppose three processes P1, P2, and P3 are in a multicast group.
P1 sends a message m1, to which P2 replies with a multicast message m2. Since
m2 is triggered by m1, the two messages share a causal relationship of m1-> m2.
Suppose the receiving of m2 in turn triggers a multicast message m3 sent by P3,
that is, m2-> m3. The three messages then share the causal relationship of m1->
m2-> m3
6
. A causal-order multicast message system ensures that these three
messages will be delivered to each of the three processes in the order of m1- m2-
m3. Note that in this case there is no restriction on the order of message delivery
if the multicast system were FIFO instead of causal.
As a variation of the above example, suppose P1 multicasts message m1, to which
P2 replies with a multicast message m2, and independently P3 replies to m1 with a
multicast message m3. The three messages now share these causal relationships:
m1 -> m2 and m1 -> m3. A causal-order multicast system can delivery these
message to the participating processes in either of the following orders:
m1- m2- m3
m1- m3- m2
since the causal relations are preserved in either of the two sequences. In such a
system, it is not possible for the messages to be delivered to any of the processes
in any other permutation of the three messages, such as m2- m1- m3 or m3- m1- m2,
the first of these violates the causal relationship m1 -> m2 , while the second
permutation violates the causal relationship m1 -> m3.
Atomic order multicast
In an atomic-order multicast system, all messages are guaranteed to be delivered
to each participant in the exact same order. Note that the delivery order does not
have to be FIFO or causal, but must be identical for each process.
Example:
P1 sends m1, P2 sends m2, and P3 sends m3.
An atomic system will guarantee that the messages will be delivered to
each process in only one of the six orders: m1-m2- m3, m1- m3- m2, m2-
m1-m3, m2-m3-m1, m3-m1- m2, m3-m2-m1.
Example:
P1 sends m1 then m2.
P2 replies to m1 by sending m3.
P3 replies to m3 by sending m4.
Although atomic multicast imposes no ordering on these messages, the sequence
of the events dictates that P1 must be delivered m1 before sending m2. Likewise,
6
The causal relationship is transitive: if ei -> ej, and ej -> ek, then ei -> ej -> ek.
6. Distributed Computing, M. Liu
6
P2 must receive m1 then m3, while P3 must receive m3 before m4. Hence any
atomic delivery order must preserve the order m1- m3- m4. The remaining
message m2 can, however, be interleaved with these messages in any manner.
Thus an atomic multicast will result in the messages being delivered to each of the
processes in one of the following orders: m1- m2- m3- m4, m1- m3- m2- m4, or m1-
m3- m4- m2. For example, each process may be delivered the messages in this
order m1- m3- m2- m4, .
5. The Java Basic Multicast API
We are now ready to study a programming tool for using multicast in an application. The
tool is the basic Java multicast API [1].
At the transport layer, the basic multicast supported by Java is an extension of UDP (the
User Datagram Protocol), which, as you recall, is connectionless and unreliable. At the
network layer of the network architecture, multicast packets are transmitted across
networks using Internet multicast routing [5], supported by routers (known as mrouters)
capable of multicast routing in addition to unicast routing. Multicast on a local network
(one interconnected without a router) is carried out using multicast supported by the
local-area-network protocol (such as Ethernet multicast). The routing and delivery of
multicast messages are topics beyond the scope of this book. Fortunately, such matters
are transparent to an application programmer using a multicast API.
For the basic multicast API, Java provides a set of classes which are closely related to the
datagram socket API classes that we looked at in Chapter 3. There are three major
classes in the API, the first three of which we have already seen in the context of
datagram sockets.
1. InetAddress: In the datagram socket API, this class represents the IP address of
the sender or receiver. In multicasting, this class can be used to identify a
multicast group (see next section).
2. DatagramPacket: As with datagram sockets, an object of this class represents an
actual datagram; in multicast, a DatagramPacket object represents a packet of
data sent to all participants or received by each participant in a multicast group.
3. MulticastSocket : The MulticastSocket class is derived from the
DatagramSocket class, with additional capabilities for joining and leaving a
multicast group. An object of the multicast datagram socket class can be used for
sending and receiving IP multicast packets.
5.1 IP Multicast addresses
Recall that in the Java unicast socket API, a sender identifies a receiver by specifying the
host name of the receiving process, as well as the protocol port to which the receiving
process is bound.
Consider for a moment what a multicast sender need to address. Instead of a single
process, a multicast datagram is meant to be received by all the processes that are
currently members of a specific multicast group. Hence each multicast datagram needs to
be addressed to a multicast group instead of an individual process.
7. Distributed Computing, M. Liu
7
The Java multicast API uses the Internet Protocol (IP) multicast addresses for identifying
multicast groups.
In IPv47
, a multicast group is specified by (i) a class D IP address combined with (ii) a
standard UDP port number. Recall from Chapter 1 that Class D IP addresses are those
with the prefix bit string of 1110, and hence these addresses are in the range of 224.0.0.0
to 239.255.255.255, inclusive. Excluding the four prefix bits, there are 32-4=28
remaining bits, resulting in an address space size of 228
; that is, approximiate 268 million
class D addresses are available, although the address 224.0.0.0 is reserved and should not
be used by any application.. IPv4 multicast addresses are managed and assigned by the
Internet Assigned Numbers Authority (IANA) [3].
An application which uses the Java multicast API must specify at least one multicast
address for the application. To select a multicast address for an application, there are the
following options:
1. Obtain a permanently assigned static multicast address from IANA: Permanent
addresses are limited to global, well-known Internet applications, and their
allocations are highly restricted. A list of the currently assigned addresses can be
found in [2]. Following is a sample of some of the most interesting of the
assigned addresses:
224.0.0.1 All Systems on this Subnet
224.0.0.11 Mobile-Agents
224.0.1.16 MUSIC-SERVICE
224.0.1.17 SEANET-TELEMETRY
224.0.1.18 SEANET-IMAGE
224.0.1.23 XINGTV
224.0.1.41 gatekeeper
224.0.1.84 jini-announcement
224.0.1.85 jini-request
224.0.1.115 Simple Multicast
224.0.6.000-224.0.6.127 Cornell ISIS Project
224.0.7.000-224.0.7.255 Where-Are-You
224.0.8.000-224.0.8.255 INTV
224.0.9.000-224.0.9.255 Invisible Worlds
224.0.11.000-224.0.11.255 NCC.NET Audio
224.0.12.000-224.0.12.063 Microsoft and MSNBC
224.0.16.000-224.0.16.255 XingNet
224.0.17.000-224.0.17.031 Mercantile & Commodity Exchange
224.0.17.064-224.0.17.127 ODN-DTV
224.0.18.000-224.0.18.255 Dow Jones
224.0.19.000-224.0.19.063 Walt Disney Company
224.0.22.000-224.0.22.255 WORLD MCAST
224.2.0.0-224.2.127.253 Multimedia Conference Calls
2. Choose an arbitrary address, assuming that the combination of the random address
and
7
Multicast addressing in IPv6 is significantly different; see [4] for details.
8. Distributed Computing, M. Liu
8
3. Obtain a transient multicast address at runtime; such an address can be received
by an application through the Session Announcement Protocol[6].
Option 3 is beyond the scope of this chapter. For our examples and exercises, we will
make use of the static address 224.0.0.1, with an equivalent domain name ALL-
SYSTEMS.MCAST.NET, for processes running on all machines on the local area
network, such as those in your laboratory; alternatively, we may use an arbitrary
address that has not been assigned, such as a number in the range of 239.*.*.* (for
example, 239.1.2.3).
In the Java API, a MulticastSocket object is bound to a port address such as 3456,
and methods of the object allows for the joining and leaving of a multicast address
such as 239.1.2.3.
5.2 Joining a multicast group
To join a multicast group at IP address m and UDP port p, a MulticastSocket object must
be instantiated with p, then the object’s joinGroup method can be invoked specifying the
address m:
// join a Multicast group at IP address 239.1.2.3 and port 3456
InetAddress group = InetAddress.getByName("239.1.2.3");
MulticastSocket s = new MulticastSocket(3456);
s.joinGroup(group);
5.3 Sending to a multicast group
A multicast message can be sent using syntax similar to that for the datagram socket API.
Specifically, a datagram packet must be created with the specification of a reference to a
byte array containing the data, the length of the array, the multicast address, and a port
number. The send method of the MulticastSocket object (inherited from the
DatagramSocket class) can then be invoked to send the data.
It is not necessary for a process to join a multicast group in order to send messages to it,
although it must do so in order to receiver the messages. When a message is sent to a
multicast group, all processes that have joined the multicast group, which may include a
sender, can be expected (but not guaranteed) to receive the message.
The following code segment illustrates the syntax for sending to a multicast group.
String msg = "This is a multicast message.";
InetAddress group = InetAddress.getByName("239.1.2.3");
MulticastSocket s = new MulticastSocket(3456);
s.joinGroup(group); // optional
DatagramPacket hi = new DatagramPacket(msg.getBytes( ),
msg.length( ),group, 3456);
s.send(hi);
Receiving messages sent to a multicast group
9. Distributed Computing, M. Liu
9
A process that has joined a multicast group may receive messages sent to the group using
syntax similar to receiving data using a datagram socket API. The following code
segment illustrates the syntax for receiving messages sent to a multicast group.
byte[] buf = new byte[1000];
InetAddress group = InetAddress.getByName("239.1.2.3");
MulticastSocket s = new MulticastSocket(3456);
s.joinGroup(group);
DatagramPacket recv = new DatagramPacket(buf, buf.length);
s.receive(recv);
Leaving a multicast group
A process may leave a multicast group by invoking the leaveGroup method of a
MulticastSocket object, specifying the multicast address of the group.
s.leaveGroup(group);
Setting the “time-to-live”
The runtime support for a multicast API often employs a technique known as message
propagation, whereby a packet is propagated from a host to a neighboring host in an
algorithm which, when executed properly, will eventually deliver the message to all the
participants. Under some anomalous circumstances, however, it is possible that the
algorithm which controls the propagation does not terminate properly, resulting in a
packet circulating in the network indefinitely. This phenomenon is undesirable, as it
causes unnecessary overhead on the systems and the network. To avoid this occurrence, it
is recommended that a “time to live” parameter be set with each multicast datagram. The
time-to-live (ttl) parameter, when set, limits the count of network links or hops that the
packet will be forwarded on the network.
In the Java API, this parameter can be set by invoking the setTimeToLive method of the
sender’s MulticastSocket, as follows:
String msg = "Hello everyone!";
InetAddress group = InetAddress.getByName("224.0.0.1");
MulticastSocket s = new MulticastSocket(3456);
s.setTimeToLive(1); // set time-to-live to 1 hop – a count appropriate for
// multicasting to local hosts
DatagramPacket hi = new DatagramPacket(msg.getBytes( ),
msg.length( ),group, 3456);
s.send(hi);
The value specified for the ttl must be in the range 0 <= ttl <= 255; an
IllegalArgumentException will be thrown otherwise.
The recommended ttl settings are:
• 0 if the multicast is restricted to processes on the same host
• 1 if the multicast is restricted to processes on the same subnet
• 32 if the multicast is restricted to processes on the same site
• 64 if the multicast is restricted to is processes on the same region
10. Distributed Computing, M. Liu
10
• 128 is if the multicast is restricted to processes on the same continent
• 255 is the multicast is unrestricted
Exampe 1
Figures 2a and 2b showthe coding for a simple example multicast application, presented
here primarily to illustrate the syntax of the API. When run, each receiver process
(Figure 2b) subscribes to the multicast group 239.1.2.3 at port 1234 and listens for a
message. The sender process (Figure 2a), on the other hand, is not a member of the
multicast group (although it can be); it sends a single message to the multicast group
239.1.2.3 at port 1234 before closing its multicast socket.
01. import java.io.*;
02. import java.net.*;
03.
04. /**
05. * This example illustrates the basic syntax for basic multicast.
06. * @author M. L. Liu
07. */
08. public class Example1Sender {
09.
10. // An application which uses a multicast socket to send
11. // a single message to a multicast group.
12. // The message is specified as a command-line argument
13.
14. public static void main(String[ ] args) {
15. MulticastSocket s;
16. InetAddress group;
17. if (args.length != 1)
18. System.out.println
19. ("This program requires a command line argument");
20. else {
21. try {
22. // create the multicast socket
23. group = InetAddress.getByName("239.1.2.3");
24. s = new MulticastSocket(3456);
25. s.setTimeToLive(32); // restrict multicast to processes
26. // running on hosts at the same site.
27. String msg = args[0];
28. DatagramPacket packet =
29. new DatagramPacket(msg.getBytes(), msg.length(),
30. group, 3456);
31. s.send(packet);
32. s.close( );
33. }
34. catch (Exception ex) { // here if an error has occurred
35. ex.printStackTrace( );
36. }
37. }//end else
38. }// end main
39. }// end class
Figure 2a. Example1Sender.java
01. import java.io.*;
11. Distributed Computing, M. Liu
11
02. import java.net.*;
03.
04.
05. /**
06. * This example illustrates the basic syntax for basic multicast.
07. * @author M. L. Liu
08. */
09. public class Example1Receiver {
10.
11. // An application which joins a multicast group and
12. // receives a single message sent to the group.
13. public static void main(String[ ] args) {
14. MulticastSocket s;
15. InetAddress group;
16. try {
17. // join a Multicast group and send the group salutations
18. group = InetAddress.getByName("239.1.2.3");
19. s = new MulticastSocket(3456);
20. s.joinGroup(group);
21. byte[] buf = new byte[100];
22. DatagramPacket recv = new DatagramPacket(buf, buf.length);
23. s.receive(recv);
24. System.out.println(new String(buf));
25. s.close( );
26. }
27. catch (Exception ex) { // here if an error has occurred
28. ex.printStackTrace( );
29. }
30. }// end main
31. }// end class
Figure 2b. Example1Receiver.java
Exampe 2
As another illustration of the Java multicast API, we present an example where each
process in a multicast group sends a message, and, independently, each process also
displays all of the messages it receives as a member of the multicast group.
Example2SenderReceiver.java (Figure 3a) is the code for the application. For each
process to receive all of the messages, each process must be ready to receive prior to the
sending of any message. Hence in the main thread the process is kept waiting until it is
time for the process to send its message. Meanwhile, a separate thread, of the
ReadThread class (Figure 3b), is spawned to receive and echo the messages.
01. // This program illustrates sending and receiving using mutlicast
02. import ReadThread;
03. import java.io.*;
04. import java.net.*;
05. /**
06. * This example illustrates using multithreads to send and
07. * receive multicast in one process.
08. * @author M. L. Liu
09. */
12. Distributed Computing, M. Liu
12
10. public class Example2SenderReceiver{
11.
12. // An application which uses a multicast socket to send
13. // a single message to a multicast group, and a separate
14. // thread which uses a separate multicast socket to receive
15. // messages sent to the same group.
16. // Three command-line arguments are expected:
17. // <multicast IP address>,<multicast port>,<message>
18.
19. public static void main(String[ ] args) {
20.
21. InetAddress group = null;
22. int port = 0;
23. MulticastSocket socket = null;
24. String characters;
25. byte[] data = null;
26.
27. if (args.length !=3)
28. System.out.println("Three command-line arguments are expected.")
29. else {
30. try {
31. group = InetAddress.getByName(args[0]);
32. port = Integer.parseInt(args[1]);
33. characters = args[2];
34. data = characters.getBytes();
35. DatagramPacket packet =
36. new DatagramPacket(data, data.length, group, port);
37. Thread theThread =
38. new Thread(new ReadThread(group, port));
39. theThread.start();
40. System.out.println("Hit return when ready to send:");
41. InputStreamReader is = new InputStreamReader(System.in);
42. BufferedReader br = new BufferedReader(is);
43. br.readLine();
44. socket = new MulticastSocket(port);
45. socket.send(packet);
46. socket.close( );
47. }
48. catch (Exception se) {
49. se.printStackTrace( );
50. }
51. } //end else
52. } // end main
53.
54. } // end class
Figure 3a. Example2SenderReceiver.java
01. import java.net.*;
02. import java.io.*;
03. /**
04. * This class is to be used with Example2SenderReceiver for
05. * reading multicast messages while the main thread sends
06. * a multicast message. Each message read is echoed on the
07. * screen.
08. * @author M. L. Liu
13. Distributed Computing, M. Liu
13
09. */
10. class ReadThread implements Runnable {
11.
12. static final int MAX_LEN = 30;
13. private InetAddress group;
14. private int port;
15.
16. public ReadThread(InetAddress group, int port) {
17. this.group = group ;
18. this.port = port;
19. }
20.
21. public void run( ) {
22.
23. try {
24.
25. MulticastSocket socket = new MulticastSocket(port);
26. socket.joinGroup(group);
27. while (true) {
28. byte[ ] data = new byte[MAX_LEN];
29. DatagramPacket packet =
30. new DatagramPacket(data, data.length, group, port);
31. socket.receive(packet);
32. String s = new String(packet.getData());
33. System.out.println(s);
34. } //end while
35. }
36. catch (Exception exception) {
37. exception.printStackTrace( );
38. }
39. } // end run
40.
41. } //end class
Figure 3c. ReadThread.java
The Java basic multicast API and similar mechanisms can be employed to provide
support for an application’s service logic. Note that an application may use a
combination of unicast and multicast for its IPC; the details of the service logic
application should be transparent to the application logic and presentation logic.
An application that makes use of multicast is sometimes called a multicast-aware
application.
For those who are interested in a sample multicast chatroom application, please see
reference [7].
6. Reliable Multicast API
The Java multicast API that we have explored in this chapter is an extension of the
datagram socket API. As a result, it shares a key characteristic of datagrams: unreliable
14. Distributed Computing, M. Liu
14
delivery. In particular, messages are not guaranteed to be delivered to any of the
receiving processes. Hence, the API provides unreliable multicast8
.
As mentioned, there are applications for which unreliable multicast is unacceptable. For
such applications, there exist a number of packages available that provide reliable
multicast API, some of which are listed below:
• The Java Reliable Multicast Service (JRM Service) [8, 9] is a package which
enhances the Java basic multicast API by providing the capabilities for a receiver
to repair multicast data that are lost or damaged, as well as security measures to
protect data privacy.
• The Totem system [10], developed by the University of California, Santa
Barbara, “provides reliable totally ordered delivery of messages to processes
within process groups on a single local-area network, or over multiple local-area
networks interconnected by gateways.”
• TASC’s Reliable Multicast Framework (RMF)[11] provides reliable and send-
ordered (FIFO) multicast.
The use of these packages is beyond the scope of this book. Interested readers are
encouraged to consult the references for further details.
Summary
This chapter provides an introduction to the use of group communication in distributed
computing. Topics covered include:
• Unicast vs. multicast: unicast is one-to-one communication, while multicast is
one-to-many communication.
• An archetypal multicast API must provide operations for joining a multicast
group, leaving a multicast group, sending to a group, and receiving multicast
messages sent to a group.
• Basic multicast is connectionless and unreliable; in an unreliable multicast
system, messages are not guaranteed to be safely delivered to each participant.
o A reliable multicast system ensures that each message sent to a multicast
group is delivered correctly to each participant. Reliable multicasts can be
further categorized by the order of message delivery they support:
l Unordered multicast may deliver the messages to each participant
in any order.
l FIFO multicast preserves the order of messages sent by each host.
l Causal multicast preserves causal relationships among the
messages.
l Atomic multicast delivers the messages to each participant in the
same order.
• IP multicast addressing uses a combination of a Class D address and a UDP port
number. Class D IP addresses are managed and assigned by IANA. A multicast
application may use a static Class D address, a transient address obtained at run
time, or an arbitrary unassigned address.
8
In your exercises, if you run your processes on one host or on hosts on one subnet, you are not likely to
observe any loss of messages or scrambling in the delivery order of the messages. These anomalies are
more likely when the participating hosts are remotely connected.
15. Distributed Computing, M. Liu
15
• The Java basic multicast API provides unreliable multicast. A
MulticastSocket is created with the specification of a port number. The
joinGroup and leaveGroup methods of the MulticastSocket class, a subclass of
DatagramSocket, can be invoked to join or leave a specific multicast group; and
the send and receive methods can be invoked to send and receive a multicast
datagram. The DatagramPacket class is also needed to create the datagrams.
• There are existing packages that provide reliable multicast, including the Java
Reliable Multicast Service (JRM Service).
Exercises
1. Suppose a multicast group currently is participated by two processes: P1 and P2.
Suppose P1 multicasts m11 then m12, P2 multicasts m21 then m22. Further assume
that no message is lost in delivery.
a) Theoretically, how many different orders can all four messages be
delivered to each process if the messages are unrelated?
b) Theoretically ow many different orders can all the messages be delivered
to each process if the messages are casually related as m11 -> m21 -> m12 ->
m22
c) What are the possible orders of message delivery of each process if the
messages are unrelated and the multicast is (i) FIFO, (ii) causal, and (iii)
atomic?
d) What are the possible orders of message delivery of each process if the
messages are causally related as m11 -> m21 -> m12 -> m22 and the
multicast is (i) FIFO, (ii) causal, and (iii) atomic?
2. Suppose the following events take place in chronological order, in a multicast
group participated by three processes P1, P2, and P3:
P1 multicasts m1.
P2 responds to m1 by multicasting m2.
P3 multicasts m3 spontaneously.
P1 responds to m3 by multicasting m4.
P3 responds to m2 by multicasting m5.
P2 multicasts m6 spontaneously.
For each of the following scenarios, state in the corresponding entry in the table
below whether it is permitted or not by that mode of multicast.
a. All processes are delivered m1, m2, m3, m4, m5, m6, in that order
b. P1 and P2 are each delivered m1, m2, m3, m4, m5, m6.
P3 is delivered m2, m3, m1, m4, m5, m6.
c. P1 is delivered m1, m2, m5, m3, m4, m6
P2 is delivered m1, m3, m5, m4, m2, m6
P3 is delivered m3, m1, m4, m2, m5, m6
d. P1 is delivered m1, m2, m3, m4, m5, m6
P2 is delivered m1, m4, m2, m3, m6, m5
16. Distributed Computing, M. Liu
16
P3 is delivered m1, m3, m6, m4, m2, m5.
e. P1 is delivered m1, m2, m3, m4, m5, m6
P2 is delivered m1, m3, m2, m5, m4, m6
P3 is delivered m1, m2, m6, m5, m3, m4.
f. P1 is delivered m2, m1, m6
P2 is delivered m1, m2, m6
P3 is delivered m6, m2, m1
g. No message is delivered to any of the processes.
scenario Reliable multicast FIFO multicast Causal multicast Atomic multicast
a.
b.
c.
d.
e.
f
g
3. This exercise is based on Example1 presented in this chapter.
a) Compile the Example1*.java programs, then execute them in each of the
following sequences, describe and explain the outcome of each:
i. Start two or more Receiver processes first, then a Sender process
with a message of your choice.
ii. Start a Sender process with a message of your choice first, then
two or more receiver processes.
b) Based on Example1Receiver.java, create a program
Example1aReceiver.java which joins a multicast group of a different IP
address (e.g., 239.1.2.4) but the same port. Compile
Example1bReceiver.java. Start two or more Example1Receiver processes
first, then a Example1a Receiver process, and then a Sender process with a
message of your choice. Does the Example1bReceiver process receive the
message? Describe and explain the outcome.
c) Based on Example1Receiver.java, create a program
Example1bReceiver.java which joins a multicast group of the same IP
address but a different port. Compile Example1bReceiver.java. Start two
or more Example1Receiver processes first, then a Example1bReceiver
process, and then a Sender process with a message of your choice. Does
the Example1bReceiver process receive the message? Describe and
explain the outcome.
d) Based on Example1Sender.java, create a program
Example1SenderReceiver.java which joins the multicast group, sends a
message, then listens for (receives) a multicast message before closing the
multicast socket and exiting. Compile the program, then start two or more
Receiver processes before starting the SenderReceiver process. Describe
the outcome. Turn in the listing of SenderReceiver.java.
17. Distributed Computing, M. Liu
17
e) Based on Example1Sender.java, create a program Example1bSender.java
which sends a message to the multicast address of the program
Example1bReceiver.java. Compile the program, then start an
Example1Receiver process, an Example1bReceiver process, an
Example1Sender process, then an Example1bSender process. Describe
and explain the message(s) received by each process.
f) Based on Example1Receiver.java and Example1bReceiver.java, create a
program Example1cReceiver.java which uses two threads (including the
main thread). Each thread joins one of the two multicast groups and
receive then display one message before leaving the group. You may find
the sample ReadThread.java useful.
Compile and run Example1cReceiver.java, then start an Example1Sender
process, followed by an Example1bSender process. Does the receiver
process display both messages? Turn in the program listings of
Example1cReceiver.java and its thread class.
4. This exercise is based on Example2 presented in this chapter.
a) Compile Example2SenderReceiver.java, then start two or more processes of the
program, specifying with each a unique message. Example commands are as
follows:
java Example2SenderReceiver 239.1.2.3 1234 msg1
java Example2SenderReceiver 239.1.2.3 1234 msg2
java Example2SenderReceiver 239.1.2.3 1234 msg3
In this example, each of the three processes should display on screen the messages
msg1, msg2, and msg3.
Be sure to start all processes before allowing each one to send its message.
Describe the run outcomes.
b) Modify Example2SenderReceiver.java so that each process sends out its message
10 times. Compile and run. Describe the run outcomes and hand in the program
listings.
5. Write your own multicast application.
Write an application such that multiple processes use group communication to
carry out an election. There are two candidates: Jones and Smith.
Each process multicasts its vote in a message that identifies itself and its vote.
Each process keeps track of the vote count for each candidate, including its own.
At the end of the election (when everyone in the group has voted), each process
tallies the votes independently and display the outcome on its screen (e.g., Jones
10, Smith 5).
Hand in the listings of your application and answer these questions:
a. How does your design allow the participants to join a multicast group?
b. How does your design synchronize the onset of the election so that every
process is ready to receive any vote cast by a member in the group?
c. In your run, do the independent tallies agree with each other? Can you
assume that the tallies will always agree with each other? Explain.
18. Distributed Computing, M. Liu
18
References
1. Java 2 Platform SE v1.3.1: Class MulticastSocket,
http://java.sun.com/j2se/1.3/docs/api/java/net/MulticastSocket.html
2. IANA multicast-addresses, http://www.iana.org/assignments/multicast-addresses
3. RFC3171, IANA Guidelines for IPv4 Multicast Address Allocation, http://www.rfc-
editor.org/rfc/rfc3171.txt.
4. rfc2375 - IPv6 Multicast Address Assignments,
http://www.faqs.org/rfcs/rfc2375.html
5. Cisco - Multicast Routing,
http://www.cisco.com/warp/public/614/17.html
6. rfc2974 - Session Announcement Protocol,
http://www.faqs.org/rfcs/rfc2974.html
7. Merlin Hughes, Multicast the chatwaves - JavaWorld October 1999,
http://www.javaworld.com/javaworld/jw-10-1999/jw-10-step_p.html
8. Phil Rosenzweig, Miriam Kadansky, and Steve Hanna, The Java Reliable
Multicast Service: A Reliable Multicast Library
http://www.sun.com/research/techrep/1998/smli_tr-98-68.pdf
9. Hans-Peter Bischof, JRMS Tutorial , Department of Computer Science,
Rochester Institute of Technlogy.
10. Robust Distributed Systems for Real-Time Applications,
http://alpha.ece.ucsb.edu/project_totem.html.
11. Reliable Multicast Framework (RMF),
http://www.tascnets.com/newtascnets/Software/RMF/, Litton TASC.