Pure SONiC 是 SONiC 的版本,它消除了對供應(yīng)商的依賴。社區(qū)開發(fā)、公開可用和 100% 開源使您能夠構(gòu)建與所需社區(qū)分支同步的純 SONiC 映像。這意味著 SONiC 的每一行代碼和 SAI ( switch abstraction interface )的 NVIDIA 實(shí)現(xiàn)只需點(diǎn)擊一下 主映像 。
NVIDIA 當(dāng)您選擇 Pure SONiC 時(shí),我們將致力于您的成功。為了確保 Pure SONiC 得到強(qiáng)化和限定, NVIDIA 建議使用特定的公共哈希來構(gòu)建映像,這是一種在特定時(shí)間點(diǎn)對 Git 存儲庫進(jìn)行快照的機(jī)制。通過廣泛的 QA ,在所有 NVIDIA 平臺上驗(yàn)證傳遞給用戶的每個(gè)公共散列。此外, NVIDIA 承認(rèn)需要有價(jià)值的文件。發(fā)行說明和用戶手冊與特定的公共哈希綁定。
建立一個(gè)純粹的聲波圖像
下面是我如何建立我的純聲波圖像,包括 ZTP ,運(yùn)行在我的 NVIDIA Mellanox Spectrum 開放式以太網(wǎng)交換機(jī)上。我的解決方案受到了關(guān)于 GitHub 的 構(gòu)建 SONiC 交換機(jī)映像 教程的啟發(fā)。默認(rèn)情況下,在回購的 生成配置文件 中禁用 ZTP 。
Spectrum 交換機(jī)預(yù)裝了 ONIE ( open network install environment ),這是一個(gè)引導(dǎo)加載程序,提供了在裸機(jī)交換機(jī)系統(tǒng)上安裝任何網(wǎng)絡(luò)操作系統(tǒng)的環(huán)境。 ONIE 允許最終用戶自動(dòng)安裝網(wǎng)絡(luò)操作系統(tǒng),作為數(shù)據(jù)中心配置的一部分,類似于 ONIE 交換機(jī)管理 Linux 服務(wù)器的方式。
我的構(gòu)建服務(wù)器由 24 核 CPU 、 250 GB 構(gòu)建存儲和 64 GB RAM 組成,運(yùn)行在 Ubuntu16.04 上, Docker 版本 18.03.0-ce 、 Python 和 jinja2 。我發(fā)現(xiàn)我的構(gòu)建配置至少需要 100 GB 的可用磁盤空間。最終的構(gòu)建目錄消耗了大約 30gb 。在構(gòu)建時(shí)間對業(yè)務(wù)至關(guān)重要的情況下,我建議升級 CPU 和 RAM 以允許更多的內(nèi)核并行工作,從而縮短構(gòu)建時(shí)間。
出于自動(dòng)化和代碼重用的目的,我將代碼分為三個(gè)短文件:
build.cfg :初始化公共環(huán)境變量并由其他文件進(jìn)行源處理。
gitsonic.sh :獲取公共 git 存儲庫源代碼。
build.sh :執(zhí)行生成。
運(yùn)行腳本執(zhí)行構(gòu)建過程。
第一步:創(chuàng)建 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"
第二步:創(chuàng)建 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 步:創(chuàng)建 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 中描述的構(gòu)建過程將生成啟用 ZTP 的純聲波圖像。一些人會(huì)認(rèn)為,這張圖片展示了開放網(wǎng)絡(luò)的最佳狀態(tài):構(gòu)建一個(gè)開源操作系統(tǒng),消除對供應(yīng)商的依賴。
關(guān)于作者
Yuval Borenstein 是 NVIDIA 的以太網(wǎng)交換機(jī)產(chǎn)品經(jīng)理。在此之前的幾年里, Borenstein 先生在 NVIDIA 擔(dān)任過多個(gè)芯片設(shè)計(jì)職位,負(fù)責(zé)開發(fā) InfiniBand 和以太網(wǎng)交換機(jī)。尤瓦爾擁有以色列理工學(xué)院電子工程學(xué)士學(xué)位和特拉維夫大學(xué)和西北大學(xué)的聯(lián)合工商管理碩士學(xué)位。
審核編輯:郭婷
-
cpu
+關(guān)注
關(guān)注
68文章
10855瀏覽量
211594 -
RAM
+關(guān)注
關(guān)注
8文章
1368瀏覽量
114649 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
9124瀏覽量
85332
發(fā)布評論請先 登錄
相關(guān)推薦
評論