提高報文轉(zhuǎn)發(fā)性能的方法以及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種提高報文轉(zhuǎn)發(fā)性能的方法以及裝置。
【背景技術(shù)】
[0002] 流表(Flow-Table)是OpenFlow轉(zhuǎn)發(fā)的基礎(chǔ),流表可串聯(lián)為多級流表,每級流表由 多個流表項組成。
[0003] 如圖1所示,當(dāng)SDN轉(zhuǎn)發(fā)設(shè)備上存在多級流表時,會出現(xiàn)有的流表項的匹配項為五 元組的至少一項,那么,匹配上該流表項的報文流中的非首報文可以按照多級流表中匹配 到的快轉(zhuǎn)流表項進(jìn)行快轉(zhuǎn)處理;有的流表項的匹配域不是五元組的任意一項或組合,該報 文則可以按照多級流表中匹配到的普通流表進(jìn)行普轉(zhuǎn)處理。
[0004] 然而,在多級流表存在的情況下,由于報文需要在快轉(zhuǎn)流表和普通流表之間不斷 切換匹配,即:如圖1中需要多次匹配快轉(zhuǎn)流表,進(jìn)而導(dǎo)致SDN轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)性能受限。
【發(fā)明內(nèi)容】
[0005] 針對現(xiàn)有技術(shù)的缺陷,本發(fā)明提供了一種提高報文轉(zhuǎn)發(fā)性能的方法以及裝置。
[0006] 本發(fā)明提供一種提高報文轉(zhuǎn)發(fā)性能的方法,應(yīng)用于開放流SDN轉(zhuǎn)發(fā)設(shè)備,其中該 方法包括:
[0007] 接收到報文后,根據(jù)所述報文的匹配信息在快轉(zhuǎn)信息表項中進(jìn)行匹配;
[0008] 若所述報文未命中所述快轉(zhuǎn)信息表項,將所述報文與所述SDN轉(zhuǎn)發(fā)設(shè)備預(yù)存的多 級流表進(jìn)行匹配;
[0009] 當(dāng)所述報文命中所述多級流表的多個流表項時,將所述報文的匹配信息以及所述 多個流表項的動作集合添加至所述快轉(zhuǎn)信息表項中。
[0010] 本發(fā)明還提供一種提高報文轉(zhuǎn)發(fā)性能的裝置,應(yīng)用于SDN轉(zhuǎn)發(fā)設(shè)備,該裝置包括:
[0011] 第一匹配單元,用于接收到報文后,根據(jù)所述報文的匹配信息在快轉(zhuǎn)信息表項中 進(jìn)行匹配;
[0012] 第二匹配單元,用于在所述報文未命中所述快轉(zhuǎn)信息表項時,將所述報文與所述 SDN轉(zhuǎn)發(fā)設(shè)備預(yù)存的多級流表進(jìn)行匹配;
[0013] 添加單元,用于當(dāng)所述報文命中所述多級流表的多個流表項時,將所述報文的匹 配信息以及所述多個流表項的動作集合添加至所述快轉(zhuǎn)信息表項中。
[0014] 本發(fā)明提供的提高報文轉(zhuǎn)發(fā)性能的方法以及裝置,當(dāng)根據(jù)接收的報文的匹配信息 未命中預(yù)存的快轉(zhuǎn)信息表項時,將報文與OpenFlow設(shè)備預(yù)存的多級流表進(jìn)行匹配,并在該 報文命中所述多級流表的多個流表項時,將報文的匹配信息以及多個流表項的動作集合添 加至所述快轉(zhuǎn)信息表項中,以使后續(xù)接收到與該報文為同一條報文流的非首報文時,可根 據(jù)該快轉(zhuǎn)信息表項中的動作集合處理非首報文,無需再次將非首報文與多級流表依次進(jìn)行 匹配,進(jìn)而大幅提高了報文的處理效率。
【附圖說明】
[0015] 圖1是本發(fā)明現(xiàn)有技術(shù)中一種報文多級流表處理流程示意圖;
[0016] 圖2是本發(fā)明實施例中一種提高報文轉(zhuǎn)發(fā)性能的方法應(yīng)用場景示意圖;
[0017] 圖3是本發(fā)明實施例中一種提高報文轉(zhuǎn)發(fā)性能的方法流程示意圖;
[0018] 圖4是本發(fā)明實施例中一種提高報文轉(zhuǎn)發(fā)性能的裝置的邏輯結(jié)構(gòu)示意圖;
[0019] 圖5是本發(fā)明實施例中提高報文轉(zhuǎn)發(fā)性能的裝置所在SDN轉(zhuǎn)發(fā)設(shè)備的硬件架構(gòu)示 意圖。
【具體實施方式】
[0020] 為使本申請的目的,技術(shù)方案及優(yōu)點更加清楚明白,以下參照附圖對本申請方案 做進(jìn)一步的詳細(xì)說明。
[0021] 為了解決現(xiàn)有技術(shù)中存在的問題,本發(fā)明提供了一種提高報文轉(zhuǎn)發(fā)性能的方法以 及裝置。
[0022] 圖2示出了本發(fā)明提供的提高報文轉(zhuǎn)發(fā)性能的方法所應(yīng)用的網(wǎng)絡(luò)環(huán)境示意圖,該 網(wǎng)絡(luò)環(huán)境可以是SDN(Software Defined Network,軟件定義網(wǎng)絡(luò))環(huán)境等,包括控制器200 以及多個SDN轉(zhuǎn)發(fā)設(shè)備Ra201、Rb202。
[0023] 請參考圖3,為本發(fā)明提供的提高報文轉(zhuǎn)發(fā)性能的方法的處理流程示意圖,該提 高報文轉(zhuǎn)發(fā)性能的方法可應(yīng)用于SDN轉(zhuǎn)發(fā)設(shè)備,該SDN轉(zhuǎn)發(fā)設(shè)備可以是OpenFlow路由器、 OpenFlow交換機(jī)等OpenFlow設(shè)備,以SDN轉(zhuǎn)發(fā)設(shè)備為OpenFlow設(shè)備為例,該提高報文轉(zhuǎn)發(fā) 性能的方法包括以下步驟:
[0024] 步驟301,接收到報文后,根據(jù)所述報文的匹配信息在快轉(zhuǎn)信息表項中進(jìn)行匹配;
[0025] 本發(fā)明實施例中的控制器與具有多級流表的OpenFlow設(shè)備建立OpenFlow 連接之后,控制器可以通過向OpenFlow設(shè)備下發(fā)流表能力集請求報文(例如, Table-feature-request報文)的方式來獲取OpenFlow設(shè)備的各個流表的流表能力。
[0026] 該流表能力用于表征OpenFlow設(shè)備的流表是否具有快轉(zhuǎn)(快速轉(zhuǎn)發(fā))的能力,若 流表具有快轉(zhuǎn)的能力,說明該流表為快轉(zhuǎn)流表,若流表不具有快轉(zhuǎn)的能力,說明該流表為普 通流表。
[0027] OpenFlow設(shè)備在接收到控制器下發(fā)的Table-feature-request報文后,將自身的 各個流表是否具有快轉(zhuǎn)能力的情況發(fā)送至控制器,以使控制器可以區(qū)分OpenFlow設(shè)備的 各個流表是快轉(zhuǎn)流表還是普通流表。
[0028] 控制器根據(jù)獲取的OpenFlow設(shè)備的各流表是否具有快轉(zhuǎn)能力的情況對OpenFlow 設(shè)備的各流表進(jìn)行標(biāo)記,即:將具有快轉(zhuǎn)能力的流表標(biāo)記為快轉(zhuǎn)流表,將不具有快轉(zhuǎn)能力的 流表標(biāo)記為普通流表(也可以僅對快轉(zhuǎn)流表進(jìn)行標(biāo)記)。
[0029] 在控制器需要對OpenFlow設(shè)備下發(fā)流表項時,若所要下發(fā)的流表項的匹配域 為五元組信息的至少一項,可以根據(jù)事先獲取的各流表的流表能力將該流表項下發(fā)至 OpenFlow設(shè)備的快轉(zhuǎn)流表中;若所要下發(fā)的流表項的匹配域為五元組信息的至少一項以 及其他匹配信息,或者所要下發(fā)的流表項的匹配域不包括五元組信息的任意一項,根據(jù)事 先獲取的各流表的流表能力將該流表項下發(fā)至OpenFlow設(shè)備的普通流表中。
[0030] 相應(yīng)地,在OpenFlow設(shè)備接收到控制器下發(fā)的流表項后,則可以將匹配域為五元 組信息的至少一項的流表項添加至多級流表的快轉(zhuǎn)流表中;將匹配域為五元組信息的至少 一項以及其他匹配信息,或者匹配域不包括五元組信息的任意一項的流表項添加至多級流 表的普通流表中。
[0031] 本發(fā)明實施例提供的具有多級流表的OpenFlow設(shè)備在接收到報文后,首先獲取 該報文五元組信息,并將該五元組信息根據(jù)哈希算法進(jìn)行計算,得到該五元組信息哈希值。 之后,將該五元組信息哈希值作為報文的匹配信息與預(yù)存的快轉(zhuǎn)信息表項進(jìn)行匹配,查找 快轉(zhuǎn)信息表項中是否具有與該報文的五元組信息哈希值對應(yīng)的快轉(zhuǎn)信息。
[0032] 其中,該快轉(zhuǎn)信息表項可以是快轉(zhuǎn)cache表項,該快轉(zhuǎn)信息表項中的快轉(zhuǎn)信息為 OpenFlow設(shè)備在接收到首報文后,根據(jù)首報文所匹配的多個流表項中的動作信息和/或流 表項ID組成的動作集合,以及與該首報文的匹配信息(五元組信息哈希值)生成的對應(yīng)關(guān) 系信息。
[0033] 步驟302,若所述報文未命中所述快轉(zhuǎn)信息表項,將所述報文與所述OpenFlow設(shè) 備預(yù)存的多級流表進(jìn)行匹配;
[0034] 若在快轉(zhuǎn)信息表項中未匹配到具有與該報文五元組信息哈希值對應(yīng)的快轉(zhuǎn)信 息,即:該報文未命中該快轉(zhuǎn)信息表項,說明該報文為首報文,可以將該報文依次與該 OpenFlow設(shè)備預(yù)存的多級流表進(jìn)行匹配。
[0035] 步驟303,當(dāng)所述報文命中所述多級流表的多個流表項時,將所述報文的匹配信息 以及所述多個流表項的動作集合添加至所述快轉(zhuǎn)信息表項中。
[0036] 在報文命中OpenFlow設(shè)備的多個流表中的多個流表項時,依次判斷該報文命中 的流表項是快轉(zhuǎn)流表中的流表項,還是普通流表中的流表項,即:在該報文所命中的流表項 中的匹配域是五元組信息的至少一項時,確定該報文所命中的流表項是快轉(zhuǎn)流表中的快轉(zhuǎn) 流表項;在該報文所命中的流表項中的匹配域是五元組信息的至少一項以及其他匹配信 息,或者不包括五元組信息的任意一項時,可以確定該報文所命中的流表項是普通流表中 的普通流表項。
[0037] 在該報文命中的流表項是快轉(zhuǎn)流表中的快轉(zhuǎn)流表項時,獲取快轉(zhuǎn)流表項中的動作 信息,將該動作信息添加至快轉(zhuǎn)信息表項中的動作域中。在該報文命中的流表項是普通流 表中的普通流表項時,獲取被命中的普通流表項的流表項ID,將該流表項ID添加至快轉(zhuǎn)信 息表項中的動作域中。該流表項ID為可以索引到某個流表