draft-kumarkini-mpls-spring-lsp-ping-03.txt   draft-kumarkini-mpls-spring-lsp-ping-04.txt 
Network Work group N. Kumar Network Work group N. Kumar
Internet-Draft G. Swallow Internet-Draft G. Swallow
Intended status: Standards Track C. Pignataro Intended status: Standards Track C. Pignataro
Expires: October 27, 2015 Cisco Systems, Inc. Expires: January 31, 2016 Cisco Systems, Inc.
N. Akiya N. Akiya
Big Switch Networks Big Switch Networks
S. Kini S. Kini
Ericsson Ericsson
H. Gredler H. Gredler
Juniper Networks Juniper Networks
M. Chen M. Chen
Huawei Huawei
April 25, 2015 July 30, 2015
Label Switched Path (LSP) Ping/Trace for Segment Routing Networks Using Label Switched Path (LSP) Ping/Trace for Segment Routing Networks Using
MPLS Dataplane MPLS Dataplane
draft-kumarkini-mpls-spring-lsp-ping-03 draft-kumarkini-mpls-spring-lsp-ping-04
Abstract Abstract
Segment Routing architecture leverages the source routing and Segment Routing architecture leverages the source routing and
tunneling paradigms and can be directly applied to MPLS data plane. tunneling paradigms and can be directly applied to MPLS data plane.
A node steers a packet through a controlled set of instructions A node steers a packet through a controlled set of instructions
called segments, by prepending the packet with Segment Routing called segments, by prepending the packet with a Segment Routing
header. header.
The segment assignment and forwarding semantic nature of Segment The segment assignment and forwarding semantic nature of Segment
Routing raises additional consideration for connectivity verification Routing raises additional consideration for connectivity verification
and fault isolation in LSP with Segment Routing architecture. This and fault isolation in LSP with Segment Routing architecture. This
document illustrates the problem and describe a mechanism to perform document illustrates the problem and describe a mechanism to perform
LSP Ping and Traceroute on Segment Routing network over MPLS data LSP Ping and Traceroute on Segment Routing network over MPLS data
plane. plane.
Status of This Memo Status of This Memo
skipping to change at page 2, line 4 skipping to change at page 2, line 4
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 http://datatracker.ietf.org/drafts/current/. Drafts is at http://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 October 27, 2015. This Internet-Draft will expire on January 31, 2016.
Copyright Notice Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the Copyright (c) 2015 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
(http://trustee.ietf.org/license-info) in effect on the date of (http://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
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Requirements notation . . . . . . . . . . . . . . . . . . . . 3 2. Requirements notation . . . . . . . . . . . . . . . . . . . . 3
3. Challenges with Existing mechanism . . . . . . . . . . . . . 3 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.1. Path validation in Segment Routing networks . . . . . . . 4 4. Challenges with Existing mechanism . . . . . . . . . . . . . 4
3.2. Service Label . . . . . . . . . . . . . . . . . . . . . . 5 4.1. Path validation in Segment Routing networks . . . . . . . 4
4. Segment ID sub-TLV . . . . . . . . . . . . . . . . . . . . . 5 4.2. Service Label . . . . . . . . . . . . . . . . . . . . . . 5
4.1. IPv4 Prefix Node Segment ID . . . . . . . . . . . . . . . 5 5. Segment ID sub-TLV . . . . . . . . . . . . . . . . . . . . . 5
4.2. IPv6 Prefix Node Segment ID . . . . . . . . . . . . . . . 6 5.1. IPv4 Prefix Node Segment ID . . . . . . . . . . . . . . . 5
4.3. IGP Adjacency Segment ID . . . . . . . . . . . . . . . . 7 5.2. IPv6 Prefix Node Segment ID . . . . . . . . . . . . . . . 6
5. Extension to Downstream Mapping TLV . . . . . . . . . . . . . 8 5.3. IGP Adjacency Segment ID . . . . . . . . . . . . . . . . 7
6. Procedures . . . . . . . . . . . . . . . . . . . . . . . . . 8 6. Extension to Downstream Mapping TLV . . . . . . . . . . . . . 8
6.1. FECs in Target FEC Stack TLV . . . . . . . . . . . . . . 8 7. Procedures . . . . . . . . . . . . . . . . . . . . . . . . . 9
6.2. FEC Stack Change sub-TLV . . . . . . . . . . . . . . . . 9 7.1. FECs in Target FEC Stack TLV . . . . . . . . . . . . . . 9
6.3. Segment ID POP Operation . . . . . . . . . . . . . . . . 9 7.2. FEC Stack Change sub-TLV . . . . . . . . . . . . . . . . 10
6.4. Segment ID Check . . . . . . . . . . . . . . . . . . . . 10 7.3. Segment ID POP Operation . . . . . . . . . . . . . . . . 10
6.5. TTL Consideration for traceroute . . . . . . . . . . . . 10 7.4. Segment ID Check . . . . . . . . . . . . . . . . . . . . 10
7. Issues with non-forwarding labels . . . . . . . . . . . . . . 11 7.5. TTL Consideration for traceroute . . . . . . . . . . . . 12
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 8. Issues with non-forwarding labels . . . . . . . . . . . . . . 12
8.1. New Target FEC Stack Sub-TLVs . . . . . . . . . . . . . . 12 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13
9. Security Considerations . . . . . . . . . . . . . . . . . . . 12 9.1. New Target FEC Stack Sub-TLVs . . . . . . . . . . . . . . 13
10. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 12 10. Security Considerations . . . . . . . . . . . . . . . . . . . 13
11. Contributing Authors . . . . . . . . . . . . . . . . . . . . 12 11. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 13
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 12. Contributing Authors . . . . . . . . . . . . . . . . . . . . 13
12.1. Normative References . . . . . . . . . . . . . . . . . . 13 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 14
12.2. Informative References . . . . . . . . . . . . . . . . . 14 13.1. Normative References . . . . . . . . . . . . . . . . . . 14
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 13.2. Informative References . . . . . . . . . . . . . . . . . 15
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15
1. Introduction 1. Introduction
[I-D.filsfils-spring-segment-routing] introduces and explains Segment [I-D.ietf-spring-segment-routing] introduces and explains Segment
Routing architecture that leverages the source routing and tunneling Routing architecture that leverages the source routing and tunneling
paradigms. A node steers a packet through a controlled set of paradigms. A node steers a packet through a controlled set of
instructions called segments, by prepending the packet with Segment instructions called segments, by prepending the packet with Segment
Routing header. A detailed definition about Segment Routing Routing header. A detailed definition about Segment Routing
architecture is available in [I-D.filsfils-spring-segment-routing] architecture is available in [I-D.ietf-spring-segment-routing] and
and different use-cases are discussed in different use-cases are discussed in
[I-D.filsfils-spring-segment-routing-use-cases] [I-D.filsfils-spring-segment-routing-use-cases]
The Segment Routing architecture can be directly applied to MPLS data The Segment Routing architecture can be directly applied to MPLS data
plane in a way that, the Segment identifier (Segment ID) will be of plane in a way that, the Segment identifier (Segment ID) will be of
20-bits size and SR header is the label stack. 20-bits size and Segment Routing header is the label stack.
Multi Protocol Label Switching (MPLS) has defined in [RFC4379] a Multi Protocol Label Switching (MPLS) has defined in [RFC4379] a
simple and efficient mechanism to detect data plane failures in Label simple and efficient mechanism to detect data plane failures in Label
Switched Paths (LSP) by specifying information to be carried in an Switched Paths (LSP) by specifying information to be carried in an
MPLS "echo request" and "echo reply" for the purposes of fault MPLS "echo request" and "echo reply" for the purposes of fault
detection and isolation, and mechanisms for reliably sending the echo detection and isolation, and mechanisms for reliably sending the echo
reply. The functionality is modeled after the ping/traceroute reply. The functionality is modeled after the ping/traceroute
paradigm (ICMP echo request [RFC0792]) and is typically referred to paradigm (ICMP echo request [RFC0792]) and is typically referred to
as LSP ping and LSP traceroute. as LSP ping and LSP traceroute.
skipping to change at page 3, line 45 skipping to change at page 3, line 45
document illustrates the problem and describe a mechanism to perform document illustrates the problem and describe a mechanism to perform
LSP Ping and Traceroute on Segment Routing network over MPLS data LSP Ping and Traceroute on Segment Routing network over MPLS data
plane. plane.
2. Requirements notation 2. Requirements notation
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in [RFC2119].
3. Challenges with Existing mechanism 3. Terminology
This document defines Target FEC Stack sub-TLVs and explains how they This document uses the terminologies defined in
can be used to tackle below challenges. [I-D.ietf-spring-segment-routing], [RFC4379], and so the readers are
expected to be familiar with the same.
3.1. Path validation in Segment Routing networks 4. Challenges with Existing mechanism
This document defines sub-TLVs for the Target FEC Stack TLV and
explains how they can be used to tackle below challenges.
4.1. Path validation in Segment Routing networks
[RFC4379] defines the OAM machinery that helps with fault detection [RFC4379] defines the OAM machinery that helps with fault detection
and isolation in MPLS dataplane path with the use of various Target and isolation in MPLS dataplane path with the use of various Target
FEC Stack Sub-TLV that are carried in MPLS Echo Request packets and FEC Stack Sub-TLV that are carried in MPLS Echo Request packets and
used by the responder for FEC validation. While it is obvious that used by the responder for FEC validation. While it is obvious that
new Sub-TLVs need to be assigned, the unique nature of Segment new Sub-TLVs need to be assigned, the unique nature of Segment
Routing architecture raises a need for additional machinery for path Routing architecture raises a need for additional machinery for path
validation. This section discuss the challenges as below: validation. This section discuss the challenges as below:
L1 L1
+--------+ +--------+
| L2 | | L2 |
R3-------R6 R3-------R6
/ \ / \
/ \ / \
R1----R2 R7----R8 R1----R2 R7----R8
\ / L3 \ /
\ / \ /
R4-------R5 R4-------R5
Figure 1: Segment Routing network Figure 1: Segment Routing network
{5001, 5002, 5003, 5004, 5005, 5006, 5007, 5008} --> Node Segment ID for R1, R2, R3 R4, R5 R6, R7, R8 respectively. The Node segment IDs for R1, R2, R3, R4, R5, R6, R7 and R8 are 5001, 5002, 5003, 5004, 5005, 5006, 5007, 5008 respectively.
9136 --> Adjacency Segment ID from R3 to R6 over link L1. 9136 --> Adjacency Segment ID from R3 to R6 over link L1.
9236 --> Adjacency Segment ID from R3 to R6 over link L2. 9236 --> Adjacency Segment ID from R3 to R6 over link L2.
9124 --> Adjacency segment ID from R2 to R4.
9123 --> Adjacency Segment ID from R2 to R3.
The forwarding semantic of Adjacency Segment ID is to pop the segment The forwarding semantic of Adjacency Segment ID is to pop the segment
ID and send the packet to a specific neighbor over a specific link. ID and send the packet to a specific neighbor over a specific link.
A malfunctioning node may forward packets using Adjacency Segment ID A malfunctioning node may forward packets using Adjacency Segment ID
to incorrect neighbor or over incorrect link. Exposed segment ID to incorrect neighbor or over incorrect link. Exposed segment ID
(after incorrectly forwarded Adjacency Segment ID) might still allow (after incorrectly forwarded Adjacency Segment ID) might still allow
such packet to reach the intended destination, although the intended such packet to reach the intended destination, although the intended
strict traversal has been broken. strict traversal has been broken.
Assume in above topology, R1 sends traffic with segment stack as Assume in above topology, R1 sends traffic with segment stack as
{9124, 5007, 9378} so that the path taken will be R1-R2-R4-R5-R7-R8. {9124, 5008} so that the path taken will be R1-R2-R4-R5-R7-R8. If
If the Adjacency Segment ID 9124 is misprogrammed in R2 to send the the Adjacency Segment ID 9124 is misprogrammed in R2 to send the
packet to R1 or R3, it will still be delivered to R8 but is not via packet to R1 or R3, it will still be delivered to R8 but is not via
the expected path. the expected path.
MPLS traceroute may help with detecting such deviation in above MPLS traceroute may help with detecting such deviation in above
mentioned scenario. However, in a different example, it may not be mentioned scenario. However, in a different example, it may not be
helpful if R3, due to misprogramming, forwards packet with Adjacency helpful. For example if R3, due to misprogramming, forwards packet
Segment ID 9236 via link L1 while it is expected to be forwarded over with Adjacency Segment ID 9236 via link L1 while it is expected to be
Link L2. forwarded over Link L2.
3.2. Service Label 4.2. Service Label
A Segment ID can represent a service based instruction. An SR header A Segment ID can represent a service based instruction. An Segment
can have label stack entries where the label represents a service to Routing header can have label stack entries where the label
be applied along the path. Since these labels are part of the label represents a service to be applied along the path. Since these
stack, they can influence the path taken by a packet and consequently labels are part of the label stack, they can influence the path taken
have implications on MPLS OAM. This document describes how the by a packet and consequently have implications on MPLS OAM. In
procedures of [RFC4379] can be applied to in the absence of service- section 6.5 of this document, it is described how the procedures of
labels in Section 6.5. Additional considerations for service labels [RFC4379] can be applied to in the absence of service-labels in
are included in Section 7 and requires further discussion. Section 6.5. Additional considerations for service labels are
included in Section 7 and requires further discussion.
4. Segment ID sub-TLV 5. Segment ID sub-TLV
The format of the following Segment ID sub-TLVs follows the The format of the following Segment ID sub-TLVs follows the
philosophy of Target FEC Stack TLV carrying FECs corresponding to philosophy of Target FEC Stack TLV carrying FECs corresponding to
each label in the label stack. When operated with the procedures each label in the label stack. When operated with the procedures
defined in [RFC4379], this allows LSP ping/traceroute operations to defined in [RFC4379], this allows LSP ping/traceroute operations to
function when Target FEC Stack TLV contains more FECs than received function when Target FEC Stack TLV contains more FECs than received
label stack at responder nodes. label stack at responder nodes.
Three new sub-TLVs are defined for TLVs type 1, 16 and 21. Three new sub-TLVs are defined for TLVs type 1, 16 and 21.
sub-Type Value Field sub-Type Value Field
-------- --------------- -------- ---------------
TBD1 IPv4 Prefix Node Segment ID TBD1 IPv4 Prefix Node Segment ID
TBD2 IPv6 Prefix Node Segment ID TBD2 IPv6 Prefix Node Segment ID
TBD3 Adjacency Segment ID TBD3 Adjacency Segment ID
Service Segments and FRR will be considered in future version. Service Segments and FRR will be considered in future version.
4.1. IPv4 Prefix Node Segment ID 5.1. IPv4 Prefix Node Segment ID
The format is as below: The format is as below:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 Prefix | | IPv4 Prefix |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Prefix Length | Protocol | Reserved | |Prefix Length | Protocol | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IPv4 Prefix IPv4 Prefix
This field carries the IPv4 prefix to which the Node Segment ID is This field carries the IPv4 prefix to which the Node Segment ID is
assigned. assigned. If the prefix is shorter than 32 bits, trailing bits
SHOULD be set to zero.
Prefix Length Prefix Length
The Prefix Length field is one octet, it gives the length of the The Prefix Length field is one octet, it gives the length of the
prefix in bits (values can be 1 - 32). prefix in bits (values can be 1 - 32).
Protocol Protocol
Set to 1 if the IGP protocol is OSPF and 2 if IGP protocol is Set to 1 if the IGP protocol is OSPF and 2 if IGP protocol is
ISIS. ISIS.
4.2. IPv6 Prefix Node Segment ID 5.2. IPv6 Prefix Node Segment ID
The format is as below: The format is as below:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| IPv6 Prefix | | IPv6 Prefix |
| | | |
| | | |
skipping to change at page 6, line 36 skipping to change at page 7, line 4
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| IPv6 Prefix | | IPv6 Prefix |
| | | |
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Prefix Length | Protocol | Reserved | |Prefix Length | Protocol | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IPv6 Prefix IPv6 Prefix
This field carries the IPv6 prefix to which the Node Segment ID is This field carries the IPv6 prefix to which the Node Segment ID is
assigned. assigned. If the prefix is shorter than 128 bits, trailing bits
SHOULD be set to zero.
Prefix Length Prefix Length
The Prefix Length field is one octet, it gives the length of the The Prefix Length field is one octet, it gives the length of the
prefix in bits (values can be 1 - 128). prefix in bits (values can be 1 - 128).
Protocol Protocol
Set to 1 if the IGP protocol is OSPF and 2 if IGP protocol is Set to 1 if the IGP protocol is OSPF and 2 if IGP protocol is
ISIS. ISIS.
4.3. IGP Adjacency Segment ID 5.3. IGP Adjacency Segment ID
The format is as below: The format is as below:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Adj. Type | Protocol | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Local Interface ID (4 or 16 octets) | | Local Interface ID (4 or 16 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Remote Interface ID (4 or 16 octets) | | Remote Interface ID (4 or 16 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Protocol | Adj. Type | | ~ ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | Advertising Node Identifier (4 or 6 octets) |
| Advertising Node Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ ~
| Receiving Node Identifier (4 or 6 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Adj. Type
Set to 1, when the Adjacency Segment is Parallel Adjacency as
defined in section 3.5.1 of [I-D.ietf-spring-segment-routing].
Set to 4, when the Adjacency segment is IPv4 based and is not a
parallel adjacency. Set to 6, when the Adjacency segment is IPv6
based and is not a parallel adjacency.
Protocol
Set to 1 if the IGP protocol is OSPF and 2 if IGP protocol is ISIS
Local Interface ID Local Interface ID
An identifier that is assigned by local LSR for a link on which An identifier that is assigned by local LSR for a link on which
Adjacency Segment ID is bound. This field is set to local link Adjacency Segment ID is bound. This field is set to local link
address (IPv4 or IPv6). Incase of unnumbered, 32 bit link address (IPv4 or IPv6). Incase of unnumbered, 32 bit link
identifier defined in [RFC4203], [RFC5307] is used. If the identifier defined in [RFC4203], [RFC5307] is used. If the
Adjacency Segment ID represents parallel adjacencies Adjacency Segment ID represents parallel adjacencies
(Section 3.5.1 of [I-D.filsfils-spring-segment-routing]) this (Section 3.5.1 of [I-D.ietf-spring-segment-routing]) this field
field MUST be set to zero. MUST be set to zero.
Remote Interface ID Remote Interface ID
An identifier that is assigned by remote LSR for a link on which An identifier that is assigned by remote LSR for a link on which
Adjacency Segment ID is bound. This field is set to remote Adjacency Segment ID is bound. This field is set to remote
(downstream neighbor) link address (IPv4 or IPv6). In case of (downstream neighbor) link address (IPv4 or IPv6). In case of
unnumbered, 32 bit link identifier defined in [RFC4203], [RFC5307] unnumbered, 32 bit link identifier defined in [RFC4203], [RFC5307]
is used. If the Adjacency Segment ID represents parallel is used. If the Adjacency Segment ID represents parallel
adjacencies (Section 3.5.1 of adjacencies (Section 3.5.1 of [I-D.ietf-spring-segment-routing])
[I-D.filsfils-spring-segment-routing]) this field MUST be set to this field MUST be set to zero.
zero.
Protocol
Set to 1 if the IGP protocol is OSPF and 2 if IGP protocol is ISIS
Adj. Type
Set to 4, if the Local/Remote Interface ID is of 4 octets and set
to 6 if the field is of 16 octets.
Advertising Node Identifier Advertising Node Identifier
Specifies the advertising node identifier. When Protocol is set Specifies the advertising node identifier. When Protocol is set
to 1, then the 32 rightmost bits represent OSPF Router ID and if to 1, then the 32 rightmost bits represent OSPF Router ID and if
protocol is set to 2, this field carries 48 bit ISIS System ID. protocol is set to 2, this field carries 48 bit ISIS System ID.
5. Extension to Downstream Mapping TLV Receiving Node Identifier
Specifies the downstream node identifier. When Protocol is set to
1, then the 32 rightmost bits represent OSPF Router ID and if
protocol is set to 2, this field carries 48 bit ISIS System ID.
6. Extension to Downstream Mapping TLV
In an echo reply, the Downstream Mapping TLV [RFC4379] is used to In an echo reply, the Downstream Mapping TLV [RFC4379] is used to
report for each interface over which a FEC could be forwarded. For a report for each interface over which a FEC could be forwarded. For a
FEC, there are multiple protocols that may be used to distribute FEC, there are multiple protocols that may be used to distribute
label mapping. The "Protocol" field of the Downstream Mapping TLV is label mapping. The "Protocol" field of the Downstream Mapping TLV is
used to return the protocol that is used to distribute a specific a used to return the protocol that is used to distribute a specific a
label. The following protocols are defined in section 3.2 of label. The following protocols are defined in section 3.2 of
[RFC4379]: [RFC4379]:
Protocol # Signaling Protocol Protocol # Signaling Protocol
skipping to change at page 8, line 31 skipping to change at page 9, line 18
1 Static 1 Static
2 BGP 2 BGP
3 LDP 3 LDP
4 RSVP-TE 4 RSVP-TE
With segment routing, OSPF or ISIS can be used for label With segment routing, OSPF or ISIS can be used for label
distribution, this document adds two new protocols as follows: distribution, this document adds two new protocols as follows:
Protocol # Signaling Protocol Protocol # Signaling Protocol
---------- ------------------ ---------- ------------------
5 OSPF 5 OSPF
6 ISIS 6 ISIS
6. Procedures 7. Procedures
This section describes aspects of LSP Ping and traceroute operations This section describes aspects of LSP Ping and traceroute operations
that require further considerations beyond [RFC4379]. that require further considerations beyond [RFC4379].
6.1. FECs in Target FEC Stack TLV 7.1. FECs in Target FEC Stack TLV
When LSP echo request packets are generated by an initiator, FECs When LSP echo request packets are generated by an initiator, FECs
carried in Target FEC Stack TLV may need to or desire to have carried in Target FEC Stack TLV may need to have deviating contents.
deviating contents. This document outlines expected Target FEC Stack This document outlines expected Target FEC Stack TLV construction
TLV construction mechanics by initiator for known scenarios. mechanics by initiator for known scenarios.
Ping Ping
Initiator MUST include FEC(s) corresponding to the destination Initiator MUST include FEC(s) corresponding to the destination
segment. segment.
Initiator MAY include FECs corresponding to some or all of Initiator MAY include FECs corresponding to some or all of
segments imposed in the label stack by the initiator to segments imposed in the label stack by the initiator to
communicate the segments traversed. communicate the segments traversed.
skipping to change at page 9, line 27 skipping to change at page 10, line 13
next (TTL+1) traceroute request. next (TTL+1) traceroute request.
When a received echo reply does not contain FEC Stack Change When a received echo reply does not contain FEC Stack Change
TLV, initiator MUST NOT attempt to remove FEC(s) from Target TLV, initiator MUST NOT attempt to remove FEC(s) from Target
FEC Stack TLV in the next (TTL+1) traceroute request. Note FEC Stack TLV in the next (TTL+1) traceroute request. Note
that Downstream Label field of DSMAP/DDMAP contains hints on that Downstream Label field of DSMAP/DDMAP contains hints on
how initiator may be able to update the contents of next Target how initiator may be able to update the contents of next Target
FEC Stack TLV. However, such hints are ambiguous without full FEC Stack TLV. However, such hints are ambiguous without full
understanding of PHP capabilities. understanding of PHP capabilities.
6.2. FEC Stack Change sub-TLV 7.2. FEC Stack Change sub-TLV
Section 3.3.1.3 of [RFC6424] defines a new sub-TLV that a router must Section 3.3.1.3 of [RFC6424] defines a new sub-TLV that a router must
include when the FEC stack changes. include when the FEC stack changes.
The network node which advertised the Node Segment ID is responsible The network node which advertised the Node Segment ID is responsible
for generating FEC Stack Change sub-TLV of &pop& operation for Node for generating FEC Stack Change sub-TLV of &pop& operation for Node
Segment ID, regardless of if PHP is enabled or not. Segment ID, regardless of if PHP is enabled or not.
The network node that is immediate downstream of the node which The network node that is immediate downstream of the node which
advertised the Adjacency Segment ID is responsible for generating FEC advertised the Adjacency Segment ID is responsible for generating FEC
Stack Change sub-TLV of &pop& operation for Adjacency Segment ID. Stack Change sub-TLV of &pop& operation for Adjacency Segment ID.
6.3. Segment ID POP Operation 7.3. Segment ID POP Operation
The forwarding semantic of Node Segment ID with PHP flag is The forwarding semantic of Node Segment ID with PHP flag is
equivalent to usage of implicit Null in MPLS protocols. Adjacency equivalent to usage of implicit Null in MPLS protocols. Adjacency
Segment ID is also similar in a sense that it can be thought as next Segment ID is also similar in a sense that it can be thought as next
hop destined locally allocated segment that has PHP enabled. hop destined locally allocated segment that has PHP enabled.
Procedures described in Section 4.4 of [RFC4379] relies on Stack-D Procedures described in Section 4.4 of [RFC4379] relies on Stack-D
and Stack-R explicitly having Implicit Null value. It may simplify and Stack-R explicitly having Implicit Null value. It may simplify
implementations to reuse Implicit Null for Node Segment ID PHP and implementations to reuse Implicit Null for Node Segment ID PHP and
Adjacency Segment ID cases. However, it is technically incorrect for Adjacency Segment ID cases. However, it is technically incorrect for
Implicit Null value to externally appear. Therefore, implicit Null Implicit Null value to externally appear. Therefore, implicit Null
MUST NOT be placed in Stack-D and Interface and Label Stack TLV for MUST NOT be placed in Stack-D and Interface and Label Stack TLV for
Node Segment ID PHP and Adjacency Segment ID cases. Node Segment ID PHP and Adjacency Segment ID cases.
6.4. Segment ID Check 7.4. Segment ID Check
If the Target FEC Stack Sub-TLV at FEC-stack-depth is TBD1 (IPv4 If the Label-stack-depth is 0 and Target FEC Stack Sub-TLV at FEC-
Prefix Node Segment ID), the responder SHOULD set Best return code stack-depth is TBD1 (IPv4 Prefix Node Segment ID), the responder
to (error code TBD) if any below conditions fail: should set Best return code to 10 if any below conditions fail: /*
The responder LSR is to check if it is the egress of the IPv4
Prefix Node Segment ID described in the Target FEC Stack Sub-TLV,
and if the FEC was advertised with the PHP bit set.*/
* Validate that Node Segment ID is advertised for IPv4 Prefix. * Validate that Node Segment ID is advertised for IPv4 Prefix.
* Validate that Node Segment ID is advertisement of PHP bit. * Validate that Node Segment ID is advertisement of PHP bit.
* To be Updated If the Label-stack-depth is more than 0 and Target FEC Stack Sub-
TLV at FEC-stack-depth is TBD1 (IPv4 Prefix Node Segment ID), the
responder is to set Best return code to 10 if any below conditions
fail:
If the Target FEC Sub-TLV at FEC-stack-depth is TBD2 (IPv6 Prefix * Validate that Node Segment ID is advertised for IPv4 Prefix.
Node Segment ID), set Best return code to (error code TBD) if any
below conditions fail: If the Label-stack-depth is 0 and Target FEC Sub-TLV at FEC-stack-
depth is TBD2 (IPv6 Prefix Node Segment ID), set Best return code
to 10 if any below conditions fail: /* The LSR needs to check if
its being a tail-end for the LSP and have the prefix advertised
with PHP bit set*/
* Validate that Node Segment ID is advertised for IPv6 Prefix. * Validate that Node Segment ID is advertised for IPv6 Prefix.
* Validate that Node Segment ID is advertised of PHP bit. * Validate that Node Segment ID is advertised of PHP bit.
* To be Updated If the Label-stack-depth is 0 and Target FEC Sub-TLV at FEC-stack-
depth is TBD2 (IPv6 Prefix Node Segment ID), set Best return code
to 10 if any below conditions fail:
If the Target FEC sub-TLV at FEC-stack-depth is TBD3 (Adjacency * Validate that Node Segment ID is advertised for IPv6 Prefix.
Segment ID), set Best return code to (error code TBD) if any below
conditions fail:
* Validate that Remote Interface ID matches the local identifier If the Label-stack-depth is 0 and Target FEC sub-TLV at FEC-stack-
of the interface on which the packet was received. depth is TBD3 (Adjacency Segment ID), set Best return code to
(error code TBD) if any below conditions fail:
* Validate that IGP Adjacency Segment ID is advertised by When the Adj.Type is 1 (Parallel Adjacency):
Advertising Node Identifier of Protocol in local IGP database.
6.5. TTL Consideration for traceroute + Validate that Receiving Node Identifier is local IGP
identifier.
+ Validate that Adjacency Segment ID is advertised by
Advertising Node Identifier of Protocol in local IGP
database.
When the Adj.Type is 4 or 6:
+ Validate that Remote Interface ID matches the local
identifier of the interface (Interface-I) on which the
packet was received.
+ Validate that Receiving Node Identifier is local IGP
identifier.
+ Validate that IGP Adjacency Segment ID is advertised by
Advertising Node Identifier of Protocol in local IGP
database.
7.5. TTL Consideration for traceroute
LSP Traceroute operation can properly traverse every hop of Segment LSP Traceroute operation can properly traverse every hop of Segment
Routing network in Uniform Model described in [RFC3443]. If one or Routing network in Uniform Model described in [RFC3443]. If one or
more LSRs employ Short Pipe Model described in [RFC3443], then LSP more LSRs employ Short Pipe Model described in [RFC3443], then LSP
Traceroute may not be able to properly traverse every hop of Segment Traceroute may not be able to properly traverse every hop of Segment
Routing network due to absence of TTL copy operation when outer label Routing network due to absence of TTL copy operation when outer label
is popped. In such scenario, following TTL manipulation technique is popped. In such scenario, following TTL manipulation technique
MAY be used. MAY be used.
When tracing a LSP according to the procedures in [RFC4379] the TTL When tracing a LSP according to the procedures in [RFC4379] the TTL
skipping to change at page 11, line 18 skipping to change at page 12, line 35
included it should contain only those for the inner stacked tunnels. included it should contain only those for the inner stacked tunnels.
The lack of an echo response or the Return Code/Subcode should be The lack of an echo response or the Return Code/Subcode should be
used to diagnose the tunnel as described in [RFC4379]. When the used to diagnose the tunnel as described in [RFC4379]. When the
tracing of a tunnel in the stack is complete, then the next tunnel in tracing of a tunnel in the stack is complete, then the next tunnel in
the stack should be traced. The end of a tunnel can be detected from the stack should be traced. The end of a tunnel can be detected from
the "Return Code" when it indicates that the responding LSR is an the "Return Code" when it indicates that the responding LSR is an
egress for the stack at depth 1. Thus the traceroute procedures in egress for the stack at depth 1. Thus the traceroute procedures in
[RFC4379] can be recursively applied to traceroute a source routed [RFC4379] can be recursively applied to traceroute a source routed
LSP. LSP.
7. Issues with non-forwarding labels 8. Issues with non-forwarding labels
Source stacking can be optionally used to apply services on the Source stacking can be optionally used to apply services on the
packet at a LSR along the path, where a label in the stack is used to packet at a LSR along the path, where a label in the stack is used to
trigger service application. A data plane failure detection and trigger service application. A data plane failure detection and
isolation mechanism should provide its functionality without applying isolation mechanism should provide its functionality without applying
these services. This is mandatory for services that are stateful, these services. This is mandatory for services that are stateful,
though for stateless services [RFC4379] could be used as-is. It MAY though for stateless services [RFC4379] could be used as-is. It MAY
also provide a mechanism to detect and isolate faults within the also provide a mechanism to detect and isolate faults within the
service function itself. service function itself.
skipping to change at page 12, line 5 skipping to change at page 13, line 19
path being traversed. However this new path is potentially different path being traversed. However this new path is potentially different
only up to the LSR that provides the service. Since this portion of only up to the LSR that provides the service. Since this portion of
the path was traced when the tunnels above this tunnel in the stack the path was traced when the tunnels above this tunnel in the stack
were traced and followed the exact path as the source routed LSP, were traced and followed the exact path as the source routed LSP,
this should not be a major concern. Sometimes the newer path may this should not be a major concern. Sometimes the newer path may
have a problem that was not in the original path resulting in a false have a problem that was not in the original path resulting in a false
positive. In such a case the original path can be traversed by positive. In such a case the original path can be traversed by
changing the label stack to reach the intermediate LSR with labels changing the label stack to reach the intermediate LSR with labels
that route along each hop explicitly. that route along each hop explicitly.
8. IANA Considerations 9. IANA Considerations
8.1. New Target FEC Stack Sub-TLVs 9.1. New Target FEC Stack Sub-TLVs
IANA is requested to assign 3 new Sub-TLVs from "Sub-TLVs for TLV IANA is requested to assign 3 new Sub-TLVs from "Sub-TLVs for TLV
Types 1, 16 and 21" sub-registry. Types 1, 16 and 21" sub-registry.
Sub-Type Sub-TLV Name Reference Sub-Type Sub-TLV Name Reference
---------- ----------------- ------------ ---------- ----------------- ------------
TBD1 IPv4 Prefix Node Segment ID Section 4.1 (this document) TBD1 IPv4 Prefix Node Segment ID Section 4.1 (this document)
TBD2 IPv6 Prefix Node Segment ID Section 4.2 (this document) TBD2 IPv6 Prefix Node Segment ID Section 4.2 (this document)
TBD3 Adjacency Segment ID Section 4.3 (this document) TBD3 Adjacency Segment ID Section 4.3 (this document)
9. Security Considerations 10. Security Considerations
This document defines additional Sub-TLVs and follows the mechanism This document defines additional Sub-TLVs and follows the mechanism
defined in [RFC4379]. So all the security consideration defined in defined in [RFC4379]. So all the security consideration defined in
[RFC4379] will be applicable for this document and in addition it [RFC4379] will be applicable for this document and in addition it
does not impose any security challenges to be considered. does not impose any security challenges to be considered.
10. Acknowledgement 11. Acknowledgement
The authors would like to thank Stefano Previdi, Les Ginsberg, Balaji The authors would like to thank Stefano Previdi, Les Ginsberg, Balaji
Rajagopalan and Harish Sitaraman for their review and comments. Rajagopalan and Harish Sitaraman for their review and comments.
The authors wold like to thank Loa Andersson for his comments and The authors wold like to thank Loa Andersson for his comments and
recommendation to merge drafts. recommendation to merge drafts.
11. Contributing Authors 12. Contributing Authors
Tarek Saad Tarek Saad
Cisco Systems Cisco Systems
Email: tsaad@cisco.com Email: tsaad@cisco.com
Siva Sivabalan Siva Sivabalan
Cisco Systems Cisco Systems
Email: msiva@cisco.com Email: msiva@cisco.com
Balaji Rajagopalan Balaji Rajagopalan
Juniper Networks Juniper Networks
Email: balajir@juniper.net Email: balajir@juniper.net
12. References 13. References
12.1. Normative References
[I-D.filsfils-spring-segment-routing] 13.1. Normative References
Filsfils, C., Previdi, S., Bashandy, A., Decraene, B.,
Litkowski, S., Horneffer, M., Milojevic, I., Shakir, R.,
Ytti, S., Henderickx, W., Tantsura, J., and E. Crabbe,
"Segment Routing Architecture", draft-filsfils-spring-
segment-routing-04 (work in progress), July 2014.
[I-D.filsfils-spring-segment-routing-use-cases] [I-D.filsfils-spring-segment-routing-use-cases]
Filsfils, C., Francois, P., Previdi, S., Decraene, B., Filsfils, C., Francois, P., Previdi, S., Decraene, B.,
Litkowski, S., Horneffer, M., Milojevic, I., Shakir, R., Litkowski, S., Horneffer, M., Milojevic, I., Shakir, R.,
Ytti, S., Henderickx, W., Tantsura, J., Kini, S., and E. Ytti, S., Henderickx, W., Tantsura, J., Kini, S., and E.
Crabbe, "Segment Routing Use Cases", draft-filsfils- Crabbe, "Segment Routing Use Cases", draft-filsfils-
spring-segment-routing-use-cases-01 (work in progress), spring-segment-routing-use-cases-01 (work in progress),
October 2014. October 2014.
[I-D.gredler-spring-mpls] [I-D.ietf-spring-segment-routing]
Gredler, H., Rekhter, Y., Jalil, L., Kini, S., and X. Xu, Filsfils, C., Previdi, S., Decraene, B., Litkowski, S.,
"Supporting Source/Explicitly Routed Tunnels via Stacked and R. Shakir, "Segment Routing Architecture", draft-ietf-
LSPs", draft-gredler-spring-mpls-06 (work in progress), spring-segment-routing-03 (work in progress), May 2015.
May 2014.
[RFC0792] Postel, J., "Internet Control Message Protocol", STD 5, [RFC0792] Postel, J., "Internet Control Message Protocol", STD 5,
RFC 792, September 1981. RFC 792, DOI 10.17487/RFC0792, September 1981,
<http://www.rfc-editor.org/info/rfc792>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>.
[RFC3443] Agarwal, P. and B. Akyol, "Time To Live (TTL) Processing [RFC3443] Agarwal, P. and B. Akyol, "Time To Live (TTL) Processing
in Multi-Protocol Label Switching (MPLS) Networks", RFC in Multi-Protocol Label Switching (MPLS) Networks",
3443, January 2003. RFC 3443, DOI 10.17487/RFC3443, January 2003,
<http://www.rfc-editor.org/info/rfc3443>.
[RFC4203] Kompella, K. and Y. Rekhter, "OSPF Extensions in Support [RFC4203] Kompella, K., Ed. and Y. Rekhter, Ed., "OSPF Extensions in
of Generalized Multi-Protocol Label Switching (GMPLS)", Support of Generalized Multi-Protocol Label Switching
RFC 4203, October 2005. (GMPLS)", RFC 4203, DOI 10.17487/RFC4203, October 2005,
<http://www.rfc-editor.org/info/rfc4203>.
[RFC4379] Kompella, K. and G. Swallow, "Detecting Multi-Protocol [RFC4379] Kompella, K. and G. Swallow, "Detecting Multi-Protocol
Label Switched (MPLS) Data Plane Failures", RFC 4379, Label Switched (MPLS) Data Plane Failures", RFC 4379,
February 2006. DOI 10.17487/RFC4379, February 2006,
<http://www.rfc-editor.org/info/rfc4379>.
[RFC5307] Kompella, K. and Y. Rekhter, "IS-IS Extensions in Support [RFC5307] Kompella, K., Ed. and Y. Rekhter, Ed., "IS-IS Extensions
of Generalized Multi-Protocol Label Switching (GMPLS)", in Support of Generalized Multi-Protocol Label Switching
RFC 5307, October 2008. (GMPLS)", RFC 5307, DOI 10.17487/RFC5307, October 2008,
<http://www.rfc-editor.org/info/rfc5307>.
[RFC6424] Bahadur, N., Kompella, K., and G. Swallow, "Mechanism for [RFC6424] Bahadur, N., Kompella, K., and G. Swallow, "Mechanism for
Performing Label Switched Path Ping (LSP Ping) over MPLS Performing Label Switched Path Ping (LSP Ping) over MPLS
Tunnels", RFC 6424, November 2011. Tunnels", RFC 6424, DOI 10.17487/RFC6424, November 2011,
<http://www.rfc-editor.org/info/rfc6424>.
12.2. Informative References 13.2. Informative References
[RFC6291] Andersson, L., van Helvoort, H., Bonica, R., Romascanu, [RFC6291] Andersson, L., van Helvoort, H., Bonica, R., Romascanu,
D., and S. Mansfield, "Guidelines for the Use of the "OAM" D., and S. Mansfield, "Guidelines for the Use of the "OAM"
Acronym in the IETF", BCP 161, RFC 6291, June 2011. Acronym in the IETF", BCP 161, RFC 6291,
DOI 10.17487/RFC6291, June 2011,
<http://www.rfc-editor.org/info/rfc6291>.
[RFC6425] Saxena, S., Swallow, G., Ali, Z., Farrel, A., Yasukawa, [RFC6425] Saxena, S., Ed., Swallow, G., Ali, Z., Farrel, A.,
S., and T. Nadeau, "Detecting Data-Plane Failures in Yasukawa, S., and T. Nadeau, "Detecting Data-Plane
Point-to-Multipoint MPLS - Extensions to LSP Ping", RFC Failures in Point-to-Multipoint MPLS - Extensions to LSP
6425, November 2011. Ping", RFC 6425, DOI 10.17487/RFC6425, November 2011,
<http://www.rfc-editor.org/info/rfc6425>.
Authors' Addresses Authors' Addresses
Nagendra Kumar Nagendra Kumar
Cisco Systems, Inc. Cisco Systems, Inc.
7200 Kit Creek Road 7200 Kit Creek Road
Research Triangle Park, NC 27709 Research Triangle Park, NC 27709
US US
Email: naikumar@cisco.com Email: naikumar@cisco.com
 End of changes. 69 change blocks. 
147 lines changed or deleted 204 lines changed or added

This html diff was produced by rfcdiff 1.42. The latest version is available from http://tools.ietf.org/tools/rfcdiff/