IP multicast

Download Report

Transcript IP multicast

Multicasting
References
 Note: Some slides come from the slides
associated with this book:
“Mastering Computer Networks: An Internet Lab
Manual”,
J. Liebeherr, M. El Zarki, Addison-Wesley,
2003.
 The Kurose & Ross textbook on computer
networking
Multicasting
 Multicast is an operation that sends a
single message from one process to each of
the members of a group of processes.
 Ideally this is done in such a way that the
membership of the group is transparent to
the sender.
Multicasting
 Multicast communications refers to one-to-
many or many-to-many communications.
Unicast
Broadcast
Multicast
Applications Using Multicasting
 For replication
 Streaming continuous media
 Example: The transfer of the audio, video and text of a
live lecture to a set of distributed lecture participants
 One sender, multiple receivers
 Shared data applications
 Example: whiteboard, teleconferencing
 Multiple senders, multiple receivers
 Web cache updates
 Email distribution lists
 Content distribution
 Software distribution
 Interactive gaming
Approaches to Multicasting
 One-to-all unicast
 Sender uses a separate unicast transport (e.g., TCP or UDP)
connection to each of the receivers.
 If using TCP, a connection is made between the sender and a
receiver. The data is sent and the connection is then
terminated. This is done for the sender and each of the
receivers.
routers
forward unicast
datagrams
multicast receiver (red)
not a multicast receiver (red)
Approaches to Multicasting
 Application-level multicasting
 This also uses unicast transmission.
 The sender transmits a copy to a “small” number of
receivers, which then make copies themselves and forward
these copies to other receivers which may then duplicate
and forward copies to yet additional receivers.
Approaches to Multicasting
 Explicit multicast
 Provide explicit multicast support at the network layer.
 A single datagram is transmitted from the sending host.
 This datagram (or copy) is then replicated at a network
router whenever it must be forwarded on multiple
outgoing links in order to reach the receivers.
 The data is forwarded in a tree-like fashion. The
discovery of the tree is dynamic. Lots of routing
algorithms.
 There is an Internet protocol called IP multicast for
this.
• An IP address represents a group of processes
Approaches to Multicast
Explicit Multicast
Multicast
routers (red) duplicate and
forward multicast datagrams
IP Multicast Communication
 IP multicast is built on top of IP.
 IP multicast allows the sender to transmit a
single IP packet to a set of computers that
form a multicast group.
 Being a member of a multicast group allows a
computer to receive IP packets sent to the
group.
 IP multicast is available only via UDP
 There is no multicast TCP
IP Multicast Communication
 IP multicast works as follows:
Multicast groups are identified by IP addresses
in the range 224.0.0.0 - 239.255.255.255 (class
D address)
 Every host can join and leave a multicast group
dynamically

– Server does not have to know all the receivers
– Anyone can send to the group

Routers forward multicast datagrams to hosts
that have “joined” the multicast group.
• Anyone can join a group
IP Multicast Communication
#define MULTICASTADDR "229.8.2.4"
#define PORTNUMBER 5824
if ((socketDesc = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { perror("open
error on socket");
exit(1);
}
myAddr.sin_family = AF_INET;
myAddr.sin_addr.s_addr = htonl(INADDR_ANY);
myAddr.sin_port = htons(0); /* The zero says bind to any port */
if (bind(socketDesc, (struct sockaddr *) &myAddr, sizeof(myAddr)) < 0) {
perror("bind error"); exit(1); }
IP Multicast Communication
/* And build MULTICAST address */
destinationAddr.sin_family = AF_INET;
destinationAddr.sin_addr.s_addr =htonl(inet_addr(MULTICASTADDR));
destinationAddr.sin_port = htons(PORTNUMBER);
/* Set the socket to permit multicasts on the local LAN */
if (setsockopt(socketDesc, IPPROTO_IP, IP_MULTICAST_TTL,
&limitLanFlag, sizeof(limitLanFlag)) != 0) {
perror("setsockopt error"); exit(1); }
IP Multicast Communication
/* Broadcast message */
strcpy(outMessageBuf, "Hello world");
if (sendto(socketDesc, outMessageBuf, strlen(outMessageBuf)+1, 0,
(struct sockaddr *)&destinationAddr, sizeof(destinationAddr)) < 0) {
perror("socket send error"); exit(1); }
IP Multicast Communication
/* And wait for up to 5 seconds for replies to come back */
/* Set timeOut value for receive to 5 seconds */
timeOut.tv_sec = 5L;
timeOut.tv_usec = 0L;
/* Read responses from hosts accepting the multicast until a read finally
times-out. */
FD_ZERO(&readReadySet);
FD_SET(socketDesc,&readReadySet);
msgCount = 0;
while (select(socketDesc+1,&readReadySet, NULL, NULL, &timeOut) > 0)
{ …….}
Question: What is the networking support needed?
IP Multicast Communication
 IGMP: “signaling” protocol to establish,
maintain, remove groups on a subnet.
 Two new operations
Join-IP-Multicast-Group(group-address,
interface)
 Leave-IP-Multicast-Group(group-address,
interface)

Joining a Multicast Group
 Host informs local multicast(mcast) router of
desire to join group:
 Local router interacts with other routers to
receive mcast datagram flow
 many protocols (e.g., DVMRP, MOSPF, PIM)
IGMP
IGMP
wide-area
multicast
routing
IGMP
IGMP: Internet Group Management
Protocol
 The host sends IGMP report when application joins
mcast group
 The host need not explicitly “unjoin” group
when leaving
 The router sends IGMP query at regular intervals
 host belonging to a mcast group must reply to
query
query
report
Building Mcast Trees
Find a tree (or
trees) connecting routers having local
mcast group members
 Problem Statement:
 Approaches:
 Source-based tree
• One tree per source
• Shortest path trees
• Reverse path forwarding

Group-shared tree
• Group uses one tree
• Minimal spanning (Steiner): NP Complete Problem
• center-based trees
Problems with IP Multicast
Communication
 Security and privacy issues
 If the reason to use IP multicast is replication then you want to
make sure that the multicast is reliable.




Not all multicast applications need strong reliability of the type
provided by TCP. Some can tolerate reordering, delay, etc
Reliability needs application support. This suggests that applications
may need to send their acknowledgemens.
Ack-implosion if all destinations ack at once
We will discuss reliability later
 Routers need to maintain state
 A bad link affects a subgroup
 IP multicast is probably sufficient for enterprise computing but
not Internet computing
 We will discuss more on reliable multicast later which does not
necessarily depend on using IP Multicast communication.
Summary
 This section briefly summarizes issues in
multicasting.