| < draft-farinacci-lisp-telemetry-07.txt | draft-farinacci-lisp-telemetry-08.txt > | |||
|---|---|---|---|---|
| Network Working Group D. Farinacci | Network Working Group D. Farinacci | |||
| Internet-Draft lispers.net | Internet-Draft lispers.net | |||
| Intended status: Experimental S. Ouissal | Intended status: Experimental S. Ouissal | |||
| Expires: May 19, 2022 E. Nordmark | Expires: 10 November 2022 E. Nordmark | |||
| Zededa | Zededa | |||
| November 15, 2021 | 9 May 2022 | |||
| LISP Data-Plane Telemetry | LISP Data-Plane Telemetry | |||
| draft-farinacci-lisp-telemetry-07 | draft-farinacci-lisp-telemetry-08 | |||
| Abstract | Abstract | |||
| This draft specs a JSON formatted RLOC-record for telemetry data | This draft specs a JSON formatted RLOC-record for telemetry data | |||
| which decapsulating xTRs include in RLOC-probe Map Reply messages. | which decapsulating xTRs include in RLOC-probe Map Reply messages. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| skipping to change at page 1, line 33 ¶ | skipping to change at page 1, line 33 ¶ | |||
| 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 May 19, 2022. | This Internet-Draft will expire on 10 November 2022. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2022 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/ | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | license-info) in effect on the date of publication of this document. | |||
| publication of this document. Please review these documents | Please review these documents carefully, as they describe your rights | |||
| carefully, as they describe your rights and restrictions with respect | and restrictions with respect to this document. Code Components | |||
| to this document. Code Components extracted from this document must | extracted from this document must include Revised BSD License text as | |||
| include Simplified BSD License text as described in Section 4.e of | described in Section 4.e of the Trust Legal Provisions and are | |||
| the Trust Legal Provisions and are provided without warranty as | provided without warranty as described in the Revised BSD License. | |||
| described in the Simplified BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Definition of Terms . . . . . . . . . . . . . . . . . . . . . 3 | 2. Definition of Terms . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 4. Telemetry Record Encoding . . . . . . . . . . . . . . . . . . 5 | 4. Telemetry Record Encoding . . . . . . . . . . . . . . . . . . 4 | |||
| 5. Security Considerations . . . . . . . . . . . . . . . . . . . 6 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 6 | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 7 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 7 | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 7 | 7.2. Informative References . . . . . . . . . . . . . . . . . 7 | |||
| Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 7 | Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 8 | |||
| Appendix B. Document Change Log . . . . . . . . . . . . . . . . 8 | Appendix B. Document Change Log . . . . . . . . . . . . . . . . 8 | |||
| B.1. Changes to draft-farinacci-lisp-telemetry-07 . . . . . . 8 | B.1. Changes to draft-farinacci-lisp-telemetry-08 . . . . . . 8 | |||
| B.2. Changes to draft-farinacci-lisp-telemetry-06 . . . . . . 8 | B.2. Changes to draft-farinacci-lisp-telemetry-07 . . . . . . 8 | |||
| B.3. Changes to draft-farinacci-lisp-telemetry-05 . . . . . . 8 | B.3. Changes to draft-farinacci-lisp-telemetry-06 . . . . . . 8 | |||
| B.4. Changes to draft-farinacci-lisp-telemetry-04 . . . . . . 8 | B.4. Changes to draft-farinacci-lisp-telemetry-05 . . . . . . 8 | |||
| B.5. Changes to draft-farinacci-lisp-telemetry-03 . . . . . . 8 | B.5. Changes to draft-farinacci-lisp-telemetry-04 . . . . . . 8 | |||
| B.6. Changes to draft-farinacci-lisp-telemetry-02 . . . . . . 8 | B.6. Changes to draft-farinacci-lisp-telemetry-03 . . . . . . 8 | |||
| B.7. Changes to draft-farinacci-lisp-telemetry-01 . . . . . . 8 | B.7. Changes to draft-farinacci-lisp-telemetry-02 . . . . . . 8 | |||
| B.8. Changes to draft-farinacci-lisp-telemetry-00 . . . . . . 9 | B.8. Changes to draft-farinacci-lisp-telemetry-01 . . . . . . 9 | |||
| B.9. Changes to draft-farinacci-lisp-telemetry-00 . . . . . . 9 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 1. Introduction | 1. Introduction | |||
| This document describes how the Locator/Identifier Separation | This document describes how the Locator/Identifier Separation | |||
| Protocol (LISP) can obtain, measure, and distribute data-plane | Protocol (LISP) can obtain, measure, and distribute data-plane | |||
| telemetry information. LISP is an encapsulation protocol built | telemetry information. LISP is an encapsulation protocol built | |||
| around the fundamental idea of separating the topological location of | around the fundamental idea of separating the topological location of | |||
| a network attachment point from the node's identity | a network attachment point from the node's identity | |||
| [I-D.ietf-lisp-rfc6830bis]. As a result LISP creates two namespaces: | [I-D.ietf-lisp-rfc6830bis]. As a result LISP creates two namespaces: | |||
| skipping to change at page 4, line 10 ¶ | skipping to change at page 3, line 30 ¶ | |||
| Telemetry Record a telemetry record is an RLOC-record that contains | Telemetry Record a telemetry record is an RLOC-record that contains | |||
| telemetry data specified in this document. The telemetry data is | telemetry data specified in this document. The telemetry data is | |||
| encoded as an LCAF JSON Type specified in [RFC8060]. | encoded as an LCAF JSON Type specified in [RFC8060]. | |||
| 3. Overview | 3. Overview | |||
| The following list of telemetry data has been identified as being | The following list of telemetry data has been identified as being | |||
| useful to obtain: | useful to obtain: | |||
| o Packet Count - the number of packets received within a given time | * Packet Count - the number of packets received within a given time | |||
| window between the encapsulating xTR and decapsulating xTR. | window between the encapsulating xTR and decapsulating xTR. | |||
| o Byte Count - the number bytes summed from all packets received | * Byte Count - the number bytes summed from all packets received | |||
| within a given time window between the encapsulating xTR and | within a given time window between the encapsulating xTR and | |||
| decapsulating xTR. | decapsulating xTR. | |||
| o Packet Rate - the rate in packets per second an encapsulating xTR | * Packet Rate - the rate in packets per second an encapsulating xTR | |||
| is sending encapsulated packets to a decapsulating xTR. | is sending encapsulated packets to a decapsulating xTR. | |||
| o Bit Rate - the bit rate per second an encapsulating xTR is sending | * Bit Rate - the bit rate per second an encapsulating xTR is sending | |||
| encapsulated packets to a decapsulating xTR. | encapsulated packets to a decapsulating xTR. | |||
| o Bandwidth - the amount of bandwidth used between encapsulating xTR | * Bandwidth - the amount of bandwidth used between encapsulating xTR | |||
| and decapsulating xTR in bytes per second. | and decapsulating xTR in bytes per second. | |||
| o Packet Loss - the number of packets lost within a given time | * Packet Loss - the number of packets lost within a given time | |||
| window between the encapsulating xTR and decapsulating xTR. | window between the encapsulating xTR and decapsulating xTR. | |||
| o Packet Jitter - the amount of inter-packet time for a train of | * Packet Jitter - the amount of inter-packet time for a train of | |||
| packets within a given time window between the encapsulating xTR | packets within a given time window between the encapsulating xTR | |||
| and decapsulating xTR. | and decapsulating xTR. | |||
| o Forward Hop-Count - the number underlay router hops from the | * Forward Hop-Count - the number underlay router hops from the | |||
| encapsulating xTR to the decapsulating xTR. | encapsulating xTR to the decapsulating xTR. | |||
| o Forward One-Way Latency - the amount of time from the | * Forward One-Way Latency - the amount of time from the | |||
| encapsulating xTR to the decapsulating xTR. Available when a | encapsulating xTR to the decapsulating xTR. Available when a | |||
| universal clock and rough time synchronization is available. | universal clock and rough time synchronization is available. | |||
| o Reverse TTL - the TTL value a decapsulating xTR is using for the | * Reverse TTL - the TTL value a decapsulating xTR is using for the | |||
| RLOC-probe Map-Reply. This is used to compute the return or | RLOC-probe Map-Reply. This is used to compute the return or | |||
| Reverse Hop-Count or number of underlay router hops between the | Reverse Hop-Count or number of underlay router hops between the | |||
| decapsulating xTR and encapsulating xTR. | decapsulating xTR and encapsulating xTR. | |||
| o Reverse Timestamp - the universal clock timestamp when the | * Reverse Timestamp - the universal clock timestamp when the | |||
| decapsulating xTR sent the RLOC-probe Map-Reply message. This is | decapsulating xTR sent the RLOC-probe Map-Reply message. This is | |||
| used to compute the return or Reverse One-Way Latency between the | used to compute the return or Reverse One-Way Latency between the | |||
| decapsulating xTR to the encapsulating xTR. | decapsulating xTR to the encapsulating xTR. | |||
| 4. Telemetry Record Encoding | 4. Telemetry Record Encoding | |||
| A Telemetry Record is an RLOC-record encoded in LCAF JSON Type format | A Telemetry Record is an RLOC-record encoded in LCAF JSON Type format | |||
| [RFC8060] within the EID-record inserted in a RLOC-probe Map-Reply | [RFC8060] within the EID-record inserted in a RLOC-probe Map-Reply | |||
| message. The RLOC-record is appended to the existing RLOC-records | message. The RLOC-record is appended to the existing RLOC-records | |||
| for the EID being probed. | for the EID being probed. | |||
| skipping to change at page 6, line 4 ¶ | skipping to change at page 5, line 18 ¶ | |||
| "byte-count" : "<bc>", | "byte-count" : "<bc>", | |||
| "packet-rate" : "<pr>", | "packet-rate" : "<pr>", | |||
| "bit-rate" : "<br>", | "bit-rate" : "<br>", | |||
| "bandwidth" : "<b>", | "bandwidth" : "<b>", | |||
| "packet-jitter" : "<pj>", | "packet-jitter" : "<pj>", | |||
| "forward-latency" : "<fl>", | "forward-latency" : "<fl>", | |||
| "forward-hop-count" : "<hc>", | "forward-hop-count" : "<hc>", | |||
| "reverse-ttl" : "<ttl>", | "reverse-ttl" : "<ttl>", | |||
| "reverse-timestamp" : "<ts>" | "reverse-timestamp" : "<ts>" | |||
| } | } | |||
| JSON data values: | JSON data values: | |||
| +--------+----------------------------------------------------------+ | +============+====================================================+ | |||
| | JSON | Encoding Description | | | JSON Value | Encoding Description | | |||
| | Value | | | +============+====================================================+ | |||
| +--------+----------------------------------------------------------+ | | <pc> | Number of packets encoded as an integer value | | |||
| | <pc> | Number of packets encoded as an integer value within a | | | | within a string. | | |||
| | | string. | | +------------+----------------------------------------------------+ | |||
| | | | | | <pl> | Number of lost packets encoded as an integer value | | |||
| | <pl> | Number of lost packets encoded as an integer value | | | | within a string. | | |||
| | | within a string. | | +------------+----------------------------------------------------+ | |||
| | | | | | <bc> | Number of bytes encoded as an integer value within | | |||
| | <bc> | Number of bytes encoded as an integer value within a | | | | a string. | | |||
| | | string. | | +------------+----------------------------------------------------+ | |||
| | | | | | <pr> | Packet rate in packets per second encoded as an | | |||
| | <pr> | Packet rate in packets per second encoded as an integer | | | | integer value within a string. | | |||
| | | value within a string. | | +------------+----------------------------------------------------+ | |||
| | | | | | <br> | Bit rate in kilobits per second encoded as an | | |||
| | <br> | Bit rate in kilobits per second encoded as an integer | | | | integer value within a string. | | |||
| | | value within a string. | | +------------+----------------------------------------------------+ | |||
| | | | | | <b> | Bandwidth in kilobytes encoded as an integer value | | |||
| | <b> | Bandwidth in kilobytes encoded as an integer value | | | | within a string. | | |||
| | | within a string. | | +------------+----------------------------------------------------+ | |||
| | | | | | <pj> | Packet jitter in milliseconds encoded as an | | |||
| | <pj> | Packet jitter in milliseconds encoded as an integer | | | | integer value within a string. | | |||
| | | value within a string. | | +------------+----------------------------------------------------+ | |||
| | | | | | <fl> | Latency in milliseconds encoded as an integer | | |||
| | <fl> | Latency in milliseconds encoded as an integer value | | | | value within a string. | | |||
| | | within a string. | | +------------+----------------------------------------------------+ | |||
| | | | | | <hc> | Hop count encoded as an integer value within a | | |||
| | <hc> | Hop count encoded as an integer value within a string. | | | | string. | | |||
| | | | | +------------+----------------------------------------------------+ | |||
| | <ttl> | Map-Reply IP header TTL encoded as an integer value | | | <ttl> | Map-Reply IP header TTL encoded as an integer | | |||
| | | within a string. | | | | value within a string. | | |||
| | | | | +------------+----------------------------------------------------+ | |||
| | <ts> | Timestamp encoded in Linux UTC format as an within a | | | <ts> | Timestamp encoded in Linux UTC format as an within | | |||
| | | string (i.e. Tue Jun 26 16:27:25 UTC 2018). | | | | a string (i.e. Tue Jun 26 16:27:25 UTC 2018). | | |||
| +--------+----------------------------------------------------------+ | +------------+----------------------------------------------------+ | |||
| Table 1 | ||||
| 5. Security Considerations | 5. Security Considerations | |||
| RLOC-probe Map-Reply messages are signed to protect and authenticate | RLOC-probe Map-Reply messages are signed to protect and authenticate | |||
| the Telemetry Record according to details in [I-D.ietf-lisp-sec]. | the Telemetry Record according to details in [I-D.ietf-lisp-sec]. | |||
| Telemetry Records can be kept confidential by encrypting RLOC-probe | Telemetry Records can be kept confidential by encrypting RLOC-probe | |||
| Map-Reply message with the asymmetric keys described in | Map-Reply message with the asymmetric keys described in | |||
| [I-D.ietf-lisp-ecdsa-auth] or the symmetric keys computed by the key | [I-D.ietf-lisp-ecdsa-auth] or the symmetric keys computed by the key | |||
| exchange detailed in [RFC8061]. | exchange detailed in [RFC8061]. | |||
| skipping to change at page 7, line 26 ¶ | skipping to change at page 7, line 26 ¶ | |||
| [RFC8061] Farinacci, D. and B. Weis, "Locator/ID Separation Protocol | [RFC8061] Farinacci, D. and B. Weis, "Locator/ID Separation Protocol | |||
| (LISP) Data-Plane Confidentiality", RFC 8061, | (LISP) Data-Plane Confidentiality", RFC 8061, | |||
| DOI 10.17487/RFC8061, February 2017, | DOI 10.17487/RFC8061, February 2017, | |||
| <https://www.rfc-editor.org/info/rfc8061>. | <https://www.rfc-editor.org/info/rfc8061>. | |||
| 7.2. Informative References | 7.2. Informative References | |||
| [I-D.ietf-lisp-ecdsa-auth] | [I-D.ietf-lisp-ecdsa-auth] | |||
| Farinacci, D. and E. Nordmark, "LISP Control-Plane ECDSA | Farinacci, D. and E. Nordmark, "LISP Control-Plane ECDSA | |||
| Authentication and Authorization", draft-ietf-lisp-ecdsa- | Authentication and Authorization", Work in Progress, | |||
| auth-06 (work in progress), August 2021. | Internet-Draft, draft-ietf-lisp-ecdsa-auth-07, 21 February | |||
| 2022, <https://www.ietf.org/archive/id/draft-ietf-lisp- | ||||
| ecdsa-auth-07.txt>. | ||||
| [I-D.ietf-lisp-rfc6830bis] | [I-D.ietf-lisp-rfc6830bis] | |||
| Farinacci, D., Fuller, V., Meyer, D., Lewis, D., and A. | Farinacci, D., Fuller, V., Meyer, D., Lewis, D., and A. | |||
| Cabellos, "The Locator/ID Separation Protocol (LISP)", | Cabellos, "The Locator/ID Separation Protocol (LISP)", | |||
| draft-ietf-lisp-rfc6830bis-36 (work in progress), November | Work in Progress, Internet-Draft, draft-ietf-lisp- | |||
| 2020. | rfc6830bis-38, 7 May 2022, | |||
| <https://www.ietf.org/archive/id/draft-ietf-lisp- | ||||
| rfc6830bis-38.txt>. | ||||
| [I-D.ietf-lisp-rfc6833bis] | [I-D.ietf-lisp-rfc6833bis] | |||
| Farinacci, D., Maino, F., Fuller, V., and A. Cabellos, | Farinacci, D., Maino, F., Fuller, V., and A. Cabellos, | |||
| "Locator/ID Separation Protocol (LISP) Control-Plane", | "Locator/ID Separation Protocol (LISP) Control-Plane", | |||
| draft-ietf-lisp-rfc6833bis-30 (work in progress), November | Work in Progress, Internet-Draft, draft-ietf-lisp- | |||
| 2020. | rfc6833bis-31, 2 May 2022, | |||
| <https://www.ietf.org/archive/id/draft-ietf-lisp- | ||||
| rfc6833bis-31.txt>. | ||||
| [I-D.ietf-lisp-sec] | [I-D.ietf-lisp-sec] | |||
| Maino, F., Ermagan, V., Cabellos, A., and D. Saucez, | Maino, F., Ermagan, V., Cabellos, A., and D. Saucez, | |||
| "LISP-Security (LISP-SEC)", draft-ietf-lisp-sec-23 (work | "LISP-Security (LISP-SEC)", Work in Progress, Internet- | |||
| in progress), September 2021. | Draft, draft-ietf-lisp-sec-25, 9 December 2021, | |||
| <https://www.ietf.org/archive/id/draft-ietf-lisp-sec- | ||||
| 25.txt>. | ||||
| Appendix A. Acknowledgments | Appendix A. Acknowledgments | |||
| The authors would like to thank the LISP WG for their review and | The authors would like to thank the LISP WG for their review and | |||
| acceptance of this draft. A special thanks to Colin Cantrell for his | acceptance of this draft. A special thanks to Colin Cantrell for his | |||
| review, commentary and guidance. | review, commentary and guidance. | |||
| Appendix B. Document Change Log | Appendix B. Document Change Log | |||
| [RFC Editor: Please delete this section on publication as RFC.] | [RFC Editor: Please delete this section on publication as RFC.] | |||
| B.1. Changes to draft-farinacci-lisp-telemetry-07 | B.1. Changes to draft-farinacci-lisp-telemetry-08 | |||
| o Posted November 2021. | * Posted May 2022. | |||
| o Document timer and reference update. | * Document timer and reference update. | |||
| B.2. Changes to draft-farinacci-lisp-telemetry-06 | B.2. Changes to draft-farinacci-lisp-telemetry-07 | |||
| o Posted May 2021. | * Posted November 2021. | |||
| o Document timer and reference update. | * Document timer and reference update. | |||
| B.3. Changes to draft-farinacci-lisp-telemetry-05 | B.3. Changes to draft-farinacci-lisp-telemetry-06 | |||
| o Posted November 2020. | * Posted May 2021. | |||
| o Document timer and reference update. | * Document timer and reference update. | |||
| B.4. Changes to draft-farinacci-lisp-telemetry-04 | B.4. Changes to draft-farinacci-lisp-telemetry-05 | |||
| o Posted June 2020. | * Posted November 2020. | |||
| o Document timer and reference update. | * Document timer and reference update. | |||
| B.5. Changes to draft-farinacci-lisp-telemetry-03 | B.5. Changes to draft-farinacci-lisp-telemetry-04 | |||
| o Posted December 2019. | * Posted June 2020. | |||
| o Document timer and reference update. | * Document timer and reference update. | |||
| B.6. Changes to draft-farinacci-lisp-telemetry-02 | B.6. Changes to draft-farinacci-lisp-telemetry-03 | |||
| o Posted June 2019. | * Posted December 2019. | |||
| o Document timer and reference update. | * Document timer and reference update. | |||
| B.7. Changes to draft-farinacci-lisp-telemetry-01 | B.7. Changes to draft-farinacci-lisp-telemetry-02 | |||
| * Posted June 2019. | ||||
| o Posted December 2018. | * Document timer and reference update. | |||
| o Document timer and reference update. | B.8. Changes to draft-farinacci-lisp-telemetry-01 | |||
| B.8. Changes to draft-farinacci-lisp-telemetry-00 | * Posted December 2018. | |||
| o Initial draft posted June 2018. | * Document timer and reference update. | |||
| B.9. Changes to draft-farinacci-lisp-telemetry-00 | ||||
| * Initial draft posted June 2018. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Dino Farinacci | Dino Farinacci | |||
| lispers.net | lispers.net | |||
| San Jose, CA | San Jose, CA | |||
| USA | United States of America | |||
| Email: farinacci@gmail.com | Email: farinacci@gmail.com | |||
| Said Ouissal | Said Ouissal | |||
| Zededa | Zededa | |||
| Santa Clara, CA | Santa Clara, CA | |||
| USA | United States of America | |||
| Email: said@zededa.com | Email: said@zededa.com | |||
| Erik Nordmark | Erik Nordmark | |||
| Zededa | Zededa | |||
| Santa Clara, CA | Santa Clara, CA | |||
| USA | United States of America | |||
| Email: erik@zededa.com | Email: erik@zededa.com | |||
| End of changes. 52 change blocks. | ||||
| 108 lines changed or deleted | 121 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||