Pure SONiC 是 SONiC 的版本,它消除了對供應商的依賴。社區開發、公開可用和 100% 開源使您能夠構建與所需社區分支同步的純 SONiC 映像。這意味著 SONiC 的每一行代碼和 SAI ( switch abstraction interface )的 NVIDIA 實現只需點擊一下 主映像 。
NVIDIA 當您選擇 Pure SONiC 時,我們將致力于您的成功。為了確保 Pure SONiC 得到強化和限定, NVIDIA 建議使用特定的公共哈希來構建映像,這是一種在特定時間點對 Git 存儲庫進行快照的機制。通過廣泛的 QA ,在所有 NVIDIA 平臺上驗證傳遞給用戶的每個公共散列。此外, NVIDIA 承認需要有價值的文件。發行說明和用戶手冊與特定的公共哈希綁定。
建立一個純粹的聲波圖像
下面是我如何建立我的純聲波圖像,包括 ZTP ,運行在我的 NVIDIA Mellanox Spectrum 開放式以太網交換機上。我的解決方案受到了關于 GitHub 的 構建 SONiC 交換機映像 教程的啟發。默認情況下,在回購的 生成配置文件 中禁用 ZTP 。
Spectrum 交換機預裝了 ONIE ( open network install environment ),這是一個引導加載程序,提供了在裸機交換機系統上安裝任何網絡操作系統的環境。 ONIE 允許最終用戶自動安裝網絡操作系統,作為數據中心配置的一部分,類似于 ONIE 交換機管理 Linux 服務器的方式。
我的構建服務器由 24 核 CPU 、 250 GB 構建存儲和 64 GB RAM 組成,運行在 Ubuntu16.04 上, Docker 版本 18.03.0-ce 、 Python 和 jinja2 。我發現我的構建配置至少需要 100 GB 的可用磁盤空間。最終的構建目錄消耗了大約 30gb 。在構建時間對業務至關重要的情況下,我建議升級 CPU 和 RAM 以允許更多的內核并行工作,從而縮短構建時間。
出于自動化和代碼重用的目的,我將代碼分為三個短文件:
build.cfg :初始化公共環境變量并由其他文件進行源處理。
gitsonic.sh :獲取公共 git 存儲庫源代碼。
build.sh :執行生成。
運行腳本執行構建過程。
第一步:創建 build.cfg
# An example to hash that was qualified by NVIDIA SONICBRANCH=201911 COMMITHASH="bea968b" BLDBRANCH="${SONICBRANCH}" BUILD_NUMBER="00005" let BLDNUM="${BUILD_NUMBER}" #ZTP is disabled by default per community decision. I found it useful to enable in my build, more #options are available in the file ./rules/config ENABLE_ZTP="y" SONIC_IMAGE_VERSION="SONIC.${SONICBRANCH}.${BLDNUM}-${COMMITHASH}_Internal" SONIC_OVERRIDE_BUILD_VARS=' SONICIMAGE_VERSION=SONIC.${SONICBRANCH}.${BLDNUM}-${COMMITHASH}_Internal BUILD_NUMBER=${BLDNUM} ENABLE_ZTP=y' BLDDIR="./sonic-buildimage_${BLDBRANCH}_${BUILD_NUMBER}_${COMMITHASH}_ZTP"
第二步:創建 sonicgit.sh
#!/bin/bash source ./build.cfg if [ -d "${BLDDIR}" ];then echo "directory sonic-buildimage already exists, aborting git" exit 1 fi # git clone the top-level # source code from the public repository, SONICBRANCH=201911 git clone -b ${SONICBRANCH} https://github.com/Azure/sonic-buildimage.git # move the cloned source to a build-specific named directory # avoid overwriting earlier versions that you may need. mv ./sonic-buildimage "${BLDDIR}" # If you are making any changes to the latest checked in branch, you must make # changes to the configuration. # Because you are making changes, create a build branch based on the specific commit hash #this git branch information shows up in the build image, #when you run command $show version from the switch command line. cd "${BLDDIR}" git checkout -b "${BLDBRANCH}" ${COMMITHASH} # the git clone step only pulls the top-level module. # the underlying submodules must be recursively # init-ed and updated. git submodule update --init --recursive #display the status echo "${BLDDIR}" git status | grep branch
第 3 步:創建 build.sh
#!/bin/bash source ./build.cfg #Helper functions start### function checkErrors() { X=`grep -i -c "${1}" "${2}"` if [ "${X}" != "0" ];then grep -i -n "${1}" "${2}" fi } function doSetup() { CONFIGZTP="ENABLE_ZTP=${ENABLE_ZTP}" CONFIGSONIC="{$CONFIGZTP}" } function doMakeConfig() { #Execute make configure once to configure ASIC #make configure PLATFORM=[ASIC_VENDOR] make configure PLATFORM=mellanox } # Build SONiC image function doMake() { LOGFILE="../logs/${BLDDIR}.log" echo "time make SONIC_BUILD_JOBS=24 ${SONIC_OVERRIDE_BUILD_VARS} target/sonic-mellanox.bin" > "${LOGFILE}" time make SONIC_BUILD_JOBS=24 ${SONIC_OVERRIDE_BUILD_VARS} target/sonic-mellanox.bin | tee "${LOGFILE}" checkErrors "fail" "${LOGFILE}" checkErrors "warning" "${LOGFILE}" checkErrors "error" "${LOGFILE}" } #Helper functions end### cd "${BLDDIR}" doSetup doMakeConfig doMake
概括
步驟 1-3 中描述的構建過程將生成啟用 ZTP 的純聲波圖像。一些人會認為,這張圖片展示了開放網絡的最佳狀態:構建一個開源操作系統,消除對供應商的依賴。
關于作者
Yuval Borenstein 是 NVIDIA 的以太網交換機產品經理。在此之前的幾年里, Borenstein 先生在 NVIDIA 擔任過多個芯片設計職位,負責開發 InfiniBand 和以太網交換機。尤瓦爾擁有以色列理工學院電子工程學士學位和特拉維夫大學和西北大學的聯合工商管理碩士學位。
審核編輯:郭婷
-
cpu
+關注
關注
68文章
10901瀏覽量
212682 -
RAM
+關注
關注
8文章
1369瀏覽量
114894 -
服務器
+關注
關注
12文章
9295瀏覽量
85878
發布評論請先 登錄
相關推薦
評論