Skip to content

Commit 042bd39

Browse files
committed
PIM: examples: document the IPv4 pim examples (dm, sm, iptv)
The IPv4 PIM examples had no explanatory documentation (just a stale ANSA header and an unhelpful description). Add a README to each example folder describing the scenario, topology, what it demonstrates, and how to run it: dm (PIM-DM flood-and-prune), sm (PIM-SM with a static RP, four join/send-ordering scenarios), and iptv (a 4x4 PIM mesh over OSPF run under both PIM-SM and PIM-DM). Also add a short network doc-comment to each .ned, and give the dm config a meaningful description string. No changes to simulation behavior -- fingerprints unchanged.
1 parent abcaaa9 commit 042bd39

7 files changed

Lines changed: 109 additions & 2 deletions

File tree

examples/pim/dm/README

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
PIM-DM (Dense Mode) Example
2+
===========================
3+
4+
This example demonstrates the flood-and-prune behavior of PIM-DM
5+
(Protocol Independent Multicast - Dense Mode, RFC 3973).
6+
7+
Three multicast routers R1, R2 and R3 run PIM-DM, connecting two sources
8+
(Source1, Source2) and a receiver host (Host2). Source1 sends to group
9+
226.1.1.1, which Host2 joins; Source2 sends to group 226.2.2.2, which
10+
nobody joins.
11+
12+
Dense mode initially floods each stream to every router (broadcast), then
13+
prunes the branches that have no downstream listeners: 226.2.2.2 is pruned
14+
everywhere (it has no receiver), while 226.1.1.1 is delivered along the
15+
branch toward Host2 and pruned on the other branches.
16+
17+
To run the example:
18+
19+
inet -u Cmdenv -c General

examples/pim/dm/omnetpp.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[General]
22
sim-time-limit = 300s
3-
description = "PIM Final Test"
3+
description = "PIM-DM flood-and-prune (dense mode)"
44
network = pimDMFinal
55

66
**.hasPim = true

examples/pim/dm/pimDMFinal.ned

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ import inet.node.inet.MulticastRouter;
1717
import inet.node.inet.StandardHost;
1818

1919

20+
//
21+
// Demonstrates PIM-DM (Dense Mode) flood-and-prune across three multicast
22+
// routers (R1/R2/R3): Source1 feeds the group Host2 joins, Source2 feeds a group
23+
// with no listeners (pruned everywhere). See omnetpp.ini for the scenario.
24+
//
2025
network pimDMFinal
2126
{
2227
submodules:

examples/pim/iptv/Network.ned

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ import inet.node.inet.StandardHost;
1414

1515

1616
//
17-
// A generated network with grid topology.
17+
// A 4x4 mesh of PIM multicast routers (R00..R33) with a server and a client,
18+
// used to distribute an IPTV-style multicast stream. OSPF provides the unicast
19+
// underlay for PIM's RPF. The omnetpp.ini runs it under both PIM-SM and PIM-DM.
1820
//
1921
network Network
2022
{

examples/pim/iptv/README

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
PIM IPTV Example
2+
================
3+
4+
This example models IPTV-style multicast distribution over a 4x4 mesh of
5+
PIM routers (R00..R33). OSPF runs as the unicast underlay, so that PIM's
6+
RPF (Reverse Path Forwarding) checks use dynamically learned routes rather
7+
than static ones.
8+
9+
A 'server' streams to multicast group 239.0.0.11 and a 'client' joins it;
10+
the multicast tree is built across the mesh toward the client.
11+
12+
The [General] section is abstract; the same scenario runs under two PIM
13+
modes:
14+
15+
16+
1. PIM_SM
17+
---------
18+
19+
Sparse mode, with the Rendezvous Point located at R10 (192.168.13.1).
20+
21+
22+
2. PIM_DM
23+
---------
24+
25+
Dense mode (flood-and-prune).
26+
27+
28+
To run, e.g.:
29+
30+
inet -u Cmdenv -c PIM_SM

examples/pim/sm/PIM-SM.ned

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ import inet.node.inet.MulticastRouter;
1717
import inet.node.inet.StandardHost;
1818

1919

20+
//
21+
// PIM-SM (Sparse Mode) topology with a static Rendezvous Point: receiver-side
22+
// designated routers (DR_R1/DR_R2), the RP, and source-side designated routers
23+
// (DR_S1/DR_S2) connecting two sources and two receivers. The omnetpp.ini
24+
// scenarios exercise the RP shared tree, Register, and SPT switchover.
25+
//
2026
network PIM_SM_Network
2127
{
2228
submodules:

examples/pim/sm/README

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
PIM-SM (Sparse Mode) Examples
2+
=============================
3+
4+
These examples demonstrate PIM-SM (Protocol Independent Multicast - Sparse
5+
Mode, RFC 7761) with a statically configured Rendezvous Point (RP).
6+
7+
Topology: receiver-side designated routers DR_R1/DR_R2, the RP (10.2.2.2),
8+
and source-side designated routers DR_S1/DR_S2, connecting two sources and
9+
two receivers. Sources register their traffic to the RP, which forwards it
10+
down the shared (*,G) tree to the receivers; last-hop routers then switch
11+
over to the (S,G) shortest-path tree.
12+
13+
The [General] section is abstract; run one of the scenarios below. They
14+
differ in the order and timing of joins versus sends.
15+
16+
17+
1. Scenario1
18+
------------
19+
20+
Receivers join the group before the source starts sending.
21+
22+
23+
2. Scenario2
24+
------------
25+
26+
The source starts sending before the receivers join, and the receivers
27+
come and go during the simulation.
28+
29+
30+
3. Scenario3
31+
------------
32+
33+
Long send and keepalive intervals exercise the PIM-SM timers.
34+
35+
36+
4. Scenario4
37+
------------
38+
39+
Two sources send to two different groups (239.0.0.11 and 239.0.0.22) at the
40+
same time, with two receivers each joining one of the groups.
41+
42+
43+
To run a scenario, e.g.:
44+
45+
inet -u Cmdenv -c Scenario1

0 commit comments

Comments
 (0)