< draft-lin-sbfd-path-consistency-over-srv6-00.txt   draft-lin-sbfd-path-consistency-over-srv6-01.txt >
BFD Working Group C. Lin BFD Working Group C. Lin
Internet Draft New H3C Technologies Internet Draft New H3C Technologies
Intended status: Informational W. Cheng Intended status: Informational W. Cheng
Expires: Sep 2, 2022 W. Jiang Expires: Oct 12, 2022 W. Jiang
China Mobile China Mobile
March 2, 2022 April 12, 2022
S-BFD Path Consistency over SRv6 S-BFD Path Consistency over SRv6
draft-lin-sbfd-path-consistency-over-srv6-00 draft-lin-sbfd-path-consistency-over-srv6-01
Abstract Abstract
Bidirectional Forwarding Detection (BFD) can be used to monitor Bidirectional Forwarding Detection (BFD) can be used to monitor
paths between nodes. Seamless BFD (S-BFD) provides a simplified paths between nodes. Seamless BFD (S-BFD) provides a simplified
mechanism which is suitable for monitoring of paths that are setup mechanism which is suitable for monitoring of paths that are setup
dynamically and on a large scale network. In SRv6, when a headend dynamically and on a large scale network. In SRv6, when a headend
use S-BFD to monitor the segment list/CPath of SRv6 Policy, the use S-BFD to monitor the segment list/CPath of SRv6 Policy, the
forward path of S-BFD packet is indicated by segment list, the forward path of control packet is indicated by segment list, the
reverse path of BFD packet is via the shortest path from the reverse path of response control packet is via the shortest path
reflector back to the initiator (headend) as determined by routing. from the reflector back to the initiator (headend) as determined by
The forward path and reverse path of S-BFD packet are likely routing. The forward path and reverse path of control packet are
inconsistent going through different intermediate nodes or links. likely inconsistent going through different intermediate nodes or
This document describes a method to keep the forward path and links. This document describes a method to keep the forward path and
reverse path of S-BFD consistent when detecting SRv6 Policy. reverse path of S-BFD consistent when detecting SRv6 Policy.
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.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet- other groups may also distribute working documents as Internet-
skipping to change at page 2, line 4 skipping to change at page 2, line 4
Internet-Drafts are draft documents valid for a maximum of six Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other documents months and may be updated, replaced, or obsoleted by other documents
at any time. It is inappropriate to use Internet-Drafts as at any time. It is inappropriate to use Internet-Drafts as
reference material or to cite them other than as "work in progress." reference material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html http://www.ietf.org/shadow.html
This Internet-Draft will expire on September 2 2022. This Internet-Draft will expire on October 12 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
(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 carefully, as they describe your rights and restrictions with
respect to this document. Code Components extracted from this respect to this document. Code Components extracted from this
document must include Simplified BSD License text as described in document must include Simplified BSD License text as described in
Section 4.e of the Trust Legal Provisions and are provided without Section 4.e of the Trust Legal Provisions and are provided without
skipping to change at page 3, line 12 skipping to change at page 3, line 12
SRv6 Policy, the forward and reverse path of S-BFD packet are SRv6 Policy, the forward and reverse path of S-BFD packet are
inconsistent with high probability because the reverse path is via inconsistent with high probability because the reverse path is via
IPv6 forwarding and forward path is via SRv6 segment list (loose IPv6 forwarding and forward path is via SRv6 segment list (loose
path or explicit path). path or explicit path).
The inconsistency impacts the detecting result. If the forward path The inconsistency impacts the detecting result. If the forward path
is up and reverse path is down, then the S-BFD session will be down. is up and reverse path is down, then the S-BFD session will be down.
If there are multiple path (segment list) in a SRv6 Policy between a If there are multiple path (segment list) in a SRv6 Policy between a
headend (initiator) router and a tailend(reflector) router, multiple headend (initiator) router and a tailend(reflector) router, multiple
S-BFD session will be created for each path. Each S-BFD session uses S-BFD session will be created for each path. Each S-BFD session uses
corresponding path to send echo packet, but the reverse path is corresponding path to send control packet, but the reverse path is
identical for all S-BFD sessions. If the reverse path is down, all identical for all S-BFD sessions. If the reverse path is down, all
sessions will be down. Then the SRv6 Policy is down. sessions will be down. Then the SRv6 Policy is down.
The consistency of forward and reverse path of the same S-BFD The consistency of forward and reverse path of the same S-BFD
session should be guaranteed. This document describes a method to session should be guaranteed. This document describes a method to
keep the forward path and reverse path of S-BFD consistent using keep the forward path and reverse path of S-BFD consistent using
path segment when detecting SRv6 Policy. path segment when detecting SRv6 Policy.
1.1. Requirements Language 1.1. Requirements Language
skipping to change at page 3, line 35 skipping to change at page 3, line 35
"OPTIONAL" in this document are to be interpreted as described in "OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
2. Requirement for S-BFD in SRv6 2. Requirement for S-BFD in SRv6
Monitor SRv6 Policy using S-BFD is usually based on segment list S- Monitor SRv6 Policy using S-BFD is usually based on segment list S-
BFD creates session for each segment list and associates the session BFD creates session for each segment list and associates the session
with segment list. with segment list.
When S-BFD initiator detects the connectivity of an S-BFD session, When S-BFD initiator detects the continuity of an S-BFD session, it
it will use the associated segment list to encapsulate IPv6 header will use the associated segment list to encapsulate IPv6 header and
and SRH of the echo packet. SRH of the control packet.
After the reflector receives the S-BFD echo, the response packet After the reflector receives the S-BFD control packet, the response
should be able to return along the path to avoid the false detection control packet should be able to return along the path to avoid the
of the session caused by the inconsistency of the forward and false detection of the session caused by the inconsistency of the
reverse paths. forward and reverse paths.
Referring to the following topology, there are two paths between Referring to the following topology, there are two paths between
NodeA and NodeD, and All nodes allocate end.x Segments. NodeA and Node A and D, and All nodes allocate end.x Segments. Node A and D
NodeD are headend and tailend nodes of each other, and SRv6 policy are headend and tailend nodes of each other, and SRv6 policy is
is created on A and D respectively. created on A and D respectively.
SID-B1 SID-B2 SID-C1 SID-C2 SID-B1 SID-B2 SID-C1 SID-C2
+--------B-----------------C-----------+ +--------B-----------------C-----------+
SID-A1/ \ SID-D1 SID-A1/ \ SID-D1
/ \ / \
A D A D
\ /SID-D2 \ /SID-D2
SID-A2\ SID-E1 SID-E2 / SID-A2\ SID-E1 SID-E2 /
+-------------------E-------------------+ +-------------------E-------------------+
Figure 1: reference topology Figure 1: reference topology
Assuming that the deployed SRv6 policy has one candidate path and Assuming that the deployed SRv6 policy has one candidate path and
each path has two segment lists. For ease of description, segment each path has two segment lists. For ease of description, segment
lists with the same number on NodeA and NodeD are forward and lists with the same number on Node A and D are forward and reverse
reverse paths to each other. paths to each other.
NodeA: NodeD: Node A: Node D:
SRv6 Policy A-D SRv6 Policy D-A SRv6 Policy A-D SRv6 Policy D-A
Candidate Path1 Candidate Path1 Candidate Path1 Candidate Path1
Segment list1 Segment list1 Segment list1 Segment list1
SID-A1, SID-B2, SID-C2 SID-D1, SID-C1, SID-B1 SID-A1, SID-B2, SID-C2 SID-D1, SID-C1, SID-B1
Segment list2 Segment list2 Segment list2 Segment list2
SID-A2, SID-E2 SID-D2, SID-E1 SID-A2, SID-E2 SID-D2, SID-E1
When nodeA is the S-BFD initiator, S-BFD sessions for segment list1 When node A is the S-BFD initiator, S-BFD sessions for segment list1
and segment list2 could be created respectively. and segment list2 could be created respectively.
The echo packet of S-BFD session associated with the segment list1 The control packet of S-BFD session associated with the segment
is forwarded to nodeD according to the segment list1 of nodeA. The list1 is forwarded to node D according to the segment list1 of node
response packet of node D needs to be returned to node A according A. The response control packet of node D needs to be returned to
to the segment list1 of node D. Thus the forward and reverse paths node A according to the segment list1 of node D. Thus the forward
of S-BFD packets are ensured to be consistent. and reverse paths of S-BFD packets are ensured to be consistent.
3. Correlate bidirectional path using Path Segment 3. Correlate bidirectional path using Path Segment
A Path Segment is defined to identify an SR path in [draft-ietf- A Path Segment is defined to identify an SR path in [draft-ietf-
spring-srv6-path-segment]. SRv6 Path segments can be used to spring-srv6-path-segment]. SRv6 Path segments can be used to
correlate the two unidirectional SRv6 paths at both ends of the correlate the two unidirectional SRv6 paths at both ends of the
paths. paths.
[draft-ietf-idr-sr-policy-path-segment] proposes an extension to BGP [draft-ietf-idr-sr-policy-path-segment] proposes an extension to BGP
SR Policy distribute SR policies carrying Path Segment and SR Policy distribute SR policies carrying Path Segment and
bidirectional path information. bidirectional path information.
Through this extension, when distributing SRv6 policy to the Through this extension, when distributing SRv6 policy to the
headend, reverse path information and path segment of segment list headend, reverse path information and path segment of segment list
can be carried together. can be carried together.
NodeA NodeD Node A Node D
SRv6 Policy A-D SRv6 Policy D-A SRv6 Policy A-D SRv6 Policy D-A
Candidate Path1 Candidate Path1 Candidate Path1 Candidate Path1
Segment list1 Segment list1 Segment list1 Segment list1
SID-A1, SID-B2, SID-C2 SID-D1, SID-C1, SID-B1 SID-A1, SID-B2, SID-C2 SID-D1, SID-C1, SID-B1
Path Segment: SID-Path-A1 Path Segment: SID-Path-D1 Path Segment: SID-Path-1 Path Segment: SID-Path-2
Reverse Path Segment: Reverse Path Segment: Reverse Path Segment: Reverse Path Segment:
SID-Path-D1 SID-Path-A1 SID-Path-2 SID-Path-1
Segment list2 Segment list2 Segment list2 Segment list2
SID-A2, SID-E2 SID-D2, SID-E1 SID-A2, SID-E2 SID-D2, SID-E1
Path Segment: SID-Path-A2 Path Segment: SID-Path-D2 Path Segment: SID-Path-3 Path Segment: SID-Path-4
Reverse Path Segment: Reverse Path Segment: Reverse Path Segment: Reverse Path Segment:
SID-Path-D2 SID-Path-A2 SID-Path-4 SID-Path-3
In this way, on the headend in both directions of the forward and In this way, on the headend in both directions of the forward and
reverse paths, the path segment of the paths in both directions can reverse paths, the path segment of the paths in both directions can
be obtained, and the paths in both directions use the same be obtained, and the paths in both directions use the same
intermediate link. intermediate link.
The headend can use path segment in two directions to establish a The headend can use path segment in two directions to establish a
mapping table. Using this mapping table, the headend can index the mapping table. Using this mapping table, the headend can index the
reverse path through the path segment of the forward path. reverse path through the path segment of the forward path.
The mapping table of NodeA and Node D is shown below: The mapping table of Node A and Node D is shown below:
NodeA: Node A:
+-----------------+ +--------------------+ +-----------------+ +--------------------+
| Path Segment | |Reverse Path Segment| | Path Segment | |Reverse Path Segment|
+-----------------+ +--------------------+ +-----------------+ +--------------------+
| SID-Path-A1 |-+ | SID-Path-D1 |--+ | SID-Path-1 |-+ | SID-Path-2 |--+
+-----------------+ | +--------------------+ | +-----------------+ | +--------------------+ |
| SID-Path-A2 | | | SID-Path-D2 |--|-+ | SID-Path-3 | | | SID-Path-4 |--|-+
+-----------------+ | +--------------------+ | | +-----------------+ | +--------------------+ | |
| | | | | | | |
| | +-----------------------+ | | | | +-----------------------+ | |
| | | segment List | | | | | | segment List | | |
| | +-----------------------+ | | | | +-----------------------+ | |
| +->|SID-A1, SID-B2, SID-C2 |<----+ | | +->|SID-A1, SID-B2, SID-C2 |<----+ |
| +-----------------------+ | | +-----------------------+ |
+-------------->|SID-A2, SID-E2 |<------+ +-------------->|SID-A2, SID-E2 |<------+
+-----------------------+ +-----------------------+
NodeD: Node D:
+-----------------+ +--------------------+ +-----------------+ +--------------------+
| Path Segment | |Reverse Path Segment| | Path Segment | |Reverse Path Segment|
+-----------------+ +--------------------+ +-----------------+ +--------------------+
| SID-Path-D1 |-+ | SID-Path-A1 |--+ | SID-Path-2 |-+ | SID-Path-1 |--+
+-----------------+ | +--------------------+ | +-----------------+ | +--------------------+ |
| SID-Path-D2 | | | SID-Path-A2 |--|-+ | SID-Path-4 | | | SID-Path-3 |--|-+
+-----------------+ | +--------------------+ | | +-----------------+ | +--------------------+ | |
| | | | | | | |
| | +-----------------------+ | | | | +-----------------------+ | |
| | | segment List | | | | | | segment List | | |
| | +-----------------------+ | | | | +-----------------------+ | |
| +->|SID-D1, SID-C1, SID-B1 |<----+ | | +->|SID-D1, SID-C1, SID-B1 |<----+ |
| +-----------------------+ | | +-----------------------+ |
+-------------->|SID-D2, SID-E1 |<------+ +-------------->|SID-D2, SID-E1 |<------+
+-----------------------+ +-----------------------+
Figure 2: mapping table Figure 2: mapping table
4. S-BFD Procedure with Path segment 4. S-BFD Procedure with Path segment
This document proposes to forward S-BFD echo and response packets This document proposes to forward S-BFD control packets and response
through the consistent path by path segment. control packets through the consistent path by path segment.
4.1. S-BFD Initiator procedure 4.1. S-BFD Initiator procedure
For instance, the S-BFD initiator is Node A in Figure 1, and the S- For instance, the S-BFD initiator is Node A in Figure 1, and the S-
BFD session is bounded with Segment List1 of Policy A-D. The BFD session is bounded with Segment List1 of Policy A-D. The
encapsulation format of S-BFD echo packet is as follows: encapsulation format of S-BFD control packet is as follows:
+-----------------------------------------------------------+ +-----------------------------------------------------------+
| IPv6 Header | | IPv6 Header |
. Source IP Address = S-BFD Initiator IPv6 Address . . Source IP Address = S-BFD Initiator IPv6 Address .
. Destination IP Address = SegmentList[SL] . . Destination IP Address = SegmentList[SL] .
. Next-Header = SRH (43) . . Next-Header = SRH (43) .
. . . .
+-----------------------------------------------------------+ +-----------------------------------------------------------+
| SRH as specified in RFC 8754 | | SRH as specified in RFC 8754 |
. Next-Header = IPv6 . . Next-Header = IPv6 .
skipping to change at page 7, line 29 skipping to change at page 7, line 29
. Destination IP Address = S-BFD Reflector IPv6 Address . . Destination IP Address = S-BFD Reflector IPv6 Address .
. Next-Header = UDP . . Next-Header = UDP .
. . . .
+-----------------------------------------------------------+ +-----------------------------------------------------------+
| UDP Header | | UDP Header |
. . . .
+-----------------------------------------------------------+ +-----------------------------------------------------------+
| Payload | | Payload |
. . . .
+-----------------------------------------------------------+ +-----------------------------------------------------------+
Figure 3: Encapsulation format of S-BFD echo packet Figure 3: Encapsulation format of S-BFD control packet
NodeA Encapsulates the path segment of segment list1 in SRH, and set NodeA Encapsulates the path segment of segment list1 in SRH, and set
SRH.P-Flag. SRH.P-Flag.
The S-BFD echo packet is as follows: The S-BFD control packet is as follows:
A------------->B------------>C---------->D A------------->B------------>C---------->D
+-----------------+ +-----------------+ +-----------------+ +-----------------+
| SA=A's Ipv6Addr | | SA=A's Ipv6Addr | | SA=A's Ipv6Addr | | SA=A's Ipv6Addr |
+-----------------+ +-----------------+ +-----------------+ +-----------------+
| DA=SID-A1 | | DA=D's ipv6Addr | | DA=SID-A1 | | DA=D's ipv6Addr |
+-----------------+ +-----------------+ +-----------------+ +-----------------+
| SL=3 | P-Flag=1 | | SL=0 | P-Flag=1 | | SL=3 | P-Flag=1 | | SL=0 | P-Flag=1 |
+-----------------+ +-----------------+ +-----------------+ +-----------------+
skipping to change at page 8, line 27 skipping to change at page 8, line 27
+-----------------+ +-----------------+ +-----------------+ +-----------------+
| SID-B2 | | SID-B2 | | SID-B2 | | SID-B2 |
+-----------------+ +-----------------+ +-----------------+ +-----------------+
| SID-A1 | | SID-A1 | | SID-A1 | | SID-A1 |
+-----------------+ +-----------------+ +-----------------+ +-----------------+
| SID-Path-A1 | | SID-Path-A1 | | SID-Path-A1 | | SID-Path-A1 |
+-----------------+ +-----------------+ +-----------------+ +-----------------+
| sbfd-payload | | sbfd-payload | | sbfd-payload | | sbfd-payload |
| | | | | | | |
+-----------------+ +-----------------+ +-----------------+ +-----------------+
Figure 4: Example of S-BFD echo packet Figure 4: Example of S-BFD control packet
4.2. S-BFD Reflector procedure 4.2. S-BFD Reflector procedure
S-BFD echo packet is forwarded along the path A->B->C-D. While S-BFD control packet is forwarded along the path A->B->C-D. While
packet arrives at node D, RH.SL is 0 and the destination address is packet arrives at Node D, RH.SL is 0 and the destination address is
the NodeD IPv6 address. Packet is delivered up to the S-BFD module IPv6 address of Node D. Packet is delivered up to the S-BFD module
in control plane. in control plane.
S-BFD module detects SRH.P-flag is set, extracts the path segment of S-BFD module detects SRH.P-flag is set, extracts the path segment of
the forward path from SRH, gets the path segment of the reverse path the forward path from SRH, gets the path segment of the reverse path
through the mapping table. When responding to S-BFD echo, S-BFD through the mapping table. When responding to S-BFD control packet,
module uses the segment list associated with path segment of the S-BFD module uses the segment list associated with path segment of
reverse path to encapsulate SRH. the reverse path to encapsulate SRH.
The encapsulation format of S-BFD response packet is as follows: The encapsulation format of S-BFD response control packet is as
follows:
+----------------------------------------------------------+ +----------------------------------------------------------+
| IPv6 Header | | IPv6 Header |
. Source IP Address = S-BFD Reflector IPv6 Address . . Source IP Address = S-BFD Reflector IPv6 Address .
. Destination IP Address = SegmentList[SL] . . Destination IP Address = SegmentList[SL] .
. Next-Header = SRH (43) . . Next-Header = SRH (43) .
. . . .
+----------------------------------------------------------+ +----------------------------------------------------------+
| SRH as specified in RFC 8754 | | SRH as specified in RFC 8754 |
. Next-Header = IPv6 . . Next-Header = IPv6 .
skipping to change at page 9, line 29 skipping to change at page 9, line 29
. Destination IP Address = S-BFD Sender IPv6 Address . . Destination IP Address = S-BFD Sender IPv6 Address .
. Next-Header = UDP . . Next-Header = UDP .
. . . .
+----------------------------------------------------------+ +----------------------------------------------------------+
| UDP Header | | UDP Header |
. . . .
+----------------------------------------------------------+ +----------------------------------------------------------+
| Payload | | Payload |
. . . .
+----------------------------------------------------------+ +----------------------------------------------------------+
Figure 5: Encapsulation format of S-BFD response packet Figure 5: Encapsulation format of S-BFD response control packet
The Example of S-BFD response packet is as follows: The Example of S-BFD response control packet is as follows:
D------------->C------------>B---------->A D------------->C------------>B---------->A
+-----------------+ +-----------------+ +-----------------+ +-----------------+
| SA=D's Ipv6Addr | | SA=D's Ipv6Addr | | SA=D's Ipv6Addr | | SA=D's Ipv6Addr |
+-----------------+ +-----------------+ +-----------------+ +-----------------+
| DA=SID-D1 | | DA=A's ipv6Addr | | DA=SID-D1 | | DA=A's ipv6Addr |
+-----------------+ +-----------------+ +-----------------+ +-----------------+
| SL=3 | P-Flag=0 | | SL=0 | P-Flag=0 | | SL=3 | P-Flag=0 | | SL=0 | P-Flag=0 |
+-----------------+ +-----------------+ +-----------------+ +-----------------+
| A's ipv6Addr | | A's ipv6Addr | | A's ipv6Addr | | A's ipv6Addr |
+-----------------+ +-----------------+ +-----------------+ +-----------------+
| SID-B1 | | SID-B1 | | SID-B1 | | SID-B1 |
+-----------------+ +-----------------+ +-----------------+ +-----------------+
| SID-C1 | | SID-C1 | | SID-C1 | | SID-C1 |
+-----------------+ +-----------------+ +-----------------+ +-----------------+
| SID-D1 | | SID-D1 | | SID-D1 | | SID-D1 |
+-----------------+ +-----------------+ +-----------------+ +-----------------+
| sbfd-payload | | sbfd-payload | | sbfd-payload | | sbfd-payload |
| | | | | | | |
+-----------------+ +-----------------+ +-----------------+ +-----------------+
Figure 6: Example of S-BFD response packet Figure 6: Example of S-BFD response control packet
The S-BFD response packet will be forward along the path D->C->B->A. The S-BFD response control packet will be forward along the path D-
In this way, the forward and reverse paths of S-BFD are guaranteed >C->B->A. In this way, the forward and reverse paths of S-BFD are
to be consistent. guaranteed to be consistent.
5. IANA Considerations 5. IANA Considerations
This document has no IANA actions. This document has no IANA actions.
6. Security Considerations 6. Security Considerations
The security requirements and mechanisms described in [RFC8402] and The security requirements and mechanisms described in [RFC8402] and
[RFC8754] also apply to this document. [RFC8754] also apply to this document.
 End of changes. 38 change blocks. 
62 lines changed or deleted 63 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/