&nbs區電p; UA編程API是FAST平台支持軟硬玩草協同分組處理的基礎。基本編程API為(wèi)U嗎黑A提供了與硬件流水線交互的基本手段。擴展API是面向FAST流水線中工快特定硬件模塊而設計的API,主要通(tōng)到個過對基本API再次封裝實現。擴展API的使用可以大(dà)大(dà)簡外公化UA編程的複雜性。本文以SDN交換規則管理為(wèi)例,詳細介中街紹擴展API的優點,實現方法和工(gōng)作流程。
雨兒
一、擴展API簡介
些務 FAST基本API為(wèi)FAST流水線中硬件模塊設計者銀樹提供了與軟件通(tōng)信的接口。模塊設計者還應根據模塊綠愛提供的功能,基于基本API為(wèi)用戶提供擴展的API,以簡化UA編信民程的複雜性。
&nbs做線p;(1)擴展API的優點
&n機熱bsp; 擴展API可以簡化外煙用戶UA編程的複雜性。例如(rú),FAST的SDN交換煙醫流水線包含了GPP,GKE,GME,GAC和GOE等功能模塊。UA需要配子藍置GME(通(tōng)用匹配引擎)模塊的規則表和GAC車睡(通(tōng)用動作執行)模塊中的動作街慢表以實現對特定報文的match-action操作。UA直接使鐘討用fast_ua_hw_rd()和fast_ua_hw_wr()函數對GM科朋E和GAC模塊中的表進行配置存在兩個不(bù姐刀)便。
&nb光可sp;一是每次操作必須提供操作地址等底層信息,而這一信息與硬件模塊中票實現相關。UA使用這些地址對低(dī)層配置與SDN交換機需要對轉發人熱層進行抽象的原則相違背;二是由于fast_ua_hw_r年文d()和fast_ua_hw_wr()函數每次隻能訪問32位數據,對一在花條SDN規則的FlowMod配置需要拆分成訪問不(司的bù)同模塊的多次操作,增加了編程的複雜性。著們
為(w劇內èi)簡化SDN規則管理,可在FAST編程庫中可定義一些專用的數據結構。例如(錯海rú)描述SDN網絡中流的flow結構,對兵醫應FlowMod消息的fast_rule結構等。基于這些結構,可為呢擴展UA編程API,為(wèi)UA編程提供更高層次的抽象,簡師物化編程的複雜性。
(2)擴展API實兵相現方法
開我擴展API的實現主要分為(wèi)兩個步驟鐵微。一是為(wèi)UA編程定義數據結構,屏蔽底層訊術實現細節;二是根據UA編程需求,設計相應的A問們PI函數。以下仍以SDN交換為(wèi)例說(shuō)明。
農答 由于SDN轉發面的管理主要是對規則進行增加,删除等操作,因此FAS笑長T定義了Fast_rule數據結構,如(rú)下所示。因此U吧術A在編程實現SDN的規則管理時(shí),隻需要實現對上土讀述規則的操作即可,而不(bù)需要考慮規則的具體存儲地址。我們(men)會(h鐵們uì)在基于FAST的SDN交換實現相關文檔中詳細介志廠紹Fast_rule數據結構。
&都來nbsp; 基于Fast_rule數據結構,可以為快亮(wèi)SDN規則管理定義如(rú)下5個擴話火展的API。分别實現規則表的初始化、規則添加、規則删除和規則打黑對印等功能,如(rú)下表所示。
 熱這; 顯然,基于上述擴展農問API,可以方便的實現對SDN轉發規則的管理,木頻簡化了UA設計的複雜度。
二、擴展API的實現
&北習nbsp; 下圖以Fast_add_ru北話le()為(wèi)例,介紹了擴展API的實現流程。其中UA程序實現了交體信換機上的openflow通(tōng)道功能,需要根據SDN控制器(qì)發是暗來的Flowmod指令對FAST硬件流水線中的規則進行管理。
以增加規他去則為(wèi)例,UA首先按照FlowM市對od消息中包含的規則和動作信息,構造fast_rule空空結構體,然後調用FAST編程庫中所提供的fast_ru和了le_add()将fast_rule結構體攜帶的熱道流表配置信息經FAST内核和FAST驅動,寫入硬件GME模塊和硬件GA歌飛C模塊所關聯的lookup表中。
圖1 擴展API的執行過程
&nbs樹就p; 每個FlowMod消息涉道黑及到對FAST硬件流水線中GME和GAC兩個模塊對應的規則表和action表進公器行管理,而fast_rule_add()函數向用戶屏蔽了這一硬件實車還現細節。