sonic-buildimage/platform/vs
Saikrishna Arcot 519a1e4a91
Update sairedis submodule (#16072)
* Update sairedis submodule

This submodule update needs to be manually done due to build changes
done in the sairedis submodule. Specifically, Debian build profiles are
now being used instead of dpkg build targets, and dbgsym packages are
being used instead of dbg packages. Because of this, there needs to be
changes on the sonic-buildimage side for this.

This is a reland of #15720, which was reverted in #15995 due to the RPC
package build failing. That failure has since been fixed, and the
PR pipeline has been updated to build the RPC package so that this is
checked at the PR stage.

This submodule update brings in the following changes:

```
4dbdb21 Fix RPC package build failure due to shell syntax issue (#1268)
588d596 Make sure new binaries replace existing binaries in docker-sonic-vs (#1269)
ce8f642 [vs] Use boost join to concatenate switch types in config (#1266)
d6055a2 [vslib]: Temporaily map DPU switch type to NVDA_MBF2H536C (#1259)
e1cdb4d [CodeQL]: Use dependencies with relevant versions in azp template. (#1262)
c08f9a2 [CI]: Fix collect log error in azp template. (#1260)
eed856c [CodeQL]: Fix syncd compilation in azp template. (#1261)
a3f1f1a Reland 'Make changes to building and packaging sairedis (#1116)' (#1194)
```

Signed-off-by: Saikrishna Arcot <sarcot@microsoft.com>

* Update sairedis submodule with the fix for the RPC package build

Signed-off-by: Saikrishna Arcot <sarcot@microsoft.com>

---------

Signed-off-by: Saikrishna Arcot <sarcot@microsoft.com>
2023-08-11 09:00:46 -07:00
..
docker-gbsyncd-vs [infra] Support syslog rate limit configuration (#12490) 2022-12-20 10:53:58 +02:00
docker-sonic-vs [docker-sonic-vs]: More changes to support DPU-2P HWKSU (#15695) 2023-07-11 09:57:50 -07:00
docker-syncd-vs Upgrade docker-sonic-vs and docker-syncd-vs to Bullseye (#13294) 2023-03-19 21:14:27 -07:00
sonic-version [build]: add branch and release name in sonic_version.yml (#6356) 2021-08-08 20:44:02 -07:00
tests [DPB]Removing default admin status initialization in DPB flow while loading minigraph (#8711) 2021-09-13 09:01:29 -07:00
create_vnet.sh [vs]: dynamically create front panel ports in vs docker (#4499) 2020-04-30 12:50:59 -07:00
docker-gbsyncd-vs.dep Add gearbox phy device files and a new physyncd docker to support VS gearbox phy feature (#4851) 2020-09-25 08:32:44 -07:00
docker-gbsyncd-vs.mk [dockers] label SONiC Docker with manifest (#5939) 2021-04-26 13:51:50 -07:00
docker-ptf-sai.dep [PTF-SAIv2]Add ptf docker for sai-ptf (saiv2) (#9729) 2022-02-18 01:48:50 -08:00
docker-ptf-sai.mk [SAI PTF] SAI PTF docker support sai-ptf v2 (#12719) 2022-11-17 04:42:51 -08:00
docker-ptf.dep [docker-ptf]: build docker ptf 2021-01-27 08:28:21 -08:00
docker-ptf.mk Revert "[SAI PTF]Syncd-rpc and PTF docker support sai ptf v2 (#11610)" (#12677) 2022-11-14 09:56:10 +08:00
docker-sonic-vs.dep [build]: support for DPKG local caching (#4117) 2020-03-11 20:04:52 -07:00
docker-sonic-vs.mk Upgrade docker-sonic-vs and docker-syncd-vs to Bullseye (#13294) 2023-03-19 21:14:27 -07:00
docker-syncd-vs.dep [build]: support for DPKG local caching (#4117) 2020-03-11 20:04:52 -07:00
docker-syncd-vs.mk Upgrade docker-sonic-vs and docker-syncd-vs to Bullseye (#13294) 2023-03-19 21:14:27 -07:00
gbsyncd-vs.mk Add gearbox phy device files and a new physyncd docker to support VS gearbox phy feature (#4851) 2020-09-25 08:32:44 -07:00
kvm-image.dep [build]: support for DPKG local caching (#4117) 2020-03-11 20:04:52 -07:00
kvm-image.mk [vs][multi-asic]: Add new platforms for multi-asic vs. (#8269) 2021-08-31 22:45:59 -07:00
libsaithrift-dev.dep [docker-ptf]: build docker ptf 2021-01-27 08:28:21 -08:00
libsaithrift-dev.mk Revert "[SAI PTF]Syncd-rpc and PTF docker support sai ptf v2 (#11610)" (#12677) 2022-11-14 09:56:10 +08:00
one-image.dep [build]: support for DPKG local caching (#4117) 2020-03-11 20:04:52 -07:00
one-image.mk [vsimage]: install systemd generator into one image 2020-04-17 04:51:51 +00:00
onie.dep [build]: support for DPKG local caching (#4117) 2020-03-11 20:04:52 -07:00
onie.mk [vs][multi-asic]: Add new platforms for multi-asic vs. (#8269) 2021-08-31 22:45:59 -07:00
platform.conf [vs]: build sonic vs kvm image (#2269) 2018-11-20 22:32:40 -08:00
raw-image.dep [vsraw]: build sonic-vs.raw image 2020-04-17 04:51:51 +00:00
raw-image.mk [vsraw]: build sonic-vs.raw image 2020-04-17 04:51:51 +00:00
README.gns3.md [vsimage]: Support for the creation of a GNS3 appliance file (#3553) 2019-10-07 07:16:11 -07:00
README.vsdocker.md [vs]: dynamically create front panel ports in vs docker (#4499) 2020-04-30 12:50:59 -07:00
README.vsvm.md [multi-asic][vs]: Update readme file to create multi-asic vs (#6867) 2021-03-05 12:46:07 -08:00
rules.dep [PTF-SAIv2]Add ptf docker for sai-ptf (saiv2) (#9729) 2022-02-18 01:48:50 -08:00
rules.mk [PTF-SAIv2]Add ptf docker for sai-ptf (saiv2) (#9729) 2022-02-18 01:48:50 -08:00
sonic_multiasic.xml Multi-ASIC implementation (#3888) 2020-03-31 10:06:19 -07:00
sonic-gns3a.sh [gns3]: modify SONiC VS image name (#13136) 2023-01-03 10:02:10 -08:00
sonic-version.dep [build]: support for DPKG local caching (#4117) 2020-03-11 20:04:52 -07:00
sonic-version.mk Support to add SONiC OS Version in device info (#14601) 2023-04-12 09:20:08 +08:00
sonic.xml [vs]: sync changes to disk and add e1000 driver to sonic vm (#2288) 2018-11-22 12:09:21 -08:00
syncd-vs.dep [build]: support for DPKG local caching (#4117) 2020-03-11 20:04:52 -07:00
syncd-vs.mk Update sairedis submodule (#16072) 2023-08-11 09:00:46 -07:00

HOWTO Use Virtual Switch (VM)

  1. Install libvirt, kvm, qemu
sudo apt-get install libvirt-clients qemu-kvm libvirt-bin
  1. Create SONiC VM for single ASIC HWSKU
$ sudo virsh
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

virsh # 
virsh # create sonic.xml
Domain sonic created from sonic.xml

virsh # 
  1. Create SONiC VM for multi-ASIC 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
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

virsh #
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/
    • 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.
  • Load configuration using minigraph or config_dbs.
  1. Access virtual switch:

    1. Connect SONiC VM via console
    $ telnet 127.0.0.1 7000
    

    OR

    1. Connect SONiC VM via SSH

      1. Connect via console (see 3.1 above)

      2. Request a new DHCP address

      sudo dhclient -v
      
      1. Connect via SSH
      $ ssh -p 3040 admin@127.0.0.1