Internet-Draft | SR in TwoD-IP Routing | February 2022 |
Xu, et al. | Expires 27 August 2022 | [Page] |
Segment Routing (SR) allows a headend node to steer traffic into a Segment Routing Policy (SR Policy), which represents the routing path by matching the destination address and the corresponding Binding Segment Identifier (BSID). However, determining the target SR Policy only based on destination aspect is incapable for demands for higher dimensional routing. Two Dimensional IP (TwoD-IP) routing is an Internet routing architecture that makes forwarding decisions based on source and destination addresses. TwoD-IP routing can easily express a routing policy between host to host, or network to network, and have much lower storage and calculation consumption compared to the higher dimensional routing.¶
In this document, we extend SR to support TwoD-IP routing, illustrate some typical scenarios of SR with TwoD-IP routing to express the advantage of extending SR to support TwoD-IP routing, and describe the mechanism of how TwoD IP routing protocol cooperates with SR.¶
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 RFC 2119 [RFC2119].¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 5 August 2022.¶
Copyright (c) 2022 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
Segment routing (SR) [RFC8402] allows a headend node to steer a packet flow into an Segment Routing Policy (SR Policy), which represents the routing path. So that the administrator can specific forwarding path on headend node [I-D.ietf-spring-segment-routing-policy].¶
The headend node can steers packets into an SR Policy either by matching the destination address or routing policy. However, due to the increasing demands of higher dimensional routing like Multi-homing or Source Related Policy Routing, only directs packets based on destination aspect is limited under those scenarios. Moreover, directing packets into SR Policy by routing policy, which can match other fields in packets like port and source address, needs many access in memory. Considering the high-speed ternary content-addressable memory (TCAM) based solution for routers is limited by its low capacity, simply adding one more dimension on routing policy can easily become undeployable on TCAM-based solution.¶
To achieve higher Dimensional routing objectives, we introduce Two Dimensional-IP (TwoD-IP) routing protocol. [I-D.xu-rtgwg-twod-IP-routing] The TwoD-IP routing architecture can easily express a routing policy between host to host, or network to network, and have much lower storage and calculation consumption compared to higher dimensional routing.¶
In this document, we extend Segment Routing to support Two Dimensional IP(TwoD-IP) routing to enriches the routing abilities, describe how they cooperate to achieve higher dimensional routing like Multi-homing.¶
To extend Segment Routing to support Two Dimensional IP(TwoD-IP) routing, modification of the data plane and control plane is necessary. In data plane, the TwoD-IP routing protocol needs a TwoD-IP forwarding table to stores the source and destination address information. In control plane, the TwoD-IP routing protocol leverages OSPFv3 Router Information(RI) LSA to broadcast configuration and the SR Policy Dynamic Path Computation to compute optimal forwarding path under setting configuration. With these modifications, the headend node will be able to make forwarding decisions base on both source and destination aspects without damaging existing SR architecture.¶
Terminology used in this document:¶
This section lists two scenarios which can benefit from TwoD-IP routing protocol with Segment Routing technology. Illustrating that TwoD-IP routing protocol can seamless deployment with SR and combine their advantage to achieve users demands of higher dimensional routing.¶
Even though Segment Routing is able to steer flows to the destination in different way, it is still limited to process the source-related routing scenario like Multi-homing.¶
Multi-homing[RFC4177] is prevalent among ISPs for better traffic distribution and reliability. In this case, a network could be connected to multiple upstream ISPs, Hosts are assigned multiple addresses, one for each ISP. The network is responsible for delivering packets from Hosts to the export exit router that is connected to the corresponding upstream ISP.¶
For example, in Figure 1, a multi-homed site is connected to two ISPs: ISP1 and ISP2. ISP1 has a prefix P1, and ISP2 has a prefix P2. A host connect to the multi-homed site has two addresses, address A that assigned from ISP1, and address B that assigned from ISP2. the multi-homed site should deliver the traffic from A towards the Internet to ISP1, and deliver the traffic from B towards the Internet to ISP2.¶
+--------------------+ | | | Internet | | | +--+---------------+-+ | | | l3 | l4 | | +------+----+ +--+--------+ | ISP1 | | ISP2 | | Prefix P1 | | Prefix P2 | +--------+--+ +-+---------+ | | | l1 | l2 +--+------------+--+ | | | Multi-homed Site | +---------+ | +--------+ Host | +------------------+ +---------+ ISP1 assign address: A ISP2 assign address: B Figure 1: Multi-homing scenario¶
Although SR can assign different forwarding paths to different ISP for an incoming packet, it still lacks the ability to classify the packets toward the same destination address with different source addresses A and B. With the help of TwoD-IP and Segment Routing, the administrator can easily implement Multi-homing by modifying the headend node that receives packets from Host, which means that administrator does not need to concern about the intermediate node. After extending SR to support TwoD-IP routing, the headend node can routing packet based on both source and destination address, guides packets from Host through the optimal path to the corresponding ISP.¶
In this scenario, an ingress edge node wants to forward packets with the same destination address through different kind of paths in order to achieve source related demand.¶
For example, in Figure 2, assume a network has four routers: a, b, c and d, c has a service(such as authentication or encIPherer). The operator wants a packet from a to d to be delivered to service c first and then node c will forward the processed packet to it's destination d.¶
+---------+ +------+ c +-----+ | +(service)+ | | +---------+ | | | +------+ +--+---+ +---+--+ | a +----------+ b +--------------+ d | +------+ +------+ +------+ Figure 2: TwoD-IP routing for Service¶
In Segment Routing Architecture, we can allocate a Service segment associated with node c's service.[I-D.ietf-spring-sr-service-programming] and can be integrated as part of an SR Policy P1(Headend node: b, color, Endpoint: d) of Segment-List < c > . But SR Policy steers packets to a specific SR Policy only when this packet's destination matching corresponding entry, which means headend node can't only steers packets from a to SR Policy P1.¶
But with TwoD-IP routing, headend node b can easily steer packets matching destination of b and source of a to SR Policy P1, then the packet will be delivered to service c first and then node c will forward the processed packet to it's destination d.¶
The mechanism of how we combine TwoD IP routing and Segment Routing can be separated into the data plane and the control plane.¶
The data plane is mainly concerned about the forward table. It is the foundation of two-dimensional packets forwarding. It needs to be able to store the two-dimensional information of destination and source address without expanding TCAM resource, and the lookup process needs to be quick to support massive packets routing. Then we describe the lookup process and forwarding table updating based on it.¶
Under SR Two-D IP routing, The control plane is concerned with network status and user demands related to <destination address, source address> pair. It needs to transform the user demand to the Policy routing and integrate the Policy routing to the forwarding table so that the headend node can steers packets to a Policy routing representing user demand by checking the packet's <destination address, source address> pair.¶
The administrator only need to deploy the TwoD-IP forwarding table in the headend node, which makes implementing TwoD-IP routing is much easier. TwoD-IP routing leverages the Segment Routing to deploy the TwoD-IP forwarding table in the headend, which makes implementing TwoD-IP routing is much easier. To achieve the ability of steering packets' forwarding path to follow our decision, we are not willing to damage the existing segment routing architecture.¶
The fast, massive packets routing required fast forwarding entries searching speed, which required the TCAM to store the forwarding entries. However, the TCAM resource is limited under TwoD-IP routing for the dimensional explosion problem in which two-d forward entries grow exponentially. To routing massive packets as fast as possible, a brand new forwarding table structure needs to be design¶
Unlike the existing SR Policy architecture that steers packets into matching Binding SID based on destination field in the packet, the TwoD-IP routing should steer packets into a BSID according to both the destination and source IP address. The new forwarding table design should satisfy the following requirements:¶
Source +------------+------+------+------+------+ Table |default | 111* | 101* | 100* | 11** | +------------+------+------+------+------+ | 0 | 1 | 2 | 3 | 4 | +------------+------+------+------+------+ Destination default Mapping Table Table | FIB Index | index | +-------+---+ --+-----------+------+------+------+------+--- | 111* | 0 | | 0 | 0 | | 1 | | +-------+---+ --+-----------+------+------+------+------+--- | 100* | 1 | | 1 | 2 | | | | +-------+---+ --+-----------+------+------+------+------+--- | 101* | 2 | | 2 | | | | 2 | +-------+---+ --+-----------+------+------+------+------+--- | 11** | 3 | | 3 | | | | | +-------+---+ --+-----------+------+------+------+------+--- | 10** | 4 | | 4 | | | | 3 | +-------+---+ --+-----------+------+------+------+------+--- | | | | | | TD-table +------+---------+ +------+---------+ |Index |Next hop | |prefix|Next hop | +------+---------+ +------+---------+ | 0 |BSID1 | | 0 |1.0.0.0 | +------+---------+ +------+---------+ Mapping | 1 |BSID1 | Default | 1 |1.0.0.1 | Table +------+---------+ FIB +------+---------+ | 2 |BSID2 | | 2 |1.0.0.2 | +------+---------+ +------+---------+ | 3 |BSID3 | | 3 |1.0.0.3 | +------+---------+ +------+---------+ Figure 2: SR in Two-Dimensional IP Routing Forwarding Table Structure¶
To achieve all design goals of the forwarding table, we integrate the TwoD-IP routing forwarding table structure called FIST into Segment Rouitng's FIB. As shown in Figure 3, the forwarding table structure consists of the following components:¶
Even though there is a Default FIB in forwarding table structure which is the same as existing FIB, the lookup action is not based on it, it based on the Destination and Source Table. More specific, when a packet arrives at the source router, the lookup action is as follows.¶
Perform the following two operations in parallel:¶
Lookup the cell that is in the nth row and mth column of the TD-table, and output the index value v of default FIB or Mapping table:¶
The most considerable lookup time is the entries searching for the address. To speed it up, we store the destination and source address IP prefix in TCAM, and look up those tables in parallel. After getting the output index of the entries based on the <destination address, source address> pair, every subsequent lookup action will consume one SRAM clock cycle.¶
The SR TwoD-IP routing should activate the policy routing based on the packet's <destination address, source address> pair in the headend node. Moreover, the SR architecture has provided an identification called Binding segment (BSID) to represent a policy routing. So the next hop in the Mapping table SHOULD steer the packet into the BSID of SR Policy, which represents a Segment-List.¶
In Segment Routing in Two Dimensional IP Routing architecture, not only TwoD-IP routing will modify the forwarding table FIST to satisfy its routing policy, but the existing Segment Routing Policy will also deploy its routing Policy. We do not want to damage the existing Segment Routing architecture, so it is still available for Segment Routing to modify the FIB to steer packets into specific SID such as SR Policy On-Demand next hop. However, any modification of FIB in Segment Routing MUST reside in FIST Default FIB, and if there are any modifications of keys in FIST Default FIB, the Destination Table must be in keeping with it for correcting lookup.¶
The reason any modification of SR Policy MUST resides in FIST Default FIB is that under segment Routing in Two Dimensional IP Routing architecture, the TwoD-IP routing policy is priority-first. The routing Policy located in FIST Default FIB will be matched only when there is no TwoD-IP policy corresponding to incoming packet's <destination, source> pair.¶
Under SR Two-D IP routing, The control plane is concerned with network status and user demands. Furthermore, The Two-D IP routing can offload the network status like topology or reachability to the SR framework. However, the Two-D IP routing is still responsible for transforming the user demand of two-dimensional destination and source addresses to the forwarding Policy and integrating it to the forwarding table.¶
The control plane of SR Two-D IP routing is consists of the following parts:¶
The headend node needs to transform the TwoD-IP configuration to the Policy routing and install it into the forwarding table to achieve the two-dimensional IP routing. We need to be concerned about how to notification these TwoD-IP configurations to the headend node. There are two practical ways to achieve this object: install the headend node manually or advertise these TwoD-IP configurations from other nodes to the headend node.¶
When advertising TwoD-IP configurations between nodes, three parts needs to be carried: destination addresses, source addresses, and the user demands of the <destination, source> pairs. Because we leverage the SR Policy to represent the routing policy and SR Policy Dynamic Path Computation to compute the target forwarding path, the user demand will be expressed as an optimization objective and constraints.¶
The configurations of TwoD-IP routing is organized as TwoD-IP configuration TLV. For example, this brand new TLV can be a TLV of OSPFv3 Router Information(RI) LSA, which introduce the ability to broadcast the TwoD-IP configuration information between OSPF nodes by advertising an OSPFv3 RI LSA that carries the TwoD-IP configuration TLV.¶
More specifically, all three kinds of TwoD-IP configuration, including destination addresses, source addresses, and the user demands of the <destination, source> pairs are all included within the TwoD-IP configuration TLV as three kinds of Sub-TLVs. The TwoD-IP configuration TLV is the same as the format used by[RFC3630]. The variable TLV section consists of one or more nested TLV tuples. The format of each TLV is:¶
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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sub-TLVs | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 3. TwoD-IP configuration TLV Format¶
Where:¶
To leverage the ability of SR Policy Dynamic Path Computation, the user demand MUST be represented by the formation of Optimization object and constraints. So each user demand carried by Demands Object Sub-TLV is consists of Optimization object and constraints information. And the Optimization and the constraint is refer to the [I-D.filsfils-spring-sr-policy-considerations].¶
The format of Demands Object Sub-TLV is:¶
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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved |O Flags| Optimize T | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved |C Flags| Constraint T | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Constraint variables | | ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 4: Optimization Object Sub-TLV Format¶
Where:¶
O Flags(4 bits): Optimization object Flags, identify the optimization objective, The following flags are defined:¶
0 1 2 3 +-+-+-+-+ |M|N| | +-+-+-+-+¶
Where:¶
Optimize T (Type - 8 bits): Specifies the metric type. Three values are currently defined:¶
C Flags(4 bits): Constraints Flags, iIdentify the Constraints of forwarding path computation, The following flags are defined:¶
0 1 2 3 +-+-+-+-+ |I|E|D| | +-+-+-+-+¶
Where:¶
Constraint T (Type - 8 bits): Specifies the metric type. Two values are currently defined:¶
A TwoD-IP routing demand corresponding a <destination, source> pair, so the Optimization object and constraint define a TwoD-IP demand and naturally need to bind a <destination, source> pair. The pair's information is carried in destination/source address Sub-TLV, and it's format is:¶
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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | PrefixLength |T| Reserved | PrefixNumbers | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Address Prefix1 | | ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Address Prefix2 | | ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... | | | Figure 6: destination/source address Sub-TLV Format¶
Where:¶
The procedure of transforming the TwoD-IP configuration to a forwarding path and steering corresponding packets through it consists of two steps: Calling the SR Policy Dynamic candidate path and TwoD-IP forwarding table entries modification.¶
In keeping with SR Policy Dynamic Path Computation, the TwoD-IP configuration contains the Optimization object and constraint information. when the headend node receives TwoD-IP configuration information(manually or automatically), it will extract the Optimization object and constraint information to generate a corresponding SR Policy .¶
The candidate path associated of an SR Policy is a dynamic candidate path that is expressed by optimization objective and a set of constraints extracted from the TwoD-IP Demands Sub-TLV. Then the headend node(or with the help of a PCE) computes the solution Segment-List that solves the optimization problem to match our TwoD-IP routing demand. After path computation, the SR Policy can represent the forwarding path that satisfies the TwoD-IP Demand. Any packets steered to this SR Policy can be forwarded to the destination following the target path. After offloading the path computation to SR without private custom, TwoD-IP routing can achieve higher compatibility and easier deployment.¶
an SR Policy can be represented by the identifier called Binding segment (BSID) under Segment Routing architecture. So after path computation under user demands, we can get the SR policy which represents the target forwarding path and the BSID associated with it. Then we need to install this BSID into the TwoD-IP forwarding table so that the TwoD-IP forwarding table can match and steer packets into target BSID, and forward them through SR Policy dynamic path.¶
More specifically, The control plane will install the BSID into the Mapping Table and get the index of entry that stores it. then for all the <destination address, source address> pairs associated with this BSID, the control plane will update the TD-table cells of these pairs to the Mapping Table index or update entries to the source or destination table if there is an uninstalled pair.¶
This document does not introduce additional security requirements and mechanisms.¶
This memo asks the IANA for no new parameters.¶