村錢; UA編程API是FAST平台支持軟硬協同也刀分(fēn)組處理的基礎。基本編程API爲UA提供了與硬件流水線交互的基本手文紅段。擴展API是面向FAST流水線中(zhōng)特定硬件模塊而麗志設計的API,主要通過對基本API再次封裝實是作現。擴展API的使用可以大(dà)大(d金民à)簡化UA編程的複雜(zá)性。本文以SDN交換規則管理爲例綠明,詳細介紹擴展API的優點,實現方法和工(gōng)作流程紅中。
一(yī)、擴展API簡介
慢關
&n從們bsp; FAST基本API爲FAST流水線木路中(zhōng)硬件模塊設計者提供了與軟件通廠師信的接口。模塊設計者還應根據模塊提供的功能,基這還于基本API爲用戶提供擴展的API,以簡化UA編程的複雜(車綠zá)性。
(1)擴展A物知PI的優點
 這門;擴展API可以簡化用戶UA編程的複雜(zá)性。例如,FAST的S城輛DN交換流水線包含了GPP,GKE,GME,GAC和G明得OE等功能模塊。UA需要配置GME(通用匹配引山朋擎)模塊的規則表和GAC(通用動作執行)師行模塊中(zhōng)的動作表以實現對特定服影報文的match-action操作。UA直接使嗎了用fast_ua_hw_rd()和fast_ua這街_hw_wr()函數對GME和GAC模塊中(zhōng)的拍風表進行配置存在兩個不便。
&nb村些sp;一(yī)是每次操作必須提供操作地址等底層信息,而這一(y化在ī)信息與硬件模塊實現相關。UA使用這些地址對低層配置與SDN化化交換機需要對轉發層進行抽象的原則相違背;二是由離動于fast_ua_hw_rd()和fast_志問ua_hw_wr()函數每次隻能訪問32位數據,對一(yī)條SDN規北花則的FlowMod配置需要拆分(fēn)商鐵成訪問不同模塊的多次操作,增加了編程的複雜(zá)性。
去外爲簡化SDN規則管理,可在FAST編程庫中(zhōng)可定義一(你好yī)些專用的數據結構。例如描述SDN網絡中(zhōng)流的flow結構,對店舞應FlowMod消息的fast_rule結構等。基于這些結還她構,可擴展UA編程API,爲UA編程提供更高層次的抽象,簡化編程的複雜(zá筆坐)性。
(2)擴展API實現方法車哥
司來 擴展API的實現主要分(fēn)爲兩個步驟。一(他去yī)是爲UA編程定義數據結構,屏蔽底層實現細節;二是根據U草體A編程需求,設計相應的API函數。以下(xià)仍以SDN交換爲例公人說明。
由靜學于SDN轉發面的管理主要是對規則進行增加,删除等操作,因此FAST定義樹子了Fast_rule數據結構,如下(xià)所示。因此UA在編程兒化實現SDN的規則管理時,隻需要實現對上述規則的操作即可,而不需要考慮規則廠月的具體(tǐ)存儲地址。我(wǒ)(wǒ)飛雨們會在基于FAST的SDN交換實現相關文檔中(zh還些ōng)詳細介紹Fast_rule數據結構。
 藍兒; 基于Fast_rule數據結構,可以爲也的SDN規則管理定義如下(xià)5個擴展的API。分(fēn)别實現規則表的初土村始化、規則添加、規則删除和規則打印等功能,如下(xià)表所示。
話信
&nbs書民p; 顯然,基于上述擴展API風物,可以方便的實現對SDN轉發規則的管理,簡化了UA設計的花數複雜(zá)度。
二、擴展API的實現
&金女nbsp;下(xià)圖以Fast_add_ru快拍le()爲例,介紹了擴展API的實現流程。其中(zhōng)UA程媽拿序實現了交換機上的openflow通道功能,需要根據SDN控制器發來的算飛Flowmod指令對FAST硬件流水線中(zhōng)的規則進行管理。
制子
 喝火; 以增加規則爲例,UA首先按作見照FlowMod消息中(zhōng)包含的規則和動作信息,坐海構造fast_rule結構體(tǐ),然後調用FAS哥呢T編程庫中(zhōng)所提供的fast_rule_add(河玩)将fast_rule結構體(tǐ)攜帶的流表配置信息經FAST内核和就雜FAST驅動,寫入硬件GME模塊和硬件GAC拿請模塊所關聯的lookup表中(zhōng)。
圖1 擴展API的執行過程
&用訊nbsp;每個FlowMod消息涉及到對FAST硬件流水線中(zh間購ōng)GME和GAC兩個模塊對應的規則表和action表進媽玩行管理,而fast_rule_add()函數向用戶屏蔽了這一(yī)硬術在件實現細節。