Documente Academic
Documente Profesional
Documente Cultură
E7310-Multicast-2/Comnet 1
Multicast in local area networks and IGMP
E7310-Multicast-2/Comnet 2
Multicast addresses
32 bits
E7310-Multicast-2/Comnet 3
Sending multicast packets
E7310-Multicast-2/Comnet 4
Multicast in broadcast networks
E7310-Multicast-2/Comnet 5
Internet Group Management Protocol (IGMP)
E7310-Multicast-2/Comnet 7
IGMPv3 adds selective reception
from sources within a group
Type=0x11 Max Resp Time Checksum
Group Address
Reserved + Flags Number of Sources
Source Address
Source Address
Host Source Address
Router
Membership Query (type 0x11)
Variants:
• General query (GA=0 and number of sources=0)
• Group specific query (GA≠0 and number of sources=0)
• Group and source specific query (GA≠0 and number of sources>0)
V3 Membership Report (type 0x22)
Can exclude listed sources within a group or include only listed RFC
sources within a group 3376
E7310-Multicast-2/Comnet 8
PIM – Protocol Independent Multicast
E7310-Multicast-2/Comnet 9
PIM – Protocol Independent Multicast
E7310-Multicast-2/Comnet 10
PIM Dense Mode
RFC
DVMRP: Distance Vector Multicast Routing Protocol 3973
E7310-Multicast-2/Comnet 11
PIM-DM implementation of RPF
Receive multicast packet P from
source S to group G on interface U
no
M is a cache for prune messages:
For all n where M(n,S,G) ≠ 1: M(n, S, G) = 1 if a prune(S,G) has been
Forward P on interface n received on interface n
Least recently used entries may be dropped
E7310-Multicast-2/Comnet 12
PIM-DM – Pruning
A B R
prune
S C R D
prune
prune
E F
prune
G R = receiver
E7310-Multicast-2/Comnet 13
PIM-DM – Grafting
S C R D
graft
E F
graft
G R (new!) R = receiver
E7310-Multicast-2/Comnet 14
PIM-DM – Pruning on broadcast networks
member
E7310-Multicast-2/Comnet 15
PIM-DM – Resolving multicasts received
on multiple path
S
multicast
B
A and C see prune(S,G) if dother router < dmy distance:
packets for (S,G) prune interface
A from another router C
assert(S,G,dA) assert(S,G,dC)
E7310-Multicast-2/Comnet 16
PIM Sparse Mode
E7310-Multicast-2/Comnet 18
Messages
• Join (*, G)
– To join a group in order to receive traffic from all sources of the group
– Adds a branch to a shared tree
• Join (S, G)
– To receive traffic from a given source of the group
– Adds a branch to a source-specific tree
• Prune (*, G)
– Prunes a branch from the shared tree
• Prune (S,G, RP)
– Prunes a source from the shared tree (if the same packets are received on a source-
specific tree as well)
• Register
– To register a sender and send an encapsulated packet to the multicast group
• Register stop
– To ask a sender to stop sending Register messages (and instead use the multicast tree)
E7310-Multicast-2/Comnet 19
PIM-SM example (1)
A B C D E
F G H I J
RP
1.join (*,G)
K L M N
Receiver
E7310-Multicast-2/Comnet 20
PIM-SM example (2)
A B C D E
5.join (*,G)
4.register-stop (to M)
F G H I J
RP
1.join (*,G) 3.join (S,G) (to M)
2.register (to RP)
K L M N
Receiver Sender
E7310-Multicast-2/Comnet 21
PIM-SM example (3)
A B C D E
F G H I J
prune
prune (S, G, RP) RP
join
(S,G)
K L M N
Receiver Sender
E7310-Multicast-2/Comnet 22
PIM-SM example (4)
F G H I J
RP
(S,G)
K L M N
Receiver Sender
E7310-Multicast-2/Comnet 23
Selection of Rendezvous Point
E7310-Multicast-2/Comnet 24
PIM-SM can interoperate with DVMRP and
other multicast protocols
• PIM Multicast Border Routers (PMBR) connect PIM-SM with
other multicast protocols
external receivers
external group Join/Prune (*, *, RP)
Register (G, External)
PMBR Register stop
PMBR
RP
RP
PMBR
E7310-Multicast-2/Comnet 25
Considerations
E7310-Multicast-2/Comnet 26
Other variants (based on PIM-SM)
E7310-Multicast-2/Comnet 28
MOSPF – Multicast extensions to OSPF
E7310-Multicast-2/Comnet 29
MOSPF can be deployed gracefully
E7310-Multicast-2/Comnet 30
An MOSPF Routing Domain
S1 S2
128.186.1.0/24 128.186.2.0/24
3 3
10
A B
1 1
128.186.3.0/24 128.186.6.0/24
1 1
1
10 F 3
C D
3 G1
10 10 128.186.5.0/24
G1
E G
3 128.186.4.0/24 3
E.g. G1 = 226.1.7.6
G2 G1 Group m-LSA created and flooded when
e.g. host on 128.186.4.0 joins G1.
E7310-Multicast-2/Comnet 31
A Group-membership-LSA is created and flooded
when a user joins a multicast group using IGMP
LS Type 6 = Group Membership LSA
32 bits
6=Group Membership LSA LS age Options=E LS type=6
Common LS header
Advertised multicast group Link state ID = 226.1.7.6 (group G1)
MOSPF designated router Advertising router = 128.186.4.1 (router E)
LS sequence number = 0x80000001
LS checksum length
1=Router, 2=Network Referenced LS type = 2 (network)
Originating router's router ID Referenced Link State ID = 128.186.4.1
E7310-Multicast-2/Comnet 32
MOSPF calculates shortest-path trees on
demand • A separate tree is calculated for each combination of
S1 group and source
128.186.1.0/24 • Result is stored in Multicast Forwarding Cache Entry
3 • Hierarchy reduces the number of calculations
A 1
B
B 128.186.6.0/24
B 128.186.3.0/24 1
1
1 1
F 3
C D
3 G1
B 10 10 128.186.5.0/24
G1
E G
A 3 128.186.4.0/24 3
• Lines with label A are pruned when
G1 G1 removing redundant shortest paths.
• Lines with label B are pruned when
removing links that do not lead to G1
E7310-Multicast-2/Comnet 33
On demand route calculations use Dijkstra’s
shortest path first algorithm
E7310-Multicast-2/Comnet 34
The Multicast Forwarding Cache Entry
stores multicast path routing info
• For each source and group:
E7310-Multicast-2/Comnet 35
Inter-area multicast forwarders summarize
membership info to the backbone
S1 • Area-border routers are called inter-
193.15.6.0/24 area multicast forwarders in MOSPF
Backbone A • These summarize the memberships
193.18.3.0/24
of their area (e.g. router C lists
membership groups G1 and G2) to the backbone
B
Area C G1, G2
0.0.0.2
• The inter-area multicast forwarder
193.16.1.0/24
193.16.3.0/24
Area does not advertise/forward
D 0.0.0.1
membership info from the backbone
G1 E
to their area
S2 G2 – Non-backbone areas have no
knowledge of group members
outside of their own area.
E7310-Multicast-2/Comnet 36
For forwarding traffic to the backbone, the inter-
area multicast forwarders are members of all
groups
S1 • Inter-area multicast forwarders
193.15.6.0/24 recieve traffic from all groups in their
Backbone A
areas (e.g. B from S2)
– indicated with a W-bit (wildcard)
membership 193.18.3.0/24
of all groups in the router LSA
B
Area C • The backbone knows the receivers
0.0.0.2
193.16.1.0/24
Area
193.16.3.0/24
and forwards to the following inter-
D 0.0.0.1 area multicast forwarder (e.g. traffic
G1 E
from S2 to router C)
S2 G2 • Also inter-AS multicast forwarders
(=external routers) are considered
as member of all groups
E7310-Multicast-2/Comnet 37
Two level hierarchy aggregates both
S1 à G1 sources and group addresses
S1
193.15.6.0/24 • In aggregation some info is lost
Area ⇒ sometimes multicasts are sent
Backbone A 0.0.0.0 needlessly: C à G: to G1
193.18.3.0/24 • Presence of sources is reported
B C
by summary-LSA with MC-bit set:
Area
Area F to H à S3+S4 entry
193.16.3.0/24
0.0.0.2 0.0.0.1
193.16.1.0/24
E7310-Multicast-2/Comnet 39
MBone – an overlay multicast Internet
E7310-Multicast-2/Comnet 40
MBone overlay is based on
workstations running DVMRP
128.5.2/24
W2 S3
S1
G1 128.5.1/24
192.7.1/24
E7310-Multicast-2/Comnet 41
Experimental routing protocols have
been developed for MBone
E7310-Multicast-2/Comnet 42
DVMRP – Distance Vector Multicast
Routing Protocol
E7310-Multicast-2/Comnet 43
DVMRP – Distance Vector Multicast Routing
Protocol
• First multicast protocol in the Internet (1988)
• Distance vector routing protocol similar to RIP
– Except that sources are like destinations in RIP
• Routers maintains separate multicast routing tables
• Uses the reverse-path-forwarding (RPF) algorithm with pruning
• Nodes exchange
– Distance in hops (reverse path distance)
– IP address and mask of source
• Tunnels explicitly configured with
– Destination router
– Cost
– Threshold
RFC
1075
E7310-Multicast-2/Comnet 44
DVMRP is used for multicast
routing in the MBone
• DVMRP messages are IGMP messages (IP protocol=2=IGMP, TTL=1)
DVMRP header:
Version 3 presented here
Type=0x13 Code Checksum
Minor vers Major vers draft-ietf-idmr-dvmrp-v3-11
Reserved
=0xff =3
Router Router
DVMRP Probe [Code=1] – neighbor discovery
DVMRP Report [Code=2] – route exchange
DVMRP Prune [Code=7] – cut a branch of multicast tree
DVMRP Graft’ [Code=8] – add a branch of multicast tree
DVMRP Graft Ack [Code=9] – ack of graft reception
E7310-Multicast-2/Comnet 45
Probes are used for neighbor discovery
E7310-Multicast-2/Comnet 46
DVMRP uses the concept of dependent
downstream routers
• DVMRP uses the route exchange as a mechanism for
upstream routers to determine if any downstream routers
depend on them for forwarding from particular source
networks
– Implemented with ”poison reverse”
– If a downstream router selects an upstream router as the best next
hop to a source, it echoes back the route with a metric = original
metric + inf
E7310-Multicast-2/Comnet 47
Route reports are used to build the source
based trees
DVMRP Report
Router Router
Each DVMRP router periodically (60s) broadcasts to its neighbors
- the list of pairs (source, metric) Known
- source aggregation according to CIDR may be used neighbor
yes
• The receiving MC router calculates the previous hop
on each sources multicast path = the DVMRP router that
reports shortest distance from the source
• If equal distance ⇒ choose smallest IP address
E7310-Multicast-2/Comnet 48
Reports are processed:
Router
DVMRP Report Other interfaces
[S, metric]
Adjusted metric=metric+interface cost
If Metric<inf & Adjust metric≥inf
Set adjusted metric to inf
If Route is new and Adj metric<inf
Add route to RT
Delete prune state of more general route
Elseif Route exists
If Received metric < inf
Check if Designated forwarder status for (S,G) changes
If Adjusted metric > existing metric
From same neighbor: update metric, Schedule flash update for route
Elseif Adj.metric < existing metric
Update metric for the route
If sender was different, update RT, schedule flash updates
Elseif Adj.metric = existing metric: refresh route ...
Elseif Received metric =inf ...
Elseif Inf < Received Metric < 2 * inf ...
E7310-Multicast-2/Comnet 49
The multicast algorithm of DVMRP is based
on Reverse Path Forwarding (RPF)
Router
Multicast packet [from=S, to=G] “Reverse Path Forwarding check”
Received on interface u
No
u=RPFinterface(S,G) X
upstream Yes Multicast packets
downstream
E7310-Multicast-2/Comnet 50
List of dependent neighbors is used to
minimize the multicast tree
Router
Multicast packet [from=S, to=G]
Received on interface u
No
u=RPFinterface(S,G) X
Cache = [S,G]:(u,list)
Prune [S, G, lifetime] Multicast packet
Empty list
Yes No
Remove Cache Entry
• Initially list may contain all multicast interfaces except the upstream interface
• Downstream address is removed from the list if
– It is a leaf network and G is not in IGMP DB for this phys. network
– Downstream node has selected another designated forwarder
– Prune received from all dependent neighbors on this interface
E7310-Multicast-2/Comnet 51
Prunes minimize the multicast tree
u Upstream Multicast packets Dependent Leaf
Router Prune [S,(netmask),G, Lifetime] Router network
E7310-Multicast-2/Comnet 52
Grafts are used to grow the tree when a new
member joins the group
Router Router
Graft [S, G]
Upstream router
for [S,G] Graft Ack
E7310-Multicast-2/Comnet 53
On probe timeout caches are flushed
E7310-Multicast-2/Comnet 54
Route hold-down is a state prior
to deleting the route
• Routes expire on report timeout or when an infinite metric is
received
• An alternate route (that in RIP caused temporary loops) may
exist
• Routers continue to advertise the route with inf metric for 2 report
intervals – this is the hold-down period
• All forwarding cache entries for the route are flushed
• During hold-down, the route may be taken back, if
– metric <inf, and
– metric = SAME, and
– received from SAME router
E7310-Multicast-2/Comnet 55
Summary of Multicast Protocols for the
Internet
Tree type Shared tree Source based trees
• For shared tree protocols an additional step of finding the Core or Rendezvous
Point must be performed.
• Directories are useful on service management level.
E7310-Multicast-2/Comnet 56
Questions about multicast
E7310-Multicast-2/Comnet 57