两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種流表項下發(fā)方法、流表項保存方法、相關(guān)裝置和系統(tǒng)與流程

文檔序號:12376328閱讀:316來源:國知局
本發(fā)明涉及通信領(lǐng)域,特別是涉及一種流表項下發(fā)方法、流表項保存方法、相關(guān)裝置和系統(tǒng)。
背景技術(shù)
::控制器為網(wǎng)絡(luò)設(shè)備下發(fā)流表項,使得網(wǎng)絡(luò)設(shè)備可以根據(jù)獲取的流表項執(zhí)行相應(yīng)的功能例如轉(zhuǎn)發(fā)、丟棄報文等。為了能夠讓網(wǎng)絡(luò)設(shè)備實現(xiàn)某一項功能,控制器需要向所述網(wǎng)絡(luò)設(shè)備下發(fā)與該功能相關(guān)的一條或者多條流表項。網(wǎng)絡(luò)設(shè)備一般會劃定專用的存儲空間專門用于存儲控制器下發(fā)的流表項?,F(xiàn)有技術(shù)在控制器向網(wǎng)絡(luò)設(shè)備下發(fā)流表項的過程中,控制器并不會考慮該網(wǎng)絡(luò)設(shè)備用于存儲流表項的存儲空間的存儲狀況。可能會出現(xiàn)在網(wǎng)絡(luò)設(shè)備存儲流表項的存儲空間不足的情況下,控制器依然為了使該網(wǎng)絡(luò)設(shè)備執(zhí)行某一功能向該網(wǎng)絡(luò)設(shè)備下發(fā)流表項。由于這時該網(wǎng)絡(luò)設(shè)備沒有足夠存儲空間,無法保存或只能保存部分接收到的流表項。導(dǎo)致該網(wǎng)絡(luò)設(shè)備無法實現(xiàn)該功能,造成控制器下發(fā)流表項失敗。提高控制器下發(fā)流表項的成功率是需要解決的技術(shù)問題。技術(shù)實現(xiàn)要素:為了解決上述技術(shù)問題,本發(fā)明實施例提供了一種流表項下發(fā)方法、流表項保存方法、相關(guān)裝置和系統(tǒng),以使得控制器在在所述空閑空間小于所述總?cè)萘繒r不向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述流表項,提高了控制器下發(fā)流表項的成功率。第一方面,本發(fā)明實施例提供了一種流表項下發(fā)方法,所述方法包括:控制器獲取用于在網(wǎng)絡(luò)設(shè)備上實現(xiàn)一項功能的至少一條流表項以及所述網(wǎng)絡(luò)設(shè)備的設(shè)備標(biāo)識;所述控制器根據(jù)所述設(shè)備標(biāo)識獲取所述網(wǎng)絡(luò)設(shè)備的存儲信息,所述存儲信息包括所述網(wǎng)絡(luò)設(shè)備用于存儲流表項的存儲空間中的空閑空間;所述控制器比對所述空閑空間與所述至少一條流表項的總?cè)萘?;若所述空閑空間大于等于所述總?cè)萘?,所述控制器根?jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項;若所述空閑空間小于所述總?cè)萘?,所述控制器不向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項。在第一方面的第一種可能的實現(xiàn)方式中,所述用于存儲流表項的存儲空間中的空閑空間具體包括預(yù)留空閑空間和非預(yù)留空閑空間,所述至少一條流表項還具有對應(yīng)的用戶標(biāo)識,所述方法還包括:所述控制器根據(jù)所述用戶標(biāo)識判斷所述存儲空間中是否具有所述用戶標(biāo)識對應(yīng)的預(yù)留子空間,所述預(yù)留子空間為部分或全部所述預(yù)留空閑空間;若具有所述預(yù)留子空間,所述控制器比對所述空閑空間與所述至少一條流表項的總?cè)萘浚ǎ核隹刂破鞅葘λ鲱A(yù)留子空間與所述至少一條流表項的總?cè)萘?;若所述預(yù)留子空間大于等于所述總?cè)萘浚隹刂破鞲鶕?jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項;若所述預(yù)留子空間小于所述總?cè)萘?,所述控制器比對所述非預(yù)留空閑空間與所述總?cè)萘?;若所述非預(yù)留空閑空間大于等于所述總?cè)萘?,所述控制器根?jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項;若所述非預(yù)留空閑空間小于所述總?cè)萘浚隹刂破鞑幌蛩鼍W(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項。結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述控制器根據(jù)所述用戶標(biāo)識判斷所述存儲空間中是否具有所述用戶標(biāo)識對應(yīng)的預(yù)留子空間,還包括:若不具有所述預(yù)留子空間,所述控制器比對所述非預(yù)留空閑空間與所述總?cè)萘?;若所述非預(yù)留空閑空間大于等于所述總?cè)萘浚隹刂破鞲鶕?jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項;若所述非預(yù)留空閑空間小于所述總?cè)萘?,所述控制器不向所述網(wǎng)絡(luò)設(shè)備 下發(fā)所述至少一條流表項。結(jié)合第一方面或者第一方面的第一種或第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述控制器根據(jù)所述設(shè)備標(biāo)識獲取所述網(wǎng)絡(luò)設(shè)備的存儲信息,包括:所述控制器根據(jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備發(fā)送請求消息,所述請求消息用于請求獲取所述網(wǎng)絡(luò)設(shè)備的所述存儲信息;所述控制器接收所述網(wǎng)絡(luò)設(shè)備根據(jù)所述請求消息回復(fù)的應(yīng)答消息,所述應(yīng)答消息用于向所述控制器通告所述網(wǎng)絡(luò)設(shè)備上的所述存儲信息;所述控制器從所述應(yīng)答消息中獲取所述網(wǎng)絡(luò)設(shè)備的所述存儲信息。結(jié)合第一方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述請求消息是OpenFlow協(xié)議的擴展的Multipart請求消息,所述擴展的Multipart請求消息包括Type字段和請求Body字段,所述Type字段攜帶指示存儲信息的類型值,所述請求Body字段為空或者攜帶所述設(shè)備標(biāo)識;相應(yīng)地,所述應(yīng)答消息是OpenFlow協(xié)議的擴展的Multipart應(yīng)答消息,所述Multipart應(yīng)答消息包括所述Type字段和應(yīng)答B(yǎng)ody字段,所述應(yīng)答B(yǎng)ody字段攜帶所述網(wǎng)絡(luò)設(shè)備的存儲信息。結(jié)合第一方面或者第一方面的第一種或第二種或第三種或第四種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,還包括:所述控制器在向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項,或者接收到所述網(wǎng)絡(luò)設(shè)備發(fā)送的流表項刪除通知時,相應(yīng)更新所述存儲信息,所述流表項刪除通知包括所述網(wǎng)絡(luò)設(shè)備刪除的流表項容量和所述刪除的流表項在被刪除前在所述存儲空間中所存儲的位置。第二方面,本發(fā)明實施例提供了一種流表項下發(fā)裝置,所述流表項下發(fā)裝置包括:獲取單元,用于獲取用于在網(wǎng)絡(luò)設(shè)備上實現(xiàn)一項功能的至少一條流表項以及所述網(wǎng)絡(luò)設(shè)備的設(shè)備標(biāo)識;查找單元,用于根據(jù)所述設(shè)備標(biāo)識獲取所述網(wǎng)絡(luò)設(shè)備的存儲信息,所述存儲信息包括所述網(wǎng)絡(luò)設(shè)備用于存儲流表項的存儲空間中的空閑空間;比對單元,用于比對所述空閑空間與所述至少一條流表項的總?cè)萘浚蝗羲隹臻e空間大于等于所述總?cè)萘浚|發(fā)發(fā)送單元根據(jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項;若所述空閑空間小于所述總?cè)萘?,不觸發(fā)所述發(fā)送單元向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項。在第二方面的第一種可能的實現(xiàn)方式中,所述用于存儲流表項的存儲空間中的空閑空間具體包括預(yù)留空閑空間和非預(yù)留空閑空間,所述至少一條流表項還具有對應(yīng)的用戶標(biāo)識,還包括:判斷單元,用于根據(jù)所述用戶標(biāo)識判斷所述存儲空間中是否具有所述用戶標(biāo)識對應(yīng)的預(yù)留子空間,所述預(yù)留子空間為部分或全部所述預(yù)留空閑空間;若具有所述預(yù)留子空間,觸發(fā)所述比對單元所包括的第一比對子單元,所述第一比對子單元,用于比對所述預(yù)留子空間與所述至少一條流表項的總?cè)萘?;若所述預(yù)留子空間大于等于所述總?cè)萘?,觸發(fā)所述發(fā)送單元根據(jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項;若所述預(yù)留子空間小于所述總?cè)萘?,觸發(fā)所述比對單元所包括的第二比對子單元,所述第二比對子單元,用于比對所述非預(yù)留空閑空間與所述總?cè)萘?;若所述非預(yù)留空閑空間大于等于所述總?cè)萘?,觸發(fā)所述發(fā)送單元根據(jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項;若所述非預(yù)留空閑空間小于所述總?cè)萘?,不觸發(fā)所述發(fā)送單元向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項。結(jié)合第二方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,還包括:若所述判斷單元的判斷結(jié)果為不具有所述預(yù)留子空間,觸發(fā)所述第二比對子單元;若所述非預(yù)留空閑空間大于等于所述總?cè)萘?,觸發(fā)所述發(fā)送單元根據(jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項;若所述非預(yù)留空閑空間小于所述總?cè)萘?,不觸發(fā)所述發(fā)送單元向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項。結(jié)合第二方面或者第二方面的第一種或第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述查找單元還包括:發(fā)送子單元,用于根據(jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備發(fā)送請求消息,所述請求消息用于請求獲取所述網(wǎng)絡(luò)設(shè)備的所述存儲信息;接收子單元,用于接收所述網(wǎng)絡(luò)設(shè)備根據(jù)所述請求消息回復(fù)的應(yīng)答消息,所述應(yīng)答消息用于向所述控制器通告所述網(wǎng)絡(luò)設(shè)備上的所述存儲信息;獲取子單元,用于從所述應(yīng)答消息中獲取所述網(wǎng)絡(luò)設(shè)備的所述存儲信息。結(jié)合第二方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述請求消息是開放流OpenFlow協(xié)議的擴展的多部分Multipart請求消息,所述擴展的Multipart請求消息包括類型Type字段和請求主體Body字段,所述Type字段攜帶指示存儲信息的類型值,所述請求Body字段為空或者攜帶所述設(shè)備標(biāo)識;相應(yīng)地,所述應(yīng)答消息是OpenFlow協(xié)議的擴展的Multipart應(yīng)答消息,所述Multipart應(yīng)答消息包括所述Type字段和應(yīng)答B(yǎng)ody字段,所述應(yīng)答B(yǎng)ody字段攜帶所述網(wǎng)絡(luò)設(shè)備的存儲信息。結(jié)合第二方面或者第二方面的第一種或第二種或第三種或第四種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,還包括:更新單元,用于在向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項,或者接收到所述網(wǎng)絡(luò)設(shè)備發(fā)送的流表項刪除通知時,相應(yīng)更新所述存儲信息,所述流表項刪除通知包括所述網(wǎng)絡(luò)設(shè)備刪除的流表項容量和所述刪除的流表項在被刪除前在所述存儲空間中所存儲的位置。第三方面,本發(fā)明實施例提供了一種流表項保存方法,所述方法包括:網(wǎng)絡(luò)設(shè)備向控制器發(fā)送所述網(wǎng)絡(luò)設(shè)備的存儲信息,所述存儲信息包括所述網(wǎng)絡(luò)設(shè)備用于存儲流表項的存儲空間中的空閑空間;所述網(wǎng)絡(luò)設(shè)備接收所述控制器下發(fā)的至少一條流表項,所述至少一條流表項用于在所述網(wǎng)絡(luò)設(shè)備上實現(xiàn)一項功能;所述網(wǎng)絡(luò)設(shè)備將所述至少一條流表項保存在存儲空間中。在第三方面的第一種可能的實現(xiàn)方式中,在所述網(wǎng)絡(luò)設(shè)備向控制器發(fā)送所述網(wǎng)絡(luò)設(shè)備的存儲信息之前,還包括:所述網(wǎng)絡(luò)設(shè)備獲取所述控制器發(fā)送的請求消息,所述請求消息用于請求獲取所述網(wǎng)絡(luò)設(shè)備的所述存儲信息;所述網(wǎng)絡(luò)設(shè)備向控制器發(fā)送所述網(wǎng)絡(luò)設(shè)備的存儲信息,包括:所述網(wǎng)絡(luò)設(shè)備根據(jù)所述請求消息向所述控制器回復(fù)應(yīng)答消息,所述應(yīng)答消息用于向所述控制器通告所述網(wǎng)絡(luò)設(shè)備上的所述存儲信息。結(jié)合第三方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述請求消息是開放流OpenFlow協(xié)議的擴展的多部分Multipart請求消息,所述擴展的Multipart請求消息包括類型Type字段和請求主體Body字段,所述Type字段攜帶指示存儲信息的類型值,所述請求Body字段為空或者攜帶所述設(shè)備標(biāo)識;相應(yīng)地,所述應(yīng)答消息是OpenFlow協(xié)議的擴展的Multipart應(yīng)答消息,所述Multipart應(yīng)答消息包括所述Type字段和應(yīng)答B(yǎng)ody字段,所述應(yīng)答B(yǎng)ody字段攜帶所述網(wǎng)絡(luò)設(shè)備的存儲信息。第四方面,本發(fā)明實施例提供了一種流表項保存裝置,包括:發(fā)送單元,用于向控制器發(fā)送所述網(wǎng)絡(luò)設(shè)備的存儲信息,所述存儲信息包括所述網(wǎng)絡(luò)設(shè)備用于存儲流表項的存儲空間中的空閑空間;接收單元,用于接收所述控制器下發(fā)的至少一條流表項,所述至少一條流表項用于在所述網(wǎng)絡(luò)設(shè)備上實現(xiàn)一項功能;保存單元,用于將所述至少一條流表項保存在存儲空間中。在第四方面的第一種可能的實現(xiàn)方式中,所述接收單元還用于在觸發(fā)所述發(fā)送單元之前,獲取所述控制器發(fā)送的請求消息,所述請求消息用于請求獲取所述網(wǎng)絡(luò)設(shè)備的所述存儲信息;所述發(fā)送單元具體用于根據(jù)所述請求消息向所述控制器回復(fù)應(yīng)答消息,所述應(yīng)答消息用于向所述控制器通告所述網(wǎng)絡(luò)設(shè)備上的所述存儲信息。結(jié)合第四方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述請求消息是開放流OpenFlow協(xié)議的擴展的多部分Multipart請求消息,所述擴展的Multipart請求消息包括類型Type字段和請求主體Body字段,所述Type字段攜帶指示存儲信息的類型值,所述請求Body字段為空或者攜帶所述設(shè)備標(biāo)識;相應(yīng)地,所述應(yīng)答消息是OpenFlow協(xié)議的擴展的Multipart應(yīng)答消息,所述Multipart應(yīng)答消息包括所述Type字段和應(yīng)答B(yǎng)ody字段,所述應(yīng)答B(yǎng)ody字段攜帶所述網(wǎng)絡(luò)設(shè)備的存儲信息。第五方面,本發(fā)明實施例提供了一種流表項下發(fā)系統(tǒng),所述系統(tǒng)包括控制器和網(wǎng)絡(luò)設(shè)備:所述控制器用于獲取用于在網(wǎng)絡(luò)設(shè)備上實現(xiàn)一項功能的至少一條流表項以及所述網(wǎng)絡(luò)設(shè)備的設(shè)備標(biāo)識;根據(jù)所述設(shè)備標(biāo)識獲取所述網(wǎng)絡(luò)設(shè)備的存儲信息,所述存儲信息包括所述網(wǎng)絡(luò)設(shè)備用于存儲流表項的存儲空間中的空閑空間;比對所述空閑空間與所述至少一條流表項的總?cè)萘?;若所述空閑空間大于等于所述總?cè)萘浚鶕?jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項;若所述空閑空間小于所述總?cè)萘?,不向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項;所述網(wǎng)絡(luò)設(shè)備用于向控制器發(fā)送所述網(wǎng)絡(luò)設(shè)備的存儲信息,所述存儲信息包括所述網(wǎng)絡(luò)設(shè)備用于存儲流表項的存儲空間中的空閑空間;接收所述控制器下發(fā)的至少一條流表項,所述至少一條流表項用于在所述網(wǎng)絡(luò)設(shè)備上實現(xiàn)一項功能;將所述至少一條流表項保存在存儲空間中。由上述技術(shù)方案可以看出,當(dāng)控制器為了使得網(wǎng)絡(luò)設(shè)備實現(xiàn)一項功能,向所述網(wǎng)絡(luò)設(shè)備下發(fā)對應(yīng)所述功能的至少一條流表項之前,所述控制器比對所述至少一條流表項的總?cè)萘亢途W(wǎng)絡(luò)設(shè)備的存儲信息,通過比對結(jié)果明確所述網(wǎng)絡(luò)設(shè)備是否具有足夠的空閑存儲空間存儲所述至少一條流表項。在所述網(wǎng)絡(luò)設(shè)備具有大于等于所述流表項的存儲空間時下發(fā)所述至少一條流表項,在所述網(wǎng)絡(luò)設(shè)備不具有存儲流表項的存儲空間時不下發(fā)所述至少一條流表項,提高了控制器下發(fā)流表項的成功率。附圖說明為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1a為下發(fā)流表項的第一種情況示意圖;圖1b為下發(fā)流表項的第二種情況示意圖;圖1為本發(fā)明實施例提供的一種流表項下發(fā)方法的方法流程圖;圖2為本發(fā)明實施例提供的一種存儲信息獲取方法的方法流程圖;圖3為本發(fā)明實施例提供的一種流表項下發(fā)方法的方法流程圖;圖4為本發(fā)明實施例提供的一種流表項下發(fā)裝置的裝置結(jié)構(gòu)圖;圖5為本發(fā)明實施例提供的一種流表項下發(fā)裝置的裝置結(jié)構(gòu)圖;圖6為本發(fā)明實施例提供的一種流表項下發(fā)裝置的裝置結(jié)構(gòu)圖;圖7為本發(fā)明實施例提供的一種流表項下發(fā)裝置的裝置結(jié)構(gòu)圖;圖8為本發(fā)明實施例提供的一種流表項保存方法的方法流程圖;圖9為本發(fā)明實施例提供的一種流表項保存方法的方法流程圖;圖10為本發(fā)明實施例提供的一種流表項保存裝置的裝置結(jié)構(gòu)圖;圖11為本發(fā)明實施例提供的一種控制器的硬件結(jié)構(gòu)示意圖;圖12為本發(fā)明實施例提供的一種網(wǎng)絡(luò)設(shè)備的硬件結(jié)構(gòu)示意圖。具體實施方式控制器通過向網(wǎng)絡(luò)設(shè)備下發(fā)流表項,使得網(wǎng)絡(luò)設(shè)備可以通過接收的流表項實現(xiàn)功能。在控制器向網(wǎng)絡(luò)設(shè)備下發(fā)流表項的過程中,控制器并不會考慮該網(wǎng)絡(luò)設(shè)備用于存儲流表項的存儲空間的存儲狀況。可能會出現(xiàn)在網(wǎng)絡(luò)設(shè)備存儲流表項的存儲空間不足的情況下,控制器依然為了使該網(wǎng)絡(luò)設(shè)備執(zhí)行某一功能向該網(wǎng)絡(luò)設(shè)備下發(fā)流表項。由于這時該網(wǎng)絡(luò)設(shè)備沒有足夠存儲空間,無法保存或只能保存部分接收到的流表項。導(dǎo)致該網(wǎng)絡(luò)設(shè)備無法通過流表項實現(xiàn)該功能,造成控制器下發(fā)流表項失敗。進一步以具體場景為例,通過附圖說明傳統(tǒng)方式存在的問題,圖1a為下發(fā)流表項的第一種情況示意圖。在圖1a中,應(yīng)用程序(英文:Application,縮寫:APP)1為了使網(wǎng)絡(luò)設(shè)備1實現(xiàn)功能1,需要讓控制器向網(wǎng)絡(luò)設(shè)備1下發(fā)四條流表項即如1a中所示的待下發(fā)流表項1,而網(wǎng)絡(luò)設(shè)備1用于存儲流表項的存儲空間中只有存儲三條流表項的空閑空間。圖1a的情況下,如控制器下發(fā)所述待下發(fā)流表項1,網(wǎng)絡(luò)設(shè)備1最多只能存儲四條流表項其中的三個,既無法讓網(wǎng)絡(luò)設(shè)備1實現(xiàn)功能1,也浪費了網(wǎng)絡(luò)設(shè)備1的存儲資源。圖1b為下發(fā)流表項的第二種情況示意圖。在圖1b中,APP2為了使網(wǎng)絡(luò) 設(shè)備2實現(xiàn)功能2,需要讓控制器向網(wǎng)絡(luò)設(shè)備2下發(fā)三條流表項即如1b中所示的待下發(fā)流表項2;于此同時,APP3為了使網(wǎng)絡(luò)設(shè)備2實現(xiàn)功能3,也需要讓控制器向網(wǎng)絡(luò)設(shè)備2下發(fā)三條流表項即如1b中所示的待下發(fā)流表項3,而網(wǎng)絡(luò)設(shè)備2用于存儲流表項的存儲空間中只有存儲四條流表項的空閑空間。在圖1b的情況下,若控制器同時向網(wǎng)絡(luò)設(shè)備2下發(fā)所述待下發(fā)流表項2和待下發(fā)流表項3,有可能會出現(xiàn)網(wǎng)絡(luò)設(shè)備2使用原空閑空間中的兩個來存儲所述待下發(fā)流表項2中三條流表項中的兩個,使用原空閑空間中的另外兩個來存儲所述待下發(fā)流表項3中三條流表項中的兩個。由此導(dǎo)致網(wǎng)絡(luò)設(shè)備2即無法實現(xiàn)功能2也無法實現(xiàn)功能3,又浪費了網(wǎng)絡(luò)設(shè)備2的存儲資源。為此,本發(fā)明實施例提供了一種流表項下發(fā)方法、流表項保存方法、相關(guān)裝置和系統(tǒng),當(dāng)控制器為了使得網(wǎng)絡(luò)設(shè)備實現(xiàn)一項功能,向所述網(wǎng)絡(luò)設(shè)備下發(fā)對應(yīng)所述功能的至少一條流表項之前,所述控制器比對所述至少一條流表項的總?cè)萘亢途W(wǎng)絡(luò)設(shè)備的存儲信息,通過比對結(jié)果明確所述網(wǎng)絡(luò)設(shè)備是否具有足夠的空閑存儲空間存儲所述至少一條流表項。在所述網(wǎng)絡(luò)設(shè)備具有大于等于所述流表項的存儲空間時下發(fā)所述至少一條流表項,在所述網(wǎng)絡(luò)設(shè)備不具有存儲流表項的存儲空間時不下發(fā)所述至少一條流表項,提高了控制器下發(fā)流表項的成功率。所述網(wǎng)絡(luò)設(shè)備的存儲空間中還可以為一些需要執(zhí)行的特定功能例如具有高優(yōu)先級的功能或者需要在所述網(wǎng)絡(luò)設(shè)備上實現(xiàn)功能的特定用戶例如重要用戶或者重要App分配專用的預(yù)留空間,使得與上述相關(guān)的流表項例如與特定功能相關(guān)的流表項、由特定用戶生成的流表項或者由重要應(yīng)用生成的流表項需要下發(fā)到所述網(wǎng)絡(luò)設(shè)備中時,所述存儲空間中有專門用于存儲上述流表項的預(yù)留存儲空間。而且即使預(yù)留存儲空間的空閑空間不足,可以將上述流表項在所述存儲空間的非預(yù)留空閑空間足夠時存儲在非預(yù)留空閑空間中。由此盡量保證了重要流表項能夠被所述網(wǎng)絡(luò)設(shè)備存儲的幾率,提高了所述存儲空間的使用效率。下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整的描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做 出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。實施例一圖1為本發(fā)明實施例提供的一種流表項下發(fā)方法的方法流程圖,所述方法包括:101:控制器獲取用于在網(wǎng)絡(luò)設(shè)備上實現(xiàn)一項功能的至少一條流表項以及所述網(wǎng)絡(luò)設(shè)備的設(shè)備標(biāo)識。本發(fā)明實施例中所述的流表項可以理解為是用戶或者某一項應(yīng)用希望能在網(wǎng)絡(luò)設(shè)備上實現(xiàn)一項功能時構(gòu)造生成的。為了網(wǎng)絡(luò)設(shè)備能夠?qū)崿F(xiàn)一項功能需要控制器為該網(wǎng)絡(luò)設(shè)備下發(fā)與該功能相關(guān)的所有需要下發(fā)的流表項,這里所述的所有需要下發(fā)的流表項可以為至少一條流表項。當(dāng)所述至少一條流表項全部成功下發(fā)到所述網(wǎng)絡(luò)設(shè)備中或者說被所述網(wǎng)絡(luò)設(shè)備存儲到專門用于存儲流表項的存儲空間后,所述網(wǎng)絡(luò)設(shè)備將可以根據(jù)所述至少一條流表項實現(xiàn)所述功能。在本發(fā)明實施例中,優(yōu)選的應(yīng)用于部署了軟件定義網(wǎng)絡(luò)(英文:SoftwareDefinedNetwork,縮寫:SDN)技術(shù)的網(wǎng)絡(luò)中。所述網(wǎng)絡(luò)設(shè)備可以是用于進行路由轉(zhuǎn)發(fā)的轉(zhuǎn)發(fā)設(shè)備。例如可以為支持OpenFlow協(xié)議的交換機、路由器等設(shè)備。102:所述控制器根據(jù)所述設(shè)備標(biāo)識獲取所述網(wǎng)絡(luò)設(shè)備的存儲信息,所述存儲信息包括所述網(wǎng)絡(luò)設(shè)備用于存儲流表項的存儲空間中的空閑空間。舉例說明,若所述控制器在本地已經(jīng)存儲了所述存儲信息,那么所述控制器可以通過所述設(shè)備標(biāo)識在本地進行查找,以查找到對應(yīng)的所述設(shè)備標(biāo)識的所述存儲信息?;蛘撸羲隹刂破髟诒镜仉m然存儲了所述存儲信息,但所述控制器可以根據(jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備發(fā)送請求消息,用于請求獲取所述網(wǎng)絡(luò)設(shè)備的存儲信息,接收所述網(wǎng)絡(luò)設(shè)備根據(jù)所述請求消息返回的應(yīng)答消息,以此獲取所述應(yīng)答消息中攜帶的所述網(wǎng)絡(luò)設(shè)備的存儲信息并可以用獲取的該存儲信息來對本地存儲的所述存儲信息進行更新?;蛘?,若所述控制器在本地并沒有存儲所述存儲信息,所述控制器可以根據(jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備發(fā)送請求消息,用于請求獲取所述網(wǎng)絡(luò)設(shè)備的存儲信息,接收所述網(wǎng)絡(luò)設(shè)備根據(jù)所述請求消息返回的應(yīng)答消息,以此獲取所述應(yīng)答消息 中攜帶的所述網(wǎng)絡(luò)設(shè)備的存儲信息。還需要注意的是,所述網(wǎng)絡(luò)設(shè)備也可以周期性的自動將自身的存儲信息上傳到所述控制器。所述存儲信息可以為一種用于標(biāo)識所述網(wǎng)絡(luò)設(shè)備中專門用于存儲流表項的存儲空間存儲狀況的參數(shù),其中可以包括已被使用的存儲空間和未被使用的空閑存儲空間的參數(shù)。在本發(fā)明實施例中主要關(guān)注的是尚未被用于存儲的空閑存儲空間的參數(shù)。所述請求消息和所述應(yīng)答消息可以為設(shè)定出的一種新的消息,或者也可以為通過對協(xié)議的擴展在已有消息的基礎(chǔ)上定義出新的類型。圖2為本發(fā)明實施例提供了一種存儲信息獲取方法的方法流程圖,所述方法包括:201:所述控制器根據(jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備發(fā)送請求消息,所述請求消息用于請求獲取所述網(wǎng)絡(luò)設(shè)備的所述存儲信息。202:所述控制器接收所述網(wǎng)絡(luò)設(shè)備根據(jù)所述請求消息回復(fù)的應(yīng)答消息,所述應(yīng)答消息用于向所述控制器通告所述網(wǎng)絡(luò)設(shè)備上的所述存儲信息。203:所述控制器從所述應(yīng)答消息中獲取所述網(wǎng)絡(luò)設(shè)備的所述存儲信息??蛇x的,本發(fā)明實施例還提供了一種通過對協(xié)議的擴展在已有消息的基礎(chǔ)上定義出新的類型的方式得到所述請求消息和應(yīng)答消息。在OpenFlow協(xié)議中,控制器和網(wǎng)絡(luò)設(shè)備之間可以使用多部分消息(MultipartMessages)來傳輸網(wǎng)絡(luò)設(shè)備的狀態(tài)信息。控制器可以通過向網(wǎng)絡(luò)設(shè)備發(fā)送多部分請求消息(英文:Multipartrequest)來請求獲得該網(wǎng)絡(luò)設(shè)備的狀態(tài)信息等,該網(wǎng)絡(luò)設(shè)備在收到Multipart請求消息后,向該控制器返回多部分應(yīng)答消息(英文:Multipartreply),并在該Multipart應(yīng)答消息中攜帶所需的狀態(tài)消息。所述Multipart請求消息和Multipart應(yīng)答消息的OpenFlow協(xié)議格式中,可以通過類型字段:“uint16_ttype;/*OneoftheOFPMP_*constants.*/”設(shè)置類型值,不同的類型值對應(yīng)不同的狀態(tài)信息。例如若控制器需要從網(wǎng)絡(luò)設(shè)備獲取狀態(tài)信息1,控制器向網(wǎng)絡(luò)設(shè)備發(fā)送的Multipart請求消息中的所述類型(Type)字段可以設(shè)置為對應(yīng)狀態(tài)信息1的類型值1,若需要狀態(tài)信息2,所述類型字段可以設(shè)置為對應(yīng)狀態(tài)信息2的類型值2。也就是說,可以通過對所述類型字段的設(shè)置來控制所述Multipart請求消息和Multipart應(yīng)答消息中攜帶的內(nèi)容。但是當(dāng)前OpenFlow協(xié)議中并不支持控制器通過Multipart消 息從網(wǎng)絡(luò)設(shè)備獲取網(wǎng)絡(luò)設(shè)備的存儲信息。為了實現(xiàn)控制器從網(wǎng)絡(luò)設(shè)備獲取網(wǎng)絡(luò)設(shè)備的存儲信息這一功能。本發(fā)明實施例對OpenFlow協(xié)議進行了擴展,為所述Multipart請求消息和Multipart應(yīng)答消息定義了一種新的類型值:存儲信息(STORAGE),具體如下:/*Storagedescription.*Therequestbodyisempty.*Thereplybodyisstructofp_storage.*/OFPMP_STORAGE=14,其中ofp_storage:/*BodyofreplytoOFPMP_STORAGErequest.*/structofp_storage{uint32_ttotal_size;/*Totalflowtableentrysizeoftheswitch.*/uint32_tidle_size;/*Unusedsizeoftheflowtableentry.*/};OFP_ASSERT(sizeof(structofp_desc)==8);可以理解為,定義了“存儲信息”作為類型值,類型值的值為14,具有這個類型值的Multipart請求報文的請求主體(body)字段為空,Multipart應(yīng)答消息的應(yīng)答body字段具有ofp_storage結(jié)構(gòu),該ofp_storage結(jié)構(gòu)包括所述網(wǎng)絡(luò)設(shè)備用于存儲流表項的存儲空間的總?cè)萘亢涂臻e容量。若在所述控制器和網(wǎng)絡(luò)設(shè)備使用上述新定義出的類型值為“STORAGE”Multipart消息,圖2所對應(yīng)實施例中的所述請求消息可以是OpenFlow協(xié)議的擴展的Multipart請求消息,所述擴展的Multipart請求消息包括類型Type字段和請求Body字段,所述Type字段攜帶指示存儲信息的類型值,所述請求字段為空或者攜帶所述設(shè)備標(biāo)識。在所述Multipart請求消息的請求字段為攜帶所述設(shè)備標(biāo)識的情況下,可以通過所述請求字段中的所述設(shè)備標(biāo)識實現(xiàn)校 驗等功能。相應(yīng)地,所述應(yīng)答消息是OpenFlow協(xié)議的擴展的Multipart應(yīng)答消息,所述Multipart應(yīng)答消息包括所述Type字段和應(yīng)答B(yǎng)ody字段,所述應(yīng)答B(yǎng)ody字段攜帶所述網(wǎng)絡(luò)設(shè)備的存儲信息。舉例說明,當(dāng)所述網(wǎng)絡(luò)設(shè)備接收到所述Multipart請求消息,所述網(wǎng)絡(luò)設(shè)備通過所述Multipart請求消息Type字段的類型值識別所述Multipart請求消息為請求獲取存儲信息的請求消息。所述網(wǎng)絡(luò)設(shè)備可以生成對應(yīng)所述Multipart請求消息的Multipart應(yīng)答消息,在所述Multipart應(yīng)答消息的應(yīng)答B(yǎng)ody字段中攜帶自身的所述存儲信息。當(dāng)所述控制器獲取所述網(wǎng)絡(luò)設(shè)備發(fā)送的所述Multipart應(yīng)答消息,所述控制器通過所述Multipart應(yīng)答消息Type字段的類型值識別所述Multipart應(yīng)答消息為攜帶了所述存儲信息的應(yīng)答消息,所述控制器從所述Multipart應(yīng)答消息的應(yīng)答B(yǎng)ody字段中獲取所需的所述存儲信息。103:所述控制器比對所述空閑空間與所述至少一條流表項的總?cè)萘?。舉例說明,所述比對主要是用來確定所述網(wǎng)絡(luò)設(shè)備剩余的存儲空間是否足夠存儲所述至少一條流表項。由于流表項的容量大小基本差不多,故所述存儲空間可以以流表項為單位表示。例如所述空閑空間具體為三條流表項單位,所述至少一條流表項的總?cè)萘烤唧w為兩條流表項,那么比對結(jié)果就是所述空閑空間大于所述總?cè)萘俊?04:若所述空閑空間大于等于所述總?cè)萘浚隹刂破鞲鶕?jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項。105:若所述空閑空間小于所述總?cè)萘浚隹刂破鞑幌蛩鼍W(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項。舉例說明,若所述空閑空間大于等于所述總?cè)萘?,可以理解為所述網(wǎng)絡(luò)設(shè)備的所述存儲空間中具有足夠的空閑空間用于保存所述至少一條流表項。這種情況下,所述控制器向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項在正常情況下可以被所述網(wǎng)絡(luò)設(shè)備存儲到所述存儲空間中。所述網(wǎng)絡(luò)設(shè)備能夠通過所述至少一條流表項實現(xiàn)所述功能。若所述空閑空間小于所述總?cè)萘?,可以理解為所述網(wǎng)絡(luò)設(shè)備的所述存儲 空間中的空閑空間不足,不具備存儲所述至少一條流表項的條件。這種情況下,即使所述控制器向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項,所述網(wǎng)絡(luò)設(shè)備在正常情況下也無法保存所述至少一條流表項或者在所述至少一條流表項為多個的情況下最多只可能保存所述至少一條流表項的一部分。即使在能夠保存所述至少一條流表項的一部分例如當(dāng)所述至少一條流表項具體為三條流表項時,所述網(wǎng)絡(luò)設(shè)備只能保存其中兩條流表項的情況下,所述網(wǎng)絡(luò)設(shè)備無法根據(jù)所保存的所述至少一條流表項的一部分例如所述兩條流表項實現(xiàn)原本需要所述三條流表項才能實現(xiàn)的所述功能。這種情況站在所述控制器的角度上,可以理解為下發(fā)流表項失敗。在這種情況下不向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項可以有效避免由于所述網(wǎng)絡(luò)設(shè)備無法存儲所述至少一條流表項,或者只能存儲所述至少一條流表項中的一部分導(dǎo)致下發(fā)流表項失敗情況的出現(xiàn),或者可以有效減少下發(fā)流表項失敗的出現(xiàn)次數(shù)。需要注意的是,若所述存儲信息保存在所述控制器中,可選的,所述存儲信息可以由所述控制器進行更新。所述控制器在向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項,或者接收到所述網(wǎng)絡(luò)設(shè)備發(fā)送的流表項刪除通知時,相應(yīng)更新所述存儲信息,所述流表項刪除通知包括所述網(wǎng)絡(luò)設(shè)備刪除的流表項容量和所述刪除的流表項在被刪除前在所述存儲空間中所存儲的位置。舉例說明,若所述控制器通過比對,向所述網(wǎng)絡(luò)設(shè)備下發(fā)了所述至少一條流表項,所述控制器將相應(yīng)的更新對應(yīng)所述網(wǎng)絡(luò)設(shè)備的存儲信息,將空閑空間減少所述至少一條流表項的總?cè)萘?,將非空閑空間或者說已使用空間增加所述至少一條流表項的總?cè)萘俊H艚邮盏剿隽鞅眄梽h除通知,所述控制器將所述空閑空間增加所述刪除的流表項容量,將非空閑空間減少所述刪除的流表項容量。通過更新所述存儲信息,可以提高判斷、比對的準(zhǔn)確率,進而起到幫助提高控制器下發(fā)流表項的成功率的作用。可見,當(dāng)控制器為了使得網(wǎng)絡(luò)設(shè)備實現(xiàn)一項功能,向所述網(wǎng)絡(luò)設(shè)備下發(fā)對應(yīng)所述功能的至少一條流表項之前,所述控制器比對所述至少一條流表項的總?cè)萘亢途W(wǎng)絡(luò)設(shè)備的存儲信息,通過比對結(jié)果明確所述網(wǎng)絡(luò)設(shè)備是否具有足夠的空閑存儲空間存儲所述至少一條流表項。在所述網(wǎng)絡(luò)設(shè)備具有大于等 于所述流表項的存儲空間時下發(fā)所述至少一條流表項,在所述網(wǎng)絡(luò)設(shè)備不具有存儲流表項的存儲空間時不下發(fā)所述至少一條流表項,提高了控制器下發(fā)流表項的成功率。實施例二在圖1所對應(yīng)實施例的基礎(chǔ)上,圖3為本發(fā)明實施例提供的一種流表項下發(fā)方法的方法流程圖。所述方法包括:301:控制器獲取用于在網(wǎng)絡(luò)設(shè)備上實現(xiàn)一項功能的至少一條流表項以及所述網(wǎng)絡(luò)設(shè)備的設(shè)備標(biāo)識,所述至少一條流表項還具有對應(yīng)的用戶標(biāo)識。舉例說明,所述用戶標(biāo)識可以理解為用于標(biāo)識所述至少一條流表項由某一用戶或者某一項應(yīng)用構(gòu)造生成的,或者所述用戶標(biāo)識也可以理解為用于標(biāo)識所述至少一條流表項所對應(yīng)的所述功能。所述用戶可以是指使用所述網(wǎng)絡(luò)設(shè)備的用戶,例如,數(shù)據(jù)中心場景中的租戶。302:所述控制器根據(jù)所設(shè)備述標(biāo)識查找到所述網(wǎng)絡(luò)設(shè)備的存儲信息,所述存儲信息包括所述網(wǎng)絡(luò)設(shè)備用于存儲流表項的存儲空間中的空閑空間,所述用于存儲流表項的存儲空間中的空閑空間具體包括預(yù)留空閑空間和非預(yù)留空閑空間。舉例說明,本發(fā)明實施例中所述的預(yù)留可以理解為在所述存儲空間中,預(yù)先保留一部分空閑空間作為預(yù)留空間,所述預(yù)留空間用于專門保存與用戶標(biāo)識對應(yīng)的流表項。所述預(yù)留空閑空間可以理解為所述預(yù)留空間中還未被使用的空間。所述非預(yù)留空閑空間可以理解為所述空閑空間中除了所述預(yù)留空閑空間外的其他空閑空間。303:所述控制器根據(jù)所述用戶標(biāo)識判斷所述存儲空間中是否具有所述用戶標(biāo)識對應(yīng)的預(yù)留子空間,所述預(yù)留子空間為部分或全部所述預(yù)留空閑空間,若具有所述預(yù)留子空間,執(zhí)行304。舉例說明,所述預(yù)留空間可以包括一個或多個子空間。例如用戶標(biāo)識A和用戶標(biāo)識B在所述存儲空間中均具有預(yù)留的空間,其中,所述預(yù)留空間中專門用于用戶標(biāo)識A的部分可以理解為對應(yīng)用戶標(biāo)識A的子空間A,所述預(yù)留空間中專門用于用戶標(biāo)識B的部分可以理解為對應(yīng)用戶標(biāo)識B的子空間B。 在本發(fā)明實施例中,所述預(yù)留子空間特指為所述用戶標(biāo)識預(yù)留的子空間中尚未被使用的空閑空間。若所述用戶標(biāo)識用于標(biāo)識所述至少一條流表項由某一用戶或者某一項應(yīng)用構(gòu)造生成,則所述預(yù)留空間中與所述用戶標(biāo)識對應(yīng)的子空間可以專門用于存儲由該用戶或該應(yīng)用構(gòu)造生成的流表項。若所述用戶標(biāo)識用于標(biāo)識所述至少一條流表項所對應(yīng)的所述功能,則所述預(yù)留空間中與所述用戶標(biāo)識對應(yīng)的子空間可以專門用于存儲使得所述網(wǎng)絡(luò)設(shè)備實現(xiàn)所述功能的流表項。需要注意的是,可選的,在303中,若所述控制器根據(jù)所述用戶標(biāo)識判斷發(fā)現(xiàn)所述存儲空間中不具有所述預(yù)留子空間,執(zhí)行306。具體實施內(nèi)容參見306部分的相關(guān)描述。304:所述控制器比對所述預(yù)留子空間與所述至少一條流表項的總?cè)萘?;若所述預(yù)留子空間大于等于所述總?cè)萘浚瑘?zhí)行305;若所述預(yù)留子空間小于所述總?cè)萘?,?zhí)行306。305:所述控制器根據(jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項。舉例說明,若所述預(yù)留子空間大于等于所述總?cè)萘?,則可以理解為所述網(wǎng)絡(luò)設(shè)備的所述存儲空間中為所述用戶標(biāo)識預(yù)留的預(yù)留空間中具有足夠的空閑空間用于保存所述至少一條流表項。這種情況下,所述控制器向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項在正常情況下可以被所述網(wǎng)絡(luò)設(shè)備存儲到所述存儲空間的所述預(yù)留子空間中。所述網(wǎng)絡(luò)設(shè)備能夠通過所述至少一條流表項實現(xiàn)所述功能。若所述預(yù)留子空間小于所述總?cè)萘浚梢岳斫鉃樗鼍W(wǎng)絡(luò)設(shè)備的所述存儲空間中為所述用戶標(biāo)識預(yù)留的預(yù)留空間中沒有足夠的空閑空間用于存儲所述至少一條流表項。這種情況下,可以進一步通過比對判斷所述非預(yù)留空閑空間中是否具有存儲所述至少一條流表項的條件。306:所述控制器比對所述非預(yù)留空閑空間與所述總?cè)萘?;若所述非預(yù)留空閑空間大于等于所述總?cè)萘浚瑘?zhí)行305。也就是說,對于所述用戶標(biāo)識在所述預(yù)留空間中具有對應(yīng)的子空間的流表項,可以在對應(yīng)的子空間中不具有足夠空閑空間的情況下,進一步具有存 儲在非預(yù)留空閑空間中的可能。所述非預(yù)留空閑空間可以理解為存儲流表項的公共空間中的空閑區(qū)域,也就是說不限制、不限定保存在所述非預(yù)留空閑空間中流表項的用戶標(biāo)識。若所述非預(yù)留空閑空間大于等于所述總?cè)萘?,可以理解為所述網(wǎng)絡(luò)設(shè)備的所述存儲空間中的非預(yù)留空閑空間中具有足夠的空閑空間用于保存所述至少一條流表項。所述控制器具有向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項的條件。需要注意的是,當(dāng)306中所述控制器通過比對,若所述非預(yù)留空閑空間小于所述總?cè)萘?,?zhí)行307。307:所述控制器不向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項。舉例說明,在所述網(wǎng)絡(luò)設(shè)備的所述存儲空間不具備完全存儲所述至少一條流表項的情況下,不向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項可以有效避免由于所述網(wǎng)絡(luò)設(shè)備無法存儲所述至少一條流表項,或者只能存儲所述至少一條流表項中的一部分導(dǎo)致下發(fā)流表項失敗情況的出現(xiàn),或者可以有效減少下發(fā)流表項失敗的出現(xiàn)次數(shù)。所述網(wǎng)絡(luò)設(shè)備的存儲空間中還可以為一些需要執(zhí)行的特定功能例如具有高優(yōu)先級的功能或者需要在所述網(wǎng)絡(luò)設(shè)備上實現(xiàn)功能的特定用戶例如重要用戶或者重要App分配專用的預(yù)留空間,使得與上述相關(guān)的流表項例如與特定功能相關(guān)的流表項、由特定用戶生成的流表項或者由重要應(yīng)用生成的流表項需要下發(fā)到所述網(wǎng)絡(luò)設(shè)備中時,所述存儲空間中有專門用于存儲上述流表項的預(yù)留存儲空間。而且即使預(yù)留存儲空間的空閑空間不足,可以將上述流表項在所述存儲空間的非預(yù)留空閑空間足夠時存儲在非預(yù)留空閑空間中。由此盡量保證了重要流表項能夠被所述網(wǎng)絡(luò)設(shè)備存儲的幾率,提高了所述存儲空間的使用效率??蛇x的,接下來進一步說明在所述存儲空間具有預(yù)留空間和非預(yù)留空間的情況下,且所述存儲信息保存在所述控制器中時,所述存儲信息可以由所述控制器進行更新。所述控制器在向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項,或者接收到所述網(wǎng)絡(luò)設(shè)備發(fā)送的流表項刪除通知時,相應(yīng)更新所述存儲信息,所述流表項 刪除通知包括所述網(wǎng)絡(luò)設(shè)備刪除的流表項容量和所述刪除的流表項在被刪除前在所述存儲空間中所存儲的位置。根據(jù)不同的情況舉例說明所述控制器相應(yīng)的更新對應(yīng)所述網(wǎng)絡(luò)設(shè)備的存儲信息。若在所述預(yù)留子空間大于等于所述總?cè)萘康那闆r下所述控制器向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項,所述控制器將所述預(yù)留子空間減少所述總?cè)萘俊H粼谒龇穷A(yù)留空閑空間大于等于所述總?cè)萘康那闆r下所述控制器向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項,所述控制器將所述非預(yù)留空閑空間減少所述總?cè)萘俊H羲隹刂破鹘邮盏剿隽鞅眄梽h除通知,所述控制器可以根據(jù)所述刪除的流表項在被刪除前在所述存儲空間中所存儲的位置,對所述存儲信息進行更新。例如當(dāng)所述刪除的流表項在被刪除前在所述存儲空間中所存儲的位置具體在預(yù)留空間中對應(yīng)的子空間時,所述控制器可以將該子空間的預(yù)留子空間增加所述刪除的流表項容量。例如當(dāng)所述刪除的流表項在被刪除前在所述存儲空間中所存儲的位置具體在非預(yù)留空間中時,所述控制器可以將非預(yù)留空閑空間增加所述刪除的流表項容量。通過更新所述存儲信息,可以提高判斷、比對的準(zhǔn)確率,進而起到幫助提高控制器下發(fā)流表項的成功率的作用。實施例三圖4為本發(fā)明實施例提供的一種流表項下發(fā)裝置的裝置結(jié)構(gòu)圖,所述流表項下發(fā)裝置400包括:獲取單元401,用于獲取用于在網(wǎng)絡(luò)設(shè)備上實現(xiàn)一項功能的至少一條流表項以及所述網(wǎng)絡(luò)設(shè)備的設(shè)備標(biāo)識。本發(fā)明實施例中所述的流表項可以理解為是用戶或者某一項應(yīng)用希望能在網(wǎng)絡(luò)設(shè)備上實現(xiàn)一項功能時構(gòu)造生成的。為了網(wǎng)絡(luò)設(shè)備能夠?qū)崿F(xiàn)一項功能需要控制器為該網(wǎng)絡(luò)設(shè)備下發(fā)與該功能相關(guān)的所有需要下發(fā)的流表項,這里所述的所有需要下發(fā)的流表項可以為至少一條流表項。當(dāng)所述至少一條流表項全部成功下發(fā)到所述網(wǎng)絡(luò)設(shè)備中或者說被所述網(wǎng)絡(luò)設(shè)備存儲到專門用于存 儲流表項的存儲空間后,所述網(wǎng)絡(luò)設(shè)備將可以根據(jù)所述至少一條流表項實現(xiàn)所述功能。在本發(fā)明實施例中,優(yōu)選的應(yīng)用于部署了SDN技術(shù)的網(wǎng)絡(luò)中。所述網(wǎng)絡(luò)設(shè)備可以是用于進行路由轉(zhuǎn)發(fā)的轉(zhuǎn)發(fā)設(shè)備。例如可以為支持OpenFlow協(xié)議的交換機、路由器等設(shè)備。查找單元402,用于根據(jù)所述設(shè)備標(biāo)識查找到所述網(wǎng)絡(luò)設(shè)備的存儲信息,所述存儲信息包括所述網(wǎng)絡(luò)設(shè)備用于存儲流表項的存儲空間中的空閑空間。舉例說明,若所述控制器在本地已經(jīng)存儲了所述存儲信息,那么所述查找單元402可以通過所述設(shè)備標(biāo)識在本地進行查找,以查找到對應(yīng)的所述設(shè)備標(biāo)識的所述存儲信息。或者,若所述控制器在本地雖然存儲了所述存儲信息,但所述查找單元402可以根據(jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備發(fā)送請求消息,用于請求獲取所述網(wǎng)絡(luò)設(shè)備的存儲信息,接收所述網(wǎng)絡(luò)設(shè)備根據(jù)所述請求消息返回的應(yīng)答消息,以此獲取所述應(yīng)答消息中攜帶的所述網(wǎng)絡(luò)設(shè)備的存儲信息并可以用獲取的該存儲信息來對本地存儲的所述存儲信息進行更新。或者,若所述控制器在本地并沒有存儲所述存儲信息,所述查找單元402可以根據(jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備發(fā)送請求消息,用于請求獲取所述網(wǎng)絡(luò)設(shè)備的存儲信息,接收所述網(wǎng)絡(luò)設(shè)備根據(jù)所述請求消息返回的應(yīng)答消息,以此獲取所述應(yīng)答消息中攜帶的所述網(wǎng)絡(luò)設(shè)備的存儲信息。還需要注意的是,所述網(wǎng)絡(luò)設(shè)備也可以周期性的自動將自身的存儲信息上傳到所述控制器。所述存儲信息可以為一種用于標(biāo)識所述網(wǎng)絡(luò)設(shè)備中專門用于存儲流表項的存儲空間存儲狀況的參數(shù),其中可以包括已被使用的存儲空間和未被使用的空閑存儲空間的參數(shù)。在本發(fā)明實施例中主要關(guān)注的是尚未被用于存儲的空閑存儲空間的參數(shù)。所述請求消息和所述應(yīng)答消息可以為設(shè)定出的一種新的消息,或者也可以為通過對協(xié)議的擴展在已有消息的基礎(chǔ)上定義出新的類型。在圖4所對應(yīng)實施例的基礎(chǔ)上,圖5為本發(fā)明實施例提供的一種流表項下發(fā)裝置的裝置結(jié)構(gòu)圖,所述流表項下發(fā)裝置400中的所述查找單元402還包括:發(fā)送子單元501,用于根據(jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備發(fā)送請求消息,所述請求消息用于請求獲取所述網(wǎng)絡(luò)設(shè)備的所述存儲信息。接收子單元502,用于接收所述網(wǎng)絡(luò)設(shè)備根據(jù)所述請求消息回復(fù)的應(yīng)答消息,所述應(yīng)答消息用于向所述控制器通告所述網(wǎng)絡(luò)設(shè)備上的所述存儲信息。獲取子單元503,用于從所述應(yīng)答消息中獲取所述網(wǎng)絡(luò)設(shè)備的所述存儲信息??蛇x的,本發(fā)明實施例還提供了一種通過對協(xié)議的擴展在已有消息的基礎(chǔ)上定義出新的類型的方式得到所述請求消息和應(yīng)答消息。在OpenFlow協(xié)議中,控制器和網(wǎng)絡(luò)設(shè)備之間可以使用Multipart消息來傳輸網(wǎng)絡(luò)設(shè)備的狀態(tài)信息??刂破骺梢酝ㄟ^向網(wǎng)絡(luò)設(shè)備發(fā)送Multipart請求消息來請求獲得該網(wǎng)絡(luò)設(shè)備的狀態(tài)信息等,該網(wǎng)絡(luò)設(shè)備在收到Multipart請求消息后,向該控制器返回Multipart應(yīng)答消息,并在該Multipart應(yīng)答消息中攜帶所需的狀態(tài)消息。所述Multipart請求消息和Multipart應(yīng)答消息的OpenFlow協(xié)議格式中,可以通過類型字段:“uint16_ttype;/*OneoftheOFPMP_*constants.*/”設(shè)置類型值,不同的類型值對應(yīng)不同的狀態(tài)信息。例如若控制器需要從網(wǎng)絡(luò)設(shè)備獲取狀態(tài)信息1,控制器向網(wǎng)絡(luò)設(shè)備發(fā)送的Multipart請求消息中的所述類型(Type)字段可以設(shè)置為對應(yīng)狀態(tài)信息1的類型值1,若需要狀態(tài)信息2,所述類型字段可以設(shè)置為對應(yīng)狀態(tài)信息2的類型值2。也就是說,可以通過對所述類型字段的設(shè)置來控制所述Multipart請求消息和Multipart應(yīng)答消息中攜帶的內(nèi)容。但是當(dāng)前OpenFlow協(xié)議中并不支持控制器通過Multipart消息從網(wǎng)絡(luò)設(shè)備獲取網(wǎng)絡(luò)設(shè)備的存儲信息。為了實現(xiàn)控制器從網(wǎng)絡(luò)設(shè)備獲取網(wǎng)絡(luò)設(shè)備的存儲信息這一功能。本發(fā)明實施例對OpenFlow協(xié)議進行了擴展,為所述Multipart請求消息和Multipart應(yīng)答消息定義了一種新的類型值:存儲信息(STORAGE),具體如下:/*Storagedescription.*Therequestbodyisempty.*Thereplybodyisstructofp_storage.*/OFPMP_STORAGE=14,其中ofp_storage:/*BodyofreplytoOFPMP_STORAGErequest.*/structofp_storage{uint32_ttotal_size;/*Totalflowtableentrysizeoftheswitch.*/uint32_tidle_size;/*Unusedsizeoftheflowtableentry.*/};OFP_ASSERT(sizeof(structofp_desc)==8);可以理解為,定義了“存儲信息”作為類型值,類型值的值為14,具有這個類型值的Multipart請求報文的請求主體(body)字段為空,Multipart應(yīng)答消息的應(yīng)答body字段具有ofp_storage結(jié)構(gòu),該ofp_storage結(jié)構(gòu)包括所述網(wǎng)絡(luò)設(shè)備用于存儲流表項的存儲空間的總?cè)萘亢涂臻e容量。若在所述控制器和網(wǎng)絡(luò)設(shè)備使用上述新定義出的類型值為“STORAGE”Multipart消息,圖2所對應(yīng)實施例中的所述請求消息可以是OpenFlow協(xié)議的擴展的Multipart請求消息,所述擴展的Multipart請求消息包括類型Type字段和請求Body字段,所述Type字段攜帶指示存儲信息的類型值,所述請求字段為空或者攜帶所述設(shè)備標(biāo)識。在所述Multipart請求消息的請求字段為攜帶所述設(shè)備標(biāo)識的情況下,可以通過所述請求字段中的所述設(shè)備標(biāo)識實現(xiàn)校驗等功能。相應(yīng)地,所述應(yīng)答消息是OpenFlow協(xié)議的擴展的Multipart應(yīng)答消息,所述Multipart應(yīng)答消息包括所述Type字段和應(yīng)答B(yǎng)ody字段,所述應(yīng)答B(yǎng)ody字段攜帶所述網(wǎng)絡(luò)設(shè)備的存儲信息。舉例說明,當(dāng)所述網(wǎng)絡(luò)設(shè)備接收到所述Multipart請求消息,所述網(wǎng)絡(luò)設(shè)備通過所述Multipart請求消息Type字段的類型值識別所述Multipart請求消息為請求獲取存儲信息的請求消息。所述網(wǎng)絡(luò)設(shè)備可以生成對應(yīng)所述Multipart請求消息的Multipart應(yīng)答消息,在所述Multipart應(yīng)答消息的應(yīng)答B(yǎng)ody字段中攜帶自身的所述存儲信息。當(dāng)所述控制器獲取所述網(wǎng)絡(luò)設(shè)備發(fā)送的所述Multipart應(yīng)答消息,所述控制器通過所述Multipart應(yīng)答消息Type字段的類型值識別所述Multipart應(yīng)答 消息為攜帶了所述存儲信息的應(yīng)答消息,所述控制器從所述Multipart應(yīng)答消息的應(yīng)答B(yǎng)ody字段中獲取所需的所述存儲信息。比對單元403,用于比對所述空閑空間與所述至少一條流表項的總?cè)萘俊Ee例說明,所述比對主要是用來確定所述網(wǎng)絡(luò)設(shè)備剩余的存儲空間是否足夠存儲所述至少一條流表項。由于流表項的容量大小基本差不多,故所述存儲空間可以以流表項為單位表示。例如所述空閑空間具體為三條流表項單位,所述至少一條流表項的總?cè)萘烤唧w為兩條流表項,那么比對結(jié)果就是所述空閑空間大于所述總?cè)萘俊H羲隹臻e空間大于等于所述總?cè)萘?,觸發(fā)發(fā)送單元404根據(jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項。若所述空閑空間小于所述總?cè)萘?,不觸發(fā)所述發(fā)送單元404向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項。舉例說明,若所述空閑空間大于等于所述總?cè)萘?,可以理解為所述網(wǎng)絡(luò)設(shè)備的所述存儲空間中具有足夠的空閑空間用于保存所述至少一條流表項。這種情況下,所述發(fā)送單元404向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項在正常情況下可以被所述網(wǎng)絡(luò)設(shè)備存儲到所述存儲空間中。所述網(wǎng)絡(luò)設(shè)備能夠通過所述至少一條流表項實現(xiàn)所述功能。若所述空閑空間小于所述總?cè)萘?,可以理解為所述網(wǎng)絡(luò)設(shè)備的所述存儲空間中的空閑空間不足,不具備存儲所述至少一條流表項的條件。這種情況下,即使所述發(fā)送單元404向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項,所述網(wǎng)絡(luò)設(shè)備在正常情況下也無法保存所述至少一條流表項或者在所述至少一條流表項為多個的情況下最多只可能保存所述至少一條流表項的一部分。即使在能夠保存所述至少一條流表項的一部分例如當(dāng)所述至少一條流表項具體為三條流表項時,所述網(wǎng)絡(luò)設(shè)備只能保存其中兩條流表項的情況下,所述網(wǎng)絡(luò)設(shè)備無法根據(jù)所保存的所述至少一條流表項的一部分例如所述兩條流表項實現(xiàn)原本需要所述三條流表項才能實現(xiàn)的所述功能。這種情況站在所述控制器的角度上,可以理解為下發(fā)流表項失敗。在這種情況下不向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項可以有效避免由于所述網(wǎng)絡(luò)設(shè)備無法存儲所述至少一條流表項,或者只能存儲所述至少一條流表項中的一部分導(dǎo)致下發(fā)流表項失 敗情況的出現(xiàn),或者可以有效減少下發(fā)流表項失敗的出現(xiàn)次數(shù)。需要注意的是,若所述存儲信息保存在所述控制器中,可選的,所述存儲信息可以由更新單元601進行更新。在圖4所對應(yīng)實施例的基礎(chǔ)上,圖6為本發(fā)明實施例提供的一種流表項下發(fā)裝置的裝置結(jié)構(gòu)圖,所述流表項下發(fā)裝置400還包括:更新單元601,用于在向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項,或者接收到所述網(wǎng)絡(luò)設(shè)備發(fā)送的流表項刪除通知時,相應(yīng)更新所述存儲信息,所述流表項刪除通知包括所述網(wǎng)絡(luò)設(shè)備刪除的流表項容量和所述刪除的流表項在被刪除前在所述存儲空間中所存儲的位置。舉例說明,若所述比對單元403通過比對,向所述網(wǎng)絡(luò)設(shè)備下發(fā)了所述至少一條流表項,所述更新單元601將相應(yīng)的更新對應(yīng)所述網(wǎng)絡(luò)設(shè)備的存儲信息,將空閑空間減少所述至少一條流表項的總?cè)萘?,將非空閑空間或者說已使用空間增加所述至少一條流表項的總?cè)萘?。若接收到所述流表項刪除通知,所述更新單元601將所述空閑空間增加所述刪除的流表項容量,將非空閑空間減少所述刪除的流表項容量。通過更新所述存儲信息,可以提高判斷、比對的準(zhǔn)確率,進而起到幫助提高控制器下發(fā)流表項的成功率的作用。可見,當(dāng)控制器為了使得網(wǎng)絡(luò)設(shè)備實現(xiàn)一項功能,向所述網(wǎng)絡(luò)設(shè)備下發(fā)對應(yīng)所述功能的至少一條流表項之前,所述控制器比對所述至少一條流表項的總?cè)萘亢途W(wǎng)絡(luò)設(shè)備的存儲信息,通過比對結(jié)果明確所述網(wǎng)絡(luò)設(shè)備是否具有足夠的空閑存儲空間存儲所述至少一條流表項。在所述網(wǎng)絡(luò)設(shè)備具有大于等于所述流表項的存儲空間時下發(fā)所述至少一條流表項,在所述網(wǎng)絡(luò)設(shè)備不具有存儲流表項的存儲空間時不下發(fā)所述至少一條流表項,提高了控制器下發(fā)流表項的成功率。實施例四在實施例三的基礎(chǔ)上,所述用于存儲流表項的存儲空間中的空閑空間具體包括預(yù)留空閑空間和非預(yù)留空閑空間,所述至少一條流表項還具有對應(yīng)的用戶標(biāo)識。舉例說明,本發(fā)明實施例中所述的預(yù)留可以理解為在所述存儲空間中, 預(yù)先保留一部分空閑空間作為預(yù)留空間,所述預(yù)留空間用于專門保存與用戶標(biāo)識對應(yīng)的流表項。所述預(yù)留空閑空間可以理解為所述預(yù)留空間中還未被使用的空間。所述非預(yù)留空閑空間可以理解為所述空閑空間中除了所述預(yù)留空閑空間外的其他空閑空間。舉例說明,所述用戶標(biāo)識可以理解為用于標(biāo)識所述至少一條流表項由某一用戶或者某一項應(yīng)用構(gòu)造生成的,或者所述用戶標(biāo)識也可以理解為用于標(biāo)識所述至少一條流表項所對應(yīng)的所述功能。所述用戶可以是指使用所述網(wǎng)絡(luò)設(shè)備的用戶,例如,數(shù)據(jù)中心場景中的租戶。在圖4所對應(yīng)實施例的基礎(chǔ)上,圖7為本發(fā)明實施例提供的一種流表項下發(fā)裝置的裝置結(jié)構(gòu)圖,所述控制器400還包括:判斷單元701,用于根據(jù)所述用戶標(biāo)識判斷所述存儲空間中是否具有所述用戶標(biāo)識對應(yīng)的預(yù)留子空間,所述預(yù)留子空間為部分或全部所述預(yù)留空閑空間。舉例說明,所述預(yù)留空間可以包括一個或多個子空間。例如用戶標(biāo)識A和用戶標(biāo)識B在所述存儲空間中均具有預(yù)留的空間,其中,所述預(yù)留空間中專門用于用戶標(biāo)識A的部分可以理解為對應(yīng)用戶標(biāo)識A的子空間A,所述預(yù)留空間中專門用于用戶標(biāo)識B的部分可以理解為對應(yīng)用戶標(biāo)識B的子空間B。在本發(fā)明實施例中,所述預(yù)留子空間特指為所述用戶標(biāo)識預(yù)留的子空間中尚未被使用的空閑空間。若所述用戶標(biāo)識用于標(biāo)識所述至少一條流表項由某一用戶或者某一項應(yīng)用構(gòu)造生成,則所述預(yù)留空間中與所述用戶標(biāo)識對應(yīng)的子空間可以專門用于存儲由該用戶或該應(yīng)用構(gòu)造生成的流表項。若所述用戶標(biāo)識用于標(biāo)識所述至少一條流表項所對應(yīng)的所述功能,則所述預(yù)留空間中與所述用戶標(biāo)識對應(yīng)的子空間可以專門用于存儲使得所述網(wǎng)絡(luò)設(shè)備實現(xiàn)所述功能的流表項。若具有所述預(yù)留子空間,觸發(fā)所述比對單元403所包括的第一比對子單元702,所述第一比對子單元702,用于比對所述預(yù)留子空間與所述至少一條流表項的總?cè)萘?。若所述預(yù)留子空間大于等于所述總?cè)萘?,觸發(fā)所述發(fā)送單元404根據(jù)所 述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項。舉例說明,若所述預(yù)留子空間大于等于所述總?cè)萘?,則可以理解為所述網(wǎng)絡(luò)設(shè)備的所述存儲空間中為所述用戶標(biāo)識預(yù)留的預(yù)留空間中具有足夠的空閑空間用于保存所述至少一條流表項。這種情況下,所述發(fā)送單元404向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項在正常情況下可以被所述網(wǎng)絡(luò)設(shè)備存儲到所述存儲空間的所述預(yù)留子空間中。所述網(wǎng)絡(luò)設(shè)備能夠通過所述至少一條流表項實現(xiàn)所述功能。若所述預(yù)留子空間小于所述總?cè)萘?,可以理解為所述網(wǎng)絡(luò)設(shè)備的所述存儲空間中為所述用戶標(biāo)識預(yù)留的預(yù)留空間中沒有足夠的空閑空間用于存儲所述至少一條流表項。這種情況下,可以進一步通過比對判斷所述非預(yù)留空閑空間中是否具有存儲所述至少一條流表項的條件。若所述預(yù)留子空間小于所述總?cè)萘?;或者,若所述判斷單?01的判斷結(jié)果為不具有所述預(yù)留子空間,觸發(fā)所述比對單元403所包括的第二比對子單元703,所述第二比對子單元703,用于比對所述非預(yù)留空閑空間與所述總?cè)萘?。若所述非預(yù)留空閑空間大于等于所述總?cè)萘浚|發(fā)所述發(fā)送單元404根據(jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項。也就是說,對于所述用戶標(biāo)識在所述預(yù)留空間中具有對應(yīng)的子空間的流表項,可以在對應(yīng)的子空間中不具有足夠空閑空間的情況下,進一步具有存儲在非預(yù)留空閑空間中的可能。所述非預(yù)留空閑空間可以理解為存儲流表項的公共空間中的空閑區(qū)域,也就是說不限制、不限定保存在所述非預(yù)留空閑空間中流表項的用戶標(biāo)識。若所述非預(yù)留空閑空間大于等于所述總?cè)萘浚梢岳斫鉃樗鼍W(wǎng)絡(luò)設(shè)備的所述存儲空間中的非預(yù)留空閑空間中具有足夠的空閑空間用于保存所述至少一條流表項。所述發(fā)送單元404具有向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項的條件。若所述非預(yù)留空閑空間小于所述總?cè)萘?,不觸發(fā)所述發(fā)送單元404向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項。舉例說明,在所述網(wǎng)絡(luò)設(shè)備的所述存儲空間不具備完全存儲所述至少一 條流表項的情況下,不向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項可以有效避免由于所述網(wǎng)絡(luò)設(shè)備無法存儲所述至少一條流表項,或者只能存儲所述至少一條流表項中的一部分導(dǎo)致下發(fā)流表項失敗情況的出現(xiàn),或者可以有效減少下發(fā)流表項失敗的出現(xiàn)次數(shù)。所述網(wǎng)絡(luò)設(shè)備的存儲空間中還可以為一些需要執(zhí)行的特定功能例如具有高優(yōu)先級的功能或者需要在所述網(wǎng)絡(luò)設(shè)備上實現(xiàn)功能的特定用戶例如重要用戶或者重要App分配專用的預(yù)留空間,使得與上述相關(guān)的流表項例如與特定功能相關(guān)的流表項、由特定用戶生成的流表項或者由重要應(yīng)用生成的流表項需要下發(fā)到所述網(wǎng)絡(luò)設(shè)備中時,所述存儲空間中有專門用于存儲上述流表項的預(yù)留存儲空間。而且即使預(yù)留存儲空間的空閑空間不足,可以將上述流表項在所述存儲空間的非預(yù)留空閑空間足夠時存儲在非預(yù)留空閑空間中。由此盡量保證了重要流表項能夠被所述網(wǎng)絡(luò)設(shè)備存儲的幾率,提高了所述存儲空間的使用效率??蛇x的,接下來進一步說明在所述存儲空間具有預(yù)留空間和非預(yù)留空間的情況下,且所述存儲信息保存在所述控制器中時,所述存儲信息如何由所述更新單元601進行更新。所述更新單元601在向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項,或者接收到所述網(wǎng)絡(luò)設(shè)備發(fā)送的流表項刪除通知時,相應(yīng)更新所述存儲信息,所述流表項刪除通知包括所述網(wǎng)絡(luò)設(shè)備刪除的流表項容量和所述刪除的流表項在被刪除前在所述存儲空間中所存儲的位置。根據(jù)不同的情況舉例說明所述更新單元601相應(yīng)的更新對應(yīng)所述網(wǎng)絡(luò)設(shè)備的存儲信息。若在所述預(yù)留子空間大于等于所述總?cè)萘康那闆r下所述發(fā)送單元304向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項,所述更新單元401將所述預(yù)留子空間減少所述總?cè)萘?。若在所述非預(yù)留空閑空間大于等于所述總?cè)萘康那闆r下所述發(fā)送單元404向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項,所述更新單元401將所述非預(yù)留空閑空間減少所述總?cè)萘?。若所述控制器接收到所述流表項刪除通知,所述更新單元601可以根據(jù) 所述刪除的流表項在被刪除前在所述存儲空間中所存儲的位置,對所述存儲信息進行更新。例如當(dāng)所述刪除的流表項在被刪除前在所述存儲空間中所存儲的位置具體在預(yù)留空間中對應(yīng)的子空間時,所述更新單元601可以將該子空間的預(yù)留子空間增加所述刪除的流表項容量。例如當(dāng)所述刪除的流表項在被刪除前在所述存儲空間中所存儲的位置具體在非預(yù)留空間中時,所述更新單元601可以將非預(yù)留空閑空間增加所述刪除的流表項容量。通過更新所述存儲信息,可以提高判斷、比對的準(zhǔn)確率,進而起到幫助提高控制器下發(fā)流表項的成功率的作用。實施例五圖8為本發(fā)明實施例提供的一種流表項保存方法的方法流程圖,所述方法包括:801:網(wǎng)絡(luò)設(shè)備向控制器發(fā)送所述網(wǎng)絡(luò)設(shè)備的存儲信息,所述存儲信息包括所述網(wǎng)絡(luò)設(shè)備用于存儲流表項的存儲空間中的空閑空間。本步驟的內(nèi)容請參見圖1所對應(yīng)實施例中102的相關(guān)描述以及圖2所對應(yīng)實施例的相關(guān)描述,這里不再贅述。802:所述網(wǎng)絡(luò)設(shè)備接收所述控制器下發(fā)的至少一條流表項,所述至少一條流表項用于在所述網(wǎng)絡(luò)設(shè)備上實現(xiàn)一項功能。803:所述網(wǎng)絡(luò)設(shè)備將所述至少一條流表項保存在存儲空間中??蛇x的,在圖8所對應(yīng)實施例的基礎(chǔ)上,圖9為本發(fā)明實施例提供的一種流表項保存方法的方法流程圖,包括:901:所述網(wǎng)絡(luò)設(shè)備獲取所述控制器發(fā)送的請求消息,所述請求消息用于請求獲取所述網(wǎng)絡(luò)設(shè)備的所述存儲信息。902:所述網(wǎng)絡(luò)設(shè)備根據(jù)所述請求消息向所述控制器回復(fù)應(yīng)答消息,所述應(yīng)答消息用于向所述控制器通告所述網(wǎng)絡(luò)設(shè)備上的所述存儲信息。903:所述網(wǎng)絡(luò)設(shè)備接收所述控制器下發(fā)的至少一條流表項,所述至少一條流表項用于在所述網(wǎng)絡(luò)設(shè)備上實現(xiàn)一項功能。904:所述網(wǎng)絡(luò)設(shè)備將所述至少一條流表項保存在存儲空間中??蛇x的,所述請求消息是OpenFlow協(xié)議的擴展的Multipart請求消息, 所述擴展的Multipart請求消息包括Type字段和請求Body字段,所述Type字段攜帶指示存儲信息的類型值,所述請求Body字段為空或者攜帶所述設(shè)備標(biāo)識;相應(yīng)地,所述應(yīng)答消息是OpenFlow協(xié)議的擴展的Multipart應(yīng)答消息,所述Multipart應(yīng)答消息包括所述Type字段和應(yīng)答B(yǎng)ody字段,所述應(yīng)答B(yǎng)ody字段攜帶所述網(wǎng)絡(luò)設(shè)備的存儲信息。實施例六圖10為本發(fā)明實施例提供的一種流表項保存裝置的裝置結(jié)構(gòu)圖,所述流表項保存裝置1000包括:發(fā)送單元1001,用于向控制器發(fā)送所述網(wǎng)絡(luò)設(shè)備的存儲信息,所述存儲信息包括所述網(wǎng)絡(luò)設(shè)備用于存儲流表項的存儲空間中的空閑空間。接收單元1002,用于接收所述控制器下發(fā)的至少一條流表項,所述至少一條流表項用于在所述網(wǎng)絡(luò)設(shè)備上實現(xiàn)一項功能。保存單元1003,用于將所述至少一條流表項保存在存儲空間中??蛇x的,所述接收單元1002還用于在觸發(fā)所述發(fā)送單元1001之前,獲取所述控制器發(fā)送的請求消息,所述請求消息用于請求獲取所述網(wǎng)絡(luò)設(shè)備的所述存儲信息。所述發(fā)送單元1001具體用于根據(jù)所述請求消息向所述控制器回復(fù)應(yīng)答消息,所述應(yīng)答消息用于向所述控制器通告所述網(wǎng)絡(luò)設(shè)備上的所述存儲信息。可選的,所述請求消息是OpenFlow協(xié)議的擴展的Multipart請求消息,所述擴展的Multipart請求消息包括Type字段和請求Body字段,所述Type字段攜帶指示存儲信息的類型值,所述請求Body字段為空或者攜帶所述設(shè)備標(biāo)識;相應(yīng)地,所述應(yīng)答消息是OpenFlow協(xié)議的擴展的Multipart應(yīng)答消息,所述Multipart應(yīng)答消息包括所述Type字段和應(yīng)答B(yǎng)ody字段,所述應(yīng)答B(yǎng)ody字段攜帶所述網(wǎng)絡(luò)設(shè)備的存儲信息。實施例七本發(fā)明實施例還提供了一種流表項下發(fā)系統(tǒng),所述系統(tǒng)包括控制器和網(wǎng)絡(luò)設(shè)備:所述控制器用于獲取用于在網(wǎng)絡(luò)設(shè)備上實現(xiàn)一項功能的至少一條流表項以及所述網(wǎng)絡(luò)設(shè)備的設(shè)備標(biāo)識;根據(jù)所述設(shè)備標(biāo)識獲取所述網(wǎng)絡(luò)設(shè)備的存儲信息,所述存儲信息包括所述網(wǎng)絡(luò)設(shè)備用于存儲流表項的存儲空間中的空閑空間;比對所述空閑空間與所述至少一條流表項的總?cè)萘?;若所述空閑空間大于等于所述總?cè)萘?,根?jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項;若所述空閑空間小于所述總?cè)萘?,不向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項。所述網(wǎng)絡(luò)設(shè)備用于向控制器發(fā)送所述網(wǎng)絡(luò)設(shè)備的存儲信息,所述存儲信息包括所述網(wǎng)絡(luò)設(shè)備用于存儲流表項的存儲空間中的空閑空間;接收所述控制器下發(fā)的至少一條流表項,所述至少一條流表項用于在所述網(wǎng)絡(luò)設(shè)備上實現(xiàn)一項功能;將所述至少一條流表項保存在存儲空間中。實施例八參閱圖11,圖11為本發(fā)明實施例提供的一種控制器的硬件結(jié)構(gòu)示意圖,所述控制器1100包括存儲器1101、接收器1102和發(fā)送器1103,以及分別與所述存儲器1101、所述接收器1102和所述發(fā)送器1103連接的處理器1104,所述存儲器1101用于存儲一組程序指令,所述處理器1104用于調(diào)用所述存儲器1101存儲的程序指令執(zhí)行如下操作:觸發(fā)所述接收器1102獲取用于在網(wǎng)絡(luò)設(shè)備上實現(xiàn)一項功能的至少一條流表項以及所述網(wǎng)絡(luò)設(shè)備的設(shè)備標(biāo)識;根據(jù)所述設(shè)備標(biāo)識獲取所述網(wǎng)絡(luò)設(shè)備的存儲信息,所述存儲信息包括所述網(wǎng)絡(luò)設(shè)備用于存儲流表項的存儲空間中的空閑空間;比對所述空閑空間與所述至少一條流表項的總?cè)萘浚蝗羲隹臻e空間大于等于所述總?cè)萘?,觸發(fā)所述發(fā)送器1103根據(jù)所述設(shè)備標(biāo)識向所述網(wǎng)絡(luò)設(shè)備下發(fā)所述至少一條流表項;若所述空閑空間小于所述總?cè)萘?,不觸發(fā)所述發(fā)送器1103向所述網(wǎng)絡(luò)設(shè) 備下發(fā)所述至少一條流表項??蛇x地,所述處理器1104可以為中央處理器(CentralProcessingUnit,CPU),所述存儲器1101可以為隨機存取存儲器(RandomAccessMemory,RAM)類型的內(nèi)部存儲器,所述接收器1102和所述發(fā)送器1103可以包含普通物理接口,所述物理接口可以為以太(Ethernet)接口或異步傳輸模式(AsynchronousTransferMode,ATM)接口。所述處理器1104、發(fā)送器1103、接收器1102和存儲器1101可以集成為一個或多個獨立的電路或硬件,如:專用集成電路(ApplicationSpecificIntegratedCircuit,ASIC)。實施例九參閱圖12,圖12為本發(fā)明實施例提供的一種網(wǎng)絡(luò)設(shè)備的硬件結(jié)構(gòu)示意圖,所述網(wǎng)絡(luò)設(shè)備1200包括存儲器1201、接收器1202和發(fā)送器1203,以及分別與所述存儲器1201、所述接收器1202和所述發(fā)送器1203連接的處理器1204,所述存儲器1201用于存儲一組程序指令,所述處理器1204用于調(diào)用所述存儲器1201存儲的程序指令執(zhí)行如下操作:觸發(fā)所述接收器1202向控制器發(fā)送所述網(wǎng)絡(luò)設(shè)備的存儲信息,所述存儲信息包括所述網(wǎng)絡(luò)設(shè)備用于存儲流表項的存儲空間中的空閑空間;觸發(fā)所述發(fā)送器1203接收所述控制器下發(fā)的至少一條流表項,所述至少一條流表項用于在所述網(wǎng)絡(luò)設(shè)備上實現(xiàn)一項功能;將所述至少一條流表項保存在存儲空間中。可選地,所述處理器1204可以為CPU,所述存儲器1201可以為RAM類型的內(nèi)部存儲器,所述接收器1202和所述發(fā)送器1203可以包含普通物理接口,所述物理接口可以為Ethernet接口或ATM接口。所述處理器1204、發(fā)送器1203、接收器1202和存儲器1201可以集成為一個或多個獨立的電路或硬件,如:ASIC。本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述程序可以存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的 存儲介質(zhì)可以是下述介質(zhì)中的至少一種:只讀存儲器(Read-OnlyMemory,ROM)、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。需要說明的是,本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于設(shè)備及系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述得比較簡單,相關(guān)之處參見方法實施例的部分說明即可。以上所描述的設(shè)備及系統(tǒng)實施例僅僅是示意性的,其中作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。以上所述僅是本發(fā)明的優(yōu)選實施方式,并非用于限定本發(fā)明的保護范圍。應(yīng)當(dāng)指出,對于本
技術(shù)領(lǐng)域
:的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3 
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
德惠市| 繁峙县| 永宁县| 太湖县| 东至县| 高尔夫| 蓬莱市| 青神县| 湖州市| 高阳县| 湖南省| 滦平县| 武冈市| 城步| 民丰县| 陆河县| 新昌县| 鄯善县| 和田市| 大安市| 隆昌县| 新宁县| 崇礼县| 洞头县| 比如县| 合山市| 杭锦后旗| 彭阳县| 合水县| 西吉县| 宜丰县| 托克逊县| 阳城县| 垦利县| 海口市| 罗定市| 滨州市| 东阿县| 康定县| 白水县| 永城市|