一種配置、下發(fā)流表項(xiàng)的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及通信網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種配置、下發(fā)流表項(xiàng)的方法及裝置。
【背景技術(shù)】
[0002] OpenFlow網(wǎng)絡(luò),是一種新型的網(wǎng)絡(luò)創(chuàng)新架構(gòu),主要由控制器和交換機(jī)組成。交換機(jī) 功能專注而簡(jiǎn)化,只負(fù)責(zé)數(shù)據(jù)轉(zhuǎn)發(fā),控制器則對(duì)整個(gè)網(wǎng)絡(luò)進(jìn)行集中控制,實(shí)現(xiàn)控制層功能。 控制器通過標(biāo)準(zhǔn)的OpenFlow協(xié)議與交換機(jī)進(jìn)行信息交互,從而進(jìn)行統(tǒng)一、靈活、高效的網(wǎng) 絡(luò)維護(hù)和管理。
[0003] 交換機(jī)是整個(gè)OpenFlow網(wǎng)絡(luò)的核心部件,而流表記錄了交換機(jī)轉(zhuǎn)發(fā)數(shù)據(jù)包的規(guī) 貝1J。流表通常由多個(gè)流表項(xiàng)組成,每個(gè)流表項(xiàng)為一個(gè)數(shù)據(jù)包轉(zhuǎn)發(fā)規(guī)則,交換機(jī)通過查詢流表 來獲得轉(zhuǎn)發(fā)數(shù)據(jù)包的轉(zhuǎn)發(fā)規(guī)則。交換機(jī)的軟件系統(tǒng)包括軟件層和硬件層,在現(xiàn)有技術(shù)中,交 換機(jī)與控制器的工作過程為:交換機(jī)接收到一個(gè)數(shù)據(jù)包后,在硬件層的流表中查找與數(shù)據(jù) 包匹配的流表項(xiàng),如果在硬件層的流表中沒有查找到匹配的流表項(xiàng),則在軟件層的流表中 接著查找流表項(xiàng),如果在軟件層的流表中也沒有查找到匹配的流表項(xiàng),就把數(shù)據(jù)包上報(bào)給 控制器;控制器產(chǎn)生與數(shù)據(jù)包匹配的流表項(xiàng),并將數(shù)據(jù)包和流表項(xiàng)(下發(fā)的流表項(xiàng)可以是匹 配的所有流表項(xiàng),也可以是匹配的所有流表項(xiàng)中從未下發(fā)過的流表項(xiàng))下發(fā)給交換機(jī);交換 機(jī)接收到控制器下發(fā)的流表項(xiàng)后,先將其保存到軟件層的流表中,然后在軟件層的流表中 查找與數(shù)據(jù)包匹配的所有流表項(xiàng),最后將匹配的所有流表項(xiàng)聚合為硬件層的流表項(xiàng),并將 該硬件層的流表項(xiàng)保存到硬件層的流表中。當(dāng)交換機(jī)后續(xù)再接收到數(shù)據(jù)包后,就可以直接 在硬件層的流表中查找匹配的流表項(xiàng),并按照該匹配的流表項(xiàng)的數(shù)據(jù)包轉(zhuǎn)發(fā)規(guī)則轉(zhuǎn)發(fā)該數(shù) 據(jù)包。
[0004] 發(fā)明人在實(shí)現(xiàn)本發(fā)明創(chuàng)造的過程中發(fā)現(xiàn):在現(xiàn)有技術(shù)中,當(dāng)交換機(jī)配置硬件層的 流表項(xiàng)時(shí),需要在軟件層的流表中查找與數(shù)據(jù)包匹配的所有流表項(xiàng),而在軟件層的流表中 查找匹配的所有流表項(xiàng)的過程本身往往會(huì)經(jīng)歷比較長的時(shí)間,由此也會(huì)增加硬件層的流表 項(xiàng)的配置時(shí)間,進(jìn)而導(dǎo)致數(shù)據(jù)包的轉(zhuǎn)發(fā)時(shí)延增大,并且,可能產(chǎn)生數(shù)據(jù)丟包的問題,特別是 在高速轉(zhuǎn)發(fā)數(shù)據(jù)包的情況下,數(shù)據(jù)包丟包的問題可能會(huì)更加嚴(yán)重。
【發(fā)明內(nèi)容】
[0005] 有鑒于此,本發(fā)明提供了一種配置、下發(fā)流表項(xiàng)的方法及裝置,用以解決現(xiàn)有技術(shù) 中硬件層的流表項(xiàng)的配置時(shí)間較長,導(dǎo)致數(shù)據(jù)包的轉(zhuǎn)發(fā)時(shí)延增大,并且,可能產(chǎn)生數(shù)據(jù)丟包 的問題,其技術(shù)方案如下:
[0006] 第一方面,一種配置流表項(xiàng)的方法,所述方法包括:
[0007] 交換機(jī)向控制器發(fā)送一個(gè)請(qǐng)求下發(fā)流表項(xiàng)的請(qǐng)求消息,所述請(qǐng)求消息中攜帶有待 轉(zhuǎn)發(fā)的數(shù)據(jù)包;
[0008] 所述交換機(jī)接收所述控制器返回的一個(gè)響應(yīng)消息,所述響應(yīng)消息中攜帶有與所述 待轉(zhuǎn)發(fā)的數(shù)據(jù)包匹配的所有流表項(xiàng);
[0009] 所述交換機(jī)從所述響應(yīng)消息中提取與所述待轉(zhuǎn)發(fā)的數(shù)據(jù)包匹配的所有流表項(xiàng);
[0010] 所述交換機(jī)將提取出的所有流表項(xiàng)聚合為硬件層的流表項(xiàng),并在所述交換機(jī)支持 所述硬件層的流表項(xiàng)時(shí),將所述硬件層的流表項(xiàng)配置到硬件層的流表中。
[0011] 結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0012] 通過所述響應(yīng)消息中攜帶的,與所述待轉(zhuǎn)發(fā)的數(shù)據(jù)包匹配的所有流表項(xiàng)轉(zhuǎn)發(fā)所述 待轉(zhuǎn)發(fā)的數(shù)據(jù)包。
[0013] 結(jié)合第一方面、第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的 實(shí)現(xiàn)方式中,所述交換機(jī)和所述控制器之間通過OpenFlow協(xié)議進(jìn)行通信,所述請(qǐng)求消息和 所述響應(yīng)消息通過所述OpenFlow協(xié)議傳輸。
[0014] 結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能的實(shí)現(xiàn)方式 中,所述響應(yīng)消息為擴(kuò)展的〇fp_fl〇w_mod消息,所述擴(kuò)展的ofp_flow_mod消息為在ofp_ flow_mod消息中定義一個(gè)數(shù)組后所得到的消息,并且,所述擴(kuò)展的ofp_flow_mod消息通過 定義的數(shù)組可同時(shí)攜帶多個(gè)流表項(xiàng)。
[0015] 結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第一方面的第四種可能的實(shí)現(xiàn)方式 中,所述響應(yīng)消息還攜帶有消息類型標(biāo)識(shí)以及流表項(xiàng)數(shù)量標(biāo)識(shí),所述消息類型標(biāo)識(shí)用于指 示所述響應(yīng)消息為擴(kuò)展的〇fp_fl〇w_m 〇d消息,所述流表項(xiàng)數(shù)量標(biāo)識(shí)用于指示所述擴(kuò)展的 Ofp_f I〇w_mod消息中攜帶的流表項(xiàng)的數(shù)量。
[0016] 結(jié)合第一方面、第一方面的第一種可能的實(shí)現(xiàn)方式、第一方面的第二種可能的實(shí) 現(xiàn)方式、第一方面的第三種可能的實(shí)現(xiàn)方式、第一方面的第四種可能的實(shí)現(xiàn)方式,在第一方 面的第五種可能的實(shí)現(xiàn)方式中,所述方法還包括:將提取出的所有流表項(xiàng)配置到軟件層的 流表中。
[0017] 第二方面,一種下發(fā)流表項(xiàng)的方法,所述方法包括:
[0018] 控制器接收交換機(jī)發(fā)送的一個(gè)請(qǐng)求下發(fā)流表項(xiàng)的請(qǐng)求消息,所述請(qǐng)求消息中攜帶 有待轉(zhuǎn)發(fā)的數(shù)據(jù)包;
[0019] 所述控制器生成與所述待轉(zhuǎn)發(fā)的數(shù)據(jù)包匹配的所有流表項(xiàng);
[0020] 所述控制器向所述交換機(jī)返回一個(gè)響應(yīng)消息,所述響應(yīng)消息中攜帶有與所述待轉(zhuǎn) 發(fā)的數(shù)據(jù)包匹配的所有流表項(xiàng),其中,與所述數(shù)據(jù)包匹配的所有流表項(xiàng)用于聚合為硬件層 的流表項(xiàng),所述硬件層的流表項(xiàng)用于配置到所述交換機(jī)的硬件層的流表中。
[0021] 結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述控制器和所述交換 機(jī)之間通過OpenFlow協(xié)議進(jìn)行通信,所述請(qǐng)求消息和所述響應(yīng)消息通過所述OpenFlow協(xié) 議傳輸。
[0022] 結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的實(shí)現(xiàn)方式 中,所述響應(yīng)消息為擴(kuò)展的〇fp_fl〇w_mod消息,所述擴(kuò)展的ofp_flow_mod消息為在ofp_ flow_mod消息中定義一個(gè)數(shù)組后所得到的消息,并且,所述擴(kuò)展的ofp_flow_mod消息通過 定義的數(shù)組可同時(shí)攜帶多個(gè)流表項(xiàng)。
[0023] 第三方面,一種配置流表項(xiàng)的裝置,所述裝置包括:
[0024] 發(fā)送模塊,用于向控制器發(fā)送一個(gè)請(qǐng)求下發(fā)流表項(xiàng)的請(qǐng)求消息,所述請(qǐng)求消息中 攜帶有待轉(zhuǎn)發(fā)的數(shù)據(jù)包;
[0025] 接收模塊,用于接收所述控制器返回的一個(gè)響應(yīng)消息,所述響應(yīng)消息中攜帶有與 所述待轉(zhuǎn)發(fā)的數(shù)據(jù)包匹配的所有流表項(xiàng);
[0026] 提取模塊,用于從所述接收模塊接收的所述響應(yīng)消息中提取與所述待轉(zhuǎn)發(fā)的數(shù)據(jù) 包匹配的所有流表項(xiàng);
[0027] 硬件層配置模塊,用于將所述提取模塊提取出的所有流表項(xiàng)聚合為硬件層的流表 項(xiàng),并在所述交換機(jī)支持所述硬件層的流表項(xiàng)時(shí),將所述硬件層的流表項(xiàng)配置到硬件層的 流表中。
[0028] 結(jié)合第三方面,在第三方面的第一種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
[0029] 轉(zhuǎn)發(fā)模塊,用于通過所述接收模塊接收的所述響應(yīng)消息中攜帶的與所述待轉(zhuǎn)發(fā)的 數(shù)據(jù)包匹配的所有流表項(xiàng)轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)的數(shù)據(jù)包。
[0030] 結(jié)合第三方面、第三方面的第一種可能的實(shí)現(xiàn)方式,在第三方面的第二種可能的 實(shí)現(xiàn)方式中,所述交換機(jī)和所述控制器之間通過OpenFlow協(xié)議進(jìn)行通信,所述請(qǐng)求消息和 所述響應(yīng)消息通過所述OpenFlow協(xié)議傳輸。
[0031] 結(jié)合第三方面的第二種可能的實(shí)現(xiàn)方式,在第三方面的第三種可能的實(shí)現(xiàn)方式 中,所述響應(yīng)消息為擴(kuò)展的〇fp_fl〇w_mod消息,所述擴(kuò)展的ofp_flow_mod消息為在ofp_ flow_mod消息中定義一個(gè)數(shù)組后所得到的消息,并且,所述擴(kuò)展的ofp_flow_mod消息通過 定義的數(shù)組可同時(shí)攜帶多個(gè)流表項(xiàng)。
[0032] 結(jié)合第三方面的第三種可能的實(shí)現(xiàn)方式中,在第三方面的第四種可能的實(shí)現(xiàn)方式 中,所述響應(yīng)消息還攜帶有消息類型標(biāo)識(shí)以及流表項(xiàng)數(shù)量標(biāo)識(shí),所述消息類型標(biāo)識(shí)用于指 示所述響應(yīng)消息為擴(kuò)展的〇fp_fl〇w_m 〇d消息,所述流表項(xiàng)數(shù)量標(biāo)識(shí)用于指示所述擴(kuò)展的 ofp_flow_mod消息中攜帶的流表項(xiàng)的數(shù)量。
[0033] 結(jié)合第三方面、第三方面的第一種可能的實(shí)現(xiàn)方式、第三方面的第二種可能的實(shí) 現(xiàn)方式、第三方面的第三種可能的實(shí)現(xiàn)方式、第三方面的第四種可能的實(shí)現(xiàn)方式,在第三方 面的第五種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
[0034] 軟件層配置模塊,用于將提取出的所有流表項(xiàng)配置到軟件層的流表中。
[0035] 第四方面,一種下發(fā)流表項(xiàng)的裝置,所述裝置包括:
[0036] 接收模塊,用于接收交換機(jī)發(fā)送的一個(gè)請(qǐng)求下發(fā)流表項(xiàng)的請(qǐng)求消息,所述請(qǐng)求消 息中攜帶有待轉(zhuǎn)發(fā)的數(shù)據(jù)包;
[0037] 流表項(xiàng)生成模塊,用于生成與所述待轉(zhuǎn)發(fā)的數(shù)據(jù)包匹配的所有流表項(xiàng);
[0038] 發(fā)送模塊,用于向所述交換機(jī)返回一個(gè)響應(yīng)消息,所述響應(yīng)消息中攜帶有與所述 待轉(zhuǎn)發(fā)的數(shù)據(jù)包匹配的所有流表項(xiàng),其中,與所述待轉(zhuǎn)發(fā)的數(shù)據(jù)包匹配的所有流表項(xiàng)用于 聚合為硬件層的流表項(xiàng),所述硬件層的流表項(xiàng)用于配置到所述交換機(jī)的硬件層的流表中。
[0039] 結(jié)合第四方面,在第四方面的第一種可能的實(shí)現(xiàn)方式中,所述控制器和所述交換 機(jī)之間通過OpenFlow協(xié)議進(jìn)行通信,所述請(qǐng)求消息和所述響應(yīng)消息通過所述OpenFlo