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

SRv6 uSID design for srv6orch #1034

Merged
merged 5 commits into from
Aug 21, 2022
Merged

SRv6 uSID design for srv6orch #1034

merged 5 commits into from
Aug 21, 2022

Conversation

svshah-intel
Copy link
Contributor

@svshah-intel svshah-intel commented Jul 17, 2022

Why I did it
Document that describes design and required changes to support SRv6 uSID (micro-segments) in SONiC

Description for the changelog
sonic-swss - sonic-net/sonic-swss#2335

Repo PR title State
sonic-swss [orchagent]: srv6orch support for uSID GitHub issue/pull request detail

@reshmaintel
Copy link

@zhangyanzhao @prsunny @venkatmahalingam Please take a look, we will be reviewing this HLD in SONiC community 7/19. Thanks

SRv6 uSID (micro-segment) is extension of the SRv6 network programming model [SRv6 uSID instructions IETF draft](https://datatracker.ietf.org/doc/draft-filsfils-spring-net-pgm-extension-srv6-usid/). uSID is a compressed SID value which can be for example carried in 16-bits (unlike full IPv6 address to represent a SID). uSID as is designed scales well with much lower MTU overhead required per uSID carrier. uSID carrier is 128-bit IPv6 address that can carry upto 6 uSIDs [Refer to Example for more details]

## Scope
The scope of this document is to enhance orchagent to support uSID programming instructions in this IETF draft. Current SAI API definitions already support uSID instructions. No SAI API change required in scope of this document. Current version of routing protocols in SONiC does not support SRv6, it is not in the scope of this document to add such a support for FRR routing stack.
Copy link
Collaborator

Choose a reason for hiding this comment

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

I think, currently we use FRR 8.1 version on SONiC which supports SRv6, any plan to use FRR stack for SRv6 feature?

Copy link

@reshmaintel reshmaintel Jul 19, 2022

Choose a reason for hiding this comment

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

FRR SRv6 feature set currently has only END functions - and recently DT4 and DT6 were added, but headend functions were missing. Although integration has already been started by Ahmed in Cisco. We will have an update on this soon.

The scope of this document is to enhance orchagent to support uSID programming instructions in this IETF draft. Current SAI API definitions already support uSID instructions. No SAI API change required in scope of this document. Current version of routing protocols in SONiC does not support SRv6, it is not in the scope of this document to add such a support for FRR routing stack.

## Design
Current srv6orch is designed, per [SRv6 HLD](https://github.com/sonic-net/SONiC/blob/master/doc/srv6/srv6_hld.md), to support SRv6 programming instructions as described in RFC 8754 and RFC 8986. This design extends SRv6 Network Programming with a new type of SRv6 SID behaviors defined as uSID.
Copy link
Contributor

Choose a reason for hiding this comment

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

Is the uSID functionality natively supported in FRR or does it need to be upstreamed? what is the plan or is there any PR to be reviewed? please share if there is any PR for community to review.

## Design
Current srv6orch is designed, per [SRv6 HLD](https://github.com/sonic-net/SONiC/blob/master/doc/srv6/srv6_hld.md), to support SRv6 programming instructions as described in RFC 8754 and RFC 8986. This design extends SRv6 Network Programming with a new type of SRv6 SID behaviors defined as uSID.

SRv6 uSID fully leverages current SRv6 control-plane, without any change, as is implemented by srv6orch.
Copy link
Contributor

Choose a reason for hiding this comment

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

what is the plan for uSID integration with SONiC FRR? please share the roadmap.

Choose a reason for hiding this comment

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

FRR SRv6 integration with SONiC is in progress. Here is the PR shared by Ahmed (https://netdevconf.info/0x16/). We will update soon about which SONiC release is targeted for this.

Choose a reason for hiding this comment

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

https://github.com/cscarpitta/frr Updated the link. This is fork from FRR. in which the university of Rome team added the uSID feature on top.



## Overview
SRv6 uSID (micro-segment) is extension of the SRv6 network programming model [SRv6 uSID instructions IETF draft](https://datatracker.ietf.org/doc/draft-filsfils-spring-net-pgm-extension-srv6-usid/). uSID is a compressed SID value which can be for example carried in 16-bits (unlike full IPv6 address to represent a SID). uSID as is designed scales well with much lower MTU overhead required per uSID carrier. uSID carrier is 128-bit IPv6 address that can carry upto 6 uSIDs [Refer to Example for more details]
Copy link
Collaborator

@venkatmahalingam venkatmahalingam Jul 19, 2022

Choose a reason for hiding this comment

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

Looks like https://datatracker.ietf.org/doc/draft-filsfils-spring-net-pgm-extension-srv6-usid is not an IETF adopted draft yet and it is currently an individual draft under IETF spring WG, why would we need this in SONiC until it becomes IETF adopted draft?

Choose a reason for hiding this comment

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

Indeed, the HLD should also point to the IETF draft draft-ietf-spring-srv6-srh-compression-02, which is IETF Working Group draft and standardizes it.

Copy link

@pcamaril pcamaril Jul 20, 2022

Choose a reason for hiding this comment

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

Venkatesesan, also it might be interesting for you to listen to this presentation from MPLS World Congress if you have the time.
Alibaba: Full stack SRv6 towards a 'Predictable Network' - YouTube
Alibaba explains their plans to deploy SRv6, not only with commercial routers, but also with a SONiC based platform. This deployment is happening in early CY23, and hence throughout the next few months the community will work hard on the different missing components (e.g., FRR).
Thanks!!

Copy link
Contributor Author

@svshah-intel svshah-intel Jul 25, 2022

Choose a reason for hiding this comment

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

updated reference to both IETF drafts. Please review/approve accordingly.
Thanks,

@linux-foundation-easycla
Copy link

linux-foundation-easycla bot commented Aug 8, 2022

CLA Signed

The committers listed above are authorized under a signed CLA.

@reshmaintel
Copy link

@pcamaril Hi Pablo, Could you please complete the review please. Thanks.

@pcamaril
Copy link

Hi. All changes look good to me. Thanks.

@reshmaintel
Copy link

@pcamaril Hi Pablo, thank you so much. Could you please use the review button option on the top right hand in this page to mark as review approved as this is required in the merge process. Thank you very much!

Copy link

@pcamaril pcamaril left a comment

Choose a reason for hiding this comment

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

Looks good to me!

@prsunny prsunny merged commit 96d1442 into sonic-net:master Aug 21, 2022
@zhangyanzhao
Copy link
Collaborator

@svshah-intel can you please help to add the code PRs by referring to #806 ? Thanks.

@svshah-intel
Copy link
Contributor Author

@svshah-intel can you please help to add the code PRs by referring to #806 ? Thanks.

done!

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.

7 participants