Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 54 additions & 13 deletions platform/vs/README.vsvm.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,42 @@ virsh #
```

2. Create SONiC VM for multi-ASIC HWSKU
Update sonic_multiasic.xml with the external interfaces
required for HWSKU.

- Based on the number of asics of hwsku, update device/x86_64-kvm_x86_64-r0/asic.conf
```
NUM_ASIC=<n>
DEV_ID_ASIC_0=0
DEV_ID_ASIC_1=1
DEV_ID_ASIC_2=2
DEV_ID_ASIC_3=3
..
DEV_ID_ASIC_<n-1>=<n-1>
```
For example, a four asic VS asic.conf will be:
```
NUM_ASIC=4
DEV_ID_ASIC_0=0
DEV_ID_ASIC_1=1
DEV_ID_ASIC_2=2
DEV_ID_ASIC_3=3
```
- Create a topology.sh script which will create the internal asic topology for
the specific hwsku.
For example, for msft_multi_asic_vs:
https://github.com/Azure/sonic-buildimage/blob/master/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/topology.sh

- With the updated asic.conf and topology.sh, build sonic-vs.img which can be used to
bring up multi-asic virtual switch.

- Update platform/vs/sonic_multiasic.xml with higher memory and vcpu as required.
- For 4-asic vs platform msft_four_asic_vs hwsku, 8GB memory and 10vCPUs.
- For 7-ASIC vs platform msft_multi_asic_vs hwsku, 8GB and 16vCPUs.
- Update the number of front-panel interfaces in sonic_multliasic.xml
- For 4-ASIC vs platform, 8 front panel interfaces.
- For 6-ASIC vs platform, 64 front panel interfaces.

- With multi-asic sonic_vs.img and sonic_multiasic.xml file, bring up multi-asic
vs as:

```
$ sudo virsh
Expand All @@ -38,18 +72,25 @@ virsh # create sonic_multiasic.xml
Domain sonic created from sonic.xml

virsh #
```

- Steps to convert a prebuilt single asic sonic-vs.img:
- Use the updated sonic_multiasic.xml file and bring up virtual switch.
- Update /usr/share/sonic/device/x86_64-kvm_x86_64-r0/asic.conf as above.
- Add topology.sh in /usr/share/sonic/device/x86_64-kvm_x86_64-r0/<HWSKU>
- stop database service and remove database docker, so that when vs is
rebooted, database_global.json is created with the right namespaces.
- systemctl stop database
- docker rm database
- sudo reboot
- Once rebooted, VS should be multi-asic VS.

- Start topology service.
```
sudo systemctl start topology.
```

Once booted up, create a file "asic.conf" with the content:
NUM_ASIC=<Number of asics>
under /usr/share/sonic/device/x86_64-kvm_x86_64-r0/
Also, create a "topology.sh" file which will simulate the internal
asic connectivity of the hardware under
/usr/share/sonic/device/x86_64-kvm_x86_64-r0/<HWSKU>
The HWSKU directory will have the required files like port_config.ini
for each ASIC.

Having done this, a new service "topology.service" will be started
during bootup which will invoke topology.sh script.
- Load configuration using minigraph or config_dbs.

3. Access virtual switch:

Expand Down