Skip to content

bgpd: ignore NEXT_HOP for MP_REACH_NLRI#11623

Merged
ton31337 merged 2 commits into
FRRouting:masterfrom
taspelund:prefer_mp_nexthop
Aug 8, 2022
Merged

bgpd: ignore NEXT_HOP for MP_REACH_NLRI#11623
ton31337 merged 2 commits into
FRRouting:masterfrom
taspelund:prefer_mp_nexthop

Conversation

@taspelund

@taspelund taspelund commented Jul 17, 2022

Copy link
Copy Markdown

RFC 4760 states we SHOULD ignore the NEXT_HOP attribute for BGP Update
messages carrying only MP_REACH_NLRI attributes. Thus we should use the
Network Address of Next Hop field of the MP_REACH_NLRI as the nexthop.

Instead of always looking for BGP_ATTR_NEXT_HOP, this commit ensures:

  1. we set mp_nexthop_len to BGP_ATTR_NHLEN_IPV4 for v4 bgp_static routes
  2. we check mp_nexthop_len when choosing the nexthop to use for nht
  3. we check mp_nexthop_len when choosing the nexthop to send to zebra
  4. we check mp_nexthop_len when picking the nexthop to shown by vtysh

Reported-by: Binon Gorbutt binon@aervivo.com
Signed-off-by: Trey Aspelund taspelund@nvidia.com

@taspelund taspelund force-pushed the prefer_mp_nexthop branch from ccd373b to 66e355e Compare July 17, 2022 01:01
@taspelund taspelund requested review from riw777 and ton31337 July 17, 2022 01:13
@taspelund

Copy link
Copy Markdown
Author

This commit is currently making the assumption that an MP_REACH_NLRI attribute will be parsed after the NEXT_HOP attribute. I looked at RFC 4271 and 4760 but didn't find any explicit mentions of the ordering in which the attribute TLVs are packed in the Update.

Is it safe to make this assumption about the order in which attributes are packed into an Update message? Or do I need to update the code to ensure that we still do the right thing even if NEXT_HOP is parsed after MP_REACH_NLRI?

@taspelund taspelund force-pushed the prefer_mp_nexthop branch from 66e355e to bd7b017 Compare July 17, 2022 02:17
@taspelund

Copy link
Copy Markdown
Author

Never mind my previous questions - I decided to go with a different approach that doesn't involve tweaking flags and is independent of attribute parsing order.

Before:

2022/07/17 01:57:43 BGP: [T5AAP-5GA85] fd01::172:16:10:10(Unknown) rcvd UPDATE w/ attr: nexthop 9.9.9.9, origin ?, mp_nexthop fd01::172:16:10:10, localpref 100, originator 9.9.9.9, clusterlist 9.9.9.9, path 
2022/07/17 01:57:43 BGP: [PCFFM-WMARW] fd01::172:16:10:10(Unknown) rcvd UPDATE wlen 0 attrlen 69 alen 0
2022/07/17 01:57:43 BGP: [YCKEM-GB33T] fd01::172:16:10:10(Unknown) rcvd 172.16.10.10/32 IPv4 unicast
2022/07/17 01:57:43 BGP: [YCKEM-GB33T] fd01::172:16:10:10(Unknown) rcvd 10.10.0.0/24 IPv4 unicast
2022/07/17 01:57:43 BGP: [PCFFM-WMARW] fd01::172:16:10:10(Unknown) rcvd UPDATE wlen 0 attrlen 0 alen 0


ub20# show ip bgp | include ^  i
  i10.10.0.0/24     9.9.9.9                       100      0 ?
  i172.16.10.10/32  9.9.9.9                       100      0 ?

After:

2022/07/17 02:06:17 BGP: [T5AAP-5GA85] fd01::172:16:10:10(Unknown) rcvd UPDATE w/ attr: nexthop 9.9.9.9, origin ?, mp_nexthop fd01::172:16:10:10, localpref 100, originator 9.9.9.9, clusterlist 9.9.9.9, path 
2022/07/17 02:06:17 BGP: [PCFFM-WMARW] fd01::172:16:10:10(Unknown) rcvd UPDATE wlen 0 attrlen 69 alen 0
2022/07/17 02:06:17 BGP: [YCKEM-GB33T] fd01::172:16:10:10(Unknown) rcvd 172.16.10.10/32 IPv4 unicast
2022/07/17 02:06:17 BGP: [YCKEM-GB33T] fd01::172:16:10:10(Unknown) rcvd 10.10.0.0/24 IPv4 unicast
2022/07/17 02:06:17 BGP: [PCFFM-WMARW] fd01::172:16:10:10(Unknown) rcvd UPDATE wlen 0 attrlen 0 alen 0


ub20# show ip bgp
BGP table version is 13, local router ID is 100.64.0.222, vrf id 0
Default local pref 100, local AS 399672
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

   Network          Next Hop            Metric LocPrf Weight Path
*>i10.10.0.0/24     fd01::172:16:10:10         <<<<<<<
                                                  100      0 ?
*> 100.64.0.11/32   192.168.122.51           0             0 1 i
*> 100.64.0.22/32   ::                       0         32768 i
*> 100.64.0.33/32   192.168.122.51                         0 1 i
*>i172.16.10.10/32  fd01::172:16:10:10        <<<<<<<<
                                                  100      0 ?

Displayed  5 routes and 5 total paths


ub20# show ip route bgp
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, T - Table,
       A - Babel, D - SHARP, F - PBR, f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

B>  10.10.0.0/24 [200/0] via fd01::172:16:10:10 (recursive), weight 1, 00:00:38     <<<<<
  *                        via fe80::b6a9:fcff:fe1e:eff6, ovpns1, weight 1, 00:00:38
B>* 100.64.0.11/32 [20/0] via 192.168.122.51, enp1s0, weight 1, 00:00:38
B>* 100.64.0.33/32 [20/0] via 192.168.122.51, enp1s0, weight 1, 00:00:38
B>  172.16.10.10/32 [200/0] via fd01::172:16:10:10 (recursive), weight 1, 00:00:38     <<<<<
  *                           via fe80::b6a9:fcff:fe1e:eff6, ovpns1, weight 1, 00:00:38

@NetDEF-CI

NetDEF-CI commented Jul 17, 2022

Copy link
Copy Markdown
Collaborator
Continuous Integration Result: SUCCESSFUL

Continuous Integration Result: SUCCESSFUL

Congratulations, this patch passed basic tests

Tested-by: NetDEF / OpenSourceRouting.org CI System

CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-6511/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

@NetDEF-CI

NetDEF-CI commented Jul 17, 2022

Copy link
Copy Markdown
Collaborator
Continuous Integration Result: SUCCESSFUL

Continuous Integration Result: SUCCESSFUL

Congratulations, this patch passed basic tests

Tested-by: NetDEF / OpenSourceRouting.org CI System

CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-6510/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

@NetDEF-CI

NetDEF-CI commented Jul 17, 2022

Copy link
Copy Markdown
Collaborator
Continuous Integration Result: FAILED

Continuous Integration Result: FAILED

See below for issues.
CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-6512/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Get source / Pull Request: Successful

Building Stage: Successful

Basic Tests: Failed

Topotests Ubuntu 18.04 arm8 part 3: Failed (click for details) Topotests Ubuntu 18.04 arm8 part 3: No useful log found
Topotests debian 10 amd64 part 9: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO9DEB10AMD64-6512/test

Topology Tests failed for Topotests debian 10 amd64 part 9
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6512/artifact/TOPO9DEB10AMD64/ErrorLog/log_topotests.txt

Topotests debian 10 amd64 part 4: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO4DEB10AMD64-6512/test

Topology Tests failed for Topotests debian 10 amd64 part 4
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6512/artifact/TOPO4DEB10AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 amd64 part 3: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TP3U1804AMD64-6512/test

Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 3
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6512/artifact/TP3U1804AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 arm8 part 4: Failed (click for details) Topotests Ubuntu 18.04 arm8 part 4: No useful log found
Topotests debian 10 amd64 part 3: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO3DEB10AMD64-6512/test

Topology Tests failed for Topotests debian 10 amd64 part 3
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6512/artifact/TOPO3DEB10AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 arm8 part 9: Failed (click for details) Topotests Ubuntu 18.04 arm8 part 9: No useful log found
Topotests Ubuntu 18.04 amd64 part 5: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO5U18AMD64-6512/test

Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 5
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6512/artifact/TOPO5U18AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 i386 part 1: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO1U18I386-6512/test

Topology Tests failed for Topotests Ubuntu 18.04 i386 part 1
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6512/artifact/TOPO1U18I386/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 amd64 part 4: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TP4U1804AMD64-6512/test

Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 4
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6512/artifact/TP4U1804AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 i386 part 6: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO6U18I386-6512/test

Topology Tests failed for Topotests Ubuntu 18.04 i386 part 6
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6512/artifact/TOPO6U18I386/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 i386 part 8: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO8U18I386-6512/test

Topology Tests failed for Topotests Ubuntu 18.04 i386 part 8
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6512/artifact/TOPO8U18I386/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 amd64 part 9: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO9U18AMD64-6512/test

Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 9
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6512/artifact/TOPO9U18AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 i386 part 3: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO3U18I386-6512/test

Topology Tests failed for Topotests Ubuntu 18.04 i386 part 3
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6512/artifact/TOPO3U18I386/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 i386 part 5: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO5U18I386-6512/test

Topology Tests failed for Topotests Ubuntu 18.04 i386 part 5
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6512/artifact/TOPO5U18I386/ErrorLog/log_topotests.txt

Topotests debian 10 amd64 part 1: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO1DEB10AMD64-6512/test

Topology Tests failed for Topotests debian 10 amd64 part 1
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6512/artifact/TOPO1DEB10AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 arm8 part 5: Failed (click for details) Topotests Ubuntu 18.04 arm8 part 5: No useful log found
Topotests Ubuntu 18.04 i386 part 9: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO9U18I386-6512/test

Topology Tests failed for Topotests Ubuntu 18.04 i386 part 9
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6512/artifact/TOPO9U18I386/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 amd64 part 1: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TP1U1804AMD64-6512/test

Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 1
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6512/artifact/TP1U1804AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 i386 part 4: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO4U18I386-6512/test

Topology Tests failed for Topotests Ubuntu 18.04 i386 part 4
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6512/artifact/TOPO4U18I386/ErrorLog/log_topotests.txt

Topotests debian 10 amd64 part 5: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO5DEB10AMD64-6512/test

Topology Tests failed for Topotests debian 10 amd64 part 5
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6512/artifact/TOPO5DEB10AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 arm8 part 6: Failed (click for details) Topotests Ubuntu 18.04 arm8 part 6: No useful log found
Topotests debian 10 amd64 part 6: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO6DEB10AMD64-6512/test

Topology Tests failed for Topotests debian 10 amd64 part 6
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6512/artifact/TOPO6DEB10AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 arm8 part 1: Failed (click for details) Topotests Ubuntu 18.04 arm8 part 1: No useful log found
Topotests Ubuntu 18.04 amd64 part 6: Failed (click for details) Topotests Ubuntu 18.04 amd64 part 6: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-6512/artifact/TOPO6U18AMD64/ErrorLog/ Topotests Ubuntu 18.04 amd64 part 6: No useful log found
Successful on other platforms/tests
  • Addresssanitizer topotests part 4
  • Topotests Ubuntu 18.04 amd64 part 2
  • Addresssanitizer topotests part 5
  • Topotests debian 10 amd64 part 8
  • Addresssanitizer topotests part 0
  • IPv6 protocols on Ubuntu 18.04
  • Topotests debian 10 amd64 part 0
  • IPv4 ldp protocol on Ubuntu 18.04
  • Ubuntu 16.04 deb pkg check
  • Topotests Ubuntu 18.04 arm8 part 2
  • Ubuntu 20.04 deb pkg check
  • Topotests Ubuntu 18.04 amd64 part 8
  • Addresssanitizer topotests part 9
  • IPv4 protocols on Ubuntu 18.04
  • Topotests Ubuntu 18.04 arm8 part 0
  • Topotests Ubuntu 18.04 arm8 part 7
  • Debian 10 deb pkg check
  • Addresssanitizer topotests part 7
  • Topotests Ubuntu 18.04 amd64 part 7
  • Addresssanitizer topotests part 6
  • Addresssanitizer topotests part 3
  • Topotests Ubuntu 18.04 i386 part 0
  • CentOS 7 rpm pkg check
  • Fedora 29 rpm pkg check
  • Topotests Ubuntu 18.04 amd64 part 0
  • Topotests debian 10 amd64 part 2
  • Addresssanitizer topotests part 2
  • Static analyzer (clang)
  • Debian 9 deb pkg check
  • Addresssanitizer topotests part 1
  • Ubuntu 18.04 deb pkg check
  • Topotests debian 10 amd64 part 7
  • Topotests Ubuntu 18.04 i386 part 2
  • Addresssanitizer topotests part 8
  • Topotests Ubuntu 18.04 arm8 part 8
  • Topotests Ubuntu 18.04 i386 part 7

@ton31337

Copy link
Copy Markdown
Member

What happens if both (BGP_ATTR_NEXT_HOP and BGP_ATTR_MP_REACH_NLRI) attributes exist?

@taspelund

Copy link
Copy Markdown
Author

What happens if both (BGP_ATTR_NEXT_HOP and BGP_ATTR_MP_REACH_NLRI) attributes exist?

That's the exact situation this PR is covering. For prefixes described in the MP_REACH_NLRI we should use the next-hop within the MP_REACH attribute rather than the separate NEXT_HOP attribute. I think it's valid to have both flags set, since an attr set can have both attributes, we just need to make sure that scenario is properly handled.

From what I can tell, IPv4 Unicast prefixes are generally encoded in MP_REACH_NLRI when MP-BGP is used rather than as native BGP4 prefixes, so even for v4 uni I think we should use the next-hop within the MP_REACH_NLRI attribute.

FRR doesn't include the NEXT_HOP attribute when it sends v4 uni prefixes as MP_REACH_NLRI, so I'm only able to reproduce this with a third party sender (in this case ArcOS).

@taspelund

Copy link
Copy Markdown
Author

Seems like a number of tests have failed, so I need to go through the failures and see where this change has caused breakage

@ton31337

Copy link
Copy Markdown
Member

FRR doesn't include the NEXT_HOP attribute when it sends v4 uni prefixes as MP_REACH_NLRI, so I'm only able to reproduce this with a third party sender (in this case ArcOS).

I'm curious if this is not the case when we apply route-map with set ip next-hop at ingress? NEXT_HOP attribute is then added, no too (DISCLAIMER: didn't check the code 😄 )?

@riw777

riw777 commented Jul 19, 2022

Copy link
Copy Markdown
Member

FRR doesn't include the NEXT_HOP attribute when it sends v4 uni prefixes as MP_REACH_NLRI, so I'm only able to reproduce this with a third party sender (in this case ArcOS).

I'm curious if this is not the case when we apply route-map with set ip next-hop at ingress? NEXT_HOP attribute is then added, no too (DISCLAIMER: didn't check the code 😄 )?

I think if we have an inbound route map configured we should honor that -- the rfc "wants to be applied" just to attributes received from a peer, not to locally configured stuff ...

@riw777 riw777 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

code change looks good ... do we need any topo test changes or additional topo test here?

@riw777

riw777 commented Jul 19, 2022

Copy link
Copy Markdown
Member

not certain how the ci results relate to this fix ... I'll rerun and see where we are

@riw777

riw777 commented Jul 19, 2022

Copy link
Copy Markdown
Member

ci:rerun

@NetDEF-CI

NetDEF-CI commented Jul 19, 2022

Copy link
Copy Markdown
Collaborator
Continuous Integration Result: FAILED

Continuous Integration Result: FAILED

See below for issues.
CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-6563/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Get source / Pull Request: Successful

Building Stage: Successful

Basic Tests: Failed

Topotests Ubuntu 18.04 arm8 part 5: Failed (click for details) Topotests Ubuntu 18.04 arm8 part 5: No useful log found
Topotests Ubuntu 18.04 amd64 part 9: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO9U18AMD64-6563/test

Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 9
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6563/artifact/TOPO9U18AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 i386 part 9: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO9U18I386-6563/test

Topology Tests failed for Topotests Ubuntu 18.04 i386 part 9
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6563/artifact/TOPO9U18I386/ErrorLog/log_topotests.txt

Topotests debian 10 amd64 part 1: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO1DEB10AMD64-6563/test

Topology Tests failed for Topotests debian 10 amd64 part 1
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6563/artifact/TOPO1DEB10AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 amd64 part 1: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TP1U1804AMD64-6563/test

Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 1
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6563/artifact/TP1U1804AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 i386 part 5: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO5U18I386-6563/test

Topology Tests failed for Topotests Ubuntu 18.04 i386 part 5
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6563/artifact/TOPO5U18I386/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 amd64 part 6: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO6U18AMD64-6563/test

Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 6
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6563/artifact/TOPO6U18AMD64/ErrorLog/log_topotests.txt

Topotests debian 10 amd64 part 3: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO3DEB10AMD64-6563/test

Topology Tests failed for Topotests debian 10 amd64 part 3
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6563/artifact/TOPO3DEB10AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 arm8 part 6: Failed (click for details) Topotests Ubuntu 18.04 arm8 part 6: No useful log found
Topotests debian 10 amd64 part 6: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO6DEB10AMD64-6563/test

Topology Tests failed for Topotests debian 10 amd64 part 6
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6563/artifact/TOPO6DEB10AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 arm8 part 1: Failed (click for details) Topotests Ubuntu 18.04 arm8 part 1: No useful log found
Topotests debian 10 amd64 part 5: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO5DEB10AMD64-6563/test

Topology Tests failed for Topotests debian 10 amd64 part 5
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6563/artifact/TOPO5DEB10AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 arm8 part 3: Failed (click for details) Topotests Ubuntu 18.04 arm8 part 3: No useful log found
Topotests Ubuntu 18.04 i386 part 4: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO4U18I386-6563/test

Topology Tests failed for Topotests Ubuntu 18.04 i386 part 4
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6563/artifact/TOPO4U18I386/ErrorLog/log_topotests.txt

Topotests debian 10 amd64 part 4: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO4DEB10AMD64-6563/test

Topology Tests failed for Topotests debian 10 amd64 part 4
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6563/artifact/TOPO4DEB10AMD64/ErrorLog/log_topotests.txt

Topotests debian 10 amd64 part 9: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO9DEB10AMD64-6563/test

Topology Tests failed for Topotests debian 10 amd64 part 9
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6563/artifact/TOPO9DEB10AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 amd64 part 3: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TP3U1804AMD64-6563/test

Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 3
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6563/artifact/TP3U1804AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 i386 part 6: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO6U18I386-6563/test

Topology Tests failed for Topotests Ubuntu 18.04 i386 part 6
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6563/artifact/TOPO6U18I386/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 amd64 part 4: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TP4U1804AMD64-6563/test

Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 4
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6563/artifact/TP4U1804AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 i386 part 1: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO1U18I386-6563/test

Topology Tests failed for Topotests Ubuntu 18.04 i386 part 1
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6563/artifact/TOPO1U18I386/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 arm8 part 9: Failed (click for details) Topotests Ubuntu 18.04 arm8 part 9: No useful log found
Topotests Ubuntu 18.04 arm8 part 4: Failed (click for details) Topotests Ubuntu 18.04 arm8 part 4: No useful log found
Topotests Ubuntu 18.04 amd64 part 5: Failed (click for details) Topotests Ubuntu 18.04 amd64 part 5: Unknown Log URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-6563/artifact/TOPO5U18AMD64/ErrorLog/ Topotests Ubuntu 18.04 amd64 part 5: No useful log found
Topotests Ubuntu 18.04 i386 part 3: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO3U18I386-6563/test

Topology Tests failed for Topotests Ubuntu 18.04 i386 part 3
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6563/artifact/TOPO3U18I386/ErrorLog/log_topotests.txt

Successful on other platforms/tests
  • Addresssanitizer topotests part 8
  • CentOS 7 rpm pkg check
  • Addresssanitizer topotests part 6
  • Static analyzer (clang)
  • Topotests Ubuntu 18.04 i386 part 0
  • Topotests Ubuntu 18.04 amd64 part 8
  • Topotests debian 10 amd64 part 2
  • Topotests debian 10 amd64 part 7
  • Topotests Ubuntu 18.04 arm8 part 0
  • Addresssanitizer topotests part 0
  • Ubuntu 18.04 deb pkg check
  • Addresssanitizer topotests part 1
  • Debian 9 deb pkg check
  • Addresssanitizer topotests part 4
  • Addresssanitizer topotests part 7
  • Topotests Ubuntu 18.04 arm8 part 8
  • Topotests Ubuntu 18.04 i386 part 2
  • Topotests Ubuntu 18.04 i386 part 7
  • Addresssanitizer topotests part 5
  • Topotests Ubuntu 18.04 amd64 part 2
  • IPv4 ldp protocol on Ubuntu 18.04
  • Ubuntu 16.04 deb pkg check
  • Topotests Ubuntu 18.04 i386 part 8
  • Topotests debian 10 amd64 part 8
  • Addresssanitizer topotests part 2
  • Ubuntu 20.04 deb pkg check
  • IPv6 protocols on Ubuntu 18.04
  • Topotests Ubuntu 18.04 amd64 part 0
  • Debian 10 deb pkg check
  • Fedora 29 rpm pkg check
  • IPv4 protocols on Ubuntu 18.04
  • Topotests Ubuntu 18.04 arm8 part 2
  • Topotests Ubuntu 18.04 amd64 part 7
  • Topotests debian 10 amd64 part 0
  • Topotests Ubuntu 18.04 arm8 part 7
  • Addresssanitizer topotests part 3
  • Addresssanitizer topotests part 9

@taspelund

Copy link
Copy Markdown
Author

From what I can tell going over the failures, it would seem there are 2 main issues:

  1. locally originated v4 prefixes are showing up in show ip bgp with a next-hop of :: rather than 0.0.0.0 or the next-hop from the source protocol (e.g. test_bgp_set_metric / test_bgp_ipv4 / test_recursive_routes_iBGP_peer_p1)
  2. routes leaked from one VRF into another are showing up in the destination RIB with a next-hop instead of being "directly connected" (e.g. test_ospf_multi_vrf_bgp_route_leak)

(1) seems related to my change and I need to go back and fix it. Right now we seem to be losing the next-hop of redistributed routes, and the display of :: would probably break output relied upon for screen-scraping.

I'm not sure how (2) would be caused by my change. One example is ospf_multi_vrf_bgp_route_leak where the +/- show the expected vs actual output:

AssertionError: OSPF IPv4 route mismatch in router "r1": --- Current output
  +++ Expected output
  @@ -1,7 +1,7 @@
   O   10.0.1.0/24 [110/10] is directly connected, r1-eth0, weight 1, XX:XX:XX
   C>* 10.0.1.0/24 is directly connected, r1-eth0, XX:XX:XX
   O>* 10.0.2.0/24 [110/20] via 10.0.20.2, r1-eth1, weight 1, XX:XX:XX
  -B>* 10.0.3.0/24 [20/20] is directly connected, r1-eth2 (vrf neno), weight 1, XX:XX:XX
  +B>* 10.0.3.0/24 [20/20] via 10.0.30.3, r1-eth2 (vrf neno), weight 1, XX:XX:XX
   O>* 10.0.4.0/24 [110/20] via 10.0.20.2, r1-eth1, weight 1, XX:XX:XX
   O   10.0.20.0/24 [110/10] is directly connected, r1-eth1, weight 1, XX:XX:XX
   C>* 10.0.20.0/24 is directly connected, r1-eth1, XX:XX:XX

And the test itself has this topology:

INFO:topolog:OSPF Multi VRF Topology with BGP route leaking:
 
   bgp route leaking (connected/ospf), vrfs:  neno <==> default <==> ray
   routes leaking to vrfs are limited to neno and ray routes.

                      10.0.1.1/24
                            ^
                            |vrf:default
                        +---+---+
      10.0.30.0/24    .1|       |.1
      +-----------------+  R1   +
      |        vrf:neno |       |
      |                 +---+---+                ^
      |.3                 .1|vrf:default         | 10.0.4.4/24
  +---+---+                 |                +---+---+
  |       |            10.0.20.0/24          |       |
  |  R3   |                 |                |  R4   |
  |       |                 |.2              |       |
  +---+---+             +---+---+            +---+---+
      |                 |       | vrf:ray        |.4
      v                 |  R2   +----------------+
10.0.3.3/24             |       |.2         10.0.40.0/24
                        +---+---+
                            |
                            v
                      10.0.2.2/24

Where we can clearly see that 10.0.3.0/24 in VRF neno is not connected + should be reachable via a next-hop of 10.0.30.3, and earlier in the test we see that the Source VRF's (neno's) OSPF RIB reflects this:

INFO:topolog.r1:vtysh command => "show ip ospf vrf neno route"
DEBUG:topolog.r1:LinuxNamespace(r1): cmd_status("['/bin/bash', '-c', 'vtysh  -c "show ip ospf vrf neno route" 2>/dev/null']", kwargs: {'encoding': 'utf-8', 'stdout': -1, 'stderr': -2, 'shell': False, 'stdin': None})
INFO:topolog.r1:vtysh result:
        VRF Name: neno
        ============ OSPF network routing table ============
        N    10.0.3.0/24           [20] area: 0.0.0.0
                                   via 10.0.30.3, r1-eth2     <<<<<
        N    10.0.30.0/24          [10] area: 0.0.0.0
                                   directly attached to r1-eth2
        
        ============ OSPF router routing table =============
        R    10.0.255.3            [10] area: 0.0.0.0, ASBR
                                   via 10.0.30.3, r1-eth2
        
        ============ OSPF external routing table ===========

@taspelund taspelund force-pushed the prefer_mp_nexthop branch from bd7b017 to ccbc291 Compare July 26, 2022 22:10
@frrbot frrbot Bot added the bgp label Jul 26, 2022
@taspelund

taspelund commented Jul 26, 2022

Copy link
Copy Markdown
Author

Output from latest build:

[20:46:26] root@ub20:~
 # vtysh
Hello, this is FRRouting (version 8.4-dev).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
ub20# show ip bgp
BGP table version is 8, local router ID is 100.64.0.222, vrf id 0
Default local pref 100, local AS 399672
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
   Network          Next Hop            Metric LocPrf Weight Path
*>i10.10.0.0/24     fd01::172:16:10:10          <<<<<     ENHE neigh uses v6 next-hop
                                                  100      0 ?
*> 100.64.0.11/32   192.168.122.51           0             0 1 i
*> 100.64.0.22/32   0.0.0.0                  0         32768 i      <<<<<    v4 `network` statement shows "0.0.0.0" as NH
*> 100.64.0.33/32   192.168.122.51                         0 1 i
*> 100.64.50.50/32  192.168.122.12           0         32768 ?      <<<<<    redistributed route shows IGP NH
*>i172.16.10.10/32  fd01::172:16:10:10          <<<<<     ENHE neigh uses v6 next-hop
                                                  100      0 ?
Displayed  6 routes and 6 total paths
ub20# show bgp nexthop 
Current BGP nexthop cache:
 192.168.122.12 valid [IGP metric 0], #paths 0, peer 192.168.122.12
  if enp1s0
  Last update: Tue Jul 26 20:45:44 2022
 192.168.122.51 valid [IGP metric 0], #paths 2, peer 192.168.122.51
  if enp1s0
  Last update: Tue Jul 26 20:45:44 2022
 fd01::172:16:10:10 valid [IGP metric 20], #paths 2, peer fd01::172:16:10:10     <<<<<
  gate fe80::b6a9:fcff:fe1e:eff6, if ovpns1
  Last update: Tue Jul 26 20:46:04 2022
ub20# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, T - Table,
       A - Babel, D - SHARP, F - PBR, f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure
K>* 0.0.0.0/0 [0/0] via 192.168.122.1, enp1s0, 00:01:35
B>  10.10.0.0/24 [200/0] via fd01::172:16:10:10 (recursive), weight 1, 00:01:09          <<<<<
  *                        via fe80::b6a9:fcff:fe1e:eff6, ovpns1, weight 1, 00:01:09
C>* 100.64.0.2/32 is directly connected, lo, 00:01:35
B>* 100.64.0.11/32 [20/0] via 192.168.122.51, enp1s0, weight 1, 00:01:29
C>* 100.64.0.22/32 is directly connected, lo, 00:01:35
B>* 100.64.0.33/32 [20/0] via 192.168.122.51, enp1s0, weight 1, 00:01:19
C>* 100.64.0.222/32 is directly connected, lo, 00:01:35
S>* 100.64.50.50/32 [1/0] via 192.168.122.12, enp1s0, weight 1, 00:01:31
B>  172.16.10.10/32 [200/0] via fd01::172:16:10:10 (recursive), weight 1, 00:01:09          <<<<<
  *                           via fe80::b6a9:fcff:fe1e:eff6, ovpns1, weight 1, 00:01:09
C>* 192.168.122.0/24 is directly connected, enp1s0, 00:01:35
C>* 192.168.123.0/24 is directly connected, enp6s0, 00:01:35
ub20# exit
 
[20:47:16] root@ub20:~
 # ip route
default via 192.168.122.1 dev enp1s0 proto static 
10.10.0.0/24 nhid 327 via inet6 fe80::b6a9:fcff:fe1e:eff6 dev ovpns1 proto bgp metric 20           <<<<<
100.64.0.11 nhid 253 via 192.168.122.51 dev enp1s0 proto bgp metric 20 
100.64.0.33 nhid 253 via 192.168.122.51 dev enp1s0 proto bgp metric 20 
100.64.50.50 nhid 244 via 192.168.122.12 dev enp1s0 proto 196 metric 20 
172.16.10.10 nhid 327 via inet6 fe80::b6a9:fcff:fe1e:eff6 dev ovpns1 proto bgp metric 20           <<<<<
192.168.122.0/24 dev enp1s0 proto kernel scope link src 192.168.122.99 
192.168.123.0/24 dev enp6s0 proto kernel scope link src 192.168.123.99 

config:

frr version 8.4-dev
frr defaults traditional
hostname ub20
log file /var/log/frr/frr.log
service integrated-vtysh-config
!
ip route 100.64.50.50/32 192.168.122.12
!
interface enp1s0
 ipv6 ospf6 area 0
exit
!
interface enp6s0
 ipv6 ospf6 area 0
exit
!
interface lo
 ipv6 ospf6 area 0
exit
!
interface ovpns1
 ipv6 ospf6 area 0
exit
!
router bgp 399672
 no bgp ebgp-requires-policy
 neighbor 192.168.122.12 remote-as external
 neighbor 192.168.122.51 remote-as external
 neighbor fd01::172:16:10:10 remote-as internal
 neighbor fd01::172:16:10:10 ttl-security hops 254
 neighbor fd01::172:16:10:10 update-source fd00::143:1
 neighbor fd01::172:16:10:10 capability extended-nexthop
 !
 address-family ipv4 unicast
  network 100.64.0.22/32
  redistribute static
 exit-address-family
 !
 address-family ipv6 unicast
  redistribute connected route-map con
 exit-address-family
exit
!
router ospf6
exit
!
route-map con permit 10
 match interface dummy6
exit
!
route-map con deny 20
exit
!

@NetDEF-CI

NetDEF-CI commented Jul 26, 2022

Copy link
Copy Markdown
Collaborator
Continuous Integration Result: FAILED

Continuous Integration Result: FAILED

See below for issues.
CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-6665/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Get source / Pull Request: Successful

Building Stage: Failed

Ubuntu 16.04 arm8 build: Failed (click for details) Ubuntu 16.04 arm8 build: No useful log found
Successful on other platforms/tests
  • Redhat 8 amd64 build
  • Redhat 9 amd64 build
  • OpenBSD 7 amd64 build
  • Debian 10 amd64 build
  • FreeBSD 11 amd64 build
  • Ubuntu 16.04 arm7 build
  • Ubuntu 18.04 i386 build
  • Ubuntu 18.04 amd64 build
  • Ubuntu 16.04 amd64 build
  • Ubuntu 20.04 amd64 build
  • NetBSD 9 amd64 build
  • Debian 9 amd64 build
  • CentOS 7 amd64 build
  • Ubuntu 18.04 ppc64le build
  • Ubuntu 22.04 amd64 build
  • FreeBSD 12 amd64 build
  • Fedora 29 amd64 build
  • Debian 11 amd64 build
  • Ubuntu 16.04 i386 build
  • Ubuntu 18.04 arm7 build
  • Ubuntu 18.04 arm8 build

@taspelund

Copy link
Copy Markdown
Author

Looks like an infra failure:

Error summary for [Ubuntu 16.04 arm8 build](https://ci1.netdef.org/browse/FRR-PULLREQ2-U16ARM8BUILD-6665/)
The job generated some errors, drill down into the [full build log](https://ci1.netdef.org/browse/FRR-PULLREQ2-U16ARM8BUILD-6665/log) for more details.

fatal: unable to access 'https://git-us.netdef.org/scm/osr/ci-files.git/': Could not resolve host: git-us.netdef.org
/bin/bash: ci/common/inc_errorcount.sh: No such file or directory
/bin/bash: ci/build-server/shutdown_vm.sh: No such file or directory
/bin/bash: ci/common/check_errorcount.sh: No such file or directory

@taspelund

Copy link
Copy Markdown
Author

ci:rerun

@taspelund taspelund force-pushed the prefer_mp_nexthop branch from ccbc291 to 371a604 Compare July 27, 2022 00:43
@NetDEF-CI

NetDEF-CI commented Jul 27, 2022

Copy link
Copy Markdown
Collaborator
Continuous Integration Result: FAILED

Continuous Integration Result: FAILED

See below for issues.
CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-6666/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Get source / Pull Request: Successful

Building Stage: Successful

Basic Tests: Failed

Topotests Ubuntu 18.04 amd64 part 6: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO6U18AMD64-6666/test

Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 6
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6666/artifact/TOPO6U18AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 i386 part 6: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO6U18I386-6666/test

Topology Tests failed for Topotests Ubuntu 18.04 i386 part 6
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6666/artifact/TOPO6U18I386/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 arm8 part 6: Failed (click for details) Topotests Ubuntu 18.04 arm8 part 6: No useful log found
Topotests debian 10 amd64 part 6: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO6DEB10AMD64-6666/test

Topology Tests failed for Topotests debian 10 amd64 part 6
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6666/artifact/TOPO6DEB10AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 arm8 part 8: Failed (click for details) Topotests Ubuntu 18.04 arm8 part 8: No useful log found
Successful on other platforms/tests
  • Ubuntu 20.04 deb pkg check
  • Topotests Ubuntu 18.04 arm8 part 4
  • Topotests Ubuntu 18.04 arm8 part 9
  • Topotests debian 10 amd64 part 3
  • Debian 10 deb pkg check
  • IPv6 protocols on Ubuntu 18.04
  • Debian 9 deb pkg check
  • Topotests Ubuntu 18.04 amd64 part 1
  • Addresssanitizer topotests part 1
  • Topotests Ubuntu 18.04 i386 part 4
  • Ubuntu 18.04 deb pkg check
  • Topotests Ubuntu 18.04 i386 part 3
  • IPv4 protocols on Ubuntu 18.04
  • Topotests Ubuntu 18.04 i386 part 8
  • Addresssanitizer topotests part 8
  • Topotests Ubuntu 18.04 amd64 part 9
  • Addresssanitizer topotests part 7
  • Topotests debian 10 amd64 part 4
  • Addresssanitizer topotests part 4
  • Topotests Ubuntu 18.04 arm8 part 5
  • Addresssanitizer topotests part 5
  • Topotests Ubuntu 18.04 i386 part 9
  • Topotests Ubuntu 18.04 arm8 part 3
  • Topotests debian 10 amd64 part 1
  • Topotests Ubuntu 18.04 amd64 part 8
  • Topotests debian 10 amd64 part 2
  • Topotests Ubuntu 18.04 arm8 part 0
  • Static analyzer (clang)
  • Ubuntu 16.04 deb pkg check
  • Addresssanitizer topotests part 0
  • Topotests Ubuntu 18.04 i386 part 1
  • Addresssanitizer topotests part 2
  • Topotests Ubuntu 18.04 amd64 part 5
  • IPv4 ldp protocol on Ubuntu 18.04
  • Topotests Ubuntu 18.04 amd64 part 4
  • Topotests Ubuntu 18.04 arm8 part 1
  • Addresssanitizer topotests part 9
  • Topotests Ubuntu 18.04 amd64 part 7
  • Topotests Ubuntu 18.04 i386 part 2
  • Topotests debian 10 amd64 part 5
  • Topotests Ubuntu 18.04 arm8 part 2
  • Topotests debian 10 amd64 part 0
  • Topotests Ubuntu 18.04 arm8 part 7
  • Addresssanitizer topotests part 3
  • Topotests debian 10 amd64 part 9
  • Topotests Ubuntu 18.04 i386 part 7
  • Fedora 29 rpm pkg check
  • Addresssanitizer topotests part 6
  • CentOS 7 rpm pkg check
  • Topotests Ubuntu 18.04 amd64 part 2
  • Topotests debian 10 amd64 part 7
  • Topotests Ubuntu 18.04 amd64 part 3
  • Topotests Ubuntu 18.04 amd64 part 0
  • Topotests Ubuntu 18.04 i386 part 5
  • Topotests debian 10 amd64 part 8
  • Topotests Ubuntu 18.04 i386 part 0

@NetDEF-CI

NetDEF-CI commented Jul 27, 2022

Copy link
Copy Markdown
Collaborator
Continuous Integration Result: FAILED

Continuous Integration Result: FAILED

See below for issues.
CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-6667/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Get source / Pull Request: Successful

Building Stage: Successful

Basic Tests: Failed

Topotests Ubuntu 18.04 amd64 part 6: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO6U18AMD64-6667/test

Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 6
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6667/artifact/TOPO6U18AMD64/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 i386 part 6: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO6U18I386-6667/test

Topology Tests failed for Topotests Ubuntu 18.04 i386 part 6
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6667/artifact/TOPO6U18I386/ErrorLog/log_topotests.txt

Topotests Ubuntu 18.04 arm8 part 6: Failed (click for details) Topotests Ubuntu 18.04 arm8 part 6: No useful log found
Topotests debian 10 amd64 part 6: Failed (click for details)

Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO6DEB10AMD64-6667/test

Topology Tests failed for Topotests debian 10 amd64 part 6
see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-6667/artifact/TOPO6DEB10AMD64/ErrorLog/log_topotests.txt

Successful on other platforms/tests
  • Topotests Ubuntu 18.04 arm8 part 9
  • Topotests Ubuntu 18.04 arm8 part 4
  • Ubuntu 18.04 deb pkg check
  • Ubuntu 20.04 deb pkg check
  • IPv6 protocols on Ubuntu 18.04
  • Debian 9 deb pkg check
  • Debian 10 deb pkg check
  • IPv4 protocols on Ubuntu 18.04
  • Addresssanitizer topotests part 1
  • Topotests Ubuntu 18.04 i386 part 4
  • Topotests Ubuntu 18.04 amd64 part 1
  • Topotests Ubuntu 18.04 i386 part 3
  • Addresssanitizer topotests part 8
  • Topotests Ubuntu 18.04 i386 part 8
  • Topotests Ubuntu 18.04 amd64 part 9
  • Addresssanitizer topotests part 7
  • Topotests debian 10 amd64 part 4
  • Addresssanitizer topotests part 4
  • Topotests Ubuntu 18.04 arm8 part 5
  • Topotests Ubuntu 18.04 arm8 part 3
  • Topotests debian 10 amd64 part 1
  • Addresssanitizer topotests part 5
  • Topotests Ubuntu 18.04 i386 part 9
  • Topotests Ubuntu 18.04 amd64 part 8
  • Topotests debian 10 amd64 part 2
  • Topotests Ubuntu 18.04 arm8 part 0
  • Static analyzer (clang)
  • Topotests debian 10 amd64 part 3
  • Addresssanitizer topotests part 0
  • Addresssanitizer topotests part 2
  • Topotests Ubuntu 18.04 amd64 part 5
  • IPv4 ldp protocol on Ubuntu 18.04
  • Ubuntu 16.04 deb pkg check
  • Topotests Ubuntu 18.04 amd64 part 4
  • Topotests Ubuntu 18.04 i386 part 1
  • Addresssanitizer topotests part 9
  • Topotests Ubuntu 18.04 i386 part 2
  • Topotests Ubuntu 18.04 arm8 part 1
  • Topotests debian 10 amd64 part 5
  • Topotests Ubuntu 18.04 arm8 part 2
  • Topotests Ubuntu 18.04 amd64 part 7
  • Topotests debian 10 amd64 part 0
  • Topotests Ubuntu 18.04 arm8 part 7
  • Addresssanitizer topotests part 3
  • Topotests debian 10 amd64 part 9
  • Topotests Ubuntu 18.04 arm8 part 8
  • Addresssanitizer topotests part 6
  • Topotests Ubuntu 18.04 i386 part 7
  • Fedora 29 rpm pkg check
  • CentOS 7 rpm pkg check
  • Topotests debian 10 amd64 part 7
  • Topotests Ubuntu 18.04 amd64 part 2
  • Topotests Ubuntu 18.04 amd64 part 0
  • Topotests Ubuntu 18.04 amd64 part 3
  • Topotests debian 10 amd64 part 8
  • Topotests Ubuntu 18.04 i386 part 5
  • Topotests Ubuntu 18.04 i386 part 0

@taspelund taspelund force-pushed the prefer_mp_nexthop branch from 371a604 to 062f7cd Compare July 27, 2022 03:57
@taspelund

taspelund commented Jul 27, 2022

Copy link
Copy Markdown
Author

Latest failures were in test_bgp_vrf_lite_best_path_topo2 and were caused by a missing attr.mp_nexthop_len = BGP_ATTR_NHLEN_IPV4; line in bgp_redistribute_add() causing redistributed routes w/ a blackhole nexthop to use the default mp_nexthop_len of IPV6_MAXBITLEN.

This has been resolved + tests should all pass this time around (:crossed_fingers:).

@NetDEF-CI

NetDEF-CI commented Jul 27, 2022

Copy link
Copy Markdown
Collaborator
Continuous Integration Result: SUCCESSFUL

Continuous Integration Result: SUCCESSFUL

Congratulations, this patch passed basic tests

Tested-by: NetDEF / OpenSourceRouting.org CI System

CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-6668/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

@ton31337 ton31337 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@taspelund

Copy link
Copy Markdown
Author

Please hold off on merging - it looks like we have the same/similar issues with EVPN routes received with both mp_nexthop* and NEXT_HOP.

Will address this issue for EVPN + force push it all in one commit.

@taspelund

Copy link
Copy Markdown
Author

Output with the latest changes (fixes to EVPN) below. 3.3.3.3 is the next-hop sent by an FRR peer (MP_REACH nexthop only, no NEXT_HOP), and 172.16.10.10 is the MP_REACH nexthop sent by an ArcOS peer (MP_REACH nexthop + NEXT_HOP).

ub20# show bgp l2vpn evpn route type 5
BGP table version is 4, local router ID is 100.64.0.222
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete
EVPN type-1 prefix: [1]:[EthTag]:[ESI]:[IPlen]:[VTEP-IP]:[Frag-id]
EVPN type-2 prefix: [2]:[EthTag]:[MAClen]:[MAC]:[IPlen]:[IP]
EVPN type-3 prefix: [3]:[EthTag]:[IPlen]:[OrigIP]
EVPN type-4 prefix: [4]:[ESI]:[IPlen]:[OrigIP]
EVPN type-5 prefix: [5]:[EthTag]:[IPlen]:[IP]

   Network          Next Hop            Metric LocPrf Weight Path
                    Extended Community
Route Distinguisher: 30.0.0.3:5
*> [5]:[0]:[32]:[192.0.2.8]
                    3.3.3.3                  0             0 1 ?
                    RT:1:10 ET:8 Rmac:aa:bb:cc:00:33:33
*> [5]:[0]:[32]:[192.0.2.9]
                    3.3.3.3                  0             0 1 ?
                    RT:1:10 ET:8 Rmac:aa:bb:cc:00:33:33
*> [5]:[0]:[32]:[192.0.2.10]
                    3.3.3.3                  0             0 1 ?
                    RT:1:10 ET:8 Rmac:aa:bb:cc:00:33:33
*> [5]:[0]:[32]:[192.0.2.11]
                    3.3.3.3                  0             0 1 ?
                    RT:1:10 ET:8 Rmac:aa:bb:cc:00:33:33
Route Distinguisher: 399672:100
*>i[5]:[0]:[24]:[10.192.12.0]
                    172.16.10.10                  100      0 ?
                    RT:100:100 ET:8 Rmac:b4:a9:fc:1e:ef:f6

Displayed 5 prefixes (5 paths) (of requested type)
ub20# show bgp nexthop | include 172.16.10.10
 172.16.10.10 valid [IGP metric 0], #paths 1
 fd01::172:16:10:10 valid [IGP metric 20], #paths 2, peer fd01::172:16:10:10
ub20# show bgp nexthop | include 3.3.3.3
 3.3.3.3 valid [IGP metric 0], #paths 12
ub20# show ip bgp vrf stuff
BGP table version is 9, local router ID is 0.0.0.0, vrf id 5
Default local pref 100, local AS 399672
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

   Network          Next Hop            Metric LocPrf Weight Path
*>i10.192.12.0/24   172.16.10.10<                 100      0 ?
*> 20.0.0.3/32      3.3.3.3<                               0 1 i
*> 30.0.0.3/32      3.3.3.3<                               0 1 i
*> 192.0.2.8/32     3.3.3.3<                 0             0 1 ?
*> 192.0.2.9/32     3.3.3.3<                 0             0 1 ?
*> 192.0.2.10/32    3.3.3.3<                 0             0 1 ?
*> 192.0.2.11/32    3.3.3.3<                 0             0 1 ?
*> 200.64.0.0/32    0.0.0.0                  0         32768 ?

Displayed  8 routes and 8 total paths
ub20# show ip route vrf stuff
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, T - Table,
       A - Babel, D - SHARP, F - PBR, f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

VRF stuff:
B>* 10.192.12.0/24 [200/0] via 172.16.10.10, br10 onlink, weight 1, 00:01:47
B>* 20.0.0.3/32 [20/0] via 3.3.3.3, br10 onlink, weight 1, 00:01:47
B>* 30.0.0.3/32 [20/0] via 3.3.3.3, br10 onlink, weight 1, 00:01:47
B>* 192.0.2.8/32 [20/0] via 3.3.3.3, br10 onlink, weight 1, 00:01:47
B>* 192.0.2.9/32 [20/0] via 3.3.3.3, br10 onlink, weight 1, 00:01:47
B>* 192.0.2.10/32 [20/0] via 3.3.3.3, br10 onlink, weight 1, 00:01:47
B>* 192.0.2.11/32 [20/0] via 3.3.3.3, br10 onlink, weight 1, 00:01:47
S>* 200.64.0.0/32 [1/0] unreachable (blackhole), weight 1, 00:06:31
ub20# exit
 
[2:59:53] root@ub20:~/frr prefer_mp_nexthop✔
 # ip route show vrf stuff
10.192.12.0/24 nhid 62 via 172.16.10.10 dev br10 proto bgp metric 20 onlink 
20.0.0.3 nhid 68 via 3.3.3.3 dev br10 proto bgp metric 20 onlink 
30.0.0.3 nhid 68 via 3.3.3.3 dev br10 proto bgp metric 20 onlink 
192.0.2.8 nhid 68 via 3.3.3.3 dev br10 proto bgp metric 20 onlink 
192.0.2.9 nhid 68 via 3.3.3.3 dev br10 proto bgp metric 20 onlink 
192.0.2.10 nhid 68 via 3.3.3.3 dev br10 proto bgp metric 20 onlink 
192.0.2.11 nhid 68 via 3.3.3.3 dev br10 proto bgp metric 20 onlink 
blackhole 200.64.0.0 proto 196 metric 20 

Detailed bgp output (shows attr->mp_nexthop_global_in instead of attr->nexthop):

ub20# show bgp l2vpn evpn route rd all type 5 
BGP routing table entry for 30.0.0.3:5:[5]:[0]:[32]:[192.0.2.8]
Paths: (0 available, no best path)
  Not advertised to any peer
BGP routing table entry for 30.0.0.3:5:[5]:[0]:[32]:[192.0.2.8]
Paths: (0 available, no best path)
  Not advertised to any peer
Route Distinguisher: 30.0.0.3:5
BGP routing table entry for 30.0.0.3:5:[5]:[0]:[32]:[192.0.2.8]
Paths: (1 available, best #1)
  Advertised to non peer-group peers:
  192.168.123.12 fd01::172:16:10:10
  Route [5]:[0]:[32]:[192.0.2.8] VNI 10
  1
    3.3.3.3 from 192.168.123.12 (100.64.0.33)
      Origin incomplete, metric 0, valid, external, best (First path received)
      Extended Community: RT:1:10 ET:8 Rmac:aa:bb:cc:00:33:33
      Last update: Thu Aug  4 02:57:37 2022
BGP routing table entry for 30.0.0.3:5:[5]:[0]:[32]:[192.0.2.9]
Paths: (1 available, best #1)
  Advertised to non peer-group peers:
  192.168.123.12 fd01::172:16:10:10
  Route [5]:[0]:[32]:[192.0.2.9] VNI 10
  1
    3.3.3.3 from 192.168.123.12 (100.64.0.33)
      Origin incomplete, metric 0, valid, external, best (First path received)
      Extended Community: RT:1:10 ET:8 Rmac:aa:bb:cc:00:33:33
      Last update: Thu Aug  4 02:57:37 2022
BGP routing table entry for 30.0.0.3:5:[5]:[0]:[32]:[192.0.2.10]
Paths: (0 available, no best path)
  Not advertised to any peer
BGP routing table entry for 30.0.0.3:5:[5]:[0]:[32]:[192.0.2.10]
Paths: (1 available, best #1)
  Advertised to non peer-group peers:
  192.168.123.12 fd01::172:16:10:10
  Route [5]:[0]:[32]:[192.0.2.10] VNI 10
  1
    3.3.3.3 from 192.168.123.12 (100.64.0.33)
      Origin incomplete, metric 0, valid, external, best (First path received)
      Extended Community: RT:1:10 ET:8 Rmac:aa:bb:cc:00:33:33
      Last update: Thu Aug  4 02:57:37 2022
BGP routing table entry for 30.0.0.3:5:[5]:[0]:[32]:[192.0.2.11]
Paths: (1 available, best #1)
  Advertised to non peer-group peers:
  192.168.123.12 fd01::172:16:10:10
  Route [5]:[0]:[32]:[192.0.2.11] VNI 10
  1
    3.3.3.3 from 192.168.123.12 (100.64.0.33)
      Origin incomplete, metric 0, valid, external, best (First path received)
      Extended Community: RT:1:10 ET:8 Rmac:aa:bb:cc:00:33:33
      Last update: Thu Aug  4 02:57:37 2022
Route Distinguisher: 399672:100
BGP routing table entry for 399672:100:[5]:[0]:[24]:[10.192.12.0]
Paths: (1 available, best #1)
  Advertised to non peer-group peers:
  192.168.123.12
  Route [5]:[0]:[24]:[10.192.12.0] VNI 100
  Local
    172.16.10.10 from fd01::172:16:10:10 (9.9.9.9)
      Origin incomplete, localpref 100, valid, internal, best (First path received)
      Extended Community: RT:100:100 ET:8 Rmac:b4:a9:fc:1e:ef:f6
      Originator: 9.9.9.9, Cluster list: 9.9.9.9 
      Last update: Thu Aug  4 02:55:48 2022

Displayed 5 prefixes (5 paths) (of requested type)

@NetDEF-CI

NetDEF-CI commented Aug 4, 2022

Copy link
Copy Markdown
Collaborator
Continuous Integration Result: SUCCESSFUL

Continuous Integration Result: SUCCESSFUL

Congratulations, this patch passed basic tests

Tested-by: NetDEF / OpenSourceRouting.org CI System

CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-6784/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Move the logic to check the mp_nexthop_len against v6 lengths into its
own macro so we can apply that logic elsewhere on its own without always
checking for presence of BGP_ATTR_NEXT_HOP.

Signed-off-by: Trey Aspelund <taspelund@nvidia.com>
@taspelund

Copy link
Copy Markdown
Author

Quick rebase to master avoid any possible conflicts. Ready for review.

@ton31337 ton31337 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm thinking if we need an additional topotest to make sure we don't break anything in the future or not? (At least to guarantee the correct behavior)

Comment thread bgpd/bgp_nht.c Outdated
@NetDEF-CI

Copy link
Copy Markdown
Collaborator

Continuous Integration Result: SUCCESSFUL

Congratulations, this patch passed basic tests

Tested-by: NetDEF / OpenSourceRouting.org CI System

CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-6792/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

@taspelund

Copy link
Copy Markdown
Author

I'm thinking if we need an additional topotest to make sure we don't break anything in the future or not? (At least to guarantee the correct behavior)

I agree it would be great to have a topotest for this, but FRR doesn't advertise routes with both NEXT_HOP and the MP_REACH_NLRI nexthop.

The reporter of this issue setup an OpenVPN tunnel so I could peer with their ArcOS VM, because the third-party vendor required an NDA to get a copy of their VM... so I'm not sure how we would get a BGP speaker into a topotest that mirrors this behavior.

RFC 4760 states we SHOULD ignore the NEXT_HOP attribute for BGP Update
messages carrying only MP_REACH_NLRI attributes. Thus we should use the
Network Address of Next Hop field of the MP_REACH_NLRI as the nexthop.

Instead of always looking for BGP_ATTR_NEXT_HOP, this commit ensures:
1) we set mp_nexthop_len to BGP_ATTR_NHLEN_IPV4 for v4 bgp_static routes
2) we check mp_nexthop_len when choosing the nexthop to use for nht
3) we check mp_nexthop_len when choosing the nexthop to send to zebra
4) we check mp_nexthop_len when picking the nexthop to shown by vtysh

Reported-by: Binon Gorbutt <binon@aervivo.com>
Signed-off-by: Trey Aspelund <taspelund@nvidia.com>
@ton31337

ton31337 commented Aug 4, 2022

Copy link
Copy Markdown
Member

I agree it would be great to have a topotest for this, but FRR doesn't advertise routes with both NEXT_HOP and the MP_REACH_NLRI nexthop.

We have ExaBGP in topotests :)

@taspelund

Copy link
Copy Markdown
Author

I didn't think about ExaBGP... good call.

If ExaBGP has the same behavior as ArcOS, then we should observe the same issue w/o these changes just by setting up a simple v4 uni session over v6 GUA next-hops w/ Extended Next-hop enabled.

I will poke around and see what tests we have today that use ExaBGP + see if I can replicate similar sender-side behavior. If that doesn't yield anything useful (they don't/can't include both nexthops) then I'm open to further suggestions on how we might be able to test this in a topotest.

@NetDEF-CI

Copy link
Copy Markdown
Collaborator

Continuous Integration Result: FAILED

See below for issues.
CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-6794/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Get source / Pull Request: Successful

Building Stage: Successful

Basic Tests: Failed

Topotests Ubuntu 18.04 arm8 part 9: Failed (click for details) Topotests Ubuntu 18.04 arm8 part 9: No useful log found
Successful on other platforms/tests
  • Ubuntu 20.04 deb pkg check
  • Topotests Ubuntu 18.04 arm8 part 4
  • Topotests debian 10 amd64 part 3
  • Debian 10 deb pkg check
  • IPv6 protocols on Ubuntu 18.04
  • Debian 9 deb pkg check
  • Topotests Ubuntu 18.04 amd64 part 1
  • Addresssanitizer topotests part 1
  • Topotests Ubuntu 18.04 i386 part 4
  • Ubuntu 18.04 deb pkg check
  • Topotests Ubuntu 18.04 i386 part 3
  • IPv4 protocols on Ubuntu 18.04
  • Topotests Ubuntu 18.04 amd64 part 6
  • Topotests Ubuntu 18.04 i386 part 8
  • Addresssanitizer topotests part 8
  • Topotests Ubuntu 18.04 amd64 part 9
  • Addresssanitizer topotests part 7
  • Topotests debian 10 amd64 part 4
  • Addresssanitizer topotests part 4
  • Topotests Ubuntu 18.04 arm8 part 5
  • Addresssanitizer topotests part 5
  • Topotests Ubuntu 18.04 i386 part 9
  • Topotests debian 10 amd64 part 1
  • Topotests Ubuntu 18.04 arm8 part 3
  • Topotests Ubuntu 18.04 amd64 part 8
  • Topotests debian 10 amd64 part 2
  • Topotests Ubuntu 18.04 arm8 part 0
  • Static analyzer (clang)
  • Ubuntu 16.04 deb pkg check
  • Addresssanitizer topotests part 0
  • Topotests Ubuntu 18.04 i386 part 6
  • Topotests Ubuntu 18.04 i386 part 1
  • Addresssanitizer topotests part 2
  • Topotests Ubuntu 18.04 amd64 part 5
  • IPv4 ldp protocol on Ubuntu 18.04
  • Topotests Ubuntu 18.04 amd64 part 4
  • Topotests Ubuntu 18.04 arm8 part 1
  • Addresssanitizer topotests part 9
  • Topotests Ubuntu 18.04 arm8 part 6
  • Topotests Ubuntu 18.04 amd64 part 7
  • Topotests debian 10 amd64 part 6
  • Topotests Ubuntu 18.04 i386 part 2
  • Topotests debian 10 amd64 part 5
  • Topotests Ubuntu 18.04 arm8 part 2
  • Topotests debian 10 amd64 part 0
  • Topotests Ubuntu 18.04 arm8 part 7
  • Addresssanitizer topotests part 3
  • Topotests Ubuntu 18.04 arm8 part 8
  • Topotests debian 10 amd64 part 9
  • Topotests Ubuntu 18.04 i386 part 7
  • Fedora 29 rpm pkg check
  • Addresssanitizer topotests part 6
  • CentOS 7 rpm pkg check
  • Topotests Ubuntu 18.04 amd64 part 2
  • Topotests debian 10 amd64 part 7
  • Topotests Ubuntu 18.04 amd64 part 3
  • Topotests Ubuntu 18.04 amd64 part 0
  • Topotests Ubuntu 18.04 i386 part 5
  • Topotests debian 10 amd64 part 8
  • Topotests Ubuntu 18.04 i386 part 0

@taspelund

Copy link
Copy Markdown
Author

Looks like ExaBGP 4+ has extended-nexthop support, but does not encode NEXT_HOP along with the MP_REACH_NLRI nexthop like ArcOS does:

2022/08/05 01:23:20 BGP: [T5AAP-5GA85] 200:0:0:123::12(Unknown) rcvd UPDATE w/ attr: , origin i, mp_nexthop 200:0:0:123::12, path 1
2022/08/05 01:23:20 BGP: [PCFFM-WMARW] 200:0:0:123::12(Unknown) rcvd UPDATE wlen 0 attrlen 42 alen 0
2022/08/05 01:23:20 BGP: [YCKEM-GB33T] 200:0:0:123::12(Unknown) rcvd 100.64.0.33/32 IPv4 unicast

If we want this in a topotest, we'll need to come up with another way to get the encoding we're looking for.

@taspelund

Copy link
Copy Markdown
Author

ExaBGP config used in above testing:

neighbor 200:0:0:123::99 {
    router-id 100.64.0.33;
    local-address 200:0:0:123::12;
    local-as 1;
    peer-as 399672;

    capability {
        nexthop true;
    }

    family {
        ipv4 unicast;
        ipv6 unicast;
        l2vpn evpn;
    }

    nexthop {
        ipv4 unicast ipv6;
    }

    static {
        route 100.64.0.33/32 next-hop 200:0:0:123::12;
        route DEAD:BEEF:DEAD:BEEF:DEAD:BEEF:DEAD:BEEF next-hop 200:0:0:123::12;
    }
}

@taspelund

Copy link
Copy Markdown
Author

ci:rerun

@NetDEF-CI

Copy link
Copy Markdown
Collaborator

Continuous Integration Result: SUCCESSFUL

Congratulations, this patch passed basic tests

Tested-by: NetDEF / OpenSourceRouting.org CI System

CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-6796/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants