sonic-buildimage/platform/vs
xumia f1fd42558a
Support to add SONiC OS Version in device info (#14601)
Why I did it
Support to add SONiC OS Version in device info.
It will be used to display the version info in the SONiC command "show version". The version is used to do the FIPS certification. We do not do the FIPS certification on a specific release, but on the SONiC OS Version.

SONiC Software Version: SONiC.master-13812.218661-7d94c0c28
SONiC OS Version: 11
Distribution: Debian 11.6
Kernel: 5.10.0-18-2-amd64
How I did it
2023-04-12 09:20:08 +08:00
..
docker-gbsyncd-vs [infra] Support syslog rate limit configuration (#12490) 2022-12-20 10:53:58 +02:00
docker-sonic-vs [Build] Fix the installation candidate not found issue when building docker-sonic-vs (#14439) 2023-03-28 14:04:33 +08: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
tests
create_vnet.sh
docker-gbsyncd-vs.dep
docker-gbsyncd-vs.mk
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.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
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
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
kvm-image.dep
kvm-image.mk
libsaithrift-dev.dep
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
one-image.mk
onie.dep
onie.mk
platform.conf
raw-image.dep
raw-image.mk
README.gns3.md
README.vsdocker.md
README.vsvm.md
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
sonic-gns3a.sh [gns3]: modify SONiC VS image name (#13136) 2023-01-03 10:02:10 -08:00
sonic-version.dep
sonic-version.mk Support to add SONiC OS Version in device info (#14601) 2023-04-12 09:20:08 +08:00
sonic.xml
syncd-vs.dep
syncd-vs.mk

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