流表的多級化方法、多級流表處理方法及裝置制造方法
【專利摘要】本發(fā)明公開一種流表的多級化方法、多級流表處理方法及裝置;多級化方法包括:第一流表和第二流表;第一流表保存有至少一種邏輯規(guī)則以及該至少一種邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作,第二流表保存有一種邏輯規(guī)則以及該一種邏輯規(guī)則的所有轉(zhuǎn)發(fā)動作,第一流表以及第二流表正交組成TCAM流表;該方法包括:生成第三流表;將第一流表中的目標(biāo)邏輯規(guī)則和該目標(biāo)邏輯規(guī)則對應(yīng)的轉(zhuǎn)發(fā)動作分離至第三流表,使第一流表、第二流表、第三流表正交后組成TCAM流表,之后繼續(xù)生成新的流表,直至流表數(shù)量達(dá)到預(yù)設(shè)上限。本方案將TCAM流表中的多種邏輯規(guī)則進(jìn)行正交分解,使新生成的每個流表保存一種分離的邏輯規(guī)則,從而有效地節(jié)省TCAM的存儲空間。
【專利說明】流表的多級化方法、多級流表處理方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)領(lǐng)域,提供一種流表的多級化方法、多級流表處理方法及裝置。
【背景技術(shù)】
[0002]目前互聯(lián)網(wǎng)發(fā)展迅速,其應(yīng)用規(guī)模的龐大及其地位的重要性,遠(yuǎn)遠(yuǎn)超出了設(shè)計者們的想象,而現(xiàn)在的互聯(lián)網(wǎng)主要有以下弊端:特定的范圍內(nèi)沒有統(tǒng)一的管理、網(wǎng)絡(luò)轉(zhuǎn)發(fā)機(jī)制與策略單一、運(yùn)營商難以最大限度優(yōu)化自身網(wǎng)絡(luò)、以及傳統(tǒng)交換機(jī)用于轉(zhuǎn)發(fā)的功能和協(xié)議多且雜,很難配置,系統(tǒng)容易出錯等問題。為應(yīng)對上述弊端,人們提出了 Openflow交換機(jī),其將傳統(tǒng)交換機(jī)上的報文轉(zhuǎn)發(fā)和轉(zhuǎn)發(fā)策略分離開來,采用專門的一臺轉(zhuǎn)發(fā)器通過網(wǎng)線和交換機(jī)連接。這樣原來同在一臺交換機(jī)設(shè)備上的報文轉(zhuǎn)發(fā)功能(硬件芯片實現(xiàn))和報文轉(zhuǎn)發(fā)策略(各種軟件協(xié)議)就被分開到了不同的硬件設(shè)備上。而一臺轉(zhuǎn)發(fā)器還可以控制多臺Openflow交換機(jī),從而實現(xiàn)了統(tǒng)一的轉(zhuǎn)發(fā)控制端,更有效地控制了網(wǎng)絡(luò)。
[0003]通常的Openflow交換機(jī)上的流表是通過把流表配置到TCAM (三態(tài)內(nèi)容尋址存儲器)硬件上來實現(xiàn)的。其中,TCAM主要用于快速查找ACL、路由等表項。
[0004]現(xiàn)有技術(shù)中,Openflow交換機(jī)只有一個TCAM流表,假設(shè)Openflow交換機(jī)需要根據(jù)數(shù)據(jù)包的目的IP字段定義M種IP轉(zhuǎn)發(fā)規(guī)則,同時要根據(jù)數(shù)據(jù)包的TCP字段進(jìn)行N種端口過濾規(guī)則,那么該TCAM流表就需要有MXN條表項,因此過多占用了 TCAM的存儲空間。
【發(fā)明內(nèi)容】
[0005]本發(fā)明要解決的技術(shù)問題是提供一種實現(xiàn)流表多級化的方案以及針對多級流表的處理方案,能夠有效地節(jié)省TCAM的存儲空間,進(jìn)而節(jié)約Openflow交換機(jī)的制造成本。
[0006]為解決上述技術(shù)問題,本發(fā)明的實施例提供一種流表的多級化方法,包括:第一流表以及第二流表;所述第一流表保存有至少一種邏輯規(guī)則以及與該至少一種邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作,所述第二流表保存有一種邏輯規(guī)則以及該一種邏輯規(guī)則的所有轉(zhuǎn)發(fā)動作,所述第一流表以及第二流表正交組成TCAM流表;其中,所述方法包括:
[0007]生成第三流表;
[0008]將所述第一流表中的目標(biāo)邏輯規(guī)則以及該目標(biāo)邏輯規(guī)則對應(yīng)的轉(zhuǎn)發(fā)動作分離至所述第三流表,使得所述第一流表、第二流表以及第三流表正交后組成所述TCAM流表,之后繼續(xù)生成新的流表,直至流表數(shù)量達(dá)到預(yù)設(shè)上限。
[0009]其中,所述第一流表以及第二流表中的邏輯規(guī)則具體包括有一個或多個匹配域,每個匹配域?qū)?yīng)有一個或多個轉(zhuǎn)發(fā)動作;
[0010]將所述第一流表中的目標(biāo)邏輯規(guī)則以及該目標(biāo)邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作分離至所述第三流表的步驟包括:
[0011]計算第一流表中所有邏輯規(guī)則的映射收益,將映射收益最大的邏輯規(guī)則確定為目標(biāo)邏輯規(guī)則;
[0012]將所述第一流表中的目標(biāo)邏輯規(guī)則以及該目標(biāo)邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作分離至所述第三流表;其中,目標(biāo)邏輯規(guī)則的同一個匹配域不重復(fù)保存在所述第三流表中。
[0013]其中,所述第一流表配有第一跳轉(zhuǎn)流條目,用于存儲第一流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址,所述第二流表配有第二跳轉(zhuǎn)流目條,用于存儲第二流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址;其中,所述第一跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為第二流表或轉(zhuǎn)發(fā)器,所述第二跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為轉(zhuǎn)發(fā)器;
[0014]在將所述第一流表中的目標(biāo)邏輯規(guī)則以及該目標(biāo)邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作分離至所述第三流表后,所述方法還包括:
[0015]為所述第三流表配置第三跳轉(zhuǎn)流條目;
[0016]為所述第三流表中每個轉(zhuǎn)發(fā)動作配置跳轉(zhuǎn)地址;
[0017]將所述第三流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址保存至所述第三跳轉(zhuǎn)流條目;
[0018]更新所述第一跳轉(zhuǎn)流條目以及第二跳轉(zhuǎn)流條目中的跳轉(zhuǎn)地址。
[0019]其中,
[0020]為所述第三流表中每個轉(zhuǎn)發(fā)動作配置跳轉(zhuǎn)地址的步驟包括:
[0021]將所述第三流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址配置為轉(zhuǎn)發(fā)器;
[0022]更新所述第一跳轉(zhuǎn)流條目以及第二跳轉(zhuǎn)流條目中的跳轉(zhuǎn)地址的步驟包括:
[0023]更新所述第一跳轉(zhuǎn)流條目以及第二跳轉(zhuǎn)流條目中的跳轉(zhuǎn)地址,使所述第一跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為第二流表或第三流表或轉(zhuǎn)發(fā)器,并使所述第二跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為第三流表或轉(zhuǎn)發(fā)器。
[0024]本發(fā)明的實施例還提供一種多級流表的處理方法,所述多級流表按有效位進(jìn)行排序且能夠正交組成一個三態(tài)內(nèi)容尋址存儲器TCAM流表;其中,位于第一級的第一流表保存有至少一種邏輯規(guī)則以及與該至少一種邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作,其余每個流表均只保存有一種邏輯規(guī)則以及該一種邏輯規(guī)則的所有轉(zhuǎn)發(fā)動作;所述方法包括:
[0025]確定目標(biāo)報文的邏輯規(guī)則;
[0026]按所述有效位的順序分別將每個流表所保存邏輯規(guī)則與目標(biāo)報文的邏輯規(guī)則進(jìn)行匹配,得到每個流表與該匹配相符的轉(zhuǎn)發(fā)動作集合;
[0027]對所有流表的轉(zhuǎn)發(fā)動作集合取交集,得到每個轉(zhuǎn)發(fā)動作集合共同的轉(zhuǎn)發(fā)動作;
[0028]根據(jù)每個轉(zhuǎn)發(fā)動作集合共同的轉(zhuǎn)發(fā)動作轉(zhuǎn)發(fā)所述目標(biāo)報文。
[0029]其中,每個流表所保存的邏輯規(guī)則具體包括有一個或多個匹配域,每個匹配域?qū)?yīng)有一個或多個轉(zhuǎn)發(fā)動作;所述多級流表中的每個流表還分別設(shè)有一個跳轉(zhuǎn)流條目,用于存儲其所對應(yīng)的流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址,從而能夠在得到第一流表的轉(zhuǎn)發(fā)動作集合后,根據(jù)該轉(zhuǎn)發(fā)動作集合中每個轉(zhuǎn)發(fā)動作所對應(yīng)的跳轉(zhuǎn)地址向下級流表進(jìn)行跳轉(zhuǎn)。
[0030]其中,所述方法還包括:
[0031]當(dāng)需要對所述多級流表的排序進(jìn)行變化時,將需要改變的流表以及該流表對應(yīng)的所有轉(zhuǎn)發(fā)動作進(jìn)行調(diào)換,并更新所有流表的跳轉(zhuǎn)流條目。
[0032]其中,所述方法包括:
[0033]當(dāng)需要替換掉所述多級流表中的目標(biāo)流表時,生成一替換流表,在所述替換流表中保存需要替換的邏輯規(guī)則,并將所述目標(biāo)流表替換成所述替換流表,之后配置該替換流表中邏輯規(guī)則的轉(zhuǎn)發(fā)動作,并更新所有流表的跳轉(zhuǎn)流條目。
[0034]本發(fā)明的實施例還提供一種流表的多級化裝置包括:第一流表以及第二流表;所述第一流表保存有至少一種邏輯規(guī)則以及與該至少一種邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作,所述第二流表保存有一種邏輯規(guī)則以及該一種邏輯規(guī)則的所有轉(zhuǎn)發(fā)動作,所述第一流表以及第二流表正交組成TCAM流表;其中,所述裝置包括:
[0035]生成模塊,用于生成第三流表;
[0036]分離模塊,用于將所述第一流表中的目標(biāo)邏輯規(guī)則以及該目標(biāo)邏輯規(guī)則對應(yīng)的轉(zhuǎn)發(fā)動作分離至所述第三流表,使得所述第一流表、第二流表以及第三流表正交后組成所述TCAM流表,之后繼續(xù)生成新的流表,直至流表數(shù)量達(dá)到預(yù)設(shè)上限。
[0037]其中,所述第一流表以及第二流表中的邏輯規(guī)則具體包括有一個或多個匹配域,每個匹配域?qū)?yīng)有一個或多個轉(zhuǎn)發(fā)動作;
[0038]所述分離模塊包括:
[0039]計算子模塊,用于計算第一流表中所有邏輯規(guī)則的映射收益,將映射收益最大的邏輯規(guī)則確定為目標(biāo)邏輯規(guī)則;
[0040]分離子模塊,用于將所述第一流表中的目標(biāo)邏輯規(guī)則以及該目標(biāo)邏輯規(guī)則對應(yīng)的轉(zhuǎn)發(fā)動作分離至所述第三流表;其中,目標(biāo)邏輯規(guī)則的同一個匹配域不重復(fù)保存在所述第二流表中。
[0041]其中,所述第一流表配有第一跳轉(zhuǎn)流條目,用于存儲第一流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址,所述第二流表配有第二跳轉(zhuǎn)流目條,用于存儲第二流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址;其中,所述第一跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為第二流表或轉(zhuǎn)發(fā)器,所述第二跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為轉(zhuǎn)發(fā)器;
[0042]所述裝置還包括:
[0043]第一配置模塊,用于在所述分離模塊將所述第一流表中的目標(biāo)邏輯規(guī)則以及該目標(biāo)邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作分離至所述第三流表后,為所述第三流表配置第三跳轉(zhuǎn)流條目;
[0044]第二配置模塊,用于為所述第三流表中每個轉(zhuǎn)發(fā)動作配置跳轉(zhuǎn)地址;
[0045]保存模塊,用于將所述第三流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址保存至所述第三跳轉(zhuǎn)流條目;
[0046]更新模塊,用于更新所述第一跳轉(zhuǎn)流條目以及第二跳轉(zhuǎn)流條目中的跳轉(zhuǎn)地址。
[0047]其中,其特征在于,
[0048]所述第二配置模塊具體用于:將所述第三流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址配置為轉(zhuǎn)發(fā)器;
[0049]所述更新模塊具體用于:更新所述第一跳轉(zhuǎn)流條目以及第二跳轉(zhuǎn)流條目中的跳轉(zhuǎn)地址,使所述第一跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為第二流表或第三流表或轉(zhuǎn)發(fā)器,并使所述第二跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為第三流表或轉(zhuǎn)發(fā)器。
[0050]本發(fā)明的實施例還提供一種多級流表的處理裝置,其特征在于,所述多級流表按有效位進(jìn)行排序且能夠正交組成一個三態(tài)內(nèi)容尋址存儲器TCAM流表;其中,位于第一級的第一流表保存有至少一種邏輯規(guī)則以及與該至少一種邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作,其余每個流表均只保存有一種邏輯規(guī)則以及該一種邏輯規(guī)則的所有轉(zhuǎn)發(fā)動作;所述裝置包括:
[0051]確定模塊,用于確定目標(biāo)報文的邏輯規(guī)則;
[0052]匹配模塊,用于按所述有效位的順序分別將每個流表所保存邏輯規(guī)則與目標(biāo)報文的邏輯規(guī)則進(jìn)行匹配,得到每個流表與該匹配相符的轉(zhuǎn)發(fā)動作集合;
[0053]處理模塊,用于對所有流表的轉(zhuǎn)發(fā)動作集合取交集,得到每個轉(zhuǎn)發(fā)動作集合共同的轉(zhuǎn)發(fā)動作;
[0054]轉(zhuǎn)發(fā)模塊,用于根據(jù)每個轉(zhuǎn)發(fā)動作集合共同的轉(zhuǎn)發(fā)動作轉(zhuǎn)發(fā)所述目標(biāo)報文。
[0055]其中,每個流表所保存的邏輯規(guī)則具體包括有一個或多個匹配域,每個匹配域?qū)?yīng)一個或多個轉(zhuǎn)發(fā)動作;所述多級流表中的每個流表還分別設(shè)有一個跳轉(zhuǎn)流條目,用于存儲其所對應(yīng)的流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址,從而能夠使匹配模塊在得到第一流表的轉(zhuǎn)發(fā)動作集合后,根據(jù)該轉(zhuǎn)發(fā)動作集合中每個轉(zhuǎn)發(fā)動作所對應(yīng)的跳轉(zhuǎn)地址向下級流表進(jìn)行跳轉(zhuǎn)。
[0056]其中,所述裝置還包括:
[0057]流表調(diào)換模塊,用于當(dāng)需要對所述多級流表的排序進(jìn)行變化時,將需要改變的流表以及該流表對應(yīng)的所有轉(zhuǎn)發(fā)動作進(jìn)行調(diào)換,并更新所有流表的跳轉(zhuǎn)流條目。
[0058]其中,所述裝置包括:
[0059]流表替換模塊,用于當(dāng)需要替換掉所述多級流表中的目標(biāo)流表時,生成一替換流表,在所述替換流表中保存需要替換的邏輯規(guī)則,并將所述目標(biāo)流表替換成所述替換流表,之后配置該替換流表中邏輯規(guī)則的轉(zhuǎn)發(fā)動作,并更新所有流表的跳轉(zhuǎn)流條目。
[0060]本發(fā)明的方案所能帶來的有益效果:
[0061 ] 本發(fā)明的方案將Openflow交換機(jī)維護(hù)的TCAM流表中的多種邏輯規(guī)則逐一分離出來,使得新生成的每個流表保存一種分離的邏輯規(guī)則,從而對TCAM流表中的邏輯規(guī)則進(jìn)行正交分解,因此能夠有效地節(jié)省TCAM的存儲空間,進(jìn)而節(jié)約Openflow交換機(jī)的制造成本。
【專利附圖】
【附圖說明】
[0062]圖1為本發(fā)明中流表的多級化方法的步驟示意圖;
[0063]圖2為本發(fā)明中現(xiàn)有TCAM流表的具體不意圖;
[0064]圖3-圖5為本發(fā)明中流表的多級化方法的具體實施示意圖;
[0065]圖6為本發(fā)明中多級流表的處理方法的步驟示意圖;
[0066]圖7為本發(fā)明中流表的多級化裝置的結(jié)構(gòu)示意圖;
[0067]圖8為本發(fā)明中多級流表的處理裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0068]為使本發(fā)明要解決的技術(shù)問題、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖及具體實施例進(jìn)行詳細(xì)描述。
[0069]一種流表的多級化方法,包括:第一流表以及第二流表;所述第一流表保存有至少一種邏輯規(guī)則以及與該至少一種邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作,所述第二流表保存有一種邏輯規(guī)則以及該一種邏輯規(guī)則的所有轉(zhuǎn)發(fā)動作,所述第一流表以及第二流表正交組成TCAM流表;其中,所述方法包括:
[0070]步驟I,生成第三流表;
[0071]步驟2,將所述第一流表中的目標(biāo)邏輯規(guī)則以及該目標(biāo)邏輯規(guī)則對應(yīng)的轉(zhuǎn)發(fā)動作分離至所述第三流表,使得所述第一流表、第二流表以及第三流表正交后組成所述TCAM流表,之后繼續(xù)生成新的流表,直至流表數(shù)量達(dá)到預(yù)設(shè)上限。
[0072]本方法將Openflow交換機(jī)維護(hù)的TCAM流表中的多種邏輯規(guī)則逐一分離出來,使得新生成的每個流表保存一種分離的邏輯規(guī)則,從而對TCAM流表中的邏輯規(guī)則進(jìn)行正交分解,因此能夠有效地節(jié)省TCAM的存儲空間,進(jìn)而節(jié)約Openflow交換機(jī)的制造成本。
[0073]此外,在上述實施例的基礎(chǔ)之上,本發(fā)明還提供了一種具體實現(xiàn)TCAM流劃分成多流表的方法,其中,所述第一流表以及第二流表中的邏輯規(guī)則具體包括有一個或多個匹配域,每個匹配域?qū)?yīng)一個或多個轉(zhuǎn)發(fā)動作;步驟2包括:
[0074]步驟21,計算第一流表中所有邏輯規(guī)則的映射收益,將映射收益最大的邏輯規(guī)則確定為目標(biāo)邏輯規(guī)則;
[0075]步驟22,將所述第一流表中的目標(biāo)邏輯規(guī)則以及該目標(biāo)邏輯規(guī)則對應(yīng)的轉(zhuǎn)發(fā)動作分離至所述第三流表;其中,目標(biāo)邏輯規(guī)則的同一個匹配域不重復(fù)保存在所述第三流表中。
[0076]如圖2所示,對于目前的TCAM流表來說,其查找字段即為上文所述的邏輯規(guī)則,而一個查找字段中的某一匹配域(即一具體的地址)可能對應(yīng)多種轉(zhuǎn)發(fā)動作(如圖2中查找字段Eth type中的匹配域0X8100),因此TCAM流表就會建立更多的表項用于重復(fù)保存匹配域(同一種匹配域,其對應(yīng)幾種轉(zhuǎn)發(fā)動作,就在TCAM流表重復(fù)保存了幾遍);此外,如果生成流表過多,其流表間的跳轉(zhuǎn)時間就會越長,致使報文轉(zhuǎn)發(fā)的速度下降,因此基于上文中提到的重復(fù)的匹配域只保存一個,本實施例在流表數(shù)量有限的情況下,從TCAM流表中分離出映射收益(在一種查找字段中,其匹配域的重復(fù)程度即為該查找字段的映射收益)大的邏輯規(guī)貝U,從而更加合理地節(jié)約了 TCAM流表的資源。
[0077]此外,為了保證流表之間更加靈活的進(jìn)行跳轉(zhuǎn),在本發(fā)明的上述實施例中,所述第一流表配有第一跳轉(zhuǎn)流條目,用于存儲第一流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址,所述第二流表配有第二跳轉(zhuǎn)流目條,用于存儲第二流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址;其中,所述第一跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為第二流表或轉(zhuǎn)發(fā)器,所述第二跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為轉(zhuǎn)發(fā)器;所述流表的多級化方法還包括:
[0078]步驟3,為所述第三流表配置第三跳轉(zhuǎn)流條目;
[0079]步驟4,為所述第三流表中每個轉(zhuǎn)發(fā)動作配置跳轉(zhuǎn)地址;
[0080]步驟5,將所述第三流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址保存至所述第三跳轉(zhuǎn)流條目;
[0081]步驟6,更新所述第一跳轉(zhuǎn)流條目以及第二跳轉(zhuǎn)流條目中的跳轉(zhuǎn)地址。
[0082]本實施例為每個流表引入了跳轉(zhuǎn)地址的跳轉(zhuǎn)流條目,從而直接根據(jù)跳轉(zhuǎn)流條目進(jìn)行跳轉(zhuǎn)地址,無需在獲取每個一個流表一個流表地全部進(jìn)行游歷以獲取轉(zhuǎn)發(fā)動作,從而減少了報文轉(zhuǎn)發(fā)所需要的時間。
[0083]具體地,在本發(fā)明的上述實施例中,步驟3包括:
[0084]將所述第三流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址配置為轉(zhuǎn)發(fā)器;
[0085]步驟6包括:
[0086]更新所述第一跳轉(zhuǎn)流條目以及第二跳轉(zhuǎn)流條目中的跳轉(zhuǎn)地址,使所述第一跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為第二流表或第三流表或轉(zhuǎn)發(fā)器,并使所述第二跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為第三流表或轉(zhuǎn)發(fā)器。
[0087]本實施例將最后一個流表(即當(dāng)前的第三流表)中所有轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址設(shè)置為轉(zhuǎn)發(fā)器,在經(jīng)過最后一流表后可直接通過轉(zhuǎn)發(fā)器來轉(zhuǎn)發(fā)報文,由于之后每添加一個新的流表都會使的最后一個流表發(fā)生變化,因此需要對之前的第一流表以及第二流表的跳轉(zhuǎn)流條目進(jìn)行更新。
[0088]下面對上述流表的多級化方法的具體實施進(jìn)行詳細(xì)描述:
[0089]如圖3所示,假設(shè)原始的TCAM流表具有10個表項的流表,每個表項對應(yīng)3種邏輯規(guī)則(即查找字段Eth Dst\IP Src\IP Dst), TCAM流表中每個表項對應(yīng)有其各自的轉(zhuǎn)發(fā)動作即ACT1N表(轉(zhuǎn)發(fā)器)中的轉(zhuǎn)發(fā)動作ACT1-ACT10。
[0090]第一步,按照其優(yōu)先級進(jìn)行表項排序,這里按照優(yōu)先級的大小順序先后標(biāo)記為Rl到RlO (即標(biāo)號較小的表項具有較高的優(yōu)先級);其中Rl到RlO分別對應(yīng)轉(zhuǎn)發(fā)動作ACT1-ACT10。
[0091]第二步,計所有邏輯規(guī)則的映射增益,根據(jù)圖中實例來看,查找字段Eth Dst具有最大的映射增益(即匹配域重復(fù)的程度最高);
[0092]第三步,如圖4所示,生成第二流表,將第一流表(原TCAM流表)中的Eth Dst (攜帶有其對應(yīng)的轉(zhuǎn)發(fā)動作即規(guī)則R1-R4和R5-R10)分離至第二流表(重復(fù)的匹配域至保存一個),并維護(hù)一個Jl變量(即上文所述的跳轉(zhuǎn)流條目)來指示第一流表的跳轉(zhuǎn)地址,其中,Jl的取值,由Eth Dst的匹配域來決定,由于Eth Dst的R5-R10均為任意匹配(“*,,即符合所有的數(shù)值),所以在報文轉(zhuǎn)發(fā)過程中,如果通過流表I確定出R5-R10對應(yīng)的轉(zhuǎn)發(fā)動作,那么就無需在第二流表中進(jìn)行查找,可以直接跳轉(zhuǎn)到act1n表,而具體的匹配域如00:FF則在Jl對應(yīng)為2 (位數(shù)為2的第二流表)。
[0093]之后將為第二流表建立一個J2變量(即第二流表的跳轉(zhuǎn)流條目),由于此時的第二流表為最后一個流表,J2對應(yīng)的匹配域的跳轉(zhuǎn)地址都可指向3 (3對應(yīng)于ACT1N表)。
[0094]第四步,根據(jù)映射增益,邏輯規(guī)則IP Dst具有次高的增益值,與步驟三類似,生成第三流表,將第一流標(biāo)中的IP Dst分離至第三流表,此后為第三流表配置跳轉(zhuǎn)流條目J3,由于此時第三流表為最后一個流表,將IP Dst的匹配域?qū)?yīng)J3設(shè)置為4,并更新Jl以及J2,最終得到如圖5所示的多級流表。例如:Eth Dst中的R5對應(yīng)為任意匹配“*”,而IPDst的R5對應(yīng)為10*,因此10*并不能適用于任意的數(shù)值,此時Jl對應(yīng)的R5的跳轉(zhuǎn)地址應(yīng)該略過第二流表,到達(dá)第三流表,由于第三流表對應(yīng)的位數(shù)為3,因此R5在Jl中依然為3,但與原先的3代表的意義有所不同(原先的3表示跳轉(zhuǎn)至ACT1N表);而R6、R8、R10在EthDst、以及IP Dst均為任意匹配“*”,因此在Jl中對應(yīng)為4 (即直接跳轉(zhuǎn)到ACT1N表);相對于J2的匹配域,在IP Dst中R2為任意匹配“*”,因此將R2對應(yīng)的J2改為4 (即跳過第三流表后,來到ACT1N表)。
[0095]需要指出的是,本實施例將查找字段定義為邏輯規(guī)則,只是其中的一種優(yōu)選方式,對于原TCAM流表,其每個縱向的表項以及每個橫向的表項都可以視作為一種邏輯規(guī)則,進(jìn)行分離,其分離原理與本實施例所提出的方法一樣,在此不做贅述。此外,對于原TCAM流表保存了多種邏輯規(guī)則的情況,可權(quán)衡報文轉(zhuǎn)發(fā)所需的時間,來設(shè)定相應(yīng)的需要分離邏輯規(guī)則的數(shù)量。
[0096]此外,本發(fā)明的實施例還提供一種多級流表的處理方法,所述多級流表按有效位進(jìn)行排序且能夠正交組成一個三態(tài)內(nèi)容尋址存儲器TCAM流表;其中,位于第一級的第一流表保存有至少一種邏輯規(guī)則以及與該至少一種邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作,其余每個流表均只保存有一種邏輯規(guī)則以及該一種邏輯規(guī)則的所有轉(zhuǎn)發(fā)動作;所述方法包括:
[0097]步驟61,確定目標(biāo)報文的邏輯規(guī)則;
[0098]步驟62,按所述有效位的順序分別將每個流表所保存邏輯規(guī)則與目標(biāo)報文的邏輯規(guī)則進(jìn)行匹配,得到每個流表與該匹配相符的轉(zhuǎn)發(fā)動作集合;
[0099]步驟63,對所有流表的轉(zhuǎn)發(fā)動作集合取交集,得到每個轉(zhuǎn)發(fā)動作集合共同的轉(zhuǎn)發(fā)動作;
[0100]步驟64,根據(jù)每個轉(zhuǎn)發(fā)動作集合共同的轉(zhuǎn)發(fā)動作轉(zhuǎn)發(fā)所述目標(biāo)報文。
[0101]上述實施例提供了一種多級流表的處理方法,根據(jù)每個流表中的邏輯規(guī)則獲取對應(yīng)的具有一個或多個轉(zhuǎn)發(fā)動作的轉(zhuǎn)發(fā)動作集合,并對每個流表中這些獲取到的轉(zhuǎn)發(fā)動作集合取交集,從而得到符合所有流表保存的邏輯規(guī)則對應(yīng)的轉(zhuǎn)發(fā)動作,從而完成報文的轉(zhuǎn)發(fā)。
[0102]此外,在本發(fā)明的上述實施例中,每個流表所保存的邏輯規(guī)則具體包括有一個或多個匹配域,每個匹配域?qū)?yīng)有一個或多個轉(zhuǎn)發(fā)動作;所述多級流表中的每個流表還分別設(shè)有一個跳轉(zhuǎn)流條目,用于存儲其所對應(yīng)的流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址,從而能夠在得到第一流表的轉(zhuǎn)發(fā)動作集合后,根據(jù)該轉(zhuǎn)發(fā)動作集合中每個轉(zhuǎn)發(fā)動作所對應(yīng)的跳轉(zhuǎn)地址向下級流表進(jìn)行跳轉(zhuǎn)。
[0103]本實施例為每個流表的轉(zhuǎn)發(fā)動作保存了相應(yīng)的跳轉(zhuǎn)地址,從而直接根據(jù)跳轉(zhuǎn)地址進(jìn)行向下游流表進(jìn)行跳轉(zhuǎn),無需在一個流表一個流表地全部進(jìn)行游歷以獲取轉(zhuǎn)發(fā)動作,從而減少了報文轉(zhuǎn)發(fā)所需要的時間。
[0104]此外,在本發(fā)明的上述實施例中,所述方法還包括:
[0105]步驟65,當(dāng)需要對所述多級流表的排序進(jìn)行變化時,將需要改變的流表以及該流表對應(yīng)的所有轉(zhuǎn)發(fā)動作進(jìn)行調(diào)換,并更新所有流表的跳轉(zhuǎn)流條目。
[0106]此外,為了對流表進(jìn)行更改,在本發(fā)明的上述實施例中,所述方法還包括:
[0107]步驟66,當(dāng)需要替換掉所述多級流表中的目標(biāo)流表時,生成一替換流表,在所述替換流表中保存需要替換的邏輯規(guī)則,并將所述目標(biāo)流表替換成所述替換流表,之后配置該替換流表中邏輯規(guī)則的轉(zhuǎn)發(fā)動作,并更新所有流表的跳轉(zhuǎn)流條目。
[0108]下面對上述多級流表的處理方法的具體實施過程進(jìn)行詳細(xì)描述:
[0109]〈報文轉(zhuǎn)發(fā)過程〉
[0110]同樣如圖5所示的多級流表,假設(shè)目標(biāo)報文從輸入端口接收,其三個數(shù)據(jù)域(即該目標(biāo)報文的邏輯規(guī)則)分別為“00:1F”,“0010*”和“1110*”。三個數(shù)據(jù)域分別被提取并發(fā)送到三個流表進(jìn)行查找,在第一流表中得到匹配域?qū)?yīng)的表項為Rl,R2,R3,R4,R9的轉(zhuǎn)發(fā)動作集合(如Rl中的001*,其*可對應(yīng)任意數(shù)值,當(dāng)*為O*時,此時第一流表中Rl即為0010*,符合目標(biāo)報文的數(shù)據(jù)域,),之后Rl,R2,R3,R4,R9對應(yīng)的J1進(jìn)行跳轉(zhuǎn),最終從第二個流表中找出符合的的轉(zhuǎn)發(fā)動作集合:R3以及對應(yīng)的R5-R10,從第三個流表中找出符合的的轉(zhuǎn)發(fā)動作集合:R3,R4,R7,R9和對應(yīng)的R2,R6,R8,R10。之后對每個流表獲取的轉(zhuǎn)發(fā)動作集合取交集,最終確定出R3和R4符合所有流表中的邏輯規(guī)則,由于圖5所示的多級流表中每個表項進(jìn)行了優(yōu)先級排序,所以這里可以確定出R3對應(yīng)的轉(zhuǎn)發(fā)動作優(yōu)先級最高,最終執(zhí)行R3對應(yīng)的轉(zhuǎn)發(fā)動作執(zhí)行報文轉(zhuǎn)發(fā)操作。
[0111]〈流表改變過程〉
[0112]流表改變過程分為兩種情況:第一種情況下,只是多級流表的排序發(fā)生改變,假設(shè)有3個流表,從I到4分別表示3個流表和一個act1n表。更新流程有三步:第一步,將所有流表中的跳轉(zhuǎn)流目條都恢復(fù)為默認(rèn)值,即沒有跳轉(zhuǎn)地址;第二步,將流表互換。第三步,更新每個流表對應(yīng)的跳轉(zhuǎn)流目條中的跳轉(zhuǎn)地址,其更新方法與上文所述的方法一致,在此不做贅述。
[0113]第二種情況是流表中的邏輯規(guī)則發(fā)生了變化,比如第三流表保存的邏輯規(guī)則需要改變,可生成一個新的流表作為替換流表,保存需要改變的邏輯規(guī)則至替換流表,將第三流表替換成所述替換流表,之后更新所有流表的跳轉(zhuǎn)流條目即可實現(xiàn)第三流表的替換工作。
[0114]此外,本發(fā)明還提供一種流表的多級化裝置,包括:第一流表以及第二流表;所述第一流表保存有至少一種邏輯規(guī)則以及與該至少一種邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作,所述第二流表保存有一種邏輯規(guī)則以及該一種邏輯規(guī)則的所有轉(zhuǎn)發(fā)動作,所述第一流表以及第二流表正交組成TCAM流表;其中,如圖7所示,所述裝置包括:
[0115]所述裝置包括:
[0116]生成模塊,用于生成第三流表;
[0117]分離模塊,用于將所述第一流表中的目標(biāo)邏輯規(guī)則以及該目標(biāo)邏輯規(guī)則對應(yīng)的轉(zhuǎn)發(fā)動作分離至所述第三流表,使得所述第一流表、第二流表以及第三流表正交后組成所述TCAM流表,之后繼續(xù)生成新的流表,直至流表數(shù)量達(dá)到預(yù)設(shè)上限。
[0118]本裝置將Openflow交換機(jī)維護(hù)的TCAM流表中的多種邏輯規(guī)則逐一分離出來,使得新生成的每個流表保存一種分離的邏輯規(guī)則,從而對TCAM流表中的邏輯規(guī)則進(jìn)行正交分解,因此能夠有效抵節(jié)省TCAM的存儲空間,進(jìn)而節(jié)約Openflow交換機(jī)的制造成本。
[0119]其中,在本發(fā)明的上述實施例中,所述第一流表以及第二流表中的邏輯規(guī)則具體包括有多個匹配域,每個匹配域?qū)?yīng)有一個或多個轉(zhuǎn)發(fā)動作;所述分離模塊包括:
[0120]計算子模塊,用于計算第一流表中所有邏輯規(guī)則的映射收益,將映射收益最大的邏輯規(guī)則確定為目標(biāo)邏輯規(guī)則;
[0121 ] 分離子模塊,用于將所述第一流表中的目標(biāo)邏輯規(guī)則以及該目標(biāo)邏輯規(guī)則對應(yīng)的轉(zhuǎn)發(fā)動作分離至所述第三流表;其中,目標(biāo)邏輯規(guī)則的同一個匹配域不重復(fù)保存在所述第二流表中。
[0122]其中,在本發(fā)明的上述實施例中,所述第一流表配有第一跳轉(zhuǎn)流條目,用于存儲第一流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址,所述第二流表配有第二跳轉(zhuǎn)流目條,用于存儲第二流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址;其中,所述第一跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為第二流表或轉(zhuǎn)發(fā)器,所述第二跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為轉(zhuǎn)發(fā)器;
[0123]所述裝置還包括:
[0124]第一配置模塊,用于在所述分離模塊將所述第一流表中的目標(biāo)邏輯規(guī)則以及該目標(biāo)邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作分離至所述第三流表后,為所述第三流表配置第三跳轉(zhuǎn)流條目;
[0125]第二配置模塊,用于為所述第三流表中每個轉(zhuǎn)發(fā)動作配置跳轉(zhuǎn)地址;
[0126]保存模塊,用于將所述第三流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址保存至所述第三跳轉(zhuǎn)流條目;
[0127]更新模塊,用于更新所述第一跳轉(zhuǎn)流條目以及第二跳轉(zhuǎn)流條目中的跳轉(zhuǎn)地址。
[0128]其中,在本發(fā)明的上述實施例中,
[0129]所述第二配置模塊具體用于:將所述第三流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址配置為轉(zhuǎn)發(fā)器;
[0130]所述更新模塊具體用于:更新所述第一跳轉(zhuǎn)流條目以及第二跳轉(zhuǎn)流條目中的跳轉(zhuǎn)地址,使所述第一跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為第二流表或第三流表或轉(zhuǎn)發(fā)器,并使所述第二跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為第三流表或轉(zhuǎn)發(fā)器。
[0131]顯然,本實施例的裝置與本發(fā)明中一種流表的多級化方法相對應(yīng),該流表的多級化方法所能達(dá)到的技術(shù)效果,本實施例的裝置也同樣能夠達(dá)到。
[0132]此外,本發(fā)明的實施例一種多級流表的處理裝置,所述多級流表按有效位進(jìn)行排序且能夠正交組成一個三態(tài)內(nèi)容尋址存儲器TCAM流表;其中,位于第一級的第一流表保存有至少一種邏輯規(guī)則以及與該至少一種邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作,其余每個流表均只保存有一種邏輯規(guī)則以及該一種邏輯規(guī)則的所有轉(zhuǎn)發(fā)動作;如圖8所示,所述裝置包括:
[0133]確定模塊,用于確定目標(biāo)報文的邏輯規(guī)則;
[0134]匹配模塊,用于按所述有效位的順序分別將每個流表所保存邏輯規(guī)則與目標(biāo)報文的邏輯規(guī)則進(jìn)行匹配,得到每個流表與該匹配相符的轉(zhuǎn)發(fā)動作集合;
[0135]處理模塊,用于對所有流表的轉(zhuǎn)發(fā)動作集合取交集,得到每個轉(zhuǎn)發(fā)動作集合共同的轉(zhuǎn)發(fā)動作;
[0136]轉(zhuǎn)發(fā)模塊,用于根據(jù)每個轉(zhuǎn)發(fā)動作集合共同的轉(zhuǎn)發(fā)動作轉(zhuǎn)發(fā)所述目標(biāo)報文。
[0137]上述實施例提供了一種多級流表的處理裝置,根據(jù)每個流表中的邏輯規(guī)則獲取對應(yīng)的具有一個或多個轉(zhuǎn)發(fā)動作的轉(zhuǎn)發(fā)動作集合,并對每個流表中這些獲取到的轉(zhuǎn)發(fā)動作集合取交集,從而得到符合所有流表保存的邏輯規(guī)則對應(yīng)的轉(zhuǎn)發(fā)動作,從而完成報文的轉(zhuǎn)發(fā)。
[0138]其中,在本發(fā)明的上述實施例中,每個流表所保存的邏輯規(guī)則具體包括有多個匹配域,每個匹配域?qū)?yīng)一個轉(zhuǎn)發(fā)動作;所述多級流表中的每個流表還分別設(shè)有一個跳轉(zhuǎn)流條目,用于存儲其所對應(yīng)的流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址,從而能夠使匹配模塊在得到第一流表的轉(zhuǎn)發(fā)動作集合后,根據(jù)該轉(zhuǎn)發(fā)動作集合中每個轉(zhuǎn)發(fā)動作所對應(yīng)的跳轉(zhuǎn)地址向下級流表進(jìn)行跳轉(zhuǎn)。
[0139]其中,在本發(fā)明的上述實施例中,所述裝置還包括:
[0140]流表調(diào)換模塊,用于當(dāng)需要對所述多級流表的排序進(jìn)行變化時,將需要改變的流表以及該流表對應(yīng)的所有轉(zhuǎn)發(fā)動作進(jìn)行調(diào)換,并更新所有流表的跳轉(zhuǎn)流條目。
[0141]其中,在本發(fā)明的上述實施例中,所述裝置還包括:
[0142]流表替換模塊,用于當(dāng)需要替換掉所述多級流表中的目標(biāo)流表時,生成一替換流表,在所述替換流表中保存需要替換的邏輯規(guī)則,并將所述目標(biāo)流表替換成所述替換流表,之后配置該替換流表中邏輯規(guī)則的轉(zhuǎn)發(fā)動作,并更新所有流表的跳轉(zhuǎn)流條目。
[0143]顯然,本實施例的裝置與本發(fā)明中一種多級流表的處理方法相對應(yīng),該多級流表的處理方法所能達(dá)到的技術(shù)效果,本實施例的裝置也同樣能夠達(dá)到。
[0144]以上所述是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,在不脫離本發(fā)明所述原理的前提下,還可以作出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種流表的多級化方法,其特征在于,包括:第一流表以及第二流表;所述第一流表保存有至少一種邏輯規(guī)則以及與該至少一種邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作,所述第二流表保存有一種邏輯規(guī)則以及該一種邏輯規(guī)則的所有轉(zhuǎn)發(fā)動作,所述第一流表以及第二流表正交組成三態(tài)內(nèi)容尋址存儲器TCAM流表;其中,所述方法包括: 生成第三流表; 將所述第一流表中的目標(biāo)邏輯規(guī)則以及該目標(biāo)邏輯規(guī)則對應(yīng)的轉(zhuǎn)發(fā)動作分離至所述第三流表,使得所述第一流表、第二流表以及第三流表正交后組成所述TCAM流表,之后繼續(xù)生成新的流表,直至流表數(shù)量達(dá)到預(yù)設(shè)上限。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一流表以及第二流表中的邏輯規(guī)則具體包括有一個或多個匹配域,每個匹配域?qū)?yīng)有一個或多個轉(zhuǎn)發(fā)動作; 將所述第一流表中的目標(biāo)邏輯規(guī)則以及該目標(biāo)邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作分離至所述第三流表的步驟包括: 計算第一流表中所有邏輯規(guī)則的映射收益,將映射收益最大的邏輯規(guī)則確定為目標(biāo)邏輯規(guī)則; 將所述第一流表中的目標(biāo)邏輯規(guī)則以及該目標(biāo)邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作分離至所述第三流表;其中,目標(biāo)邏輯規(guī)則的同一個匹配域不重復(fù)保存在所述第三流表中。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述第一流表配有第一跳轉(zhuǎn)流條目,用于存儲第一流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址,所述第二流表配有第二跳轉(zhuǎn)流目條,用于存儲第二流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址;其中,所述第一跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為第二流表或轉(zhuǎn)發(fā)器,所述第二跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為轉(zhuǎn)發(fā)器; 在將所述第一流表中的目標(biāo)邏輯規(guī)則以及該目標(biāo)邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作分離至所述第三流表后,所述方法還包括: 為所述第三流表配置第三跳轉(zhuǎn)流條目; 為所述第三流表中每個轉(zhuǎn)發(fā)動作配置跳轉(zhuǎn)地址; 將所述第三流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址保存至所述第三跳轉(zhuǎn)流條目; 更新所述第一跳轉(zhuǎn)流條目以及第二跳轉(zhuǎn)流條目中的跳轉(zhuǎn)地址。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于, 為所述第三流表中每個轉(zhuǎn)發(fā)動作配置跳轉(zhuǎn)地址的步驟包括: 將所述第三流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址配置為轉(zhuǎn)發(fā)器; 更新所述第一跳轉(zhuǎn)流條目以及第二跳轉(zhuǎn)流條目中的跳轉(zhuǎn)地址的步驟包括: 更新所述第一跳轉(zhuǎn)流條目以及第二跳轉(zhuǎn)流條目中的跳轉(zhuǎn)地址,使所述第一跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為第二流表或第三流表或轉(zhuǎn)發(fā)器,并使所述第二跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為第三流表或轉(zhuǎn)發(fā)器。
5.一種多級流表的處理方法,其特征在于,所述多級流表按有效位進(jìn)行排序且能夠正交組成一個三態(tài)內(nèi)容尋址存儲器TCAM流表;其中,位于第一級的第一流表保存有至少一種邏輯規(guī)則以及與該至少一種邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作,其余每個流表均只保存有一種邏輯規(guī)則以及該一種邏輯規(guī)則的所有轉(zhuǎn)發(fā)動作;所述方法包括: 確定目標(biāo)報文的邏輯規(guī)則; 按所述有效位的順序分別將每個流表所保存邏輯規(guī)則與目標(biāo)報文的邏輯規(guī)則進(jìn)行匹配,得到每個流表與該匹配相符的轉(zhuǎn)發(fā)動作集合; 對所有流表的轉(zhuǎn)發(fā)動作集合取交集,得到每個轉(zhuǎn)發(fā)動作集合共同的轉(zhuǎn)發(fā)動作; 根據(jù)每個轉(zhuǎn)發(fā)動作集合共同的轉(zhuǎn)發(fā)動作轉(zhuǎn)發(fā)所述目標(biāo)報文。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,每個流表所保存的邏輯規(guī)則具體包括有一個或多個匹配域,每個匹配域?qū)?yīng)有一個或多個轉(zhuǎn)發(fā)動作;所述多級流表中的每個流表還分別設(shè)有一個跳轉(zhuǎn)流條目,用于存儲其所對應(yīng)的流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址,從而能夠在得到第一流表的轉(zhuǎn)發(fā)動作集合后,根據(jù)該轉(zhuǎn)發(fā)動作集合中每個轉(zhuǎn)發(fā)動作所對應(yīng)的跳轉(zhuǎn)地址向下級流表進(jìn)行跳轉(zhuǎn)。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述方法還包括: 當(dāng)需要對所述多級流表的排序進(jìn)行變化時,將需要改變的流表以及該流表對應(yīng)的所有轉(zhuǎn)發(fā)動作進(jìn)行調(diào)換,并更新所有流表的跳轉(zhuǎn)流條目。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述方法包括: 當(dāng)需要替換掉所述多級流表中的目標(biāo)流表時,生成一替換流表,在所述替換流表中保存需要替換的邏輯規(guī)則,并將所述目標(biāo)流表替換成所述替換流表,之后配置該替換流表中邏輯規(guī)則的轉(zhuǎn)發(fā)動作,并更新所有流表的跳轉(zhuǎn)流條目。
9.一種流表的多級化裝置,其特征在于,包括:第一流表以及第二流表;所述第一流表保存有至少一種邏輯規(guī)則以及與該至少一種邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作,所述第二流表保存有一種邏輯規(guī)則以及該一種邏輯規(guī)則的所有轉(zhuǎn)發(fā)動作,所述第一流表以及第二流表正交組成TCAM流表;其中,所述裝置包括: 生成模塊,用于生成第三流表; 分離模塊,用于將所述第一流表中的目標(biāo)邏輯規(guī)則以及該目標(biāo)邏輯規(guī)則對應(yīng)的轉(zhuǎn)發(fā)動作分離至所述第三流表,使得所述第一流表、第二流表以及第三流表正交后組成所述TCAM流表,之后繼續(xù)生成新的流表,直至流表數(shù)量達(dá)到預(yù)設(shè)上限。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述第一流表以及第二流表中的邏輯規(guī)則具體包括有一個或多個匹配域,每個匹配域?qū)?yīng)有一個或多個轉(zhuǎn)發(fā)動作; 所述分離模塊包括: 計算子模塊,用于計算第一流表中所有邏輯規(guī)則的映射收益,將映射收益最大的邏輯規(guī)則確定為目標(biāo)邏輯規(guī)則; 分離子模塊,用于將所述第一流表中的目標(biāo)邏輯規(guī)則以及該目標(biāo)邏輯規(guī)則對應(yīng)的轉(zhuǎn)發(fā)動作分離至所述第三流表;其中,目標(biāo)邏輯規(guī)則的同一個匹配域不重復(fù)保存在所述第三流表中。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述第一流表配有第一跳轉(zhuǎn)流條目,用于存儲第一流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址,所述第二流表配有第二跳轉(zhuǎn)流目條,用于存儲第二流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址;其中,所述第一跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為第二流表或轉(zhuǎn)發(fā)器,所述第二跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為轉(zhuǎn)發(fā)器; 所述裝置還包括: 第一配置模塊,用于在所述分離模塊將所述第一流表中的目標(biāo)邏輯規(guī)則以及該目標(biāo)邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作分離至所述第三流表后,為所述第三流表配置第三跳轉(zhuǎn)流條目; 第二配置模塊,用于為所述第三流表中每個轉(zhuǎn)發(fā)動作配置跳轉(zhuǎn)地址; 保存模塊,用于將所述第三流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址保存至所述第三跳轉(zhuǎn)流條目; 更新模塊,用于更新所述第一跳轉(zhuǎn)流條目以及第二跳轉(zhuǎn)流條目中的跳轉(zhuǎn)地址。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于, 所述第二配置模塊具體用于:將所述第三流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址配置為轉(zhuǎn)發(fā)器; 所述更新模塊具體用于:更新所述第一跳轉(zhuǎn)流條目以及第二跳轉(zhuǎn)流條目中的跳轉(zhuǎn)地址,使所述第一跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為第二流表或第三流表或轉(zhuǎn)發(fā)器,并使所述第二跳轉(zhuǎn)流條目的跳轉(zhuǎn)地址為第三流表或轉(zhuǎn)發(fā)器。
13.—種多級流表的處理裝置,其特征在于,所述多級流表按有效位進(jìn)行排序且能夠正交組成一個三態(tài)內(nèi)容尋址存儲器TCAM流表;其中,位于第一級的第一流表保存有至少一種邏輯規(guī)則以及與該至少一種邏輯規(guī)則對應(yīng)的所有轉(zhuǎn)發(fā)動作,其余每個流表均只保存有一種邏輯規(guī)則以及該一種邏輯規(guī)則的所有轉(zhuǎn)發(fā)動作;所述裝置包括: 確定模塊,用于確定目標(biāo)報文的邏輯規(guī)則; 匹配模塊,用于按所述有效位的順序分別將每個流表所保存邏輯規(guī)則與目標(biāo)報文的邏輯規(guī)則進(jìn)行匹配,得到每個流表與該匹配相符的轉(zhuǎn)發(fā)動作集合; 處理模塊,用于對所有流表的轉(zhuǎn)發(fā)動作集合取交集,得到每個轉(zhuǎn)發(fā)動作集合共同的轉(zhuǎn)發(fā)動作; 轉(zhuǎn)發(fā)模塊,用于根據(jù)每個轉(zhuǎn)發(fā)動作集合共同的轉(zhuǎn)發(fā)動作轉(zhuǎn)發(fā)所述目標(biāo)報文。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,每個流表所保存的邏輯規(guī)則具體包括有一個或多個匹配域,每個匹配域?qū)?yīng)一個或多個轉(zhuǎn)發(fā)動作;所述多級流表中的每個流表還分別設(shè)有一個跳轉(zhuǎn)流條目,用于存儲其所對應(yīng)的流表中每個轉(zhuǎn)發(fā)動作的跳轉(zhuǎn)地址,從而能夠使匹配模塊在得到第一流表的轉(zhuǎn)發(fā)動作集合后,根據(jù)該轉(zhuǎn)發(fā)動作集合中每個轉(zhuǎn)發(fā)動作所對應(yīng)的跳轉(zhuǎn)地址向下級流表進(jìn)行跳轉(zhuǎn)。
15.根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述裝置還包括: 流表調(diào)換模塊,用于當(dāng)需要對所述多級流表的排序進(jìn)行變化時,將需要改變的流表以及該流表對應(yīng)的所有轉(zhuǎn)發(fā)動作進(jìn)行調(diào)換,并更新所有流表的跳轉(zhuǎn)流條目。
16.根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述裝置包括: 流表替換模塊,用于當(dāng)需要替換掉所述多級流表中的目標(biāo)流表時,生成一替換流表,在所述替換流表中保存需要替換的邏輯規(guī)則,并將所述目標(biāo)流表替換成所述替換流表,之后配置該替換流表中邏輯規(guī)則的轉(zhuǎn)發(fā)動作,并更新所有流表的跳轉(zhuǎn)流條目。
【文檔編號】H04L12/931GK104468357SQ201310422936
【公開日】2015年3月25日 申請日期:2013年9月16日 優(yōu)先權(quán)日:2013年9月16日
【發(fā)明者】劉彬, 李勇, 牛小兵, 金德鵬, 劉中金 申請人:中興通訊股份有限公司