Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

zebra: Extend the FPM module to push the missing SRv6 nexthop information #12292

Closed

Conversation

cscarpitta
Copy link
Contributor

SRv6 is supported in SONiC (sonic-net/sonic-swss#1964) as part of release 202211 (~Nov 2021). Zebra’s FPM module allows SONiC to learn the forwarding information computed by the FRR routing suite. Currently, the information exported by FRR does not include the SRv6 nexthops.

We already have two open PRs to support two functionalities required for the integration of FRR and SONiC: #12219 adds the support for SRv6 uSID behaviors to FRR; #12261 adds the missing source address parameter for the SRv6 encapsulation.

This PR completes the integration work of FRR and SONiC by extending the FPM module to push the missing SRv6 nexthop information to SONiC.

Signed-off-by: Carmine Scarpitta carmine.scarpitta@uniroma2.it

This commit adds the `encap_src_addr` parameter to the
`struct zebra_srv6`. This parameter represents the source address of the
outer encapsulating IPv6 header. Support for configuring the
`encap_src_addr`parameter will be added in a future commit.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
Zebra’s `fpm` module allows allows an external component to learn the
forwarding information computed by the FRR routing suite. Currently, the
information exported by `fpm` does not include the SRv6 `seg6` nexthops.

This commit extends the `fpm` module to push the missing SRv6 `seg6`
nexthop information.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
In this commit, we introduce the ability to specify flags for an SRv6
locator. Flags can be used to specify the properties of the locator.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
In this commit, we add a new flag to the SRv6 locator called
`SRV6_LOCATOR_USID`, which is used to specify a locator as a uSID
locator.

When the `SRV6_LOCATOR_USID` flag is set, the routing protocols will
install SRv6 uSID behaviors in the dataplane.
In a future commit, we will extend bgpd to use the SRv6 uSID Endpoint
Behavior codepoint in the BGP advertisement when the flag is set.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
Zebra’s `fpm` module allows allows an external component to learn the
forwarding information computed by the FRR routing suite. Currently, the
information exported by `fpm` does not include the SRv6 `seg6local`
nexthops.

This commit extends the `fpm` module to push the missing SRv6
`seg6local` nexthop information.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Nov 9, 2022

Continuous Integration Result: FAILED

Continuous Integration Result: FAILED

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

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

Warnings Generated during build:

Checkout code: Successful with additional warnings
Topotests Ubuntu 18.04 arm8 part 7: Failed (click for details) Topotests Ubuntu 18.04 arm8 part 7: No useful log found
Report for zebra_fpm_netlink.c | 16 issues
===============================================
< WARNING: else is not generally useful after a break or return
< #270: FILE: /tmp/f1-1373434/zebra_fpm_netlink.c:270:
< WARNING: line over 80 characters
< #414: FILE: /tmp/f1-1373434/zebra_fpm_netlink.c:414:
< WARNING: line over 80 characters
< #426: FILE: /tmp/f1-1373434/zebra_fpm_netlink.c:426:
< WARNING: line over 80 characters
< #438: FILE: /tmp/f1-1373434/zebra_fpm_netlink.c:438:
< WARNING: line over 80 characters
< #751: FILE: /tmp/f1-1373434/zebra_fpm_netlink.c:751:
< WARNING: line over 80 characters
< #758: FILE: /tmp/f1-1373434/zebra_fpm_netlink.c:758:
< WARNING: line over 80 characters
< #765: FILE: /tmp/f1-1373434/zebra_fpm_netlink.c:765:
< WARNING: line over 80 characters
< #772: FILE: /tmp/f1-1373434/zebra_fpm_netlink.c:772:

@cscarpitta
Copy link
Contributor Author

ci:rerun

@donaldsharp
Copy link
Member

Please modify dplane_fpm_nl.c instead of the old fpm module. New features must be in that module instead. It is the future and the zebra_fpm_nl.c is not the correct place to do this work.

@NetDEF-CI
Copy link
Collaborator

Continuous Integration Result: FAILED

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

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

Warnings Generated during build:

Checkout code: Successful with additional warnings
Topotests Ubuntu 18.04 arm8 part 8: Failed (click for details) Topotests Ubuntu 18.04 arm8 part 8: No useful log found
Report for zebra_fpm_netlink.c | 16 issues
===============================================
< WARNING: else is not generally useful after a break or return
< #270: FILE: /tmp/f1-2101780/zebra_fpm_netlink.c:270:
< WARNING: line over 80 characters
< #414: FILE: /tmp/f1-2101780/zebra_fpm_netlink.c:414:
< WARNING: line over 80 characters
< #426: FILE: /tmp/f1-2101780/zebra_fpm_netlink.c:426:
< WARNING: line over 80 characters
< #438: FILE: /tmp/f1-2101780/zebra_fpm_netlink.c:438:
< WARNING: line over 80 characters
< #751: FILE: /tmp/f1-2101780/zebra_fpm_netlink.c:751:
< WARNING: line over 80 characters
< #758: FILE: /tmp/f1-2101780/zebra_fpm_netlink.c:758:
< WARNING: line over 80 characters
< #765: FILE: /tmp/f1-2101780/zebra_fpm_netlink.c:765:
< WARNING: line over 80 characters
< #772: FILE: /tmp/f1-2101780/zebra_fpm_netlink.c:772:

@cscarpitta
Copy link
Contributor Author

@donaldsharp Thanks for the suggestion!

I ported the changes to the dplane_fpm_nl module and opened a new PR (#12301) to integrate them into the FRR mainline.
Any suggestions or comments are welcome.

@cscarpitta
Copy link
Contributor Author

Closing this PR because we have a better implementation in #12301.

@cscarpitta cscarpitta closed this Nov 14, 2022
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.

3 participants