Open wso37 opened 4 months ago
Right now, TE code (for both IS-IS and OSPF) supports only P2P with IP address interface. In fact, when building the TE topology, we need to link Nodes (Vertex) through the Links (Edge). For that purpose, we need a unique identifier for the interface. Right now, IPv4, IPv6 and Link Local/Link Remote ID are supported. So, Unnumbered interface could be supported if we could exchange these Link Local / Link Remote ID. This need some code evolution and enhancement.
Thank you for your answer.
I want to say an interface with a /32 IP address. (I said unnumbered because /32 interface appears as unnumbered in FRR).
If I well understand, the configuration below described in the documentation https://docs.frrouting.org/en/latest/pathd.html is not possible :
segment-routing traffic-eng mpls-te on mpls-te import ospfv2 segment-list SL1 index 10 nai prefix 10.1.2.1/32 iface 1 index 20 nai adjacency 10.1.20.1 10.1.20.2
Thank you,
Wso
Hi,
/32 IP address is not considered an unnumbered address from the Traffic Engineering Database point of view. Thus, pathd should deal with such /32 IP address set on interface. But, not sure that the Is-IS adjacency fire up in this case. Personally, I'm using /31 IP address for link between routers and it is working fine.
Second, in the example you raised, the /32 IP address is here the Loopback IP address that designated the destination router. Not the one of an interface. Thus, this /32 IP address is associated to a prefix SID which is different from an adjacency SID. Prefix SID are only advertised if the interface is of type loopback. Not for standard interface for which only adjacency SID are advertised.
Description
The daemon pathd can not retrieve adjacency SID based on a remote node-SID (prefix) and a local unnumbered interface.
segment-list definition with nai adjacency works fine if the interface are configured with in point-to-point with the peers address.
sr-01 : interface eth3.131 ip address 10.1.0.1 peer 10.1.0.3/32
segment-routing traffic-eng mpls-te on mpls-te import isis segment-list sl-01 index 10 nai adjacency 10.1.0.1 10.1.0.3 exit policy color 1 endpoint 0.0.0.0 binding-sid 25000 candidate-path preference 10 name cp-01 explicit segment-list sl-01 exit exit exit
sr-03 : interface eth1.131 ip address 10.1.0.3 peer 10.1.0.1/32
However I want to configure adjacency without specifying the peer address in the point-to-point interface and by using prefix and local iface index.
sr-01 : interface eth3.131 ip address 10.1.0.1/32
segment-routing traffic-eng mpls-te on mpls-te import isis segment-list sl-01 index 10 nai prefix 3.3.3.3/32 iface 7 exit
sr-03 : interface eth1.131 ip address 10.1.0.3/32
Version
How to reproduce
sr-01 configuration
Current configuration: ! frr version 10.0 frr defaults traditional hostname sr-01 log file /tmp/frr.log hostname FRR-01 service integrated-vtysh-config ! debug isis sr-events debug isis te-events debug isis events debug pathd mpls-te debug pathd policy ! interface eth3.131 ip address 10.1.0.1/32 ip router isis sr isis network point-to-point mpls enable link-params exit-link-params exit ! interface eth3.132 ip address 10.2.0.1/32 ip router isis sr isis network point-to-point mpls enable link-params exit-link-params exit ! interface lo ip address 1.1.1.1/32 ip router isis sr isis passive mpls enable exit ! router isis sr is-type level-2-only net 49.0000.0000.0001.00 mpls-te on mpls-te router-address 1.1.1.1 mpls-te export segment-routing on segment-routing node-msd 8 segment-routing prefix 1.1.1.1/32 index 1 no-php-flag exit ! segment-routing traffic-eng mpls-te on mpls-te import isis segment-list sl-01 index 10 nai prefix 3.3.3.3/32 iface 7 exit policy color 1 endpoint 0.0.0.0 binding-sid 25000 candidate-path preference 10 name cp-01 explicit segment-list sl-01 exit exit exit ! end
sr-03 configuration
Current configuration: ! frr version 10.0 frr defaults traditional hostname sr-03 hostname FRR-03 service integrated-vtysh-config ! interface eth1.131 ip address 10.1.0.3/32 ip router isis sr isis network point-to-point mpls enable link-params exit-link-params exit ! interface eth1.132 ip address 10.2.0.3/32 ip router isis sr isis network point-to-point mpls enable link-params exit-link-params exit ! interface eth2 shutdown exit ! interface eth3 shutdown exit ! interface lo ip address 3.3.3.3/32 ip router isis sr isis passive mpls enable exit ! router isis sr is-type level-2-only net 49.0000.0000.0003.00 mpls-te on mpls-te router-address 3.3.3.3 mpls-te export segment-routing on segment-routing node-msd 8 segment-routing prefix 3.3.3.3/32 index 3 no-php-flag exit ! segment-routing traffic-eng mpls-te on mpls-te import isis exit exit ! end
Expected behavior
Success of the TED query type E to retrieve the adjacency SID.
Actual behavior
Below the ERROR in the log file of pathd:
PATH: [J6ABG-ASJFH] segment_list_has_prefix: [rcv ted] CLI NOT FOUND Continue query_type_e PREFIX (3.3.3.3/32) IFACE (7) sid:(-1)! PATH: [MWDWH-347ZK] Segment list name (10) index (sl-01) PATH: [GGA79-HSVDR] srte_ted_do_query_type_e: PATHD-TED: SL: ERROR query E : ted-sid (-1) PATH: [M3PYG-1S2M8] policy: SR-TE(0.0.0.0, 1): best candidate changed from cp-01 to none
Additional context
####################################
FRR-01# show isis mpls-te database detail Area sr:
Vertex (1): sr-01 Router Id: 1.1.1.1 Origin: ISIS_L2 Status: Sync Segment Routing Capabilities: SRGB: [16000/23999] SRLB: [15000/15999] Algo: SPF S-SPF MSD: 8 Outgoing Edges: 2 To: sr-03(3.3.3.3) Local: 10.1.0.1 Remote: 10.1.0.3 To: sr-03(3.3.3.3) Local: 10.2.0.1 Remote: 10.2.0.3 Incoming Edges: 0 Subnets: 3 Prefix: 1.1.1.1/32 Prefix: 10.1.0.1/32 Prefix: 10.2.0.1/32
Vertex (3): sr-03 Router Id: 3.3.3.3 Origin: ISIS_L2 Status: Sync Segment Routing Capabilities: SRGB: [16000/23999] SRLB: [15000/15999] Algo: SPF S-SPF MSD: 8 Outgoing Edges: 0 Incoming Edges: 2 From: sr-01(1.1.1.1) Local: 10.1.0.1 Remote: 10.1.0.3 From: sr-01(1.1.1.1) Local: 10.2.0.1 Remote: 10.2.0.3 Subnets: 3 Prefix: 3.3.3.3/32 Prefix: 10.1.0.3/32 Prefix: 10.2.0.3/32
Edge (10.1.0.1): 10.1.0.1 Adv. Vertex: 0000.0000.0001 Metric: 10 Status: Sync Origin: ISIS_L2 Local IPv4 address: 10.1.0.1 Remote IPv4 address: 10.1.0.3 Maximum Bandwidth: 1.25e+06 (Bytes/s) Maximum Reservable Bandwidth: 1.25e+06 (Bytes/s) Unreserved Bandwidth per Class Type
Edge (10.2.0.1): 10.2.0.1 Adv. Vertex: 0000.0000.0001 Metric: 10 Status: Sync Origin: ISIS_L2 Local IPv4 address: 10.2.0.1 Remote IPv4 address: 10.2.0.3 Maximum Bandwidth: 1.25e+06 (Bytes/s) Maximum Reservable Bandwidth: 1.25e+06 (Bytes/s) Unreserved Bandwidth per Class Type
Subnet: 1.1.1.1/32 Adv. Vertex: 0000.0000.0001 Metric: 10 Status: Sync Origin: ISIS_L2 SID: 1 Algorithm: 0 Flags: 0x60
Subnet: 3.3.3.3/32 Adv. Vertex: 0000.0000.0003 Metric: 10 Status: Sync Origin: ISIS_L2 SID: 3 Algorithm: 0 Flags: 0x60
Subnet: 10.1.0.1/32 Adv. Vertex: 0000.0000.0001 Metric: 10 Status: Sync Origin: ISIS_L2
Subnet: 10.1.0.3/32 Adv. Vertex: 0000.0000.0003 Metric: 10 Status: Sync Origin: ISIS_L2
Subnet: 10.2.0.1/32 Adv. Vertex: 0000.0000.0001 Metric: 10 Status: Sync Origin: ISIS_L2
Subnet: 10.2.0.3/32 Adv. Vertex: 0000.0000.0003 Metric: 10 Status: Sync Origin: ISIS_L2
#######################################
FRR-03# show isis mpls-te database detail Area sr:
Vertex (1): sr-01 Router Id: 1.1.1.1 Origin: ISIS_L2 Status: Sync Segment Routing Capabilities: SRGB: [16000/23999] SRLB: [15000/15999] Algo: SPF S-SPF MSD: 8 Outgoing Edges: 2 To: sr-03(3.3.3.3) Local: 10.1.0.1 Remote: 10.1.0.3 To: sr-03(3.3.3.3) Local: 10.2.0.1 Remote: 10.2.0.3 Incoming Edges: 0 Subnets: 3 Prefix: 1.1.1.1/32 Prefix: 10.1.0.1/32 Prefix: 10.2.0.1/32
Vertex (3): sr-03 Router Id: 3.3.3.3 Origin: ISIS_L2 Status: Sync Segment Routing Capabilities: SRGB: [16000/23999] SRLB: [15000/15999] Algo: SPF S-SPF MSD: 8 Outgoing Edges: 0 Incoming Edges: 2 From: sr-01(1.1.1.1) Local: 10.1.0.1 Remote: 10.1.0.3 From: sr-01(1.1.1.1) Local: 10.2.0.1 Remote: 10.2.0.3 Subnets: 3 Prefix: 3.3.3.3/32 Prefix: 10.1.0.3/32 Prefix: 10.2.0.3/32
Edge (10.1.0.1): 10.1.0.1 Adv. Vertex: 0000.0000.0001 Metric: 10 Status: Sync Origin: ISIS_L2 Local IPv4 address: 10.1.0.1 Remote IPv4 address: 10.1.0.3 Maximum Bandwidth: 1.25e+06 (Bytes/s) Maximum Reservable Bandwidth: 1.25e+06 (Bytes/s) Unreserved Bandwidth per Class Type
Edge (10.2.0.1): 10.2.0.1 Adv. Vertex: 0000.0000.0001 Metric: 10 Status: Sync Origin: ISIS_L2 Local IPv4 address: 10.2.0.1 Remote IPv4 address: 10.2.0.3 Maximum Bandwidth: 1.25e+06 (Bytes/s) Maximum Reservable Bandwidth: 1.25e+06 (Bytes/s) Unreserved Bandwidth per Class Type
Subnet: 1.1.1.1/32 Adv. Vertex: 0000.0000.0001 Metric: 10 Status: Sync Origin: ISIS_L2 SID: 1 Algorithm: 0 Flags: 0x60
Subnet: 3.3.3.3/32 Adv. Vertex: 0000.0000.0003 Metric: 10 Status: Sync Origin: ISIS_L2 SID: 3 Algorithm: 0 Flags: 0x60
Subnet: 10.1.0.1/32 Adv. Vertex: 0000.0000.0001 Metric: 10 Status: Sync Origin: ISIS_L2
Subnet: 10.1.0.3/32 Adv. Vertex: 0000.0000.0003 Metric: 10 Status: Sync Origin: ISIS_L2
Subnet: 10.2.0.1/32 Adv. Vertex: 0000.0000.0001 Metric: 10 Status: Sync Origin: ISIS_L2
Subnet: 10.2.0.3/32 Adv. Vertex: 0000.0000.0003 Metric: 10 Status: Sync Origin: ISIS_L2
#################################################################
FRR-01# sh mpls table Inbound Label Type Nexthop Outbound Label
15000 SR (IS-IS) 10.1.0.3 implicit-null
15001 SR (IS-IS) 10.2.0.3 implicit-null
16001 SR (IS-IS) lo -
16003 SR (IS-IS) 10.2.0.3 16003
16003 SR (IS-IS) 10.1.0.3 16003
FRR-03# show mpls table Inbound Label Type Nexthop Outbound Label
15000 SR (IS-IS) 10.1.0.1 implicit-null
15001 SR (IS-IS) 10.2.0.1 implicit-null
16001 SR (IS-IS) 10.2.0.1 16001
16001 SR (IS-IS) 10.1.0.1 16001
16003 SR (IS-IS) lo -
FRR-01# show interface eth3.131 Interface eth3.131 is up, line protocol is up Link ups: 1 last: 2024/06/07 14:45:47.74 Link downs: 0 last: (never) vrf: default index 7 metric 0 mtu 1500 speed 0 txqlen 1000 flags: <UP,BROADCAST,RUNNING,MULTICAST> MPLS enabled Type: Ethernet HWaddr: 52:54:00:5c:90:61 inet 10.1.0.1/32 unnumbered inet6 fe80::5054:ff:fe5c:9061/64 Interface Type Vlan Interface Slave Type None VLAN Id 131 protodown: off Parent interface: eth3 Traffic Engineering Link Parameters: Maximum Bandwidth 1.25e+06 (Byte/s) Maximum Reservable Bandwidth 1.25e+06 (Byte/s) Unreserved Bandwidth per Class Type in Byte/s:
Checklist