FAST入門(8)FAST平台軟件實現原理放民之一(yī)
發布時間:2018-08-10
軟硬件協同對煙是FAST平台分(fēn)組處理的特色。FAST平台軟件主要實現FAST硬件流能歌水線與FAST用戶應用(UA)間數據通路和控制通路的信息交互,爲UA編一內程提供函數庫,是支撐UA運行的基礎。FAST平台軟件主要由L河河inux内核中(zhōng)的FAST驅動和FAS船黃T内核以及用戶空間的FAST編程庫組成。
一(yī)、FAST UA的通信模式
明哥
&nbs但嗎p;FAST UA運行時與FPGA以及網絡接口有多種通信需求,包括光紙FAST分(fēn)組收發、對FPGA的配置管理以及與遠端主機進行标準的So好房cket通信等。
(制音1)FAST分(fēn)組收發
UA從車個FAST流水線接收FAST分(fēn)組以及向FAST流水線發出自己産生(sh和歌ēng)或者轉發的FAST分(fēn)組。當UA區妹實現middlebox處理功能時,如防火(huǒ)牆功能,使用FAST分(f綠道ēn)組收發的方式與底層FPGA進行通信。這些分(fēn)組遵循元數費工據加以太網幀的FAST分(fēn)組格式定義。喝司FAST分(fēn)組格式定義将在FAST編程 API介紹時給出。
舊森
(2)農線對FPGA的配置管理
UA對鐘司FPGA的配置管理包括對FAST流水線的配置有黃管理以及對FPGA OS的配置管理。典型的對FAST流水線配置管相志理操作包括配置GAC模塊中(zhōng)的Action表,讀取GOE模資書塊中(zhōng)的計數器等;典型的對FPGA OS的配置管理包括讀取做物端口接收發送計數器,配置FPGA OS提供的匹配什科協處理器得流表項等。
(3)與遠程設備的Socket書用通信
 老用;FAST UA還可使用标準Socket()機制通過南件内核協議棧與遠程的網絡設備進行通信。根據目的IP地址,内核協議棧确定該通近睡信是通過挂接到CPU上标準以太網接口進行,還是通過挂接到FPGA上的網司從絡接口進行。如果是前者,協議棧将會以sk_bu有商ff的格式與标準以太網驅動交換收發的分(fēn)組;如果是後者,協議棧将都土會把分(fēn)組送FAST内核,由FAST内核将分(fē關子n)組封裝成FAST格式,通過FAST驅動向如路FPGA中(zhōng)的流水線發出。
新機 需要注意的是,FAST UA可能同時使用多種通信模式。他術例如OpenFlow通道代理(OXFP)U海照A既要通過Socket機制與遠端的SDN控制器通信,實現pack綠爸et-in/packet-out/flowmod等Op音媽enFlow消息的交互,又(yòu)要與FAST用黃流水線進行FAST分(fēn)組的交互。由于上述通過Linux拍在内核的通信都是阻塞式的,因此需要爲不同的用吧通信創建不同的線程。
二、FAST平台軟件的實現
&nbs讀書p; FAST平台軟件實現示意如下(xià)圖所示,其中(zhōn嗎笑g)包含FAST驅動、FAST内核、FAST編程庫以及兩個UA來雜、UAx和UAy。FAST内核維護的Netlink端口映射業兵表NPMT(Netlink Port M頻務apping Table)是FAST平台軟件中議女(zhōng)的核心數據結構,主要存放(fàng)UA的MID與NetL兒你ink端口号之間的映射關系。
FAST平輛答台軟件實現時在用戶空間并不存在一(yī)個集中(zhōn對雨g)的UA管理程序。每個UA在啓動時都獨立地通過FAST庫函數向生長FAST内核注冊,獲取MID以及與NetLink端口号的映射關系。N地做PMT中(zhōng)也保存了各種用于管理維護的各種計數器信息,例如務人某個UA接收和發送分(fēn)組的個數等。
友視
F紙這AST編程庫爲UA設計提供FAST分(fē也計n)組收發的API函數,這些函數通過Netl現大ink機制與Linux内核中(zhōng)的FAST内核通信。Netlink街一是一(yī)種基于Socket緩存隊列的,内核與用戶态應用之間傳遞的消息的異步對票通信機制。FAST編程庫會在UA實現時編譯到UA地址空間中(zhōng),歌中爲防止不同UA訪問FAST内核中(zhōng事你)共享數據結構存在競争,FAST編程庫在設計時考慮了對NetLink映射表等共畫去享資(zī)源訪問的互斥機制。
 自會; FAST内核國作維護NPMT數據結構。每個UA啓動時,會通過FAST那如編程庫提供的初始化函數向FAST内核注冊,由用戶顯式地爲UA分(f有到ēn)配一(yī)個唯一(yī)的MID編号。FAST内核關和對分(fēn)組處理的操作如下(xià)表所示。
因此F黑年AST内核根據FAST分(fēn)組的DMID實現了FA麗錯ST流水線,多個FAST UA以及協議棧之間的體書分(fēn)組交換。從協議棧角度看,FAST内核是一(yī)個特月愛殊的網絡接口,在内核中(zhōng)的地位與标準的網絡接口驅動基本一(yī)緻草房。由于協議棧發出的分(fēn)組無分(fēn)組的輸靜劇出接口信息,該分(fēn)組進入FAST流間器水線後需要通過正常的轉發獲取輸出接口的信息。
也到
&nbs麗厭p;FAST驅動負責控制與FPGA的DMA通信,FA暗體ST驅動與硬件平台密切相關,針對不同實現平台,DM生姐A可以是輪詢方式,也可以是中(zhōng)斷方式。不同平台中(習我zhōng)硬件DMA寄存器的地址也有所低行差異,因此FAST驅動移植是FAST平台軟件移植的關鍵。由于FAST U森街A編程基于FAST編程API和Linux标準窗視系統調用,因此不同的硬件平台對UA編程是完全透明的。
票東