一種流表更新方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,尤其涉及一種流表更新方法及裝置。
【背景技術(shù)】
[0002]隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,為了提高網(wǎng)絡(luò)的配置效率,SDN (Software DefinedNetwork,軟件定義網(wǎng)絡(luò))應(yīng)運(yùn)而生。SDN是將網(wǎng)絡(luò)中的交換機(jī)或路由器的控制功能分離出來,并交由控制器完成,而該交換機(jī)或路由器,只具有數(shù)據(jù)轉(zhuǎn)發(fā)功能,從而實(shí)現(xiàn)網(wǎng)絡(luò)控制層面和數(shù)據(jù)層面的分離。
[0003]現(xiàn)有技術(shù)中,交換機(jī)接收到數(shù)據(jù)包之后,交換機(jī)可將該數(shù)據(jù)包與交換機(jī)中保存的流表中的流表項(xiàng)依次進(jìn)行匹配,若該數(shù)據(jù)包與該流表中的所有流表項(xiàng)均匹配失敗,交換機(jī)則可將該數(shù)據(jù)包發(fā)送至控制器,以使得控制器可根據(jù)該數(shù)據(jù)包,確定與該數(shù)據(jù)包對(duì)應(yīng)的流表項(xiàng),并將該流表項(xiàng)發(fā)送至交換機(jī),從而交換機(jī)可將該流表項(xiàng)插入該流表中,以更新該流表,并根據(jù)該流表項(xiàng)轉(zhuǎn)發(fā)該數(shù)據(jù)包。
[0004]然而,上述流表更新過程中,若流表已滿,即流表資源已被所有客戶端的多個(gè)流表項(xiàng)全部占用,則交換機(jī)無法再在該流表中插入與客戶端發(fā)送的數(shù)據(jù)包對(duì)應(yīng)的其他流表項(xiàng),即交換機(jī)無法更新該流表,進(jìn)而無法滿足客戶端對(duì)流表資源的需求,以及無法實(shí)現(xiàn)流表資源的公平分配。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的實(shí)施例提供一種流表更新方法及裝置,能夠在流表已滿的狀態(tài)下更新流表,從而滿足客戶端對(duì)流表資源的需求,以及實(shí)現(xiàn)流表資源的公平分配。
[0006]為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0007]第一方面,本發(fā)明實(shí)施例提供一種流表更新方法,包括:
[0008]根據(jù)第一客戶端的信息和網(wǎng)絡(luò)創(chuàng)建信息,確定與所述第一客戶端的信息和所述網(wǎng)絡(luò)創(chuàng)建信息對(duì)應(yīng)的所述第一客戶端的流表項(xiàng)數(shù)目的閾值,其中,所述第一客戶端的信息包括所述第一客戶端的序列號(hào)ID,所述網(wǎng)絡(luò)創(chuàng)建信息包括所述第一客戶端所在網(wǎng)絡(luò)的ID和所述第一客戶端所在網(wǎng)絡(luò)的所有客戶端的媒體訪問控制MAC地址;
[0009]獲取交換機(jī)上報(bào)的數(shù)據(jù)包,所述數(shù)據(jù)包是由所述第一客戶端發(fā)送給所述交換機(jī)的,并且所述數(shù)據(jù)包與所述交換機(jī)中保存的流表中的所述第一客戶端的各個(gè)流表項(xiàng)匹配失敗;
[0010]生成所述第一客戶端的與所述數(shù)據(jù)包對(duì)應(yīng)的第一流表項(xiàng);
[0011]若所述流表已滿,且所述流表中的所述第一客戶端的流表項(xiàng)數(shù)目小于所述第一客戶端的流表項(xiàng)數(shù)目的閾值,則生成第一指示,所述第一指示用于指示所述交換機(jī)將所述流表中流表項(xiàng)數(shù)目的溢值最大的至少一個(gè)第二客戶端的任意一個(gè)流表項(xiàng)替換為所述第一流表項(xiàng),其中,所述溢值為所述第二客戶端的流表項(xiàng)數(shù)目超出所述第二客戶端的流表項(xiàng)數(shù)目的閾值的數(shù)目;
[0012]下發(fā)所述第一流表項(xiàng)和所述第一指示至所述交換機(jī),以使得所述交換機(jī)根據(jù)所述第一指示將所述流表項(xiàng)數(shù)目的溢值最大的至少一個(gè)第二客戶端的任意一個(gè)流表項(xiàng)替換為所述第一流表項(xiàng)。
[0013]在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述根據(jù)第一客戶端的信息和網(wǎng)絡(luò)創(chuàng)建信息,確定與所述第一客戶端的信息和所述網(wǎng)絡(luò)創(chuàng)建信息對(duì)應(yīng)的所述第一客戶端的流表項(xiàng)數(shù)目的閾值,具體包括:
[0014]根據(jù)所述第一客戶端的信息和所述網(wǎng)絡(luò)創(chuàng)建信息,確定與所述第一客戶端的信息和所述網(wǎng)絡(luò)創(chuàng)建信息對(duì)應(yīng)的所述第一客戶端的網(wǎng)絡(luò)級(jí)別;
[0015]根據(jù)所述第一客戶端的網(wǎng)絡(luò)級(jí)別,確定與所述第一客戶端的網(wǎng)絡(luò)級(jí)別對(duì)應(yīng)的所述第一客戶端的流表項(xiàng)數(shù)目的閾值。
[0016]結(jié)合前述的第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述獲取交換機(jī)上報(bào)的數(shù)據(jù)包之后,生成第一指示之前,所述方法還包括:
[0017]統(tǒng)計(jì)所述流表中的所述第一客戶端的流表項(xiàng)數(shù)目。
[0018]結(jié)合前述的第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式至第二種可能的實(shí)現(xiàn)方式中的任一種實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述生成第一指示,具體包括:
[0019]確定所述流表中的各個(gè)客戶端的流表項(xiàng)數(shù)目的溢值;
[0020]根據(jù)所述各個(gè)客戶端的流表項(xiàng)數(shù)目的溢值,確定流表項(xiàng)數(shù)目的溢值最大的所述至少一個(gè)第二客戶端;
[0021]確定所述至少一個(gè)第二客戶端的任意一個(gè)流表項(xiàng);
[0022]根據(jù)所述至少一個(gè)第二客戶端的任意一個(gè)流表項(xiàng),生成與所述至少一個(gè)第二客戶端的任意一個(gè)流表項(xiàng)對(duì)應(yīng)的所述第一指示。
[0023]結(jié)合前述的第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式至第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述生成所述第一客戶端的與所述數(shù)據(jù)包對(duì)應(yīng)的第一流表項(xiàng),具體包括:
[0024]根據(jù)所述數(shù)據(jù)包,確定所述數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑;
[0025]根據(jù)所述數(shù)據(jù)包和所述數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑,生成與所述數(shù)據(jù)包對(duì)應(yīng)的所述第一流表項(xiàng)。
[0026]結(jié)合第一方面的第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述數(shù)據(jù)包,確定所述數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑,具體包括:
[0027]獲取所述數(shù)據(jù)包的地址信息,其中,所述數(shù)據(jù)包的地址信息包括MAC地址,或MAC地址和互聯(lián)網(wǎng)協(xié)議IP地址;
[0028]根據(jù)所述數(shù)據(jù)包的地址信息,確定與所述數(shù)據(jù)包的地址信息對(duì)應(yīng)的所述數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑。
[0029]結(jié)合第一方面的第四種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述數(shù)據(jù)包和所述數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑,生成所述第一流表項(xiàng),具體包括:
[0030]獲取所述數(shù)據(jù)包的包頭信息;
[0031]根據(jù)所述數(shù)據(jù)包的包頭信息,確定與所述數(shù)據(jù)包的包頭信息對(duì)應(yīng)的所述第一流表項(xiàng)的匹配域;
[0032]根據(jù)所述第一流表項(xiàng)的匹配域和所述數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑,生成與所述數(shù)據(jù)包對(duì)應(yīng)的所述第一流表項(xiàng)。
[0033]結(jié)合前述的第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式至第二種可能的實(shí)現(xiàn)方式中的任一種實(shí)現(xiàn)方式,在第七種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0034]若所述流表已滿,且所述流表中的所述第一客戶端的流表項(xiàng)數(shù)目大于或等于所述第一客戶端的流表項(xiàng)數(shù)目的閾值,則提示錯(cuò)誤信息。
[0035]第二方面,本發(fā)明實(shí)施例提供一種流表更新方法,包括:
[0036]接收來自第一客戶端的數(shù)據(jù)包;
[0037]若所述數(shù)據(jù)包與流表中的所述第一客戶端的各個(gè)流表項(xiàng)匹配失敗,則發(fā)送所述數(shù)據(jù)包至控制設(shè)備,以使得所述控制設(shè)備根據(jù)所述數(shù)據(jù)包,生成所述第一客戶端的與所述數(shù)據(jù)包對(duì)應(yīng)的第一流表項(xiàng),并當(dāng)所述流表已滿,且所述流表中的所述第一客戶端的流表項(xiàng)數(shù)目小于所述第一客戶端的流表項(xiàng)數(shù)目的閾值時(shí),生成第一指示;
[0038]接收所述控制設(shè)備下發(fā)的所述第一流表項(xiàng)和所述第一指示,所述第一指示用于指示將所述流表中流表項(xiàng)數(shù)目的溢值最大的至少一個(gè)第二客戶端的任意一個(gè)流表項(xiàng)替換為所述第一流表項(xiàng);
[0039]根據(jù)所述第一指示,將所述流表項(xiàng)數(shù)目的溢值最大的至少一個(gè)第二客戶端的任意一個(gè)流表項(xiàng)替換為所述第一流表項(xiàng)。
[0040]在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述第一指示,將所述流表項(xiàng)數(shù)目的溢值最大的至少一個(gè)第二客戶端的任意一個(gè)流表項(xiàng)替換為所述第一流表項(xiàng),具體包括:
[0041]根據(jù)所述第一指示,刪除所述流表項(xiàng)數(shù)目的溢值最大的至少一個(gè)第二客戶端的任意一個(gè)流表項(xiàng);
[0042]將所述第一流表項(xiàng)插入所述流表中。
[0043]結(jié)合前述的第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述接收來自第一客戶端的數(shù)據(jù)包之后,發(fā)送所述數(shù)據(jù)包至控制設(shè)備之前,所述方法還包括:
[0044]將所述數(shù)據(jù)包與所述流表中的所述第一客戶端的各個(gè)流表項(xiàng)進(jìn)行匹配。
[0045]結(jié)合前述的第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式至第二種可能的實(shí)現(xiàn)方式中的任一種實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述接收所述控制設(shè)備下發(fā)的所述第一流表項(xiàng)和所述第一指示之后,所述方法還包括:
[0046]根據(jù)所述第一流表項(xiàng),轉(zhuǎn)發(fā)所述數(shù)據(jù)包。
[0047]在第二方面的第四種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0048]若所述數(shù)據(jù)包與所述流表中的所述第一客戶端的第二流表項(xiàng)匹配成功,則根據(jù)所述第二流表項(xiàng)轉(zhuǎn)發(fā)所述數(shù)據(jù)包。
[0049]第三方面,本發(fā)明實(shí)施例提供一種控制設(shè)備,包括:
[0050]確定單元,用于根據(jù)第一客戶端的信息和網(wǎng)絡(luò)創(chuàng)建信息,確定與所述第一客戶端的信息和所述網(wǎng)絡(luò)創(chuàng)建信息對(duì)應(yīng)的所述第一客戶端的流表項(xiàng)數(shù)目的閾值,其中,所述第一客戶端的信息包括所述第一客戶端的序列號(hào)ID,所述網(wǎng)絡(luò)創(chuàng)建信息包括所述第一客戶端所在網(wǎng)絡(luò)的ID和所述第一客戶端所在網(wǎng)絡(luò)的所有客戶端的媒體訪問控制MAC地址;
[0051]獲取單元,用于獲取交換機(jī)上報(bào)的數(shù)據(jù)包,所述數(shù)據(jù)包是由所述第一客戶端發(fā)送給所述交換機(jī)的,并且所述數(shù)據(jù)包與所述交換機(jī)中保存的流表中的所述第一客戶端的各個(gè)流表項(xiàng)匹配失??;
[0052]生成單元,用于生成所述第一客戶端的與所述獲取單元獲取的所述數(shù)據(jù)包對(duì)應(yīng)的第一流表項(xiàng),以及若所述流表已滿,且所述流表中的所述第一客戶端的流表項(xiàng)數(shù)目小于所述確定單元確定的所述第一客戶端的流表項(xiàng)數(shù)目的閾值,則生成第一指示,所述第一指示用于指示所述交換機(jī)將所述流表中流表項(xiàng)數(shù)目的溢值最大的至少一個(gè)第二客戶端的任意一個(gè)流表項(xiàng)替換為所述第一流表項(xiàng),其中,所述溢值為所述第二客戶端的流表項(xiàng)數(shù)目超出所述第二客戶端的流表項(xiàng)數(shù)目的閾值的數(shù)目;
[0053]發(fā)送單元,用于下發(fā)所述生成單元生成的所述第一流表項(xiàng)和所述第一指示至所述交換機(jī),以使得所述交換機(jī)根據(jù)所述第一指示將所述流表項(xiàng)數(shù)目的溢值最大的至少一個(gè)第二客戶端的任意一個(gè)流表項(xiàng)替換為所述第一流表項(xiàng)。
[0054]在第三方面的第一種可能的實(shí)現(xiàn)方式中,
[0055]所述確定單元,具體用于根據(jù)所述第一客戶端的信息和所述網(wǎng)絡(luò)創(chuàng)建信息,確定與所述第一客戶端的信息和所述網(wǎng)絡(luò)創(chuàng)建信息對(duì)應(yīng)的所述第一客戶端的網(wǎng)絡(luò)級(jí)別,并根據(jù)所述第一客戶端的網(wǎng)絡(luò)級(jí)別,確定與所述第一客戶端的網(wǎng)絡(luò)級(jí)別對(duì)應(yīng)的所述第一客戶端的流表項(xiàng)數(shù)目的閾值。
[0056]結(jié)合前述的第三方面或第三方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述控制設(shè)備還包括統(tǒng)計(jì)單元,
[0057]所述統(tǒng)計(jì)單元,用于在所述獲取單元獲取到所述交換機(jī)上報(bào)的所述數(shù)據(jù)包之后,所述生成單元生成所述第一指示之前,統(tǒng)計(jì)所述流表中的所述第一客戶端的流表項(xiàng)數(shù)目。
[0058]結(jié)合前述的第三方面或第三方面的第一種可能的實(shí)現(xiàn)方式至第二種可能的實(shí)現(xiàn)方式中的任一種實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,
[0059]所述確定單元,具體用于確定所述流表中的各個(gè)客戶端的流表項(xiàng)數(shù)目的溢值,并根據(jù)所述各個(gè)客戶端的流表項(xiàng)數(shù)目的溢值,確定流表項(xiàng)數(shù)目的溢值最大的所述至少一個(gè)第二客戶端,以及確定所述至少一個(gè)第二客戶端的任意一個(gè)流表項(xiàng);
[0060]所述生成單元,具體用于根據(jù)所述確定單元確定的所述至少一個(gè)第二客戶端的任意一個(gè)流表項(xiàng),生成與所述至少一個(gè)第二客戶端的任意一個(gè)流表項(xiàng)對(duì)應(yīng)的所述第一指示。
[0061]結(jié)合前述的第三方面或第三方面的第一種可能的實(shí)現(xiàn)方式至第三種可能的實(shí)現(xiàn)方式中的任一種實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,
[0062]所述確定單元,具體用于根據(jù)所述獲取單元獲取的所述數(shù)據(jù)包,確定所述數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑;
[0063]所述生成單元,具體用于根據(jù)所述數(shù)據(jù)包和所述確定單元確定的所述數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑,生成與所述數(shù)據(jù)包對(duì)應(yīng)的所述第一流表項(xiàng)。
[0064]結(jié)合第三方面的第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,
[0065]所述獲取單元,具體用于獲取所述數(shù)據(jù)包的地址信息,其中,所述數(shù)據(jù)包的地址信息包括MAC地址,或MAC地址和互聯(lián)網(wǎng)協(xié)議IP地址;
[0066]所述確定單元,具體用于根據(jù)所述獲取單元獲取的所述數(shù)據(jù)包的地址信息,確定與所述數(shù)據(jù)包的地址信息對(duì)應(yīng)的所述數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑。
[0067]結(jié)合第三方面的第四種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,
[0068]所述獲取單元,具體用于獲取所述數(shù)據(jù)包的包頭信息;
[0069]所述確定單元,具體用于根據(jù)所述獲取單元獲取的所述數(shù)據(jù)包的包頭信息,確定與所述數(shù)據(jù)包的包頭信息對(duì)應(yīng)的所述第一流表項(xiàng)的匹配域;
[0070]所述生成單元,具體用于根據(jù)所述確定單元確定的所述第一流表項(xiàng)的匹配域和所述數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑,生成與所述數(shù)據(jù)包對(duì)應(yīng)的所述第一流表項(xiàng)。
[0071]結(jié)合前述的第三方面或第三方面的第一種可能的實(shí)現(xiàn)方式至第二種可能的實(shí)現(xiàn)方式中的任一種實(shí)現(xiàn)方式,在第七種可能的實(shí)現(xiàn)方式中,所述控制設(shè)備還包括提示單元,
[0072]所述提示單元,用于若所述流表已滿,且所述統(tǒng)計(jì)單元統(tǒng)計(jì)的所述第一客戶端的流表項(xiàng)數(shù)目大于或等于所述第一客戶端的流表項(xiàng)數(shù)目的閾值,則提示錯(cuò)誤信息。
[0073]第四方面,本發(fā)明實(shí)施例提供一種交換機(jī),包括:
[0074]接收單元,用于接收來自第一客戶端的數(shù)據(jù)包;
[0075]發(fā)送單元,用于若所述接收單元接收的所述數(shù)據(jù)包與流表中的所述第一客戶端的各個(gè)流表項(xiàng)匹配失敗,則發(fā)送所述數(shù)據(jù)包至控制設(shè)備,以使得所述控制設(shè)備根據(jù)所述數(shù)據(jù)包,生成所述第一客戶端的與所述數(shù)據(jù)包對(duì)應(yīng)的第一流表項(xiàng),并當(dāng)所述流表已滿,且所述流表中的所述第一客戶端的流表項(xiàng)數(shù)目小于所述第一客戶端的流表項(xiàng)數(shù)目的閾值時(shí),生成第一指示;
[0076]所述接收單元,還用于接收所述控制設(shè)備下發(fā)的所述第一流表項(xiàng)和所述第一指示,所述第一指示用于指示將所述流表中流表項(xiàng)數(shù)目的溢值最大的至少一個(gè)第二客戶端的任意一個(gè)流表項(xiàng)替換為所述第一流表項(xiàng);
[0077]替換單元,用于根據(jù)所述接收單元接收的所述第一指示,將所述流表項(xiàng)數(shù)目的溢值最大的至少一個(gè)第二客戶端的任意一個(gè)流表項(xiàng)替換為所述接收單元接收的所述第一流表項(xiàng)。
[0078]在第四方面的第一種可能的實(shí)現(xiàn)方式中,
[0079]所述替換單元,具體用于根據(jù)所述接收單元接收的所述