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