rfc9800v2.txt | rfc9800.txt | |||
---|---|---|---|---|
skipping to change at line 431 ¶ | skipping to change at line 431 ¶ | |||
When processing an IPv6 packet that matches a FIB entry locally | When processing an IPv6 packet that matches a FIB entry locally | |||
instantiated as an End SID with the NEXT-CSID flavor, the procedure | instantiated as an End SID with the NEXT-CSID flavor, the procedure | |||
described in Section 4.1 of [RFC8986] is executed with the following | described in Section 4.1 of [RFC8986] is executed with the following | |||
modifications. | modifications. | |||
The below pseudocode is inserted between lines S01 and S02 of the SRH | The below pseudocode is inserted between lines S01 and S02 of the SRH | |||
processing in Section 4.1 of [RFC8986]. In addition, this pseudocode | processing in Section 4.1 of [RFC8986]. In addition, this pseudocode | |||
is executed before processing the first header in the IPv6 extension | is executed before processing the first header in the IPv6 extension | |||
header chain that is not an SRH, a Hop-by-Hop header, or a | header chain that is not an SRH, a Hop-by-Hop header, or a | |||
Destination Options header. If the IPv6 extension header chain does | Destination Options header. If the IPv6 extension header chain does | |||
not include any header matching this criteria, this pseudocode is | not include any header matching this criterion, this pseudocode is | |||
executed before processing the upper-layer header. | executed before processing the upper-layer header. | |||
N01. If (DA.Argument != 0) { | N01. If (DA.Argument != 0) { | |||
N02. If (IPv6 Hop Limit <= 1) { | N02. If (IPv6 Hop Limit <= 1) { | |||
N03. Send an ICMP Time Exceeded message to the Source Address, | N03. Send an ICMP Time Exceeded message to the Source Address, | |||
Code 0 (Hop limit exceeded in transit), | Code 0 (Hop limit exceeded in transit), | |||
interrupt packet processing and discard the packet. | interrupt packet processing and discard the packet. | |||
N04. } | N04. } | |||
N05. Copy DA.Argument into the bits [LBL..(LBL+AL-1)] of the | N05. Copy DA.Argument into the bits [LBL..(LBL+AL-1)] of the | |||
Destination Address. | Destination Address. | |||
skipping to change at line 482 ¶ | skipping to change at line 482 ¶ | |||
new destination via a member of J. | new destination via a member of J. | |||
| Note: the variable J is defined in Section 4.2 of [RFC8986]. | | Note: the variable J is defined in Section 4.2 of [RFC8986]. | |||
The resulting pseudocode is inserted between lines S01 and S02 of the | The resulting pseudocode is inserted between lines S01 and S02 of the | |||
SRH processing in Section 4.1 of [RFC8986] after applying the | SRH processing in Section 4.1 of [RFC8986] after applying the | |||
modification described in Section 4.2 of [RFC8986]. In addition, | modification described in Section 4.2 of [RFC8986]. In addition, | |||
this pseudocode is executed before processing the first header in the | this pseudocode is executed before processing the first header in the | |||
IPv6 extension header chain that is not an SRH, a Hop-by-Hop header, | IPv6 extension header chain that is not an SRH, a Hop-by-Hop header, | |||
or a Destination Options header. If the IPv6 extension header chain | or a Destination Options header. If the IPv6 extension header chain | |||
does not include any header matching this criteria, this pseudocode | does not include any header matching this criterion, this pseudocode | |||
is executed before processing the upper-layer header. | is executed before processing the upper-layer header. | |||
A rendering of the complete pseudocode is provided in Appendix A.2. | A rendering of the complete pseudocode is provided in Appendix A.2. | |||
4.1.3. End.T with NEXT-CSID | 4.1.3. End.T with NEXT-CSID | |||
When processing an IPv6 packet that matches a FIB entry locally | When processing an IPv6 packet that matches a FIB entry locally | |||
instantiated as an End.T SID with the NEXT-CSID flavor, the procedure | instantiated as an End.T SID with the NEXT-CSID flavor, the procedure | |||
described in Section 4.3 of [RFC8986] is executed with the following | described in Section 4.3 of [RFC8986] is executed with the following | |||
modifications. | modifications. | |||
skipping to change at line 509 ¶ | skipping to change at line 509 ¶ | |||
transmission to the new destination. | transmission to the new destination. | |||
| Note: the variable T is defined in Section 4.3 of [RFC8986]. | | Note: the variable T is defined in Section 4.3 of [RFC8986]. | |||
The resulting pseudocode is inserted between lines S01 and S02 of the | The resulting pseudocode is inserted between lines S01 and S02 of the | |||
SRH processing in Section 4.1 of [RFC8986] after applying the | SRH processing in Section 4.1 of [RFC8986] after applying the | |||
modification described in Section 4.3 of [RFC8986]. In addition, | modification described in Section 4.3 of [RFC8986]. In addition, | |||
this pseudocode is executed before processing the first header in the | this pseudocode is executed before processing the first header in the | |||
IPv6 extension header chain that is not an SRH, a Hop-by-Hop header, | IPv6 extension header chain that is not an SRH, a Hop-by-Hop header, | |||
or a Destination Options header. If the IPv6 extension header chain | or a Destination Options header. If the IPv6 extension header chain | |||
does not include any header matching this criteria, this pseudocode | does not include any header matching this criterion, this pseudocode | |||
is executed before processing the upper-layer header. | is executed before processing the upper-layer header. | |||
A rendering of the complete pseudocode is provided in Appendix A.3. | A rendering of the complete pseudocode is provided in Appendix A.3. | |||
4.1.4. End.B6.Encaps with NEXT-CSID | 4.1.4. End.B6.Encaps with NEXT-CSID | |||
When processing an IPv6 packet that matches a FIB entry locally | When processing an IPv6 packet that matches a FIB entry locally | |||
instantiated as an End.B6.Encaps SID with the NEXT-CSID flavor, the | instantiated as an End.B6.Encaps SID with the NEXT-CSID flavor, the | |||
procedure described in Section 4.13 of [RFC8986] is executed with the | procedure described in Section 4.13 of [RFC8986] is executed with the | |||
following modifications. | following modifications. | |||
skipping to change at line 541 ¶ | skipping to change at line 541 ¶ | |||
| Note: the variables A and B, as well as the values of the | | Note: the variables A and B, as well as the values of the | |||
| Payload Length, Traffic Class, Flow Label, Hop Limit, and Next | | Payload Length, Traffic Class, Flow Label, Hop Limit, and Next | |||
| Header are defined in Section 4.13 of [RFC8986]. | | Header are defined in Section 4.13 of [RFC8986]. | |||
The resulting pseudocode is inserted between lines S01 and S02 of the | The resulting pseudocode is inserted between lines S01 and S02 of the | |||
SRH processing in Section 4.13 of [RFC8986]. In addition, this | SRH processing in Section 4.13 of [RFC8986]. In addition, this | |||
pseudocode is executed before processing the first header in the IPv6 | pseudocode is executed before processing the first header in the IPv6 | |||
extension header chain that is not an SRH, a Hop-by-Hop header, or a | extension header chain that is not an SRH, a Hop-by-Hop header, or a | |||
Destination Options header. If the IPv6 extension header chain does | Destination Options header. If the IPv6 extension header chain does | |||
not include any header matching this criteria, this pseudocode is | not include any header matching this criterion, this pseudocode is | |||
executed before processing the upper-layer header. | executed before processing the upper-layer header. | |||
A rendering of the complete pseudocode is provided in Appendix A.4. | A rendering of the complete pseudocode is provided in Appendix A.4. | |||
Similar to the base End.B6.Encaps SID defined in Section 4.13 of | Similar to the base End.B6.Encaps SID defined in Section 4.13 of | |||
[RFC8986], the NEXT-CSID flavor variant updates the Destination | [RFC8986], the NEXT-CSID flavor variant updates the Destination | |||
Address field of the inner IPv6 header to the next SID in the | Address field of the inner IPv6 header to the next SID in the | |||
original segment list before encapsulating the packet with the | original segment list before encapsulating the packet with the | |||
segment list of SR Policy B. At the endpoint of SR Policy B, the | segment list of SR Policy B. At the endpoint of SR Policy B, the | |||
encapsulation is removed and the inner packet is forwarded towards | encapsulation is removed and the inner packet is forwarded towards | |||
skipping to change at line 584 ¶ | skipping to change at line 584 ¶ | |||
N08.1. Push the MPLS label stack for B. | N08.1. Push the MPLS label stack for B. | |||
N08.2. Submit the packet to the MPLS engine for transmission. | N08.2. Submit the packet to the MPLS engine for transmission. | |||
| Note: the variable B is defined in Section 4.15 of [RFC8986]. | | Note: the variable B is defined in Section 4.15 of [RFC8986]. | |||
The resulting pseudocode is inserted between lines S01 and S02 of the | The resulting pseudocode is inserted between lines S01 and S02 of the | |||
SRH processing in Section 4.15 of [RFC8986]. In addition, this | SRH processing in Section 4.15 of [RFC8986]. In addition, this | |||
pseudocode is executed before processing the first header in the IPv6 | pseudocode is executed before processing the first header in the IPv6 | |||
extension header chain that is not an SRH, a Hop-by-Hop header, or a | extension header chain that is not an SRH, a Hop-by-Hop header, or a | |||
Destination Options header. If the IPv6 extension header chain does | Destination Options header. If the IPv6 extension header chain does | |||
not include any header matching this criteria, this pseudocode is | not include any header matching this criterion, this pseudocode is | |||
executed before processing the upper-layer header. | executed before processing the upper-layer header. | |||
A rendering of the complete pseudocode is provided in Appendix A.5. | A rendering of the complete pseudocode is provided in Appendix A.5. | |||
4.1.7. Combination with PSP, USP, and USD Flavors | 4.1.7. Combination with PSP, USP, and USD Flavors | |||
PSP: The PSP flavor defined in Section 4.16.1 of [RFC8986] is | PSP: The PSP flavor defined in Section 4.16.1 of [RFC8986] is | |||
unchanged when combined with the NEXT-CSID flavor. | unchanged when combined with the NEXT-CSID flavor. | |||
USP: The USP flavor defined in Section 4.16.2 of [RFC8986] is | USP: The USP flavor defined in Section 4.16.2 of [RFC8986] is | |||
skipping to change at line 1195 ¶ | skipping to change at line 1195 ¶ | |||
This method walks the uncompressed SID list and compresses each | This method walks the uncompressed SID list and compresses each | |||
series of consecutive NEXT-CSID flavor SIDs and each series of | series of consecutive NEXT-CSID flavor SIDs and each series of | |||
consecutive REPLACE-CSID flavor SIDs. | consecutive REPLACE-CSID flavor SIDs. | |||
* When the compression method encounters a series of one or more | * When the compression method encounters a series of one or more | |||
consecutive compressible NEXT-CSID flavor SIDs, it compresses the | consecutive compressible NEXT-CSID flavor SIDs, it compresses the | |||
series as follows. A SID with the NEXT-CSID flavor is | series as follows. A SID with the NEXT-CSID flavor is | |||
compressible if its structure is known to the SR source node and | compressible if its structure is known to the SR source node and | |||
its Argument value is 0. | its Argument value is 0. | |||
S01. Initialize a NEXT-CSID container equal to the first SID in the | S01. Initialize a NEXT-CSID container equal to the first SID in | |||
series and initialize the remaining capacity of the CSID | the series and initialize the remaining capacity of the | |||
container to the AL of that SID | CSID container to the AL of that SID | |||
S02. For each subsequent SID in the series { | S02. For each subsequent SID in the series { | |||
S03. If the current SID Locator-Block matches that of the CSID | S03. If the current SID Locator-Block matches that of the CSID | |||
container and the current SID LNFL is lower than or equal to | container and the current SID LNFL is lower than or equal | |||
the remaining capacity of the NEXT-CSID container { | to the remaining capacity of the NEXT-CSID container { | |||
S04. Copy the current SID Locator-Node and Function to the most | S04. Copy the current SID Locator-Node and Function to the | |||
significant remaining Argument bits of the NEXT-CSID | most significant remaining Argument bits of the | |||
container and decrement the remaining capacity by LNFL | NEXT-CSID container and decrement the remaining | |||
capacity by LNFL | ||||
S05. } Else { | S05. } Else { | |||
S06. Push the NEXT-CSID container onto the compressed SID list | S06. Push the NEXT-CSID container onto the compressed SID list | |||
S07. Initialize a new NEXT-CSID container equal to the current | S07. Initialize a new NEXT-CSID container equal to the current | |||
SID in the series and initialize the remaining capacity | SID in the series and initialize the remaining capacity | |||
of the NEXT-CSID container to the AL of that SID | of the NEXT-CSID container to the AL of that SID | |||
S08. } // End If | S08. } // End If | |||
S09. } // End For | S09. } // End For | |||
S10. If at least one SID remains in the uncompressed SID list | S10. If at least one SID remains in the uncompressed SID list | |||
(following the series of compressible NEXT-CSID flavor SIDs){ | (following the series of compressible NEXT-CSID flavor | |||
SIDs) { | ||||
S11. Set S to the next SID in the uncompressed SID list | S11. Set S to the next SID in the uncompressed SID list | |||
S12. If S is advertised with a SID structure, and the Locator-Block | S12. If S is advertised with a SID structure, and the | |||
of S matches that of the NEXT-CSID container, and the sum of | Locator-Block of S matches that of the NEXT-CSID | |||
the Locator-Node, Function, and Argument length of S is | container, and the sum of the Locator-Node, Function, and | |||
lower than or equal to the remaining capacity of the CSID | Argument length of S is lower than or equal to the | |||
container { | remaining capacity of the CSID container { | |||
S13. Copy the Locator-Node, Function, and Argument of S to the | S13. Copy the Locator-Node, Function, and Argument of S to the | |||
most significant remaining Argument bits of the CSID | most significant remaining Argument bits of the CSID | |||
container | container | |||
S14. } // End If | S14. } // End If | |||
S15. } // End If | S15. } // End If | |||
S16. Push the NEXT-CSID container onto the compressed SID list | S16. Push the NEXT-CSID container onto the compressed SID list | |||
* When the compression method encounters a series of REPLACE-CSID | * When the compression method encounters a series of REPLACE-CSID | |||
flavor SIDs of the same CSID length in the uncompressed SID list, | flavor SIDs of the same CSID length in the uncompressed SID list, | |||
it compresses the series as per the following high-level | it compresses the series as per the following high-level | |||
pseudocode. A compression checking function ComCheck(F, S) is | pseudocode. A compression checking function ComCheck(F, S) is | |||
defined to check if two SIDs F and S share the same SID structure | defined to check if two SIDs F and S share the same SID structure | |||
and Locator-Block value, and if S has either no Argument or an | and Locator-Block value, and if S has either no Argument or an | |||
Argument with value 0. If the check passes, then ComCheck(F,S) | Argument with value 0. If the check passes, then ComCheck(F,S) | |||
returns true. | returns true. | |||
S01. Initialize a REPLACE-CSID container in full SID format equal to | S01. Initialize a REPLACE-CSID container in full SID format equal | |||
the first SID in the series | to the first SID in the series | |||
S02. Push the REPLACE-CSID container onto the compressed SID list | S02. Push the REPLACE-CSID container onto the compressed SID list | |||
S03. Initialize a new REPLACE-CSID container in packed format if | S03. Initialize a new REPLACE-CSID container in packed format if | |||
there are more than one SIDs and initialize the remaining | there are more than one SIDs and initialize the remaining | |||
capacity of the REPLACE-CSID container to 128 bits | capacity of the REPLACE-CSID container to 128 bits | |||
S04. For each subsequent SID in the uncompressed SID list { | S04. For each subsequent SID in the uncompressed SID list { | |||
S05. Set S to the current SID in the uncompressed SID list | S05. Set S to the current SID in the uncompressed SID list | |||
S06. If ComCheck(First SID, S) { | S06. If ComCheck(First SID, S) { | |||
S07. If the LNFL of S is lower than or equal to | S07. If the LNFL of S is lower than or equal to | |||
the remaining capacity of the REPLACE-CSID container { | the remaining capacity of the REPLACE-CSID container { | |||
S08. Copy the Locator-Node and Function of S to the least | S08. Copy the Locator-Node and Function of S to the least | |||
significant remaining bits of the REPLACE-CSID container | significant remaining bits of the REPLACE-CSID | |||
and decrement the remaining capacity by LNFL // Note | container and decrement the remaining capacity by | |||
LNFL // Note | ||||
S09. } Else { | S09. } Else { | |||
S10. Push the REPLACE-CSID container onto the compressed SID | S10. Push the REPLACE-CSID container onto the compressed SID | |||
list | list | |||
S11. Initialize a new REPLACE-CSID container in packed format | S11. Initialize a new REPLACE-CSID container in packed | |||
with all bits set to 0 | format with all bits set to 0 | |||
S12. Copy the Locator-Node and Function of S to the least | S12. Copy the Locator-Node and Function of S to the least | |||
significant remaining bits of the REPLACE-CSID container | significant remaining bits of the REPLACE-CSID | |||
and decrement the remaining capacity by LNFL // Note | container and decrement the remaining capacity by | |||
LNFL // Note | ||||
S13. } | S13. } | |||
S14. If S is not a REPLACE-CSID flavor SID, then break | S14. If S is not a REPLACE-CSID flavor SID, then break | |||
S15. } Else { | S15. } Else { | |||
S16. Break | S16. Break | |||
S17. } // End If | S17. } // End If | |||
S18. } // End For | S18. } // End For | |||
S19. Push the REPLACE-CSID container (if it is not empty) onto the | S19. Push the REPLACE-CSID container (if it is not empty) onto the | |||
compressed SID list | compressed SID list | |||
| Note: When the last CSID is an End.DT2M SID with the REPLACE- | | Note: When the last CSID is an End.DT2M SID with the REPLACE- | |||
End of changes. 13 change blocks. | ||||
27 lines changed or deleted | 31 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |