在軟件化時(shí)代,SDN正在展開(kāi)其邊界,各行各業(yè)正專注于將網(wǎng)絡(luò)控制置于金字塔頂端 - 從復(fù)雜的硬件到軟件應(yīng)用程序。P4已經(jīng)通過(guò)提供低至ASIC的網(wǎng)絡(luò)可編程性來(lái)控制金字塔的底部(轉(zhuǎn)發(fā)平面)。近年來(lái),一些概念和協(xié)議也開(kāi)始統(tǒng)治金字塔的頂端(控制平面),但有了 P4,歷史似乎要改變!
網(wǎng)絡(luò)設(shè)備控制平面
控制平面是網(wǎng)絡(luò)設(shè)備的大腦。它具有各種應(yīng)用程序,可以學(xué)習(xí)和填充數(shù)據(jù)平面定義的表。在傳統(tǒng)的網(wǎng)絡(luò)設(shè)備中,用于配置數(shù)據(jù)包控制移動(dòng)的控制平面或軟件位于同一設(shè)備上。因此,對(duì)于任何更改,網(wǎng)絡(luò)管理員必須通過(guò)單獨(dú)連接到每個(gè)設(shè)備來(lái)配置交換機(jī)。為了增加復(fù)雜性,每個(gè)芯片供應(yīng)商都提供了自己的專有接口/API來(lái)控制數(shù)據(jù)平面。為了使網(wǎng)絡(luò)管理員的生活變得輕松,目標(biāo)是將網(wǎng)絡(luò)設(shè)備的控制平面和數(shù)據(jù)平面分開(kāi)。這催生了SDN(軟件定義網(wǎng)絡(luò))技術(shù)。SDN使用軟件應(yīng)用程序通過(guò)集中式控制器對(duì)交換機(jī)進(jìn)行編程,從而解耦控制平面和數(shù)據(jù)平面。這使得通過(guò)集中式控制器配置網(wǎng)絡(luò)變得容易。但是,由于來(lái)自不同供應(yīng)商的不同接口,不可能使用單個(gè)控制平面API來(lái)控制來(lái)自不同芯片供應(yīng)商的交換機(jī)ASIC。在解決這個(gè)問(wèn)題的一段時(shí)間內(nèi),引入了不同的協(xié)議/標(biāo)準(zhǔn)化來(lái)使API開(kāi)源。
開(kāi)放流: OpenFlow是ONF(開(kāi)放網(wǎng)絡(luò)基金會(huì))在控制平面和數(shù)據(jù)平面之間的第一個(gè)標(biāo)準(zhǔn)開(kāi)源通信協(xié)議,旨在促進(jìn)SDN的采用。OpenFlow是SDN網(wǎng)絡(luò)的解決方案,它在流量方面為控制器和交換機(jī)之間提供了標(biāo)準(zhǔn)接口。流包含以表格形式組織的匹配字段、優(yōu)先級(jí)和操作。提供的API是通用的,不依賴于目標(biāo),因此適用于任何與OpenFlow兼容的控制平面軟件。
SAI(交換機(jī)抽象接口): SAI提供開(kāi)源標(biāo)準(zhǔn)C API對(duì)OCP(開(kāi)放計(jì)算項(xiàng)目)正式接受的網(wǎng)絡(luò)芯片數(shù)據(jù)平面進(jìn)行編程。SAI抽象了底層芯片,因此允許任何相同的控制平面軟件插入任何設(shè)備,使SAI目標(biāo)獨(dú)立。
為什么選擇 P4 運(yùn)行時(shí)?
OpenFlow和SAI存在各種限制。兩者都考慮到了固定交換機(jī)的設(shè)計(jì),這使得它在未來(lái)無(wú)法擴(kuò)展到新的協(xié)議。它們與目標(biāo)無(wú)關(guān),但依賴于協(xié)議。添加新協(xié)議需要大量的時(shí)間和精力以及社區(qū)參與。SAI 專為控制平面位于交換機(jī)內(nèi)的交換機(jī)而設(shè)計(jì)。兩者都不能使用可編程數(shù)據(jù)平面進(jìn)行自我擴(kuò)展。使用P4可編程數(shù)據(jù)平面時(shí),控制平面接口沒(méi)有標(biāo)準(zhǔn)。很少有供應(yīng)商開(kāi)發(fā)自己的專有工具來(lái)自動(dòng)生成API,這些API可以從P4程序或JSON填充表。但是,對(duì)于如何定義這些 API 沒(méi)有標(biāo)準(zhǔn)。因此,p4.org 決定成立API工作組,創(chuàng)建獨(dú)立于硅的API,用于控制交換機(jī)的轉(zhuǎn)發(fā)平面。P4運(yùn)行時(shí)架構(gòu)使其獨(dú)立于協(xié)議以及底層轉(zhuǎn)發(fā)交換機(jī)。同一 API 可用于控制支持不同協(xié)議的不同交換機(jī)。P4 運(yùn)行時(shí)有助于控制任何轉(zhuǎn)發(fā)平面,無(wú)論是固定的、半可編程的還是完全可編程的。P4 運(yùn)行時(shí)可用于任何交換機(jī),無(wú)論是本地還是遠(yuǎn)程控制平面。它足夠靈活,可以同時(shí)支持 OpenFlow API 和 SAI API。
P4運(yùn)行時(shí)的功能
P4 運(yùn)行時(shí) API 支持兩個(gè)主要功能:
管理匹配操作表:通過(guò)添加、刪除、修改、顯示匹配操作表中的條目來(lái)管理數(shù)據(jù)平面的行為
更新轉(zhuǎn)發(fā)平面邏輯:使用新的 P4 代碼更新 P4 可編程交換機(jī)的轉(zhuǎn)發(fā)行為
SDN網(wǎng)絡(luò)中P4運(yùn)行時(shí)的架構(gòu)
圖 1:不同設(shè)備的 SDN 網(wǎng)絡(luò)中的 P4 運(yùn)行時(shí)流
P4 Runtime 的架構(gòu)使其足夠靈活,適用于本地或遠(yuǎn)程控制平面基礎(chǔ)設(shè)施,以及固定和可編程網(wǎng)絡(luò)設(shè)備。
對(duì)于本地控制平面,從 P4 編譯器生成的 P4 運(yùn)行時(shí) API 可以直接用于控制 ASIC,包括基于 ASIC 類型(固定或可編程)的條目編程和表創(chuàng)建和刪除。同樣,對(duì)于遠(yuǎn)程控制平面,P4 編譯器生成的 P4 運(yùn)行時(shí) API 可用于通過(guò)控制平面控制交換機(jī)。P4 編譯器將根據(jù)控制平面的需要生成架構(gòu)。
對(duì)于固定功能開(kāi)關(guān),可以首先使用 P4 語(yǔ)言來(lái)模擬開(kāi)關(guān)的行為,然后可以使用 P4 運(yùn)行時(shí) API 來(lái)控制固定功能開(kāi)關(guān)。運(yùn)行時(shí) API 可用于在由 P4 語(yǔ)言定義的表中插入/刪除條目,這與實(shí)際硬件類似。
如果開(kāi)關(guān)是可編程的,則可以將其擴(kuò)展到控制所有可編程實(shí)體,例如添加新表、插入條目、刪除條目以使用編譯器生成的 P4 運(yùn)行時(shí) API 在運(yùn)行時(shí)更新轉(zhuǎn)發(fā)平面。
圖 1 顯示了獨(dú)立于轉(zhuǎn)發(fā)平面的 SDN(遠(yuǎn)程控制平面)網(wǎng)絡(luò)中的通用 P4 運(yùn)行時(shí)架構(gòu)。
P4 和 P4 運(yùn)行時(shí) – SDN 可編程性的新視野
對(duì)于可編程網(wǎng)絡(luò)設(shè)備,P4 運(yùn)行時(shí)通過(guò)使用 P4 從上到下編程直到 ASIC 數(shù)據(jù)平面,開(kāi)啟了真正的 SDN 可編程性。P4 語(yǔ)言可用于描述轉(zhuǎn)發(fā)管道,P4 運(yùn)行時(shí)可用于控制轉(zhuǎn)發(fā)和從遠(yuǎn)程更新轉(zhuǎn)發(fā)邏輯運(yùn)行時(shí)。借助 P4,SDN 控制器能夠重新定義表、條目、解析器、匹配操作和數(shù)據(jù)包處理邏輯。從而完全控制網(wǎng)絡(luò)。
P4 運(yùn)行時(shí)提供了一種使用可編程和固定功能交換機(jī)組合構(gòu)建網(wǎng)絡(luò)的無(wú)縫方法。P4 編譯器自動(dòng)生成填充表所需的 API。P4 運(yùn)行時(shí)使大型網(wǎng)絡(luò)編程變得更加容易。VOLANSYS為您的網(wǎng)絡(luò)設(shè)備提供端到端的解決方案,包括編譯器開(kāi)發(fā),P4運(yùn)行時(shí)與NOS的集成,添加對(duì)新功能/協(xié)議的支持以及完整的測(cè)試。
審核編輯:郭婷
-
控制器
+關(guān)注
關(guān)注
112文章
15917瀏覽量
175481 -
asic
+關(guān)注
關(guān)注
34文章
1175瀏覽量
119995 -
交換機(jī)
+關(guān)注
關(guān)注
20文章
2574瀏覽量
98340
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論