国产欧美一区二区三区在线看_久久精品国产99国产精品_国产97人人超碰caoprom,色婷婷久久综合,成年人晚上看的视频,美女羞羞视频网站下载

0731-84728105
15116127200
FAST入門(8)FAST平臺(tái)軟件實(shí)現(xiàn)原理之一
發(fā)布時(shí)間:2018-08-10
     軟硬件協(xié)同是FAST平臺(tái)分組處理的特色。FAST平臺(tái)軟件主要實(shí)現(xiàn)FAST硬件流水線與FAST用戶應(yīng)用(UA)間數(shù)據(jù)通路和控制通路的信息交互,為UA編程提供函數(shù)庫(kù),是支撐UA運(yùn)行的基礎(chǔ)。FAST平臺(tái)軟件主要由Linux內(nèi)核中的FAST驅(qū)動(dòng)和FAST內(nèi)核以及用戶空間的FAST編程庫(kù)組成。
一、FAST UA的通信模式
     FAST UA運(yùn)行時(shí)與FPGA以及網(wǎng)絡(luò)接口有多種通信需求,包括FAST分組收發(fā)、對(duì)FPGA的配置管理以及與遠(yuǎn)端主機(jī)進(jìn)行標(biāo)準(zhǔn)的Socket通信等。
   (1)FAST分組收發(fā)
     UA從FAST流水線接收FAST分組以及向FAST流水線發(fā)出自己產(chǎn)生或者轉(zhuǎn)發(fā)的FAST分組。當(dāng)UA實(shí)現(xiàn)middlebox處理功能時(shí),如防火墻功能,使用FAST分組收發(fā)的方式與底層FPGA進(jìn)行通信。這些分組遵循元數(shù)據(jù)加以太網(wǎng)幀的FAST分組格式定義。FAST分組格式定義將在FAST編程 API介紹時(shí)給出。
   (2)對(duì)FPGA的配置管理
     UA對(duì)FPGA的配置管理包括對(duì)FAST流水線的配置管理以及對(duì)FPGA OS的配置管理。典型的對(duì)FAST流水線配置管理操作包括配置GAC模塊中的Action表,讀取GOE模塊中的計(jì)數(shù)器等;典型的對(duì)FPGA OS的配置管理包括讀取端口接收發(fā)送計(jì)數(shù)器,配置FPGA OS提供的匹配協(xié)處理器得流表項(xiàng)等。
   (3)與遠(yuǎn)程設(shè)備的Socket通信
     FAST UA還可使用標(biāo)準(zhǔn)Socket()機(jī)制通過內(nèi)核協(xié)議棧與遠(yuǎn)程的網(wǎng)絡(luò)設(shè)備進(jìn)行通信。根據(jù)目的IP地址,內(nèi)核協(xié)議棧確定該通信是通過掛接到CPU上標(biāo)準(zhǔn)以太網(wǎng)接口進(jìn)行,還是通過掛接到FPGA上的網(wǎng)絡(luò)接口進(jìn)行。如果是前者,協(xié)議棧將會(huì)以sk_buff的格式與標(biāo)準(zhǔn)以太網(wǎng)驅(qū)動(dòng)交換收發(fā)的分組;如果是后者,協(xié)議棧將會(huì)把分組送FAST內(nèi)核,由FAST內(nèi)核將分組封裝成FAST格式,通過FAST驅(qū)動(dòng)向FPGA中的流水線發(fā)出。
     需要注意的是,F(xiàn)AST UA可能同時(shí)使用多種通信模式。例如OpenFlow通道代理(OXFP)UA既要通過Socket機(jī)制與遠(yuǎn)端的SDN控制器通信,實(shí)現(xiàn)packet-in/packet-out/flowmod等OpenFlow消息的交互,又要與FAST流水線進(jìn)行FAST分組的交互。由于上述通過Linux內(nèi)核的通信都是阻塞式的,因此需要為不同的通信創(chuàng)建不同的線程。
二、FAST平臺(tái)軟件的實(shí)現(xiàn)
     FAST平臺(tái)軟件實(shí)現(xiàn)示意如下圖所示,其中包含F(xiàn)AST驅(qū)動(dòng)、FAST內(nèi)核、FAST編程庫(kù)以及兩個(gè)UA、UAx和UAy。FAST內(nèi)核維護(hù)的Netlink端口映射表NPMT(Netlink Port Mapping Table)是FAST平臺(tái)軟件中的核心數(shù)據(jù)結(jié)構(gòu),主要存放UA的MID與NetLink端口號(hào)之間的映射關(guān)系。
     FAST平臺(tái)軟件實(shí)現(xiàn)時(shí)在用戶空間并不存在一個(gè)集中的UA管理程序。每個(gè)UA在啟動(dòng)時(shí)都獨(dú)立地通過FAST庫(kù)函數(shù)向FAST內(nèi)核注冊(cè),獲取MID以及與NetLink端口號(hào)的映射關(guān)系。NPMT中也保存了各種用于管理維護(hù)的各種計(jì)數(shù)器信息,例如某個(gè)UA接收和發(fā)送分組的個(gè)數(shù)等。
     FAST編程庫(kù)為UA設(shè)計(jì)提供FAST分組收發(fā)的API函數(shù),這些函數(shù)通過Netlink機(jī)制與Linux內(nèi)核中的FAST內(nèi)核通信。Netlink是一種基于Socket緩存隊(duì)列的,內(nèi)核與用戶態(tài)應(yīng)用之間傳遞的消息的異步通信機(jī)制。FAST編程庫(kù)會(huì)在UA實(shí)現(xiàn)時(shí)編譯到UA地址空間中,為防止不同UA訪問FAST內(nèi)核中共享數(shù)據(jù)結(jié)構(gòu)存在競(jìng)爭(zhēng),F(xiàn)AST編程庫(kù)在設(shè)計(jì)時(shí)考慮了對(duì)NetLink映射表等共享資源訪問的互斥機(jī)制。
      FAST內(nèi)核維護(hù)NPMT數(shù)據(jù)結(jié)構(gòu)。每個(gè)UA啟動(dòng)時(shí),會(huì)通過FAST編程庫(kù)提供的初始化函數(shù)向FAST內(nèi)核注冊(cè),由用戶顯式地為UA分配一個(gè)唯一的MID編號(hào)。FAST內(nèi)核對(duì)分組處理的操作如下表所示。
     因此FAST內(nèi)核根據(jù)FAST分組的DMID實(shí)現(xiàn)了FAST流水線,多個(gè)FAST UA以及協(xié)議棧之間的分組交換。從協(xié)議棧角度看,F(xiàn)AST內(nèi)核是一個(gè)特殊的網(wǎng)絡(luò)接口,在內(nèi)核中的地位與標(biāo)準(zhǔn)的網(wǎng)絡(luò)接口驅(qū)動(dòng)基本一致。由于協(xié)議棧發(fā)出的分組無分組的輸出接口信息,該分組進(jìn)入FAST流水線后需要通過正常的轉(zhuǎn)發(fā)獲取輸出接口的信息。
     FAST驅(qū)動(dòng)負(fù)責(zé)控制與FPGA的DMA通信,F(xiàn)AST驅(qū)動(dòng)與硬件平臺(tái)密切相關(guān),針對(duì)不同實(shí)現(xiàn)平臺(tái),DMA可以是輪詢方式,也可以是中斷方式。不同平臺(tái)中硬件DMA寄存器的地址也有所差異,因此FAST驅(qū)動(dòng)移植是FAST平臺(tái)軟件移植的關(guān)鍵。由于FAST UA編程基于FAST編程API和Linux標(biāo)準(zhǔn)系統(tǒng)調(diào)用,因此不同的硬件平臺(tái)對(duì)UA編程是完全透明的。