One document matched: draft-wu-idr-bgp-segment-allocation-ext-00.xml
<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-wu-idr-bgp-segment-allocation-ext-00"
ipr="trust200902">
<front>
<title abbrev="BGP Extensions for Segment Allocation">BGP Extensions for
Segment Allocation</title>
<author fullname="Nan Wu" initials="N." surname="Wu">
<organization>Huawei</organization>
<address>
<postal>
<street>Huawei Bld., No.156 Beiqing Rd.</street>
<city>Beijing</city>
<code>100095</code>
<country>China</country>
</postal>
<email>eric.wu@huawei.com</email>
</address>
</author>
<author fullname="Shunwan Zhuang" initials="Z. " surname="Zhuang">
<organization>Huawei</organization>
<address>
<postal>
<street>Huawei Bld., No.156 Beiqing Rd.</street>
<city>Beijing</city>
<code>100095</code>
<country>China</country>
</postal>
<email>zhuangshunwan@huawei.com</email>
</address>
</author>
<date day="19" month="October" year="2015"/>
<abstract>
<t>This document defines extensions to the BGP-LS to distribute/push the
segment information to its administrative SR domain and describes some
use cases.</t>
</abstract>
<note title="Requirements Language">
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in <xref
target="RFC2119">RFC 2119</xref>.</t>
</note>
</front>
<middle>
<section title="Introduction">
<t>In those networks with a central controller, it may be beneficial to
allocate and manage SIDs for the network since the controller has the
whole link-state database in mind. This document proposes BGP extensions
to allocate SIDs in a centralized manner instead of distribution
way.</t>
</section>
<section title="Terminology">
<t><list style="symbols">
<t>MPP: MPLS Path Programming</t>
<t>RR: Route Reflector</t>
<t>SID: Segment Identifier</t>
<t>SR-Path: Segment Routing Path</t>
</list></t>
</section>
<section title="Motivation">
<t/>
<section title="Allocating Segment in BGP Networks">
<t>It is possible that BGP may be the only routing protocol in some
networks, such as the one described in <xref
target="I-D.ietf-rtgwg-bgp-routing-large-dc"/>. If Segment Routing
<xref target="I-D.ietf-spring-segment-routing"/> is going to be used
for in the dataplane, it will be better to allocate SIDs in a
centralized manner since no IGP flooding mechanism to advertise
now.</t>
<t>In order to allocating SIDs, the centralized allocator SHOULD
collect BGP network topology database ahead, which at least consists
of BGP speakers, prefixes and adjacencies among them. No concrete
technique for collecting this database has been specified in this
document.</t>
</section>
<section title="Allocating Segment in IGP Networks">
<t>In the scenario SR & LDP interoperation described in <xref
target="I-D.ietf-spring-segment-routing-ldp-interop"/>, if mapping
entries are allocated in a centralized manner, e.g. a controller, it
is possible that Binding SIDs will be populated to a designated SRMS
through a protocol instead of IGP, no matter whether the SRMS is a
dedicated server or function module.</t>
</section>
</section>
<section title="Protocol Extensions">
<t>This section defines a new Protocol-ID called as
BGP-Segment-Allocation (TBA) in the BGP-LS specification. The use of a
new Protocol-ID allows separation and differentiation between the NLRIs
carrying Segment Allocation information from the NLRIs carrying IGP
link-state information as defined in <xref
target="I-D.ietf-idr-ls-distribution"/>.</t>
<section title="Node NLRI for Segment Allocation">
<t>This section describes the Node NLRI used for allocating the
Node-SID. The Node NLRI Type uses descriptors and attributes already
defined in <xref target="I-D.ietf-idr-ls-distribution"/>. The format
of the Node NLRI Type is as follows:</t>
<t><figure>
<artwork align="center"><![CDATA[
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
+-+-+-+-+-+-+-+-+
| Protocol-ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier |
| (64 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Local Node Descriptors //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
</figure>Where:<list style="symbols">
<t>Protocol-ID set to the new Protocol-ID:
BGP-Segment-Allocation</t>
<t>Node Descriptors defined in <xref
target="I-D.ietf-idr-ls-distribution"/> can be reused</t>
</list></t>
<t>This NLRI MAY contain BGP-LS-SR TLV 1033 (SID/Label Binding) as its
attribute.</t>
</section>
<section title="Link NLRI for Segment Allocation">
<t>This section describes the Link NLRI used for allocating the
Adj-SID. The format of the Link NLRI Type is as follows:</t>
<t><figure>
<artwork align="center"><![CDATA[
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
+-+-+-+-+-+-+-+-+
| Protocol-ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier |
| (64 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Local Node Descriptors //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Remote Node Descriptors //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Link Descriptors //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
</figure></t>
<t>Where:<list style="symbols">
<t>Protocol-ID set to the new Protocol-ID:
BGP-Segment-Allocation</t>
<t>Node Descriptors and Link Descriptors defined in <xref
target="I-D.ietf-idr-ls-distribution"/> can be reused.</t>
</list></t>
<t>Following TLV will be used in Link Attribute:</t>
<t><list style="symbols">
<t>BGP-LS-SR TLV 1034: SR Capabilities</t>
<t>BGP-LS-SR TLV 1035: SR Algorithm</t>
<t>BGP-LS-SR TLV 1099: Adj-SID</t>
<t>BGP-LS-SR TLV 1036: Peer-SID</t>
<t>BGP-LS-SR TLV 1037: Peer-Set-SID</t>
</list></t>
</section>
<section title="Prefix NLRI for Segment Allocation">
<t>This section describes the Prefix NLRI used for Allocating the
Prefix-SID. The format of the Link NLRI Type is as follows:</t>
<t><figure>
<artwork align="center"><![CDATA[
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
+-+-+-+-+-+-+-+-+
| Protocol-ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier |
| (64 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Local Node Descriptors //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Prefix Descriptors //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
</figure></t>
<t>Where:<list style="symbols">
<t>Protocol-ID set to the new Protocol-ID:
BGP-Segment-Allocation</t>
<t>Node Descriptors and Prefix Descriptors defined in <xref
target="I-D.ietf-idr-ls-distribution"/> can be reused.</t>
</list></t>
<t>Following TLV will be used in Prefix Attribute:</t>
<t><list style="symbols">
<t>BGP-LS-SR TLV 1034: SR Capabilities</t>
<t>BGP-LS-SR TLV 1035: SR Algorithm</t>
<t>BGP-LS-SR TLV 1158: Prefix SID</t>
</list></t>
</section>
</section>
<section title="Applications">
<t/>
<section title="Allocating Segments for BGP Networks">
<t>As shown below, we assume:</t>
<t>Each node is its own AS (Node X has AS X). The loopback of Node X
is 1.1.1.x/32.</t>
<t>Each node peers with its neighbors via BGP session.</t>
<t>Each node peers with Controller via BGP session.</t>
<t>Local BGP-LS Identifier in Node X is set to X0000.</t>
<t><figure>
<artwork align="center"><![CDATA[
/----------\
| |
| Controller |
| |
\----------/
|
+-----------------------+-------------------------------+
| | |
| +------+ | +------+ |
| | N7 |-+-| N8 | Tier-1 |
| +------+ +------+ |
| | | | | |
| +---------+ | | +----------+ |
| | +-------+--+-------+--+-------+ | |
| | | | | | | | | |
| +----+ +----+ +----+ +----+ |
| | N3 |-----| N4 | | N5 |-----| N6 | Tier-2 |
| +----+ +----+ +----+ +----+ |
| | | | | |
| | +-----+ | | +-----+ | |
| +-| N1 |-+ +-| N2 |-+ Tier-3 |
| +-----+ +-----+ |
| | | | | | | |
| <- Servers -> <- Servers -> |
+-------------------------------------------------------+
]]></artwork>
</figure></t>
<t>When the controller has collected the topology information of this
BGP network, it can start segment allocation to the network.</t>
<section title="Node-SID Distribution via a Prefix NLRI">
<t>A Node-SID represents a Node and has a global significance,
something like a loopback of a router. Like an operator assigns a
loopback's to their routers, it's expected that the Node-SID value
will be assigned to every node. The assigned value can be an
absolute or Index value and must be globally unique. In order to
push a Node-SID for a router(e.g., N7), Controller advertise a
Prefix NLRI to all the routers of the BGP-SR Network, where:</t>
<t><list style="symbols">
<t>Protocol-ID set to the new Protocol-ID:
BGP-Segment-Allocation</t>
</list><list style="symbols">
<t>Local Node Descriptors contains<list style="symbols">
<t>BGP Router-ID: 7.7.7.7</t>
<t>Local ASN: AS7</t>
<t>BGP-LS Identifier: 70000</t>
</list></t>
</list><list style="symbols">
<t>Prefix Descriptors<list style="symbols">
<t>7.7.7.7/32</t>
</list></t>
</list></t>
<t><list style="symbols">
<t>Prefix Attribute contains<list style="symbols">
<t>BGP-LS-SR TLV 1034: SR Capabilities</t>
<t>BGP-LS-SR TLV 1035: SR Algorithm</t>
<t>BGP-LS-SR TLV 1158: Prefix SID, With the N-flag (node-SID
flag) set.</t>
<t>Other Prefix Attributes.</t>
</list></t>
</list></t>
</section>
<section title="Adj-SID Distribution via a Link NLRI">
<t>In order to push a Adj-SID for a router(e.g., N7 connects to N8),
Controller advertise a Link NLRI to all the routers of the BGP-SR
Network, where:</t>
<t><list style="symbols">
<t>Protocol-ID set to the new Protocol-ID:
BGP-Segment-Allocation</t>
</list><list style="symbols">
<t>Local Node Descriptors contains<list style="symbols">
<t>BGP Router-ID: 7.7.7.7</t>
<t>Local ASN: AS7</t>
<t>BGP-LS Identifier: 70000</t>
</list></t>
</list></t>
<t><list style="symbols">
<t>Remote Node Descriptors contains<list style="symbols">
<t>BGP Router-ID: 8.8.8.8</t>
<t>Local ASN: AS8</t>
<t>BGP-LS Identifier: 80000</t>
</list></t>
</list><list style="symbols">
<t>Link Descriptors<list style="symbols">
<t>BGP session IPv4 local address: 7.7.7.7</t>
<t>BGP session IPv4 peer address: 8.8.8.8</t>
</list></t>
</list><list style="symbols">
<t>Link Attribute contains<list style="symbols">
<t>BGP-LS-SR TLV 1034: SR Capabilities</t>
<t>BGP-LS-SR TLV 1035: SR Algorithm</t>
<t>BGP-LS-EPE TLV 1036: Peer-Node-SID</t>
<t>Other Prefix Attributes.</t>
</list></t>
</list></t>
<t>In the similar way, the controller can distribute Peer-Adj-SID
and Peer-Set-SID.</t>
</section>
</section>
<section title="Allocating Segments for IGP Networks">
<t>In IGP networks deployed with SR, the method defined in <xref
target="I-D.ietf-idr-ls-distribution"/> to populate the topology
database and the SRGB to the controller.</t>
<t>A controller may use the extensions defined in this document to
populate mapping entries to the SRMS. Then the SRMS will advertise
this mapping to all the SR Nodes via IGP.</t>
<t>In the following figure, LSR1-10 and LSR20 are only running LDP and
R21-to-R25 Routers are SR capable Routers. R21 and R22 will be running
both SR and LDP as they are on the border between SR and LDP. The
whole network is running single IGP let's say IS-IS.</t>
<t><figure>
<artwork align="center"><![CDATA[
/----------\
| |
| Controller |
| |
\----------/
/ \
/ \
+----------------------------+----------/-------\---------------+
| LDP Domain | /SR Domain\ |
| | / \ |
| ------ ------- / ------ \ --------- |
| |LSR1|\ | R21 |---+----| R23|\----\|Mapping| |
| ------ \ /-------\ / ------\ |Server | |
| 10.1.1.1\ / 20.1.1.1\ / 20.1.1.3\ --------+ |
| \ / | \ / \ 30.1.1.1 |
| ------ \ ------- / | \/ \ ------ |
| |LSR2|-----\|LSR20|/ | /\ \| R25| |
| ------ / -------\ | / \ /------ |
| 10.1.1.2 / 10.1.1.20\ | / \ / 20.1.1.5 |
| ... / \ | / \ / |
| ------ / \-------/ \------ / |
||LSR10|/ | R22 |----------|R24 |/ |
| ------ ------- ------ |
| 10.1.1.10 20.1.1.2 20.1.1.4 |
| | |
| | |
+----------------------------+----------------------------------+
]]></artwork>
</figure></t>
<t>The Node-SIDs and their corresponding label value mapping could be
like this:</t>
<t><figure>
<artwork align="center"><![CDATA[
Prefix Index Value Range
------------------------------------
10.1.1.1/32 1001 10
10.1.1.20/32 1020 1
20.1.1.1/32 2001 5
]]></artwork>
</figure>The controller will advertise a node NLRI to Mapping
Server, where:</t>
<t><list style="symbols">
<t>Protocol-ID set to the new Protocol-ID:
BGP-Segment-Allocation</t>
</list><list style="symbols">
<t>Local Node Descriptors contains<list style="symbols">
<t>Mapping Server's node descriptor</t>
</list></t>
</list><list style="symbols">
<t>Node Attribute contains<list style="symbols">
<t>BGP-LS-SR TLV-1033: SID/Label Binding TLV</t>
<t>Other Prefix Attributes</t>
</list></t>
</list>Mapping Server will convert BGP-LS-SR TLV-1033 to IS-IS
TLV-149, and advertise this mapping to all the SR Nodes via IS-IS.</t>
<t><figure>
<artwork align="center"><![CDATA[
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length |0|0| | Weight |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Range = 10 | /32 | 10 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| .1 | .1 | .1 |Prefix-SID Type|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| sub-TLV Length| Flags | Algorithm | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length |0|0| | Weight |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Range = 1 | /32 | 10 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| .1 | .1 | .20 |Prefix-SID Type|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| sub-TLV Length| Flags | Algorithm | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 20 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length |0|0| | Weight |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Range = 5 | /32 | 20 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| .1 | .1 | .1 |Prefix-SID Type|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| sub-TLV Length| Flags | Algorithm | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
</figure>A node receiving a MS entry for a prefix MUST check the
existence of such prefix in its link-state database prior to consider
and use the associated SID. This has been defined in <xref
target="I-D.ietf-isis-segment-routing-extensions"/>.</t>
</section>
</section>
<section anchor="IANA" title="IANA Considerations">
<t>TBD.</t>
</section>
<section anchor="Security" title="Security Considerations">
<t>TBD.</t>
</section>
<section title="Acknowledgements">
<t>TBD.</t>
</section>
</middle>
<back>
<references title="Normative References">
<?rfc include="reference.RFC.2119"?>
<?rfc include='reference.I-D.ietf-idr-ls-distribution'?>
<?rfc include='reference.I-D.ietf-isis-segment-routing-extensions'?>
<?rfc include='reference.I-D.ietf-spring-segment-routing'?>
<?rfc include='reference.I-D.ietf-rtgwg-bgp-routing-large-dc'?>
<?rfc include='reference.I-D.ietf-spring-segment-routing-ldp-interop'?>
</references>
<references title="Informative References">
<?rfc include='reference.I-D.gredler-idr-bgp-ls-segment-routing-extension'?>
<?rfc include='reference.I-D.ietf-idr-bgpls-segment-routing-epe'?>
</references>
</back>
</rfc>
| PAFTECH AB 2003-2026 | 2026-04-24 01:06:45 |