draft-ietf-pim-drlb-11.txt | draft-ietf-pim-drlb-12.txt | |||
---|---|---|---|---|
Network Working Group Y. Cai | Network Working Group Y. Cai | |||
Internet-Draft H. Ou | Internet-Draft H. Ou | |||
Intended status: Standards Track Alibaba Group | Intended status: Standards Track Alibaba Group | |||
Expires: April 13, 2020 S. Vallepalli | Expires: April 25, 2020 S. Vallepalli | |||
M. Mishra | M. Mishra | |||
S. Venaas | S. Venaas | |||
Cisco Systems, Inc. | Cisco Systems, Inc. | |||
A. Green | A. Green | |||
British Telecom | British Telecom | |||
October 11, 2019 | October 23, 2019 | |||
PIM Designated Router Load Balancing | PIM Designated Router Load Balancing | |||
draft-ietf-pim-drlb-11 | draft-ietf-pim-drlb-12 | |||
Abstract | Abstract | |||
On a multi-access network, one of the PIM-SM routers is elected as a | On a multi-access network, one of the PIM-SM routers is elected as a | |||
Designated Router. One of the responsibilities of the Designated | Designated Router. One of the responsibilities of the Designated | |||
Router is to track local multicast listeners and forward data to | Router is to track local multicast listeners and forward data to | |||
these listeners if the group is operating in PIM-SM. This document | these listeners if the group is operating in PIM-SM. This document | |||
specifies a modification to the PIM-SM protocol that allows more than | specifies a modification to the PIM-SM protocol that allows more than | |||
one of the PIM-SM routers to take on this responsibility so that the | one of the PIM-SM routers to take on this responsibility so that the | |||
forwarding load can be distributed among multiple routers. | forwarding load can be distributed among multiple routers. | |||
skipping to change at page 1, line 42 ¶ | skipping to change at page 1, line 42 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on April 13, 2020. | This Internet-Draft will expire on April 25, 2020. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 25 ¶ | skipping to change at page 2, line 25 ¶ | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
3. Applicability . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Applicability . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
4. Functional Overview . . . . . . . . . . . . . . . . . . . . . 5 | 4. Functional Overview . . . . . . . . . . . . . . . . . . . . . 5 | |||
4.1. GDR Candidates . . . . . . . . . . . . . . . . . . . . . 6 | 4.1. GDR Candidates . . . . . . . . . . . . . . . . . . . . . 6 | |||
5. Protocol Specification . . . . . . . . . . . . . . . . . . . 7 | 5. Protocol Specification . . . . . . . . . . . . . . . . . . . 7 | |||
5.1. Hash Mask and Hash Algorithm . . . . . . . . . . . . . . 7 | 5.1. Hash Mask and Hash Algorithm . . . . . . . . . . . . . . 7 | |||
5.2. Modulo Hash Algorithm . . . . . . . . . . . . . . . . . . 8 | 5.2. Modulo Hash Algorithm . . . . . . . . . . . . . . . . . . 8 | |||
5.2.1. Modulo Hash Algorithm Example . . . . . . . . . . . . 9 | 5.2.1. Modulo Hash Algorithm Examples . . . . . . . . . . . 9 | |||
5.2.2. Limitations . . . . . . . . . . . . . . . . . . . . . 10 | 5.2.2. Limitations . . . . . . . . . . . . . . . . . . . . . 10 | |||
5.3. PIM Hello Options . . . . . . . . . . . . . . . . . . . . 10 | 5.3. PIM Hello Options . . . . . . . . . . . . . . . . . . . . 10 | |||
5.3.1. PIM DR Load Balancing Capability (DRLB-Cap) Hello | 5.3.1. PIM DR Load Balancing Capability (DRLB-Cap) Hello | |||
Option . . . . . . . . . . . . . . . . . . . . . . . 10 | Option . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
5.3.2. PIM DR Load Balancing List (DRLB-List) Hello Option . 11 | 5.3.2. PIM DR Load Balancing List (DRLB-List) Hello Option . 11 | |||
5.4. PIM DR Operation . . . . . . . . . . . . . . . . . . . . 12 | 5.4. PIM DR Operation . . . . . . . . . . . . . . . . . . . . 13 | |||
5.5. PIM GDR Candidate Operation . . . . . . . . . . . . . . . 13 | 5.5. PIM GDR Candidate Operation . . . . . . . . . . . . . . . 13 | |||
5.6. DRLB-List Hello Option Processing . . . . . . . . . . . . 13 | 5.6. DRLB-List Hello Option Processing . . . . . . . . . . . . 14 | |||
5.7. PIM Assert Modification . . . . . . . . . . . . . . . . . 14 | 5.7. PIM Assert Modification . . . . . . . . . . . . . . . . . 15 | |||
5.8. Backward Compatibility . . . . . . . . . . . . . . . . . 16 | 5.8. Backward Compatibility . . . . . . . . . . . . . . . . . 16 | |||
6. Manageability Considerations . . . . . . . . . . . . . . . . 16 | 6. Operational Considerations . . . . . . . . . . . . . . . . . 16 | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 | |||
7.1. Initial registry . . . . . . . . . . . . . . . . . . . . 17 | 7.1. Initial registry . . . . . . . . . . . . . . . . . . . . 17 | |||
7.2. Assignment of new hash algorithms . . . . . . . . . . . . 17 | 7.2. Assignment of new Hash Algorithms . . . . . . . . . . . . 17 | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 17 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 17 | |||
9. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 18 | 9. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 18 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 18 | 10.1. Normative References . . . . . . . . . . . . . . . . . . 18 | |||
10.2. Informative References . . . . . . . . . . . . . . . . . 18 | 10.2. Informative References . . . . . . . . . . . . . . . . . 18 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
1. Introduction | 1. Introduction | |||
On a multi-access LAN, such as an Ethernet, with one or more PIM-SM | On a multi-access LAN, such as an Ethernet, with one or more PIM-SM | |||
skipping to change at page 5, line 22 ¶ | skipping to change at page 5, line 22 ¶ | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
With respect to PIM-SM, this document follows the terminology that | With respect to PIM-SM, this document follows the terminology that | |||
has been defined in [RFC7761]. | has been defined in [RFC7761]. | |||
This document also introduces the following new acronyms: | This document also introduces the following new acronyms: | |||
o GDR: Group Designated Router. For each multicast flow, either a | o GDR: Group Designated Router. For each multicast flow, either a | |||
(*,G) for Any-Source Multicast (ASM), or an (S,G) for Source- | (*,G) for Any-Source Multicast (ASM), or an (S,G) for Source- | |||
Specific Multicast (SSM) [RFC4607], a hash algorithm (described | Specific Multicast (SSM) [RFC4607], a Hash Algorithm (described | |||
below) is used to select one of the routers as a GDR. The GDR is | below) is used to select one of the routers as a GDR. The GDR is | |||
responsible for initiating the forwarding tree building process | responsible for initiating the forwarding tree building process | |||
for the corresponding multicast flow. | for the corresponding multicast flow. | |||
o GDR Candidate: a router that has the potential to become a GDR. | o GDR Candidate: a router that has the potential to become a GDR. | |||
There might be multiple GDR Candidates on a LAN, but only one can | There might be multiple GDR Candidates on a LAN, but only one can | |||
become the GDR for a specific multicast flow. | become the GDR for a specific multicast flow. | |||
3. Applicability | 3. Applicability | |||
skipping to change at page 6, line 14 ¶ | skipping to change at page 6, line 14 ¶ | |||
with those of its neighbors. The router with the highest DR priority | with those of its neighbors. The router with the highest DR priority | |||
is the PIM DR. If there are multiple such routers, their IP | is the PIM DR. If there are multiple such routers, their IP | |||
addresses are used as the tie-breaker, as described in [RFC7761]. | addresses are used as the tie-breaker, as described in [RFC7761]. | |||
In order to share forwarding load among last hop routers, besides the | In order to share forwarding load among last hop routers, besides the | |||
normal PIM DR election, the GDR is also elected on the multi-access | normal PIM DR election, the GDR is also elected on the multi-access | |||
LAN. There is only one PIM DR on the multi-access LAN, but there | LAN. There is only one PIM DR on the multi-access LAN, but there | |||
might be multiple GDR Candidates. | might be multiple GDR Candidates. | |||
For each multicast flow, that is, (*,G) for ASM and (S,G) for SSM, a | For each multicast flow, that is, (*,G) for ASM and (S,G) for SSM, a | |||
hash algorithm is used to select one of the routers to be the GDR. A | Hash Algorithm is used to select one of the routers to be the GDR. | |||
new DR Load Balancing Capability (DRLB-Cap) PIM Hello Option, which | The new DR Load Balancing Capability (DRLB-Cap) PIM Hello Option is | |||
contains hash algorithm type, is announced by routers on interfaces | used to announce the Capability as well as the Hash Algorithm type. | |||
where this specification is enabled. Routers with the new DRLB-Cap | Routers with the new DRLB-Cap Option advertised in their PIM Hello, | |||
Option advertised in their PIM Hello, using the same GDR election | using the same GDR election Hash Algorithm and the same DR priority | |||
hash algorithm and the same DR priority as the PIM DR, are considered | as the PIM DR, are considered as GDR Candidates. | |||
as GDR Candidates. | ||||
Hash Masks are defined for Source, Group and RP separately, in order | Hash Masks are defined for Source, Group and RP separately, in order | |||
to handle PIM ASM/SSM. The masks, as well as a sorted list of GDR | to handle PIM ASM/SSM. The masks, as well as a sorted list of GDR | |||
Candidate Addresses, are announced by the DR in a new DR Load | Candidate Addresses, are announced by the DR in a new DR Load | |||
Balancing List (DRLB-List) PIM Hello Option. | Balancing List (DRLB-List) PIM Hello Option. | |||
A hash algorithm based on the announced Source, Group, or RP masks | A Hash Algorithm based on the announced Source, Group, or RP masks | |||
allows one GDR to be assigned to a corresponding multicast state. | allows one GDR to be assigned to a corresponding multicast state. | |||
And that GDR is responsible for initiating the creation of the | And that GDR is responsible for initiating the creation of the | |||
multicast forwarding tree for multicast traffic. | multicast forwarding tree for multicast traffic. | |||
4.1. GDR Candidates | 4.1. GDR Candidates | |||
GDR is the new concept introduced by this specification. GDR | GDR is the new concept introduced by this specification. GDR | |||
Candidates are routers eligible for GDR election on the LAN. To | Candidates are routers eligible for GDR election on the LAN. To | |||
become a GDR Candidate, a router must have the same DR priority and | become a GDR Candidate, a router must have the same DR priority and | |||
run the same GDR election hash algorithm as the DR on the LAN. | run the same GDR election Hash Algorithm as the DR on the LAN. | |||
For example, assume there are 4 routers on the LAN: R1, R2, R3 and | For example, assume there are 4 routers on the LAN: R1, R2, R3 and | |||
R4, each announcing a DRLB-Cap option. R1, R2 and R3 have the same | R4, each announcing a DRLB-Cap option. R1, R2 and R3 have the same | |||
DR priority while R4's DR priority is less preferred. In this | DR priority while R4's DR priority is less preferred. In this | |||
example, R4 will not be eligible for GDR election, because R4 will | example, R4 will not be eligible for GDR election, because R4 will | |||
not become a PIM DR unless all of R1, R2 and R3 go out of service. | not become a PIM DR unless all of R1, R2 and R3 go out of service. | |||
Furthermore, assume router R1 wins the PIM DR election, R1 and R2 run | Furthermore, assume router R1 wins the PIM DR election, R1 and R2 run | |||
the same hash algorithm for GDR election, while R3 runs a different | the same Hash Algorithm for GDR election, while R3 runs a different | |||
one. In this case, only R1 and R2 will be eligible for GDR election, | one. In this case, only R1 and R2 will be eligible for GDR election, | |||
while R3 will not. | while R3 will not. | |||
As a DR, R1 will include its own Load Balancing Hash Masks and the | As a DR, R1 will include its own Load Balancing Hash Masks and the | |||
identity of R1 and R2 (the GDR Candidates) in its DRLB-List Hello | identity of R1 and R2 (the GDR Candidates) in its DRLB-List Hello | |||
Option. | Option. | |||
5. Protocol Specification | 5. Protocol Specification | |||
5.1. Hash Mask and Hash Algorithm | 5.1. Hash Mask and Hash Algorithm | |||
A Hash Mask is used to extract a number of bits from the | A Hash Mask is used to extract a number of bits from the | |||
corresponding IP address field (32 for IPv4, 128 for IPv6) and | corresponding IP address field (32 for IPv4, 128 for IPv6) and | |||
calculate a hash value. A hash value is used to select a GDR from | calculate a hash value. A hash value is used to select a GDR from | |||
GDR Candidates advertised by PIM DR. For example, 0.0.255.0 defines | GDR Candidates advertised by the PIM DR. Hash masks allow for | |||
a Hash Mask for an IPv4 address that masks the first, the second, and | certain flows to always be forwarded by the same GDR, by ignoring | |||
the fourth octets. Hash masks allow for certain flows to always be | certain bits in the hash value calculation, so that the hash values | |||
forwarded by the same GDR, since the hash values are the same. For | are the same. For example, 0.0.255.0 defines a Hash Mask for an IPv4 | |||
instance the mask 0.0.255.0 means that only the third octet will be | address that masks the first, the second, and the fourth octets, | |||
considered when hashing. | which means that only the third octet will influence the hash value | |||
computed. | ||||
In the text below, a hash mask is in some places said to be zero. A | In the text below, a hash mask is in some places said to be zero. A | |||
hash mask is zero if no bits are set. That is, 0.0.0.0 for IPv4 and | hash mask is zero if no bits are set. That is, 0.0.0.0 for IPv4 and | |||
:: for IPv6. Also, a hash mask is said to be an all-bits-set mask if | :: for IPv6. Also, a hash mask is said to be an all-bits-set mask if | |||
it is 255.255.255.255 for IPv4 or | it is 255.255.255.255 for IPv4 or | |||
FFFF:FFFF:FFFF:FFFF:FFFFF:FFFF:FFFF:FFFF for IPv6. | FFFF:FFFF:FFFF:FFFF:FFFFF:FFFF:FFFF:FFFF for IPv6. | |||
There are three Hash Masks defined: | There are three Hash Masks defined: | |||
o RP Hash Mask | o RP Hash Mask | |||
skipping to change at page 8, line 16 ¶ | skipping to change at page 8, line 12 ¶ | |||
PIM DR is not zero (at least one bit is set), calculate the value | PIM DR is not zero (at least one bit is set), calculate the value | |||
of hashvalue_RP [Section 5.2] to determine the GDR. | of hashvalue_RP [Section 5.2] to determine the GDR. | |||
o If the group is in ASM mode and the RP Hash Mask announced by the | o If the group is in ASM mode and the RP Hash Mask announced by the | |||
PIM DR is zero (no bits are set), obtain the value of | PIM DR is zero (no bits are set), obtain the value of | |||
hashvalue_Group [Section 5.2] to determine the GDR. | hashvalue_Group [Section 5.2] to determine the GDR. | |||
o If the group is in SSM mode, use hashvalue_SG [Section 5.2] to | o If the group is in SSM mode, use hashvalue_SG [Section 5.2] to | |||
determine the GDR. | determine the GDR. | |||
A simple Modulo hash algorithm is defined in this document. However, | A simple Modulo Hash Algorithm is defined in this document. However, | |||
to allow another hash algorithms to be used, a 1-octet "Hash | to allow another Hash Algorithms to be used, a 1-octet "Hash | |||
Algorithm" field is included in the DRLB-Cap Hello Option to specify | Algorithm" field is included in the DRLB-Cap Hello Option to specify | |||
the hash algorithm used by the router. | the Hash Algorithm used by the router. | |||
If different hash algorithms are advertised among the routers on a | If different Hash Algorithms are advertised among the routers on a | |||
LAN, only the outers advertising the same hash algorithm as the DR | LAN, only the routers advertising the same Hash Algorithm as the DR | |||
(as well as having the same DR priority as the DR) are eligible for | (as well as having the same DR priority as the DR) are eligible for | |||
GDR election. | GDR election. | |||
5.2. Modulo Hash Algorithm | 5.2. Modulo Hash Algorithm | |||
As part of computing the hash, the notation LSZC(hash_mask) is used | As part of computing the hash, the notation LSZC(hash_mask) is used | |||
to denote the number of zeroes counted from the least significant bit | to denote the number of zeroes counted from the least significant bit | |||
of a Hash Mask hash_mask. As an example, LSZC(255.255.128) is 7 and | of a Hash Mask hash_mask. As an example, LSZC(255.255.128) is 7 and | |||
also LSZC(FFFF:8000::) is 111. If all bits are set, LSZC will be 0. | also LSZC(FFFF:8000::) is 111. If all bits are set, LSZC will be 0. | |||
If the mask is zero, then LSZC will be 32 for IPv4, and 128 for IPv6. | If the mask is zero, then LSZC will be 32 for IPv4, and 128 for IPv6. | |||
The number of GDR Candidates is denoted as GDRC. | The number of GDR Candidates is denoted as GDRC. | |||
The idea behind the Modulo hash algorithm is in simple terms that the | The idea behind the Modulo Hash Algorithm is in simple terms that the | |||
corresponding mask is applied to a value, then the result is shifted | corresponding mask is applied to a value, then the result is shifted | |||
right LSZC(mask) bits so that the least significant bits that were | right LSZC(mask) bits so that the least significant bits that were | |||
masked out are not considered. Then this result is masked by 0xFFFF, | masked out are not considered. Then this result is masked by 0xFFFF, | |||
keeping only the last 32 bits of the result (this only makes a | keeping only the last 32 bits of the result (this only makes a | |||
difference for IPv6). Finally, the hash value is this result modulo | difference for IPv6). Finally, the hash value is this result modulo | |||
the number of GDR Candidates (GDRC). | the number of GDR Candidates (GDRC). | |||
The Modulo hash algorithm for computing the values hashvalue_RP, | The Modulo Hash Algorithm for computing the values hashvalue_RP, | |||
hashvalue_Group and hashvalue_SG is defined as follows. | hashvalue_Group and hashvalue_SG is defined as follows. | |||
hashvalue_RP is calculated as: | hashvalue_RP is calculated as: | |||
(((RP_address & RP_mask) >> LSZC(RP_mask)) & 0xFFFF) % GDRC | (((RP_address & RP_mask) >> LSZC(RP_mask)) & 0xFFFF) % GDRC | |||
RP_address is the address of the RP defined for the group and | RP_address is the address of the RP defined for the group and | |||
RP_mask is the RP Hash Mask. | RP_mask is the RP Hash Mask. | |||
hashvalue_Group is calculated as: | hashvalue_Group is calculated as: | |||
skipping to change at page 9, line 22 ¶ | skipping to change at page 9, line 20 ¶ | |||
hashvalue_SG is calculated as: | hashvalue_SG is calculated as: | |||
((((Source_address & Source_mask) >> LSZC(Source_mask)) & 0xFFFF) | ((((Source_address & Source_mask) >> LSZC(Source_mask)) & 0xFFFF) | |||
^ (((Group_address & Group_mask) >> LSZC(Group_mask)) & 0xFFFF)) % | ^ (((Group_address & Group_mask) >> LSZC(Group_mask)) & 0xFFFF)) % | |||
GDRC | GDRC | |||
Group_address is the group address and Group_mask is the Group | Group_address is the group address and Group_mask is the Group | |||
Hash Mask. | Hash Mask. | |||
5.2.1. Modulo Hash Algorithm Example | 5.2.1. Modulo Hash Algorithm Examples | |||
To help illustrate the algorithm, consider this example. Router X | To help illustrate the algorithm, consider this example. Router X | |||
with IPv4 address 203.0.113.1 receives a DRLB-List Hello Option from | with IPv4 address 203.0.113.1 receives a DRLB-List Hello Option from | |||
the DR, which announces RP Hash Mask 0.0.255.0 and a list of GDR | the DR, which announces RP Hash Mask 0.0.255.0 and a list of GDR | |||
Candidates, sorted by IP addresses from high to low: 203.0.113.3, | Candidates, sorted by IP addresses from high to low: 203.0.113.3, | |||
203.0.113.2 and 203.0.113.1. The ordinal number assigned to those | 203.0.113.2 and 203.0.113.1. The ordinal number assigned to those | |||
addresses would be: | addresses would be: | |||
0 for 203.0.113.3; 1 for 203.0.113.2; 2 for 203.0.113.1 (Router X) | 0 for 203.0.113.3; 1 for 203.0.113.2; 2 for 203.0.113.1 (Router X). | |||
Assume there are 2 RPs: RP1 192.0.2.1 for Group1 and RP2 198.51.100.2 | Assume there are 2 RPs: RP1 192.0.2.1 for Group1 and RP2 198.51.100.2 | |||
for Group2. Following the modulo hash algorithm: | for Group2. Following the modulo Hash Algorithm: | |||
LSZC(0.0.255.0) is 8 and GDRC is 3. The hashvalue_RP for Group1 with | LSZC(0.0.255.0) is 8 and GDRC is 3. The hashvalue_RP for Group1 with | |||
RP RP1 is: | RP RP1 is: | |||
(((192.0.2.1 & 0.0.255.0) >> 8) & 0xFFFF % 3) = 2 % 3 = 2 | (((192.0.2.1 & 0.0.255.0) >> 8) & 0xFFFF % 3) = 2 % 3 = 2 | |||
which matches the ordinal number assigned to Router X. Router X will | which matches the ordinal number assigned to Router X. Router X will | |||
be the GDR for Group1. | be the GDR for Group1. | |||
The hashvalue_RP for Group2 with RP RP2 is: | The hashvalue_RP for Group2 with RP RP2 is: | |||
(((198.51.100.2 & 0.0.255.0) >> 8) & 0xFFFF % 3) = 100 % 3 = 1 | (((198.51.100.2 & 0.0.255.0) >> 8) & 0xFFFF % 3) = 100 % 3 = 1 | |||
which is different from the ordinal number of router X (2). Hence, | which is different from the ordinal number of router X (2). Hence, | |||
Router X will not be GDR for Group2. | Router X will not be GDR for Group2. | |||
For IPv6 consider this example, similar to the above. Router X with | ||||
IPv6 address FE80::1 receives a DRLB-List Hello Option from the DR, | ||||
which announces RP Hash Mask ::FFFF:FFFF:0 and a list of GDR | ||||
Candidates, sorted by IP addresses from high to low: FE80::3, FE80::2 | ||||
and FE80::1. The ordinal number assigned to those addresses would | ||||
be: | ||||
0 for FE80::3; 1 for FE80::2; 2 for FE80::1 (Router X). | ||||
Assume there are 2 RPs: RP1 2001:DB8::1:5678:1 for Group1 and RP2 | ||||
2001:DB8::1:1234:2 for Group2. Following the modulo Hash Algorithm: | ||||
LSZC(::FFFF:FFFF:0) is 32 and GDRC is 3. The hashvalue_RP for Group1 | ||||
with RP RP1 is: | ||||
(((2001:DB8::1:5678:1 & ::FFFF:FFFF:0) >> 32) & 0xFFFF % 3) = | ||||
((::1:5678:0 >> 32) & 0xFFFF % 3) = (::1:5678 & 0xFFFF % 3) = ::5678 | ||||
% 3 = 2 | ||||
which matches the ordinal number assigned to Router X. Router X will | ||||
be the GDR for Group1. | ||||
The hashvalue_RP for Group2 with RP RP2 is: | ||||
(((2001:DB8::1:1234:1 & ::FFFF:FFFF:0) >> 32) & 0xFFFF % 3) = | ||||
((::1:1234:0 >> 32) & 0xFFFF % 3) = (::1:1234 & 0xFFFF % 3) = ::1234 | ||||
% 3 = 1 | ||||
which is different from the ordinal number of router X (2). Hence, | ||||
Router X will not be GDR for Group2. | ||||
5.2.2. Limitations | 5.2.2. Limitations | |||
The Modulo Hash Algorithm has poor failover characteristics when a | The Modulo Hash Algorithm has poor failover characteristics when a | |||
shared LAN has more than two GDRs. In the case of more than two GDRs | shared LAN has more than two GDRs. In the case of more than two GDRs | |||
on a LAN, when one GDR fails, all of the groups may be reassigned to | on a LAN, when one GDR fails, all of the groups may be reassigned to | |||
a different GDR, even if they were not assigned to the failed GDR. | a different GDR, even if they were not assigned to the failed GDR. | |||
However, many deployments use only two routers on a shared LAN for | However, many deployments use only two routers on a shared LAN for | |||
redundancy purposes. Future work may define new hash algorithms | redundancy purposes. Future work may define new Hash Algorithms | |||
where only groups assigned to the failed GDR get reassigned. | where only groups assigned to the failed GDR get reassigned. | |||
5.3. PIM Hello Options | 5.3. PIM Hello Options | |||
When a PIM router sends a PIM Hello on an interface with this | All PIM routers include a new option, called "Load Balancing | |||
specification enabled, it includes a new option, called "Load | Capability (DRLB-Cap)" in their PIM Hello messages. | |||
Balancing Capability (DRLB-Cap)". | ||||
Besides this DRLB-Cap Hello Option, the elected PIM DR also includes | Besides this DRLB-Cap Hello Option, the elected PIM DR also includes | |||
a new "DR Load Balancing List (DRLB-List) Hello Option". The DRLB- | a new "DR Load Balancing List (DRLB-List) Hello Option". The DRLB- | |||
List Hello Option consists of three Hash Masks as defined above and | List Hello Option consists of three Hash Masks as defined above and | |||
also a sorted list of GDR Candidate addresses on the LAN. | also a sorted list of GDR Candidate addresses on the LAN. | |||
5.3.1. PIM DR Load Balancing Capability (DRLB-Cap) Hello Option | 5.3.1. PIM DR Load Balancing Capability (DRLB-Cap) Hello Option | |||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
skipping to change at page 10, line 44 ¶ | skipping to change at page 11, line 23 ¶ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 3: PIM DR Load Balancing Capability Hello Option | Figure 3: PIM DR Load Balancing Capability Hello Option | |||
Type: 34 | Type: 34 | |||
Length: 4 | Length: 4 | |||
Reserved: Transmitted as zero, ignored on receipt. | Reserved: Transmitted as zero, ignored on receipt. | |||
Hash Algorithm: Hash algorithm type. 0 for the Modulo algorithm | Hash Algorithm: Hash Algorithm type. 0 for the Modulo algorithm | |||
defined in this document. | defined in this document. | |||
This DRLB-Cap Hello Option MUST be advertised by routers on all | This DRLB-Cap Hello Option MUST be advertised by routers on all | |||
interfaces where DR Load Balancing is enabled. | interfaces where DR Load Balancing is enabled. | |||
5.3.2. PIM DR Load Balancing List (DRLB-List) Hello Option | 5.3.2. PIM DR Load Balancing List (DRLB-List) Hello Option | |||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at page 11, line 24 ¶ | skipping to change at page 12, line 4 ¶ | |||
| Source Mask | | | Source Mask | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| RP Mask | | | RP Mask | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| GDR Candidate Address(es) | | | GDR Candidate Address(es) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 4: PIM DR Load Balancing List Hello Option | Figure 4: PIM DR Load Balancing List Hello Option | |||
Type: 35 | Type: 35 | |||
Length: (3 + n) x (4 or 16) bytes, where n is the number of GDR | ||||
Length: (3 + n) x (4 or 16), where n is the number of GDR | ||||
candidates. | candidates. | |||
Group Mask (32/128 bits): Mask applied to group addresses as part | Group Mask (32/128 bits): Mask applied to group addresses as part | |||
of hash computation. | of hash computation. | |||
Source Mask (32/128 bits): Mask applied to source addresses as | Source Mask (32/128 bits): Mask applied to source addresses as | |||
part of hash computation. | part of hash computation. | |||
RP Mask (32/128 bits): Mask applied to RP addresses as part of | RP Mask (32/128 bits): Mask applied to RP addresses as part of | |||
hash computation. | hash computation. | |||
All masks MUST have the same number of bits as the IP source | All masks MUST have the same number of bits as the IP source | |||
address in the PIM Hello IP header. | address in the PIM Hello IP header. | |||
GDR Address (32/128 bits): Address(es) of GDR Candidate(s) | GDR Candidate Address(es) (32/128 bits): List of GDR Candidate(s) | |||
All addresses MUST be in the same address family as the PIM | All addresses MUST be in the same address family as the PIM | |||
Hello IP header. It is RECOMMENDED that the addresses are | Hello IP header. It is RECOMMENDED that the addresses are | |||
sorted in descending order. | sorted in descending order. | |||
If the "Interface ID" option, as specified in [RFC6395], is | If the "Interface ID" option, as specified in [RFC6395], is | |||
present in a GDR Candidate's PIM Hello message, and the "Router | present in a GDR Candidate's PIM Hello message, and the "Router | |||
ID" portion is non-zero: | Identifier" portion is non-zero: | |||
+ For IPv4, the "GDR Candidate Address" will be set directly | + For IPv4, the "GDR Candidate Address" will be set directly | |||
to the "Router ID". | to the "Router Identifier". | |||
+ For IPv6, the "GDR Candidate Address" will be 96 bits of | + For IPv6, the "GDR Candidate Address" will be 96 bits of | |||
zeroes followed by the 32 bit Router ID. | zeroes followed by the 32 bit Router Identifier. | |||
If the "Interface ID" option is not present in a GDR Candidate' | If the "Interface ID" option is not present in a GDR Candidate' | |||
PIM Hello message, or if the "Interface ID" option is present | PIM Hello message, or if the "Interface ID" option is present | |||
but the "Router ID" field is zero, the "GDR Candidate Address" | but the "Router Identifier" field is zero, the "GDR Candidate | |||
will be the IPv4 or IPv6 source address of the PIM Hello | Address" will be the IPv4 or IPv6 source address of the PIM | |||
message. | Hello message. | |||
This DRLB-List Hello Option MUST only be advertised by the | This DRLB-List Hello Option MUST only be advertised by the | |||
elected PIM DR. It MUST be ignored if received from a non-DR. | elected PIM DR. It MUST be ignored if received from a non-DR. | |||
The option MUST also be ignored if the hash masks are not the | ||||
correct number of bits, or GDR Candidate addresses are in the | ||||
wrong address family. | ||||
5.4. PIM DR Operation | 5.4. PIM DR Operation | |||
The DR election process is still the same as defined in [RFC7761]. A | The DR election process is still the same as defined in [RFC7761]. | |||
DR that has this specification enabled on an interface advertises the | The DR advertises the new DRLB-List Hello Option, which contains mask | |||
new DRLB-List Hello Option, which contains mask values from user | values from user configuration (or default values), followed by a | |||
configuration (or default values), followed by a list of GDR | list of GDR Candidate Addresses. It is RECOMMENDED that the list be | |||
Candidate Addresses. It is RECOMMENDED that the list is sorted, from | sorted, from the highest value to the lowest value. The reason for | |||
the highest value to the lowest value. The reason for sorting the | sorting the list is to make the behavior deterministic, regardless of | |||
list is to make the behavior deterministic, regardless of the order | the order in which the DR learns of new candidates. Note that, as | |||
the DR learns of new candidates. Note that same as non-DR routers, | non-DR routers, the DR also advertises the DRLB-Cap Hello Option to | |||
the DR also advertises DRLB-Cap Hello Option to indicate its | indicate its ability to support the new functionality and the type of | |||
capability of supporting this specification and the type of its GDR | GDR election Hash Algorithm. | |||
election hash algorithm. | ||||
If a PIM DR receives a neighbor DRLB-Cap Hello Option, which contains | If a PIM DR receives a neighbor DRLB-Cap Hello Option, which contains | |||
the same hash algorithm as the DR, and the neighbor has the same DR | the same Hash Algorithm as the DR, and the neighbor has the same DR | |||
priority as the DR, PIM DR SHOULD consider the neighbor as a GDR | priority as the DR, PIM DR SHOULD consider the neighbor as a GDR | |||
Candidate and insert the GDR Candidate' Address into the list of the | Candidate and insert the GDR Candidate' Address into the list of the | |||
DRLB-List Option. However, the DR may have policies limiting which | DRLB-List Option. However, the DR may have policies limiting which | |||
GDR Candidates, or the number of GDR Candidates to include. The DR | GDR Candidates, or the number of GDR Candidates to include. | |||
would normally include itself in the list of GDR Candidates. | Likewise, the DR SHOULD include itself in the list of GDR Candidates, | |||
but it is permissable not to do so, if for instance there is some | ||||
policy restricting the candidate set. | ||||
If a PIM neighbor included in the list expires, stops announcing the | If a PIM neighbor included in the list expires, stops announcing the | |||
DRLB-Cap Hello Option, changes DR priority, changes hash algorithm or | DRLB-Cap Hello Option, changes DR priority, changes Hash Algorithm or | |||
otherwise becomes ineligibile as a candidate, the DR should | otherwise becomes ineligible as a candidate, the DR SHOULD | |||
immediately send a triggered hello with a new list in the DRLB-List | immediately send a triggered hello with a new list in the DRLB-List | |||
option, excluding the neighbor. | option, excluding the neighbor. | |||
If a new router becomes eligible as a candidate, there is no urgency | If a new router becomes eligible as a candidate, there is no urgency | |||
in sending out an updated list. An updated list SHOULD be included | in sending out an updated list. An updated list SHOULD be included | |||
in the next hello. | in the next hello. | |||
5.5. PIM GDR Candidate Operation | 5.5. PIM GDR Candidate Operation | |||
When an IGMP/MLD report is received, without this specification, only | When an IGMP/MLD report is received, a Hash Algorithm is used by the | |||
the PIM DR will handle the join and potentially run into the issues | GDR Candidates to determine which router is going to be responsible | |||
described earlier. Using this specification, a hash algorithm is | for building forwarding trees on behalf of the host. | |||
used by the GDR Candidates to determine which router is going to be | ||||
responsible for building forwarding trees on behalf of the host. | ||||
If this specification is enabled on an interface, the router MUST | The router MUST include the DRLB-Cap Hello Option in all PIM Hello | |||
include the DRLB-Cap Hello Option in all PIM Hello messages sent on | messages sent on the interface. Note that the presence of the DRLB- | |||
that interface. Note that the presence of the DRLB-Cap Option in PIM | Cap Option in the PIM Hello does not guarantee that the router will | |||
Hello does not guarantee that this router would be considered as a | be considered as a GDR candidate. Once the DR election is done, the | |||
GDR candidate. Once DR election is done, the DRLB-List Hello Option | DRLB-List Hello Option is received from the current PIM DR containing | |||
would be received from the current PIM DR on the link which would | a list of the selected GDRs Candidates. | |||
contain a list of GDRs Candidates selected by the PIM DR. | ||||
A router only acts as a GDR Candidate if it is included in the GDR | A router only acts as a GDR Candidate if it is included in the GDR | |||
Candidate list of the DRLB-List Hello Option. See next section for | Candidate list of the DRLB-List Hello Option. See next section for | |||
details. | details. | |||
5.6. DRLB-List Hello Option Processing | 5.6. DRLB-List Hello Option Processing | |||
This section discusses processing of the DRLB-List Hello Option. All | This section discusses processing of the DRLB-List Hello Option, | |||
routers MUST ignore the DRLB-List Hello Option if it is received from | including the case where it was received in the previous hello, but | |||
a PIM router which is not the DR. The option MUST only be processed | not in the current hello. All routers MUST ignore the DRLB-List | |||
by routers that are announcing the DRLB-Cap Option. Also, the | Hello Option if it is received from a PIM router which is not the DR. | |||
algorithm announced in the DRLB-Cap Option, MUST be the same as what | The option MUST only be processed by routers that are announcing the | |||
was announced by the DR. All GDR Candidates MUST use the Hash Masks | DRLB-Cap Option, and only if the Hash Algorithm announced by the DR | |||
advertised in the Option, even if they differ from those the | is the same as the local announcement. All GDR Candidates MUST use | |||
candidate was configured with. | the Hash Masks advertised in the Option, even if they differ from | |||
those the candidate was configured with. The DR MUST also process | ||||
its own DRLB-List Hello Option. | ||||
A router stores the latest option contents that was announced, if | A router stores the latest option contents that was announced, if | |||
any, and deletes the previous contents. The router MUST also compare | any, and deletes the previous contents. The router MUST also compare | |||
the new contents with any previous contents, and if there are any | the new contents with any previous contents, and if there are any | |||
changes, continue processing as below. Note that if the option does | changes, continue processing as below. Note that if the option does | |||
not pass the above checks, the below processing MUST be done as if | not pass the above checks, the below processing MUST be done as if | |||
the option was not announced. | the option was not announced. | |||
If the contents of the DRLB-List Option, the masks or the candidate | If the contents of the DRLB-List Option, the masks or the candidate | |||
list, differs from the previously saved copy, it is received for the | list, differs from the previously saved copy, it is received for the | |||
first time, or it is no longer being received or accepted, the option | first time, or it is no longer being received or accepted, the option | |||
MUST be processed as below. | MUST be processed as below. | |||
1. If the router was not included in the previous GDR list, or there | 1. If the local router is included in the GDR Candidate Address(es) | |||
was no previous GDR list, but it is included in the new GDR list, | field, for each of the groups, or source and group pairs if the | |||
the router MUST for each of the groups, or source and group pairs | group is in SSM mode, with local receiver interest, the router | |||
if the group is in SSM mode, with local receiver interest, run | MUST run the Hash Algorithm to determine which of them it is the | |||
the hash algorithm to determine which of them it is the GDR for. | GDR for. | |||
If it is not the GDR for a group, or source and group pair if | ||||
SSM, no processing is required. | ||||
If it is hashed as the GDR, it needs to build a multicast | ||||
forwarding tree. | ||||
2. If the router was included in the previous GDR list, and still is | If there is no change in the GDR status, then no further | |||
included in the new GDR list: The router MUST for each of the | action is required. | |||
groups, or source and group pairs if the group is in SSM mode, | ||||
with local receiver interest, run the hash algorithm to determine | ||||
which of them it is the GDR for. | ||||
If it was the GDR for a group, or source and group pair if | If the router becomes the new GDR, then a multicast forwarding | |||
SSM, and the new hash result chose it as the GDR, then no | tree MUST be built [RFC7761]. | |||
processing is required. | ||||
If it was the GDR for a group, or source and group pair if | If the router is no longer the GDR, then it uses an Assert as | |||
SSM, earlier and now it is no longer the GDR, then it sets the | ||||
assert metric preference to maximum (0x7FFFFFFF) and the | ||||
assert metric to one less than maximum (0xFFFFFFFE), as | ||||
explained in [Section 5.7]. | explained in [Section 5.7]. | |||
If it was not the GDR for a group, or source and group pair if | 2. If the local router is not included in the GDR Candidate | |||
SSM, earlier, and the new hash does not make it GDR, then no | Address(es) field, or if the DRLB-List Hello Option is no longer | |||
processing is required. | included in the DR's Hello, or if the DR's Neighbor Liveness | |||
Timer expires [RFC7761], for each of the groups, or source and | ||||
If it was not the GDR for an earlier group, or source and | group pairs if the group is in SSM mode, with local receiver | |||
group pair if SSM, and now becomes the GDR, it starts building | interest, for which the router is the GDR, it uses an Assert as | |||
multicast forwarding tree for this flow. | explained in [Section 5.7]. | |||
3. If the router was included in the previous GDR list, but is not | ||||
included in the new GDR list, or there is no new GDR list: The | ||||
router MUST for each of the groups, or source and group pairs if | ||||
the group is in SSM mode, with local receiver interest do as | ||||
follows. | ||||
If it was the GDR for a group, or source and group pair if | ||||
SSM, it sets the assert metric preference to maximum | ||||
(0x7FFFFFFF) and the assert metric to one less than maximum | ||||
(0xFFFFFFFE), as explained in [Section 5.7]. | ||||
If it was not the GDR, then no processing is required. | ||||
5.7. PIM Assert Modification | 5.7. PIM Assert Modification | |||
GDR changes may occur due to configuration change, due to GDR | GDR changes may occur due to configuration change, due to GDR | |||
candidates going down, and also new routers coming up and becoming | candidates going down, and also new routers coming up and becoming | |||
GDR candidates. This may occur while flows are being forwarded. If | GDR candidates. This may occur while flows are being forwarded. If | |||
the GDR for an active flow changes, there is likely to be some | the GDR for an active flow changes, there is likely to be some | |||
disruption, such as packet loss or duplicates. By using asserts, | disruption, such as packet loss or duplicates. By using asserts, | |||
packet loss is minimized, while allowing a small amount of | packet loss is minimized, while allowing a small amount of | |||
duplicates. | duplicates. | |||
When a router stops acting as the GDR for a group, or source and | When a router stops acting as the GDR for a group, or source and | |||
group pair if SSM, it MUST set the assert metric preference to | group pair if SSM, it MUST set the Assert metric preference to | |||
maximum (0x7FFFFFFF) and the assert metric to one less than maximum | maximum (0x7FFFFFFF) and the Assert metric to one less than maximum | |||
(0xFFFFFFFE). This was also mentioned in the previous section. That | (0xFFFFFFFE). This was also mentioned in the previous section. That | |||
is, whenever it sends or receives an assert for the group, it must | is, whenever it sends or receives an Assert for the group, it must | |||
use these values as the metric preference and metric rather than the | use these values as the metric preference and metric rather than the | |||
values provided by routing. This is similar to what is done for | values provided by the unicast routing protocol. | |||
AssertCancel Messages in [RFC7761], except that the metric value here | ||||
is one less. | ||||
The rest of this section is just for illustration purposes and not | The rest of this section is just for illustration purposes and not | |||
part of the protocol definition. | part of the protocol definition. | |||
To illustrate the behavior when there is a GDR change, consider the | To illustrate the behavior when there is a GDR change, consider the | |||
following scenario where there are two flows G1 and G2. R1 is the | following scenario where there are two flows G1 and G2. R1 is the | |||
GDR for G1, and R2 is the GDR for G2. When R3 comes up, it is | GDR for G1, and R2 is the GDR for G2. When R3 comes up, it is | |||
possible that R3 becomes GDR for both G1 and G2, hence R3 starts to | possible that R3 becomes GDR for both G1 and G2, hence R3 starts to | |||
build the forwarding tree for G1 and G2. If R1 and R2 stop | build the forwarding tree for G1 and G2. If R1 and R2 stop | |||
forwarding before R3 completes the process, packet loss might occur. | forwarding before R3 completes the process, packet loss might occur. | |||
On the other hand, if R1 and R2 continue forwarding while R3 is | On the other hand, if R1 and R2 continue forwarding while R3 is | |||
building the forwarding trees, duplicates might occur. | building the forwarding trees, duplicates might occur. | |||
When the role of GDR changes as above, instead of immediately | When the role of GDR changes as above, instead of immediately | |||
stopping forwarding, R1 and R2 continue forwarding to G1 and G2 | stopping forwarding, R1 and R2 continue forwarding to G1 and G2 | |||
respectively, while, at the same time, R3 build forwarding trees for | respectively, while, at the same time, R3 build forwarding trees for | |||
G1 and G2. This will lead to PIM Asserts. | G1 and G2. This will lead to PIM Asserts. | |||
Using the above example, for G1, assume R1 and R3 agree on the new | For G1, using the functionality described in this document, R1 and R3 | |||
GDR, which is R3. With the new assert behavior, R1 sets its assert | determine the new GDR, which is R3. With the modified Assert | |||
metric to the near maximum value discussed above. That will make R3, | behavior, R1 sets its Assert metric to the near maximum value | |||
which has normal metric in its Assert as the Assert winner. | discussed above. That will make R3, which has normal metric in its | |||
Assert as the Assert winner. | ||||
For G2, assume it takes a slightly longer time for R2 to find out | ||||
that R3 is the new GDR and still considers itself being the GDR while | ||||
R3 already has assumed the role of GDR. Since both R2 and R3 think | ||||
they are GDRs, they further compare their metric and IP addresses. | ||||
If R3 has the better routing metric, or the same metric but a better | ||||
tie-breaker, the result will be consistent during GDR selection. If | ||||
unfortunately, R2 has the better metric or the same metric but a | ||||
better tie-breaker, R2 will become the Assert winner and continues to | ||||
forward traffic. Shortly after when R2 finds out that it is no | ||||
longer the GDR, R2 will change to using the near maximum assert | ||||
metric. Next time R2 sends an assert message, it will lose the | ||||
assert and stop forwarding. As assert winner, R2 would send periodic | ||||
assert messages per [RFC7761]. | ||||
5.8. Backward Compatibility | 5.8. Backward Compatibility | |||
In the case of a hybrid Ethernet shared LAN (where some PIM routers | In the case of a hybrid Ethernet shared LAN (where some PIM routers | |||
enable the specification defined in this document, and some do not). | support the functionality defined in this document, and some do not); | |||
o If a router which does not support this specification becomes the | o If the DR does not support the new functionality, then there will | |||
DR on the LAN, then it is the only router acting as a DR, and | be no load-balancing. | |||
there will be no load-balancing. | ||||
o If a router which does not support this specification becomes a | o If non-DR routers do not support the new functionality, they will | |||
non-DR on link, then it acts as non-DR defined in [RFC7761], and | not be considered as Candidate GDRs and it will not take part in | |||
it will not take part in any load-balancing. Load-balancing may | an load-balancing. Load-balancing may still happen on the link. | |||
still happen. | ||||
6. Manageability Considerations | 6. Operational Considerations | |||
An administrator needs to consider what the total bandwidth | An administrator needs to consider what the total bandwidth | |||
requirements are and find a set of routers that together has enough | requirements are and find a set of routers that together has enough | |||
total capacity, while making sure that each of the router can handle | total capacity, while making sure that each of the routers can handle | |||
its part, assuming that the traffic is distributed roughly equally | its part, assuming that the traffic is distributed roughly equally | |||
among the routers. Ideally, one should also have enough bandwidth to | among the routers. Ideally, one should also have enough bandwidth to | |||
handle the case where at least one router fails. Ideally all the | handle the case where at least one router fails. All routers should | |||
routers should have reachability to the sources, and RPs if | have reachability to the sources, and RPs if applicable, that is not | |||
applicable, that is not via the LAN. | via the LAN. | |||
Care must be taken when choosing what hash masks to configure. One | Care must be taken when choosing what hash masks to configure. One | |||
would typically configure the same masks on all the routers, so that | would typically configure the same masks on all the routers, so that | |||
they are the same, regardless of which router is elected as DR. The | they are the same, regardless of which router is elected as DR. The | |||
default masks are likely suitable for most deployment. The RP Hash | default masks are likely suitable for most deployment. The RP Hash | |||
Mask must be configured (the default is no bits set) if one wishes to | Mask must be configured (the default is no bits set) if one wishes to | |||
hash based on the RP address rather than the group address for ASM. | hash based on the RP address rather than the group address for ASM. | |||
The default masks will use the entire group addresses, and source | The default masks will use the entire group addresses, and source | |||
addresses if SSM, as part of the hash. An administrator may set | addresses if SSM, as part of the hash. An administrator may set | |||
other masks that masks out part of the addresses to ensure that | other masks that masks out part of the addresses to ensure that | |||
skipping to change at page 17, line 19 ¶ | skipping to change at page 17, line 11 ¶ | |||
Balancing List (DRLB-List) Hello Option in the PIM-Hello Options | Balancing List (DRLB-List) Hello Option in the PIM-Hello Options | |||
registry. IANA is requested to make these assignments permanent when | registry. IANA is requested to make these assignments permanent when | |||
this document is published as an RFC. Note that the option names | this document is published as an RFC. Note that the option names | |||
have changed slightly since the temporary assignments were made. | have changed slightly since the temporary assignments were made. | |||
Also, the length of option 34 is always 4, the registry currently | Also, the length of option 34 is always 4, the registry currently | |||
says it is variable. | says it is variable. | |||
This document requests IANA to create a registry called "Designated | This document requests IANA to create a registry called "Designated | |||
Router Load Balancing Hash Algorithms" in the "Protocol Independent | Router Load Balancing Hash Algorithms" in the "Protocol Independent | |||
Multicast (PIM)" branch of the registry tree. The registry lists | Multicast (PIM)" branch of the registry tree. The registry lists | |||
hash algorithms for use by PIM Designated Router Load Balancing. | Hash Algorithms for use by PIM Designated Router Load Balancing. | |||
7.1. Initial registry | 7.1. Initial registry | |||
The initial content of the registry should be as follows. | The initial content of the registry should be as follows. | |||
Type Name Reference | Type Name Reference | |||
------ ---------------------------------------- -------------------- | ------ ---------------------------------------- -------------------- | |||
0 Modulo This document | 0 Modulo This document | |||
1-255 Unassigned | 1-255 Unassigned | |||
7.2. Assignment of new hash algorithms | 7.2. Assignment of new Hash Algorithms | |||
Assignment of new hash algorithms is done according to the "IETF | Assignment of new Hash Algorithms is done according to the "IETF | |||
Review" model, see [RFC8126]. | Review" model, see [RFC8126]. | |||
8. Security Considerations | 8. Security Considerations | |||
Security of the new DR Load Balancing PIM Hello Options is only | Security of the new DR Load Balancing PIM Hello Options is only | |||
guaranteed by the security of PIM Hello messages, so the security | guaranteed by the security of PIM Hello messages, so the security | |||
considerations for PIM Hello messages as described in PIM-SM | considerations for PIM Hello messages as described in PIM-SM | |||
[RFC7761] apply here. | [RFC7761] apply here. | |||
If the DR is subverted it could omit or add certain GDRs or announce | If the DR is subverted it could omit or add certain GDRs or announce | |||
an unsupported algorithm. If another router is subverted, it could | an unsupported algorithm. If another router is subverted, it could | |||
be made DR and cause similar issues. While these issues are specific | be made DR and cause similar issues. While these issues are specific | |||
to this specification, they are not that different from existing | to this specification, they are not that different from existing | |||
attacks such as subverting a DR and lowering the DR priority, causing | attacks such as subverting a DR and lowering the DR priority, causing | |||
a different router to become the DR. | a different router to become the DR. | |||
If for any reason, the DR includes a GDR in the announced list which | ||||
announces a different algorithm from what the DR announces, the GDR | ||||
is required to ignore the announcement, and there will be no router | ||||
acting as the DR for the flows that hash to that GDR. | ||||
If a GDR is subverted, it could potentially be made to stop | If a GDR is subverted, it could potentially be made to stop | |||
forwarding all the traffic it is expected to forward. This is also | forwarding all the traffic it is expected to forward. This is also | |||
similar today to if a DR is subverted. | similar today to if a DR is subverted. | |||
9. Acknowledgement | 9. Acknowledgement | |||
The authors would like to thank Steve Simlo and Taki Millonis for | The authors would like to thank Steve Simlo and Taki Millonis for | |||
helping with the original idea; Alia Atlas, Bill Atwood, Jake | helping with the original idea; Alia Atlas, Bill Atwood, Jake | |||
Holland, Bharat Joshi, Anish Kachinthaya, Anvitha Kachinthaya and | Holland, Bharat Joshi, Anish Kachinthaya, Anvitha Kachinthaya and | |||
Alvaro Retana for reviews and comments; and Toerless Eckert and | Alvaro Retana for reviews and comments; and Toerless Eckert and | |||
skipping to change at page 18, line 36 ¶ | skipping to change at page 18, line 32 ¶ | |||
[RFC6395] Gulrajani, S. and S. Venaas, "An Interface Identifier (ID) | [RFC6395] Gulrajani, S. and S. Venaas, "An Interface Identifier (ID) | |||
Hello Option for PIM", RFC 6395, DOI 10.17487/RFC6395, | Hello Option for PIM", RFC 6395, DOI 10.17487/RFC6395, | |||
October 2011, <https://www.rfc-editor.org/info/rfc6395>. | October 2011, <https://www.rfc-editor.org/info/rfc6395>. | |||
[RFC7761] Fenner, B., Handley, M., Holbrook, H., Kouvelas, I., | [RFC7761] Fenner, B., Handley, M., Holbrook, H., Kouvelas, I., | |||
Parekh, R., Zhang, Z., and L. Zheng, "Protocol Independent | Parekh, R., Zhang, Z., and L. Zheng, "Protocol Independent | |||
Multicast - Sparse Mode (PIM-SM): Protocol Specification | Multicast - Sparse Mode (PIM-SM): Protocol Specification | |||
(Revised)", STD 83, RFC 7761, DOI 10.17487/RFC7761, March | (Revised)", STD 83, RFC 7761, DOI 10.17487/RFC7761, March | |||
2016, <https://www.rfc-editor.org/info/rfc7761>. | 2016, <https://www.rfc-editor.org/info/rfc7761>. | |||
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | ||||
Writing an IANA Considerations Section in RFCs", BCP 26, | ||||
RFC 8126, DOI 10.17487/RFC8126, June 2017, | ||||
<https://www.rfc-editor.org/info/rfc8126>. | ||||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
10.2. Informative References | 10.2. Informative References | |||
[RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A. | [RFC3376] Cain, B., Deering, S., Kouvelas, I., Fenner, B., and A. | |||
Thyagarajan, "Internet Group Management Protocol, Version | Thyagarajan, "Internet Group Management Protocol, Version | |||
3", RFC 3376, DOI 10.17487/RFC3376, October 2002, | 3", RFC 3376, DOI 10.17487/RFC3376, October 2002, | |||
<https://www.rfc-editor.org/info/rfc3376>. | <https://www.rfc-editor.org/info/rfc3376>. | |||
skipping to change at page 19, line 15 ¶ | skipping to change at page 19, line 15 ¶ | |||
[RFC4541] Christensen, M., Kimball, K., and F. Solensky, | [RFC4541] Christensen, M., Kimball, K., and F. Solensky, | |||
"Considerations for Internet Group Management Protocol | "Considerations for Internet Group Management Protocol | |||
(IGMP) and Multicast Listener Discovery (MLD) Snooping | (IGMP) and Multicast Listener Discovery (MLD) Snooping | |||
Switches", RFC 4541, DOI 10.17487/RFC4541, May 2006, | Switches", RFC 4541, DOI 10.17487/RFC4541, May 2006, | |||
<https://www.rfc-editor.org/info/rfc4541>. | <https://www.rfc-editor.org/info/rfc4541>. | |||
[RFC4607] Holbrook, H. and B. Cain, "Source-Specific Multicast for | [RFC4607] Holbrook, H. and B. Cain, "Source-Specific Multicast for | |||
IP", RFC 4607, DOI 10.17487/RFC4607, August 2006, | IP", RFC 4607, DOI 10.17487/RFC4607, August 2006, | |||
<https://www.rfc-editor.org/info/rfc4607>. | <https://www.rfc-editor.org/info/rfc4607>. | |||
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | ||||
Writing an IANA Considerations Section in RFCs", BCP 26, | ||||
RFC 8126, DOI 10.17487/RFC8126, June 2017, | ||||
<https://www.rfc-editor.org/info/rfc8126>. | ||||
Authors' Addresses | Authors' Addresses | |||
Yiqun Cai | Yiqun Cai | |||
Alibaba Group | Alibaba Group | |||
Email: yiqun.cai@alibaba-inc.com | Email: yiqun.cai@alibaba-inc.com | |||
Heidi Ou | Heidi Ou | |||
Alibaba Group | Alibaba Group | |||
End of changes. 63 change blocks. | ||||
177 lines changed or deleted | 171 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |