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

Distributed forwarding in a VOQ architecture HLD #622

Merged
merged 8 commits into from
Oct 10, 2020

Conversation

kartik-arista
Copy link
Contributor

No description provided.

@msftclas
Copy link

msftclas commented May 23, 2020

CLA assistant check
All CLA requirements met.

NPU to be replaced by ASIC/Multi-ASIC for consistency throughout the document [AI: Kartik/Arista]
=> document updated to use ASIC instead of NPU

Section 1.2: Config & Management Requirements

Rephrase second bullet to reflect port configuration is static i.e physical wiring only
=> Wording clarified as requqested

Add context in the document for dynamic port changes [AI: Kartik/Arista]
=> Section outlining dynamic system port support added in "Future Work" section

Section 2.3:  State Sharing

Update image separate Syncd,  swss, DB container per fabric chip [AI: Kartik/Arista]
=> diagram updated to show multiple syncd, one per fabric chip

Section 2.4:  Chip Management

Update section 2.4.2 to clarify switch ID numbering  scheme in the system with reference from SAI specs.  [AI: Kartik/Arista]
=> Section updated to reflect the correct numbering scheme with reference to the VOQ SAI spec.

Section 2.5:  Port Management

Section 2.5.2 update system port table schema [AI: Kartik/Arista]
=> Updated to reflect proper instance naming as below

Section 2.5.3 Update inband port to be explicitly provisioned [AI: Kartik/Arista]
=> wording around inband port is clarified.

Require more clarity what is meant by instance - if LC has two ASICs then what will instance scope mean - swss/CPU instance? Is there is 1:1 mapping between instance to ASIC?  [AI: Kartik/Arista]
=> Added new instance naming section describing naming scheme for both the FSI and an ASIC
doc/chassis/system-ports.md Outdated Show resolved Hide resolved
doc/chassis/system-ports.md Outdated Show resolved Hide resolved
doc/chassis/system-ports.md Outdated Show resolved Hide resolved
doc/chassis/system-ports.md Outdated Show resolved Hide resolved
Ifname must be unique per FSI. If we decide to create kernel devices for system ports, ifname may have to be globally unique.
AI (Kartik/Arista): Amend wording in the document
=> amended wording in the document

Any existing swss test can be run in the virtual chassis mode - except for LAG tests which aren’t compatible .
AI (Kartik/Arista) - Clarify the conditions under which existing tests can be run unchanged.
=> clarified

How would dual supervisor scenario work? What considerations do we have for two SSIs? (Danny/Microsoft)
AI (Kartik/Arista) - add a summary in Future work section.
=> added a new dual supervisor section in Future work and summarized some high level approaches
lguohan pushed a commit to sonic-net/sonic-buildimage that referenced this pull request Jul 29, 2020
virtual-chassis test uses multiple vs instances to simulate a
modular switch and a redis-chassis service is required to run on
the vs instance that represents a supervisor card.
This change allows vs docker start redis-chassis service according
to external config file.

**- Why I did it**
To support virtual-chassis setup, so that we can test distributed forwarding feature in virtual sonic environment, see `Distributed forwarding in a VOQ architecture HLD` pull request at sonic-net/SONiC#622

**- How I did it**
The sonic-vs start.sh is enhanced to start new redis_chassis service if external chassis config file found. The config file doesn't exist in current vs environment, start.sh will behave like before. 

**- How to verify it**
The swss/test still pass. The chassis_db service is verified in virtual-chassis topology and tests which are in following PRs.

Signed-off-by: Honggang Xu <hxu@arista.com>
(cherry picked from commit c1d45cf81ce3238be2dcbccae98c0780944981ce)

Co-authored-by: Honggang Xu <hxu@arista.com>
- Clarifications on DB structure and naming
- Cleaning up redundant sections that are expected to be covered in other docs
- Clarification of terminology
- Renamed Chassis DB to Global DB
- Revised the Global DB configuration structure
- Added a failure handling section
doc/chassis/architecture.md Outdated Show resolved Hide resolved
lguohan pushed a commit to sonic-net/sonic-buildimage that referenced this pull request Sep 15, 2020
As per the VOQ HLDs, internal networking between the linecards and supervisor is required within a chassis.
Allocating 127.X/16 subnets for private communication within a chassis is a good candidate.
It doesn't require any external IP allocation as well as ensure that the traffic will not leave the chassis.

References:
sonic-net/SONiC#622
sonic-net/SONiC#639

**- How I did it**

Changed the `interfaces.j2` file to add `127.0.0.1/16` as the `lo` ip address.
Then once the interface is up, the post-up command removes the `127.0.0.1/8` ip address.
The order in which the netmask change is made matters for `127.0.0.1` to be reachable at all times.

**- How to verify it**

```
root@sonic:~# ip address show dev lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/16 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
```

Co-authored-by: Baptiste Covolato <baptiste@arista.com>
@rlhui rlhui merged commit b402952 into sonic-net:master Oct 10, 2020
santhosh-kt pushed a commit to santhosh-kt/sonic-buildimage that referenced this pull request Feb 25, 2021
As per the VOQ HLDs, internal networking between the linecards and supervisor is required within a chassis.
Allocating 127.X/16 subnets for private communication within a chassis is a good candidate.
It doesn't require any external IP allocation as well as ensure that the traffic will not leave the chassis.

References:
sonic-net/SONiC#622
sonic-net/SONiC#639

**- How I did it**

Changed the `interfaces.j2` file to add `127.0.0.1/16` as the `lo` ip address.
Then once the interface is up, the post-up command removes the `127.0.0.1/8` ip address.
The order in which the netmask change is made matters for `127.0.0.1` to be reachable at all times.

**- How to verify it**

```
root@sonic:~# ip address show dev lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/16 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
```

Co-authored-by: Baptiste Covolato <baptiste@arista.com>
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.

6 participants