自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

P4:開創(chuàng)數(shù)據(jù)平面可編程時(shí)代

開發(fā) 開發(fā)工具
新一代的SDN解決方案必須讓數(shù)據(jù)轉(zhuǎn)發(fā)平面也具有可編程能力,讓軟件能夠真正定義網(wǎng)絡(luò)和網(wǎng)絡(luò)設(shè)備。而P4正是為用戶提供了這種能力,打破了硬件設(shè)備對數(shù)據(jù)轉(zhuǎn)發(fā)平面的限制,讓數(shù)據(jù)包的解析和轉(zhuǎn)發(fā)流程也能通過編程控制,使得網(wǎng)絡(luò)及設(shè)備自上而下地、真正地向用戶開放。

現(xiàn)有的SDN解決方案將控制平面與轉(zhuǎn)發(fā)平面分離,并為我們提供了控制平面的可編程能力。而事實(shí)上,目前通過軟件編程實(shí)現(xiàn)的控制平面的功能,在傳統(tǒng)的高級交換機(jī)和路由器上也都能實(shí)現(xiàn),差別是廠商把這些功能固化在了系統(tǒng)/硬件中,這些系統(tǒng)/硬件是封閉的,第三方難以介入進(jìn)行定制或二次開發(fā)。雖然一些高級設(shè)備提供了SDK,使得用戶能夠進(jìn)行一定程度的定制,但也必須受廠商所制定的規(guī)范的限制,能做到的事情十分有限。目前SDN所做的就是打破這些限制,讓設(shè)備和網(wǎng)絡(luò)更加的靈活,讓用戶不被廠商設(shè)備綁定,從而擁有無限的可能。

現(xiàn)有的SDN解決方案為用戶開放的是控制平面的可編程能力,那轉(zhuǎn)發(fā)平面呢?正常情況下,轉(zhuǎn)發(fā)設(shè)備的數(shù)據(jù)包解析,轉(zhuǎn)發(fā)流程是由設(shè)備轉(zhuǎn)發(fā)芯片固化的,所以設(shè)備在協(xié)議的支持方面并不具備擴(kuò)展能力。并且,廠商開發(fā)新的轉(zhuǎn)發(fā)芯片以支持新的協(xié)議或者擴(kuò)展協(xié)議特性的代價(jià)也非常高,需要將以前的硬件重新設(shè)計(jì),勢必導(dǎo)致更新成本高,時(shí)間周期長等一系列問題。所以在一定程度上,這種將設(shè)備功能和協(xié)議支持與硬件綁定的模式限制了網(wǎng)絡(luò)的快速發(fā)展。

因此,我們可以得出以下結(jié)論:新一代的SDN解決方案必須讓數(shù)據(jù)轉(zhuǎn)發(fā)平面也具有可編程能力,讓軟件能夠真正定義網(wǎng)絡(luò)和網(wǎng)絡(luò)設(shè)備。而P4正是為用戶提供了這種能力,打破了硬件設(shè)備對數(shù)據(jù)轉(zhuǎn)發(fā)平面的限制,讓數(shù)據(jù)包的解析和轉(zhuǎn)發(fā)流程也能通過編程控制,使得網(wǎng)絡(luò)及設(shè)備自上而下地、真正地向用戶開放。

下面,我們主要從以下幾個(gè)方面談?wù)勎覍4這門轉(zhuǎn)發(fā)平面的編程語言的理解:P4的架構(gòu)及特性、交換機(jī)結(jié)構(gòu)、P4程序工作流程。

1.P4架構(gòu)及特性

首先我們談?wù)凱4的誕生,由Nick教授,博科姆教授等聯(lián)合發(fā)布了一篇論文《P4: Programming Protocol-Independent Packet Processors》,該論文在SDN界引起了極大的反響和關(guān)注度。隨后,Nick教授等人又發(fā)布了《The P4 Language Specification》、《Barefoot白皮書》等文件。目前,P4已經(jīng)在國外引起了足夠的重視,ONF成立了協(xié)議無關(guān)轉(zhuǎn)發(fā)的開源項(xiàng)目(PIF),該項(xiàng)目目前的工作重點(diǎn)就是為P4提供配套的中間表示IR(Intermediate Representation),另外PIF工作的成果將被用來設(shè)計(jì)下一代的OpenFlow協(xié)議。

目前人們提及最多的OpenFlow協(xié)議在逐漸的完善演化過程中,表字段和表類型不斷的增加。白牌交換機(jī)在支持OpenFlow協(xié)議的版本更新上,面臨著和傳統(tǒng)交換設(shè)備廠商同樣的困境——OpenFlow并不支持彈性地增加匹配域支持,協(xié)議新特性的支持所需要的成本大、時(shí)間周期長。同時(shí),隨著網(wǎng)絡(luò)中新的協(xié)議不斷出現(xiàn),OpenFlow協(xié)議也必將變得越來越臃腫,表的擴(kuò)展也必將變得越來越困難。

P4語言在設(shè)計(jì)之初,就是為了實(shí)現(xiàn)以下三個(gè)特性:

(1)協(xié)議無關(guān)性

網(wǎng)絡(luò)設(shè)備不與任何特定的網(wǎng)絡(luò)協(xié)議綁定,用戶可以使用P4語言描述任何網(wǎng)絡(luò)數(shù)據(jù)平面協(xié)議和數(shù)據(jù)包處理行為。這一特性通過自定義包解析器、匹配-動(dòng)作表的匹配流程和流控制程序?qū)崿F(xiàn)。

(2)目標(biāo)無關(guān)性

用戶不需要關(guān)心底層硬件的細(xì)節(jié)就可實(shí)現(xiàn)對數(shù)據(jù)包的處理方式的編程描述。這一特性通過P4前后端編譯器實(shí)現(xiàn),前端編譯器將P4高級語言程序轉(zhuǎn)換成中間表示IR,后端編譯器將IR編譯成設(shè)備配置,自動(dòng)配置目標(biāo)設(shè)備。

(3)可重構(gòu)性

允許用戶隨時(shí)改變包解析和處理的程序 ,并在編譯后配置交換機(jī),真正實(shí)現(xiàn)現(xiàn)場可重配能力。

為了實(shí)現(xiàn)上述特性,P4語言的編譯器采用了模塊化的設(shè)計(jì),各個(gè)模塊之間的輸入輸出都采用標(biāo)準(zhǔn)格式的配置文件,如p4c-bm模塊的輸出作為載入到bmv2模塊中的JSON格式配置文件。P4的架構(gòu)圖如圖1所示。

圖1 P4架構(gòu)圖

2. 交換機(jī)結(jié)構(gòu)

在傳統(tǒng)交換機(jī)中,數(shù)據(jù)流轉(zhuǎn)化為數(shù)據(jù)幀之后進(jìn)行解析,首先檢查的是tag,包括有無tag、靈活Q-in-Q、VLAN映射等。VLAN tag的檢查和處理在所有廠商的交換機(jī)中都是必須的,但隨后數(shù)據(jù)包處理流程就因廠商而異了,不同廠商的芯片設(shè)計(jì)會(huì)產(chǎn)生不同的處理流程,每個(gè)處理流程就是一個(gè)基礎(chǔ)的數(shù)據(jù)處理單元,一般情況下,交換機(jī)的流水線包含6-8個(gè)數(shù)據(jù)處理單元。

圖2 傳統(tǒng)交換機(jī)流水線結(jié)構(gòu)

圖2中列出的是幾個(gè)比較常見的數(shù)據(jù)幀處理單元,如二層轉(zhuǎn)發(fā)、ACL轉(zhuǎn)發(fā)等。流水線上每個(gè)基礎(chǔ)數(shù)據(jù)處理單元處理數(shù)據(jù)的過程,就是根據(jù)數(shù)據(jù)幀解析后的包頭信息,重復(fù)查表、匹配并執(zhí)行對應(yīng)的交換機(jī)指令的過程。

P4交換機(jī)中也有流水線(pipeline)的概念,一條流水線表示一組完整的數(shù)據(jù)處理流程,這一概念和傳統(tǒng)交換機(jī)中的的流水線是相似的。如圖3所示,在P4交換機(jī)中一條流水線可以包含以下組件:解析器/逆解析器、匹配-動(dòng)作表、元數(shù)據(jù)總線。其中除了元數(shù)據(jù)總線,其他組件都是非必須的。

  • 解析器(parser):將分組數(shù)據(jù)轉(zhuǎn)化成元數(shù)據(jù)。
  • 逆解析器(Deparser):將元數(shù)據(jù)轉(zhuǎn)化成序列化的分組數(shù)據(jù)。
  • 匹配動(dòng)作表(match-action table):操作元數(shù)據(jù)。
  • 元數(shù)據(jù)(metadata):在流水線內(nèi)存儲(chǔ)數(shù)據(jù)信息。

圖3 P4交換機(jī)流水線結(jié)構(gòu)

P4交換機(jī)中將流水線處理數(shù)據(jù)的過程進(jìn)行抽象和重定義,數(shù)據(jù)處理單元對數(shù)據(jù)的處理抽象成匹配和執(zhí)行匹配-動(dòng)作表的過程,包頭的解析抽象成P4中的解析器,數(shù)據(jù)處理流程抽象成流控制。P4中基礎(chǔ)數(shù)據(jù)處理單元是不記錄數(shù)據(jù)的,所以就需要引入一個(gè)元數(shù)據(jù)總線,用來存儲(chǔ)一條流水線處理過程中需要記錄的數(shù)據(jù)。P4交換機(jī)的專用物理芯片Tofino,最高支持12個(gè)數(shù)據(jù)處理單元,可以覆蓋傳統(tǒng)交換機(jī)的所有功能。

有了以上的知識(shí)儲(chǔ)備,就可以很輕松的刻畫出P4交換機(jī)的結(jié)構(gòu)。如圖4所示,P4交換機(jī)中含有兩條流水線——入口流水線和出口流水線;同時(shí)還有一些數(shù)據(jù)流管理功能,例如:擁塞控制,隊(duì)列控制,流量復(fù)制等。

圖4 P4交換結(jié)構(gòu)

對比圖2 圖3和圖4,我們不難看出P4交換機(jī)結(jié)構(gòu)與傳統(tǒng)的交換機(jī)并沒有多少差別,而且在芯片的設(shè)計(jì)上也僅僅是增加了可以自定義基礎(chǔ)數(shù)據(jù)處理單元和轉(zhuǎn)發(fā)流程的功能,其他設(shè)計(jì)與傳統(tǒng)交換機(jī)芯片無異,這也使得P4交換機(jī)能夠在為用戶提供數(shù)據(jù)轉(zhuǎn)發(fā)平面的可編程能力的同時(shí),保證數(shù)據(jù)的線性轉(zhuǎn)發(fā)速率。

3. P4程序工作流程

至此,我們可以梳理出P4的完整工作流程。用戶首先需要自定義數(shù)據(jù)幀的解析器和流控制程序,其次P4程序經(jīng)過編譯器編譯后輸出JSON格式的交換機(jī)配置文件和運(yùn)行時(shí)的API,再次配置的文件載入到交換器中后更新解析起和匹配-動(dòng)作表,最后交換機(jī)操作系統(tǒng)按照流控制程序進(jìn)行包的查表操作。

圖5 P4工作流程

如圖5所示,以新增VLAN包解析為例,圖中解析器除VXLAN以外的包解析是交換機(jī)中已有的,載入VXLAN.p4文件所得的配置文件的過程就是交換機(jī)的重配置過程。配置文件載入交換機(jī)后,解析器中會(huì)新增對VXLAN包解析,同時(shí)更新匹配-動(dòng)作表,匹配成功后執(zhí)行的動(dòng)作也是在用戶自定的程序中指定。執(zhí)行動(dòng)作需要交換機(jī)系統(tǒng)調(diào)用執(zhí)行動(dòng)作對應(yīng)的指令來完成,這時(shí)交換機(jī)系統(tǒng)調(diào)用的是經(jīng)過P4編譯器生成的統(tǒng)一的運(yùn)行時(shí)API,這個(gè)API就是交換機(jī)系統(tǒng)調(diào)用芯片功能的驅(qū)動(dòng),流控制程序就是指定API對應(yīng)的交換機(jī)指令。

以上P4語言的特性、P4語言和P4交換機(jī)的工作原理和流程就介紹完畢了,希望能讓不了解P4的人能有個(gè)基本的認(rèn)識(shí),同時(shí)起到拋磚引玉的作用。對P4感興趣的同學(xué)可以聯(lián)系筆者加入到P4微信交流群中與大牛們一起討論。

責(zé)任編輯:武曉燕 來源: sdnlab
相關(guān)推薦

2019-11-22 09:20:34

編程經(jīng)濟(jì)技術(shù)

2022-04-29 09:43:12

IPDKAPI框架DPU/IPU

2014-03-26 10:49:06

SDN軟件定義網(wǎng)絡(luò)網(wǎng)絡(luò)可編程性

2018-02-01 04:02:41

數(shù)據(jù)中心網(wǎng)絡(luò)編程

2009-06-19 18:51:13

ibmdwLotus

2013-08-06 14:04:46

網(wǎng)絡(luò)

2013-08-07 09:00:57

軟件定義網(wǎng)絡(luò)SDN

2023-04-04 15:46:16

云計(jì)算

2010-07-07 14:42:17

SQL Server

2016-07-05 11:13:57

騰訊云+Gartner云計(jì)算

2021-05-31 20:06:57

網(wǎng)元協(xié)議網(wǎng)關(guān)

2012-11-09 12:52:30

華為SDN傳送網(wǎng)絡(luò)

2013-05-03 09:49:38

ASICSDN可編程ASIC

2012-06-14 10:17:16

TecTile三星

2010-07-20 09:40:15

SQL Server

2010-10-11 09:14:17

Atom

2013-10-25 09:11:28

可編程WANSDN軟件定義網(wǎng)絡(luò)

2013-03-25 14:02:09

JuniperSDN核心交換機(jī)

2015-09-14 09:01:13

Android鏡子應(yīng)用
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)