1. 概述
1.1. 項(xiàng)目概述
Open Network Install Environment (ONIE)是一個(gè)開(kāi)源計(jì)劃魄健,為現(xiàn)代網(wǎng)絡(luò)硬件定義了一個(gè)開(kāi)放的安裝環(huán)境。ONIE造就了一個(gè)開(kāi)放的網(wǎng)絡(luò)硬件生態(tài)系統(tǒng)莺债,使得最終用戶可以在不同的網(wǎng)絡(luò)操作系統(tǒng)中進(jìn)行選擇逮刨。
在ONIE出現(xiàn)之前,以太網(wǎng)交換機(jī)使用預(yù)裝的專有操作系統(tǒng),這中網(wǎng)絡(luò)設(shè)備將最終用戶鎖定到設(shè)備的垂直供應(yīng)鏈上井誉。
最初,ONIE通過(guò)向多個(gè)操作系統(tǒng)供應(yīng)商開(kāi)放硬件開(kāi)啟了“白盒”和“裸機(jī)”網(wǎng)絡(luò)交換機(jī)生態(tài)系統(tǒng)整胃。隨著時(shí)間的推移颗圣, ONIE的知名度不斷提高,現(xiàn)在ONIE已經(jīng)成為網(wǎng)絡(luò)硬件行業(yè)的主流安裝環(huán)境屁使。
現(xiàn)代網(wǎng)絡(luò)交換機(jī)都具有一個(gè)管理子系統(tǒng)在岂,該系統(tǒng)基于各種CPU架構(gòu),通常包括串行控制臺(tái)蛮寂,帶外以太網(wǎng)和大容量的存儲(chǔ)器蔽午。該子系統(tǒng)可以獨(dú)立于“前面板”以太網(wǎng)接口關(guān)聯(lián)的交換ASIC獨(dú)立工作。
ONIE定義了一個(gè)開(kāi)源的安裝環(huán)境酬蹋,該安裝環(huán)境運(yùn)行在這個(gè)管理子系統(tǒng)的Linux內(nèi)核和BusyBox環(huán)境上及老。這個(gè)環(huán)境允許最終用戶和渠道合作伙伴安裝目標(biāo)NOS。
ONIE使得交換機(jī)硬件供應(yīng)商范抓,分銷商和經(jīng)銷商能夠基于少量的硬件庫(kù)存管理其操作骄恶。反過(guò)來(lái)又在制造、分銷匕垫、庫(kù)存和RMA方面創(chuàng)造了規(guī)模經(jīng)濟(jì)僧鲁,從而使得網(wǎng)絡(luò)硬件和操作系統(tǒng)的替代品得以蓬勃發(fā)展。
亮點(diǎn) :
- 將引導(dǎo)加載程序與現(xiàn)代Linux內(nèi)核和BusyBox結(jié)合在一起
- 提供了一個(gè)安裝任何NOS的環(huán)境
- 革命性地將用戶從預(yù)先安裝的操作系統(tǒng)中解放出來(lái)
- 幫助實(shí)現(xiàn)大規(guī)模數(shù)據(jù)中心交換機(jī)的配置自動(dòng)化
- 可以像管理Linux服務(wù)器一樣管理交換機(jī)
1.2. 設(shè)計(jì)概述
完整的設(shè)計(jì),請(qǐng)參考設(shè)計(jì)規(guī)格文檔寞秃。
1.2.1. 初次系統(tǒng)引導(dǎo)
當(dāng)一臺(tái)新設(shè)備第一次啟動(dòng)時(shí),ONIE定位到并執(zhí)行廠商提供的NOS堂淡,如下圖所示:1.2.2. 后續(xù)系統(tǒng)引導(dǎo)
后續(xù)系統(tǒng)的每次啟動(dòng)都不使用ONIE。初次引導(dǎo)之后扒腕,后面系統(tǒng)啟動(dòng)直接進(jìn)入NOS绢淀,繞過(guò)ONIE。如下圖所示:當(dāng)然瘾腰,系統(tǒng)提供了一個(gè)重新進(jìn)入安裝階段的機(jī)制皆的。定義了一個(gè)API,這樣網(wǎng)絡(luò)操作系統(tǒng)可以提示系統(tǒng)重新進(jìn)入安裝階段蹋盆。
1.2.3. 找到安裝鏡像
ONIE使用多種方法來(lái)定位到NOS安裝程序的位置费薄,包括但不限于:
- 通過(guò)bootloader進(jìn)行靜態(tài)配置
- 本地連接的存儲(chǔ)器,例如USB存儲(chǔ)設(shè)備
- DHCPv4/DHCPv6
- IPv4/IPv6鏈路本地鄰居
- mDNS/DNS-SD
- 類似PXE的TFTP和HTTP流程
鏡像下載的首選方法是HTTP 栖雾,因?yàn)樗哂休^好的性能楞抡。TFTP方式也支持,但是不能和HTTP共存析藕。
一旦找到鏡像召廷,ONIE就會(huì)繼續(xù)執(zhí)行NOS的安裝流程。
在上圖中账胧,"Less Exact Methods" 方框指的是使用探測(cè)技術(shù)來(lái)發(fā)現(xiàn)NOS的機(jī)制竞慢,如:
- IPv4 / IPv6 本地鏈路鄰居
- 類似于PXE的TFTP和HTTP過(guò)程
1.2.4. 安裝執(zhí)行環(huán)境
在執(zhí)行安裝程序時(shí),ONIE會(huì)導(dǎo)出一些環(huán)境變量供安裝程序使用治泥。這些變量包括系統(tǒng)標(biāo)識(shí)信息及在鏡像發(fā)現(xiàn)過(guò)程中學(xué)習(xí)到的信息筹煮。
導(dǎo)出給安裝程序的信息包括但不限于:
- 安裝程序URL
- 硬件供應(yīng)商標(biāo)識(shí)
- 硬件平臺(tái)標(biāo)識(shí)
- 硬件系列號(hào)
- 以太網(wǎng)管理口MAC地址
- IP地址(DHCP獲取)
- Hostname (DHCP獲取)
這些變量允許安裝程序與其他自動(dòng)化流程進(jìn)行集成,立即將產(chǎn)品系列號(hào)居夹,MAC地址和NOS版本捆綁在一起败潦。
1.2.5. 安裝程序概述
安裝程序負(fù)責(zé)將操作系統(tǒng)永久地安裝到硬件中。為了實(shí)現(xiàn)這個(gè)功能吮播,兼容ONIE的NOS安裝程序具有很大的靈活性变屁。
安裝程序可以實(shí)現(xiàn)的一些功能如下: - 通過(guò)HTTP獲取額外的二進(jìn)制文件和配置文件
- 通過(guò)HTTP與庫(kù)存控制系統(tǒng)進(jìn)行交流
- 下載一個(gè)新的kernel+initramfs and kexec(8)
1.2.6. 網(wǎng)絡(luò)操作系統(tǒng)接口
ONIE為NOS提供了執(zhí)行系統(tǒng)配置和維護(hù)操作的環(huán)境,包括:
- 重新安裝不同的NOS
- 卸載/清除系統(tǒng)
- 應(yīng)急和恢復(fù)
- 更新ONIE
- 更新設(shè)備的CPLD/FPGAs及BIOS固件
這個(gè)環(huán)境構(gòu)成了ONIE和NOS的接口意狠。
1.2.7. 更新ONIE
ONIE提供了一個(gè)自我升級(jí)的機(jī)制粟关。這種機(jī)制很像網(wǎng)絡(luò)操作系統(tǒng)的定位和執(zhí)行階段,但是這種情況下鏡像是ONIE鏡像。一旦找到闷板,ONIE鏡像就被下載并執(zhí)行澎灸。
1.2.8. 固件升級(jí)
ONIE提供了固件升級(jí)機(jī)制。在這種情況下遮晚,固件指的是類似于CPLD/FPGA軟件代碼及BIOS固件性昭。這種機(jī)制就像更新ONIE本身一樣,指示鏡像換成了固件鏡像县遣。一旦找到糜颠,鏡像就被下載并執(zhí)行。
2. 下載源碼
2.1. 發(fā)布版本
已發(fā)布的版本可以直接下載使用: opencomputeproject/onie萧求。
2.2. 最新開(kāi)發(fā)版本
可以使用Git從ONIE工程中下載最新的源碼:
git clone https://github.com/opencomputeproject/onie.gitss
3. 社區(qū)
可以參與ONIE社區(qū)開(kāi)發(fā)并保持連續(xù)其兴。
3.1. 代碼庫(kù)
瀏覽源碼,問(wèn)題文件和貢獻(xiàn): opencomputeproject/onie夸政。
3.2. Mailing List
This is a low volume list for questions, comments and general announcements.
Send questions, bugs, comments and ideas to opencompute-onie@lists.opencompute.org.
Join the mailing list: http://lists.opencompute.org/mailman/listinfo/opencompute-onie
Browse the archives: http://lists.opencompute.org/pipermail/opencompute-onie
3.3. 貢獻(xiàn)
瀏覽源碼元旬,發(fā)布并貢獻(xiàn)給Github上托管的 ONIE Project。
克隆最新的開(kāi)發(fā)版本:
git clone https://github.com/opencomputeproject/onie.git
3.4. OCP Wiki
參考 OCP ONIE wiki 獲取更多的信息守问。