一種基于NetFPGA可編程虛擬路由器的數據包加速轉發方法及裝置制造方法
【專利摘要】本發明公開一種基于NetFPGA可編程虛擬路由器的數據包加速轉發方法和裝置。通過在數據轉發平面設計一個局部加速轉發模塊,使之與原有的常規轉發模塊形成一個雙引擎架構,兩條查找線路通過一個優先權選擇模塊進行線路切換,形成一個互補查找結構。加速路由表中的條目具有生存期,利用定時刷新機制可以對表中的數據定時更新。通過設計加速轉發模塊,使可編程虛擬路由器在對數據包的處理過程中能夠縮短數據包的查找過程、減少路由表的查找次數、減輕路由查找負擔,起到加速數據包轉發的目的。
【專利說明】—種基于NetFPGA可編程虛擬路由器的數據包加速轉發方法及裝置
【技術領域】
[0001]本發明涉及可編程路由器技術,具體是數據包加速轉發方法即裝置。
【背景技術】
[0002]可編程虛擬路由器是下一代網絡研究試驗床的核心設備,具有可編程,虛擬化特性。其可編程性可以使研究人員很方便的在可編程虛擬路由器上部署新協議、驗證新算法、擴展新功能等。在對可編程虛擬路由器的研究中,數據包轉發速率的研究是當前研究的一個重點。有專門針對路由查找算法的研究,通過提高查找算法來提升查找速率,加速數據包的處理,如基于Hash的算法、基于Trie的算法、基于比特查找樹的算法等,也有針對路由器硬件查找方法的的研究來提高轉發速率,如TCAM查找方法,CACHE+SRAM查找方法等。
[0003]基于NetFPGA的可編程虛擬路由器采用的是控制和轉發相分離的架構:控制平面采用OpenVZ+Quagga技術。其中OpenVZ是一種虛擬化技術,Quagga是一種協議部署軟件。整個控制平面是基于Iinux系統,具體是Centos系統。轉發平面采用一塊NetFPGA板卡實現數據的轉發,該板卡支持可編程功能。
[0004]目前,與本發明比較接近的一種數據包快速轉發方法是利用緩存機制(CACHE+SRAM)實現,其不足之處在于高速緩存容量有限,且高速緩存中的數據無法急時更新。當高速緩存中的條目達到一定程度后,無法繼續向高速緩存中添加條目。當數據包進入數據轉發層面需要進行全局路由查時,必須先經過高速緩存查找才能再次進入全局路由查找。當流數據過大時,路由查找延遲增大,且對于同一路由條目的多次重復性查找加重了路由器的負擔,使得路由器數據包轉發性能下降。
【發明內容】
[0005]針對數據轉發過程中的查找延遲及同一路由條目的多次重復性查找而加重路由負擔的問題,本發明在原有架構的基礎上,提出一種加速數據包轉發的路由查找架構,解決數據包查找過程中同一路由條目的多次查找,縮短查找流程,提高系統的轉發性能。
[0006]本發明的技術方案如下:
一種基于NetFPGA可編程虛擬路由器的數據包加速轉發裝置,所述裝置在數據轉發層面包括常規轉發模塊和加速轉發模塊,構成一種并行架構,實現雙引擎查找,常規轉發模塊對應于常規查找線路,加速轉發模塊對應于加速查找線路,所述裝置包含:數據包頭部解析模塊、索引查找模塊、優先權判定模塊、IP查找模塊、ARP查找模塊、加速查找模塊、輸出選擇模塊、數據包緩沖隊列模塊和數據包重新封裝模塊;其中索引查找模塊、優先權判定模塊、加速查找模塊和輸出選擇模塊構成加速轉發模塊;索引查找模塊、優先權判定模塊、IP查找模塊、ARP查找模塊和輸出選擇模塊構成常規轉發模塊。
[0007]所述數據包頭部解析模塊,用于提取數據包包頭的相關信息,通過該模塊為數據包的后續查找提供相應信息; 所述索引查找模塊,用于關鍵字的查找,根據頭部解析模塊給出的關鍵字信息進行關鍵字的查找,為查找關鍵字匹配一個地址信息,該地址信息為路由表中路由條目的存儲地址;索引查找模塊由兩個TCAM (—種三態內容尋址存儲器,采用硬件并行查找結構,查找速度快)構成,其中一個用于加速路由表索引查找(命名為TCAM_A),另一個用于常規路由表索引查找(命名為TCAM_B),兩個TCAM并行運行。TCAM中存放的著查找路由條目所需的關鍵字信息和對應路由條目的地址信息,格式如圖3所示。
[0008]所述優先權判定模塊,用于選擇優先權最高的的查找線路進行路由查找,當前一模塊有數據輸出時,該模塊通過判決規則,選擇一條優先權最高的線路作為輸出,并啟動對應的查找線路。對于TCAM_A啟動加速查找線路(如圖2中下支路),對于TCAM_B啟動常規查找線路(如圖2中上支路),默認TCAM_A返回值優先權高于TCAM_B返回值優先權。
[0009]所述加速查找模塊,存儲數據轉發所需的路由信息;該模塊根據接收到的地址信息返回加速路由表中對應地址的路由信息,并對路由條目生存期進行修改。即該模塊根據優先權判定模塊提供的地址信息,通過內部加速路由表,返回相應地址的路由條目。加速路由表的存儲格式如圖4中所示,包括下一跳MAC值,輸出端口號,生存期。該模塊采用定時刷新機制,根據查找頻率和刷新頻率,對加速路由表中條目的生存期進行修改。該模塊還能通過反饋線路添加新的條目信息,且支持用戶操作。
[0010]所述輸出選擇模塊,該模塊配合優先權判定模塊,用于選擇合適的查找線路上的輸出數據作為查找結果的輸出,并與加速查找模塊逆向通信。如果選擇的是常規查找線路作為輸出,除了將數據輸出到數據包重新封裝模塊,還要將查找結果通過反饋線路(如圖2中虛線箭頭所示)發送到加速表查找模塊及TCAM_A模塊。
[0011]所述數據包緩沖隊列模塊,該模塊配合查找線路對數據包進行緩沖,為后面的數據包重新封裝提供相應的數據。該模塊接收到輸出選擇模塊的數據后,調取緩沖隊列中的數據包,對數據包進行重新封裝,包括修改下一跳MAC,輸出端口,生存期TTL等,封裝完成后將新的數據包輸出。
[0012]本發明通過在數據轉發層面設計一個加速轉發模塊,使數據包在路由轉發時,減少對常規路由表中同一路由條目的多次查找,縮短數據包的查找過程,從而減少數據包在路由器中的逗留時間,減輕路由查找負擔,起到加速數據包轉發的目的。
[0013]本發明采用雙引擎構架,加速查找線路和常規查找線路并行運行,互不影響,僅通過一個優先權判定模塊進行線路的快速切換。其次,加速路由表還采用了定時刷新機制對表中的條目定時更新,從而解決了加速路由表的容量不足問題。
【專利附圖】
【附圖說明】
[0014]圖1為可編程虛擬路由器架構圖;
圖2為數據包處理模塊內部框圖;
圖3 TCAM_A內部存儲結構圖;
圖4加速路由表結構圖;
圖5為數據包加速處理流程圖。
【具體實施方式】[0015]如圖1所示為可編程虛擬路由器基本架構圖,本發明在數據平面添加了一個加速轉發模塊,如圖2中虛框包含部分,包括以下幾個部分:索引查找模塊,優先權判定模塊,力口速表查找模塊,輸出選擇模塊。該模塊與常規轉發模塊并行運行,構成雙引擎查找架構。
[0016]圖2為數據包處理的內部框圖。整個數據包轉發包括數據包頭部解析模塊、索引查找模塊、優先權判定模塊、IP查找模塊、ARP查找模塊、加速查找模塊、輸出選擇模塊、數據包緩沖隊列模塊和數據包重新封裝模塊。
[0017]A、數據包頭部解析模塊,該模塊用于提取數據包包頭的相關信息,包括提取目的MAC、源MAC、目的IP地址、源IP地址、端口號、生存期TTL、校驗和等。通過該模塊為數據包的后續查找提供相應信息。
[0018]B、索引查找模塊,該模塊用于關鍵字查找,包含兩個TCAM。TCAM中的內容如圖3所示,前一項存儲的是關鍵字信息,后一項是一個地址信息,該地址指向加速路由表中的路由條目,TCAM采用并行查找,一次性能夠對所有關鍵字信息進行匹配。TCAM_A在進行查找匹配時,當發現存在與查找關鍵字匹配的信息時返回該關鍵字信息對應的地址信息;當沒有與查找關鍵字匹配的信息時,則停止查找。TCAM_B在進行查找匹配時,當有關鍵字信息與查找關鍵字匹配時,返回對應的地址信息;當沒有關鍵字信息匹配時,且沒有默認信息匹配時則停止查找,并丟棄該數據包。
[0019]C、優先權判定模塊,該模塊通過判定規則,當兩個TCAM均有返回值時,選擇一條優先權最高的返回值作為該模塊輸出,并啟動對應的查找線路。對于TCAM_A啟動加速查找線路(如圖2中下支路),對于TCAM_B啟動常規查找線路(如圖2中上支路)。默認TCAM_A返回值優先權高于TCAM_B返回值優先權。
[0020]D、加速查找模塊,該模塊根據接收到的地址信息返回加速路由表中對應地址的路由信息(如下一跳MAC,輸出端口號),并對路由條目生存期進行修改。加速路由表中的內容信息如圖4所示,存儲有下一跳MAC,輸出端口號,生存期。該模塊通過定時刷新機制對表中的內容進行更新,主要是對生存期的修改(根據加速路由表刷新頻率對條目生存期做遞減操作,但是當加速路由表中的某一條目被查找一次時,則對該條目生存期加1,生存期最大為7最小為0),對于生存期為O的條目進行刪除,并隨時準備添加新條目信息。
[0021]E、輸出選擇模塊,該模塊配合優先權判定模塊選擇合適線路上的數據進行輸出。當進行常規查時,將查找結果(如下一跳MAC及輸出端口號。對于IPv4數據包的處理中,數據包進入查找模塊時需要進行兩次查找,一次進行IP查找得到下一跳IP地址及輸出端口號,一次進行ARP查找得到下一跳MAC)通過反饋線路(如圖2中虛箭頭所示)發送到加速查找模塊及TCAM_A中,并在加速路由表中給該條目產生一個生存期(默認為3)。
[0022]F、數據包緩沖隊列模塊,該模塊配合查找線路對數據包進行緩沖,為后面的數據包重新封裝提供相應的數據。
[0023]G、數據包重新封裝模塊,該模塊接收到選擇輸出模塊的數據后,調取緩沖隊列中的數據包,對數據包進行重新封裝,包括修改下一跳MAC,輸出端口,生存期TTL等。封裝完成后將新的數據包輸出。
[0024]數據包加速轉發流程如圖5所示,具體轉發步驟如下:
步驟一:在路由器中,當數據包依次進入路由查找模塊時,數據包首先進入數據包頭部解析模塊,該模塊能夠獲得路由查找所需的關鍵字(對于IPv4協議,即為32位目的IP地址)。
[0025]步驟二:根據步驟一,將提取到的查找關鍵字與兩個TCAM模塊中的的關鍵字信息進行對比。在TCAM_A中當發現存在與查找的關鍵字匹配的信息時返回該關鍵字信息對應的地址信息Address。當TCAM_A中沒有與查找關鍵字匹配的條目時,則停止查找。在TCAM_B中,當存在與查找關鍵字匹配的信息時,返回對應的地址信息Address。當TCAM_B中沒有與查找關鍵字匹配對象時,且沒有默認匹配的信息時則停止查找,并丟棄該數據包。
[0026]步驟三:根據步驟二,當兩個TCAM中都返回值Address信息時,則進入優先權判定模塊,通過判定規則(默認TCAM_A返回值優先權最高。當TCAM_A沒有返回值,且TCAM_B有返回值時,以TCAM_B的返回值作為輸出)選擇合適的TCAM返回值Address信息為優先權判定模塊的輸出值,并啟動相應的查找線路(即選擇TCAM_A返回值為優先權判定模塊的輸出時,啟動加速查找線路(圖2中的下支路)。選擇TCAM_B返回值作為優先權判定模塊的輸出時,啟動常規查找線路(圖2中的上支路)。
[0027]步驟四:根據步驟三,當啟動加速查找線路時,加速查找模塊根據得到的Address信息直接輸出加速路由表中對應地址的路由信息,包括下一跳MAC地址和輸出端口號,并且將表中該條目的生存期加I (最高為7)。當啟動常規查找線路時,IP查找模塊根據線路上的Address信息返回IP路由表中該地址對應的信息(其中包括下一跳IP地址信息和輸出端口號),并將下一跳IP地址信息發送到ARP查找模塊,ARP查找模塊根據接收到的下一跳IP地址信息與ARP表中的條目進行查找匹配,返回下一跳MAC地址信息。如果ARP表中沒有對應下一跳MAC信息時,則通過輸出端口向本地連接的網段廣播一個ARP請求,請求下一跳設備MAC地址信息。正常情況下,下一跳設備會發送一個帶有其MAC地址信息的ARP應答。
[0028]步驟五:根據步驟四,輸出選擇模塊根據優先權判定模塊選擇合適的線路上的數據作為查找結果輸出。當選擇常規查找線路作為輸出時,除了直接輸出查找結果外還要將查找結果通過反饋線路(如圖2中虛箭頭所示)發送到加速查找模塊,加速查找模塊將反饋信息以符合加速路由表存儲格式的形式存入表中,并將更新信息反饋給TCAM_A。
[0029]步驟六:根據步驟五,數據包重新封裝模根據上一模塊的輸出,從數據緩沖隊列中讀取數據包,并對數據包頭部對應字段進行相應修改,完成封裝之后將新數據包轉發出去。
[0030]從以上實施例可以看出,本發明通過在數據轉發平面設計一個局部加速轉發模塊,使之與原有的常規轉發模塊形成一個雙引擎架構,兩條查找線路通過一個優先權選擇模塊進行線路切換,形成一個互補查找結構。加速路由表中的條目具有生存期,利用定時刷新機制可以對表中的數據定時更新。通過設計加速轉發模塊,使可編程虛擬路由器在對數據包的處理過程中能夠縮短數據包的查找過程、減少路由表的查找次數、減輕路由查找負擔,起到加速數據包轉發的目的。
【權利要求】
1.一種基于NetFPGA可編程虛擬路由器的數據包加速轉發裝置,其特征在于:所述裝置在數據轉發層面包括常規轉發模塊和加速轉發模塊,構成一種并行架構,實現雙引擎查找,常規轉發模塊對應于常規查找線路,加速轉發模塊對應于加速查找線路,所述裝置包含: 數據包頭部解析模塊、索引查找模塊、優先權判定模塊、IP查找模塊、ARP查找模塊、加速查找模塊、輸出選擇模塊、數據包緩沖隊列模塊和數據包重新封裝模塊;其中加速查找模塊和輸出選擇模塊構成加速查找路線;IP查找模塊、ARP查找模塊和輸出選擇模塊構成常規查找路線; 所述數據包頭部解析模塊,用于提取數據包包頭的相關信息,通過該模塊為數據包的后續查找提供相應信息; 所述索引查找模塊,用于關鍵字的查找,為查找關鍵字匹配一個地址信息,該地址信息為路由表中路由條目的存儲地址;索引查找模塊由兩個TCAM構成,TCAM_A用于加速路由表索引查找,TCAM_B用于常規路由表索引查找,兩個TCAM并行運行; 所述優先權判定模塊,用于選擇優先權最高的查找線路進行路由查找,對于TCAM_A啟動加速查找線路,對于TCAM_B啟動常規查找線路,默認TCAM_A返回值優先權高于TCAM_B返回值優先權; 所述加速查找模塊,存儲數據轉發所需的路由信息;該模塊根據接收到的地址信息返回加速路由表中對應地址的路由信息,并對路由條目生存期進行修改; 所述輸出選擇模塊,用于選擇合適的查找線路上的輸出數據為查找結果的輸出,并與加速查找模塊逆向通信; 所述數據包緩沖隊列模塊,該模塊配合查找線路對數據包進行緩沖,為后面的數據包重新封裝提供相應的數據;· 所述數據包重新封裝模塊,該模塊接收到輸出選擇模塊的數據后,調取緩沖隊列中的數據包,對數據包進行重新封裝,包括修改下一跳MAC,輸出端口,生存期TTL等,封裝完成后將新的數據包輸出。
2.根據權利要求1所述基于NetFPGA可編程虛擬路由器的數據包加速裝置,其特征在于:所述數據包頭部解析模塊提取數據包包頭的相關信息包括提取目的MAC、源MAC、目的IP地址、源IP地址、端口號、生存期TTL、校驗和等。
3.根據權利要求1所述基于NetFPGA可編程虛擬路由器的數據包加速裝置,其特征在于:所述索引查找模塊的TCAM_A在進行查找匹配時,當發現存在與查找關鍵字匹配的信息時返回該關鍵字信息對應的地址信息;當沒有與查找關鍵字匹配的信息時,則停止查找;TCAM_B在進行查找匹配時,當有關鍵字信息與查找關鍵字匹配時,返回對應的地址信息;當沒有關鍵字信息匹配時,且沒有默認信息匹配時則停止查找,并丟棄該數據包。
4.根據權利要求1所述基于NetFPGA可編程虛擬路由器的數據包加速裝置,其特征在于:所述加速查找模塊包含一個加速路由表,其中含有下一跳MAC地址、輸出端口號、生存期,加速路由表采用刷新機制,定時更新表中內容,且加速查找模塊支持用戶操作。
5.根據權利要求4所述基于NetFPGA可編程虛擬路由器的數據包加速裝置,其特征在于:所述加速路由表定時更新表中內容主要是對生存期的修改,即根據加速路由表刷新頻率對條目生存期做遞減操作,但是當加速路由表中的某一條目被查找一次時,則對該條目生存期加1,生存期最大為7最小為O,對于生存期為O的條目進行刪除,并隨時準備添加新條目信息。
6.根據權利要求4所述基于NetFPGA可編程虛擬路由器的數據包加速裝置,其特征在于:所述輸出選擇模塊在進行常規查時,將查找結果通過反饋線路發送到加速查找模塊及TCAM_A中,并在加速路由表中給該條目產生一個生存期,該生存期默認為3。
7.一種基于NetFPGA可編程虛擬路由器的數據包加速方法,其特征在于:數據轉發層面在接收到數據包后,首先進行數據包頭部解析獲取查找關鍵字,索引查找模塊根據接收到的數據進行關鍵字匹配,當兩個TCAM均有返回值時利用優先權判定模塊選擇優先權最高的TCAM返回值為輸出,當選擇加速路由表索引查找(TCAM_A)返回值為輸出時,則進入加速查找線路進行查找,當選擇常規路由表索引查找(TCAM_B)返回值為輸出時,則進入常規查找線路進行查找,并將常規查找的結果通過反饋線路存儲到加速路由表和加速路由表索引查找(即TCAM_A)中,最后由輸出選擇模塊選擇執行查找的線路上的數據作為查找結果,數據包重新封裝模塊根據查找結果,調取數據緩沖隊列中的數據進行相應字段修改,重新封裝后將新數據包轉發出去·。
【文檔編號】H04L12/741GK103856407SQ201410113046
【公開日】2014年6月11日 申請日期:2014年3月25日 優先權日:2014年3月25日
【發明者】張毅, 侯海兵, 趙國鋒, 胡書敏, 胡健 申請人:重慶郵電大學