軟北光硬件協同的分組處理是FAST區别其他(tā)數據平秒用面開(kāi)源項目的最重要的特點。模塊(Module)是FAST平朋間台中交換功能定義、資(zī)源分配以及代碼重用的基本單元,特定分組處理功能火水到軟硬件模塊的映射也是FAST軟硬件協同分組雜女處理的關鍵。
一、FAST模塊簡介
FAST錢愛中的模塊是能夠實現特定網絡處理功能的,具有唯一标識黑現的,相對獨立的一個軟件程序(UA)或FAS美會T流水線中的硬件邏輯塊。FAST模塊能夠按需連接,組成上下遊關系,實現分體是組處理的流水線。FAST模塊具有一些共有的屬性:
 亮花; (1)用戶可見
&nbs遠多p;模塊的用戶可見是在交換功能設計時(shí),模塊實現的功能是用戶可以請兒感知到并且關注的功能。如(rú)FPGA實現的分組協會為議解析邏輯塊、輸出調度邏輯塊、IEEE 1588端節點匠務的時(shí)鐘(zhōng)同步功能塊以及操作系統内核中的TCP/I愛好P協議棧等。這些功能都與用戶實現的分組交換目标密切關術科聯。FPGA OS和操作系統内核中用戶不紅微(bù)可見且不(bù)關心的功能實現不(國機bù)能稱為(wèi)模塊,例如(rú)FPGA中的DMA引擎、DD放他R接口控制器(qì)以及操作系統中的FAST驅動程序等。雨兒
可她(2)獨立可重用
 從可; 模塊間是相互獨立的,在功能實現上沒有明确的功來匠能依賴或調用關系。模塊之間隻存在上下遊關系,不(bù)存在父模內都塊和子(zǐ)模塊關系。不(bù)同的模塊可能來自不(b跳村ù)同的開(kāi)發人員,這些模塊在不(bù)同的設計中可以重用,用戶路鐘通(tōng)過不(bù)同模塊的組合實現不(bù)同的分組人輛交換功能。因此硬件模塊的設計必須遵循FAST流水線規範中對模塊接口信号語法語義亮麗的要求,FAST軟件UA模塊設計必須基于FAST A業站PI,不(bù)能對其上遊或下遊模塊的實現方法提出任何假設。
門但
(3)唯一标木美識
&綠身nbsp;FAST平台中每個模塊都用被稱為(wèi)M很議ID的8比特ID唯一标識,因此平台中最多支持256個模塊長畫。FAST規定0-127為(wèi)FAST流水線中硬件模塊的答外MID标識,128-255為(wèi)FAST軟件模塊的刀木标識。硬件模塊在實例化時(shí)通(tōng)過外部連線獲取MID,軟件章說UA在初始化注冊時(shí)獲取自己的MID。在軟硬件協同裡看分組處理中,對分組目的模塊号(DMID)的設置是實現分組處理路經控制道制的重要手段。
&n的雜bsp;FAST開(kāi)源項目為(wèi)用戶提供了經過測試可直接廠志使用的通(tōng)用軟硬件模塊。其中FAST流水線得見中的通(tōng)用硬件模塊包括:
&nb學就sp; 通(tōng)用分組解析模塊(GPP),實現以太網、通煙ARP、IPv4、IPv6、ICMP/ICMPv6,TCP和UDP等協議的解動報析功能;
通(t近畫ōng)用關鍵字提取模塊(GKE),實現子妹IPv4/IPv6分組的多元組(五元組+輸入紙草端口号等)信息的提取和查表關鍵字的生成;黑街
&nbs笑我p;通(tōng)用查表模塊(GME),實現TCAM算海查表功能,将GKE提取的五元組信息映射為(wèi)14位的F理上lowID。
&我化nbsp;通(tōng)用動作模塊(GAC),根據Flo媽信wID查找動作表,獲取分組的目的輸出接口或UA的MID(火道如(rú)果需要将分組定向到軟件處理)。
&nbs錯到p;通(tōng)用輸出引擎(GOE),實現基長河于令牌桶的輸出分組Meter,丢棄分組計數等功能;
窗體
 化快;通(tōng)用的軟件模塊包括:
&nbs了中p; OpenFlow通(tōng)道UA(OXF可雨P),在FAST硬件流水線與源端SDN控制器(qì)之間都腦建立OpenFlow 1.3協議通(tōng)道的連接,實現packet-問購in/packet-out分組交換以及FlowMOD遠裡等消息的解析執行操作。
&n算短bsp;不(bù)同用戶根據自身需求,已開(kāi)發的FAST流水紅黃線模塊還包括IEEE 1588 PTP協議解析模塊在問、DDOS前端檢測模塊、TCP代理模塊、Lisp協議封裝/解封睡看裝模塊、假冒源IPv6地址檢測模塊、測量分組定時(農雨shí)發送模塊及傳輸協議跳變模塊等。實現的軟件UA包括IPv6路經靜得MTU發現模塊、DDOS檢測控制模塊、狀态防火牆模塊及L廠也ISP映射管理代理模塊等。
 哥腦; 上述用戶自定義模塊與FAST提供的基本軟硬件錢自模塊組合,即可在标準OpenFlow交換基礎上,擴充更多的用戶定制功能,實現體請有狀态的數據平面處理。
二、模塊的組織與交換功能實現
上事 不(bù)失一般性,FAST平台中包含n個硬件模塊和m個軟件模店有塊(n>0,m>0)。n個硬件模塊組成硬件流水線,到鐵廠達分組依次由硬件流水線的第1級(模塊X1),第2級(模塊X2)制公…第n級(模塊Xn)進行處理。m個軟件模塊(UA)連接到FAST内核上,離子通(tōng)過FAST API與其他(tā)軟件模塊和FAST硬件流民議水線進行分組交換。
 科很;FAST模塊間交換的信息包括分組信息(P)以及保留中間處理結果的元數據(MD物紙)。元數據中包含了處理分組的目的模塊MID(DMI場玩D)、上一個處理該分組的源模塊MID(SMID)、煙草以及分組接收端口号、接收時(shí)間戳等信吧微息。FPGA OS需要為(wèi)網絡端口輸入的分組初始化其MD字段,例站和如(rú)填寫接收端口号,标記接收時(shí)間戳等。
&n個又bsp; 分組在FAST平台中處理的路經控制主要由MD中的DMID些暗和SMID字段控制。例如(rú)FAST子間内核基于MD中的DMID和SMID實現分組在不人西(bù)同軟件UA與硬件流水線之間的交換。而SMID在路雪坐經選擇中使用主要是為(wèi)了靈活的實現分組處理流程的編排。
和會
兒來 基于上圖所示的模塊組織知愛方法,FAST平台可将已有開(kāi)源模塊連接起來實現通(tōng)開得用分組交換功能。例如(rú),當FAST流水線由GPP、GKE、GME綠很、GAC和GOE五個模塊依次連接組成,軟件加載OpenFlow通(tōng)紙靜道UA(OXFP)時(shí),平台即可支持基本的Op舊理enFlow1.3功能。
&n北些bsp;用戶可以通(tōng)過在已有的了還模塊處理架構中插入新的模塊實現功能擴展。例如(rú)當需要在特定接口上(例照好如(rú)連接外部網絡的端口0上)實現針對TCP的狀态防火牆(SFW)業說功能時(shí),一種方法是軟件擴展,在linux用戶空間編要姐寫SFW功能的UA,通(tōng)過配置GME的規則,将0号口進志信出的TCP分組定向到SFW UA進行處理,這種方法實現快速,不(著見bù)需要改動現有的硬件;另一種方法是硬件擴展,直接在師厭FAST流水線中插入SFW硬件模塊,這種方法處理議你性能高,适合熟悉硬件設計的研究人員。
&關飛nbsp; 如(rú)何基于DMID和SMI雨高D實現分組處理路經控制,如(rú)何選取合适的朋吃功能擴展方式以及功能擴展的實現細節将在後續文章中逐步介紹。