0731-84728105
15116127200
FAST軟件編程基礎(3)擴展API
發布時(shí)間:2019-05-11
     UA編程API是FAST平台支持軟硬協同分組處理(lǐ)的基礎。基本編程API爲UA提供了(le)與硬件流水(shuǐ)線交互的基本手段。擴展API是面向FAST流水(shuǐ)線中特定硬件模塊而設計(jì)的API,主要通過對(duì)基本API再次封裝實現(xiàn)。擴展API的使用(yòng)可以大(dà)大(dà)簡化UA編程的複雜(zá)性。本文(wén)以SDN交換規則管理(lǐ)爲例,詳細介紹擴展API的優點,實現(xiàn)方法和(hé)工(gōng)作(zuò)流程。
一、擴展API簡介
      FAST基本API爲FAST流水(shuǐ)線中硬件模塊設計(jì)者提供了(le)與軟件通信的接口。模塊設計(jì)者還應根據模塊提供的功能(néng),基于基本API爲用(yòng)戶提供擴展的API,以簡化UA編程的複雜(zá)性。
   (1)擴展API的優點      擴展API可以簡化用(yòng)戶UA編程的複雜(zá)性。例如,FAST的SDN交換流水(shuǐ)線包含了(le)GPP,GKE,GME,GAC和(hé)GOE等功能(néng)模塊。UA需要配置GME(通用(yòng)匹配引擎)模塊的規則表和(hé)GAC(通用(yòng)動作(zuò)執行)模塊中的動作(zuò)表以實現(xiàn)對(duì)特定報(bào)文(wén)的match-action操作(zuò)。UA直接使用(yòng)fast_ua_hw_rd()和(hé)fast_ua_hw_wr()函數對(duì)GME和(hé)GAC模塊中的表進行配置存在兩個不便。
     一是每次操作(zuò)必須提供操作(zuò)地址等底層信息,而這(zhè)一信息與硬件模塊實現(xiàn)相關。UA使用(yòng)這(zhè)些(xiē)地址對(duì)低(dī)層配置與SDN交換機需要對(duì)轉發層進行抽象的原則相違背;二是由于fast_ua_hw_rd()和(hé)fast_ua_hw_wr()函數每次隻能(néng)訪問32位數據,對(duì)一條SDN規則的FlowMod配置需要拆分成訪問不同模塊的多次操作(zuò),增加了(le)編程的複雜(zá)性。
     爲簡化SDN規則管理(lǐ),可在FAST編程庫中可定義一些(xiē)專用(yòng)的數據結構。例如描述SDN網絡中流的flow結構,對(duì)應FlowMod消息的fast_rule結構等。基于這(zhè)些(xiē)結構,可擴展UA編程API,爲UA編程提供更高(gāo)層次的抽象,簡化編程的複雜(zá)性。
   (2)擴展API實現(xiàn)方法      擴展API的實現(xiàn)主要分爲兩個步驟。一是爲UA編程定義數據結構,屏蔽底層實現(xiàn)細節;二是根據UA編程需求,設計(jì)相應的API函數。以下(xià)仍以SDN交換爲例說明(míng)。
     由于SDN轉發面的管理(lǐ)主要是對(duì)規則進行增加,删除等操作(zuò),因此FAST定義了(le)Fast_rule數據結構,如下(xià)所示。因此UA在編程實現(xiàn)SDN的規則管理(lǐ)時(shí),隻需要實現(xiàn)對(duì)上(shàng)述規則的操作(zuò)即可,而不需要考慮規則的具體存儲地址。我們會(huì)在基于FAST的SDN交換實現(xiàn)相關文(wén)檔中詳細介紹Fast_rule數據結構。
     基于Fast_rule數據結構,可以爲SDN規則管理(lǐ)定義如下(xià)5個擴展的API。分别實現(xiàn)規則表的初始化、規則添加、規則删除和(hé)規則打印等功能(néng),如下(xià)表所示。
     顯然,基于上(shàng)述擴展API,可以方便的實現(xiàn)對(duì)SDN轉發規則的管理(lǐ),簡化了(le)UA設計(jì)的複雜(zá)度。
二、擴展API的實現(xiàn)
     下(xià)圖以Fast_add_rule()爲例,介紹了(le)擴展API的實現(xiàn)流程。其中UA程序實現(xiàn)了(le)交換機上(shàng)的openflow通道(dào)功能(néng),需要根據SDN控制器發來(lái)的Flowmod指令對(duì)FAST硬件流水(shuǐ)線中的規則進行管理(lǐ)。
     以增加規則爲例,UA首先按照FlowMod消息中包含的規則和(hé)動作(zuò)信息,構造fast_rule結構體,然後調用(yòng)FAST編程庫中所提供的fast_rule_add()将fast_rule結構體攜帶的流表配置信息經FAST内核和(hé)FAST驅動,寫入硬件GME模塊和(hé)硬件GAC模塊所關聯的lookup表中。

圖1 擴展API的執行過程
     每個FlowMod消息涉及到(dào)對(duì)FAST硬件流水(shuǐ)線中GME和(hé)GAC兩個模塊對(duì)應的規則表和(hé)action表進行管理(lǐ),而fast_rule_add()函數向用(yòng)戶屏蔽了(le)這(zhè)一硬件實現(xiàn)細節。