FRRouting / frr

The FRRouting Protocol Suite
https://frrouting.org/
Other
3.19k stars 1.23k forks source link

isisd: The L1-2 router cannot advertise L1 routes into L2 #14402

Open Sashhkaa opened 11 months ago

Sashhkaa commented 11 months ago

FRR version: 9.1-dev OS version: Ubuntu 22.04 LTS Kernel version: 5.15.91

I want to solve this problem, but I am having problems choosing a trajectory for implementing this problem. Any ideas on how this can be done?

As specified in RFC1195/RFC5302, inter-area routing on direction from L2 to L1 done by injecting routes on L1/L2 router to L2 LSPs or configuring summary on L1/L2 router.

The Network topology: R1 - L1 - r2 - L2 - R3

It is expected on R3 to see prefixes of R1 router coming from LSPs from R2 router. But they are not included in LSP from R2 router.

R2# show isis database detail Area myisis: IS-IS Level-1 link-state database: LSP ID PduLen SeqNumber Chksum Holdtime ATT/P/OL R1.00-00 194 0x0000003e 0xbffa 1118 0/0/0 Protocols Supported: IPv4, IPv6 Area Address: 49.0012 Hostname: R1 TE Router ID: 10.10.10.1 Router Capability: 10.10.10.1 , D:0, S:0 Segment Routing: I:1 V:1, Global Block Base: 10000 Range: 40001 SR Local Block Base: 60000 Range: 40001 SR Algorithm: 0: SPF Node Maximum SID Depth: 16 Extended Reachability: 0000.0000.0002.00 (Metric: 10) Remote Interface IPv6 Address(es): fd00:23::2 Adjacency-SID: 60000, Weight: 0, Flags: F:1 B:0, V:1, L:1, S:0, P:0 IPv4 Interface Address: 10.10.10.1 Extended IP Reachability: 10.10.10.1/32 (Metric: 10) IPv6 Reachability: fd00:100::1/128 (Metric: 10) IPv6 Reachability: fd00:13::/64 (Metric: 10) IPv6 Reachability: fd00:dead:beef::/64 (Metric: 0)

R2.00-00 * 212 0x00000042 0x1a4a 1057 1/0/0 Protocols Supported: IPv4, IPv6 Area Address: 49.0012 Hostname: R2 TE Router ID: 10.10.10.2 Router Capability: 10.10.10.2 , D:0, S:0 Segment Routing: I:1 V:1, Global Block Base: 10000 Range: 40001 SR Local Block Base: 60000 Range: 40001 SR Algorithm: 0: SPF Node Maximum SID Depth: 16 Extended Reachability: 0000.0000.0001.00 (Metric: 10) Local Interface IPv6 Address(es): fd00:23::2 Remote Interface IPv6 Address(es): fd00:13::1 Adjacency-SID: 60000, Weight: 0, Flags: F:1 B:0, V:1, L:1, S:0, P:0 IPv4 Interface Address: 10.10.10.2 Extended IP Reachability: 10.10.10.2/32 (Metric: 10) Subtlvs: IPv6 Reachability: fd00:100::2/128 (Metric: 10) Subtlvs: IPv6 Reachability: fd00:23::/64 (Metric: 10) Subtlvs: IPv6 Reachability: fd00:13::/64 (Metric: 10) Subtlvs:

2 LSPs

IS-IS Level-2 link-state database: LSP ID PduLen SeqNumber Chksum Holdtime ATT/P/OL R2.00-00 * 212 0x00000042 0x3d29 1059 0/0/0 Protocols Supported: IPv4, IPv6 Area Address: 49.0012 Hostname: R2 TE Router ID: 10.10.10.2 Router Capability: 10.10.10.2 , D:0, S:0 Segment Routing: I:1 V:1, Global Block Base: 10000 Range: 40001 SR Local Block Base: 60000 Range: 40001 SR Algorithm: 0: SPF Node Maximum SID Depth: 16 Extended Reachability: 0000.0000.0004.00 (Metric: 10) Local Interface IPv6 Address(es): fd00:13::2 Remote Interface IPv6 Address(es): fd00:23::3 Adjacency-SID: 60001, Weight: 0, Flags: F:1 B:0, V:1, L:1, S:0, P:0 IPv4 Interface Address: 10.10.10.2 Extended IP Reachability: 10.10.10.2/32 (Metric: 10) Subtlvs: IPv6 Reachability: fd00:100::2/128 (Metric: 10) Subtlvs: IPv6 Reachability: fd00:23::/64 (Metric: 10) Subtlvs: IPv6 Reachability: fd00:13::/64 (Metric: 10) Subtlvs:

R3.00-00 220 0x0000003b 0x29e6 705 0/0/0 Protocols Supported: IPv4, IPv6 Area Address: 49.0034 Hostname: R3 TE Router ID: 10.10.10.3 Router Capability: 10.10.10.3 , D:0, S:0 Segment Routing: I:1 V:1, Global Block Base: 10000 Range: 40001 SR Local Block Base: 60000 Range: 40001 SR Algorithm: 0: SPF Node Maximum SID Depth: 16 Extended Reachability: 0000.0000.0002.00 (Metric: 10) Local Interface IPv6 Address(es): fd00:23::3 Remote Interface IPv6 Address(es): fd00:13::2 Adjacency-SID: 60000, Weight: 0, Flags: F:1 B:0, V:1, L:1, S:0, P:0 IPv4 Interface Address: 10.10.10.3 Extended IP Reachability: 10.10.10.3/32 (Metric: 10) IPv6 Reachability: fd00:23::/64 (Metric: 10) IPv6 Reachability: fd00:100::/128 (Metric: 10) IPv6 Reachability: fd00:100::3/128 (Metric: 10)

2 LSPs

R3# sh isis database detail Area myisis: IS-IS Level-1 link-state database: LSP ID PduLen SeqNumber Chksum Holdtime ATT/P/OL R3.00-00 * 164 0x0000003b 0xd249 613 1/0/0 Protocols Supported: IPv4, IPv6 Area Address: 49.0034 Hostname: R3 TE Router ID: 10.10.10.3 Router Capability: 10.10.10.3 , D:0, S:0 Segment Routing: I:1 V:1, Global Block Base: 10000 Range: 40001 SR Local Block Base: 60000 Range: 40001 SR Algorithm: 0: SPF Node Maximum SID Depth: 16 IPv4 Interface Address: 10.10.10.3 Extended IP Reachability: 10.10.10.3/32 (Metric: 10) Subtlvs: IPv6 Reachability: fd00:23::/64 (Metric: 10) Subtlvs: IPv6 Reachability: fd00:100::/128 (Metric: 10) Subtlvs: IPv6 Reachability: fd00:100::3/128 (Metric: 10) Subtlvs:

1 LSPs

IS-IS Level-2 link-state database: LSP ID PduLen SeqNumber Chksum Holdtime ATT/P/OL R2.00-00 212 0x00000042 0x3d29 921 0/0/0 Protocols Supported: IPv4, IPv6 Area Address: 49.0012 Hostname: R2 TE Router ID: 10.10.10.2 Router Capability: 10.10.10.2 , D:0, S:0 Segment Routing: I:1 V:1, Global Block Base: 10000 Range: 40001 SR Local Block Base: 60000 Range: 40001 SR Algorithm: 0: SPF Node Maximum SID Depth: 16 Extended Reachability: 0000.0000.0004.00 (Metric: 10) Local Interface IPv6 Address(es): fd00:13::2 Remote Interface IPv6 Address(es): fd00:23::3 Adjacency-SID: 60001, Weight: 0, Flags: F:1 B:0, V:1, L:1, S:0, P:0 IPv4 Interface Address: 10.10.10.2 Extended IP Reachability: 10.10.10.2/32 (Metric: 10) IPv6 Reachability: fd00:100::2/128 (Metric: 10) IPv6 Reachability: fd00:23::/64 (Metric: 10) IPv6 Reachability: fd00:13::/64 (Metric: 10)

R3.00-00 * 220 0x0000003b 0x29e6 567 0/0/0 Protocols Supported: IPv4, IPv6 Area Address: 49.0034 Hostname: R3 TE Router ID: 10.10.10.3 Router Capability: 10.10.10.3 , D:0, S:0 Segment Routing: I:1 V:1, Global Block Base: 10000 Range: 40001 SR Local Block Base: 60000 Range: 40001 SR Algorithm: 0: SPF Node Maximum SID Depth: 16 Extended Reachability: 0000.0000.0002.00 (Metric: 10) Local Interface IPv6 Address(es): fd00:23::3 Remote Interface IPv6 Address(es): fd00:13::2 Adjacency-SID: 60000, Weight: 0, Flags: F:1 B:0, V:1, L:1, S:0, P:0 IPv4 Interface Address: 10.10.10.3 Extended IP Reachability: 10.10.10.3/32 (Metric: 10) Subtlvs: IPv6 Reachability: fd00:23::/64 (Metric: 10) Subtlvs: IPv6 Reachability: fd00:100::/128 (Metric: 10) Subtlvs: IPv6 Reachability: fd00:100::3/128 (Metric: 10) Subtlvs:

2 LSPs
Sashhkaa commented 11 months ago

@odd22

odd22 commented 11 months ago

This feature is not yet implemented.

Sashhkaa commented 11 months ago

This feature is not yet implemented.

I know, but I want to implement it, I would like some advice on how to implement it

Sashhkaa commented 11 months ago

This feature is not yet implemented.

This feature is not yet implemented.

I don’t understand exactly how the prefixes from L1 LSP should get into L2 LSP . That is storage struct isis_item_list ipv4/ipv6_address of all addresses, but I don’t understand how to implement their recording in L2 LSP.

odd22 commented 11 months ago

First, check the RFC as there is some rules to respect. Second, to redistribute prefixes, you should generate appropriate IS-IS LSP packet to advertise these prefixes on the interface that are L2. For that purpose, you could start by having a look to isisd/isis_lsp.c TLVs encode/decode are located into isisd/isis_tlvs.[c,h] which could also help.

github-actions[bot] commented 5 months ago

This issue is stale because it has been open 180 days with no activity. Comment or remove the autoclose label in order to avoid having this issue closed.

frrbot[bot] commented 5 months ago

This issue will be automatically closed in the specified period unless there is further activity.

mwoliver commented 5 months ago

I, too, am struggling with this. As it is, isisd appears to only be useful in a single-area network. When compared to IOS in my IPv6-only usage, the L1-L2 router is bundling all L1 and L2 prefixes into type 246 (iirc) as L2 when sending to the interarea L2 router, but in FRR only the local routes on the L1-L2 are sent -- the L1 prefixes are not and therefore the interarea usage is completely broken. I would love to help with this, will try to dig into the code soon.

frrbot[bot] commented 5 months ago

This issue will no longer be automatically closed.

DS819src commented 4 months ago

Hello, I'm struggling with the same issue, I got my L1 route not in my L2 route. It caused, the backbone and other areas can't reach the network behind the L1 route. Maybe somebody can implement this function.

squirrelking57 commented 4 months ago

Hello, I'm struggling with the same issue, I got my L1 route not in my L2 route. It caused, the backbone and other areas can't reach the network behind the L1 route. Maybe somebody can implement this function.

hi! i created pr about it https://github.com/FRRouting/frr/pull/15617

squirrelking57 commented 4 months ago

I, too, am struggling with this. As it is, isisd appears to only be useful in a single-area network. When compared to IOS in my IPv6-only usage, the L1-L2 router is bundling all L1 and L2 prefixes into type 246 (iirc) as L2 when sending to the interarea L2 router, but in FRR only the local routes on the L1-L2 are sent -- the L1 prefixes are not and therefore the interarea usage is completely broken. I would love to help with this, will try to dig into the code soon.

hi! i created pr about it https://github.com/FRRouting/frr/pull/15617