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

[FRR] Switch to dplane_fpm_nl plugin instead of fpm #12852

Merged
merged 19 commits into from
Feb 6, 2023

Conversation

stepanblyschak
Copy link
Collaborator

Why I did it

dplane_fpm_nl is a new FPM implementation in FRR. The old plugin fpm will not have any new features implemented. Usage of the new plugin gives us ability to use BGP suppression feature and next hop groups in the future.

How I did it

  • Switch to dplane_fpm_nl zebra plugin from old fpm plugin which is not supported anymore
  • Remove stale patches for old fpm plugin and add similar patches for dplane_fpm_nl

How to verify it

Build and run on the switch.

Which release branch to backport (provide reason below if selected)

  • 201811
  • 201911
  • 202006
  • 202012
  • 202106
  • 202111
  • 202205

Description for the changelog

Ensure to add label/tag for the feature raised. example - PR#2174 under sonic-utilities repo. where, Generic Config and Update feature has been labelled as GCU.

Link to config_db schema for YANG module changes

A picture of a cute animal (not mandatory but encouraged)

stepanblyschak and others added 13 commits October 20, 2022 13:33
As part of these changes:

- Switch to dplane_fpm_nl zebra plugin from old fpm plugin which is not
  supported anymore
- Remove stale patches for old fpm plugin and add similar patches for dplane_fpm_nl
- FRR patch backport from 8.4 to add support for fpm dataplane feedback
- Templates are updated to read new feature configuration and configure
  FRR accordingly
- YANG models updates to reflect new configuration

Signed-off-by: Stepan Blyschak <stepanb@nvidia.com>
Signed-off-by: Stepan Blyschak <stepanb@nvidia.com>
Signed-off-by: Stepan Blyschak <stepanb@nvidia.com>
Signed-off-by: Stepan Blyschak <stepanb@nvidia.com>
Signed-off-by: Stepan Blyschak <stepanb@nvidia.com>
Signed-off-by: Stepan Blyschak <stepanb@nvidia.com>
Signed-off-by: Stepan Blyschak <stepanb@nvidia.com>
Signed-off-by: Stepan Blyschak <stepanb@nvidia.com>
Signed-off-by: Stepan Blyschak <stepanb@nvidia.com>
Signed-off-by: Stepan Blyschak <stepanb@nvidia.com>
Signed-off-by: Stepan Blyschak <stepanb@nvidia.com>
@stepanblyschak
Copy link
Collaborator Author

/azpw run

@mssonicbld
Copy link
Collaborator

/AzurePipelines run

@azure-pipelines
Copy link

You have several pipelines (over 10) configured to build pull requests in this repository. Specify which pipelines you would like to run by using /azp run [pipelines] command. You can specify multiple pipelines using a comma separated list.

@stepanblyschak
Copy link
Collaborator Author

/azpw run Azure.sonic-buildimage

@mssonicbld
Copy link
Collaborator

/AzurePipelines run Azure.sonic-buildimage

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@stepanblyschak
Copy link
Collaborator Author

/azpw run Azure.sonic-buildimage

@mssonicbld
Copy link
Collaborator

/AzurePipelines run Azure.sonic-buildimage

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@stepanblyschak
Copy link
Collaborator Author

/azpw run Azure.sonic-buildimage

@mssonicbld
Copy link
Collaborator

/AzurePipelines run Azure.sonic-buildimage

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@lguohan
Copy link
Collaborator

lguohan commented Dec 4, 2022

why build failed?

@stepanblyschak
Copy link
Collaborator Author

/azpw run Azure.sonic-buildimage

@mssonicbld
Copy link
Collaborator

/AzurePipelines run Azure.sonic-buildimage

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@stepanblyschak
Copy link
Collaborator Author

/azpw run Azure.sonic-buildimage

@mssonicbld
Copy link
Collaborator

/AzurePipelines run Azure.sonic-buildimage

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@stepanblyschak
Copy link
Collaborator Author

/azpw run Azure.sonic-buildimage

@mssonicbld
Copy link
Collaborator

/AzurePipelines run Azure.sonic-buildimage

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@liat-grozovik
Copy link
Collaborator

@dgsudharsan could you please also help to review the FRR changes?

1 similar comment
@liat-grozovik
Copy link
Collaborator

@dgsudharsan could you please also help to review the FRR changes?

@@ -6,6 +6,13 @@
!
{% endblock banner %}
!
{% block fpm %}
! Uses the old known FPM behavior of including next hop information in the route (e.g. RTM_NEWROUTE) messages
Copy link
Collaborator

Choose a reason for hiding this comment

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

What is the behavior if the user has split mode and performs an upgrade?

Copy link
Collaborator Author

@stepanblyschak stepanblyschak Jan 12, 2023

Choose a reason for hiding this comment

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

fpmsyncd will get RTN_NEWROUTE without next hops and routes won't be programmed. User needs to update his own configs

@dgsudharsan
Copy link
Collaborator

@stepanblyschak Can you please mention the commit ids for the patch updates?

@stepanblyschak
Copy link
Collaborator Author

@dgsudharsan This commit FRRouting/frr@551fa8c comes from FRR upstream. Other patches are not in FRR upstream and were updated to work on top of new plugin

…unified modes

Signed-off-by: Stepan Blyschak <stepanb@nvidia.com>
@stepanblyschak
Copy link
Collaborator Author

@dgsudharsan Could you please check the last commit?

Signed-off-by: Stepan Blyschak <stepanb@nvidia.com>
Copy link
Contributor

@StormLiangMS StormLiangMS left a comment

Choose a reason for hiding this comment

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

approved with a question

FILE_NAME=${1}

grep -q '^no fpm use-next-hop-groups' $FILE_NAME || {
sed -i '1i no fpm use-next-hop-groups\nfpm address 127.0.0.1' $FILE_NAME
Copy link
Contributor

Choose a reason for hiding this comment

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

why adding this?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Please refer to the comment by @dgsudharsan #12852 (comment).
SONiC supports split mode FRR configuration. That is, user provides own zebra.conf, bgp.conf, etc. in /etc/sonic/frr folder, instead of generated from templates by SONiC.
In case user upgrades from older version to image with these changes he will not have mandatory configuration in his zebra.conf copied from the old image. I added this line to insert this configuration in case user does not have it.

@lguohan lguohan merged commit 68e1079 into sonic-net:master Feb 6, 2023
StormLiangMS pushed a commit that referenced this pull request Apr 20, 2023
Signed-off-by: Stepan Blyschak stepanb@nvidia.com

DEPENDS: #12852

Why I did it
To support BGP pending FIB suppression.

How I did it
I backported patches from FRR 8.4 feature that allows communicating ASIC route status back to FRR.
Also, added a new field in DEVICE_METADATA YANG model table. Added UT for YANG model changes.

How to verify it
Run on the switch.
patilshashidhar added a commit to patilshashidhar/sonic-platform-vpp that referenced this pull request Apr 25, 2023
… image to debian bullseye

This fixes an issue zebra config missing in docker-sonic-vpp because of the below
fix in the mainline sonic-net/sonic-buildimage#12852

Unit tested static routes update, vrf routes etc.

Signed-off-by: Shashidhar Patil <shashidhar.patil@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants