1C1 IGMPv3 backward compatibility with IGMPv1 and IGMPv2 is not
2   implemented. See RFC 3376, 7.3. Multicast Router Behavior. That's
3   because only Source-Specific Multicast is currently targeted.
4
5C2 IGMPv3 support for forwarding any-source groups is not
6   implemented. Traffic for groups in mode EXCLUDE {empty} won't be
7   forwarded.  See RFC 3376, 6.3. Source-Specific Forwarding
8   Rules. That's because only Source-Specific Multicast is currently
9   targeted.
10
11C3 Load Splitting of IP Multicast Traffic over ECMP is not supported.
12   See also: RFC 2991
13   Multipath Issues in Unicast and Multicast Next-Hop Selection
14   http://www.rfc-editor.org/rfc/rfc2991.txt
15
16C4 IPSec AH authentication is not supported (RFC 4601:
17   6.3. Authentication Using IPsec).
18
19C5 PIM support is limited to SSM mode as defined in section 4.8.2
20   (PIM-SSM-Only Routers) of RFC4601. That's because only
21   Source-Specific Multicast is currently targeted.
22
23C6 PIM implementation currently does not support IPv6. PIM-SSM
24   requires IGMPv3 for IPv4 and MLDv2 for IPv6. MLDv2 is currently
25   missing. See also CAVEAT C9.
26
27C7 FIXED (S,G) Assert state machine (RFC 4601, section 4.6.1) is not
28   implemented. See also TODO T6. See also CAVEAT C10.
29
30C8 It is not possible to disable join suppression in order to
31   explicitly track the join membership of individual downstream
32   routers.
33   - IGMPv3 Explicit Membership Tracking is not supported.
34     When explicit tracking is enabled on a router, the router can
35     individually track the Internet Group Management Protocol (IGMP)
36     membership state of all reporting hosts. This feature allows the
37     router to achieve minimal leave latencies when hosts leave a
38     multicast group or channel. Example:
39       conf t
40        interface eth0
41         ip igmp explicit-tracking
42
43C9 Only IPv4 Address Family (number=1) is supported in the PIM Address
44   Family field.
45   See also RFC 4601: 5.1. PIM Address Family
46   See also CAVEAT C6.
47   See also http://www.iana.org/assignments/address-family-numbers
48
49C10 FIXED Assert metric depends on metric_preference and
50    route_metric. Those parameters should be fetched from RIB
51    (zebra). See also pim_rpf.c, pim_rpf_update().
52
53C11 SSM Mapping is not supported
54
55    SSM Mapping Overview:
56
57    SSM mapping introduces a means for the last hop router to discover
58    sources sending to groups. When SSM mapping is configured, if a
59    router receives an IGMPv1 or IGMPv2 membership report for a
60    particular group G, the router translates this report into one or
61    more (S, G) channel memberships for the well-known sources
62    associated with this group.
63
64    When the router receives an IGMPv1 or IGMPv2 membership report for
65    a group G, the router uses SSM mapping to determine one or more
66    source IP addresses for the group G. SSM mapping then translates
67    the membership report as an IGMPv3 report INCLUDE (G, [S1, G],
68    [S2, G]...[Sn, G] and continues as if it had received an IGMPv3
69    report. The router then sends out PIM joins toward (S1, G) to (Sn,
70    G) and continues to be joined to these groups as long as it
71    continues to receive the IGMPv1 or IGMPv2 membership reports and
72    as long as the SSM mapping for the group remains the same. SSM
73    mapping, thus, enables you to leverage SSM for video delivery to
74    legacy STBs that do not support IGMPv3 or for applications that do
75    not take advantage of the IGMPv3 host stack.
76
77    SSM mapping enables the last hop router to determine the source
78    addresses either by a statically configured table on the router or
79    by consulting a DNS server. When the statically configured table
80    is changed, or when the DNS mapping changes, the router will leave
81    the current sources associated with the joined groups.
82
83C12 FIXED MRIB for incongruent unicast/multicast topologies is not
84    supported.  RPF mechanism currently just looks up the information
85    in the unicast routing table.
86
87    See also:
88    RFC5110: 2.2.3.  Issue: Overlapping Unicast/Multicast Topology
89
90    Sometimes, multicast RPF mechanisms first look up the multicast
91    routing table, or M-RIB ("topology database") with a longest
92    prefix match algorithm, and if they find any entry (including a
93    default route), that is used; if no match is found, the unicast
94    routing table is used instead.
95
96C13 Can't detect change of primary address before the actual change.
97    Possible approach is to craft old interface address into ip source
98    address by using raw ip socket.
99
100    See also:
101
102    RFC 4601: 4.3.1.  Sending Hello Messages
103
104    Before an interface goes down or changes primary IP address, a
105    Hello message with a zero HoldTime should be sent immediately
106    (with the old IP address if the IP address changed).
107
108    See also pim_sock_delete().
109
110C14 FIXED Detection of interface primary address changes may fail when
111    there are multiple addresses.
112    See also TODO T32.
113
114C15 Changes in interface secondary address list are not immediately
115    detected.
116    See also detect_secondary_address_change
117    See also TODO T31.
118
119C16 AMT Draft (mboned-auto-multicast) is not supported.
120    AMT = Automatic IP Multicast Without Explicit Tunnels
121
122    See also:
123
124    Draft
125    http://tools.ietf.org/html/draft-ietf-mboned-auto-multicast
126    http://tools.ietf.org/html/draft-ietf-mboned-auto-multicast-09
127
128    AMT gateway implementation for Linux
129    http://cs.utdallas.edu/amt/
130
131    AMT for Streaming (IPTV) on Global IP Multicast by Greg Shepherd (Cisco)
132    http://nznog.miniconf.org/nznog-2008-sysadmin-miniconf-greg-shepherd-iptv.pdf
133
134C17 SNMP / RFC 5060 (PIM MIB) is not supported.
135
136C18 MFC never recovers from removal of static route to source
137
138    # route add -host 1.2.3.4 gw 192.168.56.10
139    Before removal:
140    quagga-pimd-router# sh ip mroute
141    Source          Group           Proto Input iVifI Output oVifI TTL Uptime
142    1.2.3.4         232.1.2.3       I     eth1      3 eth0       2   1 00:00:36
143
144    # route del -host 1.2.3.4 gw 192.168.56.10
145    After removal: sh ip mroute --> empty output
146
147    # route add -host 1.2.3.4 gw 192.168.56.10
148    After the route is restored: sh ip mroute --> never recovers (empty output)
149
150    At this point, "no ip pim ssm" on the upstream interface (eth0) crashes pimd:
151
152    2014/02/14 16:30:14 PIM: ifmembership_set: (S,G)=(1.2.3.4,232.1.2.3) membership now is NOINFO on interface eth0
153    2014/02/14 16:30:14 PIM: pim_ifchannel_update_assert_tracking_desired: AssertTrackingDesired(1.2.3.4,232.1.2.3,eth0) changed from 1 to 0
154    2014/02/14 16:30:14 PIM: pim_zebra.c del_oif: nonexistent protocol mask 2 removed OIF eth0 (vif_index=2, min_ttl=0) from channel (S,G)=(1.2.3.4,232.1.2.3)
155    2014/02/14 16:30:14 PIM: pim_ifchannel_update_could_assert: CouldAssert(1.2.3.4,232.1.2.3,eth0) changed from 1 to 0
156    2014/02/14 16:30:14 PIM: pim_ifchannel_update_my_assert_metric: my_assert_metric(1.2.3.4,232.1.2.3,eth0) changed from 0,0,0,10.0.2.15 to 1,4294967295,4294967295,0.0.0.0
157    2014/02/14 16:30:14 PIM: pim_zebra.c del_oif: nonexistent protocol mask 1 removed OIF eth0 (vif_index=2, min_ttl=0) from channel (S,G)=(1.2.3.4,232.1.2.3)
158    2014/02/14 16:30:14 PIM: Assertion `!IGMP_SOURCE_TEST_FORWARDING(source->source_flags)' failed in file pim_igmpv3.c, line 412, function igmp_source_delete
159
160C19 Provision to prevent group mode clash
161
162    Beware group mode clash. A host/application issuing IGMPv2
163    any-source joins for a group will disrupt SSM multicast for that
164    group.
165
166    For instance, support for source-specific static igmp WILL FAIL if
167    there is host/application issuing IGMPv2 any-source joins for the
168    same group.
169
170    The reason is the IGMPv2 any-source join forces qpimd to switch
171    the group mode to ASM (any-source multicast); however, qpimd is
172    unable to program ASM groups into the kernel; multicast won't
173    flow. There could be some provision to prevent such a behavior,
174    but currently there is none.
175
176C20 Multicast traceroute module is based on:
177    draft-ietf-idmr-traceroute-ipm-07
178    It only implements, so far, weak traceroutes. The multicast routing
179    state of the router is not quieried but RPF path is followed along
180    PIM and IGMP enabled interfaces.
181
182-x-
183