一、 應用背景
随着互聯網技術的(de)飛速發展,網絡相關的(de)軟硬件應用也(yě)越來(lái)越多。但是(shì)應用的(de)開發、測試大(dà)部分是(shì)在(zài)一些網絡性能較好的(de)局域網中進行的(de),但是(shì)現實中的(de)網絡是(shì)不(bù)可靠的(de),數據傳輸和(hé / huò)交互可能存在(zài)丢包,亂序等問題,導緻整個(gè)系統出(chū)現故障,因此模拟在(zài)廣域網中存在(zài)的(de)不(bù)确定問題,對應用的(de)部署運行是(shì)必要(yào / yāo)的(de)。
二、 方案概述
衡阳小九自主研發的(de)廣域網硬件仿真平台,基于(yú)FPGA+CPU的(de)FAST架構下實現,廣域網仿真功能在(zài)硬件中實現,可模拟廣域網中丢包,亂序,延時(shí)的(de)情形。具體實現方式是(shì)在(zài)硬件中的(de)五級流水線中插入廣域網仿真模塊。
三、 FAST五級流水線(FAST UM)
UM是(shì)FAST架構中硬件中最基礎的(de)模塊,包含5個(gè)主要(yào / yāo)的(de)子(zǐ)模塊,可實現對網絡分組的(de)分組解析、查表匹配、動作轉發,輸出(chū)統計功能。
用戶定義的(de)解析(UDP)
根據用戶特定的(de)處理需求,解析分組的(de)協議以(yǐ)及分組是(shì)否滿足用戶定制的(de)屬性分類,生成後續控制分組處理的(de)分組特征向量(PFV)以(yǐ)及生成MD信息。
用戶定義關鍵字提取(UKE)
根據分組的(de)特征向量,提取分組查表得關鍵字并将查找關鍵字(Key)、PFV及MD送給GME模塊。
通用查表引擎(GME)
根據産生的(de)關鍵字查表,獲取控制分組處理動作和(hé / huò)輸出(chū)控制的(de)信息。
用戶定義動作(UDA)
實現用戶定義的(de)對分組的(de)特定處理,如修改分組頭,分組分片與重組,添加二層分組頭等。
通用輸出(chū)引擎(GOE)
基于(yú)令牌桶實現對分組輸出(chū)的(de)整形,如限制發往特定CPU 軟件UA或協議棧的(de)流量,限制特定流發往特定端口的(de)流量等。
四、 廣域網仿真模塊(MMM)
丢包模塊
根據配置的(de)丢包率對輸入的(de)包進行計數,即根據輸入的(de)百分比,将報文中的(de)指定比例的(de)包丢掉,如5%即在(zài)配置成效時(shí)将每接收到(dào)的(de)100個(gè)報文中的(de)前5個(gè)報文丢棄。
亂序模塊
亂序模塊是(shì)數據通過乒乓的(de)方式存儲在(zài)兩個(gè)FIFO内。在(zài)輸出(chū)時(shí)根據亂序的(de)比例來(lái)實現對兩個(gè)FIFO控制。
即輸入時(shí)按1:1的(de)方式将數據存儲在(zài)兩個(gè)FIFO中,在(zài)輸出(chū)時(shí)則根據丢包比例進行亂序,即若亂序率爲(wéi / wèi)1%即輸出(chū)時(shí)每輸出(chū)99個(gè)數據後輸出(chū)在(zài)對應FIFO多輸出(chū)一個(gè)報文,即每個(gè)FIFO接2:2輸出(chū)兩個(gè),以(yǐ)保證出(chū)現亂序。
延時(shí)模塊
延時(shí)模塊是(shì)對需要(yào / yāo)延時(shí)的(de)數據在(zài)FIFO中進行緩存,直到(dào)達到(dào)延時(shí)确定的(de)時(shí)間爲(wéi / wèi)止。即當第一個(gè)報文到(dào)達後開始記時(shí),到(dào)指定時(shí)間輸出(chū)數據報文。