本發(fā)明屬于嵌入式系統(tǒng)的技術(shù)領(lǐng)域,特別是涉及一種混合tcam架構(gòu)系統(tǒng)及流表處理方法。
背景技術(shù):
在現(xiàn)有技術(shù)中,軟件定義網(wǎng)路(software-definednetwork,簡稱sdn)是通過解耦控制平面與數(shù)據(jù)平面來簡化網(wǎng)絡(luò)管理的新型的網(wǎng)絡(luò)模式,其中交換機(jī)作為數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備,其網(wǎng)絡(luò)管理通過邏輯為中心的服務(wù)器控制。通過將控制平面轉(zhuǎn)移到邏輯為中心的控制器,sdn在交換機(jī)上的數(shù)據(jù)包的轉(zhuǎn)發(fā)和處理的動態(tài)控制和管理提供了可配置功能。sdn的靈活性使得部署像流量工程、服務(wù)質(zhì)量(qos)、安全/訪問控制管理、故障診斷和故障轉(zhuǎn)移機(jī)制等一系列的網(wǎng)絡(luò)管理策略和新型的網(wǎng)絡(luò)技術(shù)變的更加容易。
在sdn中,網(wǎng)絡(luò)流是由一組存儲在sdn交換機(jī)中的三態(tài)內(nèi)容存儲器(ternarycontentaddressablememory,簡稱tcam)的相關(guān)流表所管理。tcam可以以線性的速度將一個(gè)包與其所安裝的所有流表同時(shí)進(jìn)行比較。然而,現(xiàn)在的商業(yè)交換機(jī)只能支持相對數(shù)量較少的流表,僅僅只有幾千條流表的容量。比如,當(dāng)前盛科的sdn交換機(jī)v330中tcam的容量為2.5k,而當(dāng)前的核心網(wǎng)絡(luò)中的流表達(dá)到了600000條。另一方面,更細(xì)粒度的豐富的sdn策略導(dǎo)致了極大數(shù)量的流表,這些流表和都需要保存和維持在這些sdn交換機(jī)中。盡管由于tcam的快速的匹配性能的優(yōu)勢,其變的不可或缺,但是同時(shí)tcam也是有不可忽視的問題。tcam耗能大、價(jià)格昂貴并且占芯片面積極大。這是由于當(dāng)前的商業(yè)交換機(jī)中的tcam是由傳統(tǒng)的存儲器sram組成的。sram的高耗能以及低密度極大的限制了sdn交換機(jī)中tcam容量的大小。
隨著由網(wǎng)絡(luò)產(chǎn)生的數(shù)據(jù)量的持續(xù)增長,提高tcam容量并且同時(shí)最小化tcam的使用代價(jià)已經(jīng)成為了挑戰(zhàn)。最近,非易失性存儲器(thenonvolatilememory,簡稱nvm)像電阻式ram(resistiveram,簡稱reram),由于它的低漏電和高密度等優(yōu)點(diǎn),已經(jīng)被用來實(shí)現(xiàn)tcam。與傳統(tǒng)的由sram組成的tcam(簡稱stcam)相比,由nvm組成的tcam(簡稱nvtcam)可以實(shí)現(xiàn)更大的存儲容量和更低的能量消耗。然而,nvtcam由于固有的高的寫操作延遲也不是完美的解決方案。而且,安裝在tcam中的流表的更新操作也是一個(gè)緩慢的操作過程。現(xiàn)在的基于傳統(tǒng)sram的交換機(jī)僅能支持每秒大約40~50條流表的更新。對于基于nvm的交換機(jī),流表的更新性能將會更加嚴(yán)重,極大地限制了大型網(wǎng)絡(luò)中的網(wǎng)絡(luò)性能。
最近,最少使用(theleast-recentlyused,簡稱lru)替換算法和lowinter-referencerecencyset替換策略(簡稱lirs)被廣泛用于管理高速緩存。但是,lru替換算法并不能很好的處理具有弱局部性的訪問模式,像網(wǎng)絡(luò)中的動態(tài)流量。因此,在lru的機(jī)制下,動態(tài)的到來的包將會頻繁的請求控制器安裝新的流表,這將會引起非常多的流表未命中事件,由于nvtcam的高的寫延遲,這將是不可接受的。lirs替換策略通過評估inter-referencerecency(irr)來做出替換決策從而有效的解決lru僅僅依靠新近程度來做出替換決策的缺點(diǎn)。然而,lirs替換策略僅適用于沒有依賴的存儲塊,不適用于具有依賴特性的流表。
綜上所述,現(xiàn)有技術(shù)中對于基于sram的三態(tài)內(nèi)容存儲器因sram的高耗能和低密度極大的限制了sdn交換機(jī)中tcam容量的大小問題,和基于nvm的三態(tài)內(nèi)容存儲器存在固有的高的寫操作延遲的問題,以及現(xiàn)有的替換算法存在不能很好的處理具有弱局部性的訪問模式或不適用于具有依賴性的流表的問題,尚缺乏有效的解決方案。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明為了克服現(xiàn)有技術(shù)中為了減輕stcam的有限的容量和nvtcam的高的寫延遲,提出一種提高數(shù)據(jù)包匹配性能的tcam混合架構(gòu)及方法,利用nvtcam的高容量來存儲更多貢獻(xiàn)值大的流表以及一小塊容量的stcam的高效訪問性能來處理新到來的流表以降低更新延遲。
為了實(shí)現(xiàn)上述目的,本發(fā)明采用如下一種技術(shù)方案:
一種混合tcam架構(gòu)系統(tǒng),包括:
nvtcam層,為若干個(gè)基于nvm(nonvolatilememory非易失存儲器)組成的tcam(ternarycontentaddressablememory三態(tài)內(nèi)容尋址存儲器),用于存儲貢獻(xiàn)值高于設(shè)定值的流表;
stcam層,為若干個(gè)基于sram(staticram靜態(tài)隨機(jī)存取存儲器)組成的tcam,用于處理未命中或者命中次數(shù)少于設(shè)定值的流表,降低混合tcam架構(gòu)系統(tǒng)的更新延遲;
主動流表產(chǎn)生器,用于在初始階段從存儲原始流表的存儲器中捕捉:貢獻(xiàn)值高于設(shè)定值的流表到所述nvtcam層;
流表遷移替換調(diào)度器,用于安裝缺失的流表到stcam層,或判斷再次被命中的流表是否需要由stcam層遷移到nvtcam層。
本系統(tǒng)還包括用于存儲原始流表的dram存儲器。
本系統(tǒng)中,所述流表遷移替換調(diào)度器具有流表替換值計(jì)算器,用于計(jì)算每條流表的替換值,根據(jù)該替換值決策流表的遷移。
本發(fā)明還提出了一種基于上述系統(tǒng)的,流表處理方法,具體為:
(1)捕捉貢獻(xiàn)值高于設(shè)定值的流表到所述nvtcam層;
(2)執(zhí)行數(shù)據(jù)包的匹配,匹配的對象是步驟(1)nvtcam層中的流表;
(3)若步驟(2)中數(shù)據(jù)包匹配的流表在步驟(1)nvtcam層中不存在時(shí),認(rèn)定該流表為缺失流表,同時(shí)安裝該缺失流表及其覆蓋集至stcam層,所述流表的覆蓋集包括與流表有依賴關(guān)系的流表;
(4)若所述缺失流表或其覆蓋集再次被數(shù)據(jù)包命中,則將該缺失流表及其覆蓋集安裝至nvtcam層,替換步驟(1)中nvtcam層的占據(jù)相同空間的流表。
其中存儲在nvtcam層和stcam層中的流表包括lir(lowinter-referencerecency)流表集和hir(highinter-referencerecency)流表集;
每條流表具有以下屬性:irr(inter-referencerecency),用來記錄每條流表的歷史信息;recency新近程度,用來記錄任一流表最后一次訪問到當(dāng)前時(shí)間的其他流表的數(shù)量。
進(jìn)一步的,所述步驟(1)包括:
根據(jù)流表的權(quán)重和代價(jià)的比值,定義流表的貢獻(xiàn)值,所述流表的權(quán)重指這條流表能夠命中的數(shù)據(jù)包,代價(jià)指緩存這條流表要安裝的總流表數(shù);
根據(jù)所述流表的貢獻(xiàn)值,使nvtcam層滿容量存儲所述貢獻(xiàn)值高于設(shè)定值的流表。
進(jìn)一步的,所述步驟(3)包括:
在安裝該缺失流表及其覆蓋集至stcam層之前,首先判斷stcam層是否有足夠的存儲空間,若有足夠的存儲空間,則直接安裝;若沒有足夠的存儲空間,則用所述缺失流表及其覆蓋集替換stcam層中已有的流表。
進(jìn)一步的,所述步驟(4)中替換的決策包括:
檢查缺失流表或其覆蓋集的irr是否小于存儲在nvtcam層中流表的新近程度recency,然后計(jì)算nvtcam層中每條流表的替換值;若缺失流表或其覆蓋集的替換值rv小于nvtcam層中流表的rv;如果上述條件均滿足,則缺失流表及其覆蓋集就會被安裝進(jìn)nvtcam層;nvtcam層中為缺失流表或其覆蓋集騰出空間的流表則會降級到stcam層中。
進(jìn)一步的,所述步驟(3)中替換的決策包括:
若缺失流表或其覆蓋集的替換值rv小于stcam層中流表的rv,則缺失流表及其覆蓋集就會被安裝進(jìn)stcam層;stcam層中為缺失流表或其覆蓋集騰出空間的流表則被刪除。
進(jìn)一步的,所述替換值的計(jì)算采用:
rv=(α*γ+(1-α)*s)/pn
其中,rv代表每條流標(biāo)的替換值,γ是流表r的新近程度,;s是當(dāng)一個(gè)流表刪除時(shí)它所能釋放的空間;α是決定強(qiáng)調(diào)因素(r或者s)權(quán)重的調(diào)節(jié)因子,pn是流表的父節(jié)點(diǎn)的數(shù)目。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果:
(1)本發(fā)明提出了一種混合的tcam架構(gòu),利用nvtcam的高密度以及stcam的高效的訪問性能,使得tcam流表的匹配性能更佳,匹配過程更快,減少安裝率。
(2)本發(fā)明對于提出的混合tcam設(shè)計(jì)了新穎的流表遷移替換策略,該遷移策略充分考慮了nvtcam的高寫延遲和傳統(tǒng)tcam的固有的更新問題,避免了混合tcam中流表的匹配性能降低的問題。
(3)本發(fā)明考慮流表的獨(dú)特的依賴特性提出了替換值算法,該替換值算法合理有效,可以進(jìn)行大范圍的移植使用。
附圖說明
構(gòu)成本申請的一部分的說明書附圖用來提供對本申請的進(jìn)一步理解,本申請的示意性實(shí)施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當(dāng)限定。
圖1為本發(fā)明的系統(tǒng)框圖;
圖2為本發(fā)明一實(shí)施例的示意圖。
具體實(shí)施方式:
應(yīng)該指出,以下詳細(xì)說明都是例示性的,旨在對本申請?zhí)峁┻M(jìn)一步的說明。除非另有指明,本文使用的所有技術(shù)和科學(xué)術(shù)語具有與本申請所屬技術(shù)領(lǐng)域的普通技術(shù)人員通常理解的相同含義。
需要注意的是,這里所使用的術(shù)語僅是為了描述具體實(shí)施方式,而非意圖限制根據(jù)本申請的示例性實(shí)施方式。如在這里所使用的,除非上下文另外明確指出,否則單數(shù)形式也意圖包括復(fù)數(shù)形式,此外,還應(yīng)當(dāng)理解的是,當(dāng)在本說明書中使用術(shù)語“包含”和/或“包括”時(shí),其指明存在特征、步驟、操作、器件、組件和/或它們的組合。
在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面結(jié)合附圖與實(shí)施例對本發(fā)明作進(jìn)一步說明。
本申請的一種典型的實(shí)施方式中,采用如下技術(shù)方案:
如圖1所示,一種混合tcam架構(gòu)系統(tǒng),包括:
nvtcam層,為若干個(gè)基于nvm(nonvolatilememory非易失存儲器)組成的tcam(ternarycontentaddressablememory三態(tài)內(nèi)容尋址存儲器),用于存儲貢獻(xiàn)值高于設(shè)定值的流表;
stcam層,為若干個(gè)基于sram(staticram靜態(tài)隨機(jī)存取存儲器)組成的tcam,用于處理未命中或者命中次數(shù)少于設(shè)定值的流表,降低混合tcam架構(gòu)系統(tǒng)的更新延遲;
該架構(gòu)系統(tǒng)使用了2層tcam作為數(shù)據(jù)包轉(zhuǎn)發(fā)表,引入了兩個(gè)新的功能模塊到目前的openflow架構(gòu):(i)主動流表產(chǎn)生器,在初始階段用來選擇能夠捕捉到大量流量的流表到nvtcam中;(ii)流表遷移替換(rulemigration&replacement,簡稱rmr)調(diào)度器,有兩種情形觸發(fā)rmr調(diào)度器,一種情形是當(dāng)一個(gè)包既沒有匹配到nvtcam中的流表,也沒匹配到stcam中的流表時(shí),rmr調(diào)度器首先安裝缺失的流表到stcam。另一種情形就是的stcam中的流表再次被到來的包命中時(shí),rmr調(diào)度器將會采用rmr策略來檢測這個(gè)流表是否需要遷移到nvtcam。
本發(fā)明的再一實(shí)施例是基于上述實(shí)施例的流表處理方法:
(1)捕捉貢獻(xiàn)值高于設(shè)定值的流表到所述nvtcam層;
(2)執(zhí)行數(shù)據(jù)包的匹配,匹配的對象是步驟(1)nvtcam層中的流表;
(3)若步驟(2)中數(shù)據(jù)包匹配的流表在步驟(1)nvtcam層中不存在時(shí),認(rèn)定該流表為缺失流表,同時(shí)安裝該缺失流表及其覆蓋集至stcam層,所述流表的覆蓋集包括與流表有依賴關(guān)系的流表;
(4)若所述缺失流表或其覆蓋集再次被數(shù)據(jù)包命中,則將該缺失流表及其覆蓋集安裝至nvtcam層,替換步驟(1)中nvtcam層的占據(jù)相同空間的流表。
本發(fā)明之所以提出這種架構(gòu)是利用了stcam和nvtcam的特性,如表1所示:
nvtcam的搜索延遲和寫延遲分別是stcam的0.89倍和1.92倍。因此在這個(gè)2層的tcam架構(gòu)中,我們將整個(gè)基于tcam的轉(zhuǎn)發(fā)表根據(jù)他們的特性劃分為2層。第一層是基于reram的tcam,主要用于存儲更多捕捉到大量流量的流表,第二層是一小塊容量的stcam來處理未命中或者命中次數(shù)很少的流表以降低整個(gè)混合tcam的更新延遲。
其中步驟(1)采用主動流表產(chǎn)生器選擇需要的流表,根據(jù)流表的權(quán)重和代價(jià)的比值,定義流表的貢獻(xiàn)值,流表的權(quán)重指這條流表能夠命中的數(shù)據(jù)包,代價(jià)指緩存這條流表要安裝的總流表數(shù);根據(jù)所述流表的貢獻(xiàn)值,使nvtcam層滿容量存儲所述貢獻(xiàn)值高于設(shè)定值的流表。
我們可以看到緩存越多高貢獻(xiàn)值的流表就會極大地降低流表的未命中次數(shù)和提高數(shù)據(jù)包的轉(zhuǎn)發(fā)速率。由于高貢獻(xiàn)值的流表可能依賴更多的其他流表,我們應(yīng)用覆蓋集方式來解決流表的依賴問題。
主動流表產(chǎn)生器使用覆蓋集的方法從dram(所有的流表存儲在這些存儲器中)中選擇高貢獻(xiàn)值的流表然后在nvtcam容量內(nèi)的達(dá)到最大的總的貢獻(xiàn)值??梢钥闯鰊vtcam在同樣的面積下容量更大。
但是一個(gè)小容量的stcam也是必不可少的,只要這個(gè)容量的大小能夠滿足這條流表和與這條流表有依賴的流表能夠進(jìn)行更新操作即可。由于流表更新的代價(jià)不同,一旦流表未命中事件發(fā)生,如果沒有足夠的空間容納這條流表的更新時(shí)間是有可用空間的更新時(shí)間2倍,為了進(jìn)一步降低更新延遲,在初始階段,主動流表產(chǎn)生器不產(chǎn)生流表到stcam中。一旦流表未命中事件發(fā)生,sdn控制器將會為這個(gè)新到來的數(shù)據(jù)包安裝新的流表和它的覆蓋集。然后所有的流表超時(shí)(包括硬超時(shí)和空閑超時(shí))后將會被自動刪除,這樣就避免一些流表占用著stcam的空間而不匹配任何數(shù)據(jù)包。一旦一個(gè)數(shù)據(jù)包到達(dá)交換機(jī)后,首先匹配的是安裝在nvtcam中的流表,如果成功匹配就會按照這條流表所指定的行為進(jìn)行處理。否則,這個(gè)包將會繼續(xù)匹配stcam中的流表。然而,如果這個(gè)包仍然未能命中就會觸發(fā)一個(gè)流表安裝請求發(fā)送至控制器,然后這個(gè)控制器將會安裝這個(gè)未命中的流表和它的覆蓋集到stcam中。
上述步驟(3)中,采用流表遷移替換(rulemigration&replacement)調(diào)度器執(zhí)行。
進(jìn)一步的,我們提出了一種流表遷移替換調(diào)度器的策略,為了描述這個(gè)方法,下面給出一些基本的概念:
存儲在nvtcam和stcam中的流表被稱為lowinter-referencerecency(lir)流表集和highinter-referencerecency(hir)流表集。inter-referencerecency(irr)被用來記錄每條流表的歷史信息。irr是指連續(xù)訪問兩次同一流表之間的其他流表的數(shù)量。recency指的是從這個(gè)流表最后一次訪問到當(dāng)前時(shí)間的其他流表的數(shù)量。假設(shè),一條流表的irr很大,那么這條流表的下一個(gè)irr也會很大,在nvtcam中,優(yōu)先選擇具有大irr的流表替換。通過與lru機(jī)制進(jìn)行比較,通過充分考慮irr歷史信息,極大地降低了僅僅考慮recency所帶來的負(fù)面影響??傊瑀mr策略將irr信息考慮進(jìn)來后,具有l(wèi)ir的流表更應(yīng)該緩存在nvtcam中。
同時(shí)我們需要量化每條流表的替換值(replacementvalue,簡稱rv),每條流表的替換值對于我們這個(gè)架構(gòu)是十分重要的,因?yàn)閚vtcam的高寫延遲和傳統(tǒng)tcam的固有的更新問題將會降低混合tcam中流表的匹配性能。因此,我們根據(jù)流表的依賴特性選擇nvtcam中最好的流表進(jìn)行替換以降低nvtcam中流表的安裝次數(shù)。每條流表的替換值的計(jì)算公式如下:
rv=(αxγ+(1-α)xs)/pn
其中,γ是流表r的新近程度,刪除一個(gè)流表時(shí)這是主要的因素;s是當(dāng)一個(gè)流表刪除時(shí)它所能釋放的空間;α是決定強(qiáng)調(diào)因素(r或者s)權(quán)重的調(diào)節(jié)因子。pn是流表的父節(jié)點(diǎn)的數(shù)目??紤]父節(jié)點(diǎn)主要是因?yàn)閯h除不同的流表將會引發(fā)不同的插入次數(shù)。具有較少父親流表數(shù)量的流表優(yōu)選選擇被替換。
基于上述設(shè)計(jì),步驟(3)具體就包括:
在安裝該缺失流表及其覆蓋集至stcam層之前,首先判斷stcam層是否有足夠的存儲空間,若有足夠的存儲空間,則直接安裝;若沒有足夠的存儲空間,則用所述缺失流表及其覆蓋集替換stcam層中已有的流表;
若缺失流表或其覆蓋集的替換值rv小于stcam層中流表的rv,則缺失流表及其覆蓋集就會被安裝進(jìn)stcam層;stcam層中為缺失流表或其覆蓋集騰出空間的流表則被刪除。
步驟(4)中替換的決策包括:
檢查缺失流表或其覆蓋集的irr是否小于存儲在nvtcam層中流表的新近程度recency,然后計(jì)算nvtcam層中每條流表的替換值;若缺失流表或其覆蓋集的替換值rv小于nvtcam層中流表的rv;如果上述條件均滿足,則缺失流表及其覆蓋集就會被安裝進(jìn)nvtcam層;nvtcam層中為缺失流表或其覆蓋集騰出空間的流表則會降級到stcam層中。
下面給出一個(gè)具體應(yīng)用上述實(shí)施例的應(yīng)用:
如圖2所示:
整個(gè)流程分為三部分:
(1)初始化階段:假設(shè)現(xiàn)在nvtcam與stcam的容量分別是6和2,現(xiàn)在總共有9條流表在dram中,主動流表產(chǎn)生器首先選擇6條貢獻(xiàn)值最大的流表。假設(shè)r1、r2、r3、r4、r6*和r7是選擇的流表,按照圖2中的1所示,主動流表選擇器首先將這些流表安裝在nvtcam中。在這個(gè)階段沒有流表被選擇到stcam。選擇完成之后,進(jìn)入第二步;
(2)數(shù)據(jù)包的匹配:假設(shè)當(dāng)前數(shù)據(jù)包訪問流表的順序是r1、r2、r9、r9。首先訪問r1的數(shù)據(jù)包到來,它首先匹配nvtcam中的流表,成功命中,然后執(zhí)行r1這條流表所對應(yīng)的行為。然后訪問r2的數(shù)據(jù)包到來,再次在nvtcam中命中。但是當(dāng)匹配r9的數(shù)據(jù)包到來后,它首先匹配nvtcam中的流表,未命中,然后再匹配stcam中的流表,仍然未命中。然后一個(gè)安裝請求就會發(fā)送到sdn控制器。rmr調(diào)度器首先安裝r9和它的覆蓋集r8到stcam。然后這個(gè)包被命中。如圖2中的2所示,nvtcam中和stcam中的依賴圖分別是圖2中第二圖中灰色和白色部分。最后一個(gè)包仍然是匹配r9的數(shù)據(jù)包,它首先匹配nvtcam中的流表,未命中,然后匹配stcam中的流表并且被命中。此時(shí)觸發(fā)第三個(gè)過程;
(3)流表的替換和遷移:rmr調(diào)度器然后覺得stcam中的r9是否達(dá)到條件需要遷移進(jìn)nvtcam。如果條件不滿足則r9以及它的覆蓋集仍然在stcam中等待下一次命中。但是如果r9滿足遷移條件,rmr調(diào)度器計(jì)算r9以及它的覆蓋集r8遷移進(jìn)nvtcam需要的空間是2,然后使用替換值算法計(jì)算出最好的替換流表是r4與r3。刪除r4和r3后騰出的空間正好滿足。如圖2中第三個(gè)圖所示,r8與r9從stcam中遷移進(jìn)nvtcam,而所替換掉的流表r3與r4將會降級到stcam。
上述雖然結(jié)合附圖對本發(fā)明的具體實(shí)施方式進(jìn)行了描述,但以上所述僅為本申請的優(yōu)選實(shí)施例而已,并非對本發(fā)明保護(hù)范圍的限制,對于本領(lǐng)域的技術(shù)人員來說,本申請可以有各種更改和變化。所屬領(lǐng)域技術(shù)人員應(yīng)該明白,在本發(fā)明的技術(shù)方案的基礎(chǔ)上,本領(lǐng)域技術(shù)人員不需要付出創(chuàng)造性勞動即可做出的各種修改、等同替換或變形仍在本發(fā)明的保護(hù)范圍以內(nèi)。