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

[doc/voq]: Add HLD for BGP in the VoQ chassis #674

Merged
merged 4 commits into from Apr 7, 2021

Conversation

jmmikkel
Copy link
Contributor

This document describes how BGP will be configured between each FSI in the chassis.

Signed-off-by: jmmikkel@arista.com
@ghost
Copy link

ghost commented Sep 10, 2020

CLA assistant check
All CLA requirements met.

# 1 Requirements

Traffic ingressing on any FSI should be routed the same, regardless of which
FSIs learned the route from their eBGP peers.
Copy link
Contributor

Choose a reason for hiding this comment

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

Replace FSI with Asic Instance

- Each FSI must advertise eBGP-learned routes to the other FSIs in the chassis.
- Each FSI in a chassis should choose the same BGP route for each prefix.
- When ECMP is enabled and equal-cost routes are learned by any FSI, all FSIs should compute the same ECMP nexthop.

Copy link
Contributor

Choose a reason for hiding this comment

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

Add a note on preserving the nexthop and the AS_PATH


# 1 Requirements

Traffic ingressing on any FSI should be routed the same, regardless of which
Copy link
Contributor

Choose a reason for hiding this comment

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

Clarify that forwarding behavior can be different, but the nexthop set for the ECMP will be same

Copy link
Contributor

Choose a reason for hiding this comment

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

Clarify that this is substantially different from an internal-ethernet-clos based chassis because the forwarding decision is made once at the ingress in voq chassis and several times in an ethernet based chassis.

- Each FSI must advertise eBGP-learned routes to the other FSIs in the chassis.
- Each FSI in a chassis should choose the same BGP route for each prefix.
- When ECMP is enabled and equal-cost routes are learned by any FSI, all FSIs should compute the same ECMP nexthop.

Copy link
Contributor

Choose a reason for hiding this comment

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

Restriction: The external routers are connected via eBGP and not iBGP

To ensure that each FSI computes the same ECMP group:
- Enable additional-path send all for each chassis iBGP peer. If FSI1 learns a route from both R1 and R4, both must be advertised to other FSIs.
- Allow BGP to form ECMP groups with paths learned from both eBGP and iBGP peers. The best path algorithm normally prefers eBGP paths (RFC 4271 section 9.1.2.2 step d). Without this change, if a route is learned from R1, R2, and R4, FSI1 would create ECMP group {R1,R4}, FSI2 would use {R2}, and FSI3 would use {R1,R2,R4}.
- The maximum ECMP group size must be set the same for eBGP and iBGP.
Copy link
Contributor

Choose a reason for hiding this comment

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

Expand this point a bit more.

- `neighbor <neighbor> addpath-tx-all-paths`
- `bgp bestpath peer-type multipath-relax`
- `maximum-paths ibgp <n>` (where <n> is the same as used in `maximum-paths <n>`)
- `bgp disable-ebgp-connected-route-check`
Copy link
Contributor

Choose a reason for hiding this comment

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

This can change existing eBGP behavior. Need to note down what FRR does today when the nexthop is not over a connected route.

<a:ASN>64542</a:ASN>
<a:Hostname>OCPSCH0104001MS</a:Hostname>
<a:RouteMaps/>
<a:VoQChassisPeer>1</a:VoQChassisPeer>
Copy link
Contributor

Choose a reason for hiding this comment

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

Maybe add this to BGP_SESSION definition

<a:VoQChassisPeer>1</a:VoQChassisPeer>
</a:BGPRouterDeclaration>
```

Copy link
Contributor

Choose a reason for hiding this comment

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

Add a Cli section

  1. "show ip bgp" shows both internal and external today, should we update the command to show only the external sessions and add a new command to include the internal.
  2. A flag that brings up the instance with bgp sessions shut down must not do it for the internal BGP sessions.
  3. 'shutdown' should bring down only the external sessions, not the internal BGP sessions. We need an additional token to also shutdown the internal sessions if needed.

The functional changes are:
- Propose to modify bgpd's publish of nexthop groups to RIB instead
  of using "bgp disable-ebgp-connected-route-check".
- Change the new element in the minigraph to
  BGPSession>VoQChassisInternal.
- Add discussion of BGP commands in the CLI.
@anshuv-mfst
Copy link
Collaborator

@minionatwork

@rlhui
Copy link
Contributor

rlhui commented Feb 6, 2021

@arlakshm

@arlakshm arlakshm merged commit 6fdeba0 into sonic-net:master Apr 7, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants