&n區友bsp;軟硬件協同是FAST平台分組處理的特色。友睡FAST平台軟件主要實現FAST硬件流水線與FAST用民日戶應用(UA)間數據通(tōng)路和控個匠制通(tōng)路的信息交互,為(wèi)UA編程農說提供函數庫,是支撐UA運行的基礎。FAST平台軟件主要由Linux内動又核中的FAST驅動和FAST内核以及用戶空間的FAST編程庫組成。
飛知
一、FAST UA的通(tōng)信模式
&nbs少吧p; FAST UA運行時(shí)與FPGA以及網絡接姐和口有多種通(tōng)信需求,包括FAST分組收發、對FPGA的配置管近公理以及與遠端主機進行标準的Socket通(tōng)信等。
微門
&n樹很bsp;(1)FAST分組收發
&nb還都sp; UA從FAST流水線接收FAST分組以及向FAST筆他流水線發出自己産生或者轉發的FAST分組。當UA實現middlebo中山x處理功能時(shí),如(rú)防火牆功能,使用FAS理市T分組收發的方式與底層FPGA進行通(tōng)路話信。這些分組遵循元數據加以太網幀的FAST分組格式定義。FAST分組看分格式定義将在FAST編程 API介紹時(shí)給出。
近黃(2)對FPGA的配置管理
&nbs上作p;UA對FPGA的配置管理包括對FAST流愛吃水線的配置管理以及對FPGA OS的配置離秒管理。典型的對FAST流水線配置管理操作包括配置GAC快慢模塊中的Action表,讀取GOE模塊中的計數器(城員qì)等;典型的對FPGA OS的配置管理包括讀取端在微口接收發送計數器(qì),配置FPGA OS提供的匹配協處理器(為術qì)得(de)流表項等。
(3)嗎白與遠程設備的Socket通(tōng)信
F家事AST UA還可使用标準Socket()機制通(tōng)快內過内核協議棧與遠程的網絡設備進行通(tōng)信。根據目的IP吧物地址,内核協議棧确定該通(tōng)信是通(tōng不信)過挂接到CPU上标準以太網接口進行,還是通(tōng)過挂接到FP雨生GA上的網絡接口進行。如(rú)果是前者,協議棧将會(huì)以sk_b這吧uff的格式與标準以太網驅動交換收發的分組;如(rú)果是後者,自人協議棧将會(huì)把分組送FAST内核,由FAST内核将分組封裝成FA妹內ST格式,通(tōng)過FAST驅動向FPGA中的流水線發出。
東愛
山又 需要注意的是,FAST UA可能同時(shí)要器使用多種通(tōng)信模式。例如(rú)Op是下enFlow通(tōng)道代理(OXF關醫P)UA既要通(tōng)過Socket機制與遠端的SDN控制器(qì)通(t他話ōng)信,實現packet-in/packet-out/flowmo生刀d等OpenFlow消息的交互,又要與FAST流水線進行FA路得ST分組的交互。由于上述通(tōng)過Linux内核的通(雪討tōng)信都是阻塞式的,因此需要為(wèi)不(bù)同的通(tōng)信兵厭創建不(bù)同的線程。
二、FAST平台軟件的實現
&nbs機好p;FAST平台軟件實現示意如(rú)下圖所示,其中包含F一輛AST驅動、FAST内核、FAST編程庫以及兩個UA、UAx和UAy。F習男AST内核維護的Netlink端口映射表鐵車NPMT(Netlink Port Ma快自pping Table)是FAST平台軟件中的核木這心數據結構,主要存放UA的MID與NetLi雨還nk端口号之間的映射關系。
FAS司拍T平台軟件實現時(shí)在用戶空間并不(bù)存在一個集中的村西UA管理程序。每個UA在啟動時(shí)都獨立地通(tōng)過FAS理謝T庫函數向FAST内核注冊,獲取MID以及與Net新校Link端口号的映射關系。NPMT中也保存了各種用于事子管理維護的各種計數器(qì)信息,例如(rú)某個UA接收和發送分放海組的個數等。
&n的弟bsp;FAST編程庫為(wèi)UA設計提供FA快店ST分組收發的API函數,這些函數通(tōng)過Netlink機制與Lin厭月ux内核中的FAST内核通(tōng)信。Netlink大知是一種基于Socket緩存隊列的,内核與用戶态應用之間傳遞的消息的異步通(山公tōng)信機制。FAST編程庫會(huì)在UA實現時(shí)編譯器鐘到UA地址空間中,為(wèi)防止不(bù)同UA訪問FAST舊可内核中共享數據結構存在競争,FAST編程庫在設計時(sh從都í)考慮了對NetLink映射表等共享資光兒(zī)源訪問的互斥機制。
 校都; FAST内核維護NPMT數據結構。每個UA啟視物動時(shí),會(huì)通(tōng)過FA習子ST編程庫提供的初始化函數向FAST内核注讀機冊,由用戶顯式地為(wèi)UA分配一個在花唯一的MID編号。FAST内核對分組處理的操作土務如(rú)下表所示。
因此理輛FAST内核根據FAST分組的DMID實現了FAST流水線,多開務個FAST UA以及協議棧之間的分組交換。從問銀協議棧角度看,FAST内核是一個特殊的網絡接口,在内核中的地位與标準的網絡接口資文驅動基本一緻。由于協議棧發出的分組無分組的輸出接口信息,該分組進入FAS制近T流水線後需要通(tōng)過正常的轉發獲取輸出接口的信息得林。
 近些;FAST驅動負責控制與FPGA的DMA通(tōng)信,FA工什ST驅動與硬件平台密切相關,針對不(bù)同實道劇現平台,DMA可以是輪詢方式,也可以是中斷方式。不(bù)同化還平台中硬件DMA寄存器(qì)的地址也有所差異,因此FAST驅光年動移植是FAST平台軟件移植的關鍵。由于會又FAST UA編程基于FAST編程API和Linux标準系統調用下做,因此不(bù)同的硬件平台對UA編程是完全透明報月的。